Wikibooks plwikibooks https://pl.wikibooks.org/wiki/Wikibooks:Strona_g%C5%82%C3%B3wna MediaWiki 1.46.0-wmf.24 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 Dinozaury/Ornitopody 0 14716 540428 295886 2026-04-23T20:58:27Z Monsieur X 28395 540428 wikitext text/x-wiki {{wikipedia|Ornitopody|ornitopodów}} '''Ornithopoda''' to podrząd dinozaurów dwunożnych, występujący na wielu kontynentach w okresie od początku jury, a nawet od późnego triasu do końca kredy. Ornitopody stanowiły najbardziej zróżnicowaną, najliczniejszą i najdłużej trwającą grupę gadów kopalnych. Ich pokarm stanowiły różne rośliny, zwierzęta te były dobrze przystosowane do pobierania, żucia i rozdrabniania tego pokarmu. Sklasyfikowano wiele rodzin ornitopodów, warto wymienić kilka ważniejszych: [[Plik:Largestornithopods scale.png|thumb|250px|Najwięksi znani przedstawiciele ornitopodów.]] * [[w:Hipsylofodonty|Hipsylofodonty]] – miały małe czaszki, a ich ciała osiągały długość 1–4 metrów. Charakterystyczną cechą były chwytne przednie kończyny. Ich szczątki odkrywano w Ameryce Północnej, Eurazji i Australii w pokładach z okresu od środkowej jury do późnej kredy. * [[w:Iguanodony|Iguanodonty]] – były większe, czaszki miały długie, a szkielet masywny, ciało osiągało 9 metrów długości. Pierwszy palec kończyn przednich przekształcony był u nich w wyrostek o kształcie sztyletowatym, a masywne kończyny tylne miały trzy palce. Znane są od wczesnej jury aż do końca kredy, właściwie na wszystkich kontynentach oprócz Antarktydy. * [[w:Hadrozaury|Hadrozaury]] – nazywane są dinozaurami kaczodziobymi, ze względu na dużą czaszkę, spłaszczony i rozszerzony, bezzębny przód pyska oraz zróżnicowane uzębienie policzkowe, mające postać zwartych baterii zębowych, umożliwiając miażdżenie twardej roślinności. U wielu gatunków sklepienie czaszki pokryte było wyrostkami kostnymi mającymi postać rogów i hełmów z powietrznymi komorami wewnątrz nich. Ich lekko zbudowane, trój- lub czteropalcowe kończyny przednie zakończone były kopytami. Były dość duże, osiągały długość do 10 metrów. Ich szkielety, odciski skóry i gniazda odkrywano w dużych grupach, co sugeruje, że opiekowały się potomstwem. Występowały w późnej kredzie na terytorium Ameryki i Eurazji. {{Infobox|Niektóre dinozaury przejawiały zachowania społeczne. [[w:Jack Horner|Jack Horner]] z Museum of the Rockies w Bozeman w Montanie odkrył miejsca, gdzie dinozaury, w przeciwieństwie do współczesnych gadów, gniazdowały w dużych koloniach, opiekując się młodymi. Prawdopodobnie także migrowały w dużych stadach.}} === Galeria === <gallery> Plik:Tenontosaurus TD.png|[[w:Tenontozaur|Tenontozaur]] Plik:Altirhinus 01.JPG|[[w:Altirin|Altirin]] Plik:Eolambia restoration.png|[[w:Eolambia|Eolambia]] Plik:Brachylophosaurus NT.png|[[w:Brachylofozaur|Brachylofozaur]] Plik:Edmontosaurus BW.jpg|[[w:Edmontozaur|Edmontozaur]] Plik:Saurolophus angustirostris.png|[[w:Zaurolof|Zaurolof]] Plik:Shantungosaurus life.png|[[w:Szantungozaur|Szantungozaur]] Plik:Life reconstruction of Amurosaurus riabinini.png|[[w:Amurozaur|Amurozaur]] Plik:Barsboldia sicinskii (2).jpg|[[w:Barsboldia|Barsboldia]] Plik:Life reconstruction of Charonosaurus jiayinensis.png|[[w:Charonozaur|Charonozaur]] Plik:Hypracosaurus NT.png|[[w:Hipakrozaur|Hipakrozaur]] Plik:Olorotitan DB.jpg|[[w:Olorotytan|Olorotytan]] Plik:Parasaurolophus walkeri.png|[[w:Parazaurolof|Parazaurolof]] Plik:Probactrosaurus v3.jpg|[[w:Probaktozaur|Probaktozaur]] Plik:Telmatosaurus sketch v2.jpg|[[w:Telmatozaur|Telmatozaur]] Plik:Ouranosaurus nigeriensis restoration.png|[[w:Uranozaur|Uranozaur]] Plik:Zalmoxes TD.png|[[w:Zalmokses|Zalmokses]] Plik:Gasparinisaura BW.jpg|[[w:Gasparinizaura|Gasparinizaura]] Plik:Dollodon bampingi Steveoc86.jpg|[[w:Mantellizaur|Mantellizaur]] Plik:Iguanodon new NT.jpg|[[w:Iguanodon|Iguanodon]] Plik:Muttaburrasaurus TD.png|[[w:Mutaburazaur|Mutaburazaur]] </gallery> <noinclude> {{Nawigacja|Dinozaury| [[../Ankylozaury/]]| [[../Pachycefalozaury/]]| }}</noinclude> 7vm0ak0ttwttk4npaedcalzy8ctcpfy Moduł:Pudełko 828 42178 540397 540294 2026-04-23T15:27:44Z Persino 2851 540397 Scribunto text/plain local p={}; function p.CzyNiepoprawnaNazwa(nazwa_jednostki) local html_dane_modul=mw.loadData("Module:Html/dane"); return mw.ustring.match(nazwa_jednostki,"[{}<>|%[%]#\n"..html_dane_modul.znak_127.."]+") or mw.ustring.match(nazwa_jednostki,"~~~") or mw.ustring.match(nazwa_jednostki,"&(%a+);"); end; p["Nazwa przestrzeni nazw"]=function(frame,czy_uwzglednic_alternatywna_nazwe,i) local numer_jednostki=i or frame.args["numer jednostki"]; local liczba_numer_jednostki=((numer_jednostki)and(tonumber(numer_jednostki))or 0); local pudelko_pomocne_modul=require("Module:Pudełko/Pomocne"); return pudelko_pomocne_modul.Nazwa_przestrzeni_nazw(frame,0, czy_uwzglednic_alternatywna_nazwe,liczba_numer_jednostki); end; p["Nazwa przedmiotowej przestrzeni nazw"]=function(frame,czy_uwzglednic_alternatywna_nazwe,i) local numer_jednostki=i or frame.args["numer jednostki"]; local liczba_numer_jednostki=((numer_jednostki)and(tonumber(numer_jednostki))or 0); local pudelko_pomocne_modul=require("Module:Pudełko/Pomocne"); return pudelko_pomocne_modul.Nazwa_przestrzeni_nazw(frame,1, czy_uwzglednic_alternatywna_nazwe,liczba_numer_jednostki); end; p["Nazwa przestrzeni nazw dyskusji"]=function(frame,czy_uwzglednic_alternatywna_nazwe,i) local numer_jednostki=i or frame.args["numer jednostki"]; local liczba_numer_jednostki=((numer_jednostki)and(tonumber(numer_jednostki))or 0); local pudelko_pomocne_modul=require("Module:Pudełko/Pomocne"); return pudelko_pomocne_modul.Nazwa_przestrzeni_nazw(frame,2, czy_uwzglednic_alternatywna_nazwe,liczba_numer_jednostki); end; p["Nazwa przestrzeni nazw 2"]=function(frame,czy_uwzglednic_alternatywna_nazwe,i) local pudelko_pomocne_modul=require("Module:Pudełko/Pomocne"); return pudelko_pomocne_modul.Nazwa_przestrzeni_nazw_2(frame,czy_uwzglednic_alternatywna_nazwe,i) end; p["Nazwa przedmiotowej przestrzeni nazw 2"]=function(frame,czy_uwzglednic_alternatywna_nazwe,i) local pudelko_pomocne_modul=require("Module:Pudełko/Pomocne"); return pudelko_pomocne_modul.Nazwa_przestrzeni_nazw_przedmiotowa_dyskusji_2(frame,czy_uwzglednic_alternatywna_nazwe,i,"przedmiotowa"); end; p["Nazwa przestrzeni nazw dyskusji 2"]=function(frame,czy_uwzglednic_alternatywna_nazwe,i) local pudelko_pomocne_modul=require("Module:Pudełko/Pomocne"); return pudelko_pomocne_modul.Nazwa_przestrzeni_nazw_przedmiotowa_dyskusji_2(frame,czy_uwzglednic_alternatywna_nazwe,i,"dyskusja"); end; p["Pełna nazwa dyskusji jednostki"]=function(frame,i) local numer_jednostki=i or frame.args["numer jednostki"]; local liczba_numer_jednostki=((numer_jednostki)and(tonumber(numer_jednostki))or 0); local pudelko_modul=require("Module:Pudełko"); local nazwa_przestrzeni_nazw=pudelko_modul["Nazwa przestrzeni nazw dyskusji"](frame,liczba_numer_jednostki); local nazwa_jednostki=pudelko_modul["Nazwa jednostki"](frame,liczba_numer_jednostki); if(nazwa_przestrzeni_nazw~="")then return nazwa_przestrzeni_nazw..":"..nazwa_jednostki;else return nazwa_jednostki;end; end; p["Pełna nazwa przedmiotowa jednostki"]=function(frame,i) local numer_jednostki=i or frame.args["numer jednostki"]; local liczba_numer_jednostki=((numer_jednostki)and(tonumber(numer_jednostki))or 0); local pudelko_modul=require("Module:Pudełko"); local nazwa_przestrzeni_nazw=pudelko_modul["Nazwa przedmiotowej przestrzeni nazw"](frame,liczba_numer_jednostki); local nazwa_jednostki=pudelko_modul["Nazwa jednostki"](frame,liczba_numer_jednostki); if(nazwa_przestrzeni_nazw~="")then return nazwa_przestrzeni_nazw..":"..nazwa_jednostki;else return nazwa_jednostki;end; end; p["Pełna nazwa jednostki"]=function(frame,i) local numer_jednostki=i or frame.args["numer jednostki"]; local liczba_numer_jednostki=((numer_jednostki)and(tonumber(numer_jednostki))or 0); local pudelko_modul=require("Module:Pudełko"); local nazwa_przestrzeni_nazw=pudelko_modul["Nazwa przestrzeni nazw"](frame,liczba_numer_jednostki); local nazwa_jednostki=pudelko_modul["Nazwa jednostki"](frame,liczba_numer_jednostki); if(nazwa_przestrzeni_nazw~="")then return nazwa_przestrzeni_nazw..":"..nazwa_jednostki;else return nazwa_jednostki;end; end; p["Pełna nazwa dyskusji jednostki 2"]=function(frame,i) local numer_jednostki=i or frame.args["numer jednostki"]; local liczba_numer_jednostki=((numer_jednostki)and(tonumber(numer_jednostki))or 0); local pudelko_modul=require("Module:Pudełko"); local nazwa_przestrzeni_nazw=pudelko_modul["Nazwa przestrzeni nazw dyskusji 2"](frame,liczba_numer_jednostki); local nazwa_jednostki=pudelko_modul["Nazwa dyskusji jednostki 2"](frame,liczba_numer_jednostki); if(nazwa_przestrzeni_nazw~="")then return nazwa_przestrzeni_nazw..":"..nazwa_jednostki;else return nazwa_jednostki;end; end; p["Pełna nazwa przedmiotowa jednostki 2"]=function(frame,i) local numer_jednostki=i or frame.args["numer jednostki"]; local liczba_numer_jednostki=((numer_jednostki)and(tonumber(numer_jednostki))or 0); local pudelko_modul=require("Module:Pudełko"); local nazwa_przestrzeni_nazw=pudelko_modul["Nazwa przedmiotowej przestrzeni nazw 2"](frame,liczba_numer_jednostki); local nazwa_jednostki=pudelko_modul["Nazwa przedmiotowa jednostki 2"](frame,liczba_numer_jednostki); if(nazwa_przestrzeni_nazw~="")then return nazwa_przestrzeni_nazw..":"..nazwa_jednostki;else return nazwa_jednostki;end; end; p["Pełna nazwa jednostki 2"]=function(frame,i) local numer_jednostki=i or frame.args["numer jednostki"]; local liczba_numer_jednostki=((numer_jednostki)and(tonumber(numer_jednostki))or 0); local pudelko_modul=require("Module:Pudełko"); local nazwa_przestrzeni_nazw=pudelko_modul["Nazwa przestrzeni nazw 2"](frame,liczba_numer_jednostki); local nazwa_jednostki=pudelko_modul["Nazwa jednostki 2"](frame,liczba_numer_jednostki); if(nazwa_przestrzeni_nazw~="")then return nazwa_przestrzeni_nazw..":"..nazwa_jednostki;else return nazwa_jednostki;end; end; p["Pełna nazwa dyskusji jednostki 3"]=function(frame,i) local numer_jednostki=i or frame.args["numer jednostki"]; local liczba_numer_jednostki=((numer_jednostki)and(tonumber(numer_jednostki)) or 0); local pudelko_pomocne_modul=require("Module:Pudełko/Pomocne"); local nazwa_przestrzeni_nazw,nazwa_jednostki=pudelko_pomocne_modul.Uzyskanie_nazw_jednostki(frame,2,liczba_numer_jednostki); if(nazwa_przestrzeni_nazw~="")then return nazwa_przestrzeni_nazw..":"..nazwa_jednostki;else return nazwa_jednostki;end; end; p["Pełna nazwa przedmiotowa jednostki 3"]=function(frame,i) local numer_jednostki=i or frame.args["numer jednostki"]; local liczba_numer_jednostki=((numer_jednostki)and(tonumber(numer_jednostki)) or 0); local pudelko_pomocne_modul=require("Module:Pudełko/Pomocne"); local nazwa_przestrzeni_nazw,nazwa_jednostki=pudelko_pomocne_modul.Uzyskanie_nazw_jednostki(frame,1,liczba_numer_jednostki); if(nazwa_przestrzeni_nazw~="")then return nazwa_przestrzeni_nazw..":"..nazwa_jednostki;else return nazwa_jednostki;end; end; p["Pełna nazwa jednostki 3"]=function(frame,i) local numer_jednostki=i or frame.args["numer jednostki"]; local liczba_numer_jednostki=((numer_jednostki)and(tonumber(numer_jednostki)) or 0); local pudelko_pomocne_modul=require("Module:Pudełko/Pomocne"); local nazwa_przestrzeni_nazw,nazwa_jednostki=pudelko_pomocne_modul.Uzyskanie_nazw_jednostki(frame,0,liczba_numer_jednostki); if(nazwa_przestrzeni_nazw~="")then return nazwa_przestrzeni_nazw..":"..nazwa_jednostki;else return nazwa_jednostki;end; end; p["Nazwa jednostki"]=function(frame,i) local pudelko_pomocne_modul=require("Module:Pudełko/Pomocne"); return pudelko_pomocne_modul.Nazwa_jednostki(frame,i); end; p["Nazwa jednostki 2"]=function(frame,i) local pudelko_pomocne_modul=require("Module:Pudełko/Pomocne"); return pudelko_pomocne_modul.Jaka_nazwa_jednostki(frame,i,nil); end; p["Nazwa przedmiotowa jednostki 2"]=function(frame,i) local pudelko_pomocne_modul=require("Module:Pudełko/Pomocne"); return pudelko_pomocne_modul.Jaka_nazwa_jednostki(frame,i,"przedmiotowa"); end; p["Nazwa dyskusji jednostki 2"]=function(frame,i) local pudelko_pomocne_modul=require("Module:Pudełko/Pomocne"); return pudelko_pomocne_modul.Jaka_nazwa_jednostki(frame,i,"dyskusja"); end; p["Nazwa przestrzeni nazw 3"]=function(frame,czy_uwzglednic_alternatywna_nazwe,i) local numer_jednostki=i or frame.args["numer jednostki"]; local liczba_numeru_jednostki=((numer_jednostki)and(tonumber(numer_jednostki)) or 0); local pudelko_pomocne_modul=require("Module:Pudełko/Pomocne"); return pudelko_pomocne_modul.Uzyskanie_nazw_jednostki(frame,0,liczba_numeru_jednostki,nil,1); end; p["Nazwa przedmiotowej przestrzeni nazw 3"]=function(frame,czy_uwzglednic_alternatywna_nazwe,i) local numer_jednostki=i or frame.args["numer jednostki"]; local liczba_numeru_jednostki=((numer_jednostki)and(tonumber(numer_jednostki)) or 0); local pudelko_pomocne_modul=require("Module:Pudełko/Pomocne"); return pudelko_pomocne_modul.Uzyskanie_nazw_jednostki(frame,1,liczba_numeru_jednostki,nil,1); end; p["Nazwa przestrzeni nazw dyskusji 3"]=function(frame,czy_uwzglednic_alternatywna_nazwe,i) local numer_jednostki=i or frame.args["numer jednostki"]; local liczba_numeru_jednostki=((numer_jednostki)and(tonumber(numer_jednostki)) or 0); local pudelko_pomocne_modul=require("Module:Pudełko/Pomocne"); return pudelko_pomocne_modul.Uzyskanie_nazw_jednostki(frame,2,liczba_numeru_jednostki,nil,1); end; p["Nazwa jednostki 3"]=function(frame,i) local numer_jednostki=i or frame.args["numer jednostki"]; local liczba_numeru_jednostki=((numer_jednostki)and(tonumber(numer_jednostki)) or 0); local pudelko_pomocne_modul=require("Module:Pudełko/Pomocne"); return pudelko_pomocne_modul.Uzyskanie_nazw_jednostki(frame,0,liczba_numeru_jednostki,nil,2); end; p["Nazwa przedmiotowa jednostki 3"]=function(frame,i) local numer_jednostki=i or frame.args["numer jednostki"]; local liczba_numeru_jednostki=((numer_jednostki)and(tonumber(numer_jednostki))or 0); local pudelko_pomocne_modul=require("Module:Pudełko/Pomocne"); return pudelko_pomocne_modul.Uzyskanie_nazw_jednostki(frame,1,liczba_numeru_jednostki,nil,2); end; p["Nazwa dyskusji jednostki 3"]=function(frame,i) local numer_jednostki=i or frame.args["numer jednostki"]; local liczba_numeru_jednostki=((numer_jednostki)and(tonumber(numer_jednostki))or 0); local pudelko_pomocne_modul=require("Module:Pudełko/Pomocne"); return pudelko_pomocne_modul.Uzyskanie_nazw_jednostki(frame,2,liczba_numeru_jednostki,nil,2); end; p["Typ jednostki"]=function(frame,i) local pudelko_pomocne_modul=require("Module:Pudełko/Pomocne"); return pudelko_pomocne_modul.Typ_jednostki(frame,0,i,0); end; p["Typ jednostki 2"]=function(frame,i) local pudelko_pomocne_modul=require("Module:Pudełko/Pomocne"); return pudelko_pomocne_modul.Typ_jednostki(frame,0,i,1); end; p["Typ jednostki 3"]=function(frame,i) local pudelko_pomocne_modul=require("Module:Pudełko/Pomocne"); return pudelko_pomocne_modul.Typ_jednostki(frame,0,i,nil); end; p["Przedmiotowy typ jednostki"]=function(frame,i) local pudelko_pomocne_modul=require("Module:Pudełko/Pomocne"); return pudelko_pomocne_modul.Typ_jednostki(frame, 1,i,0); end; p["Przedmiotowy typ jednostki 2"]=function(frame,i) local pudelko_pomocne_modul=require("Module:Pudełko/Pomocne"); return pudelko_pomocne_modul.Typ_jednostki(frame, 1,i,1); end; p["Przedmiotowy typ jednostki 3"]=function(frame,i) local pudelko_pomocne_modul=require("Module:Pudełko/Pomocne"); return pudelko_pomocne_modul.Typ_jednostki(frame, 1,i,nil); end; p["Dyskusyjny typ jednostki"]=function(frame,i) local pudelko_pomocne_modul=require("Module:Pudełko/Pomocne"); return pudelko_pomocne_modul.Typ_jednostki(frame,2,i,0); end; p["Dyskusyjny typ jednostki 2"]=function(frame,i) local pudelko_pomocne_modul=require("Module:Pudełko/Pomocne"); return pudelko_pomocne_modul.Typ_jednostki(frame, 2,i,1); end; p["Dyskusyjny typ jednostki 3"]=function(frame,i) local pudelko_pomocne_modul=require("Module:Pudełko/Pomocne"); return pudelko_pomocne_modul.Typ_jednostki(frame, 2,i,nil); end; p["Cecha pudełka"] = function(frame) local pudelko_potrzebne_modul=require("Module:Pudełko/Potrzebne"); return pudelko_potrzebne_modul.Cecha_kontenerowa_szablonowa(frame,"Błędy pudełka"); end; p["Przedmiotowa cecha pudełka"] = function(frame) local pudelko_potrzebne_modul=require("Module:Pudełko/Potrzebne"); return pudelko_potrzebne_modul.Cecha_kontenerowa_szablonowa(frame,"Przedmiotowe błędy pudełka"); end; p["Dyskusyjna cecha pudełka"] = function(frame) local pudelko_potrzebne_modul=require("Module:Pudełko/Potrzebne"); return pudelko_potrzebne_modul.Cecha_kontenerowa_szablonowa(frame,"Dyskusyjne błędy pudełka"); end; p["Ogólne pudełko"]= function(frame) local pudelko_potrzebne_modul=require("Module:Pudełko/Potrzebne"); return pudelko_potrzebne_modul.Generalny_kontener_szablonowy(frame); end; p["Tekst pudełka"] = function (frame) return frame.args["tekst"]; end; p["Błędy pudełka"]=function(frame) local pudelko_potrzebne_modul=require("Module:Pudełko/Potrzebne"); return pudelko_potrzebne_modul.Problemy_kontenerowe_szablonowe(frame,0); end; p["Przedmiotowe błędy pudełka"]=function(frame) local pudelko_potrzebne_modul=require("Module:Pudełko/Potrzebne"); return pudelko_potrzebne_modul.Problemy_kontenerowe_szablonowe(frame,1); end; p["Dyskusyjne błędy pudełka"]=function(frame) local pudelko_potrzebne_modul=require("Module:Pudełko/Potrzebne"); return pudelko_potrzebne_modul.Problemy_kontenerowe_szablonowe(frame,2); end; p["Nazwa strony głównej projektu"]=function(frame,i) local numer_jednostki=i or frame.args["numer jednostki"]; local i=(numer_jednostki)and tonumber(numer_jednostki) or 0; local pudelko_pomocne_modul=require("Module:Pudełko/Pomocne"); local kod_jezyka,kod_projektu=pudelko_pomocne_modul.Wikikody_kontenera(frame,i); return pudelko_pomocne_modul.Nazwa_strony_bazowej_projektu_ze_zmiennej(frame,i,kod_jezyka,kod_projektu) or pudelko_pomocne_modul.Nazwa_strony_bazowej_projektu_z_wikidanych(kod_jezyka,kod_projektu); end; p["Nazwa strony głównej dla dzieci projektu"]=function(frame,i) local numer_jednostki=i or frame.args["numer jednostki"]; local i=(numer_jednostki)and tonumber(numer_jednostki) or 0; local pudelko_pomocne_modul=require("Module:Pudełko/Pomocne"); local kod_jezyka,kod_projektu=pudelko_pomocne_modul.Wikikody_kontenera(frame,i); return pudelko_pomocne_modul.Nazwa_strony_bazowej_dla_dzieci_ze_zmiennej(frame,i,kod_jezyka) or pudelko_pomocne_modul.Nazwa_strony_bazowej_dla_dzieci_z_wikidanych(kod_jezyka); end; p["Kod języka"]=function(frame,i) local numer_jednostki=i or frame.args["numer jednostki"]; local i=(numer_jednostki)and tonumber(numer_jednostki) or 0; local pudelko_modul=require("Module:Pudełko"); local wartosc_domyslna=pudelko_modul["Kod języka tego projektu"](); local pudelko_pomocne_modul=require("Module:Pudełko/Pomocne"); return pudelko_pomocne_modul.Kod_jezyka(frame,i,wartosc_domyslna); end; p["Kod projektu"]=function(frame,i) local numer_jednostki=i or frame.args["numer jednostki"]; local i=(numer_jednostki)and tonumber(numer_jednostki) or 0; local pudelko_modul=require("Module:Pudełko"); local wartosc_domyslna=pudelko_modul["Kod projektu tego projektu"](); local pudelko_pomocne_modul=require("Module:Pudełko/Pomocne"); return pudelko_pomocne_modul.Kod_projektu(frame,i,wartosc_domyslna); end; p["Klucz projektu"]=function(frame,i) local numer_jednostki=i or frame.args["numer jednostki"]; local i=(numer_jednostki)and tonumber(numer_jednostki) or 0; local pudelko_pomocne_modul=require("Module:Pudełko/Pomocne"); return pudelko_pomocne_modul.Klucz_projektu(frame,i); end; p["Inny niż język bieżący wiki"]=function(frame) local pudelko_pomocne_modul=require("Module:Pudełko/Pomocne"); return pudelko_pomocne_modul.Analiza_interwiki_czy_projekt_aktualny(frame,true,false); end; p["Inne niż lokalne wiki"]=function(frame) local pudelko_pomocne_modul=require("Module:Pudełko/Pomocne"); return pudelko_pomocne_modul.Analiza_interwiki_czy_projekt_aktualny(frame,false,true); end; p["Inne niż bieżące wiki"]=function(frame) local pudelko_pomocne_modul=require("Module:Pudełko/Pomocne"); return pudelko_pomocne_modul.Analiza_interwiki_czy_projekt_aktualny(frame,true,true); end; p["Podano parametry nienazwane"]=function(frame) local parametry_modul=require("Module:Parametry"); local args=parametry_modul.PobierzArgsParametry(frame); for i,_ in pairs(args)do if(type(i)=="number")then return "tak";end; end; return; end; p["Podano parametry numerowane"]=function(frame) local parametry_modul=require("Module:Parametry"); local args=parametry_modul.PobierzArgsParametry(frame); for i,_ in ipairs(args)do return "tak"; end; return; end; p["Podano parametry nazwane"]=function(frame) local parametry_modul=require("Module:Parametry"); local args=parametry_modul.PobierzArgsParametry(frame); for name,_ in pairs(args)do if(type(name)=="string")then return "tak"; end; end; return; end; p["Kod projektu tego projektu"]=function(frame) return "b"; end; p["Kod języka tego projektu"]=function(frame) return "pl" end; p["Klucz projektu tego projektu"]=function(frame) local pudelko_modul=require("Module:Pudełko"); return pudelko_modul["Kod języka tego projektu"](frame)..":"..pudelko_modul["Kod projektu tego projektu"](frame); end; p["Strona główna tego projektu"] = function(frame) local komunikat = mw.message.new('Mainpage', ''); if(not komunikat:exists())then return "Wikibooks:Strona główna";end; local zawartosc_komunikatu=komunikat:plain(); zawartosc_komunikatu=mw.getCurrentFrame():preprocess(zawartosc_komunikatu); return zawartosc_komunikatu; end; p["Strona główna dla dzieci tego projektu"] = function(frame) return "Wikijunior:Strona główna"; end; p["Nazwa strony głównej dla dzieci projektu 2"] = function(frame) local args=frame and (frame.args or frame) or {}; local kod_jezyka=args[1]; local pudelko_pomocne_modul=require("Module:Pudełko/Pomocne"); return pudelko_pomocne_modul.Nazwa_strony_bazowej_dla_dzieci_z_wikidanych(kod_jezyka); end; p["Nazwa strony głównej projektu 2"] = function(frame) local args=frame and (frame.args or frame) or {}; local kod_jezyka=args[1]; local kod_projektu=args[2]; local pudelko_pomocne_modul=require("Module:Pudełko/Pomocne"); return pudelko_pomocne_modul.Nazwa_strony_bazowej_projektu_z_wikidanych(kod_jezyka,kod_projektu); end; return p; bdlyzb9cvb2ay2f652yic56r2reba2c 540445 540397 2026-04-24T03:13:58Z Persino 2851 540445 Scribunto text/plain local p={}; function p.CzyNiepoprawnaNazwa(nazwa_jednostki) local html_dane_modul=mw.loadData("Module:Html/dane"); return mw.ustring.match(nazwa_jednostki,"[{}<>|%[%]#\n"..html_dane_modul.znak_127.."]+") or mw.ustring.match(nazwa_jednostki,"~~~") or mw.ustring.match(nazwa_jednostki,"&(%a+);"); end; p["Nazwa przestrzeni nazw"]=function(frame,czy_uwzglednic_alternatywna_nazwe,i) local numer_jednostki=i or frame.args["numer jednostki"]; local liczba_numer_jednostki=((numer_jednostki)and(tonumber(numer_jednostki))or 0); local pudelko_pomocne_modul=require("Module:Pudełko/Pomocne"); return pudelko_pomocne_modul.Nazwa_przestrzeni_nazw(frame,0, czy_uwzglednic_alternatywna_nazwe,liczba_numer_jednostki); end; p["Nazwa przedmiotowej przestrzeni nazw"]=function(frame,czy_uwzglednic_alternatywna_nazwe,i) local numer_jednostki=i or frame.args["numer jednostki"]; local liczba_numer_jednostki=((numer_jednostki)and(tonumber(numer_jednostki))or 0); local pudelko_pomocne_modul=require("Module:Pudełko/Pomocne"); return pudelko_pomocne_modul.Nazwa_przestrzeni_nazw(frame,1, czy_uwzglednic_alternatywna_nazwe,liczba_numer_jednostki); end; p["Nazwa przestrzeni nazw dyskusji"]=function(frame,czy_uwzglednic_alternatywna_nazwe,i) local numer_jednostki=i or frame.args["numer jednostki"]; local liczba_numer_jednostki=((numer_jednostki)and(tonumber(numer_jednostki))or 0); local pudelko_pomocne_modul=require("Module:Pudełko/Pomocne"); return pudelko_pomocne_modul.Nazwa_przestrzeni_nazw(frame,2, czy_uwzglednic_alternatywna_nazwe,liczba_numer_jednostki); end; p["Nazwa przestrzeni nazw 2"]=function(frame,czy_uwzglednic_alternatywna_nazwe,i) local pudelko_pomocne_modul=require("Module:Pudełko/Pomocne"); return pudelko_pomocne_modul.Nazwa_przestrzeni_nazw_2(frame,czy_uwzglednic_alternatywna_nazwe,i) end; p["Nazwa przedmiotowej przestrzeni nazw 2"]=function(frame,czy_uwzglednic_alternatywna_nazwe,i) local pudelko_pomocne_modul=require("Module:Pudełko/Pomocne"); return pudelko_pomocne_modul.Nazwa_przestrzeni_nazw_przedmiotowa_dyskusji_2(frame,czy_uwzglednic_alternatywna_nazwe,i,"przedmiotowa"); end; p["Nazwa przestrzeni nazw dyskusji 2"]=function(frame,czy_uwzglednic_alternatywna_nazwe,i) local pudelko_pomocne_modul=require("Module:Pudełko/Pomocne"); return pudelko_pomocne_modul.Nazwa_przestrzeni_nazw_przedmiotowa_dyskusji_2(frame,czy_uwzglednic_alternatywna_nazwe,i,"dyskusja"); end; p["Pełna nazwa dyskusji jednostki"]=function(frame,i) local numer_jednostki=i or frame.args["numer jednostki"]; local liczba_numer_jednostki=((numer_jednostki)and(tonumber(numer_jednostki))or 0); local pudelko_modul=require("Module:Pudełko"); local nazwa_przestrzeni_nazw=pudelko_modul["Nazwa przestrzeni nazw dyskusji"](frame,liczba_numer_jednostki); local nazwa_jednostki=pudelko_modul["Nazwa jednostki"](frame,liczba_numer_jednostki); if(nazwa_przestrzeni_nazw~="")then return nazwa_przestrzeni_nazw..":"..nazwa_jednostki;else return nazwa_jednostki;end; end; p["Pełna nazwa przedmiotowa jednostki"]=function(frame,i) local numer_jednostki=i or frame.args["numer jednostki"]; local liczba_numer_jednostki=((numer_jednostki)and(tonumber(numer_jednostki))or 0); local pudelko_modul=require("Module:Pudełko"); local nazwa_przestrzeni_nazw=pudelko_modul["Nazwa przedmiotowej przestrzeni nazw"](frame,liczba_numer_jednostki); local nazwa_jednostki=pudelko_modul["Nazwa jednostki"](frame,liczba_numer_jednostki); if(nazwa_przestrzeni_nazw~="")then return nazwa_przestrzeni_nazw..":"..nazwa_jednostki;else return nazwa_jednostki;end; end; p["Pełna nazwa jednostki"]=function(frame,i) local numer_jednostki=i or frame.args["numer jednostki"]; local liczba_numer_jednostki=((numer_jednostki)and(tonumber(numer_jednostki))or 0); local pudelko_modul=require("Module:Pudełko"); local nazwa_przestrzeni_nazw=pudelko_modul["Nazwa przestrzeni nazw"](frame,liczba_numer_jednostki); local nazwa_jednostki=pudelko_modul["Nazwa jednostki"](frame,liczba_numer_jednostki); if(nazwa_przestrzeni_nazw~="")then return nazwa_przestrzeni_nazw..":"..nazwa_jednostki;else return nazwa_jednostki;end; end; p["Pełna nazwa dyskusji jednostki 2"]=function(frame,i) local numer_jednostki=i or frame.args["numer jednostki"]; local liczba_numer_jednostki=((numer_jednostki)and(tonumber(numer_jednostki))or 0); local pudelko_modul=require("Module:Pudełko"); local nazwa_przestrzeni_nazw=pudelko_modul["Nazwa przestrzeni nazw dyskusji 2"](frame,liczba_numer_jednostki); local nazwa_jednostki=pudelko_modul["Nazwa dyskusji jednostki 2"](frame,liczba_numer_jednostki); if(nazwa_przestrzeni_nazw~="")then return nazwa_przestrzeni_nazw..":"..nazwa_jednostki;else return nazwa_jednostki;end; end; p["Pełna nazwa przedmiotowa jednostki 2"]=function(frame,i) local numer_jednostki=i or frame.args["numer jednostki"]; local liczba_numer_jednostki=((numer_jednostki)and(tonumber(numer_jednostki))or 0); local pudelko_modul=require("Module:Pudełko"); local nazwa_przestrzeni_nazw=pudelko_modul["Nazwa przedmiotowej przestrzeni nazw 2"](frame,liczba_numer_jednostki); local nazwa_jednostki=pudelko_modul["Nazwa przedmiotowa jednostki 2"](frame,liczba_numer_jednostki); if(nazwa_przestrzeni_nazw~="")then return nazwa_przestrzeni_nazw..":"..nazwa_jednostki;else return nazwa_jednostki;end; end; p["Pełna nazwa jednostki 2"]=function(frame,i) local numer_jednostki=i or frame.args["numer jednostki"]; local liczba_numer_jednostki=((numer_jednostki)and(tonumber(numer_jednostki))or 0); local pudelko_modul=require("Module:Pudełko"); local nazwa_przestrzeni_nazw=pudelko_modul["Nazwa przestrzeni nazw 2"](frame,liczba_numer_jednostki); local nazwa_jednostki=pudelko_modul["Nazwa jednostki 2"](frame,liczba_numer_jednostki); if(nazwa_przestrzeni_nazw~="")then return nazwa_przestrzeni_nazw..":"..nazwa_jednostki;else return nazwa_jednostki;end; end; p["Pełna nazwa dyskusji jednostki 3"]=function(frame,i) local numer_jednostki=i or frame.args["numer jednostki"]; local liczba_numer_jednostki=((numer_jednostki)and(tonumber(numer_jednostki)) or 0); local pudelko_pomocne_modul=require("Module:Pudełko/Pomocne"); local nazwa_przestrzeni_nazw,nazwa_jednostki=pudelko_pomocne_modul.Uzyskanie_nazw_jednostki(frame,2,nil,liczba_numer_jednostki); if(nazwa_przestrzeni_nazw~="")then return nazwa_przestrzeni_nazw..":"..nazwa_jednostki;else return nazwa_jednostki;end; end; p["Pełna nazwa przedmiotowa jednostki 3"]=function(frame,i) local numer_jednostki=i or frame.args["numer jednostki"]; local liczba_numer_jednostki=((numer_jednostki)and(tonumber(numer_jednostki)) or 0); local pudelko_pomocne_modul=require("Module:Pudełko/Pomocne"); local nazwa_przestrzeni_nazw,nazwa_jednostki=pudelko_pomocne_modul.Uzyskanie_nazw_jednostki(frame,1,nil,liczba_numer_jednostki); if(nazwa_przestrzeni_nazw~="")then return nazwa_przestrzeni_nazw..":"..nazwa_jednostki;else return nazwa_jednostki;end; end; p["Pełna nazwa jednostki 3"]=function(frame,i) local numer_jednostki=i or frame.args["numer jednostki"]; local liczba_numer_jednostki=((numer_jednostki)and(tonumber(numer_jednostki)) or 0); local pudelko_pomocne_modul=require("Module:Pudełko/Pomocne"); local nazwa_przestrzeni_nazw,nazwa_jednostki=pudelko_pomocne_modul.Uzyskanie_nazw_jednostki(frame,0,nil,liczba_numer_jednostki); if(nazwa_przestrzeni_nazw~="")then return nazwa_przestrzeni_nazw..":"..nazwa_jednostki;else return nazwa_jednostki;end; end; p["Nazwa jednostki"]=function(frame,i) local pudelko_pomocne_modul=require("Module:Pudełko/Pomocne"); return pudelko_pomocne_modul.Nazwa_jednostki(frame,i); end; p["Nazwa jednostki 2"]=function(frame,i) local pudelko_pomocne_modul=require("Module:Pudełko/Pomocne"); return pudelko_pomocne_modul.Jaka_nazwa_jednostki(frame,i,nil); end; p["Nazwa przedmiotowa jednostki 2"]=function(frame,i) local pudelko_pomocne_modul=require("Module:Pudełko/Pomocne"); return pudelko_pomocne_modul.Jaka_nazwa_jednostki(frame,i,"przedmiotowa"); end; p["Nazwa dyskusji jednostki 2"]=function(frame,i) local pudelko_pomocne_modul=require("Module:Pudełko/Pomocne"); return pudelko_pomocne_modul.Jaka_nazwa_jednostki(frame,i,"dyskusja"); end; p["Nazwa przestrzeni nazw 3"]=function(frame,czy_uwzglednic_alternatywna_nazwe,i) local numer_jednostki=i or frame.args["numer jednostki"]; local liczba_numeru_jednostki=((numer_jednostki)and(tonumber(numer_jednostki)) or 0); local pudelko_pomocne_modul=require("Module:Pudełko/Pomocne"); return pudelko_pomocne_modul.Uzyskanie_nazw_jednostki(frame,0,czy_uwzglednic_alternatywna_nazwe,liczba_numeru_jednostki,nil,1); end; p["Nazwa przedmiotowej przestrzeni nazw 3"]=function(frame,czy_uwzglednic_alternatywna_nazwe,i) local numer_jednostki=i or frame.args["numer jednostki"]; local liczba_numeru_jednostki=((numer_jednostki)and(tonumber(numer_jednostki)) or 0); local pudelko_pomocne_modul=require("Module:Pudełko/Pomocne"); return pudelko_pomocne_modul.Uzyskanie_nazw_jednostki(frame,1,czy_uwzglednic_alternatywna_nazwe,liczba_numeru_jednostki,nil,1); end; p["Nazwa przestrzeni nazw dyskusji 3"]=function(frame,czy_uwzglednic_alternatywna_nazwe,i) local numer_jednostki=i or frame.args["numer jednostki"]; local liczba_numeru_jednostki=((numer_jednostki)and(tonumber(numer_jednostki)) or 0); local pudelko_pomocne_modul=require("Module:Pudełko/Pomocne"); return pudelko_pomocne_modul.Uzyskanie_nazw_jednostki(frame,2,czy_uwzglednic_alternatywna_nazwe,liczba_numeru_jednostki,nil,1); end; p["Nazwa jednostki 3"]=function(frame,i) local numer_jednostki=i or frame.args["numer jednostki"]; local liczba_numeru_jednostki=((numer_jednostki)and(tonumber(numer_jednostki)) or 0); local pudelko_pomocne_modul=require("Module:Pudełko/Pomocne"); return pudelko_pomocne_modul.Uzyskanie_nazw_jednostki(frame,0,nil,liczba_numeru_jednostki,nil,2); end; p["Nazwa przedmiotowa jednostki 3"]=function(frame,i) local numer_jednostki=i or frame.args["numer jednostki"]; local liczba_numeru_jednostki=((numer_jednostki)and(tonumber(numer_jednostki))or 0); local pudelko_pomocne_modul=require("Module:Pudełko/Pomocne"); return pudelko_pomocne_modul.Uzyskanie_nazw_jednostki(frame,1,nil,liczba_numeru_jednostki,nil,2); end; p["Nazwa dyskusji jednostki 3"]=function(frame,i) local numer_jednostki=i or frame.args["numer jednostki"]; local liczba_numeru_jednostki=((numer_jednostki)and(tonumber(numer_jednostki))or 0); local pudelko_pomocne_modul=require("Module:Pudełko/Pomocne"); return pudelko_pomocne_modul.Uzyskanie_nazw_jednostki(frame,2,nil,liczba_numeru_jednostki,nil,2); end; p["Typ jednostki"]=function(frame,i) local pudelko_pomocne_modul=require("Module:Pudełko/Pomocne"); return pudelko_pomocne_modul.Typ_jednostki(frame,0,i,0); end; p["Typ jednostki 2"]=function(frame,i) local pudelko_pomocne_modul=require("Module:Pudełko/Pomocne"); return pudelko_pomocne_modul.Typ_jednostki(frame,0,i,1); end; p["Typ jednostki 3"]=function(frame,i) local pudelko_pomocne_modul=require("Module:Pudełko/Pomocne"); return pudelko_pomocne_modul.Typ_jednostki(frame,0,i,nil); end; p["Przedmiotowy typ jednostki"]=function(frame,i) local pudelko_pomocne_modul=require("Module:Pudełko/Pomocne"); return pudelko_pomocne_modul.Typ_jednostki(frame, 1,i,0); end; p["Przedmiotowy typ jednostki 2"]=function(frame,i) local pudelko_pomocne_modul=require("Module:Pudełko/Pomocne"); return pudelko_pomocne_modul.Typ_jednostki(frame, 1,i,1); end; p["Przedmiotowy typ jednostki 3"]=function(frame,i) local pudelko_pomocne_modul=require("Module:Pudełko/Pomocne"); return pudelko_pomocne_modul.Typ_jednostki(frame, 1,i,nil); end; p["Dyskusyjny typ jednostki"]=function(frame,i) local pudelko_pomocne_modul=require("Module:Pudełko/Pomocne"); return pudelko_pomocne_modul.Typ_jednostki(frame,2,i,0); end; p["Dyskusyjny typ jednostki 2"]=function(frame,i) local pudelko_pomocne_modul=require("Module:Pudełko/Pomocne"); return pudelko_pomocne_modul.Typ_jednostki(frame, 2,i,1); end; p["Dyskusyjny typ jednostki 3"]=function(frame,i) local pudelko_pomocne_modul=require("Module:Pudełko/Pomocne"); return pudelko_pomocne_modul.Typ_jednostki(frame, 2,i,nil); end; p["Cecha pudełka"] = function(frame) local pudelko_potrzebne_modul=require("Module:Pudełko/Potrzebne"); return pudelko_potrzebne_modul.Cecha_kontenerowa_szablonowa(frame,"Błędy pudełka"); end; p["Przedmiotowa cecha pudełka"] = function(frame) local pudelko_potrzebne_modul=require("Module:Pudełko/Potrzebne"); return pudelko_potrzebne_modul.Cecha_kontenerowa_szablonowa(frame,"Przedmiotowe błędy pudełka"); end; p["Dyskusyjna cecha pudełka"] = function(frame) local pudelko_potrzebne_modul=require("Module:Pudełko/Potrzebne"); return pudelko_potrzebne_modul.Cecha_kontenerowa_szablonowa(frame,"Dyskusyjne błędy pudełka"); end; p["Ogólne pudełko"]= function(frame) local pudelko_potrzebne_modul=require("Module:Pudełko/Potrzebne"); return pudelko_potrzebne_modul.Generalny_kontener_szablonowy(frame); end; p["Tekst pudełka"] = function (frame) return frame.args["tekst"]; end; p["Błędy pudełka"]=function(frame) local pudelko_potrzebne_modul=require("Module:Pudełko/Potrzebne"); return pudelko_potrzebne_modul.Problemy_kontenerowe_szablonowe(frame,0); end; p["Przedmiotowe błędy pudełka"]=function(frame) local pudelko_potrzebne_modul=require("Module:Pudełko/Potrzebne"); return pudelko_potrzebne_modul.Problemy_kontenerowe_szablonowe(frame,1); end; p["Dyskusyjne błędy pudełka"]=function(frame) local pudelko_potrzebne_modul=require("Module:Pudełko/Potrzebne"); return pudelko_potrzebne_modul.Problemy_kontenerowe_szablonowe(frame,2); end; p["Nazwa strony głównej projektu"]=function(frame,i) local numer_jednostki=i or frame.args["numer jednostki"]; local i=(numer_jednostki)and tonumber(numer_jednostki) or 0; local pudelko_pomocne_modul=require("Module:Pudełko/Pomocne"); local kod_jezyka,kod_projektu=pudelko_pomocne_modul.Wikikody_kontenera(frame,i); return pudelko_pomocne_modul.Nazwa_strony_bazowej_projektu_ze_zmiennej(frame,i,kod_jezyka,kod_projektu) or pudelko_pomocne_modul.Nazwa_strony_bazowej_projektu_z_wikidanych(kod_jezyka,kod_projektu); end; p["Nazwa strony głównej dla dzieci projektu"]=function(frame,i) local numer_jednostki=i or frame.args["numer jednostki"]; local i=(numer_jednostki)and tonumber(numer_jednostki) or 0; local pudelko_pomocne_modul=require("Module:Pudełko/Pomocne"); local kod_jezyka,kod_projektu=pudelko_pomocne_modul.Wikikody_kontenera(frame,i); return pudelko_pomocne_modul.Nazwa_strony_bazowej_dla_dzieci_ze_zmiennej(frame,i,kod_jezyka) or pudelko_pomocne_modul.Nazwa_strony_bazowej_dla_dzieci_z_wikidanych(kod_jezyka); end; p["Kod języka"]=function(frame,i) local numer_jednostki=i or frame.args["numer jednostki"]; local i=(numer_jednostki)and tonumber(numer_jednostki) or 0; local pudelko_modul=require("Module:Pudełko"); local wartosc_domyslna=pudelko_modul["Kod języka tego projektu"](); local pudelko_pomocne_modul=require("Module:Pudełko/Pomocne"); return pudelko_pomocne_modul.Kod_jezyka(frame,i,wartosc_domyslna); end; p["Kod projektu"]=function(frame,i) local numer_jednostki=i or frame.args["numer jednostki"]; local i=(numer_jednostki)and tonumber(numer_jednostki) or 0; local pudelko_modul=require("Module:Pudełko"); local wartosc_domyslna=pudelko_modul["Kod projektu tego projektu"](); local pudelko_pomocne_modul=require("Module:Pudełko/Pomocne"); return pudelko_pomocne_modul.Kod_projektu(frame,i,wartosc_domyslna); end; p["Klucz projektu"]=function(frame,i) local numer_jednostki=i or frame.args["numer jednostki"]; local i=(numer_jednostki)and tonumber(numer_jednostki) or 0; local pudelko_pomocne_modul=require("Module:Pudełko/Pomocne"); return pudelko_pomocne_modul.Klucz_projektu(frame,i); end; p["Inny niż język bieżący wiki"]=function(frame) local pudelko_pomocne_modul=require("Module:Pudełko/Pomocne"); return pudelko_pomocne_modul.Analiza_interwiki_czy_projekt_aktualny(frame,true,false); end; p["Inne niż lokalne wiki"]=function(frame) local pudelko_pomocne_modul=require("Module:Pudełko/Pomocne"); return pudelko_pomocne_modul.Analiza_interwiki_czy_projekt_aktualny(frame,false,true); end; p["Inne niż bieżące wiki"]=function(frame) local pudelko_pomocne_modul=require("Module:Pudełko/Pomocne"); return pudelko_pomocne_modul.Analiza_interwiki_czy_projekt_aktualny(frame,true,true); end; p["Podano parametry nienazwane"]=function(frame) local parametry_modul=require("Module:Parametry"); local args=parametry_modul.PobierzArgsParametry(frame); for i,_ in pairs(args)do if(type(i)=="number")then return "tak";end; end; return; end; p["Podano parametry numerowane"]=function(frame) local parametry_modul=require("Module:Parametry"); local args=parametry_modul.PobierzArgsParametry(frame); for i,_ in ipairs(args)do return "tak"; end; return; end; p["Podano parametry nazwane"]=function(frame) local parametry_modul=require("Module:Parametry"); local args=parametry_modul.PobierzArgsParametry(frame); for name,_ in pairs(args)do if(type(name)=="string")then return "tak"; end; end; return; end; p["Kod projektu tego projektu"]=function(frame) return "b"; end; p["Kod języka tego projektu"]=function(frame) return "pl" end; p["Klucz projektu tego projektu"]=function(frame) local pudelko_modul=require("Module:Pudełko"); return pudelko_modul["Kod języka tego projektu"](frame)..":"..pudelko_modul["Kod projektu tego projektu"](frame); end; p["Strona główna tego projektu"] = function(frame) local komunikat = mw.message.new('Mainpage', ''); if(not komunikat:exists())then return "Wikibooks:Strona główna";end; local zawartosc_komunikatu=komunikat:plain(); zawartosc_komunikatu=mw.getCurrentFrame():preprocess(zawartosc_komunikatu); return zawartosc_komunikatu; end; p["Strona główna dla dzieci tego projektu"] = function(frame) return "Wikijunior:Strona główna"; end; p["Nazwa strony głównej dla dzieci projektu 2"] = function(frame) local args=frame and (frame.args or frame) or {}; local kod_jezyka=args[1]; local pudelko_pomocne_modul=require("Module:Pudełko/Pomocne"); return pudelko_pomocne_modul.Nazwa_strony_bazowej_dla_dzieci_z_wikidanych(kod_jezyka); end; p["Nazwa strony głównej projektu 2"] = function(frame) local args=frame and (frame.args or frame) or {}; local kod_jezyka=args[1]; local kod_projektu=args[2]; local pudelko_pomocne_modul=require("Module:Pudełko/Pomocne"); return pudelko_pomocne_modul.Nazwa_strony_bazowej_projektu_z_wikidanych(kod_jezyka,kod_projektu); end; return p; jwj52x8v0qeoyv7ntstn6eep1kiq5t3 540475 540445 2026-04-24T11:32:31Z Persino 2851 540475 Scribunto text/plain local p={}; function p.CzyNiepoprawnaNazwa(nazwa_jednostki) local html_dane_modul=mw.loadData("Module:Html/dane"); return mw.ustring.match(nazwa_jednostki,"[{}<>|%[%]#\n"..html_dane_modul.znak_127.."]+") or mw.ustring.match(nazwa_jednostki,"~~~") or mw.ustring.match(nazwa_jednostki,"&(%a+);"); end; p["Nazwa przestrzeni nazw"]=function(frame,czy_uwzglednic_alternatywna_nazwe,i) local numer_jednostki=i or frame.args["numer jednostki"]; local liczba_numer_jednostki=((numer_jednostki)and(tonumber(numer_jednostki))or 0); local pudelko_pomocne_modul=require("Module:Pudełko/Pomocne"); return pudelko_pomocne_modul.Nazwa_przestrzeni_nazw(frame,0, czy_uwzglednic_alternatywna_nazwe,liczba_numer_jednostki); end; p["Nazwa przedmiotowej przestrzeni nazw"]=function(frame,czy_uwzglednic_alternatywna_nazwe,i) local numer_jednostki=i or frame.args["numer jednostki"]; local liczba_numer_jednostki=((numer_jednostki)and(tonumber(numer_jednostki))or 0); local pudelko_pomocne_modul=require("Module:Pudełko/Pomocne"); return pudelko_pomocne_modul.Nazwa_przestrzeni_nazw(frame,1, czy_uwzglednic_alternatywna_nazwe,liczba_numer_jednostki); end; p["Nazwa przestrzeni nazw dyskusji"]=function(frame,czy_uwzglednic_alternatywna_nazwe,i) local numer_jednostki=i or frame.args["numer jednostki"]; local liczba_numer_jednostki=((numer_jednostki)and(tonumber(numer_jednostki))or 0); local pudelko_pomocne_modul=require("Module:Pudełko/Pomocne"); return pudelko_pomocne_modul.Nazwa_przestrzeni_nazw(frame,2, czy_uwzglednic_alternatywna_nazwe,liczba_numer_jednostki); end; p["Nazwa przestrzeni nazw 2"]=function(frame,czy_uwzglednic_alternatywna_nazwe,i) local pudelko_pomocne_modul=require("Module:Pudełko/Pomocne"); return pudelko_pomocne_modul.Nazwa_przestrzeni_nazw_2(frame,czy_uwzglednic_alternatywna_nazwe,i) end; p["Nazwa przedmiotowej przestrzeni nazw 2"]=function(frame,czy_uwzglednic_alternatywna_nazwe,i) local pudelko_pomocne_modul=require("Module:Pudełko/Pomocne"); return pudelko_pomocne_modul.Nazwa_przestrzeni_nazw_przedmiotowa_dyskusji_2(frame,czy_uwzglednic_alternatywna_nazwe,i,"przedmiotowa"); end; p["Nazwa przestrzeni nazw dyskusji 2"]=function(frame,czy_uwzglednic_alternatywna_nazwe,i) local pudelko_pomocne_modul=require("Module:Pudełko/Pomocne"); return pudelko_pomocne_modul.Nazwa_przestrzeni_nazw_przedmiotowa_dyskusji_2(frame,czy_uwzglednic_alternatywna_nazwe,i,"dyskusja"); end; p["Nazwa przestrzeni nazw 3"]=function(frame,czy_uwzglednic_alternatywna_nazwe,i) local numer_jednostki=i or frame.args["numer jednostki"]; local liczba_numeru_jednostki=((numer_jednostki)and(tonumber(numer_jednostki)) or 0); local pudelko_pomocne_modul=require("Module:Pudełko/Pomocne"); return pudelko_pomocne_modul.Uzyskanie_nazw_jednostki(frame,0,czy_uwzglednic_alternatywna_nazwe,liczba_numeru_jednostki,nil,1); end; p["Nazwa przedmiotowej przestrzeni nazw 3"]=function(frame,czy_uwzglednic_alternatywna_nazwe,i) local numer_jednostki=i or frame.args["numer jednostki"]; local liczba_numeru_jednostki=((numer_jednostki)and(tonumber(numer_jednostki)) or 0); local pudelko_pomocne_modul=require("Module:Pudełko/Pomocne"); return pudelko_pomocne_modul.Uzyskanie_nazw_jednostki(frame,1,czy_uwzglednic_alternatywna_nazwe,liczba_numeru_jednostki,nil,1); end; p["Nazwa przestrzeni nazw dyskusji 3"]=function(frame,czy_uwzglednic_alternatywna_nazwe,i) local numer_jednostki=i or frame.args["numer jednostki"]; local liczba_numeru_jednostki=((numer_jednostki)and(tonumber(numer_jednostki)) or 0); local pudelko_pomocne_modul=require("Module:Pudełko/Pomocne"); return pudelko_pomocne_modul.Uzyskanie_nazw_jednostki(frame,2,czy_uwzglednic_alternatywna_nazwe,liczba_numeru_jednostki,nil,1); end; p["Pełna nazwa dyskusji jednostki"]=function(frame,i) local numer_jednostki=i or frame.args["numer jednostki"]; local liczba_numer_jednostki=((numer_jednostki)and(tonumber(numer_jednostki))or 0); local pudelko_modul=require("Module:Pudełko"); local nazwa_przestrzeni_nazw=pudelko_modul["Nazwa przestrzeni nazw dyskusji"](frame,liczba_numer_jednostki); local nazwa_jednostki=pudelko_modul["Nazwa jednostki"](frame,liczba_numer_jednostki); if(nazwa_przestrzeni_nazw~="")then return nazwa_przestrzeni_nazw..":"..nazwa_jednostki;else return nazwa_jednostki;end; end; p["Pełna nazwa przedmiotowa jednostki"]=function(frame,i) local numer_jednostki=i or frame.args["numer jednostki"]; local liczba_numer_jednostki=((numer_jednostki)and(tonumber(numer_jednostki))or 0); local pudelko_modul=require("Module:Pudełko"); local nazwa_przestrzeni_nazw=pudelko_modul["Nazwa przedmiotowej przestrzeni nazw"](frame,liczba_numer_jednostki); local nazwa_jednostki=pudelko_modul["Nazwa jednostki"](frame,liczba_numer_jednostki); if(nazwa_przestrzeni_nazw~="")then return nazwa_przestrzeni_nazw..":"..nazwa_jednostki;else return nazwa_jednostki;end; end; p["Pełna nazwa jednostki"]=function(frame,i) local numer_jednostki=i or frame.args["numer jednostki"]; local liczba_numer_jednostki=((numer_jednostki)and(tonumber(numer_jednostki))or 0); local pudelko_modul=require("Module:Pudełko"); local nazwa_przestrzeni_nazw=pudelko_modul["Nazwa przestrzeni nazw"](frame,liczba_numer_jednostki); local nazwa_jednostki=pudelko_modul["Nazwa jednostki"](frame,liczba_numer_jednostki); if(nazwa_przestrzeni_nazw~="")then return nazwa_przestrzeni_nazw..":"..nazwa_jednostki;else return nazwa_jednostki;end; end; p["Pełna nazwa dyskusji jednostki 2"]=function(frame,i) local numer_jednostki=i or frame.args["numer jednostki"]; local liczba_numer_jednostki=((numer_jednostki)and(tonumber(numer_jednostki))or 0); local pudelko_modul=require("Module:Pudełko"); local nazwa_przestrzeni_nazw=pudelko_modul["Nazwa przestrzeni nazw dyskusji 2"](frame,liczba_numer_jednostki); local nazwa_jednostki=pudelko_modul["Nazwa dyskusji jednostki 2"](frame,liczba_numer_jednostki); if(nazwa_przestrzeni_nazw~="")then return nazwa_przestrzeni_nazw..":"..nazwa_jednostki;else return nazwa_jednostki;end; end; p["Pełna nazwa przedmiotowa jednostki 2"]=function(frame,i) local numer_jednostki=i or frame.args["numer jednostki"]; local liczba_numer_jednostki=((numer_jednostki)and(tonumber(numer_jednostki))or 0); local pudelko_modul=require("Module:Pudełko"); local nazwa_przestrzeni_nazw=pudelko_modul["Nazwa przedmiotowej przestrzeni nazw 2"](frame,liczba_numer_jednostki); local nazwa_jednostki=pudelko_modul["Nazwa przedmiotowa jednostki 2"](frame,liczba_numer_jednostki); if(nazwa_przestrzeni_nazw~="")then return nazwa_przestrzeni_nazw..":"..nazwa_jednostki;else return nazwa_jednostki;end; end; p["Pełna nazwa jednostki 2"]=function(frame,i) local numer_jednostki=i or frame.args["numer jednostki"]; local liczba_numer_jednostki=((numer_jednostki)and(tonumber(numer_jednostki))or 0); local pudelko_modul=require("Module:Pudełko"); local nazwa_przestrzeni_nazw=pudelko_modul["Nazwa przestrzeni nazw 2"](frame,liczba_numer_jednostki); local nazwa_jednostki=pudelko_modul["Nazwa jednostki 2"](frame,liczba_numer_jednostki); if(nazwa_przestrzeni_nazw~="")then return nazwa_przestrzeni_nazw..":"..nazwa_jednostki;else return nazwa_jednostki;end; end; p["Pełna nazwa dyskusji jednostki 3"]=function(frame,i) local numer_jednostki=i or frame.args["numer jednostki"]; local liczba_numer_jednostki=((numer_jednostki)and(tonumber(numer_jednostki)) or 0); local pudelko_pomocne_modul=require("Module:Pudełko/Pomocne"); local nazwa_przestrzeni_nazw,nazwa_jednostki=pudelko_pomocne_modul.Uzyskanie_nazw_jednostki(frame,2,nil,liczba_numer_jednostki); if(nazwa_przestrzeni_nazw~="")then return nazwa_przestrzeni_nazw..":"..nazwa_jednostki;else return nazwa_jednostki;end; end; p["Pełna nazwa przedmiotowa jednostki 3"]=function(frame,i) local numer_jednostki=i or frame.args["numer jednostki"]; local liczba_numer_jednostki=((numer_jednostki)and(tonumber(numer_jednostki)) or 0); local pudelko_pomocne_modul=require("Module:Pudełko/Pomocne"); local nazwa_przestrzeni_nazw,nazwa_jednostki=pudelko_pomocne_modul.Uzyskanie_nazw_jednostki(frame,1,nil,liczba_numer_jednostki); if(nazwa_przestrzeni_nazw~="")then return nazwa_przestrzeni_nazw..":"..nazwa_jednostki;else return nazwa_jednostki;end; end; p["Pełna nazwa jednostki 3"]=function(frame,i) local numer_jednostki=i or frame.args["numer jednostki"]; local liczba_numer_jednostki=((numer_jednostki)and(tonumber(numer_jednostki)) or 0); local pudelko_pomocne_modul=require("Module:Pudełko/Pomocne"); local nazwa_przestrzeni_nazw,nazwa_jednostki=pudelko_pomocne_modul.Uzyskanie_nazw_jednostki(frame,0,nil,liczba_numer_jednostki); if(nazwa_przestrzeni_nazw~="")then return nazwa_przestrzeni_nazw..":"..nazwa_jednostki;else return nazwa_jednostki;end; end; p["Nazwa jednostki"]=function(frame,i) local pudelko_pomocne_modul=require("Module:Pudełko/Pomocne"); return pudelko_pomocne_modul.Nazwa_jednostki(frame,i); end; p["Nazwa jednostki 2"]=function(frame,i) local pudelko_pomocne_modul=require("Module:Pudełko/Pomocne"); return pudelko_pomocne_modul.Jaka_nazwa_jednostki(frame,i,nil); end; p["Nazwa przedmiotowa jednostki 2"]=function(frame,i) local pudelko_pomocne_modul=require("Module:Pudełko/Pomocne"); return pudelko_pomocne_modul.Jaka_nazwa_jednostki(frame,i,"przedmiotowa"); end; p["Nazwa dyskusji jednostki 2"]=function(frame,i) local pudelko_pomocne_modul=require("Module:Pudełko/Pomocne"); return pudelko_pomocne_modul.Jaka_nazwa_jednostki(frame,i,"dyskusja"); end; p["Nazwa jednostki 3"]=function(frame,i) local numer_jednostki=i or frame.args["numer jednostki"]; local liczba_numeru_jednostki=((numer_jednostki)and(tonumber(numer_jednostki)) or 0); local pudelko_pomocne_modul=require("Module:Pudełko/Pomocne"); return pudelko_pomocne_modul.Uzyskanie_nazw_jednostki(frame,0,nil,liczba_numeru_jednostki,nil,2); end; p["Nazwa przedmiotowa jednostki 3"]=function(frame,i) local numer_jednostki=i or frame.args["numer jednostki"]; local liczba_numeru_jednostki=((numer_jednostki)and(tonumber(numer_jednostki))or 0); local pudelko_pomocne_modul=require("Module:Pudełko/Pomocne"); return pudelko_pomocne_modul.Uzyskanie_nazw_jednostki(frame,1,nil,liczba_numeru_jednostki,nil,2); end; p["Nazwa dyskusji jednostki 3"]=function(frame,i) local numer_jednostki=i or frame.args["numer jednostki"]; local liczba_numeru_jednostki=((numer_jednostki)and(tonumber(numer_jednostki))or 0); local pudelko_pomocne_modul=require("Module:Pudełko/Pomocne"); return pudelko_pomocne_modul.Uzyskanie_nazw_jednostki(frame,2,nil,liczba_numeru_jednostki,nil,2); end; p["Typ jednostki"]=function(frame,i) local pudelko_pomocne_modul=require("Module:Pudełko/Pomocne"); return pudelko_pomocne_modul.Typ_jednostki(frame,0,i,0); end; p["Typ jednostki 2"]=function(frame,i) local pudelko_pomocne_modul=require("Module:Pudełko/Pomocne"); return pudelko_pomocne_modul.Typ_jednostki(frame,0,i,1); end; p["Typ jednostki 3"]=function(frame,i) local pudelko_pomocne_modul=require("Module:Pudełko/Pomocne"); return pudelko_pomocne_modul.Typ_jednostki(frame,0,i,nil); end; p["Przedmiotowy typ jednostki"]=function(frame,i) local pudelko_pomocne_modul=require("Module:Pudełko/Pomocne"); return pudelko_pomocne_modul.Typ_jednostki(frame, 1,i,0); end; p["Przedmiotowy typ jednostki 2"]=function(frame,i) local pudelko_pomocne_modul=require("Module:Pudełko/Pomocne"); return pudelko_pomocne_modul.Typ_jednostki(frame, 1,i,1); end; p["Przedmiotowy typ jednostki 3"]=function(frame,i) local pudelko_pomocne_modul=require("Module:Pudełko/Pomocne"); return pudelko_pomocne_modul.Typ_jednostki(frame, 1,i,nil); end; p["Dyskusyjny typ jednostki"]=function(frame,i) local pudelko_pomocne_modul=require("Module:Pudełko/Pomocne"); return pudelko_pomocne_modul.Typ_jednostki(frame,2,i,0); end; p["Dyskusyjny typ jednostki 2"]=function(frame,i) local pudelko_pomocne_modul=require("Module:Pudełko/Pomocne"); return pudelko_pomocne_modul.Typ_jednostki(frame, 2,i,1); end; p["Dyskusyjny typ jednostki 3"]=function(frame,i) local pudelko_pomocne_modul=require("Module:Pudełko/Pomocne"); return pudelko_pomocne_modul.Typ_jednostki(frame, 2,i,nil); end; p["Cecha pudełka"] = function(frame) local pudelko_potrzebne_modul=require("Module:Pudełko/Potrzebne"); return pudelko_potrzebne_modul.Cecha_kontenerowa_szablonowa(frame,"Błędy pudełka"); end; p["Przedmiotowa cecha pudełka"] = function(frame) local pudelko_potrzebne_modul=require("Module:Pudełko/Potrzebne"); return pudelko_potrzebne_modul.Cecha_kontenerowa_szablonowa(frame,"Przedmiotowe błędy pudełka"); end; p["Dyskusyjna cecha pudełka"] = function(frame) local pudelko_potrzebne_modul=require("Module:Pudełko/Potrzebne"); return pudelko_potrzebne_modul.Cecha_kontenerowa_szablonowa(frame,"Dyskusyjne błędy pudełka"); end; p["Ogólne pudełko"]= function(frame) local pudelko_potrzebne_modul=require("Module:Pudełko/Potrzebne"); return pudelko_potrzebne_modul.Generalny_kontener_szablonowy(frame); end; p["Tekst pudełka"] = function (frame) return frame.args["tekst"]; end; p["Błędy pudełka"]=function(frame) local pudelko_potrzebne_modul=require("Module:Pudełko/Potrzebne"); return pudelko_potrzebne_modul.Problemy_kontenerowe_szablonowe(frame,0); end; p["Przedmiotowe błędy pudełka"]=function(frame) local pudelko_potrzebne_modul=require("Module:Pudełko/Potrzebne"); return pudelko_potrzebne_modul.Problemy_kontenerowe_szablonowe(frame,1); end; p["Dyskusyjne błędy pudełka"]=function(frame) local pudelko_potrzebne_modul=require("Module:Pudełko/Potrzebne"); return pudelko_potrzebne_modul.Problemy_kontenerowe_szablonowe(frame,2); end; p["Nazwa strony głównej projektu"]=function(frame,i) local numer_jednostki=i or frame.args["numer jednostki"]; local i=(numer_jednostki)and tonumber(numer_jednostki) or 0; local pudelko_pomocne_modul=require("Module:Pudełko/Pomocne"); local kod_jezyka,kod_projektu=pudelko_pomocne_modul.Wikikody_kontenera(frame,i); return pudelko_pomocne_modul.Nazwa_strony_bazowej_projektu_ze_zmiennej(frame,i,kod_jezyka,kod_projektu) or pudelko_pomocne_modul.Nazwa_strony_bazowej_projektu_z_wikidanych(kod_jezyka,kod_projektu); end; p["Nazwa strony głównej dla dzieci projektu"]=function(frame,i) local numer_jednostki=i or frame.args["numer jednostki"]; local i=(numer_jednostki)and tonumber(numer_jednostki) or 0; local pudelko_pomocne_modul=require("Module:Pudełko/Pomocne"); local kod_jezyka,kod_projektu=pudelko_pomocne_modul.Wikikody_kontenera(frame,i); return pudelko_pomocne_modul.Nazwa_strony_bazowej_dla_dzieci_ze_zmiennej(frame,i,kod_jezyka) or pudelko_pomocne_modul.Nazwa_strony_bazowej_dla_dzieci_z_wikidanych(kod_jezyka); end; p["Kod języka"]=function(frame,i) local numer_jednostki=i or frame.args["numer jednostki"]; local i=(numer_jednostki)and tonumber(numer_jednostki) or 0; local pudelko_modul=require("Module:Pudełko"); local wartosc_domyslna=pudelko_modul["Kod języka tego projektu"](); local pudelko_pomocne_modul=require("Module:Pudełko/Pomocne"); return pudelko_pomocne_modul.Kod_jezyka(frame,i,wartosc_domyslna); end; p["Kod projektu"]=function(frame,i) local numer_jednostki=i or frame.args["numer jednostki"]; local i=(numer_jednostki)and tonumber(numer_jednostki) or 0; local pudelko_modul=require("Module:Pudełko"); local wartosc_domyslna=pudelko_modul["Kod projektu tego projektu"](); local pudelko_pomocne_modul=require("Module:Pudełko/Pomocne"); return pudelko_pomocne_modul.Kod_projektu(frame,i,wartosc_domyslna); end; p["Klucz projektu"]=function(frame,i) local numer_jednostki=i or frame.args["numer jednostki"]; local i=(numer_jednostki)and tonumber(numer_jednostki) or 0; local pudelko_pomocne_modul=require("Module:Pudełko/Pomocne"); return pudelko_pomocne_modul.Klucz_projektu(frame,i); end; p["Inny niż język bieżący wiki"]=function(frame) local pudelko_pomocne_modul=require("Module:Pudełko/Pomocne"); return pudelko_pomocne_modul.Analiza_interwiki_czy_projekt_aktualny(frame,true,false); end; p["Inne niż lokalne wiki"]=function(frame) local pudelko_pomocne_modul=require("Module:Pudełko/Pomocne"); return pudelko_pomocne_modul.Analiza_interwiki_czy_projekt_aktualny(frame,false,true); end; p["Inne niż bieżące wiki"]=function(frame) local pudelko_pomocne_modul=require("Module:Pudełko/Pomocne"); return pudelko_pomocne_modul.Analiza_interwiki_czy_projekt_aktualny(frame,true,true); end; p["Podano parametry nienazwane"]=function(frame) local parametry_modul=require("Module:Parametry"); local args=parametry_modul.PobierzArgsParametry(frame); for i,_ in pairs(args)do if(type(i)=="number")then return "tak";end; end; return; end; p["Podano parametry numerowane"]=function(frame) local parametry_modul=require("Module:Parametry"); local args=parametry_modul.PobierzArgsParametry(frame); for i,_ in ipairs(args)do return "tak"; end; return; end; p["Podano parametry nazwane"]=function(frame) local parametry_modul=require("Module:Parametry"); local args=parametry_modul.PobierzArgsParametry(frame); for name,_ in pairs(args)do if(type(name)=="string")then return "tak"; end; end; return; end; p["Kod projektu tego projektu"]=function(frame) return "b"; end; p["Kod języka tego projektu"]=function(frame) return "pl" end; p["Klucz projektu tego projektu"]=function(frame) local pudelko_modul=require("Module:Pudełko"); return pudelko_modul["Kod języka tego projektu"](frame)..":"..pudelko_modul["Kod projektu tego projektu"](frame); end; p["Strona główna tego projektu"] = function(frame) local komunikat = mw.message.new('Mainpage', ''); if(not komunikat:exists())then return "Wikibooks:Strona główna";end; local zawartosc_komunikatu=komunikat:plain(); zawartosc_komunikatu=mw.getCurrentFrame():preprocess(zawartosc_komunikatu); return zawartosc_komunikatu; end; p["Strona główna dla dzieci tego projektu"] = function(frame) return "Wikijunior:Strona główna"; end; p["Nazwa strony głównej dla dzieci projektu 2"] = function(frame) local args=frame and (frame.args or frame) or {}; local kod_jezyka=args[1]; local pudelko_pomocne_modul=require("Module:Pudełko/Pomocne"); return pudelko_pomocne_modul.Nazwa_strony_bazowej_dla_dzieci_z_wikidanych(kod_jezyka); end; p["Nazwa strony głównej projektu 2"] = function(frame) local args=frame and (frame.args or frame) or {}; local kod_jezyka=args[1]; local kod_projektu=args[2]; local pudelko_pomocne_modul=require("Module:Pudełko/Pomocne"); return pudelko_pomocne_modul.Nazwa_strony_bazowej_projektu_z_wikidanych(kod_jezyka,kod_projektu); end; return p; htm1vv9wz9wi8flmcc37f8569q1u2if 540477 540475 2026-04-24T11:35:05Z Persino 2851 540477 Scribunto text/plain local p={}; function p.CzyNiepoprawnaNazwa(nazwa_jednostki) local html_dane_modul=mw.loadData("Module:Html/dane"); return mw.ustring.match(nazwa_jednostki,"[{}<>|%[%]#\n"..html_dane_modul.znak_127.."]+") or mw.ustring.match(nazwa_jednostki,"~~~") or mw.ustring.match(nazwa_jednostki,"&(%a+);"); end; p["Nazwa przestrzeni nazw"]=function(frame,czy_uwzglednic_alternatywna_nazwe,i) local numer_jednostki=i or frame.args["numer jednostki"]; local liczba_numer_jednostki=((numer_jednostki)and(tonumber(numer_jednostki))or 0); local pudelko_pomocne_modul=require("Module:Pudełko/Pomocne"); return pudelko_pomocne_modul.Nazwa_przestrzeni_nazw(frame,0, czy_uwzglednic_alternatywna_nazwe,liczba_numer_jednostki); end; p["Nazwa przedmiotowej przestrzeni nazw"]=function(frame,czy_uwzglednic_alternatywna_nazwe,i) local numer_jednostki=i or frame.args["numer jednostki"]; local liczba_numer_jednostki=((numer_jednostki)and(tonumber(numer_jednostki))or 0); local pudelko_pomocne_modul=require("Module:Pudełko/Pomocne"); return pudelko_pomocne_modul.Nazwa_przestrzeni_nazw(frame,1, czy_uwzglednic_alternatywna_nazwe,liczba_numer_jednostki); end; p["Nazwa przestrzeni nazw dyskusji"]=function(frame,czy_uwzglednic_alternatywna_nazwe,i) local numer_jednostki=i or frame.args["numer jednostki"]; local liczba_numer_jednostki=((numer_jednostki)and(tonumber(numer_jednostki))or 0); local pudelko_pomocne_modul=require("Module:Pudełko/Pomocne"); return pudelko_pomocne_modul.Nazwa_przestrzeni_nazw(frame,2, czy_uwzglednic_alternatywna_nazwe,liczba_numer_jednostki); end; p["Nazwa przestrzeni nazw 2"]=function(frame,czy_uwzglednic_alternatywna_nazwe,i) local pudelko_pomocne_modul=require("Module:Pudełko/Pomocne"); return pudelko_pomocne_modul.Nazwa_przestrzeni_nazw_2(frame,czy_uwzglednic_alternatywna_nazwe,i) end; p["Nazwa przedmiotowej przestrzeni nazw 2"]=function(frame,czy_uwzglednic_alternatywna_nazwe,i) local pudelko_pomocne_modul=require("Module:Pudełko/Pomocne"); return pudelko_pomocne_modul.Nazwa_przestrzeni_nazw_przedmiotowa_dyskusji_2(frame,czy_uwzglednic_alternatywna_nazwe,i,"przedmiotowa"); end; p["Nazwa przestrzeni nazw dyskusji 2"]=function(frame,czy_uwzglednic_alternatywna_nazwe,i) local pudelko_pomocne_modul=require("Module:Pudełko/Pomocne"); return pudelko_pomocne_modul.Nazwa_przestrzeni_nazw_przedmiotowa_dyskusji_2(frame,czy_uwzglednic_alternatywna_nazwe,i,"dyskusja"); end; p["Nazwa przestrzeni nazw 3"]=function(frame,czy_uwzglednic_alternatywna_nazwe,i) local numer_jednostki=i or frame.args["numer jednostki"]; local liczba_numeru_jednostki=((numer_jednostki)and(tonumber(numer_jednostki)) or 0); local pudelko_pomocne_modul=require("Module:Pudełko/Pomocne"); return pudelko_pomocne_modul.Uzyskanie_nazw_jednostki(frame,0,czy_uwzglednic_alternatywna_nazwe,liczba_numeru_jednostki,nil,1); end; p["Nazwa przedmiotowej przestrzeni nazw 3"]=function(frame,czy_uwzglednic_alternatywna_nazwe,i) local numer_jednostki=i or frame.args["numer jednostki"]; local liczba_numeru_jednostki=((numer_jednostki)and(tonumber(numer_jednostki)) or 0); local pudelko_pomocne_modul=require("Module:Pudełko/Pomocne"); return pudelko_pomocne_modul.Uzyskanie_nazw_jednostki(frame,1,czy_uwzglednic_alternatywna_nazwe,liczba_numeru_jednostki,nil,1); end; p["Nazwa przestrzeni nazw dyskusji 3"]=function(frame,czy_uwzglednic_alternatywna_nazwe,i) local numer_jednostki=i or frame.args["numer jednostki"]; local liczba_numeru_jednostki=((numer_jednostki)and(tonumber(numer_jednostki)) or 0); local pudelko_pomocne_modul=require("Module:Pudełko/Pomocne"); return pudelko_pomocne_modul.Uzyskanie_nazw_jednostki(frame,2,czy_uwzglednic_alternatywna_nazwe,liczba_numeru_jednostki,nil,1); end; p["Nazwa jednostki"]=function(frame,i) local pudelko_pomocne_modul=require("Module:Pudełko/Pomocne"); return pudelko_pomocne_modul.Nazwa_jednostki(frame,i); end; p["Nazwa jednostki 2"]=function(frame,i) local pudelko_pomocne_modul=require("Module:Pudełko/Pomocne"); return pudelko_pomocne_modul.Jaka_nazwa_jednostki(frame,i,nil); end; p["Nazwa przedmiotowa jednostki 2"]=function(frame,i) local pudelko_pomocne_modul=require("Module:Pudełko/Pomocne"); return pudelko_pomocne_modul.Jaka_nazwa_jednostki(frame,i,"przedmiotowa"); end; p["Nazwa dyskusji jednostki 2"]=function(frame,i) local pudelko_pomocne_modul=require("Module:Pudełko/Pomocne"); return pudelko_pomocne_modul.Jaka_nazwa_jednostki(frame,i,"dyskusja"); end; p["Nazwa jednostki 3"]=function(frame,i) local numer_jednostki=i or frame.args["numer jednostki"]; local liczba_numeru_jednostki=((numer_jednostki)and(tonumber(numer_jednostki)) or 0); local pudelko_pomocne_modul=require("Module:Pudełko/Pomocne"); return pudelko_pomocne_modul.Uzyskanie_nazw_jednostki(frame,0,nil,liczba_numeru_jednostki,nil,2); end; p["Nazwa przedmiotowa jednostki 3"]=function(frame,i) local numer_jednostki=i or frame.args["numer jednostki"]; local liczba_numeru_jednostki=((numer_jednostki)and(tonumber(numer_jednostki))or 0); local pudelko_pomocne_modul=require("Module:Pudełko/Pomocne"); return pudelko_pomocne_modul.Uzyskanie_nazw_jednostki(frame,1,nil,liczba_numeru_jednostki,nil,2); end; p["Nazwa dyskusji jednostki 3"]=function(frame,i) local numer_jednostki=i or frame.args["numer jednostki"]; local liczba_numeru_jednostki=((numer_jednostki)and(tonumber(numer_jednostki))or 0); local pudelko_pomocne_modul=require("Module:Pudełko/Pomocne"); return pudelko_pomocne_modul.Uzyskanie_nazw_jednostki(frame,2,nil,liczba_numeru_jednostki,nil,2); end; p["Pełna nazwa dyskusji jednostki"]=function(frame,i) local numer_jednostki=i or frame.args["numer jednostki"]; local liczba_numer_jednostki=((numer_jednostki)and(tonumber(numer_jednostki))or 0); local pudelko_modul=require("Module:Pudełko"); local nazwa_przestrzeni_nazw=pudelko_modul["Nazwa przestrzeni nazw dyskusji"](frame,liczba_numer_jednostki); local nazwa_jednostki=pudelko_modul["Nazwa jednostki"](frame,liczba_numer_jednostki); if(nazwa_przestrzeni_nazw~="")then return nazwa_przestrzeni_nazw..":"..nazwa_jednostki;else return nazwa_jednostki;end; end; p["Pełna nazwa przedmiotowa jednostki"]=function(frame,i) local numer_jednostki=i or frame.args["numer jednostki"]; local liczba_numer_jednostki=((numer_jednostki)and(tonumber(numer_jednostki))or 0); local pudelko_modul=require("Module:Pudełko"); local nazwa_przestrzeni_nazw=pudelko_modul["Nazwa przedmiotowej przestrzeni nazw"](frame,liczba_numer_jednostki); local nazwa_jednostki=pudelko_modul["Nazwa jednostki"](frame,liczba_numer_jednostki); if(nazwa_przestrzeni_nazw~="")then return nazwa_przestrzeni_nazw..":"..nazwa_jednostki;else return nazwa_jednostki;end; end; p["Pełna nazwa jednostki"]=function(frame,i) local numer_jednostki=i or frame.args["numer jednostki"]; local liczba_numer_jednostki=((numer_jednostki)and(tonumber(numer_jednostki))or 0); local pudelko_modul=require("Module:Pudełko"); local nazwa_przestrzeni_nazw=pudelko_modul["Nazwa przestrzeni nazw"](frame,liczba_numer_jednostki); local nazwa_jednostki=pudelko_modul["Nazwa jednostki"](frame,liczba_numer_jednostki); if(nazwa_przestrzeni_nazw~="")then return nazwa_przestrzeni_nazw..":"..nazwa_jednostki;else return nazwa_jednostki;end; end; p["Pełna nazwa dyskusji jednostki 2"]=function(frame,i) local numer_jednostki=i or frame.args["numer jednostki"]; local liczba_numer_jednostki=((numer_jednostki)and(tonumber(numer_jednostki))or 0); local pudelko_modul=require("Module:Pudełko"); local nazwa_przestrzeni_nazw=pudelko_modul["Nazwa przestrzeni nazw dyskusji 2"](frame,liczba_numer_jednostki); local nazwa_jednostki=pudelko_modul["Nazwa dyskusji jednostki 2"](frame,liczba_numer_jednostki); if(nazwa_przestrzeni_nazw~="")then return nazwa_przestrzeni_nazw..":"..nazwa_jednostki;else return nazwa_jednostki;end; end; p["Pełna nazwa przedmiotowa jednostki 2"]=function(frame,i) local numer_jednostki=i or frame.args["numer jednostki"]; local liczba_numer_jednostki=((numer_jednostki)and(tonumber(numer_jednostki))or 0); local pudelko_modul=require("Module:Pudełko"); local nazwa_przestrzeni_nazw=pudelko_modul["Nazwa przedmiotowej przestrzeni nazw 2"](frame,liczba_numer_jednostki); local nazwa_jednostki=pudelko_modul["Nazwa przedmiotowa jednostki 2"](frame,liczba_numer_jednostki); if(nazwa_przestrzeni_nazw~="")then return nazwa_przestrzeni_nazw..":"..nazwa_jednostki;else return nazwa_jednostki;end; end; p["Pełna nazwa jednostki 2"]=function(frame,i) local numer_jednostki=i or frame.args["numer jednostki"]; local liczba_numer_jednostki=((numer_jednostki)and(tonumber(numer_jednostki))or 0); local pudelko_modul=require("Module:Pudełko"); local nazwa_przestrzeni_nazw=pudelko_modul["Nazwa przestrzeni nazw 2"](frame,liczba_numer_jednostki); local nazwa_jednostki=pudelko_modul["Nazwa jednostki 2"](frame,liczba_numer_jednostki); if(nazwa_przestrzeni_nazw~="")then return nazwa_przestrzeni_nazw..":"..nazwa_jednostki;else return nazwa_jednostki;end; end; p["Pełna nazwa dyskusji jednostki 3"]=function(frame,i) local numer_jednostki=i or frame.args["numer jednostki"]; local liczba_numer_jednostki=((numer_jednostki)and(tonumber(numer_jednostki)) or 0); local pudelko_pomocne_modul=require("Module:Pudełko/Pomocne"); local nazwa_przestrzeni_nazw,nazwa_jednostki=pudelko_pomocne_modul.Uzyskanie_nazw_jednostki(frame,2,nil,liczba_numer_jednostki); if(nazwa_przestrzeni_nazw~="")then return nazwa_przestrzeni_nazw..":"..nazwa_jednostki;else return nazwa_jednostki;end; end; p["Pełna nazwa przedmiotowa jednostki 3"]=function(frame,i) local numer_jednostki=i or frame.args["numer jednostki"]; local liczba_numer_jednostki=((numer_jednostki)and(tonumber(numer_jednostki)) or 0); local pudelko_pomocne_modul=require("Module:Pudełko/Pomocne"); local nazwa_przestrzeni_nazw,nazwa_jednostki=pudelko_pomocne_modul.Uzyskanie_nazw_jednostki(frame,1,nil,liczba_numer_jednostki); if(nazwa_przestrzeni_nazw~="")then return nazwa_przestrzeni_nazw..":"..nazwa_jednostki;else return nazwa_jednostki;end; end; p["Pełna nazwa jednostki 3"]=function(frame,i) local numer_jednostki=i or frame.args["numer jednostki"]; local liczba_numer_jednostki=((numer_jednostki)and(tonumber(numer_jednostki)) or 0); local pudelko_pomocne_modul=require("Module:Pudełko/Pomocne"); local nazwa_przestrzeni_nazw,nazwa_jednostki=pudelko_pomocne_modul.Uzyskanie_nazw_jednostki(frame,0,nil,liczba_numer_jednostki); if(nazwa_przestrzeni_nazw~="")then return nazwa_przestrzeni_nazw..":"..nazwa_jednostki;else return nazwa_jednostki;end; end; p["Typ jednostki"]=function(frame,i) local pudelko_pomocne_modul=require("Module:Pudełko/Pomocne"); return pudelko_pomocne_modul.Typ_jednostki(frame,0,i,0); end; p["Typ jednostki 2"]=function(frame,i) local pudelko_pomocne_modul=require("Module:Pudełko/Pomocne"); return pudelko_pomocne_modul.Typ_jednostki(frame,0,i,1); end; p["Typ jednostki 3"]=function(frame,i) local pudelko_pomocne_modul=require("Module:Pudełko/Pomocne"); return pudelko_pomocne_modul.Typ_jednostki(frame,0,i,nil); end; p["Przedmiotowy typ jednostki"]=function(frame,i) local pudelko_pomocne_modul=require("Module:Pudełko/Pomocne"); return pudelko_pomocne_modul.Typ_jednostki(frame, 1,i,0); end; p["Przedmiotowy typ jednostki 2"]=function(frame,i) local pudelko_pomocne_modul=require("Module:Pudełko/Pomocne"); return pudelko_pomocne_modul.Typ_jednostki(frame, 1,i,1); end; p["Przedmiotowy typ jednostki 3"]=function(frame,i) local pudelko_pomocne_modul=require("Module:Pudełko/Pomocne"); return pudelko_pomocne_modul.Typ_jednostki(frame, 1,i,nil); end; p["Dyskusyjny typ jednostki"]=function(frame,i) local pudelko_pomocne_modul=require("Module:Pudełko/Pomocne"); return pudelko_pomocne_modul.Typ_jednostki(frame,2,i,0); end; p["Dyskusyjny typ jednostki 2"]=function(frame,i) local pudelko_pomocne_modul=require("Module:Pudełko/Pomocne"); return pudelko_pomocne_modul.Typ_jednostki(frame, 2,i,1); end; p["Dyskusyjny typ jednostki 3"]=function(frame,i) local pudelko_pomocne_modul=require("Module:Pudełko/Pomocne"); return pudelko_pomocne_modul.Typ_jednostki(frame, 2,i,nil); end; p["Cecha pudełka"] = function(frame) local pudelko_potrzebne_modul=require("Module:Pudełko/Potrzebne"); return pudelko_potrzebne_modul.Cecha_kontenerowa_szablonowa(frame,"Błędy pudełka"); end; p["Przedmiotowa cecha pudełka"] = function(frame) local pudelko_potrzebne_modul=require("Module:Pudełko/Potrzebne"); return pudelko_potrzebne_modul.Cecha_kontenerowa_szablonowa(frame,"Przedmiotowe błędy pudełka"); end; p["Dyskusyjna cecha pudełka"] = function(frame) local pudelko_potrzebne_modul=require("Module:Pudełko/Potrzebne"); return pudelko_potrzebne_modul.Cecha_kontenerowa_szablonowa(frame,"Dyskusyjne błędy pudełka"); end; p["Ogólne pudełko"]= function(frame) local pudelko_potrzebne_modul=require("Module:Pudełko/Potrzebne"); return pudelko_potrzebne_modul.Generalny_kontener_szablonowy(frame); end; p["Tekst pudełka"] = function (frame) return frame.args["tekst"]; end; p["Błędy pudełka"]=function(frame) local pudelko_potrzebne_modul=require("Module:Pudełko/Potrzebne"); return pudelko_potrzebne_modul.Problemy_kontenerowe_szablonowe(frame,0); end; p["Przedmiotowe błędy pudełka"]=function(frame) local pudelko_potrzebne_modul=require("Module:Pudełko/Potrzebne"); return pudelko_potrzebne_modul.Problemy_kontenerowe_szablonowe(frame,1); end; p["Dyskusyjne błędy pudełka"]=function(frame) local pudelko_potrzebne_modul=require("Module:Pudełko/Potrzebne"); return pudelko_potrzebne_modul.Problemy_kontenerowe_szablonowe(frame,2); end; p["Nazwa strony głównej projektu"]=function(frame,i) local numer_jednostki=i or frame.args["numer jednostki"]; local i=(numer_jednostki)and tonumber(numer_jednostki) or 0; local pudelko_pomocne_modul=require("Module:Pudełko/Pomocne"); local kod_jezyka,kod_projektu=pudelko_pomocne_modul.Wikikody_kontenera(frame,i); return pudelko_pomocne_modul.Nazwa_strony_bazowej_projektu_ze_zmiennej(frame,i,kod_jezyka,kod_projektu) or pudelko_pomocne_modul.Nazwa_strony_bazowej_projektu_z_wikidanych(kod_jezyka,kod_projektu); end; p["Nazwa strony głównej dla dzieci projektu"]=function(frame,i) local numer_jednostki=i or frame.args["numer jednostki"]; local i=(numer_jednostki)and tonumber(numer_jednostki) or 0; local pudelko_pomocne_modul=require("Module:Pudełko/Pomocne"); local kod_jezyka,kod_projektu=pudelko_pomocne_modul.Wikikody_kontenera(frame,i); return pudelko_pomocne_modul.Nazwa_strony_bazowej_dla_dzieci_ze_zmiennej(frame,i,kod_jezyka) or pudelko_pomocne_modul.Nazwa_strony_bazowej_dla_dzieci_z_wikidanych(kod_jezyka); end; p["Kod języka"]=function(frame,i) local numer_jednostki=i or frame.args["numer jednostki"]; local i=(numer_jednostki)and tonumber(numer_jednostki) or 0; local pudelko_modul=require("Module:Pudełko"); local wartosc_domyslna=pudelko_modul["Kod języka tego projektu"](); local pudelko_pomocne_modul=require("Module:Pudełko/Pomocne"); return pudelko_pomocne_modul.Kod_jezyka(frame,i,wartosc_domyslna); end; p["Kod projektu"]=function(frame,i) local numer_jednostki=i or frame.args["numer jednostki"]; local i=(numer_jednostki)and tonumber(numer_jednostki) or 0; local pudelko_modul=require("Module:Pudełko"); local wartosc_domyslna=pudelko_modul["Kod projektu tego projektu"](); local pudelko_pomocne_modul=require("Module:Pudełko/Pomocne"); return pudelko_pomocne_modul.Kod_projektu(frame,i,wartosc_domyslna); end; p["Klucz projektu"]=function(frame,i) local numer_jednostki=i or frame.args["numer jednostki"]; local i=(numer_jednostki)and tonumber(numer_jednostki) or 0; local pudelko_pomocne_modul=require("Module:Pudełko/Pomocne"); return pudelko_pomocne_modul.Klucz_projektu(frame,i); end; p["Inny niż język bieżący wiki"]=function(frame) local pudelko_pomocne_modul=require("Module:Pudełko/Pomocne"); return pudelko_pomocne_modul.Analiza_interwiki_czy_projekt_aktualny(frame,true,false); end; p["Inne niż lokalne wiki"]=function(frame) local pudelko_pomocne_modul=require("Module:Pudełko/Pomocne"); return pudelko_pomocne_modul.Analiza_interwiki_czy_projekt_aktualny(frame,false,true); end; p["Inne niż bieżące wiki"]=function(frame) local pudelko_pomocne_modul=require("Module:Pudełko/Pomocne"); return pudelko_pomocne_modul.Analiza_interwiki_czy_projekt_aktualny(frame,true,true); end; p["Podano parametry nienazwane"]=function(frame) local parametry_modul=require("Module:Parametry"); local args=parametry_modul.PobierzArgsParametry(frame); for i,_ in pairs(args)do if(type(i)=="number")then return "tak";end; end; return; end; p["Podano parametry numerowane"]=function(frame) local parametry_modul=require("Module:Parametry"); local args=parametry_modul.PobierzArgsParametry(frame); for i,_ in ipairs(args)do return "tak"; end; return; end; p["Podano parametry nazwane"]=function(frame) local parametry_modul=require("Module:Parametry"); local args=parametry_modul.PobierzArgsParametry(frame); for name,_ in pairs(args)do if(type(name)=="string")then return "tak"; end; end; return; end; p["Kod projektu tego projektu"]=function(frame) return "b"; end; p["Kod języka tego projektu"]=function(frame) return "pl" end; p["Klucz projektu tego projektu"]=function(frame) local pudelko_modul=require("Module:Pudełko"); return pudelko_modul["Kod języka tego projektu"](frame)..":"..pudelko_modul["Kod projektu tego projektu"](frame); end; p["Strona główna tego projektu"] = function(frame) local komunikat = mw.message.new('Mainpage', ''); if(not komunikat:exists())then return "Wikibooks:Strona główna";end; local zawartosc_komunikatu=komunikat:plain(); zawartosc_komunikatu=mw.getCurrentFrame():preprocess(zawartosc_komunikatu); return zawartosc_komunikatu; end; p["Strona główna dla dzieci tego projektu"] = function(frame) return "Wikijunior:Strona główna"; end; p["Nazwa strony głównej dla dzieci projektu 2"] = function(frame) local args=frame and (frame.args or frame) or {}; local kod_jezyka=args[1]; local pudelko_pomocne_modul=require("Module:Pudełko/Pomocne"); return pudelko_pomocne_modul.Nazwa_strony_bazowej_dla_dzieci_z_wikidanych(kod_jezyka); end; p["Nazwa strony głównej projektu 2"] = function(frame) local args=frame and (frame.args or frame) or {}; local kod_jezyka=args[1]; local kod_projektu=args[2]; local pudelko_pomocne_modul=require("Module:Pudełko/Pomocne"); return pudelko_pomocne_modul.Nazwa_strony_bazowej_projektu_z_wikidanych(kod_jezyka,kod_projektu); end; return p; 6zfbgbcalsy8ugbt4nv4c6zsdqntrpi 540479 540477 2026-04-24T11:40:20Z Persino 2851 540479 Scribunto text/plain local p={}; function p.CzyNiepoprawnaNazwa(nazwa_jednostki) local html_dane_modul=mw.loadData("Module:Html/dane"); return mw.ustring.match(nazwa_jednostki,"[{}<>|%[%]#\n"..html_dane_modul.znak_127.."]+") or mw.ustring.match(nazwa_jednostki,"~~~") or mw.ustring.match(nazwa_jednostki,"&(%a+);"); end; p["Nazwa przestrzeni nazw"]=function(frame,czy_uwzglednic_alternatywna_nazwe,i) local numer_jednostki=i or frame.args["numer jednostki"]; local liczba_numer_jednostki=((numer_jednostki)and(tonumber(numer_jednostki))or 0); local pudelko_pomocne_modul=require("Module:Pudełko/Pomocne"); return pudelko_pomocne_modul.Nazwa_przestrzeni_nazw(frame,0, czy_uwzglednic_alternatywna_nazwe,liczba_numer_jednostki); end; p["Nazwa przedmiotowej przestrzeni nazw"]=function(frame,czy_uwzglednic_alternatywna_nazwe,i) local numer_jednostki=i or frame.args["numer jednostki"]; local liczba_numer_jednostki=((numer_jednostki)and(tonumber(numer_jednostki))or 0); local pudelko_pomocne_modul=require("Module:Pudełko/Pomocne"); return pudelko_pomocne_modul.Nazwa_przestrzeni_nazw(frame,1, czy_uwzglednic_alternatywna_nazwe,liczba_numer_jednostki); end; p["Nazwa przestrzeni nazw dyskusji"]=function(frame,czy_uwzglednic_alternatywna_nazwe,i) local numer_jednostki=i or frame.args["numer jednostki"]; local liczba_numer_jednostki=((numer_jednostki)and(tonumber(numer_jednostki))or 0); local pudelko_pomocne_modul=require("Module:Pudełko/Pomocne"); return pudelko_pomocne_modul.Nazwa_przestrzeni_nazw(frame,2, czy_uwzglednic_alternatywna_nazwe,liczba_numer_jednostki); end; p["Nazwa przestrzeni nazw 2"]=function(frame,czy_uwzglednic_alternatywna_nazwe,i) local pudelko_pomocne_modul=require("Module:Pudełko/Pomocne"); return pudelko_pomocne_modul.Nazwa_przestrzeni_nazw_2(frame,czy_uwzglednic_alternatywna_nazwe,i) end; p["Nazwa przedmiotowej przestrzeni nazw 2"]=function(frame,czy_uwzglednic_alternatywna_nazwe,i) local pudelko_pomocne_modul=require("Module:Pudełko/Pomocne"); return pudelko_pomocne_modul.Nazwa_przestrzeni_nazw_przedmiotowa_dyskusji_2(frame,czy_uwzglednic_alternatywna_nazwe,i,"przedmiotowa"); end; p["Nazwa przestrzeni nazw dyskusji 2"]=function(frame,czy_uwzglednic_alternatywna_nazwe,i) local pudelko_pomocne_modul=require("Module:Pudełko/Pomocne"); return pudelko_pomocne_modul.Nazwa_przestrzeni_nazw_przedmiotowa_dyskusji_2(frame,czy_uwzglednic_alternatywna_nazwe,i,"dyskusja"); end; p["Nazwa przestrzeni nazw 3"]=function(frame,czy_uwzglednic_alternatywna_nazwe,i) local numer_jednostki=i or frame.args["numer jednostki"]; local liczba_numeru_jednostki=((numer_jednostki)and(tonumber(numer_jednostki)) or 0); local pudelko_pomocne_modul=require("Module:Pudełko/Pomocne"); return pudelko_pomocne_modul.Uzyskanie_nazw_jednostki(frame,0,czy_uwzglednic_alternatywna_nazwe,liczba_numeru_jednostki,nil,1); end; p["Nazwa przedmiotowej przestrzeni nazw 3"]=function(frame,czy_uwzglednic_alternatywna_nazwe,i) local numer_jednostki=i or frame.args["numer jednostki"]; local liczba_numeru_jednostki=((numer_jednostki)and(tonumber(numer_jednostki)) or 0); local pudelko_pomocne_modul=require("Module:Pudełko/Pomocne"); return pudelko_pomocne_modul.Uzyskanie_nazw_jednostki(frame,1,czy_uwzglednic_alternatywna_nazwe,liczba_numeru_jednostki,nil,1); end; p["Nazwa przestrzeni nazw dyskusji 3"]=function(frame,czy_uwzglednic_alternatywna_nazwe,i) local numer_jednostki=i or frame.args["numer jednostki"]; local liczba_numeru_jednostki=((numer_jednostki)and(tonumber(numer_jednostki)) or 0); local pudelko_pomocne_modul=require("Module:Pudełko/Pomocne"); return pudelko_pomocne_modul.Uzyskanie_nazw_jednostki(frame,2,czy_uwzglednic_alternatywna_nazwe,liczba_numeru_jednostki,nil,1); end; p["Nazwa jednostki"]=function(frame,i) local pudelko_pomocne_modul=require("Module:Pudełko/Pomocne"); return pudelko_pomocne_modul.Nazwa_jednostki(frame,i); end; p["Nazwa jednostki 2"]=function(frame,i) local pudelko_pomocne_modul=require("Module:Pudełko/Pomocne"); return pudelko_pomocne_modul.Jaka_nazwa_jednostki(frame,i,nil); end; p["Nazwa przedmiotowa jednostki 2"]=function(frame,i) local pudelko_pomocne_modul=require("Module:Pudełko/Pomocne"); return pudelko_pomocne_modul.Jaka_nazwa_jednostki(frame,i,"przedmiotowa"); end; p["Nazwa dyskusji jednostki 2"]=function(frame,i) local pudelko_pomocne_modul=require("Module:Pudełko/Pomocne"); return pudelko_pomocne_modul.Jaka_nazwa_jednostki(frame,i,"dyskusja"); end; p["Nazwa jednostki 3"]=function(frame,i) local numer_jednostki=i or frame.args["numer jednostki"]; local liczba_numeru_jednostki=((numer_jednostki)and(tonumber(numer_jednostki)) or 0); local pudelko_pomocne_modul=require("Module:Pudełko/Pomocne"); return pudelko_pomocne_modul.Uzyskanie_nazw_jednostki(frame,0,nil,liczba_numeru_jednostki,nil,2); end; p["Nazwa przedmiotowa jednostki 3"]=function(frame,i) local numer_jednostki=i or frame.args["numer jednostki"]; local liczba_numeru_jednostki=((numer_jednostki)and(tonumber(numer_jednostki))or 0); local pudelko_pomocne_modul=require("Module:Pudełko/Pomocne"); return pudelko_pomocne_modul.Uzyskanie_nazw_jednostki(frame,1,nil,liczba_numeru_jednostki,nil,2); end; p["Nazwa dyskusji jednostki 3"]=function(frame,i) local numer_jednostki=i or frame.args["numer jednostki"]; local liczba_numeru_jednostki=((numer_jednostki)and(tonumber(numer_jednostki))or 0); local pudelko_pomocne_modul=require("Module:Pudełko/Pomocne"); return pudelko_pomocne_modul.Uzyskanie_nazw_jednostki(frame,2,nil,liczba_numeru_jednostki,nil,2); end; p["Pełna nazwa jednostki"]=function(frame,i) local numer_jednostki=i or frame.args["numer jednostki"]; local liczba_numer_jednostki=((numer_jednostki)and(tonumber(numer_jednostki))or 0); local pudelko_modul=require("Module:Pudełko"); local nazwa_przestrzeni_nazw=pudelko_modul["Nazwa przestrzeni nazw"](frame,liczba_numer_jednostki); local nazwa_jednostki=pudelko_modul["Nazwa jednostki"](frame,liczba_numer_jednostki); if(nazwa_przestrzeni_nazw~="")then return nazwa_przestrzeni_nazw..":"..nazwa_jednostki;else return nazwa_jednostki;end; end; p["Pełna nazwa przedmiotowa jednostki"]=function(frame,i) local numer_jednostki=i or frame.args["numer jednostki"]; local liczba_numer_jednostki=((numer_jednostki)and(tonumber(numer_jednostki))or 0); local pudelko_modul=require("Module:Pudełko"); local nazwa_przestrzeni_nazw=pudelko_modul["Nazwa przedmiotowej przestrzeni nazw"](frame,liczba_numer_jednostki); local nazwa_jednostki=pudelko_modul["Nazwa jednostki"](frame,liczba_numer_jednostki); if(nazwa_przestrzeni_nazw~="")then return nazwa_przestrzeni_nazw..":"..nazwa_jednostki;else return nazwa_jednostki;end; end; p["Pełna nazwa dyskusji jednostki"]=function(frame,i) local numer_jednostki=i or frame.args["numer jednostki"]; local liczba_numer_jednostki=((numer_jednostki)and(tonumber(numer_jednostki))or 0); local pudelko_modul=require("Module:Pudełko"); local nazwa_przestrzeni_nazw=pudelko_modul["Nazwa przestrzeni nazw dyskusji"](frame,liczba_numer_jednostki); local nazwa_jednostki=pudelko_modul["Nazwa jednostki"](frame,liczba_numer_jednostki); if(nazwa_przestrzeni_nazw~="")then return nazwa_przestrzeni_nazw..":"..nazwa_jednostki;else return nazwa_jednostki;end; end; p["Pełna nazwa jednostki 2"]=function(frame,i) local numer_jednostki=i or frame.args["numer jednostki"]; local liczba_numer_jednostki=((numer_jednostki)and(tonumber(numer_jednostki))or 0); local pudelko_modul=require("Module:Pudełko"); local nazwa_przestrzeni_nazw=pudelko_modul["Nazwa przestrzeni nazw 2"](frame,liczba_numer_jednostki); local nazwa_jednostki=pudelko_modul["Nazwa jednostki 2"](frame,liczba_numer_jednostki); if(nazwa_przestrzeni_nazw~="")then return nazwa_przestrzeni_nazw..":"..nazwa_jednostki;else return nazwa_jednostki;end; end; p["Pełna nazwa przedmiotowa jednostki 2"]=function(frame,i) local numer_jednostki=i or frame.args["numer jednostki"]; local liczba_numer_jednostki=((numer_jednostki)and(tonumber(numer_jednostki))or 0); local pudelko_modul=require("Module:Pudełko"); local nazwa_przestrzeni_nazw=pudelko_modul["Nazwa przedmiotowej przestrzeni nazw 2"](frame,liczba_numer_jednostki); local nazwa_jednostki=pudelko_modul["Nazwa przedmiotowa jednostki 2"](frame,liczba_numer_jednostki); if(nazwa_przestrzeni_nazw~="")then return nazwa_przestrzeni_nazw..":"..nazwa_jednostki;else return nazwa_jednostki;end; end; p["Pełna nazwa dyskusji jednostki 2"]=function(frame,i) local numer_jednostki=i or frame.args["numer jednostki"]; local liczba_numer_jednostki=((numer_jednostki)and(tonumber(numer_jednostki))or 0); local pudelko_modul=require("Module:Pudełko"); local nazwa_przestrzeni_nazw=pudelko_modul["Nazwa przestrzeni nazw dyskusji 2"](frame,liczba_numer_jednostki); local nazwa_jednostki=pudelko_modul["Nazwa dyskusji jednostki 2"](frame,liczba_numer_jednostki); if(nazwa_przestrzeni_nazw~="")then return nazwa_przestrzeni_nazw..":"..nazwa_jednostki;else return nazwa_jednostki;end; end; p["Pełna nazwa jednostki 3"]=function(frame,i) local numer_jednostki=i or frame.args["numer jednostki"]; local liczba_numer_jednostki=((numer_jednostki)and(tonumber(numer_jednostki)) or 0); local pudelko_pomocne_modul=require("Module:Pudełko/Pomocne"); local nazwa_przestrzeni_nazw,nazwa_jednostki=pudelko_pomocne_modul.Uzyskanie_nazw_jednostki(frame,0,nil,liczba_numer_jednostki); if(nazwa_przestrzeni_nazw~="")then return nazwa_przestrzeni_nazw..":"..nazwa_jednostki;else return nazwa_jednostki;end; end; p["Pełna nazwa przedmiotowa jednostki 3"]=function(frame,i) local numer_jednostki=i or frame.args["numer jednostki"]; local liczba_numer_jednostki=((numer_jednostki)and(tonumber(numer_jednostki)) or 0); local pudelko_pomocne_modul=require("Module:Pudełko/Pomocne"); local nazwa_przestrzeni_nazw,nazwa_jednostki=pudelko_pomocne_modul.Uzyskanie_nazw_jednostki(frame,1,nil,liczba_numer_jednostki); if(nazwa_przestrzeni_nazw~="")then return nazwa_przestrzeni_nazw..":"..nazwa_jednostki;else return nazwa_jednostki;end; end; p["Pełna nazwa dyskusji jednostki 3"]=function(frame,i) local numer_jednostki=i or frame.args["numer jednostki"]; local liczba_numer_jednostki=((numer_jednostki)and(tonumber(numer_jednostki)) or 0); local pudelko_pomocne_modul=require("Module:Pudełko/Pomocne"); local nazwa_przestrzeni_nazw,nazwa_jednostki=pudelko_pomocne_modul.Uzyskanie_nazw_jednostki(frame,2,nil,liczba_numer_jednostki); if(nazwa_przestrzeni_nazw~="")then return nazwa_przestrzeni_nazw..":"..nazwa_jednostki;else return nazwa_jednostki;end; end; p["Typ jednostki"]=function(frame,i) local pudelko_pomocne_modul=require("Module:Pudełko/Pomocne"); return pudelko_pomocne_modul.Typ_jednostki(frame,0,i,0); end; p["Typ jednostki 2"]=function(frame,i) local pudelko_pomocne_modul=require("Module:Pudełko/Pomocne"); return pudelko_pomocne_modul.Typ_jednostki(frame,0,i,1); end; p["Typ jednostki 3"]=function(frame,i) local pudelko_pomocne_modul=require("Module:Pudełko/Pomocne"); return pudelko_pomocne_modul.Typ_jednostki(frame,0,i,nil); end; p["Przedmiotowy typ jednostki"]=function(frame,i) local pudelko_pomocne_modul=require("Module:Pudełko/Pomocne"); return pudelko_pomocne_modul.Typ_jednostki(frame, 1,i,0); end; p["Przedmiotowy typ jednostki 2"]=function(frame,i) local pudelko_pomocne_modul=require("Module:Pudełko/Pomocne"); return pudelko_pomocne_modul.Typ_jednostki(frame, 1,i,1); end; p["Przedmiotowy typ jednostki 3"]=function(frame,i) local pudelko_pomocne_modul=require("Module:Pudełko/Pomocne"); return pudelko_pomocne_modul.Typ_jednostki(frame, 1,i,nil); end; p["Dyskusyjny typ jednostki"]=function(frame,i) local pudelko_pomocne_modul=require("Module:Pudełko/Pomocne"); return pudelko_pomocne_modul.Typ_jednostki(frame,2,i,0); end; p["Dyskusyjny typ jednostki 2"]=function(frame,i) local pudelko_pomocne_modul=require("Module:Pudełko/Pomocne"); return pudelko_pomocne_modul.Typ_jednostki(frame, 2,i,1); end; p["Dyskusyjny typ jednostki 3"]=function(frame,i) local pudelko_pomocne_modul=require("Module:Pudełko/Pomocne"); return pudelko_pomocne_modul.Typ_jednostki(frame, 2,i,nil); end; p["Cecha pudełka"] = function(frame) local pudelko_potrzebne_modul=require("Module:Pudełko/Potrzebne"); return pudelko_potrzebne_modul.Cecha_kontenerowa_szablonowa(frame,"Błędy pudełka"); end; p["Przedmiotowa cecha pudełka"] = function(frame) local pudelko_potrzebne_modul=require("Module:Pudełko/Potrzebne"); return pudelko_potrzebne_modul.Cecha_kontenerowa_szablonowa(frame,"Przedmiotowe błędy pudełka"); end; p["Dyskusyjna cecha pudełka"] = function(frame) local pudelko_potrzebne_modul=require("Module:Pudełko/Potrzebne"); return pudelko_potrzebne_modul.Cecha_kontenerowa_szablonowa(frame,"Dyskusyjne błędy pudełka"); end; p["Ogólne pudełko"]= function(frame) local pudelko_potrzebne_modul=require("Module:Pudełko/Potrzebne"); return pudelko_potrzebne_modul.Generalny_kontener_szablonowy(frame); end; p["Tekst pudełka"] = function (frame) return frame.args["tekst"]; end; p["Błędy pudełka"]=function(frame) local pudelko_potrzebne_modul=require("Module:Pudełko/Potrzebne"); return pudelko_potrzebne_modul.Problemy_kontenerowe_szablonowe(frame,0); end; p["Przedmiotowe błędy pudełka"]=function(frame) local pudelko_potrzebne_modul=require("Module:Pudełko/Potrzebne"); return pudelko_potrzebne_modul.Problemy_kontenerowe_szablonowe(frame,1); end; p["Dyskusyjne błędy pudełka"]=function(frame) local pudelko_potrzebne_modul=require("Module:Pudełko/Potrzebne"); return pudelko_potrzebne_modul.Problemy_kontenerowe_szablonowe(frame,2); end; p["Nazwa strony głównej projektu"]=function(frame,i) local numer_jednostki=i or frame.args["numer jednostki"]; local i=(numer_jednostki)and tonumber(numer_jednostki) or 0; local pudelko_pomocne_modul=require("Module:Pudełko/Pomocne"); local kod_jezyka,kod_projektu=pudelko_pomocne_modul.Wikikody_kontenera(frame,i); return pudelko_pomocne_modul.Nazwa_strony_bazowej_projektu_ze_zmiennej(frame,i,kod_jezyka,kod_projektu) or pudelko_pomocne_modul.Nazwa_strony_bazowej_projektu_z_wikidanych(kod_jezyka,kod_projektu); end; p["Nazwa strony głównej dla dzieci projektu"]=function(frame,i) local numer_jednostki=i or frame.args["numer jednostki"]; local i=(numer_jednostki)and tonumber(numer_jednostki) or 0; local pudelko_pomocne_modul=require("Module:Pudełko/Pomocne"); local kod_jezyka,kod_projektu=pudelko_pomocne_modul.Wikikody_kontenera(frame,i); return pudelko_pomocne_modul.Nazwa_strony_bazowej_dla_dzieci_ze_zmiennej(frame,i,kod_jezyka) or pudelko_pomocne_modul.Nazwa_strony_bazowej_dla_dzieci_z_wikidanych(kod_jezyka); end; p["Kod języka"]=function(frame,i) local numer_jednostki=i or frame.args["numer jednostki"]; local i=(numer_jednostki)and tonumber(numer_jednostki) or 0; local pudelko_modul=require("Module:Pudełko"); local wartosc_domyslna=pudelko_modul["Kod języka tego projektu"](); local pudelko_pomocne_modul=require("Module:Pudełko/Pomocne"); return pudelko_pomocne_modul.Kod_jezyka(frame,i,wartosc_domyslna); end; p["Kod projektu"]=function(frame,i) local numer_jednostki=i or frame.args["numer jednostki"]; local i=(numer_jednostki)and tonumber(numer_jednostki) or 0; local pudelko_modul=require("Module:Pudełko"); local wartosc_domyslna=pudelko_modul["Kod projektu tego projektu"](); local pudelko_pomocne_modul=require("Module:Pudełko/Pomocne"); return pudelko_pomocne_modul.Kod_projektu(frame,i,wartosc_domyslna); end; p["Klucz projektu"]=function(frame,i) local numer_jednostki=i or frame.args["numer jednostki"]; local i=(numer_jednostki)and tonumber(numer_jednostki) or 0; local pudelko_pomocne_modul=require("Module:Pudełko/Pomocne"); return pudelko_pomocne_modul.Klucz_projektu(frame,i); end; p["Inny niż język bieżący wiki"]=function(frame) local pudelko_pomocne_modul=require("Module:Pudełko/Pomocne"); return pudelko_pomocne_modul.Analiza_interwiki_czy_projekt_aktualny(frame,true,false); end; p["Inne niż lokalne wiki"]=function(frame) local pudelko_pomocne_modul=require("Module:Pudełko/Pomocne"); return pudelko_pomocne_modul.Analiza_interwiki_czy_projekt_aktualny(frame,false,true); end; p["Inne niż bieżące wiki"]=function(frame) local pudelko_pomocne_modul=require("Module:Pudełko/Pomocne"); return pudelko_pomocne_modul.Analiza_interwiki_czy_projekt_aktualny(frame,true,true); end; p["Podano parametry nienazwane"]=function(frame) local parametry_modul=require("Module:Parametry"); local args=parametry_modul.PobierzArgsParametry(frame); for i,_ in pairs(args)do if(type(i)=="number")then return "tak";end; end; return; end; p["Podano parametry numerowane"]=function(frame) local parametry_modul=require("Module:Parametry"); local args=parametry_modul.PobierzArgsParametry(frame); for i,_ in ipairs(args)do return "tak"; end; return; end; p["Podano parametry nazwane"]=function(frame) local parametry_modul=require("Module:Parametry"); local args=parametry_modul.PobierzArgsParametry(frame); for name,_ in pairs(args)do if(type(name)=="string")then return "tak"; end; end; return; end; p["Kod projektu tego projektu"]=function(frame) return "b"; end; p["Kod języka tego projektu"]=function(frame) return "pl" end; p["Klucz projektu tego projektu"]=function(frame) local pudelko_modul=require("Module:Pudełko"); return pudelko_modul["Kod języka tego projektu"](frame)..":"..pudelko_modul["Kod projektu tego projektu"](frame); end; p["Strona główna tego projektu"] = function(frame) local komunikat = mw.message.new('Mainpage', ''); if(not komunikat:exists())then return "Wikibooks:Strona główna";end; local zawartosc_komunikatu=komunikat:plain(); zawartosc_komunikatu=mw.getCurrentFrame():preprocess(zawartosc_komunikatu); return zawartosc_komunikatu; end; p["Strona główna dla dzieci tego projektu"] = function(frame) return "Wikijunior:Strona główna"; end; p["Nazwa strony głównej dla dzieci projektu 2"] = function(frame) local args=frame and (frame.args or frame) or {}; local kod_jezyka=args[1]; local pudelko_pomocne_modul=require("Module:Pudełko/Pomocne"); return pudelko_pomocne_modul.Nazwa_strony_bazowej_dla_dzieci_z_wikidanych(kod_jezyka); end; p["Nazwa strony głównej projektu 2"] = function(frame) local args=frame and (frame.args or frame) or {}; local kod_jezyka=args[1]; local kod_projektu=args[2]; local pudelko_pomocne_modul=require("Module:Pudełko/Pomocne"); return pudelko_pomocne_modul.Nazwa_strony_bazowej_projektu_z_wikidanych(kod_jezyka,kod_projektu); end; return p; 1cueaug32lv53viemdjmtjycx9b056c 540481 540479 2026-04-24T11:49:46Z Persino 2851 540481 Scribunto text/plain local p={}; function p.CzyNiepoprawnaNazwa(nazwa_jednostki) local html_dane_modul=mw.loadData("Module:Html/dane"); return mw.ustring.match(nazwa_jednostki,"[{}<>|%[%]#\n"..html_dane_modul.znak_127.."]+") or mw.ustring.match(nazwa_jednostki,"~~~") or mw.ustring.match(nazwa_jednostki,"&(%a+);"); end; p["Nazwa przestrzeni nazw"]=function(frame,czy_uwzglednic_alternatywna_nazwe,i) local numer_jednostki=i or frame.args["numer jednostki"]; local liczba_numer_jednostki=((numer_jednostki)and(tonumber(numer_jednostki))or 0); local pudelko_pomocne_modul=require("Module:Pudełko/Pomocne"); return pudelko_pomocne_modul.Nazwa_przestrzeni_nazw(frame,0, czy_uwzglednic_alternatywna_nazwe,liczba_numer_jednostki); end; p["Nazwa przedmiotowej przestrzeni nazw"]=function(frame,czy_uwzglednic_alternatywna_nazwe,i) local numer_jednostki=i or frame.args["numer jednostki"]; local liczba_numer_jednostki=((numer_jednostki)and(tonumber(numer_jednostki))or 0); local pudelko_pomocne_modul=require("Module:Pudełko/Pomocne"); return pudelko_pomocne_modul.Nazwa_przestrzeni_nazw(frame,1, czy_uwzglednic_alternatywna_nazwe,liczba_numer_jednostki); end; p["Nazwa przestrzeni nazw dyskusji"]=function(frame,czy_uwzglednic_alternatywna_nazwe,i) local numer_jednostki=i or frame.args["numer jednostki"]; local liczba_numer_jednostki=((numer_jednostki)and(tonumber(numer_jednostki))or 0); local pudelko_pomocne_modul=require("Module:Pudełko/Pomocne"); return pudelko_pomocne_modul.Nazwa_przestrzeni_nazw(frame,2, czy_uwzglednic_alternatywna_nazwe,liczba_numer_jednostki); end; p["Nazwa przestrzeni nazw 2"]=function(frame,czy_uwzglednic_alternatywna_nazwe,i) local pudelko_pomocne_modul=require("Module:Pudełko/Pomocne"); return pudelko_pomocne_modul.Nazwa_przestrzeni_nazw_2(frame,czy_uwzglednic_alternatywna_nazwe,i) end; p["Nazwa przedmiotowej przestrzeni nazw 2"]=function(frame,czy_uwzglednic_alternatywna_nazwe,i) local pudelko_pomocne_modul=require("Module:Pudełko/Pomocne"); return pudelko_pomocne_modul.Nazwa_przestrzeni_nazw_przedmiotowa_dyskusji_2(frame,czy_uwzglednic_alternatywna_nazwe,i,"przedmiotowa"); end; p["Nazwa przestrzeni nazw dyskusji 2"]=function(frame,czy_uwzglednic_alternatywna_nazwe,i) local pudelko_pomocne_modul=require("Module:Pudełko/Pomocne"); return pudelko_pomocne_modul.Nazwa_przestrzeni_nazw_przedmiotowa_dyskusji_2(frame,czy_uwzglednic_alternatywna_nazwe,i,"dyskusja"); end; p["Nazwa przestrzeni nazw 3"]=function(frame,czy_uwzglednic_alternatywna_nazwe,i) local numer_jednostki=i or frame.args["numer jednostki"]; local liczba_numeru_jednostki=((numer_jednostki)and(tonumber(numer_jednostki)) or 0); local pudelko_pomocne_modul=require("Module:Pudełko/Pomocne"); return pudelko_pomocne_modul.Uzyskanie_nazw_jednostki(frame,0,czy_uwzglednic_alternatywna_nazwe,liczba_numeru_jednostki,nil,1); end; p["Nazwa przedmiotowej przestrzeni nazw 3"]=function(frame,czy_uwzglednic_alternatywna_nazwe,i) local numer_jednostki=i or frame.args["numer jednostki"]; local liczba_numeru_jednostki=((numer_jednostki)and(tonumber(numer_jednostki)) or 0); local pudelko_pomocne_modul=require("Module:Pudełko/Pomocne"); return pudelko_pomocne_modul.Uzyskanie_nazw_jednostki(frame,1,czy_uwzglednic_alternatywna_nazwe,liczba_numeru_jednostki,nil,1); end; p["Nazwa przestrzeni nazw dyskusji 3"]=function(frame,czy_uwzglednic_alternatywna_nazwe,i) local numer_jednostki=i or frame.args["numer jednostki"]; local liczba_numeru_jednostki=((numer_jednostki)and(tonumber(numer_jednostki)) or 0); local pudelko_pomocne_modul=require("Module:Pudełko/Pomocne"); return pudelko_pomocne_modul.Uzyskanie_nazw_jednostki(frame,2,czy_uwzglednic_alternatywna_nazwe,liczba_numeru_jednostki,nil,1); end; p["Nazwa jednostki"]=function(frame,i) local pudelko_pomocne_modul=require("Module:Pudełko/Pomocne"); return pudelko_pomocne_modul.Nazwa_jednostki(frame,i); end; p["Nazwa jednostki 2"]=function(frame,i) local pudelko_pomocne_modul=require("Module:Pudełko/Pomocne"); return pudelko_pomocne_modul.Jaka_nazwa_jednostki(frame,i,nil); end; p["Nazwa przedmiotowa jednostki 2"]=function(frame,i) local pudelko_pomocne_modul=require("Module:Pudełko/Pomocne"); return pudelko_pomocne_modul.Jaka_nazwa_jednostki(frame,i,"przedmiotowa"); end; p["Nazwa dyskusji jednostki 2"]=function(frame,i) local pudelko_pomocne_modul=require("Module:Pudełko/Pomocne"); return pudelko_pomocne_modul.Jaka_nazwa_jednostki(frame,i,"dyskusja"); end; p["Nazwa jednostki 3"]=function(frame,i) local numer_jednostki=i or frame.args["numer jednostki"]; local liczba_numeru_jednostki=((numer_jednostki)and(tonumber(numer_jednostki)) or 0); local pudelko_pomocne_modul=require("Module:Pudełko/Pomocne"); return pudelko_pomocne_modul.Uzyskanie_nazw_jednostki(frame,0,nil,liczba_numeru_jednostki,nil,2); end; p["Nazwa przedmiotowa jednostki 3"]=function(frame,i) local numer_jednostki=i or frame.args["numer jednostki"]; local liczba_numeru_jednostki=((numer_jednostki)and(tonumber(numer_jednostki))or 0); local pudelko_pomocne_modul=require("Module:Pudełko/Pomocne"); return pudelko_pomocne_modul.Uzyskanie_nazw_jednostki(frame,1,nil,liczba_numeru_jednostki,nil,2); end; p["Nazwa dyskusji jednostki 3"]=function(frame,i) local numer_jednostki=i or frame.args["numer jednostki"]; local liczba_numeru_jednostki=((numer_jednostki)and(tonumber(numer_jednostki))or 0); local pudelko_pomocne_modul=require("Module:Pudełko/Pomocne"); return pudelko_pomocne_modul.Uzyskanie_nazw_jednostki(frame,2,nil,liczba_numeru_jednostki,nil,2); end; p["Pełna nazwa jednostki"]=function(frame,i) local numer_jednostki=i or frame.args["numer jednostki"]; local liczba_numer_jednostki=((numer_jednostki)and(tonumber(numer_jednostki))or 0); local pudelko_modul=require("Module:Pudełko"); local nazwa_przestrzeni_nazw=pudelko_modul["Nazwa przestrzeni nazw"](frame,liczba_numer_jednostki); local nazwa_jednostki=pudelko_modul["Nazwa jednostki"](frame,liczba_numer_jednostki); if(nazwa_przestrzeni_nazw~="")then return nazwa_przestrzeni_nazw..":"..nazwa_jednostki;else return nazwa_jednostki;end; end; p["Pełna nazwa przedmiotowa jednostki"]=function(frame,i) local numer_jednostki=i or frame.args["numer jednostki"]; local liczba_numer_jednostki=((numer_jednostki)and(tonumber(numer_jednostki))or 0); local pudelko_modul=require("Module:Pudełko"); local nazwa_przestrzeni_nazw=pudelko_modul["Nazwa przedmiotowej przestrzeni nazw"](frame,liczba_numer_jednostki); local nazwa_jednostki=pudelko_modul["Nazwa jednostki"](frame,liczba_numer_jednostki); if(nazwa_przestrzeni_nazw~="")then return nazwa_przestrzeni_nazw..":"..nazwa_jednostki;else return nazwa_jednostki;end; end; p["Pełna nazwa dyskusji jednostki"]=function(frame,i) local numer_jednostki=i or frame.args["numer jednostki"]; local liczba_numer_jednostki=((numer_jednostki)and(tonumber(numer_jednostki))or 0); local pudelko_modul=require("Module:Pudełko"); local nazwa_przestrzeni_nazw=pudelko_modul["Nazwa przestrzeni nazw dyskusji"](frame,liczba_numer_jednostki); local nazwa_jednostki=pudelko_modul["Nazwa jednostki"](frame,liczba_numer_jednostki); if(nazwa_przestrzeni_nazw~="")then return nazwa_przestrzeni_nazw..":"..nazwa_jednostki;else return nazwa_jednostki;end; end; p["Pełna nazwa jednostki 2"]=function(frame,i) local numer_jednostki=i or frame.args["numer jednostki"]; local liczba_numer_jednostki=((numer_jednostki)and(tonumber(numer_jednostki))or 0); local pudelko_modul=require("Module:Pudełko"); local nazwa_przestrzeni_nazw=pudelko_modul["Nazwa przestrzeni nazw 2"](frame,liczba_numer_jednostki); local nazwa_jednostki=pudelko_modul["Nazwa jednostki 2"](frame,liczba_numer_jednostki); if(nazwa_przestrzeni_nazw~="")then return nazwa_przestrzeni_nazw..":"..nazwa_jednostki;else return nazwa_jednostki;end; end; p["Pełna nazwa przedmiotowa jednostki 2"]=function(frame,i) local numer_jednostki=i or frame.args["numer jednostki"]; local liczba_numer_jednostki=((numer_jednostki)and(tonumber(numer_jednostki))or 0); local pudelko_modul=require("Module:Pudełko"); local nazwa_przestrzeni_nazw=pudelko_modul["Nazwa przedmiotowej przestrzeni nazw 2"](frame,liczba_numer_jednostki); local nazwa_jednostki=pudelko_modul["Nazwa przedmiotowa jednostki 2"](frame,liczba_numer_jednostki); if(nazwa_przestrzeni_nazw~="")then return nazwa_przestrzeni_nazw..":"..nazwa_jednostki;else return nazwa_jednostki;end; end; p["Pełna nazwa dyskusji jednostki 2"]=function(frame,i) local numer_jednostki=i or frame.args["numer jednostki"]; local liczba_numer_jednostki=((numer_jednostki)and(tonumber(numer_jednostki))or 0); local pudelko_modul=require("Module:Pudełko"); local nazwa_przestrzeni_nazw=pudelko_modul["Nazwa przestrzeni nazw dyskusji 2"](frame,liczba_numer_jednostki); local nazwa_jednostki=pudelko_modul["Nazwa dyskusji jednostki 2"](frame,liczba_numer_jednostki); if(nazwa_przestrzeni_nazw~="")then return nazwa_przestrzeni_nazw..":"..nazwa_jednostki;else return nazwa_jednostki;end; end; p["Pełna nazwa jednostki 3"]=function(frame,i) local numer_jednostki=i or frame.args["numer jednostki"]; local liczba_numer_jednostki=((numer_jednostki)and(tonumber(numer_jednostki)) or 0); local pudelko_pomocne_modul=require("Module:Pudełko/Pomocne"); local nazwa_przestrzeni_nazw,nazwa_jednostki=pudelko_pomocne_modul.Uzyskanie_nazw_jednostki(frame,0,nil,liczba_numer_jednostki); if(nazwa_przestrzeni_nazw~="")then return nazwa_przestrzeni_nazw..":"..nazwa_jednostki;else return nazwa_jednostki;end; end; p["Pełna nazwa przedmiotowa jednostki 3"]=function(frame,i) local numer_jednostki=i or frame.args["numer jednostki"]; local liczba_numer_jednostki=((numer_jednostki)and(tonumber(numer_jednostki)) or 0); local pudelko_pomocne_modul=require("Module:Pudełko/Pomocne"); local nazwa_przestrzeni_nazw,nazwa_jednostki=pudelko_pomocne_modul.Uzyskanie_nazw_jednostki(frame,1,nil,liczba_numer_jednostki); if(nazwa_przestrzeni_nazw~="")then return nazwa_przestrzeni_nazw..":"..nazwa_jednostki;else return nazwa_jednostki;end; end; p["Pełna nazwa dyskusji jednostki 3"]=function(frame,i) local numer_jednostki=i or frame.args["numer jednostki"]; local liczba_numer_jednostki=((numer_jednostki)and(tonumber(numer_jednostki)) or 0); local pudelko_pomocne_modul=require("Module:Pudełko/Pomocne"); local nazwa_przestrzeni_nazw,nazwa_jednostki=pudelko_pomocne_modul.Uzyskanie_nazw_jednostki(frame,2,nil,liczba_numer_jednostki); if(nazwa_przestrzeni_nazw~="")then return nazwa_przestrzeni_nazw..":"..nazwa_jednostki;else return nazwa_jednostki;end; end; p["Typ jednostki"]=function(frame,i) local pudelko_pomocne_modul=require("Module:Pudełko/Pomocne"); return pudelko_pomocne_modul.Typ_jednostki(frame,0,i,0); end; p["Przedmiotowy typ jednostki"]=function(frame,i) local pudelko_pomocne_modul=require("Module:Pudełko/Pomocne"); return pudelko_pomocne_modul.Typ_jednostki(frame, 1,i,0); end; p["Dyskusyjny typ jednostki"]=function(frame,i) local pudelko_pomocne_modul=require("Module:Pudełko/Pomocne"); return pudelko_pomocne_modul.Typ_jednostki(frame,2,i,0); end; p["Typ jednostki 2"]=function(frame,i) local pudelko_pomocne_modul=require("Module:Pudełko/Pomocne"); return pudelko_pomocne_modul.Typ_jednostki(frame,0,i,1); end; p["Przedmiotowy typ jednostki 2"]=function(frame,i) local pudelko_pomocne_modul=require("Module:Pudełko/Pomocne"); return pudelko_pomocne_modul.Typ_jednostki(frame, 1,i,1); end; p["Dyskusyjny typ jednostki 2"]=function(frame,i) local pudelko_pomocne_modul=require("Module:Pudełko/Pomocne"); return pudelko_pomocne_modul.Typ_jednostki(frame, 2,i,1); end; p["Typ jednostki 3"]=function(frame,i) local pudelko_pomocne_modul=require("Module:Pudełko/Pomocne"); return pudelko_pomocne_modul.Typ_jednostki(frame,0,i,nil); end; p["Przedmiotowy typ jednostki 3"]=function(frame,i) local pudelko_pomocne_modul=require("Module:Pudełko/Pomocne"); return pudelko_pomocne_modul.Typ_jednostki(frame, 1,i,nil); end; p["Dyskusyjny typ jednostki 3"]=function(frame,i) local pudelko_pomocne_modul=require("Module:Pudełko/Pomocne"); return pudelko_pomocne_modul.Typ_jednostki(frame, 2,i,nil); end; p["Cecha pudełka"] = function(frame) local pudelko_potrzebne_modul=require("Module:Pudełko/Potrzebne"); return pudelko_potrzebne_modul.Cecha_kontenerowa_szablonowa(frame,"Błędy pudełka"); end; p["Przedmiotowa cecha pudełka"] = function(frame) local pudelko_potrzebne_modul=require("Module:Pudełko/Potrzebne"); return pudelko_potrzebne_modul.Cecha_kontenerowa_szablonowa(frame,"Przedmiotowe błędy pudełka"); end; p["Dyskusyjna cecha pudełka"] = function(frame) local pudelko_potrzebne_modul=require("Module:Pudełko/Potrzebne"); return pudelko_potrzebne_modul.Cecha_kontenerowa_szablonowa(frame,"Dyskusyjne błędy pudełka"); end; p["Ogólne pudełko"]= function(frame) local pudelko_potrzebne_modul=require("Module:Pudełko/Potrzebne"); return pudelko_potrzebne_modul.Generalny_kontener_szablonowy(frame); end; p["Tekst pudełka"] = function (frame) return frame.args["tekst"]; end; p["Błędy pudełka"]=function(frame) local pudelko_potrzebne_modul=require("Module:Pudełko/Potrzebne"); return pudelko_potrzebne_modul.Problemy_kontenerowe_szablonowe(frame,0); end; p["Przedmiotowe błędy pudełka"]=function(frame) local pudelko_potrzebne_modul=require("Module:Pudełko/Potrzebne"); return pudelko_potrzebne_modul.Problemy_kontenerowe_szablonowe(frame,1); end; p["Dyskusyjne błędy pudełka"]=function(frame) local pudelko_potrzebne_modul=require("Module:Pudełko/Potrzebne"); return pudelko_potrzebne_modul.Problemy_kontenerowe_szablonowe(frame,2); end; p["Nazwa strony głównej projektu"]=function(frame,i) local numer_jednostki=i or frame.args["numer jednostki"]; local i=(numer_jednostki)and tonumber(numer_jednostki) or 0; local pudelko_pomocne_modul=require("Module:Pudełko/Pomocne"); local kod_jezyka,kod_projektu=pudelko_pomocne_modul.Wikikody_kontenera(frame,i); return pudelko_pomocne_modul.Nazwa_strony_bazowej_projektu_ze_zmiennej(frame,i,kod_jezyka,kod_projektu) or pudelko_pomocne_modul.Nazwa_strony_bazowej_projektu_z_wikidanych(kod_jezyka,kod_projektu); end; p["Nazwa strony głównej dla dzieci projektu"]=function(frame,i) local numer_jednostki=i or frame.args["numer jednostki"]; local i=(numer_jednostki)and tonumber(numer_jednostki) or 0; local pudelko_pomocne_modul=require("Module:Pudełko/Pomocne"); local kod_jezyka,kod_projektu=pudelko_pomocne_modul.Wikikody_kontenera(frame,i); return pudelko_pomocne_modul.Nazwa_strony_bazowej_dla_dzieci_ze_zmiennej(frame,i,kod_jezyka) or pudelko_pomocne_modul.Nazwa_strony_bazowej_dla_dzieci_z_wikidanych(kod_jezyka); end; p["Kod języka"]=function(frame,i) local numer_jednostki=i or frame.args["numer jednostki"]; local i=(numer_jednostki)and tonumber(numer_jednostki) or 0; local pudelko_modul=require("Module:Pudełko"); local wartosc_domyslna=pudelko_modul["Kod języka tego projektu"](); local pudelko_pomocne_modul=require("Module:Pudełko/Pomocne"); return pudelko_pomocne_modul.Kod_jezyka(frame,i,wartosc_domyslna); end; p["Kod projektu"]=function(frame,i) local numer_jednostki=i or frame.args["numer jednostki"]; local i=(numer_jednostki)and tonumber(numer_jednostki) or 0; local pudelko_modul=require("Module:Pudełko"); local wartosc_domyslna=pudelko_modul["Kod projektu tego projektu"](); local pudelko_pomocne_modul=require("Module:Pudełko/Pomocne"); return pudelko_pomocne_modul.Kod_projektu(frame,i,wartosc_domyslna); end; p["Klucz projektu"]=function(frame,i) local numer_jednostki=i or frame.args["numer jednostki"]; local i=(numer_jednostki)and tonumber(numer_jednostki) or 0; local pudelko_pomocne_modul=require("Module:Pudełko/Pomocne"); return pudelko_pomocne_modul.Klucz_projektu(frame,i); end; p["Inny niż język bieżący wiki"]=function(frame) local pudelko_pomocne_modul=require("Module:Pudełko/Pomocne"); return pudelko_pomocne_modul.Analiza_interwiki_czy_projekt_aktualny(frame,true,false); end; p["Inne niż lokalne wiki"]=function(frame) local pudelko_pomocne_modul=require("Module:Pudełko/Pomocne"); return pudelko_pomocne_modul.Analiza_interwiki_czy_projekt_aktualny(frame,false,true); end; p["Inne niż bieżące wiki"]=function(frame) local pudelko_pomocne_modul=require("Module:Pudełko/Pomocne"); return pudelko_pomocne_modul.Analiza_interwiki_czy_projekt_aktualny(frame,true,true); end; p["Podano parametry nienazwane"]=function(frame) local parametry_modul=require("Module:Parametry"); local args=parametry_modul.PobierzArgsParametry(frame); for i,_ in pairs(args)do if(type(i)=="number")then return "tak";end; end; return; end; p["Podano parametry numerowane"]=function(frame) local parametry_modul=require("Module:Parametry"); local args=parametry_modul.PobierzArgsParametry(frame); for i,_ in ipairs(args)do return "tak"; end; return; end; p["Podano parametry nazwane"]=function(frame) local parametry_modul=require("Module:Parametry"); local args=parametry_modul.PobierzArgsParametry(frame); for name,_ in pairs(args)do if(type(name)=="string")then return "tak"; end; end; return; end; p["Kod projektu tego projektu"]=function(frame) return "b"; end; p["Kod języka tego projektu"]=function(frame) return "pl" end; p["Klucz projektu tego projektu"]=function(frame) local pudelko_modul=require("Module:Pudełko"); return pudelko_modul["Kod języka tego projektu"](frame)..":"..pudelko_modul["Kod projektu tego projektu"](frame); end; p["Strona główna tego projektu"] = function(frame) local komunikat = mw.message.new('Mainpage', ''); if(not komunikat:exists())then return "Wikibooks:Strona główna";end; local zawartosc_komunikatu=komunikat:plain(); zawartosc_komunikatu=mw.getCurrentFrame():preprocess(zawartosc_komunikatu); return zawartosc_komunikatu; end; p["Strona główna dla dzieci tego projektu"] = function(frame) return "Wikijunior:Strona główna"; end; p["Nazwa strony głównej dla dzieci projektu 2"] = function(frame) local args=frame and (frame.args or frame) or {}; local kod_jezyka=args[1]; local pudelko_pomocne_modul=require("Module:Pudełko/Pomocne"); return pudelko_pomocne_modul.Nazwa_strony_bazowej_dla_dzieci_z_wikidanych(kod_jezyka); end; p["Nazwa strony głównej projektu 2"] = function(frame) local args=frame and (frame.args or frame) or {}; local kod_jezyka=args[1]; local kod_projektu=args[2]; local pudelko_pomocne_modul=require("Module:Pudełko/Pomocne"); return pudelko_pomocne_modul.Nazwa_strony_bazowej_projektu_z_wikidanych(kod_jezyka,kod_projektu); end; return p; 47hhjq8rxej9ufs2n74xq2sitdhbcnl Moduł:Pudełko/Pomocne 828 56499 540391 540362 2026-04-23T14:39:37Z Persino 2851 540391 Scribunto text/plain local p={}; function p.Nazwa_strony_bazowej_projektu_z_wikidanych(kod_jezyka,kod_projektu) local strona=require("Module:Pudełko")["Strona główna tego projektu"](); local odpowiednik_strony=require("Module:Wiki").WikidaneOdpowiednikStrony{["nazwa strony"]=strona,["kod języka"]=kod_jezyka,["kod projektu"]=kod_projektu}; if(odpowiednik_strony)then local nazwy_modul=require("Module:Nazwy"); return nazwy_modul["PEŁNANAZWASTRONY"]{[1]=odpowiednik_strony,["kod języka"]=kod_jezyka,["kod projektu"]=kod_projektu,}; else local pudelko_modul=require("Module:Pudełko"); if((kod_jezyka==pudelko_modul["Kod języka tego projektu"]())and(kod_projektu==pudelko_modul["Kod projektu tego projektu"]()))then return strona; else local wiki_interwiki_modul=mw.loadData("Module:Wiki/interwiki"); local czy_w_wikidanych=wiki_interwiki_modul.tablica_kody_projektu_wikidane.lingwistyczne[kod_projektu] or wiki_interwiki_modul.tablica_kody_projektu_wikidane.specjalistyczne[kod_projektu]; return czy_w_wikidanych and "Main Page" or nil; end; end; end; function p.Nazwa_strony_bazowej_dla_dzieci_z_wikidanych(kod_jezyka) local strona=require("Module:Pudełko")["Strona główna dla dzieci tego projektu"](); local pudelko_modul=require("Module:Pudełko"); local kod_jezyka_tego_projektu=pudelko_modul["Kod języka tego projektu"](); if(kod_jezyka==kod_jezyka_tego_projektu)then return strona;end; local kod_projektu_tego_projektu=pudelko_modul["Kod projektu tego projektu"](); local odpowiednik_strony=require("Module:Wiki").WikidaneOdpowiednikStrony{["nazwa strony"]=strona,["kod języka"]=kod_jezyka,["kod projektu"]=kod_projektu_tego_projektu}; if(odpowiednik_strony)then local nazwy_modul=require("Module:Nazwy"); return nazwy_modul["PEŁNANAZWASTRONY"]{[1]=odpowiednik_strony,["kod języka"]=kod_jezyka,["kod projektu"]=kod_projektu_tego_projektu,}; else return "Wikijunior"; end; end; function p.Nazwa_strony_bazowej_projektu_ze_zmiennej(frame,i,kod_jezyka,kod_projektu) local pf=frame.getParent and frame:getParent() or {args={}}; local strona_glowna_projektu; if(i~=0)then local pudelko_modul=require("Module:Pudełko"); local kod_jezyka_tego_projektu=pudelko_modul["Kod języka tego projektu"](); local kod_projektu_tego_projektu=pudelko_modul["Kod projektu tego projektu"](); if(kod_jezyka==kod_jezyka_tego_projektu)and(kod_projektu==kod_projektu_tego_projektu)then strona_glowna_projektu=frame.args["strona główna projektu"] or pf.args["strona główna projektu"] else strona_glowna_projektu=(frame.args["strona główna projektu "..i] or pf.args["strona główna projektu "..i]) end; else strona_glowna_projektu=frame.args["strona główna projektu"] or pf.args["strona główna projektu"] end; local parametry_modul=require("Module:Parametry"); return (parametry_modul.CzyTak(strona_glowna_projektu))and require("Module:Nazwy")["PEŁNANAZWASTRONY"]{[1]=strona_glowna_projektu,["kod języka"]=kod_jezyka,["kod projektu"]=kod_projektu,} or (strona_glowna_projektu and "" or nil); end; function p.Nazwa_strony_bazowej_dla_dzieci_ze_zmiennej(frame,i,kod_jezyka) local pf=frame.getParent and frame:getParent() or {args={}}; local pudelko_modul=require("Module:Pudełko"); local strona_glowna_dla_dzieci; if(i~=0)then local kod_jezyka_tego_projektu=pudelko_modul["Kod języka tego projektu"](); if(kod_jezyka==kod_jezyka_tego_projektu)then strona_glowna_dla_dzieci=frame.args["strona główna dla dzieci"] or pf.args["strona główna dla dzieci"] else strona_glowna_dla_dzieci=(frame.args["strona główna dla dzieci "..i] or pf.args["strona główna dla dzieci "..i]) end; else strona_glowna_dla_dzieci=frame.args["strona główna dla dzieci"] or pf.args["strona główna dla dzieci"] end; local kod_projektu_tego_projektu=pudelko_modul["Kod projektu tego projektu"](); local parametry_modul=require("Module:Parametry"); return (parametry_modul.CzyTak(strona_glowna_dla_dzieci))and require("Module:Nazwy")["PEŁNANAZWASTRONY"]{[1]=strona_glowna_dla_dzieci,["kod języka"]=kod_jezyka,["kod projektu"]=kod_projektu_tego_projektu,} or (strona_glowna_dla_dzieci and "" or nil); end; function p.Normalna_przedmiotowa_lub_dyskusji_nazwa_przestrzeni_nazw(nazwa_przestrzeni_nazw, normmalna_przedmiotwa_dyskusji,kod_jezyka,kod_projektu) local nazwa_przestrzeni_nazw_blad; local wiki_modul=require("Module:Wiki"); local nazwy_modul=require("Module:Nazwy"); local czy_biezaca=wiki_modul["CzyBieżącaWiki"]{["kod języka"]=kod_jezyka,["kod projektu"]=kod_projektu,}; if(normmalna_przedmiotwa_dyskusji==0)then if(czy_biezaca)then nazwa_przestrzeni_nazw_blad=nazwy_modul.Np{nazwa=nazwa_przestrzeni_nazw,["kanoniczna"]="tak",["nazwij projektem"]="tak",["nazwij dyskusją projektu"]="tak",["istnieje"]="tak",["wynik błędu nietekstowy"]="tak",}; else nazwa_przestrzeni_nazw_blad=nazwy_modul.NpDane{nazwa=nazwa_przestrzeni_nazw,["kanoniczna"]="tak",["nazwij projektem"]="tak",["nazwij dyskusją projektu"]="tak",["kod języka"]=kod_jezyka,["kod projektu"]=kod_projektu,["istnieje"]="tak",["wynik błędu nietekstowy"]="tak",}; end; elseif(normmalna_przedmiotwa_dyskusji==1)then if(czy_biezaca)then nazwa_przestrzeni_nazw_blad=nazwy_modul.Np{nazwa=nazwa_przestrzeni_nazw, przedmiotowa="tak",["kanoniczna"]="tak",["nazwij projektem"]="tak",["nazwij dyskusją projektu"]="tak",["istnieje"]="tak",["wynik błędu nietekstowy"]="tak",}; else nazwa_przestrzeni_nazw_blad=nazwy_modul.NpDane{nazwa=nazwa_przestrzeni_nazw, przedmiotowa="tak",["kanoniczna"]="tak",["nazwij projektem"]="tak",["nazwij dyskusją projektu"]="tak",["kod języka"]=kod_jezyka,["kod projektu"]=kod_projektu,["istnieje"]="tak",["wynik błędu nietekstowy"]="tak",}; end; elseif(normmalna_przedmiotwa_dyskusji==2)then if(czy_biezaca)then nazwa_przestrzeni_nazw_blad=nazwy_modul.Np{nazwa=nazwa_przestrzeni_nazw, dyskusja="tak",["kanoniczna"]="tak",["nazwij projektem"]="tak",["nazwij dyskusją projektu"]="tak",["istnieje"]="tak",["wynik błędu nietekstowy"]="tak",}; else nazwa_przestrzeni_nazw_blad=nazwy_modul.NpDane{nazwa=nazwa_przestrzeni_nazw, dyskusja="tak",["kanoniczna"]="tak",["nazwij projektem"]="tak",["nazwij dyskusją projektu"]="tak",["kod języka"]=kod_jezyka,["kod projektu"]=kod_projektu,["istnieje"]="tak",["wynik błędu nietekstowy"]="tak",}; end; else if(czy_biezaca)then nazwa_przestrzeni_nazw_blad=nazwy_modul.Np{nazwa=nazwa_przestrzeni_nazw,["kanoniczna"]="tak",["nazwij projektem"]="tak",["nazwij dyskusją projektu"]="tak",["istnieje"]="tak",["wynik błędu nietekstowy"]="tak",}; else nazwa_przestrzeni_nazw_blad=nazwy_modul.NpDane{nazwa=nazwa_przestrzeni_nazw,["kanoniczna"]="tak",["nazwij projektem"]="tak",["nazwij dyskusją projektu"]="tak",["kod języka"]=kod_jezyka,["kod projektu"]=kod_projektu,["istnieje"]="tak",["wynik błędu nietekstowy"]="tak",}; end; end; return nazwa_przestrzeni_nazw_blad end; function p.Nazwa_przestrzeni_nazw(frame,kod_liczbowy_przestrzeni_nazw,czy_uwzglednic_alternatywna_nazwe,numer_jednostki) local pf=frame.getParent and frame:getParent() or {args={}}; local nazwa_przestrzeni_nazw=p.Nazwy_przestrzeni_i_jednostki_podane_o_pewnym_numerze(frame,numer_jednostki,1) or p.Nazwa_przestrzeni_nazw_uzyskana_z_typu_jednostki_z_frame(frame,numer_jednostki); local nazwy_modul=require("Module:Nazwy"); local wiki_modul=require("Module:Wiki"); local kod_jezyka,kod_projektu=p.Wikikody_kontenera(frame,numer_jednostki); local czy_biezaca_wiki=wiki_modul["CzyBieżącaWiki"]{["kod języka"]=kod_jezyka,["kod projektu"]=kod_projektu,}; local czy_blad_nazwy_przestrzeni_nazw; local typ; if(kod_liczbowy_przestrzeni_nazw==1)then typ="przedmiotowa"; if(czy_biezaca_wiki)then czy_blad_nazwy_przestrzeni_nazw=(not nazwa_przestrzeni_nazw)and nazwy_modul["PRZEDMIOTOWAPRZESTRZEŃ"]() or nazwy_modul.Np{nazwa=nazwa_przestrzeni_nazw,przedmiotowa="tak",["istnieje"]="tak",["wynik błędu nietekstowy"]="tak",}; else czy_blad_nazwy_przestrzeni_nazw=(not nazwa_przestrzeni_nazw)and nazwy_modul["PRZEDMIOTOWAPRZESTRZEŃ"]{["kod języka"]=kod_jezyka,["kod projektu"]=kod_projektu,} or nazwy_modul.NpDane{nazwa=nazwa_przestrzeni_nazw,przedmiotowa="tak",["kod języka"]=kod_jezyka,["kod projektu"]=kod_projektu,["istnieje"]="tak",["wynik błędu nietekstowy"]="tak",}; end; elseif(kod_liczbowy_przestrzeni_nazw==2)then if(czy_biezaca_wiki)then typ="dyskusja"; czy_blad_nazwy_przestrzeni_nazw=(not nazwa_przestrzeni_nazw)and nazwy_modul["PRZESTRZEŃDYSKUSJI"]() or nazwy_modul.Np{nazwa=nazwa_przestrzeni_nazw,dyskusja="tak",["istnieje"]="tak",["wynik błędu nietekstowy"]="tak",}; else czy_blad_nazwy_przestrzeni_nazw=(not nazwa_przestrzeni_nazw)and nazwy_modul["PRZESTRZEŃDYSKUSJI"]{["kod języka"]=kod_jezyka,["kod projektu"]=kod_projektu,} or nazwy_modul.NpDane{nazwa=nazwa_przestrzeni_nazw,dyskusja="tak",["kod języka"]=kod_jezyka,["kod projektu"]=kod_projektu,["istnieje"]="tak",["wynik błędu nietekstowy"]="tak",}; end; else if(czy_biezaca_wiki)then czy_blad_nazwy_przestrzeni_nazw=(not nazwa_przestrzeni_nazw)and nazwy_modul["NAZWAPRZESTRZENI"]() or nazwy_modul.Np{nazwa=nazwa_przestrzeni_nazw,["istnieje"]="tak",["wynik błędu nietekstowy"]="tak",}; else czy_blad_nazwy_przestrzeni_nazw=(not nazwa_przestrzeni_nazw)and nazwy_modul["NAZWAPRZESTRZENI"]{["kod języka"]=kod_jezyka,["kod projektu"]=kod_projektu,} or nazwy_modul.NpDane{nazwa=nazwa_przestrzeni_nazw,["kod języka"]=kod_jezyka, ["kod projektu"]=kod_projektu,["istnieje"]="tak",["wynik błędu nietekstowy"]="tak",}; end; end; if(czy_blad_nazwy_przestrzeni_nazw)then return czy_blad_nazwy_przestrzeni_nazw; else if(((czy_uwzglednic_alternatywna_nazwe==nil)and true or czy_uwzglednic_alternatywna_nazwe) and frame.args[1])then local nazwa_przestrzeni_nazw_alternatywnej=mw.text.trim(frame.args[1]); if(mw.ustring.match(nazwa_przestrzeni_nazw_alternatywnej,"^[%w%s_]*$"))then local czy_blad_nazwa_przestrzeni_nazw_alternatywnej; if(czy_biezaca_wiki)then local tab_parametry={nazwa=nazwa_przestrzeni_nazw_alternatywnej,["istnieje"]="tak",["wynik błędu nietekstowy"]="tak",}; if(typ)then tab_parametry[typ]="tak";end; czy_blad_nazwa_przestrzeni_nazw_alternatywnej=nazwy_modul.Np(tab_parametry); else local tab_parametry={nazwa=nazwa_przestrzeni_nazw_alternatywnej,["kod języka"]=kod_jezyka,["kod projektu"]=kod_projektu,["istnieje"]="tak",["wynik błędu nietekstowy"]="tak",}; if(typ)then tab_parametry[typ]="tak";end; czy_blad_nazwa_przestrzeni_nazw_alternatywnej=nazwy_modul.NpDane(tab_parametry); end; return czy_blad_nazwa_przestrzeni_nazw_alternatywnej or "(błąd)"; else return "(błąd)"; end; else local parametry_modul=require("Module:Parametry"); nazwa_przestrzeni_nazw=parametry_modul["Odstępy"]{[1]=nazwa_przestrzeni_nazw,[2]="tak",}; if(mw.ustring.match(nazwa_przestrzeni_nazw,"^[%w%s_]*$"))then return nazwa_przestrzeni_nazw; else return "(błąd)"; end; end; end; end; function p.Nazwa_przestrzeni_nazw_2(frame,czy_uwzglednic_alternatywna_nazwe,i) local nazwa_przestrzeni_nazw,nazwa_jednostki,liczba_numer_jednostki=p.Nazwy_przestrzeni_i_jednostki_podane_o_pewnym_numerze(frame,i); nazwa_przestrzeni_nazw=nazwa_przestrzeni_nazw or p.Nazwa_przestrzeni_nazw_uzyskana_z_typu_jednostki_z_frame(frame,liczba_numer_jednostki); local nazwy_modul=require("Module:Nazwy"); local kod_jezyka,kod_projektu=p.Wikikody_kontenera(frame,liczba_numer_jednostki); local wiki_modul=require("Module:Wiki"); local czy_biezaca_wiki=wiki_modul["CzyBieżącaWiki"]{["kod języka"]=kod_jezyka,["kod projektu"]=kod_projektu,}; local nazwa_przestrzeni_nazw_blad; local parametry_modul=require("Module:Parametry"); if(czy_biezaca_wiki)then nazwa_przestrzeni_nazw=nazwa_przestrzeni_nazw and mw.text.trim(nazwa_przestrzeni_nazw) or nazwy_modul["NAZWAPRZESTRZENI"](); nazwa_przestrzeni_nazw_blad=require("Module:Nazwy").Np{nazwa=nazwa_przestrzeni_nazw,["istnieje"]="tak",["wynik błędu nietekstowy"]="tak",}; if(nazwa_jednostki)then nazwa_jednostki=parametry_modul["Odstępy"]{[1]=nazwa_jednostki,[2]="tak",}; nazwa_jednostki=mw.ustring.gsub(nazwa_jednostki,"^([^#]*)#(.*)$","%1"); local parametry=mw.ustring.match(nazwa_jednostki,"^.*%?([^%?]+)$"); if(parametry and mw.ustring.match(parametry,"[^=]+=[^=]*"))then nazwa_jednostki=mw.ustring.gsub(nazwa_jednostki,"^(.*)%?([^%?]+)$","%1"); end; else nazwa_jednostki=nazwy_modul["NAZWASTRONY"](); end; else nazwa_przestrzeni_nazw=nazwa_przestrzeni_nazw and mw.text.trim(nazwa_przestrzeni_nazw) or nazwy_modul["NAZWAPRZESTRZENI"]{["kod języka"]=kod_jezyka,["kod projektu"]=kod_projektu,}; nazwa_przestrzeni_nazw_blad=require("Module:Nazwy").NpDane{nazwa=nazwa_przestrzeni_nazw,["kod języka"]=kod_jezyka,["kod projektu"]=kod_projektu,["istnieje"]="tak",["wynik błędu nietekstowy"]="tak",}; if(nazwa_jednostki)then local html_modul=require("Module:Html"); nazwa_jednostki=html_modul["NazwaStronyAdresu"](nazwa_jednostki,true); else nazwa_jednostki=nazwy_modul["NAZWASTRONY"]{["kod języka"]=kod_jezyka,["kod projektu"]=kod_projektu,}; end; end; nazwa_przestrzeni_nazw=nazwa_przestrzeni_nazw_blad or nazwa_przestrzeni_nazw; if(not mw.ustring.match(nazwa_jednostki,"^:"))then if(nazwa_przestrzeni_nazw~="")then if(czy_biezaca_wiki)then local nazwy_np_modul=mw.loadData("Module:Nazwy/Np"); if(nazwa_przestrzeni_nazw==nazwy_np_modul.Template)then local nazwa_przestrzeni_nazw_d=require("Module:Nazwy")["NAZWAPRZESTRZENI"](nazwa_jednostki); if(nazwa_przestrzeni_nazw_d==nazwy_np_modul.Template)then nazwa_przestrzeni_nazw=nazwy_np_modul.Template; end; elseif(nazwa_przestrzeni_nazw==nazwy_np_modul.Module)then local nazwa_przestrzeni_nazw_d=require("Module:Nazwy")["NAZWAPRZESTRZENI"](nazwa_jednostki); if(nazwa_przestrzeni_nazw_d==nazwy_np_modul.Module)then nazwa_przestrzeni_nazw=nazwy_np_modul.Module; end; end; else local template_prze=nazwy_modul.NpDane{nazwa="Template",["kod języka"]=kod_jezyka,["kod projektu"]=kod_projektu,}; local module_prze=nazwy_modul.NpDane{nazwa="Module",["kod języka"]=kod_jezyka,["kod projektu"]=kod_projektu,}; if(nazwa_przestrzeni_nazw==template_prze)then local nazwa_przestrzeni_nazw_d=nazwy_modul["NAZWAPRZESTRZENI"]{[1]=nazwa_jednostki,["kod języka"]=kod_jezyka,["kod projektu"]=kod_projektu,}; if(nazwa_przestrzeni_nazw_d==template_prze)then nazwa_przestrzeni_nazw=template_prze; end; elseif(nazwa_przestrzeni_nazw==module_prze)then local nazwa_przestrzeni_nazw_d=nazwy_modul["NAZWAPRZESTRZENI"]{[1]=nazwa_jednostki,["kod języka"]=kod_jezyka,["kod projektu"]=kod_projektu,}; if(nazwa_przestrzeni_nazw_d==module_prze)then nazwa_przestrzeni_nazw=module_prze; end; end; end; if(not nazwa_przestrzeni_nazw_blad)then if(((czy_uwzglednic_alternatywna_nazwe==nil)and true or czy_uwzglednic_alternatywna_nazwe) and frame.args[1])then local wytrimowana_nazwa_przestrzeni_nazw=mw.text.trim(frame.args[1]); if(mw.ustring.match(wytrimowana_nazwa_przestrzeni_nazw,"^[%w%s_]*$"))then if(czy_biezaca_wiki)then local nazwy_modul=require("Module:Nazwy"); local czy_blad_nazwy_przestrzeni_nazw=nazwy_modul.Np{nazwa=wytrimowana_nazwa_przestrzeni_nazw,["istnieje"]="tak",["wynik błędu nietekstowy"]="tak",} return czy_blad_nazwy_przestrzeni_nazw or "(błąd)"; else local nazwy_modul=require("Module:Nazwy"); local nazwa_przestrzeni_nazw_blad2=nazwy_modul.NpDane{nazwa=wytrimowana_nazwa_przestrzeni_nazw,["kod języka"]=kod_jezyka,["kod projektu"]=kod_projektu,["istnieje"]="tak",["wynik błędu nietekstowy"]="tak",}; return nazwa_przestrzeni_nazw_blad2 or "(błąd)"; end; else return "(błąd)"; end; else local wytrimowana_nazwa_przestrzeni_nazw=mw.text.trim(nazwa_przestrzeni_nazw); if(mw.ustring.match(wytrimowana_nazwa_przestrzeni_nazw,"^[%w%s_]*$"))then return wytrimowana_nazwa_przestrzeni_nazw; else return "(błąd)"; end; end; else return nazwa_przestrzeni_nazw; end; else return require("Module:Nazwy")["NAZWAPRZESTRZENI"]{[1]=nazwa_jednostki,["kod języka"]=kod_jezyka,["kod projektu"]=kod_projektu,}; end; else return require("Module:Nazwy")["NAZWAPRZESTRZENI"]{[1]=nazwa_jednostki,["kod języka"]=kod_jezyka,["kod projektu"]=kod_projektu,}; end; end; function p.Nazwa_przestrzeni_nazw_przedmiotowa_dyskusji_2(frame,czy_uwzglednic_alternatywna_nazwe,i,typ) local numer_jednostki=i or frame.args["numer jednostki"]; local liczba_numer_jednostki=((numer_jednostki)and(tonumber(numer_jednostki))or 0); local pudelko_modul=require("Module:Pudełko"); local tab_nazwa={ ["przedmiotowa"]="Nazwa przedmiotowej przestrzeni nazw", ["dyskusja"]="Nazwa przestrzeni nazw", }; local nazwa_przestrzeni_nazw=pudelko_modul[tab_nazwa[typ]](frame,czy_uwzglednic_alternatywna_nazwe,liczba_numer_jednostki); local nazwy_modul=require("Module:Nazwy"); if(nazwa_przestrzeni_nazw=="")then local nazwa_jednostki=pudelko_modul["Nazwa jednostki"](frame,liczba_numer_jednostki); local kod_jezyka,kod_projektu=p.Wikikody_kontenera(frame,liczba_numer_jednostki); local tab_nazwa={ ["przedmiotowa"]="PRZEDMIOTOWAPRZESTRZEŃ", ["dyskusja"]="PRZESTRZEŃDYSKUSJI", }; nazwa_przestrzeni_nazw=nazwy_modul[tab_nazwa[typ]]{nazwa=nazwa_jednostki,}; if(typ=="dyskusja")then local wiki_modul=require("Module:Wiki"); local czy_biezaca=wiki_modul["CzyBieżącaWiki"]{["kod języka"]=kod_jezyka,["kod projektu"]=kod_projektu,}; if(czy_biezaca)then nazwa_przestrzeni_nazw=nazwy_modul.Np{[typ]="tak",nazwa=nazwa_przestrzeni_nazw}; else nazwa_przestrzeni_nazw=nazwy_modul.NpDane{[typ]="tak",nazwa=nazwa_przestrzeni_nazw,["kod języka"]=kod_jezyka,["kod projektu"]=kod_projektu,}; end; return nazwa_przestrzeni_nazw; else return nazwa_przestrzeni_nazw; end; end; return nazwa_przestrzeni_nazw; end; function p.Kod_jezyka(frame,i,wartosc_domyslna) local pudelko_modul=require("Module:Pudełko"); if(not i)then return pudelko_modul["Kod języka tego projektu"]();end; local pf=frame.getParent and frame:getParent() or {args={}}; if(i==0)then return pudelko_modul["Kod języka tego projektu"](); elseif(i==1)then local parametry_modul=require("Module:Parametry"); local kod_jezyka=frame.args["kod języka"] or frame.args["kod języka 1"] or pf.args["kod języka"] or pf.args["kod języka 1"] return ((kod_jezyka)and(kod_jezyka~=""))and mw.text.trim(kod_jezyka) or ((parametry_modul.CzyTak(wartosc_domyslna))and wartosc_domyslna or nil); elseif(i>1)then local parametry_modul=require("Module:Parametry"); local kod_jezyka=frame.args["kod języka "..i] or pf.args["kod języka "..i] return ((kod_jezyka)and(kod_jezyka~=""))and mw.text.trim(kod_jezyka) or ((parametry_modul.CzyTak(wartosc_domyslna))and wartosc_domyslna or nil); end; end function p.Kod_projektu(frame,i,wartosc_domyslna) local pudelko_modul=require("Module:Pudełko"); if(not i)then return pudelko_modul["Kod projektu tego projektu"]();end; local pf=frame.getParent and frame:getParent() or {args={}}; if(i==0)then return pudelko_modul["Kod projektu tego projektu"](); elseif(i==1)then local parametry_modul=require("Module:Parametry"); local kod_projektu=frame.args["kod projektu"] or frame.args["kod projektu 1"] or pf.args["kod projektu"] or pf.args["kod projektu 1"] return ((kod_projektu)and(kod_projektu~=""))and mw.text.trim(kod_projektu) or ((parametry_modul.CzyTak(wartosc_domyslna))and wartosc_domyslna or nil); elseif(i>1)then local parametry_modul=require("Module:Parametry"); local kod_projektu=frame.args["kod projektu "..i] or pf.args["kod projektu "..i] return ((kod_projektu)and(kod_projektu~=""))and mw.text.trim(kod_projektu) or ((parametry_modul.CzyTak(wartosc_domyslna))and wartosc_domyslna or nil); end; end function p.Klucz_projektu(frame,i,wartosc_domyslna_jezyka,wartosc_domyslna_projektu) local pf=frame.getParent and frame:getParent() or {args={}}; local klucz_projektu; local function domyslne_klucz(klucz_projektu) local parametry_modul=require("Module:Parametry"); return ((klucz_projektu)and(klucz_projektu~=""))and mw.text.trim(klucz_projektu)or((parametry_modul.CzyTak(wartosc_domyslna_jezyka)and(parametry_modul.CzyTak(wartosc_domyslna_projektu)))and (wartosc_domyslna_jezyka..":" ..wartosc_domyslna_projektu)or(parametry_modul.CzyTak(wartosc_domyslna_jezyka) and wartosc_domyslna_jezyka or (parametry_modul.CzyTak(wartosc_domyslna_projektu) and wartosc_domyslna_projektu or nil))); end; if(i==0)then return nil; elseif(i==1)then local klucz_projektu=frame.args["klucz projektu"] or frame.args["klucz projektu 1"] or pf.args["klucz projektu"] or pf.args["klucz projektu 1"]; return domyslne_klucz(klucz_projektu); elseif(i>1)then local klucz_projektu=frame.args["klucz projektu "..i] or pf.args["klucz projektu "..i]; return domyslne_klucz(klucz_projektu); end; end; function p.Wikikody_kontenera(frame,i,wartosc_domyslna_jezyka,wartosc_domyslna_projektu) local wiki_modul=require("Module:Wiki"); local kod_jezyka,kod_projektu=wiki_modul.KodyWiki(p.Klucz_projektu(frame,i,wartosc_domyslna_jezyka,wartosc_domyslna_projektu),p.Kod_jezyka(frame,i,wartosc_domyslna_jezyka),p.Kod_projektu(frame,i,wartosc_domyslna_projektu)); return kod_jezyka,kod_projektu; end; function p.Nazwa_przestrzeni_nazw_od_typu_jednostki(typ,args,bez_analizy) if(not bez_analizy)then local parametry_modul=require("Module:Parametry"); if((((not parametry_modul.CzyTak(args["obsługiwane jednostki jako nieopisowe strony"]))and((typ=="artykuł")or(typ=="podręcznik")))or (typ=="artykuł")))then return ""; elseif(((not parametry_modul.CzyTak(args["obsługiwane jednostki jako nieopisowe strony"]))and((typ=="artykuł dla dzieci")or(typ=="podręcznik dla dzieci")))or(typ=="artykuł dla dzieci"))then return "Wikijunior"; elseif((not parametry_modul.CzyTak(args["obsługiwane brudnopisy jako normalne strony"])) and(((not parametry_modul.CzyTak(args["obsługiwane jednostki jako nieopisowe strony"]))and(parametry_modul.CzyTak(args["obsługiwane jednostki brudnopisu projektu"])and (typ=="podręcznik brudnopisu projektu" or typ=="artykuł brudnopisu projektu")or (typ=="jednostka brudnopisu projektu")) or (typ=="strona brudnopisu projektu"))or(typ=="strona projektu"))or (typ=="strona projektu"))then return "Project"; elseif((parametry_modul.CzyTak(args["obsługiwane strony jako niebrudnopisowe jednostki programowe"]))and (typ=="strona szablonu") or(not parametry_modul.CzyTak(args["obsługiwane brudnopisy jako normalne strony"]) and((not parametry_modul.CzyTak(args["obsługiwane opisy jako strony jednostek programowych"]) and not parametry_modul.CzyTak(args["obsługiwane jednostki jako nieopisowe strony"]) and not parametry_modul.CzyTak(args["obsługiwane nieudokumentowane szablony jako szablony"])) and((typ=="strona brudnopisu szablonu")or(typ=="strona brudnopisu opisu szablonu"))or(typ=="strona brudnopisu szablonu")) or((not parametry_modul.CzyTak(args["obsługiwane opisy jako strony jednostek programowych"]) and not parametry_modul.CzyTak(args["obsługiwane jednostki jako nieopisowe strony"]) and not parametry_modul.CzyTak(args["obsługiwane nieudokumentowane szablony jako szablony"])) and((typ=="strona szablonu")or(typ=="strona opisu szablonu"))or(typ=="strona szablonu"))))then return "Template"; elseif((parametry_modul.CzyTak(args["obsługiwane strony jako niebrudnopisowe jednostki programowe"]))and (typ=="strona modułu") or(not parametry_modul.CzyTak(args["obsługiwane brudnopisy jako normalne strony"]) and((not parametry_modul.CzyTak(args["obsługiwane opisy jako strony jednostek programowych"]) and not parametry_modul.CzyTak(args["obsługiwane jednostki jako nieopisowe strony"])) and((typ=="strona brudnopisu modułu")or(typ=="strona brudnopisu opisu modułu"))or(typ=="strona brudnopisu modułu")) or((not parametry_modul.CzyTak(args["obsługiwane opisy jako strony jednostek programowych"]) and not parametry_modul.CzyTak(args["obsługiwane jednostki jako nieopisowe strony"])) and((typ=="strona modułu")or(typ=="strona opisu modułu"))or(typ=="strona modułu"))))then return "Module"; elseif(not parametry_modul.CzyTak(args["obsługiwane jednostki użytkownika jako normalne strony"]) and(((not parametry_modul.CzyTak(args["obsługiwane jednostki jako nieopisowe strony"]))and(parametry_modul.CzyTak(args["obsługiwane jednostki użytkownika"])and (typ=="podręcznik użytkownika" or typ=="artykuł użytkownika") or (typ=="jednostka użytkownika")) or (typ=="strona użytkownika"))or(typ=="strona główna użytkownika"))or(typ=="strona użytkownika"))then return "User"; elseif(typ=="strona pliku")then return "File"; elseif(typ=="strona kategorii")then return "Category"; elseif(typ=="strona pomocy")then return "Help"; elseif(typ=="strona komunikatu")then return "MediaWiki"; elseif(typ=="strona specjalna")then return "Special"; elseif(typ=="strona gadżetu")then return "Gadget"; elseif(typ=="strona główna projektu")then return "Project"; elseif(typ=="strona główna dla dzieci")then return "Wikijunior"; end; return; end; if(typ)then if((typ=="artykuł")or(typ=="podręcznik"))then return ""; elseif((typ=="artykuł dla dzieci")or(typ=="podręcznik dla dzieci"))then return "Wikijunior"; elseif((typ=="podręcznik brudnopisu projektu")or(typ=="artykuł brudnopisu projektu")or(typ=="jednostka brudnopisu projektu")or(typ=="strona brudnopisu projektu")or(typ=="strona projektu"))then return "Project"; elseif((typ=="strona szablonu")or(typ=="strona opisu szablonu")or(typ=="strona brudnopisu szablonu")or(typ=="strona brudnopisu opisu szablonu"))then return "Template"; elseif((typ=="strona modułu")or(typ=="strona opisu modułu")or(typ=="strona brudnopisu modułu")or(typ=="strona brudnopisu opisu modułu"))then return "Module"; elseif((typ=="podręcznik użytkownika")or(typ=="artykuł użytkownika")or(typ=="jednostka użytkownika")or(typ=="strona użytkownika")or(typ=="strona główna użytkownika"))then return "User"; elseif(typ=="strona pliku")then return "File"; elseif(typ=="strona kategorii")then return "Category"; elseif(typ=="strona pomocy")then return "Help"; elseif(typ=="strona komunikatu")then return "MediaWiki"; elseif(typ=="strona specjalna")then return "Special"; elseif(typ=="strona gadżetu")then return "Gadget"; elseif(typ=="strona główna projektu")then return "Project"; elseif(typ=="strona główna dla dzieci")then return "Wikijunior"; end; end; end; function p.Typ_jednostki_uzyskany_z_frame(frame,i) local numer_jednostki=i or frame.args["numer jednostki"]; local liczba_numer_jednostki=tonumber(numer_jednostki) or 0; local pf=frame.getParent and frame:getParent() or {args={}}; local typ; if liczba_numer_jednostki~=0 then typ=liczba_numer_jednostki and( (frame.args["typ jednostki "..liczba_numer_jednostki] or frame.args["typ jednostki i"]) or (pf.args["typ jednostki "..liczba_numer_jednostki] or pf.args["typ jednostki i"]) ); if(not typ)then local nazwa_jednostki=p.Nazwy_przestrzeni_i_jednostki_podane_o_pewnym_numerze(frame,liczba_numer_jednostki,2); if(nazwa_jednostki)then if(not mw.ustring.match(mw.text.trim(nazwa_jednostki),"^:"))then local nazwa_przesrzeni_nazw=p.Nazwy_przestrzeni_i_jednostki_podane_o_pewnym_numerze(frame,liczba_numer_jednostki,1); if(not nazwa_przesrzeni_nazw)then typ=frame.args["typ jednostki"] or pf.args["typ jednostki"]; end; end; end; end; else typ=frame.args["typ jednostki"] or pf.args["typ jednostki"]; end; return typ,liczba_numer_jednostki; end; function p.Czy_dyskusja_typu_jednostki_z_frame_od_dyskusja_typu_jednostki(frame,i) local numer_jednostki=i or frame.args["numer jednostki"]; local liczba_numer_jednostki=((numer_jednostki)and(tonumber(numer_jednostki))or 0); local pf=frame:getParent() or {args={},}; local function FuncTemp(liczba_numer_jednostki) local dyskusja_parametr="dyskusja typu jednostki"; if(liczba_numer_jednostki==0)then return frame.args[dyskusja_parametr] or pf.args[dyskusja_parametr]; else return ((frame.args[dyskusja_parametr.." "..liczba_numer_jednostki] or pf.args[dyskusja_parametr.." "..liczba_numer_jednostki]) or (frame.args[dyskusja_parametr.." i"] or pf.args[dyskusja_parametr.." i"]) or(frame.args[dyskusja_parametr] or pf.args[dyskusja_parametr])); end; end; local czy_dyskusja=FuncTemp(liczba_numer_jednostki); local parametry_modul=require("Module:Parametry"); local czy_dyskusja=parametry_modul.CzyTak(czy_dyskusja); return czy_dyskusja; end; function p.Nazwa_przestrzeni_nazw_uzyskana_z_typu_jednostki_z_frame(frame,i) local typ=p.Typ_jednostki_uzyskany_z_frame(frame,i); local nazwa_przestrzeni_nazw=typ and p.Nazwa_przestrzeni_nazw_od_typu_jednostki(typ,nil,true) or nil; if(nazwa_przestrzeni_nazw)then local czy_dyskusja=p.Czy_dyskusja_typu_jednostki_z_frame_od_dyskusja_typu_jednostki(frame,i); if(czy_dyskusja)then if(nazwa_przestrzeni_nazw=="")then return "Talk"; else return nazwa_przestrzeni_nazw.." talk"; end; else return nazwa_przestrzeni_nazw; end; else return nil; end; end; function p.Typ_jednostki(frame, kod_liczbowy_przestrzeni_nazw,i,numer_argorytmu) local parametry_modul=require("Module:Parametry"); local analiza=parametry_modul.CzyTak(frame.args["analiza"]); local typ,liczba_numer_jednostki=p.Typ_jednostki_uzyskany_z_frame(frame,i); local uzyskana_przestrzen_nazw_od_typu_jednostki; local nazwa_przestrzeni_nazw_podana,nazwa_jednostki_podana=p.Nazwy_przestrzeni_i_jednostki_podane_o_pewnym_numerze(frame,liczba_numer_jednostki); if((not analiza)and(typ))then if(typ~="")then uzyskana_przestrzen_nazw_od_typu_jednostki=p.Nazwa_przestrzeni_nazw_od_typu_jednostki(typ,frame.args); if(uzyskana_przestrzen_nazw_od_typu_jednostki)then if((not nazwa_przestrzeni_nazw_podana)and(not nazwa_jednostki_podana))then return typ; end; else return "(błąd typu jednostki)"; end; end; end; local nazwa_przestrzeni_nazw,nazwa_jednostki=p.Uzyskanie_nazw_jednostki(frame,kod_liczbowy_przestrzeni_nazw,liczba_numer_jednostki,numer_argorytmu); local nazwy_modul=require("Module:Nazwy"); local kod_jezyka,kod_projektu=p.Wikikody_kontenera(frame,liczba_numer_jednostki); local wiki_modul=require("Module:Wiki"); local czy_biezaca=wiki_modul["CzyBieżącaWiki"]{["kod języka"]=kod_jezyka,["kod projektu"]=kod_projektu,}; local czy_blad_nazwa_przestrzeni_nazw; if(czy_biezaca)then czy_blad_nazwa_przestrzeni_nazw=nazwy_modul.Np{nazwa=nazwa_przestrzeni_nazw,["kanoniczna"]="tak",["nazwij projektem"]="tak",["nazwij dyskusją projektu"]="tak",["istnieje"]="tak",["wynik błędu nietekstowy"]="tak",} else czy_blad_nazwa_przestrzeni_nazw=nazwy_modul.NpDane{nazwa=nazwa_przestrzeni_nazw,["kanoniczna"]="tak",["nazwij projektem"]="tak",["nazwij dyskusją projektu"]="tak",["kod języka"]=kod_jezyka,["kod projektu"]=kod_projektu,["istnieje"]="tak",["wynik błędu nietekstowy"]="tak",} end; if(not czy_blad_nazwa_przestrzeni_nazw)then return "(błąd nazwy przestrzeni nazw)";end; nazwa_przestrzeni_nazw=czy_blad_nazwa_przestrzeni_nazw; --- --- if((not analiza)and(typ))then if(typ~="")then ---typ jednostki if(uzyskana_przestrzen_nazw_od_typu_jednostki)then if((nazwa_przestrzeni_nazw_podana)and(not nazwa_jednostki_podana))then if(uzyskana_przestrzen_nazw_od_typu_jednostki==nazwa_przestrzeni_nazw)then return typ; else return "(błąd niezgodności)"; end; end; else return "(błąd typu jednostki)"; end; end; end; local function Typ_jednostki() if(nazwa_jednostki~="")then --local kod_jezyka,kod_projektu=KodyWikiPudelka(frame,liczba_numer_jednostki); --local klucz_projektu=kod_projektu..":"..kod_jezyka; local pudelko_modul=require("Module:Pudełko"); local pelna_nazwa_strony=((nazwa_przestrzeni_nazw~="")and nazwa_przestrzeni_nazw..":" or "")..nazwa_jednostki; if(pudelko_modul.CzyNiepoprawnaNazwa(pelna_nazwa_strony))then return "(błąd nazwy jednostki)";end; local nazwy_modul=require("Module:Nazwy") pelna_nazwa_strony=nazwy_modul["PEŁNANAZWASTRONY"]{[1]=pelna_nazwa_strony,["kod języka"]=kod_jezyka,["kod projektu"]=kod_projektu,}; local norm_przed_lub_dyskusji=p.Normalna_przedmiotowa_lub_dyskusji_nazwa_przestrzeni_nazw(nazwa_przestrzeni_nazw, kod_liczbowy_przestrzeni_nazw,kod_jezyka,kod_projektu); if(kod_projektu==pudelko_modul["Kod projektu tego projektu"]())then local nazwa_strony_glownej_dla_dzieci_ze_zmiennej=p.Nazwa_strony_bazowej_dla_dzieci_ze_zmiennej(frame,liczba_numer_jednostki,kod_jezyka); if(nazwa_strony_glownej_dla_dzieci_ze_zmiennej=="")then return "(błąd nazwy strony głównej dla dzieci)";end; local nazwa_strony_glownej_wikijuniora=p.Nazwa_strony_bazowej_dla_dzieci_z_wikidanych(kod_jezyka); local nazwa_strony_glownej_dla_dzieci_uzyskana=(not nazwa_strony_glownej_dla_dzieci_ze_zmiennej)and nazwa_strony_glownej_wikijuniora or nazwa_strony_glownej_dla_dzieci_ze_zmiennej; if(nazwa_strony_glownej_dla_dzieci_uzyskana)then if(pudelko_modul.CzyNiepoprawnaNazwa(nazwa_strony_glownej_dla_dzieci_uzyskana))then return "(błąd nazwy strony głównej dla dzieci)";end; nazwa_strony_glownej_dla_dzieci_uzyskana=nazwy_modul["PEŁNANAZWASTRONY"]{[1]=nazwa_strony_glownej_dla_dzieci_uzyskana,["kod języka"]=kod_jezyka,["kod projektu"]=kod_projektu,}; if(pelna_nazwa_strony==nazwa_strony_glownej_dla_dzieci_uzyskana)then return "strona główna dla dzieci";end; end; end; local nazwa_strony_glownej_projektu_ze_zmiennej=p.Nazwa_strony_bazowej_projektu_ze_zmiennej(frame,liczba_numer_jednostki,kod_jezyka,kod_projektu); if(nazwa_strony_glownej_projektu_ze_zmiennej=="")then return "(błąd nazwy strony głównej projektu)";end; local nazwa_strony_glownej_projektu_z_wikidanych=p.Nazwa_strony_bazowej_projektu_z_wikidanych(kod_jezyka,kod_projektu); local nazwa_strony_glownej_projektu_uzyskana=(not nazwa_strony_glownej_projektu_ze_zmiennej)and nazwa_strony_glownej_projektu_z_wikidanych or nazwa_strony_glownej_projektu_ze_zmiennej; if(nazwa_strony_glownej_projektu_uzyskana)then if(pudelko_modul.CzyNiepoprawnaNazwa(nazwa_strony_glownej_projektu_uzyskana))then return "(błąd nazwy strony głównej projektu)";end; nazwa_strony_glownej_projektu_uzyskana=nazwy_modul["PEŁNANAZWASTRONY"]{[1]=nazwa_strony_glownej_projektu_uzyskana,["kod języka"]=kod_jezyka,["kod projektu"]=kod_projektu,}; if(pelna_nazwa_strony==nazwa_strony_glownej_projektu_uzyskana)then return "strona główna projektu";end; end; if(norm_przed_lub_dyskusji=="")then local parametry_modul=require("Module:Parametry"); if(parametry_modul.CzyTak(frame.args["obsługiwane jednostki jako nieopisowe strony"]))then return "artykuł"; else local it=mw.ustring.match(nazwa_jednostki,"^[^/]+$"); if(it)then return "podręcznik";else return "artykuł";end; end; elseif(norm_przed_lub_dyskusji=="Wikijunior")then local parametry_modul=require("Module:Parametry"); if(parametry_modul.CzyTak(frame.args["obsługiwane jednostki jako nieopisowe strony"]))then return "artykuł dla dzieci"; else local it=mw.ustring.match(nazwa_jednostki,"^[^/]+$"); if(it)then return "podręcznik dla dzieci";else return "artykuł dla dzieci";end; end; elseif(norm_przed_lub_dyskusji=="User")then local parametry_modul=require("Module:Parametry"); if(parametry_modul.CzyTak(frame.args["obsługiwane jednostki użytkownika jako normalne strony"]))then return "strona użytkownika"; else local czy_podstrony=mw.ustring.match(nazwa_jednostki,"^[^/]+$") if(czy_podstrony)then return "strona główna użytkownika"; else if(not parametry_modul.CzyTak(frame.args["obsługiwane jednostki jako nieopisowe strony"]))then if(parametry_modul.CzyTak(frame.args["obsługiwane jednostki użytkownika"]))then local czy_ksiazka=mw.ustring.match(nazwa_jednostki,"^[^/]+/[^/]*$"); if(czy_ksiazka)then return "podręcznik użytkownika"; else return "artykuł użytkownika"; end; else return "jednostka użytkownika"; end; else return "strona użytkownika"; end; end; end; elseif(norm_przed_lub_dyskusji=="File")then return "strona pliku"; elseif(norm_przed_lub_dyskusji=="Category")then return "strona kategorii"; elseif(norm_przed_lub_dyskusji=="Project")then local parametry_modul=require("Module:Parametry"); if(parametry_modul.CzyTak(frame.args["obsługiwane brudnopisy jako normalne strony"]))then return "strona projektu";end; if(mw.ustring.match(nazwa_jednostki,"^%s*[Bb]rudnopis/[^/]*/.*"))then if(not parametry_modul.CzyTak(frame.args["obsługiwane jednostki jako nieopisowe strony"]))then if(parametry_modul.CzyTak(frame.args["obsługiwane jednostki brudnopisu projektu"]))then local czy_ksiazka=mw.ustring.match(nazwa_jednostki,"^%s*[Bb]rudnopis/[^/]*/[^/]*$"); if(czy_ksiazka)then return "podręcznik brudnopisu projektu"; else return "artykuł brudnopisu projektu"; end; else return "jednostka brudnopisu projektu"; end; else return "strona brudnopisu projektu"; end; else return "strona projektu"; end; elseif(norm_przed_lub_dyskusji=="Help")then return "strona pomocy"; elseif(norm_przed_lub_dyskusji=="MediaWiki")then return "strona komunikatu"; elseif(norm_przed_lub_dyskusji=="Special")then return "strona specialna"; elseif(norm_przed_lub_dyskusji=="Gadget")then return "strona gadżetu"; elseif(nazwa_przestrzeni_nazw=="Template")then local parametry_modul=require("Module:Parametry"); if(parametry_modul.CzyTak(frame.args["obsługiwane strony jako niebrudnopisowe jednostki programowe"]))then return "strona szablonu";end; local function CzySzablonAlboOpis(nazwa_przestrzeni_nazw,nazwa_jednostki,szablon,opis_szablonu,strona_szablonu,prefix) local parametry_modul=require("Module:Parametry"); if(parametry_modul.CzyTak(frame.args["obsługiwane opisy jako strony jednostek programowych"]) or parametry_modul.CzyTak(frame.args["obsługiwane jednostki jako nieopisowe strony"]))then return szablon; else if(mw.ustring.match(nazwa_jednostki,"^"..prefix..".*/opis$"))then return opis_szablonu; else if(not parametry_modul.CzyTak(frame.args["obsługiwane nieudokumentowane szablony jako szablony"]))then local czy_brudnopis=mw.ustring.match(nazwa_jednostki,"^"..prefix..".*$"); if(czy_brudnopis)then local pagename=(nazwa_przestrzeni_nazw~="")and nazwa_przestrzeni_nazw..":"..nazwa_jednostki or nazwa_jednostki; local czy_istnieje_strona,tab=require("Module:Techniczne").PoliczZbiory(pagename); if(czy_istnieje_strona==1)then local czy_brudnopis_opisu_szablonu=require("Module:Łatki").contentMatch{ [1]='<noinclude>.-{{%s*[Dd]okumentacja%s*}}.-</noinclude>', [2]='<noinclude>.-{{%s*[Dd]okumentacja%s*|.-</noinclude>',pagename=pagename,namespace=0 }; if(not czy_brudnopis_opisu_szablonu)then return opis_szablonu;else return szablon;end; else return szablon; end; else return strona_szablonu; end; else return szablon; end; end; end; end; if((not parametry_modul.CzyTak(frame.args["obsługiwane brudnopisy jako normalne strony"]))and(mw.ustring.match(nazwa_jednostki,"^%s*[Bb]rudnopis/[^/]*/.*")))then return CzySzablonAlboOpis(nazwa_przestrzeni_nazw,nazwa_jednostki,"strona brudnopisu szablonu","strona brudnopisu opisu szablonu","strona szablonu","[Bb]rudnopis/[^/]*/"); else return CzySzablonAlboOpis(nazwa_przestrzeni_nazw,nazwa_jednostki,"strona szablonu","strona opisu szablonu","strona szablonu",""); end; elseif(nazwa_przestrzeni_nazw=="Module")then local parametry_modul=require("Module:Parametry"); if(parametry_modul.CzyTak(frame.args["obsługiwane strony jako niebrudnopisowe jednostki programowe"]))then return "strona modułu";end; if((not parametry_modul.CzyTak(frame.args["obsługiwane brudnopisy jako normalne strony"]))and(mw.ustring.match(nazwa_jednostki,"^%s*[Bb]rudnopis/[^/]*/.*")))then if(parametry_modul.CzyTak(frame.args["obsługiwane opisy jako strony jednostek programowych"]) or parametry_modul.CzyTak(frame.args["obsługiwane jednostki jako nieopisowe strony"]))then return "strona brudnopisu modułu" else local pelna_nazwa_strony=(nazwa_przestrzeni_nazw~="")and nazwa_przestrzeni_nazw..":"..nazwa_jednostki or nazwa_jednostki; pelna_nazwa_strony=require("Module:Nazwy")["PEŁNANAZWASTRONY"]{[1]=pelna_nazwa_strony,["kod języka"]=kod_jezyka,["kod projektu"]=kod_projektu,}; local pelna_nazwa_strony_brudnopisu_opisu_modulu=require("Module:Techniczne")["PełnaNazwaOpisuModułu"](pelna_nazwa_strony); if(pelna_nazwa_strony==pelna_nazwa_strony_brudnopisu_opisu_modulu)then return "strona brudnopisu opisu modułu"; else return "strona brudnopisu modułu"; end; end; else if(parametry_modul.CzyTak(frame.args["obsługiwane opisy jako strony jednostek programowych"]) or parametry_modul.CzyTak(frame.args["obsługiwane jednostki jako nieopisowe strony"]))then return "strona modułu" else local pelna_nazwa_strony=(nazwa_przestrzeni_nazw~="")and nazwa_przestrzeni_nazw..":"..nazwa_jednostki or nazwa_jednostki; pelna_nazwa_strony=require("Module:Nazwy")["PEŁNANAZWASTRONY"]{[1]=pelna_nazwa_strony,["kod języka"]=kod_jezyka,["kod projektu"]=kod_projektu,}; local pelna_nazwa_opisu_modulu=require("Module:Techniczne")["PełnaNazwaOpisuModułu"](pelna_nazwa_strony); if(pelna_nazwa_strony==pelna_nazwa_opisu_modulu)then return "strona opisu modułu"; else return "strona modułu"; end; end; end; else return "inne"; end; end; return "inne"; end; local typ_jednostki=Typ_jednostki(); if(((analiza)or(nazwa_jednostki_podana))and(typ)and(typ~=""))then if(typ_jednostki==typ)then return typ_jednostki; elseif(nazwa_jednostki_podana)then return "(błąd parametrów pudełkowych)" else return "(błąd typu jednostki)"; end; end; return typ_jednostki; end; function p.Uzyskanie_nazw_jednostki(frame,kod_liczbowy_przestrzeni_nazw,i,numer_argorytmu,co_ma_liczyc) local nazwa_przestrzeni_fun,nazwa_jednostki_fun; if(kod_liczbowy_przestrzeni_nazw==0)then nazwa_przestrzeni_fun="Nazwa przestrzeni nazw"; nazwa_jednostki_fun="Nazwa jednostki"; elseif(kod_liczbowy_przestrzeni_nazw==1)then nazwa_przestrzeni_fun="Nazwa przedmiotowej przestrzeni nazw"; nazwa_jednostki_fun="Nazwa przedmiotowa jednostki"; elseif(kod_liczbowy_przestrzeni_nazw==2)then nazwa_przestrzeni_fun="Nazwa przestrzeni nazw dyskusji" nazwa_jednostki_fun="Nazwa dyskusji jednostki"; else nazwa_przestrzeni_fun="Nazwa przestrzeni nazw"; nazwa_jednostki_fun="Nazwa jednostki"; end; local pudelko_modul=require("Module:Pudełko"); if(not numer_argorytmu)then if((not i)or(i==0))then if((not co_ma_liczyc)or(co_ma_liczyc==0))then local nazwa_przestrzeni_nazw=pudelko_modul[nazwa_przestrzeni_fun](frame,false); local nazwa_jednostki=pudelko_modul["Nazwa jednostki"](frame); return nazwa_przestrzeni_nazw,nazwa_jednostki; elseif(co_ma_liczyc==1)then local nazwa_przestrzeni_nazw=pudelko_modul[nazwa_przestrzeni_fun](frame,false); return nazwa_przestrzeni_nazw; elseif(co_ma_liczyc==2)then return pudelko_modul["Nazwa jednostki"](frame); end; else if((not co_ma_liczyc)or(co_ma_liczyc==0))then local n=p.Nazwa_przestrzeni_nazw_dodatkowe(frame,i); local nazwa_przestrzeni_nazw=(n)and pudelko_modul[nazwa_przestrzeni_fun](frame,false,i) or pudelko_modul[nazwa_przestrzeni_fun.." 2"](frame,false,i); local nazwa_jednostki=(n)and pudelko_modul["Nazwa jednostki"](frame,i) or pudelko_modul[nazwa_jednostki_fun.." 2"](frame,i); return nazwa_przestrzeni_nazw,nazwa_jednostki; elseif(co_ma_liczyc==1)then local n=p.Nazwa_przestrzeni_nazw_dodatkowe(frame,i); local nazwa_przestrzeni_nazw=(n)and pudelko_modul[nazwa_przestrzeni_fun](frame,false,i) or pudelko_modul[nazwa_przestrzeni_fun.." 2"](frame,false,i); return nazwa_przestrzeni_nazw; elseif(co_ma_liczyc==2)then local n=p.Nazwa_przestrzeni_nazw_dodatkowe(frame,i); return (n)and pudelko_modul["Nazwa jednostki"](frame,i) or pudelko_modul[nazwa_jednostki_fun.." 2"](frame,i); end; end; else if(numer_argorytmu==0)then if((not co_ma_liczyc)or(co_ma_liczyc==0))then local nazwa_przestrzeni_nazw=pudelko_modul[nazwa_przestrzeni_fun](frame,false,i); local nazwa_jednostki=pudelko_modul["Nazwa jednostki"](frame,i); return nazwa_przestrzeni_nazw,nazwa_jednostki; elseif(co_ma_liczyc==1)then local nazwa_przestrzeni_nazw=pudelko_modul[nazwa_przestrzeni_fun](frame,false,i); return nazwa_przestrzeni_nazw; elseif(co_ma_liczyc==2)then return pudelko_modul["Nazwa jednostki"](frame,i); end; else if((not co_ma_liczyc)or(co_ma_liczyc==0))then local nazwa_przestrzeni_nazw=pudelko_modul[nazwa_przestrzeni_fun.." 2"](frame,false,i); local nazwa_jednostki=pudelko_modul[nazwa_jednostki_fun.." 2"](frame,i); return nazwa_przestrzeni_nazw,nazwa_jednostki; elseif(co_ma_liczyc==1)then local nazwa_przestrzeni_nazw=pudelko_modul[nazwa_przestrzeni_fun.." 2"](frame,false,i); return nazwa_przestrzeni_nazw; elseif(co_ma_liczyc==2)then return pudelko_modul[nazwa_jednostki_fun.." 2"](frame,i); end; end; end; end; function p.Nazwa_przestrzeni_nazw_dodatkowe(frame,numer_jednostki) local pf=frame.getParent and frame:getParent() or {args={}}; return frame.args["nazwa przestrzeni nazw "..tostring(numer_jednostki)] or pf.args["nazwa przestrzeni nazw "..tostring(numer_jednostki)] end; function p.Nazwa_jednostki(frame,i) local pf=frame.getParent and frame:getParent() or {args={}}; local nazwa_jednostki,liczba_numer_jednostki=p.Nazwy_przestrzeni_i_jednostki_podane_o_pewnym_numerze(frame,i,2); local kod_jezyka,kod_projektu=p.Wikikody_kontenera(frame,liczba_numer_jednostki); if(nazwa_jednostki)then nazwa_jednostki=mw.text.trim(nazwa_jednostki); nazwa_jednostki=mw.ustring.gsub(nazwa_jednostki,"^:",""); nazwa_jednostki=mw.ustring.gsub(nazwa_jednostki,"^([^#]*)#(.*)$","%1"); local parametry=mw.ustring.match(nazwa_jednostki,"^.*%?([^%?]+)$"); if(parametry and mw.ustring.match(parametry,"[^=]+=[^=]*"))then nazwa_jednostki=mw.ustring.gsub(nazwa_jednostki,"^(.*)%?([^%?]+)$","%1"); end; else local nazwy_modul=require("Module:Nazwy"); nazwa_jednostki=nazwy_modul["NAZWASTRONY"]{["kod języka"]=kod_jezyka,["kod projektu"]=kod_projektu,}; end; local parametry_modul=require("Module:Parametry"); nazwa_jednostki=parametry_modul["Odstępy"]{[1]=nazwa_jednostki,[2]="tak",}; return mw.getContentLanguage():ucfirst(nazwa_jednostki); end; function p.Nazwy_przestrzeni_i_jednostki_podane_o_pewnym_numerze(frame,i,co_podac) local pf=frame.getParent and frame:getParent() or {args={}}; local numer_jednostki=i or frame.args["numer jednostki"]; local liczba_numer_jednostki=tonumber(numer_jednostki) or 0; local nazwa_jednostki; local bool_numer_jednostki=(liczba_numer_jednostki~=0); local function Nazwa_jednostki() if bool_numer_jednostki then nazwa_jednostki=frame.args["nazwa jednostki "..liczba_numer_jednostki] or ((liczba_numer_jednostki==1)and(pf.args["cel"])) or pf.args[liczba_numer_jednostki]; else nazwa_jednostki=frame.args["nazwa jednostki"] or pf.args["nazwa jednostki"]; end; return nazwa_jednostki; end; local function Nazwa_przestrzeni_nazw() local nazwa_przestrzeni_nazw=bool_numer_jednostki and (frame.args["nazwa przestrzeni nazw i"] or pf.args["nazwa przestrzeni nazw i"] or frame.args["nazwa przestrzeni nazw "..liczba_numer_jednostki] or pf.args["nazwa przestrzeni nazw "..liczba_numer_jednostki]) or frame.args["nazwa przestrzeni nazw"] or pf.args["nazwa przestrzeni nazw"]; return nazwa_przestrzeni_nazw; end; if(not co_podac)then return Nazwa_przestrzeni_nazw(),Nazwa_jednostki(),liczba_numer_jednostki; elseif(co_podac==1)then return Nazwa_przestrzeni_nazw(),liczba_numer_jednostki; elseif(co_podac==2)then return Nazwa_jednostki(),liczba_numer_jednostki; else return Nazwa_przestrzeni_nazw(),Nazwa_jednostki(),liczba_numer_jednostki; end; end; function p.Jaka_nazwa_jednostki(frame,i,jaka) local nazwa_przestrzeni_nazw,nazwa_jednostki,liczba_numer_jednostki=p.Nazwy_przestrzeni_i_jednostki_podane_o_pewnym_numerze(frame,i); nazwa_przestrzeni_nazw=nazwa_przestrzeni_nazw or p.Nazwa_przestrzeni_nazw_uzyskana_z_typu_jednostki_z_frame(frame,liczba_numer_jednostki); ---- local nazwy_modul=require("Module:Nazwy"); nazwa_przestrzeni_nazw=nazwa_przestrzeni_nazw and mw.text.trim(nazwa_przestrzeni_nazw) or nazwy_modul["NAZWAPRZESTRZENI"](); if(nazwa_jednostki)then local html_modul=require("Module:Html"); nazwa_jednostki=html_modul["NazwaStronyAdresu"](nazwa_jednostki,true); else nazwa_jednostki=nazwy_modul["NAZWASTRONY"](); end; local kod_jezyka,kod_projektu=p.Wikikody_kontenera(frame,liczba_numer_jednostki); local wiki_modul=require("Module:Wiki"); local czy_biezaca=wiki_modul["CzyBieżącaWiki"]{["kod języka"]=kod_jezyka,["kod projektu"]=kod_projektu,}; if(jaka)then if(czy_biezaca)then local tab_parametry={nazwa=nazwa_przestrzeni_nazw,}; if(jaka=="przedmiotowa")then tab_parametry["przedmiotowa"]="tak";end; nazwa_przestrzeni_nazw=nazwy_modul.Np(tab_parametry); else local tab_parametry={nazwa=nazwa_przestrzeni_nazw,["kod języka"]=kod_jezyka,["kod projektu"]=kod_projektu,}; if(jaka=="przedmiotowa")then tab_parametry["przedmiotowa"]="tak";end; nazwa_przestrzeni_nazw=nazwy_modul.NpDane(tab_parametry); end; else if(czy_biezaca)then nazwa_przestrzeni_nazw=nazwy_modul.Np{nazwa=nazwa_przestrzeni_nazw}; else nazwa_przestrzeni_nazw=nazwy_modul.NpDane{nazwa=nazwa_przestrzeni_nazw,["kod języka"]=kod_jezyka,["kod projektu"]=kod_projektu,}; end; end; if(not mw.ustring.match(nazwa_jednostki,"^:"))then if(nazwa_przestrzeni_nazw~="")then if(czy_biezaca)then local nazwy_np_modul=mw.loadData("Module:Nazwy/Np"); if(nazwa_przestrzeni_nazw==nazwy_np_modul.Template)then local nazwa_przestrzeni_nazw_d=nazwy_modul["NAZWAPRZESTRZENI"](nazwa_jednostki); if(nazwa_przestrzeni_nazw_d==nazwy_np_modul.Template)then return nazwy_modul["NAZWASTRONY"](nazwa_jednostki); end; elseif(nazwa_przestrzeni_nazw==nazwy_np_modul.Module)then local nazwa_przestrzeni_nazw_d=nazwy_modul["NAZWAPRZESTRZENI"](nazwa_jednostki); if(nazwa_przestrzeni_nazw_d==nazwy_np_modul.Module)then return nazwy_modul["NAZWASTRONY"](nazwa_jednostki); end; end; else local template_prze=nazwy_modul.NpDane{nazwa="Template",["kod języka"]=kod_jezyka,["kod projektu"]=kod_projektu,}; local module_prze=nazwy_modul.NpDane{nazwa="Module",["kod języka"]=kod_jezyka,["kod projektu"]=kod_projektu,}; if(nazwa_przestrzeni_nazw==template_prze)then local nazwa_przestrzeni_nazw_d=nazwy_modul["NAZWAPRZESTRZENI"]{[1]=nazwa_jednostki,["kod języka"]=kod_jezyka,["kod projektu"]=kod_projektu,}; if(nazwa_przestrzeni_nazw_d==template_prze)then return nazwy_modul["NAZWASTRONY"]{[1]=nazwa_jednostki,["kod języka"]=kod_jezyka,["kod projektu"]=kod_projektu,}; end; elseif(nazwa_przestrzeni_nazw==module_prze)then local nazwa_przestrzeni_nazw_d=nazwy_modul["NAZWAPRZESTRZENI"]{[1]=nazwa_jednostki,["kod języka"]=kod_jezyka,["kod projektu"]=kod_projektu,}; if(nazwa_przestrzeni_nazw_d==module_prze)then return nazwy_modul["NAZWASTRONY"]{[1]=nazwa_jednostki,["kod języka"]=kod_jezyka,["kod projektu"]=kod_projektu,}; end; end; end; local parametry_modul=require("Module:Parametry"); nazwa_jednostki=parametry_modul["Odstępy"]{[1]=nazwa_jednostki,[2]="tak",}; return mw.getContentLanguage():ucfirst(nazwa_jednostki); else return nazwy_modul["NAZWASTRONY"]{[1]=nazwa_jednostki,["kod języka"]=kod_jezyka,["kod projektu"]=kod_projektu,}; end; else return nazwy_modul["NAZWASTRONY"]{[1]=nazwa_jednostki,["kod języka"]=kod_jezyka,["kod projektu"]=kod_projektu,}; end; end; function p.Czy_przestrzen_nazw_jest_obslugiwana(frame,jakas_przestrzen_nazw,kod_jezyka,kod_projektu) local nazwy_modul=require("Module:Nazwy"); local parametry_modul=require("Module:Parametry"); local wiki_modul=require("Module:Wiki"); local czy_biezaca=wiki_modul["CzyBieżącaWiki"]{["kod języka"]=kod_jezyka,["kod projektu"]=kod_projektu,}; if(czy_biezaca)then jakas_przestrzen_nazw=nazwy_modul.Np{nazwa=jakas_przestrzen_nazw}; else jakas_przestrzen_nazw=nazwy_modul.NpDane{nazwa=jakas_przestrzen_nazw,["kod języka"]=kod_jezyka,["kod projektu"]=kod_projektu,}; end; local function nazwa_przestrzeni_nazw_fun(nazwa_przestrzeni_nazw_iter) if(czy_biezaca)then nazwa_przestrzeni_nazw_iter=nazwy_modul.Np{nazwa=nazwa_przestrzeni_nazw_iter}; else nazwa_przestrzeni_nazw_iter=nazwy_modul.NpDane{nazwa=nazwa_przestrzeni_nazw_iter,["kod języka"]=kod_jezyka,["kod projektu"]=kod_projektu,}; end; if(jakas_przestrzen_nazw==nazwa_przestrzeni_nazw_iter)then return true; end; return false; end; for licznik,nazwa_przestrzeni_nazw in pairs(frame.args)do if(type(licznik)=="number")then local nazwa_przestrzeni_nazw_element,klucze_element=mw.ustring.match(nazwa_przestrzeni_nazw,"^%s*([%w%s]*)%s*:%s*(.-)%s*"); if(nazwa_przestrzeni_nazw_element and klucze_element)then local tab_klucze=mw.text.split(klucze_element,"%s*,%s*",false); local wiki_modul=require("Module:Wiki"); for _,klucz_element in ipairs(tab_klucze)do local kod_jezyka_obslugiwane,kod_projektu_obslugiwane=wiki_modul.KluczProjektu(klucz_element); if(kod_jezyka_obslugiwane==kod_jezyka and kod_projektu_obslugiwane==kod_projektu)then local wynik=nazwa_przestrzeni_nazw_fun(nazwa_przestrzeni_nazw_element); if(wynik)then return true;end; end; end; else local wynik=nazwa_przestrzeni_nazw_fun(nazwa_przestrzeni_nazw); if(wynik)then return true;end; end; end; end; return false; end; function p.Analiza_interwiki_czy_projekt_aktualny(frame,czy_jezyk,czy_projekt) local parametry_modul=require("Module:Parametry"); local p=parametry_modul.PobierzFrameEwentualnieParent(frame); local pudelko_modul=require("Module:Pudełko"); local wiki_modul=require("Module:Wiki"); local jezyk_biezacy=czy_jezyk and pudelko_modul["Kod języka tego projektu"](); local projekt_biezacy=czy_projekt and pudelko_modul["Kod projektu tego projektu"](); for i,_ in pairs(p.args)do if(type(i)=="number")then local klucz_projektu=pudelko_modul["Klucz projektu"](frame,i); local kod_jezyka=pudelko_modul["Kod języka"](frame,i); local kod_projektu=pudelko_modul["kod projektu"](frame,i); local jezyk,projekt=wiki_modul.KodyWiki(klucz_projektu,kod_jezyka,kod_projektu); if((czy_jezyk and (jezyk~=jezyk_biezacy))or(czy_projekt and(projekt~=projekt_biezacy)))then return "tak"; end; end; end; return; end; return p; 8pw0kyumpmlzer0zw7uolr009h3yl3k 540393 540391 2026-04-23T14:59:25Z Persino 2851 540393 Scribunto text/plain local p={}; function p.Nazwa_strony_bazowej_projektu_z_wikidanych(kod_jezyka,kod_projektu) local strona=require("Module:Pudełko")["Strona główna tego projektu"](); local odpowiednik_strony=require("Module:Wiki").WikidaneOdpowiednikStrony{["nazwa strony"]=strona,["kod języka"]=kod_jezyka,["kod projektu"]=kod_projektu}; if(odpowiednik_strony)then local nazwy_modul=require("Module:Nazwy"); return nazwy_modul["PEŁNANAZWASTRONY"]{[1]=odpowiednik_strony,["kod języka"]=kod_jezyka,["kod projektu"]=kod_projektu,}; else local pudelko_modul=require("Module:Pudełko"); if((kod_jezyka==pudelko_modul["Kod języka tego projektu"]())and(kod_projektu==pudelko_modul["Kod projektu tego projektu"]()))then return strona; else local wiki_interwiki_modul=mw.loadData("Module:Wiki/interwiki"); local czy_w_wikidanych=wiki_interwiki_modul.tablica_kody_projektu_wikidane.lingwistyczne[kod_projektu] or wiki_interwiki_modul.tablica_kody_projektu_wikidane.specjalistyczne[kod_projektu]; return czy_w_wikidanych and "Main Page" or nil; end; end; end; function p.Nazwa_strony_bazowej_dla_dzieci_z_wikidanych(kod_jezyka) local strona=require("Module:Pudełko")["Strona główna dla dzieci tego projektu"](); local pudelko_modul=require("Module:Pudełko"); local kod_jezyka_tego_projektu=pudelko_modul["Kod języka tego projektu"](); if(kod_jezyka==kod_jezyka_tego_projektu)then return strona;end; local kod_projektu_tego_projektu=pudelko_modul["Kod projektu tego projektu"](); local odpowiednik_strony=require("Module:Wiki").WikidaneOdpowiednikStrony{["nazwa strony"]=strona,["kod języka"]=kod_jezyka,["kod projektu"]=kod_projektu_tego_projektu}; if(odpowiednik_strony)then local nazwy_modul=require("Module:Nazwy"); return nazwy_modul["PEŁNANAZWASTRONY"]{[1]=odpowiednik_strony,["kod języka"]=kod_jezyka,["kod projektu"]=kod_projektu_tego_projektu,}; else return "Wikijunior"; end; end; function p.Nazwa_strony_bazowej_projektu_ze_zmiennej(frame,i,kod_jezyka,kod_projektu) local pf=frame.getParent and frame:getParent() or {args={}}; local strona_glowna_projektu; if(i~=0)then local pudelko_modul=require("Module:Pudełko"); local kod_jezyka_tego_projektu=pudelko_modul["Kod języka tego projektu"](); local kod_projektu_tego_projektu=pudelko_modul["Kod projektu tego projektu"](); if(kod_jezyka==kod_jezyka_tego_projektu)and(kod_projektu==kod_projektu_tego_projektu)then strona_glowna_projektu=frame.args["strona główna projektu"] or pf.args["strona główna projektu"] else strona_glowna_projektu=(frame.args["strona główna projektu "..i] or pf.args["strona główna projektu "..i]) end; else strona_glowna_projektu=frame.args["strona główna projektu"] or pf.args["strona główna projektu"] end; local parametry_modul=require("Module:Parametry"); return (parametry_modul.CzyTak(strona_glowna_projektu))and require("Module:Nazwy")["PEŁNANAZWASTRONY"]{[1]=strona_glowna_projektu,["kod języka"]=kod_jezyka,["kod projektu"]=kod_projektu,} or (strona_glowna_projektu and "" or nil); end; function p.Nazwa_strony_bazowej_dla_dzieci_ze_zmiennej(frame,i,kod_jezyka) local pf=frame.getParent and frame:getParent() or {args={}}; local pudelko_modul=require("Module:Pudełko"); local strona_glowna_dla_dzieci; if(i~=0)then local kod_jezyka_tego_projektu=pudelko_modul["Kod języka tego projektu"](); if(kod_jezyka==kod_jezyka_tego_projektu)then strona_glowna_dla_dzieci=frame.args["strona główna dla dzieci"] or pf.args["strona główna dla dzieci"] else strona_glowna_dla_dzieci=(frame.args["strona główna dla dzieci "..i] or pf.args["strona główna dla dzieci "..i]) end; else strona_glowna_dla_dzieci=frame.args["strona główna dla dzieci"] or pf.args["strona główna dla dzieci"] end; local kod_projektu_tego_projektu=pudelko_modul["Kod projektu tego projektu"](); local parametry_modul=require("Module:Parametry"); return (parametry_modul.CzyTak(strona_glowna_dla_dzieci))and require("Module:Nazwy")["PEŁNANAZWASTRONY"]{[1]=strona_glowna_dla_dzieci,["kod języka"]=kod_jezyka,["kod projektu"]=kod_projektu_tego_projektu,} or (strona_glowna_dla_dzieci and "" or nil); end; function p.Normalna_przedmiotowa_lub_dyskusji_nazwa_przestrzeni_nazw(nazwa_przestrzeni_nazw, normmalna_przedmiotwa_dyskusji,kod_jezyka,kod_projektu) local nazwa_przestrzeni_nazw_blad; local wiki_modul=require("Module:Wiki"); local nazwy_modul=require("Module:Nazwy"); local czy_biezaca=wiki_modul["CzyBieżącaWiki"]{["kod języka"]=kod_jezyka,["kod projektu"]=kod_projektu,}; if(normmalna_przedmiotwa_dyskusji==0)then if(czy_biezaca)then nazwa_przestrzeni_nazw_blad=nazwy_modul.Np{nazwa=nazwa_przestrzeni_nazw,["kanoniczna"]="tak",["nazwij projektem"]="tak",["nazwij dyskusją projektu"]="tak",["istnieje"]="tak",["wynik błędu nietekstowy"]="tak",}; else nazwa_przestrzeni_nazw_blad=nazwy_modul.NpDane{nazwa=nazwa_przestrzeni_nazw,["kanoniczna"]="tak",["nazwij projektem"]="tak",["nazwij dyskusją projektu"]="tak",["kod języka"]=kod_jezyka,["kod projektu"]=kod_projektu,["istnieje"]="tak",["wynik błędu nietekstowy"]="tak",}; end; elseif(normmalna_przedmiotwa_dyskusji==1)then if(czy_biezaca)then nazwa_przestrzeni_nazw_blad=nazwy_modul.Np{nazwa=nazwa_przestrzeni_nazw, przedmiotowa="tak",["kanoniczna"]="tak",["nazwij projektem"]="tak",["nazwij dyskusją projektu"]="tak",["istnieje"]="tak",["wynik błędu nietekstowy"]="tak",}; else nazwa_przestrzeni_nazw_blad=nazwy_modul.NpDane{nazwa=nazwa_przestrzeni_nazw, przedmiotowa="tak",["kanoniczna"]="tak",["nazwij projektem"]="tak",["nazwij dyskusją projektu"]="tak",["kod języka"]=kod_jezyka,["kod projektu"]=kod_projektu,["istnieje"]="tak",["wynik błędu nietekstowy"]="tak",}; end; elseif(normmalna_przedmiotwa_dyskusji==2)then if(czy_biezaca)then nazwa_przestrzeni_nazw_blad=nazwy_modul.Np{nazwa=nazwa_przestrzeni_nazw, dyskusja="tak",["kanoniczna"]="tak",["nazwij projektem"]="tak",["nazwij dyskusją projektu"]="tak",["istnieje"]="tak",["wynik błędu nietekstowy"]="tak",}; else nazwa_przestrzeni_nazw_blad=nazwy_modul.NpDane{nazwa=nazwa_przestrzeni_nazw, dyskusja="tak",["kanoniczna"]="tak",["nazwij projektem"]="tak",["nazwij dyskusją projektu"]="tak",["kod języka"]=kod_jezyka,["kod projektu"]=kod_projektu,["istnieje"]="tak",["wynik błędu nietekstowy"]="tak",}; end; else if(czy_biezaca)then nazwa_przestrzeni_nazw_blad=nazwy_modul.Np{nazwa=nazwa_przestrzeni_nazw,["kanoniczna"]="tak",["nazwij projektem"]="tak",["nazwij dyskusją projektu"]="tak",["istnieje"]="tak",["wynik błędu nietekstowy"]="tak",}; else nazwa_przestrzeni_nazw_blad=nazwy_modul.NpDane{nazwa=nazwa_przestrzeni_nazw,["kanoniczna"]="tak",["nazwij projektem"]="tak",["nazwij dyskusją projektu"]="tak",["kod języka"]=kod_jezyka,["kod projektu"]=kod_projektu,["istnieje"]="tak",["wynik błędu nietekstowy"]="tak",}; end; end; return nazwa_przestrzeni_nazw_blad end; function p.Nazwa_przestrzeni_nazw(frame,kod_liczbowy_przestrzeni_nazw,czy_uwzglednic_alternatywna_nazwe,numer_jednostki) local pf=frame.getParent and frame:getParent() or {args={}}; local nazwa_przestrzeni_nazw=p.Nazwy_przestrzeni_i_jednostki_podane_o_pewnym_numerze(frame,numer_jednostki,1) or p.Nazwa_przestrzeni_nazw_uzyskana_z_typu_jednostki_z_frame(frame,numer_jednostki); local nazwy_modul=require("Module:Nazwy"); local wiki_modul=require("Module:Wiki"); local kod_jezyka,kod_projektu=p.Wikikody_kontenera(frame,numer_jednostki); local czy_biezaca_wiki=wiki_modul["CzyBieżącaWiki"]{["kod języka"]=kod_jezyka,["kod projektu"]=kod_projektu,}; local czy_blad_nazwy_przestrzeni_nazw; local typ; if(kod_liczbowy_przestrzeni_nazw==1)then typ="przedmiotowa"; if(czy_biezaca_wiki)then czy_blad_nazwy_przestrzeni_nazw=(not nazwa_przestrzeni_nazw)and nazwy_modul["PRZEDMIOTOWAPRZESTRZEŃ"]() or nazwy_modul.Np{nazwa=nazwa_przestrzeni_nazw,przedmiotowa="tak",["istnieje"]="tak",["wynik błędu nietekstowy"]="tak",}; else czy_blad_nazwy_przestrzeni_nazw=(not nazwa_przestrzeni_nazw)and nazwy_modul["PRZEDMIOTOWAPRZESTRZEŃ"]{["kod języka"]=kod_jezyka,["kod projektu"]=kod_projektu,} or nazwy_modul.NpDane{nazwa=nazwa_przestrzeni_nazw,przedmiotowa="tak",["kod języka"]=kod_jezyka,["kod projektu"]=kod_projektu,["istnieje"]="tak",["wynik błędu nietekstowy"]="tak",}; end; elseif(kod_liczbowy_przestrzeni_nazw==2)then if(czy_biezaca_wiki)then typ="dyskusja"; czy_blad_nazwy_przestrzeni_nazw=(not nazwa_przestrzeni_nazw)and nazwy_modul["PRZESTRZEŃDYSKUSJI"]() or nazwy_modul.Np{nazwa=nazwa_przestrzeni_nazw,dyskusja="tak",["istnieje"]="tak",["wynik błędu nietekstowy"]="tak",}; else czy_blad_nazwy_przestrzeni_nazw=(not nazwa_przestrzeni_nazw)and nazwy_modul["PRZESTRZEŃDYSKUSJI"]{["kod języka"]=kod_jezyka,["kod projektu"]=kod_projektu,} or nazwy_modul.NpDane{nazwa=nazwa_przestrzeni_nazw,dyskusja="tak",["kod języka"]=kod_jezyka,["kod projektu"]=kod_projektu,["istnieje"]="tak",["wynik błędu nietekstowy"]="tak",}; end; else if(czy_biezaca_wiki)then czy_blad_nazwy_przestrzeni_nazw=(not nazwa_przestrzeni_nazw)and nazwy_modul["NAZWAPRZESTRZENI"]() or nazwy_modul.Np{nazwa=nazwa_przestrzeni_nazw,["istnieje"]="tak",["wynik błędu nietekstowy"]="tak",}; else czy_blad_nazwy_przestrzeni_nazw=(not nazwa_przestrzeni_nazw)and nazwy_modul["NAZWAPRZESTRZENI"]{["kod języka"]=kod_jezyka,["kod projektu"]=kod_projektu,} or nazwy_modul.NpDane{nazwa=nazwa_przestrzeni_nazw,["kod języka"]=kod_jezyka, ["kod projektu"]=kod_projektu,["istnieje"]="tak",["wynik błędu nietekstowy"]="tak",}; end; end; if(czy_blad_nazwy_przestrzeni_nazw)then return czy_blad_nazwy_przestrzeni_nazw; else if(((czy_uwzglednic_alternatywna_nazwe==nil)and true or czy_uwzglednic_alternatywna_nazwe) and frame.args[1])then local nazwa_przestrzeni_nazw_alternatywnej=mw.text.trim(frame.args[1]); if(mw.ustring.match(nazwa_przestrzeni_nazw_alternatywnej,"^[%w%s_]*$"))then local czy_blad_nazwa_przestrzeni_nazw_alternatywnej; if(czy_biezaca_wiki)then local tab_parametry={nazwa=nazwa_przestrzeni_nazw_alternatywnej,["istnieje"]="tak",["wynik błędu nietekstowy"]="tak",}; if(typ)then tab_parametry[typ]="tak";end; czy_blad_nazwa_przestrzeni_nazw_alternatywnej=nazwy_modul.Np(tab_parametry); else local tab_parametry={nazwa=nazwa_przestrzeni_nazw_alternatywnej,["kod języka"]=kod_jezyka,["kod projektu"]=kod_projektu,["istnieje"]="tak",["wynik błędu nietekstowy"]="tak",}; if(typ)then tab_parametry[typ]="tak";end; czy_blad_nazwa_przestrzeni_nazw_alternatywnej=nazwy_modul.NpDane(tab_parametry); end; return czy_blad_nazwa_przestrzeni_nazw_alternatywnej or "(błąd)"; else return "(błąd)"; end; else local parametry_modul=require("Module:Parametry"); nazwa_przestrzeni_nazw=parametry_modul["Odstępy"]{[1]=nazwa_przestrzeni_nazw,[2]="tak",}; if(mw.ustring.match(nazwa_przestrzeni_nazw,"^[%w%s_]*$"))then return nazwa_przestrzeni_nazw; else return "(błąd)"; end; end; end; end; function p.Nazwa_przestrzeni_nazw_2(frame,czy_uwzglednic_alternatywna_nazwe,i) local nazwa_przestrzeni_nazw,nazwa_jednostki,liczba_numer_jednostki=p.Nazwy_przestrzeni_i_jednostki_podane_o_pewnym_numerze(frame,i); nazwa_przestrzeni_nazw=nazwa_przestrzeni_nazw or p.Nazwa_przestrzeni_nazw_uzyskana_z_typu_jednostki_z_frame(frame,liczba_numer_jednostki); local nazwy_modul=require("Module:Nazwy"); local kod_jezyka,kod_projektu=p.Wikikody_kontenera(frame,liczba_numer_jednostki); local wiki_modul=require("Module:Wiki"); local czy_biezaca_wiki=wiki_modul["CzyBieżącaWiki"]{["kod języka"]=kod_jezyka,["kod projektu"]=kod_projektu,}; local nazwa_przestrzeni_nazw_blad; local parametry_modul=require("Module:Parametry"); if(czy_biezaca_wiki)then nazwa_przestrzeni_nazw=nazwa_przestrzeni_nazw and mw.text.trim(nazwa_przestrzeni_nazw) or nazwy_modul["NAZWAPRZESTRZENI"](); nazwa_przestrzeni_nazw_blad=require("Module:Nazwy").Np{nazwa=nazwa_przestrzeni_nazw,["istnieje"]="tak",["wynik błędu nietekstowy"]="tak",}; if(nazwa_jednostki)then nazwa_jednostki=parametry_modul["Odstępy"]{[1]=nazwa_jednostki,[2]="tak",}; nazwa_jednostki=mw.ustring.gsub(nazwa_jednostki,"^([^#]*)#(.*)$","%1"); local parametry=mw.ustring.match(nazwa_jednostki,"^.*%?([^%?]+)$"); if(parametry and mw.ustring.match(parametry,"[^=]+=[^=]*"))then nazwa_jednostki=mw.ustring.gsub(nazwa_jednostki,"^(.*)%?([^%?]+)$","%1"); end; else nazwa_jednostki=nazwy_modul["NAZWASTRONY"](); end; else nazwa_przestrzeni_nazw=nazwa_przestrzeni_nazw and mw.text.trim(nazwa_przestrzeni_nazw) or nazwy_modul["NAZWAPRZESTRZENI"]{["kod języka"]=kod_jezyka,["kod projektu"]=kod_projektu,}; nazwa_przestrzeni_nazw_blad=require("Module:Nazwy").NpDane{nazwa=nazwa_przestrzeni_nazw,["kod języka"]=kod_jezyka,["kod projektu"]=kod_projektu,["istnieje"]="tak",["wynik błędu nietekstowy"]="tak",}; if(nazwa_jednostki)then local html_modul=require("Module:Html"); nazwa_jednostki=html_modul["NazwaStronyAdresu"](nazwa_jednostki,true); else nazwa_jednostki=nazwy_modul["NAZWASTRONY"]{["kod języka"]=kod_jezyka,["kod projektu"]=kod_projektu,}; end; end; nazwa_przestrzeni_nazw=nazwa_przestrzeni_nazw_blad or nazwa_przestrzeni_nazw; if(not mw.ustring.match(nazwa_jednostki,"^:"))then if(nazwa_przestrzeni_nazw~="")then if(czy_biezaca_wiki)then local nazwy_np_modul=mw.loadData("Module:Nazwy/Np"); if(nazwa_przestrzeni_nazw==nazwy_np_modul.Template)then local nazwa_przestrzeni_nazw_d=require("Module:Nazwy")["NAZWAPRZESTRZENI"](nazwa_jednostki); if(nazwa_przestrzeni_nazw_d==nazwy_np_modul.Template)then nazwa_przestrzeni_nazw=nazwy_np_modul.Template; end; elseif(nazwa_przestrzeni_nazw==nazwy_np_modul.Module)then local nazwa_przestrzeni_nazw_d=require("Module:Nazwy")["NAZWAPRZESTRZENI"](nazwa_jednostki); if(nazwa_przestrzeni_nazw_d==nazwy_np_modul.Module)then nazwa_przestrzeni_nazw=nazwy_np_modul.Module; end; end; else local template_prze=nazwy_modul.NpDane{nazwa="Template",["kod języka"]=kod_jezyka,["kod projektu"]=kod_projektu,}; local module_prze=nazwy_modul.NpDane{nazwa="Module",["kod języka"]=kod_jezyka,["kod projektu"]=kod_projektu,}; if(nazwa_przestrzeni_nazw==template_prze)then local nazwa_przestrzeni_nazw_d=nazwy_modul["NAZWAPRZESTRZENI"]{[1]=nazwa_jednostki,["kod języka"]=kod_jezyka,["kod projektu"]=kod_projektu,}; if(nazwa_przestrzeni_nazw_d==template_prze)then nazwa_przestrzeni_nazw=template_prze; end; elseif(nazwa_przestrzeni_nazw==module_prze)then local nazwa_przestrzeni_nazw_d=nazwy_modul["NAZWAPRZESTRZENI"]{[1]=nazwa_jednostki,["kod języka"]=kod_jezyka,["kod projektu"]=kod_projektu,}; if(nazwa_przestrzeni_nazw_d==module_prze)then nazwa_przestrzeni_nazw=module_prze; end; end; end; if(not nazwa_przestrzeni_nazw_blad)then if(((czy_uwzglednic_alternatywna_nazwe==nil)and true or czy_uwzglednic_alternatywna_nazwe) and frame.args[1])then local wytrimowana_nazwa_przestrzeni_nazw=mw.text.trim(frame.args[1]); if(mw.ustring.match(wytrimowana_nazwa_przestrzeni_nazw,"^[%w%s_]*$"))then if(czy_biezaca_wiki)then local nazwy_modul=require("Module:Nazwy"); local czy_blad_nazwy_przestrzeni_nazw=nazwy_modul.Np{nazwa=wytrimowana_nazwa_przestrzeni_nazw,["istnieje"]="tak",["wynik błędu nietekstowy"]="tak",} return czy_blad_nazwy_przestrzeni_nazw or "(błąd)"; else local nazwy_modul=require("Module:Nazwy"); local nazwa_przestrzeni_nazw_blad2=nazwy_modul.NpDane{nazwa=wytrimowana_nazwa_przestrzeni_nazw,["kod języka"]=kod_jezyka,["kod projektu"]=kod_projektu,["istnieje"]="tak",["wynik błędu nietekstowy"]="tak",}; return nazwa_przestrzeni_nazw_blad2 or "(błąd)"; end; else return "(błąd)"; end; else local wytrimowana_nazwa_przestrzeni_nazw=mw.text.trim(nazwa_przestrzeni_nazw); if(mw.ustring.match(wytrimowana_nazwa_przestrzeni_nazw,"^[%w%s_]*$"))then return wytrimowana_nazwa_przestrzeni_nazw; else return "(błąd)"; end; end; else return nazwa_przestrzeni_nazw; end; else return require("Module:Nazwy")["NAZWAPRZESTRZENI"]{[1]=nazwa_jednostki,["kod języka"]=kod_jezyka,["kod projektu"]=kod_projektu,}; end; else return require("Module:Nazwy")["NAZWAPRZESTRZENI"]{[1]=nazwa_jednostki,["kod języka"]=kod_jezyka,["kod projektu"]=kod_projektu,}; end; end; function p.Nazwa_przestrzeni_nazw_przedmiotowa_dyskusji_2(frame,czy_uwzglednic_alternatywna_nazwe,i,typ) local numer_jednostki=i or frame.args["numer jednostki"]; local liczba_numer_jednostki=((numer_jednostki)and(tonumber(numer_jednostki))or 0); local pudelko_modul=require("Module:Pudełko"); local tab_nazwa={ ["przedmiotowa"]="Nazwa przedmiotowej przestrzeni nazw", ["dyskusja"]="Nazwa przestrzeni nazw", }; local nazwa_przestrzeni_nazw=pudelko_modul[tab_nazwa[typ]](frame,czy_uwzglednic_alternatywna_nazwe,liczba_numer_jednostki); local nazwy_modul=require("Module:Nazwy"); if(nazwa_przestrzeni_nazw=="")then local nazwa_jednostki=pudelko_modul["Nazwa jednostki"](frame,liczba_numer_jednostki); local kod_jezyka,kod_projektu=p.Wikikody_kontenera(frame,liczba_numer_jednostki); local tab_nazwa={ ["przedmiotowa"]="PRZEDMIOTOWAPRZESTRZEŃ", ["dyskusja"]="PRZESTRZEŃDYSKUSJI", }; nazwa_przestrzeni_nazw=nazwy_modul[tab_nazwa[typ]]{nazwa=nazwa_jednostki,}; if(typ=="dyskusja")then local wiki_modul=require("Module:Wiki"); local czy_biezaca=wiki_modul["CzyBieżącaWiki"]{["kod języka"]=kod_jezyka,["kod projektu"]=kod_projektu,}; if(czy_biezaca)then nazwa_przestrzeni_nazw=nazwy_modul.Np{[typ]="tak",nazwa=nazwa_przestrzeni_nazw}; else nazwa_przestrzeni_nazw=nazwy_modul.NpDane{[typ]="tak",nazwa=nazwa_przestrzeni_nazw,["kod języka"]=kod_jezyka,["kod projektu"]=kod_projektu,}; end; return nazwa_przestrzeni_nazw; else return nazwa_przestrzeni_nazw; end; end; return nazwa_przestrzeni_nazw; end; function p.Kod_jezyka(frame,i,wartosc_domyslna) local pudelko_modul=require("Module:Pudełko"); if(not i)then return pudelko_modul["Kod języka tego projektu"]();end; local pf=frame.getParent and frame:getParent() or {args={}}; if(i==0)then return pudelko_modul["Kod języka tego projektu"](); elseif(i==1)then local parametry_modul=require("Module:Parametry"); local kod_jezyka=frame.args["kod języka"] or frame.args["kod języka 1"] or pf.args["kod języka"] or pf.args["kod języka 1"] return ((kod_jezyka)and(kod_jezyka~=""))and mw.text.trim(kod_jezyka) or ((parametry_modul.CzyTak(wartosc_domyslna))and wartosc_domyslna or nil); elseif(i>1)then local parametry_modul=require("Module:Parametry"); local kod_jezyka=frame.args["kod języka "..i] or pf.args["kod języka "..i] return ((kod_jezyka)and(kod_jezyka~=""))and mw.text.trim(kod_jezyka) or ((parametry_modul.CzyTak(wartosc_domyslna))and wartosc_domyslna or nil); end; end function p.Kod_projektu(frame,i,wartosc_domyslna) local pudelko_modul=require("Module:Pudełko"); if(not i)then return pudelko_modul["Kod projektu tego projektu"]();end; local pf=frame.getParent and frame:getParent() or {args={}}; if(i==0)then return pudelko_modul["Kod projektu tego projektu"](); elseif(i==1)then local parametry_modul=require("Module:Parametry"); local kod_projektu=frame.args["kod projektu"] or frame.args["kod projektu 1"] or pf.args["kod projektu"] or pf.args["kod projektu 1"] return ((kod_projektu)and(kod_projektu~=""))and mw.text.trim(kod_projektu) or ((parametry_modul.CzyTak(wartosc_domyslna))and wartosc_domyslna or nil); elseif(i>1)then local parametry_modul=require("Module:Parametry"); local kod_projektu=frame.args["kod projektu "..i] or pf.args["kod projektu "..i] return ((kod_projektu)and(kod_projektu~=""))and mw.text.trim(kod_projektu) or ((parametry_modul.CzyTak(wartosc_domyslna))and wartosc_domyslna or nil); end; end function p.Klucz_projektu(frame,i,wartosc_domyslna_jezyka,wartosc_domyslna_projektu) local pf=frame.getParent and frame:getParent() or {args={}}; local klucz_projektu; local function domyslne_klucz(klucz_projektu) local parametry_modul=require("Module:Parametry"); return ((klucz_projektu)and(klucz_projektu~=""))and mw.text.trim(klucz_projektu)or((parametry_modul.CzyTak(wartosc_domyslna_jezyka)and(parametry_modul.CzyTak(wartosc_domyslna_projektu)))and (wartosc_domyslna_jezyka..":" ..wartosc_domyslna_projektu)or(parametry_modul.CzyTak(wartosc_domyslna_jezyka) and wartosc_domyslna_jezyka or (parametry_modul.CzyTak(wartosc_domyslna_projektu) and wartosc_domyslna_projektu or nil))); end; if(i==0)then return nil; elseif(i==1)then local klucz_projektu=frame.args["klucz projektu"] or frame.args["klucz projektu 1"] or pf.args["klucz projektu"] or pf.args["klucz projektu 1"]; return domyslne_klucz(klucz_projektu); elseif(i>1)then local klucz_projektu=frame.args["klucz projektu "..i] or pf.args["klucz projektu "..i]; return domyslne_klucz(klucz_projektu); end; end; function p.Wikikody_kontenera(frame,i,wartosc_domyslna_jezyka,wartosc_domyslna_projektu) local wiki_modul=require("Module:Wiki"); local kod_jezyka,kod_projektu=wiki_modul.KodyWiki(p.Klucz_projektu(frame,i,wartosc_domyslna_jezyka,wartosc_domyslna_projektu),p.Kod_jezyka(frame,i,wartosc_domyslna_jezyka),p.Kod_projektu(frame,i,wartosc_domyslna_projektu)); return kod_jezyka,kod_projektu; end; function p.Nazwa_przestrzeni_nazw_od_typu_jednostki(typ,args,bez_analizy) if(not bez_analizy)then local parametry_modul=require("Module:Parametry"); if((((not parametry_modul.CzyTak(args["obsługiwane jednostki jako nieopisowe strony"]))and((typ=="artykuł")or(typ=="podręcznik")))or (typ=="artykuł")))then return ""; elseif(((not parametry_modul.CzyTak(args["obsługiwane jednostki jako nieopisowe strony"]))and((typ=="artykuł dla dzieci")or(typ=="podręcznik dla dzieci")))or(typ=="artykuł dla dzieci"))then return "Wikijunior"; elseif((not parametry_modul.CzyTak(args["obsługiwane brudnopisy jako normalne strony"])) and(((not parametry_modul.CzyTak(args["obsługiwane jednostki jako nieopisowe strony"]))and(parametry_modul.CzyTak(args["obsługiwane jednostki brudnopisu projektu"])and (typ=="podręcznik brudnopisu projektu" or typ=="artykuł brudnopisu projektu")or (typ=="jednostka brudnopisu projektu")) or (typ=="strona brudnopisu projektu"))or(typ=="strona projektu"))or (typ=="strona projektu"))then return "Project"; elseif((parametry_modul.CzyTak(args["obsługiwane strony jako niebrudnopisowe jednostki programowe"]))and (typ=="strona szablonu") or(not parametry_modul.CzyTak(args["obsługiwane brudnopisy jako normalne strony"]) and((not parametry_modul.CzyTak(args["obsługiwane opisy jako strony jednostek programowych"]) and not parametry_modul.CzyTak(args["obsługiwane jednostki jako nieopisowe strony"]) and not parametry_modul.CzyTak(args["obsługiwane nieudokumentowane szablony jako szablony"])) and((typ=="strona brudnopisu szablonu")or(typ=="strona brudnopisu opisu szablonu"))or(typ=="strona brudnopisu szablonu")) or((not parametry_modul.CzyTak(args["obsługiwane opisy jako strony jednostek programowych"]) and not parametry_modul.CzyTak(args["obsługiwane jednostki jako nieopisowe strony"]) and not parametry_modul.CzyTak(args["obsługiwane nieudokumentowane szablony jako szablony"])) and((typ=="strona szablonu")or(typ=="strona opisu szablonu"))or(typ=="strona szablonu"))))then return "Template"; elseif((parametry_modul.CzyTak(args["obsługiwane strony jako niebrudnopisowe jednostki programowe"]))and (typ=="strona modułu") or(not parametry_modul.CzyTak(args["obsługiwane brudnopisy jako normalne strony"]) and((not parametry_modul.CzyTak(args["obsługiwane opisy jako strony jednostek programowych"]) and not parametry_modul.CzyTak(args["obsługiwane jednostki jako nieopisowe strony"])) and((typ=="strona brudnopisu modułu")or(typ=="strona brudnopisu opisu modułu"))or(typ=="strona brudnopisu modułu")) or((not parametry_modul.CzyTak(args["obsługiwane opisy jako strony jednostek programowych"]) and not parametry_modul.CzyTak(args["obsługiwane jednostki jako nieopisowe strony"])) and((typ=="strona modułu")or(typ=="strona opisu modułu"))or(typ=="strona modułu"))))then return "Module"; elseif(not parametry_modul.CzyTak(args["obsługiwane jednostki użytkownika jako normalne strony"]) and(((not parametry_modul.CzyTak(args["obsługiwane jednostki jako nieopisowe strony"]))and(parametry_modul.CzyTak(args["obsługiwane jednostki użytkownika"])and (typ=="podręcznik użytkownika" or typ=="artykuł użytkownika") or (typ=="jednostka użytkownika")) or (typ=="strona użytkownika"))or(typ=="strona główna użytkownika"))or(typ=="strona użytkownika"))then return "User"; elseif(typ=="strona pliku")then return "File"; elseif(typ=="strona kategorii")then return "Category"; elseif(typ=="strona pomocy")then return "Help"; elseif(typ=="strona komunikatu")then return "MediaWiki"; elseif(typ=="strona specjalna")then return "Special"; elseif(typ=="strona gadżetu")then return "Gadget"; elseif(typ=="strona główna projektu")then return "Project"; elseif(typ=="strona główna dla dzieci")then return "Wikijunior"; end; return; end; if(typ)then if((typ=="artykuł")or(typ=="podręcznik"))then return ""; elseif((typ=="artykuł dla dzieci")or(typ=="podręcznik dla dzieci"))then return "Wikijunior"; elseif((typ=="podręcznik brudnopisu projektu")or(typ=="artykuł brudnopisu projektu")or(typ=="jednostka brudnopisu projektu")or(typ=="strona brudnopisu projektu")or(typ=="strona projektu"))then return "Project"; elseif((typ=="strona szablonu")or(typ=="strona opisu szablonu")or(typ=="strona brudnopisu szablonu")or(typ=="strona brudnopisu opisu szablonu"))then return "Template"; elseif((typ=="strona modułu")or(typ=="strona opisu modułu")or(typ=="strona brudnopisu modułu")or(typ=="strona brudnopisu opisu modułu"))then return "Module"; elseif((typ=="podręcznik użytkownika")or(typ=="artykuł użytkownika")or(typ=="jednostka użytkownika")or(typ=="strona użytkownika")or(typ=="strona główna użytkownika"))then return "User"; elseif(typ=="strona pliku")then return "File"; elseif(typ=="strona kategorii")then return "Category"; elseif(typ=="strona pomocy")then return "Help"; elseif(typ=="strona komunikatu")then return "MediaWiki"; elseif(typ=="strona specjalna")then return "Special"; elseif(typ=="strona gadżetu")then return "Gadget"; elseif(typ=="strona główna projektu")then return "Project"; elseif(typ=="strona główna dla dzieci")then return "Wikijunior"; end; end; end; function p.Typ_jednostki_uzyskany_z_frame(frame,i) local numer_jednostki=i or frame.args["numer jednostki"]; local liczba_numer_jednostki=tonumber(numer_jednostki) or 0; local pf=frame.getParent and frame:getParent() or {args={}}; local typ; if liczba_numer_jednostki~=0 then typ=liczba_numer_jednostki and( (frame.args["typ jednostki "..liczba_numer_jednostki] or frame.args["typ jednostki i"]) or (pf.args["typ jednostki "..liczba_numer_jednostki] or pf.args["typ jednostki i"]) ); if(not typ)then local nazwa_jednostki=p.Nazwy_przestrzeni_i_jednostki_podane_o_pewnym_numerze(frame,liczba_numer_jednostki,2); if(nazwa_jednostki)then if(not mw.ustring.match(mw.text.trim(nazwa_jednostki),"^:"))then local nazwa_przesrzeni_nazw=p.Nazwy_przestrzeni_i_jednostki_podane_o_pewnym_numerze(frame,liczba_numer_jednostki,1); if(not nazwa_przesrzeni_nazw)then typ=frame.args["typ jednostki"] or pf.args["typ jednostki"]; end; end; end; end; else typ=frame.args["typ jednostki"] or pf.args["typ jednostki"]; end; return typ,liczba_numer_jednostki; end; function p.Czy_dyskusja_typu_jednostki_z_frame_od_dyskusja_typu_jednostki(frame,i) local numer_jednostki=i or frame.args["numer jednostki"]; local liczba_numer_jednostki=((numer_jednostki)and(tonumber(numer_jednostki))or 0); local pf=frame:getParent() or {args={},}; local function FuncTemp(liczba_numer_jednostki) local dyskusja_parametr="dyskusja typu jednostki"; if(liczba_numer_jednostki==0)then return frame.args[dyskusja_parametr] or pf.args[dyskusja_parametr]; else return ((frame.args[dyskusja_parametr.." "..liczba_numer_jednostki] or pf.args[dyskusja_parametr.." "..liczba_numer_jednostki]) or (frame.args[dyskusja_parametr.." i"] or pf.args[dyskusja_parametr.." i"]) or(frame.args[dyskusja_parametr] or pf.args[dyskusja_parametr])); end; end; local czy_dyskusja=FuncTemp(liczba_numer_jednostki); local parametry_modul=require("Module:Parametry"); local czy_dyskusja=parametry_modul.CzyTak(czy_dyskusja); return czy_dyskusja; end; function p.Nazwa_przestrzeni_nazw_uzyskana_z_typu_jednostki_z_frame(frame,i) local typ=p.Typ_jednostki_uzyskany_z_frame(frame,i); local nazwa_przestrzeni_nazw=typ and p.Nazwa_przestrzeni_nazw_od_typu_jednostki(typ,nil,true) or nil; if(nazwa_przestrzeni_nazw)then local czy_dyskusja=p.Czy_dyskusja_typu_jednostki_z_frame_od_dyskusja_typu_jednostki(frame,i); if(czy_dyskusja)then if(nazwa_przestrzeni_nazw=="")then return "Talk"; else return nazwa_przestrzeni_nazw.." talk"; end; else return nazwa_przestrzeni_nazw; end; else return nil; end; end; function p.Typ_jednostki(frame, kod_liczbowy_przestrzeni_nazw,i,numer_argorytmu) local parametry_modul=require("Module:Parametry"); local analiza=parametry_modul.CzyTak(frame.args["analiza"]); local typ,liczba_numer_jednostki=p.Typ_jednostki_uzyskany_z_frame(frame,i); local uzyskana_przestrzen_nazw_od_typu_jednostki; local nazwa_przestrzeni_nazw_podana,nazwa_jednostki_podana=p.Nazwy_przestrzeni_i_jednostki_podane_o_pewnym_numerze(frame,liczba_numer_jednostki); if((not analiza)and(typ))then if(typ~="")then uzyskana_przestrzen_nazw_od_typu_jednostki=p.Nazwa_przestrzeni_nazw_od_typu_jednostki(typ,frame.args); if(uzyskana_przestrzen_nazw_od_typu_jednostki)then if((not nazwa_przestrzeni_nazw_podana)and(not nazwa_jednostki_podana))then return typ; end; else return "(błąd typu jednostki)"; end; end; end; local nazwa_przestrzeni_nazw,nazwa_jednostki=p.Uzyskanie_nazw_jednostki(frame,kod_liczbowy_przestrzeni_nazw,liczba_numer_jednostki,numer_argorytmu); local nazwy_modul=require("Module:Nazwy"); local kod_jezyka,kod_projektu=p.Wikikody_kontenera(frame,liczba_numer_jednostki); local wiki_modul=require("Module:Wiki"); local czy_biezaca=wiki_modul["CzyBieżącaWiki"]{["kod języka"]=kod_jezyka,["kod projektu"]=kod_projektu,}; local czy_blad_nazwa_przestrzeni_nazw; if(czy_biezaca)then czy_blad_nazwa_przestrzeni_nazw=nazwy_modul.Np{nazwa=nazwa_przestrzeni_nazw,["kanoniczna"]="tak",["nazwij projektem"]="tak",["nazwij dyskusją projektu"]="tak",["istnieje"]="tak",["wynik błędu nietekstowy"]="tak",} else czy_blad_nazwa_przestrzeni_nazw=nazwy_modul.NpDane{nazwa=nazwa_przestrzeni_nazw,["kanoniczna"]="tak",["nazwij projektem"]="tak",["nazwij dyskusją projektu"]="tak",["kod języka"]=kod_jezyka,["kod projektu"]=kod_projektu,["istnieje"]="tak",["wynik błędu nietekstowy"]="tak",} end; if(not czy_blad_nazwa_przestrzeni_nazw)then return "(błąd nazwy przestrzeni nazw)";end; nazwa_przestrzeni_nazw=czy_blad_nazwa_przestrzeni_nazw; --- --- if((not analiza)and(typ))then if(typ~="")then ---typ jednostki if(uzyskana_przestrzen_nazw_od_typu_jednostki)then if((nazwa_przestrzeni_nazw_podana)and(not nazwa_jednostki_podana))then if(uzyskana_przestrzen_nazw_od_typu_jednostki==nazwa_przestrzeni_nazw)then return typ; else return "(błąd niezgodności)"; end; end; else return "(błąd typu jednostki)"; end; end; end; local function Typ_jednostki() if(nazwa_jednostki~="")then --local kod_jezyka,kod_projektu=KodyWikiPudelka(frame,liczba_numer_jednostki); --local klucz_projektu=kod_projektu..":"..kod_jezyka; local pudelko_modul=require("Module:Pudełko"); local pelna_nazwa_strony=((nazwa_przestrzeni_nazw~="")and nazwa_przestrzeni_nazw..":" or "")..nazwa_jednostki; if(pudelko_modul.CzyNiepoprawnaNazwa(pelna_nazwa_strony))then return "(błąd nazwy jednostki)";end; local nazwy_modul=require("Module:Nazwy") pelna_nazwa_strony=nazwy_modul["PEŁNANAZWASTRONY"]{[1]=pelna_nazwa_strony,["kod języka"]=kod_jezyka,["kod projektu"]=kod_projektu,}; local norm_przed_lub_dyskusji=p.Normalna_przedmiotowa_lub_dyskusji_nazwa_przestrzeni_nazw(nazwa_przestrzeni_nazw, kod_liczbowy_przestrzeni_nazw,kod_jezyka,kod_projektu); if(kod_projektu==pudelko_modul["Kod projektu tego projektu"]())then local nazwa_strony_glownej_dla_dzieci_ze_zmiennej=p.Nazwa_strony_bazowej_dla_dzieci_ze_zmiennej(frame,liczba_numer_jednostki,kod_jezyka); if(nazwa_strony_glownej_dla_dzieci_ze_zmiennej=="")then return "(błąd nazwy strony głównej dla dzieci)";end; local nazwa_strony_glownej_wikijuniora=p.Nazwa_strony_bazowej_dla_dzieci_z_wikidanych(kod_jezyka); local nazwa_strony_glownej_dla_dzieci_uzyskana=(not nazwa_strony_glownej_dla_dzieci_ze_zmiennej)and nazwa_strony_glownej_wikijuniora or nazwa_strony_glownej_dla_dzieci_ze_zmiennej; if(nazwa_strony_glownej_dla_dzieci_uzyskana)then if(pudelko_modul.CzyNiepoprawnaNazwa(nazwa_strony_glownej_dla_dzieci_uzyskana))then return "(błąd nazwy strony głównej dla dzieci)";end; nazwa_strony_glownej_dla_dzieci_uzyskana=nazwy_modul["PEŁNANAZWASTRONY"]{[1]=nazwa_strony_glownej_dla_dzieci_uzyskana,["kod języka"]=kod_jezyka,["kod projektu"]=kod_projektu,}; if(pelna_nazwa_strony==nazwa_strony_glownej_dla_dzieci_uzyskana)then return "strona główna dla dzieci";end; end; end; local nazwa_strony_glownej_projektu_ze_zmiennej=p.Nazwa_strony_bazowej_projektu_ze_zmiennej(frame,liczba_numer_jednostki,kod_jezyka,kod_projektu); if(nazwa_strony_glownej_projektu_ze_zmiennej=="")then return "(błąd nazwy strony głównej projektu)";end; local nazwa_strony_glownej_projektu_z_wikidanych=p.Nazwa_strony_bazowej_projektu_z_wikidanych(kod_jezyka,kod_projektu); local nazwa_strony_glownej_projektu_uzyskana=(not nazwa_strony_glownej_projektu_ze_zmiennej)and nazwa_strony_glownej_projektu_z_wikidanych or nazwa_strony_glownej_projektu_ze_zmiennej; if(nazwa_strony_glownej_projektu_uzyskana)then if(pudelko_modul.CzyNiepoprawnaNazwa(nazwa_strony_glownej_projektu_uzyskana))then return "(błąd nazwy strony głównej projektu)";end; nazwa_strony_glownej_projektu_uzyskana=nazwy_modul["PEŁNANAZWASTRONY"]{[1]=nazwa_strony_glownej_projektu_uzyskana,["kod języka"]=kod_jezyka,["kod projektu"]=kod_projektu,}; if(pelna_nazwa_strony==nazwa_strony_glownej_projektu_uzyskana)then return "strona główna projektu";end; end; if(norm_przed_lub_dyskusji=="")then local parametry_modul=require("Module:Parametry"); if(parametry_modul.CzyTak(frame.args["obsługiwane jednostki jako nieopisowe strony"]))then return "artykuł"; else local it=mw.ustring.match(nazwa_jednostki,"^[^/]+$"); if(it)then return "podręcznik";else return "artykuł";end; end; elseif(norm_przed_lub_dyskusji=="Wikijunior")then local parametry_modul=require("Module:Parametry"); if(parametry_modul.CzyTak(frame.args["obsługiwane jednostki jako nieopisowe strony"]))then return "artykuł dla dzieci"; else local it=mw.ustring.match(nazwa_jednostki,"^[^/]+$"); if(it)then return "podręcznik dla dzieci";else return "artykuł dla dzieci";end; end; elseif(norm_przed_lub_dyskusji=="User")then local parametry_modul=require("Module:Parametry"); if(parametry_modul.CzyTak(frame.args["obsługiwane jednostki użytkownika jako normalne strony"]))then return "strona użytkownika"; else local czy_podstrony=mw.ustring.match(nazwa_jednostki,"^[^/]+$") if(czy_podstrony)then return "strona główna użytkownika"; else if(not parametry_modul.CzyTak(frame.args["obsługiwane jednostki jako nieopisowe strony"]))then if(parametry_modul.CzyTak(frame.args["obsługiwane jednostki użytkownika"]))then local czy_ksiazka=mw.ustring.match(nazwa_jednostki,"^[^/]+/[^/]*$"); if(czy_ksiazka)then return "podręcznik użytkownika"; else return "artykuł użytkownika"; end; else return "jednostka użytkownika"; end; else return "strona użytkownika"; end; end; end; elseif(norm_przed_lub_dyskusji=="File")then return "strona pliku"; elseif(norm_przed_lub_dyskusji=="Category")then return "strona kategorii"; elseif(norm_przed_lub_dyskusji=="Project")then local parametry_modul=require("Module:Parametry"); if(parametry_modul.CzyTak(frame.args["obsługiwane brudnopisy jako normalne strony"]))then return "strona projektu";end; if(mw.ustring.match(nazwa_jednostki,"^%s*[Bb]rudnopis/[^/]*/.*"))then if(not parametry_modul.CzyTak(frame.args["obsługiwane jednostki jako nieopisowe strony"]))then if(parametry_modul.CzyTak(frame.args["obsługiwane jednostki brudnopisu projektu"]))then local czy_ksiazka=mw.ustring.match(nazwa_jednostki,"^%s*[Bb]rudnopis/[^/]*/[^/]*$"); if(czy_ksiazka)then return "podręcznik brudnopisu projektu"; else return "artykuł brudnopisu projektu"; end; else return "jednostka brudnopisu projektu"; end; else return "strona brudnopisu projektu"; end; else return "strona projektu"; end; elseif(norm_przed_lub_dyskusji=="Help")then return "strona pomocy"; elseif(norm_przed_lub_dyskusji=="MediaWiki")then return "strona komunikatu"; elseif(norm_przed_lub_dyskusji=="Special")then return "strona specialna"; elseif(norm_przed_lub_dyskusji=="Gadget")then return "strona gadżetu"; elseif(nazwa_przestrzeni_nazw=="Template")then local parametry_modul=require("Module:Parametry"); if(parametry_modul.CzyTak(frame.args["obsługiwane strony jako niebrudnopisowe jednostki programowe"]))then return "strona szablonu";end; local function CzySzablonAlboOpis(nazwa_przestrzeni_nazw,nazwa_jednostki,szablon,opis_szablonu,strona_szablonu,prefix) local parametry_modul=require("Module:Parametry"); if(parametry_modul.CzyTak(frame.args["obsługiwane opisy jako strony jednostek programowych"]) or parametry_modul.CzyTak(frame.args["obsługiwane jednostki jako nieopisowe strony"]))then return szablon; else if(mw.ustring.match(nazwa_jednostki,"^"..prefix..".*/opis$"))then return opis_szablonu; else if(not parametry_modul.CzyTak(frame.args["obsługiwane nieudokumentowane szablony jako szablony"]))then local czy_brudnopis=mw.ustring.match(nazwa_jednostki,"^"..prefix..".*$"); if(czy_brudnopis)then local pagename=(nazwa_przestrzeni_nazw~="")and nazwa_przestrzeni_nazw..":"..nazwa_jednostki or nazwa_jednostki; local czy_istnieje_strona,tab=require("Module:Techniczne").PoliczZbiory(pagename); if(czy_istnieje_strona==1)then local czy_brudnopis_opisu_szablonu=require("Module:Łatki").contentMatch{ [1]='<noinclude>.-{{%s*[Dd]okumentacja%s*}}.-</noinclude>', [2]='<noinclude>.-{{%s*[Dd]okumentacja%s*|.-</noinclude>',pagename=pagename,namespace=0 }; if(not czy_brudnopis_opisu_szablonu)then return opis_szablonu;else return szablon;end; else return szablon; end; else return strona_szablonu; end; else return szablon; end; end; end; end; if((not parametry_modul.CzyTak(frame.args["obsługiwane brudnopisy jako normalne strony"]))and(mw.ustring.match(nazwa_jednostki,"^%s*[Bb]rudnopis/[^/]*/.*")))then return CzySzablonAlboOpis(nazwa_przestrzeni_nazw,nazwa_jednostki,"strona brudnopisu szablonu","strona brudnopisu opisu szablonu","strona szablonu","[Bb]rudnopis/[^/]*/"); else return CzySzablonAlboOpis(nazwa_przestrzeni_nazw,nazwa_jednostki,"strona szablonu","strona opisu szablonu","strona szablonu",""); end; elseif(nazwa_przestrzeni_nazw=="Module")then local parametry_modul=require("Module:Parametry"); if(parametry_modul.CzyTak(frame.args["obsługiwane strony jako niebrudnopisowe jednostki programowe"]))then return "strona modułu";end; if((not parametry_modul.CzyTak(frame.args["obsługiwane brudnopisy jako normalne strony"]))and(mw.ustring.match(nazwa_jednostki,"^%s*[Bb]rudnopis/[^/]*/.*")))then if(parametry_modul.CzyTak(frame.args["obsługiwane opisy jako strony jednostek programowych"]) or parametry_modul.CzyTak(frame.args["obsługiwane jednostki jako nieopisowe strony"]))then return "strona brudnopisu modułu" else local pelna_nazwa_strony=(nazwa_przestrzeni_nazw~="")and nazwa_przestrzeni_nazw..":"..nazwa_jednostki or nazwa_jednostki; pelna_nazwa_strony=require("Module:Nazwy")["PEŁNANAZWASTRONY"]{[1]=pelna_nazwa_strony,["kod języka"]=kod_jezyka,["kod projektu"]=kod_projektu,}; local pelna_nazwa_strony_brudnopisu_opisu_modulu=require("Module:Techniczne")["PełnaNazwaOpisuModułu"](pelna_nazwa_strony); if(pelna_nazwa_strony==pelna_nazwa_strony_brudnopisu_opisu_modulu)then return "strona brudnopisu opisu modułu"; else return "strona brudnopisu modułu"; end; end; else if(parametry_modul.CzyTak(frame.args["obsługiwane opisy jako strony jednostek programowych"]) or parametry_modul.CzyTak(frame.args["obsługiwane jednostki jako nieopisowe strony"]))then return "strona modułu" else local pelna_nazwa_strony=(nazwa_przestrzeni_nazw~="")and nazwa_przestrzeni_nazw..":"..nazwa_jednostki or nazwa_jednostki; pelna_nazwa_strony=require("Module:Nazwy")["PEŁNANAZWASTRONY"]{[1]=pelna_nazwa_strony,["kod języka"]=kod_jezyka,["kod projektu"]=kod_projektu,}; local pelna_nazwa_opisu_modulu=require("Module:Techniczne")["PełnaNazwaOpisuModułu"](pelna_nazwa_strony); if(pelna_nazwa_strony==pelna_nazwa_opisu_modulu)then return "strona opisu modułu"; else return "strona modułu"; end; end; end; else return "inne"; end; end; return "inne"; end; local typ_jednostki=Typ_jednostki(); if(((analiza)or(nazwa_jednostki_podana))and(typ)and(typ~=""))then if(typ_jednostki==typ)then return typ_jednostki; elseif(nazwa_jednostki_podana)then return "(błąd parametrów pudełkowych)" else return "(błąd typu jednostki)"; end; end; return typ_jednostki; end; function p.Uzyskanie_nazw_jednostki(frame,kod_liczbowy_przestrzeni_nazw,i,numer_argorytmu,co_ma_liczyc) local nazwa_przestrzeni_fun,nazwa_jednostki_fun; if(kod_liczbowy_przestrzeni_nazw==0)then nazwa_przestrzeni_fun="Nazwa przestrzeni nazw"; nazwa_jednostki_fun="Nazwa jednostki"; elseif(kod_liczbowy_przestrzeni_nazw==1)then nazwa_przestrzeni_fun="Nazwa przedmiotowej przestrzeni nazw"; nazwa_jednostki_fun="Nazwa przedmiotowa jednostki"; elseif(kod_liczbowy_przestrzeni_nazw==2)then nazwa_przestrzeni_fun="Nazwa przestrzeni nazw dyskusji" nazwa_jednostki_fun="Nazwa dyskusji jednostki"; else nazwa_przestrzeni_fun="Nazwa przestrzeni nazw"; nazwa_jednostki_fun="Nazwa jednostki"; end; local pudelko_modul=require("Module:Pudełko"); if(not numer_argorytmu)then if((not i)or(i==0))then if((not co_ma_liczyc)or(co_ma_liczyc==0))then local nazwa_przestrzeni_nazw=pudelko_modul[nazwa_przestrzeni_fun](frame,false); local nazwa_jednostki=pudelko_modul["Nazwa jednostki"](frame); return nazwa_przestrzeni_nazw,nazwa_jednostki; elseif(co_ma_liczyc==1)then local nazwa_przestrzeni_nazw=pudelko_modul[nazwa_przestrzeni_fun](frame,false); return nazwa_przestrzeni_nazw; elseif(co_ma_liczyc==2)then return pudelko_modul["Nazwa jednostki"](frame); end; else if((not co_ma_liczyc)or(co_ma_liczyc==0))then local n=p.Nazwa_przestrzeni_nazw_dodatkowe(frame,i); local nazwa_przestrzeni_nazw=(n)and pudelko_modul[nazwa_przestrzeni_fun](frame,false,i) or pudelko_modul[nazwa_przestrzeni_fun.." 2"](frame,false,i); local nazwa_jednostki=(n)and pudelko_modul["Nazwa jednostki"](frame,i) or pudelko_modul[nazwa_jednostki_fun.." 2"](frame,i); return nazwa_przestrzeni_nazw,nazwa_jednostki; elseif(co_ma_liczyc==1)then local n=p.Nazwa_przestrzeni_nazw_dodatkowe(frame,i); local nazwa_przestrzeni_nazw=(n)and pudelko_modul[nazwa_przestrzeni_fun](frame,false,i) or pudelko_modul[nazwa_przestrzeni_fun.." 2"](frame,false,i); return nazwa_przestrzeni_nazw; elseif(co_ma_liczyc==2)then local n=p.Nazwa_przestrzeni_nazw_dodatkowe(frame,i); return (n)and pudelko_modul["Nazwa jednostki"](frame,i) or pudelko_modul[nazwa_jednostki_fun.." 2"](frame,i); end; end; else if(numer_argorytmu==0)then if((not co_ma_liczyc)or(co_ma_liczyc==0))then local nazwa_przestrzeni_nazw=pudelko_modul[nazwa_przestrzeni_fun](frame,false,i); local nazwa_jednostki=pudelko_modul["Nazwa jednostki"](frame,i); return nazwa_przestrzeni_nazw,nazwa_jednostki; elseif(co_ma_liczyc==1)then local nazwa_przestrzeni_nazw=pudelko_modul[nazwa_przestrzeni_fun](frame,false,i); return nazwa_przestrzeni_nazw; elseif(co_ma_liczyc==2)then return pudelko_modul["Nazwa jednostki"](frame,i); end; else if((not co_ma_liczyc)or(co_ma_liczyc==0))then local nazwa_przestrzeni_nazw=pudelko_modul[nazwa_przestrzeni_fun.." 2"](frame,false,i); local nazwa_jednostki=pudelko_modul[nazwa_jednostki_fun.." 2"](frame,i); return nazwa_przestrzeni_nazw,nazwa_jednostki; elseif(co_ma_liczyc==1)then local nazwa_przestrzeni_nazw=pudelko_modul[nazwa_przestrzeni_fun.." 2"](frame,false,i); return nazwa_przestrzeni_nazw; elseif(co_ma_liczyc==2)then return pudelko_modul[nazwa_jednostki_fun.." 2"](frame,i); end; end; end; end; function p.Nazwa_przestrzeni_nazw_dodatkowe(frame,numer_jednostki) local pf=frame.getParent and frame:getParent() or {args={}}; return frame.args["nazwa przestrzeni nazw "..tostring(numer_jednostki)] or pf.args["nazwa przestrzeni nazw "..tostring(numer_jednostki)] end; function p.Nazwa_jednostki(frame,i) local pf=frame.getParent and frame:getParent() or {args={}}; local nazwa_jednostki,liczba_numer_jednostki=p.Nazwy_przestrzeni_i_jednostki_podane_o_pewnym_numerze(frame,i,2); local kod_jezyka,kod_projektu=p.Wikikody_kontenera(frame,liczba_numer_jednostki); if(nazwa_jednostki)then nazwa_jednostki=mw.text.trim(nazwa_jednostki); nazwa_jednostki=mw.ustring.gsub(nazwa_jednostki,"^:",""); nazwa_jednostki=mw.ustring.gsub(nazwa_jednostki,"^([^#]*)#(.*)$","%1"); local parametry=mw.ustring.match(nazwa_jednostki,"^.*%?([^%?]+)$"); if(parametry and mw.ustring.match(parametry,"[^=]+=[^=]*"))then nazwa_jednostki=mw.ustring.gsub(nazwa_jednostki,"^(.*)%?([^%?]+)$","%1"); end; else local nazwy_modul=require("Module:Nazwy"); nazwa_jednostki=nazwy_modul["NAZWASTRONY"]{["kod języka"]=kod_jezyka,["kod projektu"]=kod_projektu,}; end; local parametry_modul=require("Module:Parametry"); nazwa_jednostki=parametry_modul["Odstępy"]{[1]=nazwa_jednostki,[2]="tak",}; return mw.getContentLanguage():ucfirst(nazwa_jednostki); end; function p.Nazwy_przestrzeni_i_jednostki_podane_o_pewnym_numerze(frame,i,co_podac) local pf=frame.getParent and frame:getParent() or {args={}}; local numer_jednostki=i or frame.args["numer jednostki"]; local liczba_numer_jednostki=tonumber(numer_jednostki) or 0; local nazwa_jednostki; local bool_numer_jednostki=(liczba_numer_jednostki~=0); local function Nazwa_jednostki() if bool_numer_jednostki then nazwa_jednostki=frame.args["nazwa jednostki "..liczba_numer_jednostki] or ((liczba_numer_jednostki==1)and(pf.args["cel"])) or pf.args[liczba_numer_jednostki]; else nazwa_jednostki=frame.args["nazwa jednostki"] or pf.args["nazwa jednostki"]; end; return nazwa_jednostki; end; local function Nazwa_przestrzeni_nazw() local nazwa_przestrzeni_nazw=bool_numer_jednostki and (frame.args["nazwa przestrzeni nazw i"] or pf.args["nazwa przestrzeni nazw i"] or frame.args["nazwa przestrzeni nazw "..liczba_numer_jednostki] or pf.args["nazwa przestrzeni nazw "..liczba_numer_jednostki]) or frame.args["nazwa przestrzeni nazw"] or pf.args["nazwa przestrzeni nazw"]; return nazwa_przestrzeni_nazw; end; if(not co_podac)then return Nazwa_przestrzeni_nazw(),Nazwa_jednostki(),liczba_numer_jednostki; elseif(co_podac==1)then return Nazwa_przestrzeni_nazw(),liczba_numer_jednostki; elseif(co_podac==2)then return Nazwa_jednostki(),liczba_numer_jednostki; else return Nazwa_przestrzeni_nazw(),Nazwa_jednostki(),liczba_numer_jednostki; end; end; function p.Jaka_nazwa_jednostki(frame,i,jaka) local nazwa_przestrzeni_nazw,nazwa_jednostki,liczba_numer_jednostki=p.Nazwy_przestrzeni_i_jednostki_podane_o_pewnym_numerze(frame,i); nazwa_przestrzeni_nazw=nazwa_przestrzeni_nazw or p.Nazwa_przestrzeni_nazw_uzyskana_z_typu_jednostki_z_frame(frame,liczba_numer_jednostki); ---- local nazwy_modul=require("Module:Nazwy"); nazwa_przestrzeni_nazw=nazwa_przestrzeni_nazw and mw.text.trim(nazwa_przestrzeni_nazw) or nazwy_modul["NAZWAPRZESTRZENI"](); if(nazwa_jednostki)then local html_modul=require("Module:Html"); nazwa_jednostki=html_modul["NazwaStronyAdresu"](nazwa_jednostki,true); else nazwa_jednostki=nazwy_modul["NAZWASTRONY"](); end; local kod_jezyka,kod_projektu=p.Wikikody_kontenera(frame,liczba_numer_jednostki); local wiki_modul=require("Module:Wiki"); local czy_biezaca=wiki_modul["CzyBieżącaWiki"]{["kod języka"]=kod_jezyka,["kod projektu"]=kod_projektu,}; if(jaka)then if(czy_biezaca)then local tab_parametry={nazwa=nazwa_przestrzeni_nazw,}; if(jaka=="przedmiotowa")then tab_parametry["przedmiotowa"]="tak";end; nazwa_przestrzeni_nazw=nazwy_modul.Np(tab_parametry); else local tab_parametry={nazwa=nazwa_przestrzeni_nazw,["kod języka"]=kod_jezyka,["kod projektu"]=kod_projektu,}; if(jaka=="przedmiotowa")then tab_parametry["przedmiotowa"]="tak";end; nazwa_przestrzeni_nazw=nazwy_modul.NpDane(tab_parametry); end; else if(czy_biezaca)then nazwa_przestrzeni_nazw=nazwy_modul.Np{nazwa=nazwa_przestrzeni_nazw}; else nazwa_przestrzeni_nazw=nazwy_modul.NpDane{nazwa=nazwa_przestrzeni_nazw,["kod języka"]=kod_jezyka,["kod projektu"]=kod_projektu,}; end; end; if(not mw.ustring.match(nazwa_jednostki,"^:"))then if(nazwa_przestrzeni_nazw~="")then if((not typ)or(typ=="przedmiotowa"))then if(czy_biezaca)then local nazwy_np_modul=mw.loadData("Module:Nazwy/Np"); if(nazwa_przestrzeni_nazw==nazwy_np_modul.Template)then local nazwa_przestrzeni_nazw_d=nazwy_modul["NAZWAPRZESTRZENI"](nazwa_jednostki); if(nazwa_przestrzeni_nazw_d==nazwy_np_modul.Template)then return nazwy_modul["NAZWASTRONY"](nazwa_jednostki); end; elseif(nazwa_przestrzeni_nazw==nazwy_np_modul.Module)then local nazwa_przestrzeni_nazw_d=nazwy_modul["NAZWAPRZESTRZENI"](nazwa_jednostki); if(nazwa_przestrzeni_nazw_d==nazwy_np_modul.Module)then return nazwy_modul["NAZWASTRONY"](nazwa_jednostki); end; end; else local template_prze=nazwy_modul.NpDane{nazwa="Template",["kod języka"]=kod_jezyka,["kod projektu"]=kod_projektu,}; local module_prze=nazwy_modul.NpDane{nazwa="Module",["kod języka"]=kod_jezyka,["kod projektu"]=kod_projektu,}; if(nazwa_przestrzeni_nazw==template_prze)then local nazwa_przestrzeni_nazw_d=nazwy_modul["NAZWAPRZESTRZENI"]{[1]=nazwa_jednostki,["kod języka"]=kod_jezyka,["kod projektu"]=kod_projektu,}; if(nazwa_przestrzeni_nazw_d==template_prze)then return nazwy_modul["NAZWASTRONY"]{[1]=nazwa_jednostki,["kod języka"]=kod_jezyka,["kod projektu"]=kod_projektu,}; end; elseif(nazwa_przestrzeni_nazw==module_prze)then local nazwa_przestrzeni_nazw_d=nazwy_modul["NAZWAPRZESTRZENI"]{[1]=nazwa_jednostki,["kod języka"]=kod_jezyka,["kod projektu"]=kod_projektu,}; if(nazwa_przestrzeni_nazw_d==module_prze)then return nazwy_modul["NAZWASTRONY"]{[1]=nazwa_jednostki,["kod języka"]=kod_jezyka,["kod projektu"]=kod_projektu,}; end; end; end; end; local parametry_modul=require("Module:Parametry"); nazwa_jednostki=parametry_modul["Odstępy"]{[1]=nazwa_jednostki,[2]="tak",}; return mw.getContentLanguage():ucfirst(nazwa_jednostki); else return nazwy_modul["NAZWASTRONY"]{[1]=nazwa_jednostki,["kod języka"]=kod_jezyka,["kod projektu"]=kod_projektu,}; end; else return nazwy_modul["NAZWASTRONY"]{[1]=nazwa_jednostki,["kod języka"]=kod_jezyka,["kod projektu"]=kod_projektu,}; end; end; function p.Czy_przestrzen_nazw_jest_obslugiwana(frame,jakas_przestrzen_nazw,kod_jezyka,kod_projektu) local nazwy_modul=require("Module:Nazwy"); local parametry_modul=require("Module:Parametry"); local wiki_modul=require("Module:Wiki"); local czy_biezaca=wiki_modul["CzyBieżącaWiki"]{["kod języka"]=kod_jezyka,["kod projektu"]=kod_projektu,}; if(czy_biezaca)then jakas_przestrzen_nazw=nazwy_modul.Np{nazwa=jakas_przestrzen_nazw}; else jakas_przestrzen_nazw=nazwy_modul.NpDane{nazwa=jakas_przestrzen_nazw,["kod języka"]=kod_jezyka,["kod projektu"]=kod_projektu,}; end; local function nazwa_przestrzeni_nazw_fun(nazwa_przestrzeni_nazw_iter) if(czy_biezaca)then nazwa_przestrzeni_nazw_iter=nazwy_modul.Np{nazwa=nazwa_przestrzeni_nazw_iter}; else nazwa_przestrzeni_nazw_iter=nazwy_modul.NpDane{nazwa=nazwa_przestrzeni_nazw_iter,["kod języka"]=kod_jezyka,["kod projektu"]=kod_projektu,}; end; if(jakas_przestrzen_nazw==nazwa_przestrzeni_nazw_iter)then return true; end; return false; end; for licznik,nazwa_przestrzeni_nazw in pairs(frame.args)do if(type(licznik)=="number")then local nazwa_przestrzeni_nazw_element,klucze_element=mw.ustring.match(nazwa_przestrzeni_nazw,"^%s*([%w%s]*)%s*:%s*(.-)%s*"); if(nazwa_przestrzeni_nazw_element and klucze_element)then local tab_klucze=mw.text.split(klucze_element,"%s*,%s*",false); local wiki_modul=require("Module:Wiki"); for _,klucz_element in ipairs(tab_klucze)do local kod_jezyka_obslugiwane,kod_projektu_obslugiwane=wiki_modul.KluczProjektu(klucz_element); if(kod_jezyka_obslugiwane==kod_jezyka and kod_projektu_obslugiwane==kod_projektu)then local wynik=nazwa_przestrzeni_nazw_fun(nazwa_przestrzeni_nazw_element); if(wynik)then return true;end; end; end; else local wynik=nazwa_przestrzeni_nazw_fun(nazwa_przestrzeni_nazw); if(wynik)then return true;end; end; end; end; return false; end; function p.Analiza_interwiki_czy_projekt_aktualny(frame,czy_jezyk,czy_projekt) local parametry_modul=require("Module:Parametry"); local p=parametry_modul.PobierzFrameEwentualnieParent(frame); local pudelko_modul=require("Module:Pudełko"); local wiki_modul=require("Module:Wiki"); local jezyk_biezacy=czy_jezyk and pudelko_modul["Kod języka tego projektu"](); local projekt_biezacy=czy_projekt and pudelko_modul["Kod projektu tego projektu"](); for i,_ in pairs(p.args)do if(type(i)=="number")then local klucz_projektu=pudelko_modul["Klucz projektu"](frame,i); local kod_jezyka=pudelko_modul["Kod języka"](frame,i); local kod_projektu=pudelko_modul["kod projektu"](frame,i); local jezyk,projekt=wiki_modul.KodyWiki(klucz_projektu,kod_jezyka,kod_projektu); if((czy_jezyk and (jezyk~=jezyk_biezacy))or(czy_projekt and(projekt~=projekt_biezacy)))then return "tak"; end; end; end; return; end; return p; gastwgdi8w5iftvvew0d5t41h6g7trv 540394 540393 2026-04-23T15:08:56Z Persino 2851 540394 Scribunto text/plain local p={}; function p.Nazwa_strony_bazowej_projektu_z_wikidanych(kod_jezyka,kod_projektu) local strona=require("Module:Pudełko")["Strona główna tego projektu"](); local odpowiednik_strony=require("Module:Wiki").WikidaneOdpowiednikStrony{["nazwa strony"]=strona,["kod języka"]=kod_jezyka,["kod projektu"]=kod_projektu}; if(odpowiednik_strony)then local nazwy_modul=require("Module:Nazwy"); return nazwy_modul["PEŁNANAZWASTRONY"]{[1]=odpowiednik_strony,["kod języka"]=kod_jezyka,["kod projektu"]=kod_projektu,}; else local pudelko_modul=require("Module:Pudełko"); if((kod_jezyka==pudelko_modul["Kod języka tego projektu"]())and(kod_projektu==pudelko_modul["Kod projektu tego projektu"]()))then return strona; else local wiki_interwiki_modul=mw.loadData("Module:Wiki/interwiki"); local czy_w_wikidanych=wiki_interwiki_modul.tablica_kody_projektu_wikidane.lingwistyczne[kod_projektu] or wiki_interwiki_modul.tablica_kody_projektu_wikidane.specjalistyczne[kod_projektu]; return czy_w_wikidanych and "Main Page" or nil; end; end; end; function p.Nazwa_strony_bazowej_dla_dzieci_z_wikidanych(kod_jezyka) local strona=require("Module:Pudełko")["Strona główna dla dzieci tego projektu"](); local pudelko_modul=require("Module:Pudełko"); local kod_jezyka_tego_projektu=pudelko_modul["Kod języka tego projektu"](); if(kod_jezyka==kod_jezyka_tego_projektu)then return strona;end; local kod_projektu_tego_projektu=pudelko_modul["Kod projektu tego projektu"](); local odpowiednik_strony=require("Module:Wiki").WikidaneOdpowiednikStrony{["nazwa strony"]=strona,["kod języka"]=kod_jezyka,["kod projektu"]=kod_projektu_tego_projektu}; if(odpowiednik_strony)then local nazwy_modul=require("Module:Nazwy"); return nazwy_modul["PEŁNANAZWASTRONY"]{[1]=odpowiednik_strony,["kod języka"]=kod_jezyka,["kod projektu"]=kod_projektu_tego_projektu,}; else return "Wikijunior"; end; end; function p.Nazwa_strony_bazowej_projektu_ze_zmiennej(frame,i,kod_jezyka,kod_projektu) local pf=frame.getParent and frame:getParent() or {args={}}; local strona_glowna_projektu; if(i~=0)then local pudelko_modul=require("Module:Pudełko"); local kod_jezyka_tego_projektu=pudelko_modul["Kod języka tego projektu"](); local kod_projektu_tego_projektu=pudelko_modul["Kod projektu tego projektu"](); if(kod_jezyka==kod_jezyka_tego_projektu)and(kod_projektu==kod_projektu_tego_projektu)then strona_glowna_projektu=frame.args["strona główna projektu"] or pf.args["strona główna projektu"] else strona_glowna_projektu=(frame.args["strona główna projektu "..i] or pf.args["strona główna projektu "..i]) end; else strona_glowna_projektu=frame.args["strona główna projektu"] or pf.args["strona główna projektu"] end; local parametry_modul=require("Module:Parametry"); return (parametry_modul.CzyTak(strona_glowna_projektu))and require("Module:Nazwy")["PEŁNANAZWASTRONY"]{[1]=strona_glowna_projektu,["kod języka"]=kod_jezyka,["kod projektu"]=kod_projektu,} or (strona_glowna_projektu and "" or nil); end; function p.Nazwa_strony_bazowej_dla_dzieci_ze_zmiennej(frame,i,kod_jezyka) local pf=frame.getParent and frame:getParent() or {args={}}; local pudelko_modul=require("Module:Pudełko"); local strona_glowna_dla_dzieci; if(i~=0)then local kod_jezyka_tego_projektu=pudelko_modul["Kod języka tego projektu"](); if(kod_jezyka==kod_jezyka_tego_projektu)then strona_glowna_dla_dzieci=frame.args["strona główna dla dzieci"] or pf.args["strona główna dla dzieci"] else strona_glowna_dla_dzieci=(frame.args["strona główna dla dzieci "..i] or pf.args["strona główna dla dzieci "..i]) end; else strona_glowna_dla_dzieci=frame.args["strona główna dla dzieci"] or pf.args["strona główna dla dzieci"] end; local kod_projektu_tego_projektu=pudelko_modul["Kod projektu tego projektu"](); local parametry_modul=require("Module:Parametry"); return (parametry_modul.CzyTak(strona_glowna_dla_dzieci))and require("Module:Nazwy")["PEŁNANAZWASTRONY"]{[1]=strona_glowna_dla_dzieci,["kod języka"]=kod_jezyka,["kod projektu"]=kod_projektu_tego_projektu,} or (strona_glowna_dla_dzieci and "" or nil); end; function p.Normalna_przedmiotowa_lub_dyskusji_nazwa_przestrzeni_nazw(nazwa_przestrzeni_nazw, normmalna_przedmiotwa_dyskusji,kod_jezyka,kod_projektu) local nazwa_przestrzeni_nazw_blad; local wiki_modul=require("Module:Wiki"); local nazwy_modul=require("Module:Nazwy"); local czy_biezaca=wiki_modul["CzyBieżącaWiki"]{["kod języka"]=kod_jezyka,["kod projektu"]=kod_projektu,}; if(normmalna_przedmiotwa_dyskusji==0)then if(czy_biezaca)then nazwa_przestrzeni_nazw_blad=nazwy_modul.Np{nazwa=nazwa_przestrzeni_nazw,["kanoniczna"]="tak",["nazwij projektem"]="tak",["nazwij dyskusją projektu"]="tak",["istnieje"]="tak",["wynik błędu nietekstowy"]="tak",}; else nazwa_przestrzeni_nazw_blad=nazwy_modul.NpDane{nazwa=nazwa_przestrzeni_nazw,["kanoniczna"]="tak",["nazwij projektem"]="tak",["nazwij dyskusją projektu"]="tak",["kod języka"]=kod_jezyka,["kod projektu"]=kod_projektu,["istnieje"]="tak",["wynik błędu nietekstowy"]="tak",}; end; elseif(normmalna_przedmiotwa_dyskusji==1)then if(czy_biezaca)then nazwa_przestrzeni_nazw_blad=nazwy_modul.Np{nazwa=nazwa_przestrzeni_nazw, przedmiotowa="tak",["kanoniczna"]="tak",["nazwij projektem"]="tak",["nazwij dyskusją projektu"]="tak",["istnieje"]="tak",["wynik błędu nietekstowy"]="tak",}; else nazwa_przestrzeni_nazw_blad=nazwy_modul.NpDane{nazwa=nazwa_przestrzeni_nazw, przedmiotowa="tak",["kanoniczna"]="tak",["nazwij projektem"]="tak",["nazwij dyskusją projektu"]="tak",["kod języka"]=kod_jezyka,["kod projektu"]=kod_projektu,["istnieje"]="tak",["wynik błędu nietekstowy"]="tak",}; end; elseif(normmalna_przedmiotwa_dyskusji==2)then if(czy_biezaca)then nazwa_przestrzeni_nazw_blad=nazwy_modul.Np{nazwa=nazwa_przestrzeni_nazw, dyskusja="tak",["kanoniczna"]="tak",["nazwij projektem"]="tak",["nazwij dyskusją projektu"]="tak",["istnieje"]="tak",["wynik błędu nietekstowy"]="tak",}; else nazwa_przestrzeni_nazw_blad=nazwy_modul.NpDane{nazwa=nazwa_przestrzeni_nazw, dyskusja="tak",["kanoniczna"]="tak",["nazwij projektem"]="tak",["nazwij dyskusją projektu"]="tak",["kod języka"]=kod_jezyka,["kod projektu"]=kod_projektu,["istnieje"]="tak",["wynik błędu nietekstowy"]="tak",}; end; else if(czy_biezaca)then nazwa_przestrzeni_nazw_blad=nazwy_modul.Np{nazwa=nazwa_przestrzeni_nazw,["kanoniczna"]="tak",["nazwij projektem"]="tak",["nazwij dyskusją projektu"]="tak",["istnieje"]="tak",["wynik błędu nietekstowy"]="tak",}; else nazwa_przestrzeni_nazw_blad=nazwy_modul.NpDane{nazwa=nazwa_przestrzeni_nazw,["kanoniczna"]="tak",["nazwij projektem"]="tak",["nazwij dyskusją projektu"]="tak",["kod języka"]=kod_jezyka,["kod projektu"]=kod_projektu,["istnieje"]="tak",["wynik błędu nietekstowy"]="tak",}; end; end; return nazwa_przestrzeni_nazw_blad end; function p.Nazwa_przestrzeni_nazw(frame,kod_liczbowy_przestrzeni_nazw,czy_uwzglednic_alternatywna_nazwe,numer_jednostki) local pf=frame.getParent and frame:getParent() or {args={}}; local nazwa_przestrzeni_nazw=p.Nazwy_przestrzeni_i_jednostki_podane_o_pewnym_numerze(frame,numer_jednostki,1) or p.Nazwa_przestrzeni_nazw_uzyskana_z_typu_jednostki_z_frame(frame,numer_jednostki); local nazwy_modul=require("Module:Nazwy"); local wiki_modul=require("Module:Wiki"); local kod_jezyka,kod_projektu=p.Wikikody_kontenera(frame,numer_jednostki); local czy_biezaca_wiki=wiki_modul["CzyBieżącaWiki"]{["kod języka"]=kod_jezyka,["kod projektu"]=kod_projektu,}; local czy_blad_nazwy_przestrzeni_nazw; local typ; if(kod_liczbowy_przestrzeni_nazw==1)then typ="przedmiotowa"; if(czy_biezaca_wiki)then czy_blad_nazwy_przestrzeni_nazw=(not nazwa_przestrzeni_nazw)and nazwy_modul["PRZEDMIOTOWAPRZESTRZEŃ"]() or nazwy_modul.Np{nazwa=nazwa_przestrzeni_nazw,przedmiotowa="tak",["istnieje"]="tak",["wynik błędu nietekstowy"]="tak",}; else czy_blad_nazwy_przestrzeni_nazw=(not nazwa_przestrzeni_nazw)and nazwy_modul["PRZEDMIOTOWAPRZESTRZEŃ"]{["kod języka"]=kod_jezyka,["kod projektu"]=kod_projektu,} or nazwy_modul.NpDane{nazwa=nazwa_przestrzeni_nazw,przedmiotowa="tak",["kod języka"]=kod_jezyka,["kod projektu"]=kod_projektu,["istnieje"]="tak",["wynik błędu nietekstowy"]="tak",}; end; elseif(kod_liczbowy_przestrzeni_nazw==2)then if(czy_biezaca_wiki)then typ="dyskusja"; czy_blad_nazwy_przestrzeni_nazw=(not nazwa_przestrzeni_nazw)and nazwy_modul["PRZESTRZEŃDYSKUSJI"]() or nazwy_modul.Np{nazwa=nazwa_przestrzeni_nazw,dyskusja="tak",["istnieje"]="tak",["wynik błędu nietekstowy"]="tak",}; else czy_blad_nazwy_przestrzeni_nazw=(not nazwa_przestrzeni_nazw)and nazwy_modul["PRZESTRZEŃDYSKUSJI"]{["kod języka"]=kod_jezyka,["kod projektu"]=kod_projektu,} or nazwy_modul.NpDane{nazwa=nazwa_przestrzeni_nazw,dyskusja="tak",["kod języka"]=kod_jezyka,["kod projektu"]=kod_projektu,["istnieje"]="tak",["wynik błędu nietekstowy"]="tak",}; end; else if(czy_biezaca_wiki)then czy_blad_nazwy_przestrzeni_nazw=(not nazwa_przestrzeni_nazw)and nazwy_modul["NAZWAPRZESTRZENI"]() or nazwy_modul.Np{nazwa=nazwa_przestrzeni_nazw,["istnieje"]="tak",["wynik błędu nietekstowy"]="tak",}; else czy_blad_nazwy_przestrzeni_nazw=(not nazwa_przestrzeni_nazw)and nazwy_modul["NAZWAPRZESTRZENI"]{["kod języka"]=kod_jezyka,["kod projektu"]=kod_projektu,} or nazwy_modul.NpDane{nazwa=nazwa_przestrzeni_nazw,["kod języka"]=kod_jezyka, ["kod projektu"]=kod_projektu,["istnieje"]="tak",["wynik błędu nietekstowy"]="tak",}; end; end; if(czy_blad_nazwy_przestrzeni_nazw)then return czy_blad_nazwy_przestrzeni_nazw; else if(((czy_uwzglednic_alternatywna_nazwe==nil)and true or czy_uwzglednic_alternatywna_nazwe) and frame.args[1])then local nazwa_przestrzeni_nazw_alternatywnej=mw.text.trim(frame.args[1]); if(mw.ustring.match(nazwa_przestrzeni_nazw_alternatywnej,"^[%w%s_]*$"))then local czy_blad_nazwa_przestrzeni_nazw_alternatywnej; if(czy_biezaca_wiki)then local tab_parametry={nazwa=nazwa_przestrzeni_nazw_alternatywnej,["istnieje"]="tak",["wynik błędu nietekstowy"]="tak",}; if(typ)then tab_parametry[typ]="tak";end; czy_blad_nazwa_przestrzeni_nazw_alternatywnej=nazwy_modul.Np(tab_parametry); else local tab_parametry={nazwa=nazwa_przestrzeni_nazw_alternatywnej,["kod języka"]=kod_jezyka,["kod projektu"]=kod_projektu,["istnieje"]="tak",["wynik błędu nietekstowy"]="tak",}; if(typ)then tab_parametry[typ]="tak";end; czy_blad_nazwa_przestrzeni_nazw_alternatywnej=nazwy_modul.NpDane(tab_parametry); end; return czy_blad_nazwa_przestrzeni_nazw_alternatywnej or "(błąd)"; else return "(błąd)"; end; else local parametry_modul=require("Module:Parametry"); nazwa_przestrzeni_nazw=parametry_modul["Odstępy"]{[1]=nazwa_przestrzeni_nazw,[2]="tak",}; if(mw.ustring.match(nazwa_przestrzeni_nazw,"^[%w%s_]*$"))then return nazwa_przestrzeni_nazw; else return "(błąd)"; end; end; end; end; function p.Nazwa_przestrzeni_nazw_2(frame,czy_uwzglednic_alternatywna_nazwe,i) local nazwa_przestrzeni_nazw,nazwa_jednostki,liczba_numer_jednostki=p.Nazwy_przestrzeni_i_jednostki_podane_o_pewnym_numerze(frame,i); nazwa_przestrzeni_nazw=nazwa_przestrzeni_nazw or p.Nazwa_przestrzeni_nazw_uzyskana_z_typu_jednostki_z_frame(frame,liczba_numer_jednostki); local nazwy_modul=require("Module:Nazwy"); local kod_jezyka,kod_projektu=p.Wikikody_kontenera(frame,liczba_numer_jednostki); local wiki_modul=require("Module:Wiki"); local czy_biezaca_wiki=wiki_modul["CzyBieżącaWiki"]{["kod języka"]=kod_jezyka,["kod projektu"]=kod_projektu,}; local nazwa_przestrzeni_nazw_blad; local parametry_modul=require("Module:Parametry"); if(czy_biezaca_wiki)then nazwa_przestrzeni_nazw=nazwa_przestrzeni_nazw and mw.text.trim(nazwa_przestrzeni_nazw) or nazwy_modul["NAZWAPRZESTRZENI"](); nazwa_przestrzeni_nazw_blad=require("Module:Nazwy").Np{nazwa=nazwa_przestrzeni_nazw,["istnieje"]="tak",["wynik błędu nietekstowy"]="tak",}; if(nazwa_jednostki)then nazwa_jednostki=parametry_modul["Odstępy"]{[1]=nazwa_jednostki,[2]="tak",}; nazwa_jednostki=mw.ustring.gsub(nazwa_jednostki,"^([^#]*)#(.*)$","%1"); local parametry=mw.ustring.match(nazwa_jednostki,"^.*%?([^%?]+)$"); if(parametry and mw.ustring.match(parametry,"[^=]+=[^=]*"))then nazwa_jednostki=mw.ustring.gsub(nazwa_jednostki,"^(.*)%?([^%?]+)$","%1"); end; else nazwa_jednostki=nazwy_modul["NAZWASTRONY"](); end; else nazwa_przestrzeni_nazw=nazwa_przestrzeni_nazw and mw.text.trim(nazwa_przestrzeni_nazw) or nazwy_modul["NAZWAPRZESTRZENI"]{["kod języka"]=kod_jezyka,["kod projektu"]=kod_projektu,}; nazwa_przestrzeni_nazw_blad=require("Module:Nazwy").NpDane{nazwa=nazwa_przestrzeni_nazw,["kod języka"]=kod_jezyka,["kod projektu"]=kod_projektu,["istnieje"]="tak",["wynik błędu nietekstowy"]="tak",}; if(nazwa_jednostki)then local html_modul=require("Module:Html"); nazwa_jednostki=html_modul["NazwaStronyAdresu"](nazwa_jednostki,true); else nazwa_jednostki=nazwy_modul["NAZWASTRONY"]{["kod języka"]=kod_jezyka,["kod projektu"]=kod_projektu,}; end; end; nazwa_przestrzeni_nazw=nazwa_przestrzeni_nazw_blad or nazwa_przestrzeni_nazw; if(not mw.ustring.match(nazwa_jednostki,"^:"))then if(nazwa_przestrzeni_nazw~="")then if(czy_biezaca_wiki)then local nazwy_np_modul=mw.loadData("Module:Nazwy/Np"); if(nazwa_przestrzeni_nazw==nazwy_np_modul.Template)then local nazwa_przestrzeni_nazw_d=require("Module:Nazwy")["NAZWAPRZESTRZENI"](nazwa_jednostki); if(nazwa_przestrzeni_nazw_d==nazwy_np_modul.Template)then nazwa_przestrzeni_nazw=nazwy_np_modul.Template; end; elseif(nazwa_przestrzeni_nazw==nazwy_np_modul.Module)then local nazwa_przestrzeni_nazw_d=require("Module:Nazwy")["NAZWAPRZESTRZENI"](nazwa_jednostki); if(nazwa_przestrzeni_nazw_d==nazwy_np_modul.Module)then nazwa_przestrzeni_nazw=nazwy_np_modul.Module; end; end; else local template_prze=nazwy_modul.NpDane{nazwa="Template",["kod języka"]=kod_jezyka,["kod projektu"]=kod_projektu,}; local module_prze=nazwy_modul.NpDane{nazwa="Module",["kod języka"]=kod_jezyka,["kod projektu"]=kod_projektu,}; if(nazwa_przestrzeni_nazw==template_prze)then local nazwa_przestrzeni_nazw_d=nazwy_modul["NAZWAPRZESTRZENI"]{[1]=nazwa_jednostki,["kod języka"]=kod_jezyka,["kod projektu"]=kod_projektu,}; if(nazwa_przestrzeni_nazw_d==template_prze)then nazwa_przestrzeni_nazw=template_prze; end; elseif(nazwa_przestrzeni_nazw==module_prze)then local nazwa_przestrzeni_nazw_d=nazwy_modul["NAZWAPRZESTRZENI"]{[1]=nazwa_jednostki,["kod języka"]=kod_jezyka,["kod projektu"]=kod_projektu,}; if(nazwa_przestrzeni_nazw_d==module_prze)then nazwa_przestrzeni_nazw=module_prze; end; end; end; if(not nazwa_przestrzeni_nazw_blad)then if(((czy_uwzglednic_alternatywna_nazwe==nil)and true or czy_uwzglednic_alternatywna_nazwe) and frame.args[1])then local wytrimowana_nazwa_przestrzeni_nazw=mw.text.trim(frame.args[1]); if(mw.ustring.match(wytrimowana_nazwa_przestrzeni_nazw,"^[%w%s_]*$"))then if(czy_biezaca_wiki)then local nazwy_modul=require("Module:Nazwy"); local czy_blad_nazwy_przestrzeni_nazw=nazwy_modul.Np{nazwa=wytrimowana_nazwa_przestrzeni_nazw,["istnieje"]="tak",["wynik błędu nietekstowy"]="tak",} return czy_blad_nazwy_przestrzeni_nazw or "(błąd)"; else local nazwy_modul=require("Module:Nazwy"); local nazwa_przestrzeni_nazw_blad2=nazwy_modul.NpDane{nazwa=wytrimowana_nazwa_przestrzeni_nazw,["kod języka"]=kod_jezyka,["kod projektu"]=kod_projektu,["istnieje"]="tak",["wynik błędu nietekstowy"]="tak",}; return nazwa_przestrzeni_nazw_blad2 or "(błąd)"; end; else return "(błąd)"; end; else local wytrimowana_nazwa_przestrzeni_nazw=mw.text.trim(nazwa_przestrzeni_nazw); if(mw.ustring.match(wytrimowana_nazwa_przestrzeni_nazw,"^[%w%s_]*$"))then return wytrimowana_nazwa_przestrzeni_nazw; else return "(błąd)"; end; end; else return nazwa_przestrzeni_nazw; end; else return require("Module:Nazwy")["NAZWAPRZESTRZENI"]{[1]=nazwa_jednostki,["kod języka"]=kod_jezyka,["kod projektu"]=kod_projektu,}; end; else return require("Module:Nazwy")["NAZWAPRZESTRZENI"]{[1]=nazwa_jednostki,["kod języka"]=kod_jezyka,["kod projektu"]=kod_projektu,}; end; end; function p.Nazwa_przestrzeni_nazw_przedmiotowa_dyskusji_2(frame,czy_uwzglednic_alternatywna_nazwe,i,typ) local numer_jednostki=i or frame.args["numer jednostki"]; local liczba_numer_jednostki=((numer_jednostki)and(tonumber(numer_jednostki))or 0); local pudelko_modul=require("Module:Pudełko"); local tab_nazwa={ ["przedmiotowa"]="Nazwa przedmiotowej przestrzeni nazw", ["dyskusja"]="Nazwa przestrzeni nazw", }; local nazwa_przestrzeni_nazw=pudelko_modul[tab_nazwa[typ]](frame,czy_uwzglednic_alternatywna_nazwe,liczba_numer_jednostki); local nazwy_modul=require("Module:Nazwy"); if(nazwa_przestrzeni_nazw=="")then local nazwa_jednostki=pudelko_modul["Nazwa jednostki"](frame,liczba_numer_jednostki); local kod_jezyka,kod_projektu=p.Wikikody_kontenera(frame,liczba_numer_jednostki); local tab_nazwa={ ["przedmiotowa"]="PRZEDMIOTOWAPRZESTRZEŃ", ["dyskusja"]="PRZESTRZEŃDYSKUSJI", }; nazwa_przestrzeni_nazw=nazwy_modul[tab_nazwa[typ]]{nazwa=nazwa_jednostki,["kod języka"]=kod_jezyka,["kod projektu"]=kod_projektu,}; else if(typ=="dyskusja")then local wiki_modul=require("Module:Wiki"); local czy_biezaca=wiki_modul["CzyBieżącaWiki"]{["kod języka"]=kod_jezyka,["kod projektu"]=kod_projektu,}; if(czy_biezaca)then nazwa_przestrzeni_nazw=nazwy_modul.Np{[typ]="tak",nazwa=nazwa_przestrzeni_nazw}; else nazwa_przestrzeni_nazw=nazwy_modul.NpDane{[typ]="tak",nazwa=nazwa_przestrzeni_nazw,["kod języka"]=kod_jezyka,["kod projektu"]=kod_projektu,}; end; end; end; return nazwa_przestrzeni_nazw; end; function p.Kod_jezyka(frame,i,wartosc_domyslna) local pudelko_modul=require("Module:Pudełko"); if(not i)then return pudelko_modul["Kod języka tego projektu"]();end; local pf=frame.getParent and frame:getParent() or {args={}}; if(i==0)then return pudelko_modul["Kod języka tego projektu"](); elseif(i==1)then local parametry_modul=require("Module:Parametry"); local kod_jezyka=frame.args["kod języka"] or frame.args["kod języka 1"] or pf.args["kod języka"] or pf.args["kod języka 1"] return ((kod_jezyka)and(kod_jezyka~=""))and mw.text.trim(kod_jezyka) or ((parametry_modul.CzyTak(wartosc_domyslna))and wartosc_domyslna or nil); elseif(i>1)then local parametry_modul=require("Module:Parametry"); local kod_jezyka=frame.args["kod języka "..i] or pf.args["kod języka "..i] return ((kod_jezyka)and(kod_jezyka~=""))and mw.text.trim(kod_jezyka) or ((parametry_modul.CzyTak(wartosc_domyslna))and wartosc_domyslna or nil); end; end function p.Kod_projektu(frame,i,wartosc_domyslna) local pudelko_modul=require("Module:Pudełko"); if(not i)then return pudelko_modul["Kod projektu tego projektu"]();end; local pf=frame.getParent and frame:getParent() or {args={}}; if(i==0)then return pudelko_modul["Kod projektu tego projektu"](); elseif(i==1)then local parametry_modul=require("Module:Parametry"); local kod_projektu=frame.args["kod projektu"] or frame.args["kod projektu 1"] or pf.args["kod projektu"] or pf.args["kod projektu 1"] return ((kod_projektu)and(kod_projektu~=""))and mw.text.trim(kod_projektu) or ((parametry_modul.CzyTak(wartosc_domyslna))and wartosc_domyslna or nil); elseif(i>1)then local parametry_modul=require("Module:Parametry"); local kod_projektu=frame.args["kod projektu "..i] or pf.args["kod projektu "..i] return ((kod_projektu)and(kod_projektu~=""))and mw.text.trim(kod_projektu) or ((parametry_modul.CzyTak(wartosc_domyslna))and wartosc_domyslna or nil); end; end function p.Klucz_projektu(frame,i,wartosc_domyslna_jezyka,wartosc_domyslna_projektu) local pf=frame.getParent and frame:getParent() or {args={}}; local klucz_projektu; local function domyslne_klucz(klucz_projektu) local parametry_modul=require("Module:Parametry"); return ((klucz_projektu)and(klucz_projektu~=""))and mw.text.trim(klucz_projektu)or((parametry_modul.CzyTak(wartosc_domyslna_jezyka)and(parametry_modul.CzyTak(wartosc_domyslna_projektu)))and (wartosc_domyslna_jezyka..":" ..wartosc_domyslna_projektu)or(parametry_modul.CzyTak(wartosc_domyslna_jezyka) and wartosc_domyslna_jezyka or (parametry_modul.CzyTak(wartosc_domyslna_projektu) and wartosc_domyslna_projektu or nil))); end; if(i==0)then return nil; elseif(i==1)then local klucz_projektu=frame.args["klucz projektu"] or frame.args["klucz projektu 1"] or pf.args["klucz projektu"] or pf.args["klucz projektu 1"]; return domyslne_klucz(klucz_projektu); elseif(i>1)then local klucz_projektu=frame.args["klucz projektu "..i] or pf.args["klucz projektu "..i]; return domyslne_klucz(klucz_projektu); end; end; function p.Wikikody_kontenera(frame,i,wartosc_domyslna_jezyka,wartosc_domyslna_projektu) local wiki_modul=require("Module:Wiki"); local kod_jezyka,kod_projektu=wiki_modul.KodyWiki(p.Klucz_projektu(frame,i,wartosc_domyslna_jezyka,wartosc_domyslna_projektu),p.Kod_jezyka(frame,i,wartosc_domyslna_jezyka),p.Kod_projektu(frame,i,wartosc_domyslna_projektu)); return kod_jezyka,kod_projektu; end; function p.Nazwa_przestrzeni_nazw_od_typu_jednostki(typ,args,bez_analizy) if(not bez_analizy)then local parametry_modul=require("Module:Parametry"); if((((not parametry_modul.CzyTak(args["obsługiwane jednostki jako nieopisowe strony"]))and((typ=="artykuł")or(typ=="podręcznik")))or (typ=="artykuł")))then return ""; elseif(((not parametry_modul.CzyTak(args["obsługiwane jednostki jako nieopisowe strony"]))and((typ=="artykuł dla dzieci")or(typ=="podręcznik dla dzieci")))or(typ=="artykuł dla dzieci"))then return "Wikijunior"; elseif((not parametry_modul.CzyTak(args["obsługiwane brudnopisy jako normalne strony"])) and(((not parametry_modul.CzyTak(args["obsługiwane jednostki jako nieopisowe strony"]))and(parametry_modul.CzyTak(args["obsługiwane jednostki brudnopisu projektu"])and (typ=="podręcznik brudnopisu projektu" or typ=="artykuł brudnopisu projektu")or (typ=="jednostka brudnopisu projektu")) or (typ=="strona brudnopisu projektu"))or(typ=="strona projektu"))or (typ=="strona projektu"))then return "Project"; elseif((parametry_modul.CzyTak(args["obsługiwane strony jako niebrudnopisowe jednostki programowe"]))and (typ=="strona szablonu") or(not parametry_modul.CzyTak(args["obsługiwane brudnopisy jako normalne strony"]) and((not parametry_modul.CzyTak(args["obsługiwane opisy jako strony jednostek programowych"]) and not parametry_modul.CzyTak(args["obsługiwane jednostki jako nieopisowe strony"]) and not parametry_modul.CzyTak(args["obsługiwane nieudokumentowane szablony jako szablony"])) and((typ=="strona brudnopisu szablonu")or(typ=="strona brudnopisu opisu szablonu"))or(typ=="strona brudnopisu szablonu")) or((not parametry_modul.CzyTak(args["obsługiwane opisy jako strony jednostek programowych"]) and not parametry_modul.CzyTak(args["obsługiwane jednostki jako nieopisowe strony"]) and not parametry_modul.CzyTak(args["obsługiwane nieudokumentowane szablony jako szablony"])) and((typ=="strona szablonu")or(typ=="strona opisu szablonu"))or(typ=="strona szablonu"))))then return "Template"; elseif((parametry_modul.CzyTak(args["obsługiwane strony jako niebrudnopisowe jednostki programowe"]))and (typ=="strona modułu") or(not parametry_modul.CzyTak(args["obsługiwane brudnopisy jako normalne strony"]) and((not parametry_modul.CzyTak(args["obsługiwane opisy jako strony jednostek programowych"]) and not parametry_modul.CzyTak(args["obsługiwane jednostki jako nieopisowe strony"])) and((typ=="strona brudnopisu modułu")or(typ=="strona brudnopisu opisu modułu"))or(typ=="strona brudnopisu modułu")) or((not parametry_modul.CzyTak(args["obsługiwane opisy jako strony jednostek programowych"]) and not parametry_modul.CzyTak(args["obsługiwane jednostki jako nieopisowe strony"])) and((typ=="strona modułu")or(typ=="strona opisu modułu"))or(typ=="strona modułu"))))then return "Module"; elseif(not parametry_modul.CzyTak(args["obsługiwane jednostki użytkownika jako normalne strony"]) and(((not parametry_modul.CzyTak(args["obsługiwane jednostki jako nieopisowe strony"]))and(parametry_modul.CzyTak(args["obsługiwane jednostki użytkownika"])and (typ=="podręcznik użytkownika" or typ=="artykuł użytkownika") or (typ=="jednostka użytkownika")) or (typ=="strona użytkownika"))or(typ=="strona główna użytkownika"))or(typ=="strona użytkownika"))then return "User"; elseif(typ=="strona pliku")then return "File"; elseif(typ=="strona kategorii")then return "Category"; elseif(typ=="strona pomocy")then return "Help"; elseif(typ=="strona komunikatu")then return "MediaWiki"; elseif(typ=="strona specjalna")then return "Special"; elseif(typ=="strona gadżetu")then return "Gadget"; elseif(typ=="strona główna projektu")then return "Project"; elseif(typ=="strona główna dla dzieci")then return "Wikijunior"; end; return; end; if(typ)then if((typ=="artykuł")or(typ=="podręcznik"))then return ""; elseif((typ=="artykuł dla dzieci")or(typ=="podręcznik dla dzieci"))then return "Wikijunior"; elseif((typ=="podręcznik brudnopisu projektu")or(typ=="artykuł brudnopisu projektu")or(typ=="jednostka brudnopisu projektu")or(typ=="strona brudnopisu projektu")or(typ=="strona projektu"))then return "Project"; elseif((typ=="strona szablonu")or(typ=="strona opisu szablonu")or(typ=="strona brudnopisu szablonu")or(typ=="strona brudnopisu opisu szablonu"))then return "Template"; elseif((typ=="strona modułu")or(typ=="strona opisu modułu")or(typ=="strona brudnopisu modułu")or(typ=="strona brudnopisu opisu modułu"))then return "Module"; elseif((typ=="podręcznik użytkownika")or(typ=="artykuł użytkownika")or(typ=="jednostka użytkownika")or(typ=="strona użytkownika")or(typ=="strona główna użytkownika"))then return "User"; elseif(typ=="strona pliku")then return "File"; elseif(typ=="strona kategorii")then return "Category"; elseif(typ=="strona pomocy")then return "Help"; elseif(typ=="strona komunikatu")then return "MediaWiki"; elseif(typ=="strona specjalna")then return "Special"; elseif(typ=="strona gadżetu")then return "Gadget"; elseif(typ=="strona główna projektu")then return "Project"; elseif(typ=="strona główna dla dzieci")then return "Wikijunior"; end; end; end; function p.Typ_jednostki_uzyskany_z_frame(frame,i) local numer_jednostki=i or frame.args["numer jednostki"]; local liczba_numer_jednostki=tonumber(numer_jednostki) or 0; local pf=frame.getParent and frame:getParent() or {args={}}; local typ; if liczba_numer_jednostki~=0 then typ=liczba_numer_jednostki and( (frame.args["typ jednostki "..liczba_numer_jednostki] or frame.args["typ jednostki i"]) or (pf.args["typ jednostki "..liczba_numer_jednostki] or pf.args["typ jednostki i"]) ); if(not typ)then local nazwa_jednostki=p.Nazwy_przestrzeni_i_jednostki_podane_o_pewnym_numerze(frame,liczba_numer_jednostki,2); if(nazwa_jednostki)then if(not mw.ustring.match(mw.text.trim(nazwa_jednostki),"^:"))then local nazwa_przesrzeni_nazw=p.Nazwy_przestrzeni_i_jednostki_podane_o_pewnym_numerze(frame,liczba_numer_jednostki,1); if(not nazwa_przesrzeni_nazw)then typ=frame.args["typ jednostki"] or pf.args["typ jednostki"]; end; end; end; end; else typ=frame.args["typ jednostki"] or pf.args["typ jednostki"]; end; return typ,liczba_numer_jednostki; end; function p.Czy_dyskusja_typu_jednostki_z_frame_od_dyskusja_typu_jednostki(frame,i) local numer_jednostki=i or frame.args["numer jednostki"]; local liczba_numer_jednostki=((numer_jednostki)and(tonumber(numer_jednostki))or 0); local pf=frame:getParent() or {args={},}; local function FuncTemp(liczba_numer_jednostki) local dyskusja_parametr="dyskusja typu jednostki"; if(liczba_numer_jednostki==0)then return frame.args[dyskusja_parametr] or pf.args[dyskusja_parametr]; else return ((frame.args[dyskusja_parametr.." "..liczba_numer_jednostki] or pf.args[dyskusja_parametr.." "..liczba_numer_jednostki]) or (frame.args[dyskusja_parametr.." i"] or pf.args[dyskusja_parametr.." i"]) or(frame.args[dyskusja_parametr] or pf.args[dyskusja_parametr])); end; end; local czy_dyskusja=FuncTemp(liczba_numer_jednostki); local parametry_modul=require("Module:Parametry"); local czy_dyskusja=parametry_modul.CzyTak(czy_dyskusja); return czy_dyskusja; end; function p.Nazwa_przestrzeni_nazw_uzyskana_z_typu_jednostki_z_frame(frame,i) local typ=p.Typ_jednostki_uzyskany_z_frame(frame,i); local nazwa_przestrzeni_nazw=typ and p.Nazwa_przestrzeni_nazw_od_typu_jednostki(typ,nil,true) or nil; if(nazwa_przestrzeni_nazw)then local czy_dyskusja=p.Czy_dyskusja_typu_jednostki_z_frame_od_dyskusja_typu_jednostki(frame,i); if(czy_dyskusja)then if(nazwa_przestrzeni_nazw=="")then return "Talk"; else return nazwa_przestrzeni_nazw.." talk"; end; else return nazwa_przestrzeni_nazw; end; else return nil; end; end; function p.Typ_jednostki(frame, kod_liczbowy_przestrzeni_nazw,i,numer_argorytmu) local parametry_modul=require("Module:Parametry"); local analiza=parametry_modul.CzyTak(frame.args["analiza"]); local typ,liczba_numer_jednostki=p.Typ_jednostki_uzyskany_z_frame(frame,i); local uzyskana_przestrzen_nazw_od_typu_jednostki; local nazwa_przestrzeni_nazw_podana,nazwa_jednostki_podana=p.Nazwy_przestrzeni_i_jednostki_podane_o_pewnym_numerze(frame,liczba_numer_jednostki); if((not analiza)and(typ))then if(typ~="")then uzyskana_przestrzen_nazw_od_typu_jednostki=p.Nazwa_przestrzeni_nazw_od_typu_jednostki(typ,frame.args); if(uzyskana_przestrzen_nazw_od_typu_jednostki)then if((not nazwa_przestrzeni_nazw_podana)and(not nazwa_jednostki_podana))then return typ; end; else return "(błąd typu jednostki)"; end; end; end; local nazwa_przestrzeni_nazw,nazwa_jednostki=p.Uzyskanie_nazw_jednostki(frame,kod_liczbowy_przestrzeni_nazw,liczba_numer_jednostki,numer_argorytmu); local nazwy_modul=require("Module:Nazwy"); local kod_jezyka,kod_projektu=p.Wikikody_kontenera(frame,liczba_numer_jednostki); local wiki_modul=require("Module:Wiki"); local czy_biezaca=wiki_modul["CzyBieżącaWiki"]{["kod języka"]=kod_jezyka,["kod projektu"]=kod_projektu,}; local czy_blad_nazwa_przestrzeni_nazw; if(czy_biezaca)then czy_blad_nazwa_przestrzeni_nazw=nazwy_modul.Np{nazwa=nazwa_przestrzeni_nazw,["kanoniczna"]="tak",["nazwij projektem"]="tak",["nazwij dyskusją projektu"]="tak",["istnieje"]="tak",["wynik błędu nietekstowy"]="tak",} else czy_blad_nazwa_przestrzeni_nazw=nazwy_modul.NpDane{nazwa=nazwa_przestrzeni_nazw,["kanoniczna"]="tak",["nazwij projektem"]="tak",["nazwij dyskusją projektu"]="tak",["kod języka"]=kod_jezyka,["kod projektu"]=kod_projektu,["istnieje"]="tak",["wynik błędu nietekstowy"]="tak",} end; if(not czy_blad_nazwa_przestrzeni_nazw)then return "(błąd nazwy przestrzeni nazw)";end; nazwa_przestrzeni_nazw=czy_blad_nazwa_przestrzeni_nazw; --- --- if((not analiza)and(typ))then if(typ~="")then ---typ jednostki if(uzyskana_przestrzen_nazw_od_typu_jednostki)then if((nazwa_przestrzeni_nazw_podana)and(not nazwa_jednostki_podana))then if(uzyskana_przestrzen_nazw_od_typu_jednostki==nazwa_przestrzeni_nazw)then return typ; else return "(błąd niezgodności)"; end; end; else return "(błąd typu jednostki)"; end; end; end; local function Typ_jednostki() if(nazwa_jednostki~="")then --local kod_jezyka,kod_projektu=KodyWikiPudelka(frame,liczba_numer_jednostki); --local klucz_projektu=kod_projektu..":"..kod_jezyka; local pudelko_modul=require("Module:Pudełko"); local pelna_nazwa_strony=((nazwa_przestrzeni_nazw~="")and nazwa_przestrzeni_nazw..":" or "")..nazwa_jednostki; if(pudelko_modul.CzyNiepoprawnaNazwa(pelna_nazwa_strony))then return "(błąd nazwy jednostki)";end; local nazwy_modul=require("Module:Nazwy") pelna_nazwa_strony=nazwy_modul["PEŁNANAZWASTRONY"]{[1]=pelna_nazwa_strony,["kod języka"]=kod_jezyka,["kod projektu"]=kod_projektu,}; local norm_przed_lub_dyskusji=p.Normalna_przedmiotowa_lub_dyskusji_nazwa_przestrzeni_nazw(nazwa_przestrzeni_nazw, kod_liczbowy_przestrzeni_nazw,kod_jezyka,kod_projektu); if(kod_projektu==pudelko_modul["Kod projektu tego projektu"]())then local nazwa_strony_glownej_dla_dzieci_ze_zmiennej=p.Nazwa_strony_bazowej_dla_dzieci_ze_zmiennej(frame,liczba_numer_jednostki,kod_jezyka); if(nazwa_strony_glownej_dla_dzieci_ze_zmiennej=="")then return "(błąd nazwy strony głównej dla dzieci)";end; local nazwa_strony_glownej_wikijuniora=p.Nazwa_strony_bazowej_dla_dzieci_z_wikidanych(kod_jezyka); local nazwa_strony_glownej_dla_dzieci_uzyskana=(not nazwa_strony_glownej_dla_dzieci_ze_zmiennej)and nazwa_strony_glownej_wikijuniora or nazwa_strony_glownej_dla_dzieci_ze_zmiennej; if(nazwa_strony_glownej_dla_dzieci_uzyskana)then if(pudelko_modul.CzyNiepoprawnaNazwa(nazwa_strony_glownej_dla_dzieci_uzyskana))then return "(błąd nazwy strony głównej dla dzieci)";end; nazwa_strony_glownej_dla_dzieci_uzyskana=nazwy_modul["PEŁNANAZWASTRONY"]{[1]=nazwa_strony_glownej_dla_dzieci_uzyskana,["kod języka"]=kod_jezyka,["kod projektu"]=kod_projektu,}; if(pelna_nazwa_strony==nazwa_strony_glownej_dla_dzieci_uzyskana)then return "strona główna dla dzieci";end; end; end; local nazwa_strony_glownej_projektu_ze_zmiennej=p.Nazwa_strony_bazowej_projektu_ze_zmiennej(frame,liczba_numer_jednostki,kod_jezyka,kod_projektu); if(nazwa_strony_glownej_projektu_ze_zmiennej=="")then return "(błąd nazwy strony głównej projektu)";end; local nazwa_strony_glownej_projektu_z_wikidanych=p.Nazwa_strony_bazowej_projektu_z_wikidanych(kod_jezyka,kod_projektu); local nazwa_strony_glownej_projektu_uzyskana=(not nazwa_strony_glownej_projektu_ze_zmiennej)and nazwa_strony_glownej_projektu_z_wikidanych or nazwa_strony_glownej_projektu_ze_zmiennej; if(nazwa_strony_glownej_projektu_uzyskana)then if(pudelko_modul.CzyNiepoprawnaNazwa(nazwa_strony_glownej_projektu_uzyskana))then return "(błąd nazwy strony głównej projektu)";end; nazwa_strony_glownej_projektu_uzyskana=nazwy_modul["PEŁNANAZWASTRONY"]{[1]=nazwa_strony_glownej_projektu_uzyskana,["kod języka"]=kod_jezyka,["kod projektu"]=kod_projektu,}; if(pelna_nazwa_strony==nazwa_strony_glownej_projektu_uzyskana)then return "strona główna projektu";end; end; if(norm_przed_lub_dyskusji=="")then local parametry_modul=require("Module:Parametry"); if(parametry_modul.CzyTak(frame.args["obsługiwane jednostki jako nieopisowe strony"]))then return "artykuł"; else local it=mw.ustring.match(nazwa_jednostki,"^[^/]+$"); if(it)then return "podręcznik";else return "artykuł";end; end; elseif(norm_przed_lub_dyskusji=="Wikijunior")then local parametry_modul=require("Module:Parametry"); if(parametry_modul.CzyTak(frame.args["obsługiwane jednostki jako nieopisowe strony"]))then return "artykuł dla dzieci"; else local it=mw.ustring.match(nazwa_jednostki,"^[^/]+$"); if(it)then return "podręcznik dla dzieci";else return "artykuł dla dzieci";end; end; elseif(norm_przed_lub_dyskusji=="User")then local parametry_modul=require("Module:Parametry"); if(parametry_modul.CzyTak(frame.args["obsługiwane jednostki użytkownika jako normalne strony"]))then return "strona użytkownika"; else local czy_podstrony=mw.ustring.match(nazwa_jednostki,"^[^/]+$") if(czy_podstrony)then return "strona główna użytkownika"; else if(not parametry_modul.CzyTak(frame.args["obsługiwane jednostki jako nieopisowe strony"]))then if(parametry_modul.CzyTak(frame.args["obsługiwane jednostki użytkownika"]))then local czy_ksiazka=mw.ustring.match(nazwa_jednostki,"^[^/]+/[^/]*$"); if(czy_ksiazka)then return "podręcznik użytkownika"; else return "artykuł użytkownika"; end; else return "jednostka użytkownika"; end; else return "strona użytkownika"; end; end; end; elseif(norm_przed_lub_dyskusji=="File")then return "strona pliku"; elseif(norm_przed_lub_dyskusji=="Category")then return "strona kategorii"; elseif(norm_przed_lub_dyskusji=="Project")then local parametry_modul=require("Module:Parametry"); if(parametry_modul.CzyTak(frame.args["obsługiwane brudnopisy jako normalne strony"]))then return "strona projektu";end; if(mw.ustring.match(nazwa_jednostki,"^%s*[Bb]rudnopis/[^/]*/.*"))then if(not parametry_modul.CzyTak(frame.args["obsługiwane jednostki jako nieopisowe strony"]))then if(parametry_modul.CzyTak(frame.args["obsługiwane jednostki brudnopisu projektu"]))then local czy_ksiazka=mw.ustring.match(nazwa_jednostki,"^%s*[Bb]rudnopis/[^/]*/[^/]*$"); if(czy_ksiazka)then return "podręcznik brudnopisu projektu"; else return "artykuł brudnopisu projektu"; end; else return "jednostka brudnopisu projektu"; end; else return "strona brudnopisu projektu"; end; else return "strona projektu"; end; elseif(norm_przed_lub_dyskusji=="Help")then return "strona pomocy"; elseif(norm_przed_lub_dyskusji=="MediaWiki")then return "strona komunikatu"; elseif(norm_przed_lub_dyskusji=="Special")then return "strona specialna"; elseif(norm_przed_lub_dyskusji=="Gadget")then return "strona gadżetu"; elseif(nazwa_przestrzeni_nazw=="Template")then local parametry_modul=require("Module:Parametry"); if(parametry_modul.CzyTak(frame.args["obsługiwane strony jako niebrudnopisowe jednostki programowe"]))then return "strona szablonu";end; local function CzySzablonAlboOpis(nazwa_przestrzeni_nazw,nazwa_jednostki,szablon,opis_szablonu,strona_szablonu,prefix) local parametry_modul=require("Module:Parametry"); if(parametry_modul.CzyTak(frame.args["obsługiwane opisy jako strony jednostek programowych"]) or parametry_modul.CzyTak(frame.args["obsługiwane jednostki jako nieopisowe strony"]))then return szablon; else if(mw.ustring.match(nazwa_jednostki,"^"..prefix..".*/opis$"))then return opis_szablonu; else if(not parametry_modul.CzyTak(frame.args["obsługiwane nieudokumentowane szablony jako szablony"]))then local czy_brudnopis=mw.ustring.match(nazwa_jednostki,"^"..prefix..".*$"); if(czy_brudnopis)then local pagename=(nazwa_przestrzeni_nazw~="")and nazwa_przestrzeni_nazw..":"..nazwa_jednostki or nazwa_jednostki; local czy_istnieje_strona,tab=require("Module:Techniczne").PoliczZbiory(pagename); if(czy_istnieje_strona==1)then local czy_brudnopis_opisu_szablonu=require("Module:Łatki").contentMatch{ [1]='<noinclude>.-{{%s*[Dd]okumentacja%s*}}.-</noinclude>', [2]='<noinclude>.-{{%s*[Dd]okumentacja%s*|.-</noinclude>',pagename=pagename,namespace=0 }; if(not czy_brudnopis_opisu_szablonu)then return opis_szablonu;else return szablon;end; else return szablon; end; else return strona_szablonu; end; else return szablon; end; end; end; end; if((not parametry_modul.CzyTak(frame.args["obsługiwane brudnopisy jako normalne strony"]))and(mw.ustring.match(nazwa_jednostki,"^%s*[Bb]rudnopis/[^/]*/.*")))then return CzySzablonAlboOpis(nazwa_przestrzeni_nazw,nazwa_jednostki,"strona brudnopisu szablonu","strona brudnopisu opisu szablonu","strona szablonu","[Bb]rudnopis/[^/]*/"); else return CzySzablonAlboOpis(nazwa_przestrzeni_nazw,nazwa_jednostki,"strona szablonu","strona opisu szablonu","strona szablonu",""); end; elseif(nazwa_przestrzeni_nazw=="Module")then local parametry_modul=require("Module:Parametry"); if(parametry_modul.CzyTak(frame.args["obsługiwane strony jako niebrudnopisowe jednostki programowe"]))then return "strona modułu";end; if((not parametry_modul.CzyTak(frame.args["obsługiwane brudnopisy jako normalne strony"]))and(mw.ustring.match(nazwa_jednostki,"^%s*[Bb]rudnopis/[^/]*/.*")))then if(parametry_modul.CzyTak(frame.args["obsługiwane opisy jako strony jednostek programowych"]) or parametry_modul.CzyTak(frame.args["obsługiwane jednostki jako nieopisowe strony"]))then return "strona brudnopisu modułu" else local pelna_nazwa_strony=(nazwa_przestrzeni_nazw~="")and nazwa_przestrzeni_nazw..":"..nazwa_jednostki or nazwa_jednostki; pelna_nazwa_strony=require("Module:Nazwy")["PEŁNANAZWASTRONY"]{[1]=pelna_nazwa_strony,["kod języka"]=kod_jezyka,["kod projektu"]=kod_projektu,}; local pelna_nazwa_strony_brudnopisu_opisu_modulu=require("Module:Techniczne")["PełnaNazwaOpisuModułu"](pelna_nazwa_strony); if(pelna_nazwa_strony==pelna_nazwa_strony_brudnopisu_opisu_modulu)then return "strona brudnopisu opisu modułu"; else return "strona brudnopisu modułu"; end; end; else if(parametry_modul.CzyTak(frame.args["obsługiwane opisy jako strony jednostek programowych"]) or parametry_modul.CzyTak(frame.args["obsługiwane jednostki jako nieopisowe strony"]))then return "strona modułu" else local pelna_nazwa_strony=(nazwa_przestrzeni_nazw~="")and nazwa_przestrzeni_nazw..":"..nazwa_jednostki or nazwa_jednostki; pelna_nazwa_strony=require("Module:Nazwy")["PEŁNANAZWASTRONY"]{[1]=pelna_nazwa_strony,["kod języka"]=kod_jezyka,["kod projektu"]=kod_projektu,}; local pelna_nazwa_opisu_modulu=require("Module:Techniczne")["PełnaNazwaOpisuModułu"](pelna_nazwa_strony); if(pelna_nazwa_strony==pelna_nazwa_opisu_modulu)then return "strona opisu modułu"; else return "strona modułu"; end; end; end; else return "inne"; end; end; return "inne"; end; local typ_jednostki=Typ_jednostki(); if(((analiza)or(nazwa_jednostki_podana))and(typ)and(typ~=""))then if(typ_jednostki==typ)then return typ_jednostki; elseif(nazwa_jednostki_podana)then return "(błąd parametrów pudełkowych)" else return "(błąd typu jednostki)"; end; end; return typ_jednostki; end; function p.Uzyskanie_nazw_jednostki(frame,kod_liczbowy_przestrzeni_nazw,i,numer_argorytmu,co_ma_liczyc) local nazwa_przestrzeni_fun,nazwa_jednostki_fun; if(kod_liczbowy_przestrzeni_nazw==0)then nazwa_przestrzeni_fun="Nazwa przestrzeni nazw"; nazwa_jednostki_fun="Nazwa jednostki"; elseif(kod_liczbowy_przestrzeni_nazw==1)then nazwa_przestrzeni_fun="Nazwa przedmiotowej przestrzeni nazw"; nazwa_jednostki_fun="Nazwa przedmiotowa jednostki"; elseif(kod_liczbowy_przestrzeni_nazw==2)then nazwa_przestrzeni_fun="Nazwa przestrzeni nazw dyskusji" nazwa_jednostki_fun="Nazwa dyskusji jednostki"; else nazwa_przestrzeni_fun="Nazwa przestrzeni nazw"; nazwa_jednostki_fun="Nazwa jednostki"; end; local pudelko_modul=require("Module:Pudełko"); if(not numer_argorytmu)then if((not i)or(i==0))then if((not co_ma_liczyc)or(co_ma_liczyc==0))then local nazwa_przestrzeni_nazw=pudelko_modul[nazwa_przestrzeni_fun](frame,false); local nazwa_jednostki=pudelko_modul["Nazwa jednostki"](frame); return nazwa_przestrzeni_nazw,nazwa_jednostki; elseif(co_ma_liczyc==1)then local nazwa_przestrzeni_nazw=pudelko_modul[nazwa_przestrzeni_fun](frame,false); return nazwa_przestrzeni_nazw; elseif(co_ma_liczyc==2)then return pudelko_modul["Nazwa jednostki"](frame); end; else if((not co_ma_liczyc)or(co_ma_liczyc==0))then local n=p.Nazwa_przestrzeni_nazw_dodatkowe(frame,i); local nazwa_przestrzeni_nazw=(n)and pudelko_modul[nazwa_przestrzeni_fun](frame,false,i) or pudelko_modul[nazwa_przestrzeni_fun.." 2"](frame,false,i); local nazwa_jednostki=(n)and pudelko_modul["Nazwa jednostki"](frame,i) or pudelko_modul[nazwa_jednostki_fun.." 2"](frame,i); return nazwa_przestrzeni_nazw,nazwa_jednostki; elseif(co_ma_liczyc==1)then local n=p.Nazwa_przestrzeni_nazw_dodatkowe(frame,i); local nazwa_przestrzeni_nazw=(n)and pudelko_modul[nazwa_przestrzeni_fun](frame,false,i) or pudelko_modul[nazwa_przestrzeni_fun.." 2"](frame,false,i); return nazwa_przestrzeni_nazw; elseif(co_ma_liczyc==2)then local n=p.Nazwa_przestrzeni_nazw_dodatkowe(frame,i); return (n)and pudelko_modul["Nazwa jednostki"](frame,i) or pudelko_modul[nazwa_jednostki_fun.." 2"](frame,i); end; end; else if(numer_argorytmu==0)then if((not co_ma_liczyc)or(co_ma_liczyc==0))then local nazwa_przestrzeni_nazw=pudelko_modul[nazwa_przestrzeni_fun](frame,false,i); local nazwa_jednostki=pudelko_modul["Nazwa jednostki"](frame,i); return nazwa_przestrzeni_nazw,nazwa_jednostki; elseif(co_ma_liczyc==1)then local nazwa_przestrzeni_nazw=pudelko_modul[nazwa_przestrzeni_fun](frame,false,i); return nazwa_przestrzeni_nazw; elseif(co_ma_liczyc==2)then return pudelko_modul["Nazwa jednostki"](frame,i); end; else if((not co_ma_liczyc)or(co_ma_liczyc==0))then local nazwa_przestrzeni_nazw=pudelko_modul[nazwa_przestrzeni_fun.." 2"](frame,false,i); local nazwa_jednostki=pudelko_modul[nazwa_jednostki_fun.." 2"](frame,i); return nazwa_przestrzeni_nazw,nazwa_jednostki; elseif(co_ma_liczyc==1)then local nazwa_przestrzeni_nazw=pudelko_modul[nazwa_przestrzeni_fun.." 2"](frame,false,i); return nazwa_przestrzeni_nazw; elseif(co_ma_liczyc==2)then return pudelko_modul[nazwa_jednostki_fun.." 2"](frame,i); end; end; end; end; function p.Nazwa_przestrzeni_nazw_dodatkowe(frame,numer_jednostki) local pf=frame.getParent and frame:getParent() or {args={}}; return frame.args["nazwa przestrzeni nazw "..tostring(numer_jednostki)] or pf.args["nazwa przestrzeni nazw "..tostring(numer_jednostki)] end; function p.Nazwa_jednostki(frame,i) local pf=frame.getParent and frame:getParent() or {args={}}; local nazwa_jednostki,liczba_numer_jednostki=p.Nazwy_przestrzeni_i_jednostki_podane_o_pewnym_numerze(frame,i,2); local kod_jezyka,kod_projektu=p.Wikikody_kontenera(frame,liczba_numer_jednostki); if(nazwa_jednostki)then nazwa_jednostki=mw.text.trim(nazwa_jednostki); nazwa_jednostki=mw.ustring.gsub(nazwa_jednostki,"^:",""); nazwa_jednostki=mw.ustring.gsub(nazwa_jednostki,"^([^#]*)#(.*)$","%1"); local parametry=mw.ustring.match(nazwa_jednostki,"^.*%?([^%?]+)$"); if(parametry and mw.ustring.match(parametry,"[^=]+=[^=]*"))then nazwa_jednostki=mw.ustring.gsub(nazwa_jednostki,"^(.*)%?([^%?]+)$","%1"); end; else local nazwy_modul=require("Module:Nazwy"); nazwa_jednostki=nazwy_modul["NAZWASTRONY"]{["kod języka"]=kod_jezyka,["kod projektu"]=kod_projektu,}; end; local parametry_modul=require("Module:Parametry"); nazwa_jednostki=parametry_modul["Odstępy"]{[1]=nazwa_jednostki,[2]="tak",}; return mw.getContentLanguage():ucfirst(nazwa_jednostki); end; function p.Nazwy_przestrzeni_i_jednostki_podane_o_pewnym_numerze(frame,i,co_podac) local pf=frame.getParent and frame:getParent() or {args={}}; local numer_jednostki=i or frame.args["numer jednostki"]; local liczba_numer_jednostki=tonumber(numer_jednostki) or 0; local nazwa_jednostki; local bool_numer_jednostki=(liczba_numer_jednostki~=0); local function Nazwa_jednostki() if bool_numer_jednostki then nazwa_jednostki=frame.args["nazwa jednostki "..liczba_numer_jednostki] or ((liczba_numer_jednostki==1)and(pf.args["cel"])) or pf.args[liczba_numer_jednostki]; else nazwa_jednostki=frame.args["nazwa jednostki"] or pf.args["nazwa jednostki"]; end; return nazwa_jednostki; end; local function Nazwa_przestrzeni_nazw() local nazwa_przestrzeni_nazw=bool_numer_jednostki and (frame.args["nazwa przestrzeni nazw i"] or pf.args["nazwa przestrzeni nazw i"] or frame.args["nazwa przestrzeni nazw "..liczba_numer_jednostki] or pf.args["nazwa przestrzeni nazw "..liczba_numer_jednostki]) or frame.args["nazwa przestrzeni nazw"] or pf.args["nazwa przestrzeni nazw"]; return nazwa_przestrzeni_nazw; end; if(not co_podac)then return Nazwa_przestrzeni_nazw(),Nazwa_jednostki(),liczba_numer_jednostki; elseif(co_podac==1)then return Nazwa_przestrzeni_nazw(),liczba_numer_jednostki; elseif(co_podac==2)then return Nazwa_jednostki(),liczba_numer_jednostki; else return Nazwa_przestrzeni_nazw(),Nazwa_jednostki(),liczba_numer_jednostki; end; end; function p.Jaka_nazwa_jednostki(frame,i,jaka) local nazwa_przestrzeni_nazw,nazwa_jednostki,liczba_numer_jednostki=p.Nazwy_przestrzeni_i_jednostki_podane_o_pewnym_numerze(frame,i); nazwa_przestrzeni_nazw=nazwa_przestrzeni_nazw or p.Nazwa_przestrzeni_nazw_uzyskana_z_typu_jednostki_z_frame(frame,liczba_numer_jednostki); ---- local nazwy_modul=require("Module:Nazwy"); nazwa_przestrzeni_nazw=nazwa_przestrzeni_nazw and mw.text.trim(nazwa_przestrzeni_nazw) or nazwy_modul["NAZWAPRZESTRZENI"](); if(nazwa_jednostki)then local html_modul=require("Module:Html"); nazwa_jednostki=html_modul["NazwaStronyAdresu"](nazwa_jednostki,true); else nazwa_jednostki=nazwy_modul["NAZWASTRONY"](); end; local kod_jezyka,kod_projektu=p.Wikikody_kontenera(frame,liczba_numer_jednostki); local wiki_modul=require("Module:Wiki"); local czy_biezaca=wiki_modul["CzyBieżącaWiki"]{["kod języka"]=kod_jezyka,["kod projektu"]=kod_projektu,}; if(jaka)then if(czy_biezaca)then local tab_parametry={nazwa=nazwa_przestrzeni_nazw,}; if(jaka=="przedmiotowa")then tab_parametry["przedmiotowa"]="tak";end; nazwa_przestrzeni_nazw=nazwy_modul.Np(tab_parametry); else local tab_parametry={nazwa=nazwa_przestrzeni_nazw,["kod języka"]=kod_jezyka,["kod projektu"]=kod_projektu,}; if(jaka=="przedmiotowa")then tab_parametry["przedmiotowa"]="tak";end; nazwa_przestrzeni_nazw=nazwy_modul.NpDane(tab_parametry); end; else if(czy_biezaca)then nazwa_przestrzeni_nazw=nazwy_modul.Np{nazwa=nazwa_przestrzeni_nazw}; else nazwa_przestrzeni_nazw=nazwy_modul.NpDane{nazwa=nazwa_przestrzeni_nazw,["kod języka"]=kod_jezyka,["kod projektu"]=kod_projektu,}; end; end; if(not mw.ustring.match(nazwa_jednostki,"^:"))then if(nazwa_przestrzeni_nazw~="")then if((not typ)or(typ=="przedmiotowa"))then if(czy_biezaca)then local nazwy_np_modul=mw.loadData("Module:Nazwy/Np"); if(nazwa_przestrzeni_nazw==nazwy_np_modul.Template)then local nazwa_przestrzeni_nazw_d=nazwy_modul["NAZWAPRZESTRZENI"](nazwa_jednostki); if(nazwa_przestrzeni_nazw_d==nazwy_np_modul.Template)then return nazwy_modul["NAZWASTRONY"](nazwa_jednostki); end; elseif(nazwa_przestrzeni_nazw==nazwy_np_modul.Module)then local nazwa_przestrzeni_nazw_d=nazwy_modul["NAZWAPRZESTRZENI"](nazwa_jednostki); if(nazwa_przestrzeni_nazw_d==nazwy_np_modul.Module)then return nazwy_modul["NAZWASTRONY"](nazwa_jednostki); end; end; else local template_prze=nazwy_modul.NpDane{nazwa="Template",["kod języka"]=kod_jezyka,["kod projektu"]=kod_projektu,}; local module_prze=nazwy_modul.NpDane{nazwa="Module",["kod języka"]=kod_jezyka,["kod projektu"]=kod_projektu,}; if(nazwa_przestrzeni_nazw==template_prze)then local nazwa_przestrzeni_nazw_d=nazwy_modul["NAZWAPRZESTRZENI"]{[1]=nazwa_jednostki,["kod języka"]=kod_jezyka,["kod projektu"]=kod_projektu,}; if(nazwa_przestrzeni_nazw_d==template_prze)then return nazwy_modul["NAZWASTRONY"]{[1]=nazwa_jednostki,["kod języka"]=kod_jezyka,["kod projektu"]=kod_projektu,}; end; elseif(nazwa_przestrzeni_nazw==module_prze)then local nazwa_przestrzeni_nazw_d=nazwy_modul["NAZWAPRZESTRZENI"]{[1]=nazwa_jednostki,["kod języka"]=kod_jezyka,["kod projektu"]=kod_projektu,}; if(nazwa_przestrzeni_nazw_d==module_prze)then return nazwy_modul["NAZWASTRONY"]{[1]=nazwa_jednostki,["kod języka"]=kod_jezyka,["kod projektu"]=kod_projektu,}; end; end; end; end; local parametry_modul=require("Module:Parametry"); nazwa_jednostki=parametry_modul["Odstępy"]{[1]=nazwa_jednostki,[2]="tak",}; return mw.getContentLanguage():ucfirst(nazwa_jednostki); else return nazwy_modul["NAZWASTRONY"]{[1]=nazwa_jednostki,["kod języka"]=kod_jezyka,["kod projektu"]=kod_projektu,}; end; else return nazwy_modul["NAZWASTRONY"]{[1]=nazwa_jednostki,["kod języka"]=kod_jezyka,["kod projektu"]=kod_projektu,}; end; end; function p.Czy_przestrzen_nazw_jest_obslugiwana(frame,jakas_przestrzen_nazw,kod_jezyka,kod_projektu) local nazwy_modul=require("Module:Nazwy"); local parametry_modul=require("Module:Parametry"); local wiki_modul=require("Module:Wiki"); local czy_biezaca=wiki_modul["CzyBieżącaWiki"]{["kod języka"]=kod_jezyka,["kod projektu"]=kod_projektu,}; if(czy_biezaca)then jakas_przestrzen_nazw=nazwy_modul.Np{nazwa=jakas_przestrzen_nazw}; else jakas_przestrzen_nazw=nazwy_modul.NpDane{nazwa=jakas_przestrzen_nazw,["kod języka"]=kod_jezyka,["kod projektu"]=kod_projektu,}; end; local function nazwa_przestrzeni_nazw_fun(nazwa_przestrzeni_nazw_iter) if(czy_biezaca)then nazwa_przestrzeni_nazw_iter=nazwy_modul.Np{nazwa=nazwa_przestrzeni_nazw_iter}; else nazwa_przestrzeni_nazw_iter=nazwy_modul.NpDane{nazwa=nazwa_przestrzeni_nazw_iter,["kod języka"]=kod_jezyka,["kod projektu"]=kod_projektu,}; end; if(jakas_przestrzen_nazw==nazwa_przestrzeni_nazw_iter)then return true; end; return false; end; for licznik,nazwa_przestrzeni_nazw in pairs(frame.args)do if(type(licznik)=="number")then local nazwa_przestrzeni_nazw_element,klucze_element=mw.ustring.match(nazwa_przestrzeni_nazw,"^%s*([%w%s]*)%s*:%s*(.-)%s*"); if(nazwa_przestrzeni_nazw_element and klucze_element)then local tab_klucze=mw.text.split(klucze_element,"%s*,%s*",false); local wiki_modul=require("Module:Wiki"); for _,klucz_element in ipairs(tab_klucze)do local kod_jezyka_obslugiwane,kod_projektu_obslugiwane=wiki_modul.KluczProjektu(klucz_element); if(kod_jezyka_obslugiwane==kod_jezyka and kod_projektu_obslugiwane==kod_projektu)then local wynik=nazwa_przestrzeni_nazw_fun(nazwa_przestrzeni_nazw_element); if(wynik)then return true;end; end; end; else local wynik=nazwa_przestrzeni_nazw_fun(nazwa_przestrzeni_nazw); if(wynik)then return true;end; end; end; end; return false; end; function p.Analiza_interwiki_czy_projekt_aktualny(frame,czy_jezyk,czy_projekt) local parametry_modul=require("Module:Parametry"); local p=parametry_modul.PobierzFrameEwentualnieParent(frame); local pudelko_modul=require("Module:Pudełko"); local wiki_modul=require("Module:Wiki"); local jezyk_biezacy=czy_jezyk and pudelko_modul["Kod języka tego projektu"](); local projekt_biezacy=czy_projekt and pudelko_modul["Kod projektu tego projektu"](); for i,_ in pairs(p.args)do if(type(i)=="number")then local klucz_projektu=pudelko_modul["Klucz projektu"](frame,i); local kod_jezyka=pudelko_modul["Kod języka"](frame,i); local kod_projektu=pudelko_modul["kod projektu"](frame,i); local jezyk,projekt=wiki_modul.KodyWiki(klucz_projektu,kod_jezyka,kod_projektu); if((czy_jezyk and (jezyk~=jezyk_biezacy))or(czy_projekt and(projekt~=projekt_biezacy)))then return "tak"; end; end; end; return; end; return p; 4aep8u8unsj54dem7crl9xk7vjn75ow 540395 540394 2026-04-23T15:19:10Z Persino 2851 540395 Scribunto text/plain local p={}; function p.Nazwa_strony_bazowej_projektu_z_wikidanych(kod_jezyka,kod_projektu) local strona=require("Module:Pudełko")["Strona główna tego projektu"](); local odpowiednik_strony=require("Module:Wiki").WikidaneOdpowiednikStrony{["nazwa strony"]=strona,["kod języka"]=kod_jezyka,["kod projektu"]=kod_projektu}; if(odpowiednik_strony)then local nazwy_modul=require("Module:Nazwy"); return nazwy_modul["PEŁNANAZWASTRONY"]{[1]=odpowiednik_strony,["kod języka"]=kod_jezyka,["kod projektu"]=kod_projektu,}; else local pudelko_modul=require("Module:Pudełko"); if((kod_jezyka==pudelko_modul["Kod języka tego projektu"]())and(kod_projektu==pudelko_modul["Kod projektu tego projektu"]()))then return strona; else local wiki_interwiki_modul=mw.loadData("Module:Wiki/interwiki"); local czy_w_wikidanych=wiki_interwiki_modul.tablica_kody_projektu_wikidane.lingwistyczne[kod_projektu] or wiki_interwiki_modul.tablica_kody_projektu_wikidane.specjalistyczne[kod_projektu]; return czy_w_wikidanych and "Main Page" or nil; end; end; end; function p.Nazwa_strony_bazowej_dla_dzieci_z_wikidanych(kod_jezyka) local strona=require("Module:Pudełko")["Strona główna dla dzieci tego projektu"](); local pudelko_modul=require("Module:Pudełko"); local kod_jezyka_tego_projektu=pudelko_modul["Kod języka tego projektu"](); if(kod_jezyka==kod_jezyka_tego_projektu)then return strona;end; local kod_projektu_tego_projektu=pudelko_modul["Kod projektu tego projektu"](); local odpowiednik_strony=require("Module:Wiki").WikidaneOdpowiednikStrony{["nazwa strony"]=strona,["kod języka"]=kod_jezyka,["kod projektu"]=kod_projektu_tego_projektu}; if(odpowiednik_strony)then local nazwy_modul=require("Module:Nazwy"); return nazwy_modul["PEŁNANAZWASTRONY"]{[1]=odpowiednik_strony,["kod języka"]=kod_jezyka,["kod projektu"]=kod_projektu_tego_projektu,}; else return "Wikijunior"; end; end; function p.Nazwa_strony_bazowej_projektu_ze_zmiennej(frame,i,kod_jezyka,kod_projektu) local pf=frame.getParent and frame:getParent() or {args={}}; local strona_glowna_projektu; if(i~=0)then local pudelko_modul=require("Module:Pudełko"); local kod_jezyka_tego_projektu=pudelko_modul["Kod języka tego projektu"](); local kod_projektu_tego_projektu=pudelko_modul["Kod projektu tego projektu"](); if(kod_jezyka==kod_jezyka_tego_projektu)and(kod_projektu==kod_projektu_tego_projektu)then strona_glowna_projektu=frame.args["strona główna projektu"] or pf.args["strona główna projektu"] else strona_glowna_projektu=(frame.args["strona główna projektu "..i] or pf.args["strona główna projektu "..i]) end; else strona_glowna_projektu=frame.args["strona główna projektu"] or pf.args["strona główna projektu"] end; local parametry_modul=require("Module:Parametry"); return (parametry_modul.CzyTak(strona_glowna_projektu))and require("Module:Nazwy")["PEŁNANAZWASTRONY"]{[1]=strona_glowna_projektu,["kod języka"]=kod_jezyka,["kod projektu"]=kod_projektu,} or (strona_glowna_projektu and "" or nil); end; function p.Nazwa_strony_bazowej_dla_dzieci_ze_zmiennej(frame,i,kod_jezyka) local pf=frame.getParent and frame:getParent() or {args={}}; local pudelko_modul=require("Module:Pudełko"); local strona_glowna_dla_dzieci; if(i~=0)then local kod_jezyka_tego_projektu=pudelko_modul["Kod języka tego projektu"](); if(kod_jezyka==kod_jezyka_tego_projektu)then strona_glowna_dla_dzieci=frame.args["strona główna dla dzieci"] or pf.args["strona główna dla dzieci"] else strona_glowna_dla_dzieci=(frame.args["strona główna dla dzieci "..i] or pf.args["strona główna dla dzieci "..i]) end; else strona_glowna_dla_dzieci=frame.args["strona główna dla dzieci"] or pf.args["strona główna dla dzieci"] end; local kod_projektu_tego_projektu=pudelko_modul["Kod projektu tego projektu"](); local parametry_modul=require("Module:Parametry"); return (parametry_modul.CzyTak(strona_glowna_dla_dzieci))and require("Module:Nazwy")["PEŁNANAZWASTRONY"]{[1]=strona_glowna_dla_dzieci,["kod języka"]=kod_jezyka,["kod projektu"]=kod_projektu_tego_projektu,} or (strona_glowna_dla_dzieci and "" or nil); end; function p.Normalna_przedmiotowa_lub_dyskusji_nazwa_przestrzeni_nazw(nazwa_przestrzeni_nazw, normmalna_przedmiotwa_dyskusji,kod_jezyka,kod_projektu) local nazwa_przestrzeni_nazw_blad; local wiki_modul=require("Module:Wiki"); local nazwy_modul=require("Module:Nazwy"); local czy_biezaca=wiki_modul["CzyBieżącaWiki"]{["kod języka"]=kod_jezyka,["kod projektu"]=kod_projektu,}; if(normmalna_przedmiotwa_dyskusji==0)then if(czy_biezaca)then nazwa_przestrzeni_nazw_blad=nazwy_modul.Np{nazwa=nazwa_przestrzeni_nazw,["kanoniczna"]="tak",["nazwij projektem"]="tak",["nazwij dyskusją projektu"]="tak",["istnieje"]="tak",["wynik błędu nietekstowy"]="tak",}; else nazwa_przestrzeni_nazw_blad=nazwy_modul.NpDane{nazwa=nazwa_przestrzeni_nazw,["kanoniczna"]="tak",["nazwij projektem"]="tak",["nazwij dyskusją projektu"]="tak",["kod języka"]=kod_jezyka,["kod projektu"]=kod_projektu,["istnieje"]="tak",["wynik błędu nietekstowy"]="tak",}; end; elseif(normmalna_przedmiotwa_dyskusji==1)then if(czy_biezaca)then nazwa_przestrzeni_nazw_blad=nazwy_modul.Np{nazwa=nazwa_przestrzeni_nazw, przedmiotowa="tak",["kanoniczna"]="tak",["nazwij projektem"]="tak",["nazwij dyskusją projektu"]="tak",["istnieje"]="tak",["wynik błędu nietekstowy"]="tak",}; else nazwa_przestrzeni_nazw_blad=nazwy_modul.NpDane{nazwa=nazwa_przestrzeni_nazw, przedmiotowa="tak",["kanoniczna"]="tak",["nazwij projektem"]="tak",["nazwij dyskusją projektu"]="tak",["kod języka"]=kod_jezyka,["kod projektu"]=kod_projektu,["istnieje"]="tak",["wynik błędu nietekstowy"]="tak",}; end; elseif(normmalna_przedmiotwa_dyskusji==2)then if(czy_biezaca)then nazwa_przestrzeni_nazw_blad=nazwy_modul.Np{nazwa=nazwa_przestrzeni_nazw, dyskusja="tak",["kanoniczna"]="tak",["nazwij projektem"]="tak",["nazwij dyskusją projektu"]="tak",["istnieje"]="tak",["wynik błędu nietekstowy"]="tak",}; else nazwa_przestrzeni_nazw_blad=nazwy_modul.NpDane{nazwa=nazwa_przestrzeni_nazw, dyskusja="tak",["kanoniczna"]="tak",["nazwij projektem"]="tak",["nazwij dyskusją projektu"]="tak",["kod języka"]=kod_jezyka,["kod projektu"]=kod_projektu,["istnieje"]="tak",["wynik błędu nietekstowy"]="tak",}; end; else if(czy_biezaca)then nazwa_przestrzeni_nazw_blad=nazwy_modul.Np{nazwa=nazwa_przestrzeni_nazw,["kanoniczna"]="tak",["nazwij projektem"]="tak",["nazwij dyskusją projektu"]="tak",["istnieje"]="tak",["wynik błędu nietekstowy"]="tak",}; else nazwa_przestrzeni_nazw_blad=nazwy_modul.NpDane{nazwa=nazwa_przestrzeni_nazw,["kanoniczna"]="tak",["nazwij projektem"]="tak",["nazwij dyskusją projektu"]="tak",["kod języka"]=kod_jezyka,["kod projektu"]=kod_projektu,["istnieje"]="tak",["wynik błędu nietekstowy"]="tak",}; end; end; return nazwa_przestrzeni_nazw_blad end; function p.Nazwa_przestrzeni_nazw(frame,kod_liczbowy_przestrzeni_nazw,czy_uwzglednic_alternatywna_nazwe,numer_jednostki) local pf=frame.getParent and frame:getParent() or {args={}}; local nazwa_przestrzeni_nazw=p.Nazwy_przestrzeni_i_jednostki_podane_o_pewnym_numerze(frame,numer_jednostki,1) or p.Nazwa_przestrzeni_nazw_uzyskana_z_typu_jednostki_z_frame(frame,numer_jednostki); local nazwy_modul=require("Module:Nazwy"); local wiki_modul=require("Module:Wiki"); local kod_jezyka,kod_projektu=p.Wikikody_kontenera(frame,numer_jednostki); local czy_biezaca_wiki=wiki_modul["CzyBieżącaWiki"]{["kod języka"]=kod_jezyka,["kod projektu"]=kod_projektu,}; local czy_blad_nazwy_przestrzeni_nazw; local typ; if(kod_liczbowy_przestrzeni_nazw==1)then typ="przedmiotowa"; if(czy_biezaca_wiki)then czy_blad_nazwy_przestrzeni_nazw=(not nazwa_przestrzeni_nazw)and nazwy_modul["PRZEDMIOTOWAPRZESTRZEŃ"]() or nazwy_modul.Np{nazwa=nazwa_przestrzeni_nazw,przedmiotowa="tak",["istnieje"]="tak",["wynik błędu nietekstowy"]="tak",}; else czy_blad_nazwy_przestrzeni_nazw=(not nazwa_przestrzeni_nazw)and nazwy_modul["PRZEDMIOTOWAPRZESTRZEŃ"]{["kod języka"]=kod_jezyka,["kod projektu"]=kod_projektu,} or nazwy_modul.NpDane{nazwa=nazwa_przestrzeni_nazw,przedmiotowa="tak",["kod języka"]=kod_jezyka,["kod projektu"]=kod_projektu,["istnieje"]="tak",["wynik błędu nietekstowy"]="tak",}; end; elseif(kod_liczbowy_przestrzeni_nazw==2)then if(czy_biezaca_wiki)then typ="dyskusja"; czy_blad_nazwy_przestrzeni_nazw=(not nazwa_przestrzeni_nazw)and nazwy_modul["PRZESTRZEŃDYSKUSJI"]() or nazwy_modul.Np{nazwa=nazwa_przestrzeni_nazw,dyskusja="tak",["istnieje"]="tak",["wynik błędu nietekstowy"]="tak",}; else czy_blad_nazwy_przestrzeni_nazw=(not nazwa_przestrzeni_nazw)and nazwy_modul["PRZESTRZEŃDYSKUSJI"]{["kod języka"]=kod_jezyka,["kod projektu"]=kod_projektu,} or nazwy_modul.NpDane{nazwa=nazwa_przestrzeni_nazw,dyskusja="tak",["kod języka"]=kod_jezyka,["kod projektu"]=kod_projektu,["istnieje"]="tak",["wynik błędu nietekstowy"]="tak",}; end; else if(czy_biezaca_wiki)then czy_blad_nazwy_przestrzeni_nazw=(not nazwa_przestrzeni_nazw)and nazwy_modul["NAZWAPRZESTRZENI"]() or nazwy_modul.Np{nazwa=nazwa_przestrzeni_nazw,["istnieje"]="tak",["wynik błędu nietekstowy"]="tak",}; else czy_blad_nazwy_przestrzeni_nazw=(not nazwa_przestrzeni_nazw)and nazwy_modul["NAZWAPRZESTRZENI"]{["kod języka"]=kod_jezyka,["kod projektu"]=kod_projektu,} or nazwy_modul.NpDane{nazwa=nazwa_przestrzeni_nazw,["kod języka"]=kod_jezyka, ["kod projektu"]=kod_projektu,["istnieje"]="tak",["wynik błędu nietekstowy"]="tak",}; end; end; if(czy_blad_nazwy_przestrzeni_nazw)then return czy_blad_nazwy_przestrzeni_nazw; else if(((czy_uwzglednic_alternatywna_nazwe==nil)and true or czy_uwzglednic_alternatywna_nazwe) and frame.args[1])then local nazwa_przestrzeni_nazw_alternatywnej=mw.text.trim(frame.args[1]); if(mw.ustring.match(nazwa_przestrzeni_nazw_alternatywnej,"^[%w%s_]*$"))then local czy_blad_nazwa_przestrzeni_nazw_alternatywnej; if(czy_biezaca_wiki)then local tab_parametry={nazwa=nazwa_przestrzeni_nazw_alternatywnej,["istnieje"]="tak",["wynik błędu nietekstowy"]="tak",}; if(typ)then tab_parametry[typ]="tak";end; czy_blad_nazwa_przestrzeni_nazw_alternatywnej=nazwy_modul.Np(tab_parametry); else local tab_parametry={nazwa=nazwa_przestrzeni_nazw_alternatywnej,["kod języka"]=kod_jezyka,["kod projektu"]=kod_projektu,["istnieje"]="tak",["wynik błędu nietekstowy"]="tak",}; if(typ)then tab_parametry[typ]="tak";end; czy_blad_nazwa_przestrzeni_nazw_alternatywnej=nazwy_modul.NpDane(tab_parametry); end; return czy_blad_nazwa_przestrzeni_nazw_alternatywnej or "(błąd)"; else return "(błąd)"; end; else local parametry_modul=require("Module:Parametry"); nazwa_przestrzeni_nazw=parametry_modul["Odstępy"]{[1]=nazwa_przestrzeni_nazw,[2]="tak",}; if(mw.ustring.match(nazwa_przestrzeni_nazw,"^[%w%s_]*$"))then return nazwa_przestrzeni_nazw; else return "(błąd)"; end; end; end; end; function p.Nazwa_przestrzeni_nazw_2(frame,czy_uwzglednic_alternatywna_nazwe,i) local nazwa_przestrzeni_nazw,nazwa_jednostki,liczba_numer_jednostki=p.Nazwy_przestrzeni_i_jednostki_podane_o_pewnym_numerze(frame,i); nazwa_przestrzeni_nazw=nazwa_przestrzeni_nazw or p.Nazwa_przestrzeni_nazw_uzyskana_z_typu_jednostki_z_frame(frame,liczba_numer_jednostki); local nazwy_modul=require("Module:Nazwy"); local kod_jezyka,kod_projektu=p.Wikikody_kontenera(frame,liczba_numer_jednostki); local wiki_modul=require("Module:Wiki"); local czy_biezaca_wiki=wiki_modul["CzyBieżącaWiki"]{["kod języka"]=kod_jezyka,["kod projektu"]=kod_projektu,}; local nazwa_przestrzeni_nazw_blad; local parametry_modul=require("Module:Parametry"); if(czy_biezaca_wiki)then nazwa_przestrzeni_nazw=nazwa_przestrzeni_nazw and mw.text.trim(nazwa_przestrzeni_nazw) or nazwy_modul["NAZWAPRZESTRZENI"](); nazwa_przestrzeni_nazw_blad=require("Module:Nazwy").Np{nazwa=nazwa_przestrzeni_nazw,["istnieje"]="tak",["wynik błędu nietekstowy"]="tak",}; if(nazwa_jednostki)then nazwa_jednostki=parametry_modul["Odstępy"]{[1]=nazwa_jednostki,[2]="tak",}; nazwa_jednostki=mw.ustring.gsub(nazwa_jednostki,"^([^#]*)#(.*)$","%1"); local parametry=mw.ustring.match(nazwa_jednostki,"^.*%?([^%?]+)$"); if(parametry and mw.ustring.match(parametry,"[^=]+=[^=]*"))then nazwa_jednostki=mw.ustring.gsub(nazwa_jednostki,"^(.*)%?([^%?]+)$","%1"); end; else nazwa_jednostki=nazwy_modul["NAZWASTRONY"](); end; else nazwa_przestrzeni_nazw=nazwa_przestrzeni_nazw and mw.text.trim(nazwa_przestrzeni_nazw) or nazwy_modul["NAZWAPRZESTRZENI"]{["kod języka"]=kod_jezyka,["kod projektu"]=kod_projektu,}; nazwa_przestrzeni_nazw_blad=require("Module:Nazwy").NpDane{nazwa=nazwa_przestrzeni_nazw,["kod języka"]=kod_jezyka,["kod projektu"]=kod_projektu,["istnieje"]="tak",["wynik błędu nietekstowy"]="tak",}; if(nazwa_jednostki)then local html_modul=require("Module:Html"); nazwa_jednostki=html_modul["NazwaStronyAdresu"](nazwa_jednostki,true); else nazwa_jednostki=nazwy_modul["NAZWASTRONY"]{["kod języka"]=kod_jezyka,["kod projektu"]=kod_projektu,}; end; end; nazwa_przestrzeni_nazw=nazwa_przestrzeni_nazw_blad or nazwa_przestrzeni_nazw; if(not mw.ustring.match(nazwa_jednostki,"^:"))then if(nazwa_przestrzeni_nazw~="")then if(czy_biezaca_wiki)then local nazwy_np_modul=mw.loadData("Module:Nazwy/Np"); if(nazwa_przestrzeni_nazw==nazwy_np_modul.Template)then local nazwa_przestrzeni_nazw_d=require("Module:Nazwy")["NAZWAPRZESTRZENI"](nazwa_jednostki); if(nazwa_przestrzeni_nazw_d==nazwy_np_modul.Template)then nazwa_przestrzeni_nazw=nazwy_np_modul.Template; end; elseif(nazwa_przestrzeni_nazw==nazwy_np_modul.Module)then local nazwa_przestrzeni_nazw_d=require("Module:Nazwy")["NAZWAPRZESTRZENI"](nazwa_jednostki); if(nazwa_przestrzeni_nazw_d==nazwy_np_modul.Module)then nazwa_przestrzeni_nazw=nazwy_np_modul.Module; end; end; else local template_prze=nazwy_modul.NpDane{nazwa="Template",["kod języka"]=kod_jezyka,["kod projektu"]=kod_projektu,}; local module_prze=nazwy_modul.NpDane{nazwa="Module",["kod języka"]=kod_jezyka,["kod projektu"]=kod_projektu,}; if(nazwa_przestrzeni_nazw==template_prze)then local nazwa_przestrzeni_nazw_d=nazwy_modul["NAZWAPRZESTRZENI"]{[1]=nazwa_jednostki,["kod języka"]=kod_jezyka,["kod projektu"]=kod_projektu,}; if(nazwa_przestrzeni_nazw_d==template_prze)then nazwa_przestrzeni_nazw=template_prze; end; elseif(nazwa_przestrzeni_nazw==module_prze)then local nazwa_przestrzeni_nazw_d=nazwy_modul["NAZWAPRZESTRZENI"]{[1]=nazwa_jednostki,["kod języka"]=kod_jezyka,["kod projektu"]=kod_projektu,}; if(nazwa_przestrzeni_nazw_d==module_prze)then nazwa_przestrzeni_nazw=module_prze; end; end; end; if(not nazwa_przestrzeni_nazw_blad)then if(((czy_uwzglednic_alternatywna_nazwe==nil)and true or czy_uwzglednic_alternatywna_nazwe) and frame.args[1])then local wytrimowana_nazwa_przestrzeni_nazw=mw.text.trim(frame.args[1]); if(mw.ustring.match(wytrimowana_nazwa_przestrzeni_nazw,"^[%w%s_]*$"))then if(czy_biezaca_wiki)then local nazwy_modul=require("Module:Nazwy"); local czy_blad_nazwy_przestrzeni_nazw=nazwy_modul.Np{nazwa=wytrimowana_nazwa_przestrzeni_nazw,["istnieje"]="tak",["wynik błędu nietekstowy"]="tak",} return czy_blad_nazwy_przestrzeni_nazw or "(błąd)"; else local nazwy_modul=require("Module:Nazwy"); local nazwa_przestrzeni_nazw_blad2=nazwy_modul.NpDane{nazwa=wytrimowana_nazwa_przestrzeni_nazw,["kod języka"]=kod_jezyka,["kod projektu"]=kod_projektu,["istnieje"]="tak",["wynik błędu nietekstowy"]="tak",}; return nazwa_przestrzeni_nazw_blad2 or "(błąd)"; end; else return "(błąd)"; end; else local wytrimowana_nazwa_przestrzeni_nazw=mw.text.trim(nazwa_przestrzeni_nazw); if(mw.ustring.match(wytrimowana_nazwa_przestrzeni_nazw,"^[%w%s_]*$"))then return wytrimowana_nazwa_przestrzeni_nazw; else return "(błąd)"; end; end; else return nazwa_przestrzeni_nazw; end; else return require("Module:Nazwy")["NAZWAPRZESTRZENI"]{[1]=nazwa_jednostki,["kod języka"]=kod_jezyka,["kod projektu"]=kod_projektu,}; end; else return require("Module:Nazwy")["NAZWAPRZESTRZENI"]{[1]=nazwa_jednostki,["kod języka"]=kod_jezyka,["kod projektu"]=kod_projektu,}; end; end; function p.Nazwa_przestrzeni_nazw_przedmiotowa_dyskusji_2(frame,czy_uwzglednic_alternatywna_nazwe,i,typ) local numer_jednostki=i or frame.args["numer jednostki"]; local liczba_numer_jednostki=((numer_jednostki)and(tonumber(numer_jednostki))or 0); local nazwa_przestrzeni_nazw=require("Module:Pudełko")["Nazwa przestrzeni nazw 2"](frame,czy_uwzglednic_alternatywna_nazwe,liczba_numer_jednostki); local kod_jezyka,kod_projektu=p.Wikikody_kontenera(frame,liczba_numer_jednostki); local wiki_modul=require("Module:Wiki"); local nazwy_modul=require("Module:Nazwy"); local czy_biezaca=wiki_modul["CzyBieżącaWiki"]{["kod języka"]=kod_jezyka,["kod projektu"]=kod_projektu,}; if(czy_biezaca)then return nazwy_modul.Np{[typ]="tak",nazwa=nazwa_przestrzeni_nazw}; else return nazwy_modul.NpDane{[typ]="tak",nazwa=nazwa_przestrzeni_nazw,["kod języka"]=kod_jezyka,["kod projektu"]=kod_projektu,}; end; end; function p.Kod_jezyka(frame,i,wartosc_domyslna) local pudelko_modul=require("Module:Pudełko"); if(not i)then return pudelko_modul["Kod języka tego projektu"]();end; local pf=frame.getParent and frame:getParent() or {args={}}; if(i==0)then return pudelko_modul["Kod języka tego projektu"](); elseif(i==1)then local parametry_modul=require("Module:Parametry"); local kod_jezyka=frame.args["kod języka"] or frame.args["kod języka 1"] or pf.args["kod języka"] or pf.args["kod języka 1"] return ((kod_jezyka)and(kod_jezyka~=""))and mw.text.trim(kod_jezyka) or ((parametry_modul.CzyTak(wartosc_domyslna))and wartosc_domyslna or nil); elseif(i>1)then local parametry_modul=require("Module:Parametry"); local kod_jezyka=frame.args["kod języka "..i] or pf.args["kod języka "..i] return ((kod_jezyka)and(kod_jezyka~=""))and mw.text.trim(kod_jezyka) or ((parametry_modul.CzyTak(wartosc_domyslna))and wartosc_domyslna or nil); end; end function p.Kod_projektu(frame,i,wartosc_domyslna) local pudelko_modul=require("Module:Pudełko"); if(not i)then return pudelko_modul["Kod projektu tego projektu"]();end; local pf=frame.getParent and frame:getParent() or {args={}}; if(i==0)then return pudelko_modul["Kod projektu tego projektu"](); elseif(i==1)then local parametry_modul=require("Module:Parametry"); local kod_projektu=frame.args["kod projektu"] or frame.args["kod projektu 1"] or pf.args["kod projektu"] or pf.args["kod projektu 1"] return ((kod_projektu)and(kod_projektu~=""))and mw.text.trim(kod_projektu) or ((parametry_modul.CzyTak(wartosc_domyslna))and wartosc_domyslna or nil); elseif(i>1)then local parametry_modul=require("Module:Parametry"); local kod_projektu=frame.args["kod projektu "..i] or pf.args["kod projektu "..i] return ((kod_projektu)and(kod_projektu~=""))and mw.text.trim(kod_projektu) or ((parametry_modul.CzyTak(wartosc_domyslna))and wartosc_domyslna or nil); end; end function p.Klucz_projektu(frame,i,wartosc_domyslna_jezyka,wartosc_domyslna_projektu) local pf=frame.getParent and frame:getParent() or {args={}}; local klucz_projektu; local function domyslne_klucz(klucz_projektu) local parametry_modul=require("Module:Parametry"); return ((klucz_projektu)and(klucz_projektu~=""))and mw.text.trim(klucz_projektu)or((parametry_modul.CzyTak(wartosc_domyslna_jezyka)and(parametry_modul.CzyTak(wartosc_domyslna_projektu)))and (wartosc_domyslna_jezyka..":" ..wartosc_domyslna_projektu)or(parametry_modul.CzyTak(wartosc_domyslna_jezyka) and wartosc_domyslna_jezyka or (parametry_modul.CzyTak(wartosc_domyslna_projektu) and wartosc_domyslna_projektu or nil))); end; if(i==0)then return nil; elseif(i==1)then local klucz_projektu=frame.args["klucz projektu"] or frame.args["klucz projektu 1"] or pf.args["klucz projektu"] or pf.args["klucz projektu 1"]; return domyslne_klucz(klucz_projektu); elseif(i>1)then local klucz_projektu=frame.args["klucz projektu "..i] or pf.args["klucz projektu "..i]; return domyslne_klucz(klucz_projektu); end; end; function p.Wikikody_kontenera(frame,i,wartosc_domyslna_jezyka,wartosc_domyslna_projektu) local wiki_modul=require("Module:Wiki"); local kod_jezyka,kod_projektu=wiki_modul.KodyWiki(p.Klucz_projektu(frame,i,wartosc_domyslna_jezyka,wartosc_domyslna_projektu),p.Kod_jezyka(frame,i,wartosc_domyslna_jezyka),p.Kod_projektu(frame,i,wartosc_domyslna_projektu)); return kod_jezyka,kod_projektu; end; function p.Nazwa_przestrzeni_nazw_od_typu_jednostki(typ,args,bez_analizy) if(not bez_analizy)then local parametry_modul=require("Module:Parametry"); if((((not parametry_modul.CzyTak(args["obsługiwane jednostki jako nieopisowe strony"]))and((typ=="artykuł")or(typ=="podręcznik")))or (typ=="artykuł")))then return ""; elseif(((not parametry_modul.CzyTak(args["obsługiwane jednostki jako nieopisowe strony"]))and((typ=="artykuł dla dzieci")or(typ=="podręcznik dla dzieci")))or(typ=="artykuł dla dzieci"))then return "Wikijunior"; elseif((not parametry_modul.CzyTak(args["obsługiwane brudnopisy jako normalne strony"])) and(((not parametry_modul.CzyTak(args["obsługiwane jednostki jako nieopisowe strony"]))and(parametry_modul.CzyTak(args["obsługiwane jednostki brudnopisu projektu"])and (typ=="podręcznik brudnopisu projektu" or typ=="artykuł brudnopisu projektu")or (typ=="jednostka brudnopisu projektu")) or (typ=="strona brudnopisu projektu"))or(typ=="strona projektu"))or (typ=="strona projektu"))then return "Project"; elseif((parametry_modul.CzyTak(args["obsługiwane strony jako niebrudnopisowe jednostki programowe"]))and (typ=="strona szablonu") or(not parametry_modul.CzyTak(args["obsługiwane brudnopisy jako normalne strony"]) and((not parametry_modul.CzyTak(args["obsługiwane opisy jako strony jednostek programowych"]) and not parametry_modul.CzyTak(args["obsługiwane jednostki jako nieopisowe strony"]) and not parametry_modul.CzyTak(args["obsługiwane nieudokumentowane szablony jako szablony"])) and((typ=="strona brudnopisu szablonu")or(typ=="strona brudnopisu opisu szablonu"))or(typ=="strona brudnopisu szablonu")) or((not parametry_modul.CzyTak(args["obsługiwane opisy jako strony jednostek programowych"]) and not parametry_modul.CzyTak(args["obsługiwane jednostki jako nieopisowe strony"]) and not parametry_modul.CzyTak(args["obsługiwane nieudokumentowane szablony jako szablony"])) and((typ=="strona szablonu")or(typ=="strona opisu szablonu"))or(typ=="strona szablonu"))))then return "Template"; elseif((parametry_modul.CzyTak(args["obsługiwane strony jako niebrudnopisowe jednostki programowe"]))and (typ=="strona modułu") or(not parametry_modul.CzyTak(args["obsługiwane brudnopisy jako normalne strony"]) and((not parametry_modul.CzyTak(args["obsługiwane opisy jako strony jednostek programowych"]) and not parametry_modul.CzyTak(args["obsługiwane jednostki jako nieopisowe strony"])) and((typ=="strona brudnopisu modułu")or(typ=="strona brudnopisu opisu modułu"))or(typ=="strona brudnopisu modułu")) or((not parametry_modul.CzyTak(args["obsługiwane opisy jako strony jednostek programowych"]) and not parametry_modul.CzyTak(args["obsługiwane jednostki jako nieopisowe strony"])) and((typ=="strona modułu")or(typ=="strona opisu modułu"))or(typ=="strona modułu"))))then return "Module"; elseif(not parametry_modul.CzyTak(args["obsługiwane jednostki użytkownika jako normalne strony"]) and(((not parametry_modul.CzyTak(args["obsługiwane jednostki jako nieopisowe strony"]))and(parametry_modul.CzyTak(args["obsługiwane jednostki użytkownika"])and (typ=="podręcznik użytkownika" or typ=="artykuł użytkownika") or (typ=="jednostka użytkownika")) or (typ=="strona użytkownika"))or(typ=="strona główna użytkownika"))or(typ=="strona użytkownika"))then return "User"; elseif(typ=="strona pliku")then return "File"; elseif(typ=="strona kategorii")then return "Category"; elseif(typ=="strona pomocy")then return "Help"; elseif(typ=="strona komunikatu")then return "MediaWiki"; elseif(typ=="strona specjalna")then return "Special"; elseif(typ=="strona gadżetu")then return "Gadget"; elseif(typ=="strona główna projektu")then return "Project"; elseif(typ=="strona główna dla dzieci")then return "Wikijunior"; end; return; end; if(typ)then if((typ=="artykuł")or(typ=="podręcznik"))then return ""; elseif((typ=="artykuł dla dzieci")or(typ=="podręcznik dla dzieci"))then return "Wikijunior"; elseif((typ=="podręcznik brudnopisu projektu")or(typ=="artykuł brudnopisu projektu")or(typ=="jednostka brudnopisu projektu")or(typ=="strona brudnopisu projektu")or(typ=="strona projektu"))then return "Project"; elseif((typ=="strona szablonu")or(typ=="strona opisu szablonu")or(typ=="strona brudnopisu szablonu")or(typ=="strona brudnopisu opisu szablonu"))then return "Template"; elseif((typ=="strona modułu")or(typ=="strona opisu modułu")or(typ=="strona brudnopisu modułu")or(typ=="strona brudnopisu opisu modułu"))then return "Module"; elseif((typ=="podręcznik użytkownika")or(typ=="artykuł użytkownika")or(typ=="jednostka użytkownika")or(typ=="strona użytkownika")or(typ=="strona główna użytkownika"))then return "User"; elseif(typ=="strona pliku")then return "File"; elseif(typ=="strona kategorii")then return "Category"; elseif(typ=="strona pomocy")then return "Help"; elseif(typ=="strona komunikatu")then return "MediaWiki"; elseif(typ=="strona specjalna")then return "Special"; elseif(typ=="strona gadżetu")then return "Gadget"; elseif(typ=="strona główna projektu")then return "Project"; elseif(typ=="strona główna dla dzieci")then return "Wikijunior"; end; end; end; function p.Typ_jednostki_uzyskany_z_frame(frame,i) local numer_jednostki=i or frame.args["numer jednostki"]; local liczba_numer_jednostki=tonumber(numer_jednostki) or 0; local pf=frame.getParent and frame:getParent() or {args={}}; local typ; if liczba_numer_jednostki~=0 then typ=liczba_numer_jednostki and( (frame.args["typ jednostki "..liczba_numer_jednostki] or frame.args["typ jednostki i"]) or (pf.args["typ jednostki "..liczba_numer_jednostki] or pf.args["typ jednostki i"]) ); if(not typ)then local nazwa_jednostki=p.Nazwy_przestrzeni_i_jednostki_podane_o_pewnym_numerze(frame,liczba_numer_jednostki,2); if(nazwa_jednostki)then if(not mw.ustring.match(mw.text.trim(nazwa_jednostki),"^:"))then local nazwa_przesrzeni_nazw=p.Nazwy_przestrzeni_i_jednostki_podane_o_pewnym_numerze(frame,liczba_numer_jednostki,1); if(not nazwa_przesrzeni_nazw)then typ=frame.args["typ jednostki"] or pf.args["typ jednostki"]; end; end; end; end; else typ=frame.args["typ jednostki"] or pf.args["typ jednostki"]; end; return typ,liczba_numer_jednostki; end; function p.Czy_dyskusja_typu_jednostki_z_frame_od_dyskusja_typu_jednostki(frame,i) local numer_jednostki=i or frame.args["numer jednostki"]; local liczba_numer_jednostki=((numer_jednostki)and(tonumber(numer_jednostki))or 0); local pf=frame:getParent() or {args={},}; local function FuncTemp(liczba_numer_jednostki) local dyskusja_parametr="dyskusja typu jednostki"; if(liczba_numer_jednostki==0)then return frame.args[dyskusja_parametr] or pf.args[dyskusja_parametr]; else return ((frame.args[dyskusja_parametr.." "..liczba_numer_jednostki] or pf.args[dyskusja_parametr.." "..liczba_numer_jednostki]) or (frame.args[dyskusja_parametr.." i"] or pf.args[dyskusja_parametr.." i"]) or(frame.args[dyskusja_parametr] or pf.args[dyskusja_parametr])); end; end; local czy_dyskusja=FuncTemp(liczba_numer_jednostki); local parametry_modul=require("Module:Parametry"); local czy_dyskusja=parametry_modul.CzyTak(czy_dyskusja); return czy_dyskusja; end; function p.Nazwa_przestrzeni_nazw_uzyskana_z_typu_jednostki_z_frame(frame,i) local typ=p.Typ_jednostki_uzyskany_z_frame(frame,i); local nazwa_przestrzeni_nazw=typ and p.Nazwa_przestrzeni_nazw_od_typu_jednostki(typ,nil,true) or nil; if(nazwa_przestrzeni_nazw)then local czy_dyskusja=p.Czy_dyskusja_typu_jednostki_z_frame_od_dyskusja_typu_jednostki(frame,i); if(czy_dyskusja)then if(nazwa_przestrzeni_nazw=="")then return "Talk"; else return nazwa_przestrzeni_nazw.." talk"; end; else return nazwa_przestrzeni_nazw; end; else return nil; end; end; function p.Typ_jednostki(frame, kod_liczbowy_przestrzeni_nazw,i,numer_argorytmu) local parametry_modul=require("Module:Parametry"); local analiza=parametry_modul.CzyTak(frame.args["analiza"]); local typ,liczba_numer_jednostki=p.Typ_jednostki_uzyskany_z_frame(frame,i); local uzyskana_przestrzen_nazw_od_typu_jednostki; local nazwa_przestrzeni_nazw_podana,nazwa_jednostki_podana=p.Nazwy_przestrzeni_i_jednostki_podane_o_pewnym_numerze(frame,liczba_numer_jednostki); if((not analiza)and(typ))then if(typ~="")then uzyskana_przestrzen_nazw_od_typu_jednostki=p.Nazwa_przestrzeni_nazw_od_typu_jednostki(typ,frame.args); if(uzyskana_przestrzen_nazw_od_typu_jednostki)then if((not nazwa_przestrzeni_nazw_podana)and(not nazwa_jednostki_podana))then return typ; end; else return "(błąd typu jednostki)"; end; end; end; local nazwa_przestrzeni_nazw,nazwa_jednostki=p.Uzyskanie_nazw_jednostki(frame,kod_liczbowy_przestrzeni_nazw,liczba_numer_jednostki,numer_argorytmu); local nazwy_modul=require("Module:Nazwy"); local kod_jezyka,kod_projektu=p.Wikikody_kontenera(frame,liczba_numer_jednostki); local wiki_modul=require("Module:Wiki"); local czy_biezaca=wiki_modul["CzyBieżącaWiki"]{["kod języka"]=kod_jezyka,["kod projektu"]=kod_projektu,}; local czy_blad_nazwa_przestrzeni_nazw; if(czy_biezaca)then czy_blad_nazwa_przestrzeni_nazw=nazwy_modul.Np{nazwa=nazwa_przestrzeni_nazw,["kanoniczna"]="tak",["nazwij projektem"]="tak",["nazwij dyskusją projektu"]="tak",["istnieje"]="tak",["wynik błędu nietekstowy"]="tak",} else czy_blad_nazwa_przestrzeni_nazw=nazwy_modul.NpDane{nazwa=nazwa_przestrzeni_nazw,["kanoniczna"]="tak",["nazwij projektem"]="tak",["nazwij dyskusją projektu"]="tak",["kod języka"]=kod_jezyka,["kod projektu"]=kod_projektu,["istnieje"]="tak",["wynik błędu nietekstowy"]="tak",} end; if(not czy_blad_nazwa_przestrzeni_nazw)then return "(błąd nazwy przestrzeni nazw)";end; nazwa_przestrzeni_nazw=czy_blad_nazwa_przestrzeni_nazw; --- --- if((not analiza)and(typ))then if(typ~="")then ---typ jednostki if(uzyskana_przestrzen_nazw_od_typu_jednostki)then if((nazwa_przestrzeni_nazw_podana)and(not nazwa_jednostki_podana))then if(uzyskana_przestrzen_nazw_od_typu_jednostki==nazwa_przestrzeni_nazw)then return typ; else return "(błąd niezgodności)"; end; end; else return "(błąd typu jednostki)"; end; end; end; local function Typ_jednostki() if(nazwa_jednostki~="")then --local kod_jezyka,kod_projektu=KodyWikiPudelka(frame,liczba_numer_jednostki); --local klucz_projektu=kod_projektu..":"..kod_jezyka; local pudelko_modul=require("Module:Pudełko"); local pelna_nazwa_strony=((nazwa_przestrzeni_nazw~="")and nazwa_przestrzeni_nazw..":" or "")..nazwa_jednostki; if(pudelko_modul.CzyNiepoprawnaNazwa(pelna_nazwa_strony))then return "(błąd nazwy jednostki)";end; local nazwy_modul=require("Module:Nazwy") pelna_nazwa_strony=nazwy_modul["PEŁNANAZWASTRONY"]{[1]=pelna_nazwa_strony,["kod języka"]=kod_jezyka,["kod projektu"]=kod_projektu,}; local norm_przed_lub_dyskusji=p.Normalna_przedmiotowa_lub_dyskusji_nazwa_przestrzeni_nazw(nazwa_przestrzeni_nazw, kod_liczbowy_przestrzeni_nazw,kod_jezyka,kod_projektu); if(kod_projektu==pudelko_modul["Kod projektu tego projektu"]())then local nazwa_strony_glownej_dla_dzieci_ze_zmiennej=p.Nazwa_strony_bazowej_dla_dzieci_ze_zmiennej(frame,liczba_numer_jednostki,kod_jezyka); if(nazwa_strony_glownej_dla_dzieci_ze_zmiennej=="")then return "(błąd nazwy strony głównej dla dzieci)";end; local nazwa_strony_glownej_wikijuniora=p.Nazwa_strony_bazowej_dla_dzieci_z_wikidanych(kod_jezyka); local nazwa_strony_glownej_dla_dzieci_uzyskana=(not nazwa_strony_glownej_dla_dzieci_ze_zmiennej)and nazwa_strony_glownej_wikijuniora or nazwa_strony_glownej_dla_dzieci_ze_zmiennej; if(nazwa_strony_glownej_dla_dzieci_uzyskana)then if(pudelko_modul.CzyNiepoprawnaNazwa(nazwa_strony_glownej_dla_dzieci_uzyskana))then return "(błąd nazwy strony głównej dla dzieci)";end; nazwa_strony_glownej_dla_dzieci_uzyskana=nazwy_modul["PEŁNANAZWASTRONY"]{[1]=nazwa_strony_glownej_dla_dzieci_uzyskana,["kod języka"]=kod_jezyka,["kod projektu"]=kod_projektu,}; if(pelna_nazwa_strony==nazwa_strony_glownej_dla_dzieci_uzyskana)then return "strona główna dla dzieci";end; end; end; local nazwa_strony_glownej_projektu_ze_zmiennej=p.Nazwa_strony_bazowej_projektu_ze_zmiennej(frame,liczba_numer_jednostki,kod_jezyka,kod_projektu); if(nazwa_strony_glownej_projektu_ze_zmiennej=="")then return "(błąd nazwy strony głównej projektu)";end; local nazwa_strony_glownej_projektu_z_wikidanych=p.Nazwa_strony_bazowej_projektu_z_wikidanych(kod_jezyka,kod_projektu); local nazwa_strony_glownej_projektu_uzyskana=(not nazwa_strony_glownej_projektu_ze_zmiennej)and nazwa_strony_glownej_projektu_z_wikidanych or nazwa_strony_glownej_projektu_ze_zmiennej; if(nazwa_strony_glownej_projektu_uzyskana)then if(pudelko_modul.CzyNiepoprawnaNazwa(nazwa_strony_glownej_projektu_uzyskana))then return "(błąd nazwy strony głównej projektu)";end; nazwa_strony_glownej_projektu_uzyskana=nazwy_modul["PEŁNANAZWASTRONY"]{[1]=nazwa_strony_glownej_projektu_uzyskana,["kod języka"]=kod_jezyka,["kod projektu"]=kod_projektu,}; if(pelna_nazwa_strony==nazwa_strony_glownej_projektu_uzyskana)then return "strona główna projektu";end; end; if(norm_przed_lub_dyskusji=="")then local parametry_modul=require("Module:Parametry"); if(parametry_modul.CzyTak(frame.args["obsługiwane jednostki jako nieopisowe strony"]))then return "artykuł"; else local it=mw.ustring.match(nazwa_jednostki,"^[^/]+$"); if(it)then return "podręcznik";else return "artykuł";end; end; elseif(norm_przed_lub_dyskusji=="Wikijunior")then local parametry_modul=require("Module:Parametry"); if(parametry_modul.CzyTak(frame.args["obsługiwane jednostki jako nieopisowe strony"]))then return "artykuł dla dzieci"; else local it=mw.ustring.match(nazwa_jednostki,"^[^/]+$"); if(it)then return "podręcznik dla dzieci";else return "artykuł dla dzieci";end; end; elseif(norm_przed_lub_dyskusji=="User")then local parametry_modul=require("Module:Parametry"); if(parametry_modul.CzyTak(frame.args["obsługiwane jednostki użytkownika jako normalne strony"]))then return "strona użytkownika"; else local czy_podstrony=mw.ustring.match(nazwa_jednostki,"^[^/]+$") if(czy_podstrony)then return "strona główna użytkownika"; else if(not parametry_modul.CzyTak(frame.args["obsługiwane jednostki jako nieopisowe strony"]))then if(parametry_modul.CzyTak(frame.args["obsługiwane jednostki użytkownika"]))then local czy_ksiazka=mw.ustring.match(nazwa_jednostki,"^[^/]+/[^/]*$"); if(czy_ksiazka)then return "podręcznik użytkownika"; else return "artykuł użytkownika"; end; else return "jednostka użytkownika"; end; else return "strona użytkownika"; end; end; end; elseif(norm_przed_lub_dyskusji=="File")then return "strona pliku"; elseif(norm_przed_lub_dyskusji=="Category")then return "strona kategorii"; elseif(norm_przed_lub_dyskusji=="Project")then local parametry_modul=require("Module:Parametry"); if(parametry_modul.CzyTak(frame.args["obsługiwane brudnopisy jako normalne strony"]))then return "strona projektu";end; if(mw.ustring.match(nazwa_jednostki,"^%s*[Bb]rudnopis/[^/]*/.*"))then if(not parametry_modul.CzyTak(frame.args["obsługiwane jednostki jako nieopisowe strony"]))then if(parametry_modul.CzyTak(frame.args["obsługiwane jednostki brudnopisu projektu"]))then local czy_ksiazka=mw.ustring.match(nazwa_jednostki,"^%s*[Bb]rudnopis/[^/]*/[^/]*$"); if(czy_ksiazka)then return "podręcznik brudnopisu projektu"; else return "artykuł brudnopisu projektu"; end; else return "jednostka brudnopisu projektu"; end; else return "strona brudnopisu projektu"; end; else return "strona projektu"; end; elseif(norm_przed_lub_dyskusji=="Help")then return "strona pomocy"; elseif(norm_przed_lub_dyskusji=="MediaWiki")then return "strona komunikatu"; elseif(norm_przed_lub_dyskusji=="Special")then return "strona specialna"; elseif(norm_przed_lub_dyskusji=="Gadget")then return "strona gadżetu"; elseif(nazwa_przestrzeni_nazw=="Template")then local parametry_modul=require("Module:Parametry"); if(parametry_modul.CzyTak(frame.args["obsługiwane strony jako niebrudnopisowe jednostki programowe"]))then return "strona szablonu";end; local function CzySzablonAlboOpis(nazwa_przestrzeni_nazw,nazwa_jednostki,szablon,opis_szablonu,strona_szablonu,prefix) local parametry_modul=require("Module:Parametry"); if(parametry_modul.CzyTak(frame.args["obsługiwane opisy jako strony jednostek programowych"]) or parametry_modul.CzyTak(frame.args["obsługiwane jednostki jako nieopisowe strony"]))then return szablon; else if(mw.ustring.match(nazwa_jednostki,"^"..prefix..".*/opis$"))then return opis_szablonu; else if(not parametry_modul.CzyTak(frame.args["obsługiwane nieudokumentowane szablony jako szablony"]))then local czy_brudnopis=mw.ustring.match(nazwa_jednostki,"^"..prefix..".*$"); if(czy_brudnopis)then local pagename=(nazwa_przestrzeni_nazw~="")and nazwa_przestrzeni_nazw..":"..nazwa_jednostki or nazwa_jednostki; local czy_istnieje_strona,tab=require("Module:Techniczne").PoliczZbiory(pagename); if(czy_istnieje_strona==1)then local czy_brudnopis_opisu_szablonu=require("Module:Łatki").contentMatch{ [1]='<noinclude>.-{{%s*[Dd]okumentacja%s*}}.-</noinclude>', [2]='<noinclude>.-{{%s*[Dd]okumentacja%s*|.-</noinclude>',pagename=pagename,namespace=0 }; if(not czy_brudnopis_opisu_szablonu)then return opis_szablonu;else return szablon;end; else return szablon; end; else return strona_szablonu; end; else return szablon; end; end; end; end; if((not parametry_modul.CzyTak(frame.args["obsługiwane brudnopisy jako normalne strony"]))and(mw.ustring.match(nazwa_jednostki,"^%s*[Bb]rudnopis/[^/]*/.*")))then return CzySzablonAlboOpis(nazwa_przestrzeni_nazw,nazwa_jednostki,"strona brudnopisu szablonu","strona brudnopisu opisu szablonu","strona szablonu","[Bb]rudnopis/[^/]*/"); else return CzySzablonAlboOpis(nazwa_przestrzeni_nazw,nazwa_jednostki,"strona szablonu","strona opisu szablonu","strona szablonu",""); end; elseif(nazwa_przestrzeni_nazw=="Module")then local parametry_modul=require("Module:Parametry"); if(parametry_modul.CzyTak(frame.args["obsługiwane strony jako niebrudnopisowe jednostki programowe"]))then return "strona modułu";end; if((not parametry_modul.CzyTak(frame.args["obsługiwane brudnopisy jako normalne strony"]))and(mw.ustring.match(nazwa_jednostki,"^%s*[Bb]rudnopis/[^/]*/.*")))then if(parametry_modul.CzyTak(frame.args["obsługiwane opisy jako strony jednostek programowych"]) or parametry_modul.CzyTak(frame.args["obsługiwane jednostki jako nieopisowe strony"]))then return "strona brudnopisu modułu" else local pelna_nazwa_strony=(nazwa_przestrzeni_nazw~="")and nazwa_przestrzeni_nazw..":"..nazwa_jednostki or nazwa_jednostki; pelna_nazwa_strony=require("Module:Nazwy")["PEŁNANAZWASTRONY"]{[1]=pelna_nazwa_strony,["kod języka"]=kod_jezyka,["kod projektu"]=kod_projektu,}; local pelna_nazwa_strony_brudnopisu_opisu_modulu=require("Module:Techniczne")["PełnaNazwaOpisuModułu"](pelna_nazwa_strony); if(pelna_nazwa_strony==pelna_nazwa_strony_brudnopisu_opisu_modulu)then return "strona brudnopisu opisu modułu"; else return "strona brudnopisu modułu"; end; end; else if(parametry_modul.CzyTak(frame.args["obsługiwane opisy jako strony jednostek programowych"]) or parametry_modul.CzyTak(frame.args["obsługiwane jednostki jako nieopisowe strony"]))then return "strona modułu" else local pelna_nazwa_strony=(nazwa_przestrzeni_nazw~="")and nazwa_przestrzeni_nazw..":"..nazwa_jednostki or nazwa_jednostki; pelna_nazwa_strony=require("Module:Nazwy")["PEŁNANAZWASTRONY"]{[1]=pelna_nazwa_strony,["kod języka"]=kod_jezyka,["kod projektu"]=kod_projektu,}; local pelna_nazwa_opisu_modulu=require("Module:Techniczne")["PełnaNazwaOpisuModułu"](pelna_nazwa_strony); if(pelna_nazwa_strony==pelna_nazwa_opisu_modulu)then return "strona opisu modułu"; else return "strona modułu"; end; end; end; else return "inne"; end; end; return "inne"; end; local typ_jednostki=Typ_jednostki(); if(((analiza)or(nazwa_jednostki_podana))and(typ)and(typ~=""))then if(typ_jednostki==typ)then return typ_jednostki; elseif(nazwa_jednostki_podana)then return "(błąd parametrów pudełkowych)" else return "(błąd typu jednostki)"; end; end; return typ_jednostki; end; function p.Uzyskanie_nazw_jednostki(frame,kod_liczbowy_przestrzeni_nazw,i,numer_argorytmu,co_ma_liczyc) local nazwa_przestrzeni_fun,nazwa_jednostki_fun; if(kod_liczbowy_przestrzeni_nazw==0)then nazwa_przestrzeni_fun="Nazwa przestrzeni nazw"; nazwa_jednostki_fun="Nazwa jednostki"; elseif(kod_liczbowy_przestrzeni_nazw==1)then nazwa_przestrzeni_fun="Nazwa przedmiotowej przestrzeni nazw"; nazwa_jednostki_fun="Nazwa przedmiotowa jednostki"; elseif(kod_liczbowy_przestrzeni_nazw==2)then nazwa_przestrzeni_fun="Nazwa przestrzeni nazw dyskusji" nazwa_jednostki_fun="Nazwa dyskusji jednostki"; else nazwa_przestrzeni_fun="Nazwa przestrzeni nazw"; nazwa_jednostki_fun="Nazwa jednostki"; end; local pudelko_modul=require("Module:Pudełko"); if(not numer_argorytmu)then if((not i)or(i==0))then if((not co_ma_liczyc)or(co_ma_liczyc==0))then local nazwa_przestrzeni_nazw=pudelko_modul[nazwa_przestrzeni_fun](frame,false); local nazwa_jednostki=pudelko_modul["Nazwa jednostki"](frame); return nazwa_przestrzeni_nazw,nazwa_jednostki; elseif(co_ma_liczyc==1)then local nazwa_przestrzeni_nazw=pudelko_modul[nazwa_przestrzeni_fun](frame,false); return nazwa_przestrzeni_nazw; elseif(co_ma_liczyc==2)then return pudelko_modul["Nazwa jednostki"](frame); end; else if((not co_ma_liczyc)or(co_ma_liczyc==0))then local n=p.Nazwa_przestrzeni_nazw_dodatkowe(frame,i); local nazwa_przestrzeni_nazw=(n)and pudelko_modul[nazwa_przestrzeni_fun](frame,false,i) or pudelko_modul[nazwa_przestrzeni_fun.." 2"](frame,false,i); local nazwa_jednostki=(n)and pudelko_modul["Nazwa jednostki"](frame,i) or pudelko_modul[nazwa_jednostki_fun.." 2"](frame,i); return nazwa_przestrzeni_nazw,nazwa_jednostki; elseif(co_ma_liczyc==1)then local n=p.Nazwa_przestrzeni_nazw_dodatkowe(frame,i); local nazwa_przestrzeni_nazw=(n)and pudelko_modul[nazwa_przestrzeni_fun](frame,false,i) or pudelko_modul[nazwa_przestrzeni_fun.." 2"](frame,false,i); return nazwa_przestrzeni_nazw; elseif(co_ma_liczyc==2)then local n=p.Nazwa_przestrzeni_nazw_dodatkowe(frame,i); return (n)and pudelko_modul["Nazwa jednostki"](frame,i) or pudelko_modul[nazwa_jednostki_fun.." 2"](frame,i); end; end; else if(numer_argorytmu==0)then if((not co_ma_liczyc)or(co_ma_liczyc==0))then local nazwa_przestrzeni_nazw=pudelko_modul[nazwa_przestrzeni_fun](frame,false,i); local nazwa_jednostki=pudelko_modul["Nazwa jednostki"](frame,i); return nazwa_przestrzeni_nazw,nazwa_jednostki; elseif(co_ma_liczyc==1)then local nazwa_przestrzeni_nazw=pudelko_modul[nazwa_przestrzeni_fun](frame,false,i); return nazwa_przestrzeni_nazw; elseif(co_ma_liczyc==2)then return pudelko_modul["Nazwa jednostki"](frame,i); end; else if((not co_ma_liczyc)or(co_ma_liczyc==0))then local nazwa_przestrzeni_nazw=pudelko_modul[nazwa_przestrzeni_fun.." 2"](frame,false,i); local nazwa_jednostki=pudelko_modul[nazwa_jednostki_fun.." 2"](frame,i); return nazwa_przestrzeni_nazw,nazwa_jednostki; elseif(co_ma_liczyc==1)then local nazwa_przestrzeni_nazw=pudelko_modul[nazwa_przestrzeni_fun.." 2"](frame,false,i); return nazwa_przestrzeni_nazw; elseif(co_ma_liczyc==2)then return pudelko_modul[nazwa_jednostki_fun.." 2"](frame,i); end; end; end; end; function p.Nazwa_przestrzeni_nazw_dodatkowe(frame,numer_jednostki) local pf=frame.getParent and frame:getParent() or {args={}}; return frame.args["nazwa przestrzeni nazw "..tostring(numer_jednostki)] or pf.args["nazwa przestrzeni nazw "..tostring(numer_jednostki)] end; function p.Nazwa_jednostki(frame,i) local pf=frame.getParent and frame:getParent() or {args={}}; local nazwa_jednostki,liczba_numer_jednostki=p.Nazwy_przestrzeni_i_jednostki_podane_o_pewnym_numerze(frame,i,2); local kod_jezyka,kod_projektu=p.Wikikody_kontenera(frame,liczba_numer_jednostki); if(nazwa_jednostki)then nazwa_jednostki=mw.text.trim(nazwa_jednostki); nazwa_jednostki=mw.ustring.gsub(nazwa_jednostki,"^:",""); nazwa_jednostki=mw.ustring.gsub(nazwa_jednostki,"^([^#]*)#(.*)$","%1"); local parametry=mw.ustring.match(nazwa_jednostki,"^.*%?([^%?]+)$"); if(parametry and mw.ustring.match(parametry,"[^=]+=[^=]*"))then nazwa_jednostki=mw.ustring.gsub(nazwa_jednostki,"^(.*)%?([^%?]+)$","%1"); end; else local nazwy_modul=require("Module:Nazwy"); nazwa_jednostki=nazwy_modul["NAZWASTRONY"]{["kod języka"]=kod_jezyka,["kod projektu"]=kod_projektu,}; end; local parametry_modul=require("Module:Parametry"); nazwa_jednostki=parametry_modul["Odstępy"]{[1]=nazwa_jednostki,[2]="tak",}; return mw.getContentLanguage():ucfirst(nazwa_jednostki); end; function p.Nazwy_przestrzeni_i_jednostki_podane_o_pewnym_numerze(frame,i,co_podac) local pf=frame.getParent and frame:getParent() or {args={}}; local numer_jednostki=i or frame.args["numer jednostki"]; local liczba_numer_jednostki=tonumber(numer_jednostki) or 0; local nazwa_jednostki; local bool_numer_jednostki=(liczba_numer_jednostki~=0); local function Nazwa_jednostki() if bool_numer_jednostki then nazwa_jednostki=frame.args["nazwa jednostki "..liczba_numer_jednostki] or ((liczba_numer_jednostki==1)and(pf.args["cel"])) or pf.args[liczba_numer_jednostki]; else nazwa_jednostki=frame.args["nazwa jednostki"] or pf.args["nazwa jednostki"]; end; return nazwa_jednostki; end; local function Nazwa_przestrzeni_nazw() local nazwa_przestrzeni_nazw=bool_numer_jednostki and (frame.args["nazwa przestrzeni nazw i"] or pf.args["nazwa przestrzeni nazw i"] or frame.args["nazwa przestrzeni nazw "..liczba_numer_jednostki] or pf.args["nazwa przestrzeni nazw "..liczba_numer_jednostki]) or frame.args["nazwa przestrzeni nazw"] or pf.args["nazwa przestrzeni nazw"]; return nazwa_przestrzeni_nazw; end; if(not co_podac)then return Nazwa_przestrzeni_nazw(),Nazwa_jednostki(),liczba_numer_jednostki; elseif(co_podac==1)then return Nazwa_przestrzeni_nazw(),liczba_numer_jednostki; elseif(co_podac==2)then return Nazwa_jednostki(),liczba_numer_jednostki; else return Nazwa_przestrzeni_nazw(),Nazwa_jednostki(),liczba_numer_jednostki; end; end; function p.Jaka_nazwa_jednostki(frame,i,jaka) local nazwa_przestrzeni_nazw,nazwa_jednostki,liczba_numer_jednostki=p.Nazwy_przestrzeni_i_jednostki_podane_o_pewnym_numerze(frame,i); nazwa_przestrzeni_nazw=nazwa_przestrzeni_nazw or p.Nazwa_przestrzeni_nazw_uzyskana_z_typu_jednostki_z_frame(frame,liczba_numer_jednostki); ---- local nazwy_modul=require("Module:Nazwy"); nazwa_przestrzeni_nazw=nazwa_przestrzeni_nazw and mw.text.trim(nazwa_przestrzeni_nazw) or nazwy_modul["NAZWAPRZESTRZENI"](); if(nazwa_jednostki)then local html_modul=require("Module:Html"); nazwa_jednostki=html_modul["NazwaStronyAdresu"](nazwa_jednostki,true); else nazwa_jednostki=nazwy_modul["NAZWASTRONY"](); end; local kod_jezyka,kod_projektu=p.Wikikody_kontenera(frame,liczba_numer_jednostki); local wiki_modul=require("Module:Wiki"); local czy_biezaca=wiki_modul["CzyBieżącaWiki"]{["kod języka"]=kod_jezyka,["kod projektu"]=kod_projektu,}; if(jaka)then if(czy_biezaca)then nazwa_przestrzeni_nazw=nazwy_modul.Np{nazwa=nazwa_przestrzeni_nazw, [jaka]="tak"}; else nazwa_przestrzeni_nazw=nazwy_modul.NpDane{nazwa=nazwa_przestrzeni_nazw, [jaka]="tak",["kod języka"]=kod_jezyka,["kod projektu"]=kod_projektu,}; end; else if(czy_biezaca)then nazwa_przestrzeni_nazw=nazwy_modul.Np{nazwa=nazwa_przestrzeni_nazw}; else nazwa_przestrzeni_nazw=nazwy_modul.NpDane{nazwa=nazwa_przestrzeni_nazw,["kod języka"]=kod_jezyka,["kod projektu"]=kod_projektu,}; end; end; if(not mw.ustring.match(nazwa_jednostki,"^:"))then if(nazwa_przestrzeni_nazw~="")then if(czy_biezaca)then local nazwy_np_modul=mw.loadData("Module:Nazwy/Np"); if(nazwa_przestrzeni_nazw==nazwy_np_modul.Template)then local nazwa_przestrzeni_nazw_d=nazwy_modul["NAZWAPRZESTRZENI"](nazwa_jednostki); if(nazwa_przestrzeni_nazw_d==nazwy_np_modul.Template)then return nazwy_modul["NAZWASTRONY"](nazwa_jednostki); end; elseif(nazwa_przestrzeni_nazw==nazwy_np_modul.Module)then local nazwa_przestrzeni_nazw_d=nazwy_modul["NAZWAPRZESTRZENI"](nazwa_jednostki); if(nazwa_przestrzeni_nazw_d==nazwy_np_modul.Module)then return nazwy_modul["NAZWASTRONY"](nazwa_jednostki); end; end; else local template_prze=nazwy_modul.NpDane{nazwa="Template",["kod języka"]=kod_jezyka,["kod projektu"]=kod_projektu,}; local module_prze=nazwy_modul.NpDane{nazwa="Module",["kod języka"]=kod_jezyka,["kod projektu"]=kod_projektu,}; if(nazwa_przestrzeni_nazw==template_prze)then local nazwa_przestrzeni_nazw_d=nazwy_modul["NAZWAPRZESTRZENI"]{[1]=nazwa_jednostki,["kod języka"]=kod_jezyka,["kod projektu"]=kod_projektu,}; if(nazwa_przestrzeni_nazw_d==template_prze)then return nazwy_modul["NAZWASTRONY"]{[1]=nazwa_jednostki,["kod języka"]=kod_jezyka,["kod projektu"]=kod_projektu,}; end; elseif(nazwa_przestrzeni_nazw==module_prze)then local nazwa_przestrzeni_nazw_d=nazwy_modul["NAZWAPRZESTRZENI"]{[1]=nazwa_jednostki,["kod języka"]=kod_jezyka,["kod projektu"]=kod_projektu,}; if(nazwa_przestrzeni_nazw_d==module_prze)then return nazwy_modul["NAZWASTRONY"]{[1]=nazwa_jednostki,["kod języka"]=kod_jezyka,["kod projektu"]=kod_projektu,}; end; end; end; local parametry_modul=require("Module:Parametry"); nazwa_jednostki=parametry_modul["Odstępy"]{[1]=nazwa_jednostki,[2]="tak",}; return mw.getContentLanguage():ucfirst(nazwa_jednostki); else return nazwy_modul["NAZWASTRONY"]{[1]=nazwa_jednostki,["kod języka"]=kod_jezyka,["kod projektu"]=kod_projektu,}; end; else return nazwy_modul["NAZWASTRONY"]{[1]=nazwa_jednostki,["kod języka"]=kod_jezyka,["kod projektu"]=kod_projektu,}; end; end; function p.Czy_przestrzen_nazw_jest_obslugiwana(frame,jakas_przestrzen_nazw,kod_jezyka,kod_projektu) local nazwy_modul=require("Module:Nazwy"); local parametry_modul=require("Module:Parametry"); local wiki_modul=require("Module:Wiki"); local czy_biezaca=wiki_modul["CzyBieżącaWiki"]{["kod języka"]=kod_jezyka,["kod projektu"]=kod_projektu,}; if(czy_biezaca)then jakas_przestrzen_nazw=nazwy_modul.Np{nazwa=jakas_przestrzen_nazw}; else jakas_przestrzen_nazw=nazwy_modul.NpDane{nazwa=jakas_przestrzen_nazw,["kod języka"]=kod_jezyka,["kod projektu"]=kod_projektu,}; end; local function nazwa_przestrzeni_nazw_fun(nazwa_przestrzeni_nazw_iter) if(czy_biezaca)then nazwa_przestrzeni_nazw_iter=nazwy_modul.Np{nazwa=nazwa_przestrzeni_nazw_iter}; else nazwa_przestrzeni_nazw_iter=nazwy_modul.NpDane{nazwa=nazwa_przestrzeni_nazw_iter,["kod języka"]=kod_jezyka,["kod projektu"]=kod_projektu,}; end; if(jakas_przestrzen_nazw==nazwa_przestrzeni_nazw_iter)then return true; end; return false; end; for licznik,nazwa_przestrzeni_nazw in pairs(frame.args)do if(type(licznik)=="number")then local nazwa_przestrzeni_nazw_element,klucze_element=mw.ustring.match(nazwa_przestrzeni_nazw,"^%s*([%w%s]*)%s*:%s*(.-)%s*"); if(nazwa_przestrzeni_nazw_element and klucze_element)then local tab_klucze=mw.text.split(klucze_element,"%s*,%s*",false); local wiki_modul=require("Module:Wiki"); for _,klucz_element in ipairs(tab_klucze)do local kod_jezyka_obslugiwane,kod_projektu_obslugiwane=wiki_modul.KluczProjektu(klucz_element); if(kod_jezyka_obslugiwane==kod_jezyka and kod_projektu_obslugiwane==kod_projektu)then local wynik=nazwa_przestrzeni_nazw_fun(nazwa_przestrzeni_nazw_element); if(wynik)then return true;end; end; end; else local wynik=nazwa_przestrzeni_nazw_fun(nazwa_przestrzeni_nazw); if(wynik)then return true;end; end; end; end; return false; end; function p.Analiza_interwiki_czy_projekt_aktualny(frame,czy_jezyk,czy_projekt) local parametry_modul=require("Module:Parametry"); local p=parametry_modul.PobierzFrameEwentualnieParent(frame); local pudelko_modul=require("Module:Pudełko"); local wiki_modul=require("Module:Wiki"); local jezyk_biezacy=czy_jezyk and pudelko_modul["Kod języka tego projektu"](); local projekt_biezacy=czy_projekt and pudelko_modul["Kod projektu tego projektu"](); for i,_ in pairs(p.args)do if(type(i)=="number")then local klucz_projektu=pudelko_modul["Klucz projektu"](frame,i); local kod_jezyka=pudelko_modul["Kod języka"](frame,i); local kod_projektu=pudelko_modul["kod projektu"](frame,i); local jezyk,projekt=wiki_modul.KodyWiki(klucz_projektu,kod_jezyka,kod_projektu); if((czy_jezyk and (jezyk~=jezyk_biezacy))or(czy_projekt and(projekt~=projekt_biezacy)))then return "tak"; end; end; end; return; end; return p; jwma87rck2i1ylf4fx1c79zzsgnifj3 540396 540395 2026-04-23T15:23:31Z Persino 2851 540396 Scribunto text/plain local p={}; function p.Nazwa_strony_bazowej_projektu_z_wikidanych(kod_jezyka,kod_projektu) local strona=require("Module:Pudełko")["Strona główna tego projektu"](); local odpowiednik_strony=require("Module:Wiki").WikidaneOdpowiednikStrony{["nazwa strony"]=strona,["kod języka"]=kod_jezyka,["kod projektu"]=kod_projektu}; if(odpowiednik_strony)then local nazwy_modul=require("Module:Nazwy"); return nazwy_modul["PEŁNANAZWASTRONY"]{[1]=odpowiednik_strony,["kod języka"]=kod_jezyka,["kod projektu"]=kod_projektu,}; else local pudelko_modul=require("Module:Pudełko"); if((kod_jezyka==pudelko_modul["Kod języka tego projektu"]())and(kod_projektu==pudelko_modul["Kod projektu tego projektu"]()))then return strona; else local wiki_interwiki_modul=mw.loadData("Module:Wiki/interwiki"); local czy_w_wikidanych=wiki_interwiki_modul.tablica_kody_projektu_wikidane.lingwistyczne[kod_projektu] or wiki_interwiki_modul.tablica_kody_projektu_wikidane.specjalistyczne[kod_projektu]; return czy_w_wikidanych and "Main Page" or nil; end; end; end; function p.Nazwa_strony_bazowej_dla_dzieci_z_wikidanych(kod_jezyka) local strona=require("Module:Pudełko")["Strona główna dla dzieci tego projektu"](); local pudelko_modul=require("Module:Pudełko"); local kod_jezyka_tego_projektu=pudelko_modul["Kod języka tego projektu"](); if(kod_jezyka==kod_jezyka_tego_projektu)then return strona;end; local kod_projektu_tego_projektu=pudelko_modul["Kod projektu tego projektu"](); local odpowiednik_strony=require("Module:Wiki").WikidaneOdpowiednikStrony{["nazwa strony"]=strona,["kod języka"]=kod_jezyka,["kod projektu"]=kod_projektu_tego_projektu}; if(odpowiednik_strony)then local nazwy_modul=require("Module:Nazwy"); return nazwy_modul["PEŁNANAZWASTRONY"]{[1]=odpowiednik_strony,["kod języka"]=kod_jezyka,["kod projektu"]=kod_projektu_tego_projektu,}; else return "Wikijunior"; end; end; function p.Nazwa_strony_bazowej_projektu_ze_zmiennej(frame,i,kod_jezyka,kod_projektu) local pf=frame.getParent and frame:getParent() or {args={}}; local strona_glowna_projektu; if(i~=0)then local pudelko_modul=require("Module:Pudełko"); local kod_jezyka_tego_projektu=pudelko_modul["Kod języka tego projektu"](); local kod_projektu_tego_projektu=pudelko_modul["Kod projektu tego projektu"](); if(kod_jezyka==kod_jezyka_tego_projektu)and(kod_projektu==kod_projektu_tego_projektu)then strona_glowna_projektu=frame.args["strona główna projektu"] or pf.args["strona główna projektu"] else strona_glowna_projektu=(frame.args["strona główna projektu "..i] or pf.args["strona główna projektu "..i]) end; else strona_glowna_projektu=frame.args["strona główna projektu"] or pf.args["strona główna projektu"] end; local parametry_modul=require("Module:Parametry"); return (parametry_modul.CzyTak(strona_glowna_projektu))and require("Module:Nazwy")["PEŁNANAZWASTRONY"]{[1]=strona_glowna_projektu,["kod języka"]=kod_jezyka,["kod projektu"]=kod_projektu,} or (strona_glowna_projektu and "" or nil); end; function p.Nazwa_strony_bazowej_dla_dzieci_ze_zmiennej(frame,i,kod_jezyka) local pf=frame.getParent and frame:getParent() or {args={}}; local pudelko_modul=require("Module:Pudełko"); local strona_glowna_dla_dzieci; if(i~=0)then local kod_jezyka_tego_projektu=pudelko_modul["Kod języka tego projektu"](); if(kod_jezyka==kod_jezyka_tego_projektu)then strona_glowna_dla_dzieci=frame.args["strona główna dla dzieci"] or pf.args["strona główna dla dzieci"] else strona_glowna_dla_dzieci=(frame.args["strona główna dla dzieci "..i] or pf.args["strona główna dla dzieci "..i]) end; else strona_glowna_dla_dzieci=frame.args["strona główna dla dzieci"] or pf.args["strona główna dla dzieci"] end; local kod_projektu_tego_projektu=pudelko_modul["Kod projektu tego projektu"](); local parametry_modul=require("Module:Parametry"); return (parametry_modul.CzyTak(strona_glowna_dla_dzieci))and require("Module:Nazwy")["PEŁNANAZWASTRONY"]{[1]=strona_glowna_dla_dzieci,["kod języka"]=kod_jezyka,["kod projektu"]=kod_projektu_tego_projektu,} or (strona_glowna_dla_dzieci and "" or nil); end; function p.Normalna_przedmiotowa_lub_dyskusji_nazwa_przestrzeni_nazw(nazwa_przestrzeni_nazw, normmalna_przedmiotwa_dyskusji,kod_jezyka,kod_projektu) local nazwa_przestrzeni_nazw_blad; local wiki_modul=require("Module:Wiki"); local nazwy_modul=require("Module:Nazwy"); local czy_biezaca=wiki_modul["CzyBieżącaWiki"]{["kod języka"]=kod_jezyka,["kod projektu"]=kod_projektu,}; if(normmalna_przedmiotwa_dyskusji==0)then if(czy_biezaca)then nazwa_przestrzeni_nazw_blad=nazwy_modul.Np{nazwa=nazwa_przestrzeni_nazw,["kanoniczna"]="tak",["nazwij projektem"]="tak",["nazwij dyskusją projektu"]="tak",["istnieje"]="tak",["wynik błędu nietekstowy"]="tak",}; else nazwa_przestrzeni_nazw_blad=nazwy_modul.NpDane{nazwa=nazwa_przestrzeni_nazw,["kanoniczna"]="tak",["nazwij projektem"]="tak",["nazwij dyskusją projektu"]="tak",["kod języka"]=kod_jezyka,["kod projektu"]=kod_projektu,["istnieje"]="tak",["wynik błędu nietekstowy"]="tak",}; end; elseif(normmalna_przedmiotwa_dyskusji==1)then if(czy_biezaca)then nazwa_przestrzeni_nazw_blad=nazwy_modul.Np{nazwa=nazwa_przestrzeni_nazw, przedmiotowa="tak",["kanoniczna"]="tak",["nazwij projektem"]="tak",["nazwij dyskusją projektu"]="tak",["istnieje"]="tak",["wynik błędu nietekstowy"]="tak",}; else nazwa_przestrzeni_nazw_blad=nazwy_modul.NpDane{nazwa=nazwa_przestrzeni_nazw, przedmiotowa="tak",["kanoniczna"]="tak",["nazwij projektem"]="tak",["nazwij dyskusją projektu"]="tak",["kod języka"]=kod_jezyka,["kod projektu"]=kod_projektu,["istnieje"]="tak",["wynik błędu nietekstowy"]="tak",}; end; elseif(normmalna_przedmiotwa_dyskusji==2)then if(czy_biezaca)then nazwa_przestrzeni_nazw_blad=nazwy_modul.Np{nazwa=nazwa_przestrzeni_nazw, dyskusja="tak",["kanoniczna"]="tak",["nazwij projektem"]="tak",["nazwij dyskusją projektu"]="tak",["istnieje"]="tak",["wynik błędu nietekstowy"]="tak",}; else nazwa_przestrzeni_nazw_blad=nazwy_modul.NpDane{nazwa=nazwa_przestrzeni_nazw, dyskusja="tak",["kanoniczna"]="tak",["nazwij projektem"]="tak",["nazwij dyskusją projektu"]="tak",["kod języka"]=kod_jezyka,["kod projektu"]=kod_projektu,["istnieje"]="tak",["wynik błędu nietekstowy"]="tak",}; end; else if(czy_biezaca)then nazwa_przestrzeni_nazw_blad=nazwy_modul.Np{nazwa=nazwa_przestrzeni_nazw,["kanoniczna"]="tak",["nazwij projektem"]="tak",["nazwij dyskusją projektu"]="tak",["istnieje"]="tak",["wynik błędu nietekstowy"]="tak",}; else nazwa_przestrzeni_nazw_blad=nazwy_modul.NpDane{nazwa=nazwa_przestrzeni_nazw,["kanoniczna"]="tak",["nazwij projektem"]="tak",["nazwij dyskusją projektu"]="tak",["kod języka"]=kod_jezyka,["kod projektu"]=kod_projektu,["istnieje"]="tak",["wynik błędu nietekstowy"]="tak",}; end; end; return nazwa_przestrzeni_nazw_blad end; function p.Nazwa_przestrzeni_nazw(frame,kod_liczbowy_przestrzeni_nazw,czy_uwzglednic_alternatywna_nazwe,numer_jednostki) local pf=frame.getParent and frame:getParent() or {args={}}; local nazwa_przestrzeni_nazw=p.Nazwy_przestrzeni_i_jednostki_podane_o_pewnym_numerze(frame,numer_jednostki,1) or p.Nazwa_przestrzeni_nazw_uzyskana_z_typu_jednostki_z_frame(frame,numer_jednostki); local nazwy_modul=require("Module:Nazwy"); local wiki_modul=require("Module:Wiki"); local kod_jezyka,kod_projektu=p.Wikikody_kontenera(frame,numer_jednostki); local czy_biezaca_wiki=wiki_modul["CzyBieżącaWiki"]{["kod języka"]=kod_jezyka,["kod projektu"]=kod_projektu,}; local czy_blad_nazwy_przestrzeni_nazw; local typ; if(kod_liczbowy_przestrzeni_nazw==1)then typ="przedmiotowa"; if(czy_biezaca_wiki)then czy_blad_nazwy_przestrzeni_nazw=(not nazwa_przestrzeni_nazw)and nazwy_modul["PRZEDMIOTOWAPRZESTRZEŃ"]() or nazwy_modul.Np{nazwa=nazwa_przestrzeni_nazw,przedmiotowa="tak",["istnieje"]="tak",["wynik błędu nietekstowy"]="tak",}; else czy_blad_nazwy_przestrzeni_nazw=(not nazwa_przestrzeni_nazw)and nazwy_modul["PRZEDMIOTOWAPRZESTRZEŃ"]{["kod języka"]=kod_jezyka,["kod projektu"]=kod_projektu,} or nazwy_modul.NpDane{nazwa=nazwa_przestrzeni_nazw,przedmiotowa="tak",["kod języka"]=kod_jezyka,["kod projektu"]=kod_projektu,["istnieje"]="tak",["wynik błędu nietekstowy"]="tak",}; end; elseif(kod_liczbowy_przestrzeni_nazw==2)then if(czy_biezaca_wiki)then typ="dyskusja"; czy_blad_nazwy_przestrzeni_nazw=(not nazwa_przestrzeni_nazw)and nazwy_modul["PRZESTRZEŃDYSKUSJI"]() or nazwy_modul.Np{nazwa=nazwa_przestrzeni_nazw,dyskusja="tak",["istnieje"]="tak",["wynik błędu nietekstowy"]="tak",}; else czy_blad_nazwy_przestrzeni_nazw=(not nazwa_przestrzeni_nazw)and nazwy_modul["PRZESTRZEŃDYSKUSJI"]{["kod języka"]=kod_jezyka,["kod projektu"]=kod_projektu,} or nazwy_modul.NpDane{nazwa=nazwa_przestrzeni_nazw,dyskusja="tak",["kod języka"]=kod_jezyka,["kod projektu"]=kod_projektu,["istnieje"]="tak",["wynik błędu nietekstowy"]="tak",}; end; else if(czy_biezaca_wiki)then czy_blad_nazwy_przestrzeni_nazw=(not nazwa_przestrzeni_nazw)and nazwy_modul["NAZWAPRZESTRZENI"]() or nazwy_modul.Np{nazwa=nazwa_przestrzeni_nazw,["istnieje"]="tak",["wynik błędu nietekstowy"]="tak",}; else czy_blad_nazwy_przestrzeni_nazw=(not nazwa_przestrzeni_nazw)and nazwy_modul["NAZWAPRZESTRZENI"]{["kod języka"]=kod_jezyka,["kod projektu"]=kod_projektu,} or nazwy_modul.NpDane{nazwa=nazwa_przestrzeni_nazw,["kod języka"]=kod_jezyka, ["kod projektu"]=kod_projektu,["istnieje"]="tak",["wynik błędu nietekstowy"]="tak",}; end; end; if(czy_blad_nazwy_przestrzeni_nazw)then return czy_blad_nazwy_przestrzeni_nazw; else if(((czy_uwzglednic_alternatywna_nazwe==nil)and true or czy_uwzglednic_alternatywna_nazwe) and frame.args[1])then local nazwa_przestrzeni_nazw_alternatywnej=mw.text.trim(frame.args[1]); if(mw.ustring.match(nazwa_przestrzeni_nazw_alternatywnej,"^[%w%s_]*$"))then local czy_blad_nazwa_przestrzeni_nazw_alternatywnej; if(czy_biezaca_wiki)then local tab_parametry={nazwa=nazwa_przestrzeni_nazw_alternatywnej,["istnieje"]="tak",["wynik błędu nietekstowy"]="tak",}; if(typ)then tab_parametry[typ]="tak";end; czy_blad_nazwa_przestrzeni_nazw_alternatywnej=nazwy_modul.Np(tab_parametry); else local tab_parametry={nazwa=nazwa_przestrzeni_nazw_alternatywnej,["kod języka"]=kod_jezyka,["kod projektu"]=kod_projektu,["istnieje"]="tak",["wynik błędu nietekstowy"]="tak",}; if(typ)then tab_parametry[typ]="tak";end; czy_blad_nazwa_przestrzeni_nazw_alternatywnej=nazwy_modul.NpDane(tab_parametry); end; return czy_blad_nazwa_przestrzeni_nazw_alternatywnej or "(błąd)"; else return "(błąd)"; end; else local parametry_modul=require("Module:Parametry"); nazwa_przestrzeni_nazw=parametry_modul["Odstępy"]{[1]=nazwa_przestrzeni_nazw,[2]="tak",}; if(mw.ustring.match(nazwa_przestrzeni_nazw,"^[%w%s_]*$"))then return nazwa_przestrzeni_nazw; else return "(błąd)"; end; end; end; end; function p.Nazwa_przestrzeni_nazw_2(frame,czy_uwzglednic_alternatywna_nazwe,i) local nazwa_przestrzeni_nazw,nazwa_jednostki,liczba_numer_jednostki=p.Nazwy_przestrzeni_i_jednostki_podane_o_pewnym_numerze(frame,i); nazwa_przestrzeni_nazw=nazwa_przestrzeni_nazw or p.Nazwa_przestrzeni_nazw_uzyskana_z_typu_jednostki_z_frame(frame,liczba_numer_jednostki); local nazwy_modul=require("Module:Nazwy"); local kod_jezyka,kod_projektu=p.Wikikody_kontenera(frame,liczba_numer_jednostki); local wiki_modul=require("Module:Wiki"); local czy_biezaca_wiki=wiki_modul["CzyBieżącaWiki"]{["kod języka"]=kod_jezyka,["kod projektu"]=kod_projektu,}; local nazwa_przestrzeni_nazw_blad; local parametry_modul=require("Module:Parametry"); if(czy_biezaca_wiki)then nazwa_przestrzeni_nazw=nazwa_przestrzeni_nazw and mw.text.trim(nazwa_przestrzeni_nazw) or nazwy_modul["NAZWAPRZESTRZENI"](); nazwa_przestrzeni_nazw_blad=require("Module:Nazwy").Np{nazwa=nazwa_przestrzeni_nazw,["istnieje"]="tak",["wynik błędu nietekstowy"]="tak",}; if(nazwa_jednostki)then nazwa_jednostki=parametry_modul["Odstępy"]{[1]=nazwa_jednostki,[2]="tak",}; nazwa_jednostki=mw.ustring.gsub(nazwa_jednostki,"^([^#]*)#(.*)$","%1"); local parametry=mw.ustring.match(nazwa_jednostki,"^.*%?([^%?]+)$"); if(parametry and mw.ustring.match(parametry,"[^=]+=[^=]*"))then nazwa_jednostki=mw.ustring.gsub(nazwa_jednostki,"^(.*)%?([^%?]+)$","%1"); end; else nazwa_jednostki=nazwy_modul["NAZWASTRONY"](); end; else nazwa_przestrzeni_nazw=nazwa_przestrzeni_nazw and mw.text.trim(nazwa_przestrzeni_nazw) or nazwy_modul["NAZWAPRZESTRZENI"]{["kod języka"]=kod_jezyka,["kod projektu"]=kod_projektu,}; nazwa_przestrzeni_nazw_blad=require("Module:Nazwy").NpDane{nazwa=nazwa_przestrzeni_nazw,["kod języka"]=kod_jezyka,["kod projektu"]=kod_projektu,["istnieje"]="tak",["wynik błędu nietekstowy"]="tak",}; if(nazwa_jednostki)then local html_modul=require("Module:Html"); nazwa_jednostki=html_modul["NazwaStronyAdresu"](nazwa_jednostki,true); else nazwa_jednostki=nazwy_modul["NAZWASTRONY"]{["kod języka"]=kod_jezyka,["kod projektu"]=kod_projektu,}; end; end; nazwa_przestrzeni_nazw=nazwa_przestrzeni_nazw_blad or nazwa_przestrzeni_nazw; if(not mw.ustring.match(nazwa_jednostki,"^:"))then if(nazwa_przestrzeni_nazw~="")then if(czy_biezaca_wiki)then local nazwy_np_modul=mw.loadData("Module:Nazwy/Np"); if(nazwa_przestrzeni_nazw==nazwy_np_modul.Template)then local nazwa_przestrzeni_nazw_d=require("Module:Nazwy")["NAZWAPRZESTRZENI"](nazwa_jednostki); if(nazwa_przestrzeni_nazw_d==nazwy_np_modul.Template)then nazwa_przestrzeni_nazw=nazwy_np_modul.Template; end; elseif(nazwa_przestrzeni_nazw==nazwy_np_modul.Module)then local nazwa_przestrzeni_nazw_d=require("Module:Nazwy")["NAZWAPRZESTRZENI"](nazwa_jednostki); if(nazwa_przestrzeni_nazw_d==nazwy_np_modul.Module)then nazwa_przestrzeni_nazw=nazwy_np_modul.Module; end; end; else local template_prze=nazwy_modul.NpDane{nazwa="Template",["kod języka"]=kod_jezyka,["kod projektu"]=kod_projektu,}; local module_prze=nazwy_modul.NpDane{nazwa="Module",["kod języka"]=kod_jezyka,["kod projektu"]=kod_projektu,}; if(nazwa_przestrzeni_nazw==template_prze)then local nazwa_przestrzeni_nazw_d=nazwy_modul["NAZWAPRZESTRZENI"]{[1]=nazwa_jednostki,["kod języka"]=kod_jezyka,["kod projektu"]=kod_projektu,}; if(nazwa_przestrzeni_nazw_d==template_prze)then nazwa_przestrzeni_nazw=template_prze; end; elseif(nazwa_przestrzeni_nazw==module_prze)then local nazwa_przestrzeni_nazw_d=nazwy_modul["NAZWAPRZESTRZENI"]{[1]=nazwa_jednostki,["kod języka"]=kod_jezyka,["kod projektu"]=kod_projektu,}; if(nazwa_przestrzeni_nazw_d==module_prze)then nazwa_przestrzeni_nazw=module_prze; end; end; end; if(not nazwa_przestrzeni_nazw_blad)then if(((czy_uwzglednic_alternatywna_nazwe==nil)and true or czy_uwzglednic_alternatywna_nazwe) and frame.args[1])then local wytrimowana_nazwa_przestrzeni_nazw=mw.text.trim(frame.args[1]); if(mw.ustring.match(wytrimowana_nazwa_przestrzeni_nazw,"^[%w%s_]*$"))then if(czy_biezaca_wiki)then local nazwy_modul=require("Module:Nazwy"); local czy_blad_nazwy_przestrzeni_nazw=nazwy_modul.Np{nazwa=wytrimowana_nazwa_przestrzeni_nazw,["istnieje"]="tak",["wynik błędu nietekstowy"]="tak",} return czy_blad_nazwy_przestrzeni_nazw or "(błąd)"; else local nazwy_modul=require("Module:Nazwy"); local nazwa_przestrzeni_nazw_blad2=nazwy_modul.NpDane{nazwa=wytrimowana_nazwa_przestrzeni_nazw,["kod języka"]=kod_jezyka,["kod projektu"]=kod_projektu,["istnieje"]="tak",["wynik błędu nietekstowy"]="tak",}; return nazwa_przestrzeni_nazw_blad2 or "(błąd)"; end; else return "(błąd)"; end; else local wytrimowana_nazwa_przestrzeni_nazw=mw.text.trim(nazwa_przestrzeni_nazw); if(mw.ustring.match(wytrimowana_nazwa_przestrzeni_nazw,"^[%w%s_]*$"))then return wytrimowana_nazwa_przestrzeni_nazw; else return "(błąd)"; end; end; else return nazwa_przestrzeni_nazw; end; else return require("Module:Nazwy")["NAZWAPRZESTRZENI"]{[1]=nazwa_jednostki,["kod języka"]=kod_jezyka,["kod projektu"]=kod_projektu,}; end; else return require("Module:Nazwy")["NAZWAPRZESTRZENI"]{[1]=nazwa_jednostki,["kod języka"]=kod_jezyka,["kod projektu"]=kod_projektu,}; end; end; function p.Nazwa_przestrzeni_nazw_przedmiotowa_dyskusji_2(frame,czy_uwzglednic_alternatywna_nazwe,i,typ) local numer_jednostki=i or frame.args["numer jednostki"]; local liczba_numer_jednostki=((numer_jednostki)and(tonumber(numer_jednostki))or 0); local pudelko_modul=require("Module:Pudełko"); local tab_nazwa={ ["przedmiotowa"]="Nazwa przedmiotowej przestrzeni nazw", ["dyskusja"]="Nazwa przestrzeni nazw", }; local nazwa_przestrzeni_nazw=pudelko_modul[tab_nazwa[typ]](frame,czy_uwzglednic_alternatywna_nazwe,liczba_numer_jednostki); local nazwy_modul=require("Module:Nazwy"); if(nazwa_przestrzeni_nazw=="")then local nazwa_jednostki=pudelko_modul["Nazwa jednostki"](frame,liczba_numer_jednostki); local kod_jezyka,kod_projektu=p.Wikikody_kontenera(frame,liczba_numer_jednostki); local tab_nazwa={ ["przedmiotowa"]="PRZEDMIOTOWAPRZESTRZEŃ", ["dyskusja"]="PRZESTRZEŃDYSKUSJI", }; nazwa_przestrzeni_nazw=nazwy_modul[tab_nazwa[typ]]{nazwa=nazwa_jednostki,["kod języka"]=kod_jezyka,["kod projektu"]=kod_projektu,}; else if(typ=="dyskusja")then local wiki_modul=require("Module:Wiki"); local czy_biezaca=wiki_modul["CzyBieżącaWiki"]{["kod języka"]=kod_jezyka,["kod projektu"]=kod_projektu,}; if(czy_biezaca)then nazwa_przestrzeni_nazw=nazwy_modul.Np{[typ]="tak",nazwa=nazwa_przestrzeni_nazw}; else nazwa_przestrzeni_nazw=nazwy_modul.NpDane{[typ]="tak",nazwa=nazwa_przestrzeni_nazw,["kod języka"]=kod_jezyka,["kod projektu"]=kod_projektu,}; end; end; end; return nazwa_przestrzeni_nazw; end; function p.Kod_jezyka(frame,i,wartosc_domyslna) local pudelko_modul=require("Module:Pudełko"); if(not i)then return pudelko_modul["Kod języka tego projektu"]();end; local pf=frame.getParent and frame:getParent() or {args={}}; if(i==0)then return pudelko_modul["Kod języka tego projektu"](); elseif(i==1)then local parametry_modul=require("Module:Parametry"); local kod_jezyka=frame.args["kod języka"] or frame.args["kod języka 1"] or pf.args["kod języka"] or pf.args["kod języka 1"] return ((kod_jezyka)and(kod_jezyka~=""))and mw.text.trim(kod_jezyka) or ((parametry_modul.CzyTak(wartosc_domyslna))and wartosc_domyslna or nil); elseif(i>1)then local parametry_modul=require("Module:Parametry"); local kod_jezyka=frame.args["kod języka "..i] or pf.args["kod języka "..i] return ((kod_jezyka)and(kod_jezyka~=""))and mw.text.trim(kod_jezyka) or ((parametry_modul.CzyTak(wartosc_domyslna))and wartosc_domyslna or nil); end; end function p.Kod_projektu(frame,i,wartosc_domyslna) local pudelko_modul=require("Module:Pudełko"); if(not i)then return pudelko_modul["Kod projektu tego projektu"]();end; local pf=frame.getParent and frame:getParent() or {args={}}; if(i==0)then return pudelko_modul["Kod projektu tego projektu"](); elseif(i==1)then local parametry_modul=require("Module:Parametry"); local kod_projektu=frame.args["kod projektu"] or frame.args["kod projektu 1"] or pf.args["kod projektu"] or pf.args["kod projektu 1"] return ((kod_projektu)and(kod_projektu~=""))and mw.text.trim(kod_projektu) or ((parametry_modul.CzyTak(wartosc_domyslna))and wartosc_domyslna or nil); elseif(i>1)then local parametry_modul=require("Module:Parametry"); local kod_projektu=frame.args["kod projektu "..i] or pf.args["kod projektu "..i] return ((kod_projektu)and(kod_projektu~=""))and mw.text.trim(kod_projektu) or ((parametry_modul.CzyTak(wartosc_domyslna))and wartosc_domyslna or nil); end; end function p.Klucz_projektu(frame,i,wartosc_domyslna_jezyka,wartosc_domyslna_projektu) local pf=frame.getParent and frame:getParent() or {args={}}; local klucz_projektu; local function domyslne_klucz(klucz_projektu) local parametry_modul=require("Module:Parametry"); return ((klucz_projektu)and(klucz_projektu~=""))and mw.text.trim(klucz_projektu)or((parametry_modul.CzyTak(wartosc_domyslna_jezyka)and(parametry_modul.CzyTak(wartosc_domyslna_projektu)))and (wartosc_domyslna_jezyka..":" ..wartosc_domyslna_projektu)or(parametry_modul.CzyTak(wartosc_domyslna_jezyka) and wartosc_domyslna_jezyka or (parametry_modul.CzyTak(wartosc_domyslna_projektu) and wartosc_domyslna_projektu or nil))); end; if(i==0)then return nil; elseif(i==1)then local klucz_projektu=frame.args["klucz projektu"] or frame.args["klucz projektu 1"] or pf.args["klucz projektu"] or pf.args["klucz projektu 1"]; return domyslne_klucz(klucz_projektu); elseif(i>1)then local klucz_projektu=frame.args["klucz projektu "..i] or pf.args["klucz projektu "..i]; return domyslne_klucz(klucz_projektu); end; end; function p.Wikikody_kontenera(frame,i,wartosc_domyslna_jezyka,wartosc_domyslna_projektu) local wiki_modul=require("Module:Wiki"); local kod_jezyka,kod_projektu=wiki_modul.KodyWiki(p.Klucz_projektu(frame,i,wartosc_domyslna_jezyka,wartosc_domyslna_projektu),p.Kod_jezyka(frame,i,wartosc_domyslna_jezyka),p.Kod_projektu(frame,i,wartosc_domyslna_projektu)); return kod_jezyka,kod_projektu; end; function p.Nazwa_przestrzeni_nazw_od_typu_jednostki(typ,args,bez_analizy) if(not bez_analizy)then local parametry_modul=require("Module:Parametry"); if((((not parametry_modul.CzyTak(args["obsługiwane jednostki jako nieopisowe strony"]))and((typ=="artykuł")or(typ=="podręcznik")))or (typ=="artykuł")))then return ""; elseif(((not parametry_modul.CzyTak(args["obsługiwane jednostki jako nieopisowe strony"]))and((typ=="artykuł dla dzieci")or(typ=="podręcznik dla dzieci")))or(typ=="artykuł dla dzieci"))then return "Wikijunior"; elseif((not parametry_modul.CzyTak(args["obsługiwane brudnopisy jako normalne strony"])) and(((not parametry_modul.CzyTak(args["obsługiwane jednostki jako nieopisowe strony"]))and(parametry_modul.CzyTak(args["obsługiwane jednostki brudnopisu projektu"])and (typ=="podręcznik brudnopisu projektu" or typ=="artykuł brudnopisu projektu")or (typ=="jednostka brudnopisu projektu")) or (typ=="strona brudnopisu projektu"))or(typ=="strona projektu"))or (typ=="strona projektu"))then return "Project"; elseif((parametry_modul.CzyTak(args["obsługiwane strony jako niebrudnopisowe jednostki programowe"]))and (typ=="strona szablonu") or(not parametry_modul.CzyTak(args["obsługiwane brudnopisy jako normalne strony"]) and((not parametry_modul.CzyTak(args["obsługiwane opisy jako strony jednostek programowych"]) and not parametry_modul.CzyTak(args["obsługiwane jednostki jako nieopisowe strony"]) and not parametry_modul.CzyTak(args["obsługiwane nieudokumentowane szablony jako szablony"])) and((typ=="strona brudnopisu szablonu")or(typ=="strona brudnopisu opisu szablonu"))or(typ=="strona brudnopisu szablonu")) or((not parametry_modul.CzyTak(args["obsługiwane opisy jako strony jednostek programowych"]) and not parametry_modul.CzyTak(args["obsługiwane jednostki jako nieopisowe strony"]) and not parametry_modul.CzyTak(args["obsługiwane nieudokumentowane szablony jako szablony"])) and((typ=="strona szablonu")or(typ=="strona opisu szablonu"))or(typ=="strona szablonu"))))then return "Template"; elseif((parametry_modul.CzyTak(args["obsługiwane strony jako niebrudnopisowe jednostki programowe"]))and (typ=="strona modułu") or(not parametry_modul.CzyTak(args["obsługiwane brudnopisy jako normalne strony"]) and((not parametry_modul.CzyTak(args["obsługiwane opisy jako strony jednostek programowych"]) and not parametry_modul.CzyTak(args["obsługiwane jednostki jako nieopisowe strony"])) and((typ=="strona brudnopisu modułu")or(typ=="strona brudnopisu opisu modułu"))or(typ=="strona brudnopisu modułu")) or((not parametry_modul.CzyTak(args["obsługiwane opisy jako strony jednostek programowych"]) and not parametry_modul.CzyTak(args["obsługiwane jednostki jako nieopisowe strony"])) and((typ=="strona modułu")or(typ=="strona opisu modułu"))or(typ=="strona modułu"))))then return "Module"; elseif(not parametry_modul.CzyTak(args["obsługiwane jednostki użytkownika jako normalne strony"]) and(((not parametry_modul.CzyTak(args["obsługiwane jednostki jako nieopisowe strony"]))and(parametry_modul.CzyTak(args["obsługiwane jednostki użytkownika"])and (typ=="podręcznik użytkownika" or typ=="artykuł użytkownika") or (typ=="jednostka użytkownika")) or (typ=="strona użytkownika"))or(typ=="strona główna użytkownika"))or(typ=="strona użytkownika"))then return "User"; elseif(typ=="strona pliku")then return "File"; elseif(typ=="strona kategorii")then return "Category"; elseif(typ=="strona pomocy")then return "Help"; elseif(typ=="strona komunikatu")then return "MediaWiki"; elseif(typ=="strona specjalna")then return "Special"; elseif(typ=="strona gadżetu")then return "Gadget"; elseif(typ=="strona główna projektu")then return "Project"; elseif(typ=="strona główna dla dzieci")then return "Wikijunior"; end; return; end; if(typ)then if((typ=="artykuł")or(typ=="podręcznik"))then return ""; elseif((typ=="artykuł dla dzieci")or(typ=="podręcznik dla dzieci"))then return "Wikijunior"; elseif((typ=="podręcznik brudnopisu projektu")or(typ=="artykuł brudnopisu projektu")or(typ=="jednostka brudnopisu projektu")or(typ=="strona brudnopisu projektu")or(typ=="strona projektu"))then return "Project"; elseif((typ=="strona szablonu")or(typ=="strona opisu szablonu")or(typ=="strona brudnopisu szablonu")or(typ=="strona brudnopisu opisu szablonu"))then return "Template"; elseif((typ=="strona modułu")or(typ=="strona opisu modułu")or(typ=="strona brudnopisu modułu")or(typ=="strona brudnopisu opisu modułu"))then return "Module"; elseif((typ=="podręcznik użytkownika")or(typ=="artykuł użytkownika")or(typ=="jednostka użytkownika")or(typ=="strona użytkownika")or(typ=="strona główna użytkownika"))then return "User"; elseif(typ=="strona pliku")then return "File"; elseif(typ=="strona kategorii")then return "Category"; elseif(typ=="strona pomocy")then return "Help"; elseif(typ=="strona komunikatu")then return "MediaWiki"; elseif(typ=="strona specjalna")then return "Special"; elseif(typ=="strona gadżetu")then return "Gadget"; elseif(typ=="strona główna projektu")then return "Project"; elseif(typ=="strona główna dla dzieci")then return "Wikijunior"; end; end; end; function p.Typ_jednostki_uzyskany_z_frame(frame,i) local numer_jednostki=i or frame.args["numer jednostki"]; local liczba_numer_jednostki=tonumber(numer_jednostki) or 0; local pf=frame.getParent and frame:getParent() or {args={}}; local typ; if liczba_numer_jednostki~=0 then typ=liczba_numer_jednostki and( (frame.args["typ jednostki "..liczba_numer_jednostki] or frame.args["typ jednostki i"]) or (pf.args["typ jednostki "..liczba_numer_jednostki] or pf.args["typ jednostki i"]) ); if(not typ)then local nazwa_jednostki=p.Nazwy_przestrzeni_i_jednostki_podane_o_pewnym_numerze(frame,liczba_numer_jednostki,2); if(nazwa_jednostki)then if(not mw.ustring.match(mw.text.trim(nazwa_jednostki),"^:"))then local nazwa_przesrzeni_nazw=p.Nazwy_przestrzeni_i_jednostki_podane_o_pewnym_numerze(frame,liczba_numer_jednostki,1); if(not nazwa_przesrzeni_nazw)then typ=frame.args["typ jednostki"] or pf.args["typ jednostki"]; end; end; end; end; else typ=frame.args["typ jednostki"] or pf.args["typ jednostki"]; end; return typ,liczba_numer_jednostki; end; function p.Czy_dyskusja_typu_jednostki_z_frame_od_dyskusja_typu_jednostki(frame,i) local numer_jednostki=i or frame.args["numer jednostki"]; local liczba_numer_jednostki=((numer_jednostki)and(tonumber(numer_jednostki))or 0); local pf=frame:getParent() or {args={},}; local function FuncTemp(liczba_numer_jednostki) local dyskusja_parametr="dyskusja typu jednostki"; if(liczba_numer_jednostki==0)then return frame.args[dyskusja_parametr] or pf.args[dyskusja_parametr]; else return ((frame.args[dyskusja_parametr.." "..liczba_numer_jednostki] or pf.args[dyskusja_parametr.." "..liczba_numer_jednostki]) or (frame.args[dyskusja_parametr.." i"] or pf.args[dyskusja_parametr.." i"]) or(frame.args[dyskusja_parametr] or pf.args[dyskusja_parametr])); end; end; local czy_dyskusja=FuncTemp(liczba_numer_jednostki); local parametry_modul=require("Module:Parametry"); local czy_dyskusja=parametry_modul.CzyTak(czy_dyskusja); return czy_dyskusja; end; function p.Nazwa_przestrzeni_nazw_uzyskana_z_typu_jednostki_z_frame(frame,i) local typ=p.Typ_jednostki_uzyskany_z_frame(frame,i); local nazwa_przestrzeni_nazw=typ and p.Nazwa_przestrzeni_nazw_od_typu_jednostki(typ,nil,true) or nil; if(nazwa_przestrzeni_nazw)then local czy_dyskusja=p.Czy_dyskusja_typu_jednostki_z_frame_od_dyskusja_typu_jednostki(frame,i); if(czy_dyskusja)then if(nazwa_przestrzeni_nazw=="")then return "Talk"; else return nazwa_przestrzeni_nazw.." talk"; end; else return nazwa_przestrzeni_nazw; end; else return nil; end; end; function p.Typ_jednostki(frame, kod_liczbowy_przestrzeni_nazw,i,numer_argorytmu) local parametry_modul=require("Module:Parametry"); local analiza=parametry_modul.CzyTak(frame.args["analiza"]); local typ,liczba_numer_jednostki=p.Typ_jednostki_uzyskany_z_frame(frame,i); local uzyskana_przestrzen_nazw_od_typu_jednostki; local nazwa_przestrzeni_nazw_podana,nazwa_jednostki_podana=p.Nazwy_przestrzeni_i_jednostki_podane_o_pewnym_numerze(frame,liczba_numer_jednostki); if((not analiza)and(typ))then if(typ~="")then uzyskana_przestrzen_nazw_od_typu_jednostki=p.Nazwa_przestrzeni_nazw_od_typu_jednostki(typ,frame.args); if(uzyskana_przestrzen_nazw_od_typu_jednostki)then if((not nazwa_przestrzeni_nazw_podana)and(not nazwa_jednostki_podana))then return typ; end; else return "(błąd typu jednostki)"; end; end; end; local nazwa_przestrzeni_nazw,nazwa_jednostki=p.Uzyskanie_nazw_jednostki(frame,kod_liczbowy_przestrzeni_nazw,liczba_numer_jednostki,numer_argorytmu); local nazwy_modul=require("Module:Nazwy"); local kod_jezyka,kod_projektu=p.Wikikody_kontenera(frame,liczba_numer_jednostki); local wiki_modul=require("Module:Wiki"); local czy_biezaca=wiki_modul["CzyBieżącaWiki"]{["kod języka"]=kod_jezyka,["kod projektu"]=kod_projektu,}; local czy_blad_nazwa_przestrzeni_nazw; if(czy_biezaca)then czy_blad_nazwa_przestrzeni_nazw=nazwy_modul.Np{nazwa=nazwa_przestrzeni_nazw,["kanoniczna"]="tak",["nazwij projektem"]="tak",["nazwij dyskusją projektu"]="tak",["istnieje"]="tak",["wynik błędu nietekstowy"]="tak",} else czy_blad_nazwa_przestrzeni_nazw=nazwy_modul.NpDane{nazwa=nazwa_przestrzeni_nazw,["kanoniczna"]="tak",["nazwij projektem"]="tak",["nazwij dyskusją projektu"]="tak",["kod języka"]=kod_jezyka,["kod projektu"]=kod_projektu,["istnieje"]="tak",["wynik błędu nietekstowy"]="tak",} end; if(not czy_blad_nazwa_przestrzeni_nazw)then return "(błąd nazwy przestrzeni nazw)";end; nazwa_przestrzeni_nazw=czy_blad_nazwa_przestrzeni_nazw; --- --- if((not analiza)and(typ))then if(typ~="")then ---typ jednostki if(uzyskana_przestrzen_nazw_od_typu_jednostki)then if((nazwa_przestrzeni_nazw_podana)and(not nazwa_jednostki_podana))then if(uzyskana_przestrzen_nazw_od_typu_jednostki==nazwa_przestrzeni_nazw)then return typ; else return "(błąd niezgodności)"; end; end; else return "(błąd typu jednostki)"; end; end; end; local function Typ_jednostki() if(nazwa_jednostki~="")then --local kod_jezyka,kod_projektu=KodyWikiPudelka(frame,liczba_numer_jednostki); --local klucz_projektu=kod_projektu..":"..kod_jezyka; local pudelko_modul=require("Module:Pudełko"); local pelna_nazwa_strony=((nazwa_przestrzeni_nazw~="")and nazwa_przestrzeni_nazw..":" or "")..nazwa_jednostki; if(pudelko_modul.CzyNiepoprawnaNazwa(pelna_nazwa_strony))then return "(błąd nazwy jednostki)";end; local nazwy_modul=require("Module:Nazwy") pelna_nazwa_strony=nazwy_modul["PEŁNANAZWASTRONY"]{[1]=pelna_nazwa_strony,["kod języka"]=kod_jezyka,["kod projektu"]=kod_projektu,}; local norm_przed_lub_dyskusji=p.Normalna_przedmiotowa_lub_dyskusji_nazwa_przestrzeni_nazw(nazwa_przestrzeni_nazw, kod_liczbowy_przestrzeni_nazw,kod_jezyka,kod_projektu); if(kod_projektu==pudelko_modul["Kod projektu tego projektu"]())then local nazwa_strony_glownej_dla_dzieci_ze_zmiennej=p.Nazwa_strony_bazowej_dla_dzieci_ze_zmiennej(frame,liczba_numer_jednostki,kod_jezyka); if(nazwa_strony_glownej_dla_dzieci_ze_zmiennej=="")then return "(błąd nazwy strony głównej dla dzieci)";end; local nazwa_strony_glownej_wikijuniora=p.Nazwa_strony_bazowej_dla_dzieci_z_wikidanych(kod_jezyka); local nazwa_strony_glownej_dla_dzieci_uzyskana=(not nazwa_strony_glownej_dla_dzieci_ze_zmiennej)and nazwa_strony_glownej_wikijuniora or nazwa_strony_glownej_dla_dzieci_ze_zmiennej; if(nazwa_strony_glownej_dla_dzieci_uzyskana)then if(pudelko_modul.CzyNiepoprawnaNazwa(nazwa_strony_glownej_dla_dzieci_uzyskana))then return "(błąd nazwy strony głównej dla dzieci)";end; nazwa_strony_glownej_dla_dzieci_uzyskana=nazwy_modul["PEŁNANAZWASTRONY"]{[1]=nazwa_strony_glownej_dla_dzieci_uzyskana,["kod języka"]=kod_jezyka,["kod projektu"]=kod_projektu,}; if(pelna_nazwa_strony==nazwa_strony_glownej_dla_dzieci_uzyskana)then return "strona główna dla dzieci";end; end; end; local nazwa_strony_glownej_projektu_ze_zmiennej=p.Nazwa_strony_bazowej_projektu_ze_zmiennej(frame,liczba_numer_jednostki,kod_jezyka,kod_projektu); if(nazwa_strony_glownej_projektu_ze_zmiennej=="")then return "(błąd nazwy strony głównej projektu)";end; local nazwa_strony_glownej_projektu_z_wikidanych=p.Nazwa_strony_bazowej_projektu_z_wikidanych(kod_jezyka,kod_projektu); local nazwa_strony_glownej_projektu_uzyskana=(not nazwa_strony_glownej_projektu_ze_zmiennej)and nazwa_strony_glownej_projektu_z_wikidanych or nazwa_strony_glownej_projektu_ze_zmiennej; if(nazwa_strony_glownej_projektu_uzyskana)then if(pudelko_modul.CzyNiepoprawnaNazwa(nazwa_strony_glownej_projektu_uzyskana))then return "(błąd nazwy strony głównej projektu)";end; nazwa_strony_glownej_projektu_uzyskana=nazwy_modul["PEŁNANAZWASTRONY"]{[1]=nazwa_strony_glownej_projektu_uzyskana,["kod języka"]=kod_jezyka,["kod projektu"]=kod_projektu,}; if(pelna_nazwa_strony==nazwa_strony_glownej_projektu_uzyskana)then return "strona główna projektu";end; end; if(norm_przed_lub_dyskusji=="")then local parametry_modul=require("Module:Parametry"); if(parametry_modul.CzyTak(frame.args["obsługiwane jednostki jako nieopisowe strony"]))then return "artykuł"; else local it=mw.ustring.match(nazwa_jednostki,"^[^/]+$"); if(it)then return "podręcznik";else return "artykuł";end; end; elseif(norm_przed_lub_dyskusji=="Wikijunior")then local parametry_modul=require("Module:Parametry"); if(parametry_modul.CzyTak(frame.args["obsługiwane jednostki jako nieopisowe strony"]))then return "artykuł dla dzieci"; else local it=mw.ustring.match(nazwa_jednostki,"^[^/]+$"); if(it)then return "podręcznik dla dzieci";else return "artykuł dla dzieci";end; end; elseif(norm_przed_lub_dyskusji=="User")then local parametry_modul=require("Module:Parametry"); if(parametry_modul.CzyTak(frame.args["obsługiwane jednostki użytkownika jako normalne strony"]))then return "strona użytkownika"; else local czy_podstrony=mw.ustring.match(nazwa_jednostki,"^[^/]+$") if(czy_podstrony)then return "strona główna użytkownika"; else if(not parametry_modul.CzyTak(frame.args["obsługiwane jednostki jako nieopisowe strony"]))then if(parametry_modul.CzyTak(frame.args["obsługiwane jednostki użytkownika"]))then local czy_ksiazka=mw.ustring.match(nazwa_jednostki,"^[^/]+/[^/]*$"); if(czy_ksiazka)then return "podręcznik użytkownika"; else return "artykuł użytkownika"; end; else return "jednostka użytkownika"; end; else return "strona użytkownika"; end; end; end; elseif(norm_przed_lub_dyskusji=="File")then return "strona pliku"; elseif(norm_przed_lub_dyskusji=="Category")then return "strona kategorii"; elseif(norm_przed_lub_dyskusji=="Project")then local parametry_modul=require("Module:Parametry"); if(parametry_modul.CzyTak(frame.args["obsługiwane brudnopisy jako normalne strony"]))then return "strona projektu";end; if(mw.ustring.match(nazwa_jednostki,"^%s*[Bb]rudnopis/[^/]*/.*"))then if(not parametry_modul.CzyTak(frame.args["obsługiwane jednostki jako nieopisowe strony"]))then if(parametry_modul.CzyTak(frame.args["obsługiwane jednostki brudnopisu projektu"]))then local czy_ksiazka=mw.ustring.match(nazwa_jednostki,"^%s*[Bb]rudnopis/[^/]*/[^/]*$"); if(czy_ksiazka)then return "podręcznik brudnopisu projektu"; else return "artykuł brudnopisu projektu"; end; else return "jednostka brudnopisu projektu"; end; else return "strona brudnopisu projektu"; end; else return "strona projektu"; end; elseif(norm_przed_lub_dyskusji=="Help")then return "strona pomocy"; elseif(norm_przed_lub_dyskusji=="MediaWiki")then return "strona komunikatu"; elseif(norm_przed_lub_dyskusji=="Special")then return "strona specialna"; elseif(norm_przed_lub_dyskusji=="Gadget")then return "strona gadżetu"; elseif(nazwa_przestrzeni_nazw=="Template")then local parametry_modul=require("Module:Parametry"); if(parametry_modul.CzyTak(frame.args["obsługiwane strony jako niebrudnopisowe jednostki programowe"]))then return "strona szablonu";end; local function CzySzablonAlboOpis(nazwa_przestrzeni_nazw,nazwa_jednostki,szablon,opis_szablonu,strona_szablonu,prefix) local parametry_modul=require("Module:Parametry"); if(parametry_modul.CzyTak(frame.args["obsługiwane opisy jako strony jednostek programowych"]) or parametry_modul.CzyTak(frame.args["obsługiwane jednostki jako nieopisowe strony"]))then return szablon; else if(mw.ustring.match(nazwa_jednostki,"^"..prefix..".*/opis$"))then return opis_szablonu; else if(not parametry_modul.CzyTak(frame.args["obsługiwane nieudokumentowane szablony jako szablony"]))then local czy_brudnopis=mw.ustring.match(nazwa_jednostki,"^"..prefix..".*$"); if(czy_brudnopis)then local pagename=(nazwa_przestrzeni_nazw~="")and nazwa_przestrzeni_nazw..":"..nazwa_jednostki or nazwa_jednostki; local czy_istnieje_strona,tab=require("Module:Techniczne").PoliczZbiory(pagename); if(czy_istnieje_strona==1)then local czy_brudnopis_opisu_szablonu=require("Module:Łatki").contentMatch{ [1]='<noinclude>.-{{%s*[Dd]okumentacja%s*}}.-</noinclude>', [2]='<noinclude>.-{{%s*[Dd]okumentacja%s*|.-</noinclude>',pagename=pagename,namespace=0 }; if(not czy_brudnopis_opisu_szablonu)then return opis_szablonu;else return szablon;end; else return szablon; end; else return strona_szablonu; end; else return szablon; end; end; end; end; if((not parametry_modul.CzyTak(frame.args["obsługiwane brudnopisy jako normalne strony"]))and(mw.ustring.match(nazwa_jednostki,"^%s*[Bb]rudnopis/[^/]*/.*")))then return CzySzablonAlboOpis(nazwa_przestrzeni_nazw,nazwa_jednostki,"strona brudnopisu szablonu","strona brudnopisu opisu szablonu","strona szablonu","[Bb]rudnopis/[^/]*/"); else return CzySzablonAlboOpis(nazwa_przestrzeni_nazw,nazwa_jednostki,"strona szablonu","strona opisu szablonu","strona szablonu",""); end; elseif(nazwa_przestrzeni_nazw=="Module")then local parametry_modul=require("Module:Parametry"); if(parametry_modul.CzyTak(frame.args["obsługiwane strony jako niebrudnopisowe jednostki programowe"]))then return "strona modułu";end; if((not parametry_modul.CzyTak(frame.args["obsługiwane brudnopisy jako normalne strony"]))and(mw.ustring.match(nazwa_jednostki,"^%s*[Bb]rudnopis/[^/]*/.*")))then if(parametry_modul.CzyTak(frame.args["obsługiwane opisy jako strony jednostek programowych"]) or parametry_modul.CzyTak(frame.args["obsługiwane jednostki jako nieopisowe strony"]))then return "strona brudnopisu modułu" else local pelna_nazwa_strony=(nazwa_przestrzeni_nazw~="")and nazwa_przestrzeni_nazw..":"..nazwa_jednostki or nazwa_jednostki; pelna_nazwa_strony=require("Module:Nazwy")["PEŁNANAZWASTRONY"]{[1]=pelna_nazwa_strony,["kod języka"]=kod_jezyka,["kod projektu"]=kod_projektu,}; local pelna_nazwa_strony_brudnopisu_opisu_modulu=require("Module:Techniczne")["PełnaNazwaOpisuModułu"](pelna_nazwa_strony); if(pelna_nazwa_strony==pelna_nazwa_strony_brudnopisu_opisu_modulu)then return "strona brudnopisu opisu modułu"; else return "strona brudnopisu modułu"; end; end; else if(parametry_modul.CzyTak(frame.args["obsługiwane opisy jako strony jednostek programowych"]) or parametry_modul.CzyTak(frame.args["obsługiwane jednostki jako nieopisowe strony"]))then return "strona modułu" else local pelna_nazwa_strony=(nazwa_przestrzeni_nazw~="")and nazwa_przestrzeni_nazw..":"..nazwa_jednostki or nazwa_jednostki; pelna_nazwa_strony=require("Module:Nazwy")["PEŁNANAZWASTRONY"]{[1]=pelna_nazwa_strony,["kod języka"]=kod_jezyka,["kod projektu"]=kod_projektu,}; local pelna_nazwa_opisu_modulu=require("Module:Techniczne")["PełnaNazwaOpisuModułu"](pelna_nazwa_strony); if(pelna_nazwa_strony==pelna_nazwa_opisu_modulu)then return "strona opisu modułu"; else return "strona modułu"; end; end; end; else return "inne"; end; end; return "inne"; end; local typ_jednostki=Typ_jednostki(); if(((analiza)or(nazwa_jednostki_podana))and(typ)and(typ~=""))then if(typ_jednostki==typ)then return typ_jednostki; elseif(nazwa_jednostki_podana)then return "(błąd parametrów pudełkowych)" else return "(błąd typu jednostki)"; end; end; return typ_jednostki; end; function p.Uzyskanie_nazw_jednostki(frame,kod_liczbowy_przestrzeni_nazw,i,numer_argorytmu,co_ma_liczyc) local nazwa_przestrzeni_fun,nazwa_jednostki_fun; if(kod_liczbowy_przestrzeni_nazw==0)then nazwa_przestrzeni_fun="Nazwa przestrzeni nazw"; nazwa_jednostki_fun="Nazwa jednostki"; elseif(kod_liczbowy_przestrzeni_nazw==1)then nazwa_przestrzeni_fun="Nazwa przedmiotowej przestrzeni nazw"; nazwa_jednostki_fun="Nazwa przedmiotowa jednostki"; elseif(kod_liczbowy_przestrzeni_nazw==2)then nazwa_przestrzeni_fun="Nazwa przestrzeni nazw dyskusji" nazwa_jednostki_fun="Nazwa dyskusji jednostki"; else nazwa_przestrzeni_fun="Nazwa przestrzeni nazw"; nazwa_jednostki_fun="Nazwa jednostki"; end; local pudelko_modul=require("Module:Pudełko"); if(not numer_argorytmu)then if((not i)or(i==0))then if((not co_ma_liczyc)or(co_ma_liczyc==0))then local nazwa_przestrzeni_nazw=pudelko_modul[nazwa_przestrzeni_fun](frame,false); local nazwa_jednostki=pudelko_modul["Nazwa jednostki"](frame); return nazwa_przestrzeni_nazw,nazwa_jednostki; elseif(co_ma_liczyc==1)then local nazwa_przestrzeni_nazw=pudelko_modul[nazwa_przestrzeni_fun](frame,false); return nazwa_przestrzeni_nazw; elseif(co_ma_liczyc==2)then return pudelko_modul["Nazwa jednostki"](frame); end; else if((not co_ma_liczyc)or(co_ma_liczyc==0))then local n=p.Nazwa_przestrzeni_nazw_dodatkowe(frame,i); local nazwa_przestrzeni_nazw=(n)and pudelko_modul[nazwa_przestrzeni_fun](frame,false,i) or pudelko_modul[nazwa_przestrzeni_fun.." 2"](frame,false,i); local nazwa_jednostki=(n)and pudelko_modul["Nazwa jednostki"](frame,i) or pudelko_modul[nazwa_jednostki_fun.." 2"](frame,i); return nazwa_przestrzeni_nazw,nazwa_jednostki; elseif(co_ma_liczyc==1)then local n=p.Nazwa_przestrzeni_nazw_dodatkowe(frame,i); local nazwa_przestrzeni_nazw=(n)and pudelko_modul[nazwa_przestrzeni_fun](frame,false,i) or pudelko_modul[nazwa_przestrzeni_fun.." 2"](frame,false,i); return nazwa_przestrzeni_nazw; elseif(co_ma_liczyc==2)then local n=p.Nazwa_przestrzeni_nazw_dodatkowe(frame,i); return (n)and pudelko_modul["Nazwa jednostki"](frame,i) or pudelko_modul[nazwa_jednostki_fun.." 2"](frame,i); end; end; else if(numer_argorytmu==0)then if((not co_ma_liczyc)or(co_ma_liczyc==0))then local nazwa_przestrzeni_nazw=pudelko_modul[nazwa_przestrzeni_fun](frame,false,i); local nazwa_jednostki=pudelko_modul["Nazwa jednostki"](frame,i); return nazwa_przestrzeni_nazw,nazwa_jednostki; elseif(co_ma_liczyc==1)then local nazwa_przestrzeni_nazw=pudelko_modul[nazwa_przestrzeni_fun](frame,false,i); return nazwa_przestrzeni_nazw; elseif(co_ma_liczyc==2)then return pudelko_modul["Nazwa jednostki"](frame,i); end; else if((not co_ma_liczyc)or(co_ma_liczyc==0))then local nazwa_przestrzeni_nazw=pudelko_modul[nazwa_przestrzeni_fun.." 2"](frame,false,i); local nazwa_jednostki=pudelko_modul[nazwa_jednostki_fun.." 2"](frame,i); return nazwa_przestrzeni_nazw,nazwa_jednostki; elseif(co_ma_liczyc==1)then local nazwa_przestrzeni_nazw=pudelko_modul[nazwa_przestrzeni_fun.." 2"](frame,false,i); return nazwa_przestrzeni_nazw; elseif(co_ma_liczyc==2)then return pudelko_modul[nazwa_jednostki_fun.." 2"](frame,i); end; end; end; end; function p.Nazwa_przestrzeni_nazw_dodatkowe(frame,numer_jednostki) local pf=frame.getParent and frame:getParent() or {args={}}; return frame.args["nazwa przestrzeni nazw "..tostring(numer_jednostki)] or pf.args["nazwa przestrzeni nazw "..tostring(numer_jednostki)] end; function p.Nazwa_jednostki(frame,i) local pf=frame.getParent and frame:getParent() or {args={}}; local nazwa_jednostki,liczba_numer_jednostki=p.Nazwy_przestrzeni_i_jednostki_podane_o_pewnym_numerze(frame,i,2); local kod_jezyka,kod_projektu=p.Wikikody_kontenera(frame,liczba_numer_jednostki); if(nazwa_jednostki)then nazwa_jednostki=mw.text.trim(nazwa_jednostki); nazwa_jednostki=mw.ustring.gsub(nazwa_jednostki,"^:",""); nazwa_jednostki=mw.ustring.gsub(nazwa_jednostki,"^([^#]*)#(.*)$","%1"); local parametry=mw.ustring.match(nazwa_jednostki,"^.*%?([^%?]+)$"); if(parametry and mw.ustring.match(parametry,"[^=]+=[^=]*"))then nazwa_jednostki=mw.ustring.gsub(nazwa_jednostki,"^(.*)%?([^%?]+)$","%1"); end; else local nazwy_modul=require("Module:Nazwy"); nazwa_jednostki=nazwy_modul["NAZWASTRONY"]{["kod języka"]=kod_jezyka,["kod projektu"]=kod_projektu,}; end; local parametry_modul=require("Module:Parametry"); nazwa_jednostki=parametry_modul["Odstępy"]{[1]=nazwa_jednostki,[2]="tak",}; return mw.getContentLanguage():ucfirst(nazwa_jednostki); end; function p.Nazwy_przestrzeni_i_jednostki_podane_o_pewnym_numerze(frame,i,co_podac) local pf=frame.getParent and frame:getParent() or {args={}}; local numer_jednostki=i or frame.args["numer jednostki"]; local liczba_numer_jednostki=tonumber(numer_jednostki) or 0; local nazwa_jednostki; local bool_numer_jednostki=(liczba_numer_jednostki~=0); local function Nazwa_jednostki() if bool_numer_jednostki then nazwa_jednostki=frame.args["nazwa jednostki "..liczba_numer_jednostki] or ((liczba_numer_jednostki==1)and(pf.args["cel"])) or pf.args[liczba_numer_jednostki]; else nazwa_jednostki=frame.args["nazwa jednostki"] or pf.args["nazwa jednostki"]; end; return nazwa_jednostki; end; local function Nazwa_przestrzeni_nazw() local nazwa_przestrzeni_nazw=bool_numer_jednostki and (frame.args["nazwa przestrzeni nazw i"] or pf.args["nazwa przestrzeni nazw i"] or frame.args["nazwa przestrzeni nazw "..liczba_numer_jednostki] or pf.args["nazwa przestrzeni nazw "..liczba_numer_jednostki]) or frame.args["nazwa przestrzeni nazw"] or pf.args["nazwa przestrzeni nazw"]; return nazwa_przestrzeni_nazw; end; if(not co_podac)then return Nazwa_przestrzeni_nazw(),Nazwa_jednostki(),liczba_numer_jednostki; elseif(co_podac==1)then return Nazwa_przestrzeni_nazw(),liczba_numer_jednostki; elseif(co_podac==2)then return Nazwa_jednostki(),liczba_numer_jednostki; else return Nazwa_przestrzeni_nazw(),Nazwa_jednostki(),liczba_numer_jednostki; end; end; function p.Jaka_nazwa_jednostki(frame,i,jaka) local nazwa_przestrzeni_nazw,nazwa_jednostki,liczba_numer_jednostki=p.Nazwy_przestrzeni_i_jednostki_podane_o_pewnym_numerze(frame,i); nazwa_przestrzeni_nazw=nazwa_przestrzeni_nazw or p.Nazwa_przestrzeni_nazw_uzyskana_z_typu_jednostki_z_frame(frame,liczba_numer_jednostki); ---- local nazwy_modul=require("Module:Nazwy"); nazwa_przestrzeni_nazw=nazwa_przestrzeni_nazw and mw.text.trim(nazwa_przestrzeni_nazw) or nazwy_modul["NAZWAPRZESTRZENI"](); if(nazwa_jednostki)then local html_modul=require("Module:Html"); nazwa_jednostki=html_modul["NazwaStronyAdresu"](nazwa_jednostki,true); else nazwa_jednostki=nazwy_modul["NAZWASTRONY"](); end; local kod_jezyka,kod_projektu=p.Wikikody_kontenera(frame,liczba_numer_jednostki); local wiki_modul=require("Module:Wiki"); local czy_biezaca=wiki_modul["CzyBieżącaWiki"]{["kod języka"]=kod_jezyka,["kod projektu"]=kod_projektu,}; if(jaka)then if(czy_biezaca)then local tab_parametry={nazwa=nazwa_przestrzeni_nazw,}; if(jaka=="przedmiotowa")then tab_parametry["przedmiotowa"]="tak";end; nazwa_przestrzeni_nazw=nazwy_modul.Np(tab_parametry); else local tab_parametry={nazwa=nazwa_przestrzeni_nazw,["kod języka"]=kod_jezyka,["kod projektu"]=kod_projektu,}; if(jaka=="przedmiotowa")then tab_parametry["przedmiotowa"]="tak";end; nazwa_przestrzeni_nazw=nazwy_modul.NpDane(tab_parametry); end; else if(czy_biezaca)then nazwa_przestrzeni_nazw=nazwy_modul.Np{nazwa=nazwa_przestrzeni_nazw}; else nazwa_przestrzeni_nazw=nazwy_modul.NpDane{nazwa=nazwa_przestrzeni_nazw,["kod języka"]=kod_jezyka,["kod projektu"]=kod_projektu,}; end; end; if(not mw.ustring.match(nazwa_jednostki,"^:"))then if(nazwa_przestrzeni_nazw~="")then if((not typ)or(typ=="przedmiotowa"))then if(czy_biezaca)then local nazwy_np_modul=mw.loadData("Module:Nazwy/Np"); if(nazwa_przestrzeni_nazw==nazwy_np_modul.Template)then local nazwa_przestrzeni_nazw_d=nazwy_modul["NAZWAPRZESTRZENI"](nazwa_jednostki); if(nazwa_przestrzeni_nazw_d==nazwy_np_modul.Template)then return nazwy_modul["NAZWASTRONY"](nazwa_jednostki); end; elseif(nazwa_przestrzeni_nazw==nazwy_np_modul.Module)then local nazwa_przestrzeni_nazw_d=nazwy_modul["NAZWAPRZESTRZENI"](nazwa_jednostki); if(nazwa_przestrzeni_nazw_d==nazwy_np_modul.Module)then return nazwy_modul["NAZWASTRONY"](nazwa_jednostki); end; end; else local template_prze=nazwy_modul.NpDane{nazwa="Template",["kod języka"]=kod_jezyka,["kod projektu"]=kod_projektu,}; local module_prze=nazwy_modul.NpDane{nazwa="Module",["kod języka"]=kod_jezyka,["kod projektu"]=kod_projektu,}; if(nazwa_przestrzeni_nazw==template_prze)then local nazwa_przestrzeni_nazw_d=nazwy_modul["NAZWAPRZESTRZENI"]{[1]=nazwa_jednostki,["kod języka"]=kod_jezyka,["kod projektu"]=kod_projektu,}; if(nazwa_przestrzeni_nazw_d==template_prze)then return nazwy_modul["NAZWASTRONY"]{[1]=nazwa_jednostki,["kod języka"]=kod_jezyka,["kod projektu"]=kod_projektu,}; end; elseif(nazwa_przestrzeni_nazw==module_prze)then local nazwa_przestrzeni_nazw_d=nazwy_modul["NAZWAPRZESTRZENI"]{[1]=nazwa_jednostki,["kod języka"]=kod_jezyka,["kod projektu"]=kod_projektu,}; if(nazwa_przestrzeni_nazw_d==module_prze)then return nazwy_modul["NAZWASTRONY"]{[1]=nazwa_jednostki,["kod języka"]=kod_jezyka,["kod projektu"]=kod_projektu,}; end; end; end; end; local parametry_modul=require("Module:Parametry"); nazwa_jednostki=parametry_modul["Odstępy"]{[1]=nazwa_jednostki,[2]="tak",}; return mw.getContentLanguage():ucfirst(nazwa_jednostki); else return nazwy_modul["NAZWASTRONY"]{[1]=nazwa_jednostki,["kod języka"]=kod_jezyka,["kod projektu"]=kod_projektu,}; end; else return nazwy_modul["NAZWASTRONY"]{[1]=nazwa_jednostki,["kod języka"]=kod_jezyka,["kod projektu"]=kod_projektu,}; end; end; function p.Czy_przestrzen_nazw_jest_obslugiwana(frame,jakas_przestrzen_nazw,kod_jezyka,kod_projektu) local nazwy_modul=require("Module:Nazwy"); local parametry_modul=require("Module:Parametry"); local wiki_modul=require("Module:Wiki"); local czy_biezaca=wiki_modul["CzyBieżącaWiki"]{["kod języka"]=kod_jezyka,["kod projektu"]=kod_projektu,}; if(czy_biezaca)then jakas_przestrzen_nazw=nazwy_modul.Np{nazwa=jakas_przestrzen_nazw}; else jakas_przestrzen_nazw=nazwy_modul.NpDane{nazwa=jakas_przestrzen_nazw,["kod języka"]=kod_jezyka,["kod projektu"]=kod_projektu,}; end; local function nazwa_przestrzeni_nazw_fun(nazwa_przestrzeni_nazw_iter) if(czy_biezaca)then nazwa_przestrzeni_nazw_iter=nazwy_modul.Np{nazwa=nazwa_przestrzeni_nazw_iter}; else nazwa_przestrzeni_nazw_iter=nazwy_modul.NpDane{nazwa=nazwa_przestrzeni_nazw_iter,["kod języka"]=kod_jezyka,["kod projektu"]=kod_projektu,}; end; if(jakas_przestrzen_nazw==nazwa_przestrzeni_nazw_iter)then return true; end; return false; end; for licznik,nazwa_przestrzeni_nazw in pairs(frame.args)do if(type(licznik)=="number")then local nazwa_przestrzeni_nazw_element,klucze_element=mw.ustring.match(nazwa_przestrzeni_nazw,"^%s*([%w%s]*)%s*:%s*(.-)%s*"); if(nazwa_przestrzeni_nazw_element and klucze_element)then local tab_klucze=mw.text.split(klucze_element,"%s*,%s*",false); local wiki_modul=require("Module:Wiki"); for _,klucz_element in ipairs(tab_klucze)do local kod_jezyka_obslugiwane,kod_projektu_obslugiwane=wiki_modul.KluczProjektu(klucz_element); if(kod_jezyka_obslugiwane==kod_jezyka and kod_projektu_obslugiwane==kod_projektu)then local wynik=nazwa_przestrzeni_nazw_fun(nazwa_przestrzeni_nazw_element); if(wynik)then return true;end; end; end; else local wynik=nazwa_przestrzeni_nazw_fun(nazwa_przestrzeni_nazw); if(wynik)then return true;end; end; end; end; return false; end; function p.Analiza_interwiki_czy_projekt_aktualny(frame,czy_jezyk,czy_projekt) local parametry_modul=require("Module:Parametry"); local p=parametry_modul.PobierzFrameEwentualnieParent(frame); local pudelko_modul=require("Module:Pudełko"); local wiki_modul=require("Module:Wiki"); local jezyk_biezacy=czy_jezyk and pudelko_modul["Kod języka tego projektu"](); local projekt_biezacy=czy_projekt and pudelko_modul["Kod projektu tego projektu"](); for i,_ in pairs(p.args)do if(type(i)=="number")then local klucz_projektu=pudelko_modul["Klucz projektu"](frame,i); local kod_jezyka=pudelko_modul["Kod języka"](frame,i); local kod_projektu=pudelko_modul["kod projektu"](frame,i); local jezyk,projekt=wiki_modul.KodyWiki(klucz_projektu,kod_jezyka,kod_projektu); if((czy_jezyk and (jezyk~=jezyk_biezacy))or(czy_projekt and(projekt~=projekt_biezacy)))then return "tak"; end; end; end; return; end; return p; 4aep8u8unsj54dem7crl9xk7vjn75ow 540398 540396 2026-04-23T16:10:29Z Persino 2851 540398 Scribunto text/plain local p={}; function p.Nazwa_strony_bazowej_projektu_z_wikidanych(kod_jezyka,kod_projektu) local strona=require("Module:Pudełko")["Strona główna tego projektu"](); local odpowiednik_strony=require("Module:Wiki").WikidaneOdpowiednikStrony{["nazwa strony"]=strona,["kod języka"]=kod_jezyka,["kod projektu"]=kod_projektu}; if(odpowiednik_strony)then local nazwy_modul=require("Module:Nazwy"); return nazwy_modul["PEŁNANAZWASTRONY"]{[1]=odpowiednik_strony,["kod języka"]=kod_jezyka,["kod projektu"]=kod_projektu,}; else local pudelko_modul=require("Module:Pudełko"); if((kod_jezyka==pudelko_modul["Kod języka tego projektu"]())and(kod_projektu==pudelko_modul["Kod projektu tego projektu"]()))then return strona; else local wiki_interwiki_modul=mw.loadData("Module:Wiki/interwiki"); local czy_w_wikidanych=wiki_interwiki_modul.tablica_kody_projektu_wikidane.lingwistyczne[kod_projektu] or wiki_interwiki_modul.tablica_kody_projektu_wikidane.specjalistyczne[kod_projektu]; return czy_w_wikidanych and "Main Page" or nil; end; end; end; function p.Nazwa_strony_bazowej_dla_dzieci_z_wikidanych(kod_jezyka) local strona=require("Module:Pudełko")["Strona główna dla dzieci tego projektu"](); local pudelko_modul=require("Module:Pudełko"); local kod_jezyka_tego_projektu=pudelko_modul["Kod języka tego projektu"](); if(kod_jezyka==kod_jezyka_tego_projektu)then return strona;end; local kod_projektu_tego_projektu=pudelko_modul["Kod projektu tego projektu"](); local odpowiednik_strony=require("Module:Wiki").WikidaneOdpowiednikStrony{["nazwa strony"]=strona,["kod języka"]=kod_jezyka,["kod projektu"]=kod_projektu_tego_projektu}; if(odpowiednik_strony)then local nazwy_modul=require("Module:Nazwy"); return nazwy_modul["PEŁNANAZWASTRONY"]{[1]=odpowiednik_strony,["kod języka"]=kod_jezyka,["kod projektu"]=kod_projektu_tego_projektu,}; else return "Wikijunior"; end; end; function p.Nazwa_strony_bazowej_projektu_ze_zmiennej(frame,i,kod_jezyka,kod_projektu) local pf=frame.getParent and frame:getParent() or {args={}}; local strona_glowna_projektu; if(i~=0)then local pudelko_modul=require("Module:Pudełko"); local kod_jezyka_tego_projektu=pudelko_modul["Kod języka tego projektu"](); local kod_projektu_tego_projektu=pudelko_modul["Kod projektu tego projektu"](); if(kod_jezyka==kod_jezyka_tego_projektu)and(kod_projektu==kod_projektu_tego_projektu)then strona_glowna_projektu=frame.args["strona główna projektu"] or pf.args["strona główna projektu"] else strona_glowna_projektu=(frame.args["strona główna projektu "..i] or pf.args["strona główna projektu "..i]) end; else strona_glowna_projektu=frame.args["strona główna projektu"] or pf.args["strona główna projektu"] end; local parametry_modul=require("Module:Parametry"); return (parametry_modul.CzyTak(strona_glowna_projektu))and require("Module:Nazwy")["PEŁNANAZWASTRONY"]{[1]=strona_glowna_projektu,["kod języka"]=kod_jezyka,["kod projektu"]=kod_projektu,} or (strona_glowna_projektu and "" or nil); end; function p.Nazwa_strony_bazowej_dla_dzieci_ze_zmiennej(frame,i,kod_jezyka) local pf=frame.getParent and frame:getParent() or {args={}}; local pudelko_modul=require("Module:Pudełko"); local strona_glowna_dla_dzieci; if(i~=0)then local kod_jezyka_tego_projektu=pudelko_modul["Kod języka tego projektu"](); if(kod_jezyka==kod_jezyka_tego_projektu)then strona_glowna_dla_dzieci=frame.args["strona główna dla dzieci"] or pf.args["strona główna dla dzieci"] else strona_glowna_dla_dzieci=(frame.args["strona główna dla dzieci "..i] or pf.args["strona główna dla dzieci "..i]) end; else strona_glowna_dla_dzieci=frame.args["strona główna dla dzieci"] or pf.args["strona główna dla dzieci"] end; local kod_projektu_tego_projektu=pudelko_modul["Kod projektu tego projektu"](); local parametry_modul=require("Module:Parametry"); return (parametry_modul.CzyTak(strona_glowna_dla_dzieci))and require("Module:Nazwy")["PEŁNANAZWASTRONY"]{[1]=strona_glowna_dla_dzieci,["kod języka"]=kod_jezyka,["kod projektu"]=kod_projektu_tego_projektu,} or (strona_glowna_dla_dzieci and "" or nil); end; function p.Normalna_przedmiotowa_lub_dyskusji_nazwa_przestrzeni_nazw(nazwa_przestrzeni_nazw, normmalna_przedmiotwa_dyskusji,kod_jezyka,kod_projektu) local nazwa_przestrzeni_nazw_blad; local wiki_modul=require("Module:Wiki"); local nazwy_modul=require("Module:Nazwy"); local czy_biezaca=wiki_modul["CzyBieżącaWiki"]{["kod języka"]=kod_jezyka,["kod projektu"]=kod_projektu,}; if(normmalna_przedmiotwa_dyskusji==0)then if(czy_biezaca)then nazwa_przestrzeni_nazw_blad=nazwy_modul.Np{nazwa=nazwa_przestrzeni_nazw,["kanoniczna"]="tak",["nazwij projektem"]="tak",["nazwij dyskusją projektu"]="tak",["istnieje"]="tak",["wynik błędu nietekstowy"]="tak",}; else nazwa_przestrzeni_nazw_blad=nazwy_modul.NpDane{nazwa=nazwa_przestrzeni_nazw,["kanoniczna"]="tak",["nazwij projektem"]="tak",["nazwij dyskusją projektu"]="tak",["kod języka"]=kod_jezyka,["kod projektu"]=kod_projektu,["istnieje"]="tak",["wynik błędu nietekstowy"]="tak",}; end; elseif(normmalna_przedmiotwa_dyskusji==1)then if(czy_biezaca)then nazwa_przestrzeni_nazw_blad=nazwy_modul.Np{nazwa=nazwa_przestrzeni_nazw, przedmiotowa="tak",["kanoniczna"]="tak",["nazwij projektem"]="tak",["nazwij dyskusją projektu"]="tak",["istnieje"]="tak",["wynik błędu nietekstowy"]="tak",}; else nazwa_przestrzeni_nazw_blad=nazwy_modul.NpDane{nazwa=nazwa_przestrzeni_nazw, przedmiotowa="tak",["kanoniczna"]="tak",["nazwij projektem"]="tak",["nazwij dyskusją projektu"]="tak",["kod języka"]=kod_jezyka,["kod projektu"]=kod_projektu,["istnieje"]="tak",["wynik błędu nietekstowy"]="tak",}; end; elseif(normmalna_przedmiotwa_dyskusji==2)then if(czy_biezaca)then nazwa_przestrzeni_nazw_blad=nazwy_modul.Np{nazwa=nazwa_przestrzeni_nazw, dyskusja="tak",["kanoniczna"]="tak",["nazwij projektem"]="tak",["nazwij dyskusją projektu"]="tak",["istnieje"]="tak",["wynik błędu nietekstowy"]="tak",}; else nazwa_przestrzeni_nazw_blad=nazwy_modul.NpDane{nazwa=nazwa_przestrzeni_nazw, dyskusja="tak",["kanoniczna"]="tak",["nazwij projektem"]="tak",["nazwij dyskusją projektu"]="tak",["kod języka"]=kod_jezyka,["kod projektu"]=kod_projektu,["istnieje"]="tak",["wynik błędu nietekstowy"]="tak",}; end; else if(czy_biezaca)then nazwa_przestrzeni_nazw_blad=nazwy_modul.Np{nazwa=nazwa_przestrzeni_nazw,["kanoniczna"]="tak",["nazwij projektem"]="tak",["nazwij dyskusją projektu"]="tak",["istnieje"]="tak",["wynik błędu nietekstowy"]="tak",}; else nazwa_przestrzeni_nazw_blad=nazwy_modul.NpDane{nazwa=nazwa_przestrzeni_nazw,["kanoniczna"]="tak",["nazwij projektem"]="tak",["nazwij dyskusją projektu"]="tak",["kod języka"]=kod_jezyka,["kod projektu"]=kod_projektu,["istnieje"]="tak",["wynik błędu nietekstowy"]="tak",}; end; end; return nazwa_przestrzeni_nazw_blad end; function p.Nazwa_przestrzeni_nazw(frame,kod_liczbowy_przestrzeni_nazw,czy_uwzglednic_alternatywna_nazwe,numer_jednostki) local pf=frame.getParent and frame:getParent() or {args={}}; local nazwa_przestrzeni_nazw=p.Nazwy_przestrzeni_i_jednostki_podane_o_pewnym_numerze(frame,numer_jednostki,1) or p.Nazwa_przestrzeni_nazw_uzyskana_z_typu_jednostki_z_frame(frame,numer_jednostki); local nazwy_modul=require("Module:Nazwy"); local wiki_modul=require("Module:Wiki"); local kod_jezyka,kod_projektu=p.Wikikody_kontenera(frame,numer_jednostki); local czy_biezaca_wiki=wiki_modul["CzyBieżącaWiki"]{["kod języka"]=kod_jezyka,["kod projektu"]=kod_projektu,}; local czy_blad_nazwy_przestrzeni_nazw; local typ; if(kod_liczbowy_przestrzeni_nazw==1)then typ="przedmiotowa"; if(czy_biezaca_wiki)then czy_blad_nazwy_przestrzeni_nazw=(not nazwa_przestrzeni_nazw)and nazwy_modul["PRZEDMIOTOWAPRZESTRZEŃ"]() or nazwy_modul.Np{nazwa=nazwa_przestrzeni_nazw,przedmiotowa="tak",["istnieje"]="tak",["wynik błędu nietekstowy"]="tak",}; else czy_blad_nazwy_przestrzeni_nazw=(not nazwa_przestrzeni_nazw)and nazwy_modul["PRZEDMIOTOWAPRZESTRZEŃ"]{["kod języka"]=kod_jezyka,["kod projektu"]=kod_projektu,} or nazwy_modul.NpDane{nazwa=nazwa_przestrzeni_nazw,przedmiotowa="tak",["kod języka"]=kod_jezyka,["kod projektu"]=kod_projektu,["istnieje"]="tak",["wynik błędu nietekstowy"]="tak",}; end; elseif(kod_liczbowy_przestrzeni_nazw==2)then if(czy_biezaca_wiki)then typ="dyskusja"; czy_blad_nazwy_przestrzeni_nazw=(not nazwa_przestrzeni_nazw)and nazwy_modul["PRZESTRZEŃDYSKUSJI"]() or nazwy_modul.Np{nazwa=nazwa_przestrzeni_nazw,dyskusja="tak",["istnieje"]="tak",["wynik błędu nietekstowy"]="tak",}; else czy_blad_nazwy_przestrzeni_nazw=(not nazwa_przestrzeni_nazw)and nazwy_modul["PRZESTRZEŃDYSKUSJI"]{["kod języka"]=kod_jezyka,["kod projektu"]=kod_projektu,} or nazwy_modul.NpDane{nazwa=nazwa_przestrzeni_nazw,dyskusja="tak",["kod języka"]=kod_jezyka,["kod projektu"]=kod_projektu,["istnieje"]="tak",["wynik błędu nietekstowy"]="tak",}; end; else if(czy_biezaca_wiki)then czy_blad_nazwy_przestrzeni_nazw=(not nazwa_przestrzeni_nazw)and nazwy_modul["NAZWAPRZESTRZENI"]() or nazwy_modul.Np{nazwa=nazwa_przestrzeni_nazw,["istnieje"]="tak",["wynik błędu nietekstowy"]="tak",}; else czy_blad_nazwy_przestrzeni_nazw=(not nazwa_przestrzeni_nazw)and nazwy_modul["NAZWAPRZESTRZENI"]{["kod języka"]=kod_jezyka,["kod projektu"]=kod_projektu,} or nazwy_modul.NpDane{nazwa=nazwa_przestrzeni_nazw,["kod języka"]=kod_jezyka, ["kod projektu"]=kod_projektu,["istnieje"]="tak",["wynik błędu nietekstowy"]="tak",}; end; end; if(czy_blad_nazwy_przestrzeni_nazw)then return czy_blad_nazwy_przestrzeni_nazw; else if(((czy_uwzglednic_alternatywna_nazwe==nil)and true or czy_uwzglednic_alternatywna_nazwe) and frame.args[1])then local nazwa_przestrzeni_nazw_alternatywnej=mw.text.trim(frame.args[1]); if(mw.ustring.match(nazwa_przestrzeni_nazw_alternatywnej,"^[%w%s_]*$"))then local czy_blad_nazwa_przestrzeni_nazw_alternatywnej; if(czy_biezaca_wiki)then local tab_parametry={nazwa=nazwa_przestrzeni_nazw_alternatywnej,["istnieje"]="tak",["wynik błędu nietekstowy"]="tak",}; if(typ)then tab_parametry[typ]="tak";end; czy_blad_nazwa_przestrzeni_nazw_alternatywnej=nazwy_modul.Np(tab_parametry); else local tab_parametry={nazwa=nazwa_przestrzeni_nazw_alternatywnej,["kod języka"]=kod_jezyka,["kod projektu"]=kod_projektu,["istnieje"]="tak",["wynik błędu nietekstowy"]="tak",}; if(typ)then tab_parametry[typ]="tak";end; czy_blad_nazwa_przestrzeni_nazw_alternatywnej=nazwy_modul.NpDane(tab_parametry); end; return czy_blad_nazwa_przestrzeni_nazw_alternatywnej or "(błąd)"; else return "(błąd)"; end; else local parametry_modul=require("Module:Parametry"); nazwa_przestrzeni_nazw=parametry_modul["Odstępy"]{[1]=nazwa_przestrzeni_nazw,[2]="tak",}; if(mw.ustring.match(nazwa_przestrzeni_nazw,"^[%w%s_]*$"))then return nazwa_przestrzeni_nazw; else return "(błąd)"; end; end; end; end; function p.Nazwa_przestrzeni_nazw_2(frame,czy_uwzglednic_alternatywna_nazwe,i) local nazwa_przestrzeni_nazw,nazwa_jednostki,liczba_numer_jednostki=p.Nazwy_przestrzeni_i_jednostki_podane_o_pewnym_numerze(frame,i); nazwa_przestrzeni_nazw=nazwa_przestrzeni_nazw or p.Nazwa_przestrzeni_nazw_uzyskana_z_typu_jednostki_z_frame(frame,liczba_numer_jednostki); local nazwy_modul=require("Module:Nazwy"); local kod_jezyka,kod_projektu=p.Wikikody_kontenera(frame,liczba_numer_jednostki); local wiki_modul=require("Module:Wiki"); local czy_biezaca_wiki=wiki_modul["CzyBieżącaWiki"]{["kod języka"]=kod_jezyka,["kod projektu"]=kod_projektu,}; local nazwa_przestrzeni_nazw_blad; local parametry_modul=require("Module:Parametry"); if(czy_biezaca_wiki)then nazwa_przestrzeni_nazw=nazwa_przestrzeni_nazw and mw.text.trim(nazwa_przestrzeni_nazw) or nazwy_modul["NAZWAPRZESTRZENI"](); nazwa_przestrzeni_nazw_blad=require("Module:Nazwy").Np{nazwa=nazwa_przestrzeni_nazw,["istnieje"]="tak",["wynik błędu nietekstowy"]="tak",}; if(nazwa_jednostki)then nazwa_jednostki=parametry_modul["Odstępy"]{[1]=nazwa_jednostki,[2]="tak",}; nazwa_jednostki=mw.ustring.gsub(nazwa_jednostki,"^([^#]*)#(.*)$","%1"); local parametry=mw.ustring.match(nazwa_jednostki,"^.*%?([^%?]+)$"); if(parametry and mw.ustring.match(parametry,"[^=]+=[^=]*"))then nazwa_jednostki=mw.ustring.gsub(nazwa_jednostki,"^(.*)%?([^%?]+)$","%1"); end; else nazwa_jednostki=nazwy_modul["NAZWASTRONY"](); end; else nazwa_przestrzeni_nazw=nazwa_przestrzeni_nazw and mw.text.trim(nazwa_przestrzeni_nazw) or nazwy_modul["NAZWAPRZESTRZENI"]{["kod języka"]=kod_jezyka,["kod projektu"]=kod_projektu,}; nazwa_przestrzeni_nazw_blad=require("Module:Nazwy").NpDane{nazwa=nazwa_przestrzeni_nazw,["kod języka"]=kod_jezyka,["kod projektu"]=kod_projektu,["istnieje"]="tak",["wynik błędu nietekstowy"]="tak",}; if(nazwa_jednostki)then local html_modul=require("Module:Html"); nazwa_jednostki=html_modul["NazwaStronyAdresu"](nazwa_jednostki,true); else nazwa_jednostki=nazwy_modul["NAZWASTRONY"]{["kod języka"]=kod_jezyka,["kod projektu"]=kod_projektu,}; end; end; nazwa_przestrzeni_nazw=nazwa_przestrzeni_nazw_blad or nazwa_przestrzeni_nazw; if(not mw.ustring.match(nazwa_jednostki,"^:"))then if(nazwa_przestrzeni_nazw~="")then if(czy_biezaca_wiki)then local nazwy_np_modul=mw.loadData("Module:Nazwy/Np"); if(nazwa_przestrzeni_nazw==nazwy_np_modul.Template)then local nazwa_przestrzeni_nazw_d=require("Module:Nazwy")["NAZWAPRZESTRZENI"](nazwa_jednostki); if(nazwa_przestrzeni_nazw_d==nazwy_np_modul.Template)then nazwa_przestrzeni_nazw=nazwy_np_modul.Template; end; elseif(nazwa_przestrzeni_nazw==nazwy_np_modul.Module)then local nazwa_przestrzeni_nazw_d=require("Module:Nazwy")["NAZWAPRZESTRZENI"](nazwa_jednostki); if(nazwa_przestrzeni_nazw_d==nazwy_np_modul.Module)then nazwa_przestrzeni_nazw=nazwy_np_modul.Module; end; end; else local template_prze=nazwy_modul.NpDane{nazwa="Template",["kod języka"]=kod_jezyka,["kod projektu"]=kod_projektu,}; local module_prze=nazwy_modul.NpDane{nazwa="Module",["kod języka"]=kod_jezyka,["kod projektu"]=kod_projektu,}; if(nazwa_przestrzeni_nazw==template_prze)then local nazwa_przestrzeni_nazw_d=nazwy_modul["NAZWAPRZESTRZENI"]{[1]=nazwa_jednostki,["kod języka"]=kod_jezyka,["kod projektu"]=kod_projektu,}; if(nazwa_przestrzeni_nazw_d==template_prze)then nazwa_przestrzeni_nazw=template_prze; end; elseif(nazwa_przestrzeni_nazw==module_prze)then local nazwa_przestrzeni_nazw_d=nazwy_modul["NAZWAPRZESTRZENI"]{[1]=nazwa_jednostki,["kod języka"]=kod_jezyka,["kod projektu"]=kod_projektu,}; if(nazwa_przestrzeni_nazw_d==module_prze)then nazwa_przestrzeni_nazw=module_prze; end; end; end; if(not nazwa_przestrzeni_nazw_blad)then if(((czy_uwzglednic_alternatywna_nazwe==nil)and true or czy_uwzglednic_alternatywna_nazwe) and frame.args[1])then local wytrimowana_nazwa_przestrzeni_nazw=mw.text.trim(frame.args[1]); if(mw.ustring.match(wytrimowana_nazwa_przestrzeni_nazw,"^[%w%s_]*$"))then if(czy_biezaca_wiki)then local nazwy_modul=require("Module:Nazwy"); local czy_blad_nazwy_przestrzeni_nazw=nazwy_modul.Np{nazwa=wytrimowana_nazwa_przestrzeni_nazw,["istnieje"]="tak",["wynik błędu nietekstowy"]="tak",} return czy_blad_nazwy_przestrzeni_nazw or "(błąd)"; else local nazwy_modul=require("Module:Nazwy"); local nazwa_przestrzeni_nazw_blad2=nazwy_modul.NpDane{nazwa=wytrimowana_nazwa_przestrzeni_nazw,["kod języka"]=kod_jezyka,["kod projektu"]=kod_projektu,["istnieje"]="tak",["wynik błędu nietekstowy"]="tak",}; return nazwa_przestrzeni_nazw_blad2 or "(błąd)"; end; else return "(błąd)"; end; else local wytrimowana_nazwa_przestrzeni_nazw=mw.text.trim(nazwa_przestrzeni_nazw); if(mw.ustring.match(wytrimowana_nazwa_przestrzeni_nazw,"^[%w%s_]*$"))then return wytrimowana_nazwa_przestrzeni_nazw; else return "(błąd)"; end; end; else return nazwa_przestrzeni_nazw; end; else return require("Module:Nazwy")["NAZWAPRZESTRZENI"]{[1]=nazwa_jednostki,["kod języka"]=kod_jezyka,["kod projektu"]=kod_projektu,}; end; else return require("Module:Nazwy")["NAZWAPRZESTRZENI"]{[1]=nazwa_jednostki,["kod języka"]=kod_jezyka,["kod projektu"]=kod_projektu,}; end; end; function p.Nazwa_przestrzeni_nazw_przedmiotowa_dyskusji_2(frame,czy_uwzglednic_alternatywna_nazwe,i,typ) local numer_jednostki=i or frame.args["numer jednostki"]; local liczba_numer_jednostki=((numer_jednostki)and(tonumber(numer_jednostki))or 0); local pudelko_modul=require("Module:Pudełko"); local tab_nazwa={ ["przedmiotowa"]="Nazwa przedmiotowej przestrzeni nazw", ["dyskusja"]="Nazwa przestrzeni nazw", }; local nazwa_przestrzeni_nazw=pudelko_modul[tab_nazwa[typ]](frame,czy_uwzglednic_alternatywna_nazwe,liczba_numer_jednostki); local nazwy_modul=require("Module:Nazwy"); if(nazwa_przestrzeni_nazw=="")then local nazwa_jednostki=pudelko_modul["Nazwa jednostki"](frame,liczba_numer_jednostki); local kod_jezyka,kod_projektu=p.Wikikody_kontenera(frame,liczba_numer_jednostki); local tab_nazwa={ ["przedmiotowa"]="PRZEDMIOTOWAPRZESTRZEŃ", ["dyskusja"]="PRZESTRZEŃDYSKUSJI", }; nazwa_przestrzeni_nazw=nazwy_modul[tab_nazwa[typ]]{nazwa=nazwa_jednostki,["kod języka"]=kod_jezyka,["kod projektu"]=kod_projektu,}; else if(typ=="dyskusja")then local wiki_modul=require("Module:Wiki"); local czy_biezaca=wiki_modul["CzyBieżącaWiki"]{["kod języka"]=kod_jezyka,["kod projektu"]=kod_projektu,}; if(czy_biezaca)then nazwa_przestrzeni_nazw=nazwy_modul.Np{[typ]="tak",nazwa=nazwa_przestrzeni_nazw}; else nazwa_przestrzeni_nazw=nazwy_modul.NpDane{[typ]="tak",nazwa=nazwa_przestrzeni_nazw,["kod języka"]=kod_jezyka,["kod projektu"]=kod_projektu,}; end; end; end; return nazwa_przestrzeni_nazw; end; function p.Kod_jezyka(frame,i,wartosc_domyslna) local pudelko_modul=require("Module:Pudełko"); if(not i)then return pudelko_modul["Kod języka tego projektu"]();end; local pf=frame.getParent and frame:getParent() or {args={}}; if(i==0)then return pudelko_modul["Kod języka tego projektu"](); elseif(i==1)then local parametry_modul=require("Module:Parametry"); local kod_jezyka=frame.args["kod języka"] or frame.args["kod języka 1"] or pf.args["kod języka"] or pf.args["kod języka 1"] return ((kod_jezyka)and(kod_jezyka~=""))and mw.text.trim(kod_jezyka) or ((parametry_modul.CzyTak(wartosc_domyslna))and wartosc_domyslna or nil); elseif(i>1)then local parametry_modul=require("Module:Parametry"); local kod_jezyka=frame.args["kod języka "..i] or pf.args["kod języka "..i] return ((kod_jezyka)and(kod_jezyka~=""))and mw.text.trim(kod_jezyka) or ((parametry_modul.CzyTak(wartosc_domyslna))and wartosc_domyslna or nil); end; end function p.Kod_projektu(frame,i,wartosc_domyslna) local pudelko_modul=require("Module:Pudełko"); if(not i)then return pudelko_modul["Kod projektu tego projektu"]();end; local pf=frame.getParent and frame:getParent() or {args={}}; if(i==0)then return pudelko_modul["Kod projektu tego projektu"](); elseif(i==1)then local parametry_modul=require("Module:Parametry"); local kod_projektu=frame.args["kod projektu"] or frame.args["kod projektu 1"] or pf.args["kod projektu"] or pf.args["kod projektu 1"] return ((kod_projektu)and(kod_projektu~=""))and mw.text.trim(kod_projektu) or ((parametry_modul.CzyTak(wartosc_domyslna))and wartosc_domyslna or nil); elseif(i>1)then local parametry_modul=require("Module:Parametry"); local kod_projektu=frame.args["kod projektu "..i] or pf.args["kod projektu "..i] return ((kod_projektu)and(kod_projektu~=""))and mw.text.trim(kod_projektu) or ((parametry_modul.CzyTak(wartosc_domyslna))and wartosc_domyslna or nil); end; end function p.Klucz_projektu(frame,i,wartosc_domyslna_jezyka,wartosc_domyslna_projektu) local pf=frame.getParent and frame:getParent() or {args={}}; local klucz_projektu; local function domyslne_klucz(klucz_projektu) local parametry_modul=require("Module:Parametry"); return ((klucz_projektu)and(klucz_projektu~=""))and mw.text.trim(klucz_projektu)or((parametry_modul.CzyTak(wartosc_domyslna_jezyka)and(parametry_modul.CzyTak(wartosc_domyslna_projektu)))and (wartosc_domyslna_jezyka..":" ..wartosc_domyslna_projektu)or(parametry_modul.CzyTak(wartosc_domyslna_jezyka) and wartosc_domyslna_jezyka or (parametry_modul.CzyTak(wartosc_domyslna_projektu) and wartosc_domyslna_projektu or nil))); end; if(i==0)then return nil; elseif(i==1)then local klucz_projektu=frame.args["klucz projektu"] or frame.args["klucz projektu 1"] or pf.args["klucz projektu"] or pf.args["klucz projektu 1"]; return domyslne_klucz(klucz_projektu); elseif(i>1)then local klucz_projektu=frame.args["klucz projektu "..i] or pf.args["klucz projektu "..i]; return domyslne_klucz(klucz_projektu); end; end; function p.Wikikody_kontenera(frame,i,wartosc_domyslna_jezyka,wartosc_domyslna_projektu) local wiki_modul=require("Module:Wiki"); local kod_jezyka,kod_projektu=wiki_modul.KodyWiki(p.Klucz_projektu(frame,i,wartosc_domyslna_jezyka,wartosc_domyslna_projektu),p.Kod_jezyka(frame,i,wartosc_domyslna_jezyka),p.Kod_projektu(frame,i,wartosc_domyslna_projektu)); return kod_jezyka,kod_projektu; end; function p.Nazwa_przestrzeni_nazw_od_typu_jednostki(typ,args,bez_analizy) if(not bez_analizy)then local parametry_modul=require("Module:Parametry"); if((((not parametry_modul.CzyTak(args["obsługiwane jednostki jako nieopisowe strony"]))and((typ=="artykuł")or(typ=="podręcznik")))or (typ=="artykuł")))then return ""; elseif(((not parametry_modul.CzyTak(args["obsługiwane jednostki jako nieopisowe strony"]))and((typ=="artykuł dla dzieci")or(typ=="podręcznik dla dzieci")))or(typ=="artykuł dla dzieci"))then return "Wikijunior"; elseif((not parametry_modul.CzyTak(args["obsługiwane brudnopisy jako normalne strony"])) and(((not parametry_modul.CzyTak(args["obsługiwane jednostki jako nieopisowe strony"]))and(parametry_modul.CzyTak(args["obsługiwane jednostki brudnopisu projektu"])and (typ=="podręcznik brudnopisu projektu" or typ=="artykuł brudnopisu projektu")or (typ=="jednostka brudnopisu projektu")) or (typ=="strona brudnopisu projektu"))or(typ=="strona projektu"))or (typ=="strona projektu"))then return "Project"; elseif((parametry_modul.CzyTak(args["obsługiwane strony jako niebrudnopisowe jednostki programowe"]))and (typ=="strona szablonu") or(not parametry_modul.CzyTak(args["obsługiwane brudnopisy jako normalne strony"]) and((not parametry_modul.CzyTak(args["obsługiwane opisy jako strony jednostek programowych"]) and not parametry_modul.CzyTak(args["obsługiwane jednostki jako nieopisowe strony"]) and not parametry_modul.CzyTak(args["obsługiwane nieudokumentowane szablony jako szablony"])) and((typ=="strona brudnopisu szablonu")or(typ=="strona brudnopisu opisu szablonu"))or(typ=="strona brudnopisu szablonu")) or((not parametry_modul.CzyTak(args["obsługiwane opisy jako strony jednostek programowych"]) and not parametry_modul.CzyTak(args["obsługiwane jednostki jako nieopisowe strony"]) and not parametry_modul.CzyTak(args["obsługiwane nieudokumentowane szablony jako szablony"])) and((typ=="strona szablonu")or(typ=="strona opisu szablonu"))or(typ=="strona szablonu"))))then return "Template"; elseif((parametry_modul.CzyTak(args["obsługiwane strony jako niebrudnopisowe jednostki programowe"]))and (typ=="strona modułu") or(not parametry_modul.CzyTak(args["obsługiwane brudnopisy jako normalne strony"]) and((not parametry_modul.CzyTak(args["obsługiwane opisy jako strony jednostek programowych"]) and not parametry_modul.CzyTak(args["obsługiwane jednostki jako nieopisowe strony"])) and((typ=="strona brudnopisu modułu")or(typ=="strona brudnopisu opisu modułu"))or(typ=="strona brudnopisu modułu")) or((not parametry_modul.CzyTak(args["obsługiwane opisy jako strony jednostek programowych"]) and not parametry_modul.CzyTak(args["obsługiwane jednostki jako nieopisowe strony"])) and((typ=="strona modułu")or(typ=="strona opisu modułu"))or(typ=="strona modułu"))))then return "Module"; elseif(not parametry_modul.CzyTak(args["obsługiwane jednostki użytkownika jako normalne strony"]) and(((not parametry_modul.CzyTak(args["obsługiwane jednostki jako nieopisowe strony"]))and(parametry_modul.CzyTak(args["obsługiwane jednostki użytkownika"])and (typ=="podręcznik użytkownika" or typ=="artykuł użytkownika") or (typ=="jednostka użytkownika")) or (typ=="strona użytkownika"))or(typ=="strona główna użytkownika"))or(typ=="strona użytkownika"))then return "User"; elseif(typ=="strona pliku")then return "File"; elseif(typ=="strona kategorii")then return "Category"; elseif(typ=="strona pomocy")then return "Help"; elseif(typ=="strona komunikatu")then return "MediaWiki"; elseif(typ=="strona specjalna")then return "Special"; elseif(typ=="strona gadżetu")then return "Gadget"; elseif(typ=="strona główna projektu")then return "Project"; elseif(typ=="strona główna dla dzieci")then return "Wikijunior"; end; return; end; if(typ)then if((typ=="artykuł")or(typ=="podręcznik"))then return ""; elseif((typ=="artykuł dla dzieci")or(typ=="podręcznik dla dzieci"))then return "Wikijunior"; elseif((typ=="podręcznik brudnopisu projektu")or(typ=="artykuł brudnopisu projektu")or(typ=="jednostka brudnopisu projektu")or(typ=="strona brudnopisu projektu")or(typ=="strona projektu"))then return "Project"; elseif((typ=="strona szablonu")or(typ=="strona opisu szablonu")or(typ=="strona brudnopisu szablonu")or(typ=="strona brudnopisu opisu szablonu"))then return "Template"; elseif((typ=="strona modułu")or(typ=="strona opisu modułu")or(typ=="strona brudnopisu modułu")or(typ=="strona brudnopisu opisu modułu"))then return "Module"; elseif((typ=="podręcznik użytkownika")or(typ=="artykuł użytkownika")or(typ=="jednostka użytkownika")or(typ=="strona użytkownika")or(typ=="strona główna użytkownika"))then return "User"; elseif(typ=="strona pliku")then return "File"; elseif(typ=="strona kategorii")then return "Category"; elseif(typ=="strona pomocy")then return "Help"; elseif(typ=="strona komunikatu")then return "MediaWiki"; elseif(typ=="strona specjalna")then return "Special"; elseif(typ=="strona gadżetu")then return "Gadget"; elseif(typ=="strona główna projektu")then return "Project"; elseif(typ=="strona główna dla dzieci")then return "Wikijunior"; end; end; end; function p.Typ_jednostki_uzyskany_z_frame(frame,i) local numer_jednostki=i or frame.args["numer jednostki"]; local liczba_numer_jednostki=tonumber(numer_jednostki) or 0; local pf=frame.getParent and frame:getParent() or {args={}}; local typ; if liczba_numer_jednostki~=0 then typ=liczba_numer_jednostki and( (frame.args["typ jednostki "..liczba_numer_jednostki] or frame.args["typ jednostki i"]) or (pf.args["typ jednostki "..liczba_numer_jednostki] or pf.args["typ jednostki i"]) ); if(not typ)then local nazwa_jednostki=p.Nazwy_przestrzeni_i_jednostki_podane_o_pewnym_numerze(frame,liczba_numer_jednostki,2); if(nazwa_jednostki)then if(not mw.ustring.match(mw.text.trim(nazwa_jednostki),"^:"))then local nazwa_przesrzeni_nazw=p.Nazwy_przestrzeni_i_jednostki_podane_o_pewnym_numerze(frame,liczba_numer_jednostki,1); if(not nazwa_przesrzeni_nazw)then typ=frame.args["typ jednostki"] or pf.args["typ jednostki"]; end; end; end; end; else typ=frame.args["typ jednostki"] or pf.args["typ jednostki"]; end; return typ,liczba_numer_jednostki; end; function p.Czy_dyskusja_typu_jednostki_z_frame_od_dyskusja_typu_jednostki(frame,i) local numer_jednostki=i or frame.args["numer jednostki"]; local liczba_numer_jednostki=((numer_jednostki)and(tonumber(numer_jednostki))or 0); local pf=frame:getParent() or {args={},}; local function FuncTemp(liczba_numer_jednostki) local dyskusja_parametr="dyskusja typu jednostki"; if(liczba_numer_jednostki==0)then return frame.args[dyskusja_parametr] or pf.args[dyskusja_parametr]; else return ((frame.args[dyskusja_parametr.." "..liczba_numer_jednostki] or pf.args[dyskusja_parametr.." "..liczba_numer_jednostki]) or (frame.args[dyskusja_parametr.." i"] or pf.args[dyskusja_parametr.." i"]) or(frame.args[dyskusja_parametr] or pf.args[dyskusja_parametr])); end; end; local czy_dyskusja=FuncTemp(liczba_numer_jednostki); local parametry_modul=require("Module:Parametry"); local czy_dyskusja=parametry_modul.CzyTak(czy_dyskusja); return czy_dyskusja; end; function p.Nazwa_przestrzeni_nazw_uzyskana_z_typu_jednostki_z_frame(frame,i) local typ=p.Typ_jednostki_uzyskany_z_frame(frame,i); local nazwa_przestrzeni_nazw=typ and p.Nazwa_przestrzeni_nazw_od_typu_jednostki(typ,nil,true) or nil; if(nazwa_przestrzeni_nazw)then local czy_dyskusja=p.Czy_dyskusja_typu_jednostki_z_frame_od_dyskusja_typu_jednostki(frame,i); if(czy_dyskusja)then if(nazwa_przestrzeni_nazw=="")then return "Talk"; else return nazwa_przestrzeni_nazw.." talk"; end; else return nazwa_przestrzeni_nazw; end; else return nil; end; end; function p.Typ_jednostki(frame, kod_liczbowy_przestrzeni_nazw,i,numer_argorytmu) local parametry_modul=require("Module:Parametry"); local analiza=parametry_modul.CzyTak(frame.args["analiza"]); local typ,liczba_numer_jednostki=p.Typ_jednostki_uzyskany_z_frame(frame,i); local uzyskana_przestrzen_nazw_od_typu_jednostki; local nazwa_przestrzeni_nazw_podana,nazwa_jednostki_podana=p.Nazwy_przestrzeni_i_jednostki_podane_o_pewnym_numerze(frame,liczba_numer_jednostki); if((not analiza)and(typ))then if(typ~="")then uzyskana_przestrzen_nazw_od_typu_jednostki=p.Nazwa_przestrzeni_nazw_od_typu_jednostki(typ,frame.args); if(uzyskana_przestrzen_nazw_od_typu_jednostki)then if((not nazwa_przestrzeni_nazw_podana)and(not nazwa_jednostki_podana))then return typ; end; else return "(błąd typu jednostki)"; end; end; end; local nazwa_przestrzeni_nazw,nazwa_jednostki=p.Uzyskanie_nazw_jednostki(frame,kod_liczbowy_przestrzeni_nazw,liczba_numer_jednostki,numer_argorytmu); local nazwy_modul=require("Module:Nazwy"); local kod_jezyka,kod_projektu=p.Wikikody_kontenera(frame,liczba_numer_jednostki); local wiki_modul=require("Module:Wiki"); local czy_biezaca=wiki_modul["CzyBieżącaWiki"]{["kod języka"]=kod_jezyka,["kod projektu"]=kod_projektu,}; local czy_blad_nazwa_przestrzeni_nazw; if(czy_biezaca)then czy_blad_nazwa_przestrzeni_nazw=nazwy_modul.Np{nazwa=nazwa_przestrzeni_nazw,["kanoniczna"]="tak",["nazwij projektem"]="tak",["nazwij dyskusją projektu"]="tak",["istnieje"]="tak",["wynik błędu nietekstowy"]="tak",} else czy_blad_nazwa_przestrzeni_nazw=nazwy_modul.NpDane{nazwa=nazwa_przestrzeni_nazw,["kanoniczna"]="tak",["nazwij projektem"]="tak",["nazwij dyskusją projektu"]="tak",["kod języka"]=kod_jezyka,["kod projektu"]=kod_projektu,["istnieje"]="tak",["wynik błędu nietekstowy"]="tak",} end; if(not czy_blad_nazwa_przestrzeni_nazw)then return "(błąd nazwy przestrzeni nazw)";end; nazwa_przestrzeni_nazw=czy_blad_nazwa_przestrzeni_nazw; --- --- if((not analiza)and(typ))then if(typ~="")then ---typ jednostki if(uzyskana_przestrzen_nazw_od_typu_jednostki)then if((nazwa_przestrzeni_nazw_podana)and(not nazwa_jednostki_podana))then if(uzyskana_przestrzen_nazw_od_typu_jednostki==nazwa_przestrzeni_nazw)then return typ; else return "(błąd niezgodności)"; end; end; else return "(błąd typu jednostki)"; end; end; end; local function Typ_jednostki() if(nazwa_jednostki~="")then --local kod_jezyka,kod_projektu=KodyWikiPudelka(frame,liczba_numer_jednostki); --local klucz_projektu=kod_projektu..":"..kod_jezyka; local pudelko_modul=require("Module:Pudełko"); local pelna_nazwa_strony=((nazwa_przestrzeni_nazw~="")and nazwa_przestrzeni_nazw..":" or "")..nazwa_jednostki; if(pudelko_modul.CzyNiepoprawnaNazwa(pelna_nazwa_strony))then return "(błąd nazwy jednostki)";end; local nazwy_modul=require("Module:Nazwy") pelna_nazwa_strony=nazwy_modul["PEŁNANAZWASTRONY"]{[1]=pelna_nazwa_strony,["kod języka"]=kod_jezyka,["kod projektu"]=kod_projektu,}; local norm_przed_lub_dyskusji=p.Normalna_przedmiotowa_lub_dyskusji_nazwa_przestrzeni_nazw(nazwa_przestrzeni_nazw, kod_liczbowy_przestrzeni_nazw,kod_jezyka,kod_projektu); if(kod_projektu==pudelko_modul["Kod projektu tego projektu"]())then local nazwa_strony_glownej_dla_dzieci_ze_zmiennej=p.Nazwa_strony_bazowej_dla_dzieci_ze_zmiennej(frame,liczba_numer_jednostki,kod_jezyka); if(nazwa_strony_glownej_dla_dzieci_ze_zmiennej=="")then return "(błąd nazwy strony głównej dla dzieci)";end; local nazwa_strony_glownej_wikijuniora=p.Nazwa_strony_bazowej_dla_dzieci_z_wikidanych(kod_jezyka); local nazwa_strony_glownej_dla_dzieci_uzyskana=(not nazwa_strony_glownej_dla_dzieci_ze_zmiennej)and nazwa_strony_glownej_wikijuniora or nazwa_strony_glownej_dla_dzieci_ze_zmiennej; if(nazwa_strony_glownej_dla_dzieci_uzyskana)then if(pudelko_modul.CzyNiepoprawnaNazwa(nazwa_strony_glownej_dla_dzieci_uzyskana))then return "(błąd nazwy strony głównej dla dzieci)";end; nazwa_strony_glownej_dla_dzieci_uzyskana=nazwy_modul["PEŁNANAZWASTRONY"]{[1]=nazwa_strony_glownej_dla_dzieci_uzyskana,["kod języka"]=kod_jezyka,["kod projektu"]=kod_projektu,}; if(pelna_nazwa_strony==nazwa_strony_glownej_dla_dzieci_uzyskana)then return "strona główna dla dzieci";end; end; end; local nazwa_strony_glownej_projektu_ze_zmiennej=p.Nazwa_strony_bazowej_projektu_ze_zmiennej(frame,liczba_numer_jednostki,kod_jezyka,kod_projektu); if(nazwa_strony_glownej_projektu_ze_zmiennej=="")then return "(błąd nazwy strony głównej projektu)";end; local nazwa_strony_glownej_projektu_z_wikidanych=p.Nazwa_strony_bazowej_projektu_z_wikidanych(kod_jezyka,kod_projektu); local nazwa_strony_glownej_projektu_uzyskana=(not nazwa_strony_glownej_projektu_ze_zmiennej)and nazwa_strony_glownej_projektu_z_wikidanych or nazwa_strony_glownej_projektu_ze_zmiennej; if(nazwa_strony_glownej_projektu_uzyskana)then if(pudelko_modul.CzyNiepoprawnaNazwa(nazwa_strony_glownej_projektu_uzyskana))then return "(błąd nazwy strony głównej projektu)";end; nazwa_strony_glownej_projektu_uzyskana=nazwy_modul["PEŁNANAZWASTRONY"]{[1]=nazwa_strony_glownej_projektu_uzyskana,["kod języka"]=kod_jezyka,["kod projektu"]=kod_projektu,}; if(pelna_nazwa_strony==nazwa_strony_glownej_projektu_uzyskana)then return "strona główna projektu";end; end; if(norm_przed_lub_dyskusji=="")then local parametry_modul=require("Module:Parametry"); if(parametry_modul.CzyTak(frame.args["obsługiwane jednostki jako nieopisowe strony"]))then return "artykuł"; else local it=mw.ustring.match(nazwa_jednostki,"^[^/]+$"); if(it)then return "podręcznik";else return "artykuł";end; end; elseif(norm_przed_lub_dyskusji=="Wikijunior")then local parametry_modul=require("Module:Parametry"); if(parametry_modul.CzyTak(frame.args["obsługiwane jednostki jako nieopisowe strony"]))then return "artykuł dla dzieci"; else local it=mw.ustring.match(nazwa_jednostki,"^[^/]+$"); if(it)then return "podręcznik dla dzieci";else return "artykuł dla dzieci";end; end; elseif(norm_przed_lub_dyskusji=="User")then local parametry_modul=require("Module:Parametry"); if(parametry_modul.CzyTak(frame.args["obsługiwane jednostki użytkownika jako normalne strony"]))then return "strona użytkownika"; else local czy_podstrony=mw.ustring.match(nazwa_jednostki,"^[^/]+$") if(czy_podstrony)then return "strona główna użytkownika"; else if(not parametry_modul.CzyTak(frame.args["obsługiwane jednostki jako nieopisowe strony"]))then if(parametry_modul.CzyTak(frame.args["obsługiwane jednostki użytkownika"]))then local czy_ksiazka=mw.ustring.match(nazwa_jednostki,"^[^/]+/[^/]*$"); if(czy_ksiazka)then return "podręcznik użytkownika"; else return "artykuł użytkownika"; end; else return "jednostka użytkownika"; end; else return "strona użytkownika"; end; end; end; elseif(norm_przed_lub_dyskusji=="File")then return "strona pliku"; elseif(norm_przed_lub_dyskusji=="Category")then return "strona kategorii"; elseif(norm_przed_lub_dyskusji=="Project")then local parametry_modul=require("Module:Parametry"); if(parametry_modul.CzyTak(frame.args["obsługiwane brudnopisy jako normalne strony"]))then return "strona projektu";end; if(mw.ustring.match(nazwa_jednostki,"^%s*[Bb]rudnopis/[^/]*/.*"))then if(not parametry_modul.CzyTak(frame.args["obsługiwane jednostki jako nieopisowe strony"]))then if(parametry_modul.CzyTak(frame.args["obsługiwane jednostki brudnopisu projektu"]))then local czy_ksiazka=mw.ustring.match(nazwa_jednostki,"^%s*[Bb]rudnopis/[^/]*/[^/]*$"); if(czy_ksiazka)then return "podręcznik brudnopisu projektu"; else return "artykuł brudnopisu projektu"; end; else return "jednostka brudnopisu projektu"; end; else return "strona brudnopisu projektu"; end; else return "strona projektu"; end; elseif(norm_przed_lub_dyskusji=="Help")then return "strona pomocy"; elseif(norm_przed_lub_dyskusji=="MediaWiki")then return "strona komunikatu"; elseif(norm_przed_lub_dyskusji=="Special")then return "strona specialna"; elseif(norm_przed_lub_dyskusji=="Gadget")then return "strona gadżetu"; elseif(nazwa_przestrzeni_nazw=="Template")then local parametry_modul=require("Module:Parametry"); if(parametry_modul.CzyTak(frame.args["obsługiwane strony jako niebrudnopisowe jednostki programowe"]))then return "strona szablonu";end; local function CzySzablonAlboOpis(nazwa_przestrzeni_nazw,nazwa_jednostki,szablon,opis_szablonu,strona_szablonu,prefix) local parametry_modul=require("Module:Parametry"); if(parametry_modul.CzyTak(frame.args["obsługiwane opisy jako strony jednostek programowych"]) or parametry_modul.CzyTak(frame.args["obsługiwane jednostki jako nieopisowe strony"]))then return szablon; else if(mw.ustring.match(nazwa_jednostki,"^"..prefix..".*/opis$"))then return opis_szablonu; else if(not parametry_modul.CzyTak(frame.args["obsługiwane nieudokumentowane szablony jako szablony"]))then local czy_brudnopis=mw.ustring.match(nazwa_jednostki,"^"..prefix..".*$"); if(czy_brudnopis)then local pagename=(nazwa_przestrzeni_nazw~="")and nazwa_przestrzeni_nazw..":"..nazwa_jednostki or nazwa_jednostki; local czy_istnieje_strona,tab=require("Module:Techniczne").PoliczZbiory(pagename); if(czy_istnieje_strona==1)then local czy_brudnopis_opisu_szablonu=require("Module:Łatki").contentMatch{ [1]='<noinclude>.-{{%s*[Dd]okumentacja%s*}}.-</noinclude>', [2]='<noinclude>.-{{%s*[Dd]okumentacja%s*|.-</noinclude>',pagename=pagename,namespace=0 }; if(not czy_brudnopis_opisu_szablonu)then return opis_szablonu;else return szablon;end; else return szablon; end; else return strona_szablonu; end; else return szablon; end; end; end; end; if((not parametry_modul.CzyTak(frame.args["obsługiwane brudnopisy jako normalne strony"]))and(mw.ustring.match(nazwa_jednostki,"^%s*[Bb]rudnopis/[^/]*/.*")))then return CzySzablonAlboOpis(nazwa_przestrzeni_nazw,nazwa_jednostki,"strona brudnopisu szablonu","strona brudnopisu opisu szablonu","strona szablonu","[Bb]rudnopis/[^/]*/"); else return CzySzablonAlboOpis(nazwa_przestrzeni_nazw,nazwa_jednostki,"strona szablonu","strona opisu szablonu","strona szablonu",""); end; elseif(nazwa_przestrzeni_nazw=="Module")then local parametry_modul=require("Module:Parametry"); if(parametry_modul.CzyTak(frame.args["obsługiwane strony jako niebrudnopisowe jednostki programowe"]))then return "strona modułu";end; if((not parametry_modul.CzyTak(frame.args["obsługiwane brudnopisy jako normalne strony"]))and(mw.ustring.match(nazwa_jednostki,"^%s*[Bb]rudnopis/[^/]*/.*")))then if(parametry_modul.CzyTak(frame.args["obsługiwane opisy jako strony jednostek programowych"]) or parametry_modul.CzyTak(frame.args["obsługiwane jednostki jako nieopisowe strony"]))then return "strona brudnopisu modułu" else local pelna_nazwa_strony=(nazwa_przestrzeni_nazw~="")and nazwa_przestrzeni_nazw..":"..nazwa_jednostki or nazwa_jednostki; pelna_nazwa_strony=require("Module:Nazwy")["PEŁNANAZWASTRONY"]{[1]=pelna_nazwa_strony,["kod języka"]=kod_jezyka,["kod projektu"]=kod_projektu,}; local pelna_nazwa_strony_brudnopisu_opisu_modulu=require("Module:Techniczne")["PełnaNazwaOpisuModułu"](pelna_nazwa_strony); if(pelna_nazwa_strony==pelna_nazwa_strony_brudnopisu_opisu_modulu)then return "strona brudnopisu opisu modułu"; else return "strona brudnopisu modułu"; end; end; else if(parametry_modul.CzyTak(frame.args["obsługiwane opisy jako strony jednostek programowych"]) or parametry_modul.CzyTak(frame.args["obsługiwane jednostki jako nieopisowe strony"]))then return "strona modułu" else local pelna_nazwa_strony=(nazwa_przestrzeni_nazw~="")and nazwa_przestrzeni_nazw..":"..nazwa_jednostki or nazwa_jednostki; pelna_nazwa_strony=require("Module:Nazwy")["PEŁNANAZWASTRONY"]{[1]=pelna_nazwa_strony,["kod języka"]=kod_jezyka,["kod projektu"]=kod_projektu,}; local pelna_nazwa_opisu_modulu=require("Module:Techniczne")["PełnaNazwaOpisuModułu"](pelna_nazwa_strony); if(pelna_nazwa_strony==pelna_nazwa_opisu_modulu)then return "strona opisu modułu"; else return "strona modułu"; end; end; end; else return "inne"; end; end; return "inne"; end; local typ_jednostki=Typ_jednostki(); local function TempFunc(typ_jednostki) if( (kod_liczbowy_przestrzeni_nazw==2) or((kod_liczbowy_przestrzeni_nazw==0)and(p.Czy_dyskusja_typu_jednostki_z_frame_od_dyskusja_typu_jednostki(frame,i))) )then typ_jednostki,ile=mw.ustring.gsub(typ_jednostki,"^(%S+)(%s+)",function(strona,spacja) return strona.." dyskusji"..spacja; end); return typ_jednostki; end; return typ_jednostki; end; if(((analiza)or(nazwa_jednostki_podana))and(typ)and(typ~=""))then if(typ_jednostki==typ)then return TempFunc(typ_jednostki); elseif(nazwa_jednostki_podana)then return "(błąd parametrów pudełkowych)" else return "(błąd typu jednostki)"; end; end; return TempFunc(typ_jednostki); end; function p.Uzyskanie_nazw_jednostki(frame,kod_liczbowy_przestrzeni_nazw,i,numer_argorytmu,co_ma_liczyc) local nazwa_przestrzeni_fun,nazwa_jednostki_fun; if(kod_liczbowy_przestrzeni_nazw==0)then nazwa_przestrzeni_fun="Nazwa przestrzeni nazw"; nazwa_jednostki_fun="Nazwa jednostki"; elseif(kod_liczbowy_przestrzeni_nazw==1)then nazwa_przestrzeni_fun="Nazwa przedmiotowej przestrzeni nazw"; nazwa_jednostki_fun="Nazwa przedmiotowa jednostki"; elseif(kod_liczbowy_przestrzeni_nazw==2)then nazwa_przestrzeni_fun="Nazwa przestrzeni nazw dyskusji" nazwa_jednostki_fun="Nazwa dyskusji jednostki"; else nazwa_przestrzeni_fun="Nazwa przestrzeni nazw"; nazwa_jednostki_fun="Nazwa jednostki"; end; local pudelko_modul=require("Module:Pudełko"); if(not numer_argorytmu)then if((not i)or(i==0))then if((not co_ma_liczyc)or(co_ma_liczyc==0))then local nazwa_przestrzeni_nazw=pudelko_modul[nazwa_przestrzeni_fun](frame,false); local nazwa_jednostki=pudelko_modul["Nazwa jednostki"](frame); return nazwa_przestrzeni_nazw,nazwa_jednostki; elseif(co_ma_liczyc==1)then local nazwa_przestrzeni_nazw=pudelko_modul[nazwa_przestrzeni_fun](frame,false); return nazwa_przestrzeni_nazw; elseif(co_ma_liczyc==2)then return pudelko_modul["Nazwa jednostki"](frame); end; else if((not co_ma_liczyc)or(co_ma_liczyc==0))then local n=p.Nazwa_przestrzeni_nazw_dodatkowe(frame,i); local nazwa_przestrzeni_nazw=(n)and pudelko_modul[nazwa_przestrzeni_fun](frame,false,i) or pudelko_modul[nazwa_przestrzeni_fun.." 2"](frame,false,i); local nazwa_jednostki=(n)and pudelko_modul["Nazwa jednostki"](frame,i) or pudelko_modul[nazwa_jednostki_fun.." 2"](frame,i); return nazwa_przestrzeni_nazw,nazwa_jednostki; elseif(co_ma_liczyc==1)then local n=p.Nazwa_przestrzeni_nazw_dodatkowe(frame,i); local nazwa_przestrzeni_nazw=(n)and pudelko_modul[nazwa_przestrzeni_fun](frame,false,i) or pudelko_modul[nazwa_przestrzeni_fun.." 2"](frame,false,i); return nazwa_przestrzeni_nazw; elseif(co_ma_liczyc==2)then local n=p.Nazwa_przestrzeni_nazw_dodatkowe(frame,i); return (n)and pudelko_modul["Nazwa jednostki"](frame,i) or pudelko_modul[nazwa_jednostki_fun.." 2"](frame,i); end; end; else if(numer_argorytmu==0)then if((not co_ma_liczyc)or(co_ma_liczyc==0))then local nazwa_przestrzeni_nazw=pudelko_modul[nazwa_przestrzeni_fun](frame,false,i); local nazwa_jednostki=pudelko_modul["Nazwa jednostki"](frame,i); return nazwa_przestrzeni_nazw,nazwa_jednostki; elseif(co_ma_liczyc==1)then local nazwa_przestrzeni_nazw=pudelko_modul[nazwa_przestrzeni_fun](frame,false,i); return nazwa_przestrzeni_nazw; elseif(co_ma_liczyc==2)then return pudelko_modul["Nazwa jednostki"](frame,i); end; else if((not co_ma_liczyc)or(co_ma_liczyc==0))then local nazwa_przestrzeni_nazw=pudelko_modul[nazwa_przestrzeni_fun.." 2"](frame,false,i); local nazwa_jednostki=pudelko_modul[nazwa_jednostki_fun.." 2"](frame,i); return nazwa_przestrzeni_nazw,nazwa_jednostki; elseif(co_ma_liczyc==1)then local nazwa_przestrzeni_nazw=pudelko_modul[nazwa_przestrzeni_fun.." 2"](frame,false,i); return nazwa_przestrzeni_nazw; elseif(co_ma_liczyc==2)then return pudelko_modul[nazwa_jednostki_fun.." 2"](frame,i); end; end; end; end; function p.Nazwa_przestrzeni_nazw_dodatkowe(frame,numer_jednostki) local pf=frame.getParent and frame:getParent() or {args={}}; return frame.args["nazwa przestrzeni nazw "..tostring(numer_jednostki)] or pf.args["nazwa przestrzeni nazw "..tostring(numer_jednostki)] end; function p.Nazwa_jednostki(frame,i) local pf=frame.getParent and frame:getParent() or {args={}}; local nazwa_jednostki,liczba_numer_jednostki=p.Nazwy_przestrzeni_i_jednostki_podane_o_pewnym_numerze(frame,i,2); local kod_jezyka,kod_projektu=p.Wikikody_kontenera(frame,liczba_numer_jednostki); if(nazwa_jednostki)then nazwa_jednostki=mw.text.trim(nazwa_jednostki); nazwa_jednostki=mw.ustring.gsub(nazwa_jednostki,"^:",""); nazwa_jednostki=mw.ustring.gsub(nazwa_jednostki,"^([^#]*)#(.*)$","%1"); local parametry=mw.ustring.match(nazwa_jednostki,"^.*%?([^%?]+)$"); if(parametry and mw.ustring.match(parametry,"[^=]+=[^=]*"))then nazwa_jednostki=mw.ustring.gsub(nazwa_jednostki,"^(.*)%?([^%?]+)$","%1"); end; else local nazwy_modul=require("Module:Nazwy"); nazwa_jednostki=nazwy_modul["NAZWASTRONY"]{["kod języka"]=kod_jezyka,["kod projektu"]=kod_projektu,}; end; local parametry_modul=require("Module:Parametry"); nazwa_jednostki=parametry_modul["Odstępy"]{[1]=nazwa_jednostki,[2]="tak",}; return mw.getContentLanguage():ucfirst(nazwa_jednostki); end; function p.Nazwy_przestrzeni_i_jednostki_podane_o_pewnym_numerze(frame,i,co_podac) local pf=frame.getParent and frame:getParent() or {args={}}; local numer_jednostki=i or frame.args["numer jednostki"]; local liczba_numer_jednostki=tonumber(numer_jednostki) or 0; local nazwa_jednostki; local bool_numer_jednostki=(liczba_numer_jednostki~=0); local function Nazwa_jednostki() if bool_numer_jednostki then nazwa_jednostki=frame.args["nazwa jednostki "..liczba_numer_jednostki] or ((liczba_numer_jednostki==1)and(pf.args["cel"])) or pf.args[liczba_numer_jednostki]; else nazwa_jednostki=frame.args["nazwa jednostki"] or pf.args["nazwa jednostki"]; end; return nazwa_jednostki; end; local function Nazwa_przestrzeni_nazw() local nazwa_przestrzeni_nazw=bool_numer_jednostki and (frame.args["nazwa przestrzeni nazw i"] or pf.args["nazwa przestrzeni nazw i"] or frame.args["nazwa przestrzeni nazw "..liczba_numer_jednostki] or pf.args["nazwa przestrzeni nazw "..liczba_numer_jednostki]) or frame.args["nazwa przestrzeni nazw"] or pf.args["nazwa przestrzeni nazw"]; return nazwa_przestrzeni_nazw; end; if(not co_podac)then return Nazwa_przestrzeni_nazw(),Nazwa_jednostki(),liczba_numer_jednostki; elseif(co_podac==1)then return Nazwa_przestrzeni_nazw(),liczba_numer_jednostki; elseif(co_podac==2)then return Nazwa_jednostki(),liczba_numer_jednostki; else return Nazwa_przestrzeni_nazw(),Nazwa_jednostki(),liczba_numer_jednostki; end; end; function p.Jaka_nazwa_jednostki(frame,i,jaka) local nazwa_przestrzeni_nazw,nazwa_jednostki,liczba_numer_jednostki=p.Nazwy_przestrzeni_i_jednostki_podane_o_pewnym_numerze(frame,i); nazwa_przestrzeni_nazw=nazwa_przestrzeni_nazw or p.Nazwa_przestrzeni_nazw_uzyskana_z_typu_jednostki_z_frame(frame,liczba_numer_jednostki); ---- local nazwy_modul=require("Module:Nazwy"); nazwa_przestrzeni_nazw=nazwa_przestrzeni_nazw and mw.text.trim(nazwa_przestrzeni_nazw) or nazwy_modul["NAZWAPRZESTRZENI"](); if(nazwa_jednostki)then local html_modul=require("Module:Html"); nazwa_jednostki=html_modul["NazwaStronyAdresu"](nazwa_jednostki,true); else nazwa_jednostki=nazwy_modul["NAZWASTRONY"](); end; local kod_jezyka,kod_projektu=p.Wikikody_kontenera(frame,liczba_numer_jednostki); local wiki_modul=require("Module:Wiki"); local czy_biezaca=wiki_modul["CzyBieżącaWiki"]{["kod języka"]=kod_jezyka,["kod projektu"]=kod_projektu,}; if(jaka)then if(czy_biezaca)then local tab_parametry={nazwa=nazwa_przestrzeni_nazw,}; if(jaka=="przedmiotowa")then tab_parametry["przedmiotowa"]="tak";end; nazwa_przestrzeni_nazw=nazwy_modul.Np(tab_parametry); else local tab_parametry={nazwa=nazwa_przestrzeni_nazw,["kod języka"]=kod_jezyka,["kod projektu"]=kod_projektu,}; if(jaka=="przedmiotowa")then tab_parametry["przedmiotowa"]="tak";end; nazwa_przestrzeni_nazw=nazwy_modul.NpDane(tab_parametry); end; else if(czy_biezaca)then nazwa_przestrzeni_nazw=nazwy_modul.Np{nazwa=nazwa_przestrzeni_nazw}; else nazwa_przestrzeni_nazw=nazwy_modul.NpDane{nazwa=nazwa_przestrzeni_nazw,["kod języka"]=kod_jezyka,["kod projektu"]=kod_projektu,}; end; end; if(not mw.ustring.match(nazwa_jednostki,"^:"))then if(nazwa_przestrzeni_nazw~="")then if((not typ)or(typ=="przedmiotowa"))then if(czy_biezaca)then local nazwy_np_modul=mw.loadData("Module:Nazwy/Np"); if(nazwa_przestrzeni_nazw==nazwy_np_modul.Template)then local nazwa_przestrzeni_nazw_d=nazwy_modul["NAZWAPRZESTRZENI"](nazwa_jednostki); if(nazwa_przestrzeni_nazw_d==nazwy_np_modul.Template)then return nazwy_modul["NAZWASTRONY"](nazwa_jednostki); end; elseif(nazwa_przestrzeni_nazw==nazwy_np_modul.Module)then local nazwa_przestrzeni_nazw_d=nazwy_modul["NAZWAPRZESTRZENI"](nazwa_jednostki); if(nazwa_przestrzeni_nazw_d==nazwy_np_modul.Module)then return nazwy_modul["NAZWASTRONY"](nazwa_jednostki); end; end; else local template_prze=nazwy_modul.NpDane{nazwa="Template",["kod języka"]=kod_jezyka,["kod projektu"]=kod_projektu,}; local module_prze=nazwy_modul.NpDane{nazwa="Module",["kod języka"]=kod_jezyka,["kod projektu"]=kod_projektu,}; if(nazwa_przestrzeni_nazw==template_prze)then local nazwa_przestrzeni_nazw_d=nazwy_modul["NAZWAPRZESTRZENI"]{[1]=nazwa_jednostki,["kod języka"]=kod_jezyka,["kod projektu"]=kod_projektu,}; if(nazwa_przestrzeni_nazw_d==template_prze)then return nazwy_modul["NAZWASTRONY"]{[1]=nazwa_jednostki,["kod języka"]=kod_jezyka,["kod projektu"]=kod_projektu,}; end; elseif(nazwa_przestrzeni_nazw==module_prze)then local nazwa_przestrzeni_nazw_d=nazwy_modul["NAZWAPRZESTRZENI"]{[1]=nazwa_jednostki,["kod języka"]=kod_jezyka,["kod projektu"]=kod_projektu,}; if(nazwa_przestrzeni_nazw_d==module_prze)then return nazwy_modul["NAZWASTRONY"]{[1]=nazwa_jednostki,["kod języka"]=kod_jezyka,["kod projektu"]=kod_projektu,}; end; end; end; end; local parametry_modul=require("Module:Parametry"); nazwa_jednostki=parametry_modul["Odstępy"]{[1]=nazwa_jednostki,[2]="tak",}; return mw.getContentLanguage():ucfirst(nazwa_jednostki); else return nazwy_modul["NAZWASTRONY"]{[1]=nazwa_jednostki,["kod języka"]=kod_jezyka,["kod projektu"]=kod_projektu,}; end; else return nazwy_modul["NAZWASTRONY"]{[1]=nazwa_jednostki,["kod języka"]=kod_jezyka,["kod projektu"]=kod_projektu,}; end; end; function p.Czy_przestrzen_nazw_jest_obslugiwana(frame,jakas_przestrzen_nazw,kod_jezyka,kod_projektu) local nazwy_modul=require("Module:Nazwy"); local parametry_modul=require("Module:Parametry"); local wiki_modul=require("Module:Wiki"); local czy_biezaca=wiki_modul["CzyBieżącaWiki"]{["kod języka"]=kod_jezyka,["kod projektu"]=kod_projektu,}; if(czy_biezaca)then jakas_przestrzen_nazw=nazwy_modul.Np{nazwa=jakas_przestrzen_nazw}; else jakas_przestrzen_nazw=nazwy_modul.NpDane{nazwa=jakas_przestrzen_nazw,["kod języka"]=kod_jezyka,["kod projektu"]=kod_projektu,}; end; local function nazwa_przestrzeni_nazw_fun(nazwa_przestrzeni_nazw_iter) if(czy_biezaca)then nazwa_przestrzeni_nazw_iter=nazwy_modul.Np{nazwa=nazwa_przestrzeni_nazw_iter}; else nazwa_przestrzeni_nazw_iter=nazwy_modul.NpDane{nazwa=nazwa_przestrzeni_nazw_iter,["kod języka"]=kod_jezyka,["kod projektu"]=kod_projektu,}; end; if(jakas_przestrzen_nazw==nazwa_przestrzeni_nazw_iter)then return true; end; return false; end; for licznik,nazwa_przestrzeni_nazw in pairs(frame.args)do if(type(licznik)=="number")then local nazwa_przestrzeni_nazw_element,klucze_element=mw.ustring.match(nazwa_przestrzeni_nazw,"^%s*([%w%s]*)%s*:%s*(.-)%s*"); if(nazwa_przestrzeni_nazw_element and klucze_element)then local tab_klucze=mw.text.split(klucze_element,"%s*,%s*",false); local wiki_modul=require("Module:Wiki"); for _,klucz_element in ipairs(tab_klucze)do local kod_jezyka_obslugiwane,kod_projektu_obslugiwane=wiki_modul.KluczProjektu(klucz_element); if(kod_jezyka_obslugiwane==kod_jezyka and kod_projektu_obslugiwane==kod_projektu)then local wynik=nazwa_przestrzeni_nazw_fun(nazwa_przestrzeni_nazw_element); if(wynik)then return true;end; end; end; else local wynik=nazwa_przestrzeni_nazw_fun(nazwa_przestrzeni_nazw); if(wynik)then return true;end; end; end; end; return false; end; function p.Analiza_interwiki_czy_projekt_aktualny(frame,czy_jezyk,czy_projekt) local parametry_modul=require("Module:Parametry"); local p=parametry_modul.PobierzFrameEwentualnieParent(frame); local pudelko_modul=require("Module:Pudełko"); local wiki_modul=require("Module:Wiki"); local jezyk_biezacy=czy_jezyk and pudelko_modul["Kod języka tego projektu"](); local projekt_biezacy=czy_projekt and pudelko_modul["Kod projektu tego projektu"](); for i,_ in pairs(p.args)do if(type(i)=="number")then local klucz_projektu=pudelko_modul["Klucz projektu"](frame,i); local kod_jezyka=pudelko_modul["Kod języka"](frame,i); local kod_projektu=pudelko_modul["kod projektu"](frame,i); local jezyk,projekt=wiki_modul.KodyWiki(klucz_projektu,kod_jezyka,kod_projektu); if((czy_jezyk and (jezyk~=jezyk_biezacy))or(czy_projekt and(projekt~=projekt_biezacy)))then return "tak"; end; end; end; return; end; return p; 5h8tmwpmd2vas1zc63xemjy0b7a4rjm 540401 540398 2026-04-23T16:27:20Z Persino 2851 540401 Scribunto text/plain local p={}; function p.Nazwa_strony_bazowej_projektu_z_wikidanych(kod_jezyka,kod_projektu) local strona=require("Module:Pudełko")["Strona główna tego projektu"](); local odpowiednik_strony=require("Module:Wiki").WikidaneOdpowiednikStrony{["nazwa strony"]=strona,["kod języka"]=kod_jezyka,["kod projektu"]=kod_projektu}; if(odpowiednik_strony)then local nazwy_modul=require("Module:Nazwy"); return nazwy_modul["PEŁNANAZWASTRONY"]{[1]=odpowiednik_strony,["kod języka"]=kod_jezyka,["kod projektu"]=kod_projektu,}; else local pudelko_modul=require("Module:Pudełko"); if((kod_jezyka==pudelko_modul["Kod języka tego projektu"]())and(kod_projektu==pudelko_modul["Kod projektu tego projektu"]()))then return strona; else local wiki_interwiki_modul=mw.loadData("Module:Wiki/interwiki"); local czy_w_wikidanych=wiki_interwiki_modul.tablica_kody_projektu_wikidane.lingwistyczne[kod_projektu] or wiki_interwiki_modul.tablica_kody_projektu_wikidane.specjalistyczne[kod_projektu]; return czy_w_wikidanych and "Main Page" or nil; end; end; end; function p.Nazwa_strony_bazowej_dla_dzieci_z_wikidanych(kod_jezyka) local strona=require("Module:Pudełko")["Strona główna dla dzieci tego projektu"](); local pudelko_modul=require("Module:Pudełko"); local kod_jezyka_tego_projektu=pudelko_modul["Kod języka tego projektu"](); if(kod_jezyka==kod_jezyka_tego_projektu)then return strona;end; local kod_projektu_tego_projektu=pudelko_modul["Kod projektu tego projektu"](); local odpowiednik_strony=require("Module:Wiki").WikidaneOdpowiednikStrony{["nazwa strony"]=strona,["kod języka"]=kod_jezyka,["kod projektu"]=kod_projektu_tego_projektu}; if(odpowiednik_strony)then local nazwy_modul=require("Module:Nazwy"); return nazwy_modul["PEŁNANAZWASTRONY"]{[1]=odpowiednik_strony,["kod języka"]=kod_jezyka,["kod projektu"]=kod_projektu_tego_projektu,}; else return "Wikijunior"; end; end; function p.Nazwa_strony_bazowej_projektu_ze_zmiennej(frame,i,kod_jezyka,kod_projektu) local pf=frame.getParent and frame:getParent() or {args={}}; local strona_glowna_projektu; if(i~=0)then local pudelko_modul=require("Module:Pudełko"); local kod_jezyka_tego_projektu=pudelko_modul["Kod języka tego projektu"](); local kod_projektu_tego_projektu=pudelko_modul["Kod projektu tego projektu"](); if(kod_jezyka==kod_jezyka_tego_projektu)and(kod_projektu==kod_projektu_tego_projektu)then strona_glowna_projektu=frame.args["strona główna projektu"] or pf.args["strona główna projektu"] else strona_glowna_projektu=(frame.args["strona główna projektu "..i] or pf.args["strona główna projektu "..i]) end; else strona_glowna_projektu=frame.args["strona główna projektu"] or pf.args["strona główna projektu"] end; local parametry_modul=require("Module:Parametry"); return (parametry_modul.CzyTak(strona_glowna_projektu))and require("Module:Nazwy")["PEŁNANAZWASTRONY"]{[1]=strona_glowna_projektu,["kod języka"]=kod_jezyka,["kod projektu"]=kod_projektu,} or (strona_glowna_projektu and "" or nil); end; function p.Nazwa_strony_bazowej_dla_dzieci_ze_zmiennej(frame,i,kod_jezyka) local pf=frame.getParent and frame:getParent() or {args={}}; local pudelko_modul=require("Module:Pudełko"); local strona_glowna_dla_dzieci; if(i~=0)then local kod_jezyka_tego_projektu=pudelko_modul["Kod języka tego projektu"](); if(kod_jezyka==kod_jezyka_tego_projektu)then strona_glowna_dla_dzieci=frame.args["strona główna dla dzieci"] or pf.args["strona główna dla dzieci"] else strona_glowna_dla_dzieci=(frame.args["strona główna dla dzieci "..i] or pf.args["strona główna dla dzieci "..i]) end; else strona_glowna_dla_dzieci=frame.args["strona główna dla dzieci"] or pf.args["strona główna dla dzieci"] end; local kod_projektu_tego_projektu=pudelko_modul["Kod projektu tego projektu"](); local parametry_modul=require("Module:Parametry"); return (parametry_modul.CzyTak(strona_glowna_dla_dzieci))and require("Module:Nazwy")["PEŁNANAZWASTRONY"]{[1]=strona_glowna_dla_dzieci,["kod języka"]=kod_jezyka,["kod projektu"]=kod_projektu_tego_projektu,} or (strona_glowna_dla_dzieci and "" or nil); end; function p.Normalna_przedmiotowa_lub_dyskusji_nazwa_przestrzeni_nazw(nazwa_przestrzeni_nazw, normmalna_przedmiotwa_dyskusji,kod_jezyka,kod_projektu) local nazwa_przestrzeni_nazw_blad; local wiki_modul=require("Module:Wiki"); local nazwy_modul=require("Module:Nazwy"); local czy_biezaca=wiki_modul["CzyBieżącaWiki"]{["kod języka"]=kod_jezyka,["kod projektu"]=kod_projektu,}; if(normmalna_przedmiotwa_dyskusji==0)then if(czy_biezaca)then nazwa_przestrzeni_nazw_blad=nazwy_modul.Np{nazwa=nazwa_przestrzeni_nazw,["kanoniczna"]="tak",["nazwij projektem"]="tak",["nazwij dyskusją projektu"]="tak",["istnieje"]="tak",["wynik błędu nietekstowy"]="tak",}; else nazwa_przestrzeni_nazw_blad=nazwy_modul.NpDane{nazwa=nazwa_przestrzeni_nazw,["kanoniczna"]="tak",["nazwij projektem"]="tak",["nazwij dyskusją projektu"]="tak",["kod języka"]=kod_jezyka,["kod projektu"]=kod_projektu,["istnieje"]="tak",["wynik błędu nietekstowy"]="tak",}; end; elseif(normmalna_przedmiotwa_dyskusji==1)then if(czy_biezaca)then nazwa_przestrzeni_nazw_blad=nazwy_modul.Np{nazwa=nazwa_przestrzeni_nazw, przedmiotowa="tak",["kanoniczna"]="tak",["nazwij projektem"]="tak",["nazwij dyskusją projektu"]="tak",["istnieje"]="tak",["wynik błędu nietekstowy"]="tak",}; else nazwa_przestrzeni_nazw_blad=nazwy_modul.NpDane{nazwa=nazwa_przestrzeni_nazw, przedmiotowa="tak",["kanoniczna"]="tak",["nazwij projektem"]="tak",["nazwij dyskusją projektu"]="tak",["kod języka"]=kod_jezyka,["kod projektu"]=kod_projektu,["istnieje"]="tak",["wynik błędu nietekstowy"]="tak",}; end; elseif(normmalna_przedmiotwa_dyskusji==2)then if(czy_biezaca)then nazwa_przestrzeni_nazw_blad=nazwy_modul.Np{nazwa=nazwa_przestrzeni_nazw, dyskusja="tak",["kanoniczna"]="tak",["nazwij projektem"]="tak",["nazwij dyskusją projektu"]="tak",["istnieje"]="tak",["wynik błędu nietekstowy"]="tak",}; else nazwa_przestrzeni_nazw_blad=nazwy_modul.NpDane{nazwa=nazwa_przestrzeni_nazw, dyskusja="tak",["kanoniczna"]="tak",["nazwij projektem"]="tak",["nazwij dyskusją projektu"]="tak",["kod języka"]=kod_jezyka,["kod projektu"]=kod_projektu,["istnieje"]="tak",["wynik błędu nietekstowy"]="tak",}; end; else if(czy_biezaca)then nazwa_przestrzeni_nazw_blad=nazwy_modul.Np{nazwa=nazwa_przestrzeni_nazw,["kanoniczna"]="tak",["nazwij projektem"]="tak",["nazwij dyskusją projektu"]="tak",["istnieje"]="tak",["wynik błędu nietekstowy"]="tak",}; else nazwa_przestrzeni_nazw_blad=nazwy_modul.NpDane{nazwa=nazwa_przestrzeni_nazw,["kanoniczna"]="tak",["nazwij projektem"]="tak",["nazwij dyskusją projektu"]="tak",["kod języka"]=kod_jezyka,["kod projektu"]=kod_projektu,["istnieje"]="tak",["wynik błędu nietekstowy"]="tak",}; end; end; return nazwa_przestrzeni_nazw_blad end; function p.Nazwa_przestrzeni_nazw(frame,kod_liczbowy_przestrzeni_nazw,czy_uwzglednic_alternatywna_nazwe,numer_jednostki) local pf=frame.getParent and frame:getParent() or {args={}}; local nazwa_przestrzeni_nazw=p.Nazwy_przestrzeni_i_jednostki_podane_o_pewnym_numerze(frame,numer_jednostki,1) or p.Nazwa_przestrzeni_nazw_uzyskana_z_typu_jednostki_z_frame(frame,numer_jednostki); local nazwy_modul=require("Module:Nazwy"); local wiki_modul=require("Module:Wiki"); local kod_jezyka,kod_projektu=p.Wikikody_kontenera(frame,numer_jednostki); local czy_biezaca_wiki=wiki_modul["CzyBieżącaWiki"]{["kod języka"]=kod_jezyka,["kod projektu"]=kod_projektu,}; local czy_blad_nazwy_przestrzeni_nazw; local typ; if(kod_liczbowy_przestrzeni_nazw==1)then typ="przedmiotowa"; if(czy_biezaca_wiki)then czy_blad_nazwy_przestrzeni_nazw=(not nazwa_przestrzeni_nazw)and nazwy_modul["PRZEDMIOTOWAPRZESTRZEŃ"]() or nazwy_modul.Np{nazwa=nazwa_przestrzeni_nazw,przedmiotowa="tak",["istnieje"]="tak",["wynik błędu nietekstowy"]="tak",}; else czy_blad_nazwy_przestrzeni_nazw=(not nazwa_przestrzeni_nazw)and nazwy_modul["PRZEDMIOTOWAPRZESTRZEŃ"]{["kod języka"]=kod_jezyka,["kod projektu"]=kod_projektu,} or nazwy_modul.NpDane{nazwa=nazwa_przestrzeni_nazw,przedmiotowa="tak",["kod języka"]=kod_jezyka,["kod projektu"]=kod_projektu,["istnieje"]="tak",["wynik błędu nietekstowy"]="tak",}; end; elseif(kod_liczbowy_przestrzeni_nazw==2)then if(czy_biezaca_wiki)then typ="dyskusja"; czy_blad_nazwy_przestrzeni_nazw=(not nazwa_przestrzeni_nazw)and nazwy_modul["PRZESTRZEŃDYSKUSJI"]() or nazwy_modul.Np{nazwa=nazwa_przestrzeni_nazw,dyskusja="tak",["istnieje"]="tak",["wynik błędu nietekstowy"]="tak",}; else czy_blad_nazwy_przestrzeni_nazw=(not nazwa_przestrzeni_nazw)and nazwy_modul["PRZESTRZEŃDYSKUSJI"]{["kod języka"]=kod_jezyka,["kod projektu"]=kod_projektu,} or nazwy_modul.NpDane{nazwa=nazwa_przestrzeni_nazw,dyskusja="tak",["kod języka"]=kod_jezyka,["kod projektu"]=kod_projektu,["istnieje"]="tak",["wynik błędu nietekstowy"]="tak",}; end; else if(czy_biezaca_wiki)then czy_blad_nazwy_przestrzeni_nazw=(not nazwa_przestrzeni_nazw)and nazwy_modul["NAZWAPRZESTRZENI"]() or nazwy_modul.Np{nazwa=nazwa_przestrzeni_nazw,["istnieje"]="tak",["wynik błędu nietekstowy"]="tak",}; else czy_blad_nazwy_przestrzeni_nazw=(not nazwa_przestrzeni_nazw)and nazwy_modul["NAZWAPRZESTRZENI"]{["kod języka"]=kod_jezyka,["kod projektu"]=kod_projektu,} or nazwy_modul.NpDane{nazwa=nazwa_przestrzeni_nazw,["kod języka"]=kod_jezyka, ["kod projektu"]=kod_projektu,["istnieje"]="tak",["wynik błędu nietekstowy"]="tak",}; end; end; if(czy_blad_nazwy_przestrzeni_nazw)then return czy_blad_nazwy_przestrzeni_nazw; else if(((czy_uwzglednic_alternatywna_nazwe==nil)and true or czy_uwzglednic_alternatywna_nazwe) and frame.args[1])then local nazwa_przestrzeni_nazw_alternatywnej=mw.text.trim(frame.args[1]); if(mw.ustring.match(nazwa_przestrzeni_nazw_alternatywnej,"^[%w%s_]*$"))then local czy_blad_nazwa_przestrzeni_nazw_alternatywnej; if(czy_biezaca_wiki)then local tab_parametry={nazwa=nazwa_przestrzeni_nazw_alternatywnej,["istnieje"]="tak",["wynik błędu nietekstowy"]="tak",}; if(typ)then tab_parametry[typ]="tak";end; czy_blad_nazwa_przestrzeni_nazw_alternatywnej=nazwy_modul.Np(tab_parametry); else local tab_parametry={nazwa=nazwa_przestrzeni_nazw_alternatywnej,["kod języka"]=kod_jezyka,["kod projektu"]=kod_projektu,["istnieje"]="tak",["wynik błędu nietekstowy"]="tak",}; if(typ)then tab_parametry[typ]="tak";end; czy_blad_nazwa_przestrzeni_nazw_alternatywnej=nazwy_modul.NpDane(tab_parametry); end; return czy_blad_nazwa_przestrzeni_nazw_alternatywnej or "(błąd)"; else return "(błąd)"; end; else local parametry_modul=require("Module:Parametry"); nazwa_przestrzeni_nazw=parametry_modul["Odstępy"]{[1]=nazwa_przestrzeni_nazw,[2]="tak",}; if(mw.ustring.match(nazwa_przestrzeni_nazw,"^[%w%s_]*$"))then return nazwa_przestrzeni_nazw; else return "(błąd)"; end; end; end; end; function p.Nazwa_przestrzeni_nazw_2(frame,czy_uwzglednic_alternatywna_nazwe,i) local nazwa_przestrzeni_nazw,nazwa_jednostki,liczba_numer_jednostki=p.Nazwy_przestrzeni_i_jednostki_podane_o_pewnym_numerze(frame,i); nazwa_przestrzeni_nazw=nazwa_przestrzeni_nazw or p.Nazwa_przestrzeni_nazw_uzyskana_z_typu_jednostki_z_frame(frame,liczba_numer_jednostki); local nazwy_modul=require("Module:Nazwy"); local kod_jezyka,kod_projektu=p.Wikikody_kontenera(frame,liczba_numer_jednostki); local wiki_modul=require("Module:Wiki"); local czy_biezaca_wiki=wiki_modul["CzyBieżącaWiki"]{["kod języka"]=kod_jezyka,["kod projektu"]=kod_projektu,}; local nazwa_przestrzeni_nazw_blad; local parametry_modul=require("Module:Parametry"); if(czy_biezaca_wiki)then nazwa_przestrzeni_nazw=nazwa_przestrzeni_nazw and mw.text.trim(nazwa_przestrzeni_nazw) or nazwy_modul["NAZWAPRZESTRZENI"](); nazwa_przestrzeni_nazw_blad=require("Module:Nazwy").Np{nazwa=nazwa_przestrzeni_nazw,["istnieje"]="tak",["wynik błędu nietekstowy"]="tak",}; if(nazwa_jednostki)then nazwa_jednostki=parametry_modul["Odstępy"]{[1]=nazwa_jednostki,[2]="tak",}; nazwa_jednostki=mw.ustring.gsub(nazwa_jednostki,"^([^#]*)#(.*)$","%1"); local parametry=mw.ustring.match(nazwa_jednostki,"^.*%?([^%?]+)$"); if(parametry and mw.ustring.match(parametry,"[^=]+=[^=]*"))then nazwa_jednostki=mw.ustring.gsub(nazwa_jednostki,"^(.*)%?([^%?]+)$","%1"); end; else nazwa_jednostki=nazwy_modul["NAZWASTRONY"](); end; else nazwa_przestrzeni_nazw=nazwa_przestrzeni_nazw and mw.text.trim(nazwa_przestrzeni_nazw) or nazwy_modul["NAZWAPRZESTRZENI"]{["kod języka"]=kod_jezyka,["kod projektu"]=kod_projektu,}; nazwa_przestrzeni_nazw_blad=require("Module:Nazwy").NpDane{nazwa=nazwa_przestrzeni_nazw,["kod języka"]=kod_jezyka,["kod projektu"]=kod_projektu,["istnieje"]="tak",["wynik błędu nietekstowy"]="tak",}; if(nazwa_jednostki)then local html_modul=require("Module:Html"); nazwa_jednostki=html_modul["NazwaStronyAdresu"](nazwa_jednostki,true); else nazwa_jednostki=nazwy_modul["NAZWASTRONY"]{["kod języka"]=kod_jezyka,["kod projektu"]=kod_projektu,}; end; end; nazwa_przestrzeni_nazw=nazwa_przestrzeni_nazw_blad or nazwa_przestrzeni_nazw; if(not mw.ustring.match(nazwa_jednostki,"^:"))then if(nazwa_przestrzeni_nazw~="")then if(czy_biezaca_wiki)then local nazwy_np_modul=mw.loadData("Module:Nazwy/Np"); if(nazwa_przestrzeni_nazw==nazwy_np_modul.Template)then local nazwa_przestrzeni_nazw_d=require("Module:Nazwy")["NAZWAPRZESTRZENI"](nazwa_jednostki); if(nazwa_przestrzeni_nazw_d==nazwy_np_modul.Template)then nazwa_przestrzeni_nazw=nazwy_np_modul.Template; end; elseif(nazwa_przestrzeni_nazw==nazwy_np_modul.Module)then local nazwa_przestrzeni_nazw_d=require("Module:Nazwy")["NAZWAPRZESTRZENI"](nazwa_jednostki); if(nazwa_przestrzeni_nazw_d==nazwy_np_modul.Module)then nazwa_przestrzeni_nazw=nazwy_np_modul.Module; end; end; else local template_prze=nazwy_modul.NpDane{nazwa="Template",["kod języka"]=kod_jezyka,["kod projektu"]=kod_projektu,}; local module_prze=nazwy_modul.NpDane{nazwa="Module",["kod języka"]=kod_jezyka,["kod projektu"]=kod_projektu,}; if(nazwa_przestrzeni_nazw==template_prze)then local nazwa_przestrzeni_nazw_d=nazwy_modul["NAZWAPRZESTRZENI"]{[1]=nazwa_jednostki,["kod języka"]=kod_jezyka,["kod projektu"]=kod_projektu,}; if(nazwa_przestrzeni_nazw_d==template_prze)then nazwa_przestrzeni_nazw=template_prze; end; elseif(nazwa_przestrzeni_nazw==module_prze)then local nazwa_przestrzeni_nazw_d=nazwy_modul["NAZWAPRZESTRZENI"]{[1]=nazwa_jednostki,["kod języka"]=kod_jezyka,["kod projektu"]=kod_projektu,}; if(nazwa_przestrzeni_nazw_d==module_prze)then nazwa_przestrzeni_nazw=module_prze; end; end; end; if(not nazwa_przestrzeni_nazw_blad)then if(((czy_uwzglednic_alternatywna_nazwe==nil)and true or czy_uwzglednic_alternatywna_nazwe) and frame.args[1])then local wytrimowana_nazwa_przestrzeni_nazw=mw.text.trim(frame.args[1]); if(mw.ustring.match(wytrimowana_nazwa_przestrzeni_nazw,"^[%w%s_]*$"))then if(czy_biezaca_wiki)then local nazwy_modul=require("Module:Nazwy"); local czy_blad_nazwy_przestrzeni_nazw=nazwy_modul.Np{nazwa=wytrimowana_nazwa_przestrzeni_nazw,["istnieje"]="tak",["wynik błędu nietekstowy"]="tak",} return czy_blad_nazwy_przestrzeni_nazw or "(błąd)"; else local nazwy_modul=require("Module:Nazwy"); local nazwa_przestrzeni_nazw_blad2=nazwy_modul.NpDane{nazwa=wytrimowana_nazwa_przestrzeni_nazw,["kod języka"]=kod_jezyka,["kod projektu"]=kod_projektu,["istnieje"]="tak",["wynik błędu nietekstowy"]="tak",}; return nazwa_przestrzeni_nazw_blad2 or "(błąd)"; end; else return "(błąd)"; end; else local wytrimowana_nazwa_przestrzeni_nazw=mw.text.trim(nazwa_przestrzeni_nazw); if(mw.ustring.match(wytrimowana_nazwa_przestrzeni_nazw,"^[%w%s_]*$"))then return wytrimowana_nazwa_przestrzeni_nazw; else return "(błąd)"; end; end; else return nazwa_przestrzeni_nazw; end; else return require("Module:Nazwy")["NAZWAPRZESTRZENI"]{[1]=nazwa_jednostki,["kod języka"]=kod_jezyka,["kod projektu"]=kod_projektu,}; end; else return require("Module:Nazwy")["NAZWAPRZESTRZENI"]{[1]=nazwa_jednostki,["kod języka"]=kod_jezyka,["kod projektu"]=kod_projektu,}; end; end; function p.Nazwa_przestrzeni_nazw_przedmiotowa_dyskusji_2(frame,czy_uwzglednic_alternatywna_nazwe,i,typ) local numer_jednostki=i or frame.args["numer jednostki"]; local liczba_numer_jednostki=((numer_jednostki)and(tonumber(numer_jednostki))or 0); local pudelko_modul=require("Module:Pudełko"); local tab_nazwa={ ["przedmiotowa"]="Nazwa przedmiotowej przestrzeni nazw", ["dyskusja"]="Nazwa przestrzeni nazw", }; local nazwa_przestrzeni_nazw=pudelko_modul[tab_nazwa[typ]](frame,czy_uwzglednic_alternatywna_nazwe,liczba_numer_jednostki); local nazwy_modul=require("Module:Nazwy"); if(nazwa_przestrzeni_nazw=="")then local nazwa_jednostki=pudelko_modul["Nazwa jednostki"](frame,liczba_numer_jednostki); local kod_jezyka,kod_projektu=p.Wikikody_kontenera(frame,liczba_numer_jednostki); local tab_nazwa={ ["przedmiotowa"]="PRZEDMIOTOWAPRZESTRZEŃ", ["dyskusja"]="PRZESTRZEŃDYSKUSJI", }; nazwa_przestrzeni_nazw=nazwy_modul[tab_nazwa[typ]]{nazwa=nazwa_jednostki,["kod języka"]=kod_jezyka,["kod projektu"]=kod_projektu,}; else if(typ=="dyskusja")then local wiki_modul=require("Module:Wiki"); local czy_biezaca=wiki_modul["CzyBieżącaWiki"]{["kod języka"]=kod_jezyka,["kod projektu"]=kod_projektu,}; if(czy_biezaca)then nazwa_przestrzeni_nazw=nazwy_modul.Np{[typ]="tak",nazwa=nazwa_przestrzeni_nazw}; else nazwa_przestrzeni_nazw=nazwy_modul.NpDane{[typ]="tak",nazwa=nazwa_przestrzeni_nazw,["kod języka"]=kod_jezyka,["kod projektu"]=kod_projektu,}; end; end; end; return nazwa_przestrzeni_nazw; end; function p.Kod_jezyka(frame,i,wartosc_domyslna) local pudelko_modul=require("Module:Pudełko"); if(not i)then return pudelko_modul["Kod języka tego projektu"]();end; local pf=frame.getParent and frame:getParent() or {args={}}; if(i==0)then return pudelko_modul["Kod języka tego projektu"](); elseif(i==1)then local parametry_modul=require("Module:Parametry"); local kod_jezyka=frame.args["kod języka"] or frame.args["kod języka 1"] or pf.args["kod języka"] or pf.args["kod języka 1"] return ((kod_jezyka)and(kod_jezyka~=""))and mw.text.trim(kod_jezyka) or ((parametry_modul.CzyTak(wartosc_domyslna))and wartosc_domyslna or nil); elseif(i>1)then local parametry_modul=require("Module:Parametry"); local kod_jezyka=frame.args["kod języka "..i] or pf.args["kod języka "..i] return ((kod_jezyka)and(kod_jezyka~=""))and mw.text.trim(kod_jezyka) or ((parametry_modul.CzyTak(wartosc_domyslna))and wartosc_domyslna or nil); end; end function p.Kod_projektu(frame,i,wartosc_domyslna) local pudelko_modul=require("Module:Pudełko"); if(not i)then return pudelko_modul["Kod projektu tego projektu"]();end; local pf=frame.getParent and frame:getParent() or {args={}}; if(i==0)then return pudelko_modul["Kod projektu tego projektu"](); elseif(i==1)then local parametry_modul=require("Module:Parametry"); local kod_projektu=frame.args["kod projektu"] or frame.args["kod projektu 1"] or pf.args["kod projektu"] or pf.args["kod projektu 1"] return ((kod_projektu)and(kod_projektu~=""))and mw.text.trim(kod_projektu) or ((parametry_modul.CzyTak(wartosc_domyslna))and wartosc_domyslna or nil); elseif(i>1)then local parametry_modul=require("Module:Parametry"); local kod_projektu=frame.args["kod projektu "..i] or pf.args["kod projektu "..i] return ((kod_projektu)and(kod_projektu~=""))and mw.text.trim(kod_projektu) or ((parametry_modul.CzyTak(wartosc_domyslna))and wartosc_domyslna or nil); end; end function p.Klucz_projektu(frame,i,wartosc_domyslna_jezyka,wartosc_domyslna_projektu) local pf=frame.getParent and frame:getParent() or {args={}}; local klucz_projektu; local function domyslne_klucz(klucz_projektu) local parametry_modul=require("Module:Parametry"); return ((klucz_projektu)and(klucz_projektu~=""))and mw.text.trim(klucz_projektu)or((parametry_modul.CzyTak(wartosc_domyslna_jezyka)and(parametry_modul.CzyTak(wartosc_domyslna_projektu)))and (wartosc_domyslna_jezyka..":" ..wartosc_domyslna_projektu)or(parametry_modul.CzyTak(wartosc_domyslna_jezyka) and wartosc_domyslna_jezyka or (parametry_modul.CzyTak(wartosc_domyslna_projektu) and wartosc_domyslna_projektu or nil))); end; if(i==0)then return nil; elseif(i==1)then local klucz_projektu=frame.args["klucz projektu"] or frame.args["klucz projektu 1"] or pf.args["klucz projektu"] or pf.args["klucz projektu 1"]; return domyslne_klucz(klucz_projektu); elseif(i>1)then local klucz_projektu=frame.args["klucz projektu "..i] or pf.args["klucz projektu "..i]; return domyslne_klucz(klucz_projektu); end; end; function p.Wikikody_kontenera(frame,i,wartosc_domyslna_jezyka,wartosc_domyslna_projektu) local wiki_modul=require("Module:Wiki"); local kod_jezyka,kod_projektu=wiki_modul.KodyWiki(p.Klucz_projektu(frame,i,wartosc_domyslna_jezyka,wartosc_domyslna_projektu),p.Kod_jezyka(frame,i,wartosc_domyslna_jezyka),p.Kod_projektu(frame,i,wartosc_domyslna_projektu)); return kod_jezyka,kod_projektu; end; function p.Nazwa_przestrzeni_nazw_od_typu_jednostki(typ,args,bez_analizy) if(not bez_analizy)then local parametry_modul=require("Module:Parametry"); if((((not parametry_modul.CzyTak(args["obsługiwane jednostki jako nieopisowe strony"]))and((typ=="artykuł")or(typ=="podręcznik")))or (typ=="artykuł")))then return ""; elseif(((not parametry_modul.CzyTak(args["obsługiwane jednostki jako nieopisowe strony"]))and((typ=="artykuł dla dzieci")or(typ=="podręcznik dla dzieci")))or(typ=="artykuł dla dzieci"))then return "Wikijunior"; elseif((not parametry_modul.CzyTak(args["obsługiwane brudnopisy jako normalne strony"])) and(((not parametry_modul.CzyTak(args["obsługiwane jednostki jako nieopisowe strony"]))and(parametry_modul.CzyTak(args["obsługiwane jednostki brudnopisu projektu"])and (typ=="podręcznik brudnopisu projektu" or typ=="artykuł brudnopisu projektu")or (typ=="jednostka brudnopisu projektu")) or (typ=="strona brudnopisu projektu"))or(typ=="strona projektu"))or (typ=="strona projektu"))then return "Project"; elseif((parametry_modul.CzyTak(args["obsługiwane strony jako niebrudnopisowe jednostki programowe"]))and (typ=="strona szablonu") or(not parametry_modul.CzyTak(args["obsługiwane brudnopisy jako normalne strony"]) and((not parametry_modul.CzyTak(args["obsługiwane opisy jako strony jednostek programowych"]) and not parametry_modul.CzyTak(args["obsługiwane jednostki jako nieopisowe strony"]) and not parametry_modul.CzyTak(args["obsługiwane nieudokumentowane szablony jako szablony"])) and((typ=="strona brudnopisu szablonu")or(typ=="strona brudnopisu opisu szablonu"))or(typ=="strona brudnopisu szablonu")) or((not parametry_modul.CzyTak(args["obsługiwane opisy jako strony jednostek programowych"]) and not parametry_modul.CzyTak(args["obsługiwane jednostki jako nieopisowe strony"]) and not parametry_modul.CzyTak(args["obsługiwane nieudokumentowane szablony jako szablony"])) and((typ=="strona szablonu")or(typ=="strona opisu szablonu"))or(typ=="strona szablonu"))))then return "Template"; elseif((parametry_modul.CzyTak(args["obsługiwane strony jako niebrudnopisowe jednostki programowe"]))and (typ=="strona modułu") or(not parametry_modul.CzyTak(args["obsługiwane brudnopisy jako normalne strony"]) and((not parametry_modul.CzyTak(args["obsługiwane opisy jako strony jednostek programowych"]) and not parametry_modul.CzyTak(args["obsługiwane jednostki jako nieopisowe strony"])) and((typ=="strona brudnopisu modułu")or(typ=="strona brudnopisu opisu modułu"))or(typ=="strona brudnopisu modułu")) or((not parametry_modul.CzyTak(args["obsługiwane opisy jako strony jednostek programowych"]) and not parametry_modul.CzyTak(args["obsługiwane jednostki jako nieopisowe strony"])) and((typ=="strona modułu")or(typ=="strona opisu modułu"))or(typ=="strona modułu"))))then return "Module"; elseif(not parametry_modul.CzyTak(args["obsługiwane jednostki użytkownika jako normalne strony"]) and(((not parametry_modul.CzyTak(args["obsługiwane jednostki jako nieopisowe strony"]))and(parametry_modul.CzyTak(args["obsługiwane jednostki użytkownika"])and (typ=="podręcznik użytkownika" or typ=="artykuł użytkownika") or (typ=="jednostka użytkownika")) or (typ=="strona użytkownika"))or(typ=="strona główna użytkownika"))or(typ=="strona użytkownika"))then return "User"; elseif(typ=="strona pliku")then return "File"; elseif(typ=="strona kategorii")then return "Category"; elseif(typ=="strona pomocy")then return "Help"; elseif(typ=="strona komunikatu")then return "MediaWiki"; elseif(typ=="strona specjalna")then return "Special"; elseif(typ=="strona gadżetu")then return "Gadget"; elseif(typ=="strona główna projektu")then return "Project"; elseif(typ=="strona główna dla dzieci")then return "Wikijunior"; end; return; end; if(typ)then if((typ=="artykuł")or(typ=="podręcznik"))then return ""; elseif((typ=="artykuł dla dzieci")or(typ=="podręcznik dla dzieci"))then return "Wikijunior"; elseif((typ=="podręcznik brudnopisu projektu")or(typ=="artykuł brudnopisu projektu")or(typ=="jednostka brudnopisu projektu")or(typ=="strona brudnopisu projektu")or(typ=="strona projektu"))then return "Project"; elseif((typ=="strona szablonu")or(typ=="strona opisu szablonu")or(typ=="strona brudnopisu szablonu")or(typ=="strona brudnopisu opisu szablonu"))then return "Template"; elseif((typ=="strona modułu")or(typ=="strona opisu modułu")or(typ=="strona brudnopisu modułu")or(typ=="strona brudnopisu opisu modułu"))then return "Module"; elseif((typ=="podręcznik użytkownika")or(typ=="artykuł użytkownika")or(typ=="jednostka użytkownika")or(typ=="strona użytkownika")or(typ=="strona główna użytkownika"))then return "User"; elseif(typ=="strona pliku")then return "File"; elseif(typ=="strona kategorii")then return "Category"; elseif(typ=="strona pomocy")then return "Help"; elseif(typ=="strona komunikatu")then return "MediaWiki"; elseif(typ=="strona specjalna")then return "Special"; elseif(typ=="strona gadżetu")then return "Gadget"; elseif(typ=="strona główna projektu")then return "Project"; elseif(typ=="strona główna dla dzieci")then return "Wikijunior"; end; end; end; function p.Typ_jednostki_uzyskany_z_frame(frame,i) local numer_jednostki=i or frame.args["numer jednostki"]; local liczba_numer_jednostki=tonumber(numer_jednostki) or 0; local pf=frame.getParent and frame:getParent() or {args={}}; local typ; if liczba_numer_jednostki~=0 then typ=liczba_numer_jednostki and( (frame.args["typ jednostki "..liczba_numer_jednostki] or frame.args["typ jednostki i"]) or (pf.args["typ jednostki "..liczba_numer_jednostki] or pf.args["typ jednostki i"]) ); if(not typ)then local nazwa_jednostki=p.Nazwy_przestrzeni_i_jednostki_podane_o_pewnym_numerze(frame,liczba_numer_jednostki,2); if(nazwa_jednostki)then if(not mw.ustring.match(mw.text.trim(nazwa_jednostki),"^:"))then local nazwa_przesrzeni_nazw=p.Nazwy_przestrzeni_i_jednostki_podane_o_pewnym_numerze(frame,liczba_numer_jednostki,1); if(not nazwa_przesrzeni_nazw)then typ=frame.args["typ jednostki"] or pf.args["typ jednostki"]; end; end; end; end; else typ=frame.args["typ jednostki"] or pf.args["typ jednostki"]; end; return typ,liczba_numer_jednostki; end; function p.Czy_dyskusja_typu_jednostki_z_frame_od_dyskusja_typu_jednostki(frame,i) local numer_jednostki=i or frame.args["numer jednostki"]; local liczba_numer_jednostki=((numer_jednostki)and(tonumber(numer_jednostki))or 0); local pf=frame:getParent() or {args={},}; local function FuncTemp(liczba_numer_jednostki) local dyskusja_parametr="dyskusja typu jednostki"; if(liczba_numer_jednostki==0)then return frame.args[dyskusja_parametr] or pf.args[dyskusja_parametr]; else return ((frame.args[dyskusja_parametr.." "..liczba_numer_jednostki] or pf.args[dyskusja_parametr.." "..liczba_numer_jednostki]) or (frame.args[dyskusja_parametr.." i"] or pf.args[dyskusja_parametr.." i"]) or(frame.args[dyskusja_parametr] or pf.args[dyskusja_parametr])); end; end; local czy_dyskusja=FuncTemp(liczba_numer_jednostki); local parametry_modul=require("Module:Parametry"); local czy_dyskusja=parametry_modul.CzyTak(czy_dyskusja); return czy_dyskusja; end; function p.Nazwa_przestrzeni_nazw_uzyskana_z_typu_jednostki_z_frame(frame,i) local typ=p.Typ_jednostki_uzyskany_z_frame(frame,i); local nazwa_przestrzeni_nazw=typ and p.Nazwa_przestrzeni_nazw_od_typu_jednostki(typ,nil,true) or nil; if(nazwa_przestrzeni_nazw)then local czy_dyskusja=p.Czy_dyskusja_typu_jednostki_z_frame_od_dyskusja_typu_jednostki(frame,i); if(czy_dyskusja)then if(nazwa_przestrzeni_nazw=="")then return "Talk"; else return nazwa_przestrzeni_nazw.." talk"; end; else return nazwa_przestrzeni_nazw; end; else return nil; end; end; function p.Typ_jednostki(frame, kod_liczbowy_przestrzeni_nazw,i,numer_argorytmu) local parametry_modul=require("Module:Parametry"); local analiza=parametry_modul.CzyTak(frame.args["analiza"]); local typ,liczba_numer_jednostki=p.Typ_jednostki_uzyskany_z_frame(frame,i); local uzyskana_przestrzen_nazw_od_typu_jednostki; local nazwa_przestrzeni_nazw_podana,nazwa_jednostki_podana=p.Nazwy_przestrzeni_i_jednostki_podane_o_pewnym_numerze(frame,liczba_numer_jednostki); if((not analiza)and(typ))then if(typ~="")then uzyskana_przestrzen_nazw_od_typu_jednostki=p.Nazwa_przestrzeni_nazw_od_typu_jednostki(typ,frame.args); if(uzyskana_przestrzen_nazw_od_typu_jednostki)then if((not nazwa_przestrzeni_nazw_podana)and(not nazwa_jednostki_podana))then return typ; end; else return "(błąd typu jednostki)"; end; end; end; local nazwa_przestrzeni_nazw,nazwa_jednostki=p.Uzyskanie_nazw_jednostki(frame,kod_liczbowy_przestrzeni_nazw,liczba_numer_jednostki,numer_argorytmu); local nazwy_modul=require("Module:Nazwy"); local kod_jezyka,kod_projektu=p.Wikikody_kontenera(frame,liczba_numer_jednostki); local wiki_modul=require("Module:Wiki"); local czy_biezaca=wiki_modul["CzyBieżącaWiki"]{["kod języka"]=kod_jezyka,["kod projektu"]=kod_projektu,}; local czy_blad_nazwa_przestrzeni_nazw; if(czy_biezaca)then czy_blad_nazwa_przestrzeni_nazw=nazwy_modul.Np{nazwa=nazwa_przestrzeni_nazw,["kanoniczna"]="tak",["nazwij projektem"]="tak",["nazwij dyskusją projektu"]="tak",["istnieje"]="tak",["wynik błędu nietekstowy"]="tak",} else czy_blad_nazwa_przestrzeni_nazw=nazwy_modul.NpDane{nazwa=nazwa_przestrzeni_nazw,["kanoniczna"]="tak",["nazwij projektem"]="tak",["nazwij dyskusją projektu"]="tak",["kod języka"]=kod_jezyka,["kod projektu"]=kod_projektu,["istnieje"]="tak",["wynik błędu nietekstowy"]="tak",} end; if(not czy_blad_nazwa_przestrzeni_nazw)then return "(błąd nazwy przestrzeni nazw)";end; nazwa_przestrzeni_nazw=czy_blad_nazwa_przestrzeni_nazw; --- --- if((not analiza)and(typ))then if(typ~="")then ---typ jednostki if(uzyskana_przestrzen_nazw_od_typu_jednostki)then if((nazwa_przestrzeni_nazw_podana)and(not nazwa_jednostki_podana))then if(uzyskana_przestrzen_nazw_od_typu_jednostki==nazwa_przestrzeni_nazw)then return typ; else return "(błąd niezgodności)"; end; end; else return "(błąd typu jednostki)"; end; end; end; local function Typ_jednostki() if(nazwa_jednostki~="")then --local kod_jezyka,kod_projektu=KodyWikiPudelka(frame,liczba_numer_jednostki); --local klucz_projektu=kod_projektu..":"..kod_jezyka; local pudelko_modul=require("Module:Pudełko"); local pelna_nazwa_strony=((nazwa_przestrzeni_nazw~="")and nazwa_przestrzeni_nazw..":" or "")..nazwa_jednostki; if(pudelko_modul.CzyNiepoprawnaNazwa(pelna_nazwa_strony))then return "(błąd nazwy jednostki)";end; local nazwy_modul=require("Module:Nazwy") pelna_nazwa_strony=nazwy_modul["PEŁNANAZWASTRONY"]{[1]=pelna_nazwa_strony,["kod języka"]=kod_jezyka,["kod projektu"]=kod_projektu,}; local norm_przed_lub_dyskusji=p.Normalna_przedmiotowa_lub_dyskusji_nazwa_przestrzeni_nazw(nazwa_przestrzeni_nazw,1,kod_jezyka,kod_projektu); if(kod_projektu==pudelko_modul["Kod projektu tego projektu"]())then local nazwa_strony_glownej_dla_dzieci_ze_zmiennej=p.Nazwa_strony_bazowej_dla_dzieci_ze_zmiennej(frame,liczba_numer_jednostki,kod_jezyka); if(nazwa_strony_glownej_dla_dzieci_ze_zmiennej=="")then return "(błąd nazwy strony głównej dla dzieci)";end; local nazwa_strony_glownej_wikijuniora=p.Nazwa_strony_bazowej_dla_dzieci_z_wikidanych(kod_jezyka); local nazwa_strony_glownej_dla_dzieci_uzyskana=(not nazwa_strony_glownej_dla_dzieci_ze_zmiennej)and nazwa_strony_glownej_wikijuniora or nazwa_strony_glownej_dla_dzieci_ze_zmiennej; if(nazwa_strony_glownej_dla_dzieci_uzyskana)then if(pudelko_modul.CzyNiepoprawnaNazwa(nazwa_strony_glownej_dla_dzieci_uzyskana))then return "(błąd nazwy strony głównej dla dzieci)";end; nazwa_strony_glownej_dla_dzieci_uzyskana=nazwy_modul["PEŁNANAZWASTRONY"]{[1]=nazwa_strony_glownej_dla_dzieci_uzyskana,["kod języka"]=kod_jezyka,["kod projektu"]=kod_projektu,}; if(pelna_nazwa_strony==nazwa_strony_glownej_dla_dzieci_uzyskana)then return "strona główna dla dzieci";end; end; end; local nazwa_strony_glownej_projektu_ze_zmiennej=p.Nazwa_strony_bazowej_projektu_ze_zmiennej(frame,liczba_numer_jednostki,kod_jezyka,kod_projektu); if(nazwa_strony_glownej_projektu_ze_zmiennej=="")then return "(błąd nazwy strony głównej projektu)";end; local nazwa_strony_glownej_projektu_z_wikidanych=p.Nazwa_strony_bazowej_projektu_z_wikidanych(kod_jezyka,kod_projektu); local nazwa_strony_glownej_projektu_uzyskana=(not nazwa_strony_glownej_projektu_ze_zmiennej)and nazwa_strony_glownej_projektu_z_wikidanych or nazwa_strony_glownej_projektu_ze_zmiennej; if(nazwa_strony_glownej_projektu_uzyskana)then if(pudelko_modul.CzyNiepoprawnaNazwa(nazwa_strony_glownej_projektu_uzyskana))then return "(błąd nazwy strony głównej projektu)";end; nazwa_strony_glownej_projektu_uzyskana=nazwy_modul["PEŁNANAZWASTRONY"]{[1]=nazwa_strony_glownej_projektu_uzyskana,["kod języka"]=kod_jezyka,["kod projektu"]=kod_projektu,}; if(pelna_nazwa_strony==nazwa_strony_glownej_projektu_uzyskana)then return "strona główna projektu";end; end; if(norm_przed_lub_dyskusji=="")then local parametry_modul=require("Module:Parametry"); if(parametry_modul.CzyTak(frame.args["obsługiwane jednostki jako nieopisowe strony"]))then return "artykuł"; else local it=mw.ustring.match(nazwa_jednostki,"^[^/]+$"); if(it)then return "podręcznik";else return "artykuł";end; end; elseif(norm_przed_lub_dyskusji=="Wikijunior")then local parametry_modul=require("Module:Parametry"); if(parametry_modul.CzyTak(frame.args["obsługiwane jednostki jako nieopisowe strony"]))then return "artykuł dla dzieci"; else local it=mw.ustring.match(nazwa_jednostki,"^[^/]+$"); if(it)then return "podręcznik dla dzieci";else return "artykuł dla dzieci";end; end; elseif(norm_przed_lub_dyskusji=="User")then local parametry_modul=require("Module:Parametry"); if(parametry_modul.CzyTak(frame.args["obsługiwane jednostki użytkownika jako normalne strony"]))then return "strona użytkownika"; else local czy_podstrony=mw.ustring.match(nazwa_jednostki,"^[^/]+$") if(czy_podstrony)then return "strona główna użytkownika"; else if(not parametry_modul.CzyTak(frame.args["obsługiwane jednostki jako nieopisowe strony"]))then if(parametry_modul.CzyTak(frame.args["obsługiwane jednostki użytkownika"]))then local czy_ksiazka=mw.ustring.match(nazwa_jednostki,"^[^/]+/[^/]*$"); if(czy_ksiazka)then return "podręcznik użytkownika"; else return "artykuł użytkownika"; end; else return "jednostka użytkownika"; end; else return "strona użytkownika"; end; end; end; elseif(norm_przed_lub_dyskusji=="File")then return "strona pliku"; elseif(norm_przed_lub_dyskusji=="Category")then return "strona kategorii"; elseif(norm_przed_lub_dyskusji=="Project")then local parametry_modul=require("Module:Parametry"); if(parametry_modul.CzyTak(frame.args["obsługiwane brudnopisy jako normalne strony"]))then return "strona projektu";end; if(mw.ustring.match(nazwa_jednostki,"^%s*[Bb]rudnopis/[^/]*/.*"))then if(not parametry_modul.CzyTak(frame.args["obsługiwane jednostki jako nieopisowe strony"]))then if(parametry_modul.CzyTak(frame.args["obsługiwane jednostki brudnopisu projektu"]))then local czy_ksiazka=mw.ustring.match(nazwa_jednostki,"^%s*[Bb]rudnopis/[^/]*/[^/]*$"); if(czy_ksiazka)then return "podręcznik brudnopisu projektu"; else return "artykuł brudnopisu projektu"; end; else return "jednostka brudnopisu projektu"; end; else return "strona brudnopisu projektu"; end; else return "strona projektu"; end; elseif(norm_przed_lub_dyskusji=="Help")then return "strona pomocy"; elseif(norm_przed_lub_dyskusji=="MediaWiki")then return "strona komunikatu"; elseif(norm_przed_lub_dyskusji=="Special")then return "strona specialna"; elseif(norm_przed_lub_dyskusji=="Gadget")then return "strona gadżetu"; elseif(nazwa_przestrzeni_nazw=="Template")then local parametry_modul=require("Module:Parametry"); if(parametry_modul.CzyTak(frame.args["obsługiwane strony jako niebrudnopisowe jednostki programowe"]))then return "strona szablonu";end; local function CzySzablonAlboOpis(nazwa_przestrzeni_nazw,nazwa_jednostki,szablon,opis_szablonu,strona_szablonu,prefix) local parametry_modul=require("Module:Parametry"); if(parametry_modul.CzyTak(frame.args["obsługiwane opisy jako strony jednostek programowych"]) or parametry_modul.CzyTak(frame.args["obsługiwane jednostki jako nieopisowe strony"]))then return szablon; else if(mw.ustring.match(nazwa_jednostki,"^"..prefix..".*/opis$"))then return opis_szablonu; else if(not parametry_modul.CzyTak(frame.args["obsługiwane nieudokumentowane szablony jako szablony"]))then local czy_brudnopis=mw.ustring.match(nazwa_jednostki,"^"..prefix..".*$"); if(czy_brudnopis)then local pagename=(nazwa_przestrzeni_nazw~="")and nazwa_przestrzeni_nazw..":"..nazwa_jednostki or nazwa_jednostki; local czy_istnieje_strona,tab=require("Module:Techniczne").PoliczZbiory(pagename); if(czy_istnieje_strona==1)then local czy_brudnopis_opisu_szablonu=require("Module:Łatki").contentMatch{ [1]='<noinclude>.-{{%s*[Dd]okumentacja%s*}}.-</noinclude>', [2]='<noinclude>.-{{%s*[Dd]okumentacja%s*|.-</noinclude>',pagename=pagename,namespace=0 }; if(not czy_brudnopis_opisu_szablonu)then return opis_szablonu;else return szablon;end; else return szablon; end; else return strona_szablonu; end; else return szablon; end; end; end; end; if((not parametry_modul.CzyTak(frame.args["obsługiwane brudnopisy jako normalne strony"]))and(mw.ustring.match(nazwa_jednostki,"^%s*[Bb]rudnopis/[^/]*/.*")))then return CzySzablonAlboOpis(nazwa_przestrzeni_nazw,nazwa_jednostki,"strona brudnopisu szablonu","strona brudnopisu opisu szablonu","strona szablonu","[Bb]rudnopis/[^/]*/"); else return CzySzablonAlboOpis(nazwa_przestrzeni_nazw,nazwa_jednostki,"strona szablonu","strona opisu szablonu","strona szablonu",""); end; elseif(nazwa_przestrzeni_nazw=="Module")then local parametry_modul=require("Module:Parametry"); if(parametry_modul.CzyTak(frame.args["obsługiwane strony jako niebrudnopisowe jednostki programowe"]))then return "strona modułu";end; if((not parametry_modul.CzyTak(frame.args["obsługiwane brudnopisy jako normalne strony"]))and(mw.ustring.match(nazwa_jednostki,"^%s*[Bb]rudnopis/[^/]*/.*")))then if(parametry_modul.CzyTak(frame.args["obsługiwane opisy jako strony jednostek programowych"]) or parametry_modul.CzyTak(frame.args["obsługiwane jednostki jako nieopisowe strony"]))then return "strona brudnopisu modułu" else local pelna_nazwa_strony=(nazwa_przestrzeni_nazw~="")and nazwa_przestrzeni_nazw..":"..nazwa_jednostki or nazwa_jednostki; pelna_nazwa_strony=require("Module:Nazwy")["PEŁNANAZWASTRONY"]{[1]=pelna_nazwa_strony,["kod języka"]=kod_jezyka,["kod projektu"]=kod_projektu,}; local pelna_nazwa_strony_brudnopisu_opisu_modulu=require("Module:Techniczne")["PełnaNazwaOpisuModułu"](pelna_nazwa_strony); if(pelna_nazwa_strony==pelna_nazwa_strony_brudnopisu_opisu_modulu)then return "strona brudnopisu opisu modułu"; else return "strona brudnopisu modułu"; end; end; else if(parametry_modul.CzyTak(frame.args["obsługiwane opisy jako strony jednostek programowych"]) or parametry_modul.CzyTak(frame.args["obsługiwane jednostki jako nieopisowe strony"]))then return "strona modułu" else local pelna_nazwa_strony=(nazwa_przestrzeni_nazw~="")and nazwa_przestrzeni_nazw..":"..nazwa_jednostki or nazwa_jednostki; pelna_nazwa_strony=require("Module:Nazwy")["PEŁNANAZWASTRONY"]{[1]=pelna_nazwa_strony,["kod języka"]=kod_jezyka,["kod projektu"]=kod_projektu,}; local pelna_nazwa_opisu_modulu=require("Module:Techniczne")["PełnaNazwaOpisuModułu"](pelna_nazwa_strony); if(pelna_nazwa_strony==pelna_nazwa_opisu_modulu)then return "strona opisu modułu"; else return "strona modułu"; end; end; end; else return "inne"; end; end; return "inne"; end; local typ_jednostki=Typ_jednostki(); local function TempFunc(typ_jednostki) if( (kod_liczbowy_przestrzeni_nazw==2) or((kod_liczbowy_przestrzeni_nazw==0)and(p.Czy_dyskusja_typu_jednostki_z_frame_od_dyskusja_typu_jednostki(frame,i))) )then typ_jednostki,ile=mw.ustring.gsub(typ_jednostki,"^(%S+)(%s+)",function(strona,spacja) return strona.." dyskusji"..spacja; end); return typ_jednostki; end; return typ_jednostki; end; if(((analiza)or(nazwa_jednostki_podana))and(typ)and(typ~=""))then if(typ_jednostki==typ)then return TempFunc(typ_jednostki); elseif(nazwa_jednostki_podana)then return "(błąd parametrów pudełkowych)" else return "(błąd typu jednostki)"; end; end; return TempFunc(typ_jednostki); end; function p.Uzyskanie_nazw_jednostki(frame,kod_liczbowy_przestrzeni_nazw,i,numer_argorytmu,co_ma_liczyc) local nazwa_przestrzeni_fun,nazwa_jednostki_fun; if(kod_liczbowy_przestrzeni_nazw==0)then nazwa_przestrzeni_fun="Nazwa przestrzeni nazw"; nazwa_jednostki_fun="Nazwa jednostki"; elseif(kod_liczbowy_przestrzeni_nazw==1)then nazwa_przestrzeni_fun="Nazwa przedmiotowej przestrzeni nazw"; nazwa_jednostki_fun="Nazwa przedmiotowa jednostki"; elseif(kod_liczbowy_przestrzeni_nazw==2)then nazwa_przestrzeni_fun="Nazwa przestrzeni nazw dyskusji" nazwa_jednostki_fun="Nazwa dyskusji jednostki"; else nazwa_przestrzeni_fun="Nazwa przestrzeni nazw"; nazwa_jednostki_fun="Nazwa jednostki"; end; local pudelko_modul=require("Module:Pudełko"); if(not numer_argorytmu)then if((not i)or(i==0))then if((not co_ma_liczyc)or(co_ma_liczyc==0))then local nazwa_przestrzeni_nazw=pudelko_modul[nazwa_przestrzeni_fun](frame,false); local nazwa_jednostki=pudelko_modul["Nazwa jednostki"](frame); return nazwa_przestrzeni_nazw,nazwa_jednostki; elseif(co_ma_liczyc==1)then local nazwa_przestrzeni_nazw=pudelko_modul[nazwa_przestrzeni_fun](frame,false); return nazwa_przestrzeni_nazw; elseif(co_ma_liczyc==2)then return pudelko_modul["Nazwa jednostki"](frame); end; else if((not co_ma_liczyc)or(co_ma_liczyc==0))then local n=p.Nazwa_przestrzeni_nazw_dodatkowe(frame,i); local nazwa_przestrzeni_nazw=(n)and pudelko_modul[nazwa_przestrzeni_fun](frame,false,i) or pudelko_modul[nazwa_przestrzeni_fun.." 2"](frame,false,i); local nazwa_jednostki=(n)and pudelko_modul["Nazwa jednostki"](frame,i) or pudelko_modul[nazwa_jednostki_fun.." 2"](frame,i); return nazwa_przestrzeni_nazw,nazwa_jednostki; elseif(co_ma_liczyc==1)then local n=p.Nazwa_przestrzeni_nazw_dodatkowe(frame,i); local nazwa_przestrzeni_nazw=(n)and pudelko_modul[nazwa_przestrzeni_fun](frame,false,i) or pudelko_modul[nazwa_przestrzeni_fun.." 2"](frame,false,i); return nazwa_przestrzeni_nazw; elseif(co_ma_liczyc==2)then local n=p.Nazwa_przestrzeni_nazw_dodatkowe(frame,i); return (n)and pudelko_modul["Nazwa jednostki"](frame,i) or pudelko_modul[nazwa_jednostki_fun.." 2"](frame,i); end; end; else if(numer_argorytmu==0)then if((not co_ma_liczyc)or(co_ma_liczyc==0))then local nazwa_przestrzeni_nazw=pudelko_modul[nazwa_przestrzeni_fun](frame,false,i); local nazwa_jednostki=pudelko_modul["Nazwa jednostki"](frame,i); return nazwa_przestrzeni_nazw,nazwa_jednostki; elseif(co_ma_liczyc==1)then local nazwa_przestrzeni_nazw=pudelko_modul[nazwa_przestrzeni_fun](frame,false,i); return nazwa_przestrzeni_nazw; elseif(co_ma_liczyc==2)then return pudelko_modul["Nazwa jednostki"](frame,i); end; else if((not co_ma_liczyc)or(co_ma_liczyc==0))then local nazwa_przestrzeni_nazw=pudelko_modul[nazwa_przestrzeni_fun.." 2"](frame,false,i); local nazwa_jednostki=pudelko_modul[nazwa_jednostki_fun.." 2"](frame,i); return nazwa_przestrzeni_nazw,nazwa_jednostki; elseif(co_ma_liczyc==1)then local nazwa_przestrzeni_nazw=pudelko_modul[nazwa_przestrzeni_fun.." 2"](frame,false,i); return nazwa_przestrzeni_nazw; elseif(co_ma_liczyc==2)then return pudelko_modul[nazwa_jednostki_fun.." 2"](frame,i); end; end; end; end; function p.Nazwa_przestrzeni_nazw_dodatkowe(frame,numer_jednostki) local pf=frame.getParent and frame:getParent() or {args={}}; return frame.args["nazwa przestrzeni nazw "..tostring(numer_jednostki)] or pf.args["nazwa przestrzeni nazw "..tostring(numer_jednostki)] end; function p.Nazwa_jednostki(frame,i) local pf=frame.getParent and frame:getParent() or {args={}}; local nazwa_jednostki,liczba_numer_jednostki=p.Nazwy_przestrzeni_i_jednostki_podane_o_pewnym_numerze(frame,i,2); local kod_jezyka,kod_projektu=p.Wikikody_kontenera(frame,liczba_numer_jednostki); if(nazwa_jednostki)then nazwa_jednostki=mw.text.trim(nazwa_jednostki); nazwa_jednostki=mw.ustring.gsub(nazwa_jednostki,"^:",""); nazwa_jednostki=mw.ustring.gsub(nazwa_jednostki,"^([^#]*)#(.*)$","%1"); local parametry=mw.ustring.match(nazwa_jednostki,"^.*%?([^%?]+)$"); if(parametry and mw.ustring.match(parametry,"[^=]+=[^=]*"))then nazwa_jednostki=mw.ustring.gsub(nazwa_jednostki,"^(.*)%?([^%?]+)$","%1"); end; else local nazwy_modul=require("Module:Nazwy"); nazwa_jednostki=nazwy_modul["NAZWASTRONY"]{["kod języka"]=kod_jezyka,["kod projektu"]=kod_projektu,}; end; local parametry_modul=require("Module:Parametry"); nazwa_jednostki=parametry_modul["Odstępy"]{[1]=nazwa_jednostki,[2]="tak",}; return mw.getContentLanguage():ucfirst(nazwa_jednostki); end; function p.Nazwy_przestrzeni_i_jednostki_podane_o_pewnym_numerze(frame,i,co_podac) local pf=frame.getParent and frame:getParent() or {args={}}; local numer_jednostki=i or frame.args["numer jednostki"]; local liczba_numer_jednostki=tonumber(numer_jednostki) or 0; local nazwa_jednostki; local bool_numer_jednostki=(liczba_numer_jednostki~=0); local function Nazwa_jednostki() if bool_numer_jednostki then nazwa_jednostki=frame.args["nazwa jednostki "..liczba_numer_jednostki] or ((liczba_numer_jednostki==1)and(pf.args["cel"])) or pf.args[liczba_numer_jednostki]; else nazwa_jednostki=frame.args["nazwa jednostki"] or pf.args["nazwa jednostki"]; end; return nazwa_jednostki; end; local function Nazwa_przestrzeni_nazw() local nazwa_przestrzeni_nazw=bool_numer_jednostki and (frame.args["nazwa przestrzeni nazw i"] or pf.args["nazwa przestrzeni nazw i"] or frame.args["nazwa przestrzeni nazw "..liczba_numer_jednostki] or pf.args["nazwa przestrzeni nazw "..liczba_numer_jednostki]) or frame.args["nazwa przestrzeni nazw"] or pf.args["nazwa przestrzeni nazw"]; return nazwa_przestrzeni_nazw; end; if(not co_podac)then return Nazwa_przestrzeni_nazw(),Nazwa_jednostki(),liczba_numer_jednostki; elseif(co_podac==1)then return Nazwa_przestrzeni_nazw(),liczba_numer_jednostki; elseif(co_podac==2)then return Nazwa_jednostki(),liczba_numer_jednostki; else return Nazwa_przestrzeni_nazw(),Nazwa_jednostki(),liczba_numer_jednostki; end; end; function p.Jaka_nazwa_jednostki(frame,i,jaka) local nazwa_przestrzeni_nazw,nazwa_jednostki,liczba_numer_jednostki=p.Nazwy_przestrzeni_i_jednostki_podane_o_pewnym_numerze(frame,i); nazwa_przestrzeni_nazw=nazwa_przestrzeni_nazw or p.Nazwa_przestrzeni_nazw_uzyskana_z_typu_jednostki_z_frame(frame,liczba_numer_jednostki); ---- local nazwy_modul=require("Module:Nazwy"); nazwa_przestrzeni_nazw=nazwa_przestrzeni_nazw and mw.text.trim(nazwa_przestrzeni_nazw) or nazwy_modul["NAZWAPRZESTRZENI"](); if(nazwa_jednostki)then local html_modul=require("Module:Html"); nazwa_jednostki=html_modul["NazwaStronyAdresu"](nazwa_jednostki,true); else nazwa_jednostki=nazwy_modul["NAZWASTRONY"](); end; local kod_jezyka,kod_projektu=p.Wikikody_kontenera(frame,liczba_numer_jednostki); local wiki_modul=require("Module:Wiki"); local czy_biezaca=wiki_modul["CzyBieżącaWiki"]{["kod języka"]=kod_jezyka,["kod projektu"]=kod_projektu,}; if(jaka)then if(czy_biezaca)then local tab_parametry={nazwa=nazwa_przestrzeni_nazw,}; if(jaka=="przedmiotowa")then tab_parametry["przedmiotowa"]="tak";end; nazwa_przestrzeni_nazw=nazwy_modul.Np(tab_parametry); else local tab_parametry={nazwa=nazwa_przestrzeni_nazw,["kod języka"]=kod_jezyka,["kod projektu"]=kod_projektu,}; if(jaka=="przedmiotowa")then tab_parametry["przedmiotowa"]="tak";end; nazwa_przestrzeni_nazw=nazwy_modul.NpDane(tab_parametry); end; else if(czy_biezaca)then nazwa_przestrzeni_nazw=nazwy_modul.Np{nazwa=nazwa_przestrzeni_nazw}; else nazwa_przestrzeni_nazw=nazwy_modul.NpDane{nazwa=nazwa_przestrzeni_nazw,["kod języka"]=kod_jezyka,["kod projektu"]=kod_projektu,}; end; end; if(not mw.ustring.match(nazwa_jednostki,"^:"))then if(nazwa_przestrzeni_nazw~="")then if((not typ)or(typ=="przedmiotowa"))then if(czy_biezaca)then local nazwy_np_modul=mw.loadData("Module:Nazwy/Np"); if(nazwa_przestrzeni_nazw==nazwy_np_modul.Template)then local nazwa_przestrzeni_nazw_d=nazwy_modul["NAZWAPRZESTRZENI"](nazwa_jednostki); if(nazwa_przestrzeni_nazw_d==nazwy_np_modul.Template)then return nazwy_modul["NAZWASTRONY"](nazwa_jednostki); end; elseif(nazwa_przestrzeni_nazw==nazwy_np_modul.Module)then local nazwa_przestrzeni_nazw_d=nazwy_modul["NAZWAPRZESTRZENI"](nazwa_jednostki); if(nazwa_przestrzeni_nazw_d==nazwy_np_modul.Module)then return nazwy_modul["NAZWASTRONY"](nazwa_jednostki); end; end; else local template_prze=nazwy_modul.NpDane{nazwa="Template",["kod języka"]=kod_jezyka,["kod projektu"]=kod_projektu,}; local module_prze=nazwy_modul.NpDane{nazwa="Module",["kod języka"]=kod_jezyka,["kod projektu"]=kod_projektu,}; if(nazwa_przestrzeni_nazw==template_prze)then local nazwa_przestrzeni_nazw_d=nazwy_modul["NAZWAPRZESTRZENI"]{[1]=nazwa_jednostki,["kod języka"]=kod_jezyka,["kod projektu"]=kod_projektu,}; if(nazwa_przestrzeni_nazw_d==template_prze)then return nazwy_modul["NAZWASTRONY"]{[1]=nazwa_jednostki,["kod języka"]=kod_jezyka,["kod projektu"]=kod_projektu,}; end; elseif(nazwa_przestrzeni_nazw==module_prze)then local nazwa_przestrzeni_nazw_d=nazwy_modul["NAZWAPRZESTRZENI"]{[1]=nazwa_jednostki,["kod języka"]=kod_jezyka,["kod projektu"]=kod_projektu,}; if(nazwa_przestrzeni_nazw_d==module_prze)then return nazwy_modul["NAZWASTRONY"]{[1]=nazwa_jednostki,["kod języka"]=kod_jezyka,["kod projektu"]=kod_projektu,}; end; end; end; end; local parametry_modul=require("Module:Parametry"); nazwa_jednostki=parametry_modul["Odstępy"]{[1]=nazwa_jednostki,[2]="tak",}; return mw.getContentLanguage():ucfirst(nazwa_jednostki); else return nazwy_modul["NAZWASTRONY"]{[1]=nazwa_jednostki,["kod języka"]=kod_jezyka,["kod projektu"]=kod_projektu,}; end; else return nazwy_modul["NAZWASTRONY"]{[1]=nazwa_jednostki,["kod języka"]=kod_jezyka,["kod projektu"]=kod_projektu,}; end; end; function p.Czy_przestrzen_nazw_jest_obslugiwana(frame,jakas_przestrzen_nazw,kod_jezyka,kod_projektu) local nazwy_modul=require("Module:Nazwy"); local parametry_modul=require("Module:Parametry"); local wiki_modul=require("Module:Wiki"); local czy_biezaca=wiki_modul["CzyBieżącaWiki"]{["kod języka"]=kod_jezyka,["kod projektu"]=kod_projektu,}; if(czy_biezaca)then jakas_przestrzen_nazw=nazwy_modul.Np{nazwa=jakas_przestrzen_nazw}; else jakas_przestrzen_nazw=nazwy_modul.NpDane{nazwa=jakas_przestrzen_nazw,["kod języka"]=kod_jezyka,["kod projektu"]=kod_projektu,}; end; local function nazwa_przestrzeni_nazw_fun(nazwa_przestrzeni_nazw_iter) if(czy_biezaca)then nazwa_przestrzeni_nazw_iter=nazwy_modul.Np{nazwa=nazwa_przestrzeni_nazw_iter}; else nazwa_przestrzeni_nazw_iter=nazwy_modul.NpDane{nazwa=nazwa_przestrzeni_nazw_iter,["kod języka"]=kod_jezyka,["kod projektu"]=kod_projektu,}; end; if(jakas_przestrzen_nazw==nazwa_przestrzeni_nazw_iter)then return true; end; return false; end; for licznik,nazwa_przestrzeni_nazw in pairs(frame.args)do if(type(licznik)=="number")then local nazwa_przestrzeni_nazw_element,klucze_element=mw.ustring.match(nazwa_przestrzeni_nazw,"^%s*([%w%s]*)%s*:%s*(.-)%s*"); if(nazwa_przestrzeni_nazw_element and klucze_element)then local tab_klucze=mw.text.split(klucze_element,"%s*,%s*",false); local wiki_modul=require("Module:Wiki"); for _,klucz_element in ipairs(tab_klucze)do local kod_jezyka_obslugiwane,kod_projektu_obslugiwane=wiki_modul.KluczProjektu(klucz_element); if(kod_jezyka_obslugiwane==kod_jezyka and kod_projektu_obslugiwane==kod_projektu)then local wynik=nazwa_przestrzeni_nazw_fun(nazwa_przestrzeni_nazw_element); if(wynik)then return true;end; end; end; else local wynik=nazwa_przestrzeni_nazw_fun(nazwa_przestrzeni_nazw); if(wynik)then return true;end; end; end; end; return false; end; function p.Analiza_interwiki_czy_projekt_aktualny(frame,czy_jezyk,czy_projekt) local parametry_modul=require("Module:Parametry"); local p=parametry_modul.PobierzFrameEwentualnieParent(frame); local pudelko_modul=require("Module:Pudełko"); local wiki_modul=require("Module:Wiki"); local jezyk_biezacy=czy_jezyk and pudelko_modul["Kod języka tego projektu"](); local projekt_biezacy=czy_projekt and pudelko_modul["Kod projektu tego projektu"](); for i,_ in pairs(p.args)do if(type(i)=="number")then local klucz_projektu=pudelko_modul["Klucz projektu"](frame,i); local kod_jezyka=pudelko_modul["Kod języka"](frame,i); local kod_projektu=pudelko_modul["kod projektu"](frame,i); local jezyk,projekt=wiki_modul.KodyWiki(klucz_projektu,kod_jezyka,kod_projektu); if((czy_jezyk and (jezyk~=jezyk_biezacy))or(czy_projekt and(projekt~=projekt_biezacy)))then return "tak"; end; end; end; return; end; return p; 9wjkk3i91l5gs0ofbat4iv97up3stwb 540403 540401 2026-04-23T16:39:10Z Persino 2851 540403 Scribunto text/plain local p={}; function p.Nazwa_strony_bazowej_projektu_z_wikidanych(kod_jezyka,kod_projektu) local strona=require("Module:Pudełko")["Strona główna tego projektu"](); local odpowiednik_strony=require("Module:Wiki").WikidaneOdpowiednikStrony{["nazwa strony"]=strona,["kod języka"]=kod_jezyka,["kod projektu"]=kod_projektu}; if(odpowiednik_strony)then local nazwy_modul=require("Module:Nazwy"); return nazwy_modul["PEŁNANAZWASTRONY"]{[1]=odpowiednik_strony,["kod języka"]=kod_jezyka,["kod projektu"]=kod_projektu,}; else local pudelko_modul=require("Module:Pudełko"); if((kod_jezyka==pudelko_modul["Kod języka tego projektu"]())and(kod_projektu==pudelko_modul["Kod projektu tego projektu"]()))then return strona; else local wiki_interwiki_modul=mw.loadData("Module:Wiki/interwiki"); local czy_w_wikidanych=wiki_interwiki_modul.tablica_kody_projektu_wikidane.lingwistyczne[kod_projektu] or wiki_interwiki_modul.tablica_kody_projektu_wikidane.specjalistyczne[kod_projektu]; return czy_w_wikidanych and "Main Page" or nil; end; end; end; function p.Nazwa_strony_bazowej_dla_dzieci_z_wikidanych(kod_jezyka) local strona=require("Module:Pudełko")["Strona główna dla dzieci tego projektu"](); local pudelko_modul=require("Module:Pudełko"); local kod_jezyka_tego_projektu=pudelko_modul["Kod języka tego projektu"](); if(kod_jezyka==kod_jezyka_tego_projektu)then return strona;end; local kod_projektu_tego_projektu=pudelko_modul["Kod projektu tego projektu"](); local odpowiednik_strony=require("Module:Wiki").WikidaneOdpowiednikStrony{["nazwa strony"]=strona,["kod języka"]=kod_jezyka,["kod projektu"]=kod_projektu_tego_projektu}; if(odpowiednik_strony)then local nazwy_modul=require("Module:Nazwy"); return nazwy_modul["PEŁNANAZWASTRONY"]{[1]=odpowiednik_strony,["kod języka"]=kod_jezyka,["kod projektu"]=kod_projektu_tego_projektu,}; else return "Wikijunior"; end; end; function p.Nazwa_strony_bazowej_projektu_ze_zmiennej(frame,i,kod_jezyka,kod_projektu) local pf=frame.getParent and frame:getParent() or {args={}}; local strona_glowna_projektu; if(i~=0)then local pudelko_modul=require("Module:Pudełko"); local kod_jezyka_tego_projektu=pudelko_modul["Kod języka tego projektu"](); local kod_projektu_tego_projektu=pudelko_modul["Kod projektu tego projektu"](); if(kod_jezyka==kod_jezyka_tego_projektu)and(kod_projektu==kod_projektu_tego_projektu)then strona_glowna_projektu=frame.args["strona główna projektu"] or pf.args["strona główna projektu"] else strona_glowna_projektu=(frame.args["strona główna projektu "..i] or pf.args["strona główna projektu "..i]) end; else strona_glowna_projektu=frame.args["strona główna projektu"] or pf.args["strona główna projektu"] end; local parametry_modul=require("Module:Parametry"); return (parametry_modul.CzyTak(strona_glowna_projektu))and require("Module:Nazwy")["PEŁNANAZWASTRONY"]{[1]=strona_glowna_projektu,["kod języka"]=kod_jezyka,["kod projektu"]=kod_projektu,} or (strona_glowna_projektu and "" or nil); end; function p.Nazwa_strony_bazowej_dla_dzieci_ze_zmiennej(frame,i,kod_jezyka) local pf=frame.getParent and frame:getParent() or {args={}}; local pudelko_modul=require("Module:Pudełko"); local strona_glowna_dla_dzieci; if(i~=0)then local kod_jezyka_tego_projektu=pudelko_modul["Kod języka tego projektu"](); if(kod_jezyka==kod_jezyka_tego_projektu)then strona_glowna_dla_dzieci=frame.args["strona główna dla dzieci"] or pf.args["strona główna dla dzieci"] else strona_glowna_dla_dzieci=(frame.args["strona główna dla dzieci "..i] or pf.args["strona główna dla dzieci "..i]) end; else strona_glowna_dla_dzieci=frame.args["strona główna dla dzieci"] or pf.args["strona główna dla dzieci"] end; local kod_projektu_tego_projektu=pudelko_modul["Kod projektu tego projektu"](); local parametry_modul=require("Module:Parametry"); return (parametry_modul.CzyTak(strona_glowna_dla_dzieci))and require("Module:Nazwy")["PEŁNANAZWASTRONY"]{[1]=strona_glowna_dla_dzieci,["kod języka"]=kod_jezyka,["kod projektu"]=kod_projektu_tego_projektu,} or (strona_glowna_dla_dzieci and "" or nil); end; function p.Normalna_przedmiotowa_lub_dyskusji_nazwa_przestrzeni_nazw(nazwa_przestrzeni_nazw, normmalna_przedmiotwa_dyskusji,kod_jezyka,kod_projektu) local nazwa_przestrzeni_nazw_blad; local wiki_modul=require("Module:Wiki"); local nazwy_modul=require("Module:Nazwy"); local czy_biezaca=wiki_modul["CzyBieżącaWiki"]{["kod języka"]=kod_jezyka,["kod projektu"]=kod_projektu,}; if(normmalna_przedmiotwa_dyskusji==0)then if(czy_biezaca)then nazwa_przestrzeni_nazw_blad=nazwy_modul.Np{nazwa=nazwa_przestrzeni_nazw,["kanoniczna"]="tak",["nazwij projektem"]="tak",["nazwij dyskusją projektu"]="tak",["istnieje"]="tak",["wynik błędu nietekstowy"]="tak",}; else nazwa_przestrzeni_nazw_blad=nazwy_modul.NpDane{nazwa=nazwa_przestrzeni_nazw,["kanoniczna"]="tak",["nazwij projektem"]="tak",["nazwij dyskusją projektu"]="tak",["kod języka"]=kod_jezyka,["kod projektu"]=kod_projektu,["istnieje"]="tak",["wynik błędu nietekstowy"]="tak",}; end; elseif(normmalna_przedmiotwa_dyskusji==1)then if(czy_biezaca)then nazwa_przestrzeni_nazw_blad=nazwy_modul.Np{nazwa=nazwa_przestrzeni_nazw, przedmiotowa="tak",["kanoniczna"]="tak",["nazwij projektem"]="tak",["nazwij dyskusją projektu"]="tak",["istnieje"]="tak",["wynik błędu nietekstowy"]="tak",}; else nazwa_przestrzeni_nazw_blad=nazwy_modul.NpDane{nazwa=nazwa_przestrzeni_nazw, przedmiotowa="tak",["kanoniczna"]="tak",["nazwij projektem"]="tak",["nazwij dyskusją projektu"]="tak",["kod języka"]=kod_jezyka,["kod projektu"]=kod_projektu,["istnieje"]="tak",["wynik błędu nietekstowy"]="tak",}; end; elseif(normmalna_przedmiotwa_dyskusji==2)then if(czy_biezaca)then nazwa_przestrzeni_nazw_blad=nazwy_modul.Np{nazwa=nazwa_przestrzeni_nazw, dyskusja="tak",["kanoniczna"]="tak",["nazwij projektem"]="tak",["nazwij dyskusją projektu"]="tak",["istnieje"]="tak",["wynik błędu nietekstowy"]="tak",}; else nazwa_przestrzeni_nazw_blad=nazwy_modul.NpDane{nazwa=nazwa_przestrzeni_nazw, dyskusja="tak",["kanoniczna"]="tak",["nazwij projektem"]="tak",["nazwij dyskusją projektu"]="tak",["kod języka"]=kod_jezyka,["kod projektu"]=kod_projektu,["istnieje"]="tak",["wynik błędu nietekstowy"]="tak",}; end; else if(czy_biezaca)then nazwa_przestrzeni_nazw_blad=nazwy_modul.Np{nazwa=nazwa_przestrzeni_nazw,["kanoniczna"]="tak",["nazwij projektem"]="tak",["nazwij dyskusją projektu"]="tak",["istnieje"]="tak",["wynik błędu nietekstowy"]="tak",}; else nazwa_przestrzeni_nazw_blad=nazwy_modul.NpDane{nazwa=nazwa_przestrzeni_nazw,["kanoniczna"]="tak",["nazwij projektem"]="tak",["nazwij dyskusją projektu"]="tak",["kod języka"]=kod_jezyka,["kod projektu"]=kod_projektu,["istnieje"]="tak",["wynik błędu nietekstowy"]="tak",}; end; end; return nazwa_przestrzeni_nazw_blad end; function p.Nazwa_przestrzeni_nazw(frame,kod_liczbowy_przestrzeni_nazw,czy_uwzglednic_alternatywna_nazwe,numer_jednostki) local pf=frame.getParent and frame:getParent() or {args={}}; local nazwa_przestrzeni_nazw=p.Nazwy_przestrzeni_i_jednostki_podane_o_pewnym_numerze(frame,numer_jednostki,1) or p.Nazwa_przestrzeni_nazw_uzyskana_z_typu_jednostki_z_frame(frame,numer_jednostki); local nazwy_modul=require("Module:Nazwy"); local wiki_modul=require("Module:Wiki"); local kod_jezyka,kod_projektu=p.Wikikody_kontenera(frame,numer_jednostki); local czy_biezaca_wiki=wiki_modul["CzyBieżącaWiki"]{["kod języka"]=kod_jezyka,["kod projektu"]=kod_projektu,}; local czy_blad_nazwy_przestrzeni_nazw; local typ; if(kod_liczbowy_przestrzeni_nazw==1)then typ="przedmiotowa"; if(czy_biezaca_wiki)then czy_blad_nazwy_przestrzeni_nazw=(not nazwa_przestrzeni_nazw)and nazwy_modul["PRZEDMIOTOWAPRZESTRZEŃ"]() or nazwy_modul.Np{nazwa=nazwa_przestrzeni_nazw,przedmiotowa="tak",["istnieje"]="tak",["wynik błędu nietekstowy"]="tak",}; else czy_blad_nazwy_przestrzeni_nazw=(not nazwa_przestrzeni_nazw)and nazwy_modul["PRZEDMIOTOWAPRZESTRZEŃ"]{["kod języka"]=kod_jezyka,["kod projektu"]=kod_projektu,} or nazwy_modul.NpDane{nazwa=nazwa_przestrzeni_nazw,przedmiotowa="tak",["kod języka"]=kod_jezyka,["kod projektu"]=kod_projektu,["istnieje"]="tak",["wynik błędu nietekstowy"]="tak",}; end; elseif(kod_liczbowy_przestrzeni_nazw==2)then if(czy_biezaca_wiki)then typ="dyskusja"; czy_blad_nazwy_przestrzeni_nazw=(not nazwa_przestrzeni_nazw)and nazwy_modul["PRZESTRZEŃDYSKUSJI"]() or nazwy_modul.Np{nazwa=nazwa_przestrzeni_nazw,dyskusja="tak",["istnieje"]="tak",["wynik błędu nietekstowy"]="tak",}; else czy_blad_nazwy_przestrzeni_nazw=(not nazwa_przestrzeni_nazw)and nazwy_modul["PRZESTRZEŃDYSKUSJI"]{["kod języka"]=kod_jezyka,["kod projektu"]=kod_projektu,} or nazwy_modul.NpDane{nazwa=nazwa_przestrzeni_nazw,dyskusja="tak",["kod języka"]=kod_jezyka,["kod projektu"]=kod_projektu,["istnieje"]="tak",["wynik błędu nietekstowy"]="tak",}; end; else if(czy_biezaca_wiki)then czy_blad_nazwy_przestrzeni_nazw=(not nazwa_przestrzeni_nazw)and nazwy_modul["NAZWAPRZESTRZENI"]() or nazwy_modul.Np{nazwa=nazwa_przestrzeni_nazw,["istnieje"]="tak",["wynik błędu nietekstowy"]="tak",}; else czy_blad_nazwy_przestrzeni_nazw=(not nazwa_przestrzeni_nazw)and nazwy_modul["NAZWAPRZESTRZENI"]{["kod języka"]=kod_jezyka,["kod projektu"]=kod_projektu,} or nazwy_modul.NpDane{nazwa=nazwa_przestrzeni_nazw,["kod języka"]=kod_jezyka, ["kod projektu"]=kod_projektu,["istnieje"]="tak",["wynik błędu nietekstowy"]="tak",}; end; end; if(czy_blad_nazwy_przestrzeni_nazw)then return czy_blad_nazwy_przestrzeni_nazw; else if(((czy_uwzglednic_alternatywna_nazwe==nil)and true or czy_uwzglednic_alternatywna_nazwe) and frame.args[1])then local nazwa_przestrzeni_nazw_alternatywnej=mw.text.trim(frame.args[1]); if(mw.ustring.match(nazwa_przestrzeni_nazw_alternatywnej,"^[%w%s_]*$"))then local czy_blad_nazwa_przestrzeni_nazw_alternatywnej; if(czy_biezaca_wiki)then local tab_parametry={nazwa=nazwa_przestrzeni_nazw_alternatywnej,["istnieje"]="tak",["wynik błędu nietekstowy"]="tak",}; if(typ)then tab_parametry[typ]="tak";end; czy_blad_nazwa_przestrzeni_nazw_alternatywnej=nazwy_modul.Np(tab_parametry); else local tab_parametry={nazwa=nazwa_przestrzeni_nazw_alternatywnej,["kod języka"]=kod_jezyka,["kod projektu"]=kod_projektu,["istnieje"]="tak",["wynik błędu nietekstowy"]="tak",}; if(typ)then tab_parametry[typ]="tak";end; czy_blad_nazwa_przestrzeni_nazw_alternatywnej=nazwy_modul.NpDane(tab_parametry); end; return czy_blad_nazwa_przestrzeni_nazw_alternatywnej or "(błąd)"; else return "(błąd)"; end; else local parametry_modul=require("Module:Parametry"); nazwa_przestrzeni_nazw=parametry_modul["Odstępy"]{[1]=nazwa_przestrzeni_nazw,[2]="tak",}; if(mw.ustring.match(nazwa_przestrzeni_nazw,"^[%w%s_]*$"))then return nazwa_przestrzeni_nazw; else return "(błąd)"; end; end; end; end; function p.Nazwa_przestrzeni_nazw_2(frame,czy_uwzglednic_alternatywna_nazwe,i) local nazwa_przestrzeni_nazw,nazwa_jednostki,liczba_numer_jednostki=p.Nazwy_przestrzeni_i_jednostki_podane_o_pewnym_numerze(frame,i); nazwa_przestrzeni_nazw=nazwa_przestrzeni_nazw or p.Nazwa_przestrzeni_nazw_uzyskana_z_typu_jednostki_z_frame(frame,liczba_numer_jednostki); local nazwy_modul=require("Module:Nazwy"); local kod_jezyka,kod_projektu=p.Wikikody_kontenera(frame,liczba_numer_jednostki); local wiki_modul=require("Module:Wiki"); local czy_biezaca_wiki=wiki_modul["CzyBieżącaWiki"]{["kod języka"]=kod_jezyka,["kod projektu"]=kod_projektu,}; local nazwa_przestrzeni_nazw_blad; local parametry_modul=require("Module:Parametry"); if(czy_biezaca_wiki)then nazwa_przestrzeni_nazw=nazwa_przestrzeni_nazw and mw.text.trim(nazwa_przestrzeni_nazw) or nazwy_modul["NAZWAPRZESTRZENI"](); nazwa_przestrzeni_nazw_blad=require("Module:Nazwy").Np{nazwa=nazwa_przestrzeni_nazw,["istnieje"]="tak",["wynik błędu nietekstowy"]="tak",}; if(nazwa_jednostki)then nazwa_jednostki=parametry_modul["Odstępy"]{[1]=nazwa_jednostki,[2]="tak",}; nazwa_jednostki=mw.ustring.gsub(nazwa_jednostki,"^([^#]*)#(.*)$","%1"); local parametry=mw.ustring.match(nazwa_jednostki,"^.*%?([^%?]+)$"); if(parametry and mw.ustring.match(parametry,"[^=]+=[^=]*"))then nazwa_jednostki=mw.ustring.gsub(nazwa_jednostki,"^(.*)%?([^%?]+)$","%1"); end; else nazwa_jednostki=nazwy_modul["NAZWASTRONY"](); end; else nazwa_przestrzeni_nazw=nazwa_przestrzeni_nazw and mw.text.trim(nazwa_przestrzeni_nazw) or nazwy_modul["NAZWAPRZESTRZENI"]{["kod języka"]=kod_jezyka,["kod projektu"]=kod_projektu,}; nazwa_przestrzeni_nazw_blad=require("Module:Nazwy").NpDane{nazwa=nazwa_przestrzeni_nazw,["kod języka"]=kod_jezyka,["kod projektu"]=kod_projektu,["istnieje"]="tak",["wynik błędu nietekstowy"]="tak",}; if(nazwa_jednostki)then local html_modul=require("Module:Html"); nazwa_jednostki=html_modul["NazwaStronyAdresu"](nazwa_jednostki,true); else nazwa_jednostki=nazwy_modul["NAZWASTRONY"]{["kod języka"]=kod_jezyka,["kod projektu"]=kod_projektu,}; end; end; nazwa_przestrzeni_nazw=nazwa_przestrzeni_nazw_blad or nazwa_przestrzeni_nazw; if(not mw.ustring.match(nazwa_jednostki,"^:"))then if(nazwa_przestrzeni_nazw~="")then if(czy_biezaca_wiki)then local nazwy_np_modul=mw.loadData("Module:Nazwy/Np"); if(nazwa_przestrzeni_nazw==nazwy_np_modul.Template)then local nazwa_przestrzeni_nazw_d=require("Module:Nazwy")["NAZWAPRZESTRZENI"](nazwa_jednostki); if(nazwa_przestrzeni_nazw_d==nazwy_np_modul.Template)then nazwa_przestrzeni_nazw=nazwy_np_modul.Template; end; elseif(nazwa_przestrzeni_nazw==nazwy_np_modul.Module)then local nazwa_przestrzeni_nazw_d=require("Module:Nazwy")["NAZWAPRZESTRZENI"](nazwa_jednostki); if(nazwa_przestrzeni_nazw_d==nazwy_np_modul.Module)then nazwa_przestrzeni_nazw=nazwy_np_modul.Module; end; end; else local template_prze=nazwy_modul.NpDane{nazwa="Template",["kod języka"]=kod_jezyka,["kod projektu"]=kod_projektu,}; local module_prze=nazwy_modul.NpDane{nazwa="Module",["kod języka"]=kod_jezyka,["kod projektu"]=kod_projektu,}; if(nazwa_przestrzeni_nazw==template_prze)then local nazwa_przestrzeni_nazw_d=nazwy_modul["NAZWAPRZESTRZENI"]{[1]=nazwa_jednostki,["kod języka"]=kod_jezyka,["kod projektu"]=kod_projektu,}; if(nazwa_przestrzeni_nazw_d==template_prze)then nazwa_przestrzeni_nazw=template_prze; end; elseif(nazwa_przestrzeni_nazw==module_prze)then local nazwa_przestrzeni_nazw_d=nazwy_modul["NAZWAPRZESTRZENI"]{[1]=nazwa_jednostki,["kod języka"]=kod_jezyka,["kod projektu"]=kod_projektu,}; if(nazwa_przestrzeni_nazw_d==module_prze)then nazwa_przestrzeni_nazw=module_prze; end; end; end; if(not nazwa_przestrzeni_nazw_blad)then if(((czy_uwzglednic_alternatywna_nazwe==nil)and true or czy_uwzglednic_alternatywna_nazwe) and frame.args[1])then local wytrimowana_nazwa_przestrzeni_nazw=mw.text.trim(frame.args[1]); if(mw.ustring.match(wytrimowana_nazwa_przestrzeni_nazw,"^[%w%s_]*$"))then if(czy_biezaca_wiki)then local nazwy_modul=require("Module:Nazwy"); local czy_blad_nazwy_przestrzeni_nazw=nazwy_modul.Np{nazwa=wytrimowana_nazwa_przestrzeni_nazw,["istnieje"]="tak",["wynik błędu nietekstowy"]="tak",} return czy_blad_nazwy_przestrzeni_nazw or "(błąd)"; else local nazwy_modul=require("Module:Nazwy"); local nazwa_przestrzeni_nazw_blad2=nazwy_modul.NpDane{nazwa=wytrimowana_nazwa_przestrzeni_nazw,["kod języka"]=kod_jezyka,["kod projektu"]=kod_projektu,["istnieje"]="tak",["wynik błędu nietekstowy"]="tak",}; return nazwa_przestrzeni_nazw_blad2 or "(błąd)"; end; else return "(błąd)"; end; else local wytrimowana_nazwa_przestrzeni_nazw=mw.text.trim(nazwa_przestrzeni_nazw); if(mw.ustring.match(wytrimowana_nazwa_przestrzeni_nazw,"^[%w%s_]*$"))then return wytrimowana_nazwa_przestrzeni_nazw; else return "(błąd)"; end; end; else return nazwa_przestrzeni_nazw; end; else return require("Module:Nazwy")["NAZWAPRZESTRZENI"]{[1]=nazwa_jednostki,["kod języka"]=kod_jezyka,["kod projektu"]=kod_projektu,}; end; else return require("Module:Nazwy")["NAZWAPRZESTRZENI"]{[1]=nazwa_jednostki,["kod języka"]=kod_jezyka,["kod projektu"]=kod_projektu,}; end; end; function p.Nazwa_przestrzeni_nazw_przedmiotowa_dyskusji_2(frame,czy_uwzglednic_alternatywna_nazwe,i,typ) local numer_jednostki=i or frame.args["numer jednostki"]; local liczba_numer_jednostki=((numer_jednostki)and(tonumber(numer_jednostki))or 0); local pudelko_modul=require("Module:Pudełko"); local tab_nazwa={ ["przedmiotowa"]="Nazwa przedmiotowej przestrzeni nazw", ["dyskusja"]="Nazwa przestrzeni nazw", }; local nazwa_przestrzeni_nazw=pudelko_modul[tab_nazwa[typ]](frame,czy_uwzglednic_alternatywna_nazwe,liczba_numer_jednostki); local nazwy_modul=require("Module:Nazwy"); if(nazwa_przestrzeni_nazw=="")then local nazwa_jednostki=pudelko_modul["Nazwa jednostki"](frame,liczba_numer_jednostki); local kod_jezyka,kod_projektu=p.Wikikody_kontenera(frame,liczba_numer_jednostki); local tab_nazwa={ ["przedmiotowa"]="PRZEDMIOTOWAPRZESTRZEŃ", ["dyskusja"]="PRZESTRZEŃDYSKUSJI", }; nazwa_przestrzeni_nazw=nazwy_modul[tab_nazwa[typ]]{nazwa=nazwa_jednostki,["kod języka"]=kod_jezyka,["kod projektu"]=kod_projektu,}; else if(typ=="dyskusja")then local wiki_modul=require("Module:Wiki"); local czy_biezaca=wiki_modul["CzyBieżącaWiki"]{["kod języka"]=kod_jezyka,["kod projektu"]=kod_projektu,}; if(czy_biezaca)then nazwa_przestrzeni_nazw=nazwy_modul.Np{[typ]="tak",nazwa=nazwa_przestrzeni_nazw}; else nazwa_przestrzeni_nazw=nazwy_modul.NpDane{[typ]="tak",nazwa=nazwa_przestrzeni_nazw,["kod języka"]=kod_jezyka,["kod projektu"]=kod_projektu,}; end; end; end; return nazwa_przestrzeni_nazw; end; function p.Kod_jezyka(frame,i,wartosc_domyslna) local pudelko_modul=require("Module:Pudełko"); if(not i)then return pudelko_modul["Kod języka tego projektu"]();end; local pf=frame.getParent and frame:getParent() or {args={}}; if(i==0)then return pudelko_modul["Kod języka tego projektu"](); elseif(i==1)then local parametry_modul=require("Module:Parametry"); local kod_jezyka=frame.args["kod języka"] or frame.args["kod języka 1"] or pf.args["kod języka"] or pf.args["kod języka 1"] return ((kod_jezyka)and(kod_jezyka~=""))and mw.text.trim(kod_jezyka) or ((parametry_modul.CzyTak(wartosc_domyslna))and wartosc_domyslna or nil); elseif(i>1)then local parametry_modul=require("Module:Parametry"); local kod_jezyka=frame.args["kod języka "..i] or pf.args["kod języka "..i] return ((kod_jezyka)and(kod_jezyka~=""))and mw.text.trim(kod_jezyka) or ((parametry_modul.CzyTak(wartosc_domyslna))and wartosc_domyslna or nil); end; end function p.Kod_projektu(frame,i,wartosc_domyslna) local pudelko_modul=require("Module:Pudełko"); if(not i)then return pudelko_modul["Kod projektu tego projektu"]();end; local pf=frame.getParent and frame:getParent() or {args={}}; if(i==0)then return pudelko_modul["Kod projektu tego projektu"](); elseif(i==1)then local parametry_modul=require("Module:Parametry"); local kod_projektu=frame.args["kod projektu"] or frame.args["kod projektu 1"] or pf.args["kod projektu"] or pf.args["kod projektu 1"] return ((kod_projektu)and(kod_projektu~=""))and mw.text.trim(kod_projektu) or ((parametry_modul.CzyTak(wartosc_domyslna))and wartosc_domyslna or nil); elseif(i>1)then local parametry_modul=require("Module:Parametry"); local kod_projektu=frame.args["kod projektu "..i] or pf.args["kod projektu "..i] return ((kod_projektu)and(kod_projektu~=""))and mw.text.trim(kod_projektu) or ((parametry_modul.CzyTak(wartosc_domyslna))and wartosc_domyslna or nil); end; end function p.Klucz_projektu(frame,i,wartosc_domyslna_jezyka,wartosc_domyslna_projektu) local pf=frame.getParent and frame:getParent() or {args={}}; local klucz_projektu; local function domyslne_klucz(klucz_projektu) local parametry_modul=require("Module:Parametry"); return ((klucz_projektu)and(klucz_projektu~=""))and mw.text.trim(klucz_projektu)or((parametry_modul.CzyTak(wartosc_domyslna_jezyka)and(parametry_modul.CzyTak(wartosc_domyslna_projektu)))and (wartosc_domyslna_jezyka..":" ..wartosc_domyslna_projektu)or(parametry_modul.CzyTak(wartosc_domyslna_jezyka) and wartosc_domyslna_jezyka or (parametry_modul.CzyTak(wartosc_domyslna_projektu) and wartosc_domyslna_projektu or nil))); end; if(i==0)then return nil; elseif(i==1)then local klucz_projektu=frame.args["klucz projektu"] or frame.args["klucz projektu 1"] or pf.args["klucz projektu"] or pf.args["klucz projektu 1"]; return domyslne_klucz(klucz_projektu); elseif(i>1)then local klucz_projektu=frame.args["klucz projektu "..i] or pf.args["klucz projektu "..i]; return domyslne_klucz(klucz_projektu); end; end; function p.Wikikody_kontenera(frame,i,wartosc_domyslna_jezyka,wartosc_domyslna_projektu) local wiki_modul=require("Module:Wiki"); local kod_jezyka,kod_projektu=wiki_modul.KodyWiki(p.Klucz_projektu(frame,i,wartosc_domyslna_jezyka,wartosc_domyslna_projektu),p.Kod_jezyka(frame,i,wartosc_domyslna_jezyka),p.Kod_projektu(frame,i,wartosc_domyslna_projektu)); return kod_jezyka,kod_projektu; end; function p.Nazwa_przestrzeni_nazw_od_typu_jednostki(typ,args,bez_analizy) if(not bez_analizy)then local parametry_modul=require("Module:Parametry"); if((((not parametry_modul.CzyTak(args["obsługiwane jednostki jako nieopisowe strony"]))and((typ=="artykuł")or(typ=="podręcznik")))or (typ=="artykuł")))then return ""; elseif(((not parametry_modul.CzyTak(args["obsługiwane jednostki jako nieopisowe strony"]))and((typ=="artykuł dla dzieci")or(typ=="podręcznik dla dzieci")))or(typ=="artykuł dla dzieci"))then return "Wikijunior"; elseif((not parametry_modul.CzyTak(args["obsługiwane brudnopisy jako normalne strony"])) and(((not parametry_modul.CzyTak(args["obsługiwane jednostki jako nieopisowe strony"]))and(parametry_modul.CzyTak(args["obsługiwane jednostki brudnopisu projektu"])and (typ=="podręcznik brudnopisu projektu" or typ=="artykuł brudnopisu projektu")or (typ=="jednostka brudnopisu projektu")) or (typ=="strona brudnopisu projektu"))or(typ=="strona projektu"))or (typ=="strona projektu"))then return "Project"; elseif((parametry_modul.CzyTak(args["obsługiwane strony jako niebrudnopisowe jednostki programowe"]))and (typ=="strona szablonu") or(not parametry_modul.CzyTak(args["obsługiwane brudnopisy jako normalne strony"]) and((not parametry_modul.CzyTak(args["obsługiwane opisy jako strony jednostek programowych"]) and not parametry_modul.CzyTak(args["obsługiwane jednostki jako nieopisowe strony"]) and not parametry_modul.CzyTak(args["obsługiwane nieudokumentowane szablony jako szablony"])) and((typ=="strona brudnopisu szablonu")or(typ=="strona brudnopisu opisu szablonu"))or(typ=="strona brudnopisu szablonu")) or((not parametry_modul.CzyTak(args["obsługiwane opisy jako strony jednostek programowych"]) and not parametry_modul.CzyTak(args["obsługiwane jednostki jako nieopisowe strony"]) and not parametry_modul.CzyTak(args["obsługiwane nieudokumentowane szablony jako szablony"])) and((typ=="strona szablonu")or(typ=="strona opisu szablonu"))or(typ=="strona szablonu"))))then return "Template"; elseif((parametry_modul.CzyTak(args["obsługiwane strony jako niebrudnopisowe jednostki programowe"]))and (typ=="strona modułu") or(not parametry_modul.CzyTak(args["obsługiwane brudnopisy jako normalne strony"]) and((not parametry_modul.CzyTak(args["obsługiwane opisy jako strony jednostek programowych"]) and not parametry_modul.CzyTak(args["obsługiwane jednostki jako nieopisowe strony"])) and((typ=="strona brudnopisu modułu")or(typ=="strona brudnopisu opisu modułu"))or(typ=="strona brudnopisu modułu")) or((not parametry_modul.CzyTak(args["obsługiwane opisy jako strony jednostek programowych"]) and not parametry_modul.CzyTak(args["obsługiwane jednostki jako nieopisowe strony"])) and((typ=="strona modułu")or(typ=="strona opisu modułu"))or(typ=="strona modułu"))))then return "Module"; elseif(not parametry_modul.CzyTak(args["obsługiwane jednostki użytkownika jako normalne strony"]) and(((not parametry_modul.CzyTak(args["obsługiwane jednostki jako nieopisowe strony"]))and(parametry_modul.CzyTak(args["obsługiwane jednostki użytkownika"])and (typ=="podręcznik użytkownika" or typ=="artykuł użytkownika") or (typ=="jednostka użytkownika")) or (typ=="strona użytkownika"))or(typ=="strona główna użytkownika"))or(typ=="strona użytkownika"))then return "User"; elseif(typ=="strona pliku")then return "File"; elseif(typ=="strona kategorii")then return "Category"; elseif(typ=="strona pomocy")then return "Help"; elseif(typ=="strona komunikatu")then return "MediaWiki"; elseif(typ=="strona specjalna")then return "Special"; elseif(typ=="strona gadżetu")then return "Gadget"; elseif(typ=="strona główna projektu")then return "Project"; elseif(typ=="strona główna dla dzieci")then return "Wikijunior"; end; return; end; if(typ)then if((typ=="artykuł")or(typ=="podręcznik"))then return ""; elseif((typ=="artykuł dla dzieci")or(typ=="podręcznik dla dzieci"))then return "Wikijunior"; elseif((typ=="podręcznik brudnopisu projektu")or(typ=="artykuł brudnopisu projektu")or(typ=="jednostka brudnopisu projektu")or(typ=="strona brudnopisu projektu")or(typ=="strona projektu"))then return "Project"; elseif((typ=="strona szablonu")or(typ=="strona opisu szablonu")or(typ=="strona brudnopisu szablonu")or(typ=="strona brudnopisu opisu szablonu"))then return "Template"; elseif((typ=="strona modułu")or(typ=="strona opisu modułu")or(typ=="strona brudnopisu modułu")or(typ=="strona brudnopisu opisu modułu"))then return "Module"; elseif((typ=="podręcznik użytkownika")or(typ=="artykuł użytkownika")or(typ=="jednostka użytkownika")or(typ=="strona użytkownika")or(typ=="strona główna użytkownika"))then return "User"; elseif(typ=="strona pliku")then return "File"; elseif(typ=="strona kategorii")then return "Category"; elseif(typ=="strona pomocy")then return "Help"; elseif(typ=="strona komunikatu")then return "MediaWiki"; elseif(typ=="strona specjalna")then return "Special"; elseif(typ=="strona gadżetu")then return "Gadget"; elseif(typ=="strona główna projektu")then return "Project"; elseif(typ=="strona główna dla dzieci")then return "Wikijunior"; end; end; end; function p.Typ_jednostki_uzyskany_z_frame(frame,i) local numer_jednostki=i or frame.args["numer jednostki"]; local liczba_numer_jednostki=tonumber(numer_jednostki) or 0; local pf=frame.getParent and frame:getParent() or {args={}}; local typ; if liczba_numer_jednostki~=0 then typ=liczba_numer_jednostki and( (frame.args["typ jednostki "..liczba_numer_jednostki] or frame.args["typ jednostki i"]) or (pf.args["typ jednostki "..liczba_numer_jednostki] or pf.args["typ jednostki i"]) ); if(not typ)then local nazwa_jednostki=p.Nazwy_przestrzeni_i_jednostki_podane_o_pewnym_numerze(frame,liczba_numer_jednostki,2); if(nazwa_jednostki)then if(not mw.ustring.match(mw.text.trim(nazwa_jednostki),"^:"))then local nazwa_przesrzeni_nazw=p.Nazwy_przestrzeni_i_jednostki_podane_o_pewnym_numerze(frame,liczba_numer_jednostki,1); if(not nazwa_przesrzeni_nazw)then typ=frame.args["typ jednostki"] or pf.args["typ jednostki"]; end; end; end; end; else typ=frame.args["typ jednostki"] or pf.args["typ jednostki"]; end; return typ,liczba_numer_jednostki; end; function p.Czy_dyskusja_typu_jednostki_z_frame_od_dyskusja_typu_jednostki(frame,i) local numer_jednostki=i or frame.args["numer jednostki"]; local liczba_numer_jednostki=((numer_jednostki)and(tonumber(numer_jednostki))or 0); local pf=frame:getParent() or {args={},}; local function FuncTemp(liczba_numer_jednostki) local dyskusja_parametr="dyskusja typu jednostki"; if(liczba_numer_jednostki==0)then return frame.args[dyskusja_parametr] or pf.args[dyskusja_parametr]; else return ((frame.args[dyskusja_parametr.." "..liczba_numer_jednostki] or pf.args[dyskusja_parametr.." "..liczba_numer_jednostki]) or (frame.args[dyskusja_parametr.." i"] or pf.args[dyskusja_parametr.." i"]) or(frame.args[dyskusja_parametr] or pf.args[dyskusja_parametr])); end; end; local czy_dyskusja=FuncTemp(liczba_numer_jednostki); local parametry_modul=require("Module:Parametry"); local czy_dyskusja=parametry_modul.CzyTak(czy_dyskusja); return czy_dyskusja; end; function p.Nazwa_przestrzeni_nazw_uzyskana_z_typu_jednostki_z_frame(frame,i) local typ=p.Typ_jednostki_uzyskany_z_frame(frame,i); local nazwa_przestrzeni_nazw=typ and p.Nazwa_przestrzeni_nazw_od_typu_jednostki(typ,nil,true) or nil; if(nazwa_przestrzeni_nazw)then local czy_dyskusja=p.Czy_dyskusja_typu_jednostki_z_frame_od_dyskusja_typu_jednostki(frame,i); if(czy_dyskusja)then if(nazwa_przestrzeni_nazw=="")then return "Talk"; else return nazwa_przestrzeni_nazw.." talk"; end; else return nazwa_przestrzeni_nazw; end; else return nil; end; end; function p.Typ_jednostki(frame, kod_liczbowy_przestrzeni_nazw,i,numer_argorytmu) local parametry_modul=require("Module:Parametry"); local analiza=parametry_modul.CzyTak(frame.args["analiza"]); local typ,liczba_numer_jednostki=p.Typ_jednostki_uzyskany_z_frame(frame,i); local uzyskana_przestrzen_nazw_od_typu_jednostki; local nazwa_przestrzeni_nazw_podana,nazwa_jednostki_podana=p.Nazwy_przestrzeni_i_jednostki_podane_o_pewnym_numerze(frame,liczba_numer_jednostki); if((not analiza)and(typ))then if(typ~="")then uzyskana_przestrzen_nazw_od_typu_jednostki=p.Nazwa_przestrzeni_nazw_od_typu_jednostki(typ,frame.args); if(uzyskana_przestrzen_nazw_od_typu_jednostki)then if((not nazwa_przestrzeni_nazw_podana)and(not nazwa_jednostki_podana))then return typ; end; else return "(błąd typu jednostki)"; end; end; end; local nazwa_przestrzeni_nazw,nazwa_jednostki=p.Uzyskanie_nazw_jednostki(frame,kod_liczbowy_przestrzeni_nazw,liczba_numer_jednostki,numer_argorytmu); local nazwy_modul=require("Module:Nazwy"); local kod_jezyka,kod_projektu=p.Wikikody_kontenera(frame,liczba_numer_jednostki); local wiki_modul=require("Module:Wiki"); local czy_biezaca=wiki_modul["CzyBieżącaWiki"]{["kod języka"]=kod_jezyka,["kod projektu"]=kod_projektu,}; local czy_blad_nazwa_przestrzeni_nazw; if(czy_biezaca)then czy_blad_nazwa_przestrzeni_nazw=nazwy_modul.Np{nazwa=nazwa_przestrzeni_nazw,["kanoniczna"]="tak",["nazwij projektem"]="tak",["nazwij dyskusją projektu"]="tak",["istnieje"]="tak",["wynik błędu nietekstowy"]="tak",} else czy_blad_nazwa_przestrzeni_nazw=nazwy_modul.NpDane{nazwa=nazwa_przestrzeni_nazw,["kanoniczna"]="tak",["nazwij projektem"]="tak",["nazwij dyskusją projektu"]="tak",["kod języka"]=kod_jezyka,["kod projektu"]=kod_projektu,["istnieje"]="tak",["wynik błędu nietekstowy"]="tak",} end; if(not czy_blad_nazwa_przestrzeni_nazw)then return "(błąd nazwy przestrzeni nazw)";end; nazwa_przestrzeni_nazw=czy_blad_nazwa_przestrzeni_nazw; --- --- if((not analiza)and(typ))then if(typ~="")then ---typ jednostki if(uzyskana_przestrzen_nazw_od_typu_jednostki)then if((nazwa_przestrzeni_nazw_podana)and(not nazwa_jednostki_podana))then if(uzyskana_przestrzen_nazw_od_typu_jednostki==nazwa_przestrzeni_nazw)then return typ; else return "(błąd niezgodności)"; end; end; else return "(błąd typu jednostki)"; end; end; end; local function Typ_jednostki() if(nazwa_jednostki~="")then --local kod_jezyka,kod_projektu=KodyWikiPudelka(frame,liczba_numer_jednostki); --local klucz_projektu=kod_projektu..":"..kod_jezyka; local pudelko_modul=require("Module:Pudełko"); local pelna_nazwa_strony=((nazwa_przestrzeni_nazw~="")and nazwa_przestrzeni_nazw..":" or "")..nazwa_jednostki; if(pudelko_modul.CzyNiepoprawnaNazwa(pelna_nazwa_strony))then return "(błąd nazwy jednostki)";end; local nazwy_modul=require("Module:Nazwy") pelna_nazwa_strony=nazwy_modul["PEŁNANAZWASTRONY"]{[1]=pelna_nazwa_strony,["kod języka"]=kod_jezyka,["kod projektu"]=kod_projektu,}; local norm_przed_lub_dyskusji=p.Normalna_przedmiotowa_lub_dyskusji_nazwa_przestrzeni_nazw(nazwa_przestrzeni_nazw,1,kod_jezyka,kod_projektu); if(kod_projektu==pudelko_modul["Kod projektu tego projektu"]())then local nazwa_strony_glownej_dla_dzieci_ze_zmiennej=p.Nazwa_strony_bazowej_dla_dzieci_ze_zmiennej(frame,liczba_numer_jednostki,kod_jezyka); if(nazwa_strony_glownej_dla_dzieci_ze_zmiennej=="")then return "(błąd nazwy strony głównej dla dzieci)";end; local nazwa_strony_glownej_wikijuniora=p.Nazwa_strony_bazowej_dla_dzieci_z_wikidanych(kod_jezyka); local nazwa_strony_glownej_dla_dzieci_uzyskana=(not nazwa_strony_glownej_dla_dzieci_ze_zmiennej)and nazwa_strony_glownej_wikijuniora or nazwa_strony_glownej_dla_dzieci_ze_zmiennej; if(nazwa_strony_glownej_dla_dzieci_uzyskana)then if(pudelko_modul.CzyNiepoprawnaNazwa(nazwa_strony_glownej_dla_dzieci_uzyskana))then return "(błąd nazwy strony głównej dla dzieci)";end; nazwa_strony_glownej_dla_dzieci_uzyskana=nazwy_modul["PEŁNANAZWASTRONY"]{[1]=nazwa_strony_glownej_dla_dzieci_uzyskana,["kod języka"]=kod_jezyka,["kod projektu"]=kod_projektu,}; if(pelna_nazwa_strony==nazwa_strony_glownej_dla_dzieci_uzyskana)then return "strona główna dla dzieci";end; end; end; local nazwa_strony_glownej_projektu_ze_zmiennej=p.Nazwa_strony_bazowej_projektu_ze_zmiennej(frame,liczba_numer_jednostki,kod_jezyka,kod_projektu); if(nazwa_strony_glownej_projektu_ze_zmiennej=="")then return "(błąd nazwy strony głównej projektu)";end; local nazwa_strony_glownej_projektu_z_wikidanych=p.Nazwa_strony_bazowej_projektu_z_wikidanych(kod_jezyka,kod_projektu); local nazwa_strony_glownej_projektu_uzyskana=(not nazwa_strony_glownej_projektu_ze_zmiennej)and nazwa_strony_glownej_projektu_z_wikidanych or nazwa_strony_glownej_projektu_ze_zmiennej; if(nazwa_strony_glownej_projektu_uzyskana)then if(pudelko_modul.CzyNiepoprawnaNazwa(nazwa_strony_glownej_projektu_uzyskana))then return "(błąd nazwy strony głównej projektu)";end; nazwa_strony_glownej_projektu_uzyskana=nazwy_modul["PEŁNANAZWASTRONY"]{[1]=nazwa_strony_glownej_projektu_uzyskana,["kod języka"]=kod_jezyka,["kod projektu"]=kod_projektu,}; if(pelna_nazwa_strony==nazwa_strony_glownej_projektu_uzyskana)then return "strona główna projektu";end; end; if(norm_przed_lub_dyskusji=="")then local parametry_modul=require("Module:Parametry"); if(parametry_modul.CzyTak(frame.args["obsługiwane jednostki jako nieopisowe strony"]))then return "artykuł"; else local it=mw.ustring.match(nazwa_jednostki,"^[^/]+$"); if(it)then return "podręcznik";else return "artykuł";end; end; elseif(norm_przed_lub_dyskusji=="Wikijunior")then local parametry_modul=require("Module:Parametry"); if(parametry_modul.CzyTak(frame.args["obsługiwane jednostki jako nieopisowe strony"]))then return "artykuł dla dzieci"; else local it=mw.ustring.match(nazwa_jednostki,"^[^/]+$"); if(it)then return "podręcznik dla dzieci";else return "artykuł dla dzieci";end; end; elseif(norm_przed_lub_dyskusji=="User")then local parametry_modul=require("Module:Parametry"); if(parametry_modul.CzyTak(frame.args["obsługiwane jednostki użytkownika jako normalne strony"]))then return "strona użytkownika"; else local czy_podstrony=mw.ustring.match(nazwa_jednostki,"^[^/]+$") if(czy_podstrony)then return "strona główna użytkownika"; else if(not parametry_modul.CzyTak(frame.args["obsługiwane jednostki jako nieopisowe strony"]))then if(parametry_modul.CzyTak(frame.args["obsługiwane jednostki użytkownika"]))then local czy_ksiazka=mw.ustring.match(nazwa_jednostki,"^[^/]+/[^/]*$"); if(czy_ksiazka)then return "podręcznik użytkownika"; else return "artykuł użytkownika"; end; else return "jednostka użytkownika"; end; else return "strona użytkownika"; end; end; end; elseif(norm_przed_lub_dyskusji=="File")then return "strona pliku"; elseif(norm_przed_lub_dyskusji=="Category")then return "strona kategorii"; elseif(norm_przed_lub_dyskusji=="Project")then local parametry_modul=require("Module:Parametry"); if(parametry_modul.CzyTak(frame.args["obsługiwane brudnopisy jako normalne strony"]))then return "strona projektu";end; if(mw.ustring.match(nazwa_jednostki,"^%s*[Bb]rudnopis/[^/]*/.*"))then if(not parametry_modul.CzyTak(frame.args["obsługiwane jednostki jako nieopisowe strony"]))then if(parametry_modul.CzyTak(frame.args["obsługiwane jednostki brudnopisu projektu"]))then local czy_ksiazka=mw.ustring.match(nazwa_jednostki,"^%s*[Bb]rudnopis/[^/]*/[^/]*$"); if(czy_ksiazka)then return "podręcznik brudnopisu projektu"; else return "artykuł brudnopisu projektu"; end; else return "jednostka brudnopisu projektu"; end; else return "strona brudnopisu projektu"; end; else return "strona projektu"; end; elseif(norm_przed_lub_dyskusji=="Help")then return "strona pomocy"; elseif(norm_przed_lub_dyskusji=="MediaWiki")then return "strona komunikatu"; elseif(norm_przed_lub_dyskusji=="Special")then return "strona specialna"; elseif(norm_przed_lub_dyskusji=="Gadget")then return "strona gadżetu"; elseif(norm_przed_lub_dyskusji=="Template")then local parametry_modul=require("Module:Parametry"); if(parametry_modul.CzyTak(frame.args["obsługiwane strony jako niebrudnopisowe jednostki programowe"]))then return "strona szablonu";end; local function CzySzablonAlboOpis(nazwa_przestrzeni_nazw,nazwa_jednostki,szablon,opis_szablonu,strona_szablonu,prefix) local parametry_modul=require("Module:Parametry"); if(parametry_modul.CzyTak(frame.args["obsługiwane opisy jako strony jednostek programowych"]) or parametry_modul.CzyTak(frame.args["obsługiwane jednostki jako nieopisowe strony"]))then return szablon; else if(mw.ustring.match(nazwa_jednostki,"^"..prefix..".*/opis$"))then return opis_szablonu; else if(not parametry_modul.CzyTak(frame.args["obsługiwane nieudokumentowane szablony jako szablony"]))then local czy_brudnopis=mw.ustring.match(nazwa_jednostki,"^"..prefix..".*$"); if(czy_brudnopis)then local pagename=(nazwa_przestrzeni_nazw~="")and nazwa_przestrzeni_nazw..":"..nazwa_jednostki or nazwa_jednostki; local czy_istnieje_strona,tab=require("Module:Techniczne").PoliczZbiory(pagename); if(czy_istnieje_strona==1)then local czy_brudnopis_opisu_szablonu=require("Module:Łatki").contentMatch{ [1]='<noinclude>.-{{%s*[Dd]okumentacja%s*}}.-</noinclude>', [2]='<noinclude>.-{{%s*[Dd]okumentacja%s*|.-</noinclude>',pagename=pagename,namespace=0 }; if(not czy_brudnopis_opisu_szablonu)then return opis_szablonu;else return szablon;end; else return szablon; end; else return strona_szablonu; end; else return szablon; end; end; end; end; if((not parametry_modul.CzyTak(frame.args["obsługiwane brudnopisy jako normalne strony"]))and(mw.ustring.match(nazwa_jednostki,"^%s*[Bb]rudnopis/[^/]*/.*")))then return CzySzablonAlboOpis(norm_przed_lub_dyskusji,nazwa_jednostki,"strona brudnopisu szablonu","strona brudnopisu opisu szablonu","strona szablonu","[Bb]rudnopis/[^/]*/"); else return CzySzablonAlboOpis(norm_przed_lub_dyskusji,nazwa_jednostki,"strona szablonu","strona opisu szablonu","strona szablonu",""); end; elseif(norm_przed_lub_dyskusji=="Module")then local parametry_modul=require("Module:Parametry"); if(parametry_modul.CzyTak(frame.args["obsługiwane strony jako niebrudnopisowe jednostki programowe"]))then return "strona modułu";end; if((not parametry_modul.CzyTak(frame.args["obsługiwane brudnopisy jako normalne strony"]))and(mw.ustring.match(nazwa_jednostki,"^%s*[Bb]rudnopis/[^/]*/.*")))then if(parametry_modul.CzyTak(frame.args["obsługiwane opisy jako strony jednostek programowych"]) or parametry_modul.CzyTak(frame.args["obsługiwane jednostki jako nieopisowe strony"]))then return "strona brudnopisu modułu" else local pelna_nazwa_strony=(norm_przed_lub_dyskusji~="")and norm_przed_lub_dyskusji..":"..nazwa_jednostki or nazwa_jednostki; pelna_nazwa_strony=require("Module:Nazwy")["PEŁNANAZWASTRONY"]{[1]=pelna_nazwa_strony,["kod języka"]=kod_jezyka,["kod projektu"]=kod_projektu,}; local pelna_nazwa_strony_brudnopisu_opisu_modulu=require("Module:Techniczne")["PełnaNazwaOpisuModułu"](pelna_nazwa_strony); if(pelna_nazwa_strony==pelna_nazwa_strony_brudnopisu_opisu_modulu)then return "strona brudnopisu opisu modułu"; else return "strona brudnopisu modułu"; end; end; else if(parametry_modul.CzyTak(frame.args["obsługiwane opisy jako strony jednostek programowych"]) or parametry_modul.CzyTak(frame.args["obsługiwane jednostki jako nieopisowe strony"]))then return "strona modułu" else local pelna_nazwa_strony=(norm_przed_lub_dyskusji~="")and norm_przed_lub_dyskusji..":"..nazwa_jednostki or nazwa_jednostki; pelna_nazwa_strony=require("Module:Nazwy")["PEŁNANAZWASTRONY"]{[1]=pelna_nazwa_strony,["kod języka"]=kod_jezyka,["kod projektu"]=kod_projektu,}; local pelna_nazwa_opisu_modulu=require("Module:Techniczne")["PełnaNazwaOpisuModułu"](pelna_nazwa_strony); if(pelna_nazwa_strony==pelna_nazwa_opisu_modulu)then return "strona opisu modułu"; else return "strona modułu"; end; end; end; else return "inne"; end; end; return "inne"; end; local typ_jednostki=Typ_jednostki(); local function TempFunc(typ_jednostki) if( (kod_liczbowy_przestrzeni_nazw==2) or((kod_liczbowy_przestrzeni_nazw==0)and(p.Czy_dyskusja_typu_jednostki_z_frame_od_dyskusja_typu_jednostki(frame,i))) )then typ_jednostki,ile=mw.ustring.gsub(typ_jednostki,"^(%S+)(%s+)",function(strona,spacja) return strona.." dyskusji"..spacja; end); return typ_jednostki; end; return typ_jednostki; end; if(((analiza)or(nazwa_jednostki_podana))and(typ)and(typ~=""))then if(typ_jednostki==typ)then return TempFunc(typ_jednostki); elseif(nazwa_jednostki_podana)then return "(błąd parametrów pudełkowych)" else return "(błąd typu jednostki)"; end; end; return TempFunc(typ_jednostki); end; function p.Uzyskanie_nazw_jednostki(frame,kod_liczbowy_przestrzeni_nazw,i,numer_argorytmu,co_ma_liczyc) local nazwa_przestrzeni_fun,nazwa_jednostki_fun; if(kod_liczbowy_przestrzeni_nazw==0)then nazwa_przestrzeni_fun="Nazwa przestrzeni nazw"; nazwa_jednostki_fun="Nazwa jednostki"; elseif(kod_liczbowy_przestrzeni_nazw==1)then nazwa_przestrzeni_fun="Nazwa przedmiotowej przestrzeni nazw"; nazwa_jednostki_fun="Nazwa przedmiotowa jednostki"; elseif(kod_liczbowy_przestrzeni_nazw==2)then nazwa_przestrzeni_fun="Nazwa przestrzeni nazw dyskusji" nazwa_jednostki_fun="Nazwa dyskusji jednostki"; else nazwa_przestrzeni_fun="Nazwa przestrzeni nazw"; nazwa_jednostki_fun="Nazwa jednostki"; end; local pudelko_modul=require("Module:Pudełko"); if(not numer_argorytmu)then if((not i)or(i==0))then if((not co_ma_liczyc)or(co_ma_liczyc==0))then local nazwa_przestrzeni_nazw=pudelko_modul[nazwa_przestrzeni_fun](frame,false); local nazwa_jednostki=pudelko_modul["Nazwa jednostki"](frame); return nazwa_przestrzeni_nazw,nazwa_jednostki; elseif(co_ma_liczyc==1)then local nazwa_przestrzeni_nazw=pudelko_modul[nazwa_przestrzeni_fun](frame,false); return nazwa_przestrzeni_nazw; elseif(co_ma_liczyc==2)then return pudelko_modul["Nazwa jednostki"](frame); end; else if((not co_ma_liczyc)or(co_ma_liczyc==0))then local n=p.Nazwa_przestrzeni_nazw_dodatkowe(frame,i); local nazwa_przestrzeni_nazw=(n)and pudelko_modul[nazwa_przestrzeni_fun](frame,false,i) or pudelko_modul[nazwa_przestrzeni_fun.." 2"](frame,false,i); local nazwa_jednostki=(n)and pudelko_modul["Nazwa jednostki"](frame,i) or pudelko_modul[nazwa_jednostki_fun.." 2"](frame,i); return nazwa_przestrzeni_nazw,nazwa_jednostki; elseif(co_ma_liczyc==1)then local n=p.Nazwa_przestrzeni_nazw_dodatkowe(frame,i); local nazwa_przestrzeni_nazw=(n)and pudelko_modul[nazwa_przestrzeni_fun](frame,false,i) or pudelko_modul[nazwa_przestrzeni_fun.." 2"](frame,false,i); return nazwa_przestrzeni_nazw; elseif(co_ma_liczyc==2)then local n=p.Nazwa_przestrzeni_nazw_dodatkowe(frame,i); return (n)and pudelko_modul["Nazwa jednostki"](frame,i) or pudelko_modul[nazwa_jednostki_fun.." 2"](frame,i); end; end; else if(numer_argorytmu==0)then if((not co_ma_liczyc)or(co_ma_liczyc==0))then local nazwa_przestrzeni_nazw=pudelko_modul[nazwa_przestrzeni_fun](frame,false,i); local nazwa_jednostki=pudelko_modul["Nazwa jednostki"](frame,i); return nazwa_przestrzeni_nazw,nazwa_jednostki; elseif(co_ma_liczyc==1)then local nazwa_przestrzeni_nazw=pudelko_modul[nazwa_przestrzeni_fun](frame,false,i); return nazwa_przestrzeni_nazw; elseif(co_ma_liczyc==2)then return pudelko_modul["Nazwa jednostki"](frame,i); end; else if((not co_ma_liczyc)or(co_ma_liczyc==0))then local nazwa_przestrzeni_nazw=pudelko_modul[nazwa_przestrzeni_fun.." 2"](frame,false,i); local nazwa_jednostki=pudelko_modul[nazwa_jednostki_fun.." 2"](frame,i); return nazwa_przestrzeni_nazw,nazwa_jednostki; elseif(co_ma_liczyc==1)then local nazwa_przestrzeni_nazw=pudelko_modul[nazwa_przestrzeni_fun.." 2"](frame,false,i); return nazwa_przestrzeni_nazw; elseif(co_ma_liczyc==2)then return pudelko_modul[nazwa_jednostki_fun.." 2"](frame,i); end; end; end; end; function p.Nazwa_przestrzeni_nazw_dodatkowe(frame,numer_jednostki) local pf=frame.getParent and frame:getParent() or {args={}}; return frame.args["nazwa przestrzeni nazw "..tostring(numer_jednostki)] or pf.args["nazwa przestrzeni nazw "..tostring(numer_jednostki)] end; function p.Nazwa_jednostki(frame,i) local pf=frame.getParent and frame:getParent() or {args={}}; local nazwa_jednostki,liczba_numer_jednostki=p.Nazwy_przestrzeni_i_jednostki_podane_o_pewnym_numerze(frame,i,2); local kod_jezyka,kod_projektu=p.Wikikody_kontenera(frame,liczba_numer_jednostki); if(nazwa_jednostki)then nazwa_jednostki=mw.text.trim(nazwa_jednostki); nazwa_jednostki=mw.ustring.gsub(nazwa_jednostki,"^:",""); nazwa_jednostki=mw.ustring.gsub(nazwa_jednostki,"^([^#]*)#(.*)$","%1"); local parametry=mw.ustring.match(nazwa_jednostki,"^.*%?([^%?]+)$"); if(parametry and mw.ustring.match(parametry,"[^=]+=[^=]*"))then nazwa_jednostki=mw.ustring.gsub(nazwa_jednostki,"^(.*)%?([^%?]+)$","%1"); end; else local nazwy_modul=require("Module:Nazwy"); nazwa_jednostki=nazwy_modul["NAZWASTRONY"]{["kod języka"]=kod_jezyka,["kod projektu"]=kod_projektu,}; end; local parametry_modul=require("Module:Parametry"); nazwa_jednostki=parametry_modul["Odstępy"]{[1]=nazwa_jednostki,[2]="tak",}; return mw.getContentLanguage():ucfirst(nazwa_jednostki); end; function p.Nazwy_przestrzeni_i_jednostki_podane_o_pewnym_numerze(frame,i,co_podac) local pf=frame.getParent and frame:getParent() or {args={}}; local numer_jednostki=i or frame.args["numer jednostki"]; local liczba_numer_jednostki=tonumber(numer_jednostki) or 0; local nazwa_jednostki; local bool_numer_jednostki=(liczba_numer_jednostki~=0); local function Nazwa_jednostki() if bool_numer_jednostki then nazwa_jednostki=frame.args["nazwa jednostki "..liczba_numer_jednostki] or ((liczba_numer_jednostki==1)and(pf.args["cel"])) or pf.args[liczba_numer_jednostki]; else nazwa_jednostki=frame.args["nazwa jednostki"] or pf.args["nazwa jednostki"]; end; return nazwa_jednostki; end; local function Nazwa_przestrzeni_nazw() local nazwa_przestrzeni_nazw=bool_numer_jednostki and (frame.args["nazwa przestrzeni nazw i"] or pf.args["nazwa przestrzeni nazw i"] or frame.args["nazwa przestrzeni nazw "..liczba_numer_jednostki] or pf.args["nazwa przestrzeni nazw "..liczba_numer_jednostki]) or frame.args["nazwa przestrzeni nazw"] or pf.args["nazwa przestrzeni nazw"]; return nazwa_przestrzeni_nazw; end; if(not co_podac)then return Nazwa_przestrzeni_nazw(),Nazwa_jednostki(),liczba_numer_jednostki; elseif(co_podac==1)then return Nazwa_przestrzeni_nazw(),liczba_numer_jednostki; elseif(co_podac==2)then return Nazwa_jednostki(),liczba_numer_jednostki; else return Nazwa_przestrzeni_nazw(),Nazwa_jednostki(),liczba_numer_jednostki; end; end; function p.Jaka_nazwa_jednostki(frame,i,jaka) local nazwa_przestrzeni_nazw,nazwa_jednostki,liczba_numer_jednostki=p.Nazwy_przestrzeni_i_jednostki_podane_o_pewnym_numerze(frame,i); nazwa_przestrzeni_nazw=nazwa_przestrzeni_nazw or p.Nazwa_przestrzeni_nazw_uzyskana_z_typu_jednostki_z_frame(frame,liczba_numer_jednostki); ---- local nazwy_modul=require("Module:Nazwy"); nazwa_przestrzeni_nazw=nazwa_przestrzeni_nazw and mw.text.trim(nazwa_przestrzeni_nazw) or nazwy_modul["NAZWAPRZESTRZENI"](); if(nazwa_jednostki)then local html_modul=require("Module:Html"); nazwa_jednostki=html_modul["NazwaStronyAdresu"](nazwa_jednostki,true); else nazwa_jednostki=nazwy_modul["NAZWASTRONY"](); end; local kod_jezyka,kod_projektu=p.Wikikody_kontenera(frame,liczba_numer_jednostki); local wiki_modul=require("Module:Wiki"); local czy_biezaca=wiki_modul["CzyBieżącaWiki"]{["kod języka"]=kod_jezyka,["kod projektu"]=kod_projektu,}; if(jaka)then if(czy_biezaca)then local tab_parametry={nazwa=nazwa_przestrzeni_nazw,}; if(jaka=="przedmiotowa")then tab_parametry["przedmiotowa"]="tak";end; nazwa_przestrzeni_nazw=nazwy_modul.Np(tab_parametry); else local tab_parametry={nazwa=nazwa_przestrzeni_nazw,["kod języka"]=kod_jezyka,["kod projektu"]=kod_projektu,}; if(jaka=="przedmiotowa")then tab_parametry["przedmiotowa"]="tak";end; nazwa_przestrzeni_nazw=nazwy_modul.NpDane(tab_parametry); end; else if(czy_biezaca)then nazwa_przestrzeni_nazw=nazwy_modul.Np{nazwa=nazwa_przestrzeni_nazw}; else nazwa_przestrzeni_nazw=nazwy_modul.NpDane{nazwa=nazwa_przestrzeni_nazw,["kod języka"]=kod_jezyka,["kod projektu"]=kod_projektu,}; end; end; if(not mw.ustring.match(nazwa_jednostki,"^:"))then if(nazwa_przestrzeni_nazw~="")then if((not typ)or(typ=="przedmiotowa"))then if(czy_biezaca)then local nazwy_np_modul=mw.loadData("Module:Nazwy/Np"); if(nazwa_przestrzeni_nazw==nazwy_np_modul.Template)then local nazwa_przestrzeni_nazw_d=nazwy_modul["NAZWAPRZESTRZENI"](nazwa_jednostki); if(nazwa_przestrzeni_nazw_d==nazwy_np_modul.Template)then return nazwy_modul["NAZWASTRONY"](nazwa_jednostki); end; elseif(nazwa_przestrzeni_nazw==nazwy_np_modul.Module)then local nazwa_przestrzeni_nazw_d=nazwy_modul["NAZWAPRZESTRZENI"](nazwa_jednostki); if(nazwa_przestrzeni_nazw_d==nazwy_np_modul.Module)then return nazwy_modul["NAZWASTRONY"](nazwa_jednostki); end; end; else local template_prze=nazwy_modul.NpDane{nazwa="Template",["kod języka"]=kod_jezyka,["kod projektu"]=kod_projektu,}; local module_prze=nazwy_modul.NpDane{nazwa="Module",["kod języka"]=kod_jezyka,["kod projektu"]=kod_projektu,}; if(nazwa_przestrzeni_nazw==template_prze)then local nazwa_przestrzeni_nazw_d=nazwy_modul["NAZWAPRZESTRZENI"]{[1]=nazwa_jednostki,["kod języka"]=kod_jezyka,["kod projektu"]=kod_projektu,}; if(nazwa_przestrzeni_nazw_d==template_prze)then return nazwy_modul["NAZWASTRONY"]{[1]=nazwa_jednostki,["kod języka"]=kod_jezyka,["kod projektu"]=kod_projektu,}; end; elseif(nazwa_przestrzeni_nazw==module_prze)then local nazwa_przestrzeni_nazw_d=nazwy_modul["NAZWAPRZESTRZENI"]{[1]=nazwa_jednostki,["kod języka"]=kod_jezyka,["kod projektu"]=kod_projektu,}; if(nazwa_przestrzeni_nazw_d==module_prze)then return nazwy_modul["NAZWASTRONY"]{[1]=nazwa_jednostki,["kod języka"]=kod_jezyka,["kod projektu"]=kod_projektu,}; end; end; end; end; local parametry_modul=require("Module:Parametry"); nazwa_jednostki=parametry_modul["Odstępy"]{[1]=nazwa_jednostki,[2]="tak",}; return mw.getContentLanguage():ucfirst(nazwa_jednostki); else return nazwy_modul["NAZWASTRONY"]{[1]=nazwa_jednostki,["kod języka"]=kod_jezyka,["kod projektu"]=kod_projektu,}; end; else return nazwy_modul["NAZWASTRONY"]{[1]=nazwa_jednostki,["kod języka"]=kod_jezyka,["kod projektu"]=kod_projektu,}; end; end; function p.Czy_przestrzen_nazw_jest_obslugiwana(frame,jakas_przestrzen_nazw,kod_jezyka,kod_projektu) local nazwy_modul=require("Module:Nazwy"); local parametry_modul=require("Module:Parametry"); local wiki_modul=require("Module:Wiki"); local czy_biezaca=wiki_modul["CzyBieżącaWiki"]{["kod języka"]=kod_jezyka,["kod projektu"]=kod_projektu,}; if(czy_biezaca)then jakas_przestrzen_nazw=nazwy_modul.Np{nazwa=jakas_przestrzen_nazw}; else jakas_przestrzen_nazw=nazwy_modul.NpDane{nazwa=jakas_przestrzen_nazw,["kod języka"]=kod_jezyka,["kod projektu"]=kod_projektu,}; end; local function nazwa_przestrzeni_nazw_fun(nazwa_przestrzeni_nazw_iter) if(czy_biezaca)then nazwa_przestrzeni_nazw_iter=nazwy_modul.Np{nazwa=nazwa_przestrzeni_nazw_iter}; else nazwa_przestrzeni_nazw_iter=nazwy_modul.NpDane{nazwa=nazwa_przestrzeni_nazw_iter,["kod języka"]=kod_jezyka,["kod projektu"]=kod_projektu,}; end; if(jakas_przestrzen_nazw==nazwa_przestrzeni_nazw_iter)then return true; end; return false; end; for licznik,nazwa_przestrzeni_nazw in pairs(frame.args)do if(type(licznik)=="number")then local nazwa_przestrzeni_nazw_element,klucze_element=mw.ustring.match(nazwa_przestrzeni_nazw,"^%s*([%w%s]*)%s*:%s*(.-)%s*"); if(nazwa_przestrzeni_nazw_element and klucze_element)then local tab_klucze=mw.text.split(klucze_element,"%s*,%s*",false); local wiki_modul=require("Module:Wiki"); for _,klucz_element in ipairs(tab_klucze)do local kod_jezyka_obslugiwane,kod_projektu_obslugiwane=wiki_modul.KluczProjektu(klucz_element); if(kod_jezyka_obslugiwane==kod_jezyka and kod_projektu_obslugiwane==kod_projektu)then local wynik=nazwa_przestrzeni_nazw_fun(nazwa_przestrzeni_nazw_element); if(wynik)then return true;end; end; end; else local wynik=nazwa_przestrzeni_nazw_fun(nazwa_przestrzeni_nazw); if(wynik)then return true;end; end; end; end; return false; end; function p.Analiza_interwiki_czy_projekt_aktualny(frame,czy_jezyk,czy_projekt) local parametry_modul=require("Module:Parametry"); local p=parametry_modul.PobierzFrameEwentualnieParent(frame); local pudelko_modul=require("Module:Pudełko"); local wiki_modul=require("Module:Wiki"); local jezyk_biezacy=czy_jezyk and pudelko_modul["Kod języka tego projektu"](); local projekt_biezacy=czy_projekt and pudelko_modul["Kod projektu tego projektu"](); for i,_ in pairs(p.args)do if(type(i)=="number")then local klucz_projektu=pudelko_modul["Klucz projektu"](frame,i); local kod_jezyka=pudelko_modul["Kod języka"](frame,i); local kod_projektu=pudelko_modul["kod projektu"](frame,i); local jezyk,projekt=wiki_modul.KodyWiki(klucz_projektu,kod_jezyka,kod_projektu); if((czy_jezyk and (jezyk~=jezyk_biezacy))or(czy_projekt and(projekt~=projekt_biezacy)))then return "tak"; end; end; end; return; end; return p; jqfgrvzqt7jf5lgupwqgok6glf4y15m 540410 540403 2026-04-23T19:11:56Z Persino 2851 540410 Scribunto text/plain local p={}; function p.Nazwa_strony_bazowej_projektu_z_wikidanych(kod_jezyka,kod_projektu) local strona=require("Module:Pudełko")["Strona główna tego projektu"](); local odpowiednik_strony=require("Module:Wiki").WikidaneOdpowiednikStrony{["nazwa strony"]=strona,["kod języka"]=kod_jezyka,["kod projektu"]=kod_projektu}; if(odpowiednik_strony)then local nazwy_modul=require("Module:Nazwy"); return nazwy_modul["PEŁNANAZWASTRONY"]{[1]=odpowiednik_strony,["kod języka"]=kod_jezyka,["kod projektu"]=kod_projektu,}; else local pudelko_modul=require("Module:Pudełko"); if((kod_jezyka==pudelko_modul["Kod języka tego projektu"]())and(kod_projektu==pudelko_modul["Kod projektu tego projektu"]()))then return strona; else local wiki_interwiki_modul=mw.loadData("Module:Wiki/interwiki"); local czy_w_wikidanych=wiki_interwiki_modul.tablica_kody_projektu_wikidane.lingwistyczne[kod_projektu] or wiki_interwiki_modul.tablica_kody_projektu_wikidane.specjalistyczne[kod_projektu]; return czy_w_wikidanych and "Main Page" or nil; end; end; end; function p.Nazwa_strony_bazowej_dla_dzieci_z_wikidanych(kod_jezyka) local strona=require("Module:Pudełko")["Strona główna dla dzieci tego projektu"](); local pudelko_modul=require("Module:Pudełko"); local kod_jezyka_tego_projektu=pudelko_modul["Kod języka tego projektu"](); if(kod_jezyka==kod_jezyka_tego_projektu)then return strona;end; local kod_projektu_tego_projektu=pudelko_modul["Kod projektu tego projektu"](); local odpowiednik_strony=require("Module:Wiki").WikidaneOdpowiednikStrony{["nazwa strony"]=strona,["kod języka"]=kod_jezyka,["kod projektu"]=kod_projektu_tego_projektu}; if(odpowiednik_strony)then local nazwy_modul=require("Module:Nazwy"); return nazwy_modul["PEŁNANAZWASTRONY"]{[1]=odpowiednik_strony,["kod języka"]=kod_jezyka,["kod projektu"]=kod_projektu_tego_projektu,}; else return "Wikijunior"; end; end; function p.Nazwa_strony_bazowej_projektu_ze_zmiennej(frame,i,kod_jezyka,kod_projektu) local pf=frame.getParent and frame:getParent() or {args={}}; local strona_glowna_projektu; if(i~=0)then local pudelko_modul=require("Module:Pudełko"); local kod_jezyka_tego_projektu=pudelko_modul["Kod języka tego projektu"](); local kod_projektu_tego_projektu=pudelko_modul["Kod projektu tego projektu"](); if(kod_jezyka==kod_jezyka_tego_projektu)and(kod_projektu==kod_projektu_tego_projektu)then strona_glowna_projektu=frame.args["strona główna projektu"] or pf.args["strona główna projektu"] else strona_glowna_projektu=(frame.args["strona główna projektu "..i] or pf.args["strona główna projektu "..i]) end; else strona_glowna_projektu=frame.args["strona główna projektu"] or pf.args["strona główna projektu"] end; local parametry_modul=require("Module:Parametry"); return (parametry_modul.CzyTak(strona_glowna_projektu))and require("Module:Nazwy")["PEŁNANAZWASTRONY"]{[1]=strona_glowna_projektu,["kod języka"]=kod_jezyka,["kod projektu"]=kod_projektu,} or (strona_glowna_projektu and "" or nil); end; function p.Nazwa_strony_bazowej_dla_dzieci_ze_zmiennej(frame,i,kod_jezyka) local pf=frame.getParent and frame:getParent() or {args={}}; local pudelko_modul=require("Module:Pudełko"); local strona_glowna_dla_dzieci; if(i~=0)then local kod_jezyka_tego_projektu=pudelko_modul["Kod języka tego projektu"](); if(kod_jezyka==kod_jezyka_tego_projektu)then strona_glowna_dla_dzieci=frame.args["strona główna dla dzieci"] or pf.args["strona główna dla dzieci"] else strona_glowna_dla_dzieci=(frame.args["strona główna dla dzieci "..i] or pf.args["strona główna dla dzieci "..i]) end; else strona_glowna_dla_dzieci=frame.args["strona główna dla dzieci"] or pf.args["strona główna dla dzieci"] end; local kod_projektu_tego_projektu=pudelko_modul["Kod projektu tego projektu"](); local parametry_modul=require("Module:Parametry"); return (parametry_modul.CzyTak(strona_glowna_dla_dzieci))and require("Module:Nazwy")["PEŁNANAZWASTRONY"]{[1]=strona_glowna_dla_dzieci,["kod języka"]=kod_jezyka,["kod projektu"]=kod_projektu_tego_projektu,} or (strona_glowna_dla_dzieci and "" or nil); end; function p.Normalna_przedmiotowa_lub_dyskusji_nazwa_przestrzeni_nazw(nazwa_przestrzeni_nazw, normmalna_przedmiotwa_dyskusji,kod_jezyka,kod_projektu) local nazwa_przestrzeni_nazw_blad; local wiki_modul=require("Module:Wiki"); local nazwy_modul=require("Module:Nazwy"); local czy_biezaca=wiki_modul["CzyBieżącaWiki"]{["kod języka"]=kod_jezyka,["kod projektu"]=kod_projektu,}; if(normmalna_przedmiotwa_dyskusji==0)then if(czy_biezaca)then nazwa_przestrzeni_nazw_blad=nazwy_modul.Np{nazwa=nazwa_przestrzeni_nazw,["kanoniczna"]="tak",["nazwij projektem"]="tak",["nazwij dyskusją projektu"]="tak",["istnieje"]="tak",["wynik błędu nietekstowy"]="tak",}; else nazwa_przestrzeni_nazw_blad=nazwy_modul.NpDane{nazwa=nazwa_przestrzeni_nazw,["kanoniczna"]="tak",["nazwij projektem"]="tak",["nazwij dyskusją projektu"]="tak",["kod języka"]=kod_jezyka,["kod projektu"]=kod_projektu,["istnieje"]="tak",["wynik błędu nietekstowy"]="tak",}; end; elseif(normmalna_przedmiotwa_dyskusji==1)then if(czy_biezaca)then nazwa_przestrzeni_nazw_blad=nazwy_modul.Np{nazwa=nazwa_przestrzeni_nazw, przedmiotowa="tak",["kanoniczna"]="tak",["nazwij projektem"]="tak",["nazwij dyskusją projektu"]="tak",["istnieje"]="tak",["wynik błędu nietekstowy"]="tak",}; else nazwa_przestrzeni_nazw_blad=nazwy_modul.NpDane{nazwa=nazwa_przestrzeni_nazw, przedmiotowa="tak",["kanoniczna"]="tak",["nazwij projektem"]="tak",["nazwij dyskusją projektu"]="tak",["kod języka"]=kod_jezyka,["kod projektu"]=kod_projektu,["istnieje"]="tak",["wynik błędu nietekstowy"]="tak",}; end; elseif(normmalna_przedmiotwa_dyskusji==2)then if(czy_biezaca)then nazwa_przestrzeni_nazw_blad=nazwy_modul.Np{nazwa=nazwa_przestrzeni_nazw, dyskusja="tak",["kanoniczna"]="tak",["nazwij projektem"]="tak",["nazwij dyskusją projektu"]="tak",["istnieje"]="tak",["wynik błędu nietekstowy"]="tak",}; else nazwa_przestrzeni_nazw_blad=nazwy_modul.NpDane{nazwa=nazwa_przestrzeni_nazw, dyskusja="tak",["kanoniczna"]="tak",["nazwij projektem"]="tak",["nazwij dyskusją projektu"]="tak",["kod języka"]=kod_jezyka,["kod projektu"]=kod_projektu,["istnieje"]="tak",["wynik błędu nietekstowy"]="tak",}; end; else if(czy_biezaca)then nazwa_przestrzeni_nazw_blad=nazwy_modul.Np{nazwa=nazwa_przestrzeni_nazw,["kanoniczna"]="tak",["nazwij projektem"]="tak",["nazwij dyskusją projektu"]="tak",["istnieje"]="tak",["wynik błędu nietekstowy"]="tak",}; else nazwa_przestrzeni_nazw_blad=nazwy_modul.NpDane{nazwa=nazwa_przestrzeni_nazw,["kanoniczna"]="tak",["nazwij projektem"]="tak",["nazwij dyskusją projektu"]="tak",["kod języka"]=kod_jezyka,["kod projektu"]=kod_projektu,["istnieje"]="tak",["wynik błędu nietekstowy"]="tak",}; end; end; return nazwa_przestrzeni_nazw_blad end; function p.Nazwa_przestrzeni_nazw(frame,kod_liczbowy_przestrzeni_nazw,czy_uwzglednic_alternatywna_nazwe,numer_jednostki) local pf=frame.getParent and frame:getParent() or {args={}}; local nazwa_przestrzeni_nazw=p.Nazwy_przestrzeni_i_jednostki_podane_o_pewnym_numerze(frame,numer_jednostki,1) or p.Nazwa_przestrzeni_nazw_uzyskana_z_typu_jednostki_z_frame(frame,numer_jednostki); local nazwy_modul=require("Module:Nazwy"); local wiki_modul=require("Module:Wiki"); local kod_jezyka,kod_projektu=p.Wikikody_kontenera(frame,numer_jednostki); local czy_biezaca_wiki=wiki_modul["CzyBieżącaWiki"]{["kod języka"]=kod_jezyka,["kod projektu"]=kod_projektu,}; local czy_blad_nazwy_przestrzeni_nazw; local typ; if(kod_liczbowy_przestrzeni_nazw==1)then typ="przedmiotowa"; if(czy_biezaca_wiki)then czy_blad_nazwy_przestrzeni_nazw=(not nazwa_przestrzeni_nazw)and nazwy_modul["PRZEDMIOTOWAPRZESTRZEŃ"]() or nazwy_modul.Np{nazwa=nazwa_przestrzeni_nazw,przedmiotowa="tak",["istnieje"]="tak",["wynik błędu nietekstowy"]="tak",}; else czy_blad_nazwy_przestrzeni_nazw=(not nazwa_przestrzeni_nazw)and nazwy_modul["PRZEDMIOTOWAPRZESTRZEŃ"]{["kod języka"]=kod_jezyka,["kod projektu"]=kod_projektu,} or nazwy_modul.NpDane{nazwa=nazwa_przestrzeni_nazw,przedmiotowa="tak",["kod języka"]=kod_jezyka,["kod projektu"]=kod_projektu,["istnieje"]="tak",["wynik błędu nietekstowy"]="tak",}; end; elseif(kod_liczbowy_przestrzeni_nazw==2)then if(czy_biezaca_wiki)then typ="dyskusja"; czy_blad_nazwy_przestrzeni_nazw=(not nazwa_przestrzeni_nazw)and nazwy_modul["PRZESTRZEŃDYSKUSJI"]() or nazwy_modul.Np{nazwa=nazwa_przestrzeni_nazw,dyskusja="tak",["istnieje"]="tak",["wynik błędu nietekstowy"]="tak",}; else czy_blad_nazwy_przestrzeni_nazw=(not nazwa_przestrzeni_nazw)and nazwy_modul["PRZESTRZEŃDYSKUSJI"]{["kod języka"]=kod_jezyka,["kod projektu"]=kod_projektu,} or nazwy_modul.NpDane{nazwa=nazwa_przestrzeni_nazw,dyskusja="tak",["kod języka"]=kod_jezyka,["kod projektu"]=kod_projektu,["istnieje"]="tak",["wynik błędu nietekstowy"]="tak",}; end; else if(czy_biezaca_wiki)then czy_blad_nazwy_przestrzeni_nazw=(not nazwa_przestrzeni_nazw)and nazwy_modul["NAZWAPRZESTRZENI"]() or nazwy_modul.Np{nazwa=nazwa_przestrzeni_nazw,["istnieje"]="tak",["wynik błędu nietekstowy"]="tak",}; else czy_blad_nazwy_przestrzeni_nazw=(not nazwa_przestrzeni_nazw)and nazwy_modul["NAZWAPRZESTRZENI"]{["kod języka"]=kod_jezyka,["kod projektu"]=kod_projektu,} or nazwy_modul.NpDane{nazwa=nazwa_przestrzeni_nazw,["kod języka"]=kod_jezyka, ["kod projektu"]=kod_projektu,["istnieje"]="tak",["wynik błędu nietekstowy"]="tak",}; end; end; if(czy_blad_nazwy_przestrzeni_nazw)then return czy_blad_nazwy_przestrzeni_nazw; else if(((czy_uwzglednic_alternatywna_nazwe==nil)and true or czy_uwzglednic_alternatywna_nazwe) and frame.args[1])then local nazwa_przestrzeni_nazw_alternatywnej=mw.text.trim(frame.args[1]); if(mw.ustring.match(nazwa_przestrzeni_nazw_alternatywnej,"^[%w%s_]*$"))then local czy_blad_nazwa_przestrzeni_nazw_alternatywnej; if(czy_biezaca_wiki)then local tab_parametry={nazwa=nazwa_przestrzeni_nazw_alternatywnej,["istnieje"]="tak",["wynik błędu nietekstowy"]="tak",}; if(typ)then tab_parametry[typ]="tak";end; czy_blad_nazwa_przestrzeni_nazw_alternatywnej=nazwy_modul.Np(tab_parametry); else local tab_parametry={nazwa=nazwa_przestrzeni_nazw_alternatywnej,["kod języka"]=kod_jezyka,["kod projektu"]=kod_projektu,["istnieje"]="tak",["wynik błędu nietekstowy"]="tak",}; if(typ)then tab_parametry[typ]="tak";end; czy_blad_nazwa_przestrzeni_nazw_alternatywnej=nazwy_modul.NpDane(tab_parametry); end; return czy_blad_nazwa_przestrzeni_nazw_alternatywnej or "(błąd)"; else return "(błąd)"; end; else local parametry_modul=require("Module:Parametry"); nazwa_przestrzeni_nazw=parametry_modul["Odstępy"]{[1]=nazwa_przestrzeni_nazw,[2]="tak",}; if(mw.ustring.match(nazwa_przestrzeni_nazw,"^[%w%s_]*$"))then return nazwa_przestrzeni_nazw; else return "(błąd)"; end; end; end; end; function p.Nazwa_przestrzeni_nazw_2(frame,czy_uwzglednic_alternatywna_nazwe,i) local nazwa_przestrzeni_nazw,nazwa_jednostki,liczba_numer_jednostki=p.Nazwy_przestrzeni_i_jednostki_podane_o_pewnym_numerze(frame,i); nazwa_przestrzeni_nazw=nazwa_przestrzeni_nazw or p.Nazwa_przestrzeni_nazw_uzyskana_z_typu_jednostki_z_frame(frame,liczba_numer_jednostki); local nazwy_modul=require("Module:Nazwy"); local kod_jezyka,kod_projektu=p.Wikikody_kontenera(frame,liczba_numer_jednostki); local wiki_modul=require("Module:Wiki"); local czy_biezaca_wiki=wiki_modul["CzyBieżącaWiki"]{["kod języka"]=kod_jezyka,["kod projektu"]=kod_projektu,}; local nazwa_przestrzeni_nazw_blad; local parametry_modul=require("Module:Parametry"); if(czy_biezaca_wiki)then nazwa_przestrzeni_nazw=nazwa_przestrzeni_nazw and mw.text.trim(nazwa_przestrzeni_nazw) or nazwy_modul["NAZWAPRZESTRZENI"](); nazwa_przestrzeni_nazw_blad=require("Module:Nazwy").Np{nazwa=nazwa_przestrzeni_nazw,["istnieje"]="tak",["wynik błędu nietekstowy"]="tak",}; if(nazwa_jednostki)then nazwa_jednostki=parametry_modul["Odstępy"]{[1]=nazwa_jednostki,[2]="tak",}; nazwa_jednostki=mw.ustring.gsub(nazwa_jednostki,"^([^#]*)#(.*)$","%1"); local parametry=mw.ustring.match(nazwa_jednostki,"^.*%?([^%?]+)$"); if(parametry and mw.ustring.match(parametry,"[^=]+=[^=]*"))then nazwa_jednostki=mw.ustring.gsub(nazwa_jednostki,"^(.*)%?([^%?]+)$","%1"); end; else nazwa_jednostki=nazwy_modul["NAZWASTRONY"](); end; else nazwa_przestrzeni_nazw=nazwa_przestrzeni_nazw and mw.text.trim(nazwa_przestrzeni_nazw) or nazwy_modul["NAZWAPRZESTRZENI"]{["kod języka"]=kod_jezyka,["kod projektu"]=kod_projektu,}; nazwa_przestrzeni_nazw_blad=require("Module:Nazwy").NpDane{nazwa=nazwa_przestrzeni_nazw,["kod języka"]=kod_jezyka,["kod projektu"]=kod_projektu,["istnieje"]="tak",["wynik błędu nietekstowy"]="tak",}; if(nazwa_jednostki)then local html_modul=require("Module:Html"); nazwa_jednostki=html_modul["NazwaStronyAdresu"](nazwa_jednostki,true); else nazwa_jednostki=nazwy_modul["NAZWASTRONY"]{["kod języka"]=kod_jezyka,["kod projektu"]=kod_projektu,}; end; end; nazwa_przestrzeni_nazw=nazwa_przestrzeni_nazw_blad or nazwa_przestrzeni_nazw; if(not mw.ustring.match(nazwa_jednostki,"^:"))then if(nazwa_przestrzeni_nazw~="")then if(czy_biezaca_wiki)then local nazwy_np_modul=mw.loadData("Module:Nazwy/Np"); if(nazwa_przestrzeni_nazw==nazwy_np_modul.Template)then local nazwa_przestrzeni_nazw_d=require("Module:Nazwy")["NAZWAPRZESTRZENI"](nazwa_jednostki); if(nazwa_przestrzeni_nazw_d==nazwy_np_modul.Template)then nazwa_przestrzeni_nazw=nazwy_np_modul.Template; end; elseif(nazwa_przestrzeni_nazw==nazwy_np_modul.Module)then local nazwa_przestrzeni_nazw_d=require("Module:Nazwy")["NAZWAPRZESTRZENI"](nazwa_jednostki); if(nazwa_przestrzeni_nazw_d==nazwy_np_modul.Module)then nazwa_przestrzeni_nazw=nazwy_np_modul.Module; end; end; else local template_prze=nazwy_modul.NpDane{nazwa="Template",["kod języka"]=kod_jezyka,["kod projektu"]=kod_projektu,}; local module_prze=nazwy_modul.NpDane{nazwa="Module",["kod języka"]=kod_jezyka,["kod projektu"]=kod_projektu,}; if(nazwa_przestrzeni_nazw==template_prze)then local nazwa_przestrzeni_nazw_d=nazwy_modul["NAZWAPRZESTRZENI"]{[1]=nazwa_jednostki,["kod języka"]=kod_jezyka,["kod projektu"]=kod_projektu,}; if(nazwa_przestrzeni_nazw_d==template_prze)then nazwa_przestrzeni_nazw=template_prze; end; elseif(nazwa_przestrzeni_nazw==module_prze)then local nazwa_przestrzeni_nazw_d=nazwy_modul["NAZWAPRZESTRZENI"]{[1]=nazwa_jednostki,["kod języka"]=kod_jezyka,["kod projektu"]=kod_projektu,}; if(nazwa_przestrzeni_nazw_d==module_prze)then nazwa_przestrzeni_nazw=module_prze; end; end; end; if(not nazwa_przestrzeni_nazw_blad)then if(((czy_uwzglednic_alternatywna_nazwe==nil)and true or czy_uwzglednic_alternatywna_nazwe) and frame.args[1])then local wytrimowana_nazwa_przestrzeni_nazw=mw.text.trim(frame.args[1]); if(mw.ustring.match(wytrimowana_nazwa_przestrzeni_nazw,"^[%w%s_]*$"))then if(czy_biezaca_wiki)then local nazwy_modul=require("Module:Nazwy"); local czy_blad_nazwy_przestrzeni_nazw=nazwy_modul.Np{nazwa=wytrimowana_nazwa_przestrzeni_nazw,["istnieje"]="tak",["wynik błędu nietekstowy"]="tak",} return czy_blad_nazwy_przestrzeni_nazw or "(błąd)"; else local nazwy_modul=require("Module:Nazwy"); local nazwa_przestrzeni_nazw_blad2=nazwy_modul.NpDane{nazwa=wytrimowana_nazwa_przestrzeni_nazw,["kod języka"]=kod_jezyka,["kod projektu"]=kod_projektu,["istnieje"]="tak",["wynik błędu nietekstowy"]="tak",}; return nazwa_przestrzeni_nazw_blad2 or "(błąd)"; end; else return "(błąd)"; end; else local wytrimowana_nazwa_przestrzeni_nazw=mw.text.trim(nazwa_przestrzeni_nazw); if(mw.ustring.match(wytrimowana_nazwa_przestrzeni_nazw,"^[%w%s_]*$"))then return wytrimowana_nazwa_przestrzeni_nazw; else return "(błąd)"; end; end; else return nazwa_przestrzeni_nazw; end; else return require("Module:Nazwy")["NAZWAPRZESTRZENI"]{[1]=nazwa_jednostki,["kod języka"]=kod_jezyka,["kod projektu"]=kod_projektu,}; end; else return require("Module:Nazwy")["NAZWAPRZESTRZENI"]{[1]=nazwa_jednostki,["kod języka"]=kod_jezyka,["kod projektu"]=kod_projektu,}; end; end; function p.Nazwa_przestrzeni_nazw_przedmiotowa_dyskusji_2(frame,czy_uwzglednic_alternatywna_nazwe,i,typ) local numer_jednostki=i or frame.args["numer jednostki"]; local liczba_numer_jednostki=((numer_jednostki)and(tonumber(numer_jednostki))or 0); local pudelko_modul=require("Module:Pudełko"); local tab_nazwa={ ["przedmiotowa"]="Nazwa przedmiotowej przestrzeni nazw", ["dyskusja"]="Nazwa przestrzeni nazw", }; local nazwa_przestrzeni_nazw=pudelko_modul[tab_nazwa[typ]](frame,czy_uwzglednic_alternatywna_nazwe,liczba_numer_jednostki); local nazwy_modul=require("Module:Nazwy"); if(nazwa_przestrzeni_nazw=="")then local nazwa_jednostki=pudelko_modul["Nazwa jednostki"](frame,liczba_numer_jednostki); local kod_jezyka,kod_projektu=p.Wikikody_kontenera(frame,liczba_numer_jednostki); local tab_nazwa={ ["przedmiotowa"]="PRZEDMIOTOWAPRZESTRZEŃ", ["dyskusja"]="PRZESTRZEŃDYSKUSJI", }; nazwa_przestrzeni_nazw=nazwy_modul[tab_nazwa[typ]]{nazwa=nazwa_jednostki,["kod języka"]=kod_jezyka,["kod projektu"]=kod_projektu,}; else if(typ=="dyskusja")then local wiki_modul=require("Module:Wiki"); local czy_biezaca=wiki_modul["CzyBieżącaWiki"]{["kod języka"]=kod_jezyka,["kod projektu"]=kod_projektu,}; if(czy_biezaca)then nazwa_przestrzeni_nazw=nazwy_modul.Np{[typ]="tak",nazwa=nazwa_przestrzeni_nazw}; else nazwa_przestrzeni_nazw=nazwy_modul.NpDane{[typ]="tak",nazwa=nazwa_przestrzeni_nazw,["kod języka"]=kod_jezyka,["kod projektu"]=kod_projektu,}; end; end; end; return nazwa_przestrzeni_nazw; end; function p.Kod_jezyka(frame,i,wartosc_domyslna) local pudelko_modul=require("Module:Pudełko"); if(not i)then return pudelko_modul["Kod języka tego projektu"]();end; local pf=frame.getParent and frame:getParent() or {args={}}; if(i==0)then return pudelko_modul["Kod języka tego projektu"](); elseif(i==1)then local parametry_modul=require("Module:Parametry"); local kod_jezyka=frame.args["kod języka"] or frame.args["kod języka 1"] or pf.args["kod języka"] or pf.args["kod języka 1"] return ((kod_jezyka)and(kod_jezyka~=""))and mw.text.trim(kod_jezyka) or ((parametry_modul.CzyTak(wartosc_domyslna))and wartosc_domyslna or nil); elseif(i>1)then local parametry_modul=require("Module:Parametry"); local kod_jezyka=frame.args["kod języka "..i] or pf.args["kod języka "..i] return ((kod_jezyka)and(kod_jezyka~=""))and mw.text.trim(kod_jezyka) or ((parametry_modul.CzyTak(wartosc_domyslna))and wartosc_domyslna or nil); end; end function p.Kod_projektu(frame,i,wartosc_domyslna) local pudelko_modul=require("Module:Pudełko"); if(not i)then return pudelko_modul["Kod projektu tego projektu"]();end; local pf=frame.getParent and frame:getParent() or {args={}}; if(i==0)then return pudelko_modul["Kod projektu tego projektu"](); elseif(i==1)then local parametry_modul=require("Module:Parametry"); local kod_projektu=frame.args["kod projektu"] or frame.args["kod projektu 1"] or pf.args["kod projektu"] or pf.args["kod projektu 1"] return ((kod_projektu)and(kod_projektu~=""))and mw.text.trim(kod_projektu) or ((parametry_modul.CzyTak(wartosc_domyslna))and wartosc_domyslna or nil); elseif(i>1)then local parametry_modul=require("Module:Parametry"); local kod_projektu=frame.args["kod projektu "..i] or pf.args["kod projektu "..i] return ((kod_projektu)and(kod_projektu~=""))and mw.text.trim(kod_projektu) or ((parametry_modul.CzyTak(wartosc_domyslna))and wartosc_domyslna or nil); end; end function p.Klucz_projektu(frame,i,wartosc_domyslna_jezyka,wartosc_domyslna_projektu) local pf=frame.getParent and frame:getParent() or {args={}}; local klucz_projektu; local function domyslne_klucz(klucz_projektu) local parametry_modul=require("Module:Parametry"); return ((klucz_projektu)and(klucz_projektu~=""))and mw.text.trim(klucz_projektu)or((parametry_modul.CzyTak(wartosc_domyslna_jezyka)and(parametry_modul.CzyTak(wartosc_domyslna_projektu)))and (wartosc_domyslna_jezyka..":" ..wartosc_domyslna_projektu)or(parametry_modul.CzyTak(wartosc_domyslna_jezyka) and wartosc_domyslna_jezyka or (parametry_modul.CzyTak(wartosc_domyslna_projektu) and wartosc_domyslna_projektu or nil))); end; if(i==0)then return nil; elseif(i==1)then local klucz_projektu=frame.args["klucz projektu"] or frame.args["klucz projektu 1"] or pf.args["klucz projektu"] or pf.args["klucz projektu 1"]; return domyslne_klucz(klucz_projektu); elseif(i>1)then local klucz_projektu=frame.args["klucz projektu "..i] or pf.args["klucz projektu "..i]; return domyslne_klucz(klucz_projektu); end; end; function p.Wikikody_kontenera(frame,i,wartosc_domyslna_jezyka,wartosc_domyslna_projektu) local wiki_modul=require("Module:Wiki"); local kod_jezyka,kod_projektu=wiki_modul.KodyWiki(p.Klucz_projektu(frame,i,wartosc_domyslna_jezyka,wartosc_domyslna_projektu),p.Kod_jezyka(frame,i,wartosc_domyslna_jezyka),p.Kod_projektu(frame,i,wartosc_domyslna_projektu)); return kod_jezyka,kod_projektu; end; function p.Nazwa_przestrzeni_nazw_od_typu_jednostki(typ,args,bez_analizy) if(not bez_analizy)then local parametry_modul=require("Module:Parametry"); if((((not parametry_modul.CzyTak(args["obsługiwane jednostki jako nieopisowe strony"]))and((typ=="artykuł")or(typ=="podręcznik")))or (typ=="artykuł")))then return ""; elseif(((not parametry_modul.CzyTak(args["obsługiwane jednostki jako nieopisowe strony"]))and((typ=="artykuł dla dzieci")or(typ=="podręcznik dla dzieci")))or(typ=="artykuł dla dzieci"))then return "Wikijunior"; elseif((not parametry_modul.CzyTak(args["obsługiwane brudnopisy jako normalne strony"])) and(((not parametry_modul.CzyTak(args["obsługiwane jednostki jako nieopisowe strony"]))and(parametry_modul.CzyTak(args["obsługiwane jednostki brudnopisu projektu"])and (typ=="podręcznik brudnopisu projektu" or typ=="artykuł brudnopisu projektu")or (typ=="jednostka brudnopisu projektu")) or (typ=="strona brudnopisu projektu"))or(typ=="strona projektu"))or (typ=="strona projektu"))then return "Project"; elseif((parametry_modul.CzyTak(args["obsługiwane strony jako niebrudnopisowe jednostki programowe"]))and (typ=="strona szablonu") or(not parametry_modul.CzyTak(args["obsługiwane brudnopisy jako normalne strony"]) and((not parametry_modul.CzyTak(args["obsługiwane opisy jako strony jednostek programowych"]) and not parametry_modul.CzyTak(args["obsługiwane jednostki jako nieopisowe strony"]) and not parametry_modul.CzyTak(args["obsługiwane nieudokumentowane szablony jako szablony"])) and((typ=="strona brudnopisu szablonu")or(typ=="strona brudnopisu opisu szablonu"))or(typ=="strona brudnopisu szablonu")) or((not parametry_modul.CzyTak(args["obsługiwane opisy jako strony jednostek programowych"]) and not parametry_modul.CzyTak(args["obsługiwane jednostki jako nieopisowe strony"]) and not parametry_modul.CzyTak(args["obsługiwane nieudokumentowane szablony jako szablony"])) and((typ=="strona szablonu")or(typ=="strona opisu szablonu"))or(typ=="strona szablonu"))))then return "Template"; elseif((parametry_modul.CzyTak(args["obsługiwane strony jako niebrudnopisowe jednostki programowe"]))and (typ=="strona modułu") or(not parametry_modul.CzyTak(args["obsługiwane brudnopisy jako normalne strony"]) and((not parametry_modul.CzyTak(args["obsługiwane opisy jako strony jednostek programowych"]) and not parametry_modul.CzyTak(args["obsługiwane jednostki jako nieopisowe strony"])) and((typ=="strona brudnopisu modułu")or(typ=="strona brudnopisu opisu modułu"))or(typ=="strona brudnopisu modułu")) or((not parametry_modul.CzyTak(args["obsługiwane opisy jako strony jednostek programowych"]) and not parametry_modul.CzyTak(args["obsługiwane jednostki jako nieopisowe strony"])) and((typ=="strona modułu")or(typ=="strona opisu modułu"))or(typ=="strona modułu"))))then return "Module"; elseif(not parametry_modul.CzyTak(args["obsługiwane jednostki użytkownika jako normalne strony"]) and(((not parametry_modul.CzyTak(args["obsługiwane jednostki jako nieopisowe strony"]))and(parametry_modul.CzyTak(args["obsługiwane jednostki użytkownika"])and (typ=="podręcznik użytkownika" or typ=="artykuł użytkownika") or (typ=="jednostka użytkownika")) or (typ=="strona użytkownika"))or(typ=="strona główna użytkownika"))or(typ=="strona użytkownika"))then return "User"; elseif(typ=="strona pliku")then return "File"; elseif(typ=="strona kategorii")then return "Category"; elseif(typ=="strona pomocy")then return "Help"; elseif(typ=="strona komunikatu")then return "MediaWiki"; elseif(typ=="strona specjalna")then return "Special"; elseif(typ=="strona gadżetu")then return "Gadget"; elseif(typ=="strona główna projektu")then return "Project"; elseif(typ=="strona główna dla dzieci")then return "Wikijunior"; end; return; end; if(typ)then if((typ=="artykuł")or(typ=="podręcznik"))then return ""; elseif((typ=="artykuł dla dzieci")or(typ=="podręcznik dla dzieci"))then return "Wikijunior"; elseif((typ=="podręcznik brudnopisu projektu")or(typ=="artykuł brudnopisu projektu")or(typ=="jednostka brudnopisu projektu")or(typ=="strona brudnopisu projektu")or(typ=="strona projektu"))then return "Project"; elseif((typ=="strona szablonu")or(typ=="strona opisu szablonu")or(typ=="strona brudnopisu szablonu")or(typ=="strona brudnopisu opisu szablonu"))then return "Template"; elseif((typ=="strona modułu")or(typ=="strona opisu modułu")or(typ=="strona brudnopisu modułu")or(typ=="strona brudnopisu opisu modułu"))then return "Module"; elseif((typ=="podręcznik użytkownika")or(typ=="artykuł użytkownika")or(typ=="jednostka użytkownika")or(typ=="strona użytkownika")or(typ=="strona główna użytkownika"))then return "User"; elseif(typ=="strona pliku")then return "File"; elseif(typ=="strona kategorii")then return "Category"; elseif(typ=="strona pomocy")then return "Help"; elseif(typ=="strona komunikatu")then return "MediaWiki"; elseif(typ=="strona specjalna")then return "Special"; elseif(typ=="strona gadżetu")then return "Gadget"; elseif(typ=="strona główna projektu")then return "Project"; elseif(typ=="strona główna dla dzieci")then return "Wikijunior"; end; end; end; function p.Typ_jednostki_uzyskany_z_frame(frame,i) local numer_jednostki=i or frame.args["numer jednostki"]; local liczba_numer_jednostki=tonumber(numer_jednostki) or 0; local pf=frame.getParent and frame:getParent() or {args={}}; local typ; if liczba_numer_jednostki~=0 then typ=liczba_numer_jednostki and( (frame.args["typ jednostki "..liczba_numer_jednostki] or frame.args["typ jednostki i"]) or (pf.args["typ jednostki "..liczba_numer_jednostki] or pf.args["typ jednostki i"]) ); if(not typ)then local nazwa_jednostki=p.Nazwy_przestrzeni_i_jednostki_podane_o_pewnym_numerze(frame,liczba_numer_jednostki,2); if(nazwa_jednostki)then if(not mw.ustring.match(mw.text.trim(nazwa_jednostki),"^:"))then local nazwa_przesrzeni_nazw=p.Nazwy_przestrzeni_i_jednostki_podane_o_pewnym_numerze(frame,liczba_numer_jednostki,1); if(not nazwa_przesrzeni_nazw)then typ=frame.args["typ jednostki"] or pf.args["typ jednostki"]; end; end; end; end; else typ=frame.args["typ jednostki"] or pf.args["typ jednostki"]; end; return typ,liczba_numer_jednostki; end; function p.Czy_dyskusja_typu_jednostki_z_frame_od_dyskusja_typu_jednostki(frame,i) local numer_jednostki=i or frame.args["numer jednostki"]; local liczba_numer_jednostki=((numer_jednostki)and(tonumber(numer_jednostki))or 0); local pf=frame:getParent() or {args={},}; local function FuncTemp(liczba_numer_jednostki) local dyskusja_parametr="dyskusja typu jednostki"; if(liczba_numer_jednostki==0)then return frame.args[dyskusja_parametr] or pf.args[dyskusja_parametr]; else return ((frame.args[dyskusja_parametr.." "..liczba_numer_jednostki] or pf.args[dyskusja_parametr.." "..liczba_numer_jednostki]) or (frame.args[dyskusja_parametr.." i"] or pf.args[dyskusja_parametr.." i"]) or(frame.args[dyskusja_parametr] or pf.args[dyskusja_parametr])); end; end; local czy_dyskusja=FuncTemp(liczba_numer_jednostki); local parametry_modul=require("Module:Parametry"); local czy_dyskusja=parametry_modul.CzyTak(czy_dyskusja); return czy_dyskusja; end; function p.Nazwa_przestrzeni_nazw_uzyskana_z_typu_jednostki_z_frame(frame,i) local typ=p.Typ_jednostki_uzyskany_z_frame(frame,i); local nazwa_przestrzeni_nazw=typ and p.Nazwa_przestrzeni_nazw_od_typu_jednostki(typ,nil,true) or nil; if(nazwa_przestrzeni_nazw)then local czy_dyskusja=p.Czy_dyskusja_typu_jednostki_z_frame_od_dyskusja_typu_jednostki(frame,i); if(czy_dyskusja)then if(nazwa_przestrzeni_nazw=="")then return "Talk"; else return nazwa_przestrzeni_nazw.." talk"; end; else return nazwa_przestrzeni_nazw; end; else return nil; end; end; function p.Typ_jednostki(frame, kod_liczbowy_przestrzeni_nazw,i,numer_argorytmu) local parametry_modul=require("Module:Parametry"); local analiza=parametry_modul.CzyTak(frame.args["analiza"]); local typ,liczba_numer_jednostki=p.Typ_jednostki_uzyskany_z_frame(frame,i); local uzyskana_przestrzen_nazw_od_typu_jednostki; local nazwa_przestrzeni_nazw_podana,nazwa_jednostki_podana=p.Nazwy_przestrzeni_i_jednostki_podane_o_pewnym_numerze(frame,liczba_numer_jednostki); if((not analiza)and(typ))then if(typ~="")then uzyskana_przestrzen_nazw_od_typu_jednostki=p.Nazwa_przestrzeni_nazw_od_typu_jednostki(typ,frame.args); if(uzyskana_przestrzen_nazw_od_typu_jednostki)then if((not nazwa_przestrzeni_nazw_podana)and(not nazwa_jednostki_podana))then return typ; end; else return "(błąd typu jednostki)"; end; end; end; local nazwa_przestrzeni_nazw,nazwa_jednostki=p.Uzyskanie_nazw_jednostki(frame,kod_liczbowy_przestrzeni_nazw,liczba_numer_jednostki,numer_argorytmu); local nazwy_modul=require("Module:Nazwy"); local kod_jezyka,kod_projektu=p.Wikikody_kontenera(frame,liczba_numer_jednostki); local wiki_modul=require("Module:Wiki"); local czy_biezaca=wiki_modul["CzyBieżącaWiki"]{["kod języka"]=kod_jezyka,["kod projektu"]=kod_projektu,}; local czy_blad_nazwa_przestrzeni_nazw; if(czy_biezaca)then czy_blad_nazwa_przestrzeni_nazw=nazwy_modul.Np{nazwa=nazwa_przestrzeni_nazw,["kanoniczna"]="tak",["nazwij projektem"]="tak",["nazwij dyskusją projektu"]="tak",["istnieje"]="tak",["wynik błędu nietekstowy"]="tak",} else czy_blad_nazwa_przestrzeni_nazw=nazwy_modul.NpDane{nazwa=nazwa_przestrzeni_nazw,["kanoniczna"]="tak",["nazwij projektem"]="tak",["nazwij dyskusją projektu"]="tak",["kod języka"]=kod_jezyka,["kod projektu"]=kod_projektu,["istnieje"]="tak",["wynik błędu nietekstowy"]="tak",} end; if(not czy_blad_nazwa_przestrzeni_nazw)then return "(błąd nazwy przestrzeni nazw)";end; nazwa_przestrzeni_nazw=czy_blad_nazwa_przestrzeni_nazw; --- --- if((not analiza)and(typ))then if(typ~="")then ---typ jednostki if(uzyskana_przestrzen_nazw_od_typu_jednostki)then if((nazwa_przestrzeni_nazw_podana)and(not nazwa_jednostki_podana))then if(uzyskana_przestrzen_nazw_od_typu_jednostki==nazwa_przestrzeni_nazw)then return typ; else return "(błąd niezgodności)"; end; end; else return "(błąd typu jednostki)"; end; end; end; local function Typ_jednostki() if(nazwa_jednostki~="")then --local kod_jezyka,kod_projektu=KodyWikiPudelka(frame,liczba_numer_jednostki); --local klucz_projektu=kod_projektu..":"..kod_jezyka; local pudelko_modul=require("Module:Pudełko"); local pelna_nazwa_strony=((nazwa_przestrzeni_nazw~="")and nazwa_przestrzeni_nazw..":" or "")..nazwa_jednostki; if(pudelko_modul.CzyNiepoprawnaNazwa(pelna_nazwa_strony))then return "(błąd nazwy jednostki)";end; local nazwy_modul=require("Module:Nazwy") pelna_nazwa_strony=nazwy_modul["PEŁNANAZWASTRONY"]{[1]=pelna_nazwa_strony,["kod języka"]=kod_jezyka,["kod projektu"]=kod_projektu,}; local norm_przed_lub_dyskusji=p.Normalna_przedmiotowa_lub_dyskusji_nazwa_przestrzeni_nazw(nazwa_przestrzeni_nazw,1,kod_jezyka,kod_projektu); if(kod_projektu==pudelko_modul["Kod projektu tego projektu"]())then local nazwa_strony_glownej_dla_dzieci_ze_zmiennej=p.Nazwa_strony_bazowej_dla_dzieci_ze_zmiennej(frame,liczba_numer_jednostki,kod_jezyka); if(nazwa_strony_glownej_dla_dzieci_ze_zmiennej=="")then return "(błąd nazwy strony głównej dla dzieci)";end; local nazwa_strony_glownej_wikijuniora=p.Nazwa_strony_bazowej_dla_dzieci_z_wikidanych(kod_jezyka); local nazwa_strony_glownej_dla_dzieci_uzyskana=(not nazwa_strony_glownej_dla_dzieci_ze_zmiennej)and nazwa_strony_glownej_wikijuniora or nazwa_strony_glownej_dla_dzieci_ze_zmiennej; if(nazwa_strony_glownej_dla_dzieci_uzyskana)then if(pudelko_modul.CzyNiepoprawnaNazwa(nazwa_strony_glownej_dla_dzieci_uzyskana))then return "(błąd nazwy strony głównej dla dzieci)";end; nazwa_strony_glownej_dla_dzieci_uzyskana=nazwy_modul["PEŁNANAZWASTRONY"]{[1]=nazwa_strony_glownej_dla_dzieci_uzyskana,["kod języka"]=kod_jezyka,["kod projektu"]=kod_projektu,}; if(pelna_nazwa_strony==nazwa_strony_glownej_dla_dzieci_uzyskana)then return "strona główna dla dzieci";end; end; end; local nazwa_strony_glownej_projektu_ze_zmiennej=p.Nazwa_strony_bazowej_projektu_ze_zmiennej(frame,liczba_numer_jednostki,kod_jezyka,kod_projektu); if(nazwa_strony_glownej_projektu_ze_zmiennej=="")then return "(błąd nazwy strony głównej projektu)";end; local nazwa_strony_glownej_projektu_z_wikidanych=p.Nazwa_strony_bazowej_projektu_z_wikidanych(kod_jezyka,kod_projektu); local nazwa_strony_glownej_projektu_uzyskana=(not nazwa_strony_glownej_projektu_ze_zmiennej)and nazwa_strony_glownej_projektu_z_wikidanych or nazwa_strony_glownej_projektu_ze_zmiennej; if(nazwa_strony_glownej_projektu_uzyskana)then if(pudelko_modul.CzyNiepoprawnaNazwa(nazwa_strony_glownej_projektu_uzyskana))then return "(błąd nazwy strony głównej projektu)";end; nazwa_strony_glownej_projektu_uzyskana=nazwy_modul["PEŁNANAZWASTRONY"]{[1]=nazwa_strony_glownej_projektu_uzyskana,["kod języka"]=kod_jezyka,["kod projektu"]=kod_projektu,}; if(pelna_nazwa_strony==nazwa_strony_glownej_projektu_uzyskana)then return "strona główna projektu";end; end; if(norm_przed_lub_dyskusji=="")then local parametry_modul=require("Module:Parametry"); if(parametry_modul.CzyTak(frame.args["obsługiwane jednostki jako nieopisowe strony"]))then return "artykuł"; else local it=mw.ustring.match(nazwa_jednostki,"^[^/]+$"); if(it)then return "podręcznik";else return "artykuł";end; end; elseif(norm_przed_lub_dyskusji=="Wikijunior")then local parametry_modul=require("Module:Parametry"); if(parametry_modul.CzyTak(frame.args["obsługiwane jednostki jako nieopisowe strony"]))then return "artykuł dla dzieci"; else local it=mw.ustring.match(nazwa_jednostki,"^[^/]+$"); if(it)then return "podręcznik dla dzieci";else return "artykuł dla dzieci";end; end; elseif(norm_przed_lub_dyskusji=="User")then local parametry_modul=require("Module:Parametry"); if(parametry_modul.CzyTak(frame.args["obsługiwane jednostki użytkownika jako normalne strony"]))then return "strona użytkownika"; else local czy_podstrony=mw.ustring.match(nazwa_jednostki,"^[^/]+$") if(czy_podstrony)then return "strona główna użytkownika"; else if(not parametry_modul.CzyTak(frame.args["obsługiwane jednostki jako nieopisowe strony"]))then if(parametry_modul.CzyTak(frame.args["obsługiwane jednostki użytkownika"]))then local czy_ksiazka=mw.ustring.match(nazwa_jednostki,"^[^/]+/[^/]*$"); if(czy_ksiazka)then return "podręcznik użytkownika"; else return "artykuł użytkownika"; end; else return "jednostka użytkownika"; end; else return "strona użytkownika"; end; end; end; elseif(norm_przed_lub_dyskusji=="File")then return "strona pliku"; elseif(norm_przed_lub_dyskusji=="Category")then return "strona kategorii"; elseif(norm_przed_lub_dyskusji=="Project")then local parametry_modul=require("Module:Parametry"); if(parametry_modul.CzyTak(frame.args["obsługiwane brudnopisy jako normalne strony"]))then return "strona projektu";end; if(mw.ustring.match(nazwa_jednostki,"^%s*[Bb]rudnopis/[^/]*/.*"))then if(not parametry_modul.CzyTak(frame.args["obsługiwane jednostki jako nieopisowe strony"]))then if(parametry_modul.CzyTak(frame.args["obsługiwane jednostki brudnopisu projektu"]))then local czy_ksiazka=mw.ustring.match(nazwa_jednostki,"^%s*[Bb]rudnopis/[^/]*/[^/]*$"); if(czy_ksiazka)then return "podręcznik brudnopisu projektu"; else return "artykuł brudnopisu projektu"; end; else return "jednostka brudnopisu projektu"; end; else return "strona brudnopisu projektu"; end; else return "strona projektu"; end; elseif(norm_przed_lub_dyskusji=="Help")then return "strona pomocy"; elseif(norm_przed_lub_dyskusji=="MediaWiki")then return "strona komunikatu"; elseif(norm_przed_lub_dyskusji=="Special")then return "strona specialna"; elseif(norm_przed_lub_dyskusji=="Gadget")then return "strona gadżetu"; elseif(norm_przed_lub_dyskusji=="Template")then local parametry_modul=require("Module:Parametry"); if(parametry_modul.CzyTak(frame.args["obsługiwane strony jako niebrudnopisowe jednostki programowe"]))then return "strona szablonu";end; local function CzySzablonAlboOpis(nazwa_przestrzeni_nazw,nazwa_jednostki,szablon,opis_szablonu,strona_szablonu,prefix) local parametry_modul=require("Module:Parametry"); if(parametry_modul.CzyTak(frame.args["obsługiwane opisy jako strony jednostek programowych"]) or parametry_modul.CzyTak(frame.args["obsługiwane jednostki jako nieopisowe strony"]))then return szablon; else if(mw.ustring.match(nazwa_jednostki,"^"..prefix..".*/opis$"))then return opis_szablonu; else if(not parametry_modul.CzyTak(frame.args["obsługiwane nieudokumentowane szablony jako szablony"]))then local czy_brudnopis=mw.ustring.match(nazwa_jednostki,"^"..prefix..".*$"); if(czy_brudnopis)then local pagename=(nazwa_przestrzeni_nazw~="")and nazwa_przestrzeni_nazw..":"..nazwa_jednostki or nazwa_jednostki; local czy_istnieje_strona,tab=require("Module:Techniczne").PoliczZbiory(pagename); if(czy_istnieje_strona==1)then local czy_brudnopis_opisu_szablonu=require("Module:Łatki").contentMatch{ [1]='<noinclude>.-{{%s*[Dd]okumentacja%s*}}.-</noinclude>', [2]='<noinclude>.-{{%s*[Dd]okumentacja%s*|.-</noinclude>',pagename=pagename,namespace=0 }; if(not czy_brudnopis_opisu_szablonu)then return opis_szablonu;else return szablon;end; else return szablon; end; else return strona_szablonu; end; else return szablon; end; end; end; end; if((not parametry_modul.CzyTak(frame.args["obsługiwane brudnopisy jako normalne strony"]))and(mw.ustring.match(nazwa_jednostki,"^%s*[Bb]rudnopis/[^/]*/.*")))then return CzySzablonAlboOpis(norm_przed_lub_dyskusji,nazwa_jednostki,"strona brudnopisu szablonu","strona brudnopisu opisu szablonu","strona szablonu","[Bb]rudnopis/[^/]*/"); else return CzySzablonAlboOpis(norm_przed_lub_dyskusji,nazwa_jednostki,"strona szablonu","strona opisu szablonu","strona szablonu",""); end; elseif(norm_przed_lub_dyskusji=="Module")then local parametry_modul=require("Module:Parametry"); if(parametry_modul.CzyTak(frame.args["obsługiwane strony jako niebrudnopisowe jednostki programowe"]))then return "strona modułu";end; if((not parametry_modul.CzyTak(frame.args["obsługiwane brudnopisy jako normalne strony"]))and(mw.ustring.match(nazwa_jednostki,"^%s*[Bb]rudnopis/[^/]*/.*")))then if(parametry_modul.CzyTak(frame.args["obsługiwane opisy jako strony jednostek programowych"]) or parametry_modul.CzyTak(frame.args["obsługiwane jednostki jako nieopisowe strony"]))then return "strona brudnopisu modułu" else local pelna_nazwa_strony=(norm_przed_lub_dyskusji~="")and norm_przed_lub_dyskusji..":"..nazwa_jednostki or nazwa_jednostki; pelna_nazwa_strony=require("Module:Nazwy")["PEŁNANAZWASTRONY"]{[1]=pelna_nazwa_strony,["kod języka"]=kod_jezyka,["kod projektu"]=kod_projektu,}; local pelna_nazwa_strony_brudnopisu_opisu_modulu=require("Module:Techniczne")["PełnaNazwaOpisuModułu"](pelna_nazwa_strony); if(pelna_nazwa_strony==pelna_nazwa_strony_brudnopisu_opisu_modulu)then return "strona brudnopisu opisu modułu"; else return "strona brudnopisu modułu"; end; end; else if(parametry_modul.CzyTak(frame.args["obsługiwane opisy jako strony jednostek programowych"]) or parametry_modul.CzyTak(frame.args["obsługiwane jednostki jako nieopisowe strony"]))then return "strona modułu" else local pelna_nazwa_strony=(norm_przed_lub_dyskusji~="")and norm_przed_lub_dyskusji..":"..nazwa_jednostki or nazwa_jednostki; pelna_nazwa_strony=require("Module:Nazwy")["PEŁNANAZWASTRONY"]{[1]=pelna_nazwa_strony,["kod języka"]=kod_jezyka,["kod projektu"]=kod_projektu,}; local pelna_nazwa_opisu_modulu=require("Module:Techniczne")["PełnaNazwaOpisuModułu"](pelna_nazwa_strony); if(pelna_nazwa_strony==pelna_nazwa_opisu_modulu)then return "strona opisu modułu"; else return "strona modułu"; end; end; end; else return "inne"; end; end; return "inne"; end; local typ_jednostki=Typ_jednostki(); local function TempFunc(typ_jednostki) if( (kod_liczbowy_przestrzeni_nazw==2) or((kod_liczbowy_przestrzeni_nazw==0)and(p.Czy_dyskusja_typu_jednostki_z_frame_od_dyskusja_typu_jednostki(frame,i))) )then typ_jednostki,ile=mw.ustring.gsub(typ_jednostki,"^(%S+)(%s+)",function(strona,spacja) return strona.." dyskusji"..spacja; end); return typ_jednostki; end; return typ_jednostki; end; if(((analiza)or(nazwa_jednostki_podana))and(typ)and(typ~=""))then if(typ_jednostki==typ)then return TempFunc(typ_jednostki); elseif(nazwa_jednostki_podana)then return "(błąd parametrów pudełkowych)" else return "(błąd typu jednostki)"; end; end; return TempFunc(typ_jednostki); end; function p.Uzyskanie_nazw_jednostki(frame,kod_liczbowy_przestrzeni_nazw,i,numer_argorytmu,co_ma_liczyc) local nazwa_przestrzeni_fun,nazwa_jednostki_fun; if(kod_liczbowy_przestrzeni_nazw==0)then nazwa_przestrzeni_fun="Nazwa przestrzeni nazw"; nazwa_jednostki_fun="Nazwa jednostki"; elseif(kod_liczbowy_przestrzeni_nazw==1)then nazwa_przestrzeni_fun="Nazwa przedmiotowej przestrzeni nazw"; nazwa_jednostki_fun="Nazwa przedmiotowa jednostki"; elseif(kod_liczbowy_przestrzeni_nazw==2)then nazwa_przestrzeni_fun="Nazwa przestrzeni nazw dyskusji" nazwa_jednostki_fun="Nazwa dyskusji jednostki"; else nazwa_przestrzeni_fun="Nazwa przestrzeni nazw"; nazwa_jednostki_fun="Nazwa jednostki"; end; local pudelko_modul=require("Module:Pudełko"); if(not numer_argorytmu)then if((not i)or(i==0))then if((not co_ma_liczyc)or(co_ma_liczyc==0))then local nazwa_przestrzeni_nazw=pudelko_modul[nazwa_przestrzeni_fun](frame,false); local nazwa_jednostki=pudelko_modul["Nazwa jednostki"](frame); return nazwa_przestrzeni_nazw,nazwa_jednostki; elseif(co_ma_liczyc==1)then local nazwa_przestrzeni_nazw=pudelko_modul[nazwa_przestrzeni_fun](frame,false); return nazwa_przestrzeni_nazw; elseif(co_ma_liczyc==2)then return pudelko_modul["Nazwa jednostki"](frame); end; else if((not co_ma_liczyc)or(co_ma_liczyc==0))then local n=p.Nazwa_przestrzeni_nazw_dodatkowe(frame,i); local parametry_modul=require("Module:Parametry"); n=parametry_modul.CzyTak(n); local nazwa_przestrzeni_nazw=(n)and pudelko_modul[nazwa_przestrzeni_fun](frame,false,i) or pudelko_modul[nazwa_przestrzeni_fun.." 2"](frame,false,i); local nazwa_jednostki=(n)and pudelko_modul["Nazwa jednostki"](frame,i) or pudelko_modul[nazwa_jednostki_fun.." 2"](frame,i); return nazwa_przestrzeni_nazw,nazwa_jednostki; elseif(co_ma_liczyc==1)then local n=p.Nazwa_przestrzeni_nazw_dodatkowe(frame,i); local parametry_modul=require("Module:Parametry"); n=parametry_modul.CzyTak(n); local nazwa_przestrzeni_nazw=(n)and pudelko_modul[nazwa_przestrzeni_fun](frame,false,i) or pudelko_modul[nazwa_przestrzeni_fun.." 2"](frame,false,i); return nazwa_przestrzeni_nazw; elseif(co_ma_liczyc==2)then local n=p.Nazwa_przestrzeni_nazw_dodatkowe(frame,i); local parametry_modul=require("Module:Parametry"); n=parametry_modul.CzyTak(n); return (n)and pudelko_modul["Nazwa jednostki"](frame,i) or pudelko_modul[nazwa_jednostki_fun.." 2"](frame,i); end; end; else if(numer_argorytmu==0)then if((not co_ma_liczyc)or(co_ma_liczyc==0))then local nazwa_przestrzeni_nazw=pudelko_modul[nazwa_przestrzeni_fun](frame,false,i); local nazwa_jednostki=pudelko_modul["Nazwa jednostki"](frame,i); return nazwa_przestrzeni_nazw,nazwa_jednostki; elseif(co_ma_liczyc==1)then local nazwa_przestrzeni_nazw=pudelko_modul[nazwa_przestrzeni_fun](frame,false,i); return nazwa_przestrzeni_nazw; elseif(co_ma_liczyc==2)then return pudelko_modul["Nazwa jednostki"](frame,i); end; else if((not co_ma_liczyc)or(co_ma_liczyc==0))then local nazwa_przestrzeni_nazw=pudelko_modul[nazwa_przestrzeni_fun.." 2"](frame,false,i); local nazwa_jednostki=pudelko_modul[nazwa_jednostki_fun.." 2"](frame,i); return nazwa_przestrzeni_nazw,nazwa_jednostki; elseif(co_ma_liczyc==1)then local nazwa_przestrzeni_nazw=pudelko_modul[nazwa_przestrzeni_fun.." 2"](frame,false,i); return nazwa_przestrzeni_nazw; elseif(co_ma_liczyc==2)then return pudelko_modul[nazwa_jednostki_fun.." 2"](frame,i); end; end; end; end; function p.Nazwa_przestrzeni_nazw_dodatkowe(frame,numer_jednostki) local pf=frame.getParent and frame:getParent() or {args={}}; return frame.args["nazwa przestrzeni nazw "..tostring(numer_jednostki)] or pf.args["nazwa przestrzeni nazw "..tostring(numer_jednostki)] end; function p.Nazwa_jednostki(frame,i) local pf=frame.getParent and frame:getParent() or {args={}}; local nazwa_jednostki,liczba_numer_jednostki=p.Nazwy_przestrzeni_i_jednostki_podane_o_pewnym_numerze(frame,i,2); local kod_jezyka,kod_projektu=p.Wikikody_kontenera(frame,liczba_numer_jednostki); if(nazwa_jednostki)then nazwa_jednostki=mw.text.trim(nazwa_jednostki); nazwa_jednostki=mw.ustring.gsub(nazwa_jednostki,"^:",""); nazwa_jednostki=mw.ustring.gsub(nazwa_jednostki,"^([^#]*)#(.*)$","%1"); local parametry=mw.ustring.match(nazwa_jednostki,"^.*%?([^%?]+)$"); if(parametry and mw.ustring.match(parametry,"[^=]+=[^=]*"))then nazwa_jednostki=mw.ustring.gsub(nazwa_jednostki,"^(.*)%?([^%?]+)$","%1"); end; else local nazwy_modul=require("Module:Nazwy"); nazwa_jednostki=nazwy_modul["NAZWASTRONY"]{["kod języka"]=kod_jezyka,["kod projektu"]=kod_projektu,}; end; local parametry_modul=require("Module:Parametry"); nazwa_jednostki=parametry_modul["Odstępy"]{[1]=nazwa_jednostki,[2]="tak",}; return mw.getContentLanguage():ucfirst(nazwa_jednostki); end; function p.Nazwy_przestrzeni_i_jednostki_podane_o_pewnym_numerze(frame,i,co_podac) local pf=frame.getParent and frame:getParent() or {args={}}; local numer_jednostki=i or frame.args["numer jednostki"]; local liczba_numer_jednostki=tonumber(numer_jednostki) or 0; local nazwa_jednostki; local bool_numer_jednostki=(liczba_numer_jednostki~=0); local function Nazwa_jednostki() if bool_numer_jednostki then nazwa_jednostki=frame.args["nazwa jednostki "..liczba_numer_jednostki] or ((liczba_numer_jednostki==1)and(pf.args["cel"])) or pf.args[liczba_numer_jednostki]; else nazwa_jednostki=frame.args["nazwa jednostki"] or pf.args["nazwa jednostki"]; end; return nazwa_jednostki; end; local function Nazwa_przestrzeni_nazw() local nazwa_przestrzeni_nazw=bool_numer_jednostki and (frame.args["nazwa przestrzeni nazw i"] or pf.args["nazwa przestrzeni nazw i"] or frame.args["nazwa przestrzeni nazw "..liczba_numer_jednostki] or pf.args["nazwa przestrzeni nazw "..liczba_numer_jednostki]) or frame.args["nazwa przestrzeni nazw"] or pf.args["nazwa przestrzeni nazw"]; return nazwa_przestrzeni_nazw; end; if(not co_podac)then return Nazwa_przestrzeni_nazw(),Nazwa_jednostki(),liczba_numer_jednostki; elseif(co_podac==1)then return Nazwa_przestrzeni_nazw(),liczba_numer_jednostki; elseif(co_podac==2)then return Nazwa_jednostki(),liczba_numer_jednostki; else return Nazwa_przestrzeni_nazw(),Nazwa_jednostki(),liczba_numer_jednostki; end; end; function p.Jaka_nazwa_jednostki(frame,i,jaka) local nazwa_przestrzeni_nazw,nazwa_jednostki,liczba_numer_jednostki=p.Nazwy_przestrzeni_i_jednostki_podane_o_pewnym_numerze(frame,i); nazwa_przestrzeni_nazw=nazwa_przestrzeni_nazw or p.Nazwa_przestrzeni_nazw_uzyskana_z_typu_jednostki_z_frame(frame,liczba_numer_jednostki); ---- local nazwy_modul=require("Module:Nazwy"); nazwa_przestrzeni_nazw=nazwa_przestrzeni_nazw and mw.text.trim(nazwa_przestrzeni_nazw) or nazwy_modul["NAZWAPRZESTRZENI"](); if(nazwa_jednostki)then local html_modul=require("Module:Html"); nazwa_jednostki=html_modul["NazwaStronyAdresu"](nazwa_jednostki,true); else nazwa_jednostki=nazwy_modul["NAZWASTRONY"](); end; local kod_jezyka,kod_projektu=p.Wikikody_kontenera(frame,liczba_numer_jednostki); local wiki_modul=require("Module:Wiki"); local czy_biezaca=wiki_modul["CzyBieżącaWiki"]{["kod języka"]=kod_jezyka,["kod projektu"]=kod_projektu,}; if(jaka)then if(czy_biezaca)then local tab_parametry={nazwa=nazwa_przestrzeni_nazw,}; if(jaka=="przedmiotowa")then tab_parametry["przedmiotowa"]="tak";end; nazwa_przestrzeni_nazw=nazwy_modul.Np(tab_parametry); else local tab_parametry={nazwa=nazwa_przestrzeni_nazw,["kod języka"]=kod_jezyka,["kod projektu"]=kod_projektu,}; if(jaka=="przedmiotowa")then tab_parametry["przedmiotowa"]="tak";end; nazwa_przestrzeni_nazw=nazwy_modul.NpDane(tab_parametry); end; else if(czy_biezaca)then nazwa_przestrzeni_nazw=nazwy_modul.Np{nazwa=nazwa_przestrzeni_nazw}; else nazwa_przestrzeni_nazw=nazwy_modul.NpDane{nazwa=nazwa_przestrzeni_nazw,["kod języka"]=kod_jezyka,["kod projektu"]=kod_projektu,}; end; end; if(not mw.ustring.match(nazwa_jednostki,"^:"))then if(nazwa_przestrzeni_nazw~="")then if((not typ)or(typ=="przedmiotowa"))then if(czy_biezaca)then local nazwy_np_modul=mw.loadData("Module:Nazwy/Np"); if(nazwa_przestrzeni_nazw==nazwy_np_modul.Template)then local nazwa_przestrzeni_nazw_d=nazwy_modul["NAZWAPRZESTRZENI"](nazwa_jednostki); if(nazwa_przestrzeni_nazw_d==nazwy_np_modul.Template)then return nazwy_modul["NAZWASTRONY"](nazwa_jednostki); end; elseif(nazwa_przestrzeni_nazw==nazwy_np_modul.Module)then local nazwa_przestrzeni_nazw_d=nazwy_modul["NAZWAPRZESTRZENI"](nazwa_jednostki); if(nazwa_przestrzeni_nazw_d==nazwy_np_modul.Module)then return nazwy_modul["NAZWASTRONY"](nazwa_jednostki); end; end; else local template_prze=nazwy_modul.NpDane{nazwa="Template",["kod języka"]=kod_jezyka,["kod projektu"]=kod_projektu,}; local module_prze=nazwy_modul.NpDane{nazwa="Module",["kod języka"]=kod_jezyka,["kod projektu"]=kod_projektu,}; if(nazwa_przestrzeni_nazw==template_prze)then local nazwa_przestrzeni_nazw_d=nazwy_modul["NAZWAPRZESTRZENI"]{[1]=nazwa_jednostki,["kod języka"]=kod_jezyka,["kod projektu"]=kod_projektu,}; if(nazwa_przestrzeni_nazw_d==template_prze)then return nazwy_modul["NAZWASTRONY"]{[1]=nazwa_jednostki,["kod języka"]=kod_jezyka,["kod projektu"]=kod_projektu,}; end; elseif(nazwa_przestrzeni_nazw==module_prze)then local nazwa_przestrzeni_nazw_d=nazwy_modul["NAZWAPRZESTRZENI"]{[1]=nazwa_jednostki,["kod języka"]=kod_jezyka,["kod projektu"]=kod_projektu,}; if(nazwa_przestrzeni_nazw_d==module_prze)then return nazwy_modul["NAZWASTRONY"]{[1]=nazwa_jednostki,["kod języka"]=kod_jezyka,["kod projektu"]=kod_projektu,}; end; end; end; end; local parametry_modul=require("Module:Parametry"); nazwa_jednostki=parametry_modul["Odstępy"]{[1]=nazwa_jednostki,[2]="tak",}; return mw.getContentLanguage():ucfirst(nazwa_jednostki); else return nazwy_modul["NAZWASTRONY"]{[1]=nazwa_jednostki,["kod języka"]=kod_jezyka,["kod projektu"]=kod_projektu,}; end; else return nazwy_modul["NAZWASTRONY"]{[1]=nazwa_jednostki,["kod języka"]=kod_jezyka,["kod projektu"]=kod_projektu,}; end; end; function p.Czy_przestrzen_nazw_jest_obslugiwana(frame,jakas_przestrzen_nazw,kod_jezyka,kod_projektu) local nazwy_modul=require("Module:Nazwy"); local parametry_modul=require("Module:Parametry"); local wiki_modul=require("Module:Wiki"); local czy_biezaca=wiki_modul["CzyBieżącaWiki"]{["kod języka"]=kod_jezyka,["kod projektu"]=kod_projektu,}; if(czy_biezaca)then jakas_przestrzen_nazw=nazwy_modul.Np{nazwa=jakas_przestrzen_nazw}; else jakas_przestrzen_nazw=nazwy_modul.NpDane{nazwa=jakas_przestrzen_nazw,["kod języka"]=kod_jezyka,["kod projektu"]=kod_projektu,}; end; local function nazwa_przestrzeni_nazw_fun(nazwa_przestrzeni_nazw_iter) if(czy_biezaca)then nazwa_przestrzeni_nazw_iter=nazwy_modul.Np{nazwa=nazwa_przestrzeni_nazw_iter}; else nazwa_przestrzeni_nazw_iter=nazwy_modul.NpDane{nazwa=nazwa_przestrzeni_nazw_iter,["kod języka"]=kod_jezyka,["kod projektu"]=kod_projektu,}; end; if(jakas_przestrzen_nazw==nazwa_przestrzeni_nazw_iter)then return true; end; return false; end; for licznik,nazwa_przestrzeni_nazw in pairs(frame.args)do if(type(licznik)=="number")then local nazwa_przestrzeni_nazw_element,klucze_element=mw.ustring.match(nazwa_przestrzeni_nazw,"^%s*([%w%s]*)%s*:%s*(.-)%s*"); if(nazwa_przestrzeni_nazw_element and klucze_element)then local tab_klucze=mw.text.split(klucze_element,"%s*,%s*",false); local wiki_modul=require("Module:Wiki"); for _,klucz_element in ipairs(tab_klucze)do local kod_jezyka_obslugiwane,kod_projektu_obslugiwane=wiki_modul.KluczProjektu(klucz_element); if(kod_jezyka_obslugiwane==kod_jezyka and kod_projektu_obslugiwane==kod_projektu)then local wynik=nazwa_przestrzeni_nazw_fun(nazwa_przestrzeni_nazw_element); if(wynik)then return true;end; end; end; else local wynik=nazwa_przestrzeni_nazw_fun(nazwa_przestrzeni_nazw); if(wynik)then return true;end; end; end; end; return false; end; function p.Analiza_interwiki_czy_projekt_aktualny(frame,czy_jezyk,czy_projekt) local parametry_modul=require("Module:Parametry"); local p=parametry_modul.PobierzFrameEwentualnieParent(frame); local pudelko_modul=require("Module:Pudełko"); local wiki_modul=require("Module:Wiki"); local jezyk_biezacy=czy_jezyk and pudelko_modul["Kod języka tego projektu"](); local projekt_biezacy=czy_projekt and pudelko_modul["Kod projektu tego projektu"](); for i,_ in pairs(p.args)do if(type(i)=="number")then local klucz_projektu=pudelko_modul["Klucz projektu"](frame,i); local kod_jezyka=pudelko_modul["Kod języka"](frame,i); local kod_projektu=pudelko_modul["kod projektu"](frame,i); local jezyk,projekt=wiki_modul.KodyWiki(klucz_projektu,kod_jezyka,kod_projektu); if((czy_jezyk and (jezyk~=jezyk_biezacy))or(czy_projekt and(projekt~=projekt_biezacy)))then return "tak"; end; end; end; return; end; return p; j8tyemioxh1ydvd42tuty7hozhm7vrm 540432 540410 2026-04-24T02:12:45Z Persino 2851 540432 Scribunto text/plain local p={}; function p.Nazwa_strony_bazowej_projektu_z_wikidanych(kod_jezyka,kod_projektu) local strona=require("Module:Pudełko")["Strona główna tego projektu"](); local odpowiednik_strony=require("Module:Wiki").WikidaneOdpowiednikStrony{["nazwa strony"]=strona,["kod języka"]=kod_jezyka,["kod projektu"]=kod_projektu}; if(odpowiednik_strony)then local nazwy_modul=require("Module:Nazwy"); return nazwy_modul["PEŁNANAZWASTRONY"]{[1]=odpowiednik_strony,["kod języka"]=kod_jezyka,["kod projektu"]=kod_projektu,}; else local pudelko_modul=require("Module:Pudełko"); if((kod_jezyka==pudelko_modul["Kod języka tego projektu"]())and(kod_projektu==pudelko_modul["Kod projektu tego projektu"]()))then return strona; else local wiki_interwiki_modul=mw.loadData("Module:Wiki/interwiki"); local czy_w_wikidanych=wiki_interwiki_modul.tablica_kody_projektu_wikidane.lingwistyczne[kod_projektu] or wiki_interwiki_modul.tablica_kody_projektu_wikidane.specjalistyczne[kod_projektu]; return czy_w_wikidanych and "Main Page" or nil; end; end; end; function p.Nazwa_strony_bazowej_dla_dzieci_z_wikidanych(kod_jezyka) local strona=require("Module:Pudełko")["Strona główna dla dzieci tego projektu"](); local pudelko_modul=require("Module:Pudełko"); local kod_jezyka_tego_projektu=pudelko_modul["Kod języka tego projektu"](); if(kod_jezyka==kod_jezyka_tego_projektu)then return strona;end; local kod_projektu_tego_projektu=pudelko_modul["Kod projektu tego projektu"](); local odpowiednik_strony=require("Module:Wiki").WikidaneOdpowiednikStrony{["nazwa strony"]=strona,["kod języka"]=kod_jezyka,["kod projektu"]=kod_projektu_tego_projektu}; if(odpowiednik_strony)then local nazwy_modul=require("Module:Nazwy"); return nazwy_modul["PEŁNANAZWASTRONY"]{[1]=odpowiednik_strony,["kod języka"]=kod_jezyka,["kod projektu"]=kod_projektu_tego_projektu,}; else return "Wikijunior"; end; end; function p.Nazwa_strony_bazowej_projektu_ze_zmiennej(frame,i,kod_jezyka,kod_projektu) local pf=frame.getParent and frame:getParent() or {args={}}; local strona_glowna_projektu; if(i~=0)then local pudelko_modul=require("Module:Pudełko"); local kod_jezyka_tego_projektu=pudelko_modul["Kod języka tego projektu"](); local kod_projektu_tego_projektu=pudelko_modul["Kod projektu tego projektu"](); if(kod_jezyka==kod_jezyka_tego_projektu)and(kod_projektu==kod_projektu_tego_projektu)then strona_glowna_projektu=frame.args["strona główna projektu"] or pf.args["strona główna projektu"] else strona_glowna_projektu=(frame.args["strona główna projektu "..i] or pf.args["strona główna projektu "..i]) end; else strona_glowna_projektu=frame.args["strona główna projektu"] or pf.args["strona główna projektu"] end; local parametry_modul=require("Module:Parametry"); return (parametry_modul.CzyTak(strona_glowna_projektu))and require("Module:Nazwy")["PEŁNANAZWASTRONY"]{[1]=strona_glowna_projektu,["kod języka"]=kod_jezyka,["kod projektu"]=kod_projektu,} or (strona_glowna_projektu and "" or nil); end; function p.Nazwa_strony_bazowej_dla_dzieci_ze_zmiennej(frame,i,kod_jezyka) local pf=frame.getParent and frame:getParent() or {args={}}; local pudelko_modul=require("Module:Pudełko"); local strona_glowna_dla_dzieci; if(i~=0)then local kod_jezyka_tego_projektu=pudelko_modul["Kod języka tego projektu"](); if(kod_jezyka==kod_jezyka_tego_projektu)then strona_glowna_dla_dzieci=frame.args["strona główna dla dzieci"] or pf.args["strona główna dla dzieci"] else strona_glowna_dla_dzieci=(frame.args["strona główna dla dzieci "..i] or pf.args["strona główna dla dzieci "..i]) end; else strona_glowna_dla_dzieci=frame.args["strona główna dla dzieci"] or pf.args["strona główna dla dzieci"] end; local kod_projektu_tego_projektu=pudelko_modul["Kod projektu tego projektu"](); local parametry_modul=require("Module:Parametry"); return (parametry_modul.CzyTak(strona_glowna_dla_dzieci))and require("Module:Nazwy")["PEŁNANAZWASTRONY"]{[1]=strona_glowna_dla_dzieci,["kod języka"]=kod_jezyka,["kod projektu"]=kod_projektu_tego_projektu,} or (strona_glowna_dla_dzieci and "" or nil); end; function p.Normalna_przedmiotowa_lub_dyskusji_nazwa_przestrzeni_nazw(nazwa_przestrzeni_nazw, normmalna_przedmiotwa_dyskusji,kod_jezyka,kod_projektu) local nazwa_przestrzeni_nazw_blad; local wiki_modul=require("Module:Wiki"); local nazwy_modul=require("Module:Nazwy"); local czy_biezaca=wiki_modul["CzyBieżącaWiki"]{["kod języka"]=kod_jezyka,["kod projektu"]=kod_projektu,}; if(normmalna_przedmiotwa_dyskusji==0)then if(czy_biezaca)then nazwa_przestrzeni_nazw_blad=nazwy_modul.Np{nazwa=nazwa_przestrzeni_nazw,["kanoniczna"]="tak",["nazwij projektem"]="tak",["nazwij dyskusją projektu"]="tak",["istnieje"]="tak",["wynik błędu nietekstowy"]="tak",}; else nazwa_przestrzeni_nazw_blad=nazwy_modul.NpDane{nazwa=nazwa_przestrzeni_nazw,["kanoniczna"]="tak",["nazwij projektem"]="tak",["nazwij dyskusją projektu"]="tak",["kod języka"]=kod_jezyka,["kod projektu"]=kod_projektu,["istnieje"]="tak",["wynik błędu nietekstowy"]="tak",}; end; elseif(normmalna_przedmiotwa_dyskusji==1)then if(czy_biezaca)then nazwa_przestrzeni_nazw_blad=nazwy_modul.Np{nazwa=nazwa_przestrzeni_nazw, przedmiotowa="tak",["kanoniczna"]="tak",["nazwij projektem"]="tak",["nazwij dyskusją projektu"]="tak",["istnieje"]="tak",["wynik błędu nietekstowy"]="tak",}; else nazwa_przestrzeni_nazw_blad=nazwy_modul.NpDane{nazwa=nazwa_przestrzeni_nazw, przedmiotowa="tak",["kanoniczna"]="tak",["nazwij projektem"]="tak",["nazwij dyskusją projektu"]="tak",["kod języka"]=kod_jezyka,["kod projektu"]=kod_projektu,["istnieje"]="tak",["wynik błędu nietekstowy"]="tak",}; end; elseif(normmalna_przedmiotwa_dyskusji==2)then if(czy_biezaca)then nazwa_przestrzeni_nazw_blad=nazwy_modul.Np{nazwa=nazwa_przestrzeni_nazw, dyskusja="tak",["kanoniczna"]="tak",["nazwij projektem"]="tak",["nazwij dyskusją projektu"]="tak",["istnieje"]="tak",["wynik błędu nietekstowy"]="tak",}; else nazwa_przestrzeni_nazw_blad=nazwy_modul.NpDane{nazwa=nazwa_przestrzeni_nazw, dyskusja="tak",["kanoniczna"]="tak",["nazwij projektem"]="tak",["nazwij dyskusją projektu"]="tak",["kod języka"]=kod_jezyka,["kod projektu"]=kod_projektu,["istnieje"]="tak",["wynik błędu nietekstowy"]="tak",}; end; else if(czy_biezaca)then nazwa_przestrzeni_nazw_blad=nazwy_modul.Np{nazwa=nazwa_przestrzeni_nazw,["kanoniczna"]="tak",["nazwij projektem"]="tak",["nazwij dyskusją projektu"]="tak",["istnieje"]="tak",["wynik błędu nietekstowy"]="tak",}; else nazwa_przestrzeni_nazw_blad=nazwy_modul.NpDane{nazwa=nazwa_przestrzeni_nazw,["kanoniczna"]="tak",["nazwij projektem"]="tak",["nazwij dyskusją projektu"]="tak",["kod języka"]=kod_jezyka,["kod projektu"]=kod_projektu,["istnieje"]="tak",["wynik błędu nietekstowy"]="tak",}; end; end; return nazwa_przestrzeni_nazw_blad end; function p.Nazwa_przestrzeni_nazw(frame,kod_liczbowy_przestrzeni_nazw,czy_uwzglednic_alternatywna_nazwe,numer_jednostki) local pf=frame.getParent and frame:getParent() or {args={}}; local nazwa_przestrzeni_nazw=p.Nazwy_przestrzeni_i_jednostki_podane_o_pewnym_numerze(frame,numer_jednostki,1) or p.Nazwa_przestrzeni_nazw_uzyskana_z_typu_jednostki_z_frame(frame,numer_jednostki); local nazwy_modul=require("Module:Nazwy"); local wiki_modul=require("Module:Wiki"); local kod_jezyka,kod_projektu=p.Wikikody_kontenera(frame,numer_jednostki); local czy_biezaca_wiki=wiki_modul["CzyBieżącaWiki"]{["kod języka"]=kod_jezyka,["kod projektu"]=kod_projektu,}; local czy_blad_nazwy_przestrzeni_nazw; local typ; if(kod_liczbowy_przestrzeni_nazw==1)then typ="przedmiotowa"; if(czy_biezaca_wiki)then czy_blad_nazwy_przestrzeni_nazw=(not nazwa_przestrzeni_nazw)and nazwy_modul["PRZEDMIOTOWAPRZESTRZEŃ"]() or nazwy_modul.Np{nazwa=nazwa_przestrzeni_nazw,przedmiotowa="tak",["istnieje"]="tak",["wynik błędu nietekstowy"]="tak",}; else czy_blad_nazwy_przestrzeni_nazw=(not nazwa_przestrzeni_nazw)and nazwy_modul["PRZEDMIOTOWAPRZESTRZEŃ"]{["kod języka"]=kod_jezyka,["kod projektu"]=kod_projektu,} or nazwy_modul.NpDane{nazwa=nazwa_przestrzeni_nazw,przedmiotowa="tak",["kod języka"]=kod_jezyka,["kod projektu"]=kod_projektu,["istnieje"]="tak",["wynik błędu nietekstowy"]="tak",}; end; elseif(kod_liczbowy_przestrzeni_nazw==2)then if(czy_biezaca_wiki)then typ="dyskusja"; czy_blad_nazwy_przestrzeni_nazw=(not nazwa_przestrzeni_nazw)and nazwy_modul["PRZESTRZEŃDYSKUSJI"]() or nazwy_modul.Np{nazwa=nazwa_przestrzeni_nazw,dyskusja="tak",["istnieje"]="tak",["wynik błędu nietekstowy"]="tak",}; else czy_blad_nazwy_przestrzeni_nazw=(not nazwa_przestrzeni_nazw)and nazwy_modul["PRZESTRZEŃDYSKUSJI"]{["kod języka"]=kod_jezyka,["kod projektu"]=kod_projektu,} or nazwy_modul.NpDane{nazwa=nazwa_przestrzeni_nazw,dyskusja="tak",["kod języka"]=kod_jezyka,["kod projektu"]=kod_projektu,["istnieje"]="tak",["wynik błędu nietekstowy"]="tak",}; end; else if(czy_biezaca_wiki)then czy_blad_nazwy_przestrzeni_nazw=(not nazwa_przestrzeni_nazw)and nazwy_modul["NAZWAPRZESTRZENI"]() or nazwy_modul.Np{nazwa=nazwa_przestrzeni_nazw,["istnieje"]="tak",["wynik błędu nietekstowy"]="tak",}; else czy_blad_nazwy_przestrzeni_nazw=(not nazwa_przestrzeni_nazw)and nazwy_modul["NAZWAPRZESTRZENI"]{["kod języka"]=kod_jezyka,["kod projektu"]=kod_projektu,} or nazwy_modul.NpDane{nazwa=nazwa_przestrzeni_nazw,["kod języka"]=kod_jezyka, ["kod projektu"]=kod_projektu,["istnieje"]="tak",["wynik błędu nietekstowy"]="tak",}; end; end; if(czy_blad_nazwy_przestrzeni_nazw)then return czy_blad_nazwy_przestrzeni_nazw; else if(((czy_uwzglednic_alternatywna_nazwe==nil)and true or czy_uwzglednic_alternatywna_nazwe) and frame.args[1])then local nazwa_przestrzeni_nazw_alternatywnej=mw.text.trim(frame.args[1]); if(mw.ustring.match(nazwa_przestrzeni_nazw_alternatywnej,"^[%w%s_]*$"))then local czy_blad_nazwa_przestrzeni_nazw_alternatywnej; if(czy_biezaca_wiki)then local tab_parametry={nazwa=nazwa_przestrzeni_nazw_alternatywnej,["istnieje"]="tak",["wynik błędu nietekstowy"]="tak",}; if(typ)then tab_parametry[typ]="tak";end; czy_blad_nazwa_przestrzeni_nazw_alternatywnej=nazwy_modul.Np(tab_parametry); else local tab_parametry={nazwa=nazwa_przestrzeni_nazw_alternatywnej,["kod języka"]=kod_jezyka,["kod projektu"]=kod_projektu,["istnieje"]="tak",["wynik błędu nietekstowy"]="tak",}; if(typ)then tab_parametry[typ]="tak";end; czy_blad_nazwa_przestrzeni_nazw_alternatywnej=nazwy_modul.NpDane(tab_parametry); end; return czy_blad_nazwa_przestrzeni_nazw_alternatywnej or "(błąd)"; else return "(błąd)"; end; else local parametry_modul=require("Module:Parametry"); nazwa_przestrzeni_nazw=parametry_modul["Odstępy"]{[1]=nazwa_przestrzeni_nazw,[2]="tak",}; if(mw.ustring.match(nazwa_przestrzeni_nazw,"^[%w%s_]*$"))then return nazwa_przestrzeni_nazw; else return "(błąd)"; end; end; end; end; function p.Nazwa_przestrzeni_nazw_2(frame,czy_uwzglednic_alternatywna_nazwe,i) local nazwa_przestrzeni_nazw,nazwa_jednostki,liczba_numer_jednostki=p.Nazwy_przestrzeni_i_jednostki_podane_o_pewnym_numerze(frame,i); nazwa_przestrzeni_nazw=nazwa_przestrzeni_nazw or p.Nazwa_przestrzeni_nazw_uzyskana_z_typu_jednostki_z_frame(frame,liczba_numer_jednostki); local nazwy_modul=require("Module:Nazwy"); local kod_jezyka,kod_projektu=p.Wikikody_kontenera(frame,liczba_numer_jednostki); local wiki_modul=require("Module:Wiki"); local czy_biezaca_wiki=wiki_modul["CzyBieżącaWiki"]{["kod języka"]=kod_jezyka,["kod projektu"]=kod_projektu,}; local nazwa_przestrzeni_nazw_blad; local parametry_modul=require("Module:Parametry"); if(czy_biezaca_wiki)then nazwa_przestrzeni_nazw=nazwa_przestrzeni_nazw and mw.text.trim(nazwa_przestrzeni_nazw) or nazwy_modul["NAZWAPRZESTRZENI"](); nazwa_przestrzeni_nazw_blad=require("Module:Nazwy").Np{nazwa=nazwa_przestrzeni_nazw,["istnieje"]="tak",["wynik błędu nietekstowy"]="tak",}; if(nazwa_jednostki)then nazwa_jednostki=parametry_modul["Odstępy"]{[1]=nazwa_jednostki,[2]="tak",}; nazwa_jednostki=mw.ustring.gsub(nazwa_jednostki,"^([^#]*)#(.*)$","%1"); local parametry=mw.ustring.match(nazwa_jednostki,"^.*%?([^%?]+)$"); if(parametry and mw.ustring.match(parametry,"[^=]+=[^=]*"))then nazwa_jednostki=mw.ustring.gsub(nazwa_jednostki,"^(.*)%?([^%?]+)$","%1"); end; else nazwa_jednostki=nazwy_modul["NAZWASTRONY"](); end; else nazwa_przestrzeni_nazw=nazwa_przestrzeni_nazw and mw.text.trim(nazwa_przestrzeni_nazw) or nazwy_modul["NAZWAPRZESTRZENI"]{["kod języka"]=kod_jezyka,["kod projektu"]=kod_projektu,}; nazwa_przestrzeni_nazw_blad=require("Module:Nazwy").NpDane{nazwa=nazwa_przestrzeni_nazw,["kod języka"]=kod_jezyka,["kod projektu"]=kod_projektu,["istnieje"]="tak",["wynik błędu nietekstowy"]="tak",}; if(nazwa_jednostki)then local html_modul=require("Module:Html"); nazwa_jednostki=html_modul["NazwaStronyAdresu"](nazwa_jednostki,true); else nazwa_jednostki=nazwy_modul["NAZWASTRONY"]{["kod języka"]=kod_jezyka,["kod projektu"]=kod_projektu,}; end; end; nazwa_przestrzeni_nazw=nazwa_przestrzeni_nazw_blad or nazwa_przestrzeni_nazw; if(not mw.ustring.match(nazwa_jednostki,"^:"))then if(nazwa_przestrzeni_nazw~="")then if(czy_biezaca_wiki)then local nazwy_np_modul=mw.loadData("Module:Nazwy/Np"); if(nazwa_przestrzeni_nazw==nazwy_np_modul.Template)then local nazwa_przestrzeni_nazw_d=require("Module:Nazwy")["NAZWAPRZESTRZENI"](nazwa_jednostki); if(nazwa_przestrzeni_nazw_d==nazwy_np_modul.Template)then nazwa_przestrzeni_nazw=nazwy_np_modul.Template; end; elseif(nazwa_przestrzeni_nazw==nazwy_np_modul.Module)then local nazwa_przestrzeni_nazw_d=require("Module:Nazwy")["NAZWAPRZESTRZENI"](nazwa_jednostki); if(nazwa_przestrzeni_nazw_d==nazwy_np_modul.Module)then nazwa_przestrzeni_nazw=nazwy_np_modul.Module; end; end; else local template_prze=nazwy_modul.NpDane{nazwa="Template",["kod języka"]=kod_jezyka,["kod projektu"]=kod_projektu,}; local module_prze=nazwy_modul.NpDane{nazwa="Module",["kod języka"]=kod_jezyka,["kod projektu"]=kod_projektu,}; if(nazwa_przestrzeni_nazw==template_prze)then local nazwa_przestrzeni_nazw_d=nazwy_modul["NAZWAPRZESTRZENI"]{[1]=nazwa_jednostki,["kod języka"]=kod_jezyka,["kod projektu"]=kod_projektu,}; if(nazwa_przestrzeni_nazw_d==template_prze)then nazwa_przestrzeni_nazw=template_prze; end; elseif(nazwa_przestrzeni_nazw==module_prze)then local nazwa_przestrzeni_nazw_d=nazwy_modul["NAZWAPRZESTRZENI"]{[1]=nazwa_jednostki,["kod języka"]=kod_jezyka,["kod projektu"]=kod_projektu,}; if(nazwa_przestrzeni_nazw_d==module_prze)then nazwa_przestrzeni_nazw=module_prze; end; end; end; if(not nazwa_przestrzeni_nazw_blad)then if(((czy_uwzglednic_alternatywna_nazwe==nil)and true or czy_uwzglednic_alternatywna_nazwe) and frame.args[1])then local wytrimowana_nazwa_przestrzeni_nazw=mw.text.trim(frame.args[1]); if(mw.ustring.match(wytrimowana_nazwa_przestrzeni_nazw,"^[%w%s_]*$"))then if(czy_biezaca_wiki)then local nazwy_modul=require("Module:Nazwy"); local czy_blad_nazwy_przestrzeni_nazw=nazwy_modul.Np{nazwa=wytrimowana_nazwa_przestrzeni_nazw,["istnieje"]="tak",["wynik błędu nietekstowy"]="tak",} return czy_blad_nazwy_przestrzeni_nazw or "(błąd)"; else local nazwy_modul=require("Module:Nazwy"); local nazwa_przestrzeni_nazw_blad2=nazwy_modul.NpDane{nazwa=wytrimowana_nazwa_przestrzeni_nazw,["kod języka"]=kod_jezyka,["kod projektu"]=kod_projektu,["istnieje"]="tak",["wynik błędu nietekstowy"]="tak",}; return nazwa_przestrzeni_nazw_blad2 or "(błąd)"; end; else return "(błąd)"; end; else local wytrimowana_nazwa_przestrzeni_nazw=mw.text.trim(nazwa_przestrzeni_nazw); if(mw.ustring.match(wytrimowana_nazwa_przestrzeni_nazw,"^[%w%s_]*$"))then return wytrimowana_nazwa_przestrzeni_nazw; else return "(błąd)"; end; end; else return nazwa_przestrzeni_nazw; end; else return require("Module:Nazwy")["NAZWAPRZESTRZENI"]{[1]=nazwa_jednostki,["kod języka"]=kod_jezyka,["kod projektu"]=kod_projektu,}; end; else return require("Module:Nazwy")["NAZWAPRZESTRZENI"]{[1]=nazwa_jednostki,["kod języka"]=kod_jezyka,["kod projektu"]=kod_projektu,}; end; end; function p.Nazwa_przestrzeni_nazw_przedmiotowa_dyskusji_2(frame,czy_uwzglednic_alternatywna_nazwe,i,typ) local numer_jednostki=i or frame.args["numer jednostki"]; local liczba_numer_jednostki=((numer_jednostki)and(tonumber(numer_jednostki))or 0); local pudelko_modul=require("Module:Pudełko"); local tab_nazwa={ ["przedmiotowa"]="Nazwa przedmiotowej przestrzeni nazw", ["dyskusja"]="Nazwa przestrzeni nazw", }; local nazwa_przestrzeni_nazw=pudelko_modul[tab_nazwa[typ]](frame,czy_uwzglednic_alternatywna_nazwe,liczba_numer_jednostki); local nazwy_modul=require("Module:Nazwy"); if(nazwa_przestrzeni_nazw=="")then local nazwa_jednostki=pudelko_modul["Nazwa jednostki"](frame,liczba_numer_jednostki); local kod_jezyka,kod_projektu=p.Wikikody_kontenera(frame,liczba_numer_jednostki); local tab_nazwa={ ["przedmiotowa"]="PRZEDMIOTOWAPRZESTRZEŃ", ["dyskusja"]="PRZESTRZEŃDYSKUSJI", }; nazwa_przestrzeni_nazw=nazwy_modul[tab_nazwa[typ]]{nazwa=nazwa_jednostki,["kod języka"]=kod_jezyka,["kod projektu"]=kod_projektu,}; else if(typ=="dyskusja")then local wiki_modul=require("Module:Wiki"); local czy_biezaca=wiki_modul["CzyBieżącaWiki"]{["kod języka"]=kod_jezyka,["kod projektu"]=kod_projektu,}; if(czy_biezaca)then nazwa_przestrzeni_nazw=nazwy_modul.Np{[typ]="tak",nazwa=nazwa_przestrzeni_nazw}; else nazwa_przestrzeni_nazw=nazwy_modul.NpDane{[typ]="tak",nazwa=nazwa_przestrzeni_nazw,["kod języka"]=kod_jezyka,["kod projektu"]=kod_projektu,}; end; end; end; return nazwa_przestrzeni_nazw; end; function p.Kod_jezyka(frame,i,wartosc_domyslna) local pudelko_modul=require("Module:Pudełko"); if(not i)then return pudelko_modul["Kod języka tego projektu"]();end; local pf=frame.getParent and frame:getParent() or {args={}}; if(i==0)then return pudelko_modul["Kod języka tego projektu"](); elseif(i==1)then local parametry_modul=require("Module:Parametry"); local kod_jezyka=frame.args["kod języka"] or frame.args["kod języka 1"] or pf.args["kod języka"] or pf.args["kod języka 1"] return ((kod_jezyka)and(kod_jezyka~=""))and mw.text.trim(kod_jezyka) or ((parametry_modul.CzyTak(wartosc_domyslna))and wartosc_domyslna or nil); elseif(i>1)then local parametry_modul=require("Module:Parametry"); local kod_jezyka=frame.args["kod języka "..i] or pf.args["kod języka "..i] return ((kod_jezyka)and(kod_jezyka~=""))and mw.text.trim(kod_jezyka) or ((parametry_modul.CzyTak(wartosc_domyslna))and wartosc_domyslna or nil); end; end function p.Kod_projektu(frame,i,wartosc_domyslna) local pudelko_modul=require("Module:Pudełko"); if(not i)then return pudelko_modul["Kod projektu tego projektu"]();end; local pf=frame.getParent and frame:getParent() or {args={}}; if(i==0)then return pudelko_modul["Kod projektu tego projektu"](); elseif(i==1)then local parametry_modul=require("Module:Parametry"); local kod_projektu=frame.args["kod projektu"] or frame.args["kod projektu 1"] or pf.args["kod projektu"] or pf.args["kod projektu 1"] return ((kod_projektu)and(kod_projektu~=""))and mw.text.trim(kod_projektu) or ((parametry_modul.CzyTak(wartosc_domyslna))and wartosc_domyslna or nil); elseif(i>1)then local parametry_modul=require("Module:Parametry"); local kod_projektu=frame.args["kod projektu "..i] or pf.args["kod projektu "..i] return ((kod_projektu)and(kod_projektu~=""))and mw.text.trim(kod_projektu) or ((parametry_modul.CzyTak(wartosc_domyslna))and wartosc_domyslna or nil); end; end function p.Klucz_projektu(frame,i,wartosc_domyslna_jezyka,wartosc_domyslna_projektu) local pf=frame.getParent and frame:getParent() or {args={}}; local klucz_projektu; local function domyslne_klucz(klucz_projektu) local parametry_modul=require("Module:Parametry"); return ((klucz_projektu)and(klucz_projektu~=""))and mw.text.trim(klucz_projektu)or((parametry_modul.CzyTak(wartosc_domyslna_jezyka)and(parametry_modul.CzyTak(wartosc_domyslna_projektu)))and (wartosc_domyslna_jezyka..":" ..wartosc_domyslna_projektu)or(parametry_modul.CzyTak(wartosc_domyslna_jezyka) and wartosc_domyslna_jezyka or (parametry_modul.CzyTak(wartosc_domyslna_projektu) and wartosc_domyslna_projektu or nil))); end; if(i==0)then return nil; elseif(i==1)then local klucz_projektu=frame.args["klucz projektu"] or frame.args["klucz projektu 1"] or pf.args["klucz projektu"] or pf.args["klucz projektu 1"]; return domyslne_klucz(klucz_projektu); elseif(i>1)then local klucz_projektu=frame.args["klucz projektu "..i] or pf.args["klucz projektu "..i]; return domyslne_klucz(klucz_projektu); end; end; function p.Wikikody_kontenera(frame,i,wartosc_domyslna_jezyka,wartosc_domyslna_projektu) local wiki_modul=require("Module:Wiki"); local kod_jezyka,kod_projektu=wiki_modul.KodyWiki(p.Klucz_projektu(frame,i,wartosc_domyslna_jezyka,wartosc_domyslna_projektu),p.Kod_jezyka(frame,i,wartosc_domyslna_jezyka),p.Kod_projektu(frame,i,wartosc_domyslna_projektu)); return kod_jezyka,kod_projektu; end; function p.Nazwa_przestrzeni_nazw_od_typu_jednostki(typ,args,bez_analizy) if(not bez_analizy)then local parametry_modul=require("Module:Parametry"); if((((not parametry_modul.CzyTak(args["obsługiwane jednostki jako nieopisowe strony"]))and((typ=="artykuł")or(typ=="podręcznik")))or (typ=="artykuł")))then return ""; elseif(((not parametry_modul.CzyTak(args["obsługiwane jednostki jako nieopisowe strony"]))and((typ=="artykuł dla dzieci")or(typ=="podręcznik dla dzieci")))or(typ=="artykuł dla dzieci"))then return "Wikijunior"; elseif((not parametry_modul.CzyTak(args["obsługiwane brudnopisy jako normalne strony"])) and(((not parametry_modul.CzyTak(args["obsługiwane jednostki jako nieopisowe strony"]))and(parametry_modul.CzyTak(args["obsługiwane jednostki brudnopisu projektu"])and (typ=="podręcznik brudnopisu projektu" or typ=="artykuł brudnopisu projektu")or (typ=="jednostka brudnopisu projektu")) or (typ=="strona brudnopisu projektu"))or(typ=="strona projektu"))or (typ=="strona projektu"))then return "Project"; elseif((parametry_modul.CzyTak(args["obsługiwane strony jako niebrudnopisowe jednostki programowe"]))and (typ=="strona szablonu") or(not parametry_modul.CzyTak(args["obsługiwane brudnopisy jako normalne strony"]) and((not parametry_modul.CzyTak(args["obsługiwane opisy jako strony jednostek programowych"]) and not parametry_modul.CzyTak(args["obsługiwane jednostki jako nieopisowe strony"]) and not parametry_modul.CzyTak(args["obsługiwane nieudokumentowane szablony jako szablony"])) and((typ=="strona brudnopisu szablonu")or(typ=="strona brudnopisu opisu szablonu"))or(typ=="strona brudnopisu szablonu")) or((not parametry_modul.CzyTak(args["obsługiwane opisy jako strony jednostek programowych"]) and not parametry_modul.CzyTak(args["obsługiwane jednostki jako nieopisowe strony"]) and not parametry_modul.CzyTak(args["obsługiwane nieudokumentowane szablony jako szablony"])) and((typ=="strona szablonu")or(typ=="strona opisu szablonu"))or(typ=="strona szablonu"))))then return "Template"; elseif((parametry_modul.CzyTak(args["obsługiwane strony jako niebrudnopisowe jednostki programowe"]))and (typ=="strona modułu") or(not parametry_modul.CzyTak(args["obsługiwane brudnopisy jako normalne strony"]) and((not parametry_modul.CzyTak(args["obsługiwane opisy jako strony jednostek programowych"]) and not parametry_modul.CzyTak(args["obsługiwane jednostki jako nieopisowe strony"])) and((typ=="strona brudnopisu modułu")or(typ=="strona brudnopisu opisu modułu"))or(typ=="strona brudnopisu modułu")) or((not parametry_modul.CzyTak(args["obsługiwane opisy jako strony jednostek programowych"]) and not parametry_modul.CzyTak(args["obsługiwane jednostki jako nieopisowe strony"])) and((typ=="strona modułu")or(typ=="strona opisu modułu"))or(typ=="strona modułu"))))then return "Module"; elseif(not parametry_modul.CzyTak(args["obsługiwane jednostki użytkownika jako normalne strony"]) and(((not parametry_modul.CzyTak(args["obsługiwane jednostki jako nieopisowe strony"]))and(parametry_modul.CzyTak(args["obsługiwane jednostki użytkownika"])and (typ=="podręcznik użytkownika" or typ=="artykuł użytkownika") or (typ=="jednostka użytkownika")) or (typ=="strona użytkownika"))or(typ=="strona główna użytkownika"))or(typ=="strona użytkownika"))then return "User"; elseif(typ=="strona pliku")then return "File"; elseif(typ=="strona kategorii")then return "Category"; elseif(typ=="strona pomocy")then return "Help"; elseif(typ=="strona komunikatu")then return "MediaWiki"; elseif(typ=="strona specjalna")then return "Special"; elseif(typ=="strona gadżetu")then return "Gadget"; elseif(typ=="strona główna projektu")then return "Project"; elseif(typ=="strona główna dla dzieci")then return "Wikijunior"; end; return; end; if(typ)then if((typ=="artykuł")or(typ=="podręcznik"))then return ""; elseif((typ=="artykuł dla dzieci")or(typ=="podręcznik dla dzieci"))then return "Wikijunior"; elseif((typ=="podręcznik brudnopisu projektu")or(typ=="artykuł brudnopisu projektu")or(typ=="jednostka brudnopisu projektu")or(typ=="strona brudnopisu projektu")or(typ=="strona projektu"))then return "Project"; elseif((typ=="strona szablonu")or(typ=="strona opisu szablonu")or(typ=="strona brudnopisu szablonu")or(typ=="strona brudnopisu opisu szablonu"))then return "Template"; elseif((typ=="strona modułu")or(typ=="strona opisu modułu")or(typ=="strona brudnopisu modułu")or(typ=="strona brudnopisu opisu modułu"))then return "Module"; elseif((typ=="podręcznik użytkownika")or(typ=="artykuł użytkownika")or(typ=="jednostka użytkownika")or(typ=="strona użytkownika")or(typ=="strona główna użytkownika"))then return "User"; elseif(typ=="strona pliku")then return "File"; elseif(typ=="strona kategorii")then return "Category"; elseif(typ=="strona pomocy")then return "Help"; elseif(typ=="strona komunikatu")then return "MediaWiki"; elseif(typ=="strona specjalna")then return "Special"; elseif(typ=="strona gadżetu")then return "Gadget"; elseif(typ=="strona główna projektu")then return "Project"; elseif(typ=="strona główna dla dzieci")then return "Wikijunior"; end; end; end; function p.Typ_jednostki_uzyskany_z_frame(frame,i) local numer_jednostki=i or frame.args["numer jednostki"]; local liczba_numer_jednostki=tonumber(numer_jednostki) or 0; local pf=frame.getParent and frame:getParent() or {args={}}; local typ; if liczba_numer_jednostki~=0 then typ=liczba_numer_jednostki and( (frame.args["typ jednostki "..liczba_numer_jednostki] or frame.args["typ jednostki i"]) or (pf.args["typ jednostki "..liczba_numer_jednostki] or pf.args["typ jednostki i"]) ); if(not typ)then local nazwa_jednostki=p.Nazwy_przestrzeni_i_jednostki_podane_o_pewnym_numerze(frame,liczba_numer_jednostki,2); if(nazwa_jednostki)then if(not mw.ustring.match(mw.text.trim(nazwa_jednostki),"^:"))then local nazwa_przesrzeni_nazw=p.Nazwy_przestrzeni_i_jednostki_podane_o_pewnym_numerze(frame,liczba_numer_jednostki,1); if(not nazwa_przesrzeni_nazw)then typ=frame.args["typ jednostki"] or pf.args["typ jednostki"]; end; end; end; end; else typ=frame.args["typ jednostki"] or pf.args["typ jednostki"]; end; local parametry_modul=require("Module:Parametry"); if(parametry_modul.CzyTak(typ))then typ,ile=mw.ustring.gsub(typ,"^(%S+)(%s+)(dyskusji)",function(strona,spacja,dyskusja) return strona; end); return typ,liczba_numer_jednostki,ile; end; return typ,liczba_numer_jednostki,0; end; function p.Czy_dyskusja_typu_jednostki_z_frame_od_dyskusja_typu_jednostki(frame,i) local typ,liczba_numer_jednostki,ile_dyskusja=Typ_jednostki_uzyskany_z_frame(frame,i); if(ile_dyskusja>0)then return true;end; local pf=frame:getParent() or {args={},}; local function FuncTemp(liczba_numer_jednostki) local dyskusja_parametr="dyskusja typu jednostki"; if(liczba_numer_jednostki==0)then return frame.args[dyskusja_parametr] or pf.args[dyskusja_parametr]; else return ((frame.args[dyskusja_parametr.." "..liczba_numer_jednostki] or pf.args[dyskusja_parametr.." "..liczba_numer_jednostki]) or (frame.args[dyskusja_parametr.." i"] or pf.args[dyskusja_parametr.." i"]) or(frame.args[dyskusja_parametr] or pf.args[dyskusja_parametr])); end; end; local czy_dyskusja=FuncTemp(liczba_numer_jednostki); local parametry_modul=require("Module:Parametry"); local czy_dyskusja=parametry_modul.CzyTak(czy_dyskusja); return czy_dyskusja; end; function p.Nazwa_przestrzeni_nazw_uzyskana_z_typu_jednostki_z_frame(frame,i) local typ=p.Typ_jednostki_uzyskany_z_frame(frame,i); local nazwa_przestrzeni_nazw=typ and p.Nazwa_przestrzeni_nazw_od_typu_jednostki(typ,nil,true) or nil; if(nazwa_przestrzeni_nazw)then local czy_dyskusja=p.Czy_dyskusja_typu_jednostki_z_frame_od_dyskusja_typu_jednostki(frame,i); if(czy_dyskusja)then if(nazwa_przestrzeni_nazw=="")then return "Talk"; else return nazwa_przestrzeni_nazw.." talk"; end; else return nazwa_przestrzeni_nazw; end; else return nil; end; end; function p.Typ_jednostki(frame, kod_liczbowy_przestrzeni_nazw,i,numer_argorytmu) local parametry_modul=require("Module:Parametry"); local analiza=parametry_modul.CzyTak(frame.args["analiza"]); local typ,liczba_numer_jednostki=p.Typ_jednostki_uzyskany_z_frame(frame,i); local uzyskana_przestrzen_nazw_od_typu_jednostki; local nazwa_przestrzeni_nazw_podana,nazwa_jednostki_podana=p.Nazwy_przestrzeni_i_jednostki_podane_o_pewnym_numerze(frame,liczba_numer_jednostki); if((not analiza)and(typ))then if(typ~="")then uzyskana_przestrzen_nazw_od_typu_jednostki=p.Nazwa_przestrzeni_nazw_od_typu_jednostki(typ,frame.args); if(uzyskana_przestrzen_nazw_od_typu_jednostki)then if((not nazwa_przestrzeni_nazw_podana)and(not nazwa_jednostki_podana))then return typ; end; else return "(błąd typu jednostki)"; end; end; end; local nazwa_przestrzeni_nazw,nazwa_jednostki=p.Uzyskanie_nazw_jednostki(frame,kod_liczbowy_przestrzeni_nazw,liczba_numer_jednostki,numer_argorytmu); local nazwy_modul=require("Module:Nazwy"); local kod_jezyka,kod_projektu=p.Wikikody_kontenera(frame,liczba_numer_jednostki); local wiki_modul=require("Module:Wiki"); local czy_biezaca=wiki_modul["CzyBieżącaWiki"]{["kod języka"]=kod_jezyka,["kod projektu"]=kod_projektu,}; local czy_blad_nazwa_przestrzeni_nazw; if(czy_biezaca)then czy_blad_nazwa_przestrzeni_nazw=nazwy_modul.Np{nazwa=nazwa_przestrzeni_nazw,["kanoniczna"]="tak",["nazwij projektem"]="tak",["nazwij dyskusją projektu"]="tak",["istnieje"]="tak",["wynik błędu nietekstowy"]="tak",} else czy_blad_nazwa_przestrzeni_nazw=nazwy_modul.NpDane{nazwa=nazwa_przestrzeni_nazw,["kanoniczna"]="tak",["nazwij projektem"]="tak",["nazwij dyskusją projektu"]="tak",["kod języka"]=kod_jezyka,["kod projektu"]=kod_projektu,["istnieje"]="tak",["wynik błędu nietekstowy"]="tak",} end; if(not czy_blad_nazwa_przestrzeni_nazw)then return "(błąd nazwy przestrzeni nazw)";end; nazwa_przestrzeni_nazw=czy_blad_nazwa_przestrzeni_nazw; --- --- if((not analiza)and(typ))then if(typ~="")then ---typ jednostki if(uzyskana_przestrzen_nazw_od_typu_jednostki)then if((nazwa_przestrzeni_nazw_podana)and(not nazwa_jednostki_podana))then if(uzyskana_przestrzen_nazw_od_typu_jednostki==nazwa_przestrzeni_nazw)then return typ; else return "(błąd niezgodności)"; end; end; else return "(błąd typu jednostki)"; end; end; end; local function Typ_jednostki() if(nazwa_jednostki~="")then --local kod_jezyka,kod_projektu=KodyWikiPudelka(frame,liczba_numer_jednostki); --local klucz_projektu=kod_projektu..":"..kod_jezyka; local pudelko_modul=require("Module:Pudełko"); local pelna_nazwa_strony=((nazwa_przestrzeni_nazw~="")and nazwa_przestrzeni_nazw..":" or "")..nazwa_jednostki; if(pudelko_modul.CzyNiepoprawnaNazwa(pelna_nazwa_strony))then return "(błąd nazwy jednostki)";end; local nazwy_modul=require("Module:Nazwy") pelna_nazwa_strony=nazwy_modul["PEŁNANAZWASTRONY"]{[1]=pelna_nazwa_strony,["kod języka"]=kod_jezyka,["kod projektu"]=kod_projektu,}; local norm_przed_lub_dyskusji=p.Normalna_przedmiotowa_lub_dyskusji_nazwa_przestrzeni_nazw(nazwa_przestrzeni_nazw,1,kod_jezyka,kod_projektu); if(kod_projektu==pudelko_modul["Kod projektu tego projektu"]())then local nazwa_strony_glownej_dla_dzieci_ze_zmiennej=p.Nazwa_strony_bazowej_dla_dzieci_ze_zmiennej(frame,liczba_numer_jednostki,kod_jezyka); if(nazwa_strony_glownej_dla_dzieci_ze_zmiennej=="")then return "(błąd nazwy strony głównej dla dzieci)";end; local nazwa_strony_glownej_wikijuniora=p.Nazwa_strony_bazowej_dla_dzieci_z_wikidanych(kod_jezyka); local nazwa_strony_glownej_dla_dzieci_uzyskana=(not nazwa_strony_glownej_dla_dzieci_ze_zmiennej)and nazwa_strony_glownej_wikijuniora or nazwa_strony_glownej_dla_dzieci_ze_zmiennej; if(nazwa_strony_glownej_dla_dzieci_uzyskana)then if(pudelko_modul.CzyNiepoprawnaNazwa(nazwa_strony_glownej_dla_dzieci_uzyskana))then return "(błąd nazwy strony głównej dla dzieci)";end; nazwa_strony_glownej_dla_dzieci_uzyskana=nazwy_modul["PEŁNANAZWASTRONY"]{[1]=nazwa_strony_glownej_dla_dzieci_uzyskana,["kod języka"]=kod_jezyka,["kod projektu"]=kod_projektu,}; if(pelna_nazwa_strony==nazwa_strony_glownej_dla_dzieci_uzyskana)then return "strona główna dla dzieci";end; end; end; local nazwa_strony_glownej_projektu_ze_zmiennej=p.Nazwa_strony_bazowej_projektu_ze_zmiennej(frame,liczba_numer_jednostki,kod_jezyka,kod_projektu); if(nazwa_strony_glownej_projektu_ze_zmiennej=="")then return "(błąd nazwy strony głównej projektu)";end; local nazwa_strony_glownej_projektu_z_wikidanych=p.Nazwa_strony_bazowej_projektu_z_wikidanych(kod_jezyka,kod_projektu); local nazwa_strony_glownej_projektu_uzyskana=(not nazwa_strony_glownej_projektu_ze_zmiennej)and nazwa_strony_glownej_projektu_z_wikidanych or nazwa_strony_glownej_projektu_ze_zmiennej; if(nazwa_strony_glownej_projektu_uzyskana)then if(pudelko_modul.CzyNiepoprawnaNazwa(nazwa_strony_glownej_projektu_uzyskana))then return "(błąd nazwy strony głównej projektu)";end; nazwa_strony_glownej_projektu_uzyskana=nazwy_modul["PEŁNANAZWASTRONY"]{[1]=nazwa_strony_glownej_projektu_uzyskana,["kod języka"]=kod_jezyka,["kod projektu"]=kod_projektu,}; if(pelna_nazwa_strony==nazwa_strony_glownej_projektu_uzyskana)then return "strona główna projektu";end; end; if(norm_przed_lub_dyskusji=="")then local parametry_modul=require("Module:Parametry"); if(parametry_modul.CzyTak(frame.args["obsługiwane jednostki jako nieopisowe strony"]))then return "artykuł"; else local it=mw.ustring.match(nazwa_jednostki,"^[^/]+$"); if(it)then return "podręcznik";else return "artykuł";end; end; elseif(norm_przed_lub_dyskusji=="Wikijunior")then local parametry_modul=require("Module:Parametry"); if(parametry_modul.CzyTak(frame.args["obsługiwane jednostki jako nieopisowe strony"]))then return "artykuł dla dzieci"; else local it=mw.ustring.match(nazwa_jednostki,"^[^/]+$"); if(it)then return "podręcznik dla dzieci";else return "artykuł dla dzieci";end; end; elseif(norm_przed_lub_dyskusji=="User")then local parametry_modul=require("Module:Parametry"); if(parametry_modul.CzyTak(frame.args["obsługiwane jednostki użytkownika jako normalne strony"]))then return "strona użytkownika"; else local czy_podstrony=mw.ustring.match(nazwa_jednostki,"^[^/]+$") if(czy_podstrony)then return "strona główna użytkownika"; else if(not parametry_modul.CzyTak(frame.args["obsługiwane jednostki jako nieopisowe strony"]))then if(parametry_modul.CzyTak(frame.args["obsługiwane jednostki użytkownika"]))then local czy_ksiazka=mw.ustring.match(nazwa_jednostki,"^[^/]+/[^/]*$"); if(czy_ksiazka)then return "podręcznik użytkownika"; else return "artykuł użytkownika"; end; else return "jednostka użytkownika"; end; else return "strona użytkownika"; end; end; end; elseif(norm_przed_lub_dyskusji=="File")then return "strona pliku"; elseif(norm_przed_lub_dyskusji=="Category")then return "strona kategorii"; elseif(norm_przed_lub_dyskusji=="Project")then local parametry_modul=require("Module:Parametry"); if(parametry_modul.CzyTak(frame.args["obsługiwane brudnopisy jako normalne strony"]))then return "strona projektu";end; if(mw.ustring.match(nazwa_jednostki,"^%s*[Bb]rudnopis/[^/]*/.*"))then if(not parametry_modul.CzyTak(frame.args["obsługiwane jednostki jako nieopisowe strony"]))then if(parametry_modul.CzyTak(frame.args["obsługiwane jednostki brudnopisu projektu"]))then local czy_ksiazka=mw.ustring.match(nazwa_jednostki,"^%s*[Bb]rudnopis/[^/]*/[^/]*$"); if(czy_ksiazka)then return "podręcznik brudnopisu projektu"; else return "artykuł brudnopisu projektu"; end; else return "jednostka brudnopisu projektu"; end; else return "strona brudnopisu projektu"; end; else return "strona projektu"; end; elseif(norm_przed_lub_dyskusji=="Help")then return "strona pomocy"; elseif(norm_przed_lub_dyskusji=="MediaWiki")then return "strona komunikatu"; elseif(norm_przed_lub_dyskusji=="Special")then return "strona specialna"; elseif(norm_przed_lub_dyskusji=="Gadget")then return "strona gadżetu"; elseif(norm_przed_lub_dyskusji=="Template")then local parametry_modul=require("Module:Parametry"); if(parametry_modul.CzyTak(frame.args["obsługiwane strony jako niebrudnopisowe jednostki programowe"]))then return "strona szablonu";end; local function CzySzablonAlboOpis(nazwa_przestrzeni_nazw,nazwa_jednostki,szablon,opis_szablonu,strona_szablonu,prefix) local parametry_modul=require("Module:Parametry"); if(parametry_modul.CzyTak(frame.args["obsługiwane opisy jako strony jednostek programowych"]) or parametry_modul.CzyTak(frame.args["obsługiwane jednostki jako nieopisowe strony"]))then return szablon; else if(mw.ustring.match(nazwa_jednostki,"^"..prefix..".*/opis$"))then return opis_szablonu; else if(not parametry_modul.CzyTak(frame.args["obsługiwane nieudokumentowane szablony jako szablony"]))then local czy_brudnopis=mw.ustring.match(nazwa_jednostki,"^"..prefix..".*$"); if(czy_brudnopis)then local pagename=(nazwa_przestrzeni_nazw~="")and nazwa_przestrzeni_nazw..":"..nazwa_jednostki or nazwa_jednostki; local czy_istnieje_strona,tab=require("Module:Techniczne").PoliczZbiory(pagename); if(czy_istnieje_strona==1)then local czy_brudnopis_opisu_szablonu=require("Module:Łatki").contentMatch{ [1]='<noinclude>.-{{%s*[Dd]okumentacja%s*}}.-</noinclude>', [2]='<noinclude>.-{{%s*[Dd]okumentacja%s*|.-</noinclude>',pagename=pagename,namespace=0 }; if(not czy_brudnopis_opisu_szablonu)then return opis_szablonu;else return szablon;end; else return szablon; end; else return strona_szablonu; end; else return szablon; end; end; end; end; if((not parametry_modul.CzyTak(frame.args["obsługiwane brudnopisy jako normalne strony"]))and(mw.ustring.match(nazwa_jednostki,"^%s*[Bb]rudnopis/[^/]*/.*")))then return CzySzablonAlboOpis(norm_przed_lub_dyskusji,nazwa_jednostki,"strona brudnopisu szablonu","strona brudnopisu opisu szablonu","strona szablonu","[Bb]rudnopis/[^/]*/"); else return CzySzablonAlboOpis(norm_przed_lub_dyskusji,nazwa_jednostki,"strona szablonu","strona opisu szablonu","strona szablonu",""); end; elseif(norm_przed_lub_dyskusji=="Module")then local parametry_modul=require("Module:Parametry"); if(parametry_modul.CzyTak(frame.args["obsługiwane strony jako niebrudnopisowe jednostki programowe"]))then return "strona modułu";end; if((not parametry_modul.CzyTak(frame.args["obsługiwane brudnopisy jako normalne strony"]))and(mw.ustring.match(nazwa_jednostki,"^%s*[Bb]rudnopis/[^/]*/.*")))then if(parametry_modul.CzyTak(frame.args["obsługiwane opisy jako strony jednostek programowych"]) or parametry_modul.CzyTak(frame.args["obsługiwane jednostki jako nieopisowe strony"]))then return "strona brudnopisu modułu" else local pelna_nazwa_strony=(norm_przed_lub_dyskusji~="")and norm_przed_lub_dyskusji..":"..nazwa_jednostki or nazwa_jednostki; pelna_nazwa_strony=require("Module:Nazwy")["PEŁNANAZWASTRONY"]{[1]=pelna_nazwa_strony,["kod języka"]=kod_jezyka,["kod projektu"]=kod_projektu,}; local pelna_nazwa_strony_brudnopisu_opisu_modulu=require("Module:Techniczne")["PełnaNazwaOpisuModułu"](pelna_nazwa_strony); if(pelna_nazwa_strony==pelna_nazwa_strony_brudnopisu_opisu_modulu)then return "strona brudnopisu opisu modułu"; else return "strona brudnopisu modułu"; end; end; else if(parametry_modul.CzyTak(frame.args["obsługiwane opisy jako strony jednostek programowych"]) or parametry_modul.CzyTak(frame.args["obsługiwane jednostki jako nieopisowe strony"]))then return "strona modułu" else local pelna_nazwa_strony=(norm_przed_lub_dyskusji~="")and norm_przed_lub_dyskusji..":"..nazwa_jednostki or nazwa_jednostki; pelna_nazwa_strony=require("Module:Nazwy")["PEŁNANAZWASTRONY"]{[1]=pelna_nazwa_strony,["kod języka"]=kod_jezyka,["kod projektu"]=kod_projektu,}; local pelna_nazwa_opisu_modulu=require("Module:Techniczne")["PełnaNazwaOpisuModułu"](pelna_nazwa_strony); if(pelna_nazwa_strony==pelna_nazwa_opisu_modulu)then return "strona opisu modułu"; else return "strona modułu"; end; end; end; else return "inne"; end; end; return "inne"; end; local typ_jednostki=Typ_jednostki(); local function TempFunc(typ_jednostki) if( (kod_liczbowy_przestrzeni_nazw==2) or((kod_liczbowy_przestrzeni_nazw==0)and(p.Czy_dyskusja_typu_jednostki_z_frame_od_dyskusja_typu_jednostki(frame,i))) )then typ_jednostki,ile=mw.ustring.gsub(typ_jednostki,"^(%S+)(%s+)",function(strona,spacja) return strona.." dyskusji"..spacja; end); return typ_jednostki; end; return typ_jednostki; end; if(((analiza)or(nazwa_jednostki_podana))and(typ)and(typ~=""))then if(typ_jednostki==typ)then return TempFunc(typ_jednostki); elseif(nazwa_jednostki_podana)then return "(błąd parametrów pudełkowych)" else return "(błąd typu jednostki)"; end; end; return TempFunc(typ_jednostki); end; function p.Uzyskanie_nazw_jednostki(frame,kod_liczbowy_przestrzeni_nazw,i,numer_argorytmu,co_ma_liczyc) local nazwa_przestrzeni_fun,nazwa_jednostki_fun; if(kod_liczbowy_przestrzeni_nazw==0)then nazwa_przestrzeni_fun="Nazwa przestrzeni nazw"; nazwa_jednostki_fun="Nazwa jednostki"; elseif(kod_liczbowy_przestrzeni_nazw==1)then nazwa_przestrzeni_fun="Nazwa przedmiotowej przestrzeni nazw"; nazwa_jednostki_fun="Nazwa przedmiotowa jednostki"; elseif(kod_liczbowy_przestrzeni_nazw==2)then nazwa_przestrzeni_fun="Nazwa przestrzeni nazw dyskusji" nazwa_jednostki_fun="Nazwa dyskusji jednostki"; else nazwa_przestrzeni_fun="Nazwa przestrzeni nazw"; nazwa_jednostki_fun="Nazwa jednostki"; end; local pudelko_modul=require("Module:Pudełko"); if(not numer_argorytmu)then if((not i)or(i==0))then if((not co_ma_liczyc)or(co_ma_liczyc==0))then local nazwa_przestrzeni_nazw=pudelko_modul[nazwa_przestrzeni_fun](frame,false); local nazwa_jednostki=pudelko_modul["Nazwa jednostki"](frame); return nazwa_przestrzeni_nazw,nazwa_jednostki; elseif(co_ma_liczyc==1)then local nazwa_przestrzeni_nazw=pudelko_modul[nazwa_przestrzeni_fun](frame,false); return nazwa_przestrzeni_nazw; elseif(co_ma_liczyc==2)then return pudelko_modul["Nazwa jednostki"](frame); end; else if((not co_ma_liczyc)or(co_ma_liczyc==0))then local n=p.Nazwa_przestrzeni_nazw_dodatkowe(frame,i); local parametry_modul=require("Module:Parametry"); n=parametry_modul.CzyTak(n); local nazwa_przestrzeni_nazw=(n)and pudelko_modul[nazwa_przestrzeni_fun](frame,false,i) or pudelko_modul[nazwa_przestrzeni_fun.." 2"](frame,false,i); local nazwa_jednostki=(n)and pudelko_modul["Nazwa jednostki"](frame,i) or pudelko_modul[nazwa_jednostki_fun.." 2"](frame,i); return nazwa_przestrzeni_nazw,nazwa_jednostki; elseif(co_ma_liczyc==1)then local n=p.Nazwa_przestrzeni_nazw_dodatkowe(frame,i); local parametry_modul=require("Module:Parametry"); n=parametry_modul.CzyTak(n); local nazwa_przestrzeni_nazw=(n)and pudelko_modul[nazwa_przestrzeni_fun](frame,false,i) or pudelko_modul[nazwa_przestrzeni_fun.." 2"](frame,false,i); return nazwa_przestrzeni_nazw; elseif(co_ma_liczyc==2)then local n=p.Nazwa_przestrzeni_nazw_dodatkowe(frame,i); local parametry_modul=require("Module:Parametry"); n=parametry_modul.CzyTak(n); return (n)and pudelko_modul["Nazwa jednostki"](frame,i) or pudelko_modul[nazwa_jednostki_fun.." 2"](frame,i); end; end; else if(numer_argorytmu==0)then if((not co_ma_liczyc)or(co_ma_liczyc==0))then local nazwa_przestrzeni_nazw=pudelko_modul[nazwa_przestrzeni_fun](frame,false,i); local nazwa_jednostki=pudelko_modul["Nazwa jednostki"](frame,i); return nazwa_przestrzeni_nazw,nazwa_jednostki; elseif(co_ma_liczyc==1)then local nazwa_przestrzeni_nazw=pudelko_modul[nazwa_przestrzeni_fun](frame,false,i); return nazwa_przestrzeni_nazw; elseif(co_ma_liczyc==2)then return pudelko_modul["Nazwa jednostki"](frame,i); end; else if((not co_ma_liczyc)or(co_ma_liczyc==0))then local nazwa_przestrzeni_nazw=pudelko_modul[nazwa_przestrzeni_fun.." 2"](frame,false,i); local nazwa_jednostki=pudelko_modul[nazwa_jednostki_fun.." 2"](frame,i); return nazwa_przestrzeni_nazw,nazwa_jednostki; elseif(co_ma_liczyc==1)then local nazwa_przestrzeni_nazw=pudelko_modul[nazwa_przestrzeni_fun.." 2"](frame,false,i); return nazwa_przestrzeni_nazw; elseif(co_ma_liczyc==2)then return pudelko_modul[nazwa_jednostki_fun.." 2"](frame,i); end; end; end; end; function p.Nazwa_przestrzeni_nazw_dodatkowe(frame,numer_jednostki) local pf=frame.getParent and frame:getParent() or {args={}}; return frame.args["nazwa przestrzeni nazw "..tostring(numer_jednostki)] or pf.args["nazwa przestrzeni nazw "..tostring(numer_jednostki)] end; function p.Nazwa_jednostki(frame,i) local pf=frame.getParent and frame:getParent() or {args={}}; local nazwa_jednostki,liczba_numer_jednostki=p.Nazwy_przestrzeni_i_jednostki_podane_o_pewnym_numerze(frame,i,2); local kod_jezyka,kod_projektu=p.Wikikody_kontenera(frame,liczba_numer_jednostki); if(nazwa_jednostki)then nazwa_jednostki=mw.text.trim(nazwa_jednostki); nazwa_jednostki=mw.ustring.gsub(nazwa_jednostki,"^:",""); nazwa_jednostki=mw.ustring.gsub(nazwa_jednostki,"^([^#]*)#(.*)$","%1"); local parametry=mw.ustring.match(nazwa_jednostki,"^.*%?([^%?]+)$"); if(parametry and mw.ustring.match(parametry,"[^=]+=[^=]*"))then nazwa_jednostki=mw.ustring.gsub(nazwa_jednostki,"^(.*)%?([^%?]+)$","%1"); end; else local nazwy_modul=require("Module:Nazwy"); nazwa_jednostki=nazwy_modul["NAZWASTRONY"]{["kod języka"]=kod_jezyka,["kod projektu"]=kod_projektu,}; end; local parametry_modul=require("Module:Parametry"); nazwa_jednostki=parametry_modul["Odstępy"]{[1]=nazwa_jednostki,[2]="tak",}; return mw.getContentLanguage():ucfirst(nazwa_jednostki); end; function p.Nazwy_przestrzeni_i_jednostki_podane_o_pewnym_numerze(frame,i,co_podac) local pf=frame.getParent and frame:getParent() or {args={}}; local numer_jednostki=i or frame.args["numer jednostki"]; local liczba_numer_jednostki=tonumber(numer_jednostki) or 0; local nazwa_jednostki; local bool_numer_jednostki=(liczba_numer_jednostki~=0); local function Nazwa_jednostki() if bool_numer_jednostki then nazwa_jednostki=frame.args["nazwa jednostki "..liczba_numer_jednostki] or ((liczba_numer_jednostki==1)and(pf.args["cel"])) or pf.args[liczba_numer_jednostki]; else nazwa_jednostki=frame.args["nazwa jednostki"] or pf.args["nazwa jednostki"]; end; return nazwa_jednostki; end; local function Nazwa_przestrzeni_nazw() local nazwa_przestrzeni_nazw=bool_numer_jednostki and (frame.args["nazwa przestrzeni nazw i"] or pf.args["nazwa przestrzeni nazw i"] or frame.args["nazwa przestrzeni nazw "..liczba_numer_jednostki] or pf.args["nazwa przestrzeni nazw "..liczba_numer_jednostki]) or frame.args["nazwa przestrzeni nazw"] or pf.args["nazwa przestrzeni nazw"]; return nazwa_przestrzeni_nazw; end; if(not co_podac)then return Nazwa_przestrzeni_nazw(),Nazwa_jednostki(),liczba_numer_jednostki; elseif(co_podac==1)then return Nazwa_przestrzeni_nazw(),liczba_numer_jednostki; elseif(co_podac==2)then return Nazwa_jednostki(),liczba_numer_jednostki; else return Nazwa_przestrzeni_nazw(),Nazwa_jednostki(),liczba_numer_jednostki; end; end; function p.Jaka_nazwa_jednostki(frame,i,jaka) local nazwa_przestrzeni_nazw,nazwa_jednostki,liczba_numer_jednostki=p.Nazwy_przestrzeni_i_jednostki_podane_o_pewnym_numerze(frame,i); nazwa_przestrzeni_nazw=nazwa_przestrzeni_nazw or p.Nazwa_przestrzeni_nazw_uzyskana_z_typu_jednostki_z_frame(frame,liczba_numer_jednostki); ---- local nazwy_modul=require("Module:Nazwy"); nazwa_przestrzeni_nazw=nazwa_przestrzeni_nazw and mw.text.trim(nazwa_przestrzeni_nazw) or nazwy_modul["NAZWAPRZESTRZENI"](); if(nazwa_jednostki)then local html_modul=require("Module:Html"); nazwa_jednostki=html_modul["NazwaStronyAdresu"](nazwa_jednostki,true); else nazwa_jednostki=nazwy_modul["NAZWASTRONY"](); end; local kod_jezyka,kod_projektu=p.Wikikody_kontenera(frame,liczba_numer_jednostki); local wiki_modul=require("Module:Wiki"); local czy_biezaca=wiki_modul["CzyBieżącaWiki"]{["kod języka"]=kod_jezyka,["kod projektu"]=kod_projektu,}; if(jaka)then if(czy_biezaca)then local tab_parametry={nazwa=nazwa_przestrzeni_nazw,}; if(jaka=="przedmiotowa")then tab_parametry["przedmiotowa"]="tak";end; nazwa_przestrzeni_nazw=nazwy_modul.Np(tab_parametry); else local tab_parametry={nazwa=nazwa_przestrzeni_nazw,["kod języka"]=kod_jezyka,["kod projektu"]=kod_projektu,}; if(jaka=="przedmiotowa")then tab_parametry["przedmiotowa"]="tak";end; nazwa_przestrzeni_nazw=nazwy_modul.NpDane(tab_parametry); end; else if(czy_biezaca)then nazwa_przestrzeni_nazw=nazwy_modul.Np{nazwa=nazwa_przestrzeni_nazw}; else nazwa_przestrzeni_nazw=nazwy_modul.NpDane{nazwa=nazwa_przestrzeni_nazw,["kod języka"]=kod_jezyka,["kod projektu"]=kod_projektu,}; end; end; if(not mw.ustring.match(nazwa_jednostki,"^:"))then if(nazwa_przestrzeni_nazw~="")then if((not typ)or(typ=="przedmiotowa"))then if(czy_biezaca)then local nazwy_np_modul=mw.loadData("Module:Nazwy/Np"); if(nazwa_przestrzeni_nazw==nazwy_np_modul.Template)then local nazwa_przestrzeni_nazw_d=nazwy_modul["NAZWAPRZESTRZENI"](nazwa_jednostki); if(nazwa_przestrzeni_nazw_d==nazwy_np_modul.Template)then return nazwy_modul["NAZWASTRONY"](nazwa_jednostki); end; elseif(nazwa_przestrzeni_nazw==nazwy_np_modul.Module)then local nazwa_przestrzeni_nazw_d=nazwy_modul["NAZWAPRZESTRZENI"](nazwa_jednostki); if(nazwa_przestrzeni_nazw_d==nazwy_np_modul.Module)then return nazwy_modul["NAZWASTRONY"](nazwa_jednostki); end; end; else local template_prze=nazwy_modul.NpDane{nazwa="Template",["kod języka"]=kod_jezyka,["kod projektu"]=kod_projektu,}; local module_prze=nazwy_modul.NpDane{nazwa="Module",["kod języka"]=kod_jezyka,["kod projektu"]=kod_projektu,}; if(nazwa_przestrzeni_nazw==template_prze)then local nazwa_przestrzeni_nazw_d=nazwy_modul["NAZWAPRZESTRZENI"]{[1]=nazwa_jednostki,["kod języka"]=kod_jezyka,["kod projektu"]=kod_projektu,}; if(nazwa_przestrzeni_nazw_d==template_prze)then return nazwy_modul["NAZWASTRONY"]{[1]=nazwa_jednostki,["kod języka"]=kod_jezyka,["kod projektu"]=kod_projektu,}; end; elseif(nazwa_przestrzeni_nazw==module_prze)then local nazwa_przestrzeni_nazw_d=nazwy_modul["NAZWAPRZESTRZENI"]{[1]=nazwa_jednostki,["kod języka"]=kod_jezyka,["kod projektu"]=kod_projektu,}; if(nazwa_przestrzeni_nazw_d==module_prze)then return nazwy_modul["NAZWASTRONY"]{[1]=nazwa_jednostki,["kod języka"]=kod_jezyka,["kod projektu"]=kod_projektu,}; end; end; end; end; local parametry_modul=require("Module:Parametry"); nazwa_jednostki=parametry_modul["Odstępy"]{[1]=nazwa_jednostki,[2]="tak",}; return mw.getContentLanguage():ucfirst(nazwa_jednostki); else return nazwy_modul["NAZWASTRONY"]{[1]=nazwa_jednostki,["kod języka"]=kod_jezyka,["kod projektu"]=kod_projektu,}; end; else return nazwy_modul["NAZWASTRONY"]{[1]=nazwa_jednostki,["kod języka"]=kod_jezyka,["kod projektu"]=kod_projektu,}; end; end; function p.Czy_przestrzen_nazw_jest_obslugiwana(frame,jakas_przestrzen_nazw,kod_jezyka,kod_projektu) local nazwy_modul=require("Module:Nazwy"); local parametry_modul=require("Module:Parametry"); local wiki_modul=require("Module:Wiki"); local czy_biezaca=wiki_modul["CzyBieżącaWiki"]{["kod języka"]=kod_jezyka,["kod projektu"]=kod_projektu,}; if(czy_biezaca)then jakas_przestrzen_nazw=nazwy_modul.Np{nazwa=jakas_przestrzen_nazw}; else jakas_przestrzen_nazw=nazwy_modul.NpDane{nazwa=jakas_przestrzen_nazw,["kod języka"]=kod_jezyka,["kod projektu"]=kod_projektu,}; end; local function nazwa_przestrzeni_nazw_fun(nazwa_przestrzeni_nazw_iter) if(czy_biezaca)then nazwa_przestrzeni_nazw_iter=nazwy_modul.Np{nazwa=nazwa_przestrzeni_nazw_iter}; else nazwa_przestrzeni_nazw_iter=nazwy_modul.NpDane{nazwa=nazwa_przestrzeni_nazw_iter,["kod języka"]=kod_jezyka,["kod projektu"]=kod_projektu,}; end; if(jakas_przestrzen_nazw==nazwa_przestrzeni_nazw_iter)then return true; end; return false; end; for licznik,nazwa_przestrzeni_nazw in pairs(frame.args)do if(type(licznik)=="number")then local nazwa_przestrzeni_nazw_element,klucze_element=mw.ustring.match(nazwa_przestrzeni_nazw,"^%s*([%w%s]*)%s*:%s*(.-)%s*"); if(nazwa_przestrzeni_nazw_element and klucze_element)then local tab_klucze=mw.text.split(klucze_element,"%s*,%s*",false); local wiki_modul=require("Module:Wiki"); for _,klucz_element in ipairs(tab_klucze)do local kod_jezyka_obslugiwane,kod_projektu_obslugiwane=wiki_modul.KluczProjektu(klucz_element); if(kod_jezyka_obslugiwane==kod_jezyka and kod_projektu_obslugiwane==kod_projektu)then local wynik=nazwa_przestrzeni_nazw_fun(nazwa_przestrzeni_nazw_element); if(wynik)then return true;end; end; end; else local wynik=nazwa_przestrzeni_nazw_fun(nazwa_przestrzeni_nazw); if(wynik)then return true;end; end; end; end; return false; end; function p.Analiza_interwiki_czy_projekt_aktualny(frame,czy_jezyk,czy_projekt) local parametry_modul=require("Module:Parametry"); local p=parametry_modul.PobierzFrameEwentualnieParent(frame); local pudelko_modul=require("Module:Pudełko"); local wiki_modul=require("Module:Wiki"); local jezyk_biezacy=czy_jezyk and pudelko_modul["Kod języka tego projektu"](); local projekt_biezacy=czy_projekt and pudelko_modul["Kod projektu tego projektu"](); for i,_ in pairs(p.args)do if(type(i)=="number")then local klucz_projektu=pudelko_modul["Klucz projektu"](frame,i); local kod_jezyka=pudelko_modul["Kod języka"](frame,i); local kod_projektu=pudelko_modul["kod projektu"](frame,i); local jezyk,projekt=wiki_modul.KodyWiki(klucz_projektu,kod_jezyka,kod_projektu); if((czy_jezyk and (jezyk~=jezyk_biezacy))or(czy_projekt and(projekt~=projekt_biezacy)))then return "tak"; end; end; end; return; end; return p; s0mb9hdv3g1j4t5b22ojctj1se4wqv3 540433 540432 2026-04-24T02:13:58Z Persino 2851 540433 Scribunto text/plain local p={}; function p.Nazwa_strony_bazowej_projektu_z_wikidanych(kod_jezyka,kod_projektu) local strona=require("Module:Pudełko")["Strona główna tego projektu"](); local odpowiednik_strony=require("Module:Wiki").WikidaneOdpowiednikStrony{["nazwa strony"]=strona,["kod języka"]=kod_jezyka,["kod projektu"]=kod_projektu}; if(odpowiednik_strony)then local nazwy_modul=require("Module:Nazwy"); return nazwy_modul["PEŁNANAZWASTRONY"]{[1]=odpowiednik_strony,["kod języka"]=kod_jezyka,["kod projektu"]=kod_projektu,}; else local pudelko_modul=require("Module:Pudełko"); if((kod_jezyka==pudelko_modul["Kod języka tego projektu"]())and(kod_projektu==pudelko_modul["Kod projektu tego projektu"]()))then return strona; else local wiki_interwiki_modul=mw.loadData("Module:Wiki/interwiki"); local czy_w_wikidanych=wiki_interwiki_modul.tablica_kody_projektu_wikidane.lingwistyczne[kod_projektu] or wiki_interwiki_modul.tablica_kody_projektu_wikidane.specjalistyczne[kod_projektu]; return czy_w_wikidanych and "Main Page" or nil; end; end; end; function p.Nazwa_strony_bazowej_dla_dzieci_z_wikidanych(kod_jezyka) local strona=require("Module:Pudełko")["Strona główna dla dzieci tego projektu"](); local pudelko_modul=require("Module:Pudełko"); local kod_jezyka_tego_projektu=pudelko_modul["Kod języka tego projektu"](); if(kod_jezyka==kod_jezyka_tego_projektu)then return strona;end; local kod_projektu_tego_projektu=pudelko_modul["Kod projektu tego projektu"](); local odpowiednik_strony=require("Module:Wiki").WikidaneOdpowiednikStrony{["nazwa strony"]=strona,["kod języka"]=kod_jezyka,["kod projektu"]=kod_projektu_tego_projektu}; if(odpowiednik_strony)then local nazwy_modul=require("Module:Nazwy"); return nazwy_modul["PEŁNANAZWASTRONY"]{[1]=odpowiednik_strony,["kod języka"]=kod_jezyka,["kod projektu"]=kod_projektu_tego_projektu,}; else return "Wikijunior"; end; end; function p.Nazwa_strony_bazowej_projektu_ze_zmiennej(frame,i,kod_jezyka,kod_projektu) local pf=frame.getParent and frame:getParent() or {args={}}; local strona_glowna_projektu; if(i~=0)then local pudelko_modul=require("Module:Pudełko"); local kod_jezyka_tego_projektu=pudelko_modul["Kod języka tego projektu"](); local kod_projektu_tego_projektu=pudelko_modul["Kod projektu tego projektu"](); if(kod_jezyka==kod_jezyka_tego_projektu)and(kod_projektu==kod_projektu_tego_projektu)then strona_glowna_projektu=frame.args["strona główna projektu"] or pf.args["strona główna projektu"] else strona_glowna_projektu=(frame.args["strona główna projektu "..i] or pf.args["strona główna projektu "..i]) end; else strona_glowna_projektu=frame.args["strona główna projektu"] or pf.args["strona główna projektu"] end; local parametry_modul=require("Module:Parametry"); return (parametry_modul.CzyTak(strona_glowna_projektu))and require("Module:Nazwy")["PEŁNANAZWASTRONY"]{[1]=strona_glowna_projektu,["kod języka"]=kod_jezyka,["kod projektu"]=kod_projektu,} or (strona_glowna_projektu and "" or nil); end; function p.Nazwa_strony_bazowej_dla_dzieci_ze_zmiennej(frame,i,kod_jezyka) local pf=frame.getParent and frame:getParent() or {args={}}; local pudelko_modul=require("Module:Pudełko"); local strona_glowna_dla_dzieci; if(i~=0)then local kod_jezyka_tego_projektu=pudelko_modul["Kod języka tego projektu"](); if(kod_jezyka==kod_jezyka_tego_projektu)then strona_glowna_dla_dzieci=frame.args["strona główna dla dzieci"] or pf.args["strona główna dla dzieci"] else strona_glowna_dla_dzieci=(frame.args["strona główna dla dzieci "..i] or pf.args["strona główna dla dzieci "..i]) end; else strona_glowna_dla_dzieci=frame.args["strona główna dla dzieci"] or pf.args["strona główna dla dzieci"] end; local kod_projektu_tego_projektu=pudelko_modul["Kod projektu tego projektu"](); local parametry_modul=require("Module:Parametry"); return (parametry_modul.CzyTak(strona_glowna_dla_dzieci))and require("Module:Nazwy")["PEŁNANAZWASTRONY"]{[1]=strona_glowna_dla_dzieci,["kod języka"]=kod_jezyka,["kod projektu"]=kod_projektu_tego_projektu,} or (strona_glowna_dla_dzieci and "" or nil); end; function p.Normalna_przedmiotowa_lub_dyskusji_nazwa_przestrzeni_nazw(nazwa_przestrzeni_nazw, normmalna_przedmiotwa_dyskusji,kod_jezyka,kod_projektu) local nazwa_przestrzeni_nazw_blad; local wiki_modul=require("Module:Wiki"); local nazwy_modul=require("Module:Nazwy"); local czy_biezaca=wiki_modul["CzyBieżącaWiki"]{["kod języka"]=kod_jezyka,["kod projektu"]=kod_projektu,}; if(normmalna_przedmiotwa_dyskusji==0)then if(czy_biezaca)then nazwa_przestrzeni_nazw_blad=nazwy_modul.Np{nazwa=nazwa_przestrzeni_nazw,["kanoniczna"]="tak",["nazwij projektem"]="tak",["nazwij dyskusją projektu"]="tak",["istnieje"]="tak",["wynik błędu nietekstowy"]="tak",}; else nazwa_przestrzeni_nazw_blad=nazwy_modul.NpDane{nazwa=nazwa_przestrzeni_nazw,["kanoniczna"]="tak",["nazwij projektem"]="tak",["nazwij dyskusją projektu"]="tak",["kod języka"]=kod_jezyka,["kod projektu"]=kod_projektu,["istnieje"]="tak",["wynik błędu nietekstowy"]="tak",}; end; elseif(normmalna_przedmiotwa_dyskusji==1)then if(czy_biezaca)then nazwa_przestrzeni_nazw_blad=nazwy_modul.Np{nazwa=nazwa_przestrzeni_nazw, przedmiotowa="tak",["kanoniczna"]="tak",["nazwij projektem"]="tak",["nazwij dyskusją projektu"]="tak",["istnieje"]="tak",["wynik błędu nietekstowy"]="tak",}; else nazwa_przestrzeni_nazw_blad=nazwy_modul.NpDane{nazwa=nazwa_przestrzeni_nazw, przedmiotowa="tak",["kanoniczna"]="tak",["nazwij projektem"]="tak",["nazwij dyskusją projektu"]="tak",["kod języka"]=kod_jezyka,["kod projektu"]=kod_projektu,["istnieje"]="tak",["wynik błędu nietekstowy"]="tak",}; end; elseif(normmalna_przedmiotwa_dyskusji==2)then if(czy_biezaca)then nazwa_przestrzeni_nazw_blad=nazwy_modul.Np{nazwa=nazwa_przestrzeni_nazw, dyskusja="tak",["kanoniczna"]="tak",["nazwij projektem"]="tak",["nazwij dyskusją projektu"]="tak",["istnieje"]="tak",["wynik błędu nietekstowy"]="tak",}; else nazwa_przestrzeni_nazw_blad=nazwy_modul.NpDane{nazwa=nazwa_przestrzeni_nazw, dyskusja="tak",["kanoniczna"]="tak",["nazwij projektem"]="tak",["nazwij dyskusją projektu"]="tak",["kod języka"]=kod_jezyka,["kod projektu"]=kod_projektu,["istnieje"]="tak",["wynik błędu nietekstowy"]="tak",}; end; else if(czy_biezaca)then nazwa_przestrzeni_nazw_blad=nazwy_modul.Np{nazwa=nazwa_przestrzeni_nazw,["kanoniczna"]="tak",["nazwij projektem"]="tak",["nazwij dyskusją projektu"]="tak",["istnieje"]="tak",["wynik błędu nietekstowy"]="tak",}; else nazwa_przestrzeni_nazw_blad=nazwy_modul.NpDane{nazwa=nazwa_przestrzeni_nazw,["kanoniczna"]="tak",["nazwij projektem"]="tak",["nazwij dyskusją projektu"]="tak",["kod języka"]=kod_jezyka,["kod projektu"]=kod_projektu,["istnieje"]="tak",["wynik błędu nietekstowy"]="tak",}; end; end; return nazwa_przestrzeni_nazw_blad end; function p.Nazwa_przestrzeni_nazw(frame,kod_liczbowy_przestrzeni_nazw,czy_uwzglednic_alternatywna_nazwe,numer_jednostki) local pf=frame.getParent and frame:getParent() or {args={}}; local nazwa_przestrzeni_nazw=p.Nazwy_przestrzeni_i_jednostki_podane_o_pewnym_numerze(frame,numer_jednostki,1) or p.Nazwa_przestrzeni_nazw_uzyskana_z_typu_jednostki_z_frame(frame,numer_jednostki); local nazwy_modul=require("Module:Nazwy"); local wiki_modul=require("Module:Wiki"); local kod_jezyka,kod_projektu=p.Wikikody_kontenera(frame,numer_jednostki); local czy_biezaca_wiki=wiki_modul["CzyBieżącaWiki"]{["kod języka"]=kod_jezyka,["kod projektu"]=kod_projektu,}; local czy_blad_nazwy_przestrzeni_nazw; local typ; if(kod_liczbowy_przestrzeni_nazw==1)then typ="przedmiotowa"; if(czy_biezaca_wiki)then czy_blad_nazwy_przestrzeni_nazw=(not nazwa_przestrzeni_nazw)and nazwy_modul["PRZEDMIOTOWAPRZESTRZEŃ"]() or nazwy_modul.Np{nazwa=nazwa_przestrzeni_nazw,przedmiotowa="tak",["istnieje"]="tak",["wynik błędu nietekstowy"]="tak",}; else czy_blad_nazwy_przestrzeni_nazw=(not nazwa_przestrzeni_nazw)and nazwy_modul["PRZEDMIOTOWAPRZESTRZEŃ"]{["kod języka"]=kod_jezyka,["kod projektu"]=kod_projektu,} or nazwy_modul.NpDane{nazwa=nazwa_przestrzeni_nazw,przedmiotowa="tak",["kod języka"]=kod_jezyka,["kod projektu"]=kod_projektu,["istnieje"]="tak",["wynik błędu nietekstowy"]="tak",}; end; elseif(kod_liczbowy_przestrzeni_nazw==2)then if(czy_biezaca_wiki)then typ="dyskusja"; czy_blad_nazwy_przestrzeni_nazw=(not nazwa_przestrzeni_nazw)and nazwy_modul["PRZESTRZEŃDYSKUSJI"]() or nazwy_modul.Np{nazwa=nazwa_przestrzeni_nazw,dyskusja="tak",["istnieje"]="tak",["wynik błędu nietekstowy"]="tak",}; else czy_blad_nazwy_przestrzeni_nazw=(not nazwa_przestrzeni_nazw)and nazwy_modul["PRZESTRZEŃDYSKUSJI"]{["kod języka"]=kod_jezyka,["kod projektu"]=kod_projektu,} or nazwy_modul.NpDane{nazwa=nazwa_przestrzeni_nazw,dyskusja="tak",["kod języka"]=kod_jezyka,["kod projektu"]=kod_projektu,["istnieje"]="tak",["wynik błędu nietekstowy"]="tak",}; end; else if(czy_biezaca_wiki)then czy_blad_nazwy_przestrzeni_nazw=(not nazwa_przestrzeni_nazw)and nazwy_modul["NAZWAPRZESTRZENI"]() or nazwy_modul.Np{nazwa=nazwa_przestrzeni_nazw,["istnieje"]="tak",["wynik błędu nietekstowy"]="tak",}; else czy_blad_nazwy_przestrzeni_nazw=(not nazwa_przestrzeni_nazw)and nazwy_modul["NAZWAPRZESTRZENI"]{["kod języka"]=kod_jezyka,["kod projektu"]=kod_projektu,} or nazwy_modul.NpDane{nazwa=nazwa_przestrzeni_nazw,["kod języka"]=kod_jezyka, ["kod projektu"]=kod_projektu,["istnieje"]="tak",["wynik błędu nietekstowy"]="tak",}; end; end; if(czy_blad_nazwy_przestrzeni_nazw)then return czy_blad_nazwy_przestrzeni_nazw; else if(((czy_uwzglednic_alternatywna_nazwe==nil)and true or czy_uwzglednic_alternatywna_nazwe) and frame.args[1])then local nazwa_przestrzeni_nazw_alternatywnej=mw.text.trim(frame.args[1]); if(mw.ustring.match(nazwa_przestrzeni_nazw_alternatywnej,"^[%w%s_]*$"))then local czy_blad_nazwa_przestrzeni_nazw_alternatywnej; if(czy_biezaca_wiki)then local tab_parametry={nazwa=nazwa_przestrzeni_nazw_alternatywnej,["istnieje"]="tak",["wynik błędu nietekstowy"]="tak",}; if(typ)then tab_parametry[typ]="tak";end; czy_blad_nazwa_przestrzeni_nazw_alternatywnej=nazwy_modul.Np(tab_parametry); else local tab_parametry={nazwa=nazwa_przestrzeni_nazw_alternatywnej,["kod języka"]=kod_jezyka,["kod projektu"]=kod_projektu,["istnieje"]="tak",["wynik błędu nietekstowy"]="tak",}; if(typ)then tab_parametry[typ]="tak";end; czy_blad_nazwa_przestrzeni_nazw_alternatywnej=nazwy_modul.NpDane(tab_parametry); end; return czy_blad_nazwa_przestrzeni_nazw_alternatywnej or "(błąd)"; else return "(błąd)"; end; else local parametry_modul=require("Module:Parametry"); nazwa_przestrzeni_nazw=parametry_modul["Odstępy"]{[1]=nazwa_przestrzeni_nazw,[2]="tak",}; if(mw.ustring.match(nazwa_przestrzeni_nazw,"^[%w%s_]*$"))then return nazwa_przestrzeni_nazw; else return "(błąd)"; end; end; end; end; function p.Nazwa_przestrzeni_nazw_2(frame,czy_uwzglednic_alternatywna_nazwe,i) local nazwa_przestrzeni_nazw,nazwa_jednostki,liczba_numer_jednostki=p.Nazwy_przestrzeni_i_jednostki_podane_o_pewnym_numerze(frame,i); nazwa_przestrzeni_nazw=nazwa_przestrzeni_nazw or p.Nazwa_przestrzeni_nazw_uzyskana_z_typu_jednostki_z_frame(frame,liczba_numer_jednostki); local nazwy_modul=require("Module:Nazwy"); local kod_jezyka,kod_projektu=p.Wikikody_kontenera(frame,liczba_numer_jednostki); local wiki_modul=require("Module:Wiki"); local czy_biezaca_wiki=wiki_modul["CzyBieżącaWiki"]{["kod języka"]=kod_jezyka,["kod projektu"]=kod_projektu,}; local nazwa_przestrzeni_nazw_blad; local parametry_modul=require("Module:Parametry"); if(czy_biezaca_wiki)then nazwa_przestrzeni_nazw=nazwa_przestrzeni_nazw and mw.text.trim(nazwa_przestrzeni_nazw) or nazwy_modul["NAZWAPRZESTRZENI"](); nazwa_przestrzeni_nazw_blad=require("Module:Nazwy").Np{nazwa=nazwa_przestrzeni_nazw,["istnieje"]="tak",["wynik błędu nietekstowy"]="tak",}; if(nazwa_jednostki)then nazwa_jednostki=parametry_modul["Odstępy"]{[1]=nazwa_jednostki,[2]="tak",}; nazwa_jednostki=mw.ustring.gsub(nazwa_jednostki,"^([^#]*)#(.*)$","%1"); local parametry=mw.ustring.match(nazwa_jednostki,"^.*%?([^%?]+)$"); if(parametry and mw.ustring.match(parametry,"[^=]+=[^=]*"))then nazwa_jednostki=mw.ustring.gsub(nazwa_jednostki,"^(.*)%?([^%?]+)$","%1"); end; else nazwa_jednostki=nazwy_modul["NAZWASTRONY"](); end; else nazwa_przestrzeni_nazw=nazwa_przestrzeni_nazw and mw.text.trim(nazwa_przestrzeni_nazw) or nazwy_modul["NAZWAPRZESTRZENI"]{["kod języka"]=kod_jezyka,["kod projektu"]=kod_projektu,}; nazwa_przestrzeni_nazw_blad=require("Module:Nazwy").NpDane{nazwa=nazwa_przestrzeni_nazw,["kod języka"]=kod_jezyka,["kod projektu"]=kod_projektu,["istnieje"]="tak",["wynik błędu nietekstowy"]="tak",}; if(nazwa_jednostki)then local html_modul=require("Module:Html"); nazwa_jednostki=html_modul["NazwaStronyAdresu"](nazwa_jednostki,true); else nazwa_jednostki=nazwy_modul["NAZWASTRONY"]{["kod języka"]=kod_jezyka,["kod projektu"]=kod_projektu,}; end; end; nazwa_przestrzeni_nazw=nazwa_przestrzeni_nazw_blad or nazwa_przestrzeni_nazw; if(not mw.ustring.match(nazwa_jednostki,"^:"))then if(nazwa_przestrzeni_nazw~="")then if(czy_biezaca_wiki)then local nazwy_np_modul=mw.loadData("Module:Nazwy/Np"); if(nazwa_przestrzeni_nazw==nazwy_np_modul.Template)then local nazwa_przestrzeni_nazw_d=require("Module:Nazwy")["NAZWAPRZESTRZENI"](nazwa_jednostki); if(nazwa_przestrzeni_nazw_d==nazwy_np_modul.Template)then nazwa_przestrzeni_nazw=nazwy_np_modul.Template; end; elseif(nazwa_przestrzeni_nazw==nazwy_np_modul.Module)then local nazwa_przestrzeni_nazw_d=require("Module:Nazwy")["NAZWAPRZESTRZENI"](nazwa_jednostki); if(nazwa_przestrzeni_nazw_d==nazwy_np_modul.Module)then nazwa_przestrzeni_nazw=nazwy_np_modul.Module; end; end; else local template_prze=nazwy_modul.NpDane{nazwa="Template",["kod języka"]=kod_jezyka,["kod projektu"]=kod_projektu,}; local module_prze=nazwy_modul.NpDane{nazwa="Module",["kod języka"]=kod_jezyka,["kod projektu"]=kod_projektu,}; if(nazwa_przestrzeni_nazw==template_prze)then local nazwa_przestrzeni_nazw_d=nazwy_modul["NAZWAPRZESTRZENI"]{[1]=nazwa_jednostki,["kod języka"]=kod_jezyka,["kod projektu"]=kod_projektu,}; if(nazwa_przestrzeni_nazw_d==template_prze)then nazwa_przestrzeni_nazw=template_prze; end; elseif(nazwa_przestrzeni_nazw==module_prze)then local nazwa_przestrzeni_nazw_d=nazwy_modul["NAZWAPRZESTRZENI"]{[1]=nazwa_jednostki,["kod języka"]=kod_jezyka,["kod projektu"]=kod_projektu,}; if(nazwa_przestrzeni_nazw_d==module_prze)then nazwa_przestrzeni_nazw=module_prze; end; end; end; if(not nazwa_przestrzeni_nazw_blad)then if(((czy_uwzglednic_alternatywna_nazwe==nil)and true or czy_uwzglednic_alternatywna_nazwe) and frame.args[1])then local wytrimowana_nazwa_przestrzeni_nazw=mw.text.trim(frame.args[1]); if(mw.ustring.match(wytrimowana_nazwa_przestrzeni_nazw,"^[%w%s_]*$"))then if(czy_biezaca_wiki)then local nazwy_modul=require("Module:Nazwy"); local czy_blad_nazwy_przestrzeni_nazw=nazwy_modul.Np{nazwa=wytrimowana_nazwa_przestrzeni_nazw,["istnieje"]="tak",["wynik błędu nietekstowy"]="tak",} return czy_blad_nazwy_przestrzeni_nazw or "(błąd)"; else local nazwy_modul=require("Module:Nazwy"); local nazwa_przestrzeni_nazw_blad2=nazwy_modul.NpDane{nazwa=wytrimowana_nazwa_przestrzeni_nazw,["kod języka"]=kod_jezyka,["kod projektu"]=kod_projektu,["istnieje"]="tak",["wynik błędu nietekstowy"]="tak",}; return nazwa_przestrzeni_nazw_blad2 or "(błąd)"; end; else return "(błąd)"; end; else local wytrimowana_nazwa_przestrzeni_nazw=mw.text.trim(nazwa_przestrzeni_nazw); if(mw.ustring.match(wytrimowana_nazwa_przestrzeni_nazw,"^[%w%s_]*$"))then return wytrimowana_nazwa_przestrzeni_nazw; else return "(błąd)"; end; end; else return nazwa_przestrzeni_nazw; end; else return require("Module:Nazwy")["NAZWAPRZESTRZENI"]{[1]=nazwa_jednostki,["kod języka"]=kod_jezyka,["kod projektu"]=kod_projektu,}; end; else return require("Module:Nazwy")["NAZWAPRZESTRZENI"]{[1]=nazwa_jednostki,["kod języka"]=kod_jezyka,["kod projektu"]=kod_projektu,}; end; end; function p.Nazwa_przestrzeni_nazw_przedmiotowa_dyskusji_2(frame,czy_uwzglednic_alternatywna_nazwe,i,typ) local numer_jednostki=i or frame.args["numer jednostki"]; local liczba_numer_jednostki=((numer_jednostki)and(tonumber(numer_jednostki))or 0); local pudelko_modul=require("Module:Pudełko"); local tab_nazwa={ ["przedmiotowa"]="Nazwa przedmiotowej przestrzeni nazw", ["dyskusja"]="Nazwa przestrzeni nazw", }; local nazwa_przestrzeni_nazw=pudelko_modul[tab_nazwa[typ]](frame,czy_uwzglednic_alternatywna_nazwe,liczba_numer_jednostki); local nazwy_modul=require("Module:Nazwy"); if(nazwa_przestrzeni_nazw=="")then local nazwa_jednostki=pudelko_modul["Nazwa jednostki"](frame,liczba_numer_jednostki); local kod_jezyka,kod_projektu=p.Wikikody_kontenera(frame,liczba_numer_jednostki); local tab_nazwa={ ["przedmiotowa"]="PRZEDMIOTOWAPRZESTRZEŃ", ["dyskusja"]="PRZESTRZEŃDYSKUSJI", }; nazwa_przestrzeni_nazw=nazwy_modul[tab_nazwa[typ]]{nazwa=nazwa_jednostki,["kod języka"]=kod_jezyka,["kod projektu"]=kod_projektu,}; else if(typ=="dyskusja")then local wiki_modul=require("Module:Wiki"); local czy_biezaca=wiki_modul["CzyBieżącaWiki"]{["kod języka"]=kod_jezyka,["kod projektu"]=kod_projektu,}; if(czy_biezaca)then nazwa_przestrzeni_nazw=nazwy_modul.Np{[typ]="tak",nazwa=nazwa_przestrzeni_nazw}; else nazwa_przestrzeni_nazw=nazwy_modul.NpDane{[typ]="tak",nazwa=nazwa_przestrzeni_nazw,["kod języka"]=kod_jezyka,["kod projektu"]=kod_projektu,}; end; end; end; return nazwa_przestrzeni_nazw; end; function p.Kod_jezyka(frame,i,wartosc_domyslna) local pudelko_modul=require("Module:Pudełko"); if(not i)then return pudelko_modul["Kod języka tego projektu"]();end; local pf=frame.getParent and frame:getParent() or {args={}}; if(i==0)then return pudelko_modul["Kod języka tego projektu"](); elseif(i==1)then local parametry_modul=require("Module:Parametry"); local kod_jezyka=frame.args["kod języka"] or frame.args["kod języka 1"] or pf.args["kod języka"] or pf.args["kod języka 1"] return ((kod_jezyka)and(kod_jezyka~=""))and mw.text.trim(kod_jezyka) or ((parametry_modul.CzyTak(wartosc_domyslna))and wartosc_domyslna or nil); elseif(i>1)then local parametry_modul=require("Module:Parametry"); local kod_jezyka=frame.args["kod języka "..i] or pf.args["kod języka "..i] return ((kod_jezyka)and(kod_jezyka~=""))and mw.text.trim(kod_jezyka) or ((parametry_modul.CzyTak(wartosc_domyslna))and wartosc_domyslna or nil); end; end function p.Kod_projektu(frame,i,wartosc_domyslna) local pudelko_modul=require("Module:Pudełko"); if(not i)then return pudelko_modul["Kod projektu tego projektu"]();end; local pf=frame.getParent and frame:getParent() or {args={}}; if(i==0)then return pudelko_modul["Kod projektu tego projektu"](); elseif(i==1)then local parametry_modul=require("Module:Parametry"); local kod_projektu=frame.args["kod projektu"] or frame.args["kod projektu 1"] or pf.args["kod projektu"] or pf.args["kod projektu 1"] return ((kod_projektu)and(kod_projektu~=""))and mw.text.trim(kod_projektu) or ((parametry_modul.CzyTak(wartosc_domyslna))and wartosc_domyslna or nil); elseif(i>1)then local parametry_modul=require("Module:Parametry"); local kod_projektu=frame.args["kod projektu "..i] or pf.args["kod projektu "..i] return ((kod_projektu)and(kod_projektu~=""))and mw.text.trim(kod_projektu) or ((parametry_modul.CzyTak(wartosc_domyslna))and wartosc_domyslna or nil); end; end function p.Klucz_projektu(frame,i,wartosc_domyslna_jezyka,wartosc_domyslna_projektu) local pf=frame.getParent and frame:getParent() or {args={}}; local klucz_projektu; local function domyslne_klucz(klucz_projektu) local parametry_modul=require("Module:Parametry"); return ((klucz_projektu)and(klucz_projektu~=""))and mw.text.trim(klucz_projektu)or((parametry_modul.CzyTak(wartosc_domyslna_jezyka)and(parametry_modul.CzyTak(wartosc_domyslna_projektu)))and (wartosc_domyslna_jezyka..":" ..wartosc_domyslna_projektu)or(parametry_modul.CzyTak(wartosc_domyslna_jezyka) and wartosc_domyslna_jezyka or (parametry_modul.CzyTak(wartosc_domyslna_projektu) and wartosc_domyslna_projektu or nil))); end; if(i==0)then return nil; elseif(i==1)then local klucz_projektu=frame.args["klucz projektu"] or frame.args["klucz projektu 1"] or pf.args["klucz projektu"] or pf.args["klucz projektu 1"]; return domyslne_klucz(klucz_projektu); elseif(i>1)then local klucz_projektu=frame.args["klucz projektu "..i] or pf.args["klucz projektu "..i]; return domyslne_klucz(klucz_projektu); end; end; function p.Wikikody_kontenera(frame,i,wartosc_domyslna_jezyka,wartosc_domyslna_projektu) local wiki_modul=require("Module:Wiki"); local kod_jezyka,kod_projektu=wiki_modul.KodyWiki(p.Klucz_projektu(frame,i,wartosc_domyslna_jezyka,wartosc_domyslna_projektu),p.Kod_jezyka(frame,i,wartosc_domyslna_jezyka),p.Kod_projektu(frame,i,wartosc_domyslna_projektu)); return kod_jezyka,kod_projektu; end; function p.Nazwa_przestrzeni_nazw_od_typu_jednostki(typ,args,bez_analizy) if(not bez_analizy)then local parametry_modul=require("Module:Parametry"); if((((not parametry_modul.CzyTak(args["obsługiwane jednostki jako nieopisowe strony"]))and((typ=="artykuł")or(typ=="podręcznik")))or (typ=="artykuł")))then return ""; elseif(((not parametry_modul.CzyTak(args["obsługiwane jednostki jako nieopisowe strony"]))and((typ=="artykuł dla dzieci")or(typ=="podręcznik dla dzieci")))or(typ=="artykuł dla dzieci"))then return "Wikijunior"; elseif((not parametry_modul.CzyTak(args["obsługiwane brudnopisy jako normalne strony"])) and(((not parametry_modul.CzyTak(args["obsługiwane jednostki jako nieopisowe strony"]))and(parametry_modul.CzyTak(args["obsługiwane jednostki brudnopisu projektu"])and (typ=="podręcznik brudnopisu projektu" or typ=="artykuł brudnopisu projektu")or (typ=="jednostka brudnopisu projektu")) or (typ=="strona brudnopisu projektu"))or(typ=="strona projektu"))or (typ=="strona projektu"))then return "Project"; elseif((parametry_modul.CzyTak(args["obsługiwane strony jako niebrudnopisowe jednostki programowe"]))and (typ=="strona szablonu") or(not parametry_modul.CzyTak(args["obsługiwane brudnopisy jako normalne strony"]) and((not parametry_modul.CzyTak(args["obsługiwane opisy jako strony jednostek programowych"]) and not parametry_modul.CzyTak(args["obsługiwane jednostki jako nieopisowe strony"]) and not parametry_modul.CzyTak(args["obsługiwane nieudokumentowane szablony jako szablony"])) and((typ=="strona brudnopisu szablonu")or(typ=="strona brudnopisu opisu szablonu"))or(typ=="strona brudnopisu szablonu")) or((not parametry_modul.CzyTak(args["obsługiwane opisy jako strony jednostek programowych"]) and not parametry_modul.CzyTak(args["obsługiwane jednostki jako nieopisowe strony"]) and not parametry_modul.CzyTak(args["obsługiwane nieudokumentowane szablony jako szablony"])) and((typ=="strona szablonu")or(typ=="strona opisu szablonu"))or(typ=="strona szablonu"))))then return "Template"; elseif((parametry_modul.CzyTak(args["obsługiwane strony jako niebrudnopisowe jednostki programowe"]))and (typ=="strona modułu") or(not parametry_modul.CzyTak(args["obsługiwane brudnopisy jako normalne strony"]) and((not parametry_modul.CzyTak(args["obsługiwane opisy jako strony jednostek programowych"]) and not parametry_modul.CzyTak(args["obsługiwane jednostki jako nieopisowe strony"])) and((typ=="strona brudnopisu modułu")or(typ=="strona brudnopisu opisu modułu"))or(typ=="strona brudnopisu modułu")) or((not parametry_modul.CzyTak(args["obsługiwane opisy jako strony jednostek programowych"]) and not parametry_modul.CzyTak(args["obsługiwane jednostki jako nieopisowe strony"])) and((typ=="strona modułu")or(typ=="strona opisu modułu"))or(typ=="strona modułu"))))then return "Module"; elseif(not parametry_modul.CzyTak(args["obsługiwane jednostki użytkownika jako normalne strony"]) and(((not parametry_modul.CzyTak(args["obsługiwane jednostki jako nieopisowe strony"]))and(parametry_modul.CzyTak(args["obsługiwane jednostki użytkownika"])and (typ=="podręcznik użytkownika" or typ=="artykuł użytkownika") or (typ=="jednostka użytkownika")) or (typ=="strona użytkownika"))or(typ=="strona główna użytkownika"))or(typ=="strona użytkownika"))then return "User"; elseif(typ=="strona pliku")then return "File"; elseif(typ=="strona kategorii")then return "Category"; elseif(typ=="strona pomocy")then return "Help"; elseif(typ=="strona komunikatu")then return "MediaWiki"; elseif(typ=="strona specjalna")then return "Special"; elseif(typ=="strona gadżetu")then return "Gadget"; elseif(typ=="strona główna projektu")then return "Project"; elseif(typ=="strona główna dla dzieci")then return "Wikijunior"; end; return; end; if(typ)then if((typ=="artykuł")or(typ=="podręcznik"))then return ""; elseif((typ=="artykuł dla dzieci")or(typ=="podręcznik dla dzieci"))then return "Wikijunior"; elseif((typ=="podręcznik brudnopisu projektu")or(typ=="artykuł brudnopisu projektu")or(typ=="jednostka brudnopisu projektu")or(typ=="strona brudnopisu projektu")or(typ=="strona projektu"))then return "Project"; elseif((typ=="strona szablonu")or(typ=="strona opisu szablonu")or(typ=="strona brudnopisu szablonu")or(typ=="strona brudnopisu opisu szablonu"))then return "Template"; elseif((typ=="strona modułu")or(typ=="strona opisu modułu")or(typ=="strona brudnopisu modułu")or(typ=="strona brudnopisu opisu modułu"))then return "Module"; elseif((typ=="podręcznik użytkownika")or(typ=="artykuł użytkownika")or(typ=="jednostka użytkownika")or(typ=="strona użytkownika")or(typ=="strona główna użytkownika"))then return "User"; elseif(typ=="strona pliku")then return "File"; elseif(typ=="strona kategorii")then return "Category"; elseif(typ=="strona pomocy")then return "Help"; elseif(typ=="strona komunikatu")then return "MediaWiki"; elseif(typ=="strona specjalna")then return "Special"; elseif(typ=="strona gadżetu")then return "Gadget"; elseif(typ=="strona główna projektu")then return "Project"; elseif(typ=="strona główna dla dzieci")then return "Wikijunior"; end; end; end; function p.Typ_jednostki_uzyskany_z_frame(frame,i) local numer_jednostki=i or frame.args["numer jednostki"]; local liczba_numer_jednostki=tonumber(numer_jednostki) or 0; local pf=frame.getParent and frame:getParent() or {args={}}; local typ; if liczba_numer_jednostki~=0 then typ=liczba_numer_jednostki and( (frame.args["typ jednostki "..liczba_numer_jednostki] or frame.args["typ jednostki i"]) or (pf.args["typ jednostki "..liczba_numer_jednostki] or pf.args["typ jednostki i"]) ); if(not typ)then local nazwa_jednostki=p.Nazwy_przestrzeni_i_jednostki_podane_o_pewnym_numerze(frame,liczba_numer_jednostki,2); if(nazwa_jednostki)then if(not mw.ustring.match(mw.text.trim(nazwa_jednostki),"^:"))then local nazwa_przesrzeni_nazw=p.Nazwy_przestrzeni_i_jednostki_podane_o_pewnym_numerze(frame,liczba_numer_jednostki,1); if(not nazwa_przesrzeni_nazw)then typ=frame.args["typ jednostki"] or pf.args["typ jednostki"]; end; end; end; end; else typ=frame.args["typ jednostki"] or pf.args["typ jednostki"]; end; local parametry_modul=require("Module:Parametry"); if(parametry_modul.CzyTak(typ))then typ,ile=mw.ustring.gsub(typ,"^(%S+)(%s+)(dyskusji)",function(strona,spacja,dyskusja) return strona; end); return typ,liczba_numer_jednostki,ile; end; return typ,liczba_numer_jednostki,0; end; function p.Czy_dyskusja_typu_jednostki_z_frame_od_dyskusja_typu_jednostki(frame,i) local typ,liczba_numer_jednostki,ile_dyskusja=p.Typ_jednostki_uzyskany_z_frame(frame,i); if(ile_dyskusja>0)then return true;end; local pf=frame:getParent() or {args={},}; local function FuncTemp(liczba_numer_jednostki) local dyskusja_parametr="dyskusja typu jednostki"; if(liczba_numer_jednostki==0)then return frame.args[dyskusja_parametr] or pf.args[dyskusja_parametr]; else return ((frame.args[dyskusja_parametr.." "..liczba_numer_jednostki] or pf.args[dyskusja_parametr.." "..liczba_numer_jednostki]) or (frame.args[dyskusja_parametr.." i"] or pf.args[dyskusja_parametr.." i"]) or(frame.args[dyskusja_parametr] or pf.args[dyskusja_parametr])); end; end; local czy_dyskusja=FuncTemp(liczba_numer_jednostki); local parametry_modul=require("Module:Parametry"); local czy_dyskusja=parametry_modul.CzyTak(czy_dyskusja); return czy_dyskusja; end; function p.Nazwa_przestrzeni_nazw_uzyskana_z_typu_jednostki_z_frame(frame,i) local typ=p.Typ_jednostki_uzyskany_z_frame(frame,i); local nazwa_przestrzeni_nazw=typ and p.Nazwa_przestrzeni_nazw_od_typu_jednostki(typ,nil,true) or nil; if(nazwa_przestrzeni_nazw)then local czy_dyskusja=p.Czy_dyskusja_typu_jednostki_z_frame_od_dyskusja_typu_jednostki(frame,i); if(czy_dyskusja)then if(nazwa_przestrzeni_nazw=="")then return "Talk"; else return nazwa_przestrzeni_nazw.." talk"; end; else return nazwa_przestrzeni_nazw; end; else return nil; end; end; function p.Typ_jednostki(frame, kod_liczbowy_przestrzeni_nazw,i,numer_argorytmu) local parametry_modul=require("Module:Parametry"); local analiza=parametry_modul.CzyTak(frame.args["analiza"]); local typ,liczba_numer_jednostki=p.Typ_jednostki_uzyskany_z_frame(frame,i); local uzyskana_przestrzen_nazw_od_typu_jednostki; local nazwa_przestrzeni_nazw_podana,nazwa_jednostki_podana=p.Nazwy_przestrzeni_i_jednostki_podane_o_pewnym_numerze(frame,liczba_numer_jednostki); if((not analiza)and(typ))then if(typ~="")then uzyskana_przestrzen_nazw_od_typu_jednostki=p.Nazwa_przestrzeni_nazw_od_typu_jednostki(typ,frame.args); if(uzyskana_przestrzen_nazw_od_typu_jednostki)then if((not nazwa_przestrzeni_nazw_podana)and(not nazwa_jednostki_podana))then return typ; end; else return "(błąd typu jednostki)"; end; end; end; local nazwa_przestrzeni_nazw,nazwa_jednostki=p.Uzyskanie_nazw_jednostki(frame,kod_liczbowy_przestrzeni_nazw,liczba_numer_jednostki,numer_argorytmu); local nazwy_modul=require("Module:Nazwy"); local kod_jezyka,kod_projektu=p.Wikikody_kontenera(frame,liczba_numer_jednostki); local wiki_modul=require("Module:Wiki"); local czy_biezaca=wiki_modul["CzyBieżącaWiki"]{["kod języka"]=kod_jezyka,["kod projektu"]=kod_projektu,}; local czy_blad_nazwa_przestrzeni_nazw; if(czy_biezaca)then czy_blad_nazwa_przestrzeni_nazw=nazwy_modul.Np{nazwa=nazwa_przestrzeni_nazw,["kanoniczna"]="tak",["nazwij projektem"]="tak",["nazwij dyskusją projektu"]="tak",["istnieje"]="tak",["wynik błędu nietekstowy"]="tak",} else czy_blad_nazwa_przestrzeni_nazw=nazwy_modul.NpDane{nazwa=nazwa_przestrzeni_nazw,["kanoniczna"]="tak",["nazwij projektem"]="tak",["nazwij dyskusją projektu"]="tak",["kod języka"]=kod_jezyka,["kod projektu"]=kod_projektu,["istnieje"]="tak",["wynik błędu nietekstowy"]="tak",} end; if(not czy_blad_nazwa_przestrzeni_nazw)then return "(błąd nazwy przestrzeni nazw)";end; nazwa_przestrzeni_nazw=czy_blad_nazwa_przestrzeni_nazw; --- --- if((not analiza)and(typ))then if(typ~="")then ---typ jednostki if(uzyskana_przestrzen_nazw_od_typu_jednostki)then if((nazwa_przestrzeni_nazw_podana)and(not nazwa_jednostki_podana))then if(uzyskana_przestrzen_nazw_od_typu_jednostki==nazwa_przestrzeni_nazw)then return typ; else return "(błąd niezgodności)"; end; end; else return "(błąd typu jednostki)"; end; end; end; local function Typ_jednostki() if(nazwa_jednostki~="")then --local kod_jezyka,kod_projektu=KodyWikiPudelka(frame,liczba_numer_jednostki); --local klucz_projektu=kod_projektu..":"..kod_jezyka; local pudelko_modul=require("Module:Pudełko"); local pelna_nazwa_strony=((nazwa_przestrzeni_nazw~="")and nazwa_przestrzeni_nazw..":" or "")..nazwa_jednostki; if(pudelko_modul.CzyNiepoprawnaNazwa(pelna_nazwa_strony))then return "(błąd nazwy jednostki)";end; local nazwy_modul=require("Module:Nazwy") pelna_nazwa_strony=nazwy_modul["PEŁNANAZWASTRONY"]{[1]=pelna_nazwa_strony,["kod języka"]=kod_jezyka,["kod projektu"]=kod_projektu,}; local norm_przed_lub_dyskusji=p.Normalna_przedmiotowa_lub_dyskusji_nazwa_przestrzeni_nazw(nazwa_przestrzeni_nazw,1,kod_jezyka,kod_projektu); if(kod_projektu==pudelko_modul["Kod projektu tego projektu"]())then local nazwa_strony_glownej_dla_dzieci_ze_zmiennej=p.Nazwa_strony_bazowej_dla_dzieci_ze_zmiennej(frame,liczba_numer_jednostki,kod_jezyka); if(nazwa_strony_glownej_dla_dzieci_ze_zmiennej=="")then return "(błąd nazwy strony głównej dla dzieci)";end; local nazwa_strony_glownej_wikijuniora=p.Nazwa_strony_bazowej_dla_dzieci_z_wikidanych(kod_jezyka); local nazwa_strony_glownej_dla_dzieci_uzyskana=(not nazwa_strony_glownej_dla_dzieci_ze_zmiennej)and nazwa_strony_glownej_wikijuniora or nazwa_strony_glownej_dla_dzieci_ze_zmiennej; if(nazwa_strony_glownej_dla_dzieci_uzyskana)then if(pudelko_modul.CzyNiepoprawnaNazwa(nazwa_strony_glownej_dla_dzieci_uzyskana))then return "(błąd nazwy strony głównej dla dzieci)";end; nazwa_strony_glownej_dla_dzieci_uzyskana=nazwy_modul["PEŁNANAZWASTRONY"]{[1]=nazwa_strony_glownej_dla_dzieci_uzyskana,["kod języka"]=kod_jezyka,["kod projektu"]=kod_projektu,}; if(pelna_nazwa_strony==nazwa_strony_glownej_dla_dzieci_uzyskana)then return "strona główna dla dzieci";end; end; end; local nazwa_strony_glownej_projektu_ze_zmiennej=p.Nazwa_strony_bazowej_projektu_ze_zmiennej(frame,liczba_numer_jednostki,kod_jezyka,kod_projektu); if(nazwa_strony_glownej_projektu_ze_zmiennej=="")then return "(błąd nazwy strony głównej projektu)";end; local nazwa_strony_glownej_projektu_z_wikidanych=p.Nazwa_strony_bazowej_projektu_z_wikidanych(kod_jezyka,kod_projektu); local nazwa_strony_glownej_projektu_uzyskana=(not nazwa_strony_glownej_projektu_ze_zmiennej)and nazwa_strony_glownej_projektu_z_wikidanych or nazwa_strony_glownej_projektu_ze_zmiennej; if(nazwa_strony_glownej_projektu_uzyskana)then if(pudelko_modul.CzyNiepoprawnaNazwa(nazwa_strony_glownej_projektu_uzyskana))then return "(błąd nazwy strony głównej projektu)";end; nazwa_strony_glownej_projektu_uzyskana=nazwy_modul["PEŁNANAZWASTRONY"]{[1]=nazwa_strony_glownej_projektu_uzyskana,["kod języka"]=kod_jezyka,["kod projektu"]=kod_projektu,}; if(pelna_nazwa_strony==nazwa_strony_glownej_projektu_uzyskana)then return "strona główna projektu";end; end; if(norm_przed_lub_dyskusji=="")then local parametry_modul=require("Module:Parametry"); if(parametry_modul.CzyTak(frame.args["obsługiwane jednostki jako nieopisowe strony"]))then return "artykuł"; else local it=mw.ustring.match(nazwa_jednostki,"^[^/]+$"); if(it)then return "podręcznik";else return "artykuł";end; end; elseif(norm_przed_lub_dyskusji=="Wikijunior")then local parametry_modul=require("Module:Parametry"); if(parametry_modul.CzyTak(frame.args["obsługiwane jednostki jako nieopisowe strony"]))then return "artykuł dla dzieci"; else local it=mw.ustring.match(nazwa_jednostki,"^[^/]+$"); if(it)then return "podręcznik dla dzieci";else return "artykuł dla dzieci";end; end; elseif(norm_przed_lub_dyskusji=="User")then local parametry_modul=require("Module:Parametry"); if(parametry_modul.CzyTak(frame.args["obsługiwane jednostki użytkownika jako normalne strony"]))then return "strona użytkownika"; else local czy_podstrony=mw.ustring.match(nazwa_jednostki,"^[^/]+$") if(czy_podstrony)then return "strona główna użytkownika"; else if(not parametry_modul.CzyTak(frame.args["obsługiwane jednostki jako nieopisowe strony"]))then if(parametry_modul.CzyTak(frame.args["obsługiwane jednostki użytkownika"]))then local czy_ksiazka=mw.ustring.match(nazwa_jednostki,"^[^/]+/[^/]*$"); if(czy_ksiazka)then return "podręcznik użytkownika"; else return "artykuł użytkownika"; end; else return "jednostka użytkownika"; end; else return "strona użytkownika"; end; end; end; elseif(norm_przed_lub_dyskusji=="File")then return "strona pliku"; elseif(norm_przed_lub_dyskusji=="Category")then return "strona kategorii"; elseif(norm_przed_lub_dyskusji=="Project")then local parametry_modul=require("Module:Parametry"); if(parametry_modul.CzyTak(frame.args["obsługiwane brudnopisy jako normalne strony"]))then return "strona projektu";end; if(mw.ustring.match(nazwa_jednostki,"^%s*[Bb]rudnopis/[^/]*/.*"))then if(not parametry_modul.CzyTak(frame.args["obsługiwane jednostki jako nieopisowe strony"]))then if(parametry_modul.CzyTak(frame.args["obsługiwane jednostki brudnopisu projektu"]))then local czy_ksiazka=mw.ustring.match(nazwa_jednostki,"^%s*[Bb]rudnopis/[^/]*/[^/]*$"); if(czy_ksiazka)then return "podręcznik brudnopisu projektu"; else return "artykuł brudnopisu projektu"; end; else return "jednostka brudnopisu projektu"; end; else return "strona brudnopisu projektu"; end; else return "strona projektu"; end; elseif(norm_przed_lub_dyskusji=="Help")then return "strona pomocy"; elseif(norm_przed_lub_dyskusji=="MediaWiki")then return "strona komunikatu"; elseif(norm_przed_lub_dyskusji=="Special")then return "strona specialna"; elseif(norm_przed_lub_dyskusji=="Gadget")then return "strona gadżetu"; elseif(norm_przed_lub_dyskusji=="Template")then local parametry_modul=require("Module:Parametry"); if(parametry_modul.CzyTak(frame.args["obsługiwane strony jako niebrudnopisowe jednostki programowe"]))then return "strona szablonu";end; local function CzySzablonAlboOpis(nazwa_przestrzeni_nazw,nazwa_jednostki,szablon,opis_szablonu,strona_szablonu,prefix) local parametry_modul=require("Module:Parametry"); if(parametry_modul.CzyTak(frame.args["obsługiwane opisy jako strony jednostek programowych"]) or parametry_modul.CzyTak(frame.args["obsługiwane jednostki jako nieopisowe strony"]))then return szablon; else if(mw.ustring.match(nazwa_jednostki,"^"..prefix..".*/opis$"))then return opis_szablonu; else if(not parametry_modul.CzyTak(frame.args["obsługiwane nieudokumentowane szablony jako szablony"]))then local czy_brudnopis=mw.ustring.match(nazwa_jednostki,"^"..prefix..".*$"); if(czy_brudnopis)then local pagename=(nazwa_przestrzeni_nazw~="")and nazwa_przestrzeni_nazw..":"..nazwa_jednostki or nazwa_jednostki; local czy_istnieje_strona,tab=require("Module:Techniczne").PoliczZbiory(pagename); if(czy_istnieje_strona==1)then local czy_brudnopis_opisu_szablonu=require("Module:Łatki").contentMatch{ [1]='<noinclude>.-{{%s*[Dd]okumentacja%s*}}.-</noinclude>', [2]='<noinclude>.-{{%s*[Dd]okumentacja%s*|.-</noinclude>',pagename=pagename,namespace=0 }; if(not czy_brudnopis_opisu_szablonu)then return opis_szablonu;else return szablon;end; else return szablon; end; else return strona_szablonu; end; else return szablon; end; end; end; end; if((not parametry_modul.CzyTak(frame.args["obsługiwane brudnopisy jako normalne strony"]))and(mw.ustring.match(nazwa_jednostki,"^%s*[Bb]rudnopis/[^/]*/.*")))then return CzySzablonAlboOpis(norm_przed_lub_dyskusji,nazwa_jednostki,"strona brudnopisu szablonu","strona brudnopisu opisu szablonu","strona szablonu","[Bb]rudnopis/[^/]*/"); else return CzySzablonAlboOpis(norm_przed_lub_dyskusji,nazwa_jednostki,"strona szablonu","strona opisu szablonu","strona szablonu",""); end; elseif(norm_przed_lub_dyskusji=="Module")then local parametry_modul=require("Module:Parametry"); if(parametry_modul.CzyTak(frame.args["obsługiwane strony jako niebrudnopisowe jednostki programowe"]))then return "strona modułu";end; if((not parametry_modul.CzyTak(frame.args["obsługiwane brudnopisy jako normalne strony"]))and(mw.ustring.match(nazwa_jednostki,"^%s*[Bb]rudnopis/[^/]*/.*")))then if(parametry_modul.CzyTak(frame.args["obsługiwane opisy jako strony jednostek programowych"]) or parametry_modul.CzyTak(frame.args["obsługiwane jednostki jako nieopisowe strony"]))then return "strona brudnopisu modułu" else local pelna_nazwa_strony=(norm_przed_lub_dyskusji~="")and norm_przed_lub_dyskusji..":"..nazwa_jednostki or nazwa_jednostki; pelna_nazwa_strony=require("Module:Nazwy")["PEŁNANAZWASTRONY"]{[1]=pelna_nazwa_strony,["kod języka"]=kod_jezyka,["kod projektu"]=kod_projektu,}; local pelna_nazwa_strony_brudnopisu_opisu_modulu=require("Module:Techniczne")["PełnaNazwaOpisuModułu"](pelna_nazwa_strony); if(pelna_nazwa_strony==pelna_nazwa_strony_brudnopisu_opisu_modulu)then return "strona brudnopisu opisu modułu"; else return "strona brudnopisu modułu"; end; end; else if(parametry_modul.CzyTak(frame.args["obsługiwane opisy jako strony jednostek programowych"]) or parametry_modul.CzyTak(frame.args["obsługiwane jednostki jako nieopisowe strony"]))then return "strona modułu" else local pelna_nazwa_strony=(norm_przed_lub_dyskusji~="")and norm_przed_lub_dyskusji..":"..nazwa_jednostki or nazwa_jednostki; pelna_nazwa_strony=require("Module:Nazwy")["PEŁNANAZWASTRONY"]{[1]=pelna_nazwa_strony,["kod języka"]=kod_jezyka,["kod projektu"]=kod_projektu,}; local pelna_nazwa_opisu_modulu=require("Module:Techniczne")["PełnaNazwaOpisuModułu"](pelna_nazwa_strony); if(pelna_nazwa_strony==pelna_nazwa_opisu_modulu)then return "strona opisu modułu"; else return "strona modułu"; end; end; end; else return "inne"; end; end; return "inne"; end; local typ_jednostki=Typ_jednostki(); local function TempFunc(typ_jednostki) if( (kod_liczbowy_przestrzeni_nazw==2) or((kod_liczbowy_przestrzeni_nazw==0)and(p.Czy_dyskusja_typu_jednostki_z_frame_od_dyskusja_typu_jednostki(frame,i))) )then typ_jednostki,ile=mw.ustring.gsub(typ_jednostki,"^(%S+)(%s+)",function(strona,spacja) return strona.." dyskusji"..spacja; end); return typ_jednostki; end; return typ_jednostki; end; if(((analiza)or(nazwa_jednostki_podana))and(typ)and(typ~=""))then if(typ_jednostki==typ)then return TempFunc(typ_jednostki); elseif(nazwa_jednostki_podana)then return "(błąd parametrów pudełkowych)" else return "(błąd typu jednostki)"; end; end; return TempFunc(typ_jednostki); end; function p.Uzyskanie_nazw_jednostki(frame,kod_liczbowy_przestrzeni_nazw,i,numer_argorytmu,co_ma_liczyc) local nazwa_przestrzeni_fun,nazwa_jednostki_fun; if(kod_liczbowy_przestrzeni_nazw==0)then nazwa_przestrzeni_fun="Nazwa przestrzeni nazw"; nazwa_jednostki_fun="Nazwa jednostki"; elseif(kod_liczbowy_przestrzeni_nazw==1)then nazwa_przestrzeni_fun="Nazwa przedmiotowej przestrzeni nazw"; nazwa_jednostki_fun="Nazwa przedmiotowa jednostki"; elseif(kod_liczbowy_przestrzeni_nazw==2)then nazwa_przestrzeni_fun="Nazwa przestrzeni nazw dyskusji" nazwa_jednostki_fun="Nazwa dyskusji jednostki"; else nazwa_przestrzeni_fun="Nazwa przestrzeni nazw"; nazwa_jednostki_fun="Nazwa jednostki"; end; local pudelko_modul=require("Module:Pudełko"); if(not numer_argorytmu)then if((not i)or(i==0))then if((not co_ma_liczyc)or(co_ma_liczyc==0))then local nazwa_przestrzeni_nazw=pudelko_modul[nazwa_przestrzeni_fun](frame,false); local nazwa_jednostki=pudelko_modul["Nazwa jednostki"](frame); return nazwa_przestrzeni_nazw,nazwa_jednostki; elseif(co_ma_liczyc==1)then local nazwa_przestrzeni_nazw=pudelko_modul[nazwa_przestrzeni_fun](frame,false); return nazwa_przestrzeni_nazw; elseif(co_ma_liczyc==2)then return pudelko_modul["Nazwa jednostki"](frame); end; else if((not co_ma_liczyc)or(co_ma_liczyc==0))then local n=p.Nazwa_przestrzeni_nazw_dodatkowe(frame,i); local parametry_modul=require("Module:Parametry"); n=parametry_modul.CzyTak(n); local nazwa_przestrzeni_nazw=(n)and pudelko_modul[nazwa_przestrzeni_fun](frame,false,i) or pudelko_modul[nazwa_przestrzeni_fun.." 2"](frame,false,i); local nazwa_jednostki=(n)and pudelko_modul["Nazwa jednostki"](frame,i) or pudelko_modul[nazwa_jednostki_fun.." 2"](frame,i); return nazwa_przestrzeni_nazw,nazwa_jednostki; elseif(co_ma_liczyc==1)then local n=p.Nazwa_przestrzeni_nazw_dodatkowe(frame,i); local parametry_modul=require("Module:Parametry"); n=parametry_modul.CzyTak(n); local nazwa_przestrzeni_nazw=(n)and pudelko_modul[nazwa_przestrzeni_fun](frame,false,i) or pudelko_modul[nazwa_przestrzeni_fun.." 2"](frame,false,i); return nazwa_przestrzeni_nazw; elseif(co_ma_liczyc==2)then local n=p.Nazwa_przestrzeni_nazw_dodatkowe(frame,i); local parametry_modul=require("Module:Parametry"); n=parametry_modul.CzyTak(n); return (n)and pudelko_modul["Nazwa jednostki"](frame,i) or pudelko_modul[nazwa_jednostki_fun.." 2"](frame,i); end; end; else if(numer_argorytmu==0)then if((not co_ma_liczyc)or(co_ma_liczyc==0))then local nazwa_przestrzeni_nazw=pudelko_modul[nazwa_przestrzeni_fun](frame,false,i); local nazwa_jednostki=pudelko_modul["Nazwa jednostki"](frame,i); return nazwa_przestrzeni_nazw,nazwa_jednostki; elseif(co_ma_liczyc==1)then local nazwa_przestrzeni_nazw=pudelko_modul[nazwa_przestrzeni_fun](frame,false,i); return nazwa_przestrzeni_nazw; elseif(co_ma_liczyc==2)then return pudelko_modul["Nazwa jednostki"](frame,i); end; else if((not co_ma_liczyc)or(co_ma_liczyc==0))then local nazwa_przestrzeni_nazw=pudelko_modul[nazwa_przestrzeni_fun.." 2"](frame,false,i); local nazwa_jednostki=pudelko_modul[nazwa_jednostki_fun.." 2"](frame,i); return nazwa_przestrzeni_nazw,nazwa_jednostki; elseif(co_ma_liczyc==1)then local nazwa_przestrzeni_nazw=pudelko_modul[nazwa_przestrzeni_fun.." 2"](frame,false,i); return nazwa_przestrzeni_nazw; elseif(co_ma_liczyc==2)then return pudelko_modul[nazwa_jednostki_fun.." 2"](frame,i); end; end; end; end; function p.Nazwa_przestrzeni_nazw_dodatkowe(frame,numer_jednostki) local pf=frame.getParent and frame:getParent() or {args={}}; return frame.args["nazwa przestrzeni nazw "..tostring(numer_jednostki)] or pf.args["nazwa przestrzeni nazw "..tostring(numer_jednostki)] end; function p.Nazwa_jednostki(frame,i) local pf=frame.getParent and frame:getParent() or {args={}}; local nazwa_jednostki,liczba_numer_jednostki=p.Nazwy_przestrzeni_i_jednostki_podane_o_pewnym_numerze(frame,i,2); local kod_jezyka,kod_projektu=p.Wikikody_kontenera(frame,liczba_numer_jednostki); if(nazwa_jednostki)then nazwa_jednostki=mw.text.trim(nazwa_jednostki); nazwa_jednostki=mw.ustring.gsub(nazwa_jednostki,"^:",""); nazwa_jednostki=mw.ustring.gsub(nazwa_jednostki,"^([^#]*)#(.*)$","%1"); local parametry=mw.ustring.match(nazwa_jednostki,"^.*%?([^%?]+)$"); if(parametry and mw.ustring.match(parametry,"[^=]+=[^=]*"))then nazwa_jednostki=mw.ustring.gsub(nazwa_jednostki,"^(.*)%?([^%?]+)$","%1"); end; else local nazwy_modul=require("Module:Nazwy"); nazwa_jednostki=nazwy_modul["NAZWASTRONY"]{["kod języka"]=kod_jezyka,["kod projektu"]=kod_projektu,}; end; local parametry_modul=require("Module:Parametry"); nazwa_jednostki=parametry_modul["Odstępy"]{[1]=nazwa_jednostki,[2]="tak",}; return mw.getContentLanguage():ucfirst(nazwa_jednostki); end; function p.Nazwy_przestrzeni_i_jednostki_podane_o_pewnym_numerze(frame,i,co_podac) local pf=frame.getParent and frame:getParent() or {args={}}; local numer_jednostki=i or frame.args["numer jednostki"]; local liczba_numer_jednostki=tonumber(numer_jednostki) or 0; local nazwa_jednostki; local bool_numer_jednostki=(liczba_numer_jednostki~=0); local function Nazwa_jednostki() if bool_numer_jednostki then nazwa_jednostki=frame.args["nazwa jednostki "..liczba_numer_jednostki] or ((liczba_numer_jednostki==1)and(pf.args["cel"])) or pf.args[liczba_numer_jednostki]; else nazwa_jednostki=frame.args["nazwa jednostki"] or pf.args["nazwa jednostki"]; end; return nazwa_jednostki; end; local function Nazwa_przestrzeni_nazw() local nazwa_przestrzeni_nazw=bool_numer_jednostki and (frame.args["nazwa przestrzeni nazw i"] or pf.args["nazwa przestrzeni nazw i"] or frame.args["nazwa przestrzeni nazw "..liczba_numer_jednostki] or pf.args["nazwa przestrzeni nazw "..liczba_numer_jednostki]) or frame.args["nazwa przestrzeni nazw"] or pf.args["nazwa przestrzeni nazw"]; return nazwa_przestrzeni_nazw; end; if(not co_podac)then return Nazwa_przestrzeni_nazw(),Nazwa_jednostki(),liczba_numer_jednostki; elseif(co_podac==1)then return Nazwa_przestrzeni_nazw(),liczba_numer_jednostki; elseif(co_podac==2)then return Nazwa_jednostki(),liczba_numer_jednostki; else return Nazwa_przestrzeni_nazw(),Nazwa_jednostki(),liczba_numer_jednostki; end; end; function p.Jaka_nazwa_jednostki(frame,i,jaka) local nazwa_przestrzeni_nazw,nazwa_jednostki,liczba_numer_jednostki=p.Nazwy_przestrzeni_i_jednostki_podane_o_pewnym_numerze(frame,i); nazwa_przestrzeni_nazw=nazwa_przestrzeni_nazw or p.Nazwa_przestrzeni_nazw_uzyskana_z_typu_jednostki_z_frame(frame,liczba_numer_jednostki); ---- local nazwy_modul=require("Module:Nazwy"); nazwa_przestrzeni_nazw=nazwa_przestrzeni_nazw and mw.text.trim(nazwa_przestrzeni_nazw) or nazwy_modul["NAZWAPRZESTRZENI"](); if(nazwa_jednostki)then local html_modul=require("Module:Html"); nazwa_jednostki=html_modul["NazwaStronyAdresu"](nazwa_jednostki,true); else nazwa_jednostki=nazwy_modul["NAZWASTRONY"](); end; local kod_jezyka,kod_projektu=p.Wikikody_kontenera(frame,liczba_numer_jednostki); local wiki_modul=require("Module:Wiki"); local czy_biezaca=wiki_modul["CzyBieżącaWiki"]{["kod języka"]=kod_jezyka,["kod projektu"]=kod_projektu,}; if(jaka)then if(czy_biezaca)then local tab_parametry={nazwa=nazwa_przestrzeni_nazw,}; if(jaka=="przedmiotowa")then tab_parametry["przedmiotowa"]="tak";end; nazwa_przestrzeni_nazw=nazwy_modul.Np(tab_parametry); else local tab_parametry={nazwa=nazwa_przestrzeni_nazw,["kod języka"]=kod_jezyka,["kod projektu"]=kod_projektu,}; if(jaka=="przedmiotowa")then tab_parametry["przedmiotowa"]="tak";end; nazwa_przestrzeni_nazw=nazwy_modul.NpDane(tab_parametry); end; else if(czy_biezaca)then nazwa_przestrzeni_nazw=nazwy_modul.Np{nazwa=nazwa_przestrzeni_nazw}; else nazwa_przestrzeni_nazw=nazwy_modul.NpDane{nazwa=nazwa_przestrzeni_nazw,["kod języka"]=kod_jezyka,["kod projektu"]=kod_projektu,}; end; end; if(not mw.ustring.match(nazwa_jednostki,"^:"))then if(nazwa_przestrzeni_nazw~="")then if((not typ)or(typ=="przedmiotowa"))then if(czy_biezaca)then local nazwy_np_modul=mw.loadData("Module:Nazwy/Np"); if(nazwa_przestrzeni_nazw==nazwy_np_modul.Template)then local nazwa_przestrzeni_nazw_d=nazwy_modul["NAZWAPRZESTRZENI"](nazwa_jednostki); if(nazwa_przestrzeni_nazw_d==nazwy_np_modul.Template)then return nazwy_modul["NAZWASTRONY"](nazwa_jednostki); end; elseif(nazwa_przestrzeni_nazw==nazwy_np_modul.Module)then local nazwa_przestrzeni_nazw_d=nazwy_modul["NAZWAPRZESTRZENI"](nazwa_jednostki); if(nazwa_przestrzeni_nazw_d==nazwy_np_modul.Module)then return nazwy_modul["NAZWASTRONY"](nazwa_jednostki); end; end; else local template_prze=nazwy_modul.NpDane{nazwa="Template",["kod języka"]=kod_jezyka,["kod projektu"]=kod_projektu,}; local module_prze=nazwy_modul.NpDane{nazwa="Module",["kod języka"]=kod_jezyka,["kod projektu"]=kod_projektu,}; if(nazwa_przestrzeni_nazw==template_prze)then local nazwa_przestrzeni_nazw_d=nazwy_modul["NAZWAPRZESTRZENI"]{[1]=nazwa_jednostki,["kod języka"]=kod_jezyka,["kod projektu"]=kod_projektu,}; if(nazwa_przestrzeni_nazw_d==template_prze)then return nazwy_modul["NAZWASTRONY"]{[1]=nazwa_jednostki,["kod języka"]=kod_jezyka,["kod projektu"]=kod_projektu,}; end; elseif(nazwa_przestrzeni_nazw==module_prze)then local nazwa_przestrzeni_nazw_d=nazwy_modul["NAZWAPRZESTRZENI"]{[1]=nazwa_jednostki,["kod języka"]=kod_jezyka,["kod projektu"]=kod_projektu,}; if(nazwa_przestrzeni_nazw_d==module_prze)then return nazwy_modul["NAZWASTRONY"]{[1]=nazwa_jednostki,["kod języka"]=kod_jezyka,["kod projektu"]=kod_projektu,}; end; end; end; end; local parametry_modul=require("Module:Parametry"); nazwa_jednostki=parametry_modul["Odstępy"]{[1]=nazwa_jednostki,[2]="tak",}; return mw.getContentLanguage():ucfirst(nazwa_jednostki); else return nazwy_modul["NAZWASTRONY"]{[1]=nazwa_jednostki,["kod języka"]=kod_jezyka,["kod projektu"]=kod_projektu,}; end; else return nazwy_modul["NAZWASTRONY"]{[1]=nazwa_jednostki,["kod języka"]=kod_jezyka,["kod projektu"]=kod_projektu,}; end; end; function p.Czy_przestrzen_nazw_jest_obslugiwana(frame,jakas_przestrzen_nazw,kod_jezyka,kod_projektu) local nazwy_modul=require("Module:Nazwy"); local parametry_modul=require("Module:Parametry"); local wiki_modul=require("Module:Wiki"); local czy_biezaca=wiki_modul["CzyBieżącaWiki"]{["kod języka"]=kod_jezyka,["kod projektu"]=kod_projektu,}; if(czy_biezaca)then jakas_przestrzen_nazw=nazwy_modul.Np{nazwa=jakas_przestrzen_nazw}; else jakas_przestrzen_nazw=nazwy_modul.NpDane{nazwa=jakas_przestrzen_nazw,["kod języka"]=kod_jezyka,["kod projektu"]=kod_projektu,}; end; local function nazwa_przestrzeni_nazw_fun(nazwa_przestrzeni_nazw_iter) if(czy_biezaca)then nazwa_przestrzeni_nazw_iter=nazwy_modul.Np{nazwa=nazwa_przestrzeni_nazw_iter}; else nazwa_przestrzeni_nazw_iter=nazwy_modul.NpDane{nazwa=nazwa_przestrzeni_nazw_iter,["kod języka"]=kod_jezyka,["kod projektu"]=kod_projektu,}; end; if(jakas_przestrzen_nazw==nazwa_przestrzeni_nazw_iter)then return true; end; return false; end; for licznik,nazwa_przestrzeni_nazw in pairs(frame.args)do if(type(licznik)=="number")then local nazwa_przestrzeni_nazw_element,klucze_element=mw.ustring.match(nazwa_przestrzeni_nazw,"^%s*([%w%s]*)%s*:%s*(.-)%s*"); if(nazwa_przestrzeni_nazw_element and klucze_element)then local tab_klucze=mw.text.split(klucze_element,"%s*,%s*",false); local wiki_modul=require("Module:Wiki"); for _,klucz_element in ipairs(tab_klucze)do local kod_jezyka_obslugiwane,kod_projektu_obslugiwane=wiki_modul.KluczProjektu(klucz_element); if(kod_jezyka_obslugiwane==kod_jezyka and kod_projektu_obslugiwane==kod_projektu)then local wynik=nazwa_przestrzeni_nazw_fun(nazwa_przestrzeni_nazw_element); if(wynik)then return true;end; end; end; else local wynik=nazwa_przestrzeni_nazw_fun(nazwa_przestrzeni_nazw); if(wynik)then return true;end; end; end; end; return false; end; function p.Analiza_interwiki_czy_projekt_aktualny(frame,czy_jezyk,czy_projekt) local parametry_modul=require("Module:Parametry"); local p=parametry_modul.PobierzFrameEwentualnieParent(frame); local pudelko_modul=require("Module:Pudełko"); local wiki_modul=require("Module:Wiki"); local jezyk_biezacy=czy_jezyk and pudelko_modul["Kod języka tego projektu"](); local projekt_biezacy=czy_projekt and pudelko_modul["Kod projektu tego projektu"](); for i,_ in pairs(p.args)do if(type(i)=="number")then local klucz_projektu=pudelko_modul["Klucz projektu"](frame,i); local kod_jezyka=pudelko_modul["Kod języka"](frame,i); local kod_projektu=pudelko_modul["kod projektu"](frame,i); local jezyk,projekt=wiki_modul.KodyWiki(klucz_projektu,kod_jezyka,kod_projektu); if((czy_jezyk and (jezyk~=jezyk_biezacy))or(czy_projekt and(projekt~=projekt_biezacy)))then return "tak"; end; end; end; return; end; return p; c96zidsps42zlho5kgkqwbdwf2t5233 540434 540433 2026-04-24T02:17:13Z Persino 2851 540434 Scribunto text/plain local p={}; function p.Nazwa_strony_bazowej_projektu_z_wikidanych(kod_jezyka,kod_projektu) local strona=require("Module:Pudełko")["Strona główna tego projektu"](); local odpowiednik_strony=require("Module:Wiki").WikidaneOdpowiednikStrony{["nazwa strony"]=strona,["kod języka"]=kod_jezyka,["kod projektu"]=kod_projektu}; if(odpowiednik_strony)then local nazwy_modul=require("Module:Nazwy"); return nazwy_modul["PEŁNANAZWASTRONY"]{[1]=odpowiednik_strony,["kod języka"]=kod_jezyka,["kod projektu"]=kod_projektu,}; else local pudelko_modul=require("Module:Pudełko"); if((kod_jezyka==pudelko_modul["Kod języka tego projektu"]())and(kod_projektu==pudelko_modul["Kod projektu tego projektu"]()))then return strona; else local wiki_interwiki_modul=mw.loadData("Module:Wiki/interwiki"); local czy_w_wikidanych=wiki_interwiki_modul.tablica_kody_projektu_wikidane.lingwistyczne[kod_projektu] or wiki_interwiki_modul.tablica_kody_projektu_wikidane.specjalistyczne[kod_projektu]; return czy_w_wikidanych and "Main Page" or nil; end; end; end; function p.Nazwa_strony_bazowej_dla_dzieci_z_wikidanych(kod_jezyka) local strona=require("Module:Pudełko")["Strona główna dla dzieci tego projektu"](); local pudelko_modul=require("Module:Pudełko"); local kod_jezyka_tego_projektu=pudelko_modul["Kod języka tego projektu"](); if(kod_jezyka==kod_jezyka_tego_projektu)then return strona;end; local kod_projektu_tego_projektu=pudelko_modul["Kod projektu tego projektu"](); local odpowiednik_strony=require("Module:Wiki").WikidaneOdpowiednikStrony{["nazwa strony"]=strona,["kod języka"]=kod_jezyka,["kod projektu"]=kod_projektu_tego_projektu}; if(odpowiednik_strony)then local nazwy_modul=require("Module:Nazwy"); return nazwy_modul["PEŁNANAZWASTRONY"]{[1]=odpowiednik_strony,["kod języka"]=kod_jezyka,["kod projektu"]=kod_projektu_tego_projektu,}; else return "Wikijunior"; end; end; function p.Nazwa_strony_bazowej_projektu_ze_zmiennej(frame,i,kod_jezyka,kod_projektu) local pf=frame.getParent and frame:getParent() or {args={}}; local strona_glowna_projektu; if(i~=0)then local pudelko_modul=require("Module:Pudełko"); local kod_jezyka_tego_projektu=pudelko_modul["Kod języka tego projektu"](); local kod_projektu_tego_projektu=pudelko_modul["Kod projektu tego projektu"](); if(kod_jezyka==kod_jezyka_tego_projektu)and(kod_projektu==kod_projektu_tego_projektu)then strona_glowna_projektu=frame.args["strona główna projektu"] or pf.args["strona główna projektu"] else strona_glowna_projektu=(frame.args["strona główna projektu "..i] or pf.args["strona główna projektu "..i]) end; else strona_glowna_projektu=frame.args["strona główna projektu"] or pf.args["strona główna projektu"] end; local parametry_modul=require("Module:Parametry"); return (parametry_modul.CzyTak(strona_glowna_projektu))and require("Module:Nazwy")["PEŁNANAZWASTRONY"]{[1]=strona_glowna_projektu,["kod języka"]=kod_jezyka,["kod projektu"]=kod_projektu,} or (strona_glowna_projektu and "" or nil); end; function p.Nazwa_strony_bazowej_dla_dzieci_ze_zmiennej(frame,i,kod_jezyka) local pf=frame.getParent and frame:getParent() or {args={}}; local pudelko_modul=require("Module:Pudełko"); local strona_glowna_dla_dzieci; if(i~=0)then local kod_jezyka_tego_projektu=pudelko_modul["Kod języka tego projektu"](); if(kod_jezyka==kod_jezyka_tego_projektu)then strona_glowna_dla_dzieci=frame.args["strona główna dla dzieci"] or pf.args["strona główna dla dzieci"] else strona_glowna_dla_dzieci=(frame.args["strona główna dla dzieci "..i] or pf.args["strona główna dla dzieci "..i]) end; else strona_glowna_dla_dzieci=frame.args["strona główna dla dzieci"] or pf.args["strona główna dla dzieci"] end; local kod_projektu_tego_projektu=pudelko_modul["Kod projektu tego projektu"](); local parametry_modul=require("Module:Parametry"); return (parametry_modul.CzyTak(strona_glowna_dla_dzieci))and require("Module:Nazwy")["PEŁNANAZWASTRONY"]{[1]=strona_glowna_dla_dzieci,["kod języka"]=kod_jezyka,["kod projektu"]=kod_projektu_tego_projektu,} or (strona_glowna_dla_dzieci and "" or nil); end; function p.Normalna_przedmiotowa_lub_dyskusji_nazwa_przestrzeni_nazw(nazwa_przestrzeni_nazw, normmalna_przedmiotwa_dyskusji,kod_jezyka,kod_projektu) local nazwa_przestrzeni_nazw_blad; local wiki_modul=require("Module:Wiki"); local nazwy_modul=require("Module:Nazwy"); local czy_biezaca=wiki_modul["CzyBieżącaWiki"]{["kod języka"]=kod_jezyka,["kod projektu"]=kod_projektu,}; if(normmalna_przedmiotwa_dyskusji==0)then if(czy_biezaca)then nazwa_przestrzeni_nazw_blad=nazwy_modul.Np{nazwa=nazwa_przestrzeni_nazw,["kanoniczna"]="tak",["nazwij projektem"]="tak",["nazwij dyskusją projektu"]="tak",["istnieje"]="tak",["wynik błędu nietekstowy"]="tak",}; else nazwa_przestrzeni_nazw_blad=nazwy_modul.NpDane{nazwa=nazwa_przestrzeni_nazw,["kanoniczna"]="tak",["nazwij projektem"]="tak",["nazwij dyskusją projektu"]="tak",["kod języka"]=kod_jezyka,["kod projektu"]=kod_projektu,["istnieje"]="tak",["wynik błędu nietekstowy"]="tak",}; end; elseif(normmalna_przedmiotwa_dyskusji==1)then if(czy_biezaca)then nazwa_przestrzeni_nazw_blad=nazwy_modul.Np{nazwa=nazwa_przestrzeni_nazw, przedmiotowa="tak",["kanoniczna"]="tak",["nazwij projektem"]="tak",["nazwij dyskusją projektu"]="tak",["istnieje"]="tak",["wynik błędu nietekstowy"]="tak",}; else nazwa_przestrzeni_nazw_blad=nazwy_modul.NpDane{nazwa=nazwa_przestrzeni_nazw, przedmiotowa="tak",["kanoniczna"]="tak",["nazwij projektem"]="tak",["nazwij dyskusją projektu"]="tak",["kod języka"]=kod_jezyka,["kod projektu"]=kod_projektu,["istnieje"]="tak",["wynik błędu nietekstowy"]="tak",}; end; elseif(normmalna_przedmiotwa_dyskusji==2)then if(czy_biezaca)then nazwa_przestrzeni_nazw_blad=nazwy_modul.Np{nazwa=nazwa_przestrzeni_nazw, dyskusja="tak",["kanoniczna"]="tak",["nazwij projektem"]="tak",["nazwij dyskusją projektu"]="tak",["istnieje"]="tak",["wynik błędu nietekstowy"]="tak",}; else nazwa_przestrzeni_nazw_blad=nazwy_modul.NpDane{nazwa=nazwa_przestrzeni_nazw, dyskusja="tak",["kanoniczna"]="tak",["nazwij projektem"]="tak",["nazwij dyskusją projektu"]="tak",["kod języka"]=kod_jezyka,["kod projektu"]=kod_projektu,["istnieje"]="tak",["wynik błędu nietekstowy"]="tak",}; end; else if(czy_biezaca)then nazwa_przestrzeni_nazw_blad=nazwy_modul.Np{nazwa=nazwa_przestrzeni_nazw,["kanoniczna"]="tak",["nazwij projektem"]="tak",["nazwij dyskusją projektu"]="tak",["istnieje"]="tak",["wynik błędu nietekstowy"]="tak",}; else nazwa_przestrzeni_nazw_blad=nazwy_modul.NpDane{nazwa=nazwa_przestrzeni_nazw,["kanoniczna"]="tak",["nazwij projektem"]="tak",["nazwij dyskusją projektu"]="tak",["kod języka"]=kod_jezyka,["kod projektu"]=kod_projektu,["istnieje"]="tak",["wynik błędu nietekstowy"]="tak",}; end; end; return nazwa_przestrzeni_nazw_blad end; function p.Nazwa_przestrzeni_nazw(frame,kod_liczbowy_przestrzeni_nazw,czy_uwzglednic_alternatywna_nazwe,numer_jednostki) local pf=frame.getParent and frame:getParent() or {args={}}; local nazwa_przestrzeni_nazw=p.Nazwy_przestrzeni_i_jednostki_podane_o_pewnym_numerze(frame,numer_jednostki,1) or p.Nazwa_przestrzeni_nazw_uzyskana_z_typu_jednostki_z_frame(frame,numer_jednostki); local nazwy_modul=require("Module:Nazwy"); local wiki_modul=require("Module:Wiki"); local kod_jezyka,kod_projektu=p.Wikikody_kontenera(frame,numer_jednostki); local czy_biezaca_wiki=wiki_modul["CzyBieżącaWiki"]{["kod języka"]=kod_jezyka,["kod projektu"]=kod_projektu,}; local czy_blad_nazwy_przestrzeni_nazw; local typ; if(kod_liczbowy_przestrzeni_nazw==1)then typ="przedmiotowa"; if(czy_biezaca_wiki)then czy_blad_nazwy_przestrzeni_nazw=(not nazwa_przestrzeni_nazw)and nazwy_modul["PRZEDMIOTOWAPRZESTRZEŃ"]() or nazwy_modul.Np{nazwa=nazwa_przestrzeni_nazw,przedmiotowa="tak",["istnieje"]="tak",["wynik błędu nietekstowy"]="tak",}; else czy_blad_nazwy_przestrzeni_nazw=(not nazwa_przestrzeni_nazw)and nazwy_modul["PRZEDMIOTOWAPRZESTRZEŃ"]{["kod języka"]=kod_jezyka,["kod projektu"]=kod_projektu,} or nazwy_modul.NpDane{nazwa=nazwa_przestrzeni_nazw,przedmiotowa="tak",["kod języka"]=kod_jezyka,["kod projektu"]=kod_projektu,["istnieje"]="tak",["wynik błędu nietekstowy"]="tak",}; end; elseif(kod_liczbowy_przestrzeni_nazw==2)then if(czy_biezaca_wiki)then typ="dyskusja"; czy_blad_nazwy_przestrzeni_nazw=(not nazwa_przestrzeni_nazw)and nazwy_modul["PRZESTRZEŃDYSKUSJI"]() or nazwy_modul.Np{nazwa=nazwa_przestrzeni_nazw,dyskusja="tak",["istnieje"]="tak",["wynik błędu nietekstowy"]="tak",}; else czy_blad_nazwy_przestrzeni_nazw=(not nazwa_przestrzeni_nazw)and nazwy_modul["PRZESTRZEŃDYSKUSJI"]{["kod języka"]=kod_jezyka,["kod projektu"]=kod_projektu,} or nazwy_modul.NpDane{nazwa=nazwa_przestrzeni_nazw,dyskusja="tak",["kod języka"]=kod_jezyka,["kod projektu"]=kod_projektu,["istnieje"]="tak",["wynik błędu nietekstowy"]="tak",}; end; else if(czy_biezaca_wiki)then czy_blad_nazwy_przestrzeni_nazw=(not nazwa_przestrzeni_nazw)and nazwy_modul["NAZWAPRZESTRZENI"]() or nazwy_modul.Np{nazwa=nazwa_przestrzeni_nazw,["istnieje"]="tak",["wynik błędu nietekstowy"]="tak",}; else czy_blad_nazwy_przestrzeni_nazw=(not nazwa_przestrzeni_nazw)and nazwy_modul["NAZWAPRZESTRZENI"]{["kod języka"]=kod_jezyka,["kod projektu"]=kod_projektu,} or nazwy_modul.NpDane{nazwa=nazwa_przestrzeni_nazw,["kod języka"]=kod_jezyka, ["kod projektu"]=kod_projektu,["istnieje"]="tak",["wynik błędu nietekstowy"]="tak",}; end; end; if(czy_blad_nazwy_przestrzeni_nazw)then return czy_blad_nazwy_przestrzeni_nazw; else if(((czy_uwzglednic_alternatywna_nazwe==nil)and true or czy_uwzglednic_alternatywna_nazwe) and frame.args[1])then local nazwa_przestrzeni_nazw_alternatywnej=mw.text.trim(frame.args[1]); if(mw.ustring.match(nazwa_przestrzeni_nazw_alternatywnej,"^[%w%s_]*$"))then local czy_blad_nazwa_przestrzeni_nazw_alternatywnej; if(czy_biezaca_wiki)then local tab_parametry={nazwa=nazwa_przestrzeni_nazw_alternatywnej,["istnieje"]="tak",["wynik błędu nietekstowy"]="tak",}; if(typ)then tab_parametry[typ]="tak";end; czy_blad_nazwa_przestrzeni_nazw_alternatywnej=nazwy_modul.Np(tab_parametry); else local tab_parametry={nazwa=nazwa_przestrzeni_nazw_alternatywnej,["kod języka"]=kod_jezyka,["kod projektu"]=kod_projektu,["istnieje"]="tak",["wynik błędu nietekstowy"]="tak",}; if(typ)then tab_parametry[typ]="tak";end; czy_blad_nazwa_przestrzeni_nazw_alternatywnej=nazwy_modul.NpDane(tab_parametry); end; return czy_blad_nazwa_przestrzeni_nazw_alternatywnej or "(błąd)"; else return "(błąd)"; end; else local parametry_modul=require("Module:Parametry"); nazwa_przestrzeni_nazw=parametry_modul["Odstępy"]{[1]=nazwa_przestrzeni_nazw,[2]="tak",}; if(mw.ustring.match(nazwa_przestrzeni_nazw,"^[%w%s_]*$"))then return nazwa_przestrzeni_nazw; else return "(błąd)"; end; end; end; end; function p.Nazwa_przestrzeni_nazw_2(frame,czy_uwzglednic_alternatywna_nazwe,i) local nazwa_przestrzeni_nazw,nazwa_jednostki,liczba_numer_jednostki=p.Nazwy_przestrzeni_i_jednostki_podane_o_pewnym_numerze(frame,i); nazwa_przestrzeni_nazw=nazwa_przestrzeni_nazw or p.Nazwa_przestrzeni_nazw_uzyskana_z_typu_jednostki_z_frame(frame,liczba_numer_jednostki); local nazwy_modul=require("Module:Nazwy"); local kod_jezyka,kod_projektu=p.Wikikody_kontenera(frame,liczba_numer_jednostki); local wiki_modul=require("Module:Wiki"); local czy_biezaca_wiki=wiki_modul["CzyBieżącaWiki"]{["kod języka"]=kod_jezyka,["kod projektu"]=kod_projektu,}; local nazwa_przestrzeni_nazw_blad; local parametry_modul=require("Module:Parametry"); if(czy_biezaca_wiki)then nazwa_przestrzeni_nazw=nazwa_przestrzeni_nazw and mw.text.trim(nazwa_przestrzeni_nazw) or nazwy_modul["NAZWAPRZESTRZENI"](); nazwa_przestrzeni_nazw_blad=require("Module:Nazwy").Np{nazwa=nazwa_przestrzeni_nazw,["istnieje"]="tak",["wynik błędu nietekstowy"]="tak",}; if(nazwa_jednostki)then nazwa_jednostki=parametry_modul["Odstępy"]{[1]=nazwa_jednostki,[2]="tak",}; nazwa_jednostki=mw.ustring.gsub(nazwa_jednostki,"^([^#]*)#(.*)$","%1"); local parametry=mw.ustring.match(nazwa_jednostki,"^.*%?([^%?]+)$"); if(parametry and mw.ustring.match(parametry,"[^=]+=[^=]*"))then nazwa_jednostki=mw.ustring.gsub(nazwa_jednostki,"^(.*)%?([^%?]+)$","%1"); end; else nazwa_jednostki=nazwy_modul["NAZWASTRONY"](); end; else nazwa_przestrzeni_nazw=nazwa_przestrzeni_nazw and mw.text.trim(nazwa_przestrzeni_nazw) or nazwy_modul["NAZWAPRZESTRZENI"]{["kod języka"]=kod_jezyka,["kod projektu"]=kod_projektu,}; nazwa_przestrzeni_nazw_blad=require("Module:Nazwy").NpDane{nazwa=nazwa_przestrzeni_nazw,["kod języka"]=kod_jezyka,["kod projektu"]=kod_projektu,["istnieje"]="tak",["wynik błędu nietekstowy"]="tak",}; if(nazwa_jednostki)then local html_modul=require("Module:Html"); nazwa_jednostki=html_modul["NazwaStronyAdresu"](nazwa_jednostki,true); else nazwa_jednostki=nazwy_modul["NAZWASTRONY"]{["kod języka"]=kod_jezyka,["kod projektu"]=kod_projektu,}; end; end; nazwa_przestrzeni_nazw=nazwa_przestrzeni_nazw_blad or nazwa_przestrzeni_nazw; if(not mw.ustring.match(nazwa_jednostki,"^:"))then if(nazwa_przestrzeni_nazw~="")then if(czy_biezaca_wiki)then local nazwy_np_modul=mw.loadData("Module:Nazwy/Np"); if(nazwa_przestrzeni_nazw==nazwy_np_modul.Template)then local nazwa_przestrzeni_nazw_d=require("Module:Nazwy")["NAZWAPRZESTRZENI"](nazwa_jednostki); if(nazwa_przestrzeni_nazw_d==nazwy_np_modul.Template)then nazwa_przestrzeni_nazw=nazwy_np_modul.Template; end; elseif(nazwa_przestrzeni_nazw==nazwy_np_modul.Module)then local nazwa_przestrzeni_nazw_d=require("Module:Nazwy")["NAZWAPRZESTRZENI"](nazwa_jednostki); if(nazwa_przestrzeni_nazw_d==nazwy_np_modul.Module)then nazwa_przestrzeni_nazw=nazwy_np_modul.Module; end; end; else local template_prze=nazwy_modul.NpDane{nazwa="Template",["kod języka"]=kod_jezyka,["kod projektu"]=kod_projektu,}; local module_prze=nazwy_modul.NpDane{nazwa="Module",["kod języka"]=kod_jezyka,["kod projektu"]=kod_projektu,}; if(nazwa_przestrzeni_nazw==template_prze)then local nazwa_przestrzeni_nazw_d=nazwy_modul["NAZWAPRZESTRZENI"]{[1]=nazwa_jednostki,["kod języka"]=kod_jezyka,["kod projektu"]=kod_projektu,}; if(nazwa_przestrzeni_nazw_d==template_prze)then nazwa_przestrzeni_nazw=template_prze; end; elseif(nazwa_przestrzeni_nazw==module_prze)then local nazwa_przestrzeni_nazw_d=nazwy_modul["NAZWAPRZESTRZENI"]{[1]=nazwa_jednostki,["kod języka"]=kod_jezyka,["kod projektu"]=kod_projektu,}; if(nazwa_przestrzeni_nazw_d==module_prze)then nazwa_przestrzeni_nazw=module_prze; end; end; end; if(not nazwa_przestrzeni_nazw_blad)then if(((czy_uwzglednic_alternatywna_nazwe==nil)and true or czy_uwzglednic_alternatywna_nazwe) and frame.args[1])then local wytrimowana_nazwa_przestrzeni_nazw=mw.text.trim(frame.args[1]); if(mw.ustring.match(wytrimowana_nazwa_przestrzeni_nazw,"^[%w%s_]*$"))then if(czy_biezaca_wiki)then local nazwy_modul=require("Module:Nazwy"); local czy_blad_nazwy_przestrzeni_nazw=nazwy_modul.Np{nazwa=wytrimowana_nazwa_przestrzeni_nazw,["istnieje"]="tak",["wynik błędu nietekstowy"]="tak",} return czy_blad_nazwy_przestrzeni_nazw or "(błąd)"; else local nazwy_modul=require("Module:Nazwy"); local nazwa_przestrzeni_nazw_blad2=nazwy_modul.NpDane{nazwa=wytrimowana_nazwa_przestrzeni_nazw,["kod języka"]=kod_jezyka,["kod projektu"]=kod_projektu,["istnieje"]="tak",["wynik błędu nietekstowy"]="tak",}; return nazwa_przestrzeni_nazw_blad2 or "(błąd)"; end; else return "(błąd)"; end; else local wytrimowana_nazwa_przestrzeni_nazw=mw.text.trim(nazwa_przestrzeni_nazw); if(mw.ustring.match(wytrimowana_nazwa_przestrzeni_nazw,"^[%w%s_]*$"))then return wytrimowana_nazwa_przestrzeni_nazw; else return "(błąd)"; end; end; else return nazwa_przestrzeni_nazw; end; else return require("Module:Nazwy")["NAZWAPRZESTRZENI"]{[1]=nazwa_jednostki,["kod języka"]=kod_jezyka,["kod projektu"]=kod_projektu,}; end; else return require("Module:Nazwy")["NAZWAPRZESTRZENI"]{[1]=nazwa_jednostki,["kod języka"]=kod_jezyka,["kod projektu"]=kod_projektu,}; end; end; function p.Nazwa_przestrzeni_nazw_przedmiotowa_dyskusji_2(frame,czy_uwzglednic_alternatywna_nazwe,i,typ) local numer_jednostki=i or frame.args["numer jednostki"]; local liczba_numer_jednostki=((numer_jednostki)and(tonumber(numer_jednostki))or 0); local pudelko_modul=require("Module:Pudełko"); local tab_nazwa={ ["przedmiotowa"]="Nazwa przedmiotowej przestrzeni nazw", ["dyskusja"]="Nazwa przestrzeni nazw", }; local nazwa_przestrzeni_nazw=pudelko_modul[tab_nazwa[typ]](frame,czy_uwzglednic_alternatywna_nazwe,liczba_numer_jednostki); local nazwy_modul=require("Module:Nazwy"); if(nazwa_przestrzeni_nazw=="")then local nazwa_jednostki=pudelko_modul["Nazwa jednostki"](frame,liczba_numer_jednostki); local kod_jezyka,kod_projektu=p.Wikikody_kontenera(frame,liczba_numer_jednostki); local tab_nazwa={ ["przedmiotowa"]="PRZEDMIOTOWAPRZESTRZEŃ", ["dyskusja"]="PRZESTRZEŃDYSKUSJI", }; nazwa_przestrzeni_nazw=nazwy_modul[tab_nazwa[typ]]{nazwa=nazwa_jednostki,["kod języka"]=kod_jezyka,["kod projektu"]=kod_projektu,}; else if(typ=="dyskusja")then local wiki_modul=require("Module:Wiki"); local czy_biezaca=wiki_modul["CzyBieżącaWiki"]{["kod języka"]=kod_jezyka,["kod projektu"]=kod_projektu,}; if(czy_biezaca)then nazwa_przestrzeni_nazw=nazwy_modul.Np{[typ]="tak",nazwa=nazwa_przestrzeni_nazw}; else nazwa_przestrzeni_nazw=nazwy_modul.NpDane{[typ]="tak",nazwa=nazwa_przestrzeni_nazw,["kod języka"]=kod_jezyka,["kod projektu"]=kod_projektu,}; end; end; end; return nazwa_przestrzeni_nazw; end; function p.Kod_jezyka(frame,i,wartosc_domyslna) local pudelko_modul=require("Module:Pudełko"); if(not i)then return pudelko_modul["Kod języka tego projektu"]();end; local pf=frame.getParent and frame:getParent() or {args={}}; if(i==0)then return pudelko_modul["Kod języka tego projektu"](); elseif(i==1)then local parametry_modul=require("Module:Parametry"); local kod_jezyka=frame.args["kod języka"] or frame.args["kod języka 1"] or pf.args["kod języka"] or pf.args["kod języka 1"] return ((kod_jezyka)and(kod_jezyka~=""))and mw.text.trim(kod_jezyka) or ((parametry_modul.CzyTak(wartosc_domyslna))and wartosc_domyslna or nil); elseif(i>1)then local parametry_modul=require("Module:Parametry"); local kod_jezyka=frame.args["kod języka "..i] or pf.args["kod języka "..i] return ((kod_jezyka)and(kod_jezyka~=""))and mw.text.trim(kod_jezyka) or ((parametry_modul.CzyTak(wartosc_domyslna))and wartosc_domyslna or nil); end; end function p.Kod_projektu(frame,i,wartosc_domyslna) local pudelko_modul=require("Module:Pudełko"); if(not i)then return pudelko_modul["Kod projektu tego projektu"]();end; local pf=frame.getParent and frame:getParent() or {args={}}; if(i==0)then return pudelko_modul["Kod projektu tego projektu"](); elseif(i==1)then local parametry_modul=require("Module:Parametry"); local kod_projektu=frame.args["kod projektu"] or frame.args["kod projektu 1"] or pf.args["kod projektu"] or pf.args["kod projektu 1"] return ((kod_projektu)and(kod_projektu~=""))and mw.text.trim(kod_projektu) or ((parametry_modul.CzyTak(wartosc_domyslna))and wartosc_domyslna or nil); elseif(i>1)then local parametry_modul=require("Module:Parametry"); local kod_projektu=frame.args["kod projektu "..i] or pf.args["kod projektu "..i] return ((kod_projektu)and(kod_projektu~=""))and mw.text.trim(kod_projektu) or ((parametry_modul.CzyTak(wartosc_domyslna))and wartosc_domyslna or nil); end; end function p.Klucz_projektu(frame,i,wartosc_domyslna_jezyka,wartosc_domyslna_projektu) local pf=frame.getParent and frame:getParent() or {args={}}; local klucz_projektu; local function domyslne_klucz(klucz_projektu) local parametry_modul=require("Module:Parametry"); return ((klucz_projektu)and(klucz_projektu~=""))and mw.text.trim(klucz_projektu)or((parametry_modul.CzyTak(wartosc_domyslna_jezyka)and(parametry_modul.CzyTak(wartosc_domyslna_projektu)))and (wartosc_domyslna_jezyka..":" ..wartosc_domyslna_projektu)or(parametry_modul.CzyTak(wartosc_domyslna_jezyka) and wartosc_domyslna_jezyka or (parametry_modul.CzyTak(wartosc_domyslna_projektu) and wartosc_domyslna_projektu or nil))); end; if(i==0)then return nil; elseif(i==1)then local klucz_projektu=frame.args["klucz projektu"] or frame.args["klucz projektu 1"] or pf.args["klucz projektu"] or pf.args["klucz projektu 1"]; return domyslne_klucz(klucz_projektu); elseif(i>1)then local klucz_projektu=frame.args["klucz projektu "..i] or pf.args["klucz projektu "..i]; return domyslne_klucz(klucz_projektu); end; end; function p.Wikikody_kontenera(frame,i,wartosc_domyslna_jezyka,wartosc_domyslna_projektu) local wiki_modul=require("Module:Wiki"); local kod_jezyka,kod_projektu=wiki_modul.KodyWiki(p.Klucz_projektu(frame,i,wartosc_domyslna_jezyka,wartosc_domyslna_projektu),p.Kod_jezyka(frame,i,wartosc_domyslna_jezyka),p.Kod_projektu(frame,i,wartosc_domyslna_projektu)); return kod_jezyka,kod_projektu; end; function p.Nazwa_przestrzeni_nazw_od_typu_jednostki(typ,args,bez_analizy) if(not bez_analizy)then local parametry_modul=require("Module:Parametry"); if((((not parametry_modul.CzyTak(args["obsługiwane jednostki jako nieopisowe strony"]))and((typ=="artykuł")or(typ=="podręcznik")))or (typ=="artykuł")))then return ""; elseif(((not parametry_modul.CzyTak(args["obsługiwane jednostki jako nieopisowe strony"]))and((typ=="artykuł dla dzieci")or(typ=="podręcznik dla dzieci")))or(typ=="artykuł dla dzieci"))then return "Wikijunior"; elseif((not parametry_modul.CzyTak(args["obsługiwane brudnopisy jako normalne strony"])) and(((not parametry_modul.CzyTak(args["obsługiwane jednostki jako nieopisowe strony"]))and(parametry_modul.CzyTak(args["obsługiwane jednostki brudnopisu projektu"])and (typ=="podręcznik brudnopisu projektu" or typ=="artykuł brudnopisu projektu")or (typ=="jednostka brudnopisu projektu")) or (typ=="strona brudnopisu projektu"))or(typ=="strona projektu"))or (typ=="strona projektu"))then return "Project"; elseif((parametry_modul.CzyTak(args["obsługiwane strony jako niebrudnopisowe jednostki programowe"]))and (typ=="strona szablonu") or(not parametry_modul.CzyTak(args["obsługiwane brudnopisy jako normalne strony"]) and((not parametry_modul.CzyTak(args["obsługiwane opisy jako strony jednostek programowych"]) and not parametry_modul.CzyTak(args["obsługiwane jednostki jako nieopisowe strony"]) and not parametry_modul.CzyTak(args["obsługiwane nieudokumentowane szablony jako szablony"])) and((typ=="strona brudnopisu szablonu")or(typ=="strona brudnopisu opisu szablonu"))or(typ=="strona brudnopisu szablonu")) or((not parametry_modul.CzyTak(args["obsługiwane opisy jako strony jednostek programowych"]) and not parametry_modul.CzyTak(args["obsługiwane jednostki jako nieopisowe strony"]) and not parametry_modul.CzyTak(args["obsługiwane nieudokumentowane szablony jako szablony"])) and((typ=="strona szablonu")or(typ=="strona opisu szablonu"))or(typ=="strona szablonu"))))then return "Template"; elseif((parametry_modul.CzyTak(args["obsługiwane strony jako niebrudnopisowe jednostki programowe"]))and (typ=="strona modułu") or(not parametry_modul.CzyTak(args["obsługiwane brudnopisy jako normalne strony"]) and((not parametry_modul.CzyTak(args["obsługiwane opisy jako strony jednostek programowych"]) and not parametry_modul.CzyTak(args["obsługiwane jednostki jako nieopisowe strony"])) and((typ=="strona brudnopisu modułu")or(typ=="strona brudnopisu opisu modułu"))or(typ=="strona brudnopisu modułu")) or((not parametry_modul.CzyTak(args["obsługiwane opisy jako strony jednostek programowych"]) and not parametry_modul.CzyTak(args["obsługiwane jednostki jako nieopisowe strony"])) and((typ=="strona modułu")or(typ=="strona opisu modułu"))or(typ=="strona modułu"))))then return "Module"; elseif(not parametry_modul.CzyTak(args["obsługiwane jednostki użytkownika jako normalne strony"]) and(((not parametry_modul.CzyTak(args["obsługiwane jednostki jako nieopisowe strony"]))and(parametry_modul.CzyTak(args["obsługiwane jednostki użytkownika"])and (typ=="podręcznik użytkownika" or typ=="artykuł użytkownika") or (typ=="jednostka użytkownika")) or (typ=="strona użytkownika"))or(typ=="strona główna użytkownika"))or(typ=="strona użytkownika"))then return "User"; elseif(typ=="strona pliku")then return "File"; elseif(typ=="strona kategorii")then return "Category"; elseif(typ=="strona pomocy")then return "Help"; elseif(typ=="strona komunikatu")then return "MediaWiki"; elseif(typ=="strona specjalna")then return "Special"; elseif(typ=="strona gadżetu")then return "Gadget"; elseif(typ=="strona główna projektu")then return "Project"; elseif(typ=="strona główna dla dzieci")then return "Wikijunior"; end; return; end; if(typ)then if((typ=="artykuł")or(typ=="podręcznik"))then return ""; elseif((typ=="artykuł dla dzieci")or(typ=="podręcznik dla dzieci"))then return "Wikijunior"; elseif((typ=="podręcznik brudnopisu projektu")or(typ=="artykuł brudnopisu projektu")or(typ=="jednostka brudnopisu projektu")or(typ=="strona brudnopisu projektu")or(typ=="strona projektu"))then return "Project"; elseif((typ=="strona szablonu")or(typ=="strona opisu szablonu")or(typ=="strona brudnopisu szablonu")or(typ=="strona brudnopisu opisu szablonu"))then return "Template"; elseif((typ=="strona modułu")or(typ=="strona opisu modułu")or(typ=="strona brudnopisu modułu")or(typ=="strona brudnopisu opisu modułu"))then return "Module"; elseif((typ=="podręcznik użytkownika")or(typ=="artykuł użytkownika")or(typ=="jednostka użytkownika")or(typ=="strona użytkownika")or(typ=="strona główna użytkownika"))then return "User"; elseif(typ=="strona pliku")then return "File"; elseif(typ=="strona kategorii")then return "Category"; elseif(typ=="strona pomocy")then return "Help"; elseif(typ=="strona komunikatu")then return "MediaWiki"; elseif(typ=="strona specjalna")then return "Special"; elseif(typ=="strona gadżetu")then return "Gadget"; elseif(typ=="strona główna projektu")then return "Project"; elseif(typ=="strona główna dla dzieci")then return "Wikijunior"; end; end; end; function p.Typ_jednostki_uzyskany_z_frame(frame,i) local numer_jednostki=i or frame.args["numer jednostki"]; local liczba_numer_jednostki=tonumber(numer_jednostki) or 0; local pf=frame.getParent and frame:getParent() or {args={}}; local typ; if liczba_numer_jednostki~=0 then typ=liczba_numer_jednostki and( (frame.args["typ jednostki "..liczba_numer_jednostki] or frame.args["typ jednostki i"]) or (pf.args["typ jednostki "..liczba_numer_jednostki] or pf.args["typ jednostki i"]) ); if(not typ)then local nazwa_jednostki=p.Nazwy_przestrzeni_i_jednostki_podane_o_pewnym_numerze(frame,liczba_numer_jednostki,2); if(nazwa_jednostki)then if(not mw.ustring.match(mw.text.trim(nazwa_jednostki),"^:"))then local nazwa_przesrzeni_nazw=p.Nazwy_przestrzeni_i_jednostki_podane_o_pewnym_numerze(frame,liczba_numer_jednostki,1); if(not nazwa_przesrzeni_nazw)then typ=frame.args["typ jednostki"] or pf.args["typ jednostki"]; end; end; end; end; else typ=frame.args["typ jednostki"] or pf.args["typ jednostki"]; end; local parametry_modul=require("Module:Parametry"); if(parametry_modul.CzyTak(typ))then typ,ile=mw.ustring.gsub(typ,"^(%S+)(%s+)(dyskusji)",function(strona,spacja,dyskusja) return strona; end); return typ,liczba_numer_jednostki,ile; end; return typ,liczba_numer_jednostki,0; end; function p.Czy_dyskusja_typu_jednostki_z_frame_od_dyskusja_typu_jednostki(frame,i) local typ,liczba_numer_jednostki,ile_dyskusja=p.Typ_jednostki_uzyskany_z_frame(frame,i); if(ile_dyskusja>0)then return true;end; local pf=frame.getParent and frame:getParent() or {args={},}; local function FuncTemp(liczba_numer_jednostki) local dyskusja_parametr="dyskusja typu jednostki"; if(liczba_numer_jednostki==0)then return frame.args[dyskusja_parametr] or pf.args[dyskusja_parametr]; else return ((frame.args[dyskusja_parametr.." "..liczba_numer_jednostki] or pf.args[dyskusja_parametr.." "..liczba_numer_jednostki]) or (frame.args[dyskusja_parametr.." i"] or pf.args[dyskusja_parametr.." i"]) or(frame.args[dyskusja_parametr] or pf.args[dyskusja_parametr])); end; end; local czy_dyskusja=FuncTemp(liczba_numer_jednostki); local parametry_modul=require("Module:Parametry"); local czy_dyskusja=parametry_modul.CzyTak(czy_dyskusja); return czy_dyskusja; end; function p.Nazwa_przestrzeni_nazw_uzyskana_z_typu_jednostki_z_frame(frame,i) local typ=p.Typ_jednostki_uzyskany_z_frame(frame,i); local nazwa_przestrzeni_nazw=typ and p.Nazwa_przestrzeni_nazw_od_typu_jednostki(typ,nil,true) or nil; if(nazwa_przestrzeni_nazw)then local czy_dyskusja=p.Czy_dyskusja_typu_jednostki_z_frame_od_dyskusja_typu_jednostki(frame,i); if(czy_dyskusja)then if(nazwa_przestrzeni_nazw=="")then return "Talk"; else return nazwa_przestrzeni_nazw.." talk"; end; else return nazwa_przestrzeni_nazw; end; else return nil; end; end; function p.Typ_jednostki(frame, kod_liczbowy_przestrzeni_nazw,i,numer_argorytmu) local parametry_modul=require("Module:Parametry"); local analiza=parametry_modul.CzyTak(frame.args["analiza"]); local typ,liczba_numer_jednostki=p.Typ_jednostki_uzyskany_z_frame(frame,i); local uzyskana_przestrzen_nazw_od_typu_jednostki; local nazwa_przestrzeni_nazw_podana,nazwa_jednostki_podana=p.Nazwy_przestrzeni_i_jednostki_podane_o_pewnym_numerze(frame,liczba_numer_jednostki); if((not analiza)and(typ))then if(typ~="")then uzyskana_przestrzen_nazw_od_typu_jednostki=p.Nazwa_przestrzeni_nazw_od_typu_jednostki(typ,frame.args); if(uzyskana_przestrzen_nazw_od_typu_jednostki)then if((not nazwa_przestrzeni_nazw_podana)and(not nazwa_jednostki_podana))then return typ; end; else return "(błąd typu jednostki)"; end; end; end; local nazwa_przestrzeni_nazw,nazwa_jednostki=p.Uzyskanie_nazw_jednostki(frame,kod_liczbowy_przestrzeni_nazw,liczba_numer_jednostki,numer_argorytmu); local nazwy_modul=require("Module:Nazwy"); local kod_jezyka,kod_projektu=p.Wikikody_kontenera(frame,liczba_numer_jednostki); local wiki_modul=require("Module:Wiki"); local czy_biezaca=wiki_modul["CzyBieżącaWiki"]{["kod języka"]=kod_jezyka,["kod projektu"]=kod_projektu,}; local czy_blad_nazwa_przestrzeni_nazw; if(czy_biezaca)then czy_blad_nazwa_przestrzeni_nazw=nazwy_modul.Np{nazwa=nazwa_przestrzeni_nazw,["kanoniczna"]="tak",["nazwij projektem"]="tak",["nazwij dyskusją projektu"]="tak",["istnieje"]="tak",["wynik błędu nietekstowy"]="tak",} else czy_blad_nazwa_przestrzeni_nazw=nazwy_modul.NpDane{nazwa=nazwa_przestrzeni_nazw,["kanoniczna"]="tak",["nazwij projektem"]="tak",["nazwij dyskusją projektu"]="tak",["kod języka"]=kod_jezyka,["kod projektu"]=kod_projektu,["istnieje"]="tak",["wynik błędu nietekstowy"]="tak",} end; if(not czy_blad_nazwa_przestrzeni_nazw)then return "(błąd nazwy przestrzeni nazw)";end; nazwa_przestrzeni_nazw=czy_blad_nazwa_przestrzeni_nazw; --- --- if((not analiza)and(typ))then if(typ~="")then ---typ jednostki if(uzyskana_przestrzen_nazw_od_typu_jednostki)then if((nazwa_przestrzeni_nazw_podana)and(not nazwa_jednostki_podana))then if(uzyskana_przestrzen_nazw_od_typu_jednostki==nazwa_przestrzeni_nazw)then return typ; else return "(błąd niezgodności)"; end; end; else return "(błąd typu jednostki)"; end; end; end; local function Typ_jednostki() if(nazwa_jednostki~="")then --local kod_jezyka,kod_projektu=KodyWikiPudelka(frame,liczba_numer_jednostki); --local klucz_projektu=kod_projektu..":"..kod_jezyka; local pudelko_modul=require("Module:Pudełko"); local pelna_nazwa_strony=((nazwa_przestrzeni_nazw~="")and nazwa_przestrzeni_nazw..":" or "")..nazwa_jednostki; if(pudelko_modul.CzyNiepoprawnaNazwa(pelna_nazwa_strony))then return "(błąd nazwy jednostki)";end; local nazwy_modul=require("Module:Nazwy") pelna_nazwa_strony=nazwy_modul["PEŁNANAZWASTRONY"]{[1]=pelna_nazwa_strony,["kod języka"]=kod_jezyka,["kod projektu"]=kod_projektu,}; local norm_przed_lub_dyskusji=p.Normalna_przedmiotowa_lub_dyskusji_nazwa_przestrzeni_nazw(nazwa_przestrzeni_nazw,1,kod_jezyka,kod_projektu); if(kod_projektu==pudelko_modul["Kod projektu tego projektu"]())then local nazwa_strony_glownej_dla_dzieci_ze_zmiennej=p.Nazwa_strony_bazowej_dla_dzieci_ze_zmiennej(frame,liczba_numer_jednostki,kod_jezyka); if(nazwa_strony_glownej_dla_dzieci_ze_zmiennej=="")then return "(błąd nazwy strony głównej dla dzieci)";end; local nazwa_strony_glownej_wikijuniora=p.Nazwa_strony_bazowej_dla_dzieci_z_wikidanych(kod_jezyka); local nazwa_strony_glownej_dla_dzieci_uzyskana=(not nazwa_strony_glownej_dla_dzieci_ze_zmiennej)and nazwa_strony_glownej_wikijuniora or nazwa_strony_glownej_dla_dzieci_ze_zmiennej; if(nazwa_strony_glownej_dla_dzieci_uzyskana)then if(pudelko_modul.CzyNiepoprawnaNazwa(nazwa_strony_glownej_dla_dzieci_uzyskana))then return "(błąd nazwy strony głównej dla dzieci)";end; nazwa_strony_glownej_dla_dzieci_uzyskana=nazwy_modul["PEŁNANAZWASTRONY"]{[1]=nazwa_strony_glownej_dla_dzieci_uzyskana,["kod języka"]=kod_jezyka,["kod projektu"]=kod_projektu,}; if(pelna_nazwa_strony==nazwa_strony_glownej_dla_dzieci_uzyskana)then return "strona główna dla dzieci";end; end; end; local nazwa_strony_glownej_projektu_ze_zmiennej=p.Nazwa_strony_bazowej_projektu_ze_zmiennej(frame,liczba_numer_jednostki,kod_jezyka,kod_projektu); if(nazwa_strony_glownej_projektu_ze_zmiennej=="")then return "(błąd nazwy strony głównej projektu)";end; local nazwa_strony_glownej_projektu_z_wikidanych=p.Nazwa_strony_bazowej_projektu_z_wikidanych(kod_jezyka,kod_projektu); local nazwa_strony_glownej_projektu_uzyskana=(not nazwa_strony_glownej_projektu_ze_zmiennej)and nazwa_strony_glownej_projektu_z_wikidanych or nazwa_strony_glownej_projektu_ze_zmiennej; if(nazwa_strony_glownej_projektu_uzyskana)then if(pudelko_modul.CzyNiepoprawnaNazwa(nazwa_strony_glownej_projektu_uzyskana))then return "(błąd nazwy strony głównej projektu)";end; nazwa_strony_glownej_projektu_uzyskana=nazwy_modul["PEŁNANAZWASTRONY"]{[1]=nazwa_strony_glownej_projektu_uzyskana,["kod języka"]=kod_jezyka,["kod projektu"]=kod_projektu,}; if(pelna_nazwa_strony==nazwa_strony_glownej_projektu_uzyskana)then return "strona główna projektu";end; end; if(norm_przed_lub_dyskusji=="")then local parametry_modul=require("Module:Parametry"); if(parametry_modul.CzyTak(frame.args["obsługiwane jednostki jako nieopisowe strony"]))then return "artykuł"; else local it=mw.ustring.match(nazwa_jednostki,"^[^/]+$"); if(it)then return "podręcznik";else return "artykuł";end; end; elseif(norm_przed_lub_dyskusji=="Wikijunior")then local parametry_modul=require("Module:Parametry"); if(parametry_modul.CzyTak(frame.args["obsługiwane jednostki jako nieopisowe strony"]))then return "artykuł dla dzieci"; else local it=mw.ustring.match(nazwa_jednostki,"^[^/]+$"); if(it)then return "podręcznik dla dzieci";else return "artykuł dla dzieci";end; end; elseif(norm_przed_lub_dyskusji=="User")then local parametry_modul=require("Module:Parametry"); if(parametry_modul.CzyTak(frame.args["obsługiwane jednostki użytkownika jako normalne strony"]))then return "strona użytkownika"; else local czy_podstrony=mw.ustring.match(nazwa_jednostki,"^[^/]+$") if(czy_podstrony)then return "strona główna użytkownika"; else if(not parametry_modul.CzyTak(frame.args["obsługiwane jednostki jako nieopisowe strony"]))then if(parametry_modul.CzyTak(frame.args["obsługiwane jednostki użytkownika"]))then local czy_ksiazka=mw.ustring.match(nazwa_jednostki,"^[^/]+/[^/]*$"); if(czy_ksiazka)then return "podręcznik użytkownika"; else return "artykuł użytkownika"; end; else return "jednostka użytkownika"; end; else return "strona użytkownika"; end; end; end; elseif(norm_przed_lub_dyskusji=="File")then return "strona pliku"; elseif(norm_przed_lub_dyskusji=="Category")then return "strona kategorii"; elseif(norm_przed_lub_dyskusji=="Project")then local parametry_modul=require("Module:Parametry"); if(parametry_modul.CzyTak(frame.args["obsługiwane brudnopisy jako normalne strony"]))then return "strona projektu";end; if(mw.ustring.match(nazwa_jednostki,"^%s*[Bb]rudnopis/[^/]*/.*"))then if(not parametry_modul.CzyTak(frame.args["obsługiwane jednostki jako nieopisowe strony"]))then if(parametry_modul.CzyTak(frame.args["obsługiwane jednostki brudnopisu projektu"]))then local czy_ksiazka=mw.ustring.match(nazwa_jednostki,"^%s*[Bb]rudnopis/[^/]*/[^/]*$"); if(czy_ksiazka)then return "podręcznik brudnopisu projektu"; else return "artykuł brudnopisu projektu"; end; else return "jednostka brudnopisu projektu"; end; else return "strona brudnopisu projektu"; end; else return "strona projektu"; end; elseif(norm_przed_lub_dyskusji=="Help")then return "strona pomocy"; elseif(norm_przed_lub_dyskusji=="MediaWiki")then return "strona komunikatu"; elseif(norm_przed_lub_dyskusji=="Special")then return "strona specialna"; elseif(norm_przed_lub_dyskusji=="Gadget")then return "strona gadżetu"; elseif(norm_przed_lub_dyskusji=="Template")then local parametry_modul=require("Module:Parametry"); if(parametry_modul.CzyTak(frame.args["obsługiwane strony jako niebrudnopisowe jednostki programowe"]))then return "strona szablonu";end; local function CzySzablonAlboOpis(nazwa_przestrzeni_nazw,nazwa_jednostki,szablon,opis_szablonu,strona_szablonu,prefix) local parametry_modul=require("Module:Parametry"); if(parametry_modul.CzyTak(frame.args["obsługiwane opisy jako strony jednostek programowych"]) or parametry_modul.CzyTak(frame.args["obsługiwane jednostki jako nieopisowe strony"]))then return szablon; else if(mw.ustring.match(nazwa_jednostki,"^"..prefix..".*/opis$"))then return opis_szablonu; else if(not parametry_modul.CzyTak(frame.args["obsługiwane nieudokumentowane szablony jako szablony"]))then local czy_brudnopis=mw.ustring.match(nazwa_jednostki,"^"..prefix..".*$"); if(czy_brudnopis)then local pagename=(nazwa_przestrzeni_nazw~="")and nazwa_przestrzeni_nazw..":"..nazwa_jednostki or nazwa_jednostki; local czy_istnieje_strona,tab=require("Module:Techniczne").PoliczZbiory(pagename); if(czy_istnieje_strona==1)then local czy_brudnopis_opisu_szablonu=require("Module:Łatki").contentMatch{ [1]='<noinclude>.-{{%s*[Dd]okumentacja%s*}}.-</noinclude>', [2]='<noinclude>.-{{%s*[Dd]okumentacja%s*|.-</noinclude>',pagename=pagename,namespace=0 }; if(not czy_brudnopis_opisu_szablonu)then return opis_szablonu;else return szablon;end; else return szablon; end; else return strona_szablonu; end; else return szablon; end; end; end; end; if((not parametry_modul.CzyTak(frame.args["obsługiwane brudnopisy jako normalne strony"]))and(mw.ustring.match(nazwa_jednostki,"^%s*[Bb]rudnopis/[^/]*/.*")))then return CzySzablonAlboOpis(norm_przed_lub_dyskusji,nazwa_jednostki,"strona brudnopisu szablonu","strona brudnopisu opisu szablonu","strona szablonu","[Bb]rudnopis/[^/]*/"); else return CzySzablonAlboOpis(norm_przed_lub_dyskusji,nazwa_jednostki,"strona szablonu","strona opisu szablonu","strona szablonu",""); end; elseif(norm_przed_lub_dyskusji=="Module")then local parametry_modul=require("Module:Parametry"); if(parametry_modul.CzyTak(frame.args["obsługiwane strony jako niebrudnopisowe jednostki programowe"]))then return "strona modułu";end; if((not parametry_modul.CzyTak(frame.args["obsługiwane brudnopisy jako normalne strony"]))and(mw.ustring.match(nazwa_jednostki,"^%s*[Bb]rudnopis/[^/]*/.*")))then if(parametry_modul.CzyTak(frame.args["obsługiwane opisy jako strony jednostek programowych"]) or parametry_modul.CzyTak(frame.args["obsługiwane jednostki jako nieopisowe strony"]))then return "strona brudnopisu modułu" else local pelna_nazwa_strony=(norm_przed_lub_dyskusji~="")and norm_przed_lub_dyskusji..":"..nazwa_jednostki or nazwa_jednostki; pelna_nazwa_strony=require("Module:Nazwy")["PEŁNANAZWASTRONY"]{[1]=pelna_nazwa_strony,["kod języka"]=kod_jezyka,["kod projektu"]=kod_projektu,}; local pelna_nazwa_strony_brudnopisu_opisu_modulu=require("Module:Techniczne")["PełnaNazwaOpisuModułu"](pelna_nazwa_strony); if(pelna_nazwa_strony==pelna_nazwa_strony_brudnopisu_opisu_modulu)then return "strona brudnopisu opisu modułu"; else return "strona brudnopisu modułu"; end; end; else if(parametry_modul.CzyTak(frame.args["obsługiwane opisy jako strony jednostek programowych"]) or parametry_modul.CzyTak(frame.args["obsługiwane jednostki jako nieopisowe strony"]))then return "strona modułu" else local pelna_nazwa_strony=(norm_przed_lub_dyskusji~="")and norm_przed_lub_dyskusji..":"..nazwa_jednostki or nazwa_jednostki; pelna_nazwa_strony=require("Module:Nazwy")["PEŁNANAZWASTRONY"]{[1]=pelna_nazwa_strony,["kod języka"]=kod_jezyka,["kod projektu"]=kod_projektu,}; local pelna_nazwa_opisu_modulu=require("Module:Techniczne")["PełnaNazwaOpisuModułu"](pelna_nazwa_strony); if(pelna_nazwa_strony==pelna_nazwa_opisu_modulu)then return "strona opisu modułu"; else return "strona modułu"; end; end; end; else return "inne"; end; end; return "inne"; end; local typ_jednostki=Typ_jednostki(); local function TempFunc(typ_jednostki) if( (kod_liczbowy_przestrzeni_nazw==2) or((kod_liczbowy_przestrzeni_nazw==0)and(p.Czy_dyskusja_typu_jednostki_z_frame_od_dyskusja_typu_jednostki(frame,i))) )then typ_jednostki,ile=mw.ustring.gsub(typ_jednostki,"^(%S+)(%s+)",function(strona,spacja) return strona.." dyskusji"..spacja; end); return typ_jednostki; end; return typ_jednostki; end; if(((analiza)or(nazwa_jednostki_podana))and(typ)and(typ~=""))then if(typ_jednostki==typ)then return TempFunc(typ_jednostki); elseif(nazwa_jednostki_podana)then return "(błąd parametrów pudełkowych)" else return "(błąd typu jednostki)"; end; end; return TempFunc(typ_jednostki); end; function p.Uzyskanie_nazw_jednostki(frame,kod_liczbowy_przestrzeni_nazw,i,numer_argorytmu,co_ma_liczyc) local nazwa_przestrzeni_fun,nazwa_jednostki_fun; if(kod_liczbowy_przestrzeni_nazw==0)then nazwa_przestrzeni_fun="Nazwa przestrzeni nazw"; nazwa_jednostki_fun="Nazwa jednostki"; elseif(kod_liczbowy_przestrzeni_nazw==1)then nazwa_przestrzeni_fun="Nazwa przedmiotowej przestrzeni nazw"; nazwa_jednostki_fun="Nazwa przedmiotowa jednostki"; elseif(kod_liczbowy_przestrzeni_nazw==2)then nazwa_przestrzeni_fun="Nazwa przestrzeni nazw dyskusji" nazwa_jednostki_fun="Nazwa dyskusji jednostki"; else nazwa_przestrzeni_fun="Nazwa przestrzeni nazw"; nazwa_jednostki_fun="Nazwa jednostki"; end; local pudelko_modul=require("Module:Pudełko"); if(not numer_argorytmu)then if((not i)or(i==0))then if((not co_ma_liczyc)or(co_ma_liczyc==0))then local nazwa_przestrzeni_nazw=pudelko_modul[nazwa_przestrzeni_fun](frame,false); local nazwa_jednostki=pudelko_modul["Nazwa jednostki"](frame); return nazwa_przestrzeni_nazw,nazwa_jednostki; elseif(co_ma_liczyc==1)then local nazwa_przestrzeni_nazw=pudelko_modul[nazwa_przestrzeni_fun](frame,false); return nazwa_przestrzeni_nazw; elseif(co_ma_liczyc==2)then return pudelko_modul["Nazwa jednostki"](frame); end; else if((not co_ma_liczyc)or(co_ma_liczyc==0))then local n=p.Nazwa_przestrzeni_nazw_dodatkowe(frame,i); local parametry_modul=require("Module:Parametry"); n=parametry_modul.CzyTak(n); local nazwa_przestrzeni_nazw=(n)and pudelko_modul[nazwa_przestrzeni_fun](frame,false,i) or pudelko_modul[nazwa_przestrzeni_fun.." 2"](frame,false,i); local nazwa_jednostki=(n)and pudelko_modul["Nazwa jednostki"](frame,i) or pudelko_modul[nazwa_jednostki_fun.." 2"](frame,i); return nazwa_przestrzeni_nazw,nazwa_jednostki; elseif(co_ma_liczyc==1)then local n=p.Nazwa_przestrzeni_nazw_dodatkowe(frame,i); local parametry_modul=require("Module:Parametry"); n=parametry_modul.CzyTak(n); local nazwa_przestrzeni_nazw=(n)and pudelko_modul[nazwa_przestrzeni_fun](frame,false,i) or pudelko_modul[nazwa_przestrzeni_fun.." 2"](frame,false,i); return nazwa_przestrzeni_nazw; elseif(co_ma_liczyc==2)then local n=p.Nazwa_przestrzeni_nazw_dodatkowe(frame,i); local parametry_modul=require("Module:Parametry"); n=parametry_modul.CzyTak(n); return (n)and pudelko_modul["Nazwa jednostki"](frame,i) or pudelko_modul[nazwa_jednostki_fun.." 2"](frame,i); end; end; else if(numer_argorytmu==0)then if((not co_ma_liczyc)or(co_ma_liczyc==0))then local nazwa_przestrzeni_nazw=pudelko_modul[nazwa_przestrzeni_fun](frame,false,i); local nazwa_jednostki=pudelko_modul["Nazwa jednostki"](frame,i); return nazwa_przestrzeni_nazw,nazwa_jednostki; elseif(co_ma_liczyc==1)then local nazwa_przestrzeni_nazw=pudelko_modul[nazwa_przestrzeni_fun](frame,false,i); return nazwa_przestrzeni_nazw; elseif(co_ma_liczyc==2)then return pudelko_modul["Nazwa jednostki"](frame,i); end; else if((not co_ma_liczyc)or(co_ma_liczyc==0))then local nazwa_przestrzeni_nazw=pudelko_modul[nazwa_przestrzeni_fun.." 2"](frame,false,i); local nazwa_jednostki=pudelko_modul[nazwa_jednostki_fun.." 2"](frame,i); return nazwa_przestrzeni_nazw,nazwa_jednostki; elseif(co_ma_liczyc==1)then local nazwa_przestrzeni_nazw=pudelko_modul[nazwa_przestrzeni_fun.." 2"](frame,false,i); return nazwa_przestrzeni_nazw; elseif(co_ma_liczyc==2)then return pudelko_modul[nazwa_jednostki_fun.." 2"](frame,i); end; end; end; end; function p.Nazwa_przestrzeni_nazw_dodatkowe(frame,numer_jednostki) local pf=frame.getParent and frame:getParent() or {args={}}; return frame.args["nazwa przestrzeni nazw "..tostring(numer_jednostki)] or pf.args["nazwa przestrzeni nazw "..tostring(numer_jednostki)] end; function p.Nazwa_jednostki(frame,i) local pf=frame.getParent and frame:getParent() or {args={}}; local nazwa_jednostki,liczba_numer_jednostki=p.Nazwy_przestrzeni_i_jednostki_podane_o_pewnym_numerze(frame,i,2); local kod_jezyka,kod_projektu=p.Wikikody_kontenera(frame,liczba_numer_jednostki); if(nazwa_jednostki)then nazwa_jednostki=mw.text.trim(nazwa_jednostki); nazwa_jednostki=mw.ustring.gsub(nazwa_jednostki,"^:",""); nazwa_jednostki=mw.ustring.gsub(nazwa_jednostki,"^([^#]*)#(.*)$","%1"); local parametry=mw.ustring.match(nazwa_jednostki,"^.*%?([^%?]+)$"); if(parametry and mw.ustring.match(parametry,"[^=]+=[^=]*"))then nazwa_jednostki=mw.ustring.gsub(nazwa_jednostki,"^(.*)%?([^%?]+)$","%1"); end; else local nazwy_modul=require("Module:Nazwy"); nazwa_jednostki=nazwy_modul["NAZWASTRONY"]{["kod języka"]=kod_jezyka,["kod projektu"]=kod_projektu,}; end; local parametry_modul=require("Module:Parametry"); nazwa_jednostki=parametry_modul["Odstępy"]{[1]=nazwa_jednostki,[2]="tak",}; return mw.getContentLanguage():ucfirst(nazwa_jednostki); end; function p.Nazwy_przestrzeni_i_jednostki_podane_o_pewnym_numerze(frame,i,co_podac) local pf=frame.getParent and frame:getParent() or {args={}}; local numer_jednostki=i or frame.args["numer jednostki"]; local liczba_numer_jednostki=tonumber(numer_jednostki) or 0; local nazwa_jednostki; local bool_numer_jednostki=(liczba_numer_jednostki~=0); local function Nazwa_jednostki() if bool_numer_jednostki then nazwa_jednostki=frame.args["nazwa jednostki "..liczba_numer_jednostki] or ((liczba_numer_jednostki==1)and(pf.args["cel"])) or pf.args[liczba_numer_jednostki]; else nazwa_jednostki=frame.args["nazwa jednostki"] or pf.args["nazwa jednostki"]; end; return nazwa_jednostki; end; local function Nazwa_przestrzeni_nazw() local nazwa_przestrzeni_nazw=bool_numer_jednostki and (frame.args["nazwa przestrzeni nazw i"] or pf.args["nazwa przestrzeni nazw i"] or frame.args["nazwa przestrzeni nazw "..liczba_numer_jednostki] or pf.args["nazwa przestrzeni nazw "..liczba_numer_jednostki]) or frame.args["nazwa przestrzeni nazw"] or pf.args["nazwa przestrzeni nazw"]; return nazwa_przestrzeni_nazw; end; if(not co_podac)then return Nazwa_przestrzeni_nazw(),Nazwa_jednostki(),liczba_numer_jednostki; elseif(co_podac==1)then return Nazwa_przestrzeni_nazw(),liczba_numer_jednostki; elseif(co_podac==2)then return Nazwa_jednostki(),liczba_numer_jednostki; else return Nazwa_przestrzeni_nazw(),Nazwa_jednostki(),liczba_numer_jednostki; end; end; function p.Jaka_nazwa_jednostki(frame,i,jaka) local nazwa_przestrzeni_nazw,nazwa_jednostki,liczba_numer_jednostki=p.Nazwy_przestrzeni_i_jednostki_podane_o_pewnym_numerze(frame,i); nazwa_przestrzeni_nazw=nazwa_przestrzeni_nazw or p.Nazwa_przestrzeni_nazw_uzyskana_z_typu_jednostki_z_frame(frame,liczba_numer_jednostki); ---- local nazwy_modul=require("Module:Nazwy"); nazwa_przestrzeni_nazw=nazwa_przestrzeni_nazw and mw.text.trim(nazwa_przestrzeni_nazw) or nazwy_modul["NAZWAPRZESTRZENI"](); if(nazwa_jednostki)then local html_modul=require("Module:Html"); nazwa_jednostki=html_modul["NazwaStronyAdresu"](nazwa_jednostki,true); else nazwa_jednostki=nazwy_modul["NAZWASTRONY"](); end; local kod_jezyka,kod_projektu=p.Wikikody_kontenera(frame,liczba_numer_jednostki); local wiki_modul=require("Module:Wiki"); local czy_biezaca=wiki_modul["CzyBieżącaWiki"]{["kod języka"]=kod_jezyka,["kod projektu"]=kod_projektu,}; if(jaka)then if(czy_biezaca)then local tab_parametry={nazwa=nazwa_przestrzeni_nazw,}; if(jaka=="przedmiotowa")then tab_parametry["przedmiotowa"]="tak";end; nazwa_przestrzeni_nazw=nazwy_modul.Np(tab_parametry); else local tab_parametry={nazwa=nazwa_przestrzeni_nazw,["kod języka"]=kod_jezyka,["kod projektu"]=kod_projektu,}; if(jaka=="przedmiotowa")then tab_parametry["przedmiotowa"]="tak";end; nazwa_przestrzeni_nazw=nazwy_modul.NpDane(tab_parametry); end; else if(czy_biezaca)then nazwa_przestrzeni_nazw=nazwy_modul.Np{nazwa=nazwa_przestrzeni_nazw}; else nazwa_przestrzeni_nazw=nazwy_modul.NpDane{nazwa=nazwa_przestrzeni_nazw,["kod języka"]=kod_jezyka,["kod projektu"]=kod_projektu,}; end; end; if(not mw.ustring.match(nazwa_jednostki,"^:"))then if(nazwa_przestrzeni_nazw~="")then if((not typ)or(typ=="przedmiotowa"))then if(czy_biezaca)then local nazwy_np_modul=mw.loadData("Module:Nazwy/Np"); if(nazwa_przestrzeni_nazw==nazwy_np_modul.Template)then local nazwa_przestrzeni_nazw_d=nazwy_modul["NAZWAPRZESTRZENI"](nazwa_jednostki); if(nazwa_przestrzeni_nazw_d==nazwy_np_modul.Template)then return nazwy_modul["NAZWASTRONY"](nazwa_jednostki); end; elseif(nazwa_przestrzeni_nazw==nazwy_np_modul.Module)then local nazwa_przestrzeni_nazw_d=nazwy_modul["NAZWAPRZESTRZENI"](nazwa_jednostki); if(nazwa_przestrzeni_nazw_d==nazwy_np_modul.Module)then return nazwy_modul["NAZWASTRONY"](nazwa_jednostki); end; end; else local template_prze=nazwy_modul.NpDane{nazwa="Template",["kod języka"]=kod_jezyka,["kod projektu"]=kod_projektu,}; local module_prze=nazwy_modul.NpDane{nazwa="Module",["kod języka"]=kod_jezyka,["kod projektu"]=kod_projektu,}; if(nazwa_przestrzeni_nazw==template_prze)then local nazwa_przestrzeni_nazw_d=nazwy_modul["NAZWAPRZESTRZENI"]{[1]=nazwa_jednostki,["kod języka"]=kod_jezyka,["kod projektu"]=kod_projektu,}; if(nazwa_przestrzeni_nazw_d==template_prze)then return nazwy_modul["NAZWASTRONY"]{[1]=nazwa_jednostki,["kod języka"]=kod_jezyka,["kod projektu"]=kod_projektu,}; end; elseif(nazwa_przestrzeni_nazw==module_prze)then local nazwa_przestrzeni_nazw_d=nazwy_modul["NAZWAPRZESTRZENI"]{[1]=nazwa_jednostki,["kod języka"]=kod_jezyka,["kod projektu"]=kod_projektu,}; if(nazwa_przestrzeni_nazw_d==module_prze)then return nazwy_modul["NAZWASTRONY"]{[1]=nazwa_jednostki,["kod języka"]=kod_jezyka,["kod projektu"]=kod_projektu,}; end; end; end; end; local parametry_modul=require("Module:Parametry"); nazwa_jednostki=parametry_modul["Odstępy"]{[1]=nazwa_jednostki,[2]="tak",}; return mw.getContentLanguage():ucfirst(nazwa_jednostki); else return nazwy_modul["NAZWASTRONY"]{[1]=nazwa_jednostki,["kod języka"]=kod_jezyka,["kod projektu"]=kod_projektu,}; end; else return nazwy_modul["NAZWASTRONY"]{[1]=nazwa_jednostki,["kod języka"]=kod_jezyka,["kod projektu"]=kod_projektu,}; end; end; function p.Czy_przestrzen_nazw_jest_obslugiwana(frame,jakas_przestrzen_nazw,kod_jezyka,kod_projektu) local nazwy_modul=require("Module:Nazwy"); local parametry_modul=require("Module:Parametry"); local wiki_modul=require("Module:Wiki"); local czy_biezaca=wiki_modul["CzyBieżącaWiki"]{["kod języka"]=kod_jezyka,["kod projektu"]=kod_projektu,}; if(czy_biezaca)then jakas_przestrzen_nazw=nazwy_modul.Np{nazwa=jakas_przestrzen_nazw}; else jakas_przestrzen_nazw=nazwy_modul.NpDane{nazwa=jakas_przestrzen_nazw,["kod języka"]=kod_jezyka,["kod projektu"]=kod_projektu,}; end; local function nazwa_przestrzeni_nazw_fun(nazwa_przestrzeni_nazw_iter) if(czy_biezaca)then nazwa_przestrzeni_nazw_iter=nazwy_modul.Np{nazwa=nazwa_przestrzeni_nazw_iter}; else nazwa_przestrzeni_nazw_iter=nazwy_modul.NpDane{nazwa=nazwa_przestrzeni_nazw_iter,["kod języka"]=kod_jezyka,["kod projektu"]=kod_projektu,}; end; if(jakas_przestrzen_nazw==nazwa_przestrzeni_nazw_iter)then return true; end; return false; end; for licznik,nazwa_przestrzeni_nazw in pairs(frame.args)do if(type(licznik)=="number")then local nazwa_przestrzeni_nazw_element,klucze_element=mw.ustring.match(nazwa_przestrzeni_nazw,"^%s*([%w%s]*)%s*:%s*(.-)%s*"); if(nazwa_przestrzeni_nazw_element and klucze_element)then local tab_klucze=mw.text.split(klucze_element,"%s*,%s*",false); local wiki_modul=require("Module:Wiki"); for _,klucz_element in ipairs(tab_klucze)do local kod_jezyka_obslugiwane,kod_projektu_obslugiwane=wiki_modul.KluczProjektu(klucz_element); if(kod_jezyka_obslugiwane==kod_jezyka and kod_projektu_obslugiwane==kod_projektu)then local wynik=nazwa_przestrzeni_nazw_fun(nazwa_przestrzeni_nazw_element); if(wynik)then return true;end; end; end; else local wynik=nazwa_przestrzeni_nazw_fun(nazwa_przestrzeni_nazw); if(wynik)then return true;end; end; end; end; return false; end; function p.Analiza_interwiki_czy_projekt_aktualny(frame,czy_jezyk,czy_projekt) local parametry_modul=require("Module:Parametry"); local p=parametry_modul.PobierzFrameEwentualnieParent(frame); local pudelko_modul=require("Module:Pudełko"); local wiki_modul=require("Module:Wiki"); local jezyk_biezacy=czy_jezyk and pudelko_modul["Kod języka tego projektu"](); local projekt_biezacy=czy_projekt and pudelko_modul["Kod projektu tego projektu"](); for i,_ in pairs(p.args)do if(type(i)=="number")then local klucz_projektu=pudelko_modul["Klucz projektu"](frame,i); local kod_jezyka=pudelko_modul["Kod języka"](frame,i); local kod_projektu=pudelko_modul["kod projektu"](frame,i); local jezyk,projekt=wiki_modul.KodyWiki(klucz_projektu,kod_jezyka,kod_projektu); if((czy_jezyk and (jezyk~=jezyk_biezacy))or(czy_projekt and(projekt~=projekt_biezacy)))then return "tak"; end; end; end; return; end; return p; byzgs2c02i20ww52z8crschen4i7gyk 540435 540434 2026-04-24T02:24:31Z Persino 2851 540435 Scribunto text/plain local p={}; function p.Nazwa_strony_bazowej_projektu_z_wikidanych(kod_jezyka,kod_projektu) local strona=require("Module:Pudełko")["Strona główna tego projektu"](); local odpowiednik_strony=require("Module:Wiki").WikidaneOdpowiednikStrony{["nazwa strony"]=strona,["kod języka"]=kod_jezyka,["kod projektu"]=kod_projektu}; if(odpowiednik_strony)then local nazwy_modul=require("Module:Nazwy"); return nazwy_modul["PEŁNANAZWASTRONY"]{[1]=odpowiednik_strony,["kod języka"]=kod_jezyka,["kod projektu"]=kod_projektu,}; else local pudelko_modul=require("Module:Pudełko"); if((kod_jezyka==pudelko_modul["Kod języka tego projektu"]())and(kod_projektu==pudelko_modul["Kod projektu tego projektu"]()))then return strona; else local wiki_interwiki_modul=mw.loadData("Module:Wiki/interwiki"); local czy_w_wikidanych=wiki_interwiki_modul.tablica_kody_projektu_wikidane.lingwistyczne[kod_projektu] or wiki_interwiki_modul.tablica_kody_projektu_wikidane.specjalistyczne[kod_projektu]; return czy_w_wikidanych and "Main Page" or nil; end; end; end; function p.Nazwa_strony_bazowej_dla_dzieci_z_wikidanych(kod_jezyka) local strona=require("Module:Pudełko")["Strona główna dla dzieci tego projektu"](); local pudelko_modul=require("Module:Pudełko"); local kod_jezyka_tego_projektu=pudelko_modul["Kod języka tego projektu"](); if(kod_jezyka==kod_jezyka_tego_projektu)then return strona;end; local kod_projektu_tego_projektu=pudelko_modul["Kod projektu tego projektu"](); local odpowiednik_strony=require("Module:Wiki").WikidaneOdpowiednikStrony{["nazwa strony"]=strona,["kod języka"]=kod_jezyka,["kod projektu"]=kod_projektu_tego_projektu}; if(odpowiednik_strony)then local nazwy_modul=require("Module:Nazwy"); return nazwy_modul["PEŁNANAZWASTRONY"]{[1]=odpowiednik_strony,["kod języka"]=kod_jezyka,["kod projektu"]=kod_projektu_tego_projektu,}; else return "Wikijunior"; end; end; function p.Nazwa_strony_bazowej_projektu_ze_zmiennej(frame,i,kod_jezyka,kod_projektu) local pf=frame.getParent and frame:getParent() or {args={}}; local strona_glowna_projektu; if(i~=0)then local pudelko_modul=require("Module:Pudełko"); local kod_jezyka_tego_projektu=pudelko_modul["Kod języka tego projektu"](); local kod_projektu_tego_projektu=pudelko_modul["Kod projektu tego projektu"](); if(kod_jezyka==kod_jezyka_tego_projektu)and(kod_projektu==kod_projektu_tego_projektu)then strona_glowna_projektu=frame.args["strona główna projektu"] or pf.args["strona główna projektu"] else strona_glowna_projektu=(frame.args["strona główna projektu "..i] or pf.args["strona główna projektu "..i]) end; else strona_glowna_projektu=frame.args["strona główna projektu"] or pf.args["strona główna projektu"] end; local parametry_modul=require("Module:Parametry"); return (parametry_modul.CzyTak(strona_glowna_projektu))and require("Module:Nazwy")["PEŁNANAZWASTRONY"]{[1]=strona_glowna_projektu,["kod języka"]=kod_jezyka,["kod projektu"]=kod_projektu,} or (strona_glowna_projektu and "" or nil); end; function p.Nazwa_strony_bazowej_dla_dzieci_ze_zmiennej(frame,i,kod_jezyka) local pf=frame.getParent and frame:getParent() or {args={}}; local pudelko_modul=require("Module:Pudełko"); local strona_glowna_dla_dzieci; if(i~=0)then local kod_jezyka_tego_projektu=pudelko_modul["Kod języka tego projektu"](); if(kod_jezyka==kod_jezyka_tego_projektu)then strona_glowna_dla_dzieci=frame.args["strona główna dla dzieci"] or pf.args["strona główna dla dzieci"] else strona_glowna_dla_dzieci=(frame.args["strona główna dla dzieci "..i] or pf.args["strona główna dla dzieci "..i]) end; else strona_glowna_dla_dzieci=frame.args["strona główna dla dzieci"] or pf.args["strona główna dla dzieci"] end; local kod_projektu_tego_projektu=pudelko_modul["Kod projektu tego projektu"](); local parametry_modul=require("Module:Parametry"); return (parametry_modul.CzyTak(strona_glowna_dla_dzieci))and require("Module:Nazwy")["PEŁNANAZWASTRONY"]{[1]=strona_glowna_dla_dzieci,["kod języka"]=kod_jezyka,["kod projektu"]=kod_projektu_tego_projektu,} or (strona_glowna_dla_dzieci and "" or nil); end; function p.Normalna_przedmiotowa_lub_dyskusji_nazwa_przestrzeni_nazw(nazwa_przestrzeni_nazw, normmalna_przedmiotwa_dyskusji,kod_jezyka,kod_projektu) local nazwa_przestrzeni_nazw_blad; local wiki_modul=require("Module:Wiki"); local nazwy_modul=require("Module:Nazwy"); local czy_biezaca=wiki_modul["CzyBieżącaWiki"]{["kod języka"]=kod_jezyka,["kod projektu"]=kod_projektu,}; if(normmalna_przedmiotwa_dyskusji==0)then if(czy_biezaca)then nazwa_przestrzeni_nazw_blad=nazwy_modul.Np{nazwa=nazwa_przestrzeni_nazw,["kanoniczna"]="tak",["nazwij projektem"]="tak",["nazwij dyskusją projektu"]="tak",["istnieje"]="tak",["wynik błędu nietekstowy"]="tak",}; else nazwa_przestrzeni_nazw_blad=nazwy_modul.NpDane{nazwa=nazwa_przestrzeni_nazw,["kanoniczna"]="tak",["nazwij projektem"]="tak",["nazwij dyskusją projektu"]="tak",["kod języka"]=kod_jezyka,["kod projektu"]=kod_projektu,["istnieje"]="tak",["wynik błędu nietekstowy"]="tak",}; end; elseif(normmalna_przedmiotwa_dyskusji==1)then if(czy_biezaca)then nazwa_przestrzeni_nazw_blad=nazwy_modul.Np{nazwa=nazwa_przestrzeni_nazw, przedmiotowa="tak",["kanoniczna"]="tak",["nazwij projektem"]="tak",["nazwij dyskusją projektu"]="tak",["istnieje"]="tak",["wynik błędu nietekstowy"]="tak",}; else nazwa_przestrzeni_nazw_blad=nazwy_modul.NpDane{nazwa=nazwa_przestrzeni_nazw, przedmiotowa="tak",["kanoniczna"]="tak",["nazwij projektem"]="tak",["nazwij dyskusją projektu"]="tak",["kod języka"]=kod_jezyka,["kod projektu"]=kod_projektu,["istnieje"]="tak",["wynik błędu nietekstowy"]="tak",}; end; elseif(normmalna_przedmiotwa_dyskusji==2)then if(czy_biezaca)then nazwa_przestrzeni_nazw_blad=nazwy_modul.Np{nazwa=nazwa_przestrzeni_nazw, dyskusja="tak",["kanoniczna"]="tak",["nazwij projektem"]="tak",["nazwij dyskusją projektu"]="tak",["istnieje"]="tak",["wynik błędu nietekstowy"]="tak",}; else nazwa_przestrzeni_nazw_blad=nazwy_modul.NpDane{nazwa=nazwa_przestrzeni_nazw, dyskusja="tak",["kanoniczna"]="tak",["nazwij projektem"]="tak",["nazwij dyskusją projektu"]="tak",["kod języka"]=kod_jezyka,["kod projektu"]=kod_projektu,["istnieje"]="tak",["wynik błędu nietekstowy"]="tak",}; end; else if(czy_biezaca)then nazwa_przestrzeni_nazw_blad=nazwy_modul.Np{nazwa=nazwa_przestrzeni_nazw,["kanoniczna"]="tak",["nazwij projektem"]="tak",["nazwij dyskusją projektu"]="tak",["istnieje"]="tak",["wynik błędu nietekstowy"]="tak",}; else nazwa_przestrzeni_nazw_blad=nazwy_modul.NpDane{nazwa=nazwa_przestrzeni_nazw,["kanoniczna"]="tak",["nazwij projektem"]="tak",["nazwij dyskusją projektu"]="tak",["kod języka"]=kod_jezyka,["kod projektu"]=kod_projektu,["istnieje"]="tak",["wynik błędu nietekstowy"]="tak",}; end; end; return nazwa_przestrzeni_nazw_blad end; function p.Nazwa_przestrzeni_nazw(frame,kod_liczbowy_przestrzeni_nazw,czy_uwzglednic_alternatywna_nazwe,numer_jednostki) local pf=frame.getParent and frame:getParent() or {args={}}; local nazwa_przestrzeni_nazw=p.Nazwy_przestrzeni_i_jednostki_podane_o_pewnym_numerze(frame,numer_jednostki,1) or p.Nazwa_przestrzeni_nazw_uzyskana_z_typu_jednostki_z_frame(frame,numer_jednostki); local nazwy_modul=require("Module:Nazwy"); local wiki_modul=require("Module:Wiki"); local kod_jezyka,kod_projektu=p.Wikikody_kontenera(frame,numer_jednostki); local czy_biezaca_wiki=wiki_modul["CzyBieżącaWiki"]{["kod języka"]=kod_jezyka,["kod projektu"]=kod_projektu,}; local czy_blad_nazwy_przestrzeni_nazw; local typ; if(kod_liczbowy_przestrzeni_nazw==1)then typ="przedmiotowa"; if(czy_biezaca_wiki)then czy_blad_nazwy_przestrzeni_nazw=(not nazwa_przestrzeni_nazw)and nazwy_modul["PRZEDMIOTOWAPRZESTRZEŃ"]() or nazwy_modul.Np{nazwa=nazwa_przestrzeni_nazw,przedmiotowa="tak",["istnieje"]="tak",["wynik błędu nietekstowy"]="tak",}; else czy_blad_nazwy_przestrzeni_nazw=(not nazwa_przestrzeni_nazw)and nazwy_modul["PRZEDMIOTOWAPRZESTRZEŃ"]{["kod języka"]=kod_jezyka,["kod projektu"]=kod_projektu,} or nazwy_modul.NpDane{nazwa=nazwa_przestrzeni_nazw,przedmiotowa="tak",["kod języka"]=kod_jezyka,["kod projektu"]=kod_projektu,["istnieje"]="tak",["wynik błędu nietekstowy"]="tak",}; end; elseif(kod_liczbowy_przestrzeni_nazw==2)then if(czy_biezaca_wiki)then typ="dyskusja"; czy_blad_nazwy_przestrzeni_nazw=(not nazwa_przestrzeni_nazw)and nazwy_modul["PRZESTRZEŃDYSKUSJI"]() or nazwy_modul.Np{nazwa=nazwa_przestrzeni_nazw,dyskusja="tak",["istnieje"]="tak",["wynik błędu nietekstowy"]="tak",}; else czy_blad_nazwy_przestrzeni_nazw=(not nazwa_przestrzeni_nazw)and nazwy_modul["PRZESTRZEŃDYSKUSJI"]{["kod języka"]=kod_jezyka,["kod projektu"]=kod_projektu,} or nazwy_modul.NpDane{nazwa=nazwa_przestrzeni_nazw,dyskusja="tak",["kod języka"]=kod_jezyka,["kod projektu"]=kod_projektu,["istnieje"]="tak",["wynik błędu nietekstowy"]="tak",}; end; else if(czy_biezaca_wiki)then czy_blad_nazwy_przestrzeni_nazw=(not nazwa_przestrzeni_nazw)and nazwy_modul["NAZWAPRZESTRZENI"]() or nazwy_modul.Np{nazwa=nazwa_przestrzeni_nazw,["istnieje"]="tak",["wynik błędu nietekstowy"]="tak",}; else czy_blad_nazwy_przestrzeni_nazw=(not nazwa_przestrzeni_nazw)and nazwy_modul["NAZWAPRZESTRZENI"]{["kod języka"]=kod_jezyka,["kod projektu"]=kod_projektu,} or nazwy_modul.NpDane{nazwa=nazwa_przestrzeni_nazw,["kod języka"]=kod_jezyka, ["kod projektu"]=kod_projektu,["istnieje"]="tak",["wynik błędu nietekstowy"]="tak",}; end; end; if(czy_blad_nazwy_przestrzeni_nazw)then return czy_blad_nazwy_przestrzeni_nazw; else if(((czy_uwzglednic_alternatywna_nazwe==nil)and true or czy_uwzglednic_alternatywna_nazwe) and frame.args[1])then local nazwa_przestrzeni_nazw_alternatywnej=mw.text.trim(frame.args[1]); if(mw.ustring.match(nazwa_przestrzeni_nazw_alternatywnej,"^[%w%s_]*$"))then local czy_blad_nazwa_przestrzeni_nazw_alternatywnej; if(czy_biezaca_wiki)then local tab_parametry={nazwa=nazwa_przestrzeni_nazw_alternatywnej,["istnieje"]="tak",["wynik błędu nietekstowy"]="tak",}; if(typ)then tab_parametry[typ]="tak";end; czy_blad_nazwa_przestrzeni_nazw_alternatywnej=nazwy_modul.Np(tab_parametry); else local tab_parametry={nazwa=nazwa_przestrzeni_nazw_alternatywnej,["kod języka"]=kod_jezyka,["kod projektu"]=kod_projektu,["istnieje"]="tak",["wynik błędu nietekstowy"]="tak",}; if(typ)then tab_parametry[typ]="tak";end; czy_blad_nazwa_przestrzeni_nazw_alternatywnej=nazwy_modul.NpDane(tab_parametry); end; return czy_blad_nazwa_przestrzeni_nazw_alternatywnej or "(błąd)"; else return "(błąd)"; end; else local parametry_modul=require("Module:Parametry"); nazwa_przestrzeni_nazw=parametry_modul["Odstępy"]{[1]=nazwa_przestrzeni_nazw,[2]="tak",}; if(mw.ustring.match(nazwa_przestrzeni_nazw,"^[%w%s_]*$"))then return nazwa_przestrzeni_nazw; else return "(błąd)"; end; end; end; end; function p.Nazwa_przestrzeni_nazw_2(frame,czy_uwzglednic_alternatywna_nazwe,i) local nazwa_przestrzeni_nazw,nazwa_jednostki,liczba_numer_jednostki=p.Nazwy_przestrzeni_i_jednostki_podane_o_pewnym_numerze(frame,i); nazwa_przestrzeni_nazw=nazwa_przestrzeni_nazw or p.Nazwa_przestrzeni_nazw_uzyskana_z_typu_jednostki_z_frame(frame,liczba_numer_jednostki); local nazwy_modul=require("Module:Nazwy"); local kod_jezyka,kod_projektu=p.Wikikody_kontenera(frame,liczba_numer_jednostki); local wiki_modul=require("Module:Wiki"); local czy_biezaca_wiki=wiki_modul["CzyBieżącaWiki"]{["kod języka"]=kod_jezyka,["kod projektu"]=kod_projektu,}; local nazwa_przestrzeni_nazw_blad; local parametry_modul=require("Module:Parametry"); if(czy_biezaca_wiki)then nazwa_przestrzeni_nazw=nazwa_przestrzeni_nazw and mw.text.trim(nazwa_przestrzeni_nazw) or nazwy_modul["NAZWAPRZESTRZENI"](); nazwa_przestrzeni_nazw_blad=require("Module:Nazwy").Np{nazwa=nazwa_przestrzeni_nazw,["istnieje"]="tak",["wynik błędu nietekstowy"]="tak",}; if(nazwa_jednostki)then nazwa_jednostki=parametry_modul["Odstępy"]{[1]=nazwa_jednostki,[2]="tak",}; nazwa_jednostki=mw.ustring.gsub(nazwa_jednostki,"^([^#]*)#(.*)$","%1"); local parametry=mw.ustring.match(nazwa_jednostki,"^.*%?([^%?]+)$"); if(parametry and mw.ustring.match(parametry,"[^=]+=[^=]*"))then nazwa_jednostki=mw.ustring.gsub(nazwa_jednostki,"^(.*)%?([^%?]+)$","%1"); end; else nazwa_jednostki=nazwy_modul["NAZWASTRONY"](); end; else nazwa_przestrzeni_nazw=nazwa_przestrzeni_nazw and mw.text.trim(nazwa_przestrzeni_nazw) or nazwy_modul["NAZWAPRZESTRZENI"]{["kod języka"]=kod_jezyka,["kod projektu"]=kod_projektu,}; nazwa_przestrzeni_nazw_blad=require("Module:Nazwy").NpDane{nazwa=nazwa_przestrzeni_nazw,["kod języka"]=kod_jezyka,["kod projektu"]=kod_projektu,["istnieje"]="tak",["wynik błędu nietekstowy"]="tak",}; if(nazwa_jednostki)then local html_modul=require("Module:Html"); nazwa_jednostki=html_modul["NazwaStronyAdresu"](nazwa_jednostki,true); else nazwa_jednostki=nazwy_modul["NAZWASTRONY"]{["kod języka"]=kod_jezyka,["kod projektu"]=kod_projektu,}; end; end; nazwa_przestrzeni_nazw=nazwa_przestrzeni_nazw_blad or nazwa_przestrzeni_nazw; if(not mw.ustring.match(nazwa_jednostki,"^:"))then if(nazwa_przestrzeni_nazw~="")then if(czy_biezaca_wiki)then local nazwy_np_modul=mw.loadData("Module:Nazwy/Np"); if(nazwa_przestrzeni_nazw==nazwy_np_modul.Template)then local nazwa_przestrzeni_nazw_d=require("Module:Nazwy")["NAZWAPRZESTRZENI"](nazwa_jednostki); if(nazwa_przestrzeni_nazw_d==nazwy_np_modul.Template)then nazwa_przestrzeni_nazw=nazwy_np_modul.Template; end; elseif(nazwa_przestrzeni_nazw==nazwy_np_modul.Module)then local nazwa_przestrzeni_nazw_d=require("Module:Nazwy")["NAZWAPRZESTRZENI"](nazwa_jednostki); if(nazwa_przestrzeni_nazw_d==nazwy_np_modul.Module)then nazwa_przestrzeni_nazw=nazwy_np_modul.Module; end; end; else local template_prze=nazwy_modul.NpDane{nazwa="Template",["kod języka"]=kod_jezyka,["kod projektu"]=kod_projektu,}; local module_prze=nazwy_modul.NpDane{nazwa="Module",["kod języka"]=kod_jezyka,["kod projektu"]=kod_projektu,}; if(nazwa_przestrzeni_nazw==template_prze)then local nazwa_przestrzeni_nazw_d=nazwy_modul["NAZWAPRZESTRZENI"]{[1]=nazwa_jednostki,["kod języka"]=kod_jezyka,["kod projektu"]=kod_projektu,}; if(nazwa_przestrzeni_nazw_d==template_prze)then nazwa_przestrzeni_nazw=template_prze; end; elseif(nazwa_przestrzeni_nazw==module_prze)then local nazwa_przestrzeni_nazw_d=nazwy_modul["NAZWAPRZESTRZENI"]{[1]=nazwa_jednostki,["kod języka"]=kod_jezyka,["kod projektu"]=kod_projektu,}; if(nazwa_przestrzeni_nazw_d==module_prze)then nazwa_przestrzeni_nazw=module_prze; end; end; end; if(not nazwa_przestrzeni_nazw_blad)then if(((czy_uwzglednic_alternatywna_nazwe==nil)and true or czy_uwzglednic_alternatywna_nazwe) and frame.args[1])then local wytrimowana_nazwa_przestrzeni_nazw=mw.text.trim(frame.args[1]); if(mw.ustring.match(wytrimowana_nazwa_przestrzeni_nazw,"^[%w%s_]*$"))then if(czy_biezaca_wiki)then local nazwy_modul=require("Module:Nazwy"); local czy_blad_nazwy_przestrzeni_nazw=nazwy_modul.Np{nazwa=wytrimowana_nazwa_przestrzeni_nazw,["istnieje"]="tak",["wynik błędu nietekstowy"]="tak",} return czy_blad_nazwy_przestrzeni_nazw or "(błąd)"; else local nazwy_modul=require("Module:Nazwy"); local nazwa_przestrzeni_nazw_blad2=nazwy_modul.NpDane{nazwa=wytrimowana_nazwa_przestrzeni_nazw,["kod języka"]=kod_jezyka,["kod projektu"]=kod_projektu,["istnieje"]="tak",["wynik błędu nietekstowy"]="tak",}; return nazwa_przestrzeni_nazw_blad2 or "(błąd)"; end; else return "(błąd)"; end; else local wytrimowana_nazwa_przestrzeni_nazw=mw.text.trim(nazwa_przestrzeni_nazw); if(mw.ustring.match(wytrimowana_nazwa_przestrzeni_nazw,"^[%w%s_]*$"))then return wytrimowana_nazwa_przestrzeni_nazw; else return "(błąd)"; end; end; else return nazwa_przestrzeni_nazw; end; else return require("Module:Nazwy")["NAZWAPRZESTRZENI"]{[1]=nazwa_jednostki,["kod języka"]=kod_jezyka,["kod projektu"]=kod_projektu,}; end; else return require("Module:Nazwy")["NAZWAPRZESTRZENI"]{[1]=nazwa_jednostki,["kod języka"]=kod_jezyka,["kod projektu"]=kod_projektu,}; end; end; function p.Nazwa_przestrzeni_nazw_przedmiotowa_dyskusji_2(frame,czy_uwzglednic_alternatywna_nazwe,i,typ) local numer_jednostki=i or frame.args["numer jednostki"]; local liczba_numer_jednostki=((numer_jednostki)and(tonumber(numer_jednostki))or 0); local pudelko_modul=require("Module:Pudełko"); local tab_nazwa={ ["przedmiotowa"]="Nazwa przedmiotowej przestrzeni nazw", ["dyskusja"]="Nazwa przestrzeni nazw", }; local nazwa_przestrzeni_nazw=pudelko_modul[tab_nazwa[typ]](frame,czy_uwzglednic_alternatywna_nazwe,liczba_numer_jednostki); local nazwy_modul=require("Module:Nazwy"); if(nazwa_przestrzeni_nazw=="")then local nazwa_jednostki=pudelko_modul["Nazwa jednostki"](frame,liczba_numer_jednostki); local kod_jezyka,kod_projektu=p.Wikikody_kontenera(frame,liczba_numer_jednostki); local tab_nazwa={ ["przedmiotowa"]="PRZEDMIOTOWAPRZESTRZEŃ", ["dyskusja"]="PRZESTRZEŃDYSKUSJI", }; nazwa_przestrzeni_nazw=nazwy_modul[tab_nazwa[typ]]{nazwa=nazwa_jednostki,["kod języka"]=kod_jezyka,["kod projektu"]=kod_projektu,}; else if(typ=="dyskusja")then local wiki_modul=require("Module:Wiki"); local czy_biezaca=wiki_modul["CzyBieżącaWiki"]{["kod języka"]=kod_jezyka,["kod projektu"]=kod_projektu,}; if(czy_biezaca)then nazwa_przestrzeni_nazw=nazwy_modul.Np{[typ]="tak",nazwa=nazwa_przestrzeni_nazw}; else nazwa_przestrzeni_nazw=nazwy_modul.NpDane{[typ]="tak",nazwa=nazwa_przestrzeni_nazw,["kod języka"]=kod_jezyka,["kod projektu"]=kod_projektu,}; end; end; end; return nazwa_przestrzeni_nazw; end; function p.Kod_jezyka(frame,i,wartosc_domyslna) local pudelko_modul=require("Module:Pudełko"); if(not i)then return pudelko_modul["Kod języka tego projektu"]();end; local pf=frame.getParent and frame:getParent() or {args={}}; if(i==0)then return pudelko_modul["Kod języka tego projektu"](); elseif(i==1)then local parametry_modul=require("Module:Parametry"); local kod_jezyka=frame.args["kod języka"] or frame.args["kod języka 1"] or pf.args["kod języka"] or pf.args["kod języka 1"] return ((kod_jezyka)and(kod_jezyka~=""))and mw.text.trim(kod_jezyka) or ((parametry_modul.CzyTak(wartosc_domyslna))and wartosc_domyslna or nil); elseif(i>1)then local parametry_modul=require("Module:Parametry"); local kod_jezyka=frame.args["kod języka "..i] or pf.args["kod języka "..i] return ((kod_jezyka)and(kod_jezyka~=""))and mw.text.trim(kod_jezyka) or ((parametry_modul.CzyTak(wartosc_domyslna))and wartosc_domyslna or nil); end; end function p.Kod_projektu(frame,i,wartosc_domyslna) local pudelko_modul=require("Module:Pudełko"); if(not i)then return pudelko_modul["Kod projektu tego projektu"]();end; local pf=frame.getParent and frame:getParent() or {args={}}; if(i==0)then return pudelko_modul["Kod projektu tego projektu"](); elseif(i==1)then local parametry_modul=require("Module:Parametry"); local kod_projektu=frame.args["kod projektu"] or frame.args["kod projektu 1"] or pf.args["kod projektu"] or pf.args["kod projektu 1"] return ((kod_projektu)and(kod_projektu~=""))and mw.text.trim(kod_projektu) or ((parametry_modul.CzyTak(wartosc_domyslna))and wartosc_domyslna or nil); elseif(i>1)then local parametry_modul=require("Module:Parametry"); local kod_projektu=frame.args["kod projektu "..i] or pf.args["kod projektu "..i] return ((kod_projektu)and(kod_projektu~=""))and mw.text.trim(kod_projektu) or ((parametry_modul.CzyTak(wartosc_domyslna))and wartosc_domyslna or nil); end; end function p.Klucz_projektu(frame,i,wartosc_domyslna_jezyka,wartosc_domyslna_projektu) local pf=frame.getParent and frame:getParent() or {args={}}; local klucz_projektu; local function domyslne_klucz(klucz_projektu) local parametry_modul=require("Module:Parametry"); return ((klucz_projektu)and(klucz_projektu~=""))and mw.text.trim(klucz_projektu)or((parametry_modul.CzyTak(wartosc_domyslna_jezyka)and(parametry_modul.CzyTak(wartosc_domyslna_projektu)))and (wartosc_domyslna_jezyka..":" ..wartosc_domyslna_projektu)or(parametry_modul.CzyTak(wartosc_domyslna_jezyka) and wartosc_domyslna_jezyka or (parametry_modul.CzyTak(wartosc_domyslna_projektu) and wartosc_domyslna_projektu or nil))); end; if(i==0)then return nil; elseif(i==1)then local klucz_projektu=frame.args["klucz projektu"] or frame.args["klucz projektu 1"] or pf.args["klucz projektu"] or pf.args["klucz projektu 1"]; return domyslne_klucz(klucz_projektu); elseif(i>1)then local klucz_projektu=frame.args["klucz projektu "..i] or pf.args["klucz projektu "..i]; return domyslne_klucz(klucz_projektu); end; end; function p.Wikikody_kontenera(frame,i,wartosc_domyslna_jezyka,wartosc_domyslna_projektu) local wiki_modul=require("Module:Wiki"); local kod_jezyka,kod_projektu=wiki_modul.KodyWiki(p.Klucz_projektu(frame,i,wartosc_domyslna_jezyka,wartosc_domyslna_projektu),p.Kod_jezyka(frame,i,wartosc_domyslna_jezyka),p.Kod_projektu(frame,i,wartosc_domyslna_projektu)); return kod_jezyka,kod_projektu; end; function p.Nazwa_przestrzeni_nazw_od_typu_jednostki(typ,args,bez_analizy) if(not bez_analizy)then local parametry_modul=require("Module:Parametry"); if((((not parametry_modul.CzyTak(args["obsługiwane jednostki jako nieopisowe strony"]))and((typ=="artykuł")or(typ=="podręcznik")))or (typ=="artykuł")))then return ""; elseif(((not parametry_modul.CzyTak(args["obsługiwane jednostki jako nieopisowe strony"]))and((typ=="artykuł dla dzieci")or(typ=="podręcznik dla dzieci")))or(typ=="artykuł dla dzieci"))then return "Wikijunior"; elseif((not parametry_modul.CzyTak(args["obsługiwane brudnopisy jako normalne strony"])) and(((not parametry_modul.CzyTak(args["obsługiwane jednostki jako nieopisowe strony"]))and(parametry_modul.CzyTak(args["obsługiwane jednostki brudnopisu projektu"])and (typ=="podręcznik brudnopisu projektu" or typ=="artykuł brudnopisu projektu")or (typ=="jednostka brudnopisu projektu")) or (typ=="strona brudnopisu projektu"))or(typ=="strona projektu"))or (typ=="strona projektu"))then return "Project"; elseif((parametry_modul.CzyTak(args["obsługiwane strony jako niebrudnopisowe jednostki programowe"]))and (typ=="strona szablonu") or(not parametry_modul.CzyTak(args["obsługiwane brudnopisy jako normalne strony"]) and((not parametry_modul.CzyTak(args["obsługiwane opisy jako strony jednostek programowych"]) and not parametry_modul.CzyTak(args["obsługiwane jednostki jako nieopisowe strony"]) and not parametry_modul.CzyTak(args["obsługiwane nieudokumentowane szablony jako szablony"])) and((typ=="strona brudnopisu szablonu")or(typ=="strona brudnopisu opisu szablonu"))or(typ=="strona brudnopisu szablonu")) or((not parametry_modul.CzyTak(args["obsługiwane opisy jako strony jednostek programowych"]) and not parametry_modul.CzyTak(args["obsługiwane jednostki jako nieopisowe strony"]) and not parametry_modul.CzyTak(args["obsługiwane nieudokumentowane szablony jako szablony"])) and((typ=="strona szablonu")or(typ=="strona opisu szablonu"))or(typ=="strona szablonu"))))then return "Template"; elseif((parametry_modul.CzyTak(args["obsługiwane strony jako niebrudnopisowe jednostki programowe"]))and (typ=="strona modułu") or(not parametry_modul.CzyTak(args["obsługiwane brudnopisy jako normalne strony"]) and((not parametry_modul.CzyTak(args["obsługiwane opisy jako strony jednostek programowych"]) and not parametry_modul.CzyTak(args["obsługiwane jednostki jako nieopisowe strony"])) and((typ=="strona brudnopisu modułu")or(typ=="strona brudnopisu opisu modułu"))or(typ=="strona brudnopisu modułu")) or((not parametry_modul.CzyTak(args["obsługiwane opisy jako strony jednostek programowych"]) and not parametry_modul.CzyTak(args["obsługiwane jednostki jako nieopisowe strony"])) and((typ=="strona modułu")or(typ=="strona opisu modułu"))or(typ=="strona modułu"))))then return "Module"; elseif(not parametry_modul.CzyTak(args["obsługiwane jednostki użytkownika jako normalne strony"]) and(((not parametry_modul.CzyTak(args["obsługiwane jednostki jako nieopisowe strony"]))and(parametry_modul.CzyTak(args["obsługiwane jednostki użytkownika"])and (typ=="podręcznik użytkownika" or typ=="artykuł użytkownika") or (typ=="jednostka użytkownika")) or (typ=="strona użytkownika"))or(typ=="strona główna użytkownika"))or(typ=="strona użytkownika"))then return "User"; elseif(typ=="strona pliku")then return "File"; elseif(typ=="strona kategorii")then return "Category"; elseif(typ=="strona pomocy")then return "Help"; elseif(typ=="strona komunikatu")then return "MediaWiki"; elseif(typ=="strona specjalna")then return "Special"; elseif(typ=="strona gadżetu")then return "Gadget"; elseif(typ=="strona główna projektu")then return "Project"; elseif(typ=="strona główna dla dzieci")then return "Wikijunior"; end; return; end; if(typ)then if((typ=="artykuł")or(typ=="podręcznik"))then return ""; elseif((typ=="artykuł dla dzieci")or(typ=="podręcznik dla dzieci"))then return "Wikijunior"; elseif((typ=="podręcznik brudnopisu projektu")or(typ=="artykuł brudnopisu projektu")or(typ=="jednostka brudnopisu projektu")or(typ=="strona brudnopisu projektu")or(typ=="strona projektu"))then return "Project"; elseif((typ=="strona szablonu")or(typ=="strona opisu szablonu")or(typ=="strona brudnopisu szablonu")or(typ=="strona brudnopisu opisu szablonu"))then return "Template"; elseif((typ=="strona modułu")or(typ=="strona opisu modułu")or(typ=="strona brudnopisu modułu")or(typ=="strona brudnopisu opisu modułu"))then return "Module"; elseif((typ=="podręcznik użytkownika")or(typ=="artykuł użytkownika")or(typ=="jednostka użytkownika")or(typ=="strona użytkownika")or(typ=="strona główna użytkownika"))then return "User"; elseif(typ=="strona pliku")then return "File"; elseif(typ=="strona kategorii")then return "Category"; elseif(typ=="strona pomocy")then return "Help"; elseif(typ=="strona komunikatu")then return "MediaWiki"; elseif(typ=="strona specjalna")then return "Special"; elseif(typ=="strona gadżetu")then return "Gadget"; elseif(typ=="strona główna projektu")then return "Project"; elseif(typ=="strona główna dla dzieci")then return "Wikijunior"; end; end; end; function p.Typ_jednostki_uzyskany_z_frame(frame,i) local numer_jednostki=i or frame.args["numer jednostki"]; local liczba_numer_jednostki=tonumber(numer_jednostki) or 0; local pf=frame.getParent and frame:getParent() or {args={}}; local typ; if liczba_numer_jednostki~=0 then typ=liczba_numer_jednostki and( (frame.args["typ jednostki "..liczba_numer_jednostki] or frame.args["typ jednostki i"]) or (pf.args["typ jednostki "..liczba_numer_jednostki] or pf.args["typ jednostki i"]) ); if(not typ)then local nazwa_jednostki=p.Nazwy_przestrzeni_i_jednostki_podane_o_pewnym_numerze(frame,liczba_numer_jednostki,2); if(nazwa_jednostki)then if(not mw.ustring.match(mw.text.trim(nazwa_jednostki),"^:"))then local nazwa_przesrzeni_nazw=p.Nazwy_przestrzeni_i_jednostki_podane_o_pewnym_numerze(frame,liczba_numer_jednostki,1); if(not nazwa_przesrzeni_nazw)then typ=frame.args["typ jednostki"] or pf.args["typ jednostki"]; end; end; end; end; else typ=frame.args["typ jednostki"] or pf.args["typ jednostki"]; end; local parametry_modul=require("Module:Parametry"); if(parametry_modul.CzyTak(typ))then typ,ile=mw.ustring.gsub(typ,"^(%S+)(%s+)(dyskusji)",function(strona,spacja,dyskusja) return strona; end); return typ,liczba_numer_jednostki,ile; end; return typ,liczba_numer_jednostki,0; end; function p.Czy_dyskusja_typu_jednostki_z_frame_od_dyskusja_typu_jednostki(frame,i) local typ,liczba_numer_jednostki,ile_dyskusja=p.Typ_jednostki_uzyskany_z_frame(frame,i); if(ile_dyskusja>0)then return true;end; local pf=frame.getParent and frame:getParent() or {args={},}; local function FuncTemp(liczba_numer_jednostki) local dyskusja_parametr="dyskusja typu jednostki"; if(liczba_numer_jednostki==0)then return frame.args[dyskusja_parametr] or pf.args[dyskusja_parametr]; else return ((frame.args[dyskusja_parametr.." "..liczba_numer_jednostki] or pf.args[dyskusja_parametr.." "..liczba_numer_jednostki]) or (frame.args[dyskusja_parametr.." i"] or pf.args[dyskusja_parametr.." i"]) or(frame.args[dyskusja_parametr] or pf.args[dyskusja_parametr])); end; end; local czy_dyskusja=FuncTemp(liczba_numer_jednostki); local parametry_modul=require("Module:Parametry"); local czy_dyskusja=parametry_modul.CzyTak(czy_dyskusja); return czy_dyskusja; end; function p.Nazwa_przestrzeni_nazw_uzyskana_z_typu_jednostki_z_frame(frame,i) local typ=p.Typ_jednostki_uzyskany_z_frame(frame,i); local nazwa_przestrzeni_nazw=typ and p.Nazwa_przestrzeni_nazw_od_typu_jednostki(typ,nil,true) or nil; if(nazwa_przestrzeni_nazw)then local czy_dyskusja=p.Czy_dyskusja_typu_jednostki_z_frame_od_dyskusja_typu_jednostki(frame,i); if(czy_dyskusja)then if(nazwa_przestrzeni_nazw=="")then return "Talk"; else return nazwa_przestrzeni_nazw.." talk"; end; else return nazwa_przestrzeni_nazw; end; else return nil; end; end; function p.Typ_jednostki(frame, kod_liczbowy_przestrzeni_nazw,i,numer_argorytmu) local parametry_modul=require("Module:Parametry"); local analiza=parametry_modul.CzyTak(frame.args["analiza"]); local typ,liczba_numer_jednostki=p.Typ_jednostki_uzyskany_z_frame(frame,i); local uzyskana_przestrzen_nazw_od_typu_jednostki; local nazwa_przestrzeni_nazw_podana,nazwa_jednostki_podana=p.Nazwy_przestrzeni_i_jednostki_podane_o_pewnym_numerze(frame,liczba_numer_jednostki); if((not analiza)and(typ))then if(typ~="")then uzyskana_przestrzen_nazw_od_typu_jednostki=p.Nazwa_przestrzeni_nazw_od_typu_jednostki(typ,frame.args); if(uzyskana_przestrzen_nazw_od_typu_jednostki)then if((not nazwa_przestrzeni_nazw_podana)and(not nazwa_jednostki_podana))then return typ; end; else return "(błąd typu jednostki)"; end; end; end; local nazwa_przestrzeni_nazw,nazwa_jednostki=p.Uzyskanie_nazw_jednostki(frame,kod_liczbowy_przestrzeni_nazw,liczba_numer_jednostki,numer_argorytmu); local nazwy_modul=require("Module:Nazwy"); local kod_jezyka,kod_projektu=p.Wikikody_kontenera(frame,liczba_numer_jednostki); local wiki_modul=require("Module:Wiki"); local czy_biezaca=wiki_modul["CzyBieżącaWiki"]{["kod języka"]=kod_jezyka,["kod projektu"]=kod_projektu,}; local czy_blad_nazwa_przestrzeni_nazw; if(czy_biezaca)then czy_blad_nazwa_przestrzeni_nazw=nazwy_modul.Np{nazwa=nazwa_przestrzeni_nazw,["kanoniczna"]="tak",["nazwij projektem"]="tak",["nazwij dyskusją projektu"]="tak",["istnieje"]="tak",["wynik błędu nietekstowy"]="tak",} else czy_blad_nazwa_przestrzeni_nazw=nazwy_modul.NpDane{nazwa=nazwa_przestrzeni_nazw,["kanoniczna"]="tak",["nazwij projektem"]="tak",["nazwij dyskusją projektu"]="tak",["kod języka"]=kod_jezyka,["kod projektu"]=kod_projektu,["istnieje"]="tak",["wynik błędu nietekstowy"]="tak",} end; if(not czy_blad_nazwa_przestrzeni_nazw)then return "(błąd nazwy przestrzeni nazw)";end; nazwa_przestrzeni_nazw=czy_blad_nazwa_przestrzeni_nazw; --- --- if((not analiza)and(typ))then if(typ~="")then ---typ jednostki if(uzyskana_przestrzen_nazw_od_typu_jednostki)then if((nazwa_przestrzeni_nazw_podana)and(not nazwa_jednostki_podana))then if(uzyskana_przestrzen_nazw_od_typu_jednostki==nazwa_przestrzeni_nazw)then return typ; else return "(błąd niezgodności)"; end; end; else return "(błąd typu jednostki)"; end; end; end; local function Typ_jednostki() if(nazwa_jednostki~="")then --local kod_jezyka,kod_projektu=KodyWikiPudelka(frame,liczba_numer_jednostki); --local klucz_projektu=kod_projektu..":"..kod_jezyka; local pudelko_modul=require("Module:Pudełko"); local pelna_nazwa_strony=((nazwa_przestrzeni_nazw~="")and nazwa_przestrzeni_nazw..":" or "")..nazwa_jednostki; if(pudelko_modul.CzyNiepoprawnaNazwa(pelna_nazwa_strony))then return "(błąd nazwy jednostki)";end; local nazwy_modul=require("Module:Nazwy") pelna_nazwa_strony=nazwy_modul["PEŁNANAZWASTRONY"]{[1]=pelna_nazwa_strony,["kod języka"]=kod_jezyka,["kod projektu"]=kod_projektu,}; local norm_przed_lub_dyskusji=p.Normalna_przedmiotowa_lub_dyskusji_nazwa_przestrzeni_nazw(nazwa_przestrzeni_nazw,1,kod_jezyka,kod_projektu); if(kod_projektu==pudelko_modul["Kod projektu tego projektu"]())then local nazwa_strony_glownej_dla_dzieci_ze_zmiennej=p.Nazwa_strony_bazowej_dla_dzieci_ze_zmiennej(frame,liczba_numer_jednostki,kod_jezyka); if(nazwa_strony_glownej_dla_dzieci_ze_zmiennej=="")then return "(błąd nazwy strony głównej dla dzieci)";end; local nazwa_strony_glownej_wikijuniora=p.Nazwa_strony_bazowej_dla_dzieci_z_wikidanych(kod_jezyka); local nazwa_strony_glownej_dla_dzieci_uzyskana=(not nazwa_strony_glownej_dla_dzieci_ze_zmiennej)and nazwa_strony_glownej_wikijuniora or nazwa_strony_glownej_dla_dzieci_ze_zmiennej; if(nazwa_strony_glownej_dla_dzieci_uzyskana)then if(pudelko_modul.CzyNiepoprawnaNazwa(nazwa_strony_glownej_dla_dzieci_uzyskana))then return "(błąd nazwy strony głównej dla dzieci)";end; nazwa_strony_glownej_dla_dzieci_uzyskana=nazwy_modul["PEŁNANAZWASTRONY"]{[1]=nazwa_strony_glownej_dla_dzieci_uzyskana,["kod języka"]=kod_jezyka,["kod projektu"]=kod_projektu,}; if(pelna_nazwa_strony==nazwa_strony_glownej_dla_dzieci_uzyskana)then return "strona główna dla dzieci";end; end; end; local nazwa_strony_glownej_projektu_ze_zmiennej=p.Nazwa_strony_bazowej_projektu_ze_zmiennej(frame,liczba_numer_jednostki,kod_jezyka,kod_projektu); if(nazwa_strony_glownej_projektu_ze_zmiennej=="")then return "(błąd nazwy strony głównej projektu)";end; local nazwa_strony_glownej_projektu_z_wikidanych=p.Nazwa_strony_bazowej_projektu_z_wikidanych(kod_jezyka,kod_projektu); local nazwa_strony_glownej_projektu_uzyskana=(not nazwa_strony_glownej_projektu_ze_zmiennej)and nazwa_strony_glownej_projektu_z_wikidanych or nazwa_strony_glownej_projektu_ze_zmiennej; if(nazwa_strony_glownej_projektu_uzyskana)then if(pudelko_modul.CzyNiepoprawnaNazwa(nazwa_strony_glownej_projektu_uzyskana))then return "(błąd nazwy strony głównej projektu)";end; nazwa_strony_glownej_projektu_uzyskana=nazwy_modul["PEŁNANAZWASTRONY"]{[1]=nazwa_strony_glownej_projektu_uzyskana,["kod języka"]=kod_jezyka,["kod projektu"]=kod_projektu,}; if(pelna_nazwa_strony==nazwa_strony_glownej_projektu_uzyskana)then return "strona główna projektu";end; end; if(norm_przed_lub_dyskusji=="")then local parametry_modul=require("Module:Parametry"); if(parametry_modul.CzyTak(frame.args["obsługiwane jednostki jako nieopisowe strony"]))then return "artykuł"; else local it=mw.ustring.match(nazwa_jednostki,"^[^/]+$"); if(it)then return "podręcznik";else return "artykuł";end; end; elseif(norm_przed_lub_dyskusji=="Wikijunior")then local parametry_modul=require("Module:Parametry"); if(parametry_modul.CzyTak(frame.args["obsługiwane jednostki jako nieopisowe strony"]))then return "artykuł dla dzieci"; else local it=mw.ustring.match(nazwa_jednostki,"^[^/]+$"); if(it)then return "podręcznik dla dzieci";else return "artykuł dla dzieci";end; end; elseif(norm_przed_lub_dyskusji=="User")then local parametry_modul=require("Module:Parametry"); if(parametry_modul.CzyTak(frame.args["obsługiwane jednostki użytkownika jako normalne strony"]))then return "strona użytkownika"; else local czy_podstrony=mw.ustring.match(nazwa_jednostki,"^[^/]+$") if(czy_podstrony)then return "strona główna użytkownika"; else if(not parametry_modul.CzyTak(frame.args["obsługiwane jednostki jako nieopisowe strony"]))then if(parametry_modul.CzyTak(frame.args["obsługiwane jednostki użytkownika"]))then local czy_ksiazka=mw.ustring.match(nazwa_jednostki,"^[^/]+/[^/]*$"); if(czy_ksiazka)then return "podręcznik użytkownika"; else return "artykuł użytkownika"; end; else return "jednostka użytkownika"; end; else return "strona użytkownika"; end; end; end; elseif(norm_przed_lub_dyskusji=="File")then return "strona pliku"; elseif(norm_przed_lub_dyskusji=="Category")then return "strona kategorii"; elseif(norm_przed_lub_dyskusji=="Project")then local parametry_modul=require("Module:Parametry"); if(parametry_modul.CzyTak(frame.args["obsługiwane brudnopisy jako normalne strony"]))then return "strona projektu";end; if(mw.ustring.match(nazwa_jednostki,"^%s*[Bb]rudnopis/[^/]*/.*"))then if(not parametry_modul.CzyTak(frame.args["obsługiwane jednostki jako nieopisowe strony"]))then if(parametry_modul.CzyTak(frame.args["obsługiwane jednostki brudnopisu projektu"]))then local czy_ksiazka=mw.ustring.match(nazwa_jednostki,"^%s*[Bb]rudnopis/[^/]*/[^/]*$"); if(czy_ksiazka)then return "podręcznik brudnopisu projektu"; else return "artykuł brudnopisu projektu"; end; else return "jednostka brudnopisu projektu"; end; else return "strona brudnopisu projektu"; end; else return "strona projektu"; end; elseif(norm_przed_lub_dyskusji=="Help")then return "strona pomocy"; elseif(norm_przed_lub_dyskusji=="MediaWiki")then return "strona komunikatu"; elseif(norm_przed_lub_dyskusji=="Special")then return "strona specialna"; elseif(norm_przed_lub_dyskusji=="Gadget")then return "strona gadżetu"; elseif(norm_przed_lub_dyskusji=="Template")then local parametry_modul=require("Module:Parametry"); if(parametry_modul.CzyTak(frame.args["obsługiwane strony jako niebrudnopisowe jednostki programowe"]))then return "strona szablonu";end; local function CzySzablonAlboOpis(nazwa_przestrzeni_nazw,nazwa_jednostki,szablon,opis_szablonu,strona_szablonu,prefix) local parametry_modul=require("Module:Parametry"); if(parametry_modul.CzyTak(frame.args["obsługiwane opisy jako strony jednostek programowych"]) or parametry_modul.CzyTak(frame.args["obsługiwane jednostki jako nieopisowe strony"]))then return szablon; else if(mw.ustring.match(nazwa_jednostki,"^"..prefix..".*/opis$"))then return opis_szablonu; else if(not parametry_modul.CzyTak(frame.args["obsługiwane nieudokumentowane szablony jako szablony"]))then local czy_brudnopis=mw.ustring.match(nazwa_jednostki,"^"..prefix..".*$"); if(czy_brudnopis)then local pagename=(nazwa_przestrzeni_nazw~="")and nazwa_przestrzeni_nazw..":"..nazwa_jednostki or nazwa_jednostki; local czy_istnieje_strona,tab=require("Module:Techniczne").PoliczZbiory(pagename); if(czy_istnieje_strona==1)then local czy_brudnopis_opisu_szablonu=require("Module:Łatki").contentMatch{ [1]='<noinclude>.-{{%s*[Dd]okumentacja%s*}}.-</noinclude>', [2]='<noinclude>.-{{%s*[Dd]okumentacja%s*|.-</noinclude>',pagename=pagename,namespace=0 }; if(not czy_brudnopis_opisu_szablonu)then return opis_szablonu;else return szablon;end; else return szablon; end; else return strona_szablonu; end; else return szablon; end; end; end; end; if((not parametry_modul.CzyTak(frame.args["obsługiwane brudnopisy jako normalne strony"]))and(mw.ustring.match(nazwa_jednostki,"^%s*[Bb]rudnopis/[^/]*/.*")))then return CzySzablonAlboOpis(norm_przed_lub_dyskusji,nazwa_jednostki,"strona brudnopisu szablonu","strona brudnopisu opisu szablonu","strona szablonu","[Bb]rudnopis/[^/]*/"); else return CzySzablonAlboOpis(norm_przed_lub_dyskusji,nazwa_jednostki,"strona szablonu","strona opisu szablonu","strona szablonu",""); end; elseif(norm_przed_lub_dyskusji=="Module")then local parametry_modul=require("Module:Parametry"); if(parametry_modul.CzyTak(frame.args["obsługiwane strony jako niebrudnopisowe jednostki programowe"]))then return "strona modułu";end; if((not parametry_modul.CzyTak(frame.args["obsługiwane brudnopisy jako normalne strony"]))and(mw.ustring.match(nazwa_jednostki,"^%s*[Bb]rudnopis/[^/]*/.*")))then if(parametry_modul.CzyTak(frame.args["obsługiwane opisy jako strony jednostek programowych"]) or parametry_modul.CzyTak(frame.args["obsługiwane jednostki jako nieopisowe strony"]))then return "strona brudnopisu modułu" else local pelna_nazwa_strony=(norm_przed_lub_dyskusji~="")and norm_przed_lub_dyskusji..":"..nazwa_jednostki or nazwa_jednostki; pelna_nazwa_strony=require("Module:Nazwy")["PEŁNANAZWASTRONY"]{[1]=pelna_nazwa_strony,["kod języka"]=kod_jezyka,["kod projektu"]=kod_projektu,}; local pelna_nazwa_strony_brudnopisu_opisu_modulu=require("Module:Techniczne")["PełnaNazwaOpisuModułu"](pelna_nazwa_strony); if(pelna_nazwa_strony==pelna_nazwa_strony_brudnopisu_opisu_modulu)then return "strona brudnopisu opisu modułu"; else return "strona brudnopisu modułu"; end; end; else if(parametry_modul.CzyTak(frame.args["obsługiwane opisy jako strony jednostek programowych"]) or parametry_modul.CzyTak(frame.args["obsługiwane jednostki jako nieopisowe strony"]))then return "strona modułu" else local pelna_nazwa_strony=(norm_przed_lub_dyskusji~="")and norm_przed_lub_dyskusji..":"..nazwa_jednostki or nazwa_jednostki; pelna_nazwa_strony=require("Module:Nazwy")["PEŁNANAZWASTRONY"]{[1]=pelna_nazwa_strony,["kod języka"]=kod_jezyka,["kod projektu"]=kod_projektu,}; local pelna_nazwa_opisu_modulu=require("Module:Techniczne")["PełnaNazwaOpisuModułu"](pelna_nazwa_strony); if(pelna_nazwa_strony==pelna_nazwa_opisu_modulu)then return "strona opisu modułu"; else return "strona modułu"; end; end; end; else return "inne"; end; end; return "inne"; end; local typ_jednostki=Typ_jednostki(); local function TempFunc(typ_jednostki) if( (kod_liczbowy_przestrzeni_nazw==2) or((kod_liczbowy_przestrzeni_nazw==0)and(p.Czy_dyskusja_typu_jednostki_z_frame_od_dyskusja_typu_jednostki(frame,i))) )then typ_jednostki,ile=mw.ustring.gsub(typ_jednostki,"^(%S+)",function(strona) return strona.." dyskusji"; end); return typ_jednostki; end; return typ_jednostki; end; if(((analiza)or(nazwa_jednostki_podana))and(typ)and(typ~=""))then if(typ_jednostki==typ)then return TempFunc(typ_jednostki); elseif(nazwa_jednostki_podana)then return "(błąd parametrów pudełkowych)" else return "(błąd typu jednostki)"; end; end; return TempFunc(typ_jednostki); end; function p.Uzyskanie_nazw_jednostki(frame,kod_liczbowy_przestrzeni_nazw,i,numer_argorytmu,co_ma_liczyc) local nazwa_przestrzeni_fun,nazwa_jednostki_fun; if(kod_liczbowy_przestrzeni_nazw==0)then nazwa_przestrzeni_fun="Nazwa przestrzeni nazw"; nazwa_jednostki_fun="Nazwa jednostki"; elseif(kod_liczbowy_przestrzeni_nazw==1)then nazwa_przestrzeni_fun="Nazwa przedmiotowej przestrzeni nazw"; nazwa_jednostki_fun="Nazwa przedmiotowa jednostki"; elseif(kod_liczbowy_przestrzeni_nazw==2)then nazwa_przestrzeni_fun="Nazwa przestrzeni nazw dyskusji" nazwa_jednostki_fun="Nazwa dyskusji jednostki"; else nazwa_przestrzeni_fun="Nazwa przestrzeni nazw"; nazwa_jednostki_fun="Nazwa jednostki"; end; local pudelko_modul=require("Module:Pudełko"); if(not numer_argorytmu)then if((not i)or(i==0))then if((not co_ma_liczyc)or(co_ma_liczyc==0))then local nazwa_przestrzeni_nazw=pudelko_modul[nazwa_przestrzeni_fun](frame,false); local nazwa_jednostki=pudelko_modul["Nazwa jednostki"](frame); return nazwa_przestrzeni_nazw,nazwa_jednostki; elseif(co_ma_liczyc==1)then local nazwa_przestrzeni_nazw=pudelko_modul[nazwa_przestrzeni_fun](frame,false); return nazwa_przestrzeni_nazw; elseif(co_ma_liczyc==2)then return pudelko_modul["Nazwa jednostki"](frame); end; else if((not co_ma_liczyc)or(co_ma_liczyc==0))then local n=p.Nazwa_przestrzeni_nazw_dodatkowe(frame,i); local parametry_modul=require("Module:Parametry"); n=parametry_modul.CzyTak(n); local nazwa_przestrzeni_nazw=(n)and pudelko_modul[nazwa_przestrzeni_fun](frame,false,i) or pudelko_modul[nazwa_przestrzeni_fun.." 2"](frame,false,i); local nazwa_jednostki=(n)and pudelko_modul["Nazwa jednostki"](frame,i) or pudelko_modul[nazwa_jednostki_fun.." 2"](frame,i); return nazwa_przestrzeni_nazw,nazwa_jednostki; elseif(co_ma_liczyc==1)then local n=p.Nazwa_przestrzeni_nazw_dodatkowe(frame,i); local parametry_modul=require("Module:Parametry"); n=parametry_modul.CzyTak(n); local nazwa_przestrzeni_nazw=(n)and pudelko_modul[nazwa_przestrzeni_fun](frame,false,i) or pudelko_modul[nazwa_przestrzeni_fun.." 2"](frame,false,i); return nazwa_przestrzeni_nazw; elseif(co_ma_liczyc==2)then local n=p.Nazwa_przestrzeni_nazw_dodatkowe(frame,i); local parametry_modul=require("Module:Parametry"); n=parametry_modul.CzyTak(n); return (n)and pudelko_modul["Nazwa jednostki"](frame,i) or pudelko_modul[nazwa_jednostki_fun.." 2"](frame,i); end; end; else if(numer_argorytmu==0)then if((not co_ma_liczyc)or(co_ma_liczyc==0))then local nazwa_przestrzeni_nazw=pudelko_modul[nazwa_przestrzeni_fun](frame,false,i); local nazwa_jednostki=pudelko_modul["Nazwa jednostki"](frame,i); return nazwa_przestrzeni_nazw,nazwa_jednostki; elseif(co_ma_liczyc==1)then local nazwa_przestrzeni_nazw=pudelko_modul[nazwa_przestrzeni_fun](frame,false,i); return nazwa_przestrzeni_nazw; elseif(co_ma_liczyc==2)then return pudelko_modul["Nazwa jednostki"](frame,i); end; else if((not co_ma_liczyc)or(co_ma_liczyc==0))then local nazwa_przestrzeni_nazw=pudelko_modul[nazwa_przestrzeni_fun.." 2"](frame,false,i); local nazwa_jednostki=pudelko_modul[nazwa_jednostki_fun.." 2"](frame,i); return nazwa_przestrzeni_nazw,nazwa_jednostki; elseif(co_ma_liczyc==1)then local nazwa_przestrzeni_nazw=pudelko_modul[nazwa_przestrzeni_fun.." 2"](frame,false,i); return nazwa_przestrzeni_nazw; elseif(co_ma_liczyc==2)then return pudelko_modul[nazwa_jednostki_fun.." 2"](frame,i); end; end; end; end; function p.Nazwa_przestrzeni_nazw_dodatkowe(frame,numer_jednostki) local pf=frame.getParent and frame:getParent() or {args={}}; return frame.args["nazwa przestrzeni nazw "..tostring(numer_jednostki)] or pf.args["nazwa przestrzeni nazw "..tostring(numer_jednostki)] end; function p.Nazwa_jednostki(frame,i) local pf=frame.getParent and frame:getParent() or {args={}}; local nazwa_jednostki,liczba_numer_jednostki=p.Nazwy_przestrzeni_i_jednostki_podane_o_pewnym_numerze(frame,i,2); local kod_jezyka,kod_projektu=p.Wikikody_kontenera(frame,liczba_numer_jednostki); if(nazwa_jednostki)then nazwa_jednostki=mw.text.trim(nazwa_jednostki); nazwa_jednostki=mw.ustring.gsub(nazwa_jednostki,"^:",""); nazwa_jednostki=mw.ustring.gsub(nazwa_jednostki,"^([^#]*)#(.*)$","%1"); local parametry=mw.ustring.match(nazwa_jednostki,"^.*%?([^%?]+)$"); if(parametry and mw.ustring.match(parametry,"[^=]+=[^=]*"))then nazwa_jednostki=mw.ustring.gsub(nazwa_jednostki,"^(.*)%?([^%?]+)$","%1"); end; else local nazwy_modul=require("Module:Nazwy"); nazwa_jednostki=nazwy_modul["NAZWASTRONY"]{["kod języka"]=kod_jezyka,["kod projektu"]=kod_projektu,}; end; local parametry_modul=require("Module:Parametry"); nazwa_jednostki=parametry_modul["Odstępy"]{[1]=nazwa_jednostki,[2]="tak",}; return mw.getContentLanguage():ucfirst(nazwa_jednostki); end; function p.Nazwy_przestrzeni_i_jednostki_podane_o_pewnym_numerze(frame,i,co_podac) local pf=frame.getParent and frame:getParent() or {args={}}; local numer_jednostki=i or frame.args["numer jednostki"]; local liczba_numer_jednostki=tonumber(numer_jednostki) or 0; local nazwa_jednostki; local bool_numer_jednostki=(liczba_numer_jednostki~=0); local function Nazwa_jednostki() if bool_numer_jednostki then nazwa_jednostki=frame.args["nazwa jednostki "..liczba_numer_jednostki] or ((liczba_numer_jednostki==1)and(pf.args["cel"])) or pf.args[liczba_numer_jednostki]; else nazwa_jednostki=frame.args["nazwa jednostki"] or pf.args["nazwa jednostki"]; end; return nazwa_jednostki; end; local function Nazwa_przestrzeni_nazw() local nazwa_przestrzeni_nazw=bool_numer_jednostki and (frame.args["nazwa przestrzeni nazw i"] or pf.args["nazwa przestrzeni nazw i"] or frame.args["nazwa przestrzeni nazw "..liczba_numer_jednostki] or pf.args["nazwa przestrzeni nazw "..liczba_numer_jednostki]) or frame.args["nazwa przestrzeni nazw"] or pf.args["nazwa przestrzeni nazw"]; return nazwa_przestrzeni_nazw; end; if(not co_podac)then return Nazwa_przestrzeni_nazw(),Nazwa_jednostki(),liczba_numer_jednostki; elseif(co_podac==1)then return Nazwa_przestrzeni_nazw(),liczba_numer_jednostki; elseif(co_podac==2)then return Nazwa_jednostki(),liczba_numer_jednostki; else return Nazwa_przestrzeni_nazw(),Nazwa_jednostki(),liczba_numer_jednostki; end; end; function p.Jaka_nazwa_jednostki(frame,i,jaka) local nazwa_przestrzeni_nazw,nazwa_jednostki,liczba_numer_jednostki=p.Nazwy_przestrzeni_i_jednostki_podane_o_pewnym_numerze(frame,i); nazwa_przestrzeni_nazw=nazwa_przestrzeni_nazw or p.Nazwa_przestrzeni_nazw_uzyskana_z_typu_jednostki_z_frame(frame,liczba_numer_jednostki); ---- local nazwy_modul=require("Module:Nazwy"); nazwa_przestrzeni_nazw=nazwa_przestrzeni_nazw and mw.text.trim(nazwa_przestrzeni_nazw) or nazwy_modul["NAZWAPRZESTRZENI"](); if(nazwa_jednostki)then local html_modul=require("Module:Html"); nazwa_jednostki=html_modul["NazwaStronyAdresu"](nazwa_jednostki,true); else nazwa_jednostki=nazwy_modul["NAZWASTRONY"](); end; local kod_jezyka,kod_projektu=p.Wikikody_kontenera(frame,liczba_numer_jednostki); local wiki_modul=require("Module:Wiki"); local czy_biezaca=wiki_modul["CzyBieżącaWiki"]{["kod języka"]=kod_jezyka,["kod projektu"]=kod_projektu,}; if(jaka)then if(czy_biezaca)then local tab_parametry={nazwa=nazwa_przestrzeni_nazw,}; if(jaka=="przedmiotowa")then tab_parametry["przedmiotowa"]="tak";end; nazwa_przestrzeni_nazw=nazwy_modul.Np(tab_parametry); else local tab_parametry={nazwa=nazwa_przestrzeni_nazw,["kod języka"]=kod_jezyka,["kod projektu"]=kod_projektu,}; if(jaka=="przedmiotowa")then tab_parametry["przedmiotowa"]="tak";end; nazwa_przestrzeni_nazw=nazwy_modul.NpDane(tab_parametry); end; else if(czy_biezaca)then nazwa_przestrzeni_nazw=nazwy_modul.Np{nazwa=nazwa_przestrzeni_nazw}; else nazwa_przestrzeni_nazw=nazwy_modul.NpDane{nazwa=nazwa_przestrzeni_nazw,["kod języka"]=kod_jezyka,["kod projektu"]=kod_projektu,}; end; end; if(not mw.ustring.match(nazwa_jednostki,"^:"))then if(nazwa_przestrzeni_nazw~="")then if((not typ)or(typ=="przedmiotowa"))then if(czy_biezaca)then local nazwy_np_modul=mw.loadData("Module:Nazwy/Np"); if(nazwa_przestrzeni_nazw==nazwy_np_modul.Template)then local nazwa_przestrzeni_nazw_d=nazwy_modul["NAZWAPRZESTRZENI"](nazwa_jednostki); if(nazwa_przestrzeni_nazw_d==nazwy_np_modul.Template)then return nazwy_modul["NAZWASTRONY"](nazwa_jednostki); end; elseif(nazwa_przestrzeni_nazw==nazwy_np_modul.Module)then local nazwa_przestrzeni_nazw_d=nazwy_modul["NAZWAPRZESTRZENI"](nazwa_jednostki); if(nazwa_przestrzeni_nazw_d==nazwy_np_modul.Module)then return nazwy_modul["NAZWASTRONY"](nazwa_jednostki); end; end; else local template_prze=nazwy_modul.NpDane{nazwa="Template",["kod języka"]=kod_jezyka,["kod projektu"]=kod_projektu,}; local module_prze=nazwy_modul.NpDane{nazwa="Module",["kod języka"]=kod_jezyka,["kod projektu"]=kod_projektu,}; if(nazwa_przestrzeni_nazw==template_prze)then local nazwa_przestrzeni_nazw_d=nazwy_modul["NAZWAPRZESTRZENI"]{[1]=nazwa_jednostki,["kod języka"]=kod_jezyka,["kod projektu"]=kod_projektu,}; if(nazwa_przestrzeni_nazw_d==template_prze)then return nazwy_modul["NAZWASTRONY"]{[1]=nazwa_jednostki,["kod języka"]=kod_jezyka,["kod projektu"]=kod_projektu,}; end; elseif(nazwa_przestrzeni_nazw==module_prze)then local nazwa_przestrzeni_nazw_d=nazwy_modul["NAZWAPRZESTRZENI"]{[1]=nazwa_jednostki,["kod języka"]=kod_jezyka,["kod projektu"]=kod_projektu,}; if(nazwa_przestrzeni_nazw_d==module_prze)then return nazwy_modul["NAZWASTRONY"]{[1]=nazwa_jednostki,["kod języka"]=kod_jezyka,["kod projektu"]=kod_projektu,}; end; end; end; end; local parametry_modul=require("Module:Parametry"); nazwa_jednostki=parametry_modul["Odstępy"]{[1]=nazwa_jednostki,[2]="tak",}; return mw.getContentLanguage():ucfirst(nazwa_jednostki); else return nazwy_modul["NAZWASTRONY"]{[1]=nazwa_jednostki,["kod języka"]=kod_jezyka,["kod projektu"]=kod_projektu,}; end; else return nazwy_modul["NAZWASTRONY"]{[1]=nazwa_jednostki,["kod języka"]=kod_jezyka,["kod projektu"]=kod_projektu,}; end; end; function p.Czy_przestrzen_nazw_jest_obslugiwana(frame,jakas_przestrzen_nazw,kod_jezyka,kod_projektu) local nazwy_modul=require("Module:Nazwy"); local parametry_modul=require("Module:Parametry"); local wiki_modul=require("Module:Wiki"); local czy_biezaca=wiki_modul["CzyBieżącaWiki"]{["kod języka"]=kod_jezyka,["kod projektu"]=kod_projektu,}; if(czy_biezaca)then jakas_przestrzen_nazw=nazwy_modul.Np{nazwa=jakas_przestrzen_nazw}; else jakas_przestrzen_nazw=nazwy_modul.NpDane{nazwa=jakas_przestrzen_nazw,["kod języka"]=kod_jezyka,["kod projektu"]=kod_projektu,}; end; local function nazwa_przestrzeni_nazw_fun(nazwa_przestrzeni_nazw_iter) if(czy_biezaca)then nazwa_przestrzeni_nazw_iter=nazwy_modul.Np{nazwa=nazwa_przestrzeni_nazw_iter}; else nazwa_przestrzeni_nazw_iter=nazwy_modul.NpDane{nazwa=nazwa_przestrzeni_nazw_iter,["kod języka"]=kod_jezyka,["kod projektu"]=kod_projektu,}; end; if(jakas_przestrzen_nazw==nazwa_przestrzeni_nazw_iter)then return true; end; return false; end; for licznik,nazwa_przestrzeni_nazw in pairs(frame.args)do if(type(licznik)=="number")then local nazwa_przestrzeni_nazw_element,klucze_element=mw.ustring.match(nazwa_przestrzeni_nazw,"^%s*([%w%s]*)%s*:%s*(.-)%s*"); if(nazwa_przestrzeni_nazw_element and klucze_element)then local tab_klucze=mw.text.split(klucze_element,"%s*,%s*",false); local wiki_modul=require("Module:Wiki"); for _,klucz_element in ipairs(tab_klucze)do local kod_jezyka_obslugiwane,kod_projektu_obslugiwane=wiki_modul.KluczProjektu(klucz_element); if(kod_jezyka_obslugiwane==kod_jezyka and kod_projektu_obslugiwane==kod_projektu)then local wynik=nazwa_przestrzeni_nazw_fun(nazwa_przestrzeni_nazw_element); if(wynik)then return true;end; end; end; else local wynik=nazwa_przestrzeni_nazw_fun(nazwa_przestrzeni_nazw); if(wynik)then return true;end; end; end; end; return false; end; function p.Analiza_interwiki_czy_projekt_aktualny(frame,czy_jezyk,czy_projekt) local parametry_modul=require("Module:Parametry"); local p=parametry_modul.PobierzFrameEwentualnieParent(frame); local pudelko_modul=require("Module:Pudełko"); local wiki_modul=require("Module:Wiki"); local jezyk_biezacy=czy_jezyk and pudelko_modul["Kod języka tego projektu"](); local projekt_biezacy=czy_projekt and pudelko_modul["Kod projektu tego projektu"](); for i,_ in pairs(p.args)do if(type(i)=="number")then local klucz_projektu=pudelko_modul["Klucz projektu"](frame,i); local kod_jezyka=pudelko_modul["Kod języka"](frame,i); local kod_projektu=pudelko_modul["kod projektu"](frame,i); local jezyk,projekt=wiki_modul.KodyWiki(klucz_projektu,kod_jezyka,kod_projektu); if((czy_jezyk and (jezyk~=jezyk_biezacy))or(czy_projekt and(projekt~=projekt_biezacy)))then return "tak"; end; end; end; return; end; return p; b3qxjnnwudc33g0seltbk9tf5ncmesi 540444 540435 2026-04-24T03:13:55Z Persino 2851 540444 Scribunto text/plain local p={}; function p.Nazwa_strony_bazowej_projektu_z_wikidanych(kod_jezyka,kod_projektu) local strona=require("Module:Pudełko")["Strona główna tego projektu"](); local odpowiednik_strony=require("Module:Wiki").WikidaneOdpowiednikStrony{["nazwa strony"]=strona,["kod języka"]=kod_jezyka,["kod projektu"]=kod_projektu}; if(odpowiednik_strony)then local nazwy_modul=require("Module:Nazwy"); return nazwy_modul["PEŁNANAZWASTRONY"]{[1]=odpowiednik_strony,["kod języka"]=kod_jezyka,["kod projektu"]=kod_projektu,}; else local pudelko_modul=require("Module:Pudełko"); if((kod_jezyka==pudelko_modul["Kod języka tego projektu"]())and(kod_projektu==pudelko_modul["Kod projektu tego projektu"]()))then return strona; else local wiki_interwiki_modul=mw.loadData("Module:Wiki/interwiki"); local czy_w_wikidanych=wiki_interwiki_modul.tablica_kody_projektu_wikidane.lingwistyczne[kod_projektu] or wiki_interwiki_modul.tablica_kody_projektu_wikidane.specjalistyczne[kod_projektu]; return czy_w_wikidanych and "Main Page" or nil; end; end; end; function p.Nazwa_strony_bazowej_dla_dzieci_z_wikidanych(kod_jezyka) local strona=require("Module:Pudełko")["Strona główna dla dzieci tego projektu"](); local pudelko_modul=require("Module:Pudełko"); local kod_jezyka_tego_projektu=pudelko_modul["Kod języka tego projektu"](); if(kod_jezyka==kod_jezyka_tego_projektu)then return strona;end; local kod_projektu_tego_projektu=pudelko_modul["Kod projektu tego projektu"](); local odpowiednik_strony=require("Module:Wiki").WikidaneOdpowiednikStrony{["nazwa strony"]=strona,["kod języka"]=kod_jezyka,["kod projektu"]=kod_projektu_tego_projektu}; if(odpowiednik_strony)then local nazwy_modul=require("Module:Nazwy"); return nazwy_modul["PEŁNANAZWASTRONY"]{[1]=odpowiednik_strony,["kod języka"]=kod_jezyka,["kod projektu"]=kod_projektu_tego_projektu,}; else return "Wikijunior"; end; end; function p.Nazwa_strony_bazowej_projektu_ze_zmiennej(frame,i,kod_jezyka,kod_projektu) local pf=frame.getParent and frame:getParent() or {args={}}; local strona_glowna_projektu; if(i~=0)then local pudelko_modul=require("Module:Pudełko"); local kod_jezyka_tego_projektu=pudelko_modul["Kod języka tego projektu"](); local kod_projektu_tego_projektu=pudelko_modul["Kod projektu tego projektu"](); if(kod_jezyka==kod_jezyka_tego_projektu)and(kod_projektu==kod_projektu_tego_projektu)then strona_glowna_projektu=frame.args["strona główna projektu"] or pf.args["strona główna projektu"] else strona_glowna_projektu=(frame.args["strona główna projektu "..i] or pf.args["strona główna projektu "..i]) end; else strona_glowna_projektu=frame.args["strona główna projektu"] or pf.args["strona główna projektu"] end; local parametry_modul=require("Module:Parametry"); return (parametry_modul.CzyTak(strona_glowna_projektu))and require("Module:Nazwy")["PEŁNANAZWASTRONY"]{[1]=strona_glowna_projektu,["kod języka"]=kod_jezyka,["kod projektu"]=kod_projektu,} or (strona_glowna_projektu and "" or nil); end; function p.Nazwa_strony_bazowej_dla_dzieci_ze_zmiennej(frame,i,kod_jezyka) local pf=frame.getParent and frame:getParent() or {args={}}; local pudelko_modul=require("Module:Pudełko"); local strona_glowna_dla_dzieci; if(i~=0)then local kod_jezyka_tego_projektu=pudelko_modul["Kod języka tego projektu"](); if(kod_jezyka==kod_jezyka_tego_projektu)then strona_glowna_dla_dzieci=frame.args["strona główna dla dzieci"] or pf.args["strona główna dla dzieci"] else strona_glowna_dla_dzieci=(frame.args["strona główna dla dzieci "..i] or pf.args["strona główna dla dzieci "..i]) end; else strona_glowna_dla_dzieci=frame.args["strona główna dla dzieci"] or pf.args["strona główna dla dzieci"] end; local kod_projektu_tego_projektu=pudelko_modul["Kod projektu tego projektu"](); local parametry_modul=require("Module:Parametry"); return (parametry_modul.CzyTak(strona_glowna_dla_dzieci))and require("Module:Nazwy")["PEŁNANAZWASTRONY"]{[1]=strona_glowna_dla_dzieci,["kod języka"]=kod_jezyka,["kod projektu"]=kod_projektu_tego_projektu,} or (strona_glowna_dla_dzieci and "" or nil); end; function p.Normalna_przedmiotowa_lub_dyskusji_nazwa_przestrzeni_nazw(nazwa_przestrzeni_nazw, normmalna_przedmiotwa_dyskusji,kod_jezyka,kod_projektu) local nazwa_przestrzeni_nazw_blad; local wiki_modul=require("Module:Wiki"); local nazwy_modul=require("Module:Nazwy"); local czy_biezaca=wiki_modul["CzyBieżącaWiki"]{["kod języka"]=kod_jezyka,["kod projektu"]=kod_projektu,}; if(normmalna_przedmiotwa_dyskusji==0)then if(czy_biezaca)then nazwa_przestrzeni_nazw_blad=nazwy_modul.Np{nazwa=nazwa_przestrzeni_nazw,["kanoniczna"]="tak",["nazwij projektem"]="tak",["nazwij dyskusją projektu"]="tak",["istnieje"]="tak",["wynik błędu nietekstowy"]="tak",}; else nazwa_przestrzeni_nazw_blad=nazwy_modul.NpDane{nazwa=nazwa_przestrzeni_nazw,["kanoniczna"]="tak",["nazwij projektem"]="tak",["nazwij dyskusją projektu"]="tak",["kod języka"]=kod_jezyka,["kod projektu"]=kod_projektu,["istnieje"]="tak",["wynik błędu nietekstowy"]="tak",}; end; elseif(normmalna_przedmiotwa_dyskusji==1)then if(czy_biezaca)then nazwa_przestrzeni_nazw_blad=nazwy_modul.Np{nazwa=nazwa_przestrzeni_nazw, przedmiotowa="tak",["kanoniczna"]="tak",["nazwij projektem"]="tak",["nazwij dyskusją projektu"]="tak",["istnieje"]="tak",["wynik błędu nietekstowy"]="tak",}; else nazwa_przestrzeni_nazw_blad=nazwy_modul.NpDane{nazwa=nazwa_przestrzeni_nazw, przedmiotowa="tak",["kanoniczna"]="tak",["nazwij projektem"]="tak",["nazwij dyskusją projektu"]="tak",["kod języka"]=kod_jezyka,["kod projektu"]=kod_projektu,["istnieje"]="tak",["wynik błędu nietekstowy"]="tak",}; end; elseif(normmalna_przedmiotwa_dyskusji==2)then if(czy_biezaca)then nazwa_przestrzeni_nazw_blad=nazwy_modul.Np{nazwa=nazwa_przestrzeni_nazw, dyskusja="tak",["kanoniczna"]="tak",["nazwij projektem"]="tak",["nazwij dyskusją projektu"]="tak",["istnieje"]="tak",["wynik błędu nietekstowy"]="tak",}; else nazwa_przestrzeni_nazw_blad=nazwy_modul.NpDane{nazwa=nazwa_przestrzeni_nazw, dyskusja="tak",["kanoniczna"]="tak",["nazwij projektem"]="tak",["nazwij dyskusją projektu"]="tak",["kod języka"]=kod_jezyka,["kod projektu"]=kod_projektu,["istnieje"]="tak",["wynik błędu nietekstowy"]="tak",}; end; else if(czy_biezaca)then nazwa_przestrzeni_nazw_blad=nazwy_modul.Np{nazwa=nazwa_przestrzeni_nazw,["kanoniczna"]="tak",["nazwij projektem"]="tak",["nazwij dyskusją projektu"]="tak",["istnieje"]="tak",["wynik błędu nietekstowy"]="tak",}; else nazwa_przestrzeni_nazw_blad=nazwy_modul.NpDane{nazwa=nazwa_przestrzeni_nazw,["kanoniczna"]="tak",["nazwij projektem"]="tak",["nazwij dyskusją projektu"]="tak",["kod języka"]=kod_jezyka,["kod projektu"]=kod_projektu,["istnieje"]="tak",["wynik błędu nietekstowy"]="tak",}; end; end; return nazwa_przestrzeni_nazw_blad end; function p.Nazwa_przestrzeni_nazw(frame,kod_liczbowy_przestrzeni_nazw,czy_uwzglednic_alternatywna_nazwe,numer_jednostki) local pf=frame.getParent and frame:getParent() or {args={}}; local nazwa_przestrzeni_nazw=p.Nazwy_przestrzeni_i_jednostki_podane_o_pewnym_numerze(frame,numer_jednostki,1) or p.Nazwa_przestrzeni_nazw_uzyskana_z_typu_jednostki_z_frame(frame,numer_jednostki); local nazwy_modul=require("Module:Nazwy"); local wiki_modul=require("Module:Wiki"); local kod_jezyka,kod_projektu=p.Wikikody_kontenera(frame,numer_jednostki); local czy_biezaca_wiki=wiki_modul["CzyBieżącaWiki"]{["kod języka"]=kod_jezyka,["kod projektu"]=kod_projektu,}; local czy_blad_nazwy_przestrzeni_nazw; local typ; if(kod_liczbowy_przestrzeni_nazw==1)then typ="przedmiotowa"; if(czy_biezaca_wiki)then czy_blad_nazwy_przestrzeni_nazw=(not nazwa_przestrzeni_nazw)and nazwy_modul["PRZEDMIOTOWAPRZESTRZEŃ"]() or nazwy_modul.Np{nazwa=nazwa_przestrzeni_nazw,przedmiotowa="tak",["istnieje"]="tak",["wynik błędu nietekstowy"]="tak",}; else czy_blad_nazwy_przestrzeni_nazw=(not nazwa_przestrzeni_nazw)and nazwy_modul["PRZEDMIOTOWAPRZESTRZEŃ"]{["kod języka"]=kod_jezyka,["kod projektu"]=kod_projektu,} or nazwy_modul.NpDane{nazwa=nazwa_przestrzeni_nazw,przedmiotowa="tak",["kod języka"]=kod_jezyka,["kod projektu"]=kod_projektu,["istnieje"]="tak",["wynik błędu nietekstowy"]="tak",}; end; elseif(kod_liczbowy_przestrzeni_nazw==2)then if(czy_biezaca_wiki)then typ="dyskusja"; czy_blad_nazwy_przestrzeni_nazw=(not nazwa_przestrzeni_nazw)and nazwy_modul["PRZESTRZEŃDYSKUSJI"]() or nazwy_modul.Np{nazwa=nazwa_przestrzeni_nazw,dyskusja="tak",["istnieje"]="tak",["wynik błędu nietekstowy"]="tak",}; else czy_blad_nazwy_przestrzeni_nazw=(not nazwa_przestrzeni_nazw)and nazwy_modul["PRZESTRZEŃDYSKUSJI"]{["kod języka"]=kod_jezyka,["kod projektu"]=kod_projektu,} or nazwy_modul.NpDane{nazwa=nazwa_przestrzeni_nazw,dyskusja="tak",["kod języka"]=kod_jezyka,["kod projektu"]=kod_projektu,["istnieje"]="tak",["wynik błędu nietekstowy"]="tak",}; end; else if(czy_biezaca_wiki)then czy_blad_nazwy_przestrzeni_nazw=(not nazwa_przestrzeni_nazw)and nazwy_modul["NAZWAPRZESTRZENI"]() or nazwy_modul.Np{nazwa=nazwa_przestrzeni_nazw,["istnieje"]="tak",["wynik błędu nietekstowy"]="tak",}; else czy_blad_nazwy_przestrzeni_nazw=(not nazwa_przestrzeni_nazw)and nazwy_modul["NAZWAPRZESTRZENI"]{["kod języka"]=kod_jezyka,["kod projektu"]=kod_projektu,} or nazwy_modul.NpDane{nazwa=nazwa_przestrzeni_nazw,["kod języka"]=kod_jezyka, ["kod projektu"]=kod_projektu,["istnieje"]="tak",["wynik błędu nietekstowy"]="tak",}; end; end; if(czy_blad_nazwy_przestrzeni_nazw)then return czy_blad_nazwy_przestrzeni_nazw; else if(((czy_uwzglednic_alternatywna_nazwe==nil)and true or czy_uwzglednic_alternatywna_nazwe) and frame.args[1])then local nazwa_przestrzeni_nazw_alternatywnej=mw.text.trim(frame.args[1]); if(mw.ustring.match(nazwa_przestrzeni_nazw_alternatywnej,"^[%w%s_]*$"))then local czy_blad_nazwa_przestrzeni_nazw_alternatywnej; if(czy_biezaca_wiki)then local tab_parametry={nazwa=nazwa_przestrzeni_nazw_alternatywnej,["istnieje"]="tak",["wynik błędu nietekstowy"]="tak",}; if(typ)then tab_parametry[typ]="tak";end; czy_blad_nazwa_przestrzeni_nazw_alternatywnej=nazwy_modul.Np(tab_parametry); else local tab_parametry={nazwa=nazwa_przestrzeni_nazw_alternatywnej,["kod języka"]=kod_jezyka,["kod projektu"]=kod_projektu,["istnieje"]="tak",["wynik błędu nietekstowy"]="tak",}; if(typ)then tab_parametry[typ]="tak";end; czy_blad_nazwa_przestrzeni_nazw_alternatywnej=nazwy_modul.NpDane(tab_parametry); end; return czy_blad_nazwa_przestrzeni_nazw_alternatywnej or "(błąd)"; else return "(błąd)"; end; else local parametry_modul=require("Module:Parametry"); nazwa_przestrzeni_nazw=parametry_modul["Odstępy"]{[1]=nazwa_przestrzeni_nazw,[2]="tak",}; if(mw.ustring.match(nazwa_przestrzeni_nazw,"^[%w%s_]*$"))then return nazwa_przestrzeni_nazw; else return "(błąd)"; end; end; end; end; function p.Nazwa_przestrzeni_nazw_2(frame,czy_uwzglednic_alternatywna_nazwe,i) local nazwa_przestrzeni_nazw,nazwa_jednostki,liczba_numer_jednostki=p.Nazwy_przestrzeni_i_jednostki_podane_o_pewnym_numerze(frame,i); nazwa_przestrzeni_nazw=nazwa_przestrzeni_nazw or p.Nazwa_przestrzeni_nazw_uzyskana_z_typu_jednostki_z_frame(frame,liczba_numer_jednostki); local nazwy_modul=require("Module:Nazwy"); local kod_jezyka,kod_projektu=p.Wikikody_kontenera(frame,liczba_numer_jednostki); local wiki_modul=require("Module:Wiki"); local czy_biezaca_wiki=wiki_modul["CzyBieżącaWiki"]{["kod języka"]=kod_jezyka,["kod projektu"]=kod_projektu,}; local nazwa_przestrzeni_nazw_blad; local parametry_modul=require("Module:Parametry"); if(czy_biezaca_wiki)then nazwa_przestrzeni_nazw=nazwa_przestrzeni_nazw and mw.text.trim(nazwa_przestrzeni_nazw) or nazwy_modul["NAZWAPRZESTRZENI"](); nazwa_przestrzeni_nazw_blad=require("Module:Nazwy").Np{nazwa=nazwa_przestrzeni_nazw,["istnieje"]="tak",["wynik błędu nietekstowy"]="tak",}; if(nazwa_jednostki)then nazwa_jednostki=parametry_modul["Odstępy"]{[1]=nazwa_jednostki,[2]="tak",}; nazwa_jednostki=mw.ustring.gsub(nazwa_jednostki,"^([^#]*)#(.*)$","%1"); local parametry=mw.ustring.match(nazwa_jednostki,"^.*%?([^%?]+)$"); if(parametry and mw.ustring.match(parametry,"[^=]+=[^=]*"))then nazwa_jednostki=mw.ustring.gsub(nazwa_jednostki,"^(.*)%?([^%?]+)$","%1"); end; else nazwa_jednostki=nazwy_modul["NAZWASTRONY"](); end; else nazwa_przestrzeni_nazw=nazwa_przestrzeni_nazw and mw.text.trim(nazwa_przestrzeni_nazw) or nazwy_modul["NAZWAPRZESTRZENI"]{["kod języka"]=kod_jezyka,["kod projektu"]=kod_projektu,}; nazwa_przestrzeni_nazw_blad=require("Module:Nazwy").NpDane{nazwa=nazwa_przestrzeni_nazw,["kod języka"]=kod_jezyka,["kod projektu"]=kod_projektu,["istnieje"]="tak",["wynik błędu nietekstowy"]="tak",}; if(nazwa_jednostki)then local html_modul=require("Module:Html"); nazwa_jednostki=html_modul["NazwaStronyAdresu"](nazwa_jednostki,true); else nazwa_jednostki=nazwy_modul["NAZWASTRONY"]{["kod języka"]=kod_jezyka,["kod projektu"]=kod_projektu,}; end; end; nazwa_przestrzeni_nazw=nazwa_przestrzeni_nazw_blad or nazwa_przestrzeni_nazw; if(not mw.ustring.match(nazwa_jednostki,"^:"))then if(nazwa_przestrzeni_nazw~="")then if(czy_biezaca_wiki)then local nazwy_np_modul=mw.loadData("Module:Nazwy/Np"); if(nazwa_przestrzeni_nazw==nazwy_np_modul.Template)then local nazwa_przestrzeni_nazw_d=require("Module:Nazwy")["NAZWAPRZESTRZENI"](nazwa_jednostki); if(nazwa_przestrzeni_nazw_d==nazwy_np_modul.Template)then nazwa_przestrzeni_nazw=nazwy_np_modul.Template; end; elseif(nazwa_przestrzeni_nazw==nazwy_np_modul.Module)then local nazwa_przestrzeni_nazw_d=require("Module:Nazwy")["NAZWAPRZESTRZENI"](nazwa_jednostki); if(nazwa_przestrzeni_nazw_d==nazwy_np_modul.Module)then nazwa_przestrzeni_nazw=nazwy_np_modul.Module; end; end; else local template_prze=nazwy_modul.NpDane{nazwa="Template",["kod języka"]=kod_jezyka,["kod projektu"]=kod_projektu,}; local module_prze=nazwy_modul.NpDane{nazwa="Module",["kod języka"]=kod_jezyka,["kod projektu"]=kod_projektu,}; if(nazwa_przestrzeni_nazw==template_prze)then local nazwa_przestrzeni_nazw_d=nazwy_modul["NAZWAPRZESTRZENI"]{[1]=nazwa_jednostki,["kod języka"]=kod_jezyka,["kod projektu"]=kod_projektu,}; if(nazwa_przestrzeni_nazw_d==template_prze)then nazwa_przestrzeni_nazw=template_prze; end; elseif(nazwa_przestrzeni_nazw==module_prze)then local nazwa_przestrzeni_nazw_d=nazwy_modul["NAZWAPRZESTRZENI"]{[1]=nazwa_jednostki,["kod języka"]=kod_jezyka,["kod projektu"]=kod_projektu,}; if(nazwa_przestrzeni_nazw_d==module_prze)then nazwa_przestrzeni_nazw=module_prze; end; end; end; if(not nazwa_przestrzeni_nazw_blad)then if(((czy_uwzglednic_alternatywna_nazwe==nil)and true or czy_uwzglednic_alternatywna_nazwe) and frame.args[1])then local wytrimowana_nazwa_przestrzeni_nazw=mw.text.trim(frame.args[1]); if(mw.ustring.match(wytrimowana_nazwa_przestrzeni_nazw,"^[%w%s_]*$"))then if(czy_biezaca_wiki)then local nazwy_modul=require("Module:Nazwy"); local czy_blad_nazwy_przestrzeni_nazw=nazwy_modul.Np{nazwa=wytrimowana_nazwa_przestrzeni_nazw,["istnieje"]="tak",["wynik błędu nietekstowy"]="tak",} return czy_blad_nazwy_przestrzeni_nazw or "(błąd)"; else local nazwy_modul=require("Module:Nazwy"); local nazwa_przestrzeni_nazw_blad2=nazwy_modul.NpDane{nazwa=wytrimowana_nazwa_przestrzeni_nazw,["kod języka"]=kod_jezyka,["kod projektu"]=kod_projektu,["istnieje"]="tak",["wynik błędu nietekstowy"]="tak",}; return nazwa_przestrzeni_nazw_blad2 or "(błąd)"; end; else return "(błąd)"; end; else local wytrimowana_nazwa_przestrzeni_nazw=mw.text.trim(nazwa_przestrzeni_nazw); if(mw.ustring.match(wytrimowana_nazwa_przestrzeni_nazw,"^[%w%s_]*$"))then return wytrimowana_nazwa_przestrzeni_nazw; else return "(błąd)"; end; end; else return nazwa_przestrzeni_nazw; end; else return require("Module:Nazwy")["NAZWAPRZESTRZENI"]{[1]=nazwa_jednostki,["kod języka"]=kod_jezyka,["kod projektu"]=kod_projektu,}; end; else return require("Module:Nazwy")["NAZWAPRZESTRZENI"]{[1]=nazwa_jednostki,["kod języka"]=kod_jezyka,["kod projektu"]=kod_projektu,}; end; end; function p.Nazwa_przestrzeni_nazw_przedmiotowa_dyskusji_2(frame,czy_uwzglednic_alternatywna_nazwe,i,typ) local numer_jednostki=i or frame.args["numer jednostki"]; local liczba_numer_jednostki=((numer_jednostki)and(tonumber(numer_jednostki))or 0); local pudelko_modul=require("Module:Pudełko"); local tab_nazwa={ ["przedmiotowa"]="Nazwa przedmiotowej przestrzeni nazw", ["dyskusja"]="Nazwa przestrzeni nazw", }; local nazwa_przestrzeni_nazw=pudelko_modul[tab_nazwa[typ]](frame,czy_uwzglednic_alternatywna_nazwe,liczba_numer_jednostki); local nazwy_modul=require("Module:Nazwy"); if(nazwa_przestrzeni_nazw=="")then local nazwa_jednostki=pudelko_modul["Nazwa jednostki"](frame,liczba_numer_jednostki); local kod_jezyka,kod_projektu=p.Wikikody_kontenera(frame,liczba_numer_jednostki); local tab_nazwa={ ["przedmiotowa"]="PRZEDMIOTOWAPRZESTRZEŃ", ["dyskusja"]="PRZESTRZEŃDYSKUSJI", }; nazwa_przestrzeni_nazw=nazwy_modul[tab_nazwa[typ]]{nazwa=nazwa_jednostki,["kod języka"]=kod_jezyka,["kod projektu"]=kod_projektu,}; else if(typ=="dyskusja")then local wiki_modul=require("Module:Wiki"); local czy_biezaca=wiki_modul["CzyBieżącaWiki"]{["kod języka"]=kod_jezyka,["kod projektu"]=kod_projektu,}; if(czy_biezaca)then nazwa_przestrzeni_nazw=nazwy_modul.Np{[typ]="tak",nazwa=nazwa_przestrzeni_nazw}; else nazwa_przestrzeni_nazw=nazwy_modul.NpDane{[typ]="tak",nazwa=nazwa_przestrzeni_nazw,["kod języka"]=kod_jezyka,["kod projektu"]=kod_projektu,}; end; end; end; return nazwa_przestrzeni_nazw; end; function p.Kod_jezyka(frame,i,wartosc_domyslna) local pudelko_modul=require("Module:Pudełko"); if(not i)then return pudelko_modul["Kod języka tego projektu"]();end; local pf=frame.getParent and frame:getParent() or {args={}}; if(i==0)then return pudelko_modul["Kod języka tego projektu"](); elseif(i==1)then local parametry_modul=require("Module:Parametry"); local kod_jezyka=frame.args["kod języka"] or frame.args["kod języka 1"] or pf.args["kod języka"] or pf.args["kod języka 1"] return ((kod_jezyka)and(kod_jezyka~=""))and mw.text.trim(kod_jezyka) or ((parametry_modul.CzyTak(wartosc_domyslna))and wartosc_domyslna or nil); elseif(i>1)then local parametry_modul=require("Module:Parametry"); local kod_jezyka=frame.args["kod języka "..i] or pf.args["kod języka "..i] return ((kod_jezyka)and(kod_jezyka~=""))and mw.text.trim(kod_jezyka) or ((parametry_modul.CzyTak(wartosc_domyslna))and wartosc_domyslna or nil); end; end function p.Kod_projektu(frame,i,wartosc_domyslna) local pudelko_modul=require("Module:Pudełko"); if(not i)then return pudelko_modul["Kod projektu tego projektu"]();end; local pf=frame.getParent and frame:getParent() or {args={}}; if(i==0)then return pudelko_modul["Kod projektu tego projektu"](); elseif(i==1)then local parametry_modul=require("Module:Parametry"); local kod_projektu=frame.args["kod projektu"] or frame.args["kod projektu 1"] or pf.args["kod projektu"] or pf.args["kod projektu 1"] return ((kod_projektu)and(kod_projektu~=""))and mw.text.trim(kod_projektu) or ((parametry_modul.CzyTak(wartosc_domyslna))and wartosc_domyslna or nil); elseif(i>1)then local parametry_modul=require("Module:Parametry"); local kod_projektu=frame.args["kod projektu "..i] or pf.args["kod projektu "..i] return ((kod_projektu)and(kod_projektu~=""))and mw.text.trim(kod_projektu) or ((parametry_modul.CzyTak(wartosc_domyslna))and wartosc_domyslna or nil); end; end function p.Klucz_projektu(frame,i,wartosc_domyslna_jezyka,wartosc_domyslna_projektu) local pf=frame.getParent and frame:getParent() or {args={}}; local klucz_projektu; local function domyslne_klucz(klucz_projektu) local parametry_modul=require("Module:Parametry"); return ((klucz_projektu)and(klucz_projektu~=""))and mw.text.trim(klucz_projektu)or((parametry_modul.CzyTak(wartosc_domyslna_jezyka)and(parametry_modul.CzyTak(wartosc_domyslna_projektu)))and (wartosc_domyslna_jezyka..":" ..wartosc_domyslna_projektu)or(parametry_modul.CzyTak(wartosc_domyslna_jezyka) and wartosc_domyslna_jezyka or (parametry_modul.CzyTak(wartosc_domyslna_projektu) and wartosc_domyslna_projektu or nil))); end; if(i==0)then return nil; elseif(i==1)then local klucz_projektu=frame.args["klucz projektu"] or frame.args["klucz projektu 1"] or pf.args["klucz projektu"] or pf.args["klucz projektu 1"]; return domyslne_klucz(klucz_projektu); elseif(i>1)then local klucz_projektu=frame.args["klucz projektu "..i] or pf.args["klucz projektu "..i]; return domyslne_klucz(klucz_projektu); end; end; function p.Wikikody_kontenera(frame,i,wartosc_domyslna_jezyka,wartosc_domyslna_projektu) local wiki_modul=require("Module:Wiki"); local kod_jezyka,kod_projektu=wiki_modul.KodyWiki(p.Klucz_projektu(frame,i,wartosc_domyslna_jezyka,wartosc_domyslna_projektu),p.Kod_jezyka(frame,i,wartosc_domyslna_jezyka),p.Kod_projektu(frame,i,wartosc_domyslna_projektu)); return kod_jezyka,kod_projektu; end; function p.Nazwa_przestrzeni_nazw_od_typu_jednostki(typ,args,bez_analizy) if(not bez_analizy)then local parametry_modul=require("Module:Parametry"); if((((not parametry_modul.CzyTak(args["obsługiwane jednostki jako nieopisowe strony"]))and((typ=="artykuł")or(typ=="podręcznik")))or (typ=="artykuł")))then return ""; elseif(((not parametry_modul.CzyTak(args["obsługiwane jednostki jako nieopisowe strony"]))and((typ=="artykuł dla dzieci")or(typ=="podręcznik dla dzieci")))or(typ=="artykuł dla dzieci"))then return "Wikijunior"; elseif((not parametry_modul.CzyTak(args["obsługiwane brudnopisy jako normalne strony"])) and(((not parametry_modul.CzyTak(args["obsługiwane jednostki jako nieopisowe strony"]))and(parametry_modul.CzyTak(args["obsługiwane jednostki brudnopisu projektu"])and (typ=="podręcznik brudnopisu projektu" or typ=="artykuł brudnopisu projektu")or (typ=="jednostka brudnopisu projektu")) or (typ=="strona brudnopisu projektu"))or(typ=="strona projektu"))or (typ=="strona projektu"))then return "Project"; elseif((parametry_modul.CzyTak(args["obsługiwane strony jako niebrudnopisowe jednostki programowe"]))and (typ=="strona szablonu") or(not parametry_modul.CzyTak(args["obsługiwane brudnopisy jako normalne strony"]) and((not parametry_modul.CzyTak(args["obsługiwane opisy jako strony jednostek programowych"]) and not parametry_modul.CzyTak(args["obsługiwane jednostki jako nieopisowe strony"]) and not parametry_modul.CzyTak(args["obsługiwane nieudokumentowane szablony jako szablony"])) and((typ=="strona brudnopisu szablonu")or(typ=="strona brudnopisu opisu szablonu"))or(typ=="strona brudnopisu szablonu")) or((not parametry_modul.CzyTak(args["obsługiwane opisy jako strony jednostek programowych"]) and not parametry_modul.CzyTak(args["obsługiwane jednostki jako nieopisowe strony"]) and not parametry_modul.CzyTak(args["obsługiwane nieudokumentowane szablony jako szablony"])) and((typ=="strona szablonu")or(typ=="strona opisu szablonu"))or(typ=="strona szablonu"))))then return "Template"; elseif((parametry_modul.CzyTak(args["obsługiwane strony jako niebrudnopisowe jednostki programowe"]))and (typ=="strona modułu") or(not parametry_modul.CzyTak(args["obsługiwane brudnopisy jako normalne strony"]) and((not parametry_modul.CzyTak(args["obsługiwane opisy jako strony jednostek programowych"]) and not parametry_modul.CzyTak(args["obsługiwane jednostki jako nieopisowe strony"])) and((typ=="strona brudnopisu modułu")or(typ=="strona brudnopisu opisu modułu"))or(typ=="strona brudnopisu modułu")) or((not parametry_modul.CzyTak(args["obsługiwane opisy jako strony jednostek programowych"]) and not parametry_modul.CzyTak(args["obsługiwane jednostki jako nieopisowe strony"])) and((typ=="strona modułu")or(typ=="strona opisu modułu"))or(typ=="strona modułu"))))then return "Module"; elseif(not parametry_modul.CzyTak(args["obsługiwane jednostki użytkownika jako normalne strony"]) and(((not parametry_modul.CzyTak(args["obsługiwane jednostki jako nieopisowe strony"]))and(parametry_modul.CzyTak(args["obsługiwane jednostki użytkownika"])and (typ=="podręcznik użytkownika" or typ=="artykuł użytkownika") or (typ=="jednostka użytkownika")) or (typ=="strona użytkownika"))or(typ=="strona główna użytkownika"))or(typ=="strona użytkownika"))then return "User"; elseif(typ=="strona pliku")then return "File"; elseif(typ=="strona kategorii")then return "Category"; elseif(typ=="strona pomocy")then return "Help"; elseif(typ=="strona komunikatu")then return "MediaWiki"; elseif(typ=="strona specjalna")then return "Special"; elseif(typ=="strona gadżetu")then return "Gadget"; elseif(typ=="strona główna projektu")then return "Project"; elseif(typ=="strona główna dla dzieci")then return "Wikijunior"; end; return; end; if(typ)then if((typ=="artykuł")or(typ=="podręcznik"))then return ""; elseif((typ=="artykuł dla dzieci")or(typ=="podręcznik dla dzieci"))then return "Wikijunior"; elseif((typ=="podręcznik brudnopisu projektu")or(typ=="artykuł brudnopisu projektu")or(typ=="jednostka brudnopisu projektu")or(typ=="strona brudnopisu projektu")or(typ=="strona projektu"))then return "Project"; elseif((typ=="strona szablonu")or(typ=="strona opisu szablonu")or(typ=="strona brudnopisu szablonu")or(typ=="strona brudnopisu opisu szablonu"))then return "Template"; elseif((typ=="strona modułu")or(typ=="strona opisu modułu")or(typ=="strona brudnopisu modułu")or(typ=="strona brudnopisu opisu modułu"))then return "Module"; elseif((typ=="podręcznik użytkownika")or(typ=="artykuł użytkownika")or(typ=="jednostka użytkownika")or(typ=="strona użytkownika")or(typ=="strona główna użytkownika"))then return "User"; elseif(typ=="strona pliku")then return "File"; elseif(typ=="strona kategorii")then return "Category"; elseif(typ=="strona pomocy")then return "Help"; elseif(typ=="strona komunikatu")then return "MediaWiki"; elseif(typ=="strona specjalna")then return "Special"; elseif(typ=="strona gadżetu")then return "Gadget"; elseif(typ=="strona główna projektu")then return "Project"; elseif(typ=="strona główna dla dzieci")then return "Wikijunior"; end; end; end; function p.Typ_jednostki_uzyskany_z_frame(frame,i) local numer_jednostki=i or frame.args["numer jednostki"]; local liczba_numer_jednostki=tonumber(numer_jednostki) or 0; local pf=frame.getParent and frame:getParent() or {args={}}; local typ; if liczba_numer_jednostki~=0 then typ=liczba_numer_jednostki and( (frame.args["typ jednostki "..liczba_numer_jednostki] or frame.args["typ jednostki i"]) or (pf.args["typ jednostki "..liczba_numer_jednostki] or pf.args["typ jednostki i"]) ); if(not typ)then local nazwa_jednostki=p.Nazwy_przestrzeni_i_jednostki_podane_o_pewnym_numerze(frame,liczba_numer_jednostki,2); if(nazwa_jednostki)then if(not mw.ustring.match(mw.text.trim(nazwa_jednostki),"^:"))then local nazwa_przesrzeni_nazw=p.Nazwy_przestrzeni_i_jednostki_podane_o_pewnym_numerze(frame,liczba_numer_jednostki,1); if(not nazwa_przesrzeni_nazw)then typ=frame.args["typ jednostki"] or pf.args["typ jednostki"]; end; end; end; end; else typ=frame.args["typ jednostki"] or pf.args["typ jednostki"]; end; local parametry_modul=require("Module:Parametry"); if(parametry_modul.CzyTak(typ))then typ,ile=mw.ustring.gsub(typ,"^(%S+)(%s+)(dyskusji)",function(strona,spacja,dyskusja) return strona; end); return typ,liczba_numer_jednostki,ile; end; return typ,liczba_numer_jednostki,0; end; function p.Czy_dyskusja_typu_jednostki_z_frame_od_dyskusja_typu_jednostki(frame,i) local typ,liczba_numer_jednostki,ile_dyskusja=p.Typ_jednostki_uzyskany_z_frame(frame,i); if(ile_dyskusja>0)then return true;end; local pf=frame.getParent and frame:getParent() or {args={},}; local function FuncTemp(liczba_numer_jednostki) local dyskusja_parametr="dyskusja typu jednostki"; if(liczba_numer_jednostki==0)then return frame.args[dyskusja_parametr] or pf.args[dyskusja_parametr]; else return ((frame.args[dyskusja_parametr.." "..liczba_numer_jednostki] or pf.args[dyskusja_parametr.." "..liczba_numer_jednostki]) or (frame.args[dyskusja_parametr.." i"] or pf.args[dyskusja_parametr.." i"]) or(frame.args[dyskusja_parametr] or pf.args[dyskusja_parametr])); end; end; local czy_dyskusja=FuncTemp(liczba_numer_jednostki); local parametry_modul=require("Module:Parametry"); local czy_dyskusja=parametry_modul.CzyTak(czy_dyskusja); return czy_dyskusja; end; function p.Nazwa_przestrzeni_nazw_uzyskana_z_typu_jednostki_z_frame(frame,i) local typ=p.Typ_jednostki_uzyskany_z_frame(frame,i); local nazwa_przestrzeni_nazw=typ and p.Nazwa_przestrzeni_nazw_od_typu_jednostki(typ,nil,true) or nil; if(nazwa_przestrzeni_nazw)then local czy_dyskusja=p.Czy_dyskusja_typu_jednostki_z_frame_od_dyskusja_typu_jednostki(frame,i); if(czy_dyskusja)then if(nazwa_przestrzeni_nazw=="")then return "Talk"; else return nazwa_przestrzeni_nazw.." talk"; end; else return nazwa_przestrzeni_nazw; end; else return nil; end; end; function p.Typ_jednostki(frame, kod_liczbowy_przestrzeni_nazw,i,numer_argorytmu) local parametry_modul=require("Module:Parametry"); local analiza=parametry_modul.CzyTak(frame.args["analiza"]); local typ,liczba_numer_jednostki=p.Typ_jednostki_uzyskany_z_frame(frame,i); local uzyskana_przestrzen_nazw_od_typu_jednostki; local nazwa_przestrzeni_nazw_podana,nazwa_jednostki_podana=p.Nazwy_przestrzeni_i_jednostki_podane_o_pewnym_numerze(frame,liczba_numer_jednostki); if((not analiza)and(typ))then if(typ~="")then uzyskana_przestrzen_nazw_od_typu_jednostki=p.Nazwa_przestrzeni_nazw_od_typu_jednostki(typ,frame.args); if(uzyskana_przestrzen_nazw_od_typu_jednostki)then if((not nazwa_przestrzeni_nazw_podana)and(not nazwa_jednostki_podana))then return typ; end; else return "(błąd typu jednostki)"; end; end; end; local nazwa_przestrzeni_nazw,nazwa_jednostki=p.Uzyskanie_nazw_jednostki(frame,kod_liczbowy_przestrzeni_nazw,nil,liczba_numer_jednostki,numer_argorytmu); local nazwy_modul=require("Module:Nazwy"); local kod_jezyka,kod_projektu=p.Wikikody_kontenera(frame,liczba_numer_jednostki); local wiki_modul=require("Module:Wiki"); local czy_biezaca=wiki_modul["CzyBieżącaWiki"]{["kod języka"]=kod_jezyka,["kod projektu"]=kod_projektu,}; local czy_blad_nazwa_przestrzeni_nazw; if(czy_biezaca)then czy_blad_nazwa_przestrzeni_nazw=nazwy_modul.Np{nazwa=nazwa_przestrzeni_nazw,["kanoniczna"]="tak",["nazwij projektem"]="tak",["nazwij dyskusją projektu"]="tak",["istnieje"]="tak",["wynik błędu nietekstowy"]="tak",} else czy_blad_nazwa_przestrzeni_nazw=nazwy_modul.NpDane{nazwa=nazwa_przestrzeni_nazw,["kanoniczna"]="tak",["nazwij projektem"]="tak",["nazwij dyskusją projektu"]="tak",["kod języka"]=kod_jezyka,["kod projektu"]=kod_projektu,["istnieje"]="tak",["wynik błędu nietekstowy"]="tak",} end; if(not czy_blad_nazwa_przestrzeni_nazw)then return "(błąd nazwy przestrzeni nazw)";end; nazwa_przestrzeni_nazw=czy_blad_nazwa_przestrzeni_nazw; --- --- if((not analiza)and(typ))then if(typ~="")then ---typ jednostki if(uzyskana_przestrzen_nazw_od_typu_jednostki)then if((nazwa_przestrzeni_nazw_podana)and(not nazwa_jednostki_podana))then if(uzyskana_przestrzen_nazw_od_typu_jednostki==nazwa_przestrzeni_nazw)then return typ; else return "(błąd niezgodności)"; end; end; else return "(błąd typu jednostki)"; end; end; end; local function Typ_jednostki() if(nazwa_jednostki~="")then --local kod_jezyka,kod_projektu=KodyWikiPudelka(frame,liczba_numer_jednostki); --local klucz_projektu=kod_projektu..":"..kod_jezyka; local pudelko_modul=require("Module:Pudełko"); local pelna_nazwa_strony=((nazwa_przestrzeni_nazw~="")and nazwa_przestrzeni_nazw..":" or "")..nazwa_jednostki; if(pudelko_modul.CzyNiepoprawnaNazwa(pelna_nazwa_strony))then return "(błąd nazwy jednostki)";end; local nazwy_modul=require("Module:Nazwy") pelna_nazwa_strony=nazwy_modul["PEŁNANAZWASTRONY"]{[1]=pelna_nazwa_strony,["kod języka"]=kod_jezyka,["kod projektu"]=kod_projektu,}; local norm_przed_lub_dyskusji=p.Normalna_przedmiotowa_lub_dyskusji_nazwa_przestrzeni_nazw(nazwa_przestrzeni_nazw,1,kod_jezyka,kod_projektu); if(kod_projektu==pudelko_modul["Kod projektu tego projektu"]())then local nazwa_strony_glownej_dla_dzieci_ze_zmiennej=p.Nazwa_strony_bazowej_dla_dzieci_ze_zmiennej(frame,liczba_numer_jednostki,kod_jezyka); if(nazwa_strony_glownej_dla_dzieci_ze_zmiennej=="")then return "(błąd nazwy strony głównej dla dzieci)";end; local nazwa_strony_glownej_wikijuniora=p.Nazwa_strony_bazowej_dla_dzieci_z_wikidanych(kod_jezyka); local nazwa_strony_glownej_dla_dzieci_uzyskana=(not nazwa_strony_glownej_dla_dzieci_ze_zmiennej)and nazwa_strony_glownej_wikijuniora or nazwa_strony_glownej_dla_dzieci_ze_zmiennej; if(nazwa_strony_glownej_dla_dzieci_uzyskana)then if(pudelko_modul.CzyNiepoprawnaNazwa(nazwa_strony_glownej_dla_dzieci_uzyskana))then return "(błąd nazwy strony głównej dla dzieci)";end; nazwa_strony_glownej_dla_dzieci_uzyskana=nazwy_modul["PEŁNANAZWASTRONY"]{[1]=nazwa_strony_glownej_dla_dzieci_uzyskana,["kod języka"]=kod_jezyka,["kod projektu"]=kod_projektu,}; if(pelna_nazwa_strony==nazwa_strony_glownej_dla_dzieci_uzyskana)then return "strona główna dla dzieci";end; end; end; local nazwa_strony_glownej_projektu_ze_zmiennej=p.Nazwa_strony_bazowej_projektu_ze_zmiennej(frame,liczba_numer_jednostki,kod_jezyka,kod_projektu); if(nazwa_strony_glownej_projektu_ze_zmiennej=="")then return "(błąd nazwy strony głównej projektu)";end; local nazwa_strony_glownej_projektu_z_wikidanych=p.Nazwa_strony_bazowej_projektu_z_wikidanych(kod_jezyka,kod_projektu); local nazwa_strony_glownej_projektu_uzyskana=(not nazwa_strony_glownej_projektu_ze_zmiennej)and nazwa_strony_glownej_projektu_z_wikidanych or nazwa_strony_glownej_projektu_ze_zmiennej; if(nazwa_strony_glownej_projektu_uzyskana)then if(pudelko_modul.CzyNiepoprawnaNazwa(nazwa_strony_glownej_projektu_uzyskana))then return "(błąd nazwy strony głównej projektu)";end; nazwa_strony_glownej_projektu_uzyskana=nazwy_modul["PEŁNANAZWASTRONY"]{[1]=nazwa_strony_glownej_projektu_uzyskana,["kod języka"]=kod_jezyka,["kod projektu"]=kod_projektu,}; if(pelna_nazwa_strony==nazwa_strony_glownej_projektu_uzyskana)then return "strona główna projektu";end; end; if(norm_przed_lub_dyskusji=="")then local parametry_modul=require("Module:Parametry"); if(parametry_modul.CzyTak(frame.args["obsługiwane jednostki jako nieopisowe strony"]))then return "artykuł"; else local it=mw.ustring.match(nazwa_jednostki,"^[^/]+$"); if(it)then return "podręcznik";else return "artykuł";end; end; elseif(norm_przed_lub_dyskusji=="Wikijunior")then local parametry_modul=require("Module:Parametry"); if(parametry_modul.CzyTak(frame.args["obsługiwane jednostki jako nieopisowe strony"]))then return "artykuł dla dzieci"; else local it=mw.ustring.match(nazwa_jednostki,"^[^/]+$"); if(it)then return "podręcznik dla dzieci";else return "artykuł dla dzieci";end; end; elseif(norm_przed_lub_dyskusji=="User")then local parametry_modul=require("Module:Parametry"); if(parametry_modul.CzyTak(frame.args["obsługiwane jednostki użytkownika jako normalne strony"]))then return "strona użytkownika"; else local czy_podstrony=mw.ustring.match(nazwa_jednostki,"^[^/]+$") if(czy_podstrony)then return "strona główna użytkownika"; else if(not parametry_modul.CzyTak(frame.args["obsługiwane jednostki jako nieopisowe strony"]))then if(parametry_modul.CzyTak(frame.args["obsługiwane jednostki użytkownika"]))then local czy_ksiazka=mw.ustring.match(nazwa_jednostki,"^[^/]+/[^/]*$"); if(czy_ksiazka)then return "podręcznik użytkownika"; else return "artykuł użytkownika"; end; else return "jednostka użytkownika"; end; else return "strona użytkownika"; end; end; end; elseif(norm_przed_lub_dyskusji=="File")then return "strona pliku"; elseif(norm_przed_lub_dyskusji=="Category")then return "strona kategorii"; elseif(norm_przed_lub_dyskusji=="Project")then local parametry_modul=require("Module:Parametry"); if(parametry_modul.CzyTak(frame.args["obsługiwane brudnopisy jako normalne strony"]))then return "strona projektu";end; if(mw.ustring.match(nazwa_jednostki,"^%s*[Bb]rudnopis/[^/]*/.*"))then if(not parametry_modul.CzyTak(frame.args["obsługiwane jednostki jako nieopisowe strony"]))then if(parametry_modul.CzyTak(frame.args["obsługiwane jednostki brudnopisu projektu"]))then local czy_ksiazka=mw.ustring.match(nazwa_jednostki,"^%s*[Bb]rudnopis/[^/]*/[^/]*$"); if(czy_ksiazka)then return "podręcznik brudnopisu projektu"; else return "artykuł brudnopisu projektu"; end; else return "jednostka brudnopisu projektu"; end; else return "strona brudnopisu projektu"; end; else return "strona projektu"; end; elseif(norm_przed_lub_dyskusji=="Help")then return "strona pomocy"; elseif(norm_przed_lub_dyskusji=="MediaWiki")then return "strona komunikatu"; elseif(norm_przed_lub_dyskusji=="Special")then return "strona specialna"; elseif(norm_przed_lub_dyskusji=="Gadget")then return "strona gadżetu"; elseif(norm_przed_lub_dyskusji=="Template")then local parametry_modul=require("Module:Parametry"); if(parametry_modul.CzyTak(frame.args["obsługiwane strony jako niebrudnopisowe jednostki programowe"]))then return "strona szablonu";end; local function CzySzablonAlboOpis(nazwa_przestrzeni_nazw,nazwa_jednostki,szablon,opis_szablonu,strona_szablonu,prefix) local parametry_modul=require("Module:Parametry"); if(parametry_modul.CzyTak(frame.args["obsługiwane opisy jako strony jednostek programowych"]) or parametry_modul.CzyTak(frame.args["obsługiwane jednostki jako nieopisowe strony"]))then return szablon; else if(mw.ustring.match(nazwa_jednostki,"^"..prefix..".*/opis$"))then return opis_szablonu; else if(not parametry_modul.CzyTak(frame.args["obsługiwane nieudokumentowane szablony jako szablony"]))then local czy_brudnopis=mw.ustring.match(nazwa_jednostki,"^"..prefix..".*$"); if(czy_brudnopis)then local pagename=(nazwa_przestrzeni_nazw~="")and nazwa_przestrzeni_nazw..":"..nazwa_jednostki or nazwa_jednostki; local czy_istnieje_strona,tab=require("Module:Techniczne").PoliczZbiory(pagename); if(czy_istnieje_strona==1)then local czy_brudnopis_opisu_szablonu=require("Module:Łatki").contentMatch{ [1]='<noinclude>.-{{%s*[Dd]okumentacja%s*}}.-</noinclude>', [2]='<noinclude>.-{{%s*[Dd]okumentacja%s*|.-</noinclude>',pagename=pagename,namespace=0 }; if(not czy_brudnopis_opisu_szablonu)then return opis_szablonu;else return szablon;end; else return szablon; end; else return strona_szablonu; end; else return szablon; end; end; end; end; if((not parametry_modul.CzyTak(frame.args["obsługiwane brudnopisy jako normalne strony"]))and(mw.ustring.match(nazwa_jednostki,"^%s*[Bb]rudnopis/[^/]*/.*")))then return CzySzablonAlboOpis(norm_przed_lub_dyskusji,nazwa_jednostki,"strona brudnopisu szablonu","strona brudnopisu opisu szablonu","strona szablonu","[Bb]rudnopis/[^/]*/"); else return CzySzablonAlboOpis(norm_przed_lub_dyskusji,nazwa_jednostki,"strona szablonu","strona opisu szablonu","strona szablonu",""); end; elseif(norm_przed_lub_dyskusji=="Module")then local parametry_modul=require("Module:Parametry"); if(parametry_modul.CzyTak(frame.args["obsługiwane strony jako niebrudnopisowe jednostki programowe"]))then return "strona modułu";end; if((not parametry_modul.CzyTak(frame.args["obsługiwane brudnopisy jako normalne strony"]))and(mw.ustring.match(nazwa_jednostki,"^%s*[Bb]rudnopis/[^/]*/.*")))then if(parametry_modul.CzyTak(frame.args["obsługiwane opisy jako strony jednostek programowych"]) or parametry_modul.CzyTak(frame.args["obsługiwane jednostki jako nieopisowe strony"]))then return "strona brudnopisu modułu" else local pelna_nazwa_strony=(norm_przed_lub_dyskusji~="")and norm_przed_lub_dyskusji..":"..nazwa_jednostki or nazwa_jednostki; pelna_nazwa_strony=require("Module:Nazwy")["PEŁNANAZWASTRONY"]{[1]=pelna_nazwa_strony,["kod języka"]=kod_jezyka,["kod projektu"]=kod_projektu,}; local pelna_nazwa_strony_brudnopisu_opisu_modulu=require("Module:Techniczne")["PełnaNazwaOpisuModułu"](pelna_nazwa_strony); if(pelna_nazwa_strony==pelna_nazwa_strony_brudnopisu_opisu_modulu)then return "strona brudnopisu opisu modułu"; else return "strona brudnopisu modułu"; end; end; else if(parametry_modul.CzyTak(frame.args["obsługiwane opisy jako strony jednostek programowych"]) or parametry_modul.CzyTak(frame.args["obsługiwane jednostki jako nieopisowe strony"]))then return "strona modułu" else local pelna_nazwa_strony=(norm_przed_lub_dyskusji~="")and norm_przed_lub_dyskusji..":"..nazwa_jednostki or nazwa_jednostki; pelna_nazwa_strony=require("Module:Nazwy")["PEŁNANAZWASTRONY"]{[1]=pelna_nazwa_strony,["kod języka"]=kod_jezyka,["kod projektu"]=kod_projektu,}; local pelna_nazwa_opisu_modulu=require("Module:Techniczne")["PełnaNazwaOpisuModułu"](pelna_nazwa_strony); if(pelna_nazwa_strony==pelna_nazwa_opisu_modulu)then return "strona opisu modułu"; else return "strona modułu"; end; end; end; else return "inne"; end; end; return "inne"; end; local typ_jednostki=Typ_jednostki(); local function TempFunc(typ_jednostki) if( (kod_liczbowy_przestrzeni_nazw==2) or((kod_liczbowy_przestrzeni_nazw==0)and(p.Czy_dyskusja_typu_jednostki_z_frame_od_dyskusja_typu_jednostki(frame,i))) )then typ_jednostki,ile=mw.ustring.gsub(typ_jednostki,"^(%S+)",function(strona) return strona.." dyskusji"; end); return typ_jednostki; end; return typ_jednostki; end; if(((analiza)or(nazwa_jednostki_podana))and(typ)and(typ~=""))then if(typ_jednostki==typ)then return TempFunc(typ_jednostki); elseif(nazwa_jednostki_podana)then return "(błąd parametrów pudełkowych)" else return "(błąd typu jednostki)"; end; end; return TempFunc(typ_jednostki); end; function p.Uzyskanie_nazw_jednostki(frame,kod_liczbowy_przestrzeni_nazw,czy_uwzglednic_alternatywna_nazwe,i,numer_argorytmu,co_ma_liczyc) local nazwa_przestrzeni_fun,nazwa_jednostki_fun; if(kod_liczbowy_przestrzeni_nazw==0)then nazwa_przestrzeni_fun="Nazwa przestrzeni nazw"; nazwa_jednostki_fun="Nazwa jednostki"; elseif(kod_liczbowy_przestrzeni_nazw==1)then nazwa_przestrzeni_fun="Nazwa przedmiotowej przestrzeni nazw"; nazwa_jednostki_fun="Nazwa przedmiotowa jednostki"; elseif(kod_liczbowy_przestrzeni_nazw==2)then nazwa_przestrzeni_fun="Nazwa przestrzeni nazw dyskusji" nazwa_jednostki_fun="Nazwa dyskusji jednostki"; else nazwa_przestrzeni_fun="Nazwa przestrzeni nazw"; nazwa_jednostki_fun="Nazwa jednostki"; end; local pudelko_modul=require("Module:Pudełko"); if(not numer_argorytmu)then if((not i)or(i==0))then if((not co_ma_liczyc)or(co_ma_liczyc==0))then local nazwa_przestrzeni_nazw=pudelko_modul[nazwa_przestrzeni_fun](frame,false); local nazwa_jednostki=pudelko_modul["Nazwa jednostki"](frame); return nazwa_przestrzeni_nazw,nazwa_jednostki; elseif(co_ma_liczyc==1)then local nazwa_przestrzeni_nazw=pudelko_modul[nazwa_przestrzeni_fun](frame,false); return nazwa_przestrzeni_nazw; elseif(co_ma_liczyc==2)then return pudelko_modul["Nazwa jednostki"](frame); end; else if((not co_ma_liczyc)or(co_ma_liczyc==0))then local n=p.Nazwa_przestrzeni_nazw_dodatkowe(frame,i); local parametry_modul=require("Module:Parametry"); n=parametry_modul.CzyTak(n); local nazwa_przestrzeni_nazw=(n) and pudelko_modul[nazwa_przestrzeni_fun](frame,czy_uwzglednic_alternatywna_nazwe,i) or pudelko_modul[nazwa_przestrzeni_fun.." 2"](frame,czy_uwzglednic_alternatywna_nazwe,i); local nazwa_jednostki=(n)and pudelko_modul["Nazwa jednostki"](frame,i) or pudelko_modul[nazwa_jednostki_fun.." 2"](frame,i); return nazwa_przestrzeni_nazw,nazwa_jednostki; elseif(co_ma_liczyc==1)then local n=p.Nazwa_przestrzeni_nazw_dodatkowe(frame,i); local parametry_modul=require("Module:Parametry"); n=parametry_modul.CzyTak(n); local nazwa_przestrzeni_nazw=(n) and pudelko_modul[nazwa_przestrzeni_fun](frame,czy_uwzglednic_alternatywna_nazwe,i) or pudelko_modul[nazwa_przestrzeni_fun.." 2"](frame,czy_uwzglednic_alternatywna_nazwe,i); return nazwa_przestrzeni_nazw; elseif(co_ma_liczyc==2)then local n=p.Nazwa_przestrzeni_nazw_dodatkowe(frame,i); local parametry_modul=require("Module:Parametry"); n=parametry_modul.CzyTak(n); return (n)and pudelko_modul["Nazwa jednostki"](frame,i) or pudelko_modul[nazwa_jednostki_fun.." 2"](frame,i); end; end; else if(numer_argorytmu==0)then if((not co_ma_liczyc)or(co_ma_liczyc==0))then local nazwa_przestrzeni_nazw=pudelko_modul[nazwa_przestrzeni_fun](frame,false,i); local nazwa_jednostki=pudelko_modul["Nazwa jednostki"](frame,i); return nazwa_przestrzeni_nazw,nazwa_jednostki; elseif(co_ma_liczyc==1)then local nazwa_przestrzeni_nazw=pudelko_modul[nazwa_przestrzeni_fun](frame,false,i); return nazwa_przestrzeni_nazw; elseif(co_ma_liczyc==2)then return pudelko_modul["Nazwa jednostki"](frame,i); end; else if((not co_ma_liczyc)or(co_ma_liczyc==0))then local nazwa_przestrzeni_nazw=pudelko_modul[nazwa_przestrzeni_fun.." 2"](frame,false,i); local nazwa_jednostki=pudelko_modul[nazwa_jednostki_fun.." 2"](frame,i); return nazwa_przestrzeni_nazw,nazwa_jednostki; elseif(co_ma_liczyc==1)then local nazwa_przestrzeni_nazw=pudelko_modul[nazwa_przestrzeni_fun.." 2"](frame,false,i); return nazwa_przestrzeni_nazw; elseif(co_ma_liczyc==2)then return pudelko_modul[nazwa_jednostki_fun.." 2"](frame,i); end; end; end; end; function p.Nazwa_przestrzeni_nazw_dodatkowe(frame,numer_jednostki) local pf=frame.getParent and frame:getParent() or {args={}}; return frame.args["nazwa przestrzeni nazw "..tostring(numer_jednostki)] or pf.args["nazwa przestrzeni nazw "..tostring(numer_jednostki)] end; function p.Nazwa_jednostki(frame,i) local pf=frame.getParent and frame:getParent() or {args={}}; local nazwa_jednostki,liczba_numer_jednostki=p.Nazwy_przestrzeni_i_jednostki_podane_o_pewnym_numerze(frame,i,2); local kod_jezyka,kod_projektu=p.Wikikody_kontenera(frame,liczba_numer_jednostki); if(nazwa_jednostki)then nazwa_jednostki=mw.text.trim(nazwa_jednostki); nazwa_jednostki=mw.ustring.gsub(nazwa_jednostki,"^:",""); nazwa_jednostki=mw.ustring.gsub(nazwa_jednostki,"^([^#]*)#(.*)$","%1"); local parametry=mw.ustring.match(nazwa_jednostki,"^.*%?([^%?]+)$"); if(parametry and mw.ustring.match(parametry,"[^=]+=[^=]*"))then nazwa_jednostki=mw.ustring.gsub(nazwa_jednostki,"^(.*)%?([^%?]+)$","%1"); end; else local nazwy_modul=require("Module:Nazwy"); nazwa_jednostki=nazwy_modul["NAZWASTRONY"]{["kod języka"]=kod_jezyka,["kod projektu"]=kod_projektu,}; end; local parametry_modul=require("Module:Parametry"); nazwa_jednostki=parametry_modul["Odstępy"]{[1]=nazwa_jednostki,[2]="tak",}; return mw.getContentLanguage():ucfirst(nazwa_jednostki); end; function p.Nazwy_przestrzeni_i_jednostki_podane_o_pewnym_numerze(frame,i,co_podac) local pf=frame.getParent and frame:getParent() or {args={}}; local numer_jednostki=i or frame.args["numer jednostki"]; local liczba_numer_jednostki=tonumber(numer_jednostki) or 0; local nazwa_jednostki; local bool_numer_jednostki=(liczba_numer_jednostki~=0); local function Nazwa_jednostki() if bool_numer_jednostki then nazwa_jednostki=frame.args["nazwa jednostki "..liczba_numer_jednostki] or ((liczba_numer_jednostki==1)and(pf.args["cel"])) or pf.args[liczba_numer_jednostki]; else nazwa_jednostki=frame.args["nazwa jednostki"] or pf.args["nazwa jednostki"]; end; return nazwa_jednostki; end; local function Nazwa_przestrzeni_nazw() local nazwa_przestrzeni_nazw=bool_numer_jednostki and (frame.args["nazwa przestrzeni nazw i"] or pf.args["nazwa przestrzeni nazw i"] or frame.args["nazwa przestrzeni nazw "..liczba_numer_jednostki] or pf.args["nazwa przestrzeni nazw "..liczba_numer_jednostki]) or frame.args["nazwa przestrzeni nazw"] or pf.args["nazwa przestrzeni nazw"]; return nazwa_przestrzeni_nazw; end; if(not co_podac)then return Nazwa_przestrzeni_nazw(),Nazwa_jednostki(),liczba_numer_jednostki; elseif(co_podac==1)then return Nazwa_przestrzeni_nazw(),liczba_numer_jednostki; elseif(co_podac==2)then return Nazwa_jednostki(),liczba_numer_jednostki; else return Nazwa_przestrzeni_nazw(),Nazwa_jednostki(),liczba_numer_jednostki; end; end; function p.Jaka_nazwa_jednostki(frame,i,jaka) local nazwa_przestrzeni_nazw,nazwa_jednostki,liczba_numer_jednostki=p.Nazwy_przestrzeni_i_jednostki_podane_o_pewnym_numerze(frame,i); nazwa_przestrzeni_nazw=nazwa_przestrzeni_nazw or p.Nazwa_przestrzeni_nazw_uzyskana_z_typu_jednostki_z_frame(frame,liczba_numer_jednostki); ---- local nazwy_modul=require("Module:Nazwy"); nazwa_przestrzeni_nazw=nazwa_przestrzeni_nazw and mw.text.trim(nazwa_przestrzeni_nazw) or nazwy_modul["NAZWAPRZESTRZENI"](); if(nazwa_jednostki)then local html_modul=require("Module:Html"); nazwa_jednostki=html_modul["NazwaStronyAdresu"](nazwa_jednostki,true); else nazwa_jednostki=nazwy_modul["NAZWASTRONY"](); end; local kod_jezyka,kod_projektu=p.Wikikody_kontenera(frame,liczba_numer_jednostki); local wiki_modul=require("Module:Wiki"); local czy_biezaca=wiki_modul["CzyBieżącaWiki"]{["kod języka"]=kod_jezyka,["kod projektu"]=kod_projektu,}; if(jaka)then if(czy_biezaca)then local tab_parametry={nazwa=nazwa_przestrzeni_nazw,}; if(jaka=="przedmiotowa")then tab_parametry["przedmiotowa"]="tak";end; nazwa_przestrzeni_nazw=nazwy_modul.Np(tab_parametry); else local tab_parametry={nazwa=nazwa_przestrzeni_nazw,["kod języka"]=kod_jezyka,["kod projektu"]=kod_projektu,}; if(jaka=="przedmiotowa")then tab_parametry["przedmiotowa"]="tak";end; nazwa_przestrzeni_nazw=nazwy_modul.NpDane(tab_parametry); end; else if(czy_biezaca)then nazwa_przestrzeni_nazw=nazwy_modul.Np{nazwa=nazwa_przestrzeni_nazw}; else nazwa_przestrzeni_nazw=nazwy_modul.NpDane{nazwa=nazwa_przestrzeni_nazw,["kod języka"]=kod_jezyka,["kod projektu"]=kod_projektu,}; end; end; if(not mw.ustring.match(nazwa_jednostki,"^:"))then if(nazwa_przestrzeni_nazw~="")then if((not typ)or(typ=="przedmiotowa"))then if(czy_biezaca)then local nazwy_np_modul=mw.loadData("Module:Nazwy/Np"); if(nazwa_przestrzeni_nazw==nazwy_np_modul.Template)then local nazwa_przestrzeni_nazw_d=nazwy_modul["NAZWAPRZESTRZENI"](nazwa_jednostki); if(nazwa_przestrzeni_nazw_d==nazwy_np_modul.Template)then return nazwy_modul["NAZWASTRONY"](nazwa_jednostki); end; elseif(nazwa_przestrzeni_nazw==nazwy_np_modul.Module)then local nazwa_przestrzeni_nazw_d=nazwy_modul["NAZWAPRZESTRZENI"](nazwa_jednostki); if(nazwa_przestrzeni_nazw_d==nazwy_np_modul.Module)then return nazwy_modul["NAZWASTRONY"](nazwa_jednostki); end; end; else local template_prze=nazwy_modul.NpDane{nazwa="Template",["kod języka"]=kod_jezyka,["kod projektu"]=kod_projektu,}; local module_prze=nazwy_modul.NpDane{nazwa="Module",["kod języka"]=kod_jezyka,["kod projektu"]=kod_projektu,}; if(nazwa_przestrzeni_nazw==template_prze)then local nazwa_przestrzeni_nazw_d=nazwy_modul["NAZWAPRZESTRZENI"]{[1]=nazwa_jednostki,["kod języka"]=kod_jezyka,["kod projektu"]=kod_projektu,}; if(nazwa_przestrzeni_nazw_d==template_prze)then return nazwy_modul["NAZWASTRONY"]{[1]=nazwa_jednostki,["kod języka"]=kod_jezyka,["kod projektu"]=kod_projektu,}; end; elseif(nazwa_przestrzeni_nazw==module_prze)then local nazwa_przestrzeni_nazw_d=nazwy_modul["NAZWAPRZESTRZENI"]{[1]=nazwa_jednostki,["kod języka"]=kod_jezyka,["kod projektu"]=kod_projektu,}; if(nazwa_przestrzeni_nazw_d==module_prze)then return nazwy_modul["NAZWASTRONY"]{[1]=nazwa_jednostki,["kod języka"]=kod_jezyka,["kod projektu"]=kod_projektu,}; end; end; end; end; local parametry_modul=require("Module:Parametry"); nazwa_jednostki=parametry_modul["Odstępy"]{[1]=nazwa_jednostki,[2]="tak",}; return mw.getContentLanguage():ucfirst(nazwa_jednostki); else return nazwy_modul["NAZWASTRONY"]{[1]=nazwa_jednostki,["kod języka"]=kod_jezyka,["kod projektu"]=kod_projektu,}; end; else return nazwy_modul["NAZWASTRONY"]{[1]=nazwa_jednostki,["kod języka"]=kod_jezyka,["kod projektu"]=kod_projektu,}; end; end; function p.Czy_przestrzen_nazw_jest_obslugiwana(frame,jakas_przestrzen_nazw,kod_jezyka,kod_projektu) local nazwy_modul=require("Module:Nazwy"); local parametry_modul=require("Module:Parametry"); local wiki_modul=require("Module:Wiki"); local czy_biezaca=wiki_modul["CzyBieżącaWiki"]{["kod języka"]=kod_jezyka,["kod projektu"]=kod_projektu,}; if(czy_biezaca)then jakas_przestrzen_nazw=nazwy_modul.Np{nazwa=jakas_przestrzen_nazw}; else jakas_przestrzen_nazw=nazwy_modul.NpDane{nazwa=jakas_przestrzen_nazw,["kod języka"]=kod_jezyka,["kod projektu"]=kod_projektu,}; end; local function nazwa_przestrzeni_nazw_fun(nazwa_przestrzeni_nazw_iter) if(czy_biezaca)then nazwa_przestrzeni_nazw_iter=nazwy_modul.Np{nazwa=nazwa_przestrzeni_nazw_iter}; else nazwa_przestrzeni_nazw_iter=nazwy_modul.NpDane{nazwa=nazwa_przestrzeni_nazw_iter,["kod języka"]=kod_jezyka,["kod projektu"]=kod_projektu,}; end; if(jakas_przestrzen_nazw==nazwa_przestrzeni_nazw_iter)then return true; end; return false; end; for licznik,nazwa_przestrzeni_nazw in pairs(frame.args)do if(type(licznik)=="number")then local nazwa_przestrzeni_nazw_element,klucze_element=mw.ustring.match(nazwa_przestrzeni_nazw,"^%s*([%w%s]*)%s*:%s*(.-)%s*"); if(nazwa_przestrzeni_nazw_element and klucze_element)then local tab_klucze=mw.text.split(klucze_element,"%s*,%s*",false); local wiki_modul=require("Module:Wiki"); for _,klucz_element in ipairs(tab_klucze)do local kod_jezyka_obslugiwane,kod_projektu_obslugiwane=wiki_modul.KluczProjektu(klucz_element); if(kod_jezyka_obslugiwane==kod_jezyka and kod_projektu_obslugiwane==kod_projektu)then local wynik=nazwa_przestrzeni_nazw_fun(nazwa_przestrzeni_nazw_element); if(wynik)then return true;end; end; end; else local wynik=nazwa_przestrzeni_nazw_fun(nazwa_przestrzeni_nazw); if(wynik)then return true;end; end; end; end; return false; end; function p.Analiza_interwiki_czy_projekt_aktualny(frame,czy_jezyk,czy_projekt) local parametry_modul=require("Module:Parametry"); local p=parametry_modul.PobierzFrameEwentualnieParent(frame); local pudelko_modul=require("Module:Pudełko"); local wiki_modul=require("Module:Wiki"); local jezyk_biezacy=czy_jezyk and pudelko_modul["Kod języka tego projektu"](); local projekt_biezacy=czy_projekt and pudelko_modul["Kod projektu tego projektu"](); for i,_ in pairs(p.args)do if(type(i)=="number")then local klucz_projektu=pudelko_modul["Klucz projektu"](frame,i); local kod_jezyka=pudelko_modul["Kod języka"](frame,i); local kod_projektu=pudelko_modul["kod projektu"](frame,i); local jezyk,projekt=wiki_modul.KodyWiki(klucz_projektu,kod_jezyka,kod_projektu); if((czy_jezyk and (jezyk~=jezyk_biezacy))or(czy_projekt and(projekt~=projekt_biezacy)))then return "tak"; end; end; end; return; end; return p; qwszulbo1jruv2qnhyqzg8wc5qbderu 540447 540444 2026-04-24T03:45:59Z Persino 2851 540447 Scribunto text/plain local p={}; function p.Nazwa_strony_bazowej_projektu_z_wikidanych(kod_jezyka,kod_projektu) local strona=require("Module:Pudełko")["Strona główna tego projektu"](); local odpowiednik_strony=require("Module:Wiki").WikidaneOdpowiednikStrony{["nazwa strony"]=strona,["kod języka"]=kod_jezyka,["kod projektu"]=kod_projektu}; if(odpowiednik_strony)then local nazwy_modul=require("Module:Nazwy"); return nazwy_modul["PEŁNANAZWASTRONY"]{[1]=odpowiednik_strony,["kod języka"]=kod_jezyka,["kod projektu"]=kod_projektu,}; else local pudelko_modul=require("Module:Pudełko"); if((kod_jezyka==pudelko_modul["Kod języka tego projektu"]())and(kod_projektu==pudelko_modul["Kod projektu tego projektu"]()))then return strona; else local wiki_interwiki_modul=mw.loadData("Module:Wiki/interwiki"); local czy_w_wikidanych=wiki_interwiki_modul.tablica_kody_projektu_wikidane.lingwistyczne[kod_projektu] or wiki_interwiki_modul.tablica_kody_projektu_wikidane.specjalistyczne[kod_projektu]; return czy_w_wikidanych and "Main Page" or nil; end; end; end; function p.Nazwa_strony_bazowej_dla_dzieci_z_wikidanych(kod_jezyka) local strona=require("Module:Pudełko")["Strona główna dla dzieci tego projektu"](); local pudelko_modul=require("Module:Pudełko"); local kod_jezyka_tego_projektu=pudelko_modul["Kod języka tego projektu"](); if(kod_jezyka==kod_jezyka_tego_projektu)then return strona;end; local kod_projektu_tego_projektu=pudelko_modul["Kod projektu tego projektu"](); local odpowiednik_strony=require("Module:Wiki").WikidaneOdpowiednikStrony{["nazwa strony"]=strona,["kod języka"]=kod_jezyka,["kod projektu"]=kod_projektu_tego_projektu}; if(odpowiednik_strony)then local nazwy_modul=require("Module:Nazwy"); return nazwy_modul["PEŁNANAZWASTRONY"]{[1]=odpowiednik_strony,["kod języka"]=kod_jezyka,["kod projektu"]=kod_projektu_tego_projektu,}; else return "Wikijunior"; end; end; function p.Nazwa_strony_bazowej_projektu_ze_zmiennej(frame,i,kod_jezyka,kod_projektu) local pf=frame.getParent and frame:getParent() or {args={}}; local strona_glowna_projektu; if(i~=0)then local pudelko_modul=require("Module:Pudełko"); local kod_jezyka_tego_projektu=pudelko_modul["Kod języka tego projektu"](); local kod_projektu_tego_projektu=pudelko_modul["Kod projektu tego projektu"](); if(kod_jezyka==kod_jezyka_tego_projektu)and(kod_projektu==kod_projektu_tego_projektu)then strona_glowna_projektu=frame.args["strona główna projektu"] or pf.args["strona główna projektu"] else strona_glowna_projektu=(frame.args["strona główna projektu "..i] or pf.args["strona główna projektu "..i]) end; else strona_glowna_projektu=frame.args["strona główna projektu"] or pf.args["strona główna projektu"] end; local parametry_modul=require("Module:Parametry"); return (parametry_modul.CzyTak(strona_glowna_projektu))and require("Module:Nazwy")["PEŁNANAZWASTRONY"]{[1]=strona_glowna_projektu,["kod języka"]=kod_jezyka,["kod projektu"]=kod_projektu,} or (strona_glowna_projektu and "" or nil); end; function p.Nazwa_strony_bazowej_dla_dzieci_ze_zmiennej(frame,i,kod_jezyka) local pf=frame.getParent and frame:getParent() or {args={}}; local pudelko_modul=require("Module:Pudełko"); local strona_glowna_dla_dzieci; if(i~=0)then local kod_jezyka_tego_projektu=pudelko_modul["Kod języka tego projektu"](); if(kod_jezyka==kod_jezyka_tego_projektu)then strona_glowna_dla_dzieci=frame.args["strona główna dla dzieci"] or pf.args["strona główna dla dzieci"] else strona_glowna_dla_dzieci=(frame.args["strona główna dla dzieci "..i] or pf.args["strona główna dla dzieci "..i]) end; else strona_glowna_dla_dzieci=frame.args["strona główna dla dzieci"] or pf.args["strona główna dla dzieci"] end; local kod_projektu_tego_projektu=pudelko_modul["Kod projektu tego projektu"](); local parametry_modul=require("Module:Parametry"); return (parametry_modul.CzyTak(strona_glowna_dla_dzieci))and require("Module:Nazwy")["PEŁNANAZWASTRONY"]{[1]=strona_glowna_dla_dzieci,["kod języka"]=kod_jezyka,["kod projektu"]=kod_projektu_tego_projektu,} or (strona_glowna_dla_dzieci and "" or nil); end; function p.Normalna_przedmiotowa_lub_dyskusji_nazwa_przestrzeni_nazw(nazwa_przestrzeni_nazw, normmalna_przedmiotwa_dyskusji,kod_jezyka,kod_projektu) local nazwa_przestrzeni_nazw_blad; local wiki_modul=require("Module:Wiki"); local nazwy_modul=require("Module:Nazwy"); local czy_biezaca=wiki_modul["CzyBieżącaWiki"]{["kod języka"]=kod_jezyka,["kod projektu"]=kod_projektu,}; if(normmalna_przedmiotwa_dyskusji==0)then if(czy_biezaca)then nazwa_przestrzeni_nazw_blad=nazwy_modul.Np{nazwa=nazwa_przestrzeni_nazw,["kanoniczna"]="tak",["nazwij projektem"]="tak",["nazwij dyskusją projektu"]="tak",["istnieje"]="tak",["wynik błędu nietekstowy"]="tak",}; else nazwa_przestrzeni_nazw_blad=nazwy_modul.NpDane{nazwa=nazwa_przestrzeni_nazw,["kanoniczna"]="tak",["nazwij projektem"]="tak",["nazwij dyskusją projektu"]="tak",["kod języka"]=kod_jezyka,["kod projektu"]=kod_projektu,["istnieje"]="tak",["wynik błędu nietekstowy"]="tak",}; end; elseif(normmalna_przedmiotwa_dyskusji==1)then if(czy_biezaca)then nazwa_przestrzeni_nazw_blad=nazwy_modul.Np{nazwa=nazwa_przestrzeni_nazw, przedmiotowa="tak",["kanoniczna"]="tak",["nazwij projektem"]="tak",["nazwij dyskusją projektu"]="tak",["istnieje"]="tak",["wynik błędu nietekstowy"]="tak",}; else nazwa_przestrzeni_nazw_blad=nazwy_modul.NpDane{nazwa=nazwa_przestrzeni_nazw, przedmiotowa="tak",["kanoniczna"]="tak",["nazwij projektem"]="tak",["nazwij dyskusją projektu"]="tak",["kod języka"]=kod_jezyka,["kod projektu"]=kod_projektu,["istnieje"]="tak",["wynik błędu nietekstowy"]="tak",}; end; elseif(normmalna_przedmiotwa_dyskusji==2)then if(czy_biezaca)then nazwa_przestrzeni_nazw_blad=nazwy_modul.Np{nazwa=nazwa_przestrzeni_nazw, dyskusja="tak",["kanoniczna"]="tak",["nazwij projektem"]="tak",["nazwij dyskusją projektu"]="tak",["istnieje"]="tak",["wynik błędu nietekstowy"]="tak",}; else nazwa_przestrzeni_nazw_blad=nazwy_modul.NpDane{nazwa=nazwa_przestrzeni_nazw, dyskusja="tak",["kanoniczna"]="tak",["nazwij projektem"]="tak",["nazwij dyskusją projektu"]="tak",["kod języka"]=kod_jezyka,["kod projektu"]=kod_projektu,["istnieje"]="tak",["wynik błędu nietekstowy"]="tak",}; end; else if(czy_biezaca)then nazwa_przestrzeni_nazw_blad=nazwy_modul.Np{nazwa=nazwa_przestrzeni_nazw,["kanoniczna"]="tak",["nazwij projektem"]="tak",["nazwij dyskusją projektu"]="tak",["istnieje"]="tak",["wynik błędu nietekstowy"]="tak",}; else nazwa_przestrzeni_nazw_blad=nazwy_modul.NpDane{nazwa=nazwa_przestrzeni_nazw,["kanoniczna"]="tak",["nazwij projektem"]="tak",["nazwij dyskusją projektu"]="tak",["kod języka"]=kod_jezyka,["kod projektu"]=kod_projektu,["istnieje"]="tak",["wynik błędu nietekstowy"]="tak",}; end; end; return nazwa_przestrzeni_nazw_blad end; function p.Nazwa_przestrzeni_nazw(frame,kod_liczbowy_przestrzeni_nazw,czy_uwzglednic_alternatywna_nazwe,numer_jednostki) local pf=frame.getParent and frame:getParent() or {args={}}; local nazwa_przestrzeni_nazw=p.Nazwy_przestrzeni_i_jednostki_podane_o_pewnym_numerze(frame,numer_jednostki,1) or p.Nazwa_przestrzeni_nazw_uzyskana_z_typu_jednostki_z_frame(frame,numer_jednostki); local nazwy_modul=require("Module:Nazwy"); local wiki_modul=require("Module:Wiki"); local kod_jezyka,kod_projektu=p.Wikikody_kontenera(frame,numer_jednostki); local czy_biezaca_wiki=wiki_modul["CzyBieżącaWiki"]{["kod języka"]=kod_jezyka,["kod projektu"]=kod_projektu,}; local czy_blad_nazwy_przestrzeni_nazw; local typ; if(kod_liczbowy_przestrzeni_nazw==1)then typ="przedmiotowa"; if(czy_biezaca_wiki)then czy_blad_nazwy_przestrzeni_nazw=(not nazwa_przestrzeni_nazw)and nazwy_modul["PRZEDMIOTOWAPRZESTRZEŃ"]() or nazwy_modul.Np{nazwa=nazwa_przestrzeni_nazw,przedmiotowa="tak",["istnieje"]="tak",["wynik błędu nietekstowy"]="tak",}; else czy_blad_nazwy_przestrzeni_nazw=(not nazwa_przestrzeni_nazw)and nazwy_modul["PRZEDMIOTOWAPRZESTRZEŃ"]{["kod języka"]=kod_jezyka,["kod projektu"]=kod_projektu,} or nazwy_modul.NpDane{nazwa=nazwa_przestrzeni_nazw,przedmiotowa="tak",["kod języka"]=kod_jezyka,["kod projektu"]=kod_projektu,["istnieje"]="tak",["wynik błędu nietekstowy"]="tak",}; end; elseif(kod_liczbowy_przestrzeni_nazw==2)then if(czy_biezaca_wiki)then typ="dyskusja"; czy_blad_nazwy_przestrzeni_nazw=(not nazwa_przestrzeni_nazw)and nazwy_modul["PRZESTRZEŃDYSKUSJI"]() or nazwy_modul.Np{nazwa=nazwa_przestrzeni_nazw,dyskusja="tak",["istnieje"]="tak",["wynik błędu nietekstowy"]="tak",}; else czy_blad_nazwy_przestrzeni_nazw=(not nazwa_przestrzeni_nazw)and nazwy_modul["PRZESTRZEŃDYSKUSJI"]{["kod języka"]=kod_jezyka,["kod projektu"]=kod_projektu,} or nazwy_modul.NpDane{nazwa=nazwa_przestrzeni_nazw,dyskusja="tak",["kod języka"]=kod_jezyka,["kod projektu"]=kod_projektu,["istnieje"]="tak",["wynik błędu nietekstowy"]="tak",}; end; else if(czy_biezaca_wiki)then czy_blad_nazwy_przestrzeni_nazw=(not nazwa_przestrzeni_nazw)and nazwy_modul["NAZWAPRZESTRZENI"]() or nazwy_modul.Np{nazwa=nazwa_przestrzeni_nazw,["istnieje"]="tak",["wynik błędu nietekstowy"]="tak",}; else czy_blad_nazwy_przestrzeni_nazw=(not nazwa_przestrzeni_nazw)and nazwy_modul["NAZWAPRZESTRZENI"]{["kod języka"]=kod_jezyka,["kod projektu"]=kod_projektu,} or nazwy_modul.NpDane{nazwa=nazwa_przestrzeni_nazw,["kod języka"]=kod_jezyka, ["kod projektu"]=kod_projektu,["istnieje"]="tak",["wynik błędu nietekstowy"]="tak",}; end; end; if(czy_blad_nazwy_przestrzeni_nazw)then return czy_blad_nazwy_przestrzeni_nazw; else if(((czy_uwzglednic_alternatywna_nazwe==nil)and true or czy_uwzglednic_alternatywna_nazwe) and frame.args[1])then local nazwa_przestrzeni_nazw_alternatywnej=mw.text.trim(frame.args[1]); if(mw.ustring.match(nazwa_przestrzeni_nazw_alternatywnej,"^[%w%s_]*$"))then local czy_blad_nazwa_przestrzeni_nazw_alternatywnej; if(czy_biezaca_wiki)then local tab_parametry={nazwa=nazwa_przestrzeni_nazw_alternatywnej,["istnieje"]="tak",["wynik błędu nietekstowy"]="tak",}; if(typ)then tab_parametry[typ]="tak";end; czy_blad_nazwa_przestrzeni_nazw_alternatywnej=nazwy_modul.Np(tab_parametry); else local tab_parametry={nazwa=nazwa_przestrzeni_nazw_alternatywnej,["kod języka"]=kod_jezyka,["kod projektu"]=kod_projektu,["istnieje"]="tak",["wynik błędu nietekstowy"]="tak",}; if(typ)then tab_parametry[typ]="tak";end; czy_blad_nazwa_przestrzeni_nazw_alternatywnej=nazwy_modul.NpDane(tab_parametry); end; return czy_blad_nazwa_przestrzeni_nazw_alternatywnej or "(błąd)"; else return "(błąd)"; end; else local parametry_modul=require("Module:Parametry"); nazwa_przestrzeni_nazw=parametry_modul["Odstępy"]{[1]=nazwa_przestrzeni_nazw,[2]="tak",}; if(mw.ustring.match(nazwa_przestrzeni_nazw,"^[%w%s_]*$"))then return nazwa_przestrzeni_nazw; else return "(błąd)"; end; end; end; end; function p.Nazwa_przestrzeni_nazw_2(frame,czy_uwzglednic_alternatywna_nazwe,i) local nazwa_przestrzeni_nazw,nazwa_jednostki,liczba_numer_jednostki=p.Nazwy_przestrzeni_i_jednostki_podane_o_pewnym_numerze(frame,i); nazwa_przestrzeni_nazw=nazwa_przestrzeni_nazw or p.Nazwa_przestrzeni_nazw_uzyskana_z_typu_jednostki_z_frame(frame,liczba_numer_jednostki); local nazwy_modul=require("Module:Nazwy"); local kod_jezyka,kod_projektu=p.Wikikody_kontenera(frame,liczba_numer_jednostki); local wiki_modul=require("Module:Wiki"); local czy_biezaca_wiki=wiki_modul["CzyBieżącaWiki"]{["kod języka"]=kod_jezyka,["kod projektu"]=kod_projektu,}; local nazwa_przestrzeni_nazw_blad; local parametry_modul=require("Module:Parametry"); if(czy_biezaca_wiki)then nazwa_przestrzeni_nazw=nazwa_przestrzeni_nazw and mw.text.trim(nazwa_przestrzeni_nazw) or nazwy_modul["NAZWAPRZESTRZENI"](); nazwa_przestrzeni_nazw_blad=require("Module:Nazwy").Np{nazwa=nazwa_przestrzeni_nazw,["istnieje"]="tak",["wynik błędu nietekstowy"]="tak",}; if(nazwa_jednostki)then nazwa_jednostki=parametry_modul["Odstępy"]{[1]=nazwa_jednostki,[2]="tak",}; nazwa_jednostki=mw.ustring.gsub(nazwa_jednostki,"^([^#]*)#(.*)$","%1"); local parametry=mw.ustring.match(nazwa_jednostki,"^.*%?([^%?]+)$"); if(parametry and mw.ustring.match(parametry,"[^=]+=[^=]*"))then nazwa_jednostki=mw.ustring.gsub(nazwa_jednostki,"^(.*)%?([^%?]+)$","%1"); end; else nazwa_jednostki=nazwy_modul["NAZWASTRONY"](); end; else nazwa_przestrzeni_nazw=nazwa_przestrzeni_nazw and mw.text.trim(nazwa_przestrzeni_nazw) or nazwy_modul["NAZWAPRZESTRZENI"]{["kod języka"]=kod_jezyka,["kod projektu"]=kod_projektu,}; nazwa_przestrzeni_nazw_blad=require("Module:Nazwy").NpDane{nazwa=nazwa_przestrzeni_nazw,["kod języka"]=kod_jezyka,["kod projektu"]=kod_projektu,["istnieje"]="tak",["wynik błędu nietekstowy"]="tak",}; if(nazwa_jednostki)then local html_modul=require("Module:Html"); nazwa_jednostki=html_modul["NazwaStronyAdresu"](nazwa_jednostki,true); else nazwa_jednostki=nazwy_modul["NAZWASTRONY"]{["kod języka"]=kod_jezyka,["kod projektu"]=kod_projektu,}; end; end; nazwa_przestrzeni_nazw=nazwa_przestrzeni_nazw_blad or nazwa_przestrzeni_nazw; if(not mw.ustring.match(nazwa_jednostki,"^:"))then if(nazwa_przestrzeni_nazw~="")then if(czy_biezaca_wiki)then local nazwy_np_modul=mw.loadData("Module:Nazwy/Np"); if(nazwa_przestrzeni_nazw==nazwy_np_modul.Template)then local nazwa_przestrzeni_nazw_d=require("Module:Nazwy")["NAZWAPRZESTRZENI"](nazwa_jednostki); if(nazwa_przestrzeni_nazw_d==nazwy_np_modul.Template)then nazwa_przestrzeni_nazw=nazwy_np_modul.Template; end; elseif(nazwa_przestrzeni_nazw==nazwy_np_modul.Module)then local nazwa_przestrzeni_nazw_d=require("Module:Nazwy")["NAZWAPRZESTRZENI"](nazwa_jednostki); if(nazwa_przestrzeni_nazw_d==nazwy_np_modul.Module)then nazwa_przestrzeni_nazw=nazwy_np_modul.Module; end; end; else local template_prze=nazwy_modul.NpDane{nazwa="Template",["kod języka"]=kod_jezyka,["kod projektu"]=kod_projektu,}; local module_prze=nazwy_modul.NpDane{nazwa="Module",["kod języka"]=kod_jezyka,["kod projektu"]=kod_projektu,}; if(nazwa_przestrzeni_nazw==template_prze)then local nazwa_przestrzeni_nazw_d=nazwy_modul["NAZWAPRZESTRZENI"]{[1]=nazwa_jednostki,["kod języka"]=kod_jezyka,["kod projektu"]=kod_projektu,}; if(nazwa_przestrzeni_nazw_d==template_prze)then nazwa_przestrzeni_nazw=template_prze; end; elseif(nazwa_przestrzeni_nazw==module_prze)then local nazwa_przestrzeni_nazw_d=nazwy_modul["NAZWAPRZESTRZENI"]{[1]=nazwa_jednostki,["kod języka"]=kod_jezyka,["kod projektu"]=kod_projektu,}; if(nazwa_przestrzeni_nazw_d==module_prze)then nazwa_przestrzeni_nazw=module_prze; end; end; end; if(not nazwa_przestrzeni_nazw_blad)then if(((czy_uwzglednic_alternatywna_nazwe==nil)and true or czy_uwzglednic_alternatywna_nazwe) and frame.args[1])then local wytrimowana_nazwa_przestrzeni_nazw=mw.text.trim(frame.args[1]); if(mw.ustring.match(wytrimowana_nazwa_przestrzeni_nazw,"^[%w%s_]*$"))then if(czy_biezaca_wiki)then local nazwy_modul=require("Module:Nazwy"); local czy_blad_nazwy_przestrzeni_nazw=nazwy_modul.Np{nazwa=wytrimowana_nazwa_przestrzeni_nazw,["istnieje"]="tak",["wynik błędu nietekstowy"]="tak",} return czy_blad_nazwy_przestrzeni_nazw or "(błąd)"; else local nazwy_modul=require("Module:Nazwy"); local nazwa_przestrzeni_nazw_blad2=nazwy_modul.NpDane{nazwa=wytrimowana_nazwa_przestrzeni_nazw,["kod języka"]=kod_jezyka,["kod projektu"]=kod_projektu,["istnieje"]="tak",["wynik błędu nietekstowy"]="tak",}; return nazwa_przestrzeni_nazw_blad2 or "(błąd)"; end; else return "(błąd)"; end; else local wytrimowana_nazwa_przestrzeni_nazw=mw.text.trim(nazwa_przestrzeni_nazw); if(mw.ustring.match(wytrimowana_nazwa_przestrzeni_nazw,"^[%w%s_]*$"))then return wytrimowana_nazwa_przestrzeni_nazw; else return "(błąd)"; end; end; else return nazwa_przestrzeni_nazw; end; else return require("Module:Nazwy")["NAZWAPRZESTRZENI"]{[1]=nazwa_jednostki,["kod języka"]=kod_jezyka,["kod projektu"]=kod_projektu,}; end; else return require("Module:Nazwy")["NAZWAPRZESTRZENI"]{[1]=nazwa_jednostki,["kod języka"]=kod_jezyka,["kod projektu"]=kod_projektu,}; end; end; function p.Nazwa_przestrzeni_nazw_przedmiotowa_dyskusji_2(frame,czy_uwzglednic_alternatywna_nazwe,i,typ) local numer_jednostki=i or frame.args["numer jednostki"]; local liczba_numer_jednostki=((numer_jednostki)and(tonumber(numer_jednostki))or 0); local pudelko_modul=require("Module:Pudełko"); local tab_nazwa={ ["przedmiotowa"]="Nazwa przedmiotowej przestrzeni nazw", ["dyskusja"]="Nazwa przestrzeni nazw", }; local nazwa_przestrzeni_nazw=pudelko_modul[tab_nazwa[typ]](frame,czy_uwzglednic_alternatywna_nazwe,liczba_numer_jednostki); local nazwy_modul=require("Module:Nazwy"); if(nazwa_przestrzeni_nazw=="")then local nazwa_jednostki=pudelko_modul["Nazwa jednostki"](frame,liczba_numer_jednostki); local kod_jezyka,kod_projektu=p.Wikikody_kontenera(frame,liczba_numer_jednostki); local tab_nazwa={ ["przedmiotowa"]="PRZEDMIOTOWAPRZESTRZEŃ", ["dyskusja"]="PRZESTRZEŃDYSKUSJI", }; nazwa_przestrzeni_nazw=nazwy_modul[tab_nazwa[typ]]{nazwa=nazwa_jednostki,["kod języka"]=kod_jezyka,["kod projektu"]=kod_projektu,}; else if(typ=="dyskusja")then local wiki_modul=require("Module:Wiki"); local czy_biezaca=wiki_modul["CzyBieżącaWiki"]{["kod języka"]=kod_jezyka,["kod projektu"]=kod_projektu,}; if(czy_biezaca)then nazwa_przestrzeni_nazw=nazwy_modul.Np{[typ]="tak",nazwa=nazwa_przestrzeni_nazw}; else nazwa_przestrzeni_nazw=nazwy_modul.NpDane{[typ]="tak",nazwa=nazwa_przestrzeni_nazw,["kod języka"]=kod_jezyka,["kod projektu"]=kod_projektu,}; end; end; end; return nazwa_przestrzeni_nazw; end; function p.Kod_jezyka(frame,i,wartosc_domyslna) local pudelko_modul=require("Module:Pudełko"); if(not i)then return pudelko_modul["Kod języka tego projektu"]();end; local pf=frame.getParent and frame:getParent() or {args={}}; if(i==0)then return pudelko_modul["Kod języka tego projektu"](); elseif(i==1)then local parametry_modul=require("Module:Parametry"); local kod_jezyka=frame.args["kod języka"] or frame.args["kod języka 1"] or pf.args["kod języka"] or pf.args["kod języka 1"] return ((kod_jezyka)and(kod_jezyka~=""))and mw.text.trim(kod_jezyka) or ((parametry_modul.CzyTak(wartosc_domyslna))and wartosc_domyslna or nil); elseif(i>1)then local parametry_modul=require("Module:Parametry"); local kod_jezyka=frame.args["kod języka "..i] or pf.args["kod języka "..i] return ((kod_jezyka)and(kod_jezyka~=""))and mw.text.trim(kod_jezyka) or ((parametry_modul.CzyTak(wartosc_domyslna))and wartosc_domyslna or nil); end; end function p.Kod_projektu(frame,i,wartosc_domyslna) local pudelko_modul=require("Module:Pudełko"); if(not i)then return pudelko_modul["Kod projektu tego projektu"]();end; local pf=frame.getParent and frame:getParent() or {args={}}; if(i==0)then return pudelko_modul["Kod projektu tego projektu"](); elseif(i==1)then local parametry_modul=require("Module:Parametry"); local kod_projektu=frame.args["kod projektu"] or frame.args["kod projektu 1"] or pf.args["kod projektu"] or pf.args["kod projektu 1"] return ((kod_projektu)and(kod_projektu~=""))and mw.text.trim(kod_projektu) or ((parametry_modul.CzyTak(wartosc_domyslna))and wartosc_domyslna or nil); elseif(i>1)then local parametry_modul=require("Module:Parametry"); local kod_projektu=frame.args["kod projektu "..i] or pf.args["kod projektu "..i] return ((kod_projektu)and(kod_projektu~=""))and mw.text.trim(kod_projektu) or ((parametry_modul.CzyTak(wartosc_domyslna))and wartosc_domyslna or nil); end; end function p.Klucz_projektu(frame,i,wartosc_domyslna_jezyka,wartosc_domyslna_projektu) local pf=frame.getParent and frame:getParent() or {args={}}; local klucz_projektu; local function domyslne_klucz(klucz_projektu) local parametry_modul=require("Module:Parametry"); return ((klucz_projektu)and(klucz_projektu~=""))and mw.text.trim(klucz_projektu)or((parametry_modul.CzyTak(wartosc_domyslna_jezyka)and(parametry_modul.CzyTak(wartosc_domyslna_projektu)))and (wartosc_domyslna_jezyka..":" ..wartosc_domyslna_projektu)or(parametry_modul.CzyTak(wartosc_domyslna_jezyka) and wartosc_domyslna_jezyka or (parametry_modul.CzyTak(wartosc_domyslna_projektu) and wartosc_domyslna_projektu or nil))); end; if(i==0)then return nil; elseif(i==1)then local klucz_projektu=frame.args["klucz projektu"] or frame.args["klucz projektu 1"] or pf.args["klucz projektu"] or pf.args["klucz projektu 1"]; return domyslne_klucz(klucz_projektu); elseif(i>1)then local klucz_projektu=frame.args["klucz projektu "..i] or pf.args["klucz projektu "..i]; return domyslne_klucz(klucz_projektu); end; end; function p.Wikikody_kontenera(frame,i,wartosc_domyslna_jezyka,wartosc_domyslna_projektu) local wiki_modul=require("Module:Wiki"); local kod_jezyka,kod_projektu=wiki_modul.KodyWiki(p.Klucz_projektu(frame,i,wartosc_domyslna_jezyka,wartosc_domyslna_projektu),p.Kod_jezyka(frame,i,wartosc_domyslna_jezyka),p.Kod_projektu(frame,i,wartosc_domyslna_projektu)); return kod_jezyka,kod_projektu; end; function p.Nazwa_przestrzeni_nazw_od_typu_jednostki(typ,args,bez_analizy) if(not bez_analizy)then local parametry_modul=require("Module:Parametry"); if((((not parametry_modul.CzyTak(args["obsługiwane jednostki jako nieopisowe strony"]))and((typ=="artykuł")or(typ=="podręcznik")))or (typ=="artykuł")))then return ""; elseif(((not parametry_modul.CzyTak(args["obsługiwane jednostki jako nieopisowe strony"]))and((typ=="artykuł dla dzieci")or(typ=="podręcznik dla dzieci")))or(typ=="artykuł dla dzieci"))then return "Wikijunior"; elseif((not parametry_modul.CzyTak(args["obsługiwane brudnopisy jako normalne strony"])) and(((not parametry_modul.CzyTak(args["obsługiwane jednostki jako nieopisowe strony"]))and(parametry_modul.CzyTak(args["obsługiwane jednostki brudnopisu projektu"])and (typ=="podręcznik brudnopisu projektu" or typ=="artykuł brudnopisu projektu")or (typ=="jednostka brudnopisu projektu")) or (typ=="strona brudnopisu projektu"))or(typ=="strona projektu"))or (typ=="strona projektu"))then return "Project"; elseif((parametry_modul.CzyTak(args["obsługiwane strony jako niebrudnopisowe jednostki programowe"]))and (typ=="strona szablonu") or(not parametry_modul.CzyTak(args["obsługiwane brudnopisy jako normalne strony"]) and((not parametry_modul.CzyTak(args["obsługiwane opisy jako strony jednostek programowych"]) and not parametry_modul.CzyTak(args["obsługiwane jednostki jako nieopisowe strony"]) and not parametry_modul.CzyTak(args["obsługiwane nieudokumentowane szablony jako szablony"])) and((typ=="strona brudnopisu szablonu")or(typ=="strona brudnopisu opisu szablonu"))or(typ=="strona brudnopisu szablonu")) or((not parametry_modul.CzyTak(args["obsługiwane opisy jako strony jednostek programowych"]) and not parametry_modul.CzyTak(args["obsługiwane jednostki jako nieopisowe strony"]) and not parametry_modul.CzyTak(args["obsługiwane nieudokumentowane szablony jako szablony"])) and((typ=="strona szablonu")or(typ=="strona opisu szablonu"))or(typ=="strona szablonu"))))then return "Template"; elseif((parametry_modul.CzyTak(args["obsługiwane strony jako niebrudnopisowe jednostki programowe"]))and (typ=="strona modułu") or(not parametry_modul.CzyTak(args["obsługiwane brudnopisy jako normalne strony"]) and((not parametry_modul.CzyTak(args["obsługiwane opisy jako strony jednostek programowych"]) and not parametry_modul.CzyTak(args["obsługiwane jednostki jako nieopisowe strony"])) and((typ=="strona brudnopisu modułu")or(typ=="strona brudnopisu opisu modułu"))or(typ=="strona brudnopisu modułu")) or((not parametry_modul.CzyTak(args["obsługiwane opisy jako strony jednostek programowych"]) and not parametry_modul.CzyTak(args["obsługiwane jednostki jako nieopisowe strony"])) and((typ=="strona modułu")or(typ=="strona opisu modułu"))or(typ=="strona modułu"))))then return "Module"; elseif(not parametry_modul.CzyTak(args["obsługiwane jednostki użytkownika jako normalne strony"]) and(((not parametry_modul.CzyTak(args["obsługiwane jednostki jako nieopisowe strony"]))and(parametry_modul.CzyTak(args["obsługiwane jednostki użytkownika"])and (typ=="podręcznik użytkownika" or typ=="artykuł użytkownika") or (typ=="jednostka użytkownika")) or (typ=="strona użytkownika"))or(typ=="strona główna użytkownika"))or(typ=="strona użytkownika"))then return "User"; elseif(typ=="strona pliku")then return "File"; elseif(typ=="strona kategorii")then return "Category"; elseif(typ=="strona pomocy")then return "Help"; elseif(typ=="strona komunikatu")then return "MediaWiki"; elseif(typ=="strona specjalna")then return "Special"; elseif(typ=="strona gadżetu")then return "Gadget"; elseif(typ=="strona główna projektu")then return "Project"; elseif(typ=="strona główna dla dzieci")then return "Wikijunior"; end; return; end; if(typ)then if((typ=="artykuł")or(typ=="podręcznik"))then return ""; elseif((typ=="artykuł dla dzieci")or(typ=="podręcznik dla dzieci"))then return "Wikijunior"; elseif((typ=="podręcznik brudnopisu projektu")or(typ=="artykuł brudnopisu projektu")or(typ=="jednostka brudnopisu projektu")or(typ=="strona brudnopisu projektu")or(typ=="strona projektu"))then return "Project"; elseif((typ=="strona szablonu")or(typ=="strona opisu szablonu")or(typ=="strona brudnopisu szablonu")or(typ=="strona brudnopisu opisu szablonu"))then return "Template"; elseif((typ=="strona modułu")or(typ=="strona opisu modułu")or(typ=="strona brudnopisu modułu")or(typ=="strona brudnopisu opisu modułu"))then return "Module"; elseif((typ=="podręcznik użytkownika")or(typ=="artykuł użytkownika")or(typ=="jednostka użytkownika")or(typ=="strona użytkownika")or(typ=="strona główna użytkownika"))then return "User"; elseif(typ=="strona pliku")then return "File"; elseif(typ=="strona kategorii")then return "Category"; elseif(typ=="strona pomocy")then return "Help"; elseif(typ=="strona komunikatu")then return "MediaWiki"; elseif(typ=="strona specjalna")then return "Special"; elseif(typ=="strona gadżetu")then return "Gadget"; elseif(typ=="strona główna projektu")then return "Project"; elseif(typ=="strona główna dla dzieci")then return "Wikijunior"; end; end; end; function p.Typ_jednostki_uzyskany_z_frame(frame,i) local numer_jednostki=i or frame.args["numer jednostki"]; local liczba_numer_jednostki=tonumber(numer_jednostki) or 0; local pf=frame.getParent and frame:getParent() or {args={}}; local typ; if liczba_numer_jednostki~=0 then typ=liczba_numer_jednostki and( (frame.args["typ jednostki "..liczba_numer_jednostki] or frame.args["typ jednostki i"]) or (pf.args["typ jednostki "..liczba_numer_jednostki] or pf.args["typ jednostki i"]) ); if(not typ)then local nazwa_jednostki=p.Nazwy_przestrzeni_i_jednostki_podane_o_pewnym_numerze(frame,liczba_numer_jednostki,2); if(nazwa_jednostki)then if(not mw.ustring.match(mw.text.trim(nazwa_jednostki),"^:"))then local nazwa_przesrzeni_nazw=p.Nazwy_przestrzeni_i_jednostki_podane_o_pewnym_numerze(frame,liczba_numer_jednostki,1); if(not nazwa_przesrzeni_nazw)then typ=frame.args["typ jednostki"] or pf.args["typ jednostki"]; end; end; end; end; else typ=frame.args["typ jednostki"] or pf.args["typ jednostki"]; end; local parametry_modul=require("Module:Parametry"); if(parametry_modul.CzyTak(typ))then typ,ile=mw.ustring.gsub(typ,"^(%S+)(%s+)(dyskusji)",function(strona,spacja,dyskusja) return strona; end); return typ,liczba_numer_jednostki,ile; end; return typ,liczba_numer_jednostki,0; end; function p.Czy_dyskusja_typu_jednostki_z_frame_od_dyskusja_typu_jednostki(frame,i) local typ,liczba_numer_jednostki,ile_dyskusja=p.Typ_jednostki_uzyskany_z_frame(frame,i); if(ile_dyskusja>0)then return true;end; local pf=frame.getParent and frame:getParent() or {args={},}; local function FuncTemp(liczba_numer_jednostki) local dyskusja_parametr="dyskusja typu jednostki"; if(liczba_numer_jednostki==0)then return frame.args[dyskusja_parametr] or pf.args[dyskusja_parametr]; else return ((frame.args[dyskusja_parametr.." "..liczba_numer_jednostki] or pf.args[dyskusja_parametr.." "..liczba_numer_jednostki]) or (frame.args[dyskusja_parametr.." i"] or pf.args[dyskusja_parametr.." i"]) or(frame.args[dyskusja_parametr] or pf.args[dyskusja_parametr])); end; end; local czy_dyskusja=FuncTemp(liczba_numer_jednostki); local parametry_modul=require("Module:Parametry"); local czy_dyskusja=parametry_modul.CzyTak(czy_dyskusja); return czy_dyskusja; end; function p.Nazwa_przestrzeni_nazw_uzyskana_z_typu_jednostki_z_frame(frame,i) local typ=p.Typ_jednostki_uzyskany_z_frame(frame,i); local nazwa_przestrzeni_nazw=typ and p.Nazwa_przestrzeni_nazw_od_typu_jednostki(typ,nil,true) or nil; if(nazwa_przestrzeni_nazw)then local czy_dyskusja=p.Czy_dyskusja_typu_jednostki_z_frame_od_dyskusja_typu_jednostki(frame,i); if(czy_dyskusja)then if(nazwa_przestrzeni_nazw=="")then return "Talk"; else return nazwa_przestrzeni_nazw.." talk"; end; else return nazwa_przestrzeni_nazw; end; else return nil; end; end; function p.Typ_jednostki(frame, kod_liczbowy_przestrzeni_nazw,i,numer_argorytmu) local parametry_modul=require("Module:Parametry"); local analiza=parametry_modul.CzyTak(frame.args["analiza"]); local typ,liczba_numer_jednostki=p.Typ_jednostki_uzyskany_z_frame(frame,i); local uzyskana_przestrzen_nazw_od_typu_jednostki; local nazwa_przestrzeni_nazw_podana,nazwa_jednostki_podana=p.Nazwy_przestrzeni_i_jednostki_podane_o_pewnym_numerze(frame,liczba_numer_jednostki); if((not analiza)and(typ))then if(typ~="")then uzyskana_przestrzen_nazw_od_typu_jednostki=p.Nazwa_przestrzeni_nazw_od_typu_jednostki(typ,frame.args); if(uzyskana_przestrzen_nazw_od_typu_jednostki)then if((not nazwa_przestrzeni_nazw_podana)and(not nazwa_jednostki_podana))then return typ; end; else return "(błąd typu jednostki)"; end; end; end; local nazwa_przestrzeni_nazw,nazwa_jednostki=p.Uzyskanie_nazw_jednostki(frame,kod_liczbowy_przestrzeni_nazw,nil,liczba_numer_jednostki,numer_argorytmu); local nazwy_modul=require("Module:Nazwy"); local kod_jezyka,kod_projektu=p.Wikikody_kontenera(frame,liczba_numer_jednostki); local wiki_modul=require("Module:Wiki"); local czy_biezaca=wiki_modul["CzyBieżącaWiki"]{["kod języka"]=kod_jezyka,["kod projektu"]=kod_projektu,}; local czy_blad_nazwa_przestrzeni_nazw; if(czy_biezaca)then czy_blad_nazwa_przestrzeni_nazw=nazwy_modul.Np{nazwa=nazwa_przestrzeni_nazw,["kanoniczna"]="tak",["nazwij projektem"]="tak",["nazwij dyskusją projektu"]="tak",["istnieje"]="tak",["wynik błędu nietekstowy"]="tak",} else czy_blad_nazwa_przestrzeni_nazw=nazwy_modul.NpDane{nazwa=nazwa_przestrzeni_nazw,["kanoniczna"]="tak",["nazwij projektem"]="tak",["nazwij dyskusją projektu"]="tak",["kod języka"]=kod_jezyka,["kod projektu"]=kod_projektu,["istnieje"]="tak",["wynik błędu nietekstowy"]="tak",} end; if(not czy_blad_nazwa_przestrzeni_nazw)then return "(błąd nazwy przestrzeni nazw)";end; nazwa_przestrzeni_nazw=czy_blad_nazwa_przestrzeni_nazw; --- --- if((not analiza)and(typ))then if(typ~="")then ---typ jednostki if(uzyskana_przestrzen_nazw_od_typu_jednostki)then if((nazwa_przestrzeni_nazw_podana)and(not nazwa_jednostki_podana))then if(uzyskana_przestrzen_nazw_od_typu_jednostki==nazwa_przestrzeni_nazw)then return typ; else return "(błąd niezgodności)"; end; end; else return "(błąd typu jednostki)"; end; end; end; local function Typ_jednostki() if(nazwa_jednostki~="")then --local kod_jezyka,kod_projektu=KodyWikiPudelka(frame,liczba_numer_jednostki); --local klucz_projektu=kod_projektu..":"..kod_jezyka; local pudelko_modul=require("Module:Pudełko"); local pelna_nazwa_strony=((nazwa_przestrzeni_nazw~="")and nazwa_przestrzeni_nazw..":" or "")..nazwa_jednostki; if(pudelko_modul.CzyNiepoprawnaNazwa(pelna_nazwa_strony))then return "(błąd nazwy jednostki)";end; local nazwy_modul=require("Module:Nazwy") pelna_nazwa_strony=nazwy_modul["PEŁNANAZWASTRONY"]{[1]=pelna_nazwa_strony,["kod języka"]=kod_jezyka,["kod projektu"]=kod_projektu,}; local norm_przed_lub_dyskusji=p.Normalna_przedmiotowa_lub_dyskusji_nazwa_przestrzeni_nazw(nazwa_przestrzeni_nazw,1,kod_jezyka,kod_projektu); if(kod_projektu==pudelko_modul["Kod projektu tego projektu"]())then local nazwa_strony_glownej_dla_dzieci_ze_zmiennej=p.Nazwa_strony_bazowej_dla_dzieci_ze_zmiennej(frame,liczba_numer_jednostki,kod_jezyka); if(nazwa_strony_glownej_dla_dzieci_ze_zmiennej=="")then return "(błąd nazwy strony głównej dla dzieci)";end; local nazwa_strony_glownej_wikijuniora=p.Nazwa_strony_bazowej_dla_dzieci_z_wikidanych(kod_jezyka); local nazwa_strony_glownej_dla_dzieci_uzyskana=(not nazwa_strony_glownej_dla_dzieci_ze_zmiennej)and nazwa_strony_glownej_wikijuniora or nazwa_strony_glownej_dla_dzieci_ze_zmiennej; if(nazwa_strony_glownej_dla_dzieci_uzyskana)then if(pudelko_modul.CzyNiepoprawnaNazwa(nazwa_strony_glownej_dla_dzieci_uzyskana))then return "(błąd nazwy strony głównej dla dzieci)";end; nazwa_strony_glownej_dla_dzieci_uzyskana=nazwy_modul["PEŁNANAZWASTRONY"]{[1]=nazwa_strony_glownej_dla_dzieci_uzyskana,["kod języka"]=kod_jezyka,["kod projektu"]=kod_projektu,}; if(pelna_nazwa_strony==nazwa_strony_glownej_dla_dzieci_uzyskana)then return "strona główna dla dzieci";end; end; end; local nazwa_strony_glownej_projektu_ze_zmiennej=p.Nazwa_strony_bazowej_projektu_ze_zmiennej(frame,liczba_numer_jednostki,kod_jezyka,kod_projektu); if(nazwa_strony_glownej_projektu_ze_zmiennej=="")then return "(błąd nazwy strony głównej projektu)";end; local nazwa_strony_glownej_projektu_z_wikidanych=p.Nazwa_strony_bazowej_projektu_z_wikidanych(kod_jezyka,kod_projektu); local nazwa_strony_glownej_projektu_uzyskana=(not nazwa_strony_glownej_projektu_ze_zmiennej)and nazwa_strony_glownej_projektu_z_wikidanych or nazwa_strony_glownej_projektu_ze_zmiennej; if(nazwa_strony_glownej_projektu_uzyskana)then if(pudelko_modul.CzyNiepoprawnaNazwa(nazwa_strony_glownej_projektu_uzyskana))then return "(błąd nazwy strony głównej projektu)";end; nazwa_strony_glownej_projektu_uzyskana=nazwy_modul["PEŁNANAZWASTRONY"]{[1]=nazwa_strony_glownej_projektu_uzyskana,["kod języka"]=kod_jezyka,["kod projektu"]=kod_projektu,}; if(pelna_nazwa_strony==nazwa_strony_glownej_projektu_uzyskana)then return "strona główna projektu";end; end; if(norm_przed_lub_dyskusji=="")then local parametry_modul=require("Module:Parametry"); if(parametry_modul.CzyTak(frame.args["obsługiwane jednostki jako nieopisowe strony"]))then return "artykuł"; else local it=mw.ustring.match(nazwa_jednostki,"^[^/]+$"); if(it)then return "podręcznik";else return "artykuł";end; end; elseif(norm_przed_lub_dyskusji=="Wikijunior")then local parametry_modul=require("Module:Parametry"); if(parametry_modul.CzyTak(frame.args["obsługiwane jednostki jako nieopisowe strony"]))then return "artykuł dla dzieci"; else local it=mw.ustring.match(nazwa_jednostki,"^[^/]+$"); if(it)then return "podręcznik dla dzieci";else return "artykuł dla dzieci";end; end; elseif(norm_przed_lub_dyskusji=="User")then local parametry_modul=require("Module:Parametry"); if(parametry_modul.CzyTak(frame.args["obsługiwane jednostki użytkownika jako normalne strony"]))then return "strona użytkownika"; else local czy_podstrony=mw.ustring.match(nazwa_jednostki,"^[^/]+$") if(czy_podstrony)then return "strona główna użytkownika"; else if(not parametry_modul.CzyTak(frame.args["obsługiwane jednostki jako nieopisowe strony"]))then if(parametry_modul.CzyTak(frame.args["obsługiwane jednostki użytkownika"]))then local czy_ksiazka=mw.ustring.match(nazwa_jednostki,"^[^/]+/[^/]*$"); if(czy_ksiazka)then return "podręcznik użytkownika"; else return "artykuł użytkownika"; end; else return "jednostka użytkownika"; end; else return "strona użytkownika"; end; end; end; elseif(norm_przed_lub_dyskusji=="File")then return "strona pliku"; elseif(norm_przed_lub_dyskusji=="Category")then return "strona kategorii"; elseif(norm_przed_lub_dyskusji=="Project")then local parametry_modul=require("Module:Parametry"); if(parametry_modul.CzyTak(frame.args["obsługiwane brudnopisy jako normalne strony"]))then return "strona projektu";end; if(mw.ustring.match(nazwa_jednostki,"^%s*[Bb]rudnopis/[^/]*/.*"))then if(not parametry_modul.CzyTak(frame.args["obsługiwane jednostki jako nieopisowe strony"]))then if(parametry_modul.CzyTak(frame.args["obsługiwane jednostki brudnopisu projektu"]))then local czy_ksiazka=mw.ustring.match(nazwa_jednostki,"^%s*[Bb]rudnopis/[^/]*/[^/]*$"); if(czy_ksiazka)then return "podręcznik brudnopisu projektu"; else return "artykuł brudnopisu projektu"; end; else return "jednostka brudnopisu projektu"; end; else return "strona brudnopisu projektu"; end; else return "strona projektu"; end; elseif(norm_przed_lub_dyskusji=="Help")then return "strona pomocy"; elseif(norm_przed_lub_dyskusji=="MediaWiki")then return "strona komunikatu"; elseif(norm_przed_lub_dyskusji=="Special")then return "strona specialna"; elseif(norm_przed_lub_dyskusji=="Gadget")then return "strona gadżetu"; elseif(norm_przed_lub_dyskusji=="Template")then local parametry_modul=require("Module:Parametry"); if(parametry_modul.CzyTak(frame.args["obsługiwane strony jako niebrudnopisowe jednostki programowe"]))then return "strona szablonu";end; local function CzySzablonAlboOpis(nazwa_przestrzeni_nazw,nazwa_jednostki,szablon,opis_szablonu,strona_szablonu,prefix) local parametry_modul=require("Module:Parametry"); if(parametry_modul.CzyTak(frame.args["obsługiwane opisy jako strony jednostek programowych"]) or parametry_modul.CzyTak(frame.args["obsługiwane jednostki jako nieopisowe strony"]))then return szablon; else if(mw.ustring.match(nazwa_jednostki,"^"..prefix..".*/opis$"))then return opis_szablonu; else if(not parametry_modul.CzyTak(frame.args["obsługiwane nieudokumentowane szablony jako szablony"]))then local czy_brudnopis=mw.ustring.match(nazwa_jednostki,"^"..prefix..".*$"); if(czy_brudnopis)then local pagename=(nazwa_przestrzeni_nazw~="")and nazwa_przestrzeni_nazw..":"..nazwa_jednostki or nazwa_jednostki; local czy_istnieje_strona,tab=require("Module:Techniczne").PoliczZbiory(pagename); if(czy_istnieje_strona==1)then local czy_brudnopis_opisu_szablonu=require("Module:Łatki").contentMatch{ [1]='<noinclude>.-{{%s*[Dd]okumentacja%s*}}.-</noinclude>', [2]='<noinclude>.-{{%s*[Dd]okumentacja%s*|.-</noinclude>',pagename=pagename,namespace=0 }; if(not czy_brudnopis_opisu_szablonu)then return opis_szablonu;else return szablon;end; else return szablon; end; else return strona_szablonu; end; else return szablon; end; end; end; end; if((not parametry_modul.CzyTak(frame.args["obsługiwane brudnopisy jako normalne strony"]))and(mw.ustring.match(nazwa_jednostki,"^%s*[Bb]rudnopis/[^/]*/.*")))then return CzySzablonAlboOpis(norm_przed_lub_dyskusji,nazwa_jednostki,"strona brudnopisu szablonu","strona brudnopisu opisu szablonu","strona szablonu","[Bb]rudnopis/[^/]*/"); else return CzySzablonAlboOpis(norm_przed_lub_dyskusji,nazwa_jednostki,"strona szablonu","strona opisu szablonu","strona szablonu",""); end; elseif(norm_przed_lub_dyskusji=="Module")then local parametry_modul=require("Module:Parametry"); if(parametry_modul.CzyTak(frame.args["obsługiwane strony jako niebrudnopisowe jednostki programowe"]))then return "strona modułu";end; if((not parametry_modul.CzyTak(frame.args["obsługiwane brudnopisy jako normalne strony"]))and(mw.ustring.match(nazwa_jednostki,"^%s*[Bb]rudnopis/[^/]*/.*")))then if(parametry_modul.CzyTak(frame.args["obsługiwane opisy jako strony jednostek programowych"]) or parametry_modul.CzyTak(frame.args["obsługiwane jednostki jako nieopisowe strony"]))then return "strona brudnopisu modułu" else local pelna_nazwa_strony=(norm_przed_lub_dyskusji~="")and norm_przed_lub_dyskusji..":"..nazwa_jednostki or nazwa_jednostki; pelna_nazwa_strony=require("Module:Nazwy")["PEŁNANAZWASTRONY"]{[1]=pelna_nazwa_strony,["kod języka"]=kod_jezyka,["kod projektu"]=kod_projektu,}; local pelna_nazwa_strony_brudnopisu_opisu_modulu=require("Module:Techniczne")["PełnaNazwaOpisuModułu"](pelna_nazwa_strony); if(pelna_nazwa_strony==pelna_nazwa_strony_brudnopisu_opisu_modulu)then return "strona brudnopisu opisu modułu"; else return "strona brudnopisu modułu"; end; end; else if(parametry_modul.CzyTak(frame.args["obsługiwane opisy jako strony jednostek programowych"]) or parametry_modul.CzyTak(frame.args["obsługiwane jednostki jako nieopisowe strony"]))then return "strona modułu" else local pelna_nazwa_strony=(norm_przed_lub_dyskusji~="")and norm_przed_lub_dyskusji..":"..nazwa_jednostki or nazwa_jednostki; pelna_nazwa_strony=require("Module:Nazwy")["PEŁNANAZWASTRONY"]{[1]=pelna_nazwa_strony,["kod języka"]=kod_jezyka,["kod projektu"]=kod_projektu,}; local pelna_nazwa_opisu_modulu=require("Module:Techniczne")["PełnaNazwaOpisuModułu"](pelna_nazwa_strony); if(pelna_nazwa_strony==pelna_nazwa_opisu_modulu)then return "strona opisu modułu"; else return "strona modułu"; end; end; end; else return "inne"; end; end; return "inne"; end; local typ_jednostki=Typ_jednostki(); local function TempFunc(typ_jednostki) if( (kod_liczbowy_przestrzeni_nazw==2) or((kod_liczbowy_przestrzeni_nazw==0)and(p.Czy_dyskusja_typu_jednostki_z_frame_od_dyskusja_typu_jednostki(frame,i))) )then typ_jednostki,ile=mw.ustring.gsub(typ_jednostki,"^(%S+)",function(strona) return strona.." dyskusji"; end); return typ_jednostki; end; return typ_jednostki; end; if(((analiza)or(nazwa_jednostki_podana))and(typ)and(typ~=""))then if(typ_jednostki==typ)then return TempFunc(typ_jednostki); elseif(nazwa_jednostki_podana)then return "(błąd parametrów pudełkowych)" else return "(błąd typu jednostki)"; end; end; return TempFunc(typ_jednostki); end; function p.Uzyskanie_nazw_jednostki(frame,kod_liczbowy_przestrzeni_nazw,czy_uwzglednic_alternatywna_nazwe,i,numer_argorytmu,co_ma_liczyc) local nazwa_przestrzeni_fun,nazwa_jednostki_fun; if(kod_liczbowy_przestrzeni_nazw==0)then nazwa_przestrzeni_fun="Nazwa przestrzeni nazw"; nazwa_jednostki_fun="Nazwa jednostki"; elseif(kod_liczbowy_przestrzeni_nazw==1)then nazwa_przestrzeni_fun="Nazwa przedmiotowej przestrzeni nazw"; nazwa_jednostki_fun="Nazwa przedmiotowa jednostki"; elseif(kod_liczbowy_przestrzeni_nazw==2)then nazwa_przestrzeni_fun="Nazwa przestrzeni nazw dyskusji" nazwa_jednostki_fun="Nazwa dyskusji jednostki"; else nazwa_przestrzeni_fun="Nazwa przestrzeni nazw"; nazwa_jednostki_fun="Nazwa jednostki"; end; local pudelko_modul=require("Module:Pudełko"); if(not numer_argorytmu)then if((not i)or(i==0))then if((not co_ma_liczyc)or(co_ma_liczyc==0))then local nazwa_przestrzeni_nazw=pudelko_modul[nazwa_przestrzeni_fun](frame,czy_uwzglednic_alternatywna_nazwe); local nazwa_jednostki=pudelko_modul["Nazwa jednostki"](frame); return nazwa_przestrzeni_nazw,nazwa_jednostki; elseif(co_ma_liczyc==1)then local nazwa_przestrzeni_nazw=pudelko_modul[nazwa_przestrzeni_fun](frame,czy_uwzglednic_alternatywna_nazwe); return nazwa_przestrzeni_nazw; elseif(co_ma_liczyc==2)then return pudelko_modul["Nazwa jednostki"](frame); end; else if((not co_ma_liczyc)or(co_ma_liczyc==0))then local n=p.Nazwa_przestrzeni_nazw_dodatkowe(frame,i); local parametry_modul=require("Module:Parametry"); n=parametry_modul.CzyTak(n); local nazwa_przestrzeni_nazw=(n) and pudelko_modul[nazwa_przestrzeni_fun](frame,czy_uwzglednic_alternatywna_nazwe,i) or pudelko_modul[nazwa_przestrzeni_fun.." 2"](frame,czy_uwzglednic_alternatywna_nazwe,i); local nazwa_jednostki=(n)and pudelko_modul["Nazwa jednostki"](frame,i) or pudelko_modul[nazwa_jednostki_fun.." 2"](frame,i); return nazwa_przestrzeni_nazw,nazwa_jednostki; elseif(co_ma_liczyc==1)then local n=p.Nazwa_przestrzeni_nazw_dodatkowe(frame,i); local parametry_modul=require("Module:Parametry"); n=parametry_modul.CzyTak(n); local nazwa_przestrzeni_nazw=(n) and pudelko_modul[nazwa_przestrzeni_fun](frame,czy_uwzglednic_alternatywna_nazwe,i) or pudelko_modul[nazwa_przestrzeni_fun.." 2"](frame,czy_uwzglednic_alternatywna_nazwe,i); return nazwa_przestrzeni_nazw; elseif(co_ma_liczyc==2)then local n=p.Nazwa_przestrzeni_nazw_dodatkowe(frame,i); local parametry_modul=require("Module:Parametry"); n=parametry_modul.CzyTak(n); return (n)and pudelko_modul["Nazwa jednostki"](frame,i) or pudelko_modul[nazwa_jednostki_fun.." 2"](frame,i); end; end; else if(numer_argorytmu==0)then if((not co_ma_liczyc)or(co_ma_liczyc==0))then local nazwa_przestrzeni_nazw=pudelko_modul[nazwa_przestrzeni_fun](frame,czy_uwzglednic_alternatywna_nazwe,i); local nazwa_jednostki=pudelko_modul["Nazwa jednostki"](frame,i); return nazwa_przestrzeni_nazw,nazwa_jednostki; elseif(co_ma_liczyc==1)then local nazwa_przestrzeni_nazw=pudelko_modul[nazwa_przestrzeni_fun](frame,czy_uwzglednic_alternatywna_nazwe,i); return nazwa_przestrzeni_nazw; elseif(co_ma_liczyc==2)then return pudelko_modul["Nazwa jednostki"](frame,i); end; else if((not co_ma_liczyc)or(co_ma_liczyc==0))then local nazwa_przestrzeni_nazw=pudelko_modul[nazwa_przestrzeni_fun.." 2"](frame,czy_uwzglednic_alternatywna_nazwe,i); local nazwa_jednostki=pudelko_modul[nazwa_jednostki_fun.." 2"](frame,i); return nazwa_przestrzeni_nazw,nazwa_jednostki; elseif(co_ma_liczyc==1)then local nazwa_przestrzeni_nazw=pudelko_modul[nazwa_przestrzeni_fun.." 2"](frame,czy_uwzglednic_alternatywna_nazwe,i); return nazwa_przestrzeni_nazw; elseif(co_ma_liczyc==2)then return pudelko_modul[nazwa_jednostki_fun.." 2"](frame,i); end; end; end; end; function p.Nazwa_przestrzeni_nazw_dodatkowe(frame,numer_jednostki) local pf=frame.getParent and frame:getParent() or {args={}}; return frame.args["nazwa przestrzeni nazw "..tostring(numer_jednostki)] or pf.args["nazwa przestrzeni nazw "..tostring(numer_jednostki)] end; function p.Nazwa_jednostki(frame,i) local pf=frame.getParent and frame:getParent() or {args={}}; local nazwa_jednostki,liczba_numer_jednostki=p.Nazwy_przestrzeni_i_jednostki_podane_o_pewnym_numerze(frame,i,2); local kod_jezyka,kod_projektu=p.Wikikody_kontenera(frame,liczba_numer_jednostki); if(nazwa_jednostki)then nazwa_jednostki=mw.text.trim(nazwa_jednostki); nazwa_jednostki=mw.ustring.gsub(nazwa_jednostki,"^:",""); nazwa_jednostki=mw.ustring.gsub(nazwa_jednostki,"^([^#]*)#(.*)$","%1"); local parametry=mw.ustring.match(nazwa_jednostki,"^.*%?([^%?]+)$"); if(parametry and mw.ustring.match(parametry,"[^=]+=[^=]*"))then nazwa_jednostki=mw.ustring.gsub(nazwa_jednostki,"^(.*)%?([^%?]+)$","%1"); end; else local nazwy_modul=require("Module:Nazwy"); nazwa_jednostki=nazwy_modul["NAZWASTRONY"]{["kod języka"]=kod_jezyka,["kod projektu"]=kod_projektu,}; end; local parametry_modul=require("Module:Parametry"); nazwa_jednostki=parametry_modul["Odstępy"]{[1]=nazwa_jednostki,[2]="tak",}; return mw.getContentLanguage():ucfirst(nazwa_jednostki); end; function p.Nazwy_przestrzeni_i_jednostki_podane_o_pewnym_numerze(frame,i,co_podac) local pf=frame.getParent and frame:getParent() or {args={}}; local numer_jednostki=i or frame.args["numer jednostki"]; local liczba_numer_jednostki=tonumber(numer_jednostki) or 0; local nazwa_jednostki; local bool_numer_jednostki=(liczba_numer_jednostki~=0); local function Nazwa_jednostki() if bool_numer_jednostki then nazwa_jednostki=frame.args["nazwa jednostki "..liczba_numer_jednostki] or ((liczba_numer_jednostki==1)and(pf.args["cel"])) or pf.args[liczba_numer_jednostki]; else nazwa_jednostki=frame.args["nazwa jednostki"] or pf.args["nazwa jednostki"]; end; return nazwa_jednostki; end; local function Nazwa_przestrzeni_nazw() local nazwa_przestrzeni_nazw=bool_numer_jednostki and (frame.args["nazwa przestrzeni nazw i"] or pf.args["nazwa przestrzeni nazw i"] or frame.args["nazwa przestrzeni nazw "..liczba_numer_jednostki] or pf.args["nazwa przestrzeni nazw "..liczba_numer_jednostki]) or frame.args["nazwa przestrzeni nazw"] or pf.args["nazwa przestrzeni nazw"]; return nazwa_przestrzeni_nazw; end; if(not co_podac)then return Nazwa_przestrzeni_nazw(),Nazwa_jednostki(),liczba_numer_jednostki; elseif(co_podac==1)then return Nazwa_przestrzeni_nazw(),liczba_numer_jednostki; elseif(co_podac==2)then return Nazwa_jednostki(),liczba_numer_jednostki; else return Nazwa_przestrzeni_nazw(),Nazwa_jednostki(),liczba_numer_jednostki; end; end; function p.Jaka_nazwa_jednostki(frame,i,jaka) local nazwa_przestrzeni_nazw,nazwa_jednostki,liczba_numer_jednostki=p.Nazwy_przestrzeni_i_jednostki_podane_o_pewnym_numerze(frame,i); nazwa_przestrzeni_nazw=nazwa_przestrzeni_nazw or p.Nazwa_przestrzeni_nazw_uzyskana_z_typu_jednostki_z_frame(frame,liczba_numer_jednostki); ---- local nazwy_modul=require("Module:Nazwy"); nazwa_przestrzeni_nazw=nazwa_przestrzeni_nazw and mw.text.trim(nazwa_przestrzeni_nazw) or nazwy_modul["NAZWAPRZESTRZENI"](); if(nazwa_jednostki)then local html_modul=require("Module:Html"); nazwa_jednostki=html_modul["NazwaStronyAdresu"](nazwa_jednostki,true); else nazwa_jednostki=nazwy_modul["NAZWASTRONY"](); end; local kod_jezyka,kod_projektu=p.Wikikody_kontenera(frame,liczba_numer_jednostki); local wiki_modul=require("Module:Wiki"); local czy_biezaca=wiki_modul["CzyBieżącaWiki"]{["kod języka"]=kod_jezyka,["kod projektu"]=kod_projektu,}; if(jaka)then if(czy_biezaca)then local tab_parametry={nazwa=nazwa_przestrzeni_nazw,}; if(jaka=="przedmiotowa")then tab_parametry["przedmiotowa"]="tak";end; nazwa_przestrzeni_nazw=nazwy_modul.Np(tab_parametry); else local tab_parametry={nazwa=nazwa_przestrzeni_nazw,["kod języka"]=kod_jezyka,["kod projektu"]=kod_projektu,}; if(jaka=="przedmiotowa")then tab_parametry["przedmiotowa"]="tak";end; nazwa_przestrzeni_nazw=nazwy_modul.NpDane(tab_parametry); end; else if(czy_biezaca)then nazwa_przestrzeni_nazw=nazwy_modul.Np{nazwa=nazwa_przestrzeni_nazw}; else nazwa_przestrzeni_nazw=nazwy_modul.NpDane{nazwa=nazwa_przestrzeni_nazw,["kod języka"]=kod_jezyka,["kod projektu"]=kod_projektu,}; end; end; if(not mw.ustring.match(nazwa_jednostki,"^:"))then if(nazwa_przestrzeni_nazw~="")then if((not typ)or(typ=="przedmiotowa"))then if(czy_biezaca)then local nazwy_np_modul=mw.loadData("Module:Nazwy/Np"); if(nazwa_przestrzeni_nazw==nazwy_np_modul.Template)then local nazwa_przestrzeni_nazw_d=nazwy_modul["NAZWAPRZESTRZENI"](nazwa_jednostki); if(nazwa_przestrzeni_nazw_d==nazwy_np_modul.Template)then return nazwy_modul["NAZWASTRONY"](nazwa_jednostki); end; elseif(nazwa_przestrzeni_nazw==nazwy_np_modul.Module)then local nazwa_przestrzeni_nazw_d=nazwy_modul["NAZWAPRZESTRZENI"](nazwa_jednostki); if(nazwa_przestrzeni_nazw_d==nazwy_np_modul.Module)then return nazwy_modul["NAZWASTRONY"](nazwa_jednostki); end; end; else local template_prze=nazwy_modul.NpDane{nazwa="Template",["kod języka"]=kod_jezyka,["kod projektu"]=kod_projektu,}; local module_prze=nazwy_modul.NpDane{nazwa="Module",["kod języka"]=kod_jezyka,["kod projektu"]=kod_projektu,}; if(nazwa_przestrzeni_nazw==template_prze)then local nazwa_przestrzeni_nazw_d=nazwy_modul["NAZWAPRZESTRZENI"]{[1]=nazwa_jednostki,["kod języka"]=kod_jezyka,["kod projektu"]=kod_projektu,}; if(nazwa_przestrzeni_nazw_d==template_prze)then return nazwy_modul["NAZWASTRONY"]{[1]=nazwa_jednostki,["kod języka"]=kod_jezyka,["kod projektu"]=kod_projektu,}; end; elseif(nazwa_przestrzeni_nazw==module_prze)then local nazwa_przestrzeni_nazw_d=nazwy_modul["NAZWAPRZESTRZENI"]{[1]=nazwa_jednostki,["kod języka"]=kod_jezyka,["kod projektu"]=kod_projektu,}; if(nazwa_przestrzeni_nazw_d==module_prze)then return nazwy_modul["NAZWASTRONY"]{[1]=nazwa_jednostki,["kod języka"]=kod_jezyka,["kod projektu"]=kod_projektu,}; end; end; end; end; local parametry_modul=require("Module:Parametry"); nazwa_jednostki=parametry_modul["Odstępy"]{[1]=nazwa_jednostki,[2]="tak",}; return mw.getContentLanguage():ucfirst(nazwa_jednostki); else return nazwy_modul["NAZWASTRONY"]{[1]=nazwa_jednostki,["kod języka"]=kod_jezyka,["kod projektu"]=kod_projektu,}; end; else return nazwy_modul["NAZWASTRONY"]{[1]=nazwa_jednostki,["kod języka"]=kod_jezyka,["kod projektu"]=kod_projektu,}; end; end; function p.Czy_przestrzen_nazw_jest_obslugiwana(frame,jakas_przestrzen_nazw,kod_jezyka,kod_projektu) local nazwy_modul=require("Module:Nazwy"); local parametry_modul=require("Module:Parametry"); local wiki_modul=require("Module:Wiki"); local czy_biezaca=wiki_modul["CzyBieżącaWiki"]{["kod języka"]=kod_jezyka,["kod projektu"]=kod_projektu,}; if(czy_biezaca)then jakas_przestrzen_nazw=nazwy_modul.Np{nazwa=jakas_przestrzen_nazw}; else jakas_przestrzen_nazw=nazwy_modul.NpDane{nazwa=jakas_przestrzen_nazw,["kod języka"]=kod_jezyka,["kod projektu"]=kod_projektu,}; end; local function nazwa_przestrzeni_nazw_fun(nazwa_przestrzeni_nazw_iter) if(czy_biezaca)then nazwa_przestrzeni_nazw_iter=nazwy_modul.Np{nazwa=nazwa_przestrzeni_nazw_iter}; else nazwa_przestrzeni_nazw_iter=nazwy_modul.NpDane{nazwa=nazwa_przestrzeni_nazw_iter,["kod języka"]=kod_jezyka,["kod projektu"]=kod_projektu,}; end; if(jakas_przestrzen_nazw==nazwa_przestrzeni_nazw_iter)then return true; end; return false; end; for licznik,nazwa_przestrzeni_nazw in pairs(frame.args)do if(type(licznik)=="number")then local nazwa_przestrzeni_nazw_element,klucze_element=mw.ustring.match(nazwa_przestrzeni_nazw,"^%s*([%w%s]*)%s*:%s*(.-)%s*"); if(nazwa_przestrzeni_nazw_element and klucze_element)then local tab_klucze=mw.text.split(klucze_element,"%s*,%s*",false); local wiki_modul=require("Module:Wiki"); for _,klucz_element in ipairs(tab_klucze)do local kod_jezyka_obslugiwane,kod_projektu_obslugiwane=wiki_modul.KluczProjektu(klucz_element); if(kod_jezyka_obslugiwane==kod_jezyka and kod_projektu_obslugiwane==kod_projektu)then local wynik=nazwa_przestrzeni_nazw_fun(nazwa_przestrzeni_nazw_element); if(wynik)then return true;end; end; end; else local wynik=nazwa_przestrzeni_nazw_fun(nazwa_przestrzeni_nazw); if(wynik)then return true;end; end; end; end; return false; end; function p.Analiza_interwiki_czy_projekt_aktualny(frame,czy_jezyk,czy_projekt) local parametry_modul=require("Module:Parametry"); local p=parametry_modul.PobierzFrameEwentualnieParent(frame); local pudelko_modul=require("Module:Pudełko"); local wiki_modul=require("Module:Wiki"); local jezyk_biezacy=czy_jezyk and pudelko_modul["Kod języka tego projektu"](); local projekt_biezacy=czy_projekt and pudelko_modul["Kod projektu tego projektu"](); for i,_ in pairs(p.args)do if(type(i)=="number")then local klucz_projektu=pudelko_modul["Klucz projektu"](frame,i); local kod_jezyka=pudelko_modul["Kod języka"](frame,i); local kod_projektu=pudelko_modul["kod projektu"](frame,i); local jezyk,projekt=wiki_modul.KodyWiki(klucz_projektu,kod_jezyka,kod_projektu); if((czy_jezyk and (jezyk~=jezyk_biezacy))or(czy_projekt and(projekt~=projekt_biezacy)))then return "tak"; end; end; end; return; end; return p; m2zzphkaiw8c5yr4rsydgdh7dzn2i9c 540463 540447 2026-04-24T06:31:55Z Persino 2851 540463 Scribunto text/plain local p={}; function p.Nazwa_strony_bazowej_projektu_z_wikidanych(kod_jezyka,kod_projektu) local strona=require("Module:Pudełko")["Strona główna tego projektu"](); local odpowiednik_strony=require("Module:Wiki").WikidaneOdpowiednikStrony{["nazwa strony"]=strona,["kod języka"]=kod_jezyka,["kod projektu"]=kod_projektu}; if(odpowiednik_strony)then local nazwy_modul=require("Module:Nazwy"); return nazwy_modul["PEŁNANAZWASTRONY"]{[1]=odpowiednik_strony,["kod języka"]=kod_jezyka,["kod projektu"]=kod_projektu,}; else local pudelko_modul=require("Module:Pudełko"); if((kod_jezyka==pudelko_modul["Kod języka tego projektu"]())and(kod_projektu==pudelko_modul["Kod projektu tego projektu"]()))then return strona; else local wiki_interwiki_modul=mw.loadData("Module:Wiki/interwiki"); local czy_w_wikidanych=wiki_interwiki_modul.tablica_kody_projektu_wikidane.lingwistyczne[kod_projektu] or wiki_interwiki_modul.tablica_kody_projektu_wikidane.specjalistyczne[kod_projektu]; return czy_w_wikidanych and "Main Page" or nil; end; end; end; function p.Nazwa_strony_bazowej_dla_dzieci_z_wikidanych(kod_jezyka) local strona=require("Module:Pudełko")["Strona główna dla dzieci tego projektu"](); local pudelko_modul=require("Module:Pudełko"); local kod_jezyka_tego_projektu=pudelko_modul["Kod języka tego projektu"](); if(kod_jezyka==kod_jezyka_tego_projektu)then return strona;end; local kod_projektu_tego_projektu=pudelko_modul["Kod projektu tego projektu"](); local odpowiednik_strony=require("Module:Wiki").WikidaneOdpowiednikStrony{["nazwa strony"]=strona,["kod języka"]=kod_jezyka,["kod projektu"]=kod_projektu_tego_projektu}; if(odpowiednik_strony)then local nazwy_modul=require("Module:Nazwy"); return nazwy_modul["PEŁNANAZWASTRONY"]{[1]=odpowiednik_strony,["kod języka"]=kod_jezyka,["kod projektu"]=kod_projektu_tego_projektu,}; else return "Wikijunior"; end; end; function p.Nazwa_strony_bazowej_projektu_ze_zmiennej(frame,i,kod_jezyka,kod_projektu) local pf=frame.getParent and frame:getParent() or {args={}}; local strona_glowna_projektu; if(i~=0)then local pudelko_modul=require("Module:Pudełko"); local kod_jezyka_tego_projektu=pudelko_modul["Kod języka tego projektu"](); local kod_projektu_tego_projektu=pudelko_modul["Kod projektu tego projektu"](); if(kod_jezyka==kod_jezyka_tego_projektu)and(kod_projektu==kod_projektu_tego_projektu)then strona_glowna_projektu=frame.args["strona główna projektu"] or pf.args["strona główna projektu"] else strona_glowna_projektu=(frame.args["strona główna projektu "..i] or pf.args["strona główna projektu "..i]) end; else strona_glowna_projektu=frame.args["strona główna projektu"] or pf.args["strona główna projektu"] end; local parametry_modul=require("Module:Parametry"); return (parametry_modul.CzyTak(strona_glowna_projektu))and require("Module:Nazwy")["PEŁNANAZWASTRONY"]{[1]=strona_glowna_projektu,["kod języka"]=kod_jezyka,["kod projektu"]=kod_projektu,} or (strona_glowna_projektu and "" or nil); end; function p.Nazwa_strony_bazowej_dla_dzieci_ze_zmiennej(frame,i,kod_jezyka) local pf=frame.getParent and frame:getParent() or {args={}}; local pudelko_modul=require("Module:Pudełko"); local strona_glowna_dla_dzieci; if(i~=0)then local kod_jezyka_tego_projektu=pudelko_modul["Kod języka tego projektu"](); if(kod_jezyka==kod_jezyka_tego_projektu)then strona_glowna_dla_dzieci=frame.args["strona główna dla dzieci"] or pf.args["strona główna dla dzieci"] else strona_glowna_dla_dzieci=(frame.args["strona główna dla dzieci "..i] or pf.args["strona główna dla dzieci "..i]) end; else strona_glowna_dla_dzieci=frame.args["strona główna dla dzieci"] or pf.args["strona główna dla dzieci"] end; local kod_projektu_tego_projektu=pudelko_modul["Kod projektu tego projektu"](); local parametry_modul=require("Module:Parametry"); return (parametry_modul.CzyTak(strona_glowna_dla_dzieci))and require("Module:Nazwy")["PEŁNANAZWASTRONY"]{[1]=strona_glowna_dla_dzieci,["kod języka"]=kod_jezyka,["kod projektu"]=kod_projektu_tego_projektu,} or (strona_glowna_dla_dzieci and "" or nil); end; function p.Normalna_przedmiotowa_lub_dyskusji_nazwa_przestrzeni_nazw(nazwa_przestrzeni_nazw, normmalna_przedmiotwa_dyskusji,kod_jezyka,kod_projektu) local nazwa_przestrzeni_nazw_blad; local wiki_modul=require("Module:Wiki"); local nazwy_modul=require("Module:Nazwy"); local czy_biezaca=wiki_modul["CzyBieżącaWiki"]{["kod języka"]=kod_jezyka,["kod projektu"]=kod_projektu,}; if(normmalna_przedmiotwa_dyskusji==0)then if(czy_biezaca)then nazwa_przestrzeni_nazw_blad=nazwy_modul.Np{nazwa=nazwa_przestrzeni_nazw,["kanoniczna"]="tak",["nazwij projektem"]="tak",["nazwij dyskusją projektu"]="tak",["istnieje"]="tak",["wynik błędu nietekstowy"]="tak",}; else nazwa_przestrzeni_nazw_blad=nazwy_modul.NpDane{nazwa=nazwa_przestrzeni_nazw,["kanoniczna"]="tak",["nazwij projektem"]="tak",["nazwij dyskusją projektu"]="tak",["kod języka"]=kod_jezyka,["kod projektu"]=kod_projektu,["istnieje"]="tak",["wynik błędu nietekstowy"]="tak",}; end; elseif(normmalna_przedmiotwa_dyskusji==1)then if(czy_biezaca)then nazwa_przestrzeni_nazw_blad=nazwy_modul.Np{nazwa=nazwa_przestrzeni_nazw, przedmiotowa="tak",["kanoniczna"]="tak",["nazwij projektem"]="tak",["nazwij dyskusją projektu"]="tak",["istnieje"]="tak",["wynik błędu nietekstowy"]="tak",}; else nazwa_przestrzeni_nazw_blad=nazwy_modul.NpDane{nazwa=nazwa_przestrzeni_nazw, przedmiotowa="tak",["kanoniczna"]="tak",["nazwij projektem"]="tak",["nazwij dyskusją projektu"]="tak",["kod języka"]=kod_jezyka,["kod projektu"]=kod_projektu,["istnieje"]="tak",["wynik błędu nietekstowy"]="tak",}; end; elseif(normmalna_przedmiotwa_dyskusji==2)then if(czy_biezaca)then nazwa_przestrzeni_nazw_blad=nazwy_modul.Np{nazwa=nazwa_przestrzeni_nazw, dyskusja="tak",["kanoniczna"]="tak",["nazwij projektem"]="tak",["nazwij dyskusją projektu"]="tak",["istnieje"]="tak",["wynik błędu nietekstowy"]="tak",}; else nazwa_przestrzeni_nazw_blad=nazwy_modul.NpDane{nazwa=nazwa_przestrzeni_nazw, dyskusja="tak",["kanoniczna"]="tak",["nazwij projektem"]="tak",["nazwij dyskusją projektu"]="tak",["kod języka"]=kod_jezyka,["kod projektu"]=kod_projektu,["istnieje"]="tak",["wynik błędu nietekstowy"]="tak",}; end; else if(czy_biezaca)then nazwa_przestrzeni_nazw_blad=nazwy_modul.Np{nazwa=nazwa_przestrzeni_nazw,["kanoniczna"]="tak",["nazwij projektem"]="tak",["nazwij dyskusją projektu"]="tak",["istnieje"]="tak",["wynik błędu nietekstowy"]="tak",}; else nazwa_przestrzeni_nazw_blad=nazwy_modul.NpDane{nazwa=nazwa_przestrzeni_nazw,["kanoniczna"]="tak",["nazwij projektem"]="tak",["nazwij dyskusją projektu"]="tak",["kod języka"]=kod_jezyka,["kod projektu"]=kod_projektu,["istnieje"]="tak",["wynik błędu nietekstowy"]="tak",}; end; end; return nazwa_przestrzeni_nazw_blad end; function p.Nazwa_przestrzeni_nazw(frame,kod_liczbowy_przestrzeni_nazw,czy_uwzglednic_alternatywna_nazwe,numer_jednostki) local pf=frame.getParent and frame:getParent() or {args={}}; local nazwa_przestrzeni_nazw=p.Nazwy_przestrzeni_i_jednostki_podane_o_pewnym_numerze(frame,numer_jednostki,1) or p.Nazwa_przestrzeni_nazw_uzyskana_z_typu_jednostki_z_frame(frame,numer_jednostki); local nazwy_modul=require("Module:Nazwy"); local wiki_modul=require("Module:Wiki"); local kod_jezyka,kod_projektu=p.Wikikody_kontenera(frame,numer_jednostki); local czy_biezaca_wiki=wiki_modul["CzyBieżącaWiki"]{["kod języka"]=kod_jezyka,["kod projektu"]=kod_projektu,}; local czy_blad_nazwy_przestrzeni_nazw; local typ; if(kod_liczbowy_przestrzeni_nazw==1)then typ="przedmiotowa"; if(czy_biezaca_wiki)then czy_blad_nazwy_przestrzeni_nazw=(not nazwa_przestrzeni_nazw)and nazwy_modul["PRZEDMIOTOWAPRZESTRZEŃ"]() or nazwy_modul.Np{nazwa=nazwa_przestrzeni_nazw,przedmiotowa="tak",["istnieje"]="tak",["wynik błędu nietekstowy"]="tak",}; else czy_blad_nazwy_przestrzeni_nazw=(not nazwa_przestrzeni_nazw)and nazwy_modul["PRZEDMIOTOWAPRZESTRZEŃ"]{["kod języka"]=kod_jezyka,["kod projektu"]=kod_projektu,} or nazwy_modul.NpDane{nazwa=nazwa_przestrzeni_nazw,przedmiotowa="tak",["kod języka"]=kod_jezyka,["kod projektu"]=kod_projektu,["istnieje"]="tak",["wynik błędu nietekstowy"]="tak",}; end; elseif(kod_liczbowy_przestrzeni_nazw==2)then if(czy_biezaca_wiki)then typ="dyskusja"; czy_blad_nazwy_przestrzeni_nazw=(not nazwa_przestrzeni_nazw)and nazwy_modul["PRZESTRZEŃDYSKUSJI"]() or nazwy_modul.Np{nazwa=nazwa_przestrzeni_nazw,dyskusja="tak",["istnieje"]="tak",["wynik błędu nietekstowy"]="tak",}; else czy_blad_nazwy_przestrzeni_nazw=(not nazwa_przestrzeni_nazw)and nazwy_modul["PRZESTRZEŃDYSKUSJI"]{["kod języka"]=kod_jezyka,["kod projektu"]=kod_projektu,} or nazwy_modul.NpDane{nazwa=nazwa_przestrzeni_nazw,dyskusja="tak",["kod języka"]=kod_jezyka,["kod projektu"]=kod_projektu,["istnieje"]="tak",["wynik błędu nietekstowy"]="tak",}; end; else if(czy_biezaca_wiki)then czy_blad_nazwy_przestrzeni_nazw=(not nazwa_przestrzeni_nazw)and nazwy_modul["NAZWAPRZESTRZENI"]() or nazwy_modul.Np{nazwa=nazwa_przestrzeni_nazw,["istnieje"]="tak",["wynik błędu nietekstowy"]="tak",}; else czy_blad_nazwy_przestrzeni_nazw=(not nazwa_przestrzeni_nazw)and nazwy_modul["NAZWAPRZESTRZENI"]{["kod języka"]=kod_jezyka,["kod projektu"]=kod_projektu,} or nazwy_modul.NpDane{nazwa=nazwa_przestrzeni_nazw,["kod języka"]=kod_jezyka, ["kod projektu"]=kod_projektu,["istnieje"]="tak",["wynik błędu nietekstowy"]="tak",}; end; end; if(czy_blad_nazwy_przestrzeni_nazw)then return czy_blad_nazwy_przestrzeni_nazw; else if(((czy_uwzglednic_alternatywna_nazwe==nil)and true or czy_uwzglednic_alternatywna_nazwe) and frame.args[1])then local nazwa_przestrzeni_nazw_alternatywnej=mw.text.trim(frame.args[1]); if(mw.ustring.match(nazwa_przestrzeni_nazw_alternatywnej,"^[%w%s_]*$"))then local czy_blad_nazwa_przestrzeni_nazw_alternatywnej; if(czy_biezaca_wiki)then local tab_parametry={nazwa=nazwa_przestrzeni_nazw_alternatywnej,["istnieje"]="tak",["wynik błędu nietekstowy"]="tak",}; if(typ)then tab_parametry[typ]="tak";end; czy_blad_nazwa_przestrzeni_nazw_alternatywnej=nazwy_modul.Np(tab_parametry); else local tab_parametry={nazwa=nazwa_przestrzeni_nazw_alternatywnej,["kod języka"]=kod_jezyka,["kod projektu"]=kod_projektu,["istnieje"]="tak",["wynik błędu nietekstowy"]="tak",}; if(typ)then tab_parametry[typ]="tak";end; czy_blad_nazwa_przestrzeni_nazw_alternatywnej=nazwy_modul.NpDane(tab_parametry); end; return czy_blad_nazwa_przestrzeni_nazw_alternatywnej or "(błąd)"; else return "(błąd)"; end; else local parametry_modul=require("Module:Parametry"); nazwa_przestrzeni_nazw=parametry_modul["Odstępy"]{[1]=nazwa_przestrzeni_nazw,[2]="tak",}; if(mw.ustring.match(nazwa_przestrzeni_nazw,"^[%w%s_]*$"))then return nazwa_przestrzeni_nazw; else return "(błąd)"; end; end; end; end; function p.Nazwa_przestrzeni_nazw_2(frame,czy_uwzglednic_alternatywna_nazwe,i) local nazwa_przestrzeni_nazw,nazwa_jednostki,liczba_numer_jednostki=p.Nazwy_przestrzeni_i_jednostki_podane_o_pewnym_numerze(frame,i); nazwa_przestrzeni_nazw=nazwa_przestrzeni_nazw or p.Nazwa_przestrzeni_nazw_uzyskana_z_typu_jednostki_z_frame(frame,liczba_numer_jednostki); local nazwy_modul=require("Module:Nazwy"); local kod_jezyka,kod_projektu=p.Wikikody_kontenera(frame,liczba_numer_jednostki); local wiki_modul=require("Module:Wiki"); local czy_biezaca_wiki=wiki_modul["CzyBieżącaWiki"]{["kod języka"]=kod_jezyka,["kod projektu"]=kod_projektu,}; local nazwa_przestrzeni_nazw_blad; local parametry_modul=require("Module:Parametry"); if(czy_biezaca_wiki)then nazwa_przestrzeni_nazw=nazwa_przestrzeni_nazw and mw.text.trim(nazwa_przestrzeni_nazw) or nazwy_modul["NAZWAPRZESTRZENI"](); nazwa_przestrzeni_nazw_blad=require("Module:Nazwy").Np{nazwa=nazwa_przestrzeni_nazw,["istnieje"]="tak",["wynik błędu nietekstowy"]="tak",}; if(nazwa_jednostki)then nazwa_jednostki=parametry_modul["Odstępy"]{[1]=nazwa_jednostki,[2]="tak",}; nazwa_jednostki=mw.ustring.gsub(nazwa_jednostki,"^([^#]*)#(.*)$","%1"); local parametry=mw.ustring.match(nazwa_jednostki,"^.*%?([^%?]+)$"); if(parametry and mw.ustring.match(parametry,"[^=]+=[^=]*"))then nazwa_jednostki=mw.ustring.gsub(nazwa_jednostki,"^(.*)%?([^%?]+)$","%1"); end; else nazwa_jednostki=nazwy_modul["NAZWASTRONY"](); end; else nazwa_przestrzeni_nazw=nazwa_przestrzeni_nazw and mw.text.trim(nazwa_przestrzeni_nazw) or nazwy_modul["NAZWAPRZESTRZENI"]{["kod języka"]=kod_jezyka,["kod projektu"]=kod_projektu,}; nazwa_przestrzeni_nazw_blad=require("Module:Nazwy").NpDane{nazwa=nazwa_przestrzeni_nazw,["kod języka"]=kod_jezyka,["kod projektu"]=kod_projektu,["istnieje"]="tak",["wynik błędu nietekstowy"]="tak",}; if(nazwa_jednostki)then local html_modul=require("Module:Html"); nazwa_jednostki=html_modul["NazwaStronyAdresu"](nazwa_jednostki,true); else nazwa_jednostki=nazwy_modul["NAZWASTRONY"]{["kod języka"]=kod_jezyka,["kod projektu"]=kod_projektu,}; end; end; nazwa_przestrzeni_nazw=nazwa_przestrzeni_nazw_blad or nazwa_przestrzeni_nazw; if(not mw.ustring.match(nazwa_jednostki,"^:"))then if(nazwa_przestrzeni_nazw~="")then if(czy_biezaca_wiki)then local nazwy_np_modul=mw.loadData("Module:Nazwy/Np"); if(nazwa_przestrzeni_nazw==nazwy_np_modul.Template)then local nazwa_przestrzeni_nazw_d=require("Module:Nazwy")["NAZWAPRZESTRZENI"](nazwa_jednostki); if(nazwa_przestrzeni_nazw_d==nazwy_np_modul.Template)then nazwa_przestrzeni_nazw=nazwy_np_modul.Template; end; elseif(nazwa_przestrzeni_nazw==nazwy_np_modul.Module)then local nazwa_przestrzeni_nazw_d=require("Module:Nazwy")["NAZWAPRZESTRZENI"](nazwa_jednostki); if(nazwa_przestrzeni_nazw_d==nazwy_np_modul.Module)then nazwa_przestrzeni_nazw=nazwy_np_modul.Module; end; end; else local template_prze=nazwy_modul.NpDane{nazwa="Template",["kod języka"]=kod_jezyka,["kod projektu"]=kod_projektu,}; local module_prze=nazwy_modul.NpDane{nazwa="Module",["kod języka"]=kod_jezyka,["kod projektu"]=kod_projektu,}; if(nazwa_przestrzeni_nazw==template_prze)then local nazwa_przestrzeni_nazw_d=nazwy_modul["NAZWAPRZESTRZENI"]{[1]=nazwa_jednostki,["kod języka"]=kod_jezyka,["kod projektu"]=kod_projektu,}; if(nazwa_przestrzeni_nazw_d==template_prze)then nazwa_przestrzeni_nazw=template_prze; end; elseif(nazwa_przestrzeni_nazw==module_prze)then local nazwa_przestrzeni_nazw_d=nazwy_modul["NAZWAPRZESTRZENI"]{[1]=nazwa_jednostki,["kod języka"]=kod_jezyka,["kod projektu"]=kod_projektu,}; if(nazwa_przestrzeni_nazw_d==module_prze)then nazwa_przestrzeni_nazw=module_prze; end; end; end; if(not nazwa_przestrzeni_nazw_blad)then if(((czy_uwzglednic_alternatywna_nazwe==nil)and true or czy_uwzglednic_alternatywna_nazwe) and frame.args[1])then local wytrimowana_nazwa_przestrzeni_nazw=mw.text.trim(frame.args[1]); if(mw.ustring.match(wytrimowana_nazwa_przestrzeni_nazw,"^[%w%s_]*$"))then if(czy_biezaca_wiki)then local nazwy_modul=require("Module:Nazwy"); local czy_blad_nazwy_przestrzeni_nazw=nazwy_modul.Np{nazwa=wytrimowana_nazwa_przestrzeni_nazw,["istnieje"]="tak",["wynik błędu nietekstowy"]="tak",} return czy_blad_nazwy_przestrzeni_nazw or "(błąd)"; else local nazwy_modul=require("Module:Nazwy"); local nazwa_przestrzeni_nazw_blad2=nazwy_modul.NpDane{nazwa=wytrimowana_nazwa_przestrzeni_nazw,["kod języka"]=kod_jezyka,["kod projektu"]=kod_projektu,["istnieje"]="tak",["wynik błędu nietekstowy"]="tak",}; return nazwa_przestrzeni_nazw_blad2 or "(błąd)"; end; else return "(błąd)"; end; else local wytrimowana_nazwa_przestrzeni_nazw=mw.text.trim(nazwa_przestrzeni_nazw); if(mw.ustring.match(wytrimowana_nazwa_przestrzeni_nazw,"^[%w%s_]*$"))then return wytrimowana_nazwa_przestrzeni_nazw; else return "(błąd)"; end; end; else return nazwa_przestrzeni_nazw; end; else return require("Module:Nazwy")["NAZWAPRZESTRZENI"]{[1]=nazwa_jednostki,["kod języka"]=kod_jezyka,["kod projektu"]=kod_projektu,}; end; else return require("Module:Nazwy")["NAZWAPRZESTRZENI"]{[1]=nazwa_jednostki,["kod języka"]=kod_jezyka,["kod projektu"]=kod_projektu,}; end; end; function p.Nazwa_przestrzeni_nazw_przedmiotowa_dyskusji_2(frame,czy_uwzglednic_alternatywna_nazwe,i,typ) local numer_jednostki=i or frame.args["numer jednostki"]; local liczba_numer_jednostki=((numer_jednostki)and(tonumber(numer_jednostki))or 0); local pudelko_modul=require("Module:Pudełko"); local tab_nazwa={ ["przedmiotowa"]="Nazwa przedmiotowej przestrzeni nazw", ["dyskusja"]="Nazwa przestrzeni nazw", }; local nazwa_przestrzeni_nazw=pudelko_modul[tab_nazwa[typ]](frame,czy_uwzglednic_alternatywna_nazwe,liczba_numer_jednostki); local nazwy_modul=require("Module:Nazwy"); if(nazwa_przestrzeni_nazw=="")then local nazwa_jednostki=pudelko_modul["Nazwa jednostki"](frame,liczba_numer_jednostki); local kod_jezyka,kod_projektu=p.Wikikody_kontenera(frame,liczba_numer_jednostki); local tab_nazwa={ ["przedmiotowa"]="PRZEDMIOTOWAPRZESTRZEŃ", ["dyskusja"]="PRZESTRZEŃDYSKUSJI", }; nazwa_przestrzeni_nazw=nazwy_modul[tab_nazwa[typ]]{nazwa=nazwa_jednostki,["kod języka"]=kod_jezyka,["kod projektu"]=kod_projektu,}; else if(typ=="dyskusja")then local wiki_modul=require("Module:Wiki"); local czy_biezaca=wiki_modul["CzyBieżącaWiki"]{["kod języka"]=kod_jezyka,["kod projektu"]=kod_projektu,}; if(czy_biezaca)then nazwa_przestrzeni_nazw=nazwy_modul.Np{[typ]="tak",nazwa=nazwa_przestrzeni_nazw}; else nazwa_przestrzeni_nazw=nazwy_modul.NpDane{[typ]="tak",nazwa=nazwa_przestrzeni_nazw,["kod języka"]=kod_jezyka,["kod projektu"]=kod_projektu,}; end; end; end; return nazwa_przestrzeni_nazw; end; function p.Kod_jezyka(frame,i,wartosc_domyslna) local pudelko_modul=require("Module:Pudełko"); if(not i)then return pudelko_modul["Kod języka tego projektu"]();end; local pf=frame.getParent and frame:getParent() or {args={}}; if(i==0)then return pudelko_modul["Kod języka tego projektu"](); elseif(i==1)then local parametry_modul=require("Module:Parametry"); local kod_jezyka=frame.args["kod języka"] or frame.args["kod języka 1"] or pf.args["kod języka"] or pf.args["kod języka 1"] return ((kod_jezyka)and(kod_jezyka~=""))and mw.text.trim(kod_jezyka) or ((parametry_modul.CzyTak(wartosc_domyslna))and wartosc_domyslna or nil); elseif(i>1)then local parametry_modul=require("Module:Parametry"); local kod_jezyka=frame.args["kod języka "..i] or pf.args["kod języka "..i] return ((kod_jezyka)and(kod_jezyka~=""))and mw.text.trim(kod_jezyka) or ((parametry_modul.CzyTak(wartosc_domyslna))and wartosc_domyslna or nil); end; end function p.Kod_projektu(frame,i,wartosc_domyslna) local pudelko_modul=require("Module:Pudełko"); if(not i)then return pudelko_modul["Kod projektu tego projektu"]();end; local pf=frame.getParent and frame:getParent() or {args={}}; if(i==0)then return pudelko_modul["Kod projektu tego projektu"](); elseif(i==1)then local parametry_modul=require("Module:Parametry"); local kod_projektu=frame.args["kod projektu"] or frame.args["kod projektu 1"] or pf.args["kod projektu"] or pf.args["kod projektu 1"] return ((kod_projektu)and(kod_projektu~=""))and mw.text.trim(kod_projektu) or ((parametry_modul.CzyTak(wartosc_domyslna))and wartosc_domyslna or nil); elseif(i>1)then local parametry_modul=require("Module:Parametry"); local kod_projektu=frame.args["kod projektu "..i] or pf.args["kod projektu "..i] return ((kod_projektu)and(kod_projektu~=""))and mw.text.trim(kod_projektu) or ((parametry_modul.CzyTak(wartosc_domyslna))and wartosc_domyslna or nil); end; end function p.Klucz_projektu(frame,i,wartosc_domyslna_jezyka,wartosc_domyslna_projektu) local pf=frame.getParent and frame:getParent() or {args={}}; local klucz_projektu; local function domyslne_klucz(klucz_projektu) local parametry_modul=require("Module:Parametry"); return ((klucz_projektu)and(klucz_projektu~=""))and mw.text.trim(klucz_projektu)or((parametry_modul.CzyTak(wartosc_domyslna_jezyka)and(parametry_modul.CzyTak(wartosc_domyslna_projektu)))and (wartosc_domyslna_jezyka..":" ..wartosc_domyslna_projektu)or(parametry_modul.CzyTak(wartosc_domyslna_jezyka) and wartosc_domyslna_jezyka or (parametry_modul.CzyTak(wartosc_domyslna_projektu) and wartosc_domyslna_projektu or nil))); end; if(i==0)then return nil; elseif(i==1)then local klucz_projektu=frame.args["klucz projektu"] or frame.args["klucz projektu 1"] or pf.args["klucz projektu"] or pf.args["klucz projektu 1"]; return domyslne_klucz(klucz_projektu); elseif(i>1)then local klucz_projektu=frame.args["klucz projektu "..i] or pf.args["klucz projektu "..i]; return domyslne_klucz(klucz_projektu); end; end; function p.Wikikody_kontenera(frame,i,wartosc_domyslna_jezyka,wartosc_domyslna_projektu) local wiki_modul=require("Module:Wiki"); local kod_jezyka,kod_projektu=wiki_modul.KodyWiki(p.Klucz_projektu(frame,i,wartosc_domyslna_jezyka,wartosc_domyslna_projektu),p.Kod_jezyka(frame,i,wartosc_domyslna_jezyka),p.Kod_projektu(frame,i,wartosc_domyslna_projektu)); return kod_jezyka,kod_projektu; end; function p.Nazwa_przestrzeni_nazw_od_typu_jednostki(typ,args,bez_analizy) if(not bez_analizy)then local parametry_modul=require("Module:Parametry"); if((((not parametry_modul.CzyTak(args["obsługiwane jednostki jako nieopisowe strony"]))and((typ=="artykuł")or(typ=="podręcznik")))or (typ=="artykuł")))then return ""; elseif(((not parametry_modul.CzyTak(args["obsługiwane jednostki jako nieopisowe strony"]))and((typ=="artykuł dla dzieci")or(typ=="podręcznik dla dzieci")))or(typ=="artykuł dla dzieci"))then return "Wikijunior"; elseif((not parametry_modul.CzyTak(args["obsługiwane brudnopisy jako normalne strony"])) and(((not parametry_modul.CzyTak(args["obsługiwane jednostki jako nieopisowe strony"]))and(parametry_modul.CzyTak(args["obsługiwane jednostki brudnopisu projektu"])and (typ=="podręcznik brudnopisu projektu" or typ=="artykuł brudnopisu projektu")or (typ=="jednostka brudnopisu projektu")) or (typ=="strona brudnopisu projektu"))or(typ=="strona projektu"))or (typ=="strona projektu"))then return "Project"; elseif((parametry_modul.CzyTak(args["obsługiwane strony jako niebrudnopisowe jednostki programowe"]))and (typ=="strona szablonu") or(not parametry_modul.CzyTak(args["obsługiwane brudnopisy jako normalne strony"]) and((not parametry_modul.CzyTak(args["obsługiwane opisy jako strony jednostek programowych"]) and not parametry_modul.CzyTak(args["obsługiwane jednostki jako nieopisowe strony"]) and not parametry_modul.CzyTak(args["obsługiwane nieudokumentowane szablony jako szablony"])) and((typ=="strona brudnopisu szablonu")or(typ=="strona brudnopisu opisu szablonu"))or(typ=="strona brudnopisu szablonu")) or((not parametry_modul.CzyTak(args["obsługiwane opisy jako strony jednostek programowych"]) and not parametry_modul.CzyTak(args["obsługiwane jednostki jako nieopisowe strony"]) and not parametry_modul.CzyTak(args["obsługiwane nieudokumentowane szablony jako szablony"])) and((typ=="strona szablonu")or(typ=="strona opisu szablonu"))or(typ=="strona szablonu"))))then return "Template"; elseif((parametry_modul.CzyTak(args["obsługiwane strony jako niebrudnopisowe jednostki programowe"]))and (typ=="strona modułu") or(not parametry_modul.CzyTak(args["obsługiwane brudnopisy jako normalne strony"]) and((not parametry_modul.CzyTak(args["obsługiwane opisy jako strony jednostek programowych"]) and not parametry_modul.CzyTak(args["obsługiwane jednostki jako nieopisowe strony"])) and((typ=="strona brudnopisu modułu")or(typ=="strona brudnopisu opisu modułu"))or(typ=="strona brudnopisu modułu")) or((not parametry_modul.CzyTak(args["obsługiwane opisy jako strony jednostek programowych"]) and not parametry_modul.CzyTak(args["obsługiwane jednostki jako nieopisowe strony"])) and((typ=="strona modułu")or(typ=="strona opisu modułu"))or(typ=="strona modułu"))))then return "Module"; elseif(not parametry_modul.CzyTak(args["obsługiwane jednostki użytkownika jako normalne strony"]) and(((not parametry_modul.CzyTak(args["obsługiwane jednostki jako nieopisowe strony"]))and(parametry_modul.CzyTak(args["obsługiwane jednostki użytkownika"])and (typ=="podręcznik użytkownika" or typ=="artykuł użytkownika") or (typ=="jednostka użytkownika")) or (typ=="strona użytkownika"))or(typ=="strona główna użytkownika"))or(typ=="strona użytkownika"))then return "User"; elseif(typ=="strona pliku")then return "File"; elseif(typ=="strona kategorii")then return "Category"; elseif(typ=="strona pomocy")then return "Help"; elseif(typ=="strona komunikatu")then return "MediaWiki"; elseif(typ=="strona specjalna")then return "Special"; elseif(typ=="strona gadżetu")then return "Gadget"; elseif(typ=="strona główna projektu")then return "Project"; elseif(typ=="strona główna dla dzieci")then return "Wikijunior"; end; return; end; if(typ)then if((typ=="artykuł")or(typ=="podręcznik"))then return ""; elseif((typ=="artykuł dla dzieci")or(typ=="podręcznik dla dzieci"))then return "Wikijunior"; elseif((typ=="podręcznik brudnopisu projektu")or(typ=="artykuł brudnopisu projektu")or(typ=="jednostka brudnopisu projektu")or(typ=="strona brudnopisu projektu")or(typ=="strona projektu"))then return "Project"; elseif((typ=="strona szablonu")or(typ=="strona opisu szablonu")or(typ=="strona brudnopisu szablonu")or(typ=="strona brudnopisu opisu szablonu"))then return "Template"; elseif((typ=="strona modułu")or(typ=="strona opisu modułu")or(typ=="strona brudnopisu modułu")or(typ=="strona brudnopisu opisu modułu"))then return "Module"; elseif((typ=="podręcznik użytkownika")or(typ=="artykuł użytkownika")or(typ=="jednostka użytkownika")or(typ=="strona użytkownika")or(typ=="strona główna użytkownika"))then return "User"; elseif(typ=="strona pliku")then return "File"; elseif(typ=="strona kategorii")then return "Category"; elseif(typ=="strona pomocy")then return "Help"; elseif(typ=="strona komunikatu")then return "MediaWiki"; elseif(typ=="strona specjalna")then return "Special"; elseif(typ=="strona gadżetu")then return "Gadget"; elseif(typ=="strona główna projektu")then return "Project"; elseif(typ=="strona główna dla dzieci")then return "Wikijunior"; end; end; end; function p.Typ_jednostki_uzyskany_z_frame(frame,i) local numer_jednostki=i or frame.args["numer jednostki"]; local liczba_numer_jednostki=tonumber(numer_jednostki) or 0; local pf=frame.getParent and frame:getParent() or {args={}}; local typ; if liczba_numer_jednostki~=0 then typ=liczba_numer_jednostki and( (frame.args["typ jednostki "..liczba_numer_jednostki] or frame.args["typ jednostki i"]) or (pf.args["typ jednostki "..liczba_numer_jednostki] or pf.args["typ jednostki i"]) ); if(not typ)then local nazwa_jednostki=p.Nazwy_przestrzeni_i_jednostki_podane_o_pewnym_numerze(frame,liczba_numer_jednostki,2); if(nazwa_jednostki)then if(not mw.ustring.match(mw.text.trim(nazwa_jednostki),"^:"))then local nazwa_przesrzeni_nazw=p.Nazwy_przestrzeni_i_jednostki_podane_o_pewnym_numerze(frame,liczba_numer_jednostki,1); if(not nazwa_przesrzeni_nazw)then typ=frame.args["typ jednostki"] or pf.args["typ jednostki"]; end; end; end; end; else typ=frame.args["typ jednostki"] or pf.args["typ jednostki"]; end; local parametry_modul=require("Module:Parametry"); if(parametry_modul.CzyTak(typ))then typ,ile=mw.ustring.gsub(typ,"^(%S+)(%s+)(dyskusji)",function(strona,spacja,dyskusja) return strona; end); return typ,liczba_numer_jednostki,ile; end; return typ,liczba_numer_jednostki,0; end; function p.Czy_dyskusja_typu_jednostki_z_frame_od_dyskusja_typu_jednostki(frame,i) local typ,liczba_numer_jednostki,ile_dyskusja=p.Typ_jednostki_uzyskany_z_frame(frame,i); if(ile_dyskusja>0)then return true;end; local pf=frame.getParent and frame:getParent() or {args={},}; local function FuncTemp(liczba_numer_jednostki) local dyskusja_parametr="dyskusja typu jednostki"; if(liczba_numer_jednostki==0)then return frame.args[dyskusja_parametr] or pf.args[dyskusja_parametr]; else return ((frame.args[dyskusja_parametr.." "..liczba_numer_jednostki] or pf.args[dyskusja_parametr.." "..liczba_numer_jednostki]) or (frame.args[dyskusja_parametr.." i"] or pf.args[dyskusja_parametr.." i"]) or(frame.args[dyskusja_parametr] or pf.args[dyskusja_parametr])); end; end; local czy_dyskusja=FuncTemp(liczba_numer_jednostki); local parametry_modul=require("Module:Parametry"); local czy_dyskusja=parametry_modul.CzyTak(czy_dyskusja); return czy_dyskusja; end; function p.Nazwa_przestrzeni_nazw_uzyskana_z_typu_jednostki_z_frame(frame,i) local typ=p.Typ_jednostki_uzyskany_z_frame(frame,i); local nazwa_przestrzeni_nazw=typ and p.Nazwa_przestrzeni_nazw_od_typu_jednostki(typ,nil,true) or nil; if(nazwa_przestrzeni_nazw)then local czy_dyskusja=p.Czy_dyskusja_typu_jednostki_z_frame_od_dyskusja_typu_jednostki(frame,i); if(czy_dyskusja)then if(nazwa_przestrzeni_nazw=="")then return "Talk"; else return nazwa_przestrzeni_nazw.." talk"; end; else return nazwa_przestrzeni_nazw; end; else return nil; end; end; function p.Typ_jednostki(frame, kod_liczbowy_przestrzeni_nazw,i,numer_argorytmu) local parametry_modul=require("Module:Parametry"); local analiza=parametry_modul.CzyTak(frame.args["analiza"]); local typ,liczba_numer_jednostki=p.Typ_jednostki_uzyskany_z_frame(frame,i); local uzyskana_przestrzen_nazw_od_typu_jednostki; local nazwa_przestrzeni_nazw_podana,nazwa_jednostki_podana=p.Nazwy_przestrzeni_i_jednostki_podane_o_pewnym_numerze(frame,liczba_numer_jednostki); if((not analiza)and(typ))then if(typ~="")then uzyskana_przestrzen_nazw_od_typu_jednostki=p.Nazwa_przestrzeni_nazw_od_typu_jednostki(typ,frame.args); if(uzyskana_przestrzen_nazw_od_typu_jednostki)then if((not nazwa_przestrzeni_nazw_podana)and(not nazwa_jednostki_podana))then return typ; end; else return "(błąd typu jednostki)"; end; end; end; local nazwa_przestrzeni_nazw,nazwa_jednostki=p.Uzyskanie_nazw_jednostki(frame,kod_liczbowy_przestrzeni_nazw,nil,liczba_numer_jednostki,numer_argorytmu); local nazwy_modul=require("Module:Nazwy"); local kod_jezyka,kod_projektu=p.Wikikody_kontenera(frame,liczba_numer_jednostki); local wiki_modul=require("Module:Wiki"); local czy_biezaca=wiki_modul["CzyBieżącaWiki"]{["kod języka"]=kod_jezyka,["kod projektu"]=kod_projektu,}; local czy_blad_nazwa_przestrzeni_nazw; if(czy_biezaca)then czy_blad_nazwa_przestrzeni_nazw=nazwy_modul.Np{nazwa=nazwa_przestrzeni_nazw,["kanoniczna"]="tak",["nazwij projektem"]="tak",["nazwij dyskusją projektu"]="tak",["istnieje"]="tak",["wynik błędu nietekstowy"]="tak",} else czy_blad_nazwa_przestrzeni_nazw=nazwy_modul.NpDane{nazwa=nazwa_przestrzeni_nazw,["kanoniczna"]="tak",["nazwij projektem"]="tak",["nazwij dyskusją projektu"]="tak",["kod języka"]=kod_jezyka,["kod projektu"]=kod_projektu,["istnieje"]="tak",["wynik błędu nietekstowy"]="tak",} end; if(not czy_blad_nazwa_przestrzeni_nazw)then return "(błąd nazwy przestrzeni nazw)";end; nazwa_przestrzeni_nazw=czy_blad_nazwa_przestrzeni_nazw; --- --- if((not analiza)and(typ))then if(typ~="")then ---typ jednostki if(uzyskana_przestrzen_nazw_od_typu_jednostki)then if((nazwa_przestrzeni_nazw_podana)and(not nazwa_jednostki_podana))then if(uzyskana_przestrzen_nazw_od_typu_jednostki==nazwa_przestrzeni_nazw)then return typ; else return "(błąd niezgodności)"; end; end; else return "(błąd typu jednostki)"; end; end; end; local function Typ_jednostki() if(nazwa_jednostki~="")then --local kod_jezyka,kod_projektu=KodyWikiPudelka(frame,liczba_numer_jednostki); --local klucz_projektu=kod_projektu..":"..kod_jezyka; local pudelko_modul=require("Module:Pudełko"); local pelna_nazwa_strony=((nazwa_przestrzeni_nazw~="")and nazwa_przestrzeni_nazw..":" or "")..nazwa_jednostki; if(pudelko_modul.CzyNiepoprawnaNazwa(pelna_nazwa_strony))then return "(błąd nazwy jednostki)";end; local nazwy_modul=require("Module:Nazwy") pelna_nazwa_strony=nazwy_modul["PEŁNANAZWASTRONY"]{[1]=pelna_nazwa_strony,["kod języka"]=kod_jezyka,["kod projektu"]=kod_projektu,}; local norm_przed_lub_dyskusji=p.Normalna_przedmiotowa_lub_dyskusji_nazwa_przestrzeni_nazw(nazwa_przestrzeni_nazw,1,kod_jezyka,kod_projektu); if(kod_projektu==pudelko_modul["Kod projektu tego projektu"]())then local nazwa_strony_glownej_dla_dzieci_ze_zmiennej=p.Nazwa_strony_bazowej_dla_dzieci_ze_zmiennej(frame,liczba_numer_jednostki,kod_jezyka); if(nazwa_strony_glownej_dla_dzieci_ze_zmiennej=="")then return "(błąd nazwy strony głównej dla dzieci)";end; local nazwa_strony_glownej_wikijuniora=p.Nazwa_strony_bazowej_dla_dzieci_z_wikidanych(kod_jezyka); local nazwa_strony_glownej_dla_dzieci_uzyskana=(not nazwa_strony_glownej_dla_dzieci_ze_zmiennej)and nazwa_strony_glownej_wikijuniora or nazwa_strony_glownej_dla_dzieci_ze_zmiennej; if(nazwa_strony_glownej_dla_dzieci_uzyskana)then if(pudelko_modul.CzyNiepoprawnaNazwa(nazwa_strony_glownej_dla_dzieci_uzyskana))then return "(błąd nazwy strony głównej dla dzieci)";end; nazwa_strony_glownej_dla_dzieci_uzyskana=nazwy_modul["PEŁNANAZWASTRONY"]{[1]=nazwa_strony_glownej_dla_dzieci_uzyskana,["kod języka"]=kod_jezyka,["kod projektu"]=kod_projektu,}; if(pelna_nazwa_strony==nazwa_strony_glownej_dla_dzieci_uzyskana)then return "strona główna dla dzieci";end; end; end; local nazwa_strony_glownej_projektu_ze_zmiennej=p.Nazwa_strony_bazowej_projektu_ze_zmiennej(frame,liczba_numer_jednostki,kod_jezyka,kod_projektu); if(nazwa_strony_glownej_projektu_ze_zmiennej=="")then return "(błąd nazwy strony głównej projektu)";end; local nazwa_strony_glownej_projektu_z_wikidanych=p.Nazwa_strony_bazowej_projektu_z_wikidanych(kod_jezyka,kod_projektu); local nazwa_strony_glownej_projektu_uzyskana=(not nazwa_strony_glownej_projektu_ze_zmiennej)and nazwa_strony_glownej_projektu_z_wikidanych or nazwa_strony_glownej_projektu_ze_zmiennej; if(nazwa_strony_glownej_projektu_uzyskana)then if(pudelko_modul.CzyNiepoprawnaNazwa(nazwa_strony_glownej_projektu_uzyskana))then return "(błąd nazwy strony głównej projektu)";end; nazwa_strony_glownej_projektu_uzyskana=nazwy_modul["PEŁNANAZWASTRONY"]{[1]=nazwa_strony_glownej_projektu_uzyskana,["kod języka"]=kod_jezyka,["kod projektu"]=kod_projektu,}; if(pelna_nazwa_strony==nazwa_strony_glownej_projektu_uzyskana)then return "strona główna projektu";end; end; if(norm_przed_lub_dyskusji=="")then local parametry_modul=require("Module:Parametry"); if(parametry_modul.CzyTak(frame.args["obsługiwane jednostki jako nieopisowe strony"]))then return "artykuł"; else local it=mw.ustring.match(nazwa_jednostki,"^[^/]+$"); if(it)then return "podręcznik";else return "artykuł";end; end; elseif(norm_przed_lub_dyskusji=="Wikijunior")then local parametry_modul=require("Module:Parametry"); if(parametry_modul.CzyTak(frame.args["obsługiwane jednostki jako nieopisowe strony"]))then return "artykuł dla dzieci"; else local it=mw.ustring.match(nazwa_jednostki,"^[^/]+$"); if(it)then return "podręcznik dla dzieci";else return "artykuł dla dzieci";end; end; elseif(norm_przed_lub_dyskusji=="User")then local parametry_modul=require("Module:Parametry"); if(parametry_modul.CzyTak(frame.args["obsługiwane jednostki użytkownika jako normalne strony"]))then return "strona użytkownika"; else local czy_podstrony=mw.ustring.match(nazwa_jednostki,"^[^/]+$") if(czy_podstrony)then return "strona główna użytkownika"; else if(not parametry_modul.CzyTak(frame.args["obsługiwane jednostki jako nieopisowe strony"]))then if(parametry_modul.CzyTak(frame.args["obsługiwane jednostki użytkownika"]))then local czy_ksiazka=mw.ustring.match(nazwa_jednostki,"^[^/]+/[^/]*$"); if(czy_ksiazka)then return "podręcznik użytkownika"; else return "artykuł użytkownika"; end; else return "jednostka użytkownika"; end; else return "strona użytkownika"; end; end; end; elseif(norm_przed_lub_dyskusji=="File")then return "strona pliku"; elseif(norm_przed_lub_dyskusji=="Category")then return "strona kategorii"; elseif(norm_przed_lub_dyskusji=="Project")then local parametry_modul=require("Module:Parametry"); if(parametry_modul.CzyTak(frame.args["obsługiwane brudnopisy jako normalne strony"]))then return "strona projektu";end; if(mw.ustring.match(nazwa_jednostki,"^%s*[Bb]rudnopis/[^/]*/.*"))then if(not parametry_modul.CzyTak(frame.args["obsługiwane jednostki jako nieopisowe strony"]))then if(parametry_modul.CzyTak(frame.args["obsługiwane jednostki brudnopisu projektu"]))then local czy_ksiazka=mw.ustring.match(nazwa_jednostki,"^%s*[Bb]rudnopis/[^/]*/[^/]*$"); if(czy_ksiazka)then return "podręcznik brudnopisu projektu"; else return "artykuł brudnopisu projektu"; end; else return "jednostka brudnopisu projektu"; end; else return "strona brudnopisu projektu"; end; else return "strona projektu"; end; elseif(norm_przed_lub_dyskusji=="Help")then return "strona pomocy"; elseif(norm_przed_lub_dyskusji=="MediaWiki")then return "strona komunikatu"; elseif(norm_przed_lub_dyskusji=="Special")then return "strona specialna"; elseif(norm_przed_lub_dyskusji=="Gadget")then return "strona gadżetu"; elseif(norm_przed_lub_dyskusji=="Template")then local parametry_modul=require("Module:Parametry"); if(parametry_modul.CzyTak(frame.args["obsługiwane strony jako niebrudnopisowe jednostki programowe"]))then return "strona szablonu";end; local function CzySzablonAlboOpis(nazwa_przestrzeni_nazw,nazwa_jednostki,szablon,opis_szablonu,strona_szablonu,prefix) local parametry_modul=require("Module:Parametry"); if(parametry_modul.CzyTak(frame.args["obsługiwane opisy jako strony jednostek programowych"]) or parametry_modul.CzyTak(frame.args["obsługiwane jednostki jako nieopisowe strony"]))then return szablon; else if(mw.ustring.match(nazwa_jednostki,"^"..prefix..".*/opis$"))then return opis_szablonu; else if(not parametry_modul.CzyTak(frame.args["obsługiwane nieudokumentowane szablony jako szablony"]))then local czy_brudnopis=mw.ustring.match(nazwa_jednostki,"^"..prefix..".*$"); if(czy_brudnopis)then local pagename=(nazwa_przestrzeni_nazw~="")and nazwa_przestrzeni_nazw..":"..nazwa_jednostki or nazwa_jednostki; local czy_istnieje_strona,tab=require("Module:Techniczne").PoliczZbiory(pagename); if(czy_istnieje_strona==1)then local czy_brudnopis_opisu_szablonu=require("Module:Łatki").contentMatch{ [1]='<noinclude>.-{{%s*[Dd]okumentacja%s*}}.-</noinclude>', [2]='<noinclude>.-{{%s*[Dd]okumentacja%s*|.-</noinclude>',pagename=pagename,namespace=0 }; if(not czy_brudnopis_opisu_szablonu)then return opis_szablonu;else return szablon;end; else return szablon; end; else return strona_szablonu; end; else return szablon; end; end; end; end; if((not parametry_modul.CzyTak(frame.args["obsługiwane brudnopisy jako normalne strony"]))and(mw.ustring.match(nazwa_jednostki,"^%s*[Bb]rudnopis/[^/]*/.*")))then return CzySzablonAlboOpis(norm_przed_lub_dyskusji,nazwa_jednostki,"strona brudnopisu szablonu","strona brudnopisu opisu szablonu","strona szablonu","[Bb]rudnopis/[^/]*/"); else return CzySzablonAlboOpis(norm_przed_lub_dyskusji,nazwa_jednostki,"strona szablonu","strona opisu szablonu","strona szablonu",""); end; elseif(norm_przed_lub_dyskusji=="Module")then local parametry_modul=require("Module:Parametry"); if(parametry_modul.CzyTak(frame.args["obsługiwane strony jako niebrudnopisowe jednostki programowe"]))then return "strona modułu";end; if((not parametry_modul.CzyTak(frame.args["obsługiwane brudnopisy jako normalne strony"]))and(mw.ustring.match(nazwa_jednostki,"^%s*[Bb]rudnopis/[^/]*/.*")))then if(parametry_modul.CzyTak(frame.args["obsługiwane opisy jako strony jednostek programowych"]) or parametry_modul.CzyTak(frame.args["obsługiwane jednostki jako nieopisowe strony"]))then return "strona brudnopisu modułu" else local pelna_nazwa_strony=(norm_przed_lub_dyskusji~="")and norm_przed_lub_dyskusji..":"..nazwa_jednostki or nazwa_jednostki; pelna_nazwa_strony=require("Module:Nazwy")["PEŁNANAZWASTRONY"]{[1]=pelna_nazwa_strony,["kod języka"]=kod_jezyka,["kod projektu"]=kod_projektu,}; local pelna_nazwa_strony_brudnopisu_opisu_modulu=require("Module:Techniczne")["PełnaNazwaOpisuModułu"](pelna_nazwa_strony); if(pelna_nazwa_strony==pelna_nazwa_strony_brudnopisu_opisu_modulu)then return "strona brudnopisu opisu modułu"; else return "strona brudnopisu modułu"; end; end; else if(parametry_modul.CzyTak(frame.args["obsługiwane opisy jako strony jednostek programowych"]) or parametry_modul.CzyTak(frame.args["obsługiwane jednostki jako nieopisowe strony"]))then return "strona modułu" else local pelna_nazwa_strony=(norm_przed_lub_dyskusji~="")and norm_przed_lub_dyskusji..":"..nazwa_jednostki or nazwa_jednostki; pelna_nazwa_strony=require("Module:Nazwy")["PEŁNANAZWASTRONY"]{[1]=pelna_nazwa_strony,["kod języka"]=kod_jezyka,["kod projektu"]=kod_projektu,}; local pelna_nazwa_opisu_modulu=require("Module:Techniczne")["PełnaNazwaOpisuModułu"](pelna_nazwa_strony); if(pelna_nazwa_strony==pelna_nazwa_opisu_modulu)then return "strona opisu modułu"; else return "strona modułu"; end; end; end; else return "inne"; end; end; return "inne"; end; local typ_jednostki=Typ_jednostki(); local function TempFunc(typ_jednostki) if( (kod_liczbowy_przestrzeni_nazw==2) or( (kod_liczbowy_przestrzeni_nazw==0) and( (p.Czy_dyskusja_typu_jednostki_z_frame_od_dyskusja_typu_jednostki(frame,i)) or(nazwa_przestrzeni_nazw and (mw.ustring.match(nazwa_przestrzeni_nazw,"^Talk$") or mw.ustring.match(nazwa_przestrzeni_nazw," talk$")) or nil ) ) ) )then typ_jednostki,ile=mw.ustring.gsub(typ_jednostki,"^(%S+)",function(strona) return strona.." dyskusji"; end); return typ_jednostki; end; return typ_jednostki; end; if(((analiza)or(nazwa_jednostki_podana))and(typ)and(typ~=""))then if(typ_jednostki==typ)then return TempFunc(typ_jednostki); elseif(nazwa_jednostki_podana)then return "(błąd parametrów pudełkowych)" else return "(błąd typu jednostki)"; end; end; return TempFunc(typ_jednostki); end; function p.Uzyskanie_nazw_jednostki(frame,kod_liczbowy_przestrzeni_nazw,czy_uwzglednic_alternatywna_nazwe,i,numer_argorytmu,co_ma_liczyc) local nazwa_przestrzeni_fun,nazwa_jednostki_fun; if(kod_liczbowy_przestrzeni_nazw==0)then nazwa_przestrzeni_fun="Nazwa przestrzeni nazw"; nazwa_jednostki_fun="Nazwa jednostki"; elseif(kod_liczbowy_przestrzeni_nazw==1)then nazwa_przestrzeni_fun="Nazwa przedmiotowej przestrzeni nazw"; nazwa_jednostki_fun="Nazwa przedmiotowa jednostki"; elseif(kod_liczbowy_przestrzeni_nazw==2)then nazwa_przestrzeni_fun="Nazwa przestrzeni nazw dyskusji" nazwa_jednostki_fun="Nazwa dyskusji jednostki"; else nazwa_przestrzeni_fun="Nazwa przestrzeni nazw"; nazwa_jednostki_fun="Nazwa jednostki"; end; local pudelko_modul=require("Module:Pudełko"); if(not numer_argorytmu)then if((not i)or(i==0))then if((not co_ma_liczyc)or(co_ma_liczyc==0))then local nazwa_przestrzeni_nazw=pudelko_modul[nazwa_przestrzeni_fun](frame,czy_uwzglednic_alternatywna_nazwe); local nazwa_jednostki=pudelko_modul["Nazwa jednostki"](frame); return nazwa_przestrzeni_nazw,nazwa_jednostki; elseif(co_ma_liczyc==1)then local nazwa_przestrzeni_nazw=pudelko_modul[nazwa_przestrzeni_fun](frame,czy_uwzglednic_alternatywna_nazwe); return nazwa_przestrzeni_nazw; elseif(co_ma_liczyc==2)then return pudelko_modul["Nazwa jednostki"](frame); end; else if((not co_ma_liczyc)or(co_ma_liczyc==0))then local n=p.Nazwa_przestrzeni_nazw_dodatkowe(frame,i); local parametry_modul=require("Module:Parametry"); n=parametry_modul.CzyTak(n); local nazwa_przestrzeni_nazw=(n) and pudelko_modul[nazwa_przestrzeni_fun](frame,czy_uwzglednic_alternatywna_nazwe,i) or pudelko_modul[nazwa_przestrzeni_fun.." 2"](frame,czy_uwzglednic_alternatywna_nazwe,i); local nazwa_jednostki=(n)and pudelko_modul["Nazwa jednostki"](frame,i) or pudelko_modul[nazwa_jednostki_fun.." 2"](frame,i); return nazwa_przestrzeni_nazw,nazwa_jednostki; elseif(co_ma_liczyc==1)then local n=p.Nazwa_przestrzeni_nazw_dodatkowe(frame,i); local parametry_modul=require("Module:Parametry"); n=parametry_modul.CzyTak(n); local nazwa_przestrzeni_nazw=(n) and pudelko_modul[nazwa_przestrzeni_fun](frame,czy_uwzglednic_alternatywna_nazwe,i) or pudelko_modul[nazwa_przestrzeni_fun.." 2"](frame,czy_uwzglednic_alternatywna_nazwe,i); return nazwa_przestrzeni_nazw; elseif(co_ma_liczyc==2)then local n=p.Nazwa_przestrzeni_nazw_dodatkowe(frame,i); local parametry_modul=require("Module:Parametry"); n=parametry_modul.CzyTak(n); return (n)and pudelko_modul["Nazwa jednostki"](frame,i) or pudelko_modul[nazwa_jednostki_fun.." 2"](frame,i); end; end; else if(numer_argorytmu==0)then if((not co_ma_liczyc)or(co_ma_liczyc==0))then local nazwa_przestrzeni_nazw=pudelko_modul[nazwa_przestrzeni_fun](frame,czy_uwzglednic_alternatywna_nazwe,i); local nazwa_jednostki=pudelko_modul["Nazwa jednostki"](frame,i); return nazwa_przestrzeni_nazw,nazwa_jednostki; elseif(co_ma_liczyc==1)then local nazwa_przestrzeni_nazw=pudelko_modul[nazwa_przestrzeni_fun](frame,czy_uwzglednic_alternatywna_nazwe,i); return nazwa_przestrzeni_nazw; elseif(co_ma_liczyc==2)then return pudelko_modul["Nazwa jednostki"](frame,i); end; else if((not co_ma_liczyc)or(co_ma_liczyc==0))then local nazwa_przestrzeni_nazw=pudelko_modul[nazwa_przestrzeni_fun.." 2"](frame,czy_uwzglednic_alternatywna_nazwe,i); local nazwa_jednostki=pudelko_modul[nazwa_jednostki_fun.." 2"](frame,i); return nazwa_przestrzeni_nazw,nazwa_jednostki; elseif(co_ma_liczyc==1)then local nazwa_przestrzeni_nazw=pudelko_modul[nazwa_przestrzeni_fun.." 2"](frame,czy_uwzglednic_alternatywna_nazwe,i); return nazwa_przestrzeni_nazw; elseif(co_ma_liczyc==2)then return pudelko_modul[nazwa_jednostki_fun.." 2"](frame,i); end; end; end; end; function p.Nazwa_przestrzeni_nazw_dodatkowe(frame,numer_jednostki) local pf=frame.getParent and frame:getParent() or {args={}}; return frame.args["nazwa przestrzeni nazw "..tostring(numer_jednostki)] or pf.args["nazwa przestrzeni nazw "..tostring(numer_jednostki)] end; function p.Nazwa_jednostki(frame,i) local pf=frame.getParent and frame:getParent() or {args={}}; local nazwa_jednostki,liczba_numer_jednostki=p.Nazwy_przestrzeni_i_jednostki_podane_o_pewnym_numerze(frame,i,2); local kod_jezyka,kod_projektu=p.Wikikody_kontenera(frame,liczba_numer_jednostki); if(nazwa_jednostki)then nazwa_jednostki=mw.text.trim(nazwa_jednostki); nazwa_jednostki=mw.ustring.gsub(nazwa_jednostki,"^:",""); nazwa_jednostki=mw.ustring.gsub(nazwa_jednostki,"^([^#]*)#(.*)$","%1"); local parametry=mw.ustring.match(nazwa_jednostki,"^.*%?([^%?]+)$"); if(parametry and mw.ustring.match(parametry,"[^=]+=[^=]*"))then nazwa_jednostki=mw.ustring.gsub(nazwa_jednostki,"^(.*)%?([^%?]+)$","%1"); end; else local nazwy_modul=require("Module:Nazwy"); nazwa_jednostki=nazwy_modul["NAZWASTRONY"]{["kod języka"]=kod_jezyka,["kod projektu"]=kod_projektu,}; end; local parametry_modul=require("Module:Parametry"); nazwa_jednostki=parametry_modul["Odstępy"]{[1]=nazwa_jednostki,[2]="tak",}; return mw.getContentLanguage():ucfirst(nazwa_jednostki); end; function p.Nazwy_przestrzeni_i_jednostki_podane_o_pewnym_numerze(frame,i,co_podac) local pf=frame.getParent and frame:getParent() or {args={}}; local numer_jednostki=i or frame.args["numer jednostki"]; local liczba_numer_jednostki=tonumber(numer_jednostki) or 0; local nazwa_jednostki; local bool_numer_jednostki=(liczba_numer_jednostki~=0); local function Nazwa_jednostki() if bool_numer_jednostki then nazwa_jednostki=frame.args["nazwa jednostki "..liczba_numer_jednostki] or ((liczba_numer_jednostki==1)and(pf.args["cel"])) or pf.args[liczba_numer_jednostki]; else nazwa_jednostki=frame.args["nazwa jednostki"] or pf.args["nazwa jednostki"]; end; return nazwa_jednostki; end; local function Nazwa_przestrzeni_nazw() local nazwa_przestrzeni_nazw=bool_numer_jednostki and (frame.args["nazwa przestrzeni nazw i"] or pf.args["nazwa przestrzeni nazw i"] or frame.args["nazwa przestrzeni nazw "..liczba_numer_jednostki] or pf.args["nazwa przestrzeni nazw "..liczba_numer_jednostki]) or frame.args["nazwa przestrzeni nazw"] or pf.args["nazwa przestrzeni nazw"]; return nazwa_przestrzeni_nazw; end; if(not co_podac)then return Nazwa_przestrzeni_nazw(),Nazwa_jednostki(),liczba_numer_jednostki; elseif(co_podac==1)then return Nazwa_przestrzeni_nazw(),liczba_numer_jednostki; elseif(co_podac==2)then return Nazwa_jednostki(),liczba_numer_jednostki; else return Nazwa_przestrzeni_nazw(),Nazwa_jednostki(),liczba_numer_jednostki; end; end; function p.Jaka_nazwa_jednostki(frame,i,jaka) local nazwa_przestrzeni_nazw,nazwa_jednostki,liczba_numer_jednostki=p.Nazwy_przestrzeni_i_jednostki_podane_o_pewnym_numerze(frame,i); nazwa_przestrzeni_nazw=nazwa_przestrzeni_nazw or p.Nazwa_przestrzeni_nazw_uzyskana_z_typu_jednostki_z_frame(frame,liczba_numer_jednostki); ---- local nazwy_modul=require("Module:Nazwy"); nazwa_przestrzeni_nazw=nazwa_przestrzeni_nazw and mw.text.trim(nazwa_przestrzeni_nazw) or nazwy_modul["NAZWAPRZESTRZENI"](); if(nazwa_jednostki)then local html_modul=require("Module:Html"); nazwa_jednostki=html_modul["NazwaStronyAdresu"](nazwa_jednostki,true); else nazwa_jednostki=nazwy_modul["NAZWASTRONY"](); end; local kod_jezyka,kod_projektu=p.Wikikody_kontenera(frame,liczba_numer_jednostki); local wiki_modul=require("Module:Wiki"); local czy_biezaca=wiki_modul["CzyBieżącaWiki"]{["kod języka"]=kod_jezyka,["kod projektu"]=kod_projektu,}; if(jaka)then if(czy_biezaca)then local tab_parametry={nazwa=nazwa_przestrzeni_nazw,}; if(jaka=="przedmiotowa")then tab_parametry["przedmiotowa"]="tak";end; nazwa_przestrzeni_nazw=nazwy_modul.Np(tab_parametry); else local tab_parametry={nazwa=nazwa_przestrzeni_nazw,["kod języka"]=kod_jezyka,["kod projektu"]=kod_projektu,}; if(jaka=="przedmiotowa")then tab_parametry["przedmiotowa"]="tak";end; nazwa_przestrzeni_nazw=nazwy_modul.NpDane(tab_parametry); end; else if(czy_biezaca)then nazwa_przestrzeni_nazw=nazwy_modul.Np{nazwa=nazwa_przestrzeni_nazw}; else nazwa_przestrzeni_nazw=nazwy_modul.NpDane{nazwa=nazwa_przestrzeni_nazw,["kod języka"]=kod_jezyka,["kod projektu"]=kod_projektu,}; end; end; if(not mw.ustring.match(nazwa_jednostki,"^:"))then if(nazwa_przestrzeni_nazw~="")then if((not typ)or(typ=="przedmiotowa"))then if(czy_biezaca)then local nazwy_np_modul=mw.loadData("Module:Nazwy/Np"); if(nazwa_przestrzeni_nazw==nazwy_np_modul.Template)then local nazwa_przestrzeni_nazw_d=nazwy_modul["NAZWAPRZESTRZENI"](nazwa_jednostki); if(nazwa_przestrzeni_nazw_d==nazwy_np_modul.Template)then return nazwy_modul["NAZWASTRONY"](nazwa_jednostki); end; elseif(nazwa_przestrzeni_nazw==nazwy_np_modul.Module)then local nazwa_przestrzeni_nazw_d=nazwy_modul["NAZWAPRZESTRZENI"](nazwa_jednostki); if(nazwa_przestrzeni_nazw_d==nazwy_np_modul.Module)then return nazwy_modul["NAZWASTRONY"](nazwa_jednostki); end; end; else local template_prze=nazwy_modul.NpDane{nazwa="Template",["kod języka"]=kod_jezyka,["kod projektu"]=kod_projektu,}; local module_prze=nazwy_modul.NpDane{nazwa="Module",["kod języka"]=kod_jezyka,["kod projektu"]=kod_projektu,}; if(nazwa_przestrzeni_nazw==template_prze)then local nazwa_przestrzeni_nazw_d=nazwy_modul["NAZWAPRZESTRZENI"]{[1]=nazwa_jednostki,["kod języka"]=kod_jezyka,["kod projektu"]=kod_projektu,}; if(nazwa_przestrzeni_nazw_d==template_prze)then return nazwy_modul["NAZWASTRONY"]{[1]=nazwa_jednostki,["kod języka"]=kod_jezyka,["kod projektu"]=kod_projektu,}; end; elseif(nazwa_przestrzeni_nazw==module_prze)then local nazwa_przestrzeni_nazw_d=nazwy_modul["NAZWAPRZESTRZENI"]{[1]=nazwa_jednostki,["kod języka"]=kod_jezyka,["kod projektu"]=kod_projektu,}; if(nazwa_przestrzeni_nazw_d==module_prze)then return nazwy_modul["NAZWASTRONY"]{[1]=nazwa_jednostki,["kod języka"]=kod_jezyka,["kod projektu"]=kod_projektu,}; end; end; end; end; local parametry_modul=require("Module:Parametry"); nazwa_jednostki=parametry_modul["Odstępy"]{[1]=nazwa_jednostki,[2]="tak",}; return mw.getContentLanguage():ucfirst(nazwa_jednostki); else return nazwy_modul["NAZWASTRONY"]{[1]=nazwa_jednostki,["kod języka"]=kod_jezyka,["kod projektu"]=kod_projektu,}; end; else return nazwy_modul["NAZWASTRONY"]{[1]=nazwa_jednostki,["kod języka"]=kod_jezyka,["kod projektu"]=kod_projektu,}; end; end; function p.Czy_przestrzen_nazw_jest_obslugiwana(frame,jakas_przestrzen_nazw,kod_jezyka,kod_projektu) local nazwy_modul=require("Module:Nazwy"); local parametry_modul=require("Module:Parametry"); local wiki_modul=require("Module:Wiki"); local czy_biezaca=wiki_modul["CzyBieżącaWiki"]{["kod języka"]=kod_jezyka,["kod projektu"]=kod_projektu,}; if(czy_biezaca)then jakas_przestrzen_nazw=nazwy_modul.Np{nazwa=jakas_przestrzen_nazw}; else jakas_przestrzen_nazw=nazwy_modul.NpDane{nazwa=jakas_przestrzen_nazw,["kod języka"]=kod_jezyka,["kod projektu"]=kod_projektu,}; end; local function nazwa_przestrzeni_nazw_fun(nazwa_przestrzeni_nazw_iter) if(czy_biezaca)then nazwa_przestrzeni_nazw_iter=nazwy_modul.Np{nazwa=nazwa_przestrzeni_nazw_iter}; else nazwa_przestrzeni_nazw_iter=nazwy_modul.NpDane{nazwa=nazwa_przestrzeni_nazw_iter,["kod języka"]=kod_jezyka,["kod projektu"]=kod_projektu,}; end; if(jakas_przestrzen_nazw==nazwa_przestrzeni_nazw_iter)then return true; end; return false; end; for licznik,nazwa_przestrzeni_nazw in pairs(frame.args)do if(type(licznik)=="number")then local nazwa_przestrzeni_nazw_element,klucze_element=mw.ustring.match(nazwa_przestrzeni_nazw,"^%s*([%w%s]*)%s*:%s*(.-)%s*"); if(nazwa_przestrzeni_nazw_element and klucze_element)then local tab_klucze=mw.text.split(klucze_element,"%s*,%s*",false); local wiki_modul=require("Module:Wiki"); for _,klucz_element in ipairs(tab_klucze)do local kod_jezyka_obslugiwane,kod_projektu_obslugiwane=wiki_modul.KluczProjektu(klucz_element); if(kod_jezyka_obslugiwane==kod_jezyka and kod_projektu_obslugiwane==kod_projektu)then local wynik=nazwa_przestrzeni_nazw_fun(nazwa_przestrzeni_nazw_element); if(wynik)then return true;end; end; end; else local wynik=nazwa_przestrzeni_nazw_fun(nazwa_przestrzeni_nazw); if(wynik)then return true;end; end; end; end; return false; end; function p.Analiza_interwiki_czy_projekt_aktualny(frame,czy_jezyk,czy_projekt) local parametry_modul=require("Module:Parametry"); local p=parametry_modul.PobierzFrameEwentualnieParent(frame); local pudelko_modul=require("Module:Pudełko"); local wiki_modul=require("Module:Wiki"); local jezyk_biezacy=czy_jezyk and pudelko_modul["Kod języka tego projektu"](); local projekt_biezacy=czy_projekt and pudelko_modul["Kod projektu tego projektu"](); for i,_ in pairs(p.args)do if(type(i)=="number")then local klucz_projektu=pudelko_modul["Klucz projektu"](frame,i); local kod_jezyka=pudelko_modul["Kod języka"](frame,i); local kod_projektu=pudelko_modul["kod projektu"](frame,i); local jezyk,projekt=wiki_modul.KodyWiki(klucz_projektu,kod_jezyka,kod_projektu); if((czy_jezyk and (jezyk~=jezyk_biezacy))or(czy_projekt and(projekt~=projekt_biezacy)))then return "tak"; end; end; end; return; end; return p; 58qdfdw34w7j6qdprczxi0wvwak5l4y 540472 540463 2026-04-24T11:08:21Z Persino 2851 540472 Scribunto text/plain local p={}; function p.Nazwa_strony_bazowej_projektu_z_wikidanych(kod_jezyka,kod_projektu) local strona=require("Module:Pudełko")["Strona główna tego projektu"](); local odpowiednik_strony=require("Module:Wiki").WikidaneOdpowiednikStrony{["nazwa strony"]=strona,["kod języka"]=kod_jezyka,["kod projektu"]=kod_projektu}; if(odpowiednik_strony)then local nazwy_modul=require("Module:Nazwy"); return nazwy_modul["PEŁNANAZWASTRONY"]{[1]=odpowiednik_strony,["kod języka"]=kod_jezyka,["kod projektu"]=kod_projektu,}; else local pudelko_modul=require("Module:Pudełko"); if((kod_jezyka==pudelko_modul["Kod języka tego projektu"]())and(kod_projektu==pudelko_modul["Kod projektu tego projektu"]()))then return strona; else local wiki_interwiki_modul=mw.loadData("Module:Wiki/interwiki"); local czy_w_wikidanych=wiki_interwiki_modul.tablica_kody_projektu_wikidane.lingwistyczne[kod_projektu] or wiki_interwiki_modul.tablica_kody_projektu_wikidane.specjalistyczne[kod_projektu]; return czy_w_wikidanych and "Main Page" or nil; end; end; end; function p.Nazwa_strony_bazowej_dla_dzieci_z_wikidanych(kod_jezyka) local strona=require("Module:Pudełko")["Strona główna dla dzieci tego projektu"](); local pudelko_modul=require("Module:Pudełko"); local kod_jezyka_tego_projektu=pudelko_modul["Kod języka tego projektu"](); if(kod_jezyka==kod_jezyka_tego_projektu)then return strona;end; local kod_projektu_tego_projektu=pudelko_modul["Kod projektu tego projektu"](); local odpowiednik_strony=require("Module:Wiki").WikidaneOdpowiednikStrony{["nazwa strony"]=strona,["kod języka"]=kod_jezyka,["kod projektu"]=kod_projektu_tego_projektu}; if(odpowiednik_strony)then local nazwy_modul=require("Module:Nazwy"); return nazwy_modul["PEŁNANAZWASTRONY"]{[1]=odpowiednik_strony,["kod języka"]=kod_jezyka,["kod projektu"]=kod_projektu_tego_projektu,}; else return "Wikijunior"; end; end; function p.Nazwa_strony_bazowej_projektu_ze_zmiennej(frame,i,kod_jezyka,kod_projektu) local pf=frame.getParent and frame:getParent() or {args={}}; local strona_glowna_projektu; if(i~=0)then local pudelko_modul=require("Module:Pudełko"); local kod_jezyka_tego_projektu=pudelko_modul["Kod języka tego projektu"](); local kod_projektu_tego_projektu=pudelko_modul["Kod projektu tego projektu"](); if(kod_jezyka==kod_jezyka_tego_projektu)and(kod_projektu==kod_projektu_tego_projektu)then strona_glowna_projektu=frame.args["strona główna projektu"] or pf.args["strona główna projektu"] else strona_glowna_projektu=(frame.args["strona główna projektu "..i] or pf.args["strona główna projektu "..i]) end; else strona_glowna_projektu=frame.args["strona główna projektu"] or pf.args["strona główna projektu"] end; local parametry_modul=require("Module:Parametry"); return (parametry_modul.CzyTak(strona_glowna_projektu))and require("Module:Nazwy")["PEŁNANAZWASTRONY"]{[1]=strona_glowna_projektu,["kod języka"]=kod_jezyka,["kod projektu"]=kod_projektu,} or (strona_glowna_projektu and "" or nil); end; function p.Nazwa_strony_bazowej_dla_dzieci_ze_zmiennej(frame,i,kod_jezyka) local pf=frame.getParent and frame:getParent() or {args={}}; local pudelko_modul=require("Module:Pudełko"); local strona_glowna_dla_dzieci; if(i~=0)then local kod_jezyka_tego_projektu=pudelko_modul["Kod języka tego projektu"](); if(kod_jezyka==kod_jezyka_tego_projektu)then strona_glowna_dla_dzieci=frame.args["strona główna dla dzieci"] or pf.args["strona główna dla dzieci"] else strona_glowna_dla_dzieci=(frame.args["strona główna dla dzieci "..i] or pf.args["strona główna dla dzieci "..i]) end; else strona_glowna_dla_dzieci=frame.args["strona główna dla dzieci"] or pf.args["strona główna dla dzieci"] end; local kod_projektu_tego_projektu=pudelko_modul["Kod projektu tego projektu"](); local parametry_modul=require("Module:Parametry"); return (parametry_modul.CzyTak(strona_glowna_dla_dzieci))and require("Module:Nazwy")["PEŁNANAZWASTRONY"]{[1]=strona_glowna_dla_dzieci,["kod języka"]=kod_jezyka,["kod projektu"]=kod_projektu_tego_projektu,} or (strona_glowna_dla_dzieci and "" or nil); end; function p.Normalna_przedmiotowa_lub_dyskusji_nazwa_przestrzeni_nazw(nazwa_przestrzeni_nazw, normmalna_przedmiotwa_dyskusji,kod_jezyka,kod_projektu) local nazwa_przestrzeni_nazw_blad; local wiki_modul=require("Module:Wiki"); local nazwy_modul=require("Module:Nazwy"); local czy_biezaca=wiki_modul["CzyBieżącaWiki"]{["kod języka"]=kod_jezyka,["kod projektu"]=kod_projektu,}; if(normmalna_przedmiotwa_dyskusji==0)then if(czy_biezaca)then nazwa_przestrzeni_nazw_blad=nazwy_modul.Np{nazwa=nazwa_przestrzeni_nazw,["kanoniczna"]="tak",["nazwij projektem"]="tak",["nazwij dyskusją projektu"]="tak",["istnieje"]="tak",["wynik błędu nietekstowy"]="tak",}; else nazwa_przestrzeni_nazw_blad=nazwy_modul.NpDane{nazwa=nazwa_przestrzeni_nazw,["kanoniczna"]="tak",["nazwij projektem"]="tak",["nazwij dyskusją projektu"]="tak",["kod języka"]=kod_jezyka,["kod projektu"]=kod_projektu,["istnieje"]="tak",["wynik błędu nietekstowy"]="tak",}; end; elseif(normmalna_przedmiotwa_dyskusji==1)then if(czy_biezaca)then nazwa_przestrzeni_nazw_blad=nazwy_modul.Np{nazwa=nazwa_przestrzeni_nazw, przedmiotowa="tak",["kanoniczna"]="tak",["nazwij projektem"]="tak",["nazwij dyskusją projektu"]="tak",["istnieje"]="tak",["wynik błędu nietekstowy"]="tak",}; else nazwa_przestrzeni_nazw_blad=nazwy_modul.NpDane{nazwa=nazwa_przestrzeni_nazw, przedmiotowa="tak",["kanoniczna"]="tak",["nazwij projektem"]="tak",["nazwij dyskusją projektu"]="tak",["kod języka"]=kod_jezyka,["kod projektu"]=kod_projektu,["istnieje"]="tak",["wynik błędu nietekstowy"]="tak",}; end; elseif(normmalna_przedmiotwa_dyskusji==2)then if(czy_biezaca)then nazwa_przestrzeni_nazw_blad=nazwy_modul.Np{nazwa=nazwa_przestrzeni_nazw, dyskusja="tak",["kanoniczna"]="tak",["nazwij projektem"]="tak",["nazwij dyskusją projektu"]="tak",["istnieje"]="tak",["wynik błędu nietekstowy"]="tak",}; else nazwa_przestrzeni_nazw_blad=nazwy_modul.NpDane{nazwa=nazwa_przestrzeni_nazw, dyskusja="tak",["kanoniczna"]="tak",["nazwij projektem"]="tak",["nazwij dyskusją projektu"]="tak",["kod języka"]=kod_jezyka,["kod projektu"]=kod_projektu,["istnieje"]="tak",["wynik błędu nietekstowy"]="tak",}; end; else if(czy_biezaca)then nazwa_przestrzeni_nazw_blad=nazwy_modul.Np{nazwa=nazwa_przestrzeni_nazw,["kanoniczna"]="tak",["nazwij projektem"]="tak",["nazwij dyskusją projektu"]="tak",["istnieje"]="tak",["wynik błędu nietekstowy"]="tak",}; else nazwa_przestrzeni_nazw_blad=nazwy_modul.NpDane{nazwa=nazwa_przestrzeni_nazw,["kanoniczna"]="tak",["nazwij projektem"]="tak",["nazwij dyskusją projektu"]="tak",["kod języka"]=kod_jezyka,["kod projektu"]=kod_projektu,["istnieje"]="tak",["wynik błędu nietekstowy"]="tak",}; end; end; return nazwa_przestrzeni_nazw_blad end; function p.Nazwa_przestrzeni_nazw(frame,kod_liczbowy_przestrzeni_nazw,czy_uwzglednic_alternatywna_nazwe,numer_jednostki) local pf=frame.getParent and frame:getParent() or {args={}}; local nazwa_przestrzeni_nazw=p.Nazwy_przestrzeni_i_jednostki_podane_o_pewnym_numerze(frame,numer_jednostki,1) or p.Nazwa_przestrzeni_nazw_uzyskana_z_typu_jednostki_z_frame(frame,numer_jednostki); local nazwy_modul=require("Module:Nazwy"); local wiki_modul=require("Module:Wiki"); local kod_jezyka,kod_projektu=p.Wikikody_kontenera(frame,numer_jednostki); local czy_biezaca_wiki=wiki_modul["CzyBieżącaWiki"]{["kod języka"]=kod_jezyka,["kod projektu"]=kod_projektu,}; local czy_blad_nazwy_przestrzeni_nazw; local typ; if(kod_liczbowy_przestrzeni_nazw==1)then typ="przedmiotowa"; if(czy_biezaca_wiki)then czy_blad_nazwy_przestrzeni_nazw=(not nazwa_przestrzeni_nazw)and nazwy_modul["PRZEDMIOTOWAPRZESTRZEŃ"]() or nazwy_modul.Np{nazwa=nazwa_przestrzeni_nazw,przedmiotowa="tak",["istnieje"]="tak",["wynik błędu nietekstowy"]="tak",}; else czy_blad_nazwy_przestrzeni_nazw=(not nazwa_przestrzeni_nazw)and nazwy_modul["PRZEDMIOTOWAPRZESTRZEŃ"]{["kod języka"]=kod_jezyka,["kod projektu"]=kod_projektu,} or nazwy_modul.NpDane{nazwa=nazwa_przestrzeni_nazw,przedmiotowa="tak",["kod języka"]=kod_jezyka,["kod projektu"]=kod_projektu,["istnieje"]="tak",["wynik błędu nietekstowy"]="tak",}; end; elseif(kod_liczbowy_przestrzeni_nazw==2)then if(czy_biezaca_wiki)then typ="dyskusja"; czy_blad_nazwy_przestrzeni_nazw=(not nazwa_przestrzeni_nazw)and nazwy_modul["PRZESTRZEŃDYSKUSJI"]() or nazwy_modul.Np{nazwa=nazwa_przestrzeni_nazw,dyskusja="tak",["istnieje"]="tak",["wynik błędu nietekstowy"]="tak",}; else czy_blad_nazwy_przestrzeni_nazw=(not nazwa_przestrzeni_nazw)and nazwy_modul["PRZESTRZEŃDYSKUSJI"]{["kod języka"]=kod_jezyka,["kod projektu"]=kod_projektu,} or nazwy_modul.NpDane{nazwa=nazwa_przestrzeni_nazw,dyskusja="tak",["kod języka"]=kod_jezyka,["kod projektu"]=kod_projektu,["istnieje"]="tak",["wynik błędu nietekstowy"]="tak",}; end; else if(czy_biezaca_wiki)then czy_blad_nazwy_przestrzeni_nazw=(not nazwa_przestrzeni_nazw)and nazwy_modul["NAZWAPRZESTRZENI"]() or nazwy_modul.Np{nazwa=nazwa_przestrzeni_nazw,["istnieje"]="tak",["wynik błędu nietekstowy"]="tak",}; else czy_blad_nazwy_przestrzeni_nazw=(not nazwa_przestrzeni_nazw)and nazwy_modul["NAZWAPRZESTRZENI"]{["kod języka"]=kod_jezyka,["kod projektu"]=kod_projektu,} or nazwy_modul.NpDane{nazwa=nazwa_przestrzeni_nazw,["kod języka"]=kod_jezyka, ["kod projektu"]=kod_projektu,["istnieje"]="tak",["wynik błędu nietekstowy"]="tak",}; end; end; if(czy_blad_nazwy_przestrzeni_nazw)then return czy_blad_nazwy_przestrzeni_nazw; else if(((czy_uwzglednic_alternatywna_nazwe==nil)and true or czy_uwzglednic_alternatywna_nazwe) and frame.args[1])then local nazwa_przestrzeni_nazw_alternatywnej=mw.text.trim(frame.args[1]); if(mw.ustring.match(nazwa_przestrzeni_nazw_alternatywnej,"^[%w%s_]*$"))then local czy_blad_nazwa_przestrzeni_nazw_alternatywnej; if(czy_biezaca_wiki)then local tab_parametry={nazwa=nazwa_przestrzeni_nazw_alternatywnej,["istnieje"]="tak",["wynik błędu nietekstowy"]="tak",}; if(typ)then tab_parametry[typ]="tak";end; czy_blad_nazwa_przestrzeni_nazw_alternatywnej=nazwy_modul.Np(tab_parametry); else local tab_parametry={nazwa=nazwa_przestrzeni_nazw_alternatywnej,["kod języka"]=kod_jezyka,["kod projektu"]=kod_projektu,["istnieje"]="tak",["wynik błędu nietekstowy"]="tak",}; if(typ)then tab_parametry[typ]="tak";end; czy_blad_nazwa_przestrzeni_nazw_alternatywnej=nazwy_modul.NpDane(tab_parametry); end; return czy_blad_nazwa_przestrzeni_nazw_alternatywnej or "(błąd)"; else return "(błąd)"; end; else local parametry_modul=require("Module:Parametry"); nazwa_przestrzeni_nazw=parametry_modul["Odstępy"]{[1]=nazwa_przestrzeni_nazw,[2]="tak",}; if(mw.ustring.match(nazwa_przestrzeni_nazw,"^[%w%s_]*$"))then return nazwa_przestrzeni_nazw; else return "(błąd)"; end; end; end; end; function p.Nazwa_przestrzeni_nazw_2(frame,czy_uwzglednic_alternatywna_nazwe,i) local nazwa_przestrzeni_nazw,nazwa_jednostki,liczba_numer_jednostki=p.Nazwy_przestrzeni_i_jednostki_podane_o_pewnym_numerze(frame,i); nazwa_przestrzeni_nazw=nazwa_przestrzeni_nazw or p.Nazwa_przestrzeni_nazw_uzyskana_z_typu_jednostki_z_frame(frame,liczba_numer_jednostki); local nazwy_modul=require("Module:Nazwy"); local kod_jezyka,kod_projektu=p.Wikikody_kontenera(frame,liczba_numer_jednostki); local wiki_modul=require("Module:Wiki"); local czy_biezaca_wiki=wiki_modul["CzyBieżącaWiki"]{["kod języka"]=kod_jezyka,["kod projektu"]=kod_projektu,}; local nazwa_przestrzeni_nazw_blad; local parametry_modul=require("Module:Parametry"); if(czy_biezaca_wiki)then nazwa_przestrzeni_nazw=nazwa_przestrzeni_nazw and mw.text.trim(nazwa_przestrzeni_nazw) or nazwy_modul["NAZWAPRZESTRZENI"](); nazwa_przestrzeni_nazw_blad=require("Module:Nazwy").Np{nazwa=nazwa_przestrzeni_nazw,["istnieje"]="tak",["wynik błędu nietekstowy"]="tak",}; if(nazwa_jednostki)then nazwa_jednostki=parametry_modul["Odstępy"]{[1]=nazwa_jednostki,[2]="tak",}; nazwa_jednostki=mw.ustring.gsub(nazwa_jednostki,"^([^#]*)#(.*)$","%1"); local parametry=mw.ustring.match(nazwa_jednostki,"^.*%?([^%?]+)$"); if(parametry and mw.ustring.match(parametry,"[^=]+=[^=]*"))then nazwa_jednostki=mw.ustring.gsub(nazwa_jednostki,"^(.*)%?([^%?]+)$","%1"); end; else nazwa_jednostki=nazwy_modul["NAZWASTRONY"](); end; else nazwa_przestrzeni_nazw=nazwa_przestrzeni_nazw and mw.text.trim(nazwa_przestrzeni_nazw) or nazwy_modul["NAZWAPRZESTRZENI"]{["kod języka"]=kod_jezyka,["kod projektu"]=kod_projektu,}; nazwa_przestrzeni_nazw_blad=require("Module:Nazwy").NpDane{nazwa=nazwa_przestrzeni_nazw,["kod języka"]=kod_jezyka,["kod projektu"]=kod_projektu,["istnieje"]="tak",["wynik błędu nietekstowy"]="tak",}; if(nazwa_jednostki)then local html_modul=require("Module:Html"); nazwa_jednostki=html_modul["NazwaStronyAdresu"](nazwa_jednostki,true); else nazwa_jednostki=nazwy_modul["NAZWASTRONY"]{["kod języka"]=kod_jezyka,["kod projektu"]=kod_projektu,}; end; end; nazwa_przestrzeni_nazw=nazwa_przestrzeni_nazw_blad or nazwa_przestrzeni_nazw; if(not mw.ustring.match(nazwa_jednostki,"^:"))then if(nazwa_przestrzeni_nazw~="")then if(czy_biezaca_wiki)then local nazwy_np_modul=mw.loadData("Module:Nazwy/Np"); if(nazwa_przestrzeni_nazw==nazwy_np_modul.Template)then local nazwa_przestrzeni_nazw_d=require("Module:Nazwy")["NAZWAPRZESTRZENI"](nazwa_jednostki); if(nazwa_przestrzeni_nazw_d==nazwy_np_modul.Template)then nazwa_przestrzeni_nazw=nazwy_np_modul.Template; end; elseif(nazwa_przestrzeni_nazw==nazwy_np_modul.Module)then local nazwa_przestrzeni_nazw_d=require("Module:Nazwy")["NAZWAPRZESTRZENI"](nazwa_jednostki); if(nazwa_przestrzeni_nazw_d==nazwy_np_modul.Module)then nazwa_przestrzeni_nazw=nazwy_np_modul.Module; end; end; else local template_prze=nazwy_modul.NpDane{nazwa="Template",["kod języka"]=kod_jezyka,["kod projektu"]=kod_projektu,}; local module_prze=nazwy_modul.NpDane{nazwa="Module",["kod języka"]=kod_jezyka,["kod projektu"]=kod_projektu,}; if(nazwa_przestrzeni_nazw==template_prze)then local nazwa_przestrzeni_nazw_d=nazwy_modul["NAZWAPRZESTRZENI"]{[1]=nazwa_jednostki,["kod języka"]=kod_jezyka,["kod projektu"]=kod_projektu,}; if(nazwa_przestrzeni_nazw_d==template_prze)then nazwa_przestrzeni_nazw=template_prze; end; elseif(nazwa_przestrzeni_nazw==module_prze)then local nazwa_przestrzeni_nazw_d=nazwy_modul["NAZWAPRZESTRZENI"]{[1]=nazwa_jednostki,["kod języka"]=kod_jezyka,["kod projektu"]=kod_projektu,}; if(nazwa_przestrzeni_nazw_d==module_prze)then nazwa_przestrzeni_nazw=module_prze; end; end; end; if(not nazwa_przestrzeni_nazw_blad)then if(((czy_uwzglednic_alternatywna_nazwe==nil)and true or czy_uwzglednic_alternatywna_nazwe) and frame.args[1])then local wytrimowana_nazwa_przestrzeni_nazw=mw.text.trim(frame.args[1]); if(mw.ustring.match(wytrimowana_nazwa_przestrzeni_nazw,"^[%w%s_]*$"))then if(czy_biezaca_wiki)then local nazwy_modul=require("Module:Nazwy"); local czy_blad_nazwy_przestrzeni_nazw=nazwy_modul.Np{nazwa=wytrimowana_nazwa_przestrzeni_nazw,["istnieje"]="tak",["wynik błędu nietekstowy"]="tak",} return czy_blad_nazwy_przestrzeni_nazw or "(błąd)"; else local nazwy_modul=require("Module:Nazwy"); local nazwa_przestrzeni_nazw_blad2=nazwy_modul.NpDane{nazwa=wytrimowana_nazwa_przestrzeni_nazw,["kod języka"]=kod_jezyka,["kod projektu"]=kod_projektu,["istnieje"]="tak",["wynik błędu nietekstowy"]="tak",}; return nazwa_przestrzeni_nazw_blad2 or "(błąd)"; end; else return "(błąd)"; end; else local wytrimowana_nazwa_przestrzeni_nazw=mw.text.trim(nazwa_przestrzeni_nazw); if(mw.ustring.match(wytrimowana_nazwa_przestrzeni_nazw,"^[%w%s_]*$"))then return wytrimowana_nazwa_przestrzeni_nazw; else return "(błąd)"; end; end; else return nazwa_przestrzeni_nazw; end; else return require("Module:Nazwy")["NAZWAPRZESTRZENI"]{[1]=nazwa_jednostki,["kod języka"]=kod_jezyka,["kod projektu"]=kod_projektu,}; end; else return require("Module:Nazwy")["NAZWAPRZESTRZENI"]{[1]=nazwa_jednostki,["kod języka"]=kod_jezyka,["kod projektu"]=kod_projektu,}; end; end; function p.Nazwa_przestrzeni_nazw_przedmiotowa_dyskusji_2(frame,czy_uwzglednic_alternatywna_nazwe,i,typ) local numer_jednostki=i or frame.args["numer jednostki"]; local liczba_numer_jednostki=((numer_jednostki)and(tonumber(numer_jednostki))or 0); local pudelko_modul=require("Module:Pudełko"); local tab_nazwa={ ["przedmiotowa"]="Nazwa przedmiotowej przestrzeni nazw", ["dyskusja"]="Nazwa przestrzeni nazw", }; local nazwa_przestrzeni_nazw=pudelko_modul[tab_nazwa[typ]](frame,czy_uwzglednic_alternatywna_nazwe,liczba_numer_jednostki); local nazwy_modul=require("Module:Nazwy"); if(nazwa_przestrzeni_nazw=="")then local nazwa_jednostki=pudelko_modul["Nazwa jednostki"](frame,liczba_numer_jednostki); local kod_jezyka,kod_projektu=p.Wikikody_kontenera(frame,liczba_numer_jednostki); local tab_nazwa={ ["przedmiotowa"]="PRZEDMIOTOWAPRZESTRZEŃ", ["dyskusja"]="PRZESTRZEŃDYSKUSJI", }; nazwa_przestrzeni_nazw=nazwy_modul[tab_nazwa[typ]]{nazwa=nazwa_jednostki,["kod języka"]=kod_jezyka,["kod projektu"]=kod_projektu,}; else if(typ=="dyskusja")then local wiki_modul=require("Module:Wiki"); local czy_biezaca=wiki_modul["CzyBieżącaWiki"]{["kod języka"]=kod_jezyka,["kod projektu"]=kod_projektu,}; if(czy_biezaca)then nazwa_przestrzeni_nazw=nazwy_modul.Np{[typ]="tak",nazwa=nazwa_przestrzeni_nazw}; else nazwa_przestrzeni_nazw=nazwy_modul.NpDane{[typ]="tak",nazwa=nazwa_przestrzeni_nazw,["kod języka"]=kod_jezyka,["kod projektu"]=kod_projektu,}; end; end; end; return nazwa_przestrzeni_nazw; end; function p.Kod_jezyka(frame,i,wartosc_domyslna) local pudelko_modul=require("Module:Pudełko"); if(not i)then return pudelko_modul["Kod języka tego projektu"]();end; local pf=frame.getParent and frame:getParent() or {args={}}; if(i==0)then return pudelko_modul["Kod języka tego projektu"](); elseif(i==1)then local parametry_modul=require("Module:Parametry"); local kod_jezyka=frame.args["kod języka"] or frame.args["kod języka 1"] or pf.args["kod języka"] or pf.args["kod języka 1"] return ((kod_jezyka)and(kod_jezyka~=""))and mw.text.trim(kod_jezyka) or ((parametry_modul.CzyTak(wartosc_domyslna))and wartosc_domyslna or nil); elseif(i>1)then local parametry_modul=require("Module:Parametry"); local kod_jezyka=frame.args["kod języka "..i] or pf.args["kod języka "..i] return ((kod_jezyka)and(kod_jezyka~=""))and mw.text.trim(kod_jezyka) or ((parametry_modul.CzyTak(wartosc_domyslna))and wartosc_domyslna or nil); end; end function p.Kod_projektu(frame,i,wartosc_domyslna) local pudelko_modul=require("Module:Pudełko"); if(not i)then return pudelko_modul["Kod projektu tego projektu"]();end; local pf=frame.getParent and frame:getParent() or {args={}}; if(i==0)then return pudelko_modul["Kod projektu tego projektu"](); elseif(i==1)then local parametry_modul=require("Module:Parametry"); local kod_projektu=frame.args["kod projektu"] or frame.args["kod projektu 1"] or pf.args["kod projektu"] or pf.args["kod projektu 1"] return ((kod_projektu)and(kod_projektu~=""))and mw.text.trim(kod_projektu) or ((parametry_modul.CzyTak(wartosc_domyslna))and wartosc_domyslna or nil); elseif(i>1)then local parametry_modul=require("Module:Parametry"); local kod_projektu=frame.args["kod projektu "..i] or pf.args["kod projektu "..i] return ((kod_projektu)and(kod_projektu~=""))and mw.text.trim(kod_projektu) or ((parametry_modul.CzyTak(wartosc_domyslna))and wartosc_domyslna or nil); end; end function p.Klucz_projektu(frame,i,wartosc_domyslna_jezyka,wartosc_domyslna_projektu) local pf=frame.getParent and frame:getParent() or {args={}}; local klucz_projektu; local function domyslne_klucz(klucz_projektu) local parametry_modul=require("Module:Parametry"); return ((klucz_projektu)and(klucz_projektu~=""))and mw.text.trim(klucz_projektu)or((parametry_modul.CzyTak(wartosc_domyslna_jezyka)and(parametry_modul.CzyTak(wartosc_domyslna_projektu)))and (wartosc_domyslna_jezyka..":" ..wartosc_domyslna_projektu)or(parametry_modul.CzyTak(wartosc_domyslna_jezyka) and wartosc_domyslna_jezyka or (parametry_modul.CzyTak(wartosc_domyslna_projektu) and wartosc_domyslna_projektu or nil))); end; if(i==0)then return nil; elseif(i==1)then local klucz_projektu=frame.args["klucz projektu"] or frame.args["klucz projektu 1"] or pf.args["klucz projektu"] or pf.args["klucz projektu 1"]; return domyslne_klucz(klucz_projektu); elseif(i>1)then local klucz_projektu=frame.args["klucz projektu "..i] or pf.args["klucz projektu "..i]; return domyslne_klucz(klucz_projektu); end; end; function p.Wikikody_kontenera(frame,i,wartosc_domyslna_jezyka,wartosc_domyslna_projektu) local wiki_modul=require("Module:Wiki"); local kod_jezyka,kod_projektu=wiki_modul.KodyWiki(p.Klucz_projektu(frame,i,wartosc_domyslna_jezyka,wartosc_domyslna_projektu),p.Kod_jezyka(frame,i,wartosc_domyslna_jezyka),p.Kod_projektu(frame,i,wartosc_domyslna_projektu)); return kod_jezyka,kod_projektu; end; function p.Nazwa_przestrzeni_nazw_od_typu_jednostki(typ,args,bez_analizy) if(not bez_analizy)then local parametry_modul=require("Module:Parametry"); if((((not parametry_modul.CzyTak(args["obsługiwane jednostki jako nieopisowe strony"]))and((typ=="artykuł")or(typ=="podręcznik")))or (typ=="artykuł")))then return ""; elseif(((not parametry_modul.CzyTak(args["obsługiwane jednostki jako nieopisowe strony"]))and((typ=="artykuł dla dzieci")or(typ=="podręcznik dla dzieci")))or(typ=="artykuł dla dzieci"))then return "Wikijunior"; elseif((not parametry_modul.CzyTak(args["obsługiwane brudnopisy jako normalne strony"])) and(((not parametry_modul.CzyTak(args["obsługiwane jednostki jako nieopisowe strony"]))and(parametry_modul.CzyTak(args["obsługiwane jednostki brudnopisu projektu"])and (typ=="podręcznik brudnopisu projektu" or typ=="artykuł brudnopisu projektu")or (typ=="jednostka brudnopisu projektu")) or (typ=="strona brudnopisu projektu"))or(typ=="strona projektu"))or (typ=="strona projektu"))then return "Project"; elseif((parametry_modul.CzyTak(args["obsługiwane strony jako niebrudnopisowe jednostki programowe"]))and (typ=="strona szablonu") or(not parametry_modul.CzyTak(args["obsługiwane brudnopisy jako normalne strony"]) and((not parametry_modul.CzyTak(args["obsługiwane opisy jako strony jednostek programowych"]) and not parametry_modul.CzyTak(args["obsługiwane jednostki jako nieopisowe strony"]) and not parametry_modul.CzyTak(args["obsługiwane nieudokumentowane szablony jako szablony"])) and((typ=="strona brudnopisu szablonu")or(typ=="strona brudnopisu opisu szablonu"))or(typ=="strona brudnopisu szablonu")) or((not parametry_modul.CzyTak(args["obsługiwane opisy jako strony jednostek programowych"]) and not parametry_modul.CzyTak(args["obsługiwane jednostki jako nieopisowe strony"]) and not parametry_modul.CzyTak(args["obsługiwane nieudokumentowane szablony jako szablony"])) and((typ=="strona szablonu")or(typ=="strona opisu szablonu"))or(typ=="strona szablonu"))))then return "Template"; elseif((parametry_modul.CzyTak(args["obsługiwane strony jako niebrudnopisowe jednostki programowe"]))and (typ=="strona modułu") or(not parametry_modul.CzyTak(args["obsługiwane brudnopisy jako normalne strony"]) and((not parametry_modul.CzyTak(args["obsługiwane opisy jako strony jednostek programowych"]) and not parametry_modul.CzyTak(args["obsługiwane jednostki jako nieopisowe strony"])) and((typ=="strona brudnopisu modułu")or(typ=="strona brudnopisu opisu modułu"))or(typ=="strona brudnopisu modułu")) or((not parametry_modul.CzyTak(args["obsługiwane opisy jako strony jednostek programowych"]) and not parametry_modul.CzyTak(args["obsługiwane jednostki jako nieopisowe strony"])) and((typ=="strona modułu")or(typ=="strona opisu modułu"))or(typ=="strona modułu"))))then return "Module"; elseif(not parametry_modul.CzyTak(args["obsługiwane jednostki użytkownika jako normalne strony"]) and(((not parametry_modul.CzyTak(args["obsługiwane jednostki jako nieopisowe strony"]))and(parametry_modul.CzyTak(args["obsługiwane jednostki użytkownika"])and (typ=="podręcznik użytkownika" or typ=="artykuł użytkownika") or (typ=="jednostka użytkownika")) or (typ=="strona użytkownika"))or(typ=="strona główna użytkownika"))or(typ=="strona użytkownika"))then return "User"; elseif(typ=="strona pliku")then return "File"; elseif(typ=="strona kategorii")then return "Category"; elseif(typ=="strona pomocy")then return "Help"; elseif(typ=="strona komunikatu")then return "MediaWiki"; elseif(typ=="strona specjalna")then return "Special"; elseif(typ=="strona gadżetu")then return "Gadget"; elseif(typ=="strona główna projektu")then return "Project"; elseif(typ=="strona główna dla dzieci")then return "Wikijunior"; end; return; end; if(typ)then if((typ=="artykuł")or(typ=="podręcznik"))then return ""; elseif((typ=="artykuł dla dzieci")or(typ=="podręcznik dla dzieci"))then return "Wikijunior"; elseif((typ=="podręcznik brudnopisu projektu")or(typ=="artykuł brudnopisu projektu")or(typ=="jednostka brudnopisu projektu")or(typ=="strona brudnopisu projektu")or(typ=="strona projektu"))then return "Project"; elseif((typ=="strona szablonu")or(typ=="strona opisu szablonu")or(typ=="strona brudnopisu szablonu")or(typ=="strona brudnopisu opisu szablonu"))then return "Template"; elseif((typ=="strona modułu")or(typ=="strona opisu modułu")or(typ=="strona brudnopisu modułu")or(typ=="strona brudnopisu opisu modułu"))then return "Module"; elseif((typ=="podręcznik użytkownika")or(typ=="artykuł użytkownika")or(typ=="jednostka użytkownika")or(typ=="strona użytkownika")or(typ=="strona główna użytkownika"))then return "User"; elseif(typ=="strona pliku")then return "File"; elseif(typ=="strona kategorii")then return "Category"; elseif(typ=="strona pomocy")then return "Help"; elseif(typ=="strona komunikatu")then return "MediaWiki"; elseif(typ=="strona specjalna")then return "Special"; elseif(typ=="strona gadżetu")then return "Gadget"; elseif(typ=="strona główna projektu")then return "Project"; elseif(typ=="strona główna dla dzieci")then return "Wikijunior"; end; end; end; function p.Typ_jednostki_uzyskany_z_frame(frame,i) local numer_jednostki=i or frame.args["numer jednostki"]; local liczba_numer_jednostki=tonumber(numer_jednostki) or 0; local pf=frame.getParent and frame:getParent() or {args={}}; local typ; if liczba_numer_jednostki~=0 then typ=liczba_numer_jednostki and( (frame.args["typ jednostki "..liczba_numer_jednostki] or frame.args["typ jednostki i"]) or (pf.args["typ jednostki "..liczba_numer_jednostki] or pf.args["typ jednostki i"]) ); if(not typ)then local nazwa_jednostki=p.Nazwy_przestrzeni_i_jednostki_podane_o_pewnym_numerze(frame,liczba_numer_jednostki,2); if(nazwa_jednostki)then if(not mw.ustring.match(mw.text.trim(nazwa_jednostki),"^:"))then local nazwa_przesrzeni_nazw=p.Nazwy_przestrzeni_i_jednostki_podane_o_pewnym_numerze(frame,liczba_numer_jednostki,1); if(not nazwa_przesrzeni_nazw)then typ=frame.args["typ jednostki"] or pf.args["typ jednostki"]; end; end; end; end; else typ=frame.args["typ jednostki"] or pf.args["typ jednostki"]; end; local parametry_modul=require("Module:Parametry"); if(parametry_modul.CzyTak(typ))then typ,ile=mw.ustring.gsub(typ,"^(%S+)(%s+)(dyskusji)",function(strona,spacja,dyskusja) return strona; end); return typ,liczba_numer_jednostki,ile; end; return typ,liczba_numer_jednostki,0; end; function p.Czy_dyskusja_typu_jednostki_z_frame_od_dyskusja_typu_jednostki(frame,i) local typ,liczba_numer_jednostki,ile_dyskusja=p.Typ_jednostki_uzyskany_z_frame(frame,i); if(ile_dyskusja>0)then return true;end; local pf=frame.getParent and frame:getParent() or {args={},}; local function FuncTemp(liczba_numer_jednostki) local dyskusja_parametr="dyskusja typu jednostki"; if(liczba_numer_jednostki==0)then return frame.args[dyskusja_parametr] or pf.args[dyskusja_parametr]; else return ((frame.args[dyskusja_parametr.." "..liczba_numer_jednostki] or pf.args[dyskusja_parametr.." "..liczba_numer_jednostki]) or (frame.args[dyskusja_parametr.." i"] or pf.args[dyskusja_parametr.." i"]) or(frame.args[dyskusja_parametr] or pf.args[dyskusja_parametr])); end; end; local czy_dyskusja=FuncTemp(liczba_numer_jednostki); local parametry_modul=require("Module:Parametry"); local czy_dyskusja=parametry_modul.CzyTak(czy_dyskusja); return czy_dyskusja; end; function p.Nazwa_przestrzeni_nazw_uzyskana_z_typu_jednostki_z_frame(frame,i) local typ=p.Typ_jednostki_uzyskany_z_frame(frame,i); local nazwa_przestrzeni_nazw=typ and p.Nazwa_przestrzeni_nazw_od_typu_jednostki(typ,nil,true) or nil; if(nazwa_przestrzeni_nazw)then local czy_dyskusja=p.Czy_dyskusja_typu_jednostki_z_frame_od_dyskusja_typu_jednostki(frame,i); if(czy_dyskusja)then if(nazwa_przestrzeni_nazw=="")then return "Talk"; else return nazwa_przestrzeni_nazw.." talk"; end; else return nazwa_przestrzeni_nazw; end; else return nil; end; end; function p.Typ_jednostki(frame, kod_liczbowy_przestrzeni_nazw,i,numer_argorytmu) local parametry_modul=require("Module:Parametry"); local analiza=parametry_modul.CzyTak(frame.args["analiza"]); local typ,liczba_numer_jednostki=p.Typ_jednostki_uzyskany_z_frame(frame,i); local uzyskana_przestrzen_nazw_od_typu_jednostki; local nazwa_przestrzeni_nazw_podana,nazwa_jednostki_podana=p.Nazwy_przestrzeni_i_jednostki_podane_o_pewnym_numerze(frame,liczba_numer_jednostki); if((not analiza)and(typ))then if(typ~="")then uzyskana_przestrzen_nazw_od_typu_jednostki=p.Nazwa_przestrzeni_nazw_od_typu_jednostki(typ,frame.args); if(uzyskana_przestrzen_nazw_od_typu_jednostki)then if((not nazwa_przestrzeni_nazw_podana)and(not nazwa_jednostki_podana))then return typ; end; else return "(błąd typu jednostki)"; end; end; end; local nazwa_przestrzeni_nazw,nazwa_jednostki=p.Uzyskanie_nazw_jednostki(frame,kod_liczbowy_przestrzeni_nazw,nil,liczba_numer_jednostki,numer_argorytmu); local nazwy_modul=require("Module:Nazwy"); local kod_jezyka,kod_projektu=p.Wikikody_kontenera(frame,liczba_numer_jednostki); local wiki_modul=require("Module:Wiki"); local czy_biezaca=wiki_modul["CzyBieżącaWiki"]{["kod języka"]=kod_jezyka,["kod projektu"]=kod_projektu,}; local czy_blad_nazwa_przestrzeni_nazw; if(czy_biezaca)then czy_blad_nazwa_przestrzeni_nazw=nazwy_modul.Np{nazwa=nazwa_przestrzeni_nazw,["kanoniczna"]="tak",["nazwij projektem"]="tak",["nazwij dyskusją projektu"]="tak",["istnieje"]="tak",["wynik błędu nietekstowy"]="tak",} else czy_blad_nazwa_przestrzeni_nazw=nazwy_modul.NpDane{nazwa=nazwa_przestrzeni_nazw,["kanoniczna"]="tak",["nazwij projektem"]="tak",["nazwij dyskusją projektu"]="tak",["kod języka"]=kod_jezyka,["kod projektu"]=kod_projektu,["istnieje"]="tak",["wynik błędu nietekstowy"]="tak",} end; if(not czy_blad_nazwa_przestrzeni_nazw)then return "(błąd nazwy przestrzeni nazw)";end; nazwa_przestrzeni_nazw=czy_blad_nazwa_przestrzeni_nazw; --- --- if((not analiza)and(typ))then if(typ~="")then ---typ jednostki if(uzyskana_przestrzen_nazw_od_typu_jednostki)then if((nazwa_przestrzeni_nazw_podana)and(not nazwa_jednostki_podana))then if(uzyskana_przestrzen_nazw_od_typu_jednostki==nazwa_przestrzeni_nazw)then return typ; else return "(błąd niezgodności)"; end; end; else return "(błąd typu jednostki)"; end; end; end; local function Typ_jednostki() if(nazwa_jednostki~="")then --local kod_jezyka,kod_projektu=KodyWikiPudelka(frame,liczba_numer_jednostki); --local klucz_projektu=kod_projektu..":"..kod_jezyka; local pudelko_modul=require("Module:Pudełko"); local pelna_nazwa_strony=((nazwa_przestrzeni_nazw~="")and nazwa_przestrzeni_nazw..":" or "")..nazwa_jednostki; if(pudelko_modul.CzyNiepoprawnaNazwa(pelna_nazwa_strony))then return "(błąd nazwy jednostki)";end; local nazwy_modul=require("Module:Nazwy") pelna_nazwa_strony=nazwy_modul["PEŁNANAZWASTRONY"]{[1]=pelna_nazwa_strony,["kod języka"]=kod_jezyka,["kod projektu"]=kod_projektu,}; local norm_przed_lub_dyskusji=p.Normalna_przedmiotowa_lub_dyskusji_nazwa_przestrzeni_nazw(nazwa_przestrzeni_nazw,1,kod_jezyka,kod_projektu); if(kod_projektu==pudelko_modul["Kod projektu tego projektu"]())then local nazwa_strony_glownej_dla_dzieci_ze_zmiennej=p.Nazwa_strony_bazowej_dla_dzieci_ze_zmiennej(frame,liczba_numer_jednostki,kod_jezyka); if(nazwa_strony_glownej_dla_dzieci_ze_zmiennej=="")then return "(błąd nazwy strony głównej dla dzieci)";end; local nazwa_strony_glownej_wikijuniora=p.Nazwa_strony_bazowej_dla_dzieci_z_wikidanych(kod_jezyka); local nazwa_strony_glownej_dla_dzieci_uzyskana=(not nazwa_strony_glownej_dla_dzieci_ze_zmiennej)and nazwa_strony_glownej_wikijuniora or nazwa_strony_glownej_dla_dzieci_ze_zmiennej; if(nazwa_strony_glownej_dla_dzieci_uzyskana)then if(pudelko_modul.CzyNiepoprawnaNazwa(nazwa_strony_glownej_dla_dzieci_uzyskana))then return "(błąd nazwy strony głównej dla dzieci)";end; nazwa_strony_glownej_dla_dzieci_uzyskana=nazwy_modul["PEŁNANAZWASTRONY"]{[1]=nazwa_strony_glownej_dla_dzieci_uzyskana,["kod języka"]=kod_jezyka,["kod projektu"]=kod_projektu,}; if(pelna_nazwa_strony==nazwa_strony_glownej_dla_dzieci_uzyskana)then return "strona główna dla dzieci";end; end; end; local nazwa_strony_glownej_projektu_ze_zmiennej=p.Nazwa_strony_bazowej_projektu_ze_zmiennej(frame,liczba_numer_jednostki,kod_jezyka,kod_projektu); if(nazwa_strony_glownej_projektu_ze_zmiennej=="")then return "(błąd nazwy strony głównej projektu)";end; local nazwa_strony_glownej_projektu_z_wikidanych=p.Nazwa_strony_bazowej_projektu_z_wikidanych(kod_jezyka,kod_projektu); local nazwa_strony_glownej_projektu_uzyskana=(not nazwa_strony_glownej_projektu_ze_zmiennej)and nazwa_strony_glownej_projektu_z_wikidanych or nazwa_strony_glownej_projektu_ze_zmiennej; if(nazwa_strony_glownej_projektu_uzyskana)then if(pudelko_modul.CzyNiepoprawnaNazwa(nazwa_strony_glownej_projektu_uzyskana))then return "(błąd nazwy strony głównej projektu)";end; nazwa_strony_glownej_projektu_uzyskana=nazwy_modul["PEŁNANAZWASTRONY"]{[1]=nazwa_strony_glownej_projektu_uzyskana,["kod języka"]=kod_jezyka,["kod projektu"]=kod_projektu,}; if(pelna_nazwa_strony==nazwa_strony_glownej_projektu_uzyskana)then return "strona główna projektu";end; end; if(norm_przed_lub_dyskusji=="")then local parametry_modul=require("Module:Parametry"); if(parametry_modul.CzyTak(frame.args["obsługiwane jednostki jako nieopisowe strony"]))then return "artykuł"; else local it=mw.ustring.match(nazwa_jednostki,"^[^/]+$"); if(it)then return "podręcznik";else return "artykuł";end; end; elseif(norm_przed_lub_dyskusji=="Wikijunior")then local parametry_modul=require("Module:Parametry"); if(parametry_modul.CzyTak(frame.args["obsługiwane jednostki jako nieopisowe strony"]))then return "artykuł dla dzieci"; else local it=mw.ustring.match(nazwa_jednostki,"^[^/]+$"); if(it)then return "podręcznik dla dzieci";else return "artykuł dla dzieci";end; end; elseif(norm_przed_lub_dyskusji=="User")then local parametry_modul=require("Module:Parametry"); if(parametry_modul.CzyTak(frame.args["obsługiwane jednostki użytkownika jako normalne strony"]))then return "strona użytkownika"; else local czy_podstrony=mw.ustring.match(nazwa_jednostki,"^[^/]+$") if(czy_podstrony)then return "strona główna użytkownika"; else if(not parametry_modul.CzyTak(frame.args["obsługiwane jednostki jako nieopisowe strony"]))then if(parametry_modul.CzyTak(frame.args["obsługiwane jednostki użytkownika"]))then local czy_ksiazka=mw.ustring.match(nazwa_jednostki,"^[^/]+/[^/]*$"); if(czy_ksiazka)then return "podręcznik użytkownika"; else return "artykuł użytkownika"; end; else return "jednostka użytkownika"; end; else return "strona użytkownika"; end; end; end; elseif(norm_przed_lub_dyskusji=="File")then return "strona pliku"; elseif(norm_przed_lub_dyskusji=="Category")then return "strona kategorii"; elseif(norm_przed_lub_dyskusji=="Project")then local parametry_modul=require("Module:Parametry"); if(parametry_modul.CzyTak(frame.args["obsługiwane brudnopisy jako normalne strony"]))then return "strona projektu";end; if(mw.ustring.match(nazwa_jednostki,"^%s*[Bb]rudnopis/[^/]*/.*"))then if(not parametry_modul.CzyTak(frame.args["obsługiwane jednostki jako nieopisowe strony"]))then if(parametry_modul.CzyTak(frame.args["obsługiwane jednostki brudnopisu projektu"]))then local czy_ksiazka=mw.ustring.match(nazwa_jednostki,"^%s*[Bb]rudnopis/[^/]*/[^/]*$"); if(czy_ksiazka)then return "podręcznik brudnopisu projektu"; else return "artykuł brudnopisu projektu"; end; else return "jednostka brudnopisu projektu"; end; else return "strona brudnopisu projektu"; end; else return "strona projektu"; end; elseif(norm_przed_lub_dyskusji=="Help")then return "strona pomocy"; elseif(norm_przed_lub_dyskusji=="MediaWiki")then return "strona komunikatu"; elseif(norm_przed_lub_dyskusji=="Special")then return "strona specialna"; elseif(norm_przed_lub_dyskusji=="Gadget")then return "strona gadżetu"; elseif(norm_przed_lub_dyskusji=="Template")then local parametry_modul=require("Module:Parametry"); if(parametry_modul.CzyTak(frame.args["obsługiwane strony jako niebrudnopisowe jednostki programowe"]))then return "strona szablonu";end; local function CzySzablonAlboOpis(nazwa_przestrzeni_nazw,nazwa_jednostki,szablon,opis_szablonu,strona_szablonu,prefix) local parametry_modul=require("Module:Parametry"); if(parametry_modul.CzyTak(frame.args["obsługiwane opisy jako strony jednostek programowych"]) or parametry_modul.CzyTak(frame.args["obsługiwane jednostki jako nieopisowe strony"]))then return szablon; else if(mw.ustring.match(nazwa_jednostki,"^"..prefix..".*/opis$"))then return opis_szablonu; else if(not parametry_modul.CzyTak(frame.args["obsługiwane nieudokumentowane szablony jako szablony"]))then local czy_brudnopis=mw.ustring.match(nazwa_jednostki,"^"..prefix..".*$"); if(czy_brudnopis)then local pagename=(nazwa_przestrzeni_nazw~="")and nazwa_przestrzeni_nazw..":"..nazwa_jednostki or nazwa_jednostki; local czy_istnieje_strona,tab=require("Module:Techniczne").PoliczZbiory(pagename); if(czy_istnieje_strona==1)then local czy_brudnopis_opisu_szablonu=require("Module:Łatki").contentMatch{ [1]='<noinclude>.-{{%s*[Dd]okumentacja%s*}}.-</noinclude>', [2]='<noinclude>.-{{%s*[Dd]okumentacja%s*|.-</noinclude>',pagename=pagename,namespace=0 }; if(not czy_brudnopis_opisu_szablonu)then return opis_szablonu;else return szablon;end; else return szablon; end; else return strona_szablonu; end; else return szablon; end; end; end; end; if((not parametry_modul.CzyTak(frame.args["obsługiwane brudnopisy jako normalne strony"]))and(mw.ustring.match(nazwa_jednostki,"^%s*[Bb]rudnopis/[^/]*/.*")))then return CzySzablonAlboOpis(norm_przed_lub_dyskusji,nazwa_jednostki,"strona brudnopisu szablonu","strona brudnopisu opisu szablonu","strona szablonu","[Bb]rudnopis/[^/]*/"); else return CzySzablonAlboOpis(norm_przed_lub_dyskusji,nazwa_jednostki,"strona szablonu","strona opisu szablonu","strona szablonu",""); end; elseif(norm_przed_lub_dyskusji=="Module")then local parametry_modul=require("Module:Parametry"); if(parametry_modul.CzyTak(frame.args["obsługiwane strony jako niebrudnopisowe jednostki programowe"]))then return "strona modułu";end; if((not parametry_modul.CzyTak(frame.args["obsługiwane brudnopisy jako normalne strony"]))and(mw.ustring.match(nazwa_jednostki,"^%s*[Bb]rudnopis/[^/]*/.*")))then if(parametry_modul.CzyTak(frame.args["obsługiwane opisy jako strony jednostek programowych"]) or parametry_modul.CzyTak(frame.args["obsługiwane jednostki jako nieopisowe strony"]))then return "strona brudnopisu modułu" else local pelna_nazwa_strony=(norm_przed_lub_dyskusji~="")and norm_przed_lub_dyskusji..":"..nazwa_jednostki or nazwa_jednostki; pelna_nazwa_strony=require("Module:Nazwy")["PEŁNANAZWASTRONY"]{[1]=pelna_nazwa_strony,["kod języka"]=kod_jezyka,["kod projektu"]=kod_projektu,}; local pelna_nazwa_strony_brudnopisu_opisu_modulu=require("Module:Techniczne")["PełnaNazwaOpisuModułu"](pelna_nazwa_strony); if(pelna_nazwa_strony==pelna_nazwa_strony_brudnopisu_opisu_modulu)then return "strona brudnopisu opisu modułu"; else return "strona brudnopisu modułu"; end; end; else if(parametry_modul.CzyTak(frame.args["obsługiwane opisy jako strony jednostek programowych"]) or parametry_modul.CzyTak(frame.args["obsługiwane jednostki jako nieopisowe strony"]))then return "strona modułu" else local pelna_nazwa_strony=(norm_przed_lub_dyskusji~="")and norm_przed_lub_dyskusji..":"..nazwa_jednostki or nazwa_jednostki; pelna_nazwa_strony=require("Module:Nazwy")["PEŁNANAZWASTRONY"]{[1]=pelna_nazwa_strony,["kod języka"]=kod_jezyka,["kod projektu"]=kod_projektu,}; local pelna_nazwa_opisu_modulu=require("Module:Techniczne")["PełnaNazwaOpisuModułu"](pelna_nazwa_strony); if(pelna_nazwa_strony==pelna_nazwa_opisu_modulu)then return "strona opisu modułu"; else return "strona modułu"; end; end; end; else return "inne"; end; end; return "inne"; end; local typ_jednostki=Typ_jednostki(); local function TempFunc(typ_jednostki) if( (kod_liczbowy_przestrzeni_nazw==2) or( (kod_liczbowy_przestrzeni_nazw==0) and( typ and (p.Czy_dyskusja_typu_jednostki_z_frame_od_dyskusja_typu_jednostki(frame,i)) or( ((not typ)and(nazwa_przestrzeni_nazw)) and (mw.ustring.match(nazwa_przestrzeni_nazw,"^Talk$") or mw.ustring.match(nazwa_przestrzeni_nazw," talk$")) or nil ) ) ) )then typ_jednostki,ile=mw.ustring.gsub(typ_jednostki,"^(%S+)",function(strona) return strona.." dyskusji"; end); return typ_jednostki; end; return typ_jednostki; end; if(((analiza)or(nazwa_jednostki_podana))and(typ)and(typ~=""))then if(typ_jednostki==typ)then return TempFunc(typ_jednostki); elseif(nazwa_jednostki_podana)then return "(błąd parametrów pudełkowych)" else return "(błąd typu jednostki)"; end; end; return TempFunc(typ_jednostki); end; function p.Uzyskanie_nazw_jednostki(frame,kod_liczbowy_przestrzeni_nazw,czy_uwzglednic_alternatywna_nazwe,i,numer_argorytmu,co_ma_liczyc) local nazwa_przestrzeni_fun,nazwa_jednostki_fun; if(kod_liczbowy_przestrzeni_nazw==0)then nazwa_przestrzeni_fun="Nazwa przestrzeni nazw"; nazwa_jednostki_fun="Nazwa jednostki"; elseif(kod_liczbowy_przestrzeni_nazw==1)then nazwa_przestrzeni_fun="Nazwa przedmiotowej przestrzeni nazw"; nazwa_jednostki_fun="Nazwa przedmiotowa jednostki"; elseif(kod_liczbowy_przestrzeni_nazw==2)then nazwa_przestrzeni_fun="Nazwa przestrzeni nazw dyskusji" nazwa_jednostki_fun="Nazwa dyskusji jednostki"; else nazwa_przestrzeni_fun="Nazwa przestrzeni nazw"; nazwa_jednostki_fun="Nazwa jednostki"; end; local pudelko_modul=require("Module:Pudełko"); if(not numer_argorytmu)then if((not i)or(i==0))then if((not co_ma_liczyc)or(co_ma_liczyc==0))then local nazwa_przestrzeni_nazw=pudelko_modul[nazwa_przestrzeni_fun](frame,czy_uwzglednic_alternatywna_nazwe); local nazwa_jednostki=pudelko_modul["Nazwa jednostki"](frame); return nazwa_przestrzeni_nazw,nazwa_jednostki; elseif(co_ma_liczyc==1)then local nazwa_przestrzeni_nazw=pudelko_modul[nazwa_przestrzeni_fun](frame,czy_uwzglednic_alternatywna_nazwe); return nazwa_przestrzeni_nazw; elseif(co_ma_liczyc==2)then return pudelko_modul["Nazwa jednostki"](frame); end; else if((not co_ma_liczyc)or(co_ma_liczyc==0))then local n=p.Nazwa_przestrzeni_nazw_dodatkowe(frame,i); local parametry_modul=require("Module:Parametry"); n=parametry_modul.CzyTak(n); local nazwa_przestrzeni_nazw=(n) and pudelko_modul[nazwa_przestrzeni_fun](frame,czy_uwzglednic_alternatywna_nazwe,i) or pudelko_modul[nazwa_przestrzeni_fun.." 2"](frame,czy_uwzglednic_alternatywna_nazwe,i); local nazwa_jednostki=(n)and pudelko_modul["Nazwa jednostki"](frame,i) or pudelko_modul[nazwa_jednostki_fun.." 2"](frame,i); return nazwa_przestrzeni_nazw,nazwa_jednostki; elseif(co_ma_liczyc==1)then local n=p.Nazwa_przestrzeni_nazw_dodatkowe(frame,i); local parametry_modul=require("Module:Parametry"); n=parametry_modul.CzyTak(n); local nazwa_przestrzeni_nazw=(n) and pudelko_modul[nazwa_przestrzeni_fun](frame,czy_uwzglednic_alternatywna_nazwe,i) or pudelko_modul[nazwa_przestrzeni_fun.." 2"](frame,czy_uwzglednic_alternatywna_nazwe,i); return nazwa_przestrzeni_nazw; elseif(co_ma_liczyc==2)then local n=p.Nazwa_przestrzeni_nazw_dodatkowe(frame,i); local parametry_modul=require("Module:Parametry"); n=parametry_modul.CzyTak(n); return (n)and pudelko_modul["Nazwa jednostki"](frame,i) or pudelko_modul[nazwa_jednostki_fun.." 2"](frame,i); end; end; else if(numer_argorytmu==0)then if((not co_ma_liczyc)or(co_ma_liczyc==0))then local nazwa_przestrzeni_nazw=pudelko_modul[nazwa_przestrzeni_fun](frame,czy_uwzglednic_alternatywna_nazwe,i); local nazwa_jednostki=pudelko_modul["Nazwa jednostki"](frame,i); return nazwa_przestrzeni_nazw,nazwa_jednostki; elseif(co_ma_liczyc==1)then local nazwa_przestrzeni_nazw=pudelko_modul[nazwa_przestrzeni_fun](frame,czy_uwzglednic_alternatywna_nazwe,i); return nazwa_przestrzeni_nazw; elseif(co_ma_liczyc==2)then return pudelko_modul["Nazwa jednostki"](frame,i); end; else if((not co_ma_liczyc)or(co_ma_liczyc==0))then local nazwa_przestrzeni_nazw=pudelko_modul[nazwa_przestrzeni_fun.." 2"](frame,czy_uwzglednic_alternatywna_nazwe,i); local nazwa_jednostki=pudelko_modul[nazwa_jednostki_fun.." 2"](frame,i); return nazwa_przestrzeni_nazw,nazwa_jednostki; elseif(co_ma_liczyc==1)then local nazwa_przestrzeni_nazw=pudelko_modul[nazwa_przestrzeni_fun.." 2"](frame,czy_uwzglednic_alternatywna_nazwe,i); return nazwa_przestrzeni_nazw; elseif(co_ma_liczyc==2)then return pudelko_modul[nazwa_jednostki_fun.." 2"](frame,i); end; end; end; end; function p.Nazwa_przestrzeni_nazw_dodatkowe(frame,numer_jednostki) local pf=frame.getParent and frame:getParent() or {args={}}; return frame.args["nazwa przestrzeni nazw "..tostring(numer_jednostki)] or pf.args["nazwa przestrzeni nazw "..tostring(numer_jednostki)] end; function p.Nazwa_jednostki(frame,i) local pf=frame.getParent and frame:getParent() or {args={}}; local nazwa_jednostki,liczba_numer_jednostki=p.Nazwy_przestrzeni_i_jednostki_podane_o_pewnym_numerze(frame,i,2); local kod_jezyka,kod_projektu=p.Wikikody_kontenera(frame,liczba_numer_jednostki); if(nazwa_jednostki)then nazwa_jednostki=mw.text.trim(nazwa_jednostki); nazwa_jednostki=mw.ustring.gsub(nazwa_jednostki,"^:",""); nazwa_jednostki=mw.ustring.gsub(nazwa_jednostki,"^([^#]*)#(.*)$","%1"); local parametry=mw.ustring.match(nazwa_jednostki,"^.*%?([^%?]+)$"); if(parametry and mw.ustring.match(parametry,"[^=]+=[^=]*"))then nazwa_jednostki=mw.ustring.gsub(nazwa_jednostki,"^(.*)%?([^%?]+)$","%1"); end; else local nazwy_modul=require("Module:Nazwy"); nazwa_jednostki=nazwy_modul["NAZWASTRONY"]{["kod języka"]=kod_jezyka,["kod projektu"]=kod_projektu,}; end; local parametry_modul=require("Module:Parametry"); nazwa_jednostki=parametry_modul["Odstępy"]{[1]=nazwa_jednostki,[2]="tak",}; return mw.getContentLanguage():ucfirst(nazwa_jednostki); end; function p.Nazwy_przestrzeni_i_jednostki_podane_o_pewnym_numerze(frame,i,co_podac) local pf=frame.getParent and frame:getParent() or {args={}}; local numer_jednostki=i or frame.args["numer jednostki"]; local liczba_numer_jednostki=tonumber(numer_jednostki) or 0; local nazwa_jednostki; local bool_numer_jednostki=(liczba_numer_jednostki~=0); local function Nazwa_jednostki() if bool_numer_jednostki then nazwa_jednostki=frame.args["nazwa jednostki "..liczba_numer_jednostki] or ((liczba_numer_jednostki==1)and(pf.args["cel"])) or pf.args[liczba_numer_jednostki]; else nazwa_jednostki=frame.args["nazwa jednostki"] or pf.args["nazwa jednostki"]; end; return nazwa_jednostki; end; local function Nazwa_przestrzeni_nazw() local nazwa_przestrzeni_nazw=bool_numer_jednostki and (frame.args["nazwa przestrzeni nazw i"] or pf.args["nazwa przestrzeni nazw i"] or frame.args["nazwa przestrzeni nazw "..liczba_numer_jednostki] or pf.args["nazwa przestrzeni nazw "..liczba_numer_jednostki]) or frame.args["nazwa przestrzeni nazw"] or pf.args["nazwa przestrzeni nazw"]; return nazwa_przestrzeni_nazw; end; if(not co_podac)then return Nazwa_przestrzeni_nazw(),Nazwa_jednostki(),liczba_numer_jednostki; elseif(co_podac==1)then return Nazwa_przestrzeni_nazw(),liczba_numer_jednostki; elseif(co_podac==2)then return Nazwa_jednostki(),liczba_numer_jednostki; else return Nazwa_przestrzeni_nazw(),Nazwa_jednostki(),liczba_numer_jednostki; end; end; function p.Jaka_nazwa_jednostki(frame,i,jaka) local nazwa_przestrzeni_nazw,nazwa_jednostki,liczba_numer_jednostki=p.Nazwy_przestrzeni_i_jednostki_podane_o_pewnym_numerze(frame,i); nazwa_przestrzeni_nazw=nazwa_przestrzeni_nazw or p.Nazwa_przestrzeni_nazw_uzyskana_z_typu_jednostki_z_frame(frame,liczba_numer_jednostki); ---- local nazwy_modul=require("Module:Nazwy"); nazwa_przestrzeni_nazw=nazwa_przestrzeni_nazw and mw.text.trim(nazwa_przestrzeni_nazw) or nazwy_modul["NAZWAPRZESTRZENI"](); if(nazwa_jednostki)then local html_modul=require("Module:Html"); nazwa_jednostki=html_modul["NazwaStronyAdresu"](nazwa_jednostki,true); else nazwa_jednostki=nazwy_modul["NAZWASTRONY"](); end; local kod_jezyka,kod_projektu=p.Wikikody_kontenera(frame,liczba_numer_jednostki); local wiki_modul=require("Module:Wiki"); local czy_biezaca=wiki_modul["CzyBieżącaWiki"]{["kod języka"]=kod_jezyka,["kod projektu"]=kod_projektu,}; if(jaka)then if(czy_biezaca)then local tab_parametry={nazwa=nazwa_przestrzeni_nazw,}; if(jaka=="przedmiotowa")then tab_parametry["przedmiotowa"]="tak";end; nazwa_przestrzeni_nazw=nazwy_modul.Np(tab_parametry); else local tab_parametry={nazwa=nazwa_przestrzeni_nazw,["kod języka"]=kod_jezyka,["kod projektu"]=kod_projektu,}; if(jaka=="przedmiotowa")then tab_parametry["przedmiotowa"]="tak";end; nazwa_przestrzeni_nazw=nazwy_modul.NpDane(tab_parametry); end; else if(czy_biezaca)then nazwa_przestrzeni_nazw=nazwy_modul.Np{nazwa=nazwa_przestrzeni_nazw}; else nazwa_przestrzeni_nazw=nazwy_modul.NpDane{nazwa=nazwa_przestrzeni_nazw,["kod języka"]=kod_jezyka,["kod projektu"]=kod_projektu,}; end; end; if(not mw.ustring.match(nazwa_jednostki,"^:"))then if(nazwa_przestrzeni_nazw~="")then if((not typ)or(typ=="przedmiotowa"))then if(czy_biezaca)then local nazwy_np_modul=mw.loadData("Module:Nazwy/Np"); if(nazwa_przestrzeni_nazw==nazwy_np_modul.Template)then local nazwa_przestrzeni_nazw_d=nazwy_modul["NAZWAPRZESTRZENI"](nazwa_jednostki); if(nazwa_przestrzeni_nazw_d==nazwy_np_modul.Template)then return nazwy_modul["NAZWASTRONY"](nazwa_jednostki); end; elseif(nazwa_przestrzeni_nazw==nazwy_np_modul.Module)then local nazwa_przestrzeni_nazw_d=nazwy_modul["NAZWAPRZESTRZENI"](nazwa_jednostki); if(nazwa_przestrzeni_nazw_d==nazwy_np_modul.Module)then return nazwy_modul["NAZWASTRONY"](nazwa_jednostki); end; end; else local template_prze=nazwy_modul.NpDane{nazwa="Template",["kod języka"]=kod_jezyka,["kod projektu"]=kod_projektu,}; local module_prze=nazwy_modul.NpDane{nazwa="Module",["kod języka"]=kod_jezyka,["kod projektu"]=kod_projektu,}; if(nazwa_przestrzeni_nazw==template_prze)then local nazwa_przestrzeni_nazw_d=nazwy_modul["NAZWAPRZESTRZENI"]{[1]=nazwa_jednostki,["kod języka"]=kod_jezyka,["kod projektu"]=kod_projektu,}; if(nazwa_przestrzeni_nazw_d==template_prze)then return nazwy_modul["NAZWASTRONY"]{[1]=nazwa_jednostki,["kod języka"]=kod_jezyka,["kod projektu"]=kod_projektu,}; end; elseif(nazwa_przestrzeni_nazw==module_prze)then local nazwa_przestrzeni_nazw_d=nazwy_modul["NAZWAPRZESTRZENI"]{[1]=nazwa_jednostki,["kod języka"]=kod_jezyka,["kod projektu"]=kod_projektu,}; if(nazwa_przestrzeni_nazw_d==module_prze)then return nazwy_modul["NAZWASTRONY"]{[1]=nazwa_jednostki,["kod języka"]=kod_jezyka,["kod projektu"]=kod_projektu,}; end; end; end; end; local parametry_modul=require("Module:Parametry"); nazwa_jednostki=parametry_modul["Odstępy"]{[1]=nazwa_jednostki,[2]="tak",}; return mw.getContentLanguage():ucfirst(nazwa_jednostki); else return nazwy_modul["NAZWASTRONY"]{[1]=nazwa_jednostki,["kod języka"]=kod_jezyka,["kod projektu"]=kod_projektu,}; end; else return nazwy_modul["NAZWASTRONY"]{[1]=nazwa_jednostki,["kod języka"]=kod_jezyka,["kod projektu"]=kod_projektu,}; end; end; function p.Czy_przestrzen_nazw_jest_obslugiwana(frame,jakas_przestrzen_nazw,kod_jezyka,kod_projektu) local nazwy_modul=require("Module:Nazwy"); local parametry_modul=require("Module:Parametry"); local wiki_modul=require("Module:Wiki"); local czy_biezaca=wiki_modul["CzyBieżącaWiki"]{["kod języka"]=kod_jezyka,["kod projektu"]=kod_projektu,}; if(czy_biezaca)then jakas_przestrzen_nazw=nazwy_modul.Np{nazwa=jakas_przestrzen_nazw}; else jakas_przestrzen_nazw=nazwy_modul.NpDane{nazwa=jakas_przestrzen_nazw,["kod języka"]=kod_jezyka,["kod projektu"]=kod_projektu,}; end; local function nazwa_przestrzeni_nazw_fun(nazwa_przestrzeni_nazw_iter) if(czy_biezaca)then nazwa_przestrzeni_nazw_iter=nazwy_modul.Np{nazwa=nazwa_przestrzeni_nazw_iter}; else nazwa_przestrzeni_nazw_iter=nazwy_modul.NpDane{nazwa=nazwa_przestrzeni_nazw_iter,["kod języka"]=kod_jezyka,["kod projektu"]=kod_projektu,}; end; if(jakas_przestrzen_nazw==nazwa_przestrzeni_nazw_iter)then return true; end; return false; end; for licznik,nazwa_przestrzeni_nazw in pairs(frame.args)do if(type(licznik)=="number")then local nazwa_przestrzeni_nazw_element,klucze_element=mw.ustring.match(nazwa_przestrzeni_nazw,"^%s*([%w%s]*)%s*:%s*(.-)%s*"); if(nazwa_przestrzeni_nazw_element and klucze_element)then local tab_klucze=mw.text.split(klucze_element,"%s*,%s*",false); local wiki_modul=require("Module:Wiki"); for _,klucz_element in ipairs(tab_klucze)do local kod_jezyka_obslugiwane,kod_projektu_obslugiwane=wiki_modul.KluczProjektu(klucz_element); if(kod_jezyka_obslugiwane==kod_jezyka and kod_projektu_obslugiwane==kod_projektu)then local wynik=nazwa_przestrzeni_nazw_fun(nazwa_przestrzeni_nazw_element); if(wynik)then return true;end; end; end; else local wynik=nazwa_przestrzeni_nazw_fun(nazwa_przestrzeni_nazw); if(wynik)then return true;end; end; end; end; return false; end; function p.Analiza_interwiki_czy_projekt_aktualny(frame,czy_jezyk,czy_projekt) local parametry_modul=require("Module:Parametry"); local p=parametry_modul.PobierzFrameEwentualnieParent(frame); local pudelko_modul=require("Module:Pudełko"); local wiki_modul=require("Module:Wiki"); local jezyk_biezacy=czy_jezyk and pudelko_modul["Kod języka tego projektu"](); local projekt_biezacy=czy_projekt and pudelko_modul["Kod projektu tego projektu"](); for i,_ in pairs(p.args)do if(type(i)=="number")then local klucz_projektu=pudelko_modul["Klucz projektu"](frame,i); local kod_jezyka=pudelko_modul["Kod języka"](frame,i); local kod_projektu=pudelko_modul["kod projektu"](frame,i); local jezyk,projekt=wiki_modul.KodyWiki(klucz_projektu,kod_jezyka,kod_projektu); if((czy_jezyk and (jezyk~=jezyk_biezacy))or(czy_projekt and(projekt~=projekt_biezacy)))then return "tak"; end; end; end; return; end; return p; cd0kjbigc5iw0ffm391ny2ezgabonp7 Moduł:Pudełko/Potrzebne 828 58908 540443 529755 2026-04-24T03:13:51Z Persino 2851 540443 Scribunto text/plain local p={} function p.Problemy_kontenerowe_szablonowe(frame, kod_liczbowy_przestrzeni_nazw) local pf=frame:getParent(); local parametry_modul=require("Module:Parametry"); local zkategoria=not parametry_modul.CzyTak(frame.args["bez kategorii"] or pf.args["bez kategorii"]); local brudnopis_wikibooks=parametry_modul.CzyTak(frame.args["obsługiwany brudnopis projektu"]); local brudnopis_modul=parametry_modul.CzyTak(frame.args["obsługiwany brudnopis modułu"]); local brudnopis_szablon=parametry_modul.CzyTak(frame.args["obsługiwany brudnopis szablonu"]); local nieobslugiwane_strony_glowne=parametry_modul.CzyTak(frame.args["nieobsługiwane strony główne"]); local nieobslugiwane_strony_szablonow=parametry_modul.CzyTak(frame.args["nieobsługiwane strony szablonów"]); local nieobslugiwane_strony_opisu_szablonow=parametry_modul.CzyTak(frame.args["nieobsługiwane strony opisu szablonów"]); local nieobslugiwane_strony_modulow=parametry_modul.CzyTak(frame.args["nieobsługiwane strony modułów"]); local nieobslugiwane_strony_opisu_modulow=parametry_modul.CzyTak(frame.args["nieobsługiwane strony opisu szablonów"]); local nieobslugiwane_strony_brudnopisu_szablonow=parametry_modul.CzyTak(frame.args["nieobsługiwane strony brudnopisu szablonów"]); local nieobslugiwane_strony_brudnopisu_opisu_szablonow=parametry_modul.CzyTak(frame.args["nieobsługiwane strony brudnopisu opisu szablonów"]); local nieobslugiwane_strony_brudnopisu_modulow=parametry_modul.CzyTak(frame.args["nieobsługiwane strony brudnopisu modułów"]); local nieobslugiwane_strony_brudnopisu_opisu_modulow=parametry_modul.CzyTak(frame.args["nieobsługiwane strona brudnopisu opisu modułów"]); local nieobslugiwane_strony_jednostek_programowych=parametry_modul.CzyTak(frame.args["nieobsługiwane strony jednostek programowych"]); local nieobslugiwane_strony_opisu_jednostek_programowych=parametry_modul.CzyTak(frame.args["nieobsługiwane strony opisu jednostek programowych"]); local nieobslugiwana_strony_glowne_uzytkownikow=nieobslugiwane_strony_glowne or parametry_modul.CzyTak(frame.args["nieobsługiwane strony główne użytkowników"]); local nieobslugiwana_strona_glowna_projektu=nieobslugiwane_strony_glowne or parametry_modul.CzyTak(frame.args["nieobsługiwana strona główna projektu"]); local nieobslugiwana_strona_glowna_dla_dzieci=nieobslugiwane_strony_glowne or parametry_modul.CzyTak(frame.args["nieobsługiwana strona główna dla dzieci"]); local obslugiwane_niebiezace_wiki=parametry_modul.CzyTak(frame.args["obsługiwane niebieżące wiki"]); local nieobslugiwane_polskie_wiki=parametry_modul.CzyTak(frame.args["nieobsługiwane polskie wiki"]); local nieobslugiwane_lokalne_wiki=parametry_modul.CzyTak(frame.args["nieobsługiwane lokalne wiki"]); local podkategoria_niebiezace_wiki; local wskazuje_wiki; local nazwij_jednostka=parametry_modul.CzyTak(frame.args["nazwij jednostką"] or pf.args["nazwij jednostką"]); local wylocz_niezaleznosc_od_nazwij_jednostka=parametry_modul.CzyTak(frame.args["wyłącz niezależność od nazwij jednostką"]); local w_user_jako_strony_uzykownika=parametry_modul.CzyTak(frame.args["obsługiwane jednostki użytkownika jako normalne strony"]); local pudelko_modul=require("Module:Pudełko"); local lancuch_bledow={}; local tablica_lancuch_kategorii_bledow={}; local czy_ze_szczegolami=not parametry_modul.CzyTak(frame.args["bez szczegółów"] or pf.args["bez szczegółów"]); local wiki_modul=require("Module:Wiki"); local kod_jezyka_tego_projektu; local kod_projektu_tego_projektu; local pudelko_modul=require("Module:Pudełko"); local pudelko_pomocne_modul=require("Module:Pudełko/Pomocne"); local function AnalizujDane(i) local kod_jezyka;local kod_projektu; if(obslugiwane_niebiezace_wiki or nieobslugiwane_polskie_wiki or nieobslugiwane_lokalne_wiki)then kod_jezyka,kod_projektu=pudelko_pomocne_modul.Wikikody_kontenera(frame,i); else kod_jezyka=pudelko_modul["Kod języka tego projektu"](); kod_projektu=pudelko_modul["Kod projektu tego projektu"](); end; if(i>0)then if(obslugiwane_niebiezace_wiki or nieobslugiwane_polskie_wiki or nieobslugiwane_lokalne_wiki)then local klucz_projektu2=pudelko_pomocne_modul.Klucz_projektu(frame,i); local kod_jezyka2=pudelko_pomocne_modul.Kod_jezyka(frame,i); local kod_projektu2=pudelko_pomocne_modul.Kod_projektu(frame,i); podkategoria_niebiezace_wiki=podkategoria_niebiezace_wiki or (obslugiwane_niebiezace_wiki and "bieżące wiki" or ((nieobslugiwane_polskie_wiki and nieobslugiwane_lokalne_wiki) and "polskie lub lokalne, wiki" or ((nieobslugiwane_polskie_wiki and not nieobslugiwane_lokalne_wiki) and "polskie wiki" or "lokalne wiki" ) or nil)); wskazuje_wiki=wskazuje_wiki or (obslugiwane_niebiezace_wiki and "niebieżący" or ((nieobslugiwane_polskie_wiki and nieobslugiwane_lokalne_wiki) and "niepolski i nielokalny" or ((nieobslugiwane_polskie_wiki and not nieobslugiwane_lokalne_wiki) and "niepolski" or "nielokalny" ) or nil)); if(not(klucz_projektu2 or kod_jezyka2 or kod_projektu2))then if((obslugiwane_niebiezace_wiki)or(nieobslugiwane_polskie_wiki)or(nieobslugiwane_lokalne_wiki))then if(czy_ze_szczegolami)then table.insert(lancuch_bledow,"<li>Nie podano, które wiki ma osbługiwać, dla zmiennych o numerze "..i..".</li>"); if(zkategoria)then parametry_modul.DodajElementDoZbioru(tablica_lancuch_kategorii_bledow,"{{pierwszy człon kategorii błędu}} - "..podkategoria_niebiezace_wiki); end; return; else return "tak"; end; end; else local wynik=wiki_modul:OddawajDaneKodyWiki(klucz_projektu2,kod_jezyka2,kod_projektu2); if((type(wynik)=="table") and (wynik[4]) and (wynik[5])) then if((obslugiwane_niebiezace_wiki)or(nieobslugiwane_polskie_wiki)or(nieobslugiwane_lokalne_wiki))then local pudelko_modul=require("Module:Pudełko"); local kod_jezyka_tego_projektu=pudelko_modul["Kod języka tego projektu"](); local kod_projektu_tego_projektu=pudelko_modul["Kod projektu tego projektu"](); if(parametry_modul.CzyTak(klucz_projektu2))then if((kod_jezyka)and(kod_projektu))then if(kod_jezyka==kod_jezyka_tego_projektu)and(kod_projektu==kod_projektu_tego_projektu)then table.insert(lancuch_bledow,"<li>Podany klucz projektu, a w nim: kod języka i kod projektu, nie wskazują na projekt "..wskazuje_wiki..", dla zmiennych o numerze "..i..".</li>"); --projekt_lokalny_lub_polski_kategorie(podkategoria_niebiezace_wiki); if(czy_ze_szczegolami)then if(zkategoria)then parametry_modul.DodajElementDoZbioru(tablica_lancuch_kategorii_bledow,"{{pierwszy człon kategorii błędu}} - "..podkategoria_niebiezace_wiki); end; else return "tak"; end; elseif((nieobslugiwane_polskie_wiki and not nieobslugiwane_lokalne_wiki and not obslugiwane_niebiezace_wiki) or (nieobslugiwane_polskie_wiki and nieobslugiwane_lokalne_wiki and not obslugiwane_niebiezace_wiki))and(kod_jezyka==kod_jezyka_tego_projektu)then table.insert(lancuch_bledow,"<li>Podany klucz projektu: a w nim: kod języka, nie wskazuje na projekt "..wskazuje_wiki..", dla zmiennych o numerze "..i..".</li>"); if(czy_ze_szczegolami)then if(zkategoria)then parametry_modul.DodajElementDoZbioru(tablica_lancuch_kategorii_bledow,"{{pierwszy człon kategorii błędu}} - "..podkategoria_niebiezace_wiki); end; else return "tak"; end; elseif(((not nieobslugiwane_polskie_wiki and nieobslugiwane_lokalne_wiki and not obslugiwane_niebiezace_wiki)or(nieobslugiwane_polskie_wiki and nieobslugiwane_lokalne_wiki and not obslugiwane_niebiezace_wiki))and(kod_projektu==kod_projektu_tego_projektu))then table.insert(lancuch_bledow,"<li>Podany klucz projektu: a w nim: kod projektu, nie wskazuje na projekt "..wskazuje_wiki..", dla zmiennych o numerze "..i..".</li>"); if(czy_ze_szczegolami)then if(zkategoria)then parametry_modul.DodajElementDoZbioru(tablica_lancuch_kategorii_bledow,"{{pierwszy człon kategorii błędu}} - "..podkategoria_niebiezace_wiki); end; else return "tak"; end; end; end; else if (kod_jezyka2 and kod_projektu2 and ((((kod_jezyka2==kod_jezyka_tego_projektu)and(kod_projektu2~=kod_projektu_tego_projektu)) or(((not nieobslugiwane_polskie_wiki and nieobslugiwane_lokalne_wiki and not obslugiwane_niebiezace_wiki) or(nieobslugiwane_polskie_wiki and nieobslugiwane_lokalne_wiki and not obslugiwane_niebiezace_wiki))and(kod_jezyka2~=kod_jezyka_tego_projektu)and(kod_projektu2==kod_projektu_tego_projektu)) or(((nieobslugiwane_polskie_wiki and not nieobslugiwane_lokalne_wiki and not obslugiwane_niebiezace_wiki) or(nieobslugiwane_polskie_wiki and nieobslugiwane_lokalne_wiki and not obslugiwane_niebiezace_wiki) or obslugiwane_niebiezace_wiki)and(kod_jezyka2==kod_jezyka_tego_projektu)and(kod_projektu2==kod_projektu_tego_projektu)) ) or(((nieobslugiwane_polskie_wiki and not nieobslugiwane_lokalne_wiki and not obslugiwane_niebiezace_wiki)or(nieobslugiwane_polskie_wiki and nieobslugiwane_lokalne_wiki and not obslugiwane_niebiezace_wiki)) and(kod_jezyka2==kod_jezyka_tego_projektu)) or(((not nieobslugiwane_polskie_wiki and nieobslugiwane_lokalne_wiki and not obslugiwane_niebiezace_wiki)or(nieobslugiwane_polskie_wiki and nieobslugiwane_lokalne_wiki and not obslugiwane_niebiezace_wiki)) and(kod_projektu2==kod_projektu_tego_projektu)) ))then table.insert(lancuch_bledow,"<li>Podany: kod języka i kod projektu, nie wskazują na projekt "..wskazuje_wiki..", dla zmiennych o numerze "..i..".</li>"); if(czy_ze_szczegolami)then if(zkategoria)then parametry_modul.DodajElementDoZbioru(tablica_lancuch_kategorii_bledow,"{{pierwszy człon kategorii błędu}} - "..podkategoria_niebiezace_wiki); end; else return "tak"; end; elseif((kod_jezyka2 and not kod_projektu2) and ((((nieobslugiwane_polskie_wiki and not nieobslugiwane_lokalne_wiki and not obslugiwane_niebiezace_wiki)or obslugiwane_niebiezace_wiki)and (kod_jezyka2==kod_jezyka_tego_projektu))or(not nieobslugiwane_polskie_wiki and nieobslugiwane_lokalne_wiki and not obslugiwane_niebiezace_wiki)or(nieobslugiwane_polskie_wiki and nieobslugiwane_lokalne_wiki and not obslugiwane_niebiezace_wiki))) then table.insert(lancuch_bledow,"<li>Podany kod języka nie wskazuje na projekt "..wskazuje_wiki..", dla zmiennych o numerze "..i..".</li>"); if(czy_ze_szczegolami)then if(zkategoria)then parametry_modul.DodajElementDoZbioru(tablica_lancuch_kategorii_bledow,"{{pierwszy człon kategorii błędu}} - "..podkategoria_niebiezace_wiki); end; else return "tak"; end; elseif((not kod_jezyka2 and kod_projektu2)and (((((not nieobslugiwane_polskie_wiki and nieobslugiwane_lokalne_wiki and not obslugiwane_niebiezace_wiki)or obslugiwane_niebiezace_wiki))and (kod_projektu2==kod_projektu_tego_projektu))or(nieobslugiwane_polskie_wiki and not nieobslugiwane_lokalne_wiki and not obslugiwane_niebiezace_wiki)or(nieobslugiwane_polskie_wiki and nieobslugiwane_lokalne_wiki and not obslugiwane_niebiezace_wiki))) then table.insert(lancuch_bledow,"<li>Podany kod projektu nie wskazuje na projekt "..wskazuje_wiki..", dla zmiennych o numerze "..i..".</li>"); if(czy_ze_szczegolami)then if(zkategoria)then parametry_modul.DodajElementDoZbioru(tablica_lancuch_kategorii_bledow,"{{pierwszy człon kategorii błędu}} - "..podkategoria_niebiezace_wiki); end; else return "tak"; end; end; end; end; else if(czy_ze_szczegolami)then if(wynik[1])then table.insert(lancuch_bledow,"<li>Podany klucz projektu, jest błędny, dla zmiennych o numerze "..i..".</li>"); elseif(not wynik[4] and not wynik[5])then table.insert(lancuch_bledow,"<li>Podany: kod języka i kod projektu, są błędne, dla zmiennych o numerze "..i..".</li>"); elseif(not wynik[4])then table.insert(lancuch_bledow,"<li>Podany kod języka, jest błędny, dla zmiennych o numerze "..i..".</li>"); elseif(not wynik[5])then table.insert(lancuch_bledow,"<li>Podany kod projektu, jest błędny, dla zmiennych o numerze "..i..".</li>"); end; if(zkategoria)then parametry_modul.DodajElementDoZbioru(tablica_lancuch_kategorii_bledow,"{{pierwszy człon kategorii błędu}} - błędne parametry wiki"); end; else return "tak"; end; end; end; end; end; local obslugiwane1=pudelko_pomocne_modul.Czy_przestrzen_nazw_jest_obslugiwana(frame,"Template",kod_jezyka,kod_projektu); local obslugiwane2=pudelko_pomocne_modul.Czy_przestrzen_nazw_jest_obslugiwana(frame,"Module",kod_jezyka,kod_projektu); local nazwa_przestrzeni_nazw,nazwa_jednostki=pudelko_pomocne_modul.Uzyskanie_nazw_jednostki(frame,kod_liczbowy_przestrzeni_nazw,nil,i) local nazwy_modul=require("Module:Nazwy"); local wiki_modul=require("Module:Wiki"); local czy_biezaca=wiki_modul["CzyBieżącaWiki"]{["kod języka"]=kod_jezyka,["kod projektu"]=kod_projektu,}; local czy_blad_nazwa_przestrzeni_nazw; if(czy_biezaca)then czy_blad_nazwa_przestrzeni_nazw=nazwy_modul.Np{nazwa=nazwa_przestrzeni_nazw,["kanoniczna"]="tak",["nazwij projektem"]="tak",["nazwij dyskusją projektu"]="tak",["istnieje"]="tak",["wynik błędu nietekstowy"]="tak",}; else czy_blad_nazwa_przestrzeni_nazw=nazwy_modul.NpDane{nazwa=nazwa_przestrzeni_nazw,["kanoniczna"]="tak",["nazwij projektem"]="tak",["nazwij dyskusją projektu"]="tak",["kod języka"]=kod_jezyka,["kod projektu"]=kod_projektu,["istnieje"]="tak",["wynik błędu nietekstowy"]="tak",}; end; if(not czy_blad_nazwa_przestrzeni_nazw)then if((i==0)or ((i>0)and pudelko_pomocne_modul.Nazwa_przestrzeni_nazw_dodatkowe(frame,i)))then if(czy_ze_szczegolami)then table.insert(lancuch_bledow,(i==0) and "<li>Wartość, nazwy przestrzeni nazw, dla korzystanej jednostki jest nieprawidłowa.</li>" or "<li>Wartość, nazwy przestrzeni nazw, dla zmiennych o numerze "..i.." jest nieprawidłowa.</li>" ); if(zkategoria)then parametry_modul.DodajElementDoZbioru(tablica_lancuch_kategorii_bledow,"{{pierwszy człon kategorii błędu}} - nieprawidłowa nazwa przestrzeni nazw"); end; else return "tak"; end; end; end; if(nazwa_jednostki=="")then if(czy_ze_szczegolami)then table.insert(lancuch_bledow,(i==0) and"<li>Wartość, nazwy jednostki, dla korzystanej jednostki jest pusta.</li>" or"<li>Wartość, nazwy jednostki, dla zmiennych o numerze "..i.." jest pusta.</li>" ); if(zkategoria)then parametry_modul.DodajElementDoZbioru(tablica_lancuch_kategorii_bledow,"{{pierwszy człon kategorii błędu}} - pusta nazwa jednostki"); end; else return "tak"; end; end; local mo,norm_przed_lub_dyskusji; local nieprawidlowa_niepusta_pelna_nazwa_jednostki=false; if(czy_blad_nazwa_przestrzeni_nazw)then if(nazwa_jednostki~="")then nieprawidlowa_niepusta_pelna_nazwa_jednostki=pudelko_modul.CzyNiepoprawnaNazwa(((parametry_modul.CzyTak(czy_blad_nazwa_przestrzeni_nazw))and czy_blad_nazwa_przestrzeni_nazw..":" or "")..nazwa_jednostki); mo=(not nieprawidlowa_niepusta_pelna_nazwa_jednostki)and pudelko_pomocne_modul.Typ_jednostki(frame, kod_liczbowy_przestrzeni_nazw,i) or nil; end; norm_przed_lub_dyskusji=pudelko_pomocne_modul.Normalna_przedmiotowa_lub_dyskusji_nazwa_przestrzeni_nazw(czy_blad_nazwa_przestrzeni_nazw, kod_liczbowy_przestrzeni_nazw) or nil; end; if((czy_blad_nazwa_przestrzeni_nazw)and(nazwa_jednostki~=""))then if((i==0)or ((i>0)and pudelko_pomocne_modul.Nazwa_przestrzeni_nazw_dodatkowe(frame,i)))then local obslugiwane=czy_blad_nazwa_przestrzeni_nazw and pudelko_pomocne_modul.Czy_przestrzen_nazw_jest_obslugiwana(frame,czy_blad_nazwa_przestrzeni_nazw,kod_jezyka,kod_projektu); if((not obslugiwane)and((not mo)or(not(((czy_blad_nazwa_przestrzeni_nazw=="Project")and(brudnopis_wikibooks and(((mo=="jednostka brudnopisu projektu")or(mo=="strona brudnopisu projektu")or(mo=="podręcznik brudnopisu projektu")or(mo=="artykuł brudnopisu projektu"))or(parametry_modul.CzyTak(nazwa_jednostki)and(mw.ustring.match(nazwa_jednostki,"^[Bb]rudnopis/.*")))))) or((czy_blad_nazwa_przestrzeni_nazw=="Template")and(parametry_modul.CzyTak(brudnopis_szablon) and(((mo=="strona brudnopisu szablonu")or(mo=="strona brudnopisu opisu szablonu"))or(parametry_modul.CzyTak(nazwa_jednostki)and(mw.ustring.match(nazwa_jednostki,"^[Bb]rudnopis/.*")))))) or((czy_blad_nazwa_przestrzeni_nazw=="Module")and(parametry_modul.CzyTak(brudnopis_modul) and(((mo=="strona brudnopisu modułu")or(mo=="strona brudnopisu opisu modułu"))or(parametry_modul.CzyTak(nazwa_jednostki)and(mw.ustring.match(nazwa_jednostki,"^[Bb]rudnopis/.*"))))))))) )then if(czy_ze_szczegolami)then table.insert(lancuch_bledow, (i==0)and"<li>Szablon wartości, nazwy przestrzeni nazw, dla korzystanej jednostki nie obsługuje.</li>" or"<li>Szablon wartości, nazwy przestrzeni nazw, dla zmiennych o numerze "..i.." nie obsługuje.</li>" ); if(zkategoria)then parametry_modul.DodajElementDoZbioru(tablica_lancuch_kategorii_bledow,"{{pierwszy człon kategorii błędu}} - nieobsługiwana przestrzeń nazw"); end; else return "tak"; end; end; end; end; --local nieprawidlowa_niepusta_pelna_nazwa_jednostki=false; if(czy_blad_nazwa_przestrzeni_nazw and nazwa_jednostki~="")then if(nieprawidlowa_niepusta_pelna_nazwa_jednostki)then if(czy_ze_szczegolami)then table.insert(lancuch_bledow, (i==0)and"<li>Wartość, nazwy jednostki, dla korzystanej jednostki jest nieprawidłowa.</li>" or"<li>Wartość, nazwy jednostki, dla zmiennych o numerze "..i.." jest nieprawidłowa.</li>" ); if(zkategoria)then parametry_modul.DodajElementDoZbioru(tablica_lancuch_kategorii_bledow,"{{pierwszy człon kategorii błędu}} - nieprawidłowa nazwa jednostki"); end; else return "tak"; end; end; end; if(czy_blad_nazwa_przestrzeni_nazw)and(nazwa_jednostki~="")then if((not nieprawidlowa_niepusta_pelna_nazwa_jednostki)and((czy_blad_nazwa_przestrzeni_nazw=="")and(nazwa_jednostki~="")))then local nazwy_modul=require("Module:Nazwy"); local nowa_nazwa_przestrzeni_nazw=nazwy_modul["NAZWAPRZESTRZENI"]{nazwa=nazwa_jednostki,["kod języka"]=kod_jezyka,["kod projektu"]=kod_projektu,}; if(nowa_nazwa_przestrzeni_nazw~="")then if(czy_ze_szczegolami)then table.insert(lancuch_bledow, (i==0)and"<li>Zmienna <code>nazwa jednostki</code> zawiera w sobie przestrzeń.</li>" or"<li>Zmienna nienazwana "..i.." zawiera w sobie przestrzeń.</li>" ); if(zkategoria)then parametry_modul.DodajElementDoZbioru(tablica_lancuch_kategorii_bledow,"{{pierwszy człon kategorii błędu}} - nazwa jednostki zawierająca w sobie przestrzeń"); end; else return "tak"; end; end; end; end; if((obslugiwane1)and(mo)and(mo=="strona szablonu")and((nieobslugiwane_strony_szablonow)or (nieobslugiwane_strony_jednostek_programowych)))then if(czy_ze_szczegolami)then table.insert(lancuch_bledow, (i==0)and"<li>Strona szablonu jest nieobsługiwana.</li>" or"<li>Strona szablonu wskazującego na zmienną "..i.." jest nieobsługiwana.</li>" ); if(zkategoria)then parametry_modul.DodajElementDoZbioru(tablica_lancuch_kategorii_bledow,"{{pierwszy człon kategorii błędu}} - nieobsługiwana strona szablonu"); end; else return "tak"; end; end; if((obslugiwane1)and(mo)and(mo=="strona opisu szablonu")and((nieobslugiwane_strony_opisu_szablonow)or (nieobslugiwane_strony_opisu_jednostek_programowych)))then if(czy_ze_szczegolami)then table.insert(lancuch_bledow, (i==0)and"<li>Strona opisu szablonu jest nieobsługiwana.</li>" or"<li>Strona opisu szablonu wskazującego na zmienną "..i.." jest nieobsługiwana.</li>" ); if(zkategoria)then parametry_modul.DodajElementDoZbioru(tablica_lancuch_kategorii_bledow,"{{pierwszy człon kategorii błędu}} - nieobsługiwana strona opisu szablonu"); end; else return "tak"; end; end; if((obslugiwane2)and(mo)and(mo=="strona modułu")and((nieobslugiwane_strony_modulow)or (nieobslugiwane_strony_jednostek_programowych)))then if(czy_ze_szczegolami)then table.insert(lancuch_bledow, (i==0)and"<li>Strona modułu jest nieobsługiwana.</li>" or"<li>Strona modułu wskazującego na zmienną "..i.." jest nieobsługiwana.</li>" ); if(zkategoria)then parametry_modul.DodajElementDoZbioru(tablica_lancuch_kategorii_bledow,"{{pierwszy człon kategorii błędu}} - nieobsługiwana strona modułu"); end; else return "tak"; end; end; if((obslugiwane2)and(mo)and(mo=="strona opisu modułu")and((nieobslugiwane_strony_opisu_modulow)or (nieobslugiwane_strony_opisu_jednostek_programowych)))then if(czy_ze_szczegolami)then table.insert(lancuch_bledow, (i==0)and"<li>Strona opisu modułu jest nieobsługiwana.</li>" or"<li>Strona opisu modułu wskazującego na zmienną "..i.." jest nieobsługiwana.</li>" ); if(zkategoria)then parametry_modul.DodajElementDoZbioru(tablica_lancuch_kategorii_bledow,"{{pierwszy człon kategorii błędu}} - nieobsługiwana strona opisu modułu"); end; else return "tak"; end; end; if((mo)and(mo=="strona brudnopisu szablonu")and((nieobslugiwane_strony_brudnopisu_szablonow)or (nieobslugiwane_strony_jednostek_programowych)))then if(czy_ze_szczegolami)then table.insert(lancuch_bledow, (i==0)and"<li>Strona brudnopisu szablonu jest nieobsługiwana.</li>" or"<li>Strona brudnopisu szablonu wskazującego na zmienną "..i.." jest nieobsługiwana.</li>" ); if(zkategoria)then parametry_modul.DodajElementDoZbioru(tablica_lancuch_kategorii_bledow,"{{pierwszy człon kategorii błędu}} - nieobsługiwana strona brudnopisu szablonu"); end; else return "tak"; end; end; if((mo)and(mo=="strona brudnopisu opisu szablonu")and((nieobslugiwane_strony_brudnopisu_opisu_szablonow)or (nieobslugiwane_strony_opisu_jednostek_programowych)))then if(czy_ze_szczegolami)then table.insert(lancuch_bledow, (i==0)and"<li>Strona brudnopisu opisu szablonu jest nieobsługiwana.</li>" or"<li>Strona brudnopisu opisu szablonu wskazującego na zmienną "..i.." jest nieobsługiwana.</li>" ); if(zkategoria)then parametry_modul.DodajElementDoZbioru(tablica_lancuch_kategorii_bledow,"{{pierwszy człon kategorii błędu}} - nieobsługiwana strona brudnopisu opisu szablonu"); end; else return "tak"; end; end; if((mo)and(mo=="strona brudnopisu modułu")and((nieobslugiwane_strony_brudnopisu_modulow)or (nieobslugiwane_strony_jednostek_programowych)))then if(czy_ze_szczegolami)then table.insert(lancuch_bledow, (i==0)and"<li>Strona brudnopisu modulu jest nieobsługiwana.</li>" or"<li>Strona brudnopisu modułu wskazującego na zmienną "..i.." jest nieobsługiwana.</li>" ); if(zkategoria)then parametry_modul.DodajElementDoZbioru(tablica_lancuch_kategorii_bledow,"{{pierwszy człon kategorii błędu}} - nieobsługiwana strona brudnopisu modułu"); end; else return "tak"; end; end; if((mo)and(mo=="strona brudnopisu opisu modułu")and((nieobslugiwane_strony_brudnopisu_opisu_modulow)or (nieobslugiwane_strony_opisu_jednostek_programowych)))then if(czy_ze_szczegolami)then table.insert(lancuch_bledow, (i==0)and"<li>Strona brudnopisu opisu modułu jest nieobsługiwana.</li>" or"<li>Strona brudnopisu opisu modułu wskazującego na zmienną "..i.." jest nieobsługiwana.</li>" ); if(zkategoria)then parametry_modul.DodajElementDoZbioru(tablica_lancuch_kategorii_bledow,"{{pierwszy człon kategorii błędu}} - nieobsługiwana strona brudnopisu opisu modułu"); end; else return "tak"; end; end; if(((i>0)and(frame.args["strona główna projektu "..i] or pf.args["strona główna projektu "..i])) or ((i==0)and(frame.args["strona główna projektu"] or pf.args["strona główna projektu"])))then local projekt=pudelko_pomocne_modul.Nazwa_strony_bazowej_projektu_ze_zmiennej(frame,i,kod_jezyka,kod_projektu); local nazwa_strony_glownej_projektu_z_wikidanych=pudelko_pomocne_modul.Nazwa_strony_bazowej_projektu_z_wikidanych(kod_jezyka,kod_projektu); projekt=(not projekt)and nazwa_strony_glownej_projektu_z_wikidanych or projekt; local dowolna_nazwa_strony_glownej_projektu=parametry_modul.CzyTak(frame.args["dowolna nazwa strony głównej projektu"]); if(projekt)then if(projekt=="")then if(czy_ze_szczegolami)then table.insert(lancuch_bledow, (i==0)and"<li>Wartość nazwy, strony głównej projektu, dla zmiennej <code>strona główna projektu</code> jest pusta.</li>" or "<li>Wartość nazwy, strony głównej projektu, dla zmiennej <code>strona główna projektu .."..i.."</code> jest pusta.</li>" ); if(zkategoria)then parametry_modul.DodajElementDoZbioru(tablica_lancuch_kategorii_bledow,"{{pierwszy człon kategorii błędu}} - pusta nazwa strony głównej projektu"); end; else return "tak"; end; elseif((not dowolna_nazwa_strony_glownej_projektu)and(not mw.ustring.match(projekt,"^[^/]+$")))then if(czy_ze_szczegolami)then table.insert(lancuch_bledow, (i==0)and"<li>Wartość nazwy, strony głównej projektu, dla zmiennej <code>strona główna projektu</code> zawiera prawe ukośniki.</li>" or "<li>Wartość nazwy, strony głównej projektu, dla zmiennej <code>strona główna projektu "..i.."</code> zawiera prawe ukośniki</li>" ); if(zkategoria)then parametry_modul.DodajElementDoZbioru(tablica_lancuch_kategorii_bledow,"{{pierwszy człon kategorii błędu}} - nieprawidłowa nazwa strony głównej projektu"); end; else return "tak"; end; elseif(pudelko_modul.CzyNiepoprawnaNazwa(projekt))then if(czy_ze_szczegolami)then table.insert(lancuch_bledow, (i==0)and"<li>Wartość nazwy, strony głównej projektu, w zmiennej <code>strona główna projektu</code> ma nazwę niepustą nieprawidłową.</li>" or "<li>Wartość nazwy, strony głównej projektu, w zmiennej <code>strona główna projektu "..i.."</code> ma nazwę niepustą nieprawidłową.</li>" ); if(zkategoria)then parametry_modul.DodajElementDoZbioru(tablica_lancuch_kategorii_bledow,"{{pierwszy człon kategorii błędu}} - nieprawidłowa nazwa strony głównej projektu"); end; else return "tak"; end; end; end; end; local typ=frame.args["typ jednostki"..((i)and((i~=0))and (" "..i) or "")] or pf.args["typ jednostki"..((i)and((i~=0))and (" "..i) or "")]; if((czy_blad_nazwa_przestrzeni_nazw)and(nazwa_jednostki~="")and(not nieprawidlowa_niepusta_pelna_nazwa_jednostki))then if(nieobslugiwana_strona_glowna_projektu)then if(mo=="strona główna projektu")then if(czy_ze_szczegolami)then if(typ~="strona główna projektu")then table.insert(lancuch_bledow, (i==0)and"<li>Wstawiono szablon na stronę główną projektu.</li>" or ((frame.args["strona główna projektu "..i] or pf.args["strona główna projektu "..i])and"<li>Szablon, wskazuje na stronę główna projektu, według zmiennej <code>strona główna projektu "..i.."</code>, dla zmiennych o numerze "..i..".</li>" or"<li>Szablon, wskazuje na stronę główną projektu, dla zmiennych o numerze "..i..".</li>" )); else table.insert(lancuch_bledow,(i==0)and "<li>Wstawiono szablon, na stronę, z ustawioną wartością <code>typ jednostki = strona główna projektu</code>.</li>" or"<li>Wstawiono szablon, na stronę, z ustawioną wartością <code>typ jednostki "..i.." = strona główna projektu</code>.</li>" ); end; if(zkategoria)then parametry_modul.DodajElementDoZbioru(tablica_lancuch_kategorii_bledow,"{{pierwszy człon kategorii błędu}} - nieobsługiwana strona główna projektu"); end; else return "tak"; end; end; end; end; if(kod_projektu==require("Module:Pudełko")["Kod projektu tego projektu"]())then if(((i>0)and(frame.args["strona główna dla dzieci "..i] or pf.args["strona główna dla dzieci "..i])) or ((i==0)and(frame.args["strona główna dla dzieci"] or pf.args["strona główna dla dzieci"])))then local junior=pudelko_pomocne_modul.Nazwa_strony_bazowej_dla_dzieci_ze_zmiennej(frame,i,kod_jezyka,kod_projektu); local nazwa_strony_glownej_wikijuniora_z_wikidanych=pudelko_pomocne_modul.Nazwa_strony_bazowej_dla_dzieci_z_wikidanych(kod_jezyka) junior=(not junior)and nazwa_strony_glownej_wikijuniora_z_wikidanych or junior; local dowolna_nazwa_strony_glownej_wikijuniora=parametry_modul.CzyTak(frame.args["dowolna nazwa strony głównej dla dzieci"]); if(junior)then if(junior=="")then if(czy_ze_szczegolami)then table.insert(lancuch_bledow, (i==0)and"<li>Wartość nazwy, strony głównej dla dzieci, w zmiennej <code>strona główna dla dzieci</code> jest pusta.</li>" or "<li>Wartość nazwy, strony głównej dla dzieci, w zmiennej <code>strona główna dla dzieci .."..i.."</code> jest pusta.</li>" ); if(zkategoria)then parametry_modul.DodajElementDoZbioru(tablica_lancuch_kategorii_bledow,"{{pierwszy człon kategorii błędu}} - pusta nazwa strony głównej dla dzieci"); end; else return "tak"; end; elseif((not dowolna_nazwa_strony_glownej_wikijuniora)and(not mw.ustring.match(junior,"^[^/]+$")))then if(czy_ze_szczegolami)then table.insert(lancuch_bledow, (i==0)and"<li>Wartość nazwy, strony głównej dla dzieci, w zmiennej <code>strona główna dla dzieci</code> zawiera prawe ukośniki.</li>" or"<li>Wartość nazwy, strony głównej dla dzieci, w zmiennej <code>strona główna dla dzieci "..i.."</code> zawiera prawe ukośniki.</li>" ); if(zkategoria)then parametry_modul.DodajElementDoZbioru(tablica_lancuch_kategorii_bledow,"{{pierwszy człon kategorii błędu}} - nieprawidłowa nazwa strony głównej dla dzieci"); end; else return "tak"; end; elseif(pudelko_modul.CzyNiepoprawnaNazwa(junior))then if(czy_ze_szczegolami)then table.insert(lancuch_bledow, (i==0)and"<li>Wartość nazwy, strony głównej dla dzieci, w zmiennej <code>strona główna dla dzieci</code> ma nazwę niepustą nieprawidłową.</li>" or"<li>Wartość nazwy, strony głównej dla dzieci, w zmiennej <code>strona główna dla dzieci "..i.."</code> ma nazwę niepustą nieprawidłową.</li>" ); if(zkategoria)then parametry_modul.DodajElementDoZbioru(tablica_lancuch_kategorii_bledow,"{{pierwszy człon kategorii błędu}} - nieprawidłowa nazwa strony głównej dla dzieci"); end; else return "tak"; end; end; end; end; if((czy_blad_nazwa_przestrzeni_nazw)and(nazwa_jednostki~="")and(not nieprawidlowa_niepusta_pelna_nazwa_jednostki))then if(nieobslugiwana_strona_glowna_dla_dzieci)then if(mo=="strona główna dla dzieci")then if(czy_ze_szczegolami)then if(typ~="strona główna dla dzieci")then table.insert(lancuch_bledow, (i==0)and"<li>Wstawiono szablon na stronę główną dla dzieci.</li>" or ((frame.args["strona główna dla dzieci "..i] or pf.args["strona główna dla dzieci "..i])and"<li>Szablon, wskazuje na stronę główną dla dzieci, według zmiennej <code>strona główna dla dzieci .."..i..", dla zmiennych o numerze "..i..".</code>.</li>" or"<li>Szablon, wskazuje na stronę główną dla dzieci, dla zmiennych o numerze "..i..".</li>" )); else table.insert(lancuch_bledow,(i==0)and "<li>Wstawiono szablon, na stronę, z ustawioną wartością <code>typ jednostki = strona główna dla dzieci</code>.</li>" or"<li>Wstawiono szablon, na stronę, z ustawioną wartością <code>typ jednostki "..i.." = strona główna dla dzieci</code>.</li>" ); end if(zkategoria)then parametry_modul.DodajElementDoZbioru(tablica_lancuch_kategorii_bledow,"{{pierwszy człon kategorii błędu}} - nieobsługiwana strona główna dla dzieci"); end; else return "tak"; end; end; end; end; end; local obslugiwane3=(czy_blad_nazwa_przestrzeni_nazw)and((norm_przed_lub_dyskusji=="User") and pudelko_pomocne_modul.Czy_przestrzen_nazw_jest_obslugiwana(frame,"User",kod_jezyka,kod_projektu)); if((czy_blad_nazwa_przestrzeni_nazw)and(nazwa_jednostki~="")and(not nieprawidlowa_niepusta_pelna_nazwa_jednostki)and(obslugiwane3))then if(nieobslugiwana_strony_glowne_uzytkownikow)then if(mo=="strona główna użytkownika")then if(czy_ze_szczegolami)then table.insert(lancuch_bledow, (i==0)and "<li>Wstawiono szablon na stronę główną użytkownika.</li>" or"<li>Szablon, wskazuje na stronę główną użytkownika, dla zmiennych o numerze "..i..".</li>" ); if(zkategoria)then parametry_modul.DodajElementDoZbioru(tablica_lancuch_kategorii_bledow,"{{pierwszy człon kategorii błędu}} - nieobsługiwana strona główna użytkownika"); end; else return "tak"; end; elseif((mo~="jednostka użytkownika")and(mo~="podręcznik użytkownika")and(mo~="artykuł użytkownika")and(mo~="strona główna użytkownika")and((mo~="strona użytkownika")or(w_user_jako_strony_uzykownika)))then if(czy_ze_szczegolami)then if(mw.ustring.match(nazwa_jednostki,"^[^/]+$"))then table.insert(lancuch_bledow, (i==0)and "<li>Wstawiono szablon na stronę główną użytkownika.</li>" or"<li>Szablon, wskazuje na stronę główną użytkownika, dla zmiennych o numerze "..i..".</li>" ); if(zkategoria)then parametry_modul.DodajElementDoZbioru(tablica_lancuch_kategorii_bledow,"{{pierwszy człon kategorii błędu}} - nieobsługiwana strona główna użytkownika"); end; end; else return "tak"; end; end; end; end; if((not nieprawidlowa_niepusta_pelna_nazwa_jednostki) and((not wylocz_niezaleznosc_od_nazwij_jednostka)or(not nazwij_jednostka)) and(((i>0)and((frame.args["typ jednostki "..i])or(pf.args["typ jednostki "..i])or(pf.args["typ jednostki"]))) or ((i==0)and((frame.args["typ jednostki"])or (pf.args["typ jednostki"])))) )then local typ_i=(i>0)and((frame.args["typ jednostki "..i])or(pf.args["typ jednostki "..i])) or nil; if(mo=="(błąd typu jednostki)")then if(czy_ze_szczegolami)then table.insert(lancuch_bledow, (i==0)and"<li>Podana wartość zmiennej <code>typ jednostki</code> jest nieprawidłowa.</li>" or (typ_i and "<li>Podana wartość zmiennej <code>typ jednostki "..i.."</code> jest nieprawidłowa.</li>" or "<li>Podana wartość zmiennej <code>typ jednostki</code> dla zmiennych o numerze "..i.." jest nieprawidłowa.</li>") ); if(zkategoria)then parametry_modul.DodajElementDoZbioru(tablica_lancuch_kategorii_bledow,"{{pierwszy człon kategorii błędu}} - nieprawidłowa wartość typu jednostki"); end; else return "tak"; end; elseif(mo=="(błąd niezgodności)")then if(czy_ze_szczegolami)then table.insert(lancuch_bledow, (i==0)and"<li>Podana wartość zmiennej <code>typ jednostki</code> jest niezgodna z podaną zmienną: <code>nazwą przestrzeni nazw</code>.</li>" or (typ_i and ("<li>Podana wartość zmiennej <code>typ jednostki "..i.."</code> jest niezgodna z podaną: <code>nazwą przestrzeni nazw "..i.."</code>.</li>") or("<li>Podana wartość zmiennej <code>typ jednostki</code> dla zmiennych o numerze "..i.." jest niezgodna z podaną: <code>nazwą przestrzeni nazw "..i.."</code>.</li>")) ); if(zkategoria)then parametry_modul.DodajElementDoZbioru(tablica_lancuch_kategorii_bledow,"{{pierwszy człon kategorii błędu}} - niezgodna wartość typu jednostki"); end; else return "tak"; end; elseif(mo=="(błąd parametrów pudełkowych)")then if(czy_ze_szczegolami)then table.insert(lancuch_bledow, (i==0)and"<li>Podana wartość zmiennej <code>typ jednostki</code> jest niezgodna z podanymi parametrami pudełkowymi.</li>" or (typ_i and "<li>Podana wartość zmiennej <code>typ jednostki "..i.."</code> jest niezgodna z podanymi parametrami pudełkowymi.</li>" or "<li>Podana wartość zmiennej <code>typ jednostki</code> dla zmiennych o numerze "..i.." jest niezgodna z podanymi parametrami pudełkowymi.</li>") ); if(zkategoria)then parametry_modul.DodajElementDoZbioru(tablica_lancuch_kategorii_bledow,"{{pierwszy człon kategorii błędu}} - niezgodne parametry pudełkowe"); end; else return "tak"; end; end; end; if(not czy_ze_szczegolami)then return "";end; end; local num=frame.args["nazwy jednostki numerowane"]; if(parametry_modul.CzyTak(num))then AnalizujDane(0); local maksymalny_numer_elementu_nienazwanego=frame.args["maksymalny numer argumentu nienazwanego"]; local czy_maksymalny_numer_elementu_nienazwanego=parametry_modul.CzyTak(maksymalny_numer_elementu_nienazwanego); local num2; if(czy_maksymalny_numer_elementu_nienazwanego)then num2=tonumber(maksymalny_numer_elementu_nienazwanego) or 0; else num2=0; end; local minimum_z_numerem_dodatkowego_warunku,maksimum_z_numerem_dodatkowego_warunku=parametry_modul.MinimalnyIMaksymalnyNumerParametru(frame.args,"nazwa jednostki"); maksimum_z_numerem_dodatkowego_warunku=math.max(maksimum_z_numerem_dodatkowego_warunku,parametry_modul.MaksymalnaLiczbaParametruNienazwanegoTablicy(pf.args)); if(pf.args["cel"])then maksimum_z_numerem_dodatkowego_warunku=math.max(1,maksimum_z_numerem_dodatkowego_warunku);end; minimum_z_numerem_dodatkowego_warunku=math.min(minimum_z_numerem_dodatkowego_warunku,parametry_modul.MinimalnaLiczbaParametruNienazwanegoTablicy(pf.args)); if(pf.args["cel"])then minimum_z_numerem_dodatkowego_warunku=math.min(1,minimum_z_numerem_dodatkowego_warunku);end; if(czy_maksymalny_numer_elementu_nienazwanego)then if(num2>0)then if(maksimum_z_numerem_dodatkowego_warunku>0)then if(minimum_z_numerem_dodatkowego_warunku>num2)then maksimum_z_numerem_dodatkowego_warunku=0; elseif(maksimum_z_numerem_dodatkowego_warunku>=num2)then for i=num2,1,-1 do local wartosc_parametru=(((i>1)and frame.args["nazwa jednostki "..tostring(i)])or ((i==1)and (frame.args["nazwa jednostki 1"] or frame.args["nazwa jednostki"]))or ((i==1)and(pf.args["cel"])) or pf.args[i]); if(wartosc_parametru)then maksimum_z_numerem_dodatkowego_warunku=i; break; end; end; end; end; end; end; local tabelka_braku_zmiennych={}; for i=1,maksimum_z_numerem_dodatkowego_warunku,1 do local wartosc_parametru=(((i>1)and frame.args["nazwa jednostki "..tostring(i)])or ((i==1)and (frame.args["nazwa jednostki 1"] or frame.args["nazwa jednostki"]))or ((i==1)and(pf.args["cel"])) or pf.args[i]); if(not wartosc_parametru)then if(czy_ze_szczegolami)then tabelka_braku_zmiennych[#tabelka_braku_zmiennych+1]=i; else return "tak"; end; else local wynik=AnalizujDane(i); if((not czy_ze_szczegolami)and(wynik~=""))then return wynik;end; end; end; if(czy_ze_szczegolami)then if(parametry_modul["CzySąElementyNumerowaneTablicy"](tabelka_braku_zmiennych))then local str_braku_parametru=""; for i,wartosc in ipairs(tabelka_braku_zmiennych)do str_braku_parametru=str_braku_parametru..((str_braku_parametru=="")and "" or ((tabelka_braku_zmiennych[i+1])and ", " or " i "))..wartosc; end; table.insert(lancuch_bledow,"<li>Brak parametrów o numerach: "..str_braku_parametru..", w obsługiwanym zakresie zmiennych.</li>"); if(zkategoria)then parametry_modul.DodajElementDoZbioru(tablica_lancuch_kategorii_bledow,"{{pierwszy człon kategorii błędu}} - brak parametrów"); end; end; end; else local wynik=AnalizujDane(0); if((not czy_ze_szczegolami)and(wynik~=""))then return wynik;end; end; --local lancuch_kategorii_bledow_zlaczony=table.concat(lancuch_kategorii_bledow,""); local minimum_z_numerem_dodatkowego_warunku,maksimum_z_numerem_dodatkowego_warunku=parametry_modul.MinimalnyIMaksymalnyNumerParametru(frame.args,"dodatkowy warunek"); for i=minimum_z_numerem_dodatkowego_warunku, maksimum_z_numerem_dodatkowego_warunku,1 do local wartosc_parametru=(i>1)and frame.args["dodatkowy warunek "..i] or ((i==1)and frame.args["dodatkowy warunek 1"] or frame.args["dodatkowy warunek"]); if(parametry_modul.CzyTak(wartosc_parametru))then if(czy_ze_szczegolami)then local bledy_dodatkowego_warunku=frame.args["błędy dodatkowego warunku "..i]; if(parametry_modul.CzyTak(bledy_dodatkowego_warunku))then local bledy_w_postaci_kategorii="<li>"..bledy_dodatkowego_warunku.."</li>"; table.insert(lancuch_bledow,bledy_dodatkowego_warunku); if(zkategoria)then local bledy_w_postaci_kategorii=frame.args["dodatek kategorii błędu dodatkowego warunku "..i]; if(parametry_modul.CzyTak(bledy_w_postaci_kategorii))then local bledy_w_postaci_kategorii="{{pierwszy człon kategorii błędu}} - "..bledy_w_postaci_kategorii; parametry_modul.DodajElementDoZbioru(tablica_lancuch_kategorii_bledow,bledy_w_postaci_kategorii); else parametry_modul.DodajElementDoZbioru(tablica_lancuch_kategorii_bledow,"{{pierwszy człon kategorii błędu}} - błędne wywołania"); end; end; else table.insert(lancuch_bledow,"<li>Błąd wywołania szablonu.</li>"); if(zkategoria)then local bledy_w_postaci_kategorii=frame.args["dodatek kategorii błędu dodatkowego warunku"]; if(parametry_modul.CzyTak(bledy_w_postaci_kategorii))then local bledy_w_postaci_kategorii="{{pierwszy człon kategorii błędu}} - "..bledy_w_postaci_kategorii; parametry_modul.DodajElementDoZbioru(tablica_lancuch_kategorii_bledow,bledy_w_postaci_kategorii); else parametry_modul.DodajElementDoZbioru(tablica_lancuch_kategorii_bledow,"{{pierwszy człon kategorii błędu}} - błędne wywołania"); end; end; end; else return "tak"; end; end; end; if(not czy_ze_szczegolami)then return "";end; local templates={}; --templates["{{Category}}"]="Category"; local lancuch_kategorii_bledow_zlaczony2=""; local minimum_z_numerem_dodatkowego_warunku,maksimum_z_numerem_dodatkowego_warunku=parametry_modul.MinimalnyIMaksymalnyNumerParametru(frame.args,"pierwszy człon kategorii błędu"); if(#tablica_lancuch_kategorii_bledow>0)then local wszystkie_bledy={}; --wszystkie_bledy[1]="Szablon"; for i=minimum_z_numerem_dodatkowego_warunku,maksimum_z_numerem_dodatkowego_warunku,1 do local pierwszy_czlon_kategorii_bledow=(i>1)and frame.args["pierwszy człon kategorii błędu "..i] or (frame.args["pierwszy człon kategorii błędu "..1] or frame.args["pierwszy człon kategorii błędu"] ); templates["{{pierwszy człon kategorii błędu}}"]=pierwszy_czlon_kategorii_bledow; for _,kategoria in ipairs(tablica_lancuch_kategorii_bledow) do parametry_modul.DodajElementDoZbioru(wszystkie_bledy,mw.ustring.gsub(kategoria,"{{[%w%s]+}}",templates)); end; end; --lancuch_kategorii_bledow_zlaczony2=string.gsub(lancuch_kategorii_bledow_zlaczony2,"%[%[Category:","{{#invoke:Ramka|Szablon|parametry funkcji modułu pudełek=tak|Nazwa=Kategoria|"); --lancuch_kategorii_bledow_zlaczony2=string.gsub(lancuch_kategorii_bledow_zlaczony2,"%]%]","}}"); wszystkie_bledy["parametry podstawowe funkcji modułu pudełek"]="tak"; wszystkie_bledy["Nazwa"]="Kategorie"; local frame2=frame:getParent():newChild{title="#invoke:Ramka",args=wszystkie_bledy,}; local ramka_modul=require("Module:Ramka"); lancuch_kategorii_bledow_zlaczony2=ramka_modul["Szablon"](frame2); end; local lancuch=table.concat(lancuch_bledow,"")..lancuch_kategorii_bledow_zlaczony2; if(lancuch~="")then lancuch="<ul>"..lancuch.."</ul>";end; return lancuch; end; function p.Cecha_kontenerowa_szablonowa(frame,__funkcja) local parametry_modul=require("Module:Parametry"); local parametry_pudelka=frame:getParent().args["parametry pudełka"] if(parametry_modul.CzyTak(parametry_pudelka))then return require("Module:Pudełko/ParametryCechy")["Parametry ogólnego pudełka"](frame,__funkcja); end; local funkcja=frame.args["funkcja cechowania"]; if(not parametry_modul.CzyTak(funkcja))then funkcja=__funkcja;end; local modul=frame.args["moduł"]; if(not parametry_modul.CzyTak(modul))then modul="Pudełko";end; local cecha=require("Module:"..modul)[funkcja](frame); return cecha; end; function p.Generalny_kontener_szablonowy(frame) local pf=frame.getParent and frame:getParent() or {args={}}; local parametry_modul=require("Module:Parametry"); local parametry_pudelka=pf.args["parametry pudełka"] if(parametry_modul.CzyTak(parametry_pudelka))then return frame.args["cecha"] or ""; end; local alternatywny_szablon=frame.args["alternatywny szablon"]; if(parametry_modul.CzyTak(alternatywny_szablon))then return alternatywny_szablon; end local cecha; local bez_bledu=parametry_modul.CzyTak(frame.args["bez błędu"] or pf.args["bez błędu"]); local czy_ogolne_pudelko; if(not bez_bledu)then cecha=frame.args["cecha"] or ""; czy_ogolne_pudelko=(cecha=="");else czy_ogolne_pudelko=true;end; if(czy_ogolne_pudelko)then local warunek_niealternatywnego_wywolania=frame.args["warunek niealternatywnego wywołania"]; if((warunek_niealternatywnego_wywolania)and(warunek_niealternatywnego_wywolania==""))then local alternatywne_wywolanie=frame.args["alternatywne wywołanie"]; if(alternatywne_wywolanie)then return alternatywne_wywolanie; end; end; end; local szablon=frame.args["szablon"]; local pudelko;local grafika;local grafika_prawo;local typ;local ponizej;local styl_tekstu;local styl_ponizej; local nazwa_przestrzeni_nazw=frame.args["nazwa przestrzeni nazw"]; local komunikat=frame.args["własny komunikat"]; local szablon2=(parametry_modul.CzyTak(szablon)) and szablon or require("Module:Nazwy")["NAZWASTRONY"](pf:getTitle()); local czy_komunikat=parametry_modul.CzyTak(komunikat); local funkcja_komunikatu; local wynik_komunikatu; local tekst; local klasa;local styl; if(czy_komunikat)then local modul=frame.args["moduł"]; if(not parametry_modul.CzyTak(modul))then modul="Pudełko";end; funkcja_komunikatu=require("Module:"..modul)[komunikat]; if(funkcja_komunikatu)then wynik_komunikatu=funkcja_komunikatu(frame); end; end; if(czy_ogolne_pudelko)then local wybor=frame.args["wybór"]; local czy_wybor=parametry_modul.CzyTak(wybor); pudelko=(czy_wybor and frame.args["nazwa "..wybor] or frame.args["nazwa"]) or "mbox"; grafika=czy_wybor and frame.args["grafika "..wybor] or frame.args["grafika"]; grafika_prawo=czy_wybor and frame.args["grafika prawo "..wybor] or frame.args["grafika prawo"]; typ=czy_wybor and frame.args["typ "..wybor] or frame.args["typ"]; typ=parametry_modul.CzyTak(typ) and typ or "zawartość"; tekst=czy_wybor and (frame.args["tekst "..wybor] or frame.args["treść "..wybor]) or (frame.args["tekst"] or frame.args["treść"]) or ""; local parametry=czy_wybor and frame.args["parametry "..wybor] or frame.args["parametry"] or ""; klasa=czy_wybor and frame.args["klasa "..wybor] or frame.args["klasa"]; styl=czy_wybor and frame.args["styl "..wybor] or frame.args["styl"]; styl_tekstu=czy_wybor and frame.args["styl tekstu "..wybor] or frame.args["styl tekstu"]; styl_ponizej=czy_wybor and frame.args["styl poniżej "..wybor] or frame.args["styl poniżej"]; local kategorie=czy_wybor and frame.args["kategorie "..wybor] or frame.args["kategorie"] or ""; ponizej=czy_wybor and frame.args["poniżej "..wybor] or frame.args["poniżej"]; tekst=tekst..parametry..kategorie; else pudelko="ombox"; grafika="poważny"; typ="poważny"; local czy_ze_szczegolami=not parametry_modul.CzyTak(frame.args["bez szczegółów"] or pf.args["bez szczegółów"]); if(czy_ze_szczegolami)then tekst="'''Szablon ".."{{[[Template:"..szablon2.."|"..szablon2.."]]}} zgłosił następujące błędy:'''"..cecha; else tekst="Szablon '''".."{{[[Template:"..szablon2.."|"..szablon2.."]]}}''' jest w stanie błędu, popraw parametry szablonu!"; end; end; local argumenty={ ["klasa"]=klasa, ["styl"]=styl, ["nazwa przestrzeni nazw"]=nazwa_przestrzeni_nazw, ["typ"]=typ, ["grafika"]=grafika, ["grafika prawo"]=grafika_prawo, ["styl tekstu"]=styl_tekstu, ["tekst"]=(czy_komunikat) and ((funkcja_komunikatu)and wynik_komunikatu or tekst)or tekst, ["poniżej"]=ponizej, ["styl poniżej"]=styl_ponizej, }; return pf:expandTemplate{title=pudelko,args=argumenty}; end; return p; 5xoxjo3vjaqztgydufvpo9rjqxaufio Wikipedysta:YxiCode 2 61593 540381 535293 2026-04-23T13:17:52Z YxiCode 34510 540381 wikitext text/x-wiki {{Multiuserbox |pl-N |en-4 |de-1 |m |{{Staż|dzień=26|miesiąc=09|rok=2025}} }} Witam. Pochodzę z Żagania i jestem uczniem szkoły podstawowej. Jestem twórcą ''[[Matematyka dla ostatnich klas szkoły podstawowej|Matematyki dla ostatnich klas szkoły podstawowej]]'' (Trzeba pomóc kolegom, nie?) Nowe zmiany są tam mile widziane. :) Jeżeli masz jakieś pytania, proszę do mnie napisać na dyskusji. '''14 III 2026''' - Rzadziej tu zaglądam ze względu na to, że mam dość dużo nauki w szkole (7 kartkówek i sprawdzianów O_O). Ale jak mam czas to coś napiszę. '''23 IV 2026''' - To samo co wcześniej. Ciągle muszę się czegoś uczyć. Po poniedziałku mam nadzieję że będę miał czas. 8bftjqvzrg886ajgifbvqrmqh6h89cy 540382 540381 2026-04-23T13:18:06Z YxiCode 34510 540382 wikitext text/x-wiki {{Multiuserbox |pl-N |en-4 |de-1 |m |{{Staż|dzień=26|miesiąc=09|rok=2025}} }} Witam. Pochodzę z Żagania i jestem uczniem szkoły podstawowej. Jestem twórcą ''[[Matematyka dla ostatnich klas szkoły podstawowej|Matematyki dla ostatnich klas szkoły podstawowej]]'' Nowe zmiany są tam mile widziane. :) Jeżeli masz jakieś pytania, proszę do mnie napisać na dyskusji. '''14 III 2026''' - Rzadziej tu zaglądam ze względu na to, że mam dość dużo nauki w szkole (7 kartkówek i sprawdzianów O_O). Ale jak mam czas to coś napiszę. '''23 IV 2026''' - To samo co wcześniej. Ciągle muszę się czegoś uczyć. Po poniedziałku mam nadzieję że będę miał czas. o8dk03eaa8gcn4ut75qtf1jnhfji4qp Wikipedysta:Persino/brudnopis11 2 62939 540400 539990 2026-04-23T16:14:55Z Persino 2851 540400 wikitext text/x-wiki {{Nowiki|{{Link wewnętrzny|strona=Pomoc:Spis treści|uri=tak}}}} ---- {{Nowiki|{{WydobądźLinki|{{lg|Pomoc%3ASpis%20tre%C5%9Bci|uri=tak}}}}}} ---- {{lg|Pomoc%3ASpis%20tre%C5%9Bci|uri=tak}} ---- {{WydobądźLinki|{{lg|Pomoc%3ASpis%20tre%C5%9Bci|uri=tak}}}} {{PobierzNumerArtykułu|Muzyka|dane=3|poziomowo=tak|nagłówek=tak|bez automatu=|nazwa przestrzeni nazw=(main)|nazwa jednostki=Estoński/Muzyka}} --- {{Nowiki|{{Kategoria|Szablony, tworzące linki, do sprawdzenia|nazwa jednostki=Szablony edycji - błędy wywołań}}}} {{Nowiki|{{Kategoria|Szablony, tworzące linki, do sprawdzenia|nazwa jednostki=Strony ze złymi uchwytami do obiektów}}}} ---- {{Nowiki|{{Kategoria|Szablony, tworzące linki, do sprawdzenia|nazwa jednostki=Brak licencji, na stronach głównych, publikacji}}}} {{Nowiki|{{Kategoria|Szablony, tworzące linki, do sprawdzenia|nazwa jednostki=Brakujące spisy treści, dołączonych do stron, stron w innych książkach}}}} {{Nowiki|{{Kategoria|Szablony, tworzące linki, do sprawdzenia|nazwa jednostki=Strony z dołączonymi innymi stronami, w książkach, z obiektami ze złymi uchwytami}}}} {{Nowiki|{{Kategoria|Szablony, tworzące linki, do sprawdzenia|nazwa jednostki=Strony z wypowiedzeniami ze złymi uchwytami}}}} {{Nowiki|{{Kategoria|Szablony, tworzące linki, do sprawdzenia|nazwa jednostki=Strony ze złymi uchwytami do nagłówków}}}} {{Nowiki|{{Kategoria|Szablony, tworzące linki, do sprawdzenia|nazwa jednostki=Artykusły2 dla dzieci2, ze złymi uchwytami do nagłówków}}}} {{sr|#m["PEŁNANAZWAKSIĄŻKI"]()|p=Nazwy - Tom IV}} {{Nowiki|{{lpg|Stołeczne Terytorium Islamabadu|a=}}}} {{Nowiki|{{lpg|Stołeczne Terytorium Islamabadu|a=tak}}}} ---- {{#invoke:Pudełko|Dyskusyjny typ jednostki 2|nazwa przestrzeni nazw=Szablon}} fne0zoy96tgsd5ydd64uzmjyqj94s9h 540402 540400 2026-04-23T16:31:36Z Persino 2851 540402 wikitext text/x-wiki {{Nowiki|{{Link wewnętrzny|strona=Pomoc:Spis treści|uri=tak}}}} ---- {{Nowiki|{{WydobądźLinki|{{lg|Pomoc%3ASpis%20tre%C5%9Bci|uri=tak}}}}}} ---- {{lg|Pomoc%3ASpis%20tre%C5%9Bci|uri=tak}} ---- {{WydobądźLinki|{{lg|Pomoc%3ASpis%20tre%C5%9Bci|uri=tak}}}} {{PobierzNumerArtykułu|Muzyka|dane=3|poziomowo=tak|nagłówek=tak|bez automatu=|nazwa przestrzeni nazw=(main)|nazwa jednostki=Estoński/Muzyka}} --- {{Nowiki|{{Kategoria|Szablony, tworzące linki, do sprawdzenia|nazwa jednostki=Szablony edycji - błędy wywołań}}}} {{Nowiki|{{Kategoria|Szablony, tworzące linki, do sprawdzenia|nazwa jednostki=Strony ze złymi uchwytami do obiektów}}}} ---- {{Nowiki|{{Kategoria|Szablony, tworzące linki, do sprawdzenia|nazwa jednostki=Brak licencji, na stronach głównych, publikacji}}}} {{Nowiki|{{Kategoria|Szablony, tworzące linki, do sprawdzenia|nazwa jednostki=Brakujące spisy treści, dołączonych do stron, stron w innych książkach}}}} {{Nowiki|{{Kategoria|Szablony, tworzące linki, do sprawdzenia|nazwa jednostki=Strony z dołączonymi innymi stronami, w książkach, z obiektami ze złymi uchwytami}}}} {{Nowiki|{{Kategoria|Szablony, tworzące linki, do sprawdzenia|nazwa jednostki=Strony z wypowiedzeniami ze złymi uchwytami}}}} {{Nowiki|{{Kategoria|Szablony, tworzące linki, do sprawdzenia|nazwa jednostki=Strony ze złymi uchwytami do nagłówków}}}} {{Nowiki|{{Kategoria|Szablony, tworzące linki, do sprawdzenia|nazwa jednostki=Artykusły2 dla dzieci2, ze złymi uchwytami do nagłówków}}}} {{sr|#m["PEŁNANAZWAKSIĄŻKI"]()|p=Nazwy - Tom IV}} {{Nowiki|{{lpg|Stołeczne Terytorium Islamabadu|a=}}}} {{Nowiki|{{lpg|Stołeczne Terytorium Islamabadu|a=tak}}}} ---- {{#invoke:Pudełko|Dyskusyjny typ jednostki 2|nazwa przestrzeni nazw=Szablon|nazwa jednostki=Integrowanie/opis}} lc5bzw11l2636feng42ep3yacqvtgzf 540409 540402 2026-04-23T19:01:51Z Persino 2851 540409 wikitext text/x-wiki {{Nowiki|{{Link wewnętrzny|strona=Pomoc:Spis treści|uri=tak}}}} ---- {{Nowiki|{{WydobądźLinki|{{lg|Pomoc%3ASpis%20tre%C5%9Bci|uri=tak}}}}}} ---- {{lg|Pomoc%3ASpis%20tre%C5%9Bci|uri=tak}} ---- {{WydobądźLinki|{{lg|Pomoc%3ASpis%20tre%C5%9Bci|uri=tak}}}} {{PobierzNumerArtykułu|Muzyka|dane=3|poziomowo=tak|nagłówek=tak|bez automatu=|nazwa przestrzeni nazw=(main)|nazwa jednostki=Estoński/Muzyka}} --- {{Nowiki|{{Kategoria|Szablony, tworzące linki, do sprawdzenia|nazwa jednostki=Szablony edycji - błędy wywołań}}}} {{Nowiki|{{Kategoria|Szablony, tworzące linki, do sprawdzenia|nazwa jednostki=Strony ze złymi uchwytami do obiektów}}}} ---- {{Nowiki|{{Kategoria|Szablony, tworzące linki, do sprawdzenia|nazwa jednostki=Brak licencji, na stronach głównych, publikacji}}}} {{Nowiki|{{Kategoria|Szablony, tworzące linki, do sprawdzenia|nazwa jednostki=Brakujące spisy treści, dołączonych do stron, stron w innych książkach}}}} {{Nowiki|{{Kategoria|Szablony, tworzące linki, do sprawdzenia|nazwa jednostki=Strony z dołączonymi innymi stronami, w książkach, z obiektami ze złymi uchwytami}}}} {{Nowiki|{{Kategoria|Szablony, tworzące linki, do sprawdzenia|nazwa jednostki=Strony z wypowiedzeniami ze złymi uchwytami}}}} {{Nowiki|{{Kategoria|Szablony, tworzące linki, do sprawdzenia|nazwa jednostki=Strony ze złymi uchwytami do nagłówków}}}} {{Nowiki|{{Kategoria|Szablony, tworzące linki, do sprawdzenia|nazwa jednostki=Artykusły2 dla dzieci2, ze złymi uchwytami do nagłówków}}}} {{sr|#m["PEŁNANAZWAKSIĄŻKI"]()|p=Nazwy - Tom IV}} {{Nowiki|{{lpg|Stołeczne Terytorium Islamabadu|a=}}}} {{Nowiki|{{lpg|Stołeczne Terytorium Islamabadu|a=tak}}}} ---- {{#invoke:Pudełko|Nazwa przestrzeni nazw 3|nazwa przestrzeni nazw 2=|nazwa jednostki 2=Wikibooks:Szablon|numer jednostki=2}} l2dm3nnd0cgx719utfzmxsqcu7b9t6e Wikibooks:Moduły/Pudełko 4 63479 540367 540366 2026-04-23T12:07:43Z Persino 2851 540367 wikitext text/x-wiki <noinclude>{{ProstaStronaStart | nagłówek = {{Podrozdział|{{ld2|Pudełko}}|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 pudelko_modul=require("Module:Pudełko"); </syntaxhighlight> dzięki, któremu można wypisywać funkcje należącego do niego. Posługuje się na parametrach pudełkowych {{Parametr|nazwa przestrzeni nazw}} (czy też bez numerka {{Parametr|nazwa przestrzeni nazw i}} dla tego numerowanego) lub te z numerkiem po jednej spacji w nich (ale nie dla tego z końcówką {{Code| i}}) mogą zostać użyte jako parametry szablonu. Moduł {{Code|{{ld2|Pudełko}}}} przedstawia funkcje nazw w oparciu o funkcje nazw {{Code|{{ld2|Nazwy}}}}, generuje on nazwy za pomocą parametrów pudełkowych podanych poniżej. Parametr {{Parametr|nazwa jednostki}} (lub parametr {{Parametr|cel}} dla numerka tego pierwszego, tego alternatywnego), lub te z numerkiem po jednej spacji w nazwie parametru, albo numerowane numerkami {{Code|1}}, {{Code|2}},..., mogą zostać użyte jako parametry szablonu. Parametry określające rodzaj jednostki {{Parametr|typ jednostki}} z {{Parametr|dyskusja typu jednostki}}, itp. w wersjach z numerkiem po jednej spacji w nich mogą zostać użyte jako parametry szablonu. A te tymi numerowanymi liczbami naturalnymi {{Tt|nazwy jednostki}} od jedynki wzwyż poprzez szablon, w którym są one użyte, one też mogą być użyte z dwukropkiem, te numerowane, na samym początku nazwy, wtedy one są traktowane jako pełne nazwy strony, i wtedy one nie zostaną z interpretowane, że do nich trzeba użyć parametr odpowiedni z nazwą przetrzeni nazw z tego numerowanego, czy ogólny, aby utworzyć znów inną pełną nazwę strony dla tego numerka. Zestawienie: * {{Code|nazwa przestrzeni nazw}} i {{Code|nazwa przestrzeni nazw i}} (ogólna nazwa przestrzeni nazw dla wszystkich numerków, i tych numerowanych jednostek) - i to pierwsze z numerkiem, tzn. {{Code|nazwa przestrzeni nazw 1}}, {{Code|nazwa przestrzeni nazw 2}}, ..., * {{Code|nazwa jednostki}} - i te z numerkiem: {{Code|nazwa jednostki 1}}, {{Code|nazwa jednostki 2}}, ..., lub gdy jest zamiast tego parametrem numerowany, {{Code|1}}, {{Code|2}},..., który dla tego pierwszego może być uznany jako: {{Code|cel}} {{=}} {{Code|1}}, * {{Code|typ jednostki}} (parametr bazowy) i {{Code|typ jednostki i}} (parametr domyślny numerkowy) - i te z numerkiem: {{Code|typ jednostki 1}}, {{Code|typ jednostki 2}}, ..., tzn. gdy chcemy określić z jakim typem jednostki mamy do czynienia w zależności do jakiej przestrzeni nazw należy, a w danej, czy jest on np. programowy, czy tylko jest opisem, jak to bywa w szablonach {{Np|Template|link=tak}}, podobnie jest w przypadku {{Np|Module|link=tak}}, czy jak jest w innych przestrzeniach nazw, ** {{Code|dyskusja typu jednostki}} (parametr bazowy) i {{Code|dyskusja typu jednostki i}} (parametr domyślny numerkowy) - i te z numerkiem: {{Code|dyskusja typu jednostki 1}}, {{Code|dyskusja typu jednostki 2}}, ..., gdy chcemy określić wartością niepustą,że chodzi tutaj o typ jednostki. == {{Code|p.CzyNiepoprawnaNazwa(nazwa_jednostki)}} == Funkcja sprawdzajaca, czy jest poprawnie podana nazwa jednostki, czy ma poprawną nazwę. Znakami tymi, z których nie powinna składać się nazwa jest {{Code|<nowiki>{}<>|[]#\n</nowiki>}} i dodatkowo znak {{Code|&#127;}} (kod {{Code|{{Nowiki|&#127;}}}}). Też nie może składać się z trzech znaków tyldy, tzn. {{Code|<nowiki>~~~</nowiki>}}. Również w swojej budowie nie może składać się ze kodów {{Strong|HTML}} literowych o wzorze {{Code|{{Nowiki|&(%a+);}}}}. Natomiast może składać się z {{Code|{{Nowiki|&#(%d+);}}}} i {{Code|{{Nowiki|&#x(%x+);}}}}, ale w pierw te kody muszą być zamienione na normalne znaki. Skrótowa definicja funkcji: <syntaxhighlight lang="lua"> function p.CzyNiepoprawnaNazwa(nazwa_jednostki)...end; </syntaxhighlight> Wtedy ciało funkcji tej, czyli jego definicja w środku, jest: <syntaxhighlight lang="lua"> -- Moduł: "Moduł:Html/dane", służy do ładowania znaku o kodzie HTML "&#127;"; local html_dane_modul=mw.loadData("Module:Html/dane"); return mw.ustring.match(nazwa_jednostki,"[{}<>|%[%]#\n"..html_dane_modul.znak_127.."]+") or mw.ustring.match(nazwa_jednostki,"~~~") or mw.ustring.match(nazwa_jednostki,"&(%a+);"); </syntaxhighlight> Parametry: * {{Code|nazwa_jednostki}} - nazwa jednostki do sprawdzenia. Przykłady: <syntaxhighlight lang="lua"> local pudelko_modul=require("Module:Pudełko"); -- Podana przykładowa niepoprawna nazwa jedostki local nazwa_jednostki="Nazwa pliku [[Nazwa linku w pliku]]"; -- Fukcja zwróci wartość: local czy_poprawna_nazwa=true; local czy_poprawna_nazwa=pudelko_modul.CzyNiepoprawnaNazwa(nazwa_jednostki); </syntaxhighlight> == Funkcje nazw przestrzeni nazw == === {{Code|p["Nazwa przestrzeni nazw"](frame,...)}} === Funkcja pisze nazwę przestrzeni nazw, niezależnie, czy to jest przedmiotowa, czy dyskusji, według podanej w zmiennej {{Code|nazwa przestrzeni nazw}} dla pozycja bazowej w podanych parametrach szablonu rodzicu ramki dziecka, lub dla innej pozycji należy parametr podawaćw formie {{Code|nazwa przestrzeni nazw 1}}, {{Code|nazwa przestrzeni nazw 2}}, {{Code|nazwa przestrzeni nazw 3}},..., lub te parametry można podać w postaci ogólnej {{Code|nazwa przestrzeni nazw i}}. Parametry podaje się w parametrach rodzica wywołania tej funkcji {{Code|{{m|Pudełko|Nazwa przestrzeni nazw}}}} (ale ich nie trzeba podawać w dziecku, ale można) i w parametrach dziecka, jeśli chodzi o zmienną {{Code|numer jednostki}}, czyli np.: {{Code|{{m|Pudełko|Nazwa przestrzeni nazw|numer jednostki{{=}}<jakaś liczba całkowita dodatnia>}}}}. Te parametry przestrzenne zamiast w rodzicu w szablonie można podać w ramce dziecka, wtedy parametry dziecka mają pierwszeństwo. Przestrzeń nazw z parametrów nazw przestrzennych może odpowiadać wartości przestrzeni głównej, to wtedy odpowiednia przestrzeń nazw z parametru nazwy jednostki się nie liczy w tej funkcji, aby się liczyła należy użyć funkcji {{Code|{{sr|#p["Nazwa przestrzeni nazw 2"](frame,...)|p=Pudełko}}}}. Definicja skrótowa funkcji: <syntaxhighlight lang="lua"> p["Nazwa przestrzeni nazw"]=function(frame,czy_uwzglednic_alternatywna_nazwe,i)...end; </syntaxhighlight> Wtedy ciało funkcji tej, czyli jego definicja w środku, jest: <syntaxhighlight lang="lua"> -- Jest liczony numer parametru nazwy przestrzeni nazw, domyslnie chodzi tu o numer bazowy parametrów przestrzennych; local numer_jednostki=i or frame.args["numer jednostki"]; local liczba_numer_jednostki=((numer_jednostki)and(tonumber(numer_jednostki))or 0); local pudelko_pomocne_modul=require("Module:Pudełko/Pomocne"); -- Liczy nazwę przestrzeni nazw na podstawie podanych parametrów; return pudelko_pomocne_modul.Nazwa_przestrzeni_nazw(frame,0, czy_uwzglednic_alternatywna_nazwe,liczba_numer_jednostki); </syntaxhighlight> Parametry funkcji: * {{Code|frame}} - tablica ramki tablicy transportu, * {{Code|czy_uwzglednic_alternatywna_nazwe}} - czy ma uwzględniać nazwę przestrzeni nazw domyślną szablonu, dostępne wartości: {{Code|false}}, w której nazwa domyślna nie jest uwzględniana wtedy, oraz {{Code|nil}} i {{Code|true}}, które oznaczają to samo, w tym jeżeli ona jest uwzględniana, wtedy jest brany parametr pierwszy dziecka, który musi istnieć przy takiej wartości tego parametru, tzn. {{Code|{{m|Pudełko|Nazwa przestrzeni nazw|Szablon}}}}, a nazwa uzyskana nazwy przestrzeni nazw jest w takim przypadku błędna, a jeżeli nazwa domyślna jest błędna, czyli {{Code|{{m|Pudełko|Nazwa przestrzeni nazw|Moja przestrzeń}}}}, wtedy funkcja zwraca stan błędu {{Code|(błąd)}}. * {{Code|i}} - numer zmiennej nazwy przestrzeni nazw. Funkcja wykorzystuje {{Code|{{sr|#p.Nazwa_przestrzeni_nazw(frame,...)|p=Pudełko/Pomocne}}}} do wyznaczania ogólnego nazwy przestrzeni nazw dla pozycji bazowej i numerkowej, tzn. dla pozycji: jeden, dwa, trzy,..., itd, i ich ogólnej. Parametry ramki tablicy transportu dziecka: * {{Code|nazwa przestrzeni nazw}}, {{Code|nazwa przestrzeni nazw 1}}, {{Code|nazwa przestrzeni nazw 2}}, {{Code|nazwa przestrzeni nazw 3}},..., {{Code|nazwa przestrzeni nazw i}} - nazwy przestrzeni nazw dla pozycji bazowej, numerkowej i ogólnej, * {{Code|typ jednostki}}, {{Code|typ jednostki 1}}, {{Code|typ jednostki 2}}, {{Code|typ jednostki 3}},..., {{Code|typ jednostki i}} - typy jednostek, którym odpowiadają pewne przestrzenie przedmiotowe, dla pozycji bazowej, numerkowej i ogólnej, ** {{Code|dyskusja typu jednostki}}, {{Code|dyskusja typu jednostki 1}}, {{Code|dyskusja typ jednostki 2}}, {{Code|dyskusja typ jednostki 3}},..., {{Code|dyskusja typ jednostki i}} - czy dany typ jednostki ma przedstawiać, jeśli niepusta, przestrzeń dyskusji dla pozycji bazowej, numerkowej i ogólnej, * {{Code|numer jednostki}} - jak parametr {{Code|i}} nie został ustawiony, to wtedy liczy się ta zmienna. Parametr ramki tablicy transportu rodzica szablonu: * {{Code|nazwa przestrzeni nazw}}, {{Code|nazwa przestrzeni nazw 1}}, {{Code|nazwa przestrzeni nazw 2}}, {{Code|nazwa przestrzeni nazw 3}},..., {{Code|nazwa przestrzeni nazw i}} - nazwy przestrzeni nazw dla pozycji bazowej oraz zwykłej i ogólnej numerkowej, * {{Code|typ jednostki}}, {{Code|typ jednostki 1}}, {{Code|typ jednostki 2}}, {{Code|typ jednostki 3}},..., {{Code|typ jednostki i}} - typy jednostek, którym odpowiadają pewne przestrzenie przedmiotowe, dla pozycji bazowej, numerkowej i ogólnej, ** {{Code|dyskusja typu jednostki}}, {{Code|dyskusja typu jednostki 1}}, {{Code|dyskusja typ jednostki 2}}, {{Code|dyskusja typ jednostki 3}},..., {{Code|dyskusja typ jednostki i}} - czy dany typ jednostki ma przedstawiać, jeśli niepusta, przestrzeń dyskusji dla pozycji bazowej, numerkowej i ogólnej. Przykłady: <syntaxhighlight lang="mediawiki"> {{Nazwa szablonu|nazwa przestrzeni nazw=Wikibooks|nazwa przestrzeni nazw 2=Szablon|nazwa przestrzeni nazw i=Moduł}} </syntaxhighlight> W dziecku powiedzmy jest wywołanie, i szukamy nazwy przestrzeni nazw o numerze dwa, która nie została podana, ale istnieje za to jej wersji ogólna {{Code|nazwa przestrzeni nazw i}} i domyślna {{Code|nazwa przestrzeni nazw}}: <syntaxhighlight lang="mediawiki"> {{#invoke:Pudełko|Nazwa przestrzeni nazw|numer jednostki=1}} </syntaxhighlight> Na podstawie powyższego przykładu otrzymamy wynik o schemacie, nie wyniku, bo tam nie ma zmiennej {{Code|nazwa przestrzeni nazw 1}}, ale jest {{Code|nazwa przestrzeni nazw i}}: <syntaxhighlight lang="mediawiki"> <!-- Ale nie "nazwa przestrzeni nazw", bo jej nie ma, ale za to istnieje "nazwa przestrzeni nazw i"; --> <!-- nazwa przestrzeni nazw 1=nazwa przestrzeni nazw i=Moduł; --> <!-- Czyli wynik: --> Moduł <!-- Widzimy, że wygenerowała się nazwa przestrzeni nazw, którą jest przestrzeń programowa, którą również jest "Szablon"; --> </syntaxhighlight> Nie jest brana w tym powyższym przykładzie zmienna {{Code|nazwa przestrzeni nazw}}, bo jej nie ma, ale za to jest {{Code|nazwa przestrzeni nazw i}}, bo ona występuje jako parametr domyślny ogólny dla parametrów numerkowych. Przykłady w wikikodzie: * {{Code|{{m|Pudełko|Nazwa przestrzeni nazw|numer jednostki{{=}}2}}}} → {{Tt|{{#invoke:Pudełko|Nazwa przestrzeni nazw|numer jednostki=2}}}} * {{Code|{{m|Pudełko|Nazwa przestrzeni nazw|Szablon|nazwa przestrzeni nazw i{{=}}Moja przestrzeń|numer jednostki{{=}}2}}}} → {{Tt|{{#invoke:Pudełko|Nazwa przestrzeni nazw|Szablon|nazwa przestrzeni nazw i=Moja przestrzeń|numer jednostki=2}}}} * {{Code|{{m|Pudełko|Nazwa przestrzeni nazw|nazwa przestrzeni nazw 2{{=}}Szablon|numer jednostki{{=}}2}}}} → {{Tt|{{#invoke:Pudełko|Nazwa przestrzeni nazw|nazwa przestrzeni nazw 2=Szablon|numer jednostki=2}}}} * {{Code|{{m|Pudełko|Nazwa przestrzeni nazw|nazwa przestrzeni nazw 2{{=}}Szablon|numer jednostki{{=}}2}}}} → {{Tt|{{#invoke:Pudełko|Nazwa przestrzeni nazw|nazwa przestrzeni nazw i=Szablon|numer jednostki=2}}}} * {{Code|{{m|Pudełko|Nazwa przestrzeni nazw|nazwa przestrzeni nazw{{=}}Szablon|numer jednostki{{=}}2}}}} → {{Tt|{{#invoke:Pudełko|Nazwa przestrzeni nazw|nazwa przestrzeni nazw=Szablon|numer jednostki=2}}}} Powyżej dla przykładu podano parametry nie w rodzicu w szablonie, tylko w dziecku, jeśli chodzi o parametry nazw przestrzeni nazw, ale ich się za to nie powinno podawać w tych ramach, tylko w szablonach, w których wywoływane są te ramki pudełek {{Code|{{m|Pudełko}}}}, ale tak tutaj tak zrobiono by było najłatwiej sprawdzić działanie tego typu funkcji. Analogicznie możemy podawać parametry typu jednostki, np.: wywołaniu modułowym {{Code|{{m|Pudełko|Nazwa przestrzeni nazw|typ jednostki 2{{=}}strona szablonu|numer jednostki{{=}}2}}}}, ale o tym więcej w rozdziałach {{Code|{{sr|# p["Typ jednostki"](frame,i)|p=Pudełko}}}}, {{Code|{{sr|#p["Typ jednostki 2"](frame,i)|p=Pudełko}}}}, {{Code|{{sr|#p["Typ jednostki 3"](frame,i)|p=Pudełko}}}} itp. w „{{sr|#Funkcje typu jednostki|p=Pudełko}}”, on definiuje przestrzenie przedmiotowe, ale można użyć parametru dyskusji typu jednostki z wartością niepustą, wtedy wyświetli się nazwa przestrzeni nazw dyskusji. Również parametry typu jednostki nie powinno się podawać w dziecku w ramce, tylko w rodzicu w szablonie jako parametry, w którym ta ramka jest wywoływana, ale tutaj podano jedynie dla przykładu, jak najłatwiej sprawdzić działanie tych parametrów tej funkcji. Najpierw w funkcji nagłówku brane są parametry nazw przestrzeni nazw, a jeżeli ich nie ma, to parametry typu jednostki, a jeżeli nie ma, to generowane są nazwy na podstawie aktualnego modułu. === {{Code|p["Nazwa przedmiotowej przestrzeni nazw"](frame,...)}} === Funkcja pisze przedmiotową nazwę przestrzeni nazw jakikolwiek nazwy przestrzeni nazw (tzn. nazwę przedmiotową nazwy przestrzenie nazw, czyli nie dyskusji, zamieniana jest na nią samą, czyli identyfikator przestrzeni się nie zmienia, a dyskusji, nie przedmiotową, przekształca się na przedmiotową jej odpowiadającą, czyli w tym przypadku identyfikator przestrzeni zmniejsza się o numer mniej), według podanej w zmiennej {{Code|nazwa przestrzeni nazw}} dla pozycja bazowej w podanych parametrach szablonu rodzicu ramki dziecka, lub dla innej pozycji należy parametr podawać w formie {{Code|nazwa przestrzeni nazw 1}}, {{Code|nazwa przestrzeni nazw 2}}, {{Code|nazwa przestrzeni nazw 3}},..., lub te parametry można podać w postaci ogólnej {{Code|nazwa przestrzeni nazw i}}. Parametry podaje się w parametrach rodzica wywołania tej funkcji {{Code|{{m|Pudełko|Nazwa przedmiotowej przestrzeni nazw}}}} (ale ich nie trzeba podawać w dziecku, ale można) i w parametrach dziecka, jeśli chodzi o zmienną {{Code|numer jednostki}}, czyli np.: {{Code|{{m|Pudełko|Nazwa przedmiotowej przestrzeni nazw|numer jednostki{{=}}<jakaś liczba całkowita dodatnia>}}}}. Te parametry przestrzenne zamiast w rodzicu w szablonie można podać w ramce dziecka, wtedy parametry dziecka mają pierwszeństwo. Parametry przestrzenne mogą mogą być podane w postaci przestrzeni przedmiotowej lub dyskusji, ale ta funkcja zawsze ją zamienia na przedmiotową. Przestrzeń nazw z parametrów nazw przestrzennych może odpowiadać wartości przestrzeni głównej, to wtedy odpowiednia przestrzeń nazw z parametru nazwy jednostki się nie liczy w tej funkcji, aby się liczyła należy użyć funkcji {{Code|{{sr|#p["Nazwa przedmiotowej przestrzeni nazw 2"](frame,...)|p=Pudełko}}}}. Definicja skrótowa funkcji: <syntaxhighlight lang="lua"> p["Nazwa przedmiotowej przestrzeni nazw"]=function(frame,czy_uwzglednic_alternatywna_nazwe,i)...end; </syntaxhighlight> Wtedy ciało funkcji tej, czyli jego definicja w środku, jest: <syntaxhighlight lang="lua"> -- Jest liczony numer parametru nazwy przestrzeni nazw, domyslnie chodzi tu o numer bazowy parametrów przestrzennych; local numer_jednostki=i or frame.args["numer jednostki"]; local liczba_numer_jednostki=((numer_jednostki)and(tonumber(numer_jednostki))or 0); local pudelko_pomocne_modul=require("Module:Pudełko/Pomocne"); -- Liczy nazwę przestrzeni nazw przedmiotową na podstawie podanych parametrów; return pudelko_pomocne_modul.Nazwa_przestrzeni_nazw(frame,1, czy_uwzglednic_alternatywna_nazwe,liczba_numer_jednostki); </syntaxhighlight> Parametry funkcji: * {{Code|frame}} - tablica ramki tablicy transportu, * {{Code|czy_uwzglednic_alternatywna_nazwe}} - czy ma uwzględniać nazwę przestrzeni nazw domyślną szablonu, dostępne wartości: {{Code|false}}, w której nazwa domyślna nie jest uwzględniana wtedy, oraz {{Code|nil}} i {{Code|true}}, które oznaczają to samo, w tym jeżeli ona jest uwzględniana, wtedy jest brany parametr pierwszy dziecka, który musi istnieć przy takiej wartości tego parametru, tzn. {{Code|{{m|Pudełko|Nazwa przedmiotowej przestrzeni nazw|Dyskusja szablonu}}}} - ta nazwa domyślna zostanie zamieniona na przedmiotową, a jak ona by była przedmiotowa, to żadnej zamiany by nie było, a nazwa uzyskana z nazwy przestrzeni nazw z parametrów przestrzennych jest w takim przypadku błędna, to w takim razie brany jest ten parametr, a jeżeli ta nazwa domyślna jest błędna, czyli {{Code|{{m|Pudełko|Nazwa przedmiotowej przestrzeni nazw|Moja przestrzeń}}}}, wtedy funkcja zwraca stan błędu {{Code|(błąd)}}. * {{Code|i}} - numer zmiennej nazwy przestrzeni nazw. Funkcja wykorzystuje {{Code|{{sr|#p.Nazwa_przestrzeni_nazw(frame,...)|p=Pudełko/Pomocne}}}} do wyznaczania ogólnego nazwy przestrzeni nazw dla pozycji bazowej i numerkowej, tzn. dla pozycji: jeden, dwa, trzy,..., itd, i ich ogólnej. Parametry ramki tablicy transportu dziecka: * {{Code|nazwa przestrzeni nazw}}, {{Code|nazwa przestrzeni nazw 1}}, {{Code|nazwa przestrzeni nazw 2}}, {{Code|nazwa przestrzeni nazw 3}},..., {{Code|nazwa przestrzeni nazw i}} - nazwy przestrzeni nazw dla pozycji bazowej, numerkowej i ogólnej, * {{Code|typ jednostki}}, {{Code|typ jednostki 1}}, {{Code|typ jednostki 2}}, {{Code|typ jednostki 3}},..., {{Code|typ jednostki i}} - typy jednostek, którym odpowiadają pewne przestrzenie przedmiotowe, dla pozycji bazowej, numerkowej i ogólnej, ** {{Code|dyskusja typu jednostki}}, {{Code|dyskusja typu jednostki 1}}, {{Code|dyskusja typ jednostki 2}}, {{Code|dyskusja typ jednostki 3}},..., {{Code|dyskusja typ jednostki i}} - czy dany typ jednostki ma przedstawiać, jeśli niepusta, przestrzeń dyskusji dla pozycji bazowej, numerkowej i ogólnej, * {{Code|numer jednostki}} - jak parametr {{Code|i}} nie został ustawiony, to wtedy liczy się ta zmienna. Parametr ramki tablicy transportu rodzica szablonu: * {{Code|nazwa przestrzeni nazw}}, {{Code|nazwa przestrzeni nazw 1}}, {{Code|nazwa przestrzeni nazw 2}}, {{Code|nazwa przestrzeni nazw 3}},..., {{Code|nazwa przestrzeni nazw i}} - nazwy przestrzeni nazw dla pozycji bazowej oraz zwykłej i ogólnej numerkowej, * {{Code|typ jednostki}}, {{Code|typ jednostki 1}}, {{Code|typ jednostki 2}}, {{Code|typ jednostki 3}},..., {{Code|typ jednostki i}} - typy jednostek, którym odpowiadają pewne przestrzenie przedmiotowe, dla pozycji bazowej, numerkowej i ogólnej, ** {{Code|dyskusja typu jednostki}}, {{Code|dyskusja typu jednostki 1}}, {{Code|dyskusja typ jednostki 2}}, {{Code|dyskusja typ jednostki 3}},..., {{Code|dyskusja typ jednostki i}} - czy dany typ jednostki ma przedstawiać, jeśli niepusta, przestrzeń dyskusji dla pozycji bazowej, numerkowej i ogólnej. Przykłady: <syntaxhighlight lang="mediawiki"> {{Nazwa szablonu|nazwa przestrzeni nazw=Dyskusja Wikibooks|nazwa przestrzeni nazw 2=Dyskusja szablonu|nazwa przestrzeni nazw i=Dyskusja modułu}} </syntaxhighlight> W dziecku powiedzmy jest wywołanie, i szukamy nazwy przestrzeni nazw o numerze dwa, która nie została podana, ale istnieje za to jej wersji ogólna {{Code|nazwa przestrzeni nazw i}} i domyślna {{Code|nazwa przestrzeni nazw}}: <syntaxhighlight lang="mediawiki"> {{#invoke:Pudełko|Nazwa przedmiotowej przestrzeni nazw|numer jednostki=1}} </syntaxhighlight> Na podstawie powyższego przykładu otrzymamy wynik o schemacie, nie wyniku, bo tam nie ma zmiennej {{Code|nazwa przestrzeni nazw 1}}, ale jest {{Code|nazwa przestrzeni nazw i}}: <syntaxhighlight lang="mediawiki"> <!-- Ale nie "nazwa przestrzeni nazw", bo jej nie ma, ale za to istnieje "nazwa przestrzeni nazw i"; --> <!-- nazwa przestrzeni nazw 1=nazwa przestrzeni nazw i=Dyskusja modułu; --> <!-- Czyli wynik: --> Moduł <!-- Widzimy, że wygenerowała się nazwa przestrzeni nazw, którą jest przestrzeń przedmiotowa programowa przestrzeni dyskusji "Dyskusja modułu", którą również jest "Szablon" jego przestrzeni dyskusji "Dyskusja szablonu", a dla ich przestrzeni przedmiotowej, zamiast dyskusji, to samo przekształca się na to samo; --> </syntaxhighlight> Nie jest brana w tym powyższym przykładzie zmienna {{Code|nazwa przestrzeni nazw}}, bo jej nie ma, ale za to jest {{Code|nazwa przestrzeni nazw i}}, bo ona występuje jako parametr domyślny ogólny dla parametrów numerkowych. Przykłady w wikikodzie: * {{Code|{{m|Pudełko|Nazwa przedmiotowej przestrzeni nazw|numer jednostki{{=}}2}}}} → {{Tt|{{#invoke:Pudełko|Nazwa przedmiotowej przestrzeni nazw|numer jednostki=2}}}} * {{Code|{{m|Pudełko|Nazwa przedmiotowej przestrzeni nazw|Dyskusja szablonu|nazwa przestrzeni nazw i{{=}}Moja przestrzeń|numer jednostki{{=}}2}}}} → {{Tt|{{#invoke:Pudełko|Nazwa przedmiotowej przestrzeni nazw|Dyskusja szablonu|nazwa przestrzeni nazw i=Moja przestrzeń|numer jednostki=2}}}} * {{Code|{{m|Pudełko|Nazwa przedmiotowej przestrzeni nazw|nazwa przestrzeni nazw 2{{=}}Dyskusja szablonu|numer jednostki{{=}}2}}}} → {{Tt|{{#invoke:Pudełko|Nazwa przedmiotowej przestrzeni nazw|nazwa przestrzeni nazw 2=Dyskusja szablonu|numer jednostki=2}}}} * {{Code|{{m|Pudełko|Nazwa przedmiotowej przestrzeni nazw|nazwa przestrzeni nazw 2{{=}}Dyskusja szablonu|numer jednostki{{=}}2}}}} → {{Tt|{{#invoke:Pudełko|Nazwa przedmiotowej przestrzeni nazw|nazwa przestrzeni nazw i=Dyskusja szablonu|numer jednostki=2}}}} * {{Code|{{m|Pudełko|Nazwa przedmiotowej przestrzeni nazw|nazwa przestrzeni nazw{{=}}Dyskusja szablonu|numer jednostki{{=}}2}}}} → {{Tt|{{#invoke:Pudełko|Nazwa przedmiotowej przestrzeni nazw|nazwa przestrzeni nazw=Dyskusja szablonu|numer jednostki=2}}}} Powyżej dla przykładu podano parametry nie w rodzicu w szablonie, tylko w dziecku, jeśli chodzi o parametry nazw przestrzeni nazw, ale ich się za to nie powinno podawać w tych ramach, tylko w szablonach, w których wywoływane są te ramki pudełek {{Code|{{m|Pudełko}}}}, ale tak tutaj tak zrobiono by było najłatwiej sprawdzić działanie tego typu funkcji. Analogicznie możemy podawać parametry typu jednostki, np.: wywołaniu modułowym {{Code|{{m|Pudełko|Nazwa przedmiotowej przestrzeni nazw|typ jednostki 2{{=}}strona szablonu|numer jednostki{{=}}2}}}}, ale o tym więcej w rozdziałach {{Code|{{sr|# p["Typ jednostki"](frame,i)|p=Pudełko}}}}, {{Code|{{sr|#p["Typ jednostki 2"](frame,i)|p=Pudełko}}}}, {{Code|{{sr|#p["Typ jednostki 3"](frame,i)|p=Pudełko}}}} itp. w „{{sr|#Funkcje typu jednostki|p=Pudełko}}”, ale wtedy ta sama nazwa przestrzeni nazw reprezentowana przez {{Parametr|typ jednostki 2|strona szablonu}}, jest zamieniana na to samo, lepiej jest tutaj używać parametrów przestrzennych nazw niż typu jednostki, bo typ jednostki ma taką samą wartość dla przestrzeni przedmiotowej, co dyskusji. Tutaj parametr dyskusji typu jednostki bazowy i numerkowy ogólny, czy szczegółowy, nie gra roli, bo nawet, gdy wygenerujemy nazwę przestrzeni dyskusji za pomoca tego parametru, to i tak otrzymamy na samym końcu jego nazwę przedmiotową. Również parametry typu jednostki nie powinno się podawać w dziecku w ramce, tylko w rodzicu w szablonie jako parametry, w którym ta ramka jest wywoływana, ale tutaj podano jedynie dla przykładu, jak najłatwiej sprawdzić działanie tych parametrów tej funkcji. Najpierw w funkcji nagłówku brane są parametry nazw przestrzeni nazw, a jeżeli ich nie ma, to parametry typu jednostki, a jeżeli nie ma, to generowane są nazwy na podstawie aktualnego modułu. === {{Code|p["Nazwa przestrzeni nazw dyskusji"](frame,...)}} === Funkcja pisze nazwę przestrzeni nazw dyskusji jakikolwiek nazwy przestrzeni nazw (tzn. nazwę przedmiotową nazwy przestrzenie nazw, czyli nie dyskusji, zamieniana jest na dyskusji, czyli identyfikator przestrzeni się zmienia jeden wyżej, a dyskusji, nie przedmiotową, przekształca się na tą samą), według podanej w zmiennej {{Code|nazwa przestrzeni nazw}} dla pozycja bazowej w podanych parametrach szablonu rodzicu ramki dziecka, lub dla innej pozycji należy parametr podawać w formie {{Code|nazwa przestrzeni nazw 1}}, {{Code|nazwa przestrzeni nazw 2}}, {{Code|nazwa przestrzeni nazw 3}},..., lub te parametry można podać w postaci ogólnej {{Code|nazwa przestrzeni nazw i}}. Parametry podaje się w parametrach rodzica wywołania tej funkcji {{Code|{{m|Pudełko|Nazwa przestrzeni nazw dyskusji}}}} (ale ich nie trzeba podawać w dziecku, ale można) i w parametrach dziecka, jeśli chodzi o zmienną {{Code|numer jednostki}}, czyli np.: {{Code|{{m|Pudełko|Nazwa przestrzeni nazw dyskusji|numer jednostki{{=}}<jakaś liczba całkowita dodatnia>}}}}. Te parametry przestrzenne zamiast w rodzicu w szablonie można podać w ramce dziecka, wtedy parametry dziecka mają pierwszeństwo. Parametry przestrzenne mogą mogą być podane w postaci przestrzeni przedmiotowej lub dyskusji, ale ta funkcja zawsze ją zamienia na dyskusji. Przestrzeń nazw z parametrów nazw przestrzennych może odpowiadać wartości przestrzeni głównej, to wtedy odpowiednia przestrzeń nazw z parametru nazwy jednostki się nie liczy w tej funkcji, aby się liczyła należy użyć funkcji {{Code|{{sr|#p["Nazwa przestrzeni nazw dyskusji 2"](frame,...)|p=Pudełko}}}}. Definicja skrótowa funkcji: <syntaxhighlight lang="lua"> p["Nazwa przestrzeni nazw dyskusji"]=function(frame,czy_uwzglednic_alternatywna_nazwe,i)...end; </syntaxhighlight> Wtedy ciało funkcji tej, czyli jego definicja w środku, jest: <syntaxhighlight lang="lua"> -- Jest liczony numer parametru nazwy przestrzeni nazw, domyslnie chodzi tu o numer bazowy parametrów przestrzennych; local numer_jednostki=i or frame.args["numer jednostki"]; local liczba_numer_jednostki=((numer_jednostki)and(tonumber(numer_jednostki))or 0); local pudelko_pomocne_modul=require("Module:Pudełko/Pomocne"); -- Liczy nazwę przestrzeni nazw dyskusji na podstawie podanych parametrów; return pudelko_pomocne_modul.Nazwa_przestrzeni_nazw(frame,2, czy_uwzglednic_alternatywna_nazwe,liczba_numer_jednostki); </syntaxhighlight> Parametry funkcji: * {{Code|frame}} - tablica ramki tablicy transportu, * {{Code|czy_uwzglednic_alternatywna_nazwe}} - czy ma uwzględniać nazwę przestrzeni nazw domyślną szablonu, dostępne wartości: {{Code|false}}, w której nazwa domyślna nie jest uwzględniana wtedy, oraz {{Code|nil}} i {{Code|true}}, które oznaczają to samo, w tym jeżeli ona jest uwzględniana, wtedy jest brany parametr pierwszy dziecka, który musi istnieć przy takiej wartości tego parametru, tzn. {{Code|{{m|Pudełko|Nazwa przestrzeni nazw dyskusji|Szablon}}}} - ta nazwa domyślna zostanie przekształcona na dyskusji, a jeżeli ona by była dyskusji, to nie byłoby żadnego przekształcenia, a nazwa uzyskana nazwy przestrzeni nazw z parametrów przestrzennych jest w takim przypadku błędna, to w takim razie brany jest ten parametr, a jeżeli nazwa domyślna jest błędna, czyli {{Code|{{m|Pudełko|Nazwa przestrzeni nazw dyskusji|Moja przestrzeń}}}}, wtedy funkcja zwraca stan błędu {{Code|(błąd)}}. * {{Code|i}} - numer zmiennej nazwy przestrzeni nazw. Funkcja wykorzystuje {{Code|{{sr|#p.Nazwa_przestrzeni_nazw(frame,...)|p=Pudełko/Pomocne}}}} do wyznaczania ogólnego nazwy przestrzeni nazw dla pozycji bazowej i numerkowej, tzn. dla pozycji: jeden, dwa, trzy,..., itd, i ich ogólnej. Parametry ramki tablicy transportu dziecka: * {{Code|nazwa przestrzeni nazw}}, {{Code|nazwa przestrzeni nazw 1}}, {{Code|nazwa przestrzeni nazw 2}}, {{Code|nazwa przestrzeni nazw 3}},..., {{Code|nazwa przestrzeni nazw i}} - nazwy przestrzeni nazw dla pozycji bazowej, numerkowej i ogólnej, * {{Code|typ jednostki}}, {{Code|typ jednostki 1}}, {{Code|typ jednostki 2}}, {{Code|typ jednostki 3}},..., {{Code|typ jednostki i}} - typy jednostek, którym odpowiadają pewne przestrzenie przedmiotowe, dla pozycji bazowej, numerkowej i ogólnej, ** {{Code|dyskusja typu jednostki}}, {{Code|dyskusja typu jednostki 1}}, {{Code|dyskusja typ jednostki 2}}, {{Code|dyskusja typ jednostki 3}},..., {{Code|dyskusja typ jednostki i}} - czy dany typ jednostki ma przedstawiać, jeśli niepusta, przestrzeń dyskusji dla pozycji bazowej, numerkowej i ogólnej, * {{Code|numer jednostki}} - jak parametr {{Code|i}} nie został ustawiony, to wtedy liczy się ta zmienna. Parametr ramki tablicy transportu rodzica szablonu: * {{Code|nazwa przestrzeni nazw}}, {{Code|nazwa przestrzeni nazw 1}}, {{Code|nazwa przestrzeni nazw 2}}, {{Code|nazwa przestrzeni nazw 3}},..., {{Code|nazwa przestrzeni nazw i}} - nazwy przestrzeni nazw dla pozycji bazowej oraz zwykłej i ogólnej numerkowej, * {{Code|typ jednostki}}, {{Code|typ jednostki 1}}, {{Code|typ jednostki 2}}, {{Code|typ jednostki 3}},..., {{Code|typ jednostki i}} - typy jednostek, którym odpowiadają pewne przestrzenie przedmiotowe, dla pozycji bazowej, numerkowej i ogólnej, ** {{Code|dyskusja typu jednostki}}, {{Code|dyskusja typu jednostki 1}}, {{Code|dyskusja typ jednostki 2}}, {{Code|dyskusja typ jednostki 3}},..., {{Code|dyskusja typ jednostki i}} - czy dany typ jednostki ma przedstawiać, jeśli niepusta, przestrzeń dyskusji dla pozycji bazowej, numerkowej i ogólnej. Przykłady: <syntaxhighlight lang="mediawiki"> {{Nazwa szablonu|nazwa przestrzeni nazw=Wikibooks|nazwa przestrzeni nazw 2=Szablon|nazwa przestrzeni nazw i=Moduł}} </syntaxhighlight> W dziecku powiedzmy jest wywołanie, i szukamy nazwy przestrzeni nazw o numerze dwa, która nie została podana, ale istnieje za to jej wersji ogólna {{Code|nazwa przestrzeni nazw i}} i domyślna {{Code|nazwa przestrzeni nazw}}: <syntaxhighlight lang="mediawiki"> {{#invoke:Pudełko|Nazwa przestrzeni nazw dyskusji|numer jednostki=1}} </syntaxhighlight> Na podstawie powyższego przykładu otrzymamy wynik o schemacie, nie wyniku, bo tam nie ma zmiennej {{Code|nazwa przestrzeni nazw 1}}, ale jest {{Code|nazwa przestrzeni nazw i}}: <syntaxhighlight lang="mediawiki"> <!-- Ale nie "nazwa przestrzeni nazw", bo jej nie ma, ale za to istnieje "nazwa przestrzeni nazw i"; --> <!-- nazwa przestrzeni nazw 1=nazwa przestrzeni nazw i=Moduł; --> <!-- Czyli wynik: --> Dyskusja modułu <!-- Widzimy, że wygenerowała się nazwa przestrzeni nazw, którą jest przestrzeń dyskusji przestrzeni programowej przestrzeni przedmiotowej "Moduł", którą również jest "Szablon" jego przestrzeni dyskusji "Dyskusja szablonu", a dla ich przestrzeni przedmiotowej, zamiast dyskusji, to przekształca się na dyskusji jej odpowiadającą; --> </syntaxhighlight> Nie jest brana w tym powyższym przykładzie zmienna {{Code|nazwa przestrzeni nazw}}, bo jej nie ma, ale za to jest {{Code|nazwa przestrzeni nazw i}}, bo ona występuje jako parametr domyślny ogólny dla parametrów numerkowych. Przykłady w wikikodzie: * {{Code|{{m|Pudełko|Nazwa przestrzeni nazw dyskusji|numer jednostki{{=}}2}}}} → {{Tt|{{#invoke:Pudełko|Nazwa przestrzeni nazw dyskusji|numer jednostki=2}}}} * {{Code|{{m|Pudełko|Nazwa przestrzeni nazw dyskusji|Szablon|nazwa przestrzeni nazw i{{=}}Moja przestrzeń|numer jednostki{{=}}2}}}} → {{Tt|{{#invoke:Pudełko|Nazwa przestrzeni nazw dyskusji|Szablon|nazwa przestrzeni nazw i=Moja przestrzeń|numer jednostki=2}}}} * {{Code|{{m|Pudełko|Nazwa przestrzeni nazw dyskusji|nazwa przestrzeni nazw 2{{=}}Szablon|numer jednostki{{=}}2}}}} → {{Tt|{{#invoke:Pudełko|Nazwa przestrzeni nazw dyskusji|nazwa przestrzeni nazw 2=Szablon|numer jednostki=2}}}} * {{Code|{{m|Pudełko|Nazwa przestrzeni nazw dyskusji|nazwa przestrzeni nazw 2{{=}}Szablon|numer jednostki{{=}}2}}}} → {{Tt|{{#invoke:Pudełko|Nazwa przestrzeni nazw dyskusji|nazwa przestrzeni nazw i=Szablon|numer jednostki=2}}}} * {{Code|{{m|Pudełko|Nazwa przestrzeni nazw dyskusji|nazwa przestrzeni nazw{{=}}Szablon|numer jednostki{{=}}2}}}} → {{Tt|{{#invoke:Pudełko|Nazwa przestrzeni nazw dyskusji|nazwa przestrzeni nazw=Szablon|numer jednostki=2}}}} Powyżej dla przykładu podano parametry nie w rodzicu w szablonie, tylko w dziecku, jeśli chodzi o parametry nazw przestrzeni nazw, ale ich się za to nie powinno podawać w tych ramach, tylko w szablonach, w których wywoływane są te ramki pudełek {{Code|{{m|Pudełko}}}}, ale tak tutaj tak zrobiono by było najłatwiej sprawdzić działanie tego typu funkcji. Analogicznie możemy podawać parametry typu jednostki, np.: wywołaniu modułowym {{Code|{{m|Pudełko|Nazwa przestrzeni nazw dyskusji|typ jednostki 2{{=}}strona szablonu|numer jednostki{{=}}2}}}}, ale o tym więcej w rozdziałach {{Code|{{sr|# p["Typ jednostki"](frame,i)|p=Pudełko}}}}, {{Code|{{sr|#p["Typ jednostki 2"](frame,i)|p=Pudełko}}}}, {{Code|{{sr|#p["Typ jednostki 3"](frame,i)|p=Pudełko}}}} itp. w „{{sr|#Funkcje typu jednostki|p=Pudełko}}”, ale wtedy nazwa przestrzeni nazw reprezentowana przez {{Parametr|typ jednostki 2|strona szablonu}}, jest zamieniana na nazwę przestrzeni nazw dyskusji. Parametr dyskusji typu jednostki bazowy lub dla danego numerka ogólny, czy szczegółowy, nie gra roli. Również parametry typu jednostki nie powinno się podawać w dziecku w ramce, tylko w rodzicu w szablonie jako parametry, w którym ta ramka jest wywoływana, ale tutaj podano jedynie dla przykładu, jak najłatwiej sprawdzić działanie tych parametrów tej funkcji. Najpierw w funkcji nagłówku brane są parametry nazw przestrzeni nazw, a jeżeli ich nie ma, to parametry typu jednostki, a jeżeli nie ma, to generowane są nazwy na podstawie aktualnego modułu. == Funkcje nazw przestrzeni nazw drugiej wersji == === {{Code|p["Nazwa przestrzeni nazw 2"](frame,...)}} === === {{Code|p["Nazwa przedmiotowej przestrzeni nazw 2"](frame,...)}} === === {{Code|p["Nazwa przestrzeni nazw dyskusji 2"](frame,...)}} === == Funkcje pełnych nazw jednostki == === {{Code|p["Pełna nazwa dyskusji jednostki"](frame,i)}} === === {{Code|p["Pełna nazwa przedmiotowa jednostki"](frame,i)}} === === {{Code|p["Pełna nazwa jednostki"](frame,i)}} === == Funkcje pełnych nazw jednostki drugiej wersji == === {{Code|p["Pełna nazwa dyskusji jednostki 2"](frame,i)}} === === {{Code|p["Pełna nazwa przedmiotowa jednostki 2"](frame,i)}} === === {{Code|p["Pełna nazwa jednostki 2"](frame,i)}} === == Funkcje pełnych nazw jednostki trzeciej wersji == === {{Code|p["Pełna nazwa dyskusji jednostki 3"](frame,i)}} === === {{Code|p["Pełna nazwa przedmiotowa jednostki 3"](frame,i)}} === === {{Code|p["Pełna nazwa jednostki 3"](frame,i)}} === == Funkcje nazw jednostki == === {{Code|p["Nazwa jednostki"](frame,i)}} === == Funkcje nazw jednostki drugiej wersji == === {{Code|p["Nazwa jednostki 2"](frame,i)}} === === {{Code|p["Nazwa przedmiotowa jednostki 2"](frame,i)}} === === {{Code|p["Nazwa dyskusji jednostki 2"](frame,i)}} === == Funkcje nazw przestrzeni nazw trzeciej wersji == === {{Code|p["Nazwa przestrzeni nazw 3"](frame,i)}} === === {{Code|p["Nazwa przedmiotowej przestrzeni nazw 3"](frame,i)}} === === {{Code|p["Nazwa przestrzeni nazw dyskusji 3"](frame,i)}} === == Funkcje nazw jednostki trzeciej wersji == === {{Code|p["Nazwa jednostki 3"](frame,i)}} === === {{Code|p["Nazwa przedmiotowa jednostki 3"](frame,i)}} === === {{Code|p["Nazwa dyskusji jednostki 3"](frame,i)}} === == Funkcje typu jednostki == === {{Code|p["Typ jednostki"](frame,i)}} === === {{Code|p["Typ jednostki 2"](frame,i)}} === === {{Code|p["Typ jednostki 3"](frame,i)}} === === Funkcje typu jednostki przedmiotowe === ==== {{Code|p["Przedmiotowy typ jednostki"](frame,i)}} ==== ==== {{Code|p["Przedmiotowy typ jednostki 2"](frame,i)}} ==== ==== {{Code|p["Przedmiotowy typ jednostki 3"](frame,i)}} ==== === Fukcje typu jednostki dyskusji === ==== {{Code|p["Dyskusyjny typ jednostki"](frame,i)}} ==== ==== {{Code|p["Dyskusyjny typ jednostki 2"](frame,i)}}} ==== ==== {{Code|p["Dyskusyjny typ jednostki 3"](frame,i)}} ==== == Funkcje chech pudełka == === {{Code|p["Cecha pudełka"](frame)}} === === {{Code|p["Przedmiotowa cecha pudełka"](frame)}} === === {{Code|p["Dyskusyjna cecha pudełka"](frame)}} === == Fukcje ogólnego pudełka == === {{Code|p["Ogólne pudełko"](frame)}} === == Funkcje ogólne == === {{Code|p["Tekst pudełka"](frame)}} === == Funkcje błędów pudełka == === {{Code|p["Błędy pudełka"](frame)}} === === {{Code|p["Przedmiotowe błędy pudełka"](frame)}} === === {{Code|p["Dyskusyjne błędy pudełka"](frame)}} === == Funkcje nazw stron == === {{Code|p["Nazwa strony głównej projektu"](frame,i)}} === === {{Code|p["Nazwa strony głównej dla dzieci projektu"](frame,i)}} === == Funkcje kodów == === {{Code|p["Kod języka"](frame,i)}} === === {{Code|p["Kod projektu"](frame,i)}} === === {{Code|p["Klucz projektu"](frame,i)}} === == Funkcje wiki == === {{Code|p["Inny niż język bieżący wiki"](frame)}} === === {{Code|p["Inne niż lokalne wiki"](frame)}} === === {{Code|p["Inne niż bieżące wiki"](frame)}} === == Funkcje typów parametrów, czy podane je == === {{Code|p["Podano parametry nienazwane"](frame)}} === === {{Code|p["Podano parametry numerowane"](frame)}} === === {{Code|p["Podano parametry nazwane"](frame)}} === == Funkcje kodów tego projektu == === {{Code|p["Kod projektu tego projektu"](frame)}} === === {{Code|p["Kod języka tego projektu"](frame)}} === === {{Code|p["Klucz projektu tego projektu"](frame)}} === == Funkcje stron == === {{Code|p["Strona główna tego projektu"](frame)}} === === {{Code|p["Strona główna dla dzieci tego projektu"](frame)}} === == Funkcje nazw stron drugiej wersji == === {{Code|p["Nazwa strony głównej dla dzieci projektu 2"](frame)}} === === {{Code| p["Nazwa strony głównej projektu 2"](frame)}} === {{BrClear}} <noinclude><!-- -->{{ProstaStronaKoniec}}<!-- -->{{Kategoria|Opisy funkcji, w Lua w Scribunto, w modułach}}<!-- --></noinclude> obwjdr44ejwzobmkx1fdlo2525z6jo9 540368 540367 2026-04-23T12:32:46Z Persino 2851 /* {{Code|p["Nazwa przestrzeni nazw 2"](frame,...)}} */ 540368 wikitext text/x-wiki <noinclude>{{ProstaStronaStart | nagłówek = {{Podrozdział|{{ld2|Pudełko}}|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 pudelko_modul=require("Module:Pudełko"); </syntaxhighlight> dzięki, któremu można wypisywać funkcje należącego do niego. Posługuje się na parametrach pudełkowych {{Parametr|nazwa przestrzeni nazw}} (czy też bez numerka {{Parametr|nazwa przestrzeni nazw i}} dla tego numerowanego) lub te z numerkiem po jednej spacji w nich (ale nie dla tego z końcówką {{Code| i}}) mogą zostać użyte jako parametry szablonu. Moduł {{Code|{{ld2|Pudełko}}}} przedstawia funkcje nazw w oparciu o funkcje nazw {{Code|{{ld2|Nazwy}}}}, generuje on nazwy za pomocą parametrów pudełkowych podanych poniżej. Parametr {{Parametr|nazwa jednostki}} (lub parametr {{Parametr|cel}} dla numerka tego pierwszego, tego alternatywnego), lub te z numerkiem po jednej spacji w nazwie parametru, albo numerowane numerkami {{Code|1}}, {{Code|2}},..., mogą zostać użyte jako parametry szablonu. Parametry określające rodzaj jednostki {{Parametr|typ jednostki}} z {{Parametr|dyskusja typu jednostki}}, itp. w wersjach z numerkiem po jednej spacji w nich mogą zostać użyte jako parametry szablonu. A te tymi numerowanymi liczbami naturalnymi {{Tt|nazwy jednostki}} od jedynki wzwyż poprzez szablon, w którym są one użyte, one też mogą być użyte z dwukropkiem, te numerowane, na samym początku nazwy, wtedy one są traktowane jako pełne nazwy strony, i wtedy one nie zostaną z interpretowane, że do nich trzeba użyć parametr odpowiedni z nazwą przetrzeni nazw z tego numerowanego, czy ogólny, aby utworzyć znów inną pełną nazwę strony dla tego numerka. Zestawienie: * {{Code|nazwa przestrzeni nazw}} i {{Code|nazwa przestrzeni nazw i}} (ogólna nazwa przestrzeni nazw dla wszystkich numerków, i tych numerowanych jednostek) - i to pierwsze z numerkiem, tzn. {{Code|nazwa przestrzeni nazw 1}}, {{Code|nazwa przestrzeni nazw 2}}, ..., * {{Code|nazwa jednostki}} - i te z numerkiem: {{Code|nazwa jednostki 1}}, {{Code|nazwa jednostki 2}}, ..., lub gdy jest zamiast tego parametrem numerowany, {{Code|1}}, {{Code|2}},..., który dla tego pierwszego może być uznany jako: {{Code|cel}} {{=}} {{Code|1}}, * {{Code|typ jednostki}} (parametr bazowy) i {{Code|typ jednostki i}} (parametr domyślny numerkowy) - i te z numerkiem: {{Code|typ jednostki 1}}, {{Code|typ jednostki 2}}, ..., tzn. gdy chcemy określić z jakim typem jednostki mamy do czynienia w zależności do jakiej przestrzeni nazw należy, a w danej, czy jest on np. programowy, czy tylko jest opisem, jak to bywa w szablonach {{Np|Template|link=tak}}, podobnie jest w przypadku {{Np|Module|link=tak}}, czy jak jest w innych przestrzeniach nazw, ** {{Code|dyskusja typu jednostki}} (parametr bazowy) i {{Code|dyskusja typu jednostki i}} (parametr domyślny numerkowy) - i te z numerkiem: {{Code|dyskusja typu jednostki 1}}, {{Code|dyskusja typu jednostki 2}}, ..., gdy chcemy określić wartością niepustą,że chodzi tutaj o typ jednostki. == {{Code|p.CzyNiepoprawnaNazwa(nazwa_jednostki)}} == Funkcja sprawdzajaca, czy jest poprawnie podana nazwa jednostki, czy ma poprawną nazwę. Znakami tymi, z których nie powinna składać się nazwa jest {{Code|<nowiki>{}<>|[]#\n</nowiki>}} i dodatkowo znak {{Code|&#127;}} (kod {{Code|{{Nowiki|&#127;}}}}). Też nie może składać się z trzech znaków tyldy, tzn. {{Code|<nowiki>~~~</nowiki>}}. Również w swojej budowie nie może składać się ze kodów {{Strong|HTML}} literowych o wzorze {{Code|{{Nowiki|&(%a+);}}}}. Natomiast może składać się z {{Code|{{Nowiki|&#(%d+);}}}} i {{Code|{{Nowiki|&#x(%x+);}}}}, ale w pierw te kody muszą być zamienione na normalne znaki. Skrótowa definicja funkcji: <syntaxhighlight lang="lua"> function p.CzyNiepoprawnaNazwa(nazwa_jednostki)...end; </syntaxhighlight> Wtedy ciało funkcji tej, czyli jego definicja w środku, jest: <syntaxhighlight lang="lua"> -- Moduł: "Moduł:Html/dane", służy do ładowania znaku o kodzie HTML "&#127;"; local html_dane_modul=mw.loadData("Module:Html/dane"); return mw.ustring.match(nazwa_jednostki,"[{}<>|%[%]#\n"..html_dane_modul.znak_127.."]+") or mw.ustring.match(nazwa_jednostki,"~~~") or mw.ustring.match(nazwa_jednostki,"&(%a+);"); </syntaxhighlight> Parametry: * {{Code|nazwa_jednostki}} - nazwa jednostki do sprawdzenia. Przykłady: <syntaxhighlight lang="lua"> local pudelko_modul=require("Module:Pudełko"); -- Podana przykładowa niepoprawna nazwa jedostki local nazwa_jednostki="Nazwa pliku [[Nazwa linku w pliku]]"; -- Fukcja zwróci wartość: local czy_poprawna_nazwa=true; local czy_poprawna_nazwa=pudelko_modul.CzyNiepoprawnaNazwa(nazwa_jednostki); </syntaxhighlight> == Funkcje nazw przestrzeni nazw == === {{Code|p["Nazwa przestrzeni nazw"](frame,...)}} === Funkcja pisze nazwę przestrzeni nazw, niezależnie, czy to jest przedmiotowa, czy dyskusji, według podanej w zmiennej {{Code|nazwa przestrzeni nazw}} dla pozycja bazowej w podanych parametrach szablonu rodzicu ramki dziecka, lub dla innej pozycji należy parametr podawaćw formie {{Code|nazwa przestrzeni nazw 1}}, {{Code|nazwa przestrzeni nazw 2}}, {{Code|nazwa przestrzeni nazw 3}},..., lub te parametry można podać w postaci ogólnej {{Code|nazwa przestrzeni nazw i}}. Parametry podaje się w parametrach rodzica wywołania tej funkcji {{Code|{{m|Pudełko|Nazwa przestrzeni nazw}}}} (ale ich nie trzeba podawać w dziecku, ale można) i w parametrach dziecka, jeśli chodzi o zmienną {{Code|numer jednostki}}, czyli np.: {{Code|{{m|Pudełko|Nazwa przestrzeni nazw|numer jednostki{{=}}<jakaś liczba całkowita dodatnia>}}}}. Te parametry przestrzenne zamiast w rodzicu w szablonie można podać w ramce dziecka, wtedy parametry dziecka mają pierwszeństwo. Przestrzeń nazw z parametrów nazw przestrzennych może odpowiadać wartości przestrzeni głównej, to wtedy odpowiednia przestrzeń nazw z parametru nazwy jednostki się nie liczy w tej funkcji, aby się liczyła należy użyć funkcji {{Code|{{sr|#p["Nazwa przestrzeni nazw 2"](frame,...)|p=Pudełko}}}}. Definicja skrótowa funkcji: <syntaxhighlight lang="lua"> p["Nazwa przestrzeni nazw"]=function(frame,czy_uwzglednic_alternatywna_nazwe,i)...end; </syntaxhighlight> Wtedy ciało funkcji tej, czyli jego definicja w środku, jest: <syntaxhighlight lang="lua"> -- Jest liczony numer parametru nazwy przestrzeni nazw, domyslnie chodzi tu o numer bazowy parametrów przestrzennych; local numer_jednostki=i or frame.args["numer jednostki"]; local liczba_numer_jednostki=((numer_jednostki)and(tonumber(numer_jednostki))or 0); local pudelko_pomocne_modul=require("Module:Pudełko/Pomocne"); -- Liczy nazwę przestrzeni nazw na podstawie podanych parametrów; return pudelko_pomocne_modul.Nazwa_przestrzeni_nazw(frame,0, czy_uwzglednic_alternatywna_nazwe,liczba_numer_jednostki); </syntaxhighlight> Parametry funkcji: * {{Code|frame}} - tablica ramki tablicy transportu, * {{Code|czy_uwzglednic_alternatywna_nazwe}} - czy ma uwzględniać nazwę przestrzeni nazw domyślną szablonu, dostępne wartości: {{Code|false}}, w której nazwa domyślna nie jest uwzględniana wtedy, oraz {{Code|nil}} i {{Code|true}}, które oznaczają to samo, w tym jeżeli ona jest uwzględniana, wtedy jest brany parametr pierwszy dziecka, który musi istnieć przy takiej wartości tego parametru, tzn. {{Code|{{m|Pudełko|Nazwa przestrzeni nazw|Szablon}}}}, a nazwa uzyskana nazwy przestrzeni nazw jest w takim przypadku błędna, a jeżeli nazwa domyślna jest błędna, czyli {{Code|{{m|Pudełko|Nazwa przestrzeni nazw|Moja przestrzeń}}}}, wtedy funkcja zwraca stan błędu {{Code|(błąd)}}. * {{Code|i}} - numer zmiennej nazwy przestrzeni nazw. Funkcja wykorzystuje {{Code|{{sr|#p.Nazwa_przestrzeni_nazw(frame,...)|p=Pudełko/Pomocne}}}} do wyznaczania ogólnego nazwy przestrzeni nazw dla pozycji bazowej i numerkowej, tzn. dla pozycji: jeden, dwa, trzy,..., itd, i ich ogólnej. Parametry ramki tablicy transportu dziecka: * {{Code|nazwa przestrzeni nazw}}, {{Code|nazwa przestrzeni nazw 1}}, {{Code|nazwa przestrzeni nazw 2}}, {{Code|nazwa przestrzeni nazw 3}},..., {{Code|nazwa przestrzeni nazw i}} - nazwy przestrzeni nazw dla pozycji bazowej, numerkowej i ogólnej, * {{Code|typ jednostki}}, {{Code|typ jednostki 1}}, {{Code|typ jednostki 2}}, {{Code|typ jednostki 3}},..., {{Code|typ jednostki i}} - typy jednostek, którym odpowiadają pewne przestrzenie przedmiotowe, dla pozycji bazowej, numerkowej i ogólnej, ** {{Code|dyskusja typu jednostki}}, {{Code|dyskusja typu jednostki 1}}, {{Code|dyskusja typ jednostki 2}}, {{Code|dyskusja typ jednostki 3}},..., {{Code|dyskusja typ jednostki i}} - czy dany typ jednostki ma przedstawiać, jeśli niepusta, przestrzeń dyskusji dla pozycji bazowej, numerkowej i ogólnej, * {{Code|numer jednostki}} - jak parametr {{Code|i}} nie został ustawiony, to wtedy liczy się ta zmienna. Parametr ramki tablicy transportu rodzica szablonu: * {{Code|nazwa przestrzeni nazw}}, {{Code|nazwa przestrzeni nazw 1}}, {{Code|nazwa przestrzeni nazw 2}}, {{Code|nazwa przestrzeni nazw 3}},..., {{Code|nazwa przestrzeni nazw i}} - nazwy przestrzeni nazw dla pozycji bazowej oraz zwykłej i ogólnej numerkowej, * {{Code|typ jednostki}}, {{Code|typ jednostki 1}}, {{Code|typ jednostki 2}}, {{Code|typ jednostki 3}},..., {{Code|typ jednostki i}} - typy jednostek, którym odpowiadają pewne przestrzenie przedmiotowe, dla pozycji bazowej, numerkowej i ogólnej, ** {{Code|dyskusja typu jednostki}}, {{Code|dyskusja typu jednostki 1}}, {{Code|dyskusja typ jednostki 2}}, {{Code|dyskusja typ jednostki 3}},..., {{Code|dyskusja typ jednostki i}} - czy dany typ jednostki ma przedstawiać, jeśli niepusta, przestrzeń dyskusji dla pozycji bazowej, numerkowej i ogólnej. Przykłady: <syntaxhighlight lang="mediawiki"> {{Nazwa szablonu|nazwa przestrzeni nazw=Wikibooks|nazwa przestrzeni nazw 2=Szablon|nazwa przestrzeni nazw i=Moduł}} </syntaxhighlight> W dziecku powiedzmy jest wywołanie, i szukamy nazwy przestrzeni nazw o numerze dwa, która nie została podana, ale istnieje za to jej wersji ogólna {{Code|nazwa przestrzeni nazw i}} i domyślna {{Code|nazwa przestrzeni nazw}}: <syntaxhighlight lang="mediawiki"> {{#invoke:Pudełko|Nazwa przestrzeni nazw|numer jednostki=1}} </syntaxhighlight> Na podstawie powyższego przykładu otrzymamy wynik o schemacie, nie wyniku, bo tam nie ma zmiennej {{Code|nazwa przestrzeni nazw 1}}, ale jest {{Code|nazwa przestrzeni nazw i}}: <syntaxhighlight lang="mediawiki"> <!-- Ale nie "nazwa przestrzeni nazw", bo jej nie ma, ale za to istnieje "nazwa przestrzeni nazw i"; --> <!-- nazwa przestrzeni nazw 1=nazwa przestrzeni nazw i=Moduł; --> <!-- Czyli wynik: --> Moduł <!-- Widzimy, że wygenerowała się nazwa przestrzeni nazw, którą jest przestrzeń programowa, którą również jest "Szablon"; --> </syntaxhighlight> Nie jest brana w tym powyższym przykładzie zmienna {{Code|nazwa przestrzeni nazw}}, bo jej nie ma, ale za to jest {{Code|nazwa przestrzeni nazw i}}, bo ona występuje jako parametr domyślny ogólny dla parametrów numerkowych. Przykłady w wikikodzie: * {{Code|{{m|Pudełko|Nazwa przestrzeni nazw|numer jednostki{{=}}2}}}} → {{Tt|{{#invoke:Pudełko|Nazwa przestrzeni nazw|numer jednostki=2}}}} * {{Code|{{m|Pudełko|Nazwa przestrzeni nazw|Szablon|nazwa przestrzeni nazw i{{=}}Moja przestrzeń|numer jednostki{{=}}2}}}} → {{Tt|{{#invoke:Pudełko|Nazwa przestrzeni nazw|Szablon|nazwa przestrzeni nazw i=Moja przestrzeń|numer jednostki=2}}}} * {{Code|{{m|Pudełko|Nazwa przestrzeni nazw|nazwa przestrzeni nazw 2{{=}}Szablon|numer jednostki{{=}}2}}}} → {{Tt|{{#invoke:Pudełko|Nazwa przestrzeni nazw|nazwa przestrzeni nazw 2=Szablon|numer jednostki=2}}}} * {{Code|{{m|Pudełko|Nazwa przestrzeni nazw|nazwa przestrzeni nazw 2{{=}}Szablon|numer jednostki{{=}}2}}}} → {{Tt|{{#invoke:Pudełko|Nazwa przestrzeni nazw|nazwa przestrzeni nazw i=Szablon|numer jednostki=2}}}} * {{Code|{{m|Pudełko|Nazwa przestrzeni nazw|nazwa przestrzeni nazw{{=}}Szablon|numer jednostki{{=}}2}}}} → {{Tt|{{#invoke:Pudełko|Nazwa przestrzeni nazw|nazwa przestrzeni nazw=Szablon|numer jednostki=2}}}} Powyżej dla przykładu podano parametry nie w rodzicu w szablonie, tylko w dziecku, jeśli chodzi o parametry nazw przestrzeni nazw, ale ich się za to nie powinno podawać w tych ramach, tylko w szablonach, w których wywoływane są te ramki pudełek {{Code|{{m|Pudełko}}}}, ale tak tutaj tak zrobiono by było najłatwiej sprawdzić działanie tego typu funkcji. Analogicznie możemy podawać parametry typu jednostki, np.: wywołaniu modułowym {{Code|{{m|Pudełko|Nazwa przestrzeni nazw|typ jednostki 2{{=}}strona szablonu|numer jednostki{{=}}2}}}}, ale o tym więcej w rozdziałach {{Code|{{sr|# p["Typ jednostki"](frame,i)|p=Pudełko}}}}, {{Code|{{sr|#p["Typ jednostki 2"](frame,i)|p=Pudełko}}}}, {{Code|{{sr|#p["Typ jednostki 3"](frame,i)|p=Pudełko}}}} itp. w „{{sr|#Funkcje typu jednostki|p=Pudełko}}”, on definiuje przestrzenie przedmiotowe, ale można użyć parametru dyskusji typu jednostki z wartością niepustą, wtedy wyświetli się nazwa przestrzeni nazw dyskusji. Również parametry typu jednostki nie powinno się podawać w dziecku w ramce, tylko w rodzicu w szablonie jako parametry, w którym ta ramka jest wywoływana, ale tutaj podano jedynie dla przykładu, jak najłatwiej sprawdzić działanie tych parametrów tej funkcji. Najpierw w funkcji nagłówku brane są parametry nazw przestrzeni nazw, a jeżeli ich nie ma, to parametry typu jednostki, a jeżeli nie ma, to generowane są nazwy na podstawie aktualnego modułu. === {{Code|p["Nazwa przedmiotowej przestrzeni nazw"](frame,...)}} === Funkcja pisze przedmiotową nazwę przestrzeni nazw jakikolwiek nazwy przestrzeni nazw (tzn. nazwę przedmiotową nazwy przestrzenie nazw, czyli nie dyskusji, zamieniana jest na nią samą, czyli identyfikator przestrzeni się nie zmienia, a dyskusji, nie przedmiotową, przekształca się na przedmiotową jej odpowiadającą, czyli w tym przypadku identyfikator przestrzeni zmniejsza się o numer mniej), według podanej w zmiennej {{Code|nazwa przestrzeni nazw}} dla pozycja bazowej w podanych parametrach szablonu rodzicu ramki dziecka, lub dla innej pozycji należy parametr podawać w formie {{Code|nazwa przestrzeni nazw 1}}, {{Code|nazwa przestrzeni nazw 2}}, {{Code|nazwa przestrzeni nazw 3}},..., lub te parametry można podać w postaci ogólnej {{Code|nazwa przestrzeni nazw i}}. Parametry podaje się w parametrach rodzica wywołania tej funkcji {{Code|{{m|Pudełko|Nazwa przedmiotowej przestrzeni nazw}}}} (ale ich nie trzeba podawać w dziecku, ale można) i w parametrach dziecka, jeśli chodzi o zmienną {{Code|numer jednostki}}, czyli np.: {{Code|{{m|Pudełko|Nazwa przedmiotowej przestrzeni nazw|numer jednostki{{=}}<jakaś liczba całkowita dodatnia>}}}}. Te parametry przestrzenne zamiast w rodzicu w szablonie można podać w ramce dziecka, wtedy parametry dziecka mają pierwszeństwo. Parametry przestrzenne mogą mogą być podane w postaci przestrzeni przedmiotowej lub dyskusji, ale ta funkcja zawsze ją zamienia na przedmiotową. Przestrzeń nazw z parametrów nazw przestrzennych może odpowiadać wartości przestrzeni głównej, to wtedy odpowiednia przestrzeń nazw z parametru nazwy jednostki się nie liczy w tej funkcji, aby się liczyła należy użyć funkcji {{Code|{{sr|#p["Nazwa przedmiotowej przestrzeni nazw 2"](frame,...)|p=Pudełko}}}}. Definicja skrótowa funkcji: <syntaxhighlight lang="lua"> p["Nazwa przedmiotowej przestrzeni nazw"]=function(frame,czy_uwzglednic_alternatywna_nazwe,i)...end; </syntaxhighlight> Wtedy ciało funkcji tej, czyli jego definicja w środku, jest: <syntaxhighlight lang="lua"> -- Jest liczony numer parametru nazwy przestrzeni nazw, domyslnie chodzi tu o numer bazowy parametrów przestrzennych; local numer_jednostki=i or frame.args["numer jednostki"]; local liczba_numer_jednostki=((numer_jednostki)and(tonumber(numer_jednostki))or 0); local pudelko_pomocne_modul=require("Module:Pudełko/Pomocne"); -- Liczy nazwę przestrzeni nazw przedmiotową na podstawie podanych parametrów; return pudelko_pomocne_modul.Nazwa_przestrzeni_nazw(frame,1, czy_uwzglednic_alternatywna_nazwe,liczba_numer_jednostki); </syntaxhighlight> Parametry funkcji: * {{Code|frame}} - tablica ramki tablicy transportu, * {{Code|czy_uwzglednic_alternatywna_nazwe}} - czy ma uwzględniać nazwę przestrzeni nazw domyślną szablonu, dostępne wartości: {{Code|false}}, w której nazwa domyślna nie jest uwzględniana wtedy, oraz {{Code|nil}} i {{Code|true}}, które oznaczają to samo, w tym jeżeli ona jest uwzględniana, wtedy jest brany parametr pierwszy dziecka, który musi istnieć przy takiej wartości tego parametru, tzn. {{Code|{{m|Pudełko|Nazwa przedmiotowej przestrzeni nazw|Dyskusja szablonu}}}} - ta nazwa domyślna zostanie zamieniona na przedmiotową, a jak ona by była przedmiotowa, to żadnej zamiany by nie było, a nazwa uzyskana z nazwy przestrzeni nazw z parametrów przestrzennych jest w takim przypadku błędna, to w takim razie brany jest ten parametr, a jeżeli ta nazwa domyślna jest błędna, czyli {{Code|{{m|Pudełko|Nazwa przedmiotowej przestrzeni nazw|Moja przestrzeń}}}}, wtedy funkcja zwraca stan błędu {{Code|(błąd)}}. * {{Code|i}} - numer zmiennej nazwy przestrzeni nazw. Funkcja wykorzystuje {{Code|{{sr|#p.Nazwa_przestrzeni_nazw(frame,...)|p=Pudełko/Pomocne}}}} do wyznaczania ogólnego nazwy przestrzeni nazw dla pozycji bazowej i numerkowej, tzn. dla pozycji: jeden, dwa, trzy,..., itd, i ich ogólnej. Parametry ramki tablicy transportu dziecka: * {{Code|nazwa przestrzeni nazw}}, {{Code|nazwa przestrzeni nazw 1}}, {{Code|nazwa przestrzeni nazw 2}}, {{Code|nazwa przestrzeni nazw 3}},..., {{Code|nazwa przestrzeni nazw i}} - nazwy przestrzeni nazw dla pozycji bazowej, numerkowej i ogólnej, * {{Code|typ jednostki}}, {{Code|typ jednostki 1}}, {{Code|typ jednostki 2}}, {{Code|typ jednostki 3}},..., {{Code|typ jednostki i}} - typy jednostek, którym odpowiadają pewne przestrzenie przedmiotowe, dla pozycji bazowej, numerkowej i ogólnej, ** {{Code|dyskusja typu jednostki}}, {{Code|dyskusja typu jednostki 1}}, {{Code|dyskusja typ jednostki 2}}, {{Code|dyskusja typ jednostki 3}},..., {{Code|dyskusja typ jednostki i}} - czy dany typ jednostki ma przedstawiać, jeśli niepusta, przestrzeń dyskusji dla pozycji bazowej, numerkowej i ogólnej, * {{Code|numer jednostki}} - jak parametr {{Code|i}} nie został ustawiony, to wtedy liczy się ta zmienna. Parametr ramki tablicy transportu rodzica szablonu: * {{Code|nazwa przestrzeni nazw}}, {{Code|nazwa przestrzeni nazw 1}}, {{Code|nazwa przestrzeni nazw 2}}, {{Code|nazwa przestrzeni nazw 3}},..., {{Code|nazwa przestrzeni nazw i}} - nazwy przestrzeni nazw dla pozycji bazowej oraz zwykłej i ogólnej numerkowej, * {{Code|typ jednostki}}, {{Code|typ jednostki 1}}, {{Code|typ jednostki 2}}, {{Code|typ jednostki 3}},..., {{Code|typ jednostki i}} - typy jednostek, którym odpowiadają pewne przestrzenie przedmiotowe, dla pozycji bazowej, numerkowej i ogólnej, ** {{Code|dyskusja typu jednostki}}, {{Code|dyskusja typu jednostki 1}}, {{Code|dyskusja typ jednostki 2}}, {{Code|dyskusja typ jednostki 3}},..., {{Code|dyskusja typ jednostki i}} - czy dany typ jednostki ma przedstawiać, jeśli niepusta, przestrzeń dyskusji dla pozycji bazowej, numerkowej i ogólnej. Przykłady: <syntaxhighlight lang="mediawiki"> {{Nazwa szablonu|nazwa przestrzeni nazw=Dyskusja Wikibooks|nazwa przestrzeni nazw 2=Dyskusja szablonu|nazwa przestrzeni nazw i=Dyskusja modułu}} </syntaxhighlight> W dziecku powiedzmy jest wywołanie, i szukamy nazwy przestrzeni nazw o numerze dwa, która nie została podana, ale istnieje za to jej wersji ogólna {{Code|nazwa przestrzeni nazw i}} i domyślna {{Code|nazwa przestrzeni nazw}}: <syntaxhighlight lang="mediawiki"> {{#invoke:Pudełko|Nazwa przedmiotowej przestrzeni nazw|numer jednostki=1}} </syntaxhighlight> Na podstawie powyższego przykładu otrzymamy wynik o schemacie, nie wyniku, bo tam nie ma zmiennej {{Code|nazwa przestrzeni nazw 1}}, ale jest {{Code|nazwa przestrzeni nazw i}}: <syntaxhighlight lang="mediawiki"> <!-- Ale nie "nazwa przestrzeni nazw", bo jej nie ma, ale za to istnieje "nazwa przestrzeni nazw i"; --> <!-- nazwa przestrzeni nazw 1=nazwa przestrzeni nazw i=Dyskusja modułu; --> <!-- Czyli wynik: --> Moduł <!-- Widzimy, że wygenerowała się nazwa przestrzeni nazw, którą jest przestrzeń przedmiotowa programowa przestrzeni dyskusji "Dyskusja modułu", którą również jest "Szablon" jego przestrzeni dyskusji "Dyskusja szablonu", a dla ich przestrzeni przedmiotowej, zamiast dyskusji, to samo przekształca się na to samo; --> </syntaxhighlight> Nie jest brana w tym powyższym przykładzie zmienna {{Code|nazwa przestrzeni nazw}}, bo jej nie ma, ale za to jest {{Code|nazwa przestrzeni nazw i}}, bo ona występuje jako parametr domyślny ogólny dla parametrów numerkowych. Przykłady w wikikodzie: * {{Code|{{m|Pudełko|Nazwa przedmiotowej przestrzeni nazw|numer jednostki{{=}}2}}}} → {{Tt|{{#invoke:Pudełko|Nazwa przedmiotowej przestrzeni nazw|numer jednostki=2}}}} * {{Code|{{m|Pudełko|Nazwa przedmiotowej przestrzeni nazw|Dyskusja szablonu|nazwa przestrzeni nazw i{{=}}Moja przestrzeń|numer jednostki{{=}}2}}}} → {{Tt|{{#invoke:Pudełko|Nazwa przedmiotowej przestrzeni nazw|Dyskusja szablonu|nazwa przestrzeni nazw i=Moja przestrzeń|numer jednostki=2}}}} * {{Code|{{m|Pudełko|Nazwa przedmiotowej przestrzeni nazw|nazwa przestrzeni nazw 2{{=}}Dyskusja szablonu|numer jednostki{{=}}2}}}} → {{Tt|{{#invoke:Pudełko|Nazwa przedmiotowej przestrzeni nazw|nazwa przestrzeni nazw 2=Dyskusja szablonu|numer jednostki=2}}}} * {{Code|{{m|Pudełko|Nazwa przedmiotowej przestrzeni nazw|nazwa przestrzeni nazw 2{{=}}Dyskusja szablonu|numer jednostki{{=}}2}}}} → {{Tt|{{#invoke:Pudełko|Nazwa przedmiotowej przestrzeni nazw|nazwa przestrzeni nazw i=Dyskusja szablonu|numer jednostki=2}}}} * {{Code|{{m|Pudełko|Nazwa przedmiotowej przestrzeni nazw|nazwa przestrzeni nazw{{=}}Dyskusja szablonu|numer jednostki{{=}}2}}}} → {{Tt|{{#invoke:Pudełko|Nazwa przedmiotowej przestrzeni nazw|nazwa przestrzeni nazw=Dyskusja szablonu|numer jednostki=2}}}} Powyżej dla przykładu podano parametry nie w rodzicu w szablonie, tylko w dziecku, jeśli chodzi o parametry nazw przestrzeni nazw, ale ich się za to nie powinno podawać w tych ramach, tylko w szablonach, w których wywoływane są te ramki pudełek {{Code|{{m|Pudełko}}}}, ale tak tutaj tak zrobiono by było najłatwiej sprawdzić działanie tego typu funkcji. Analogicznie możemy podawać parametry typu jednostki, np.: wywołaniu modułowym {{Code|{{m|Pudełko|Nazwa przedmiotowej przestrzeni nazw|typ jednostki 2{{=}}strona szablonu|numer jednostki{{=}}2}}}}, ale o tym więcej w rozdziałach {{Code|{{sr|# p["Typ jednostki"](frame,i)|p=Pudełko}}}}, {{Code|{{sr|#p["Typ jednostki 2"](frame,i)|p=Pudełko}}}}, {{Code|{{sr|#p["Typ jednostki 3"](frame,i)|p=Pudełko}}}} itp. w „{{sr|#Funkcje typu jednostki|p=Pudełko}}”, ale wtedy ta sama nazwa przestrzeni nazw reprezentowana przez {{Parametr|typ jednostki 2|strona szablonu}}, jest zamieniana na to samo, lepiej jest tutaj używać parametrów przestrzennych nazw niż typu jednostki, bo typ jednostki ma taką samą wartość dla przestrzeni przedmiotowej, co dyskusji. Tutaj parametr dyskusji typu jednostki bazowy i numerkowy ogólny, czy szczegółowy, nie gra roli, bo nawet, gdy wygenerujemy nazwę przestrzeni dyskusji za pomoca tego parametru, to i tak otrzymamy na samym końcu jego nazwę przedmiotową. Również parametry typu jednostki nie powinno się podawać w dziecku w ramce, tylko w rodzicu w szablonie jako parametry, w którym ta ramka jest wywoływana, ale tutaj podano jedynie dla przykładu, jak najłatwiej sprawdzić działanie tych parametrów tej funkcji. Najpierw w funkcji nagłówku brane są parametry nazw przestrzeni nazw, a jeżeli ich nie ma, to parametry typu jednostki, a jeżeli nie ma, to generowane są nazwy na podstawie aktualnego modułu. === {{Code|p["Nazwa przestrzeni nazw dyskusji"](frame,...)}} === Funkcja pisze nazwę przestrzeni nazw dyskusji jakikolwiek nazwy przestrzeni nazw (tzn. nazwę przedmiotową nazwy przestrzenie nazw, czyli nie dyskusji, zamieniana jest na dyskusji, czyli identyfikator przestrzeni się zmienia jeden wyżej, a dyskusji, nie przedmiotową, przekształca się na tą samą), według podanej w zmiennej {{Code|nazwa przestrzeni nazw}} dla pozycja bazowej w podanych parametrach szablonu rodzicu ramki dziecka, lub dla innej pozycji należy parametr podawać w formie {{Code|nazwa przestrzeni nazw 1}}, {{Code|nazwa przestrzeni nazw 2}}, {{Code|nazwa przestrzeni nazw 3}},..., lub te parametry można podać w postaci ogólnej {{Code|nazwa przestrzeni nazw i}}. Parametry podaje się w parametrach rodzica wywołania tej funkcji {{Code|{{m|Pudełko|Nazwa przestrzeni nazw dyskusji}}}} (ale ich nie trzeba podawać w dziecku, ale można) i w parametrach dziecka, jeśli chodzi o zmienną {{Code|numer jednostki}}, czyli np.: {{Code|{{m|Pudełko|Nazwa przestrzeni nazw dyskusji|numer jednostki{{=}}<jakaś liczba całkowita dodatnia>}}}}. Te parametry przestrzenne zamiast w rodzicu w szablonie można podać w ramce dziecka, wtedy parametry dziecka mają pierwszeństwo. Parametry przestrzenne mogą mogą być podane w postaci przestrzeni przedmiotowej lub dyskusji, ale ta funkcja zawsze ją zamienia na dyskusji. Przestrzeń nazw z parametrów nazw przestrzennych może odpowiadać wartości przestrzeni głównej, to wtedy odpowiednia przestrzeń nazw z parametru nazwy jednostki się nie liczy w tej funkcji, aby się liczyła należy użyć funkcji {{Code|{{sr|#p["Nazwa przestrzeni nazw dyskusji 2"](frame,...)|p=Pudełko}}}}. Definicja skrótowa funkcji: <syntaxhighlight lang="lua"> p["Nazwa przestrzeni nazw dyskusji"]=function(frame,czy_uwzglednic_alternatywna_nazwe,i)...end; </syntaxhighlight> Wtedy ciało funkcji tej, czyli jego definicja w środku, jest: <syntaxhighlight lang="lua"> -- Jest liczony numer parametru nazwy przestrzeni nazw, domyslnie chodzi tu o numer bazowy parametrów przestrzennych; local numer_jednostki=i or frame.args["numer jednostki"]; local liczba_numer_jednostki=((numer_jednostki)and(tonumber(numer_jednostki))or 0); local pudelko_pomocne_modul=require("Module:Pudełko/Pomocne"); -- Liczy nazwę przestrzeni nazw dyskusji na podstawie podanych parametrów; return pudelko_pomocne_modul.Nazwa_przestrzeni_nazw(frame,2, czy_uwzglednic_alternatywna_nazwe,liczba_numer_jednostki); </syntaxhighlight> Parametry funkcji: * {{Code|frame}} - tablica ramki tablicy transportu, * {{Code|czy_uwzglednic_alternatywna_nazwe}} - czy ma uwzględniać nazwę przestrzeni nazw domyślną szablonu, dostępne wartości: {{Code|false}}, w której nazwa domyślna nie jest uwzględniana wtedy, oraz {{Code|nil}} i {{Code|true}}, które oznaczają to samo, w tym jeżeli ona jest uwzględniana, wtedy jest brany parametr pierwszy dziecka, który musi istnieć przy takiej wartości tego parametru, tzn. {{Code|{{m|Pudełko|Nazwa przestrzeni nazw dyskusji|Szablon}}}} - ta nazwa domyślna zostanie przekształcona na dyskusji, a jeżeli ona by była dyskusji, to nie byłoby żadnego przekształcenia, a nazwa uzyskana nazwy przestrzeni nazw z parametrów przestrzennych jest w takim przypadku błędna, to w takim razie brany jest ten parametr, a jeżeli nazwa domyślna jest błędna, czyli {{Code|{{m|Pudełko|Nazwa przestrzeni nazw dyskusji|Moja przestrzeń}}}}, wtedy funkcja zwraca stan błędu {{Code|(błąd)}}. * {{Code|i}} - numer zmiennej nazwy przestrzeni nazw. Funkcja wykorzystuje {{Code|{{sr|#p.Nazwa_przestrzeni_nazw(frame,...)|p=Pudełko/Pomocne}}}} do wyznaczania ogólnego nazwy przestrzeni nazw dla pozycji bazowej i numerkowej, tzn. dla pozycji: jeden, dwa, trzy,..., itd, i ich ogólnej. Parametry ramki tablicy transportu dziecka: * {{Code|nazwa przestrzeni nazw}}, {{Code|nazwa przestrzeni nazw 1}}, {{Code|nazwa przestrzeni nazw 2}}, {{Code|nazwa przestrzeni nazw 3}},..., {{Code|nazwa przestrzeni nazw i}} - nazwy przestrzeni nazw dla pozycji bazowej, numerkowej i ogólnej, * {{Code|typ jednostki}}, {{Code|typ jednostki 1}}, {{Code|typ jednostki 2}}, {{Code|typ jednostki 3}},..., {{Code|typ jednostki i}} - typy jednostek, którym odpowiadają pewne przestrzenie przedmiotowe, dla pozycji bazowej, numerkowej i ogólnej, ** {{Code|dyskusja typu jednostki}}, {{Code|dyskusja typu jednostki 1}}, {{Code|dyskusja typ jednostki 2}}, {{Code|dyskusja typ jednostki 3}},..., {{Code|dyskusja typ jednostki i}} - czy dany typ jednostki ma przedstawiać, jeśli niepusta, przestrzeń dyskusji dla pozycji bazowej, numerkowej i ogólnej, * {{Code|numer jednostki}} - jak parametr {{Code|i}} nie został ustawiony, to wtedy liczy się ta zmienna. Parametr ramki tablicy transportu rodzica szablonu: * {{Code|nazwa przestrzeni nazw}}, {{Code|nazwa przestrzeni nazw 1}}, {{Code|nazwa przestrzeni nazw 2}}, {{Code|nazwa przestrzeni nazw 3}},..., {{Code|nazwa przestrzeni nazw i}} - nazwy przestrzeni nazw dla pozycji bazowej oraz zwykłej i ogólnej numerkowej, * {{Code|typ jednostki}}, {{Code|typ jednostki 1}}, {{Code|typ jednostki 2}}, {{Code|typ jednostki 3}},..., {{Code|typ jednostki i}} - typy jednostek, którym odpowiadają pewne przestrzenie przedmiotowe, dla pozycji bazowej, numerkowej i ogólnej, ** {{Code|dyskusja typu jednostki}}, {{Code|dyskusja typu jednostki 1}}, {{Code|dyskusja typ jednostki 2}}, {{Code|dyskusja typ jednostki 3}},..., {{Code|dyskusja typ jednostki i}} - czy dany typ jednostki ma przedstawiać, jeśli niepusta, przestrzeń dyskusji dla pozycji bazowej, numerkowej i ogólnej. Przykłady: <syntaxhighlight lang="mediawiki"> {{Nazwa szablonu|nazwa przestrzeni nazw=Wikibooks|nazwa przestrzeni nazw 2=Szablon|nazwa przestrzeni nazw i=Moduł}} </syntaxhighlight> W dziecku powiedzmy jest wywołanie, i szukamy nazwy przestrzeni nazw o numerze dwa, która nie została podana, ale istnieje za to jej wersji ogólna {{Code|nazwa przestrzeni nazw i}} i domyślna {{Code|nazwa przestrzeni nazw}}: <syntaxhighlight lang="mediawiki"> {{#invoke:Pudełko|Nazwa przestrzeni nazw dyskusji|numer jednostki=1}} </syntaxhighlight> Na podstawie powyższego przykładu otrzymamy wynik o schemacie, nie wyniku, bo tam nie ma zmiennej {{Code|nazwa przestrzeni nazw 1}}, ale jest {{Code|nazwa przestrzeni nazw i}}: <syntaxhighlight lang="mediawiki"> <!-- Ale nie "nazwa przestrzeni nazw", bo jej nie ma, ale za to istnieje "nazwa przestrzeni nazw i"; --> <!-- nazwa przestrzeni nazw 1=nazwa przestrzeni nazw i=Moduł; --> <!-- Czyli wynik: --> Dyskusja modułu <!-- Widzimy, że wygenerowała się nazwa przestrzeni nazw, którą jest przestrzeń dyskusji przestrzeni programowej przestrzeni przedmiotowej "Moduł", którą również jest "Szablon" jego przestrzeni dyskusji "Dyskusja szablonu", a dla ich przestrzeni przedmiotowej, zamiast dyskusji, to przekształca się na dyskusji jej odpowiadającą; --> </syntaxhighlight> Nie jest brana w tym powyższym przykładzie zmienna {{Code|nazwa przestrzeni nazw}}, bo jej nie ma, ale za to jest {{Code|nazwa przestrzeni nazw i}}, bo ona występuje jako parametr domyślny ogólny dla parametrów numerkowych. Przykłady w wikikodzie: * {{Code|{{m|Pudełko|Nazwa przestrzeni nazw dyskusji|numer jednostki{{=}}2}}}} → {{Tt|{{#invoke:Pudełko|Nazwa przestrzeni nazw dyskusji|numer jednostki=2}}}} * {{Code|{{m|Pudełko|Nazwa przestrzeni nazw dyskusji|Szablon|nazwa przestrzeni nazw i{{=}}Moja przestrzeń|numer jednostki{{=}}2}}}} → {{Tt|{{#invoke:Pudełko|Nazwa przestrzeni nazw dyskusji|Szablon|nazwa przestrzeni nazw i=Moja przestrzeń|numer jednostki=2}}}} * {{Code|{{m|Pudełko|Nazwa przestrzeni nazw dyskusji|nazwa przestrzeni nazw 2{{=}}Szablon|numer jednostki{{=}}2}}}} → {{Tt|{{#invoke:Pudełko|Nazwa przestrzeni nazw dyskusji|nazwa przestrzeni nazw 2=Szablon|numer jednostki=2}}}} * {{Code|{{m|Pudełko|Nazwa przestrzeni nazw dyskusji|nazwa przestrzeni nazw 2{{=}}Szablon|numer jednostki{{=}}2}}}} → {{Tt|{{#invoke:Pudełko|Nazwa przestrzeni nazw dyskusji|nazwa przestrzeni nazw i=Szablon|numer jednostki=2}}}} * {{Code|{{m|Pudełko|Nazwa przestrzeni nazw dyskusji|nazwa przestrzeni nazw{{=}}Szablon|numer jednostki{{=}}2}}}} → {{Tt|{{#invoke:Pudełko|Nazwa przestrzeni nazw dyskusji|nazwa przestrzeni nazw=Szablon|numer jednostki=2}}}} Powyżej dla przykładu podano parametry nie w rodzicu w szablonie, tylko w dziecku, jeśli chodzi o parametry nazw przestrzeni nazw, ale ich się za to nie powinno podawać w tych ramach, tylko w szablonach, w których wywoływane są te ramki pudełek {{Code|{{m|Pudełko}}}}, ale tak tutaj tak zrobiono by było najłatwiej sprawdzić działanie tego typu funkcji. Analogicznie możemy podawać parametry typu jednostki, np.: wywołaniu modułowym {{Code|{{m|Pudełko|Nazwa przestrzeni nazw dyskusji|typ jednostki 2{{=}}strona szablonu|numer jednostki{{=}}2}}}}, ale o tym więcej w rozdziałach {{Code|{{sr|# p["Typ jednostki"](frame,i)|p=Pudełko}}}}, {{Code|{{sr|#p["Typ jednostki 2"](frame,i)|p=Pudełko}}}}, {{Code|{{sr|#p["Typ jednostki 3"](frame,i)|p=Pudełko}}}} itp. w „{{sr|#Funkcje typu jednostki|p=Pudełko}}”, ale wtedy nazwa przestrzeni nazw reprezentowana przez {{Parametr|typ jednostki 2|strona szablonu}}, jest zamieniana na nazwę przestrzeni nazw dyskusji. Parametr dyskusji typu jednostki bazowy lub dla danego numerka ogólny, czy szczegółowy, nie gra roli. Również parametry typu jednostki nie powinno się podawać w dziecku w ramce, tylko w rodzicu w szablonie jako parametry, w którym ta ramka jest wywoływana, ale tutaj podano jedynie dla przykładu, jak najłatwiej sprawdzić działanie tych parametrów tej funkcji. Najpierw w funkcji nagłówku brane są parametry nazw przestrzeni nazw, a jeżeli ich nie ma, to parametry typu jednostki, a jeżeli nie ma, to generowane są nazwy na podstawie aktualnego modułu. == Funkcje nazw przestrzeni nazw drugiej wersji == === {{Code|p["Nazwa przestrzeni nazw 2"](frame,...)}} === Funkcja pisze nazwę przestrzeni nazw, niezależnie, czy to jest przedmiotowa, czy dyskusji, według podanej w zmiennej {{Code|nazwa przestrzeni nazw}} dla pozycja bazowej w podanych parametrach szablonu rodzicu ramki dziecka, lub dla innej pozycji należy parametr podawaćw formie {{Code|nazwa przestrzeni nazw 1}}, {{Code|nazwa przestrzeni nazw 2}}, {{Code|nazwa przestrzeni nazw 3}},..., lub te parametry można podać w postaci ogólnej {{Code|nazwa przestrzeni nazw i}}. Parametry podaje się w parametrach rodzica wywołania tej funkcji {{Code|{{m|Pudełko|Nazwa przestrzeni nazw 2}}}} (ale ich nie trzeba podawać w dziecku, ale można) i w parametrach dziecka, jeśli chodzi o zmienną {{Code|numer jednostki}}, czyli np.: {{Code|{{m|Pudełko|Nazwa przestrzeni nazw 2|numer jednostki{{=}}<jakaś liczba całkowita dodatnia>}}}}. Te parametry przestrzenne zamiast w rodzicu w szablonie można podać w ramce dziecka, wtedy parametry dziecka mają pierwszeństwo. Przestrzeń nazw z parametrów nazw przestrzennych może odpowiadać wartości przestrzeni głównej, to wtedy odpowiednia przestrzeń nazw z parametru nazwy jednostki się liczy w tej funkcji, wtedy jest liczona nazwa przestrzeni nazw z tego parametru. Definicja skrótowa funkcji: <syntaxhighlight lang="lua"> p["Nazwa przestrzeni nazw 2"]=function(frame,czy_uwzglednic_alternatywna_nazwe,i)...end; </syntaxhighlight> Wtedy ciało funkcji tej, czyli jego definicja w środku, jest: <syntaxhighlight lang="lua"> local pudelko_pomocne_modul=require("Module:Pudełko/Pomocne"); -- Liczy nazwę przestrzeni nazw, jeżeli z parametrów przestrzennych przestrzeń wskazuje na główną, to wtedy jest liczona przestrzeń nazw z nazwy jednostki; return pudelko_pomocne_modul.Nazwa_przestrzeni_nazw_2(frame,czy_uwzglednic_alternatywna_nazwe,i) </syntaxhighlight> Parametry funkcji: * {{Code|frame}} - tablica ramki tablicy transportu, * {{Code|czy_uwzglednic_alternatywna_nazwe}} - czy ma uwzględniać nazwę przestrzeni nazw domyślną szablonu, dostępne wartości: {{Code|false}}, w której nazwa domyślna nie jest uwzględniana wtedy, oraz {{Code|nil}} i {{Code|true}}, które oznaczają to samo, w tym jeżeli ona jest uwzględniana, wtedy jest brany parametr pierwszy dziecka, który musi istnieć przy takiej wartości tego parametru, tzn. {{Code|{{m|Pudełko|Nazwa przestrzeni nazw 2|Szablon}}}}, a nazwa uzyskana nazwy przestrzeni nazw jest w takim przypadku błędna, a jeżeli nazwa domyślna jest błędna, czyli {{Code|{{m|Pudełko|Nazwa przestrzeni nazw 2|Moja przestrzeń}}}}, wtedy funkcja zwraca stan błędu {{Code|(błąd)}}. * {{Code|i}} - numer zmiennej nazwy przestrzeni nazw. Funkcja wykorzystuje {{Code|{{sr|#p.Nazwa_przestrzeni_nazw_2(frame,...)|p=Pudełko/Pomocne}}}} do wyznaczania ogólnego nazwy przestrzeni nazw dla pozycji bazowej i numerkowej, tzn. dla pozycji: jeden, dwa, trzy,..., itd, i ich ogólnej. Parametry ramki tablicy transportu dziecka: * {{Code|nazwa przestrzeni nazw}}, {{Code|nazwa przestrzeni nazw 1}}, {{Code|nazwa przestrzeni nazw 2}}, {{Code|nazwa przestrzeni nazw 3}},..., {{Code|nazwa przestrzeni nazw i}} - nazwy przestrzeni nazw dla pozycji bazowej, numerkowej i ogólnej, * {{Code|typ jednostki}}, {{Code|typ jednostki 1}}, {{Code|typ jednostki 2}}, {{Code|typ jednostki 3}},..., {{Code|typ jednostki i}} - typy jednostek, którym odpowiadają pewne przestrzenie przedmiotowe, dla pozycji bazowej, numerkowej i ogólnej, ** {{Code|dyskusja typu jednostki}}, {{Code|dyskusja typu jednostki 1}}, {{Code|dyskusja typ jednostki 2}}, {{Code|dyskusja typ jednostki 3}},..., {{Code|dyskusja typ jednostki i}} - czy dany typ jednostki ma przedstawiać, jeśli niepusta, przestrzeń dyskusji dla pozycji bazowej, numerkowej i ogólnej, * {{Code|numer jednostki}} - jak parametr {{Code|i}} nie został ustawiony, to wtedy liczy się ta zmienna. Parametr ramki tablicy transportu rodzica szablonu: * {{Code|nazwa przestrzeni nazw}}, {{Code|nazwa przestrzeni nazw 1}}, {{Code|nazwa przestrzeni nazw 2}}, {{Code|nazwa przestrzeni nazw 3}},..., {{Code|nazwa przestrzeni nazw i}} - nazwy przestrzeni nazw dla pozycji bazowej oraz zwykłej i ogólnej numerkowej, * {{Code|typ jednostki}}, {{Code|typ jednostki 1}}, {{Code|typ jednostki 2}}, {{Code|typ jednostki 3}},..., {{Code|typ jednostki i}} - typy jednostek, którym odpowiadają pewne przestrzenie przedmiotowe, dla pozycji bazowej, numerkowej i ogólnej, ** {{Code|dyskusja typu jednostki}}, {{Code|dyskusja typu jednostki 1}}, {{Code|dyskusja typ jednostki 2}}, {{Code|dyskusja typ jednostki 3}},..., {{Code|dyskusja typ jednostki i}} - czy dany typ jednostki ma przedstawiać, jeśli niepusta, przestrzeń dyskusji dla pozycji bazowej, numerkowej i ogólnej. Przykłady: <syntaxhighlight lang="mediawiki"> {{Nazwa szablonu|nazwa przestrzeni nazw=Wikibooks|nazwa przestrzeni nazw 1=Szablon|nazwa przestrzeni nazw i=|nazwa jednostki 2=Wikibooks:Strona}} </syntaxhighlight> W dziecku powiedzmy jest wywołanie, i szukamy nazwy przestrzeni nazw o numerze dwa, która została podana, ale istnieje za to jej wersji ogólna {{Code|nazwa przestrzeni nazw i}} i domyślna {{Code|nazwa przestrzeni nazw}}, ale wtedy dla tego numerkowego liczy się to ogólne z {{Code| i}}, a ponieważ ta nazwa jest pusta, więc będziemy liczyli nazwę przestrzeni nazw z {{Code|nazwa jednostki 2}}: <syntaxhighlight lang="mediawiki"> {{#invoke:Pudełko|Nazwa przestrzeni nazw 2|numer jednostki=2}} </syntaxhighlight> Na podstawie powyższego przykładu otrzymamy wynik o schemacie, nie wyniku, bo tam nie ma zmiennej {{Code|nazwa przestrzeni nazw 1}}, ale jest {{Code|nazwa przestrzeni nazw i}}: <syntaxhighlight lang="mediawiki"> <!-- Ale nie "nazwa przestrzeni nazw 2", bo jej nie ma, ale za to istnieje "nazwa przestrzeni nazw i"; --> <!-- nazwa przestrzeni nazw 2=nazwa przestrzeni nazw i=Moduł; --> <!-- Czyli wynik: --> Wikibooks <!-- Widzimy, że wygenerowała się nazwa przestrzeni nazw, którą jest przestrzeń programowa, którą również jest "Szablon"; --> </syntaxhighlight> Nie jest brana w tym powyższym przykładzie zmienna {{Code|nazwa przestrzeni nazw}}, bo jej nie ma, ale za to jest {{Code|nazwa przestrzeni nazw i}}, bo ona występuje jako parametr domyślny ogólny dla parametrów numerkowych. Przykłady w wikikodzie: * {{Code|{{m|Pudełko|Nazwa przestrzeni nazw 2|numer jednostki{{=}}2}}}} → {{Tt|{{#invoke:Pudełko|Nazwa przestrzeni nazw 2|numer jednostki=2}}}} * {{Code|{{m|Pudełko|Nazwa przestrzeni nazw 2|Szablon|nazwa przestrzeni nazw i{{=}}Moja przestrzeń|numer jednostki{{=}}2}}}} → {{Tt|{{#invoke:Pudełko|Nazwa przestrzeni nazw 2|Szablon|nazwa przestrzeni nazw i=Moja przestrzeń|numer jednostki=2}}}} * {{Code|{{m|Pudełko|Nazwa przestrzeni nazw 2|nazwa przestrzeni nazw 2{{=}}|nazwa jednostki 2{{=}}Szablon:Strona|numer jednostki{{=}}2}}}} → {{Tt|{{#invoke:Pudełko|Nazwa przestrzeni nazw 2|nazwa przestrzeni nazw 2=|nazwa jednostki 2=Szablon:Strona|numer jednostki=2}}}} * {{Code|{{m|Pudełko|Nazwa przestrzeni nazw 2|nazwa przestrzeni nazw 2{{=}}|nazwa jednostki 2{{=}}Szablon|numer jednostki{{=}}2}}}} → {{Tt|{{#invoke:Pudełko|Nazwa przestrzeni nazw 2|nazwa przestrzeni nazw i=|nazwa jednostki 2=Szablon:Strona|numer jednostki=2}}}} * {{Code|{{m|Pudełko|Nazwa przestrzeni nazw 2|nazwa przestrzeni nazw{{=}}|Szablon|nazwa jednostki 2{{=}}Wikibooks:Strona|numer jednostki{{=}}2}}}} → {{Tt|{{#invoke:Pudełko|Nazwa przestrzeni nazw 2|nazwa przestrzeni nazw=|nazwa jednostki 2=Szablon:Strona|numer jednostki=2}}}} Powyżej dla przykładu podano parametry nie w rodzicu w szablonie, tylko w dziecku, jeśli chodzi o parametry nazw przestrzeni nazw i nazw jednostki, ale ich się za to nie powinno podawać w tych ramach, tylko w szablonach, w których wywoływane są te ramki pudełek {{Code|{{m|Pudełko}}}}, ale tak tutaj tak zrobiono by było najłatwiej sprawdzić działanie tego typu funkcji. Analogicznie możemy podawać parametry typu jednostki, np.: wywołaniu modułowym {{Code|{{m|Pudełko|Nazwa przestrzeni nazw 2|typ jednostki 2{{=}}strona szablonu|numer jednostki{{=}}2}}}}, ale o tym więcej w rozdziałach {{Code|{{sr|# p["Typ jednostki"](frame,i)|p=Pudełko}}}}, {{Code|{{sr|#p["Typ jednostki 2"](frame,i)|p=Pudełko}}}}, {{Code|{{sr|#p["Typ jednostki 3"](frame,i)|p=Pudełko}}}} itp. w „{{sr|#Funkcje typu jednostki|p=Pudełko}}”, on definiuje przestrzenie przedmiotowe, ale można użyć parametru dyskusji typu jednostki z wartością niepustą, wtedy wyświetli się nazwa przestrzeni nazw dyskusji. Jeżeli typ jednostki wskazuje na przestrzeń naazw główną, wtedy się liczy parametry nazw jednostki. Również parametry typu jednostki nie powinno się podawać w dziecku w ramce, tylko w rodzicu w szablonie jako parametry, w którym ta ramka jest wywoływana, ale tutaj podano jedynie dla przykładu, jak najłatwiej sprawdzić działanie tych parametrów tej funkcji. Najpierw w funkcji nagłówku brane są parametry nazw przestrzeni nazw, a jeżeli ich nie ma, to parametry typu jednostki, a jeżeli nie ma, to generowane są nazwy na podstawie aktualnego modułu. Podobnie jest z parametrami nazw jednostki. === {{Code|p["Nazwa przedmiotowej przestrzeni nazw 2"](frame,...)}} === === {{Code|p["Nazwa przestrzeni nazw dyskusji 2"](frame,...)}} === == Funkcje pełnych nazw jednostki == === {{Code|p["Pełna nazwa dyskusji jednostki"](frame,i)}} === === {{Code|p["Pełna nazwa przedmiotowa jednostki"](frame,i)}} === === {{Code|p["Pełna nazwa jednostki"](frame,i)}} === == Funkcje pełnych nazw jednostki drugiej wersji == === {{Code|p["Pełna nazwa dyskusji jednostki 2"](frame,i)}} === === {{Code|p["Pełna nazwa przedmiotowa jednostki 2"](frame,i)}} === === {{Code|p["Pełna nazwa jednostki 2"](frame,i)}} === == Funkcje pełnych nazw jednostki trzeciej wersji == === {{Code|p["Pełna nazwa dyskusji jednostki 3"](frame,i)}} === === {{Code|p["Pełna nazwa przedmiotowa jednostki 3"](frame,i)}} === === {{Code|p["Pełna nazwa jednostki 3"](frame,i)}} === == Funkcje nazw jednostki == === {{Code|p["Nazwa jednostki"](frame,i)}} === == Funkcje nazw jednostki drugiej wersji == === {{Code|p["Nazwa jednostki 2"](frame,i)}} === === {{Code|p["Nazwa przedmiotowa jednostki 2"](frame,i)}} === === {{Code|p["Nazwa dyskusji jednostki 2"](frame,i)}} === == Funkcje nazw przestrzeni nazw trzeciej wersji == === {{Code|p["Nazwa przestrzeni nazw 3"](frame,i)}} === === {{Code|p["Nazwa przedmiotowej przestrzeni nazw 3"](frame,i)}} === === {{Code|p["Nazwa przestrzeni nazw dyskusji 3"](frame,i)}} === == Funkcje nazw jednostki trzeciej wersji == === {{Code|p["Nazwa jednostki 3"](frame,i)}} === === {{Code|p["Nazwa przedmiotowa jednostki 3"](frame,i)}} === === {{Code|p["Nazwa dyskusji jednostki 3"](frame,i)}} === == Funkcje typu jednostki == === {{Code|p["Typ jednostki"](frame,i)}} === === {{Code|p["Typ jednostki 2"](frame,i)}} === === {{Code|p["Typ jednostki 3"](frame,i)}} === === Funkcje typu jednostki przedmiotowe === ==== {{Code|p["Przedmiotowy typ jednostki"](frame,i)}} ==== ==== {{Code|p["Przedmiotowy typ jednostki 2"](frame,i)}} ==== ==== {{Code|p["Przedmiotowy typ jednostki 3"](frame,i)}} ==== === Fukcje typu jednostki dyskusji === ==== {{Code|p["Dyskusyjny typ jednostki"](frame,i)}} ==== ==== {{Code|p["Dyskusyjny typ jednostki 2"](frame,i)}}} ==== ==== {{Code|p["Dyskusyjny typ jednostki 3"](frame,i)}} ==== == Funkcje chech pudełka == === {{Code|p["Cecha pudełka"](frame)}} === === {{Code|p["Przedmiotowa cecha pudełka"](frame)}} === === {{Code|p["Dyskusyjna cecha pudełka"](frame)}} === == Fukcje ogólnego pudełka == === {{Code|p["Ogólne pudełko"](frame)}} === == Funkcje ogólne == === {{Code|p["Tekst pudełka"](frame)}} === == Funkcje błędów pudełka == === {{Code|p["Błędy pudełka"](frame)}} === === {{Code|p["Przedmiotowe błędy pudełka"](frame)}} === === {{Code|p["Dyskusyjne błędy pudełka"](frame)}} === == Funkcje nazw stron == === {{Code|p["Nazwa strony głównej projektu"](frame,i)}} === === {{Code|p["Nazwa strony głównej dla dzieci projektu"](frame,i)}} === == Funkcje kodów == === {{Code|p["Kod języka"](frame,i)}} === === {{Code|p["Kod projektu"](frame,i)}} === === {{Code|p["Klucz projektu"](frame,i)}} === == Funkcje wiki == === {{Code|p["Inny niż język bieżący wiki"](frame)}} === === {{Code|p["Inne niż lokalne wiki"](frame)}} === === {{Code|p["Inne niż bieżące wiki"](frame)}} === == Funkcje typów parametrów, czy podane je == === {{Code|p["Podano parametry nienazwane"](frame)}} === === {{Code|p["Podano parametry numerowane"](frame)}} === === {{Code|p["Podano parametry nazwane"](frame)}} === == Funkcje kodów tego projektu == === {{Code|p["Kod projektu tego projektu"](frame)}} === === {{Code|p["Kod języka tego projektu"](frame)}} === === {{Code|p["Klucz projektu tego projektu"](frame)}} === == Funkcje stron == === {{Code|p["Strona główna tego projektu"](frame)}} === === {{Code|p["Strona główna dla dzieci tego projektu"](frame)}} === == Funkcje nazw stron drugiej wersji == === {{Code|p["Nazwa strony głównej dla dzieci projektu 2"](frame)}} === === {{Code| p["Nazwa strony głównej projektu 2"](frame)}} === {{BrClear}} <noinclude><!-- -->{{ProstaStronaKoniec}}<!-- -->{{Kategoria|Opisy funkcji, w Lua w Scribunto, w modułach}}<!-- --></noinclude> 1aatr55b7nzt1eczegttuw5n5rb5v0t 540369 540368 2026-04-23T12:37:47Z Persino 2851 /* {{Code|p["Nazwa przestrzeni nazw 2"](frame,...)}} */ 540369 wikitext text/x-wiki <noinclude>{{ProstaStronaStart | nagłówek = {{Podrozdział|{{ld2|Pudełko}}|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 pudelko_modul=require("Module:Pudełko"); </syntaxhighlight> dzięki, któremu można wypisywać funkcje należącego do niego. Posługuje się na parametrach pudełkowych {{Parametr|nazwa przestrzeni nazw}} (czy też bez numerka {{Parametr|nazwa przestrzeni nazw i}} dla tego numerowanego) lub te z numerkiem po jednej spacji w nich (ale nie dla tego z końcówką {{Code| i}}) mogą zostać użyte jako parametry szablonu. Moduł {{Code|{{ld2|Pudełko}}}} przedstawia funkcje nazw w oparciu o funkcje nazw {{Code|{{ld2|Nazwy}}}}, generuje on nazwy za pomocą parametrów pudełkowych podanych poniżej. Parametr {{Parametr|nazwa jednostki}} (lub parametr {{Parametr|cel}} dla numerka tego pierwszego, tego alternatywnego), lub te z numerkiem po jednej spacji w nazwie parametru, albo numerowane numerkami {{Code|1}}, {{Code|2}},..., mogą zostać użyte jako parametry szablonu. Parametry określające rodzaj jednostki {{Parametr|typ jednostki}} z {{Parametr|dyskusja typu jednostki}}, itp. w wersjach z numerkiem po jednej spacji w nich mogą zostać użyte jako parametry szablonu. A te tymi numerowanymi liczbami naturalnymi {{Tt|nazwy jednostki}} od jedynki wzwyż poprzez szablon, w którym są one użyte, one też mogą być użyte z dwukropkiem, te numerowane, na samym początku nazwy, wtedy one są traktowane jako pełne nazwy strony, i wtedy one nie zostaną z interpretowane, że do nich trzeba użyć parametr odpowiedni z nazwą przetrzeni nazw z tego numerowanego, czy ogólny, aby utworzyć znów inną pełną nazwę strony dla tego numerka. Zestawienie: * {{Code|nazwa przestrzeni nazw}} i {{Code|nazwa przestrzeni nazw i}} (ogólna nazwa przestrzeni nazw dla wszystkich numerków, i tych numerowanych jednostek) - i to pierwsze z numerkiem, tzn. {{Code|nazwa przestrzeni nazw 1}}, {{Code|nazwa przestrzeni nazw 2}}, ..., * {{Code|nazwa jednostki}} - i te z numerkiem: {{Code|nazwa jednostki 1}}, {{Code|nazwa jednostki 2}}, ..., lub gdy jest zamiast tego parametrem numerowany, {{Code|1}}, {{Code|2}},..., który dla tego pierwszego może być uznany jako: {{Code|cel}} {{=}} {{Code|1}}, * {{Code|typ jednostki}} (parametr bazowy) i {{Code|typ jednostki i}} (parametr domyślny numerkowy) - i te z numerkiem: {{Code|typ jednostki 1}}, {{Code|typ jednostki 2}}, ..., tzn. gdy chcemy określić z jakim typem jednostki mamy do czynienia w zależności do jakiej przestrzeni nazw należy, a w danej, czy jest on np. programowy, czy tylko jest opisem, jak to bywa w szablonach {{Np|Template|link=tak}}, podobnie jest w przypadku {{Np|Module|link=tak}}, czy jak jest w innych przestrzeniach nazw, ** {{Code|dyskusja typu jednostki}} (parametr bazowy) i {{Code|dyskusja typu jednostki i}} (parametr domyślny numerkowy) - i te z numerkiem: {{Code|dyskusja typu jednostki 1}}, {{Code|dyskusja typu jednostki 2}}, ..., gdy chcemy określić wartością niepustą,że chodzi tutaj o typ jednostki. == {{Code|p.CzyNiepoprawnaNazwa(nazwa_jednostki)}} == Funkcja sprawdzajaca, czy jest poprawnie podana nazwa jednostki, czy ma poprawną nazwę. Znakami tymi, z których nie powinna składać się nazwa jest {{Code|<nowiki>{}<>|[]#\n</nowiki>}} i dodatkowo znak {{Code|&#127;}} (kod {{Code|{{Nowiki|&#127;}}}}). Też nie może składać się z trzech znaków tyldy, tzn. {{Code|<nowiki>~~~</nowiki>}}. Również w swojej budowie nie może składać się ze kodów {{Strong|HTML}} literowych o wzorze {{Code|{{Nowiki|&(%a+);}}}}. Natomiast może składać się z {{Code|{{Nowiki|&#(%d+);}}}} i {{Code|{{Nowiki|&#x(%x+);}}}}, ale w pierw te kody muszą być zamienione na normalne znaki. Skrótowa definicja funkcji: <syntaxhighlight lang="lua"> function p.CzyNiepoprawnaNazwa(nazwa_jednostki)...end; </syntaxhighlight> Wtedy ciało funkcji tej, czyli jego definicja w środku, jest: <syntaxhighlight lang="lua"> -- Moduł: "Moduł:Html/dane", służy do ładowania znaku o kodzie HTML "&#127;"; local html_dane_modul=mw.loadData("Module:Html/dane"); return mw.ustring.match(nazwa_jednostki,"[{}<>|%[%]#\n"..html_dane_modul.znak_127.."]+") or mw.ustring.match(nazwa_jednostki,"~~~") or mw.ustring.match(nazwa_jednostki,"&(%a+);"); </syntaxhighlight> Parametry: * {{Code|nazwa_jednostki}} - nazwa jednostki do sprawdzenia. Przykłady: <syntaxhighlight lang="lua"> local pudelko_modul=require("Module:Pudełko"); -- Podana przykładowa niepoprawna nazwa jedostki local nazwa_jednostki="Nazwa pliku [[Nazwa linku w pliku]]"; -- Fukcja zwróci wartość: local czy_poprawna_nazwa=true; local czy_poprawna_nazwa=pudelko_modul.CzyNiepoprawnaNazwa(nazwa_jednostki); </syntaxhighlight> == Funkcje nazw przestrzeni nazw == === {{Code|p["Nazwa przestrzeni nazw"](frame,...)}} === Funkcja pisze nazwę przestrzeni nazw, niezależnie, czy to jest przedmiotowa, czy dyskusji, według podanej w zmiennej {{Code|nazwa przestrzeni nazw}} dla pozycja bazowej w podanych parametrach szablonu rodzicu ramki dziecka, lub dla innej pozycji należy parametr podawaćw formie {{Code|nazwa przestrzeni nazw 1}}, {{Code|nazwa przestrzeni nazw 2}}, {{Code|nazwa przestrzeni nazw 3}},..., lub te parametry można podać w postaci ogólnej {{Code|nazwa przestrzeni nazw i}}. Parametry podaje się w parametrach rodzica wywołania tej funkcji {{Code|{{m|Pudełko|Nazwa przestrzeni nazw}}}} (ale ich nie trzeba podawać w dziecku, ale można) i w parametrach dziecka, jeśli chodzi o zmienną {{Code|numer jednostki}}, czyli np.: {{Code|{{m|Pudełko|Nazwa przestrzeni nazw|numer jednostki{{=}}<jakaś liczba całkowita dodatnia>}}}}. Te parametry przestrzenne zamiast w rodzicu w szablonie można podać w ramce dziecka, wtedy parametry dziecka mają pierwszeństwo. Przestrzeń nazw z parametrów nazw przestrzennych może odpowiadać wartości przestrzeni głównej, to wtedy odpowiednia przestrzeń nazw z parametru nazwy jednostki się nie liczy w tej funkcji, aby się liczyła należy użyć funkcji {{Code|{{sr|#p["Nazwa przestrzeni nazw 2"](frame,...)|p=Pudełko}}}}. Definicja skrótowa funkcji: <syntaxhighlight lang="lua"> p["Nazwa przestrzeni nazw"]=function(frame,czy_uwzglednic_alternatywna_nazwe,i)...end; </syntaxhighlight> Wtedy ciało funkcji tej, czyli jego definicja w środku, jest: <syntaxhighlight lang="lua"> -- Jest liczony numer parametru nazwy przestrzeni nazw, domyslnie chodzi tu o numer bazowy parametrów przestrzennych; local numer_jednostki=i or frame.args["numer jednostki"]; local liczba_numer_jednostki=((numer_jednostki)and(tonumber(numer_jednostki))or 0); local pudelko_pomocne_modul=require("Module:Pudełko/Pomocne"); -- Liczy nazwę przestrzeni nazw na podstawie podanych parametrów; return pudelko_pomocne_modul.Nazwa_przestrzeni_nazw(frame,0, czy_uwzglednic_alternatywna_nazwe,liczba_numer_jednostki); </syntaxhighlight> Parametry funkcji: * {{Code|frame}} - tablica ramki tablicy transportu, * {{Code|czy_uwzglednic_alternatywna_nazwe}} - czy ma uwzględniać nazwę przestrzeni nazw domyślną szablonu, dostępne wartości: {{Code|false}}, w której nazwa domyślna nie jest uwzględniana wtedy, oraz {{Code|nil}} i {{Code|true}}, które oznaczają to samo, w tym jeżeli ona jest uwzględniana, wtedy jest brany parametr pierwszy dziecka, który musi istnieć przy takiej wartości tego parametru, tzn. {{Code|{{m|Pudełko|Nazwa przestrzeni nazw|Szablon}}}}, a nazwa uzyskana nazwy przestrzeni nazw jest w takim przypadku błędna, a jeżeli nazwa domyślna jest błędna, czyli {{Code|{{m|Pudełko|Nazwa przestrzeni nazw|Moja przestrzeń}}}}, wtedy funkcja zwraca stan błędu {{Code|(błąd)}}. * {{Code|i}} - numer zmiennej nazwy przestrzeni nazw. Funkcja wykorzystuje {{Code|{{sr|#p.Nazwa_przestrzeni_nazw(frame,...)|p=Pudełko/Pomocne}}}} do wyznaczania ogólnego nazwy przestrzeni nazw dla pozycji bazowej i numerkowej, tzn. dla pozycji: jeden, dwa, trzy,..., itd, i ich ogólnej. Parametry ramki tablicy transportu dziecka: * {{Code|nazwa przestrzeni nazw}}, {{Code|nazwa przestrzeni nazw 1}}, {{Code|nazwa przestrzeni nazw 2}}, {{Code|nazwa przestrzeni nazw 3}},..., {{Code|nazwa przestrzeni nazw i}} - nazwy przestrzeni nazw dla pozycji bazowej, numerkowej i ogólnej, * {{Code|typ jednostki}}, {{Code|typ jednostki 1}}, {{Code|typ jednostki 2}}, {{Code|typ jednostki 3}},..., {{Code|typ jednostki i}} - typy jednostek, którym odpowiadają pewne przestrzenie przedmiotowe, dla pozycji bazowej, numerkowej i ogólnej, ** {{Code|dyskusja typu jednostki}}, {{Code|dyskusja typu jednostki 1}}, {{Code|dyskusja typ jednostki 2}}, {{Code|dyskusja typ jednostki 3}},..., {{Code|dyskusja typ jednostki i}} - czy dany typ jednostki ma przedstawiać, jeśli niepusta, przestrzeń dyskusji dla pozycji bazowej, numerkowej i ogólnej, * {{Code|numer jednostki}} - jak parametr {{Code|i}} nie został ustawiony, to wtedy liczy się ta zmienna. Parametr ramki tablicy transportu rodzica szablonu: * {{Code|nazwa przestrzeni nazw}}, {{Code|nazwa przestrzeni nazw 1}}, {{Code|nazwa przestrzeni nazw 2}}, {{Code|nazwa przestrzeni nazw 3}},..., {{Code|nazwa przestrzeni nazw i}} - nazwy przestrzeni nazw dla pozycji bazowej oraz zwykłej i ogólnej numerkowej, * {{Code|typ jednostki}}, {{Code|typ jednostki 1}}, {{Code|typ jednostki 2}}, {{Code|typ jednostki 3}},..., {{Code|typ jednostki i}} - typy jednostek, którym odpowiadają pewne przestrzenie przedmiotowe, dla pozycji bazowej, numerkowej i ogólnej, ** {{Code|dyskusja typu jednostki}}, {{Code|dyskusja typu jednostki 1}}, {{Code|dyskusja typ jednostki 2}}, {{Code|dyskusja typ jednostki 3}},..., {{Code|dyskusja typ jednostki i}} - czy dany typ jednostki ma przedstawiać, jeśli niepusta, przestrzeń dyskusji dla pozycji bazowej, numerkowej i ogólnej. Przykłady: <syntaxhighlight lang="mediawiki"> {{Nazwa szablonu|nazwa przestrzeni nazw=Wikibooks|nazwa przestrzeni nazw 2=Szablon|nazwa przestrzeni nazw i=Moduł}} </syntaxhighlight> W dziecku powiedzmy jest wywołanie, i szukamy nazwy przestrzeni nazw o numerze dwa, która nie została podana, ale istnieje za to jej wersji ogólna {{Code|nazwa przestrzeni nazw i}} i domyślna {{Code|nazwa przestrzeni nazw}}: <syntaxhighlight lang="mediawiki"> {{#invoke:Pudełko|Nazwa przestrzeni nazw|numer jednostki=1}} </syntaxhighlight> Na podstawie powyższego przykładu otrzymamy wynik o schemacie, nie wyniku, bo tam nie ma zmiennej {{Code|nazwa przestrzeni nazw 1}}, ale jest {{Code|nazwa przestrzeni nazw i}}: <syntaxhighlight lang="mediawiki"> <!-- Ale nie "nazwa przestrzeni nazw", bo jej nie ma, ale za to istnieje "nazwa przestrzeni nazw i"; --> <!-- nazwa przestrzeni nazw 1=nazwa przestrzeni nazw i=Moduł; --> <!-- Czyli wynik: --> Moduł <!-- Widzimy, że wygenerowała się nazwa przestrzeni nazw, którą jest przestrzeń programowa, którą również jest "Szablon"; --> </syntaxhighlight> Nie jest brana w tym powyższym przykładzie zmienna {{Code|nazwa przestrzeni nazw}}, bo jej nie ma, ale za to jest {{Code|nazwa przestrzeni nazw i}}, bo ona występuje jako parametr domyślny ogólny dla parametrów numerkowych. Przykłady w wikikodzie: * {{Code|{{m|Pudełko|Nazwa przestrzeni nazw|numer jednostki{{=}}2}}}} → {{Tt|{{#invoke:Pudełko|Nazwa przestrzeni nazw|numer jednostki=2}}}} * {{Code|{{m|Pudełko|Nazwa przestrzeni nazw|Szablon|nazwa przestrzeni nazw i{{=}}Moja przestrzeń|numer jednostki{{=}}2}}}} → {{Tt|{{#invoke:Pudełko|Nazwa przestrzeni nazw|Szablon|nazwa przestrzeni nazw i=Moja przestrzeń|numer jednostki=2}}}} * {{Code|{{m|Pudełko|Nazwa przestrzeni nazw|nazwa przestrzeni nazw 2{{=}}Szablon|numer jednostki{{=}}2}}}} → {{Tt|{{#invoke:Pudełko|Nazwa przestrzeni nazw|nazwa przestrzeni nazw 2=Szablon|numer jednostki=2}}}} * {{Code|{{m|Pudełko|Nazwa przestrzeni nazw|nazwa przestrzeni nazw 2{{=}}Szablon|numer jednostki{{=}}2}}}} → {{Tt|{{#invoke:Pudełko|Nazwa przestrzeni nazw|nazwa przestrzeni nazw i=Szablon|numer jednostki=2}}}} * {{Code|{{m|Pudełko|Nazwa przestrzeni nazw|nazwa przestrzeni nazw{{=}}Szablon|numer jednostki{{=}}2}}}} → {{Tt|{{#invoke:Pudełko|Nazwa przestrzeni nazw|nazwa przestrzeni nazw=Szablon|numer jednostki=2}}}} Powyżej dla przykładu podano parametry nie w rodzicu w szablonie, tylko w dziecku, jeśli chodzi o parametry nazw przestrzeni nazw, ale ich się za to nie powinno podawać w tych ramach, tylko w szablonach, w których wywoływane są te ramki pudełek {{Code|{{m|Pudełko}}}}, ale tak tutaj tak zrobiono by było najłatwiej sprawdzić działanie tego typu funkcji. Analogicznie możemy podawać parametry typu jednostki, np.: wywołaniu modułowym {{Code|{{m|Pudełko|Nazwa przestrzeni nazw|typ jednostki 2{{=}}strona szablonu|numer jednostki{{=}}2}}}}, ale o tym więcej w rozdziałach {{Code|{{sr|# p["Typ jednostki"](frame,i)|p=Pudełko}}}}, {{Code|{{sr|#p["Typ jednostki 2"](frame,i)|p=Pudełko}}}}, {{Code|{{sr|#p["Typ jednostki 3"](frame,i)|p=Pudełko}}}} itp. w „{{sr|#Funkcje typu jednostki|p=Pudełko}}”, on definiuje przestrzenie przedmiotowe, ale można użyć parametru dyskusji typu jednostki z wartością niepustą, wtedy wyświetli się nazwa przestrzeni nazw dyskusji. Również parametry typu jednostki nie powinno się podawać w dziecku w ramce, tylko w rodzicu w szablonie jako parametry, w którym ta ramka jest wywoływana, ale tutaj podano jedynie dla przykładu, jak najłatwiej sprawdzić działanie tych parametrów tej funkcji. Najpierw w funkcji nagłówku brane są parametry nazw przestrzeni nazw, a jeżeli ich nie ma, to parametry typu jednostki, a jeżeli nie ma, to generowane są nazwy na podstawie aktualnego modułu. === {{Code|p["Nazwa przedmiotowej przestrzeni nazw"](frame,...)}} === Funkcja pisze przedmiotową nazwę przestrzeni nazw jakikolwiek nazwy przestrzeni nazw (tzn. nazwę przedmiotową nazwy przestrzenie nazw, czyli nie dyskusji, zamieniana jest na nią samą, czyli identyfikator przestrzeni się nie zmienia, a dyskusji, nie przedmiotową, przekształca się na przedmiotową jej odpowiadającą, czyli w tym przypadku identyfikator przestrzeni zmniejsza się o numer mniej), według podanej w zmiennej {{Code|nazwa przestrzeni nazw}} dla pozycja bazowej w podanych parametrach szablonu rodzicu ramki dziecka, lub dla innej pozycji należy parametr podawać w formie {{Code|nazwa przestrzeni nazw 1}}, {{Code|nazwa przestrzeni nazw 2}}, {{Code|nazwa przestrzeni nazw 3}},..., lub te parametry można podać w postaci ogólnej {{Code|nazwa przestrzeni nazw i}}. Parametry podaje się w parametrach rodzica wywołania tej funkcji {{Code|{{m|Pudełko|Nazwa przedmiotowej przestrzeni nazw}}}} (ale ich nie trzeba podawać w dziecku, ale można) i w parametrach dziecka, jeśli chodzi o zmienną {{Code|numer jednostki}}, czyli np.: {{Code|{{m|Pudełko|Nazwa przedmiotowej przestrzeni nazw|numer jednostki{{=}}<jakaś liczba całkowita dodatnia>}}}}. Te parametry przestrzenne zamiast w rodzicu w szablonie można podać w ramce dziecka, wtedy parametry dziecka mają pierwszeństwo. Parametry przestrzenne mogą mogą być podane w postaci przestrzeni przedmiotowej lub dyskusji, ale ta funkcja zawsze ją zamienia na przedmiotową. Przestrzeń nazw z parametrów nazw przestrzennych może odpowiadać wartości przestrzeni głównej, to wtedy odpowiednia przestrzeń nazw z parametru nazwy jednostki się nie liczy w tej funkcji, aby się liczyła należy użyć funkcji {{Code|{{sr|#p["Nazwa przedmiotowej przestrzeni nazw 2"](frame,...)|p=Pudełko}}}}. Definicja skrótowa funkcji: <syntaxhighlight lang="lua"> p["Nazwa przedmiotowej przestrzeni nazw"]=function(frame,czy_uwzglednic_alternatywna_nazwe,i)...end; </syntaxhighlight> Wtedy ciało funkcji tej, czyli jego definicja w środku, jest: <syntaxhighlight lang="lua"> -- Jest liczony numer parametru nazwy przestrzeni nazw, domyslnie chodzi tu o numer bazowy parametrów przestrzennych; local numer_jednostki=i or frame.args["numer jednostki"]; local liczba_numer_jednostki=((numer_jednostki)and(tonumber(numer_jednostki))or 0); local pudelko_pomocne_modul=require("Module:Pudełko/Pomocne"); -- Liczy nazwę przestrzeni nazw przedmiotową na podstawie podanych parametrów; return pudelko_pomocne_modul.Nazwa_przestrzeni_nazw(frame,1, czy_uwzglednic_alternatywna_nazwe,liczba_numer_jednostki); </syntaxhighlight> Parametry funkcji: * {{Code|frame}} - tablica ramki tablicy transportu, * {{Code|czy_uwzglednic_alternatywna_nazwe}} - czy ma uwzględniać nazwę przestrzeni nazw domyślną szablonu, dostępne wartości: {{Code|false}}, w której nazwa domyślna nie jest uwzględniana wtedy, oraz {{Code|nil}} i {{Code|true}}, które oznaczają to samo, w tym jeżeli ona jest uwzględniana, wtedy jest brany parametr pierwszy dziecka, który musi istnieć przy takiej wartości tego parametru, tzn. {{Code|{{m|Pudełko|Nazwa przedmiotowej przestrzeni nazw|Dyskusja szablonu}}}} - ta nazwa domyślna zostanie zamieniona na przedmiotową, a jak ona by była przedmiotowa, to żadnej zamiany by nie było, a nazwa uzyskana z nazwy przestrzeni nazw z parametrów przestrzennych jest w takim przypadku błędna, to w takim razie brany jest ten parametr, a jeżeli ta nazwa domyślna jest błędna, czyli {{Code|{{m|Pudełko|Nazwa przedmiotowej przestrzeni nazw|Moja przestrzeń}}}}, wtedy funkcja zwraca stan błędu {{Code|(błąd)}}. * {{Code|i}} - numer zmiennej nazwy przestrzeni nazw. Funkcja wykorzystuje {{Code|{{sr|#p.Nazwa_przestrzeni_nazw(frame,...)|p=Pudełko/Pomocne}}}} do wyznaczania ogólnego nazwy przestrzeni nazw dla pozycji bazowej i numerkowej, tzn. dla pozycji: jeden, dwa, trzy,..., itd, i ich ogólnej. Parametry ramki tablicy transportu dziecka: * {{Code|nazwa przestrzeni nazw}}, {{Code|nazwa przestrzeni nazw 1}}, {{Code|nazwa przestrzeni nazw 2}}, {{Code|nazwa przestrzeni nazw 3}},..., {{Code|nazwa przestrzeni nazw i}} - nazwy przestrzeni nazw dla pozycji bazowej, numerkowej i ogólnej, * {{Code|typ jednostki}}, {{Code|typ jednostki 1}}, {{Code|typ jednostki 2}}, {{Code|typ jednostki 3}},..., {{Code|typ jednostki i}} - typy jednostek, którym odpowiadają pewne przestrzenie przedmiotowe, dla pozycji bazowej, numerkowej i ogólnej, ** {{Code|dyskusja typu jednostki}}, {{Code|dyskusja typu jednostki 1}}, {{Code|dyskusja typ jednostki 2}}, {{Code|dyskusja typ jednostki 3}},..., {{Code|dyskusja typ jednostki i}} - czy dany typ jednostki ma przedstawiać, jeśli niepusta, przestrzeń dyskusji dla pozycji bazowej, numerkowej i ogólnej, * {{Code|numer jednostki}} - jak parametr {{Code|i}} nie został ustawiony, to wtedy liczy się ta zmienna. Parametr ramki tablicy transportu rodzica szablonu: * {{Code|nazwa przestrzeni nazw}}, {{Code|nazwa przestrzeni nazw 1}}, {{Code|nazwa przestrzeni nazw 2}}, {{Code|nazwa przestrzeni nazw 3}},..., {{Code|nazwa przestrzeni nazw i}} - nazwy przestrzeni nazw dla pozycji bazowej oraz zwykłej i ogólnej numerkowej, * {{Code|typ jednostki}}, {{Code|typ jednostki 1}}, {{Code|typ jednostki 2}}, {{Code|typ jednostki 3}},..., {{Code|typ jednostki i}} - typy jednostek, którym odpowiadają pewne przestrzenie przedmiotowe, dla pozycji bazowej, numerkowej i ogólnej, ** {{Code|dyskusja typu jednostki}}, {{Code|dyskusja typu jednostki 1}}, {{Code|dyskusja typ jednostki 2}}, {{Code|dyskusja typ jednostki 3}},..., {{Code|dyskusja typ jednostki i}} - czy dany typ jednostki ma przedstawiać, jeśli niepusta, przestrzeń dyskusji dla pozycji bazowej, numerkowej i ogólnej. Przykłady: <syntaxhighlight lang="mediawiki"> {{Nazwa szablonu|nazwa przestrzeni nazw=Dyskusja Wikibooks|nazwa przestrzeni nazw 2=Dyskusja szablonu|nazwa przestrzeni nazw i=Dyskusja modułu}} </syntaxhighlight> W dziecku powiedzmy jest wywołanie, i szukamy nazwy przestrzeni nazw o numerze dwa, która nie została podana, ale istnieje za to jej wersji ogólna {{Code|nazwa przestrzeni nazw i}} i domyślna {{Code|nazwa przestrzeni nazw}}: <syntaxhighlight lang="mediawiki"> {{#invoke:Pudełko|Nazwa przedmiotowej przestrzeni nazw|numer jednostki=1}} </syntaxhighlight> Na podstawie powyższego przykładu otrzymamy wynik o schemacie, nie wyniku, bo tam nie ma zmiennej {{Code|nazwa przestrzeni nazw 1}}, ale jest {{Code|nazwa przestrzeni nazw i}}: <syntaxhighlight lang="mediawiki"> <!-- Ale nie "nazwa przestrzeni nazw", bo jej nie ma, ale za to istnieje "nazwa przestrzeni nazw i"; --> <!-- nazwa przestrzeni nazw 1=nazwa przestrzeni nazw i=Dyskusja modułu; --> <!-- Czyli wynik: --> Moduł <!-- Widzimy, że wygenerowała się nazwa przestrzeni nazw, którą jest przestrzeń przedmiotowa programowa przestrzeni dyskusji "Dyskusja modułu", którą również jest "Szablon" jego przestrzeni dyskusji "Dyskusja szablonu", a dla ich przestrzeni przedmiotowej, zamiast dyskusji, to samo przekształca się na to samo; --> </syntaxhighlight> Nie jest brana w tym powyższym przykładzie zmienna {{Code|nazwa przestrzeni nazw}}, bo jej nie ma, ale za to jest {{Code|nazwa przestrzeni nazw i}}, bo ona występuje jako parametr domyślny ogólny dla parametrów numerkowych. Przykłady w wikikodzie: * {{Code|{{m|Pudełko|Nazwa przedmiotowej przestrzeni nazw|numer jednostki{{=}}2}}}} → {{Tt|{{#invoke:Pudełko|Nazwa przedmiotowej przestrzeni nazw|numer jednostki=2}}}} * {{Code|{{m|Pudełko|Nazwa przedmiotowej przestrzeni nazw|Dyskusja szablonu|nazwa przestrzeni nazw i{{=}}Moja przestrzeń|numer jednostki{{=}}2}}}} → {{Tt|{{#invoke:Pudełko|Nazwa przedmiotowej przestrzeni nazw|Dyskusja szablonu|nazwa przestrzeni nazw i=Moja przestrzeń|numer jednostki=2}}}} * {{Code|{{m|Pudełko|Nazwa przedmiotowej przestrzeni nazw|nazwa przestrzeni nazw 2{{=}}Dyskusja szablonu|numer jednostki{{=}}2}}}} → {{Tt|{{#invoke:Pudełko|Nazwa przedmiotowej przestrzeni nazw|nazwa przestrzeni nazw 2=Dyskusja szablonu|numer jednostki=2}}}} * {{Code|{{m|Pudełko|Nazwa przedmiotowej przestrzeni nazw|nazwa przestrzeni nazw 2{{=}}Dyskusja szablonu|numer jednostki{{=}}2}}}} → {{Tt|{{#invoke:Pudełko|Nazwa przedmiotowej przestrzeni nazw|nazwa przestrzeni nazw i=Dyskusja szablonu|numer jednostki=2}}}} * {{Code|{{m|Pudełko|Nazwa przedmiotowej przestrzeni nazw|nazwa przestrzeni nazw{{=}}Dyskusja szablonu|numer jednostki{{=}}2}}}} → {{Tt|{{#invoke:Pudełko|Nazwa przedmiotowej przestrzeni nazw|nazwa przestrzeni nazw=Dyskusja szablonu|numer jednostki=2}}}} Powyżej dla przykładu podano parametry nie w rodzicu w szablonie, tylko w dziecku, jeśli chodzi o parametry nazw przestrzeni nazw, ale ich się za to nie powinno podawać w tych ramach, tylko w szablonach, w których wywoływane są te ramki pudełek {{Code|{{m|Pudełko}}}}, ale tak tutaj tak zrobiono by było najłatwiej sprawdzić działanie tego typu funkcji. Analogicznie możemy podawać parametry typu jednostki, np.: wywołaniu modułowym {{Code|{{m|Pudełko|Nazwa przedmiotowej przestrzeni nazw|typ jednostki 2{{=}}strona szablonu|numer jednostki{{=}}2}}}}, ale o tym więcej w rozdziałach {{Code|{{sr|# p["Typ jednostki"](frame,i)|p=Pudełko}}}}, {{Code|{{sr|#p["Typ jednostki 2"](frame,i)|p=Pudełko}}}}, {{Code|{{sr|#p["Typ jednostki 3"](frame,i)|p=Pudełko}}}} itp. w „{{sr|#Funkcje typu jednostki|p=Pudełko}}”, ale wtedy ta sama nazwa przestrzeni nazw reprezentowana przez {{Parametr|typ jednostki 2|strona szablonu}}, jest zamieniana na to samo, lepiej jest tutaj używać parametrów przestrzennych nazw niż typu jednostki, bo typ jednostki ma taką samą wartość dla przestrzeni przedmiotowej, co dyskusji. Tutaj parametr dyskusji typu jednostki bazowy i numerkowy ogólny, czy szczegółowy, nie gra roli, bo nawet, gdy wygenerujemy nazwę przestrzeni dyskusji za pomoca tego parametru, to i tak otrzymamy na samym końcu jego nazwę przedmiotową. Również parametry typu jednostki nie powinno się podawać w dziecku w ramce, tylko w rodzicu w szablonie jako parametry, w którym ta ramka jest wywoływana, ale tutaj podano jedynie dla przykładu, jak najłatwiej sprawdzić działanie tych parametrów tej funkcji. Najpierw w funkcji nagłówku brane są parametry nazw przestrzeni nazw, a jeżeli ich nie ma, to parametry typu jednostki, a jeżeli nie ma, to generowane są nazwy na podstawie aktualnego modułu. === {{Code|p["Nazwa przestrzeni nazw dyskusji"](frame,...)}} === Funkcja pisze nazwę przestrzeni nazw dyskusji jakikolwiek nazwy przestrzeni nazw (tzn. nazwę przedmiotową nazwy przestrzenie nazw, czyli nie dyskusji, zamieniana jest na dyskusji, czyli identyfikator przestrzeni się zmienia jeden wyżej, a dyskusji, nie przedmiotową, przekształca się na tą samą), według podanej w zmiennej {{Code|nazwa przestrzeni nazw}} dla pozycja bazowej w podanych parametrach szablonu rodzicu ramki dziecka, lub dla innej pozycji należy parametr podawać w formie {{Code|nazwa przestrzeni nazw 1}}, {{Code|nazwa przestrzeni nazw 2}}, {{Code|nazwa przestrzeni nazw 3}},..., lub te parametry można podać w postaci ogólnej {{Code|nazwa przestrzeni nazw i}}. Parametry podaje się w parametrach rodzica wywołania tej funkcji {{Code|{{m|Pudełko|Nazwa przestrzeni nazw dyskusji}}}} (ale ich nie trzeba podawać w dziecku, ale można) i w parametrach dziecka, jeśli chodzi o zmienną {{Code|numer jednostki}}, czyli np.: {{Code|{{m|Pudełko|Nazwa przestrzeni nazw dyskusji|numer jednostki{{=}}<jakaś liczba całkowita dodatnia>}}}}. Te parametry przestrzenne zamiast w rodzicu w szablonie można podać w ramce dziecka, wtedy parametry dziecka mają pierwszeństwo. Parametry przestrzenne mogą mogą być podane w postaci przestrzeni przedmiotowej lub dyskusji, ale ta funkcja zawsze ją zamienia na dyskusji. Przestrzeń nazw z parametrów nazw przestrzennych może odpowiadać wartości przestrzeni głównej, to wtedy odpowiednia przestrzeń nazw z parametru nazwy jednostki się nie liczy w tej funkcji, aby się liczyła należy użyć funkcji {{Code|{{sr|#p["Nazwa przestrzeni nazw dyskusji 2"](frame,...)|p=Pudełko}}}}. Definicja skrótowa funkcji: <syntaxhighlight lang="lua"> p["Nazwa przestrzeni nazw dyskusji"]=function(frame,czy_uwzglednic_alternatywna_nazwe,i)...end; </syntaxhighlight> Wtedy ciało funkcji tej, czyli jego definicja w środku, jest: <syntaxhighlight lang="lua"> -- Jest liczony numer parametru nazwy przestrzeni nazw, domyslnie chodzi tu o numer bazowy parametrów przestrzennych; local numer_jednostki=i or frame.args["numer jednostki"]; local liczba_numer_jednostki=((numer_jednostki)and(tonumber(numer_jednostki))or 0); local pudelko_pomocne_modul=require("Module:Pudełko/Pomocne"); -- Liczy nazwę przestrzeni nazw dyskusji na podstawie podanych parametrów; return pudelko_pomocne_modul.Nazwa_przestrzeni_nazw(frame,2, czy_uwzglednic_alternatywna_nazwe,liczba_numer_jednostki); </syntaxhighlight> Parametry funkcji: * {{Code|frame}} - tablica ramki tablicy transportu, * {{Code|czy_uwzglednic_alternatywna_nazwe}} - czy ma uwzględniać nazwę przestrzeni nazw domyślną szablonu, dostępne wartości: {{Code|false}}, w której nazwa domyślna nie jest uwzględniana wtedy, oraz {{Code|nil}} i {{Code|true}}, które oznaczają to samo, w tym jeżeli ona jest uwzględniana, wtedy jest brany parametr pierwszy dziecka, który musi istnieć przy takiej wartości tego parametru, tzn. {{Code|{{m|Pudełko|Nazwa przestrzeni nazw dyskusji|Szablon}}}} - ta nazwa domyślna zostanie przekształcona na dyskusji, a jeżeli ona by była dyskusji, to nie byłoby żadnego przekształcenia, a nazwa uzyskana nazwy przestrzeni nazw z parametrów przestrzennych jest w takim przypadku błędna, to w takim razie brany jest ten parametr, a jeżeli nazwa domyślna jest błędna, czyli {{Code|{{m|Pudełko|Nazwa przestrzeni nazw dyskusji|Moja przestrzeń}}}}, wtedy funkcja zwraca stan błędu {{Code|(błąd)}}. * {{Code|i}} - numer zmiennej nazwy przestrzeni nazw. Funkcja wykorzystuje {{Code|{{sr|#p.Nazwa_przestrzeni_nazw(frame,...)|p=Pudełko/Pomocne}}}} do wyznaczania ogólnego nazwy przestrzeni nazw dla pozycji bazowej i numerkowej, tzn. dla pozycji: jeden, dwa, trzy,..., itd, i ich ogólnej. Parametry ramki tablicy transportu dziecka: * {{Code|nazwa przestrzeni nazw}}, {{Code|nazwa przestrzeni nazw 1}}, {{Code|nazwa przestrzeni nazw 2}}, {{Code|nazwa przestrzeni nazw 3}},..., {{Code|nazwa przestrzeni nazw i}} - nazwy przestrzeni nazw dla pozycji bazowej, numerkowej i ogólnej, * {{Code|typ jednostki}}, {{Code|typ jednostki 1}}, {{Code|typ jednostki 2}}, {{Code|typ jednostki 3}},..., {{Code|typ jednostki i}} - typy jednostek, którym odpowiadają pewne przestrzenie przedmiotowe, dla pozycji bazowej, numerkowej i ogólnej, ** {{Code|dyskusja typu jednostki}}, {{Code|dyskusja typu jednostki 1}}, {{Code|dyskusja typ jednostki 2}}, {{Code|dyskusja typ jednostki 3}},..., {{Code|dyskusja typ jednostki i}} - czy dany typ jednostki ma przedstawiać, jeśli niepusta, przestrzeń dyskusji dla pozycji bazowej, numerkowej i ogólnej, * {{Code|numer jednostki}} - jak parametr {{Code|i}} nie został ustawiony, to wtedy liczy się ta zmienna. Parametr ramki tablicy transportu rodzica szablonu: * {{Code|nazwa przestrzeni nazw}}, {{Code|nazwa przestrzeni nazw 1}}, {{Code|nazwa przestrzeni nazw 2}}, {{Code|nazwa przestrzeni nazw 3}},..., {{Code|nazwa przestrzeni nazw i}} - nazwy przestrzeni nazw dla pozycji bazowej oraz zwykłej i ogólnej numerkowej, * {{Code|typ jednostki}}, {{Code|typ jednostki 1}}, {{Code|typ jednostki 2}}, {{Code|typ jednostki 3}},..., {{Code|typ jednostki i}} - typy jednostek, którym odpowiadają pewne przestrzenie przedmiotowe, dla pozycji bazowej, numerkowej i ogólnej, ** {{Code|dyskusja typu jednostki}}, {{Code|dyskusja typu jednostki 1}}, {{Code|dyskusja typ jednostki 2}}, {{Code|dyskusja typ jednostki 3}},..., {{Code|dyskusja typ jednostki i}} - czy dany typ jednostki ma przedstawiać, jeśli niepusta, przestrzeń dyskusji dla pozycji bazowej, numerkowej i ogólnej. Przykłady: <syntaxhighlight lang="mediawiki"> {{Nazwa szablonu|nazwa przestrzeni nazw=Wikibooks|nazwa przestrzeni nazw 2=Szablon|nazwa przestrzeni nazw i=Moduł}} </syntaxhighlight> W dziecku powiedzmy jest wywołanie, i szukamy nazwy przestrzeni nazw o numerze dwa, która nie została podana, ale istnieje za to jej wersji ogólna {{Code|nazwa przestrzeni nazw i}} i domyślna {{Code|nazwa przestrzeni nazw}}: <syntaxhighlight lang="mediawiki"> {{#invoke:Pudełko|Nazwa przestrzeni nazw dyskusji|numer jednostki=1}} </syntaxhighlight> Na podstawie powyższego przykładu otrzymamy wynik o schemacie, nie wyniku, bo tam nie ma zmiennej {{Code|nazwa przestrzeni nazw 1}}, ale jest {{Code|nazwa przestrzeni nazw i}}: <syntaxhighlight lang="mediawiki"> <!-- Ale nie "nazwa przestrzeni nazw", bo jej nie ma, ale za to istnieje "nazwa przestrzeni nazw i"; --> <!-- nazwa przestrzeni nazw 1=nazwa przestrzeni nazw i=Moduł; --> <!-- Czyli wynik: --> Dyskusja modułu <!-- Widzimy, że wygenerowała się nazwa przestrzeni nazw, którą jest przestrzeń dyskusji przestrzeni programowej przestrzeni przedmiotowej "Moduł", którą również jest "Szablon" jego przestrzeni dyskusji "Dyskusja szablonu", a dla ich przestrzeni przedmiotowej, zamiast dyskusji, to przekształca się na dyskusji jej odpowiadającą; --> </syntaxhighlight> Nie jest brana w tym powyższym przykładzie zmienna {{Code|nazwa przestrzeni nazw}}, bo jej nie ma, ale za to jest {{Code|nazwa przestrzeni nazw i}}, bo ona występuje jako parametr domyślny ogólny dla parametrów numerkowych. Przykłady w wikikodzie: * {{Code|{{m|Pudełko|Nazwa przestrzeni nazw dyskusji|numer jednostki{{=}}2}}}} → {{Tt|{{#invoke:Pudełko|Nazwa przestrzeni nazw dyskusji|numer jednostki=2}}}} * {{Code|{{m|Pudełko|Nazwa przestrzeni nazw dyskusji|Szablon|nazwa przestrzeni nazw i{{=}}Moja przestrzeń|numer jednostki{{=}}2}}}} → {{Tt|{{#invoke:Pudełko|Nazwa przestrzeni nazw dyskusji|Szablon|nazwa przestrzeni nazw i=Moja przestrzeń|numer jednostki=2}}}} * {{Code|{{m|Pudełko|Nazwa przestrzeni nazw dyskusji|nazwa przestrzeni nazw 2{{=}}Szablon|numer jednostki{{=}}2}}}} → {{Tt|{{#invoke:Pudełko|Nazwa przestrzeni nazw dyskusji|nazwa przestrzeni nazw 2=Szablon|numer jednostki=2}}}} * {{Code|{{m|Pudełko|Nazwa przestrzeni nazw dyskusji|nazwa przestrzeni nazw 2{{=}}Szablon|numer jednostki{{=}}2}}}} → {{Tt|{{#invoke:Pudełko|Nazwa przestrzeni nazw dyskusji|nazwa przestrzeni nazw i=Szablon|numer jednostki=2}}}} * {{Code|{{m|Pudełko|Nazwa przestrzeni nazw dyskusji|nazwa przestrzeni nazw{{=}}Szablon|numer jednostki{{=}}2}}}} → {{Tt|{{#invoke:Pudełko|Nazwa przestrzeni nazw dyskusji|nazwa przestrzeni nazw=Szablon|numer jednostki=2}}}} Powyżej dla przykładu podano parametry nie w rodzicu w szablonie, tylko w dziecku, jeśli chodzi o parametry nazw przestrzeni nazw, ale ich się za to nie powinno podawać w tych ramach, tylko w szablonach, w których wywoływane są te ramki pudełek {{Code|{{m|Pudełko}}}}, ale tak tutaj tak zrobiono by było najłatwiej sprawdzić działanie tego typu funkcji. Analogicznie możemy podawać parametry typu jednostki, np.: wywołaniu modułowym {{Code|{{m|Pudełko|Nazwa przestrzeni nazw dyskusji|typ jednostki 2{{=}}strona szablonu|numer jednostki{{=}}2}}}}, ale o tym więcej w rozdziałach {{Code|{{sr|# p["Typ jednostki"](frame,i)|p=Pudełko}}}}, {{Code|{{sr|#p["Typ jednostki 2"](frame,i)|p=Pudełko}}}}, {{Code|{{sr|#p["Typ jednostki 3"](frame,i)|p=Pudełko}}}} itp. w „{{sr|#Funkcje typu jednostki|p=Pudełko}}”, ale wtedy nazwa przestrzeni nazw reprezentowana przez {{Parametr|typ jednostki 2|strona szablonu}}, jest zamieniana na nazwę przestrzeni nazw dyskusji. Parametr dyskusji typu jednostki bazowy lub dla danego numerka ogólny, czy szczegółowy, nie gra roli. Również parametry typu jednostki nie powinno się podawać w dziecku w ramce, tylko w rodzicu w szablonie jako parametry, w którym ta ramka jest wywoływana, ale tutaj podano jedynie dla przykładu, jak najłatwiej sprawdzić działanie tych parametrów tej funkcji. Najpierw w funkcji nagłówku brane są parametry nazw przestrzeni nazw, a jeżeli ich nie ma, to parametry typu jednostki, a jeżeli nie ma, to generowane są nazwy na podstawie aktualnego modułu. == Funkcje nazw przestrzeni nazw drugiej wersji == === {{Code|p["Nazwa przestrzeni nazw 2"](frame,...)}} === Funkcja pisze nazwę przestrzeni nazw, niezależnie, czy to jest przedmiotowa, czy dyskusji, według podanej w zmiennej {{Code|nazwa przestrzeni nazw}} dla pozycja bazowej w podanych parametrach szablonu rodzicu ramki dziecka, lub dla innej pozycji należy parametr podawaćw formie {{Code|nazwa przestrzeni nazw 1}}, {{Code|nazwa przestrzeni nazw 2}}, {{Code|nazwa przestrzeni nazw 3}},..., lub te parametry można podać w postaci ogólnej {{Code|nazwa przestrzeni nazw i}}. Parametry podaje się w parametrach rodzica wywołania tej funkcji {{Code|{{m|Pudełko|Nazwa przestrzeni nazw 2}}}} (ale ich nie trzeba podawać w dziecku, ale można) i w parametrach dziecka, jeśli chodzi o zmienną {{Code|numer jednostki}}, czyli np.: {{Code|{{m|Pudełko|Nazwa przestrzeni nazw 2|numer jednostki{{=}}<jakaś liczba całkowita dodatnia>}}}}. Te parametry przestrzenne zamiast w rodzicu w szablonie można podać w ramce dziecka, wtedy parametry dziecka mają pierwszeństwo. Przestrzeń nazw z parametrów nazw przestrzennych może odpowiadać wartości przestrzeni głównej, to wtedy odpowiednia przestrzeń nazw z parametru nazwy jednostki się liczy w tej funkcji, wtedy jest liczona nazwa przestrzeni nazw z tego parametru. Definicja skrótowa funkcji: <syntaxhighlight lang="lua"> p["Nazwa przestrzeni nazw 2"]=function(frame,czy_uwzglednic_alternatywna_nazwe,i)...end; </syntaxhighlight> Wtedy ciało funkcji tej, czyli jego definicja w środku, jest: <syntaxhighlight lang="lua"> local pudelko_pomocne_modul=require("Module:Pudełko/Pomocne"); -- Liczy nazwę przestrzeni nazw, jeżeli z parametrów przestrzennych przestrzeń wskazuje na główną, to wtedy jest liczona przestrzeń nazw z nazwy jednostki; return pudelko_pomocne_modul.Nazwa_przestrzeni_nazw_2(frame,czy_uwzglednic_alternatywna_nazwe,i) </syntaxhighlight> Parametry funkcji: * {{Code|frame}} - tablica ramki tablicy transportu, * {{Code|czy_uwzglednic_alternatywna_nazwe}} - czy ma uwzględniać nazwę przestrzeni nazw domyślną szablonu, dostępne wartości: {{Code|false}}, w której nazwa domyślna nie jest uwzględniana wtedy, oraz {{Code|nil}} i {{Code|true}}, które oznaczają to samo, w tym jeżeli ona jest uwzględniana, wtedy jest brany parametr pierwszy dziecka, który musi istnieć przy takiej wartości tego parametru, tzn. {{Code|{{m|Pudełko|Nazwa przestrzeni nazw 2|Szablon}}}}, a nazwa uzyskana nazwy przestrzeni nazw jest w takim przypadku błędna, a jeżeli nazwa domyślna jest błędna, czyli {{Code|{{m|Pudełko|Nazwa przestrzeni nazw 2|Moja przestrzeń}}}}, wtedy funkcja zwraca stan błędu {{Code|(błąd)}}. * {{Code|i}} - numer zmiennej nazwy przestrzeni nazw. Funkcja wykorzystuje {{Code|{{sr|#p.Nazwa_przestrzeni_nazw_2(frame,...)|p=Pudełko/Pomocne}}}} do wyznaczania ogólnego nazwy przestrzeni nazw dla pozycji bazowej i numerkowej, tzn. dla pozycji: jeden, dwa, trzy,..., itd, i ich ogólnej. Parametry ramki tablicy transportu dziecka: * {{Code|nazwa przestrzeni nazw}}, {{Code|nazwa przestrzeni nazw 1}}, {{Code|nazwa przestrzeni nazw 2}}, {{Code|nazwa przestrzeni nazw 3}},..., {{Code|nazwa przestrzeni nazw i}} - nazwy przestrzeni nazw dla pozycji bazowej, numerkowej i ogólnej, * {{Code|typ jednostki}}, {{Code|typ jednostki 1}}, {{Code|typ jednostki 2}}, {{Code|typ jednostki 3}},..., {{Code|typ jednostki i}} - typy jednostek, którym odpowiadają pewne przestrzenie przedmiotowe, dla pozycji bazowej, numerkowej i ogólnej, ** {{Code|dyskusja typu jednostki}}, {{Code|dyskusja typu jednostki 1}}, {{Code|dyskusja typ jednostki 2}}, {{Code|dyskusja typ jednostki 3}},..., {{Code|dyskusja typ jednostki i}} - czy dany typ jednostki ma przedstawiać, jeśli niepusta, przestrzeń dyskusji dla pozycji bazowej, numerkowej i ogólnej, * {{Code|numer jednostki}} - jak parametr {{Code|i}} nie został ustawiony, to wtedy liczy się ta zmienna. Parametr ramki tablicy transportu rodzica szablonu: * {{Code|nazwa przestrzeni nazw}}, {{Code|nazwa przestrzeni nazw 1}}, {{Code|nazwa przestrzeni nazw 2}}, {{Code|nazwa przestrzeni nazw 3}},..., {{Code|nazwa przestrzeni nazw i}} - nazwy przestrzeni nazw dla pozycji bazowej oraz zwykłej i ogólnej numerkowej, * {{Code|typ jednostki}}, {{Code|typ jednostki 1}}, {{Code|typ jednostki 2}}, {{Code|typ jednostki 3}},..., {{Code|typ jednostki i}} - typy jednostek, którym odpowiadają pewne przestrzenie przedmiotowe, dla pozycji bazowej, numerkowej i ogólnej, ** {{Code|dyskusja typu jednostki}}, {{Code|dyskusja typu jednostki 1}}, {{Code|dyskusja typ jednostki 2}}, {{Code|dyskusja typ jednostki 3}},..., {{Code|dyskusja typ jednostki i}} - czy dany typ jednostki ma przedstawiać, jeśli niepusta, przestrzeń dyskusji dla pozycji bazowej, numerkowej i ogólnej. Przykłady: <syntaxhighlight lang="mediawiki"> {{Nazwa szablonu|nazwa przestrzeni nazw=Wikibooks|nazwa przestrzeni nazw 1=Szablon|nazwa przestrzeni nazw i=|nazwa jednostki 2=Wikibooks:Strona}} </syntaxhighlight> W dziecku powiedzmy jest wywołanie, i szukamy nazwy przestrzeni nazw o numerze dwa, która została podana, ale istnieje za to jej wersji ogólna {{Code|nazwa przestrzeni nazw i}} i domyślna {{Code|nazwa przestrzeni nazw}}, ale wtedy dla tego numerkowego liczy się to ogólne z {{Code| i}}, a ponieważ ta nazwa jest pusta, więc będziemy liczyli nazwę przestrzeni nazw z {{Code|nazwa jednostki 2}}: <syntaxhighlight lang="mediawiki"> {{#invoke:Pudełko|Nazwa przestrzeni nazw 2|numer jednostki=2}} </syntaxhighlight> Na podstawie powyższego przykładu otrzymamy wynik o schemacie, nie wyniku, bo tam nie ma zmiennej {{Code|nazwa przestrzeni nazw 1}}, ale jest {{Code|nazwa przestrzeni nazw i}}: <syntaxhighlight lang="mediawiki"> <!-- Ale nie "nazwa przestrzeni nazw 2", bo jej nie ma, ale za to istnieje "nazwa przestrzeni nazw i"; --> <!-- nazwa przestrzeni nazw 2=nazwa przestrzeni nazw i=Moduł; --> <!-- Czyli wynik: --> Wikibooks <!-- Widzimy, że wygenerowała się nazwa przestrzeni nazw, którą jest przestrzeń programowa, którą również jest "Szablon"; --> </syntaxhighlight> Nie jest brana w tym powyższym przykładzie zmienna {{Code|nazwa przestrzeni nazw}}, bo jej nie ma, ale za to jest {{Code|nazwa przestrzeni nazw i}}, bo ona występuje jako parametr domyślny ogólny dla parametrów numerkowych. Przykłady w wikikodzie: * {{Code|{{m|Pudełko|Nazwa przestrzeni nazw 2|numer jednostki{{=}}2}}}} → {{Tt|{{#invoke:Pudełko|Nazwa przestrzeni nazw 2|numer jednostki=2}}}} * {{Code|{{m|Pudełko|Nazwa przestrzeni nazw 2|Szablon|nazwa przestrzeni nazw i{{=}}Moja przestrzeń|numer jednostki{{=}}2}}}} → {{Tt|{{#invoke:Pudełko|Nazwa przestrzeni nazw 2|Szablon|nazwa przestrzeni nazw i=Moja przestrzeń|numer jednostki=2}}}} * {{Code|{{m|Pudełko|Nazwa przestrzeni nazw 2|nazwa przestrzeni nazw 2{{=}}|nazwa jednostki 2{{=}}Szablon:Strona|numer jednostki{{=}}2}}}} → {{Tt|{{#invoke:Pudełko|Nazwa przestrzeni nazw 2|nazwa przestrzeni nazw 2=|nazwa jednostki 2=Szablon:Strona|numer jednostki=2}}}} * {{Code|{{m|Pudełko|Nazwa przestrzeni nazw 2|nazwa przestrzeni nazw i{{=}}|nazwa jednostki 2{{=}}Szablon:Strona|numer jednostki{{=}}2}}}} → {{Tt|{{#invoke:Pudełko|Nazwa przestrzeni nazw 2|nazwa przestrzeni nazw i=|nazwa jednostki 2=Szablon:Strona|numer jednostki=2}}}} * {{Code|{{m|Pudełko|Nazwa przestrzeni nazw 2|Szablon|nazwa przestrzeni nazw{{=}}|nazwa jednostki 2{{=}}Wikibooks:Strona|numer jednostki{{=}}2}}}} → {{Tt|{{#invoke:Pudełko|Nazwa przestrzeni nazw 2|Szablon|nazwa przestrzeni nazw=|nazwa jednostki 2=Wikibooks:Strona|numer jednostki=2}}}} Powyżej dla przykładu podano parametry nie w rodzicu w szablonie, tylko w dziecku, jeśli chodzi o parametry nazw przestrzeni nazw i nazw jednostki, ale ich się za to nie powinno podawać w tych ramach, tylko w szablonach, w których wywoływane są te ramki pudełek {{Code|{{m|Pudełko}}}}, ale tak tutaj tak zrobiono by było najłatwiej sprawdzić działanie tego typu funkcji. Analogicznie możemy podawać parametry typu jednostki, np.: wywołaniu modułowym {{Code|{{m|Pudełko|Nazwa przestrzeni nazw 2|typ jednostki 2{{=}}strona szablonu|numer jednostki{{=}}2}}}}, ale o tym więcej w rozdziałach {{Code|{{sr|# p["Typ jednostki"](frame,i)|p=Pudełko}}}}, {{Code|{{sr|#p["Typ jednostki 2"](frame,i)|p=Pudełko}}}}, {{Code|{{sr|#p["Typ jednostki 3"](frame,i)|p=Pudełko}}}} itp. w „{{sr|#Funkcje typu jednostki|p=Pudełko}}”, on definiuje przestrzenie przedmiotowe, ale można użyć parametru dyskusji typu jednostki z wartością niepustą, wtedy wyświetli się nazwa przestrzeni nazw dyskusji. Jeżeli typ jednostki wskazuje na przestrzeń naazw główną, wtedy się liczą parametry nazw jednostki. Również parametry typu jednostki nie powinno się podawać w dziecku w ramce, tylko w rodzicu w szablonie jako parametry, w którym ta ramka jest wywoływana, ale tutaj podano jedynie dla przykładu, jak najłatwiej sprawdzić działanie tych parametrów tej funkcji. Najpierw w funkcji nagłówku brane są parametry nazw przestrzeni nazw, a jeżeli ich nie ma, to parametry typu jednostki, a jeżeli nie ma, to generowane są nazwy na podstawie aktualnego modułu. Podobnie jest z parametrami nazw jednostki. === {{Code|p["Nazwa przedmiotowej przestrzeni nazw 2"](frame,...)}} === === {{Code|p["Nazwa przestrzeni nazw dyskusji 2"](frame,...)}} === == Funkcje pełnych nazw jednostki == === {{Code|p["Pełna nazwa dyskusji jednostki"](frame,i)}} === === {{Code|p["Pełna nazwa przedmiotowa jednostki"](frame,i)}} === === {{Code|p["Pełna nazwa jednostki"](frame,i)}} === == Funkcje pełnych nazw jednostki drugiej wersji == === {{Code|p["Pełna nazwa dyskusji jednostki 2"](frame,i)}} === === {{Code|p["Pełna nazwa przedmiotowa jednostki 2"](frame,i)}} === === {{Code|p["Pełna nazwa jednostki 2"](frame,i)}} === == Funkcje pełnych nazw jednostki trzeciej wersji == === {{Code|p["Pełna nazwa dyskusji jednostki 3"](frame,i)}} === === {{Code|p["Pełna nazwa przedmiotowa jednostki 3"](frame,i)}} === === {{Code|p["Pełna nazwa jednostki 3"](frame,i)}} === == Funkcje nazw jednostki == === {{Code|p["Nazwa jednostki"](frame,i)}} === == Funkcje nazw jednostki drugiej wersji == === {{Code|p["Nazwa jednostki 2"](frame,i)}} === === {{Code|p["Nazwa przedmiotowa jednostki 2"](frame,i)}} === === {{Code|p["Nazwa dyskusji jednostki 2"](frame,i)}} === == Funkcje nazw przestrzeni nazw trzeciej wersji == === {{Code|p["Nazwa przestrzeni nazw 3"](frame,i)}} === === {{Code|p["Nazwa przedmiotowej przestrzeni nazw 3"](frame,i)}} === === {{Code|p["Nazwa przestrzeni nazw dyskusji 3"](frame,i)}} === == Funkcje nazw jednostki trzeciej wersji == === {{Code|p["Nazwa jednostki 3"](frame,i)}} === === {{Code|p["Nazwa przedmiotowa jednostki 3"](frame,i)}} === === {{Code|p["Nazwa dyskusji jednostki 3"](frame,i)}} === == Funkcje typu jednostki == === {{Code|p["Typ jednostki"](frame,i)}} === === {{Code|p["Typ jednostki 2"](frame,i)}} === === {{Code|p["Typ jednostki 3"](frame,i)}} === === Funkcje typu jednostki przedmiotowe === ==== {{Code|p["Przedmiotowy typ jednostki"](frame,i)}} ==== ==== {{Code|p["Przedmiotowy typ jednostki 2"](frame,i)}} ==== ==== {{Code|p["Przedmiotowy typ jednostki 3"](frame,i)}} ==== === Fukcje typu jednostki dyskusji === ==== {{Code|p["Dyskusyjny typ jednostki"](frame,i)}} ==== ==== {{Code|p["Dyskusyjny typ jednostki 2"](frame,i)}}} ==== ==== {{Code|p["Dyskusyjny typ jednostki 3"](frame,i)}} ==== == Funkcje chech pudełka == === {{Code|p["Cecha pudełka"](frame)}} === === {{Code|p["Przedmiotowa cecha pudełka"](frame)}} === === {{Code|p["Dyskusyjna cecha pudełka"](frame)}} === == Fukcje ogólnego pudełka == === {{Code|p["Ogólne pudełko"](frame)}} === == Funkcje ogólne == === {{Code|p["Tekst pudełka"](frame)}} === == Funkcje błędów pudełka == === {{Code|p["Błędy pudełka"](frame)}} === === {{Code|p["Przedmiotowe błędy pudełka"](frame)}} === === {{Code|p["Dyskusyjne błędy pudełka"](frame)}} === == Funkcje nazw stron == === {{Code|p["Nazwa strony głównej projektu"](frame,i)}} === === {{Code|p["Nazwa strony głównej dla dzieci projektu"](frame,i)}} === == Funkcje kodów == === {{Code|p["Kod języka"](frame,i)}} === === {{Code|p["Kod projektu"](frame,i)}} === === {{Code|p["Klucz projektu"](frame,i)}} === == Funkcje wiki == === {{Code|p["Inny niż język bieżący wiki"](frame)}} === === {{Code|p["Inne niż lokalne wiki"](frame)}} === === {{Code|p["Inne niż bieżące wiki"](frame)}} === == Funkcje typów parametrów, czy podane je == === {{Code|p["Podano parametry nienazwane"](frame)}} === === {{Code|p["Podano parametry numerowane"](frame)}} === === {{Code|p["Podano parametry nazwane"](frame)}} === == Funkcje kodów tego projektu == === {{Code|p["Kod projektu tego projektu"](frame)}} === === {{Code|p["Kod języka tego projektu"](frame)}} === === {{Code|p["Klucz projektu tego projektu"](frame)}} === == Funkcje stron == === {{Code|p["Strona główna tego projektu"](frame)}} === === {{Code|p["Strona główna dla dzieci tego projektu"](frame)}} === == Funkcje nazw stron drugiej wersji == === {{Code|p["Nazwa strony głównej dla dzieci projektu 2"](frame)}} === === {{Code| p["Nazwa strony głównej projektu 2"](frame)}} === {{BrClear}} <noinclude><!-- -->{{ProstaStronaKoniec}}<!-- -->{{Kategoria|Opisy funkcji, w Lua w Scribunto, w modułach}}<!-- --></noinclude> n7h7ioh7j6146n08erfsk2u9eo74kfi 540370 540369 2026-04-23T12:39:20Z Persino 2851 540370 wikitext text/x-wiki <noinclude>{{ProstaStronaStart | nagłówek = {{Podrozdział|{{ld2|Pudełko}}|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 pudelko_modul=require("Module:Pudełko"); </syntaxhighlight> dzięki, któremu można wypisywać funkcje należącego do niego. Posługuje się na parametrach pudełkowych {{Parametr|nazwa przestrzeni nazw}} (czy też bez numerka {{Parametr|nazwa przestrzeni nazw i}} dla tego numerowanego) lub te z numerkiem po jednej spacji w nich (ale nie dla tego z końcówką {{Code| i}}) mogą zostać użyte jako parametry szablonu. Moduł {{Code|{{ld2|Pudełko}}}} przedstawia funkcje nazw w oparciu o funkcje nazw {{Code|{{ld2|Nazwy}}}}, generuje on nazwy za pomocą parametrów pudełkowych podanych poniżej. Parametr {{Parametr|nazwa jednostki}} (lub parametr {{Parametr|cel}} dla numerka tego pierwszego, tego alternatywnego), lub te z numerkiem po jednej spacji w nazwie parametru, albo numerowane numerkami {{Code|1}}, {{Code|2}},..., mogą zostać użyte jako parametry szablonu. Parametry określające rodzaj jednostki {{Parametr|typ jednostki}} z {{Parametr|dyskusja typu jednostki}}, itp. w wersjach z numerkiem po jednej spacji w nich mogą zostać użyte jako parametry szablonu. A te tymi numerowanymi liczbami naturalnymi {{Tt|nazwy jednostki}} od jedynki wzwyż poprzez szablon, w którym są one użyte, one też mogą być użyte z dwukropkiem, te numerowane, na samym początku nazwy, wtedy one są traktowane jako pełne nazwy strony, i wtedy one nie zostaną z interpretowane, że do nich trzeba użyć parametr odpowiedni z nazwą przetrzeni nazw z tego numerowanego, czy ogólny, aby utworzyć znów inną pełną nazwę strony dla tego numerka. Zestawienie: * {{Code|nazwa przestrzeni nazw}} i {{Code|nazwa przestrzeni nazw i}} (ogólna nazwa przestrzeni nazw dla wszystkich numerków, i tych numerowanych jednostek) - i to pierwsze z numerkiem, tzn. {{Code|nazwa przestrzeni nazw 1}}, {{Code|nazwa przestrzeni nazw 2}}, ..., * {{Code|nazwa jednostki}} - i te z numerkiem: {{Code|nazwa jednostki 1}}, {{Code|nazwa jednostki 2}}, ..., lub gdy jest zamiast tego parametrem numerowany, {{Code|1}}, {{Code|2}},..., który dla tego pierwszego może być uznany jako: {{Code|cel}} {{=}} {{Code|1}}, * {{Code|typ jednostki}} (parametr bazowy) i {{Code|typ jednostki i}} (parametr domyślny numerkowy) - i te z numerkiem: {{Code|typ jednostki 1}}, {{Code|typ jednostki 2}}, ..., tzn. gdy chcemy określić z jakim typem jednostki mamy do czynienia w zależności do jakiej przestrzeni nazw należy, a w danej, czy jest on np. programowy, czy tylko jest opisem, jak to bywa w szablonach {{Np|Template|link=tak}}, podobnie jest w przypadku {{Np|Module|link=tak}}, czy jak jest w innych przestrzeniach nazw, ** {{Code|dyskusja typu jednostki}} (parametr bazowy) i {{Code|dyskusja typu jednostki i}} (parametr domyślny numerkowy) - i te z numerkiem: {{Code|dyskusja typu jednostki 1}}, {{Code|dyskusja typu jednostki 2}}, ..., gdy chcemy określić wartością niepustą,że chodzi tutaj o typ jednostki. == {{Code|p.CzyNiepoprawnaNazwa(nazwa_jednostki)}} == Funkcja sprawdzajaca, czy jest poprawnie podana nazwa jednostki, czy ma poprawną nazwę. Znakami tymi, z których nie powinna składać się nazwa jest {{Code|<nowiki>{}<>|[]#\n</nowiki>}} i dodatkowo znak {{Code|&#127;}} (kod {{Code|{{Nowiki|&#127;}}}}). Też nie może składać się z trzech znaków tyldy, tzn. {{Code|<nowiki>~~~</nowiki>}}. Również w swojej budowie nie może składać się ze kodów {{Strong|HTML}} literowych o wzorze {{Code|{{Nowiki|&(%a+);}}}}. Natomiast może składać się z {{Code|{{Nowiki|&#(%d+);}}}} i {{Code|{{Nowiki|&#x(%x+);}}}}, ale w pierw te kody muszą być zamienione na normalne znaki. Skrótowa definicja funkcji: <syntaxhighlight lang="lua"> function p.CzyNiepoprawnaNazwa(nazwa_jednostki)...end; </syntaxhighlight> Wtedy ciało funkcji tej, czyli jego definicja w środku, jest: <syntaxhighlight lang="lua"> -- Moduł: "Moduł:Html/dane", służy do ładowania znaku o kodzie HTML "&#127;"; local html_dane_modul=mw.loadData("Module:Html/dane"); return mw.ustring.match(nazwa_jednostki,"[{}<>|%[%]#\n"..html_dane_modul.znak_127.."]+") or mw.ustring.match(nazwa_jednostki,"~~~") or mw.ustring.match(nazwa_jednostki,"&(%a+);"); </syntaxhighlight> Parametry: * {{Code|nazwa_jednostki}} - nazwa jednostki do sprawdzenia. Przykłady: <syntaxhighlight lang="lua"> local pudelko_modul=require("Module:Pudełko"); -- Podana przykładowa niepoprawna nazwa jedostki local nazwa_jednostki="Nazwa pliku [[Nazwa linku w pliku]]"; -- Fukcja zwróci wartość: local czy_poprawna_nazwa=true; local czy_poprawna_nazwa=pudelko_modul.CzyNiepoprawnaNazwa(nazwa_jednostki); </syntaxhighlight> == Funkcje nazw przestrzeni nazw == === {{Code|p["Nazwa przestrzeni nazw"](frame,...)}} === Funkcja pisze nazwę przestrzeni nazw, niezależnie, czy to jest przedmiotowa, czy dyskusji, według podanej w zmiennej {{Code|nazwa przestrzeni nazw}} dla pozycja bazowej w podanych parametrach szablonu rodzicu ramki dziecka, lub dla innej pozycji należy parametr podawaćw formie {{Code|nazwa przestrzeni nazw 1}}, {{Code|nazwa przestrzeni nazw 2}}, {{Code|nazwa przestrzeni nazw 3}},..., lub te parametry można podać w postaci ogólnej {{Code|nazwa przestrzeni nazw i}}. Parametry podaje się w parametrach rodzica wywołania tej funkcji {{Code|{{m|Pudełko|Nazwa przestrzeni nazw}}}} (ale ich nie trzeba podawać w dziecku, ale można) i w parametrach dziecka, jeśli chodzi o zmienną {{Code|numer jednostki}}, czyli np.: {{Code|{{m|Pudełko|Nazwa przestrzeni nazw|numer jednostki{{=}}<jakaś liczba całkowita dodatnia>}}}}. Te parametry przestrzenne zamiast w rodzicu w szablonie można podać w ramce dziecka, wtedy parametry dziecka mają pierwszeństwo. Przestrzeń nazw z parametrów nazw przestrzennych może odpowiadać wartości przestrzeni głównej, to wtedy odpowiednia przestrzeń nazw z parametru nazwy jednostki się nie liczy w tej funkcji, aby się liczyła należy użyć funkcji {{Code|{{sr|#p["Nazwa przestrzeni nazw 2"](frame,...)|p=Pudełko}}}}. Definicja skrótowa funkcji: <syntaxhighlight lang="lua"> p["Nazwa przestrzeni nazw"]=function(frame,czy_uwzglednic_alternatywna_nazwe,i)...end; </syntaxhighlight> Wtedy ciało funkcji tej, czyli jego definicja w środku, jest: <syntaxhighlight lang="lua"> -- Jest liczony numer parametru nazwy przestrzeni nazw, domyslnie chodzi tu o numer bazowy parametrów przestrzennych; local numer_jednostki=i or frame.args["numer jednostki"]; local liczba_numer_jednostki=((numer_jednostki)and(tonumber(numer_jednostki))or 0); local pudelko_pomocne_modul=require("Module:Pudełko/Pomocne"); -- Liczy nazwę przestrzeni nazw na podstawie podanych parametrów; return pudelko_pomocne_modul.Nazwa_przestrzeni_nazw(frame,0, czy_uwzglednic_alternatywna_nazwe,liczba_numer_jednostki); </syntaxhighlight> Parametry funkcji: * {{Code|frame}} - tablica ramki tablicy transportu, * {{Code|czy_uwzglednic_alternatywna_nazwe}} - czy ma uwzględniać nazwę przestrzeni nazw domyślną szablonu, dostępne wartości: {{Code|false}}, w której nazwa domyślna nie jest uwzględniana wtedy, oraz {{Code|nil}} i {{Code|true}}, które oznaczają to samo, w tym jeżeli ona jest uwzględniana, wtedy jest brany parametr pierwszy dziecka, który musi istnieć przy takiej wartości tego parametru, tzn. {{Code|{{m|Pudełko|Nazwa przestrzeni nazw|Szablon}}}}, a nazwa uzyskana nazwy przestrzeni nazw jest w takim przypadku błędna, a jeżeli nazwa domyślna jest błędna, czyli {{Code|{{m|Pudełko|Nazwa przestrzeni nazw|Moja przestrzeń}}}}, wtedy funkcja zwraca stan błędu {{Code|(błąd)}}. * {{Code|i}} - numer zmiennej nazwy przestrzeni nazw. Funkcja wykorzystuje {{Code|{{sr|#p.Nazwa_przestrzeni_nazw(frame,...)|p=Pudełko/Pomocne}}}} do wyznaczania ogólnego nazwy przestrzeni nazw dla pozycji bazowej i numerkowej, tzn. dla pozycji: jeden, dwa, trzy,..., itd, i ich ogólnej. Parametry ramki tablicy transportu dziecka: * {{Code|nazwa przestrzeni nazw}}, {{Code|nazwa przestrzeni nazw 1}}, {{Code|nazwa przestrzeni nazw 2}}, {{Code|nazwa przestrzeni nazw 3}},..., {{Code|nazwa przestrzeni nazw i}} - nazwy przestrzeni nazw dla pozycji bazowej, numerkowej i ogólnej, * {{Code|typ jednostki}}, {{Code|typ jednostki 1}}, {{Code|typ jednostki 2}}, {{Code|typ jednostki 3}},..., {{Code|typ jednostki i}} - typy jednostek, którym odpowiadają pewne przestrzenie przedmiotowe, dla pozycji bazowej, numerkowej i ogólnej, ** {{Code|dyskusja typu jednostki}}, {{Code|dyskusja typu jednostki 1}}, {{Code|dyskusja typ jednostki 2}}, {{Code|dyskusja typ jednostki 3}},..., {{Code|dyskusja typ jednostki i}} - czy dany typ jednostki ma przedstawiać, jeśli niepusta, przestrzeń dyskusji dla pozycji bazowej, numerkowej i ogólnej, * {{Code|numer jednostki}} - jak parametr {{Code|i}} nie został ustawiony, to wtedy liczy się ta zmienna. Parametr ramki tablicy transportu rodzica szablonu: * {{Code|nazwa przestrzeni nazw}}, {{Code|nazwa przestrzeni nazw 1}}, {{Code|nazwa przestrzeni nazw 2}}, {{Code|nazwa przestrzeni nazw 3}},..., {{Code|nazwa przestrzeni nazw i}} - nazwy przestrzeni nazw dla pozycji bazowej oraz zwykłej i ogólnej numerkowej, * {{Code|typ jednostki}}, {{Code|typ jednostki 1}}, {{Code|typ jednostki 2}}, {{Code|typ jednostki 3}},..., {{Code|typ jednostki i}} - typy jednostek, którym odpowiadają pewne przestrzenie przedmiotowe, dla pozycji bazowej, numerkowej i ogólnej, ** {{Code|dyskusja typu jednostki}}, {{Code|dyskusja typu jednostki 1}}, {{Code|dyskusja typ jednostki 2}}, {{Code|dyskusja typ jednostki 3}},..., {{Code|dyskusja typ jednostki i}} - czy dany typ jednostki ma przedstawiać, jeśli niepusta, przestrzeń dyskusji dla pozycji bazowej, numerkowej i ogólnej. Przykłady: <syntaxhighlight lang="mediawiki"> {{Nazwa szablonu|nazwa przestrzeni nazw=Wikibooks|nazwa przestrzeni nazw 2=Szablon|nazwa przestrzeni nazw i=Moduł}} </syntaxhighlight> W dziecku powiedzmy jest wywołanie, i szukamy nazwy przestrzeni nazw o numerze dwa, która nie została podana, ale istnieje za to jej wersji ogólna {{Code|nazwa przestrzeni nazw i}} i domyślna {{Code|nazwa przestrzeni nazw}}: <syntaxhighlight lang="mediawiki"> {{#invoke:Pudełko|Nazwa przestrzeni nazw|numer jednostki=1}} </syntaxhighlight> Na podstawie powyższego przykładu otrzymamy wynik o schemacie, nie wyniku, bo tam nie ma zmiennej {{Code|nazwa przestrzeni nazw 1}}, ale jest {{Code|nazwa przestrzeni nazw i}}: <syntaxhighlight lang="mediawiki"> <!-- Ale nie "nazwa przestrzeni nazw", bo jej nie ma, ale za to istnieje "nazwa przestrzeni nazw i"; --> <!-- nazwa przestrzeni nazw 1=nazwa przestrzeni nazw i=Moduł; --> <!-- Czyli wynik: --> Moduł <!-- Widzimy, że wygenerowała się nazwa przestrzeni nazw, którą jest przestrzeń programowa, którą również jest "Szablon"; --> </syntaxhighlight> Nie jest brana w tym powyższym przykładzie zmienna {{Code|nazwa przestrzeni nazw}}, bo jej nie ma, ale za to jest {{Code|nazwa przestrzeni nazw i}}, bo ona występuje jako parametr domyślny ogólny dla parametrów numerkowych. Przykłady w wikikodzie: * {{Code|{{m|Pudełko|Nazwa przestrzeni nazw|numer jednostki{{=}}2}}}} → {{Tt|{{#invoke:Pudełko|Nazwa przestrzeni nazw|numer jednostki=2}}}} * {{Code|{{m|Pudełko|Nazwa przestrzeni nazw|Szablon|nazwa przestrzeni nazw i{{=}}Moja przestrzeń|numer jednostki{{=}}2}}}} → {{Tt|{{#invoke:Pudełko|Nazwa przestrzeni nazw|Szablon|nazwa przestrzeni nazw i=Moja przestrzeń|numer jednostki=2}}}} * {{Code|{{m|Pudełko|Nazwa przestrzeni nazw|nazwa przestrzeni nazw 2{{=}}Szablon|numer jednostki{{=}}2}}}} → {{Tt|{{#invoke:Pudełko|Nazwa przestrzeni nazw|nazwa przestrzeni nazw 2=Szablon|numer jednostki=2}}}} * {{Code|{{m|Pudełko|Nazwa przestrzeni nazw|nazwa przestrzeni nazw 2{{=}}Szablon|numer jednostki{{=}}2}}}} → {{Tt|{{#invoke:Pudełko|Nazwa przestrzeni nazw|nazwa przestrzeni nazw i=Szablon|numer jednostki=2}}}} * {{Code|{{m|Pudełko|Nazwa przestrzeni nazw|nazwa przestrzeni nazw{{=}}Szablon|numer jednostki{{=}}2}}}} → {{Tt|{{#invoke:Pudełko|Nazwa przestrzeni nazw|nazwa przestrzeni nazw=Szablon|numer jednostki=2}}}} Powyżej dla przykładu podano parametry nie w rodzicu w szablonie, tylko w dziecku, jeśli chodzi o parametry nazw przestrzeni nazw, ale ich się za to nie powinno podawać w tych ramach, tylko w szablonach, w których wywoływane są te ramki pudełek {{Code|{{m|Pudełko}}}}, ale tak tutaj tak zrobiono by było najłatwiej sprawdzić działanie tego typu funkcji. Analogicznie możemy podawać parametry typu jednostki, np.: wywołaniu modułowym {{Code|{{m|Pudełko|Nazwa przestrzeni nazw|typ jednostki 2{{=}}strona szablonu|numer jednostki{{=}}2}}}}, ale o tym więcej w rozdziałach {{Code|{{sr|# p["Typ jednostki"](frame,i)|p=Pudełko}}}}, {{Code|{{sr|#p["Typ jednostki 2"](frame,i)|p=Pudełko}}}}, {{Code|{{sr|#p["Typ jednostki 3"](frame,i)|p=Pudełko}}}} itp. w „{{sr|#Funkcje typu jednostki|p=Pudełko}}”, on definiuje przestrzenie przedmiotowe, ale można użyć parametru dyskusji typu jednostki z wartością niepustą, wtedy wyświetli się nazwa przestrzeni nazw dyskusji. Również parametry typu jednostki nie powinno się podawać w dziecku w ramce, tylko w rodzicu w szablonie jako parametry, w którym ta ramka jest wywoływana, ale tutaj podano jedynie dla przykładu, jak najłatwiej sprawdzić działanie tych parametrów tej funkcji. Najpierw w funkcji nagłówku brane są parametry nazw przestrzeni nazw, a jeżeli ich nie ma, to parametry typu jednostki, a jeżeli nie ma, to generowane są nazwy na podstawie aktualnego modułu. === {{Code|p["Nazwa przedmiotowej przestrzeni nazw"](frame,...)}} === Funkcja pisze przedmiotową nazwę przestrzeni nazw jakikolwiek nazwy przestrzeni nazw (tzn. nazwę przedmiotową nazwy przestrzenie nazw, czyli nie dyskusji, zamieniana jest na nią samą, czyli identyfikator przestrzeni się nie zmienia, a dyskusji, nie przedmiotową, przekształca się na przedmiotową jej odpowiadającą, czyli w tym przypadku identyfikator przestrzeni zmniejsza się o numer mniej), według podanej w zmiennej {{Code|nazwa przestrzeni nazw}} dla pozycja bazowej w podanych parametrach szablonu rodzicu ramki dziecka, lub dla innej pozycji należy parametr podawać w formie {{Code|nazwa przestrzeni nazw 1}}, {{Code|nazwa przestrzeni nazw 2}}, {{Code|nazwa przestrzeni nazw 3}},..., lub te parametry można podać w postaci ogólnej {{Code|nazwa przestrzeni nazw i}}. Parametry podaje się w parametrach rodzica wywołania tej funkcji {{Code|{{m|Pudełko|Nazwa przedmiotowej przestrzeni nazw}}}} (ale ich nie trzeba podawać w dziecku, ale można) i w parametrach dziecka, jeśli chodzi o zmienną {{Code|numer jednostki}}, czyli np.: {{Code|{{m|Pudełko|Nazwa przedmiotowej przestrzeni nazw|numer jednostki{{=}}<jakaś liczba całkowita dodatnia>}}}}. Te parametry przestrzenne zamiast w rodzicu w szablonie można podać w ramce dziecka, wtedy parametry dziecka mają pierwszeństwo. Parametry przestrzenne mogą mogą być podane w postaci przestrzeni przedmiotowej lub dyskusji, ale ta funkcja zawsze ją zamienia na przedmiotową. Przestrzeń nazw z parametrów nazw przestrzennych może odpowiadać wartości przestrzeni głównej, to wtedy odpowiednia przestrzeń nazw z parametru nazwy jednostki się nie liczy w tej funkcji, aby się liczyła należy użyć funkcji {{Code|{{sr|#p["Nazwa przedmiotowej przestrzeni nazw 2"](frame,...)|p=Pudełko}}}}. Definicja skrótowa funkcji: <syntaxhighlight lang="lua"> p["Nazwa przedmiotowej przestrzeni nazw"]=function(frame,czy_uwzglednic_alternatywna_nazwe,i)...end; </syntaxhighlight> Wtedy ciało funkcji tej, czyli jego definicja w środku, jest: <syntaxhighlight lang="lua"> -- Jest liczony numer parametru nazwy przestrzeni nazw, domyslnie chodzi tu o numer bazowy parametrów przestrzennych; local numer_jednostki=i or frame.args["numer jednostki"]; local liczba_numer_jednostki=((numer_jednostki)and(tonumber(numer_jednostki))or 0); local pudelko_pomocne_modul=require("Module:Pudełko/Pomocne"); -- Liczy nazwę przestrzeni nazw przedmiotową na podstawie podanych parametrów; return pudelko_pomocne_modul.Nazwa_przestrzeni_nazw(frame,1, czy_uwzglednic_alternatywna_nazwe,liczba_numer_jednostki); </syntaxhighlight> Parametry funkcji: * {{Code|frame}} - tablica ramki tablicy transportu, * {{Code|czy_uwzglednic_alternatywna_nazwe}} - czy ma uwzględniać nazwę przestrzeni nazw domyślną szablonu, dostępne wartości: {{Code|false}}, w której nazwa domyślna nie jest uwzględniana wtedy, oraz {{Code|nil}} i {{Code|true}}, które oznaczają to samo, w tym jeżeli ona jest uwzględniana, wtedy jest brany parametr pierwszy dziecka, który musi istnieć przy takiej wartości tego parametru, tzn. {{Code|{{m|Pudełko|Nazwa przedmiotowej przestrzeni nazw|Dyskusja szablonu}}}} - ta nazwa domyślna zostanie zamieniona na przedmiotową, a jak ona by była przedmiotowa, to żadnej zamiany by nie było, a nazwa uzyskana z nazwy przestrzeni nazw z parametrów przestrzennych jest w takim przypadku błędna, to w takim razie brany jest ten parametr, a jeżeli ta nazwa domyślna jest błędna, czyli {{Code|{{m|Pudełko|Nazwa przedmiotowej przestrzeni nazw|Moja przestrzeń}}}}, wtedy funkcja zwraca stan błędu {{Code|(błąd)}}. * {{Code|i}} - numer zmiennej nazwy przestrzeni nazw. Funkcja wykorzystuje {{Code|{{sr|#p.Nazwa_przestrzeni_nazw(frame,...)|p=Pudełko/Pomocne}}}} do wyznaczania ogólnego nazwy przestrzeni nazw dla pozycji bazowej i numerkowej, tzn. dla pozycji: jeden, dwa, trzy,..., itd, i ich ogólnej. Parametry ramki tablicy transportu dziecka: * {{Code|nazwa przestrzeni nazw}}, {{Code|nazwa przestrzeni nazw 1}}, {{Code|nazwa przestrzeni nazw 2}}, {{Code|nazwa przestrzeni nazw 3}},..., {{Code|nazwa przestrzeni nazw i}} - nazwy przestrzeni nazw dla pozycji bazowej, numerkowej i ogólnej, * {{Code|typ jednostki}}, {{Code|typ jednostki 1}}, {{Code|typ jednostki 2}}, {{Code|typ jednostki 3}},..., {{Code|typ jednostki i}} - typy jednostek, którym odpowiadają pewne przestrzenie przedmiotowe, dla pozycji bazowej, numerkowej i ogólnej, ** {{Code|dyskusja typu jednostki}}, {{Code|dyskusja typu jednostki 1}}, {{Code|dyskusja typ jednostki 2}}, {{Code|dyskusja typ jednostki 3}},..., {{Code|dyskusja typ jednostki i}} - czy dany typ jednostki ma przedstawiać, jeśli niepusta, przestrzeń dyskusji dla pozycji bazowej, numerkowej i ogólnej, * {{Code|numer jednostki}} - jak parametr {{Code|i}} nie został ustawiony, to wtedy liczy się ta zmienna. Parametr ramki tablicy transportu rodzica szablonu: * {{Code|nazwa przestrzeni nazw}}, {{Code|nazwa przestrzeni nazw 1}}, {{Code|nazwa przestrzeni nazw 2}}, {{Code|nazwa przestrzeni nazw 3}},..., {{Code|nazwa przestrzeni nazw i}} - nazwy przestrzeni nazw dla pozycji bazowej oraz zwykłej i ogólnej numerkowej, * {{Code|typ jednostki}}, {{Code|typ jednostki 1}}, {{Code|typ jednostki 2}}, {{Code|typ jednostki 3}},..., {{Code|typ jednostki i}} - typy jednostek, którym odpowiadają pewne przestrzenie przedmiotowe, dla pozycji bazowej, numerkowej i ogólnej, ** {{Code|dyskusja typu jednostki}}, {{Code|dyskusja typu jednostki 1}}, {{Code|dyskusja typ jednostki 2}}, {{Code|dyskusja typ jednostki 3}},..., {{Code|dyskusja typ jednostki i}} - czy dany typ jednostki ma przedstawiać, jeśli niepusta, przestrzeń dyskusji dla pozycji bazowej, numerkowej i ogólnej. Przykłady: <syntaxhighlight lang="mediawiki"> {{Nazwa szablonu|nazwa przestrzeni nazw=Dyskusja Wikibooks|nazwa przestrzeni nazw 2=Dyskusja szablonu|nazwa przestrzeni nazw i=Dyskusja modułu}} </syntaxhighlight> W dziecku powiedzmy jest wywołanie, i szukamy nazwy przestrzeni nazw o numerze dwa, która nie została podana, ale istnieje za to jej wersji ogólna {{Code|nazwa przestrzeni nazw i}} i domyślna {{Code|nazwa przestrzeni nazw}}: <syntaxhighlight lang="mediawiki"> {{#invoke:Pudełko|Nazwa przedmiotowej przestrzeni nazw|numer jednostki=1}} </syntaxhighlight> Na podstawie powyższego przykładu otrzymamy wynik o schemacie, nie wyniku, bo tam nie ma zmiennej {{Code|nazwa przestrzeni nazw 1}}, ale jest {{Code|nazwa przestrzeni nazw i}}: <syntaxhighlight lang="mediawiki"> <!-- Ale nie "nazwa przestrzeni nazw", bo jej nie ma, ale za to istnieje "nazwa przestrzeni nazw i"; --> <!-- nazwa przestrzeni nazw 1=nazwa przestrzeni nazw i=Dyskusja modułu; --> <!-- Czyli wynik: --> Moduł <!-- Widzimy, że wygenerowała się nazwa przestrzeni nazw, którą jest przestrzeń przedmiotowa programowa przestrzeni dyskusji "Dyskusja modułu", którą również jest "Szablon" jego przestrzeni dyskusji "Dyskusja szablonu", a dla ich przestrzeni przedmiotowej, zamiast dyskusji, to samo przekształca się na to samo; --> </syntaxhighlight> Nie jest brana w tym powyższym przykładzie zmienna {{Code|nazwa przestrzeni nazw}}, bo jej nie ma, ale za to jest {{Code|nazwa przestrzeni nazw i}}, bo ona występuje jako parametr domyślny ogólny dla parametrów numerkowych. Przykłady w wikikodzie: * {{Code|{{m|Pudełko|Nazwa przedmiotowej przestrzeni nazw|numer jednostki{{=}}2}}}} → {{Tt|{{#invoke:Pudełko|Nazwa przedmiotowej przestrzeni nazw|numer jednostki=2}}}} * {{Code|{{m|Pudełko|Nazwa przedmiotowej przestrzeni nazw|Dyskusja szablonu|nazwa przestrzeni nazw i{{=}}Moja przestrzeń|numer jednostki{{=}}2}}}} → {{Tt|{{#invoke:Pudełko|Nazwa przedmiotowej przestrzeni nazw|Dyskusja szablonu|nazwa przestrzeni nazw i=Moja przestrzeń|numer jednostki=2}}}} * {{Code|{{m|Pudełko|Nazwa przedmiotowej przestrzeni nazw|nazwa przestrzeni nazw 2{{=}}Dyskusja szablonu|numer jednostki{{=}}2}}}} → {{Tt|{{#invoke:Pudełko|Nazwa przedmiotowej przestrzeni nazw|nazwa przestrzeni nazw 2=Dyskusja szablonu|numer jednostki=2}}}} * {{Code|{{m|Pudełko|Nazwa przedmiotowej przestrzeni nazw|nazwa przestrzeni nazw 2{{=}}Dyskusja szablonu|numer jednostki{{=}}2}}}} → {{Tt|{{#invoke:Pudełko|Nazwa przedmiotowej przestrzeni nazw|nazwa przestrzeni nazw i=Dyskusja szablonu|numer jednostki=2}}}} * {{Code|{{m|Pudełko|Nazwa przedmiotowej przestrzeni nazw|nazwa przestrzeni nazw{{=}}Dyskusja szablonu|numer jednostki{{=}}2}}}} → {{Tt|{{#invoke:Pudełko|Nazwa przedmiotowej przestrzeni nazw|nazwa przestrzeni nazw=Dyskusja szablonu|numer jednostki=2}}}} Powyżej dla przykładu podano parametry nie w rodzicu w szablonie, tylko w dziecku, jeśli chodzi o parametry nazw przestrzeni nazw, ale ich się za to nie powinno podawać w tych ramach, tylko w szablonach, w których wywoływane są te ramki pudełek {{Code|{{m|Pudełko}}}}, ale tak tutaj tak zrobiono by było najłatwiej sprawdzić działanie tego typu funkcji. Analogicznie możemy podawać parametry typu jednostki, np.: wywołaniu modułowym {{Code|{{m|Pudełko|Nazwa przedmiotowej przestrzeni nazw|typ jednostki 2{{=}}strona szablonu|numer jednostki{{=}}2}}}}, ale o tym więcej w rozdziałach {{Code|{{sr|# p["Typ jednostki"](frame,i)|p=Pudełko}}}}, {{Code|{{sr|#p["Typ jednostki 2"](frame,i)|p=Pudełko}}}}, {{Code|{{sr|#p["Typ jednostki 3"](frame,i)|p=Pudełko}}}} itp. w „{{sr|#Funkcje typu jednostki|p=Pudełko}}”, ale wtedy ta sama nazwa przestrzeni nazw reprezentowana przez {{Parametr|typ jednostki 2|strona szablonu}}, jest zamieniana na to samo, lepiej jest tutaj używać parametrów przestrzennych nazw niż typu jednostki, bo typ jednostki ma taką samą wartość dla przestrzeni przedmiotowej, co dyskusji. Tutaj parametr dyskusji typu jednostki bazowy i numerkowy ogólny, czy szczegółowy, nie gra roli, bo nawet, gdy wygenerujemy nazwę przestrzeni dyskusji za pomoca tego parametru, to i tak otrzymamy na samym końcu jego nazwę przedmiotową. Również parametry typu jednostki nie powinno się podawać w dziecku w ramce, tylko w rodzicu w szablonie jako parametry, w którym ta ramka jest wywoływana, ale tutaj podano jedynie dla przykładu, jak najłatwiej sprawdzić działanie tych parametrów tej funkcji. Najpierw w funkcji nagłówku brane są parametry nazw przestrzeni nazw, a jeżeli ich nie ma, to parametry typu jednostki, a jeżeli nie ma, to generowane są nazwy na podstawie aktualnego modułu. === {{Code|p["Nazwa przestrzeni nazw dyskusji"](frame,...)}} === Funkcja pisze nazwę przestrzeni nazw dyskusji jakikolwiek nazwy przestrzeni nazw (tzn. nazwę przedmiotową nazwy przestrzenie nazw, czyli nie dyskusji, zamieniana jest na dyskusji, czyli identyfikator przestrzeni się zmienia jeden wyżej, a dyskusji, nie przedmiotową, przekształca się na tą samą), według podanej w zmiennej {{Code|nazwa przestrzeni nazw}} dla pozycja bazowej w podanych parametrach szablonu rodzicu ramki dziecka, lub dla innej pozycji należy parametr podawać w formie {{Code|nazwa przestrzeni nazw 1}}, {{Code|nazwa przestrzeni nazw 2}}, {{Code|nazwa przestrzeni nazw 3}},..., lub te parametry można podać w postaci ogólnej {{Code|nazwa przestrzeni nazw i}}. Parametry podaje się w parametrach rodzica wywołania tej funkcji {{Code|{{m|Pudełko|Nazwa przestrzeni nazw dyskusji}}}} (ale ich nie trzeba podawać w dziecku, ale można) i w parametrach dziecka, jeśli chodzi o zmienną {{Code|numer jednostki}}, czyli np.: {{Code|{{m|Pudełko|Nazwa przestrzeni nazw dyskusji|numer jednostki{{=}}<jakaś liczba całkowita dodatnia>}}}}. Te parametry przestrzenne zamiast w rodzicu w szablonie można podać w ramce dziecka, wtedy parametry dziecka mają pierwszeństwo. Parametry przestrzenne mogą mogą być podane w postaci przestrzeni przedmiotowej lub dyskusji, ale ta funkcja zawsze ją zamienia na dyskusji. Przestrzeń nazw z parametrów nazw przestrzennych może odpowiadać wartości przestrzeni głównej, to wtedy odpowiednia przestrzeń nazw z parametru nazwy jednostki się nie liczy w tej funkcji, aby się liczyła należy użyć funkcji {{Code|{{sr|#p["Nazwa przestrzeni nazw dyskusji 2"](frame,...)|p=Pudełko}}}}. Definicja skrótowa funkcji: <syntaxhighlight lang="lua"> p["Nazwa przestrzeni nazw dyskusji"]=function(frame,czy_uwzglednic_alternatywna_nazwe,i)...end; </syntaxhighlight> Wtedy ciało funkcji tej, czyli jego definicja w środku, jest: <syntaxhighlight lang="lua"> -- Jest liczony numer parametru nazwy przestrzeni nazw, domyslnie chodzi tu o numer bazowy parametrów przestrzennych; local numer_jednostki=i or frame.args["numer jednostki"]; local liczba_numer_jednostki=((numer_jednostki)and(tonumber(numer_jednostki))or 0); local pudelko_pomocne_modul=require("Module:Pudełko/Pomocne"); -- Liczy nazwę przestrzeni nazw dyskusji na podstawie podanych parametrów; return pudelko_pomocne_modul.Nazwa_przestrzeni_nazw(frame,2, czy_uwzglednic_alternatywna_nazwe,liczba_numer_jednostki); </syntaxhighlight> Parametry funkcji: * {{Code|frame}} - tablica ramki tablicy transportu, * {{Code|czy_uwzglednic_alternatywna_nazwe}} - czy ma uwzględniać nazwę przestrzeni nazw domyślną szablonu, dostępne wartości: {{Code|false}}, w której nazwa domyślna nie jest uwzględniana wtedy, oraz {{Code|nil}} i {{Code|true}}, które oznaczają to samo, w tym jeżeli ona jest uwzględniana, wtedy jest brany parametr pierwszy dziecka, który musi istnieć przy takiej wartości tego parametru, tzn. {{Code|{{m|Pudełko|Nazwa przestrzeni nazw dyskusji|Szablon}}}} - ta nazwa domyślna zostanie przekształcona na dyskusji, a jeżeli ona by była dyskusji, to nie byłoby żadnego przekształcenia, a nazwa uzyskana nazwy przestrzeni nazw z parametrów przestrzennych jest w takim przypadku błędna, to w takim razie brany jest ten parametr, a jeżeli nazwa domyślna jest błędna, czyli {{Code|{{m|Pudełko|Nazwa przestrzeni nazw dyskusji|Moja przestrzeń}}}}, wtedy funkcja zwraca stan błędu {{Code|(błąd)}}. * {{Code|i}} - numer zmiennej nazwy przestrzeni nazw. Funkcja wykorzystuje {{Code|{{sr|#p.Nazwa_przestrzeni_nazw(frame,...)|p=Pudełko/Pomocne}}}} do wyznaczania ogólnego nazwy przestrzeni nazw dla pozycji bazowej i numerkowej, tzn. dla pozycji: jeden, dwa, trzy,..., itd, i ich ogólnej. Parametry ramki tablicy transportu dziecka: * {{Code|nazwa przestrzeni nazw}}, {{Code|nazwa przestrzeni nazw 1}}, {{Code|nazwa przestrzeni nazw 2}}, {{Code|nazwa przestrzeni nazw 3}},..., {{Code|nazwa przestrzeni nazw i}} - nazwy przestrzeni nazw dla pozycji bazowej, numerkowej i ogólnej, * {{Code|typ jednostki}}, {{Code|typ jednostki 1}}, {{Code|typ jednostki 2}}, {{Code|typ jednostki 3}},..., {{Code|typ jednostki i}} - typy jednostek, którym odpowiadają pewne przestrzenie przedmiotowe, dla pozycji bazowej, numerkowej i ogólnej, ** {{Code|dyskusja typu jednostki}}, {{Code|dyskusja typu jednostki 1}}, {{Code|dyskusja typ jednostki 2}}, {{Code|dyskusja typ jednostki 3}},..., {{Code|dyskusja typ jednostki i}} - czy dany typ jednostki ma przedstawiać, jeśli niepusta, przestrzeń dyskusji dla pozycji bazowej, numerkowej i ogólnej, * {{Code|numer jednostki}} - jak parametr {{Code|i}} nie został ustawiony, to wtedy liczy się ta zmienna. Parametr ramki tablicy transportu rodzica szablonu: * {{Code|nazwa przestrzeni nazw}}, {{Code|nazwa przestrzeni nazw 1}}, {{Code|nazwa przestrzeni nazw 2}}, {{Code|nazwa przestrzeni nazw 3}},..., {{Code|nazwa przestrzeni nazw i}} - nazwy przestrzeni nazw dla pozycji bazowej oraz zwykłej i ogólnej numerkowej, * {{Code|typ jednostki}}, {{Code|typ jednostki 1}}, {{Code|typ jednostki 2}}, {{Code|typ jednostki 3}},..., {{Code|typ jednostki i}} - typy jednostek, którym odpowiadają pewne przestrzenie przedmiotowe, dla pozycji bazowej, numerkowej i ogólnej, ** {{Code|dyskusja typu jednostki}}, {{Code|dyskusja typu jednostki 1}}, {{Code|dyskusja typ jednostki 2}}, {{Code|dyskusja typ jednostki 3}},..., {{Code|dyskusja typ jednostki i}} - czy dany typ jednostki ma przedstawiać, jeśli niepusta, przestrzeń dyskusji dla pozycji bazowej, numerkowej i ogólnej. Przykłady: <syntaxhighlight lang="mediawiki"> {{Nazwa szablonu|nazwa przestrzeni nazw=Wikibooks|nazwa przestrzeni nazw 2=Szablon|nazwa przestrzeni nazw i=Moduł}} </syntaxhighlight> W dziecku powiedzmy jest wywołanie, i szukamy nazwy przestrzeni nazw o numerze dwa, która nie została podana, ale istnieje za to jej wersji ogólna {{Code|nazwa przestrzeni nazw i}} i domyślna {{Code|nazwa przestrzeni nazw}}: <syntaxhighlight lang="mediawiki"> {{#invoke:Pudełko|Nazwa przestrzeni nazw dyskusji|numer jednostki=1}} </syntaxhighlight> Na podstawie powyższego przykładu otrzymamy wynik o schemacie, nie wyniku, bo tam nie ma zmiennej {{Code|nazwa przestrzeni nazw 1}}, ale jest {{Code|nazwa przestrzeni nazw i}}: <syntaxhighlight lang="mediawiki"> <!-- Ale nie "nazwa przestrzeni nazw", bo jej nie ma, ale za to istnieje "nazwa przestrzeni nazw i"; --> <!-- nazwa przestrzeni nazw 1=nazwa przestrzeni nazw i=Moduł; --> <!-- Czyli wynik: --> Dyskusja modułu <!-- Widzimy, że wygenerowała się nazwa przestrzeni nazw, którą jest przestrzeń dyskusji przestrzeni programowej przestrzeni przedmiotowej "Moduł", którą również jest "Szablon" jego przestrzeni dyskusji "Dyskusja szablonu", a dla ich przestrzeni przedmiotowej, zamiast dyskusji, to przekształca się na dyskusji jej odpowiadającą; --> </syntaxhighlight> Nie jest brana w tym powyższym przykładzie zmienna {{Code|nazwa przestrzeni nazw}}, bo jej nie ma, ale za to jest {{Code|nazwa przestrzeni nazw i}}, bo ona występuje jako parametr domyślny ogólny dla parametrów numerkowych. Przykłady w wikikodzie: * {{Code|{{m|Pudełko|Nazwa przestrzeni nazw dyskusji|numer jednostki{{=}}2}}}} → {{Tt|{{#invoke:Pudełko|Nazwa przestrzeni nazw dyskusji|numer jednostki=2}}}} * {{Code|{{m|Pudełko|Nazwa przestrzeni nazw dyskusji|Szablon|nazwa przestrzeni nazw i{{=}}Moja przestrzeń|numer jednostki{{=}}2}}}} → {{Tt|{{#invoke:Pudełko|Nazwa przestrzeni nazw dyskusji|Szablon|nazwa przestrzeni nazw i=Moja przestrzeń|numer jednostki=2}}}} * {{Code|{{m|Pudełko|Nazwa przestrzeni nazw dyskusji|nazwa przestrzeni nazw 2{{=}}Szablon|numer jednostki{{=}}2}}}} → {{Tt|{{#invoke:Pudełko|Nazwa przestrzeni nazw dyskusji|nazwa przestrzeni nazw 2=Szablon|numer jednostki=2}}}} * {{Code|{{m|Pudełko|Nazwa przestrzeni nazw dyskusji|nazwa przestrzeni nazw 2{{=}}Szablon|numer jednostki{{=}}2}}}} → {{Tt|{{#invoke:Pudełko|Nazwa przestrzeni nazw dyskusji|nazwa przestrzeni nazw i=Szablon|numer jednostki=2}}}} * {{Code|{{m|Pudełko|Nazwa przestrzeni nazw dyskusji|nazwa przestrzeni nazw{{=}}Szablon|numer jednostki{{=}}2}}}} → {{Tt|{{#invoke:Pudełko|Nazwa przestrzeni nazw dyskusji|nazwa przestrzeni nazw=Szablon|numer jednostki=2}}}} Powyżej dla przykładu podano parametry nie w rodzicu w szablonie, tylko w dziecku, jeśli chodzi o parametry nazw przestrzeni nazw, ale ich się za to nie powinno podawać w tych ramach, tylko w szablonach, w których wywoływane są te ramki pudełek {{Code|{{m|Pudełko}}}}, ale tak tutaj tak zrobiono by było najłatwiej sprawdzić działanie tego typu funkcji. Analogicznie możemy podawać parametry typu jednostki, np.: wywołaniu modułowym {{Code|{{m|Pudełko|Nazwa przestrzeni nazw dyskusji|typ jednostki 2{{=}}strona szablonu|numer jednostki{{=}}2}}}}, ale o tym więcej w rozdziałach {{Code|{{sr|# p["Typ jednostki"](frame,i)|p=Pudełko}}}}, {{Code|{{sr|#p["Typ jednostki 2"](frame,i)|p=Pudełko}}}}, {{Code|{{sr|#p["Typ jednostki 3"](frame,i)|p=Pudełko}}}} itp. w „{{sr|#Funkcje typu jednostki|p=Pudełko}}”, ale wtedy nazwa przestrzeni nazw reprezentowana przez {{Parametr|typ jednostki 2|strona szablonu}}, jest zamieniana na nazwę przestrzeni nazw dyskusji. Parametr dyskusji typu jednostki bazowy lub dla danego numerka ogólny, czy szczegółowy, nie gra roli. Również parametry typu jednostki nie powinno się podawać w dziecku w ramce, tylko w rodzicu w szablonie jako parametry, w którym ta ramka jest wywoływana, ale tutaj podano jedynie dla przykładu, jak najłatwiej sprawdzić działanie tych parametrów tej funkcji. Najpierw w funkcji nagłówku brane są parametry nazw przestrzeni nazw, a jeżeli ich nie ma, to parametry typu jednostki, a jeżeli nie ma, to generowane są nazwy na podstawie aktualnego modułu. == Funkcje nazw przestrzeni nazw drugiej wersji == === {{Code|p["Nazwa przestrzeni nazw 2"](frame,...)}} === Funkcja pisze nazwę przestrzeni nazw, niezależnie, czy to jest przedmiotowa, czy dyskusji, według podanej w zmiennej {{Code|nazwa przestrzeni nazw}} dla pozycja bazowej w podanych parametrach szablonu rodzicu ramki dziecka, lub dla innej pozycji należy parametr podawaćw formie {{Code|nazwa przestrzeni nazw 1}}, {{Code|nazwa przestrzeni nazw 2}}, {{Code|nazwa przestrzeni nazw 3}},..., lub te parametry można podać w postaci ogólnej {{Code|nazwa przestrzeni nazw i}}. Parametry podaje się w parametrach rodzica wywołania tej funkcji {{Code|{{m|Pudełko|Nazwa przestrzeni nazw 2}}}} (ale ich nie trzeba podawać w dziecku, ale można) i w parametrach dziecka, jeśli chodzi o zmienną {{Code|numer jednostki}}, czyli np.: {{Code|{{m|Pudełko|Nazwa przestrzeni nazw 2|numer jednostki{{=}}<jakaś liczba całkowita dodatnia>}}}}. Te parametry przestrzenne zamiast w rodzicu w szablonie można podać w ramce dziecka, wtedy parametry dziecka mają pierwszeństwo. Przestrzeń nazw z parametrów nazw przestrzennych może odpowiadać wartości przestrzeni głównej, to wtedy odpowiednia przestrzeń nazw z parametru nazwy jednostki się liczy w tej funkcji, wtedy jest liczona nazwa przestrzeni nazw z tego parametru. Definicja skrótowa funkcji: <syntaxhighlight lang="lua"> p["Nazwa przestrzeni nazw 2"]=function(frame,czy_uwzglednic_alternatywna_nazwe,i)...end; </syntaxhighlight> Wtedy ciało funkcji tej, czyli jego definicja w środku, jest: <syntaxhighlight lang="lua"> local pudelko_pomocne_modul=require("Module:Pudełko/Pomocne"); -- Liczy nazwę przestrzeni nazw, jeżeli z parametrów przestrzennych przestrzeń wskazuje na główną, to wtedy jest liczona przestrzeń nazw z nazwy jednostki; return pudelko_pomocne_modul.Nazwa_przestrzeni_nazw_2(frame,czy_uwzglednic_alternatywna_nazwe,i) </syntaxhighlight> Parametry funkcji: * {{Code|frame}} - tablica ramki tablicy transportu, * {{Code|czy_uwzglednic_alternatywna_nazwe}} - czy ma uwzględniać nazwę przestrzeni nazw domyślną szablonu, dostępne wartości: {{Code|false}}, w której nazwa domyślna nie jest uwzględniana wtedy, oraz {{Code|nil}} i {{Code|true}}, które oznaczają to samo, w tym jeżeli ona jest uwzględniana, wtedy jest brany parametr pierwszy dziecka, który musi istnieć przy takiej wartości tego parametru, tzn. {{Code|{{m|Pudełko|Nazwa przestrzeni nazw 2|Szablon}}}}, a nazwa uzyskana nazwy przestrzeni nazw jest w takim przypadku błędna, a jeżeli nazwa domyślna jest błędna, czyli {{Code|{{m|Pudełko|Nazwa przestrzeni nazw 2|Moja przestrzeń}}}}, wtedy funkcja zwraca stan błędu {{Code|(błąd)}}. * {{Code|i}} - numer zmiennej nazwy przestrzeni nazw. Funkcja wykorzystuje {{Code|{{sr|#p.Nazwa_przestrzeni_nazw_2(frame,...)|p=Pudełko/Pomocne}}}} do wyznaczania ogólnego nazwy przestrzeni nazw dla pozycji bazowej i numerkowej, tzn. dla pozycji: jeden, dwa, trzy,..., itd, i ich ogólnej. Parametry ramki tablicy transportu dziecka: * {{Code|nazwa przestrzeni nazw}}, {{Code|nazwa przestrzeni nazw 1}}, {{Code|nazwa przestrzeni nazw 2}}, {{Code|nazwa przestrzeni nazw 3}},..., {{Code|nazwa przestrzeni nazw i}} - nazwy przestrzeni nazw dla pozycji bazowej, numerkowej i ogólnej, * {{Code|typ jednostki}}, {{Code|typ jednostki 1}}, {{Code|typ jednostki 2}}, {{Code|typ jednostki 3}},..., {{Code|typ jednostki i}} - typy jednostek, którym odpowiadają pewne przestrzenie przedmiotowe, dla pozycji bazowej, numerkowej i ogólnej, ** {{Code|dyskusja typu jednostki}}, {{Code|dyskusja typu jednostki 1}}, {{Code|dyskusja typ jednostki 2}}, {{Code|dyskusja typ jednostki 3}},..., {{Code|dyskusja typ jednostki i}} - czy dany typ jednostki ma przedstawiać, jeśli niepusta, przestrzeń dyskusji dla pozycji bazowej, numerkowej i ogólnej, * {{Code|numer jednostki}} - jak parametr {{Code|i}} nie został ustawiony, to wtedy liczy się ta zmienna. Parametr ramki tablicy transportu rodzica szablonu: * {{Code|nazwa przestrzeni nazw}}, {{Code|nazwa przestrzeni nazw 1}}, {{Code|nazwa przestrzeni nazw 2}}, {{Code|nazwa przestrzeni nazw 3}},..., {{Code|nazwa przestrzeni nazw i}} - nazwy przestrzeni nazw dla pozycji bazowej oraz zwykłej i ogólnej numerkowej, * {{Code|typ jednostki}}, {{Code|typ jednostki 1}}, {{Code|typ jednostki 2}}, {{Code|typ jednostki 3}},..., {{Code|typ jednostki i}} - typy jednostek, którym odpowiadają pewne przestrzenie przedmiotowe, dla pozycji bazowej, numerkowej i ogólnej, ** {{Code|dyskusja typu jednostki}}, {{Code|dyskusja typu jednostki 1}}, {{Code|dyskusja typ jednostki 2}}, {{Code|dyskusja typ jednostki 3}},..., {{Code|dyskusja typ jednostki i}} - czy dany typ jednostki ma przedstawiać, jeśli niepusta, przestrzeń dyskusji dla pozycji bazowej, numerkowej i ogólnej. Przykłady: <syntaxhighlight lang="mediawiki"> {{Nazwa szablonu|nazwa przestrzeni nazw=Wikibooks|nazwa przestrzeni nazw 1=Szablon|nazwa przestrzeni nazw i=|nazwa jednostki 2=Wikibooks:Strona}} </syntaxhighlight> W dziecku powiedzmy jest wywołanie, i szukamy nazwy przestrzeni nazw o numerze dwa, która została podana, ale istnieje za to jej wersji ogólna {{Code|nazwa przestrzeni nazw i}} i domyślna {{Code|nazwa przestrzeni nazw}}, ale wtedy dla tego numerkowego liczy się to ogólne z {{Code| i}}, a ponieważ ta nazwa jest pusta, więc będziemy liczyli nazwę przestrzeni nazw z {{Code|nazwa jednostki 2}}: <syntaxhighlight lang="mediawiki"> {{#invoke:Pudełko|Nazwa przestrzeni nazw 2|numer jednostki=2}} </syntaxhighlight> Na podstawie powyższego przykładu otrzymamy wynik o schemacie, nie wyniku, bo tam nie ma zmiennej {{Code|nazwa przestrzeni nazw 1}}, ale jest {{Code|nazwa przestrzeni nazw i}}: <syntaxhighlight lang="mediawiki"> <!-- Ale nie "nazwa przestrzeni nazw 2", bo jej nie ma, ale za to istnieje "nazwa przestrzeni nazw i"; --> <!-- nazwa przestrzeni nazw 2=nazwa przestrzeni nazw i=Moduł; --> <!-- Czyli wynik: --> Wikibooks <!-- Widzimy, że wygenerowała się nazwa przestrzeni nazw, którą jest przestrzeń programowa, którą również jest "Szablon"; --> </syntaxhighlight> Nie jest brana w tym powyższym przykładzie zmienna {{Code|nazwa przestrzeni nazw}}, bo jej nie ma, ale za to jest {{Code|nazwa przestrzeni nazw i}}, bo ona występuje jako parametr domyślny ogólny dla parametrów numerkowych. Przykłady w wikikodzie: * {{Code|{{m|Pudełko|Nazwa przestrzeni nazw 2|numer jednostki{{=}}2}}}} → {{Tt|{{#invoke:Pudełko|Nazwa przestrzeni nazw 2|numer jednostki=2}}}} * {{Code|{{m|Pudełko|Nazwa przestrzeni nazw 2|Szablon|nazwa przestrzeni nazw i{{=}}Moja przestrzeń|numer jednostki{{=}}2}}}} → {{Tt|{{#invoke:Pudełko|Nazwa przestrzeni nazw 2|Szablon|nazwa przestrzeni nazw i=Moja przestrzeń|numer jednostki=2}}}} * {{Code|{{m|Pudełko|Nazwa przestrzeni nazw 2|nazwa przestrzeni nazw 2{{=}}|nazwa jednostki 2{{=}}Szablon:Strona|numer jednostki{{=}}2}}}} → {{Tt|{{#invoke:Pudełko|Nazwa przestrzeni nazw 2|nazwa przestrzeni nazw 2=|nazwa jednostki 2=Szablon:Strona|numer jednostki=2}}}} * {{Code|{{m|Pudełko|Nazwa przestrzeni nazw 2|nazwa przestrzeni nazw i{{=}}|nazwa jednostki 2{{=}}Szablon:Strona|numer jednostki{{=}}2}}}} → {{Tt|{{#invoke:Pudełko|Nazwa przestrzeni nazw 2|nazwa przestrzeni nazw i=|nazwa jednostki 2=Szablon:Strona|numer jednostki=2}}}} * {{Code|{{m|Pudełko|Nazwa przestrzeni nazw 2|Szablon|nazwa przestrzeni nazw{{=}}|nazwa jednostki 2{{=}}Wikibooks:Strona|numer jednostki{{=}}2}}}} → {{Tt|{{#invoke:Pudełko|Nazwa przestrzeni nazw 2|Szablon|nazwa przestrzeni nazw=|nazwa jednostki 2=Wikibooks:Strona|numer jednostki=2}}}} Powyżej dla przykładu podano parametry nie w rodzicu w szablonie, tylko w dziecku, jeśli chodzi o parametry nazw przestrzeni nazw i nazw jednostek, ale ich się za to nie powinno podawać w tych ramach, tylko w szablonach, w których wywoływane są te ramki pudełek {{Code|{{m|Pudełko}}}}, ale tak tutaj tak zrobiono by było najłatwiej sprawdzić działanie tego typu funkcji. Analogicznie możemy podawać parametry typu jednostki, np.: wywołaniu modułowym {{Code|{{m|Pudełko|Nazwa przestrzeni nazw 2|typ jednostki 2{{=}}strona szablonu|numer jednostki{{=}}2}}}}, ale o tym więcej w rozdziałach {{Code|{{sr|# p["Typ jednostki"](frame,i)|p=Pudełko}}}}, {{Code|{{sr|#p["Typ jednostki 2"](frame,i)|p=Pudełko}}}}, {{Code|{{sr|#p["Typ jednostki 3"](frame,i)|p=Pudełko}}}} itp. w „{{sr|#Funkcje typu jednostki|p=Pudełko}}”, on definiuje przestrzenie przedmiotowe, ale można użyć parametru dyskusji typu jednostki z wartością niepustą, wtedy wyświetli się nazwa przestrzeni nazw dyskusji. Jeżeli typ jednostki wskazuje na przestrzeń naazw główną, wtedy się liczą parametry nazw jednostek. Również parametry typu jednostki nie powinno się podawać w dziecku w ramce, tylko w rodzicu w szablonie jako parametry, w którym ta ramka jest wywoływana, ale tutaj podano jedynie dla przykładu, jak najłatwiej sprawdzić działanie tych parametrów tej funkcji. Najpierw w funkcji nagłówku brane są parametry nazw przestrzeni nazw, a jeżeli ich nie ma, to parametry typu jednostki, a jeżeli nie ma, to generowane są nazwy na podstawie aktualnego modułu. Podobnie jest z parametrami nazw jednostek. === {{Code|p["Nazwa przedmiotowej przestrzeni nazw 2"](frame,...)}} === === {{Code|p["Nazwa przestrzeni nazw dyskusji 2"](frame,...)}} === == Funkcje pełnych nazw jednostki == === {{Code|p["Pełna nazwa dyskusji jednostki"](frame,i)}} === === {{Code|p["Pełna nazwa przedmiotowa jednostki"](frame,i)}} === === {{Code|p["Pełna nazwa jednostki"](frame,i)}} === == Funkcje pełnych nazw jednostki drugiej wersji == === {{Code|p["Pełna nazwa dyskusji jednostki 2"](frame,i)}} === === {{Code|p["Pełna nazwa przedmiotowa jednostki 2"](frame,i)}} === === {{Code|p["Pełna nazwa jednostki 2"](frame,i)}} === == Funkcje pełnych nazw jednostki trzeciej wersji == === {{Code|p["Pełna nazwa dyskusji jednostki 3"](frame,i)}} === === {{Code|p["Pełna nazwa przedmiotowa jednostki 3"](frame,i)}} === === {{Code|p["Pełna nazwa jednostki 3"](frame,i)}} === == Funkcje nazw jednostki == === {{Code|p["Nazwa jednostki"](frame,i)}} === == Funkcje nazw jednostki drugiej wersji == === {{Code|p["Nazwa jednostki 2"](frame,i)}} === === {{Code|p["Nazwa przedmiotowa jednostki 2"](frame,i)}} === === {{Code|p["Nazwa dyskusji jednostki 2"](frame,i)}} === == Funkcje nazw przestrzeni nazw trzeciej wersji == === {{Code|p["Nazwa przestrzeni nazw 3"](frame,i)}} === === {{Code|p["Nazwa przedmiotowej przestrzeni nazw 3"](frame,i)}} === === {{Code|p["Nazwa przestrzeni nazw dyskusji 3"](frame,i)}} === == Funkcje nazw jednostki trzeciej wersji == === {{Code|p["Nazwa jednostki 3"](frame,i)}} === === {{Code|p["Nazwa przedmiotowa jednostki 3"](frame,i)}} === === {{Code|p["Nazwa dyskusji jednostki 3"](frame,i)}} === == Funkcje typu jednostki == === {{Code|p["Typ jednostki"](frame,i)}} === === {{Code|p["Typ jednostki 2"](frame,i)}} === === {{Code|p["Typ jednostki 3"](frame,i)}} === === Funkcje typu jednostki przedmiotowe === ==== {{Code|p["Przedmiotowy typ jednostki"](frame,i)}} ==== ==== {{Code|p["Przedmiotowy typ jednostki 2"](frame,i)}} ==== ==== {{Code|p["Przedmiotowy typ jednostki 3"](frame,i)}} ==== === Fukcje typu jednostki dyskusji === ==== {{Code|p["Dyskusyjny typ jednostki"](frame,i)}} ==== ==== {{Code|p["Dyskusyjny typ jednostki 2"](frame,i)}}} ==== ==== {{Code|p["Dyskusyjny typ jednostki 3"](frame,i)}} ==== == Funkcje chech pudełka == === {{Code|p["Cecha pudełka"](frame)}} === === {{Code|p["Przedmiotowa cecha pudełka"](frame)}} === === {{Code|p["Dyskusyjna cecha pudełka"](frame)}} === == Fukcje ogólnego pudełka == === {{Code|p["Ogólne pudełko"](frame)}} === == Funkcje ogólne == === {{Code|p["Tekst pudełka"](frame)}} === == Funkcje błędów pudełka == === {{Code|p["Błędy pudełka"](frame)}} === === {{Code|p["Przedmiotowe błędy pudełka"](frame)}} === === {{Code|p["Dyskusyjne błędy pudełka"](frame)}} === == Funkcje nazw stron == === {{Code|p["Nazwa strony głównej projektu"](frame,i)}} === === {{Code|p["Nazwa strony głównej dla dzieci projektu"](frame,i)}} === == Funkcje kodów == === {{Code|p["Kod języka"](frame,i)}} === === {{Code|p["Kod projektu"](frame,i)}} === === {{Code|p["Klucz projektu"](frame,i)}} === == Funkcje wiki == === {{Code|p["Inny niż język bieżący wiki"](frame)}} === === {{Code|p["Inne niż lokalne wiki"](frame)}} === === {{Code|p["Inne niż bieżące wiki"](frame)}} === == Funkcje typów parametrów, czy podane je == === {{Code|p["Podano parametry nienazwane"](frame)}} === === {{Code|p["Podano parametry numerowane"](frame)}} === === {{Code|p["Podano parametry nazwane"](frame)}} === == Funkcje kodów tego projektu == === {{Code|p["Kod projektu tego projektu"](frame)}} === === {{Code|p["Kod języka tego projektu"](frame)}} === === {{Code|p["Klucz projektu tego projektu"](frame)}} === == Funkcje stron == === {{Code|p["Strona główna tego projektu"](frame)}} === === {{Code|p["Strona główna dla dzieci tego projektu"](frame)}} === == Funkcje nazw stron drugiej wersji == === {{Code|p["Nazwa strony głównej dla dzieci projektu 2"](frame)}} === === {{Code| p["Nazwa strony głównej projektu 2"](frame)}} === {{BrClear}} <noinclude><!-- -->{{ProstaStronaKoniec}}<!-- -->{{Kategoria|Opisy funkcji, w Lua w Scribunto, w modułach}}<!-- --></noinclude> hae14e6vwe9f6lt0huofppbpljuij3n 540371 540370 2026-04-23T12:43:30Z Persino 2851 /* {{Code|p["Nazwa przestrzeni nazw 2"](frame,...)}} */ 540371 wikitext text/x-wiki <noinclude>{{ProstaStronaStart | nagłówek = {{Podrozdział|{{ld2|Pudełko}}|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 pudelko_modul=require("Module:Pudełko"); </syntaxhighlight> dzięki, któremu można wypisywać funkcje należącego do niego. Posługuje się na parametrach pudełkowych {{Parametr|nazwa przestrzeni nazw}} (czy też bez numerka {{Parametr|nazwa przestrzeni nazw i}} dla tego numerowanego) lub te z numerkiem po jednej spacji w nich (ale nie dla tego z końcówką {{Code| i}}) mogą zostać użyte jako parametry szablonu. Moduł {{Code|{{ld2|Pudełko}}}} przedstawia funkcje nazw w oparciu o funkcje nazw {{Code|{{ld2|Nazwy}}}}, generuje on nazwy za pomocą parametrów pudełkowych podanych poniżej. Parametr {{Parametr|nazwa jednostki}} (lub parametr {{Parametr|cel}} dla numerka tego pierwszego, tego alternatywnego), lub te z numerkiem po jednej spacji w nazwie parametru, albo numerowane numerkami {{Code|1}}, {{Code|2}},..., mogą zostać użyte jako parametry szablonu. Parametry określające rodzaj jednostki {{Parametr|typ jednostki}} z {{Parametr|dyskusja typu jednostki}}, itp. w wersjach z numerkiem po jednej spacji w nich mogą zostać użyte jako parametry szablonu. A te tymi numerowanymi liczbami naturalnymi {{Tt|nazwy jednostki}} od jedynki wzwyż poprzez szablon, w którym są one użyte, one też mogą być użyte z dwukropkiem, te numerowane, na samym początku nazwy, wtedy one są traktowane jako pełne nazwy strony, i wtedy one nie zostaną z interpretowane, że do nich trzeba użyć parametr odpowiedni z nazwą przetrzeni nazw z tego numerowanego, czy ogólny, aby utworzyć znów inną pełną nazwę strony dla tego numerka. Zestawienie: * {{Code|nazwa przestrzeni nazw}} i {{Code|nazwa przestrzeni nazw i}} (ogólna nazwa przestrzeni nazw dla wszystkich numerków, i tych numerowanych jednostek) - i to pierwsze z numerkiem, tzn. {{Code|nazwa przestrzeni nazw 1}}, {{Code|nazwa przestrzeni nazw 2}}, ..., * {{Code|nazwa jednostki}} - i te z numerkiem: {{Code|nazwa jednostki 1}}, {{Code|nazwa jednostki 2}}, ..., lub gdy jest zamiast tego parametrem numerowany, {{Code|1}}, {{Code|2}},..., który dla tego pierwszego może być uznany jako: {{Code|cel}} {{=}} {{Code|1}}, * {{Code|typ jednostki}} (parametr bazowy) i {{Code|typ jednostki i}} (parametr domyślny numerkowy) - i te z numerkiem: {{Code|typ jednostki 1}}, {{Code|typ jednostki 2}}, ..., tzn. gdy chcemy określić z jakim typem jednostki mamy do czynienia w zależności do jakiej przestrzeni nazw należy, a w danej, czy jest on np. programowy, czy tylko jest opisem, jak to bywa w szablonach {{Np|Template|link=tak}}, podobnie jest w przypadku {{Np|Module|link=tak}}, czy jak jest w innych przestrzeniach nazw, ** {{Code|dyskusja typu jednostki}} (parametr bazowy) i {{Code|dyskusja typu jednostki i}} (parametr domyślny numerkowy) - i te z numerkiem: {{Code|dyskusja typu jednostki 1}}, {{Code|dyskusja typu jednostki 2}}, ..., gdy chcemy określić wartością niepustą,że chodzi tutaj o typ jednostki. == {{Code|p.CzyNiepoprawnaNazwa(nazwa_jednostki)}} == Funkcja sprawdzajaca, czy jest poprawnie podana nazwa jednostki, czy ma poprawną nazwę. Znakami tymi, z których nie powinna składać się nazwa jest {{Code|<nowiki>{}<>|[]#\n</nowiki>}} i dodatkowo znak {{Code|&#127;}} (kod {{Code|{{Nowiki|&#127;}}}}). Też nie może składać się z trzech znaków tyldy, tzn. {{Code|<nowiki>~~~</nowiki>}}. Również w swojej budowie nie może składać się ze kodów {{Strong|HTML}} literowych o wzorze {{Code|{{Nowiki|&(%a+);}}}}. Natomiast może składać się z {{Code|{{Nowiki|&#(%d+);}}}} i {{Code|{{Nowiki|&#x(%x+);}}}}, ale w pierw te kody muszą być zamienione na normalne znaki. Skrótowa definicja funkcji: <syntaxhighlight lang="lua"> function p.CzyNiepoprawnaNazwa(nazwa_jednostki)...end; </syntaxhighlight> Wtedy ciało funkcji tej, czyli jego definicja w środku, jest: <syntaxhighlight lang="lua"> -- Moduł: "Moduł:Html/dane", służy do ładowania znaku o kodzie HTML "&#127;"; local html_dane_modul=mw.loadData("Module:Html/dane"); return mw.ustring.match(nazwa_jednostki,"[{}<>|%[%]#\n"..html_dane_modul.znak_127.."]+") or mw.ustring.match(nazwa_jednostki,"~~~") or mw.ustring.match(nazwa_jednostki,"&(%a+);"); </syntaxhighlight> Parametry: * {{Code|nazwa_jednostki}} - nazwa jednostki do sprawdzenia. Przykłady: <syntaxhighlight lang="lua"> local pudelko_modul=require("Module:Pudełko"); -- Podana przykładowa niepoprawna nazwa jedostki local nazwa_jednostki="Nazwa pliku [[Nazwa linku w pliku]]"; -- Fukcja zwróci wartość: local czy_poprawna_nazwa=true; local czy_poprawna_nazwa=pudelko_modul.CzyNiepoprawnaNazwa(nazwa_jednostki); </syntaxhighlight> == Funkcje nazw przestrzeni nazw == === {{Code|p["Nazwa przestrzeni nazw"](frame,...)}} === Funkcja pisze nazwę przestrzeni nazw, niezależnie, czy to jest przedmiotowa, czy dyskusji, według podanej w zmiennej {{Code|nazwa przestrzeni nazw}} dla pozycja bazowej w podanych parametrach szablonu rodzicu ramki dziecka, lub dla innej pozycji należy parametr podawaćw formie {{Code|nazwa przestrzeni nazw 1}}, {{Code|nazwa przestrzeni nazw 2}}, {{Code|nazwa przestrzeni nazw 3}},..., lub te parametry można podać w postaci ogólnej {{Code|nazwa przestrzeni nazw i}}. Parametry podaje się w parametrach rodzica wywołania tej funkcji {{Code|{{m|Pudełko|Nazwa przestrzeni nazw}}}} (ale ich nie trzeba podawać w dziecku, ale można) i w parametrach dziecka, jeśli chodzi o zmienną {{Code|numer jednostki}}, czyli np.: {{Code|{{m|Pudełko|Nazwa przestrzeni nazw|numer jednostki{{=}}<jakaś liczba całkowita dodatnia>}}}}. Te parametry przestrzenne zamiast w rodzicu w szablonie można podać w ramce dziecka, wtedy parametry dziecka mają pierwszeństwo. Przestrzeń nazw z parametrów nazw przestrzennych może odpowiadać wartości przestrzeni głównej, to wtedy odpowiednia przestrzeń nazw z parametru nazwy jednostki się nie liczy w tej funkcji, aby się liczyła należy użyć funkcji {{Code|{{sr|#p["Nazwa przestrzeni nazw 2"](frame,...)|p=Pudełko}}}}. Definicja skrótowa funkcji: <syntaxhighlight lang="lua"> p["Nazwa przestrzeni nazw"]=function(frame,czy_uwzglednic_alternatywna_nazwe,i)...end; </syntaxhighlight> Wtedy ciało funkcji tej, czyli jego definicja w środku, jest: <syntaxhighlight lang="lua"> -- Jest liczony numer parametru nazwy przestrzeni nazw, domyslnie chodzi tu o numer bazowy parametrów przestrzennych; local numer_jednostki=i or frame.args["numer jednostki"]; local liczba_numer_jednostki=((numer_jednostki)and(tonumber(numer_jednostki))or 0); local pudelko_pomocne_modul=require("Module:Pudełko/Pomocne"); -- Liczy nazwę przestrzeni nazw na podstawie podanych parametrów; return pudelko_pomocne_modul.Nazwa_przestrzeni_nazw(frame,0, czy_uwzglednic_alternatywna_nazwe,liczba_numer_jednostki); </syntaxhighlight> Parametry funkcji: * {{Code|frame}} - tablica ramki tablicy transportu, * {{Code|czy_uwzglednic_alternatywna_nazwe}} - czy ma uwzględniać nazwę przestrzeni nazw domyślną szablonu, dostępne wartości: {{Code|false}}, w której nazwa domyślna nie jest uwzględniana wtedy, oraz {{Code|nil}} i {{Code|true}}, które oznaczają to samo, w tym jeżeli ona jest uwzględniana, wtedy jest brany parametr pierwszy dziecka, który musi istnieć przy takiej wartości tego parametru, tzn. {{Code|{{m|Pudełko|Nazwa przestrzeni nazw|Szablon}}}}, a nazwa uzyskana nazwy przestrzeni nazw jest w takim przypadku błędna, a jeżeli nazwa domyślna jest błędna, czyli {{Code|{{m|Pudełko|Nazwa przestrzeni nazw|Moja przestrzeń}}}}, wtedy funkcja zwraca stan błędu {{Code|(błąd)}}. * {{Code|i}} - numer zmiennej nazwy przestrzeni nazw. Funkcja wykorzystuje {{Code|{{sr|#p.Nazwa_przestrzeni_nazw(frame,...)|p=Pudełko/Pomocne}}}} do wyznaczania ogólnego nazwy przestrzeni nazw dla pozycji bazowej i numerkowej, tzn. dla pozycji: jeden, dwa, trzy,..., itd, i ich ogólnej. Parametry ramki tablicy transportu dziecka: * {{Code|nazwa przestrzeni nazw}}, {{Code|nazwa przestrzeni nazw 1}}, {{Code|nazwa przestrzeni nazw 2}}, {{Code|nazwa przestrzeni nazw 3}},..., {{Code|nazwa przestrzeni nazw i}} - nazwy przestrzeni nazw dla pozycji bazowej, numerkowej i ogólnej, * {{Code|typ jednostki}}, {{Code|typ jednostki 1}}, {{Code|typ jednostki 2}}, {{Code|typ jednostki 3}},..., {{Code|typ jednostki i}} - typy jednostek, którym odpowiadają pewne przestrzenie przedmiotowe, dla pozycji bazowej, numerkowej i ogólnej, ** {{Code|dyskusja typu jednostki}}, {{Code|dyskusja typu jednostki 1}}, {{Code|dyskusja typ jednostki 2}}, {{Code|dyskusja typ jednostki 3}},..., {{Code|dyskusja typ jednostki i}} - czy dany typ jednostki ma przedstawiać, jeśli niepusta, przestrzeń dyskusji dla pozycji bazowej, numerkowej i ogólnej, * {{Code|numer jednostki}} - jak parametr {{Code|i}} nie został ustawiony, to wtedy liczy się ta zmienna. Parametr ramki tablicy transportu rodzica szablonu: * {{Code|nazwa przestrzeni nazw}}, {{Code|nazwa przestrzeni nazw 1}}, {{Code|nazwa przestrzeni nazw 2}}, {{Code|nazwa przestrzeni nazw 3}},..., {{Code|nazwa przestrzeni nazw i}} - nazwy przestrzeni nazw dla pozycji bazowej oraz zwykłej i ogólnej numerkowej, * {{Code|typ jednostki}}, {{Code|typ jednostki 1}}, {{Code|typ jednostki 2}}, {{Code|typ jednostki 3}},..., {{Code|typ jednostki i}} - typy jednostek, którym odpowiadają pewne przestrzenie przedmiotowe, dla pozycji bazowej, numerkowej i ogólnej, ** {{Code|dyskusja typu jednostki}}, {{Code|dyskusja typu jednostki 1}}, {{Code|dyskusja typ jednostki 2}}, {{Code|dyskusja typ jednostki 3}},..., {{Code|dyskusja typ jednostki i}} - czy dany typ jednostki ma przedstawiać, jeśli niepusta, przestrzeń dyskusji dla pozycji bazowej, numerkowej i ogólnej. Przykłady: <syntaxhighlight lang="mediawiki"> {{Nazwa szablonu|nazwa przestrzeni nazw=Wikibooks|nazwa przestrzeni nazw 2=Szablon|nazwa przestrzeni nazw i=Moduł}} </syntaxhighlight> W dziecku powiedzmy jest wywołanie, i szukamy nazwy przestrzeni nazw o numerze dwa, która nie została podana, ale istnieje za to jej wersji ogólna {{Code|nazwa przestrzeni nazw i}} i domyślna {{Code|nazwa przestrzeni nazw}}: <syntaxhighlight lang="mediawiki"> {{#invoke:Pudełko|Nazwa przestrzeni nazw|numer jednostki=1}} </syntaxhighlight> Na podstawie powyższego przykładu otrzymamy wynik o schemacie, nie wyniku, bo tam nie ma zmiennej {{Code|nazwa przestrzeni nazw 1}}, ale jest {{Code|nazwa przestrzeni nazw i}}: <syntaxhighlight lang="mediawiki"> <!-- Ale nie "nazwa przestrzeni nazw", bo jej nie ma, ale za to istnieje "nazwa przestrzeni nazw i"; --> <!-- nazwa przestrzeni nazw 1=nazwa przestrzeni nazw i=Moduł; --> <!-- Czyli wynik: --> Moduł <!-- Widzimy, że wygenerowała się nazwa przestrzeni nazw, którą jest przestrzeń programowa, którą również jest "Szablon"; --> </syntaxhighlight> Nie jest brana w tym powyższym przykładzie zmienna {{Code|nazwa przestrzeni nazw}}, bo jej nie ma, ale za to jest {{Code|nazwa przestrzeni nazw i}}, bo ona występuje jako parametr domyślny ogólny dla parametrów numerkowych. Przykłady w wikikodzie: * {{Code|{{m|Pudełko|Nazwa przestrzeni nazw|numer jednostki{{=}}2}}}} → {{Tt|{{#invoke:Pudełko|Nazwa przestrzeni nazw|numer jednostki=2}}}} * {{Code|{{m|Pudełko|Nazwa przestrzeni nazw|Szablon|nazwa przestrzeni nazw i{{=}}Moja przestrzeń|numer jednostki{{=}}2}}}} → {{Tt|{{#invoke:Pudełko|Nazwa przestrzeni nazw|Szablon|nazwa przestrzeni nazw i=Moja przestrzeń|numer jednostki=2}}}} * {{Code|{{m|Pudełko|Nazwa przestrzeni nazw|nazwa przestrzeni nazw 2{{=}}Szablon|numer jednostki{{=}}2}}}} → {{Tt|{{#invoke:Pudełko|Nazwa przestrzeni nazw|nazwa przestrzeni nazw 2=Szablon|numer jednostki=2}}}} * {{Code|{{m|Pudełko|Nazwa przestrzeni nazw|nazwa przestrzeni nazw 2{{=}}Szablon|numer jednostki{{=}}2}}}} → {{Tt|{{#invoke:Pudełko|Nazwa przestrzeni nazw|nazwa przestrzeni nazw i=Szablon|numer jednostki=2}}}} * {{Code|{{m|Pudełko|Nazwa przestrzeni nazw|nazwa przestrzeni nazw{{=}}Szablon|numer jednostki{{=}}2}}}} → {{Tt|{{#invoke:Pudełko|Nazwa przestrzeni nazw|nazwa przestrzeni nazw=Szablon|numer jednostki=2}}}} Powyżej dla przykładu podano parametry nie w rodzicu w szablonie, tylko w dziecku, jeśli chodzi o parametry nazw przestrzeni nazw, ale ich się za to nie powinno podawać w tych ramach, tylko w szablonach, w których wywoływane są te ramki pudełek {{Code|{{m|Pudełko}}}}, ale tak tutaj tak zrobiono by było najłatwiej sprawdzić działanie tego typu funkcji. Analogicznie możemy podawać parametry typu jednostki, np.: wywołaniu modułowym {{Code|{{m|Pudełko|Nazwa przestrzeni nazw|typ jednostki 2{{=}}strona szablonu|numer jednostki{{=}}2}}}}, ale o tym więcej w rozdziałach {{Code|{{sr|# p["Typ jednostki"](frame,i)|p=Pudełko}}}}, {{Code|{{sr|#p["Typ jednostki 2"](frame,i)|p=Pudełko}}}}, {{Code|{{sr|#p["Typ jednostki 3"](frame,i)|p=Pudełko}}}} itp. w „{{sr|#Funkcje typu jednostki|p=Pudełko}}”, on definiuje przestrzenie przedmiotowe, ale można użyć parametru dyskusji typu jednostki z wartością niepustą, wtedy wyświetli się nazwa przestrzeni nazw dyskusji. Również parametry typu jednostki nie powinno się podawać w dziecku w ramce, tylko w rodzicu w szablonie jako parametry, w którym ta ramka jest wywoływana, ale tutaj podano jedynie dla przykładu, jak najłatwiej sprawdzić działanie tych parametrów tej funkcji. Najpierw w funkcji nagłówku brane są parametry nazw przestrzeni nazw, a jeżeli ich nie ma, to parametry typu jednostki, a jeżeli nie ma, to generowane są nazwy na podstawie aktualnego modułu. === {{Code|p["Nazwa przedmiotowej przestrzeni nazw"](frame,...)}} === Funkcja pisze przedmiotową nazwę przestrzeni nazw jakikolwiek nazwy przestrzeni nazw (tzn. nazwę przedmiotową nazwy przestrzenie nazw, czyli nie dyskusji, zamieniana jest na nią samą, czyli identyfikator przestrzeni się nie zmienia, a dyskusji, nie przedmiotową, przekształca się na przedmiotową jej odpowiadającą, czyli w tym przypadku identyfikator przestrzeni zmniejsza się o numer mniej), według podanej w zmiennej {{Code|nazwa przestrzeni nazw}} dla pozycja bazowej w podanych parametrach szablonu rodzicu ramki dziecka, lub dla innej pozycji należy parametr podawać w formie {{Code|nazwa przestrzeni nazw 1}}, {{Code|nazwa przestrzeni nazw 2}}, {{Code|nazwa przestrzeni nazw 3}},..., lub te parametry można podać w postaci ogólnej {{Code|nazwa przestrzeni nazw i}}. Parametry podaje się w parametrach rodzica wywołania tej funkcji {{Code|{{m|Pudełko|Nazwa przedmiotowej przestrzeni nazw}}}} (ale ich nie trzeba podawać w dziecku, ale można) i w parametrach dziecka, jeśli chodzi o zmienną {{Code|numer jednostki}}, czyli np.: {{Code|{{m|Pudełko|Nazwa przedmiotowej przestrzeni nazw|numer jednostki{{=}}<jakaś liczba całkowita dodatnia>}}}}. Te parametry przestrzenne zamiast w rodzicu w szablonie można podać w ramce dziecka, wtedy parametry dziecka mają pierwszeństwo. Parametry przestrzenne mogą mogą być podane w postaci przestrzeni przedmiotowej lub dyskusji, ale ta funkcja zawsze ją zamienia na przedmiotową. Przestrzeń nazw z parametrów nazw przestrzennych może odpowiadać wartości przestrzeni głównej, to wtedy odpowiednia przestrzeń nazw z parametru nazwy jednostki się nie liczy w tej funkcji, aby się liczyła należy użyć funkcji {{Code|{{sr|#p["Nazwa przedmiotowej przestrzeni nazw 2"](frame,...)|p=Pudełko}}}}. Definicja skrótowa funkcji: <syntaxhighlight lang="lua"> p["Nazwa przedmiotowej przestrzeni nazw"]=function(frame,czy_uwzglednic_alternatywna_nazwe,i)...end; </syntaxhighlight> Wtedy ciało funkcji tej, czyli jego definicja w środku, jest: <syntaxhighlight lang="lua"> -- Jest liczony numer parametru nazwy przestrzeni nazw, domyslnie chodzi tu o numer bazowy parametrów przestrzennych; local numer_jednostki=i or frame.args["numer jednostki"]; local liczba_numer_jednostki=((numer_jednostki)and(tonumber(numer_jednostki))or 0); local pudelko_pomocne_modul=require("Module:Pudełko/Pomocne"); -- Liczy nazwę przestrzeni nazw przedmiotową na podstawie podanych parametrów; return pudelko_pomocne_modul.Nazwa_przestrzeni_nazw(frame,1, czy_uwzglednic_alternatywna_nazwe,liczba_numer_jednostki); </syntaxhighlight> Parametry funkcji: * {{Code|frame}} - tablica ramki tablicy transportu, * {{Code|czy_uwzglednic_alternatywna_nazwe}} - czy ma uwzględniać nazwę przestrzeni nazw domyślną szablonu, dostępne wartości: {{Code|false}}, w której nazwa domyślna nie jest uwzględniana wtedy, oraz {{Code|nil}} i {{Code|true}}, które oznaczają to samo, w tym jeżeli ona jest uwzględniana, wtedy jest brany parametr pierwszy dziecka, który musi istnieć przy takiej wartości tego parametru, tzn. {{Code|{{m|Pudełko|Nazwa przedmiotowej przestrzeni nazw|Dyskusja szablonu}}}} - ta nazwa domyślna zostanie zamieniona na przedmiotową, a jak ona by była przedmiotowa, to żadnej zamiany by nie było, a nazwa uzyskana z nazwy przestrzeni nazw z parametrów przestrzennych jest w takim przypadku błędna, to w takim razie brany jest ten parametr, a jeżeli ta nazwa domyślna jest błędna, czyli {{Code|{{m|Pudełko|Nazwa przedmiotowej przestrzeni nazw|Moja przestrzeń}}}}, wtedy funkcja zwraca stan błędu {{Code|(błąd)}}. * {{Code|i}} - numer zmiennej nazwy przestrzeni nazw. Funkcja wykorzystuje {{Code|{{sr|#p.Nazwa_przestrzeni_nazw(frame,...)|p=Pudełko/Pomocne}}}} do wyznaczania ogólnego nazwy przestrzeni nazw dla pozycji bazowej i numerkowej, tzn. dla pozycji: jeden, dwa, trzy,..., itd, i ich ogólnej. Parametry ramki tablicy transportu dziecka: * {{Code|nazwa przestrzeni nazw}}, {{Code|nazwa przestrzeni nazw 1}}, {{Code|nazwa przestrzeni nazw 2}}, {{Code|nazwa przestrzeni nazw 3}},..., {{Code|nazwa przestrzeni nazw i}} - nazwy przestrzeni nazw dla pozycji bazowej, numerkowej i ogólnej, * {{Code|typ jednostki}}, {{Code|typ jednostki 1}}, {{Code|typ jednostki 2}}, {{Code|typ jednostki 3}},..., {{Code|typ jednostki i}} - typy jednostek, którym odpowiadają pewne przestrzenie przedmiotowe, dla pozycji bazowej, numerkowej i ogólnej, ** {{Code|dyskusja typu jednostki}}, {{Code|dyskusja typu jednostki 1}}, {{Code|dyskusja typ jednostki 2}}, {{Code|dyskusja typ jednostki 3}},..., {{Code|dyskusja typ jednostki i}} - czy dany typ jednostki ma przedstawiać, jeśli niepusta, przestrzeń dyskusji dla pozycji bazowej, numerkowej i ogólnej, * {{Code|numer jednostki}} - jak parametr {{Code|i}} nie został ustawiony, to wtedy liczy się ta zmienna. Parametr ramki tablicy transportu rodzica szablonu: * {{Code|nazwa przestrzeni nazw}}, {{Code|nazwa przestrzeni nazw 1}}, {{Code|nazwa przestrzeni nazw 2}}, {{Code|nazwa przestrzeni nazw 3}},..., {{Code|nazwa przestrzeni nazw i}} - nazwy przestrzeni nazw dla pozycji bazowej oraz zwykłej i ogólnej numerkowej, * {{Code|typ jednostki}}, {{Code|typ jednostki 1}}, {{Code|typ jednostki 2}}, {{Code|typ jednostki 3}},..., {{Code|typ jednostki i}} - typy jednostek, którym odpowiadają pewne przestrzenie przedmiotowe, dla pozycji bazowej, numerkowej i ogólnej, ** {{Code|dyskusja typu jednostki}}, {{Code|dyskusja typu jednostki 1}}, {{Code|dyskusja typ jednostki 2}}, {{Code|dyskusja typ jednostki 3}},..., {{Code|dyskusja typ jednostki i}} - czy dany typ jednostki ma przedstawiać, jeśli niepusta, przestrzeń dyskusji dla pozycji bazowej, numerkowej i ogólnej. Przykłady: <syntaxhighlight lang="mediawiki"> {{Nazwa szablonu|nazwa przestrzeni nazw=Dyskusja Wikibooks|nazwa przestrzeni nazw 2=Dyskusja szablonu|nazwa przestrzeni nazw i=Dyskusja modułu}} </syntaxhighlight> W dziecku powiedzmy jest wywołanie, i szukamy nazwy przestrzeni nazw o numerze dwa, która nie została podana, ale istnieje za to jej wersji ogólna {{Code|nazwa przestrzeni nazw i}} i domyślna {{Code|nazwa przestrzeni nazw}}: <syntaxhighlight lang="mediawiki"> {{#invoke:Pudełko|Nazwa przedmiotowej przestrzeni nazw|numer jednostki=1}} </syntaxhighlight> Na podstawie powyższego przykładu otrzymamy wynik o schemacie, nie wyniku, bo tam nie ma zmiennej {{Code|nazwa przestrzeni nazw 1}}, ale jest {{Code|nazwa przestrzeni nazw i}}: <syntaxhighlight lang="mediawiki"> <!-- Ale nie "nazwa przestrzeni nazw", bo jej nie ma, ale za to istnieje "nazwa przestrzeni nazw i"; --> <!-- nazwa przestrzeni nazw 1=nazwa przestrzeni nazw i=Dyskusja modułu; --> <!-- Czyli wynik: --> Moduł <!-- Widzimy, że wygenerowała się nazwa przestrzeni nazw, którą jest przestrzeń przedmiotowa programowa przestrzeni dyskusji "Dyskusja modułu", którą również jest "Szablon" jego przestrzeni dyskusji "Dyskusja szablonu", a dla ich przestrzeni przedmiotowej, zamiast dyskusji, to samo przekształca się na to samo; --> </syntaxhighlight> Nie jest brana w tym powyższym przykładzie zmienna {{Code|nazwa przestrzeni nazw}}, bo jej nie ma, ale za to jest {{Code|nazwa przestrzeni nazw i}}, bo ona występuje jako parametr domyślny ogólny dla parametrów numerkowych. Przykłady w wikikodzie: * {{Code|{{m|Pudełko|Nazwa przedmiotowej przestrzeni nazw|numer jednostki{{=}}2}}}} → {{Tt|{{#invoke:Pudełko|Nazwa przedmiotowej przestrzeni nazw|numer jednostki=2}}}} * {{Code|{{m|Pudełko|Nazwa przedmiotowej przestrzeni nazw|Dyskusja szablonu|nazwa przestrzeni nazw i{{=}}Moja przestrzeń|numer jednostki{{=}}2}}}} → {{Tt|{{#invoke:Pudełko|Nazwa przedmiotowej przestrzeni nazw|Dyskusja szablonu|nazwa przestrzeni nazw i=Moja przestrzeń|numer jednostki=2}}}} * {{Code|{{m|Pudełko|Nazwa przedmiotowej przestrzeni nazw|nazwa przestrzeni nazw 2{{=}}Dyskusja szablonu|numer jednostki{{=}}2}}}} → {{Tt|{{#invoke:Pudełko|Nazwa przedmiotowej przestrzeni nazw|nazwa przestrzeni nazw 2=Dyskusja szablonu|numer jednostki=2}}}} * {{Code|{{m|Pudełko|Nazwa przedmiotowej przestrzeni nazw|nazwa przestrzeni nazw 2{{=}}Dyskusja szablonu|numer jednostki{{=}}2}}}} → {{Tt|{{#invoke:Pudełko|Nazwa przedmiotowej przestrzeni nazw|nazwa przestrzeni nazw i=Dyskusja szablonu|numer jednostki=2}}}} * {{Code|{{m|Pudełko|Nazwa przedmiotowej przestrzeni nazw|nazwa przestrzeni nazw{{=}}Dyskusja szablonu|numer jednostki{{=}}2}}}} → {{Tt|{{#invoke:Pudełko|Nazwa przedmiotowej przestrzeni nazw|nazwa przestrzeni nazw=Dyskusja szablonu|numer jednostki=2}}}} Powyżej dla przykładu podano parametry nie w rodzicu w szablonie, tylko w dziecku, jeśli chodzi o parametry nazw przestrzeni nazw, ale ich się za to nie powinno podawać w tych ramach, tylko w szablonach, w których wywoływane są te ramki pudełek {{Code|{{m|Pudełko}}}}, ale tak tutaj tak zrobiono by było najłatwiej sprawdzić działanie tego typu funkcji. Analogicznie możemy podawać parametry typu jednostki, np.: wywołaniu modułowym {{Code|{{m|Pudełko|Nazwa przedmiotowej przestrzeni nazw|typ jednostki 2{{=}}strona szablonu|numer jednostki{{=}}2}}}}, ale o tym więcej w rozdziałach {{Code|{{sr|# p["Typ jednostki"](frame,i)|p=Pudełko}}}}, {{Code|{{sr|#p["Typ jednostki 2"](frame,i)|p=Pudełko}}}}, {{Code|{{sr|#p["Typ jednostki 3"](frame,i)|p=Pudełko}}}} itp. w „{{sr|#Funkcje typu jednostki|p=Pudełko}}”, ale wtedy ta sama nazwa przestrzeni nazw reprezentowana przez {{Parametr|typ jednostki 2|strona szablonu}}, jest zamieniana na to samo, lepiej jest tutaj używać parametrów przestrzennych nazw niż typu jednostki, bo typ jednostki ma taką samą wartość dla przestrzeni przedmiotowej, co dyskusji. Tutaj parametr dyskusji typu jednostki bazowy i numerkowy ogólny, czy szczegółowy, nie gra roli, bo nawet, gdy wygenerujemy nazwę przestrzeni dyskusji za pomoca tego parametru, to i tak otrzymamy na samym końcu jego nazwę przedmiotową. Również parametry typu jednostki nie powinno się podawać w dziecku w ramce, tylko w rodzicu w szablonie jako parametry, w którym ta ramka jest wywoływana, ale tutaj podano jedynie dla przykładu, jak najłatwiej sprawdzić działanie tych parametrów tej funkcji. Najpierw w funkcji nagłówku brane są parametry nazw przestrzeni nazw, a jeżeli ich nie ma, to parametry typu jednostki, a jeżeli nie ma, to generowane są nazwy na podstawie aktualnego modułu. === {{Code|p["Nazwa przestrzeni nazw dyskusji"](frame,...)}} === Funkcja pisze nazwę przestrzeni nazw dyskusji jakikolwiek nazwy przestrzeni nazw (tzn. nazwę przedmiotową nazwy przestrzenie nazw, czyli nie dyskusji, zamieniana jest na dyskusji, czyli identyfikator przestrzeni się zmienia jeden wyżej, a dyskusji, nie przedmiotową, przekształca się na tą samą), według podanej w zmiennej {{Code|nazwa przestrzeni nazw}} dla pozycja bazowej w podanych parametrach szablonu rodzicu ramki dziecka, lub dla innej pozycji należy parametr podawać w formie {{Code|nazwa przestrzeni nazw 1}}, {{Code|nazwa przestrzeni nazw 2}}, {{Code|nazwa przestrzeni nazw 3}},..., lub te parametry można podać w postaci ogólnej {{Code|nazwa przestrzeni nazw i}}. Parametry podaje się w parametrach rodzica wywołania tej funkcji {{Code|{{m|Pudełko|Nazwa przestrzeni nazw dyskusji}}}} (ale ich nie trzeba podawać w dziecku, ale można) i w parametrach dziecka, jeśli chodzi o zmienną {{Code|numer jednostki}}, czyli np.: {{Code|{{m|Pudełko|Nazwa przestrzeni nazw dyskusji|numer jednostki{{=}}<jakaś liczba całkowita dodatnia>}}}}. Te parametry przestrzenne zamiast w rodzicu w szablonie można podać w ramce dziecka, wtedy parametry dziecka mają pierwszeństwo. Parametry przestrzenne mogą mogą być podane w postaci przestrzeni przedmiotowej lub dyskusji, ale ta funkcja zawsze ją zamienia na dyskusji. Przestrzeń nazw z parametrów nazw przestrzennych może odpowiadać wartości przestrzeni głównej, to wtedy odpowiednia przestrzeń nazw z parametru nazwy jednostki się nie liczy w tej funkcji, aby się liczyła należy użyć funkcji {{Code|{{sr|#p["Nazwa przestrzeni nazw dyskusji 2"](frame,...)|p=Pudełko}}}}. Definicja skrótowa funkcji: <syntaxhighlight lang="lua"> p["Nazwa przestrzeni nazw dyskusji"]=function(frame,czy_uwzglednic_alternatywna_nazwe,i)...end; </syntaxhighlight> Wtedy ciało funkcji tej, czyli jego definicja w środku, jest: <syntaxhighlight lang="lua"> -- Jest liczony numer parametru nazwy przestrzeni nazw, domyslnie chodzi tu o numer bazowy parametrów przestrzennych; local numer_jednostki=i or frame.args["numer jednostki"]; local liczba_numer_jednostki=((numer_jednostki)and(tonumber(numer_jednostki))or 0); local pudelko_pomocne_modul=require("Module:Pudełko/Pomocne"); -- Liczy nazwę przestrzeni nazw dyskusji na podstawie podanych parametrów; return pudelko_pomocne_modul.Nazwa_przestrzeni_nazw(frame,2, czy_uwzglednic_alternatywna_nazwe,liczba_numer_jednostki); </syntaxhighlight> Parametry funkcji: * {{Code|frame}} - tablica ramki tablicy transportu, * {{Code|czy_uwzglednic_alternatywna_nazwe}} - czy ma uwzględniać nazwę przestrzeni nazw domyślną szablonu, dostępne wartości: {{Code|false}}, w której nazwa domyślna nie jest uwzględniana wtedy, oraz {{Code|nil}} i {{Code|true}}, które oznaczają to samo, w tym jeżeli ona jest uwzględniana, wtedy jest brany parametr pierwszy dziecka, który musi istnieć przy takiej wartości tego parametru, tzn. {{Code|{{m|Pudełko|Nazwa przestrzeni nazw dyskusji|Szablon}}}} - ta nazwa domyślna zostanie przekształcona na dyskusji, a jeżeli ona by była dyskusji, to nie byłoby żadnego przekształcenia, a nazwa uzyskana nazwy przestrzeni nazw z parametrów przestrzennych jest w takim przypadku błędna, to w takim razie brany jest ten parametr, a jeżeli nazwa domyślna jest błędna, czyli {{Code|{{m|Pudełko|Nazwa przestrzeni nazw dyskusji|Moja przestrzeń}}}}, wtedy funkcja zwraca stan błędu {{Code|(błąd)}}. * {{Code|i}} - numer zmiennej nazwy przestrzeni nazw. Funkcja wykorzystuje {{Code|{{sr|#p.Nazwa_przestrzeni_nazw(frame,...)|p=Pudełko/Pomocne}}}} do wyznaczania ogólnego nazwy przestrzeni nazw dla pozycji bazowej i numerkowej, tzn. dla pozycji: jeden, dwa, trzy,..., itd, i ich ogólnej. Parametry ramki tablicy transportu dziecka: * {{Code|nazwa przestrzeni nazw}}, {{Code|nazwa przestrzeni nazw 1}}, {{Code|nazwa przestrzeni nazw 2}}, {{Code|nazwa przestrzeni nazw 3}},..., {{Code|nazwa przestrzeni nazw i}} - nazwy przestrzeni nazw dla pozycji bazowej, numerkowej i ogólnej, * {{Code|typ jednostki}}, {{Code|typ jednostki 1}}, {{Code|typ jednostki 2}}, {{Code|typ jednostki 3}},..., {{Code|typ jednostki i}} - typy jednostek, którym odpowiadają pewne przestrzenie przedmiotowe, dla pozycji bazowej, numerkowej i ogólnej, ** {{Code|dyskusja typu jednostki}}, {{Code|dyskusja typu jednostki 1}}, {{Code|dyskusja typ jednostki 2}}, {{Code|dyskusja typ jednostki 3}},..., {{Code|dyskusja typ jednostki i}} - czy dany typ jednostki ma przedstawiać, jeśli niepusta, przestrzeń dyskusji dla pozycji bazowej, numerkowej i ogólnej, * {{Code|numer jednostki}} - jak parametr {{Code|i}} nie został ustawiony, to wtedy liczy się ta zmienna. Parametr ramki tablicy transportu rodzica szablonu: * {{Code|nazwa przestrzeni nazw}}, {{Code|nazwa przestrzeni nazw 1}}, {{Code|nazwa przestrzeni nazw 2}}, {{Code|nazwa przestrzeni nazw 3}},..., {{Code|nazwa przestrzeni nazw i}} - nazwy przestrzeni nazw dla pozycji bazowej oraz zwykłej i ogólnej numerkowej, * {{Code|typ jednostki}}, {{Code|typ jednostki 1}}, {{Code|typ jednostki 2}}, {{Code|typ jednostki 3}},..., {{Code|typ jednostki i}} - typy jednostek, którym odpowiadają pewne przestrzenie przedmiotowe, dla pozycji bazowej, numerkowej i ogólnej, ** {{Code|dyskusja typu jednostki}}, {{Code|dyskusja typu jednostki 1}}, {{Code|dyskusja typ jednostki 2}}, {{Code|dyskusja typ jednostki 3}},..., {{Code|dyskusja typ jednostki i}} - czy dany typ jednostki ma przedstawiać, jeśli niepusta, przestrzeń dyskusji dla pozycji bazowej, numerkowej i ogólnej. Przykłady: <syntaxhighlight lang="mediawiki"> {{Nazwa szablonu|nazwa przestrzeni nazw=Wikibooks|nazwa przestrzeni nazw 2=Szablon|nazwa przestrzeni nazw i=Moduł}} </syntaxhighlight> W dziecku powiedzmy jest wywołanie, i szukamy nazwy przestrzeni nazw o numerze dwa, która nie została podana, ale istnieje za to jej wersji ogólna {{Code|nazwa przestrzeni nazw i}} i domyślna {{Code|nazwa przestrzeni nazw}}: <syntaxhighlight lang="mediawiki"> {{#invoke:Pudełko|Nazwa przestrzeni nazw dyskusji|numer jednostki=1}} </syntaxhighlight> Na podstawie powyższego przykładu otrzymamy wynik o schemacie, nie wyniku, bo tam nie ma zmiennej {{Code|nazwa przestrzeni nazw 1}}, ale jest {{Code|nazwa przestrzeni nazw i}}: <syntaxhighlight lang="mediawiki"> <!-- Ale nie "nazwa przestrzeni nazw", bo jej nie ma, ale za to istnieje "nazwa przestrzeni nazw i"; --> <!-- nazwa przestrzeni nazw 1=nazwa przestrzeni nazw i=Moduł; --> <!-- Czyli wynik: --> Dyskusja modułu <!-- Widzimy, że wygenerowała się nazwa przestrzeni nazw, którą jest przestrzeń dyskusji przestrzeni programowej przestrzeni przedmiotowej "Moduł", którą również jest "Szablon" jego przestrzeni dyskusji "Dyskusja szablonu", a dla ich przestrzeni przedmiotowej, zamiast dyskusji, to przekształca się na dyskusji jej odpowiadającą; --> </syntaxhighlight> Nie jest brana w tym powyższym przykładzie zmienna {{Code|nazwa przestrzeni nazw}}, bo jej nie ma, ale za to jest {{Code|nazwa przestrzeni nazw i}}, bo ona występuje jako parametr domyślny ogólny dla parametrów numerkowych. Przykłady w wikikodzie: * {{Code|{{m|Pudełko|Nazwa przestrzeni nazw dyskusji|numer jednostki{{=}}2}}}} → {{Tt|{{#invoke:Pudełko|Nazwa przestrzeni nazw dyskusji|numer jednostki=2}}}} * {{Code|{{m|Pudełko|Nazwa przestrzeni nazw dyskusji|Szablon|nazwa przestrzeni nazw i{{=}}Moja przestrzeń|numer jednostki{{=}}2}}}} → {{Tt|{{#invoke:Pudełko|Nazwa przestrzeni nazw dyskusji|Szablon|nazwa przestrzeni nazw i=Moja przestrzeń|numer jednostki=2}}}} * {{Code|{{m|Pudełko|Nazwa przestrzeni nazw dyskusji|nazwa przestrzeni nazw 2{{=}}Szablon|numer jednostki{{=}}2}}}} → {{Tt|{{#invoke:Pudełko|Nazwa przestrzeni nazw dyskusji|nazwa przestrzeni nazw 2=Szablon|numer jednostki=2}}}} * {{Code|{{m|Pudełko|Nazwa przestrzeni nazw dyskusji|nazwa przestrzeni nazw 2{{=}}Szablon|numer jednostki{{=}}2}}}} → {{Tt|{{#invoke:Pudełko|Nazwa przestrzeni nazw dyskusji|nazwa przestrzeni nazw i=Szablon|numer jednostki=2}}}} * {{Code|{{m|Pudełko|Nazwa przestrzeni nazw dyskusji|nazwa przestrzeni nazw{{=}}Szablon|numer jednostki{{=}}2}}}} → {{Tt|{{#invoke:Pudełko|Nazwa przestrzeni nazw dyskusji|nazwa przestrzeni nazw=Szablon|numer jednostki=2}}}} Powyżej dla przykładu podano parametry nie w rodzicu w szablonie, tylko w dziecku, jeśli chodzi o parametry nazw przestrzeni nazw, ale ich się za to nie powinno podawać w tych ramach, tylko w szablonach, w których wywoływane są te ramki pudełek {{Code|{{m|Pudełko}}}}, ale tak tutaj tak zrobiono by było najłatwiej sprawdzić działanie tego typu funkcji. Analogicznie możemy podawać parametry typu jednostki, np.: wywołaniu modułowym {{Code|{{m|Pudełko|Nazwa przestrzeni nazw dyskusji|typ jednostki 2{{=}}strona szablonu|numer jednostki{{=}}2}}}}, ale o tym więcej w rozdziałach {{Code|{{sr|# p["Typ jednostki"](frame,i)|p=Pudełko}}}}, {{Code|{{sr|#p["Typ jednostki 2"](frame,i)|p=Pudełko}}}}, {{Code|{{sr|#p["Typ jednostki 3"](frame,i)|p=Pudełko}}}} itp. w „{{sr|#Funkcje typu jednostki|p=Pudełko}}”, ale wtedy nazwa przestrzeni nazw reprezentowana przez {{Parametr|typ jednostki 2|strona szablonu}}, jest zamieniana na nazwę przestrzeni nazw dyskusji. Parametr dyskusji typu jednostki bazowy lub dla danego numerka ogólny, czy szczegółowy, nie gra roli. Również parametry typu jednostki nie powinno się podawać w dziecku w ramce, tylko w rodzicu w szablonie jako parametry, w którym ta ramka jest wywoływana, ale tutaj podano jedynie dla przykładu, jak najłatwiej sprawdzić działanie tych parametrów tej funkcji. Najpierw w funkcji nagłówku brane są parametry nazw przestrzeni nazw, a jeżeli ich nie ma, to parametry typu jednostki, a jeżeli nie ma, to generowane są nazwy na podstawie aktualnego modułu. == Funkcje nazw przestrzeni nazw drugiej wersji == === {{Code|p["Nazwa przestrzeni nazw 2"](frame,...)}} === Funkcja pisze nazwę przestrzeni nazw, niezależnie, czy to jest przedmiotowa, czy dyskusji, według podanej w zmiennej {{Code|nazwa przestrzeni nazw}} dla pozycja bazowej w podanych parametrach szablonu rodzicu ramki dziecka, lub dla innej pozycji należy parametr podawaćw formie {{Code|nazwa przestrzeni nazw 1}}, {{Code|nazwa przestrzeni nazw 2}}, {{Code|nazwa przestrzeni nazw 3}},..., lub te parametry można podać w postaci ogólnej {{Code|nazwa przestrzeni nazw i}}. Parametry podaje się w parametrach rodzica wywołania tej funkcji {{Code|{{m|Pudełko|Nazwa przestrzeni nazw 2}}}} (ale ich nie trzeba podawać w dziecku, ale można) i w parametrach dziecka, jeśli chodzi o zmienną {{Code|numer jednostki}}, czyli np.: {{Code|{{m|Pudełko|Nazwa przestrzeni nazw 2|numer jednostki{{=}}<jakaś liczba całkowita dodatnia>}}}}. Te parametry przestrzenne zamiast w rodzicu w szablonie można podać w ramce dziecka, wtedy parametry dziecka mają pierwszeństwo. Przestrzeń nazw z parametrów nazw przestrzennych może odpowiadać wartości przestrzeni głównej, to wtedy odpowiednia przestrzeń nazw z parametru nazwy jednostki się liczy w tej funkcji, wtedy jest liczona nazwa przestrzeni nazw z tego parametru. Definicja skrótowa funkcji: <syntaxhighlight lang="lua"> p["Nazwa przestrzeni nazw 2"]=function(frame,czy_uwzglednic_alternatywna_nazwe,i)...end; </syntaxhighlight> Wtedy ciało funkcji tej, czyli jego definicja w środku, jest: <syntaxhighlight lang="lua"> local pudelko_pomocne_modul=require("Module:Pudełko/Pomocne"); -- Liczy nazwę przestrzeni nazw, jeżeli z parametrów przestrzennych przestrzeń wskazuje na główną, to wtedy jest liczona przestrzeń nazw z nazwy jednostki; return pudelko_pomocne_modul.Nazwa_przestrzeni_nazw_2(frame,czy_uwzglednic_alternatywna_nazwe,i) </syntaxhighlight> Parametry funkcji: * {{Code|frame}} - tablica ramki tablicy transportu, * {{Code|czy_uwzglednic_alternatywna_nazwe}} - czy ma uwzględniać nazwę przestrzeni nazw domyślną szablonu, dostępne wartości: {{Code|false}}, w której nazwa domyślna nie jest uwzględniana wtedy, oraz {{Code|nil}} i {{Code|true}}, które oznaczają to samo, w tym jeżeli ona jest uwzględniana, wtedy jest brany parametr pierwszy dziecka, który musi istnieć przy takiej wartości tego parametru, tzn. {{Code|{{m|Pudełko|Nazwa przestrzeni nazw 2|Szablon}}}}, a nazwa uzyskana nazwy przestrzeni nazw jest w takim przypadku błędna, a jeżeli nazwa domyślna jest błędna, czyli {{Code|{{m|Pudełko|Nazwa przestrzeni nazw 2|Moja przestrzeń}}}}, wtedy funkcja zwraca stan błędu {{Code|(błąd)}}. * {{Code|i}} - numer zmiennej nazwy przestrzeni nazw. Funkcja wykorzystuje {{Code|{{sr|#p.Nazwa_przestrzeni_nazw_2(frame,...)|p=Pudełko/Pomocne}}}} do wyznaczania ogólnego nazwy przestrzeni nazw dla pozycji bazowej i numerkowej, tzn. dla pozycji: jeden, dwa, trzy,..., itd, i ich ogólnej. Parametry ramki tablicy transportu dziecka: * {{Code|nazwa przestrzeni nazw}}, {{Code|nazwa przestrzeni nazw 1}}, {{Code|nazwa przestrzeni nazw 2}}, {{Code|nazwa przestrzeni nazw 3}},..., {{Code|nazwa przestrzeni nazw i}} - nazwy przestrzeni nazw dla pozycji bazowej, numerkowej i ogólnej, * {{Code|typ jednostki}}, {{Code|typ jednostki 1}}, {{Code|typ jednostki 2}}, {{Code|typ jednostki 3}},..., {{Code|typ jednostki i}} - typy jednostek, którym odpowiadają pewne przestrzenie przedmiotowe, dla pozycji bazowej, numerkowej i ogólnej, ** {{Code|dyskusja typu jednostki}}, {{Code|dyskusja typu jednostki 1}}, {{Code|dyskusja typ jednostki 2}}, {{Code|dyskusja typ jednostki 3}},..., {{Code|dyskusja typ jednostki i}} - czy dany typ jednostki ma przedstawiać, jeśli niepusta, przestrzeń dyskusji dla pozycji bazowej, numerkowej i ogólnej, * {{Code|numer jednostki}} - jak parametr {{Code|i}} nie został ustawiony, to wtedy liczy się ta zmienna. Parametr ramki tablicy transportu rodzica szablonu: * {{Code|nazwa przestrzeni nazw}}, {{Code|nazwa przestrzeni nazw 1}}, {{Code|nazwa przestrzeni nazw 2}}, {{Code|nazwa przestrzeni nazw 3}},..., {{Code|nazwa przestrzeni nazw i}} - nazwy przestrzeni nazw dla pozycji bazowej oraz zwykłej i ogólnej numerkowej, * {{Code|typ jednostki}}, {{Code|typ jednostki 1}}, {{Code|typ jednostki 2}}, {{Code|typ jednostki 3}},..., {{Code|typ jednostki i}} - typy jednostek, którym odpowiadają pewne przestrzenie przedmiotowe, dla pozycji bazowej, numerkowej i ogólnej, ** {{Code|dyskusja typu jednostki}}, {{Code|dyskusja typu jednostki 1}}, {{Code|dyskusja typ jednostki 2}}, {{Code|dyskusja typ jednostki 3}},..., {{Code|dyskusja typ jednostki i}} - czy dany typ jednostki ma przedstawiać, jeśli niepusta, przestrzeń dyskusji dla pozycji bazowej, numerkowej i ogólnej. Przykłady: <syntaxhighlight lang="mediawiki"> {{Nazwa szablonu|nazwa przestrzeni nazw=Wikibooks|nazwa przestrzeni nazw 1=Szablon|nazwa przestrzeni nazw i=|nazwa jednostki 2=Wikibooks:Strona}} </syntaxhighlight> W dziecku powiedzmy jest wywołanie, i szukamy nazwy przestrzeni nazw o numerze dwa, która została podana, ale istnieje za to jej wersji ogólna {{Code|nazwa przestrzeni nazw i}} i domyślna {{Code|nazwa przestrzeni nazw}}, ale wtedy dla tego numerkowego liczy się to ogólne z {{Code| i}}, a ponieważ ta nazwa jest pusta, więc będziemy liczyli nazwę przestrzeni nazw z {{Code|nazwa jednostki 2}}: <syntaxhighlight lang="mediawiki"> {{#invoke:Pudełko|Nazwa przestrzeni nazw 2|numer jednostki=2}} </syntaxhighlight> Na podstawie powyższego przykładu otrzymamy wynik o schemacie, nie wyniku, bo tam nie ma zmiennej {{Code|nazwa przestrzeni nazw 1}}, ale jest {{Code|nazwa przestrzeni nazw i}}: <syntaxhighlight lang="mediawiki"> <!-- Ale nie "nazwa przestrzeni nazw 2", bo jej nie ma, ale za to istnieje "nazwa przestrzeni nazw i"; --> <!-- nazwa przestrzeni nazw 2=nazwa przestrzeni nazw i="", a nazwa jednostki 2="Wikibooks:Strona"; --> <!-- Czyli wynik: --> Wikibooks <!-- Widzimy, że wygenerowała się nazwa przestrzeni nazw, którą jest przestrzeń programowa, którą również jest "Wikibooks"; --> </syntaxhighlight> Nie jest brana w tym powyższym przykładzie zmienna {{Code|nazwa przestrzeni nazw}}, bo jej nie ma, ale za to jest {{Code|nazwa przestrzeni nazw i}}, bo ona występuje jako parametr domyślny ogólny dla parametrów numerkowych. Tytaj jest używwana jest zmienna {{Code|nazwa jednostki 2}} do wygenerowania ostatecznego wyniki,bo jak mozna zauważyć, parametry przestrzenne wskazują na przestrzeń główną, a nazwy jednostek już nie. Przykłady w wikikodzie: * {{Code|{{m|Pudełko|Nazwa przestrzeni nazw 2|numer jednostki{{=}}2}}}} → {{Tt|{{#invoke:Pudełko|Nazwa przestrzeni nazw 2|numer jednostki=2}}}} * {{Code|{{m|Pudełko|Nazwa przestrzeni nazw 2|Szablon|nazwa przestrzeni nazw i{{=}}Moja przestrzeń|numer jednostki{{=}}2}}}} → {{Tt|{{#invoke:Pudełko|Nazwa przestrzeni nazw 2|Szablon|nazwa przestrzeni nazw i=Moja przestrzeń|numer jednostki=2}}}} * {{Code|{{m|Pudełko|Nazwa przestrzeni nazw 2|nazwa przestrzeni nazw 2{{=}}|nazwa jednostki 2{{=}}Szablon:Strona|numer jednostki{{=}}2}}}} → {{Tt|{{#invoke:Pudełko|Nazwa przestrzeni nazw 2|nazwa przestrzeni nazw 2=|nazwa jednostki 2=Szablon:Strona|numer jednostki=2}}}} * {{Code|{{m|Pudełko|Nazwa przestrzeni nazw 2|nazwa przestrzeni nazw i{{=}}|nazwa jednostki 2{{=}}Szablon:Strona|numer jednostki{{=}}2}}}} → {{Tt|{{#invoke:Pudełko|Nazwa przestrzeni nazw 2|nazwa przestrzeni nazw i=|nazwa jednostki 2=Szablon:Strona|numer jednostki=2}}}} * {{Code|{{m|Pudełko|Nazwa przestrzeni nazw 2|Szablon|nazwa przestrzeni nazw{{=}}|nazwa jednostki 2{{=}}Wikibooks:Strona|numer jednostki{{=}}2}}}} → {{Tt|{{#invoke:Pudełko|Nazwa przestrzeni nazw 2|Szablon|nazwa przestrzeni nazw=|nazwa jednostki 2=Wikibooks:Strona|numer jednostki=2}}}} Powyżej dla przykładu podano parametry nie w rodzicu w szablonie, tylko w dziecku, jeśli chodzi o parametry nazw przestrzeni nazw i nazw jednostek, ale ich się za to nie powinno podawać w tych ramach, tylko w szablonach, w których wywoływane są te ramki pudełek {{Code|{{m|Pudełko}}}}, ale tak tutaj tak zrobiono by było najłatwiej sprawdzić działanie tego typu funkcji. Analogicznie możemy podawać parametry typu jednostki, np.: wywołaniu modułowym {{Code|{{m|Pudełko|Nazwa przestrzeni nazw 2|typ jednostki 2{{=}}strona szablonu|numer jednostki{{=}}2}}}}, ale o tym więcej w rozdziałach {{Code|{{sr|# p["Typ jednostki"](frame,i)|p=Pudełko}}}}, {{Code|{{sr|#p["Typ jednostki 2"](frame,i)|p=Pudełko}}}}, {{Code|{{sr|#p["Typ jednostki 3"](frame,i)|p=Pudełko}}}} itp. w „{{sr|#Funkcje typu jednostki|p=Pudełko}}”, on definiuje przestrzenie przedmiotowe, ale można użyć parametru dyskusji typu jednostki z wartością niepustą, wtedy wyświetli się nazwa przestrzeni nazw dyskusji. Jeżeli typ jednostki wskazuje na przestrzeń naazw główną, wtedy się liczą parametry nazw jednostek. Również parametry typu jednostki nie powinno się podawać w dziecku w ramce, tylko w rodzicu w szablonie jako parametry, w którym ta ramka jest wywoływana, ale tutaj podano jedynie dla przykładu, jak najłatwiej sprawdzić działanie tych parametrów tej funkcji. Najpierw w funkcji nagłówku brane są parametry nazw przestrzeni nazw, a jeżeli ich nie ma, to parametry typu jednostki, a jeżeli nie ma, to generowane są nazwy na podstawie aktualnego modułu. Podobnie jest z parametrami nazw jednostek. === {{Code|p["Nazwa przedmiotowej przestrzeni nazw 2"](frame,...)}} === === {{Code|p["Nazwa przestrzeni nazw dyskusji 2"](frame,...)}} === == Funkcje pełnych nazw jednostki == === {{Code|p["Pełna nazwa dyskusji jednostki"](frame,i)}} === === {{Code|p["Pełna nazwa przedmiotowa jednostki"](frame,i)}} === === {{Code|p["Pełna nazwa jednostki"](frame,i)}} === == Funkcje pełnych nazw jednostki drugiej wersji == === {{Code|p["Pełna nazwa dyskusji jednostki 2"](frame,i)}} === === {{Code|p["Pełna nazwa przedmiotowa jednostki 2"](frame,i)}} === === {{Code|p["Pełna nazwa jednostki 2"](frame,i)}} === == Funkcje pełnych nazw jednostki trzeciej wersji == === {{Code|p["Pełna nazwa dyskusji jednostki 3"](frame,i)}} === === {{Code|p["Pełna nazwa przedmiotowa jednostki 3"](frame,i)}} === === {{Code|p["Pełna nazwa jednostki 3"](frame,i)}} === == Funkcje nazw jednostki == === {{Code|p["Nazwa jednostki"](frame,i)}} === == Funkcje nazw jednostki drugiej wersji == === {{Code|p["Nazwa jednostki 2"](frame,i)}} === === {{Code|p["Nazwa przedmiotowa jednostki 2"](frame,i)}} === === {{Code|p["Nazwa dyskusji jednostki 2"](frame,i)}} === == Funkcje nazw przestrzeni nazw trzeciej wersji == === {{Code|p["Nazwa przestrzeni nazw 3"](frame,i)}} === === {{Code|p["Nazwa przedmiotowej przestrzeni nazw 3"](frame,i)}} === === {{Code|p["Nazwa przestrzeni nazw dyskusji 3"](frame,i)}} === == Funkcje nazw jednostki trzeciej wersji == === {{Code|p["Nazwa jednostki 3"](frame,i)}} === === {{Code|p["Nazwa przedmiotowa jednostki 3"](frame,i)}} === === {{Code|p["Nazwa dyskusji jednostki 3"](frame,i)}} === == Funkcje typu jednostki == === {{Code|p["Typ jednostki"](frame,i)}} === === {{Code|p["Typ jednostki 2"](frame,i)}} === === {{Code|p["Typ jednostki 3"](frame,i)}} === === Funkcje typu jednostki przedmiotowe === ==== {{Code|p["Przedmiotowy typ jednostki"](frame,i)}} ==== ==== {{Code|p["Przedmiotowy typ jednostki 2"](frame,i)}} ==== ==== {{Code|p["Przedmiotowy typ jednostki 3"](frame,i)}} ==== === Fukcje typu jednostki dyskusji === ==== {{Code|p["Dyskusyjny typ jednostki"](frame,i)}} ==== ==== {{Code|p["Dyskusyjny typ jednostki 2"](frame,i)}}} ==== ==== {{Code|p["Dyskusyjny typ jednostki 3"](frame,i)}} ==== == Funkcje chech pudełka == === {{Code|p["Cecha pudełka"](frame)}} === === {{Code|p["Przedmiotowa cecha pudełka"](frame)}} === === {{Code|p["Dyskusyjna cecha pudełka"](frame)}} === == Fukcje ogólnego pudełka == === {{Code|p["Ogólne pudełko"](frame)}} === == Funkcje ogólne == === {{Code|p["Tekst pudełka"](frame)}} === == Funkcje błędów pudełka == === {{Code|p["Błędy pudełka"](frame)}} === === {{Code|p["Przedmiotowe błędy pudełka"](frame)}} === === {{Code|p["Dyskusyjne błędy pudełka"](frame)}} === == Funkcje nazw stron == === {{Code|p["Nazwa strony głównej projektu"](frame,i)}} === === {{Code|p["Nazwa strony głównej dla dzieci projektu"](frame,i)}} === == Funkcje kodów == === {{Code|p["Kod języka"](frame,i)}} === === {{Code|p["Kod projektu"](frame,i)}} === === {{Code|p["Klucz projektu"](frame,i)}} === == Funkcje wiki == === {{Code|p["Inny niż język bieżący wiki"](frame)}} === === {{Code|p["Inne niż lokalne wiki"](frame)}} === === {{Code|p["Inne niż bieżące wiki"](frame)}} === == Funkcje typów parametrów, czy podane je == === {{Code|p["Podano parametry nienazwane"](frame)}} === === {{Code|p["Podano parametry numerowane"](frame)}} === === {{Code|p["Podano parametry nazwane"](frame)}} === == Funkcje kodów tego projektu == === {{Code|p["Kod projektu tego projektu"](frame)}} === === {{Code|p["Kod języka tego projektu"](frame)}} === === {{Code|p["Klucz projektu tego projektu"](frame)}} === == Funkcje stron == === {{Code|p["Strona główna tego projektu"](frame)}} === === {{Code|p["Strona główna dla dzieci tego projektu"](frame)}} === == Funkcje nazw stron drugiej wersji == === {{Code|p["Nazwa strony głównej dla dzieci projektu 2"](frame)}} === === {{Code| p["Nazwa strony głównej projektu 2"](frame)}} === {{BrClear}} <noinclude><!-- -->{{ProstaStronaKoniec}}<!-- -->{{Kategoria|Opisy funkcji, w Lua w Scribunto, w modułach}}<!-- --></noinclude> q0dr4t8i0epkygjxsdgd4w5lxk06vn5 540372 540371 2026-04-23T12:46:09Z Persino 2851 540372 wikitext text/x-wiki <noinclude>{{ProstaStronaStart | nagłówek = {{Podrozdział|{{ld2|Pudełko}}|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 pudelko_modul=require("Module:Pudełko"); </syntaxhighlight> dzięki, któremu można wypisywać funkcje należącego do niego. Posługuje się na parametrach pudełkowych {{Parametr|nazwa przestrzeni nazw}} (czy też bez numerka {{Parametr|nazwa przestrzeni nazw i}} dla tego numerowanego) lub te z numerkiem po jednej spacji w nich (ale nie dla tego z końcówką {{Code| i}}) mogą zostać użyte jako parametry szablonu. Moduł {{Code|{{ld2|Pudełko}}}} przedstawia funkcje nazw w oparciu o funkcje nazw {{Code|{{ld2|Nazwy}}}}, generuje on nazwy za pomocą parametrów pudełkowych podanych poniżej. Parametr {{Parametr|nazwa jednostki}} (lub parametr {{Parametr|cel}} dla numerka tego pierwszego, tego alternatywnego), lub te z numerkiem po jednej spacji w nazwie parametru, albo numerowane numerkami {{Code|1}}, {{Code|2}},..., mogą zostać użyte jako parametry szablonu. Parametry określające rodzaj jednostki {{Parametr|typ jednostki}} z {{Parametr|dyskusja typu jednostki}}, itp. w wersjach z numerkiem po jednej spacji w nich mogą zostać użyte jako parametry szablonu. A te tymi numerowanymi liczbami naturalnymi {{Tt|nazwy jednostki}} od jedynki wzwyż poprzez szablon, w którym są one użyte, one też mogą być użyte z dwukropkiem, te numerowane, na samym początku nazwy, wtedy one są traktowane jako pełne nazwy strony, i wtedy one nie zostaną z interpretowane, że do nich trzeba użyć parametr odpowiedni z nazwą przetrzeni nazw z tego numerowanego, czy ogólny, aby utworzyć znów inną pełną nazwę strony dla tego numerka. Zestawienie: * {{Code|nazwa przestrzeni nazw}} i {{Code|nazwa przestrzeni nazw i}} (ogólna nazwa przestrzeni nazw dla wszystkich numerków, i tych numerowanych jednostek) - i to pierwsze z numerkiem, tzn. {{Code|nazwa przestrzeni nazw 1}}, {{Code|nazwa przestrzeni nazw 2}}, ..., * {{Code|nazwa jednostki}} - i te z numerkiem: {{Code|nazwa jednostki 1}}, {{Code|nazwa jednostki 2}}, ..., lub gdy jest zamiast tego parametrem numerowany, {{Code|1}}, {{Code|2}},..., który dla tego pierwszego może być uznany jako: {{Code|cel}} {{=}} {{Code|1}}, * {{Code|typ jednostki}} (parametr bazowy) i {{Code|typ jednostki i}} (parametr domyślny numerkowy) - i te z numerkiem: {{Code|typ jednostki 1}}, {{Code|typ jednostki 2}}, ..., tzn. gdy chcemy określić z jakim typem jednostki mamy do czynienia w zależności do jakiej przestrzeni nazw należy, a w danej, czy jest on np. programowy, czy tylko jest opisem, jak to bywa w szablonach {{Np|Template|link=tak}}, podobnie jest w przypadku {{Np|Module|link=tak}}, czy jak jest w innych przestrzeniach nazw, ** {{Code|dyskusja typu jednostki}} (parametr bazowy) i {{Code|dyskusja typu jednostki i}} (parametr domyślny numerkowy) - i te z numerkiem: {{Code|dyskusja typu jednostki 1}}, {{Code|dyskusja typu jednostki 2}}, ..., gdy chcemy określić wartością niepustą,że chodzi tutaj o typ jednostki. == {{Code|p.CzyNiepoprawnaNazwa(nazwa_jednostki)}} == Funkcja sprawdzajaca, czy jest poprawnie podana nazwa jednostki, czy ma poprawną nazwę. Znakami tymi, z których nie powinna składać się nazwa jest {{Code|<nowiki>{}<>|[]#\n</nowiki>}} i dodatkowo znak {{Code|&#127;}} (kod {{Code|{{Nowiki|&#127;}}}}). Też nie może składać się z trzech znaków tyldy, tzn. {{Code|<nowiki>~~~</nowiki>}}. Również w swojej budowie nie może składać się ze kodów {{Strong|HTML}} literowych o wzorze {{Code|{{Nowiki|&(%a+);}}}}. Natomiast może składać się z {{Code|{{Nowiki|&#(%d+);}}}} i {{Code|{{Nowiki|&#x(%x+);}}}}, ale w pierw te kody muszą być zamienione na normalne znaki. Skrótowa definicja funkcji: <syntaxhighlight lang="lua"> function p.CzyNiepoprawnaNazwa(nazwa_jednostki)...end; </syntaxhighlight> Wtedy ciało funkcji tej, czyli jego definicja w środku, jest: <syntaxhighlight lang="lua"> -- Moduł: "Moduł:Html/dane", służy do ładowania znaku o kodzie HTML "&#127;"; local html_dane_modul=mw.loadData("Module:Html/dane"); return mw.ustring.match(nazwa_jednostki,"[{}<>|%[%]#\n"..html_dane_modul.znak_127.."]+") or mw.ustring.match(nazwa_jednostki,"~~~") or mw.ustring.match(nazwa_jednostki,"&(%a+);"); </syntaxhighlight> Parametry: * {{Code|nazwa_jednostki}} - nazwa jednostki do sprawdzenia. Przykłady: <syntaxhighlight lang="lua"> local pudelko_modul=require("Module:Pudełko"); -- Podana przykładowa niepoprawna nazwa jedostki local nazwa_jednostki="Nazwa pliku [[Nazwa linku w pliku]]"; -- Fukcja zwróci wartość: local czy_poprawna_nazwa=true; local czy_poprawna_nazwa=pudelko_modul.CzyNiepoprawnaNazwa(nazwa_jednostki); </syntaxhighlight> == Funkcje nazw przestrzeni nazw == === {{Code|p["Nazwa przestrzeni nazw"](frame,...)}} === Funkcja pisze nazwę przestrzeni nazw, niezależnie, czy to jest przedmiotowa, czy dyskusji, według podanej w zmiennej {{Code|nazwa przestrzeni nazw}} dla pozycja bazowej w podanych parametrach szablonu rodzicu ramki dziecka, lub dla innej pozycji należy parametr podawaćw formie {{Code|nazwa przestrzeni nazw 1}}, {{Code|nazwa przestrzeni nazw 2}}, {{Code|nazwa przestrzeni nazw 3}},..., lub te parametry można podać w postaci ogólnej {{Code|nazwa przestrzeni nazw i}}. Parametry podaje się w parametrach rodzica wywołania tej funkcji {{Code|{{m|Pudełko|Nazwa przestrzeni nazw}}}} (ale ich nie trzeba podawać w dziecku, ale można) i w parametrach dziecka, jeśli chodzi o zmienną {{Code|numer jednostki}}, czyli np.: {{Code|{{m|Pudełko|Nazwa przestrzeni nazw|numer jednostki{{=}}<jakaś liczba całkowita dodatnia>}}}}. Te parametry przestrzenne zamiast w rodzicu w szablonie można podać w ramce dziecka, wtedy parametry dziecka mają pierwszeństwo. Przestrzeń nazw z parametrów nazw przestrzennych może odpowiadać wartości przestrzeni głównej, to wtedy odpowiednia przestrzeń nazw z parametru nazwy jednostki się nie liczy w tej funkcji, aby się liczyła należy użyć funkcji {{Code|{{sr|#p["Nazwa przestrzeni nazw 2"](frame,...)|p=Pudełko}}}}. Definicja skrótowa funkcji: <syntaxhighlight lang="lua"> p["Nazwa przestrzeni nazw"]=function(frame,czy_uwzglednic_alternatywna_nazwe,i)...end; </syntaxhighlight> Wtedy ciało funkcji tej, czyli jego definicja w środku, jest: <syntaxhighlight lang="lua"> -- Jest liczony numer parametru nazwy przestrzeni nazw, domyslnie chodzi tu o numer bazowy parametrów przestrzennych; local numer_jednostki=i or frame.args["numer jednostki"]; local liczba_numer_jednostki=((numer_jednostki)and(tonumber(numer_jednostki))or 0); local pudelko_pomocne_modul=require("Module:Pudełko/Pomocne"); -- Liczy nazwę przestrzeni nazw na podstawie podanych parametrów; return pudelko_pomocne_modul.Nazwa_przestrzeni_nazw(frame,0, czy_uwzglednic_alternatywna_nazwe,liczba_numer_jednostki); </syntaxhighlight> Parametry funkcji: * {{Code|frame}} - tablica ramki tablicy transportu, * {{Code|czy_uwzglednic_alternatywna_nazwe}} - czy ma uwzględniać nazwę przestrzeni nazw domyślną szablonu, dostępne wartości: {{Code|false}}, w której nazwa domyślna nie jest uwzględniana wtedy, oraz {{Code|nil}} i {{Code|true}}, które oznaczają to samo, w tym jeżeli ona jest uwzględniana, wtedy jest brany parametr pierwszy dziecka, który musi istnieć przy takiej wartości tego parametru, tzn. {{Code|{{m|Pudełko|Nazwa przestrzeni nazw|Szablon}}}}, a nazwa uzyskana nazwy przestrzeni nazw jest w takim przypadku błędna, a jeżeli nazwa domyślna jest błędna, czyli {{Code|{{m|Pudełko|Nazwa przestrzeni nazw|Moja przestrzeń}}}}, wtedy funkcja zwraca stan błędu {{Code|(błąd)}}. * {{Code|i}} - numer zmiennej nazwy przestrzeni nazw. Funkcja wykorzystuje {{Code|{{sr|#p.Nazwa_przestrzeni_nazw(frame,...)|p=Pudełko/Pomocne}}}} do wyznaczania ogólnego nazwy przestrzeni nazw dla pozycji bazowej i numerkowej, tzn. dla pozycji: jeden, dwa, trzy,..., itd, i ich ogólnej. Parametry ramki tablicy transportu dziecka: * {{Code|nazwa przestrzeni nazw}}, {{Code|nazwa przestrzeni nazw 1}}, {{Code|nazwa przestrzeni nazw 2}}, {{Code|nazwa przestrzeni nazw 3}},..., {{Code|nazwa przestrzeni nazw i}} - nazwy przestrzeni nazw dla pozycji bazowej, numerkowej i ogólnej, * {{Code|typ jednostki}}, {{Code|typ jednostki 1}}, {{Code|typ jednostki 2}}, {{Code|typ jednostki 3}},..., {{Code|typ jednostki i}} - typy jednostek, którym odpowiadają pewne przestrzenie przedmiotowe, dla pozycji bazowej, numerkowej i ogólnej, ** {{Code|dyskusja typu jednostki}}, {{Code|dyskusja typu jednostki 1}}, {{Code|dyskusja typ jednostki 2}}, {{Code|dyskusja typ jednostki 3}},..., {{Code|dyskusja typ jednostki i}} - czy dany typ jednostki ma przedstawiać, jeśli niepusta, przestrzeń dyskusji dla pozycji bazowej, numerkowej i ogólnej, * {{Code|numer jednostki}} - jak parametr {{Code|i}} nie został ustawiony, to wtedy liczy się ta zmienna. Parametr ramki tablicy transportu rodzica szablonu: * {{Code|nazwa przestrzeni nazw}}, {{Code|nazwa przestrzeni nazw 1}}, {{Code|nazwa przestrzeni nazw 2}}, {{Code|nazwa przestrzeni nazw 3}},..., {{Code|nazwa przestrzeni nazw i}} - nazwy przestrzeni nazw dla pozycji bazowej oraz zwykłej i ogólnej numerkowej, * {{Code|typ jednostki}}, {{Code|typ jednostki 1}}, {{Code|typ jednostki 2}}, {{Code|typ jednostki 3}},..., {{Code|typ jednostki i}} - typy jednostek, którym odpowiadają pewne przestrzenie przedmiotowe, dla pozycji bazowej, numerkowej i ogólnej, ** {{Code|dyskusja typu jednostki}}, {{Code|dyskusja typu jednostki 1}}, {{Code|dyskusja typ jednostki 2}}, {{Code|dyskusja typ jednostki 3}},..., {{Code|dyskusja typ jednostki i}} - czy dany typ jednostki ma przedstawiać, jeśli niepusta, przestrzeń dyskusji dla pozycji bazowej, numerkowej i ogólnej. Przykłady: <syntaxhighlight lang="mediawiki"> {{Nazwa szablonu|nazwa przestrzeni nazw=Wikibooks|nazwa przestrzeni nazw 2=Szablon|nazwa przestrzeni nazw i=Moduł}} </syntaxhighlight> W dziecku powiedzmy jest wywołanie, i szukamy nazwy przestrzeni nazw o numerze dwa, która nie została podana, ale istnieje za to jej wersji ogólna {{Code|nazwa przestrzeni nazw i}} i domyślna {{Code|nazwa przestrzeni nazw}}: <syntaxhighlight lang="mediawiki"> {{#invoke:Pudełko|Nazwa przestrzeni nazw|numer jednostki=1}} </syntaxhighlight> Na podstawie powyższego przykładu otrzymamy wynik o schemacie, nie wyniku, bo tam nie ma zmiennej {{Code|nazwa przestrzeni nazw 1}}, ale jest {{Code|nazwa przestrzeni nazw i}}: <syntaxhighlight lang="mediawiki"> <!-- Ale nie "nazwa przestrzeni nazw", bo jej nie ma, ale za to istnieje "nazwa przestrzeni nazw i"; --> <!-- nazwa przestrzeni nazw 2=nazwa przestrzeni nazw i=Moduł; --> <!-- Czyli wynik: --> Moduł <!-- Widzimy, że wygenerowała się nazwa przestrzeni nazw, którą jest przestrzeń programowa, którą również jest "Szablon"; --> </syntaxhighlight> Nie jest brana w tym powyższym przykładzie zmienna {{Code|nazwa przestrzeni nazw}}, bo jej nie ma, ale za to jest {{Code|nazwa przestrzeni nazw i}}, bo ona występuje jako parametr domyślny ogólny dla parametrów numerkowych. Przykłady w wikikodzie: * {{Code|{{m|Pudełko|Nazwa przestrzeni nazw|numer jednostki{{=}}2}}}} → {{Tt|{{#invoke:Pudełko|Nazwa przestrzeni nazw|numer jednostki=2}}}} * {{Code|{{m|Pudełko|Nazwa przestrzeni nazw|Szablon|nazwa przestrzeni nazw i{{=}}Moja przestrzeń|numer jednostki{{=}}2}}}} → {{Tt|{{#invoke:Pudełko|Nazwa przestrzeni nazw|Szablon|nazwa przestrzeni nazw i=Moja przestrzeń|numer jednostki=2}}}} * {{Code|{{m|Pudełko|Nazwa przestrzeni nazw|nazwa przestrzeni nazw 2{{=}}Szablon|numer jednostki{{=}}2}}}} → {{Tt|{{#invoke:Pudełko|Nazwa przestrzeni nazw|nazwa przestrzeni nazw 2=Szablon|numer jednostki=2}}}} * {{Code|{{m|Pudełko|Nazwa przestrzeni nazw|nazwa przestrzeni nazw 2{{=}}Szablon|numer jednostki{{=}}2}}}} → {{Tt|{{#invoke:Pudełko|Nazwa przestrzeni nazw|nazwa przestrzeni nazw i=Szablon|numer jednostki=2}}}} * {{Code|{{m|Pudełko|Nazwa przestrzeni nazw|nazwa przestrzeni nazw{{=}}Szablon|numer jednostki{{=}}2}}}} → {{Tt|{{#invoke:Pudełko|Nazwa przestrzeni nazw|nazwa przestrzeni nazw=Szablon|numer jednostki=2}}}} Powyżej dla przykładu podano parametry nie w rodzicu w szablonie, tylko w dziecku, jeśli chodzi o parametry nazw przestrzeni nazw, ale ich się za to nie powinno podawać w tych ramach, tylko w szablonach, w których wywoływane są te ramki pudełek {{Code|{{m|Pudełko}}}}, ale tak tutaj tak zrobiono by było najłatwiej sprawdzić działanie tego typu funkcji. Analogicznie możemy podawać parametry typu jednostki, np.: wywołaniu modułowym {{Code|{{m|Pudełko|Nazwa przestrzeni nazw|typ jednostki 2{{=}}strona szablonu|numer jednostki{{=}}2}}}}, ale o tym więcej w rozdziałach {{Code|{{sr|# p["Typ jednostki"](frame,i)|p=Pudełko}}}}, {{Code|{{sr|#p["Typ jednostki 2"](frame,i)|p=Pudełko}}}}, {{Code|{{sr|#p["Typ jednostki 3"](frame,i)|p=Pudełko}}}} itp. w „{{sr|#Funkcje typu jednostki|p=Pudełko}}”, on definiuje przestrzenie przedmiotowe, ale można użyć parametru dyskusji typu jednostki z wartością niepustą, wtedy wyświetli się nazwa przestrzeni nazw dyskusji. Również parametry typu jednostki nie powinno się podawać w dziecku w ramce, tylko w rodzicu w szablonie jako parametry, w którym ta ramka jest wywoływana, ale tutaj podano jedynie dla przykładu, jak najłatwiej sprawdzić działanie tych parametrów tej funkcji. Najpierw w funkcji nagłówku brane są parametry nazw przestrzeni nazw, a jeżeli ich nie ma, to parametry typu jednostki, a jeżeli nie ma, to generowane są nazwy na podstawie aktualnego modułu. === {{Code|p["Nazwa przedmiotowej przestrzeni nazw"](frame,...)}} === Funkcja pisze przedmiotową nazwę przestrzeni nazw jakikolwiek nazwy przestrzeni nazw (tzn. nazwę przedmiotową nazwy przestrzenie nazw, czyli nie dyskusji, zamieniana jest na nią samą, czyli identyfikator przestrzeni się nie zmienia, a dyskusji, nie przedmiotową, przekształca się na przedmiotową jej odpowiadającą, czyli w tym przypadku identyfikator przestrzeni zmniejsza się o numer mniej), według podanej w zmiennej {{Code|nazwa przestrzeni nazw}} dla pozycja bazowej w podanych parametrach szablonu rodzicu ramki dziecka, lub dla innej pozycji należy parametr podawać w formie {{Code|nazwa przestrzeni nazw 1}}, {{Code|nazwa przestrzeni nazw 2}}, {{Code|nazwa przestrzeni nazw 3}},..., lub te parametry można podać w postaci ogólnej {{Code|nazwa przestrzeni nazw i}}. Parametry podaje się w parametrach rodzica wywołania tej funkcji {{Code|{{m|Pudełko|Nazwa przedmiotowej przestrzeni nazw}}}} (ale ich nie trzeba podawać w dziecku, ale można) i w parametrach dziecka, jeśli chodzi o zmienną {{Code|numer jednostki}}, czyli np.: {{Code|{{m|Pudełko|Nazwa przedmiotowej przestrzeni nazw|numer jednostki{{=}}<jakaś liczba całkowita dodatnia>}}}}. Te parametry przestrzenne zamiast w rodzicu w szablonie można podać w ramce dziecka, wtedy parametry dziecka mają pierwszeństwo. Parametry przestrzenne mogą mogą być podane w postaci przestrzeni przedmiotowej lub dyskusji, ale ta funkcja zawsze ją zamienia na przedmiotową. Przestrzeń nazw z parametrów nazw przestrzennych może odpowiadać wartości przestrzeni głównej, to wtedy odpowiednia przestrzeń nazw z parametru nazwy jednostki się nie liczy w tej funkcji, aby się liczyła należy użyć funkcji {{Code|{{sr|#p["Nazwa przedmiotowej przestrzeni nazw 2"](frame,...)|p=Pudełko}}}}. Definicja skrótowa funkcji: <syntaxhighlight lang="lua"> p["Nazwa przedmiotowej przestrzeni nazw"]=function(frame,czy_uwzglednic_alternatywna_nazwe,i)...end; </syntaxhighlight> Wtedy ciało funkcji tej, czyli jego definicja w środku, jest: <syntaxhighlight lang="lua"> -- Jest liczony numer parametru nazwy przestrzeni nazw, domyslnie chodzi tu o numer bazowy parametrów przestrzennych; local numer_jednostki=i or frame.args["numer jednostki"]; local liczba_numer_jednostki=((numer_jednostki)and(tonumber(numer_jednostki))or 0); local pudelko_pomocne_modul=require("Module:Pudełko/Pomocne"); -- Liczy nazwę przestrzeni nazw przedmiotową na podstawie podanych parametrów; return pudelko_pomocne_modul.Nazwa_przestrzeni_nazw(frame,1, czy_uwzglednic_alternatywna_nazwe,liczba_numer_jednostki); </syntaxhighlight> Parametry funkcji: * {{Code|frame}} - tablica ramki tablicy transportu, * {{Code|czy_uwzglednic_alternatywna_nazwe}} - czy ma uwzględniać nazwę przestrzeni nazw domyślną szablonu, dostępne wartości: {{Code|false}}, w której nazwa domyślna nie jest uwzględniana wtedy, oraz {{Code|nil}} i {{Code|true}}, które oznaczają to samo, w tym jeżeli ona jest uwzględniana, wtedy jest brany parametr pierwszy dziecka, który musi istnieć przy takiej wartości tego parametru, tzn. {{Code|{{m|Pudełko|Nazwa przedmiotowej przestrzeni nazw|Dyskusja szablonu}}}} - ta nazwa domyślna zostanie zamieniona na przedmiotową, a jak ona by była przedmiotowa, to żadnej zamiany by nie było, a nazwa uzyskana z nazwy przestrzeni nazw z parametrów przestrzennych jest w takim przypadku błędna, to w takim razie brany jest ten parametr, a jeżeli ta nazwa domyślna jest błędna, czyli {{Code|{{m|Pudełko|Nazwa przedmiotowej przestrzeni nazw|Moja przestrzeń}}}}, wtedy funkcja zwraca stan błędu {{Code|(błąd)}}. * {{Code|i}} - numer zmiennej nazwy przestrzeni nazw. Funkcja wykorzystuje {{Code|{{sr|#p.Nazwa_przestrzeni_nazw(frame,...)|p=Pudełko/Pomocne}}}} do wyznaczania ogólnego nazwy przestrzeni nazw dla pozycji bazowej i numerkowej, tzn. dla pozycji: jeden, dwa, trzy,..., itd, i ich ogólnej. Parametry ramki tablicy transportu dziecka: * {{Code|nazwa przestrzeni nazw}}, {{Code|nazwa przestrzeni nazw 1}}, {{Code|nazwa przestrzeni nazw 2}}, {{Code|nazwa przestrzeni nazw 3}},..., {{Code|nazwa przestrzeni nazw i}} - nazwy przestrzeni nazw dla pozycji bazowej, numerkowej i ogólnej, * {{Code|typ jednostki}}, {{Code|typ jednostki 1}}, {{Code|typ jednostki 2}}, {{Code|typ jednostki 3}},..., {{Code|typ jednostki i}} - typy jednostek, którym odpowiadają pewne przestrzenie przedmiotowe, dla pozycji bazowej, numerkowej i ogólnej, ** {{Code|dyskusja typu jednostki}}, {{Code|dyskusja typu jednostki 1}}, {{Code|dyskusja typ jednostki 2}}, {{Code|dyskusja typ jednostki 3}},..., {{Code|dyskusja typ jednostki i}} - czy dany typ jednostki ma przedstawiać, jeśli niepusta, przestrzeń dyskusji dla pozycji bazowej, numerkowej i ogólnej, * {{Code|numer jednostki}} - jak parametr {{Code|i}} nie został ustawiony, to wtedy liczy się ta zmienna. Parametr ramki tablicy transportu rodzica szablonu: * {{Code|nazwa przestrzeni nazw}}, {{Code|nazwa przestrzeni nazw 1}}, {{Code|nazwa przestrzeni nazw 2}}, {{Code|nazwa przestrzeni nazw 3}},..., {{Code|nazwa przestrzeni nazw i}} - nazwy przestrzeni nazw dla pozycji bazowej oraz zwykłej i ogólnej numerkowej, * {{Code|typ jednostki}}, {{Code|typ jednostki 1}}, {{Code|typ jednostki 2}}, {{Code|typ jednostki 3}},..., {{Code|typ jednostki i}} - typy jednostek, którym odpowiadają pewne przestrzenie przedmiotowe, dla pozycji bazowej, numerkowej i ogólnej, ** {{Code|dyskusja typu jednostki}}, {{Code|dyskusja typu jednostki 1}}, {{Code|dyskusja typ jednostki 2}}, {{Code|dyskusja typ jednostki 3}},..., {{Code|dyskusja typ jednostki i}} - czy dany typ jednostki ma przedstawiać, jeśli niepusta, przestrzeń dyskusji dla pozycji bazowej, numerkowej i ogólnej. Przykłady: <syntaxhighlight lang="mediawiki"> {{Nazwa szablonu|nazwa przestrzeni nazw=Dyskusja Wikibooks|nazwa przestrzeni nazw 2=Dyskusja szablonu|nazwa przestrzeni nazw i=Dyskusja modułu}} </syntaxhighlight> W dziecku powiedzmy jest wywołanie, i szukamy nazwy przestrzeni nazw o numerze dwa, która nie została podana, ale istnieje za to jej wersji ogólna {{Code|nazwa przestrzeni nazw i}} i domyślna {{Code|nazwa przestrzeni nazw}}: <syntaxhighlight lang="mediawiki"> {{#invoke:Pudełko|Nazwa przedmiotowej przestrzeni nazw|numer jednostki=1}} </syntaxhighlight> Na podstawie powyższego przykładu otrzymamy wynik o schemacie, nie wyniku, bo tam nie ma zmiennej {{Code|nazwa przestrzeni nazw 1}}, ale jest {{Code|nazwa przestrzeni nazw i}}: <syntaxhighlight lang="mediawiki"> <!-- Ale nie "nazwa przestrzeni nazw", bo jej nie ma, ale za to istnieje "nazwa przestrzeni nazw i"; --> <!-- nazwa przestrzeni nazw 2=nazwa przestrzeni nazw i=Dyskusja modułu; --> <!-- Czyli wynik: --> Moduł <!-- Widzimy, że wygenerowała się nazwa przestrzeni nazw, którą jest przestrzeń przedmiotowa programowa przestrzeni dyskusji "Dyskusja modułu", którą również jest "Szablon" jego przestrzeni dyskusji "Dyskusja szablonu", a dla ich przestrzeni przedmiotowej, zamiast dyskusji, to samo przekształca się na to samo; --> </syntaxhighlight> Nie jest brana w tym powyższym przykładzie zmienna {{Code|nazwa przestrzeni nazw}}, bo jej nie ma, ale za to jest {{Code|nazwa przestrzeni nazw i}}, bo ona występuje jako parametr domyślny ogólny dla parametrów numerkowych. Przykłady w wikikodzie: * {{Code|{{m|Pudełko|Nazwa przedmiotowej przestrzeni nazw|numer jednostki{{=}}2}}}} → {{Tt|{{#invoke:Pudełko|Nazwa przedmiotowej przestrzeni nazw|numer jednostki=2}}}} * {{Code|{{m|Pudełko|Nazwa przedmiotowej przestrzeni nazw|Dyskusja szablonu|nazwa przestrzeni nazw i{{=}}Moja przestrzeń|numer jednostki{{=}}2}}}} → {{Tt|{{#invoke:Pudełko|Nazwa przedmiotowej przestrzeni nazw|Dyskusja szablonu|nazwa przestrzeni nazw i=Moja przestrzeń|numer jednostki=2}}}} * {{Code|{{m|Pudełko|Nazwa przedmiotowej przestrzeni nazw|nazwa przestrzeni nazw 2{{=}}Dyskusja szablonu|numer jednostki{{=}}2}}}} → {{Tt|{{#invoke:Pudełko|Nazwa przedmiotowej przestrzeni nazw|nazwa przestrzeni nazw 2=Dyskusja szablonu|numer jednostki=2}}}} * {{Code|{{m|Pudełko|Nazwa przedmiotowej przestrzeni nazw|nazwa przestrzeni nazw 2{{=}}Dyskusja szablonu|numer jednostki{{=}}2}}}} → {{Tt|{{#invoke:Pudełko|Nazwa przedmiotowej przestrzeni nazw|nazwa przestrzeni nazw i=Dyskusja szablonu|numer jednostki=2}}}} * {{Code|{{m|Pudełko|Nazwa przedmiotowej przestrzeni nazw|nazwa przestrzeni nazw{{=}}Dyskusja szablonu|numer jednostki{{=}}2}}}} → {{Tt|{{#invoke:Pudełko|Nazwa przedmiotowej przestrzeni nazw|nazwa przestrzeni nazw=Dyskusja szablonu|numer jednostki=2}}}} Powyżej dla przykładu podano parametry nie w rodzicu w szablonie, tylko w dziecku, jeśli chodzi o parametry nazw przestrzeni nazw, ale ich się za to nie powinno podawać w tych ramach, tylko w szablonach, w których wywoływane są te ramki pudełek {{Code|{{m|Pudełko}}}}, ale tak tutaj tak zrobiono by było najłatwiej sprawdzić działanie tego typu funkcji. Analogicznie możemy podawać parametry typu jednostki, np.: wywołaniu modułowym {{Code|{{m|Pudełko|Nazwa przedmiotowej przestrzeni nazw|typ jednostki 2{{=}}strona szablonu|numer jednostki{{=}}2}}}}, ale o tym więcej w rozdziałach {{Code|{{sr|# p["Typ jednostki"](frame,i)|p=Pudełko}}}}, {{Code|{{sr|#p["Typ jednostki 2"](frame,i)|p=Pudełko}}}}, {{Code|{{sr|#p["Typ jednostki 3"](frame,i)|p=Pudełko}}}} itp. w „{{sr|#Funkcje typu jednostki|p=Pudełko}}”, ale wtedy ta sama nazwa przestrzeni nazw reprezentowana przez {{Parametr|typ jednostki 2|strona szablonu}}, jest zamieniana na to samo, lepiej jest tutaj używać parametrów przestrzennych nazw niż typu jednostki, bo typ jednostki ma taką samą wartość dla przestrzeni przedmiotowej, co dyskusji. Tutaj parametr dyskusji typu jednostki bazowy i numerkowy ogólny, czy szczegółowy, nie gra roli, bo nawet, gdy wygenerujemy nazwę przestrzeni dyskusji za pomoca tego parametru, to i tak otrzymamy na samym końcu jego nazwę przedmiotową. Również parametry typu jednostki nie powinno się podawać w dziecku w ramce, tylko w rodzicu w szablonie jako parametry, w którym ta ramka jest wywoływana, ale tutaj podano jedynie dla przykładu, jak najłatwiej sprawdzić działanie tych parametrów tej funkcji. Najpierw w funkcji nagłówku brane są parametry nazw przestrzeni nazw, a jeżeli ich nie ma, to parametry typu jednostki, a jeżeli nie ma, to generowane są nazwy na podstawie aktualnego modułu. === {{Code|p["Nazwa przestrzeni nazw dyskusji"](frame,...)}} === Funkcja pisze nazwę przestrzeni nazw dyskusji jakikolwiek nazwy przestrzeni nazw (tzn. nazwę przedmiotową nazwy przestrzenie nazw, czyli nie dyskusji, zamieniana jest na dyskusji, czyli identyfikator przestrzeni się zmienia jeden wyżej, a dyskusji, nie przedmiotową, przekształca się na tą samą), według podanej w zmiennej {{Code|nazwa przestrzeni nazw}} dla pozycja bazowej w podanych parametrach szablonu rodzicu ramki dziecka, lub dla innej pozycji należy parametr podawać w formie {{Code|nazwa przestrzeni nazw 1}}, {{Code|nazwa przestrzeni nazw 2}}, {{Code|nazwa przestrzeni nazw 3}},..., lub te parametry można podać w postaci ogólnej {{Code|nazwa przestrzeni nazw i}}. Parametry podaje się w parametrach rodzica wywołania tej funkcji {{Code|{{m|Pudełko|Nazwa przestrzeni nazw dyskusji}}}} (ale ich nie trzeba podawać w dziecku, ale można) i w parametrach dziecka, jeśli chodzi o zmienną {{Code|numer jednostki}}, czyli np.: {{Code|{{m|Pudełko|Nazwa przestrzeni nazw dyskusji|numer jednostki{{=}}<jakaś liczba całkowita dodatnia>}}}}. Te parametry przestrzenne zamiast w rodzicu w szablonie można podać w ramce dziecka, wtedy parametry dziecka mają pierwszeństwo. Parametry przestrzenne mogą mogą być podane w postaci przestrzeni przedmiotowej lub dyskusji, ale ta funkcja zawsze ją zamienia na dyskusji. Przestrzeń nazw z parametrów nazw przestrzennych może odpowiadać wartości przestrzeni głównej, to wtedy odpowiednia przestrzeń nazw z parametru nazwy jednostki się nie liczy w tej funkcji, aby się liczyła należy użyć funkcji {{Code|{{sr|#p["Nazwa przestrzeni nazw dyskusji 2"](frame,...)|p=Pudełko}}}}. Definicja skrótowa funkcji: <syntaxhighlight lang="lua"> p["Nazwa przestrzeni nazw dyskusji"]=function(frame,czy_uwzglednic_alternatywna_nazwe,i)...end; </syntaxhighlight> Wtedy ciało funkcji tej, czyli jego definicja w środku, jest: <syntaxhighlight lang="lua"> -- Jest liczony numer parametru nazwy przestrzeni nazw, domyslnie chodzi tu o numer bazowy parametrów przestrzennych; local numer_jednostki=i or frame.args["numer jednostki"]; local liczba_numer_jednostki=((numer_jednostki)and(tonumber(numer_jednostki))or 0); local pudelko_pomocne_modul=require("Module:Pudełko/Pomocne"); -- Liczy nazwę przestrzeni nazw dyskusji na podstawie podanych parametrów; return pudelko_pomocne_modul.Nazwa_przestrzeni_nazw(frame,2, czy_uwzglednic_alternatywna_nazwe,liczba_numer_jednostki); </syntaxhighlight> Parametry funkcji: * {{Code|frame}} - tablica ramki tablicy transportu, * {{Code|czy_uwzglednic_alternatywna_nazwe}} - czy ma uwzględniać nazwę przestrzeni nazw domyślną szablonu, dostępne wartości: {{Code|false}}, w której nazwa domyślna nie jest uwzględniana wtedy, oraz {{Code|nil}} i {{Code|true}}, które oznaczają to samo, w tym jeżeli ona jest uwzględniana, wtedy jest brany parametr pierwszy dziecka, który musi istnieć przy takiej wartości tego parametru, tzn. {{Code|{{m|Pudełko|Nazwa przestrzeni nazw dyskusji|Szablon}}}} - ta nazwa domyślna zostanie przekształcona na dyskusji, a jeżeli ona by była dyskusji, to nie byłoby żadnego przekształcenia, a nazwa uzyskana nazwy przestrzeni nazw z parametrów przestrzennych jest w takim przypadku błędna, to w takim razie brany jest ten parametr, a jeżeli nazwa domyślna jest błędna, czyli {{Code|{{m|Pudełko|Nazwa przestrzeni nazw dyskusji|Moja przestrzeń}}}}, wtedy funkcja zwraca stan błędu {{Code|(błąd)}}. * {{Code|i}} - numer zmiennej nazwy przestrzeni nazw. Funkcja wykorzystuje {{Code|{{sr|#p.Nazwa_przestrzeni_nazw(frame,...)|p=Pudełko/Pomocne}}}} do wyznaczania ogólnego nazwy przestrzeni nazw dla pozycji bazowej i numerkowej, tzn. dla pozycji: jeden, dwa, trzy,..., itd, i ich ogólnej. Parametry ramki tablicy transportu dziecka: * {{Code|nazwa przestrzeni nazw}}, {{Code|nazwa przestrzeni nazw 1}}, {{Code|nazwa przestrzeni nazw 2}}, {{Code|nazwa przestrzeni nazw 3}},..., {{Code|nazwa przestrzeni nazw i}} - nazwy przestrzeni nazw dla pozycji bazowej, numerkowej i ogólnej, * {{Code|typ jednostki}}, {{Code|typ jednostki 1}}, {{Code|typ jednostki 2}}, {{Code|typ jednostki 3}},..., {{Code|typ jednostki i}} - typy jednostek, którym odpowiadają pewne przestrzenie przedmiotowe, dla pozycji bazowej, numerkowej i ogólnej, ** {{Code|dyskusja typu jednostki}}, {{Code|dyskusja typu jednostki 1}}, {{Code|dyskusja typ jednostki 2}}, {{Code|dyskusja typ jednostki 3}},..., {{Code|dyskusja typ jednostki i}} - czy dany typ jednostki ma przedstawiać, jeśli niepusta, przestrzeń dyskusji dla pozycji bazowej, numerkowej i ogólnej, * {{Code|numer jednostki}} - jak parametr {{Code|i}} nie został ustawiony, to wtedy liczy się ta zmienna. Parametr ramki tablicy transportu rodzica szablonu: * {{Code|nazwa przestrzeni nazw}}, {{Code|nazwa przestrzeni nazw 1}}, {{Code|nazwa przestrzeni nazw 2}}, {{Code|nazwa przestrzeni nazw 3}},..., {{Code|nazwa przestrzeni nazw i}} - nazwy przestrzeni nazw dla pozycji bazowej oraz zwykłej i ogólnej numerkowej, * {{Code|typ jednostki}}, {{Code|typ jednostki 1}}, {{Code|typ jednostki 2}}, {{Code|typ jednostki 3}},..., {{Code|typ jednostki i}} - typy jednostek, którym odpowiadają pewne przestrzenie przedmiotowe, dla pozycji bazowej, numerkowej i ogólnej, ** {{Code|dyskusja typu jednostki}}, {{Code|dyskusja typu jednostki 1}}, {{Code|dyskusja typ jednostki 2}}, {{Code|dyskusja typ jednostki 3}},..., {{Code|dyskusja typ jednostki i}} - czy dany typ jednostki ma przedstawiać, jeśli niepusta, przestrzeń dyskusji dla pozycji bazowej, numerkowej i ogólnej. Przykłady: <syntaxhighlight lang="mediawiki"> {{Nazwa szablonu|nazwa przestrzeni nazw=Wikibooks|nazwa przestrzeni nazw 2=Szablon|nazwa przestrzeni nazw i=Moduł}} </syntaxhighlight> W dziecku powiedzmy jest wywołanie, i szukamy nazwy przestrzeni nazw o numerze dwa, która nie została podana, ale istnieje za to jej wersji ogólna {{Code|nazwa przestrzeni nazw i}} i domyślna {{Code|nazwa przestrzeni nazw}}: <syntaxhighlight lang="mediawiki"> {{#invoke:Pudełko|Nazwa przestrzeni nazw dyskusji|numer jednostki=1}} </syntaxhighlight> Na podstawie powyższego przykładu otrzymamy wynik o schemacie, nie wyniku, bo tam nie ma zmiennej {{Code|nazwa przestrzeni nazw 1}}, ale jest {{Code|nazwa przestrzeni nazw i}}: <syntaxhighlight lang="mediawiki"> <!-- Ale nie "nazwa przestrzeni nazw", bo jej nie ma, ale za to istnieje "nazwa przestrzeni nazw i"; --> <!-- nazwa przestrzeni nazw 2=nazwa przestrzeni nazw i=Moduł; --> <!-- Czyli wynik: --> Dyskusja modułu <!-- Widzimy, że wygenerowała się nazwa przestrzeni nazw, którą jest przestrzeń dyskusji przestrzeni programowej przestrzeni przedmiotowej "Moduł", którą również jest "Szablon" jego przestrzeni dyskusji "Dyskusja szablonu", a dla ich przestrzeni przedmiotowej, zamiast dyskusji, to przekształca się na dyskusji jej odpowiadającą; --> </syntaxhighlight> Nie jest brana w tym powyższym przykładzie zmienna {{Code|nazwa przestrzeni nazw}}, bo jej nie ma, ale za to jest {{Code|nazwa przestrzeni nazw i}}, bo ona występuje jako parametr domyślny ogólny dla parametrów numerkowych. Przykłady w wikikodzie: * {{Code|{{m|Pudełko|Nazwa przestrzeni nazw dyskusji|numer jednostki{{=}}2}}}} → {{Tt|{{#invoke:Pudełko|Nazwa przestrzeni nazw dyskusji|numer jednostki=2}}}} * {{Code|{{m|Pudełko|Nazwa przestrzeni nazw dyskusji|Szablon|nazwa przestrzeni nazw i{{=}}Moja przestrzeń|numer jednostki{{=}}2}}}} → {{Tt|{{#invoke:Pudełko|Nazwa przestrzeni nazw dyskusji|Szablon|nazwa przestrzeni nazw i=Moja przestrzeń|numer jednostki=2}}}} * {{Code|{{m|Pudełko|Nazwa przestrzeni nazw dyskusji|nazwa przestrzeni nazw 2{{=}}Szablon|numer jednostki{{=}}2}}}} → {{Tt|{{#invoke:Pudełko|Nazwa przestrzeni nazw dyskusji|nazwa przestrzeni nazw 2=Szablon|numer jednostki=2}}}} * {{Code|{{m|Pudełko|Nazwa przestrzeni nazw dyskusji|nazwa przestrzeni nazw 2{{=}}Szablon|numer jednostki{{=}}2}}}} → {{Tt|{{#invoke:Pudełko|Nazwa przestrzeni nazw dyskusji|nazwa przestrzeni nazw i=Szablon|numer jednostki=2}}}} * {{Code|{{m|Pudełko|Nazwa przestrzeni nazw dyskusji|nazwa przestrzeni nazw{{=}}Szablon|numer jednostki{{=}}2}}}} → {{Tt|{{#invoke:Pudełko|Nazwa przestrzeni nazw dyskusji|nazwa przestrzeni nazw=Szablon|numer jednostki=2}}}} Powyżej dla przykładu podano parametry nie w rodzicu w szablonie, tylko w dziecku, jeśli chodzi o parametry nazw przestrzeni nazw, ale ich się za to nie powinno podawać w tych ramach, tylko w szablonach, w których wywoływane są te ramki pudełek {{Code|{{m|Pudełko}}}}, ale tak tutaj tak zrobiono by było najłatwiej sprawdzić działanie tego typu funkcji. Analogicznie możemy podawać parametry typu jednostki, np.: wywołaniu modułowym {{Code|{{m|Pudełko|Nazwa przestrzeni nazw dyskusji|typ jednostki 2{{=}}strona szablonu|numer jednostki{{=}}2}}}}, ale o tym więcej w rozdziałach {{Code|{{sr|# p["Typ jednostki"](frame,i)|p=Pudełko}}}}, {{Code|{{sr|#p["Typ jednostki 2"](frame,i)|p=Pudełko}}}}, {{Code|{{sr|#p["Typ jednostki 3"](frame,i)|p=Pudełko}}}} itp. w „{{sr|#Funkcje typu jednostki|p=Pudełko}}”, ale wtedy nazwa przestrzeni nazw reprezentowana przez {{Parametr|typ jednostki 2|strona szablonu}}, jest zamieniana na nazwę przestrzeni nazw dyskusji. Parametr dyskusji typu jednostki bazowy lub dla danego numerka ogólny, czy szczegółowy, nie gra roli. Również parametry typu jednostki nie powinno się podawać w dziecku w ramce, tylko w rodzicu w szablonie jako parametry, w którym ta ramka jest wywoływana, ale tutaj podano jedynie dla przykładu, jak najłatwiej sprawdzić działanie tych parametrów tej funkcji. Najpierw w funkcji nagłówku brane są parametry nazw przestrzeni nazw, a jeżeli ich nie ma, to parametry typu jednostki, a jeżeli nie ma, to generowane są nazwy na podstawie aktualnego modułu. == Funkcje nazw przestrzeni nazw drugiej wersji == === {{Code|p["Nazwa przestrzeni nazw 2"](frame,...)}} === Funkcja pisze nazwę przestrzeni nazw, niezależnie, czy to jest przedmiotowa, czy dyskusji, według podanej w zmiennej {{Code|nazwa przestrzeni nazw}} dla pozycja bazowej w podanych parametrach szablonu rodzicu ramki dziecka, lub dla innej pozycji należy parametr podawaćw formie {{Code|nazwa przestrzeni nazw 1}}, {{Code|nazwa przestrzeni nazw 2}}, {{Code|nazwa przestrzeni nazw 3}},..., lub te parametry można podać w postaci ogólnej {{Code|nazwa przestrzeni nazw i}}. Parametry podaje się w parametrach rodzica wywołania tej funkcji {{Code|{{m|Pudełko|Nazwa przestrzeni nazw 2}}}} (ale ich nie trzeba podawać w dziecku, ale można) i w parametrach dziecka, jeśli chodzi o zmienną {{Code|numer jednostki}}, czyli np.: {{Code|{{m|Pudełko|Nazwa przestrzeni nazw 2|numer jednostki{{=}}<jakaś liczba całkowita dodatnia>}}}}. Te parametry przestrzenne zamiast w rodzicu w szablonie można podać w ramce dziecka, wtedy parametry dziecka mają pierwszeństwo. Przestrzeń nazw z parametrów nazw przestrzennych może odpowiadać wartości przestrzeni głównej, to wtedy odpowiednia przestrzeń nazw z parametru nazwy jednostki się liczy w tej funkcji, wtedy jest liczona nazwa przestrzeni nazw z tego parametru. Definicja skrótowa funkcji: <syntaxhighlight lang="lua"> p["Nazwa przestrzeni nazw 2"]=function(frame,czy_uwzglednic_alternatywna_nazwe,i)...end; </syntaxhighlight> Wtedy ciało funkcji tej, czyli jego definicja w środku, jest: <syntaxhighlight lang="lua"> local pudelko_pomocne_modul=require("Module:Pudełko/Pomocne"); -- Liczy nazwę przestrzeni nazw, jeżeli z parametrów przestrzennych przestrzeń wskazuje na główną, to wtedy jest liczona przestrzeń nazw z nazwy jednostki; return pudelko_pomocne_modul.Nazwa_przestrzeni_nazw_2(frame,czy_uwzglednic_alternatywna_nazwe,i) </syntaxhighlight> Parametry funkcji: * {{Code|frame}} - tablica ramki tablicy transportu, * {{Code|czy_uwzglednic_alternatywna_nazwe}} - czy ma uwzględniać nazwę przestrzeni nazw domyślną szablonu, dostępne wartości: {{Code|false}}, w której nazwa domyślna nie jest uwzględniana wtedy, oraz {{Code|nil}} i {{Code|true}}, które oznaczają to samo, w tym jeżeli ona jest uwzględniana, wtedy jest brany parametr pierwszy dziecka, który musi istnieć przy takiej wartości tego parametru, tzn. {{Code|{{m|Pudełko|Nazwa przestrzeni nazw 2|Szablon}}}}, a nazwa uzyskana nazwy przestrzeni nazw jest w takim przypadku błędna, a jeżeli nazwa domyślna jest błędna, czyli {{Code|{{m|Pudełko|Nazwa przestrzeni nazw 2|Moja przestrzeń}}}}, wtedy funkcja zwraca stan błędu {{Code|(błąd)}}. * {{Code|i}} - numer zmiennej nazwy przestrzeni nazw. Funkcja wykorzystuje {{Code|{{sr|#p.Nazwa_przestrzeni_nazw_2(frame,...)|p=Pudełko/Pomocne}}}} do wyznaczania ogólnego nazwy przestrzeni nazw dla pozycji bazowej i numerkowej, tzn. dla pozycji: jeden, dwa, trzy,..., itd, i ich ogólnej. Parametry ramki tablicy transportu dziecka: * {{Code|nazwa przestrzeni nazw}}, {{Code|nazwa przestrzeni nazw 1}}, {{Code|nazwa przestrzeni nazw 2}}, {{Code|nazwa przestrzeni nazw 3}},..., {{Code|nazwa przestrzeni nazw i}} - nazwy przestrzeni nazw dla pozycji bazowej, numerkowej i ogólnej, * {{Code|typ jednostki}}, {{Code|typ jednostki 1}}, {{Code|typ jednostki 2}}, {{Code|typ jednostki 3}},..., {{Code|typ jednostki i}} - typy jednostek, którym odpowiadają pewne przestrzenie przedmiotowe, dla pozycji bazowej, numerkowej i ogólnej, ** {{Code|dyskusja typu jednostki}}, {{Code|dyskusja typu jednostki 1}}, {{Code|dyskusja typ jednostki 2}}, {{Code|dyskusja typ jednostki 3}},..., {{Code|dyskusja typ jednostki i}} - czy dany typ jednostki ma przedstawiać, jeśli niepusta, przestrzeń dyskusji dla pozycji bazowej, numerkowej i ogólnej, * {{Code|numer jednostki}} - jak parametr {{Code|i}} nie został ustawiony, to wtedy liczy się ta zmienna. Parametr ramki tablicy transportu rodzica szablonu: * {{Code|nazwa przestrzeni nazw}}, {{Code|nazwa przestrzeni nazw 1}}, {{Code|nazwa przestrzeni nazw 2}}, {{Code|nazwa przestrzeni nazw 3}},..., {{Code|nazwa przestrzeni nazw i}} - nazwy przestrzeni nazw dla pozycji bazowej oraz zwykłej i ogólnej numerkowej, * {{Code|typ jednostki}}, {{Code|typ jednostki 1}}, {{Code|typ jednostki 2}}, {{Code|typ jednostki 3}},..., {{Code|typ jednostki i}} - typy jednostek, którym odpowiadają pewne przestrzenie przedmiotowe, dla pozycji bazowej, numerkowej i ogólnej, ** {{Code|dyskusja typu jednostki}}, {{Code|dyskusja typu jednostki 1}}, {{Code|dyskusja typ jednostki 2}}, {{Code|dyskusja typ jednostki 3}},..., {{Code|dyskusja typ jednostki i}} - czy dany typ jednostki ma przedstawiać, jeśli niepusta, przestrzeń dyskusji dla pozycji bazowej, numerkowej i ogólnej. Przykłady: <syntaxhighlight lang="mediawiki"> {{Nazwa szablonu|nazwa przestrzeni nazw=Wikibooks|nazwa przestrzeni nazw 1=Szablon|nazwa przestrzeni nazw i=|nazwa jednostki 2=Wikibooks:Strona}} </syntaxhighlight> W dziecku powiedzmy jest wywołanie, i szukamy nazwy przestrzeni nazw o numerze dwa, która została podana, ale istnieje za to jej wersji ogólna {{Code|nazwa przestrzeni nazw i}} i domyślna {{Code|nazwa przestrzeni nazw}}, ale wtedy dla tego numerkowego liczy się to ogólne z {{Code| i}}, a ponieważ ta nazwa jest pusta, więc będziemy liczyli nazwę przestrzeni nazw z {{Code|nazwa jednostki 2}}: <syntaxhighlight lang="mediawiki"> {{#invoke:Pudełko|Nazwa przestrzeni nazw 2|numer jednostki=2}} </syntaxhighlight> Na podstawie powyższego przykładu otrzymamy wynik o schemacie, nie wyniku, bo tam nie ma zmiennej {{Code|nazwa przestrzeni nazw 1}}, ale jest {{Code|nazwa przestrzeni nazw i}}: <syntaxhighlight lang="mediawiki"> <!-- Ale nie "nazwa przestrzeni nazw 2", bo jej nie ma, ale za to istnieje "nazwa przestrzeni nazw i"; --> <!-- nazwa przestrzeni nazw 2=nazwa przestrzeni nazw i="", a nazwa jednostki 2="Wikibooks:Strona"; --> <!-- Czyli wynik: --> Wikibooks <!-- Widzimy, że wygenerowała się nazwa przestrzeni nazw, którą jest przestrzeń nieprogramowa, ale projektu, wychodząca z nazwy jednostek w tym przypadku z "nazwa jednostki 2"; --> </syntaxhighlight> Nie jest brana w tym powyższym przykładzie zmienna {{Code|nazwa przestrzeni nazw}}, bo jej nie ma, ale za to jest {{Code|nazwa przestrzeni nazw i}}, bo ona występuje jako parametr domyślny ogólny dla parametrów numerkowych. Tytaj jest używwana jest zmienna {{Code|nazwa jednostki 2}} do wygenerowania ostatecznego wyniki,bo jak mozna zauważyć, parametry przestrzenne wskazują na przestrzeń główną, a nazwy jednostek już nie. Przykłady w wikikodzie: * {{Code|{{m|Pudełko|Nazwa przestrzeni nazw 2|numer jednostki{{=}}2}}}} → {{Tt|{{#invoke:Pudełko|Nazwa przestrzeni nazw 2|numer jednostki=2}}}} * {{Code|{{m|Pudełko|Nazwa przestrzeni nazw 2|Szablon|nazwa przestrzeni nazw i{{=}}Moja przestrzeń|numer jednostki{{=}}2}}}} → {{Tt|{{#invoke:Pudełko|Nazwa przestrzeni nazw 2|Szablon|nazwa przestrzeni nazw i=Moja przestrzeń|numer jednostki=2}}}} * {{Code|{{m|Pudełko|Nazwa przestrzeni nazw 2|nazwa przestrzeni nazw 2{{=}}|nazwa jednostki 2{{=}}Szablon:Strona|numer jednostki{{=}}2}}}} → {{Tt|{{#invoke:Pudełko|Nazwa przestrzeni nazw 2|nazwa przestrzeni nazw 2=|nazwa jednostki 2=Szablon:Strona|numer jednostki=2}}}} * {{Code|{{m|Pudełko|Nazwa przestrzeni nazw 2|nazwa przestrzeni nazw i{{=}}|nazwa jednostki 2{{=}}Szablon:Strona|numer jednostki{{=}}2}}}} → {{Tt|{{#invoke:Pudełko|Nazwa przestrzeni nazw 2|nazwa przestrzeni nazw i=|nazwa jednostki 2=Szablon:Strona|numer jednostki=2}}}} * {{Code|{{m|Pudełko|Nazwa przestrzeni nazw 2|Szablon|nazwa przestrzeni nazw{{=}}|nazwa jednostki 2{{=}}Wikibooks:Strona|numer jednostki{{=}}2}}}} → {{Tt|{{#invoke:Pudełko|Nazwa przestrzeni nazw 2|Szablon|nazwa przestrzeni nazw=|nazwa jednostki 2=Wikibooks:Strona|numer jednostki=2}}}} Powyżej dla przykładu podano parametry nie w rodzicu w szablonie, tylko w dziecku, jeśli chodzi o parametry nazw przestrzeni nazw i nazw jednostek, ale ich się za to nie powinno podawać w tych ramach, tylko w szablonach, w których wywoływane są te ramki pudełek {{Code|{{m|Pudełko}}}}, ale tak tutaj tak zrobiono by było najłatwiej sprawdzić działanie tego typu funkcji. Analogicznie możemy podawać parametry typu jednostki, np.: wywołaniu modułowym {{Code|{{m|Pudełko|Nazwa przestrzeni nazw 2|typ jednostki 2{{=}}strona szablonu|numer jednostki{{=}}2}}}}, ale o tym więcej w rozdziałach {{Code|{{sr|# p["Typ jednostki"](frame,i)|p=Pudełko}}}}, {{Code|{{sr|#p["Typ jednostki 2"](frame,i)|p=Pudełko}}}}, {{Code|{{sr|#p["Typ jednostki 3"](frame,i)|p=Pudełko}}}} itp. w „{{sr|#Funkcje typu jednostki|p=Pudełko}}”, on definiuje przestrzenie przedmiotowe, ale można użyć parametru dyskusji typu jednostki z wartością niepustą, wtedy wyświetli się nazwa przestrzeni nazw dyskusji. Jeżeli typ jednostki wskazuje na przestrzeń naazw główną, wtedy się liczą parametry nazw jednostek. Również parametry typu jednostki nie powinno się podawać w dziecku w ramce, tylko w rodzicu w szablonie jako parametry, w którym ta ramka jest wywoływana, ale tutaj podano jedynie dla przykładu, jak najłatwiej sprawdzić działanie tych parametrów tej funkcji. Najpierw w funkcji nagłówku brane są parametry nazw przestrzeni nazw, a jeżeli ich nie ma, to parametry typu jednostki, a jeżeli nie ma, to generowane są nazwy na podstawie aktualnego modułu. Podobnie jest z parametrami nazw jednostek. === {{Code|p["Nazwa przedmiotowej przestrzeni nazw 2"](frame,...)}} === === {{Code|p["Nazwa przestrzeni nazw dyskusji 2"](frame,...)}} === == Funkcje pełnych nazw jednostki == === {{Code|p["Pełna nazwa dyskusji jednostki"](frame,i)}} === === {{Code|p["Pełna nazwa przedmiotowa jednostki"](frame,i)}} === === {{Code|p["Pełna nazwa jednostki"](frame,i)}} === == Funkcje pełnych nazw jednostki drugiej wersji == === {{Code|p["Pełna nazwa dyskusji jednostki 2"](frame,i)}} === === {{Code|p["Pełna nazwa przedmiotowa jednostki 2"](frame,i)}} === === {{Code|p["Pełna nazwa jednostki 2"](frame,i)}} === == Funkcje pełnych nazw jednostki trzeciej wersji == === {{Code|p["Pełna nazwa dyskusji jednostki 3"](frame,i)}} === === {{Code|p["Pełna nazwa przedmiotowa jednostki 3"](frame,i)}} === === {{Code|p["Pełna nazwa jednostki 3"](frame,i)}} === == Funkcje nazw jednostki == === {{Code|p["Nazwa jednostki"](frame,i)}} === == Funkcje nazw jednostki drugiej wersji == === {{Code|p["Nazwa jednostki 2"](frame,i)}} === === {{Code|p["Nazwa przedmiotowa jednostki 2"](frame,i)}} === === {{Code|p["Nazwa dyskusji jednostki 2"](frame,i)}} === == Funkcje nazw przestrzeni nazw trzeciej wersji == === {{Code|p["Nazwa przestrzeni nazw 3"](frame,i)}} === === {{Code|p["Nazwa przedmiotowej przestrzeni nazw 3"](frame,i)}} === === {{Code|p["Nazwa przestrzeni nazw dyskusji 3"](frame,i)}} === == Funkcje nazw jednostki trzeciej wersji == === {{Code|p["Nazwa jednostki 3"](frame,i)}} === === {{Code|p["Nazwa przedmiotowa jednostki 3"](frame,i)}} === === {{Code|p["Nazwa dyskusji jednostki 3"](frame,i)}} === == Funkcje typu jednostki == === {{Code|p["Typ jednostki"](frame,i)}} === === {{Code|p["Typ jednostki 2"](frame,i)}} === === {{Code|p["Typ jednostki 3"](frame,i)}} === === Funkcje typu jednostki przedmiotowe === ==== {{Code|p["Przedmiotowy typ jednostki"](frame,i)}} ==== ==== {{Code|p["Przedmiotowy typ jednostki 2"](frame,i)}} ==== ==== {{Code|p["Przedmiotowy typ jednostki 3"](frame,i)}} ==== === Fukcje typu jednostki dyskusji === ==== {{Code|p["Dyskusyjny typ jednostki"](frame,i)}} ==== ==== {{Code|p["Dyskusyjny typ jednostki 2"](frame,i)}}} ==== ==== {{Code|p["Dyskusyjny typ jednostki 3"](frame,i)}} ==== == Funkcje chech pudełka == === {{Code|p["Cecha pudełka"](frame)}} === === {{Code|p["Przedmiotowa cecha pudełka"](frame)}} === === {{Code|p["Dyskusyjna cecha pudełka"](frame)}} === == Fukcje ogólnego pudełka == === {{Code|p["Ogólne pudełko"](frame)}} === == Funkcje ogólne == === {{Code|p["Tekst pudełka"](frame)}} === == Funkcje błędów pudełka == === {{Code|p["Błędy pudełka"](frame)}} === === {{Code|p["Przedmiotowe błędy pudełka"](frame)}} === === {{Code|p["Dyskusyjne błędy pudełka"](frame)}} === == Funkcje nazw stron == === {{Code|p["Nazwa strony głównej projektu"](frame,i)}} === === {{Code|p["Nazwa strony głównej dla dzieci projektu"](frame,i)}} === == Funkcje kodów == === {{Code|p["Kod języka"](frame,i)}} === === {{Code|p["Kod projektu"](frame,i)}} === === {{Code|p["Klucz projektu"](frame,i)}} === == Funkcje wiki == === {{Code|p["Inny niż język bieżący wiki"](frame)}} === === {{Code|p["Inne niż lokalne wiki"](frame)}} === === {{Code|p["Inne niż bieżące wiki"](frame)}} === == Funkcje typów parametrów, czy podane je == === {{Code|p["Podano parametry nienazwane"](frame)}} === === {{Code|p["Podano parametry numerowane"](frame)}} === === {{Code|p["Podano parametry nazwane"](frame)}} === == Funkcje kodów tego projektu == === {{Code|p["Kod projektu tego projektu"](frame)}} === === {{Code|p["Kod języka tego projektu"](frame)}} === === {{Code|p["Klucz projektu tego projektu"](frame)}} === == Funkcje stron == === {{Code|p["Strona główna tego projektu"](frame)}} === === {{Code|p["Strona główna dla dzieci tego projektu"](frame)}} === == Funkcje nazw stron drugiej wersji == === {{Code|p["Nazwa strony głównej dla dzieci projektu 2"](frame)}} === === {{Code| p["Nazwa strony głównej projektu 2"](frame)}} === {{BrClear}} <noinclude><!-- -->{{ProstaStronaKoniec}}<!-- -->{{Kategoria|Opisy funkcji, w Lua w Scribunto, w modułach}}<!-- --></noinclude> 8j3ri5eir59pawzfy95tf01fjpjrae3 540373 540372 2026-04-23T12:51:38Z Persino 2851 /* {{Code|p["Nazwa przestrzeni nazw 2"](frame,...)}} */ 540373 wikitext text/x-wiki <noinclude>{{ProstaStronaStart | nagłówek = {{Podrozdział|{{ld2|Pudełko}}|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 pudelko_modul=require("Module:Pudełko"); </syntaxhighlight> dzięki, któremu można wypisywać funkcje należącego do niego. Posługuje się na parametrach pudełkowych {{Parametr|nazwa przestrzeni nazw}} (czy też bez numerka {{Parametr|nazwa przestrzeni nazw i}} dla tego numerowanego) lub te z numerkiem po jednej spacji w nich (ale nie dla tego z końcówką {{Code| i}}) mogą zostać użyte jako parametry szablonu. Moduł {{Code|{{ld2|Pudełko}}}} przedstawia funkcje nazw w oparciu o funkcje nazw {{Code|{{ld2|Nazwy}}}}, generuje on nazwy za pomocą parametrów pudełkowych podanych poniżej. Parametr {{Parametr|nazwa jednostki}} (lub parametr {{Parametr|cel}} dla numerka tego pierwszego, tego alternatywnego), lub te z numerkiem po jednej spacji w nazwie parametru, albo numerowane numerkami {{Code|1}}, {{Code|2}},..., mogą zostać użyte jako parametry szablonu. Parametry określające rodzaj jednostki {{Parametr|typ jednostki}} z {{Parametr|dyskusja typu jednostki}}, itp. w wersjach z numerkiem po jednej spacji w nich mogą zostać użyte jako parametry szablonu. A te tymi numerowanymi liczbami naturalnymi {{Tt|nazwy jednostki}} od jedynki wzwyż poprzez szablon, w którym są one użyte, one też mogą być użyte z dwukropkiem, te numerowane, na samym początku nazwy, wtedy one są traktowane jako pełne nazwy strony, i wtedy one nie zostaną z interpretowane, że do nich trzeba użyć parametr odpowiedni z nazwą przetrzeni nazw z tego numerowanego, czy ogólny, aby utworzyć znów inną pełną nazwę strony dla tego numerka. Zestawienie: * {{Code|nazwa przestrzeni nazw}} i {{Code|nazwa przestrzeni nazw i}} (ogólna nazwa przestrzeni nazw dla wszystkich numerków, i tych numerowanych jednostek) - i to pierwsze z numerkiem, tzn. {{Code|nazwa przestrzeni nazw 1}}, {{Code|nazwa przestrzeni nazw 2}}, ..., * {{Code|nazwa jednostki}} - i te z numerkiem: {{Code|nazwa jednostki 1}}, {{Code|nazwa jednostki 2}}, ..., lub gdy jest zamiast tego parametrem numerowany, {{Code|1}}, {{Code|2}},..., który dla tego pierwszego może być uznany jako: {{Code|cel}} {{=}} {{Code|1}}, * {{Code|typ jednostki}} (parametr bazowy) i {{Code|typ jednostki i}} (parametr domyślny numerkowy) - i te z numerkiem: {{Code|typ jednostki 1}}, {{Code|typ jednostki 2}}, ..., tzn. gdy chcemy określić z jakim typem jednostki mamy do czynienia w zależności do jakiej przestrzeni nazw należy, a w danej, czy jest on np. programowy, czy tylko jest opisem, jak to bywa w szablonach {{Np|Template|link=tak}}, podobnie jest w przypadku {{Np|Module|link=tak}}, czy jak jest w innych przestrzeniach nazw, ** {{Code|dyskusja typu jednostki}} (parametr bazowy) i {{Code|dyskusja typu jednostki i}} (parametr domyślny numerkowy) - i te z numerkiem: {{Code|dyskusja typu jednostki 1}}, {{Code|dyskusja typu jednostki 2}}, ..., gdy chcemy określić wartością niepustą,że chodzi tutaj o typ jednostki. == {{Code|p.CzyNiepoprawnaNazwa(nazwa_jednostki)}} == Funkcja sprawdzajaca, czy jest poprawnie podana nazwa jednostki, czy ma poprawną nazwę. Znakami tymi, z których nie powinna składać się nazwa jest {{Code|<nowiki>{}<>|[]#\n</nowiki>}} i dodatkowo znak {{Code|&#127;}} (kod {{Code|{{Nowiki|&#127;}}}}). Też nie może składać się z trzech znaków tyldy, tzn. {{Code|<nowiki>~~~</nowiki>}}. Również w swojej budowie nie może składać się ze kodów {{Strong|HTML}} literowych o wzorze {{Code|{{Nowiki|&(%a+);}}}}. Natomiast może składać się z {{Code|{{Nowiki|&#(%d+);}}}} i {{Code|{{Nowiki|&#x(%x+);}}}}, ale w pierw te kody muszą być zamienione na normalne znaki. Skrótowa definicja funkcji: <syntaxhighlight lang="lua"> function p.CzyNiepoprawnaNazwa(nazwa_jednostki)...end; </syntaxhighlight> Wtedy ciało funkcji tej, czyli jego definicja w środku, jest: <syntaxhighlight lang="lua"> -- Moduł: "Moduł:Html/dane", służy do ładowania znaku o kodzie HTML "&#127;"; local html_dane_modul=mw.loadData("Module:Html/dane"); return mw.ustring.match(nazwa_jednostki,"[{}<>|%[%]#\n"..html_dane_modul.znak_127.."]+") or mw.ustring.match(nazwa_jednostki,"~~~") or mw.ustring.match(nazwa_jednostki,"&(%a+);"); </syntaxhighlight> Parametry: * {{Code|nazwa_jednostki}} - nazwa jednostki do sprawdzenia. Przykłady: <syntaxhighlight lang="lua"> local pudelko_modul=require("Module:Pudełko"); -- Podana przykładowa niepoprawna nazwa jedostki local nazwa_jednostki="Nazwa pliku [[Nazwa linku w pliku]]"; -- Fukcja zwróci wartość: local czy_poprawna_nazwa=true; local czy_poprawna_nazwa=pudelko_modul.CzyNiepoprawnaNazwa(nazwa_jednostki); </syntaxhighlight> == Funkcje nazw przestrzeni nazw == === {{Code|p["Nazwa przestrzeni nazw"](frame,...)}} === Funkcja pisze nazwę przestrzeni nazw, niezależnie, czy to jest przedmiotowa, czy dyskusji, według podanej w zmiennej {{Code|nazwa przestrzeni nazw}} dla pozycja bazowej w podanych parametrach szablonu rodzicu ramki dziecka, lub dla innej pozycji należy parametr podawaćw formie {{Code|nazwa przestrzeni nazw 1}}, {{Code|nazwa przestrzeni nazw 2}}, {{Code|nazwa przestrzeni nazw 3}},..., lub te parametry można podać w postaci ogólnej {{Code|nazwa przestrzeni nazw i}}. Parametry podaje się w parametrach rodzica wywołania tej funkcji {{Code|{{m|Pudełko|Nazwa przestrzeni nazw}}}} (ale ich nie trzeba podawać w dziecku, ale można) i w parametrach dziecka, jeśli chodzi o zmienną {{Code|numer jednostki}}, czyli np.: {{Code|{{m|Pudełko|Nazwa przestrzeni nazw|numer jednostki{{=}}<jakaś liczba całkowita dodatnia>}}}}. Te parametry przestrzenne zamiast w rodzicu w szablonie można podać w ramce dziecka, wtedy parametry dziecka mają pierwszeństwo. Przestrzeń nazw z parametrów nazw przestrzennych może odpowiadać wartości przestrzeni głównej, to wtedy odpowiednia przestrzeń nazw z parametru nazwy jednostki się nie liczy w tej funkcji, aby się liczyła należy użyć funkcji {{Code|{{sr|#p["Nazwa przestrzeni nazw 2"](frame,...)|p=Pudełko}}}}. Definicja skrótowa funkcji: <syntaxhighlight lang="lua"> p["Nazwa przestrzeni nazw"]=function(frame,czy_uwzglednic_alternatywna_nazwe,i)...end; </syntaxhighlight> Wtedy ciało funkcji tej, czyli jego definicja w środku, jest: <syntaxhighlight lang="lua"> -- Jest liczony numer parametru nazwy przestrzeni nazw, domyslnie chodzi tu o numer bazowy parametrów przestrzennych; local numer_jednostki=i or frame.args["numer jednostki"]; local liczba_numer_jednostki=((numer_jednostki)and(tonumber(numer_jednostki))or 0); local pudelko_pomocne_modul=require("Module:Pudełko/Pomocne"); -- Liczy nazwę przestrzeni nazw na podstawie podanych parametrów; return pudelko_pomocne_modul.Nazwa_przestrzeni_nazw(frame,0, czy_uwzglednic_alternatywna_nazwe,liczba_numer_jednostki); </syntaxhighlight> Parametry funkcji: * {{Code|frame}} - tablica ramki tablicy transportu, * {{Code|czy_uwzglednic_alternatywna_nazwe}} - czy ma uwzględniać nazwę przestrzeni nazw domyślną szablonu, dostępne wartości: {{Code|false}}, w której nazwa domyślna nie jest uwzględniana wtedy, oraz {{Code|nil}} i {{Code|true}}, które oznaczają to samo, w tym jeżeli ona jest uwzględniana, wtedy jest brany parametr pierwszy dziecka, który musi istnieć przy takiej wartości tego parametru, tzn. {{Code|{{m|Pudełko|Nazwa przestrzeni nazw|Szablon}}}}, a nazwa uzyskana nazwy przestrzeni nazw jest w takim przypadku błędna, a jeżeli nazwa domyślna jest błędna, czyli {{Code|{{m|Pudełko|Nazwa przestrzeni nazw|Moja przestrzeń}}}}, wtedy funkcja zwraca stan błędu {{Code|(błąd)}}. * {{Code|i}} - numer zmiennej nazwy przestrzeni nazw. Funkcja wykorzystuje {{Code|{{sr|#p.Nazwa_przestrzeni_nazw(frame,...)|p=Pudełko/Pomocne}}}} do wyznaczania ogólnego nazwy przestrzeni nazw dla pozycji bazowej i numerkowej, tzn. dla pozycji: jeden, dwa, trzy,..., itd, i ich ogólnej. Parametry ramki tablicy transportu dziecka: * {{Code|nazwa przestrzeni nazw}}, {{Code|nazwa przestrzeni nazw 1}}, {{Code|nazwa przestrzeni nazw 2}}, {{Code|nazwa przestrzeni nazw 3}},..., {{Code|nazwa przestrzeni nazw i}} - nazwy przestrzeni nazw dla pozycji bazowej, numerkowej i ogólnej, * {{Code|typ jednostki}}, {{Code|typ jednostki 1}}, {{Code|typ jednostki 2}}, {{Code|typ jednostki 3}},..., {{Code|typ jednostki i}} - typy jednostek, którym odpowiadają pewne przestrzenie przedmiotowe, dla pozycji bazowej, numerkowej i ogólnej, ** {{Code|dyskusja typu jednostki}}, {{Code|dyskusja typu jednostki 1}}, {{Code|dyskusja typ jednostki 2}}, {{Code|dyskusja typ jednostki 3}},..., {{Code|dyskusja typ jednostki i}} - czy dany typ jednostki ma przedstawiać, jeśli niepusta, przestrzeń dyskusji dla pozycji bazowej, numerkowej i ogólnej, * {{Code|numer jednostki}} - jak parametr {{Code|i}} nie został ustawiony, to wtedy liczy się ta zmienna. Parametr ramki tablicy transportu rodzica szablonu: * {{Code|nazwa przestrzeni nazw}}, {{Code|nazwa przestrzeni nazw 1}}, {{Code|nazwa przestrzeni nazw 2}}, {{Code|nazwa przestrzeni nazw 3}},..., {{Code|nazwa przestrzeni nazw i}} - nazwy przestrzeni nazw dla pozycji bazowej oraz zwykłej i ogólnej numerkowej, * {{Code|typ jednostki}}, {{Code|typ jednostki 1}}, {{Code|typ jednostki 2}}, {{Code|typ jednostki 3}},..., {{Code|typ jednostki i}} - typy jednostek, którym odpowiadają pewne przestrzenie przedmiotowe, dla pozycji bazowej, numerkowej i ogólnej, ** {{Code|dyskusja typu jednostki}}, {{Code|dyskusja typu jednostki 1}}, {{Code|dyskusja typ jednostki 2}}, {{Code|dyskusja typ jednostki 3}},..., {{Code|dyskusja typ jednostki i}} - czy dany typ jednostki ma przedstawiać, jeśli niepusta, przestrzeń dyskusji dla pozycji bazowej, numerkowej i ogólnej. Przykłady: <syntaxhighlight lang="mediawiki"> {{Nazwa szablonu|nazwa przestrzeni nazw=Wikibooks|nazwa przestrzeni nazw 2=Szablon|nazwa przestrzeni nazw i=Moduł}} </syntaxhighlight> W dziecku powiedzmy jest wywołanie, i szukamy nazwy przestrzeni nazw o numerze dwa, która nie została podana, ale istnieje za to jej wersji ogólna {{Code|nazwa przestrzeni nazw i}} i domyślna {{Code|nazwa przestrzeni nazw}}: <syntaxhighlight lang="mediawiki"> {{#invoke:Pudełko|Nazwa przestrzeni nazw|numer jednostki=1}} </syntaxhighlight> Na podstawie powyższego przykładu otrzymamy wynik o schemacie, nie wyniku, bo tam nie ma zmiennej {{Code|nazwa przestrzeni nazw 1}}, ale jest {{Code|nazwa przestrzeni nazw i}}: <syntaxhighlight lang="mediawiki"> <!-- Ale nie "nazwa przestrzeni nazw", bo jej nie ma, ale za to istnieje "nazwa przestrzeni nazw i"; --> <!-- nazwa przestrzeni nazw 2=nazwa przestrzeni nazw i=Moduł; --> <!-- Czyli wynik: --> Moduł <!-- Widzimy, że wygenerowała się nazwa przestrzeni nazw, którą jest przestrzeń programowa, którą również jest "Szablon"; --> </syntaxhighlight> Nie jest brana w tym powyższym przykładzie zmienna {{Code|nazwa przestrzeni nazw}}, bo jej nie ma, ale za to jest {{Code|nazwa przestrzeni nazw i}}, bo ona występuje jako parametr domyślny ogólny dla parametrów numerkowych. Przykłady w wikikodzie: * {{Code|{{m|Pudełko|Nazwa przestrzeni nazw|numer jednostki{{=}}2}}}} → {{Tt|{{#invoke:Pudełko|Nazwa przestrzeni nazw|numer jednostki=2}}}} * {{Code|{{m|Pudełko|Nazwa przestrzeni nazw|Szablon|nazwa przestrzeni nazw i{{=}}Moja przestrzeń|numer jednostki{{=}}2}}}} → {{Tt|{{#invoke:Pudełko|Nazwa przestrzeni nazw|Szablon|nazwa przestrzeni nazw i=Moja przestrzeń|numer jednostki=2}}}} * {{Code|{{m|Pudełko|Nazwa przestrzeni nazw|nazwa przestrzeni nazw 2{{=}}Szablon|numer jednostki{{=}}2}}}} → {{Tt|{{#invoke:Pudełko|Nazwa przestrzeni nazw|nazwa przestrzeni nazw 2=Szablon|numer jednostki=2}}}} * {{Code|{{m|Pudełko|Nazwa przestrzeni nazw|nazwa przestrzeni nazw 2{{=}}Szablon|numer jednostki{{=}}2}}}} → {{Tt|{{#invoke:Pudełko|Nazwa przestrzeni nazw|nazwa przestrzeni nazw i=Szablon|numer jednostki=2}}}} * {{Code|{{m|Pudełko|Nazwa przestrzeni nazw|nazwa przestrzeni nazw{{=}}Szablon|numer jednostki{{=}}2}}}} → {{Tt|{{#invoke:Pudełko|Nazwa przestrzeni nazw|nazwa przestrzeni nazw=Szablon|numer jednostki=2}}}} Powyżej dla przykładu podano parametry nie w rodzicu w szablonie, tylko w dziecku, jeśli chodzi o parametry nazw przestrzeni nazw, ale ich się za to nie powinno podawać w tych ramach, tylko w szablonach, w których wywoływane są te ramki pudełek {{Code|{{m|Pudełko}}}}, ale tak tutaj tak zrobiono by było najłatwiej sprawdzić działanie tego typu funkcji. Analogicznie możemy podawać parametry typu jednostki, np.: wywołaniu modułowym {{Code|{{m|Pudełko|Nazwa przestrzeni nazw|typ jednostki 2{{=}}strona szablonu|numer jednostki{{=}}2}}}}, ale o tym więcej w rozdziałach {{Code|{{sr|# p["Typ jednostki"](frame,i)|p=Pudełko}}}}, {{Code|{{sr|#p["Typ jednostki 2"](frame,i)|p=Pudełko}}}}, {{Code|{{sr|#p["Typ jednostki 3"](frame,i)|p=Pudełko}}}} itp. w „{{sr|#Funkcje typu jednostki|p=Pudełko}}”, on definiuje przestrzenie przedmiotowe, ale można użyć parametru dyskusji typu jednostki z wartością niepustą, wtedy wyświetli się nazwa przestrzeni nazw dyskusji. Również parametry typu jednostki nie powinno się podawać w dziecku w ramce, tylko w rodzicu w szablonie jako parametry, w którym ta ramka jest wywoływana, ale tutaj podano jedynie dla przykładu, jak najłatwiej sprawdzić działanie tych parametrów tej funkcji. Najpierw w funkcji nagłówku brane są parametry nazw przestrzeni nazw, a jeżeli ich nie ma, to parametry typu jednostki, a jeżeli nie ma, to generowane są nazwy na podstawie aktualnego modułu. === {{Code|p["Nazwa przedmiotowej przestrzeni nazw"](frame,...)}} === Funkcja pisze przedmiotową nazwę przestrzeni nazw jakikolwiek nazwy przestrzeni nazw (tzn. nazwę przedmiotową nazwy przestrzenie nazw, czyli nie dyskusji, zamieniana jest na nią samą, czyli identyfikator przestrzeni się nie zmienia, a dyskusji, nie przedmiotową, przekształca się na przedmiotową jej odpowiadającą, czyli w tym przypadku identyfikator przestrzeni zmniejsza się o numer mniej), według podanej w zmiennej {{Code|nazwa przestrzeni nazw}} dla pozycja bazowej w podanych parametrach szablonu rodzicu ramki dziecka, lub dla innej pozycji należy parametr podawać w formie {{Code|nazwa przestrzeni nazw 1}}, {{Code|nazwa przestrzeni nazw 2}}, {{Code|nazwa przestrzeni nazw 3}},..., lub te parametry można podać w postaci ogólnej {{Code|nazwa przestrzeni nazw i}}. Parametry podaje się w parametrach rodzica wywołania tej funkcji {{Code|{{m|Pudełko|Nazwa przedmiotowej przestrzeni nazw}}}} (ale ich nie trzeba podawać w dziecku, ale można) i w parametrach dziecka, jeśli chodzi o zmienną {{Code|numer jednostki}}, czyli np.: {{Code|{{m|Pudełko|Nazwa przedmiotowej przestrzeni nazw|numer jednostki{{=}}<jakaś liczba całkowita dodatnia>}}}}. Te parametry przestrzenne zamiast w rodzicu w szablonie można podać w ramce dziecka, wtedy parametry dziecka mają pierwszeństwo. Parametry przestrzenne mogą mogą być podane w postaci przestrzeni przedmiotowej lub dyskusji, ale ta funkcja zawsze ją zamienia na przedmiotową. Przestrzeń nazw z parametrów nazw przestrzennych może odpowiadać wartości przestrzeni głównej, to wtedy odpowiednia przestrzeń nazw z parametru nazwy jednostki się nie liczy w tej funkcji, aby się liczyła należy użyć funkcji {{Code|{{sr|#p["Nazwa przedmiotowej przestrzeni nazw 2"](frame,...)|p=Pudełko}}}}. Definicja skrótowa funkcji: <syntaxhighlight lang="lua"> p["Nazwa przedmiotowej przestrzeni nazw"]=function(frame,czy_uwzglednic_alternatywna_nazwe,i)...end; </syntaxhighlight> Wtedy ciało funkcji tej, czyli jego definicja w środku, jest: <syntaxhighlight lang="lua"> -- Jest liczony numer parametru nazwy przestrzeni nazw, domyslnie chodzi tu o numer bazowy parametrów przestrzennych; local numer_jednostki=i or frame.args["numer jednostki"]; local liczba_numer_jednostki=((numer_jednostki)and(tonumber(numer_jednostki))or 0); local pudelko_pomocne_modul=require("Module:Pudełko/Pomocne"); -- Liczy nazwę przestrzeni nazw przedmiotową na podstawie podanych parametrów; return pudelko_pomocne_modul.Nazwa_przestrzeni_nazw(frame,1, czy_uwzglednic_alternatywna_nazwe,liczba_numer_jednostki); </syntaxhighlight> Parametry funkcji: * {{Code|frame}} - tablica ramki tablicy transportu, * {{Code|czy_uwzglednic_alternatywna_nazwe}} - czy ma uwzględniać nazwę przestrzeni nazw domyślną szablonu, dostępne wartości: {{Code|false}}, w której nazwa domyślna nie jest uwzględniana wtedy, oraz {{Code|nil}} i {{Code|true}}, które oznaczają to samo, w tym jeżeli ona jest uwzględniana, wtedy jest brany parametr pierwszy dziecka, który musi istnieć przy takiej wartości tego parametru, tzn. {{Code|{{m|Pudełko|Nazwa przedmiotowej przestrzeni nazw|Dyskusja szablonu}}}} - ta nazwa domyślna zostanie zamieniona na przedmiotową, a jak ona by była przedmiotowa, to żadnej zamiany by nie było, a nazwa uzyskana z nazwy przestrzeni nazw z parametrów przestrzennych jest w takim przypadku błędna, to w takim razie brany jest ten parametr, a jeżeli ta nazwa domyślna jest błędna, czyli {{Code|{{m|Pudełko|Nazwa przedmiotowej przestrzeni nazw|Moja przestrzeń}}}}, wtedy funkcja zwraca stan błędu {{Code|(błąd)}}. * {{Code|i}} - numer zmiennej nazwy przestrzeni nazw. Funkcja wykorzystuje {{Code|{{sr|#p.Nazwa_przestrzeni_nazw(frame,...)|p=Pudełko/Pomocne}}}} do wyznaczania ogólnego nazwy przestrzeni nazw dla pozycji bazowej i numerkowej, tzn. dla pozycji: jeden, dwa, trzy,..., itd, i ich ogólnej. Parametry ramki tablicy transportu dziecka: * {{Code|nazwa przestrzeni nazw}}, {{Code|nazwa przestrzeni nazw 1}}, {{Code|nazwa przestrzeni nazw 2}}, {{Code|nazwa przestrzeni nazw 3}},..., {{Code|nazwa przestrzeni nazw i}} - nazwy przestrzeni nazw dla pozycji bazowej, numerkowej i ogólnej, * {{Code|typ jednostki}}, {{Code|typ jednostki 1}}, {{Code|typ jednostki 2}}, {{Code|typ jednostki 3}},..., {{Code|typ jednostki i}} - typy jednostek, którym odpowiadają pewne przestrzenie przedmiotowe, dla pozycji bazowej, numerkowej i ogólnej, ** {{Code|dyskusja typu jednostki}}, {{Code|dyskusja typu jednostki 1}}, {{Code|dyskusja typ jednostki 2}}, {{Code|dyskusja typ jednostki 3}},..., {{Code|dyskusja typ jednostki i}} - czy dany typ jednostki ma przedstawiać, jeśli niepusta, przestrzeń dyskusji dla pozycji bazowej, numerkowej i ogólnej, * {{Code|numer jednostki}} - jak parametr {{Code|i}} nie został ustawiony, to wtedy liczy się ta zmienna. Parametr ramki tablicy transportu rodzica szablonu: * {{Code|nazwa przestrzeni nazw}}, {{Code|nazwa przestrzeni nazw 1}}, {{Code|nazwa przestrzeni nazw 2}}, {{Code|nazwa przestrzeni nazw 3}},..., {{Code|nazwa przestrzeni nazw i}} - nazwy przestrzeni nazw dla pozycji bazowej oraz zwykłej i ogólnej numerkowej, * {{Code|typ jednostki}}, {{Code|typ jednostki 1}}, {{Code|typ jednostki 2}}, {{Code|typ jednostki 3}},..., {{Code|typ jednostki i}} - typy jednostek, którym odpowiadają pewne przestrzenie przedmiotowe, dla pozycji bazowej, numerkowej i ogólnej, ** {{Code|dyskusja typu jednostki}}, {{Code|dyskusja typu jednostki 1}}, {{Code|dyskusja typ jednostki 2}}, {{Code|dyskusja typ jednostki 3}},..., {{Code|dyskusja typ jednostki i}} - czy dany typ jednostki ma przedstawiać, jeśli niepusta, przestrzeń dyskusji dla pozycji bazowej, numerkowej i ogólnej. Przykłady: <syntaxhighlight lang="mediawiki"> {{Nazwa szablonu|nazwa przestrzeni nazw=Dyskusja Wikibooks|nazwa przestrzeni nazw 2=Dyskusja szablonu|nazwa przestrzeni nazw i=Dyskusja modułu}} </syntaxhighlight> W dziecku powiedzmy jest wywołanie, i szukamy nazwy przestrzeni nazw o numerze dwa, która nie została podana, ale istnieje za to jej wersji ogólna {{Code|nazwa przestrzeni nazw i}} i domyślna {{Code|nazwa przestrzeni nazw}}: <syntaxhighlight lang="mediawiki"> {{#invoke:Pudełko|Nazwa przedmiotowej przestrzeni nazw|numer jednostki=1}} </syntaxhighlight> Na podstawie powyższego przykładu otrzymamy wynik o schemacie, nie wyniku, bo tam nie ma zmiennej {{Code|nazwa przestrzeni nazw 1}}, ale jest {{Code|nazwa przestrzeni nazw i}}: <syntaxhighlight lang="mediawiki"> <!-- Ale nie "nazwa przestrzeni nazw", bo jej nie ma, ale za to istnieje "nazwa przestrzeni nazw i"; --> <!-- nazwa przestrzeni nazw 2=nazwa przestrzeni nazw i=Dyskusja modułu; --> <!-- Czyli wynik: --> Moduł <!-- Widzimy, że wygenerowała się nazwa przestrzeni nazw, którą jest przestrzeń przedmiotowa programowa przestrzeni dyskusji "Dyskusja modułu", którą również jest "Szablon" jego przestrzeni dyskusji "Dyskusja szablonu", a dla ich przestrzeni przedmiotowej, zamiast dyskusji, to samo przekształca się na to samo; --> </syntaxhighlight> Nie jest brana w tym powyższym przykładzie zmienna {{Code|nazwa przestrzeni nazw}}, bo jej nie ma, ale za to jest {{Code|nazwa przestrzeni nazw i}}, bo ona występuje jako parametr domyślny ogólny dla parametrów numerkowych. Przykłady w wikikodzie: * {{Code|{{m|Pudełko|Nazwa przedmiotowej przestrzeni nazw|numer jednostki{{=}}2}}}} → {{Tt|{{#invoke:Pudełko|Nazwa przedmiotowej przestrzeni nazw|numer jednostki=2}}}} * {{Code|{{m|Pudełko|Nazwa przedmiotowej przestrzeni nazw|Dyskusja szablonu|nazwa przestrzeni nazw i{{=}}Moja przestrzeń|numer jednostki{{=}}2}}}} → {{Tt|{{#invoke:Pudełko|Nazwa przedmiotowej przestrzeni nazw|Dyskusja szablonu|nazwa przestrzeni nazw i=Moja przestrzeń|numer jednostki=2}}}} * {{Code|{{m|Pudełko|Nazwa przedmiotowej przestrzeni nazw|nazwa przestrzeni nazw 2{{=}}Dyskusja szablonu|numer jednostki{{=}}2}}}} → {{Tt|{{#invoke:Pudełko|Nazwa przedmiotowej przestrzeni nazw|nazwa przestrzeni nazw 2=Dyskusja szablonu|numer jednostki=2}}}} * {{Code|{{m|Pudełko|Nazwa przedmiotowej przestrzeni nazw|nazwa przestrzeni nazw 2{{=}}Dyskusja szablonu|numer jednostki{{=}}2}}}} → {{Tt|{{#invoke:Pudełko|Nazwa przedmiotowej przestrzeni nazw|nazwa przestrzeni nazw i=Dyskusja szablonu|numer jednostki=2}}}} * {{Code|{{m|Pudełko|Nazwa przedmiotowej przestrzeni nazw|nazwa przestrzeni nazw{{=}}Dyskusja szablonu|numer jednostki{{=}}2}}}} → {{Tt|{{#invoke:Pudełko|Nazwa przedmiotowej przestrzeni nazw|nazwa przestrzeni nazw=Dyskusja szablonu|numer jednostki=2}}}} Powyżej dla przykładu podano parametry nie w rodzicu w szablonie, tylko w dziecku, jeśli chodzi o parametry nazw przestrzeni nazw, ale ich się za to nie powinno podawać w tych ramach, tylko w szablonach, w których wywoływane są te ramki pudełek {{Code|{{m|Pudełko}}}}, ale tak tutaj tak zrobiono by było najłatwiej sprawdzić działanie tego typu funkcji. Analogicznie możemy podawać parametry typu jednostki, np.: wywołaniu modułowym {{Code|{{m|Pudełko|Nazwa przedmiotowej przestrzeni nazw|typ jednostki 2{{=}}strona szablonu|numer jednostki{{=}}2}}}}, ale o tym więcej w rozdziałach {{Code|{{sr|# p["Typ jednostki"](frame,i)|p=Pudełko}}}}, {{Code|{{sr|#p["Typ jednostki 2"](frame,i)|p=Pudełko}}}}, {{Code|{{sr|#p["Typ jednostki 3"](frame,i)|p=Pudełko}}}} itp. w „{{sr|#Funkcje typu jednostki|p=Pudełko}}”, ale wtedy ta sama nazwa przestrzeni nazw reprezentowana przez {{Parametr|typ jednostki 2|strona szablonu}}, jest zamieniana na to samo, lepiej jest tutaj używać parametrów przestrzennych nazw niż typu jednostki, bo typ jednostki ma taką samą wartość dla przestrzeni przedmiotowej, co dyskusji. Tutaj parametr dyskusji typu jednostki bazowy i numerkowy ogólny, czy szczegółowy, nie gra roli, bo nawet, gdy wygenerujemy nazwę przestrzeni dyskusji za pomoca tego parametru, to i tak otrzymamy na samym końcu jego nazwę przedmiotową. Również parametry typu jednostki nie powinno się podawać w dziecku w ramce, tylko w rodzicu w szablonie jako parametry, w którym ta ramka jest wywoływana, ale tutaj podano jedynie dla przykładu, jak najłatwiej sprawdzić działanie tych parametrów tej funkcji. Najpierw w funkcji nagłówku brane są parametry nazw przestrzeni nazw, a jeżeli ich nie ma, to parametry typu jednostki, a jeżeli nie ma, to generowane są nazwy na podstawie aktualnego modułu. === {{Code|p["Nazwa przestrzeni nazw dyskusji"](frame,...)}} === Funkcja pisze nazwę przestrzeni nazw dyskusji jakikolwiek nazwy przestrzeni nazw (tzn. nazwę przedmiotową nazwy przestrzenie nazw, czyli nie dyskusji, zamieniana jest na dyskusji, czyli identyfikator przestrzeni się zmienia jeden wyżej, a dyskusji, nie przedmiotową, przekształca się na tą samą), według podanej w zmiennej {{Code|nazwa przestrzeni nazw}} dla pozycja bazowej w podanych parametrach szablonu rodzicu ramki dziecka, lub dla innej pozycji należy parametr podawać w formie {{Code|nazwa przestrzeni nazw 1}}, {{Code|nazwa przestrzeni nazw 2}}, {{Code|nazwa przestrzeni nazw 3}},..., lub te parametry można podać w postaci ogólnej {{Code|nazwa przestrzeni nazw i}}. Parametry podaje się w parametrach rodzica wywołania tej funkcji {{Code|{{m|Pudełko|Nazwa przestrzeni nazw dyskusji}}}} (ale ich nie trzeba podawać w dziecku, ale można) i w parametrach dziecka, jeśli chodzi o zmienną {{Code|numer jednostki}}, czyli np.: {{Code|{{m|Pudełko|Nazwa przestrzeni nazw dyskusji|numer jednostki{{=}}<jakaś liczba całkowita dodatnia>}}}}. Te parametry przestrzenne zamiast w rodzicu w szablonie można podać w ramce dziecka, wtedy parametry dziecka mają pierwszeństwo. Parametry przestrzenne mogą mogą być podane w postaci przestrzeni przedmiotowej lub dyskusji, ale ta funkcja zawsze ją zamienia na dyskusji. Przestrzeń nazw z parametrów nazw przestrzennych może odpowiadać wartości przestrzeni głównej, to wtedy odpowiednia przestrzeń nazw z parametru nazwy jednostki się nie liczy w tej funkcji, aby się liczyła należy użyć funkcji {{Code|{{sr|#p["Nazwa przestrzeni nazw dyskusji 2"](frame,...)|p=Pudełko}}}}. Definicja skrótowa funkcji: <syntaxhighlight lang="lua"> p["Nazwa przestrzeni nazw dyskusji"]=function(frame,czy_uwzglednic_alternatywna_nazwe,i)...end; </syntaxhighlight> Wtedy ciało funkcji tej, czyli jego definicja w środku, jest: <syntaxhighlight lang="lua"> -- Jest liczony numer parametru nazwy przestrzeni nazw, domyslnie chodzi tu o numer bazowy parametrów przestrzennych; local numer_jednostki=i or frame.args["numer jednostki"]; local liczba_numer_jednostki=((numer_jednostki)and(tonumber(numer_jednostki))or 0); local pudelko_pomocne_modul=require("Module:Pudełko/Pomocne"); -- Liczy nazwę przestrzeni nazw dyskusji na podstawie podanych parametrów; return pudelko_pomocne_modul.Nazwa_przestrzeni_nazw(frame,2, czy_uwzglednic_alternatywna_nazwe,liczba_numer_jednostki); </syntaxhighlight> Parametry funkcji: * {{Code|frame}} - tablica ramki tablicy transportu, * {{Code|czy_uwzglednic_alternatywna_nazwe}} - czy ma uwzględniać nazwę przestrzeni nazw domyślną szablonu, dostępne wartości: {{Code|false}}, w której nazwa domyślna nie jest uwzględniana wtedy, oraz {{Code|nil}} i {{Code|true}}, które oznaczają to samo, w tym jeżeli ona jest uwzględniana, wtedy jest brany parametr pierwszy dziecka, który musi istnieć przy takiej wartości tego parametru, tzn. {{Code|{{m|Pudełko|Nazwa przestrzeni nazw dyskusji|Szablon}}}} - ta nazwa domyślna zostanie przekształcona na dyskusji, a jeżeli ona by była dyskusji, to nie byłoby żadnego przekształcenia, a nazwa uzyskana nazwy przestrzeni nazw z parametrów przestrzennych jest w takim przypadku błędna, to w takim razie brany jest ten parametr, a jeżeli nazwa domyślna jest błędna, czyli {{Code|{{m|Pudełko|Nazwa przestrzeni nazw dyskusji|Moja przestrzeń}}}}, wtedy funkcja zwraca stan błędu {{Code|(błąd)}}. * {{Code|i}} - numer zmiennej nazwy przestrzeni nazw. Funkcja wykorzystuje {{Code|{{sr|#p.Nazwa_przestrzeni_nazw(frame,...)|p=Pudełko/Pomocne}}}} do wyznaczania ogólnego nazwy przestrzeni nazw dla pozycji bazowej i numerkowej, tzn. dla pozycji: jeden, dwa, trzy,..., itd, i ich ogólnej. Parametry ramki tablicy transportu dziecka: * {{Code|nazwa przestrzeni nazw}}, {{Code|nazwa przestrzeni nazw 1}}, {{Code|nazwa przestrzeni nazw 2}}, {{Code|nazwa przestrzeni nazw 3}},..., {{Code|nazwa przestrzeni nazw i}} - nazwy przestrzeni nazw dla pozycji bazowej, numerkowej i ogólnej, * {{Code|typ jednostki}}, {{Code|typ jednostki 1}}, {{Code|typ jednostki 2}}, {{Code|typ jednostki 3}},..., {{Code|typ jednostki i}} - typy jednostek, którym odpowiadają pewne przestrzenie przedmiotowe, dla pozycji bazowej, numerkowej i ogólnej, ** {{Code|dyskusja typu jednostki}}, {{Code|dyskusja typu jednostki 1}}, {{Code|dyskusja typ jednostki 2}}, {{Code|dyskusja typ jednostki 3}},..., {{Code|dyskusja typ jednostki i}} - czy dany typ jednostki ma przedstawiać, jeśli niepusta, przestrzeń dyskusji dla pozycji bazowej, numerkowej i ogólnej, * {{Code|numer jednostki}} - jak parametr {{Code|i}} nie został ustawiony, to wtedy liczy się ta zmienna. Parametr ramki tablicy transportu rodzica szablonu: * {{Code|nazwa przestrzeni nazw}}, {{Code|nazwa przestrzeni nazw 1}}, {{Code|nazwa przestrzeni nazw 2}}, {{Code|nazwa przestrzeni nazw 3}},..., {{Code|nazwa przestrzeni nazw i}} - nazwy przestrzeni nazw dla pozycji bazowej oraz zwykłej i ogólnej numerkowej, * {{Code|typ jednostki}}, {{Code|typ jednostki 1}}, {{Code|typ jednostki 2}}, {{Code|typ jednostki 3}},..., {{Code|typ jednostki i}} - typy jednostek, którym odpowiadają pewne przestrzenie przedmiotowe, dla pozycji bazowej, numerkowej i ogólnej, ** {{Code|dyskusja typu jednostki}}, {{Code|dyskusja typu jednostki 1}}, {{Code|dyskusja typ jednostki 2}}, {{Code|dyskusja typ jednostki 3}},..., {{Code|dyskusja typ jednostki i}} - czy dany typ jednostki ma przedstawiać, jeśli niepusta, przestrzeń dyskusji dla pozycji bazowej, numerkowej i ogólnej. Przykłady: <syntaxhighlight lang="mediawiki"> {{Nazwa szablonu|nazwa przestrzeni nazw=Wikibooks|nazwa przestrzeni nazw 2=Szablon|nazwa przestrzeni nazw i=Moduł}} </syntaxhighlight> W dziecku powiedzmy jest wywołanie, i szukamy nazwy przestrzeni nazw o numerze dwa, która nie została podana, ale istnieje za to jej wersji ogólna {{Code|nazwa przestrzeni nazw i}} i domyślna {{Code|nazwa przestrzeni nazw}}: <syntaxhighlight lang="mediawiki"> {{#invoke:Pudełko|Nazwa przestrzeni nazw dyskusji|numer jednostki=1}} </syntaxhighlight> Na podstawie powyższego przykładu otrzymamy wynik o schemacie, nie wyniku, bo tam nie ma zmiennej {{Code|nazwa przestrzeni nazw 1}}, ale jest {{Code|nazwa przestrzeni nazw i}}: <syntaxhighlight lang="mediawiki"> <!-- Ale nie "nazwa przestrzeni nazw", bo jej nie ma, ale za to istnieje "nazwa przestrzeni nazw i"; --> <!-- nazwa przestrzeni nazw 2=nazwa przestrzeni nazw i=Moduł; --> <!-- Czyli wynik: --> Dyskusja modułu <!-- Widzimy, że wygenerowała się nazwa przestrzeni nazw, którą jest przestrzeń dyskusji przestrzeni programowej przestrzeni przedmiotowej "Moduł", którą również jest "Szablon" jego przestrzeni dyskusji "Dyskusja szablonu", a dla ich przestrzeni przedmiotowej, zamiast dyskusji, to przekształca się na dyskusji jej odpowiadającą; --> </syntaxhighlight> Nie jest brana w tym powyższym przykładzie zmienna {{Code|nazwa przestrzeni nazw}}, bo jej nie ma, ale za to jest {{Code|nazwa przestrzeni nazw i}}, bo ona występuje jako parametr domyślny ogólny dla parametrów numerkowych. Przykłady w wikikodzie: * {{Code|{{m|Pudełko|Nazwa przestrzeni nazw dyskusji|numer jednostki{{=}}2}}}} → {{Tt|{{#invoke:Pudełko|Nazwa przestrzeni nazw dyskusji|numer jednostki=2}}}} * {{Code|{{m|Pudełko|Nazwa przestrzeni nazw dyskusji|Szablon|nazwa przestrzeni nazw i{{=}}Moja przestrzeń|numer jednostki{{=}}2}}}} → {{Tt|{{#invoke:Pudełko|Nazwa przestrzeni nazw dyskusji|Szablon|nazwa przestrzeni nazw i=Moja przestrzeń|numer jednostki=2}}}} * {{Code|{{m|Pudełko|Nazwa przestrzeni nazw dyskusji|nazwa przestrzeni nazw 2{{=}}Szablon|numer jednostki{{=}}2}}}} → {{Tt|{{#invoke:Pudełko|Nazwa przestrzeni nazw dyskusji|nazwa przestrzeni nazw 2=Szablon|numer jednostki=2}}}} * {{Code|{{m|Pudełko|Nazwa przestrzeni nazw dyskusji|nazwa przestrzeni nazw 2{{=}}Szablon|numer jednostki{{=}}2}}}} → {{Tt|{{#invoke:Pudełko|Nazwa przestrzeni nazw dyskusji|nazwa przestrzeni nazw i=Szablon|numer jednostki=2}}}} * {{Code|{{m|Pudełko|Nazwa przestrzeni nazw dyskusji|nazwa przestrzeni nazw{{=}}Szablon|numer jednostki{{=}}2}}}} → {{Tt|{{#invoke:Pudełko|Nazwa przestrzeni nazw dyskusji|nazwa przestrzeni nazw=Szablon|numer jednostki=2}}}} Powyżej dla przykładu podano parametry nie w rodzicu w szablonie, tylko w dziecku, jeśli chodzi o parametry nazw przestrzeni nazw, ale ich się za to nie powinno podawać w tych ramach, tylko w szablonach, w których wywoływane są te ramki pudełek {{Code|{{m|Pudełko}}}}, ale tak tutaj tak zrobiono by było najłatwiej sprawdzić działanie tego typu funkcji. Analogicznie możemy podawać parametry typu jednostki, np.: wywołaniu modułowym {{Code|{{m|Pudełko|Nazwa przestrzeni nazw dyskusji|typ jednostki 2{{=}}strona szablonu|numer jednostki{{=}}2}}}}, ale o tym więcej w rozdziałach {{Code|{{sr|# p["Typ jednostki"](frame,i)|p=Pudełko}}}}, {{Code|{{sr|#p["Typ jednostki 2"](frame,i)|p=Pudełko}}}}, {{Code|{{sr|#p["Typ jednostki 3"](frame,i)|p=Pudełko}}}} itp. w „{{sr|#Funkcje typu jednostki|p=Pudełko}}”, ale wtedy nazwa przestrzeni nazw reprezentowana przez {{Parametr|typ jednostki 2|strona szablonu}}, jest zamieniana na nazwę przestrzeni nazw dyskusji. Parametr dyskusji typu jednostki bazowy lub dla danego numerka ogólny, czy szczegółowy, nie gra roli. Również parametry typu jednostki nie powinno się podawać w dziecku w ramce, tylko w rodzicu w szablonie jako parametry, w którym ta ramka jest wywoływana, ale tutaj podano jedynie dla przykładu, jak najłatwiej sprawdzić działanie tych parametrów tej funkcji. Najpierw w funkcji nagłówku brane są parametry nazw przestrzeni nazw, a jeżeli ich nie ma, to parametry typu jednostki, a jeżeli nie ma, to generowane są nazwy na podstawie aktualnego modułu. == Funkcje nazw przestrzeni nazw drugiej wersji == === {{Code|p["Nazwa przestrzeni nazw 2"](frame,...)}} === Funkcja pisze nazwę przestrzeni nazw, niezależnie, czy to jest przedmiotowa, czy dyskusji, według podanej w zmiennej {{Code|nazwa przestrzeni nazw}} dla pozycja bazowej w podanych parametrach szablonu rodzicu ramki dziecka, lub dla innej pozycji należy parametr podawaćw formie {{Code|nazwa przestrzeni nazw 1}}, {{Code|nazwa przestrzeni nazw 2}}, {{Code|nazwa przestrzeni nazw 3}},..., lub te parametry można podać w postaci ogólnej {{Code|nazwa przestrzeni nazw i}}. Parametry podaje się w parametrach rodzica wywołania tej funkcji {{Code|{{m|Pudełko|Nazwa przestrzeni nazw 2}}}} (ale ich nie trzeba podawać w dziecku, ale można) i w parametrach dziecka, jeśli chodzi o zmienną {{Code|numer jednostki}}, czyli np.: {{Code|{{m|Pudełko|Nazwa przestrzeni nazw 2|numer jednostki{{=}}<jakaś liczba całkowita dodatnia>}}}}. Te parametry przestrzenne zamiast w rodzicu w szablonie można podać w ramce dziecka, wtedy parametry dziecka mają pierwszeństwo. Przestrzeń nazw z parametrów nazw przestrzennych może odpowiadać wartości przestrzeni głównej, to wtedy odpowiednia przestrzeń nazw z parametru nazwy jednostki się liczy w tej funkcji, wtedy jest liczona nazwa przestrzeni nazw z tego parametru. Definicja skrótowa funkcji: <syntaxhighlight lang="lua"> p["Nazwa przestrzeni nazw 2"]=function(frame,czy_uwzglednic_alternatywna_nazwe,i)...end; </syntaxhighlight> Wtedy ciało funkcji tej, czyli jego definicja w środku, jest: <syntaxhighlight lang="lua"> local pudelko_pomocne_modul=require("Module:Pudełko/Pomocne"); -- Liczy nazwę przestrzeni nazw, jeżeli z parametrów przestrzennych przestrzeń wskazuje na główną, to wtedy jest liczona przestrzeń nazw z nazwy jednostki; return pudelko_pomocne_modul.Nazwa_przestrzeni_nazw_2(frame,czy_uwzglednic_alternatywna_nazwe,i) </syntaxhighlight> Parametry funkcji: * {{Code|frame}} - tablica ramki tablicy transportu, * {{Code|czy_uwzglednic_alternatywna_nazwe}} - czy ma uwzględniać nazwę przestrzeni nazw domyślną szablonu, dostępne wartości: {{Code|false}}, w której nazwa domyślna nie jest uwzględniana wtedy, oraz {{Code|nil}} i {{Code|true}}, które oznaczają to samo, w tym jeżeli ona jest uwzględniana, wtedy jest brany parametr pierwszy dziecka, który musi istnieć przy takiej wartości tego parametru, tzn. {{Code|{{m|Pudełko|Nazwa przestrzeni nazw 2|Szablon}}}}, a nazwa uzyskana nazwy przestrzeni nazw jest w takim przypadku błędna, a jeżeli nazwa domyślna jest błędna, czyli {{Code|{{m|Pudełko|Nazwa przestrzeni nazw 2|Moja przestrzeń}}}}, wtedy funkcja zwraca stan błędu {{Code|(błąd)}}. * {{Code|i}} - numer zmiennej nazwy przestrzeni nazw. Funkcja wykorzystuje {{Code|{{sr|#p.Nazwa_przestrzeni_nazw_2(frame,...)|p=Pudełko/Pomocne}}}} do wyznaczania ogólnego nazwy przestrzeni nazw dla pozycji bazowej i numerkowej, tzn. dla pozycji: jeden, dwa, trzy,..., itd, i ich ogólnej. Parametry ramki tablicy transportu dziecka: * {{Code|nazwa przestrzeni nazw}}, {{Code|nazwa przestrzeni nazw 1}}, {{Code|nazwa przestrzeni nazw 2}}, {{Code|nazwa przestrzeni nazw 3}},..., {{Code|nazwa przestrzeni nazw i}} - nazwy przestrzeni nazw dla pozycji bazowej, numerkowej i ogólnej, * {{Code|typ jednostki}}, {{Code|typ jednostki 1}}, {{Code|typ jednostki 2}}, {{Code|typ jednostki 3}},..., {{Code|typ jednostki i}} - typy jednostek, którym odpowiadają pewne przestrzenie przedmiotowe, dla pozycji bazowej, numerkowej i ogólnej, ** {{Code|dyskusja typu jednostki}}, {{Code|dyskusja typu jednostki 1}}, {{Code|dyskusja typ jednostki 2}}, {{Code|dyskusja typ jednostki 3}},..., {{Code|dyskusja typ jednostki i}} - czy dany typ jednostki ma przedstawiać, jeśli niepusta, przestrzeń dyskusji dla pozycji bazowej, numerkowej i ogólnej, * {{Code|numer jednostki}} - jak parametr {{Code|i}} nie został ustawiony, to wtedy liczy się ta zmienna. Parametr ramki tablicy transportu rodzica szablonu: * {{Code|nazwa przestrzeni nazw}}, {{Code|nazwa przestrzeni nazw 1}}, {{Code|nazwa przestrzeni nazw 2}}, {{Code|nazwa przestrzeni nazw 3}},..., {{Code|nazwa przestrzeni nazw i}} - nazwy przestrzeni nazw dla pozycji bazowej oraz zwykłej i ogólnej numerkowej, * {{Code|typ jednostki}}, {{Code|typ jednostki 1}}, {{Code|typ jednostki 2}}, {{Code|typ jednostki 3}},..., {{Code|typ jednostki i}} - typy jednostek, którym odpowiadają pewne przestrzenie przedmiotowe, dla pozycji bazowej, numerkowej i ogólnej, ** {{Code|dyskusja typu jednostki}}, {{Code|dyskusja typu jednostki 1}}, {{Code|dyskusja typ jednostki 2}}, {{Code|dyskusja typ jednostki 3}},..., {{Code|dyskusja typ jednostki i}} - czy dany typ jednostki ma przedstawiać, jeśli niepusta, przestrzeń dyskusji dla pozycji bazowej, numerkowej i ogólnej. Przykłady: <syntaxhighlight lang="mediawiki"> {{Nazwa szablonu|nazwa przestrzeni nazw=Wikibooks|nazwa przestrzeni nazw 1=Szablon|nazwa przestrzeni nazw i=|nazwa jednostki 2=Wikibooks:Strona}} </syntaxhighlight> W dziecku powiedzmy jest wywołanie, i szukamy nazwy przestrzeni nazw o numerze dwa, która została podana, ale istnieje za to jej wersji ogólna {{Code|nazwa przestrzeni nazw i}} i domyślna {{Code|nazwa przestrzeni nazw}}, ale wtedy dla tego numerkowego liczy się to ogólne z {{Code| i}}, a ponieważ ta nazwa jest pusta, więc będziemy liczyli nazwę przestrzeni nazw z {{Code|nazwa jednostki 2}}: <syntaxhighlight lang="mediawiki"> {{#invoke:Pudełko|Nazwa przestrzeni nazw 2|numer jednostki=2}} </syntaxhighlight> Na podstawie powyższego przykładu otrzymamy wynik o schemacie, nie wyniku, bo tam nie ma zmiennej {{Code|nazwa przestrzeni nazw 1}}, ale jest {{Code|nazwa przestrzeni nazw i}}: <syntaxhighlight lang="mediawiki"> <!-- Ale nie "nazwa przestrzeni nazw 2", bo jej nie ma, ale za to istnieje "nazwa przestrzeni nazw i"; --> <!-- nazwa przestrzeni nazw 2=nazwa przestrzeni nazw i="", a nazwa jednostki 2="Wikibooks:Strona"; --> <!-- Czyli wynik: --> Wikibooks <!-- Widzimy, że wygenerowała się nazwa przestrzeni nazw, którą jest przestrzeń nieprogramowa, ale projektu, wychodząca z nazwy jednostek w tym przypadku z "nazwa jednostki 2"; --> </syntaxhighlight> Nie jest brana w tym powyższym przykładzie zmienna {{Code|nazwa przestrzeni nazw}}, bo jej nie ma, ale za to jest {{Code|nazwa przestrzeni nazw i}}, bo ona występuje jako parametr domyślny ogólny dla parametrów numerkowych. Tytaj jest używwana jest zmienna {{Code|nazwa jednostki 2}} do wygenerowania ostatecznego wyniki,bo jak mozna zauważyć, parametry przestrzenne wskazują na przestrzeń główną, a nazwy jednostek już nie. Przykłady w wikikodzie: * {{Code|{{m|Pudełko|Nazwa przestrzeni nazw 2|numer jednostki{{=}}2}}}} → {{Tt|{{#invoke:Pudełko|Nazwa przestrzeni nazw 2|numer jednostki=2}}}} * {{Code|{{m|Pudełko|Nazwa przestrzeni nazw 2|Szablon|nazwa przestrzeni nazw i{{=}}Moja przestrzeń|numer jednostki{{=}}2}}}} → {{Tt|{{#invoke:Pudełko|Nazwa przestrzeni nazw 2|Szablon|nazwa przestrzeni nazw i=Moja przestrzeń|numer jednostki=2}}}} * {{Code|{{m|Pudełko|Nazwa przestrzeni nazw 2|nazwa przestrzeni nazw 2{{=}}|nazwa jednostki 2{{=}}Szablon:Strona|numer jednostki{{=}}2}}}} → {{Tt|{{#invoke:Pudełko|Nazwa przestrzeni nazw 2|nazwa przestrzeni nazw 2=|nazwa jednostki 2=Szablon:Strona|numer jednostki=2}}}} * {{Code|{{m|Pudełko|Nazwa przestrzeni nazw 2|nazwa przestrzeni nazw i{{=}}|nazwa jednostki 2{{=}}Szablon:Strona|numer jednostki{{=}}2}}}} → {{Tt|{{#invoke:Pudełko|Nazwa przestrzeni nazw 2|nazwa przestrzeni nazw i=|nazwa jednostki 2=Szablon:Strona|numer jednostki=2}}}} * {{Code|{{m|Pudełko|Nazwa przestrzeni nazw 2|Szablon|nazwa przestrzeni nazw{{=}}|nazwa jednostki 2{{=}}Wikibooks:Strona|numer jednostki{{=}}2}}}} → {{Tt|{{#invoke:Pudełko|Nazwa przestrzeni nazw 2|Szablon|nazwa przestrzeni nazw=|nazwa jednostki 2=Wikibooks:Strona|numer jednostki=2}}}} Powyżej dla przykładu podano parametry nie w rodzicu w szablonie, tylko w dziecku, jeśli chodzi o parametry nazw przestrzeni nazw i nazw jednostek, ale ich się za to nie powinno podawać w tych ramach, tylko w szablonach, w których wywoływane są te ramki pudełek {{Code|{{m|Pudełko}}}}, ale tak tutaj tak zrobiono by było najłatwiej sprawdzić działanie tego typu funkcji. Analogicznie możemy podawać parametry typu jednostki, np.: wywołaniu modułowym {{Code|{{m|Pudełko|Nazwa przestrzeni nazw 2|typ jednostki 2{{=}}strona szablonu|numer jednostki{{=}}2}}}}, ale o tym więcej w rozdziałach {{Code|{{sr|# p["Typ jednostki"](frame,i)|p=Pudełko}}}}, {{Code|{{sr|#p["Typ jednostki 2"](frame,i)|p=Pudełko}}}}, {{Code|{{sr|#p["Typ jednostki 3"](frame,i)|p=Pudełko}}}} itp. w „{{sr|#Funkcje typu jednostki|p=Pudełko}}”, on definiuje przestrzenie przedmiotowe, ale można użyć parametru dyskusji typu jednostki z wartością niepustą, wtedy wyświetli się nazwa przestrzeni nazw dyskusji. Jeżeli typ jednostki wskazuje na przestrzeń naazw główną, wtedy się liczą parametry nazw jednostek. Również parametry typu jednostki nie powinno się podawać w dziecku w ramce, tylko w rodzicu w szablonie jako parametry, w którym ta ramka jest wywoływana, ale tutaj podano jedynie dla przykładu, jak najłatwiej sprawdzić działanie tych parametrów tej funkcji. Najpierw w funkcji nagłówku brane są parametry nazw przestrzeni nazw, a jeżeli ich nie ma, to parametry typu jednostki, a jeżeli nie ma lub parametry przestrzenne wskazują na przestrzeń główną, i nie ma nazwy jednostki, to generowane są nazwy tej funkcji na podstawie aktualnej strony. === {{Code|p["Nazwa przedmiotowej przestrzeni nazw 2"](frame,...)}} === === {{Code|p["Nazwa przestrzeni nazw dyskusji 2"](frame,...)}} === == Funkcje pełnych nazw jednostki == === {{Code|p["Pełna nazwa dyskusji jednostki"](frame,i)}} === === {{Code|p["Pełna nazwa przedmiotowa jednostki"](frame,i)}} === === {{Code|p["Pełna nazwa jednostki"](frame,i)}} === == Funkcje pełnych nazw jednostki drugiej wersji == === {{Code|p["Pełna nazwa dyskusji jednostki 2"](frame,i)}} === === {{Code|p["Pełna nazwa przedmiotowa jednostki 2"](frame,i)}} === === {{Code|p["Pełna nazwa jednostki 2"](frame,i)}} === == Funkcje pełnych nazw jednostki trzeciej wersji == === {{Code|p["Pełna nazwa dyskusji jednostki 3"](frame,i)}} === === {{Code|p["Pełna nazwa przedmiotowa jednostki 3"](frame,i)}} === === {{Code|p["Pełna nazwa jednostki 3"](frame,i)}} === == Funkcje nazw jednostki == === {{Code|p["Nazwa jednostki"](frame,i)}} === == Funkcje nazw jednostki drugiej wersji == === {{Code|p["Nazwa jednostki 2"](frame,i)}} === === {{Code|p["Nazwa przedmiotowa jednostki 2"](frame,i)}} === === {{Code|p["Nazwa dyskusji jednostki 2"](frame,i)}} === == Funkcje nazw przestrzeni nazw trzeciej wersji == === {{Code|p["Nazwa przestrzeni nazw 3"](frame,i)}} === === {{Code|p["Nazwa przedmiotowej przestrzeni nazw 3"](frame,i)}} === === {{Code|p["Nazwa przestrzeni nazw dyskusji 3"](frame,i)}} === == Funkcje nazw jednostki trzeciej wersji == === {{Code|p["Nazwa jednostki 3"](frame,i)}} === === {{Code|p["Nazwa przedmiotowa jednostki 3"](frame,i)}} === === {{Code|p["Nazwa dyskusji jednostki 3"](frame,i)}} === == Funkcje typu jednostki == === {{Code|p["Typ jednostki"](frame,i)}} === === {{Code|p["Typ jednostki 2"](frame,i)}} === === {{Code|p["Typ jednostki 3"](frame,i)}} === === Funkcje typu jednostki przedmiotowe === ==== {{Code|p["Przedmiotowy typ jednostki"](frame,i)}} ==== ==== {{Code|p["Przedmiotowy typ jednostki 2"](frame,i)}} ==== ==== {{Code|p["Przedmiotowy typ jednostki 3"](frame,i)}} ==== === Fukcje typu jednostki dyskusji === ==== {{Code|p["Dyskusyjny typ jednostki"](frame,i)}} ==== ==== {{Code|p["Dyskusyjny typ jednostki 2"](frame,i)}}} ==== ==== {{Code|p["Dyskusyjny typ jednostki 3"](frame,i)}} ==== == Funkcje chech pudełka == === {{Code|p["Cecha pudełka"](frame)}} === === {{Code|p["Przedmiotowa cecha pudełka"](frame)}} === === {{Code|p["Dyskusyjna cecha pudełka"](frame)}} === == Fukcje ogólnego pudełka == === {{Code|p["Ogólne pudełko"](frame)}} === == Funkcje ogólne == === {{Code|p["Tekst pudełka"](frame)}} === == Funkcje błędów pudełka == === {{Code|p["Błędy pudełka"](frame)}} === === {{Code|p["Przedmiotowe błędy pudełka"](frame)}} === === {{Code|p["Dyskusyjne błędy pudełka"](frame)}} === == Funkcje nazw stron == === {{Code|p["Nazwa strony głównej projektu"](frame,i)}} === === {{Code|p["Nazwa strony głównej dla dzieci projektu"](frame,i)}} === == Funkcje kodów == === {{Code|p["Kod języka"](frame,i)}} === === {{Code|p["Kod projektu"](frame,i)}} === === {{Code|p["Klucz projektu"](frame,i)}} === == Funkcje wiki == === {{Code|p["Inny niż język bieżący wiki"](frame)}} === === {{Code|p["Inne niż lokalne wiki"](frame)}} === === {{Code|p["Inne niż bieżące wiki"](frame)}} === == Funkcje typów parametrów, czy podane je == === {{Code|p["Podano parametry nienazwane"](frame)}} === === {{Code|p["Podano parametry numerowane"](frame)}} === === {{Code|p["Podano parametry nazwane"](frame)}} === == Funkcje kodów tego projektu == === {{Code|p["Kod projektu tego projektu"](frame)}} === === {{Code|p["Kod języka tego projektu"](frame)}} === === {{Code|p["Klucz projektu tego projektu"](frame)}} === == Funkcje stron == === {{Code|p["Strona główna tego projektu"](frame)}} === === {{Code|p["Strona główna dla dzieci tego projektu"](frame)}} === == Funkcje nazw stron drugiej wersji == === {{Code|p["Nazwa strony głównej dla dzieci projektu 2"](frame)}} === === {{Code| p["Nazwa strony głównej projektu 2"](frame)}} === {{BrClear}} <noinclude><!-- -->{{ProstaStronaKoniec}}<!-- -->{{Kategoria|Opisy funkcji, w Lua w Scribunto, w modułach}}<!-- --></noinclude> 7c3s8s0pfh2k2b3tne5li1k5xkp93d9 540374 540373 2026-04-23T12:52:19Z Persino 2851 540374 wikitext text/x-wiki <noinclude>{{ProstaStronaStart | nagłówek = {{Podrozdział|{{ld2|Pudełko}}|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 pudelko_modul=require("Module:Pudełko"); </syntaxhighlight> dzięki, któremu można wypisywać funkcje należącego do niego. Posługuje się na parametrach pudełkowych {{Parametr|nazwa przestrzeni nazw}} (czy też bez numerka {{Parametr|nazwa przestrzeni nazw i}} dla tego numerowanego) lub te z numerkiem po jednej spacji w nich (ale nie dla tego z końcówką {{Code| i}}) mogą zostać użyte jako parametry szablonu. Moduł {{Code|{{ld2|Pudełko}}}} przedstawia funkcje nazw w oparciu o funkcje nazw {{Code|{{ld2|Nazwy}}}}, generuje on nazwy za pomocą parametrów pudełkowych podanych poniżej. Parametr {{Parametr|nazwa jednostki}} (lub parametr {{Parametr|cel}} dla numerka tego pierwszego, tego alternatywnego), lub te z numerkiem po jednej spacji w nazwie parametru, albo numerowane numerkami {{Code|1}}, {{Code|2}},..., mogą zostać użyte jako parametry szablonu. Parametry określające rodzaj jednostki {{Parametr|typ jednostki}} z {{Parametr|dyskusja typu jednostki}}, itp. w wersjach z numerkiem po jednej spacji w nich mogą zostać użyte jako parametry szablonu. A te tymi numerowanymi liczbami naturalnymi {{Tt|nazwy jednostki}} od jedynki wzwyż poprzez szablon, w którym są one użyte, one też mogą być użyte z dwukropkiem, te numerowane, na samym początku nazwy, wtedy one są traktowane jako pełne nazwy strony, i wtedy one nie zostaną z interpretowane, że do nich trzeba użyć parametr odpowiedni z nazwą przetrzeni nazw z tego numerowanego, czy ogólny, aby utworzyć znów inną pełną nazwę strony dla tego numerka. Zestawienie: * {{Code|nazwa przestrzeni nazw}} i {{Code|nazwa przestrzeni nazw i}} (ogólna nazwa przestrzeni nazw dla wszystkich numerków, i tych numerowanych jednostek) - i to pierwsze z numerkiem, tzn. {{Code|nazwa przestrzeni nazw 1}}, {{Code|nazwa przestrzeni nazw 2}}, ..., * {{Code|nazwa jednostki}} - i te z numerkiem: {{Code|nazwa jednostki 1}}, {{Code|nazwa jednostki 2}}, ..., lub gdy jest zamiast tego parametrem numerowany, {{Code|1}}, {{Code|2}},..., który dla tego pierwszego może być uznany jako: {{Code|cel}} {{=}} {{Code|1}}, * {{Code|typ jednostki}} (parametr bazowy) i {{Code|typ jednostki i}} (parametr domyślny numerkowy) - i te z numerkiem: {{Code|typ jednostki 1}}, {{Code|typ jednostki 2}}, ..., tzn. gdy chcemy określić z jakim typem jednostki mamy do czynienia w zależności do jakiej przestrzeni nazw należy, a w danej, czy jest on np. programowy, czy tylko jest opisem, jak to bywa w szablonach {{Np|Template|link=tak}}, podobnie jest w przypadku {{Np|Module|link=tak}}, czy jak jest w innych przestrzeniach nazw, ** {{Code|dyskusja typu jednostki}} (parametr bazowy) i {{Code|dyskusja typu jednostki i}} (parametr domyślny numerkowy) - i te z numerkiem: {{Code|dyskusja typu jednostki 1}}, {{Code|dyskusja typu jednostki 2}}, ..., gdy chcemy określić wartością niepustą,że chodzi tutaj o typ jednostki. == {{Code|p.CzyNiepoprawnaNazwa(nazwa_jednostki)}} == Funkcja sprawdzajaca, czy jest poprawnie podana nazwa jednostki, czy ma poprawną nazwę. Znakami tymi, z których nie powinna składać się nazwa jest {{Code|<nowiki>{}<>|[]#\n</nowiki>}} i dodatkowo znak {{Code|&#127;}} (kod {{Code|{{Nowiki|&#127;}}}}). Też nie może składać się z trzech znaków tyldy, tzn. {{Code|<nowiki>~~~</nowiki>}}. Również w swojej budowie nie może składać się ze kodów {{Strong|HTML}} literowych o wzorze {{Code|{{Nowiki|&(%a+);}}}}. Natomiast może składać się z {{Code|{{Nowiki|&#(%d+);}}}} i {{Code|{{Nowiki|&#x(%x+);}}}}, ale w pierw te kody muszą być zamienione na normalne znaki. Skrótowa definicja funkcji: <syntaxhighlight lang="lua"> function p.CzyNiepoprawnaNazwa(nazwa_jednostki)...end; </syntaxhighlight> Wtedy ciało funkcji tej, czyli jego definicja w środku, jest: <syntaxhighlight lang="lua"> -- Moduł: "Moduł:Html/dane", służy do ładowania znaku o kodzie HTML "&#127;"; local html_dane_modul=mw.loadData("Module:Html/dane"); return mw.ustring.match(nazwa_jednostki,"[{}<>|%[%]#\n"..html_dane_modul.znak_127.."]+") or mw.ustring.match(nazwa_jednostki,"~~~") or mw.ustring.match(nazwa_jednostki,"&(%a+);"); </syntaxhighlight> Parametry: * {{Code|nazwa_jednostki}} - nazwa jednostki do sprawdzenia. Przykłady: <syntaxhighlight lang="lua"> local pudelko_modul=require("Module:Pudełko"); -- Podana przykładowa niepoprawna nazwa jedostki local nazwa_jednostki="Nazwa pliku [[Nazwa linku w pliku]]"; -- Fukcja zwróci wartość: local czy_poprawna_nazwa=true; local czy_poprawna_nazwa=pudelko_modul.CzyNiepoprawnaNazwa(nazwa_jednostki); </syntaxhighlight> == Funkcje nazw przestrzeni nazw == === {{Code|p["Nazwa przestrzeni nazw"](frame,...)}} === Funkcja pisze nazwę przestrzeni nazw, niezależnie, czy to jest przedmiotowa, czy dyskusji, według podanej w zmiennej {{Code|nazwa przestrzeni nazw}} dla pozycja bazowej w podanych parametrach szablonu rodzicu ramki dziecka, lub dla innej pozycji należy parametr podawaćw formie {{Code|nazwa przestrzeni nazw 1}}, {{Code|nazwa przestrzeni nazw 2}}, {{Code|nazwa przestrzeni nazw 3}},..., lub te parametry można podać w postaci ogólnej {{Code|nazwa przestrzeni nazw i}}. Parametry podaje się w parametrach rodzica wywołania tej funkcji {{Code|{{m|Pudełko|Nazwa przestrzeni nazw}}}} (ale ich nie trzeba podawać w dziecku, ale można) i w parametrach dziecka, jeśli chodzi o zmienną {{Code|numer jednostki}}, czyli np.: {{Code|{{m|Pudełko|Nazwa przestrzeni nazw|numer jednostki{{=}}<jakaś liczba całkowita dodatnia>}}}}. Te parametry przestrzenne zamiast w rodzicu w szablonie można podać w ramce dziecka, wtedy parametry dziecka mają pierwszeństwo. Przestrzeń nazw z parametrów nazw przestrzennych może odpowiadać wartości przestrzeni głównej, to wtedy odpowiednia przestrzeń nazw z parametru nazwy jednostki się nie liczy w tej funkcji, aby się liczyła należy użyć funkcji {{Code|{{sr|#p["Nazwa przestrzeni nazw 2"](frame,...)|p=Pudełko}}}}. Definicja skrótowa funkcji: <syntaxhighlight lang="lua"> p["Nazwa przestrzeni nazw"]=function(frame,czy_uwzglednic_alternatywna_nazwe,i)...end; </syntaxhighlight> Wtedy ciało funkcji tej, czyli jego definicja w środku, jest: <syntaxhighlight lang="lua"> -- Jest liczony numer parametru nazwy przestrzeni nazw, domyslnie chodzi tu o numer bazowy parametrów przestrzennych; local numer_jednostki=i or frame.args["numer jednostki"]; local liczba_numer_jednostki=((numer_jednostki)and(tonumber(numer_jednostki))or 0); local pudelko_pomocne_modul=require("Module:Pudełko/Pomocne"); -- Liczy nazwę przestrzeni nazw na podstawie podanych parametrów; return pudelko_pomocne_modul.Nazwa_przestrzeni_nazw(frame,0, czy_uwzglednic_alternatywna_nazwe,liczba_numer_jednostki); </syntaxhighlight> Parametry funkcji: * {{Code|frame}} - tablica ramki tablicy transportu, * {{Code|czy_uwzglednic_alternatywna_nazwe}} - czy ma uwzględniać nazwę przestrzeni nazw domyślną szablonu, dostępne wartości: {{Code|false}}, w której nazwa domyślna nie jest uwzględniana wtedy, oraz {{Code|nil}} i {{Code|true}}, które oznaczają to samo, w tym jeżeli ona jest uwzględniana, wtedy jest brany parametr pierwszy dziecka, który musi istnieć przy takiej wartości tego parametru, tzn. {{Code|{{m|Pudełko|Nazwa przestrzeni nazw|Szablon}}}}, a nazwa uzyskana nazwy przestrzeni nazw jest w takim przypadku błędna, a jeżeli nazwa domyślna jest błędna, czyli {{Code|{{m|Pudełko|Nazwa przestrzeni nazw|Moja przestrzeń}}}}, wtedy funkcja zwraca stan błędu {{Code|(błąd)}}. * {{Code|i}} - numer zmiennej nazwy przestrzeni nazw. Funkcja wykorzystuje {{Code|{{sr|#p.Nazwa_przestrzeni_nazw(frame,...)|p=Pudełko/Pomocne}}}} do wyznaczania ogólnego nazwy przestrzeni nazw dla pozycji bazowej i numerkowej, tzn. dla pozycji: jeden, dwa, trzy,..., itd, i ich ogólnej. Parametry ramki tablicy transportu dziecka: * {{Code|nazwa przestrzeni nazw}}, {{Code|nazwa przestrzeni nazw 1}}, {{Code|nazwa przestrzeni nazw 2}}, {{Code|nazwa przestrzeni nazw 3}},..., {{Code|nazwa przestrzeni nazw i}} - nazwy przestrzeni nazw dla pozycji bazowej, numerkowej i ogólnej, * {{Code|typ jednostki}}, {{Code|typ jednostki 1}}, {{Code|typ jednostki 2}}, {{Code|typ jednostki 3}},..., {{Code|typ jednostki i}} - typy jednostek, którym odpowiadają pewne przestrzenie przedmiotowe, dla pozycji bazowej, numerkowej i ogólnej, ** {{Code|dyskusja typu jednostki}}, {{Code|dyskusja typu jednostki 1}}, {{Code|dyskusja typ jednostki 2}}, {{Code|dyskusja typ jednostki 3}},..., {{Code|dyskusja typ jednostki i}} - czy dany typ jednostki ma przedstawiać, jeśli niepusta, przestrzeń dyskusji dla pozycji bazowej, numerkowej i ogólnej, * {{Code|numer jednostki}} - jak parametr {{Code|i}} nie został ustawiony, to wtedy liczy się ta zmienna. Parametr ramki tablicy transportu rodzica szablonu: * {{Code|nazwa przestrzeni nazw}}, {{Code|nazwa przestrzeni nazw 1}}, {{Code|nazwa przestrzeni nazw 2}}, {{Code|nazwa przestrzeni nazw 3}},..., {{Code|nazwa przestrzeni nazw i}} - nazwy przestrzeni nazw dla pozycji bazowej oraz zwykłej i ogólnej numerkowej, * {{Code|typ jednostki}}, {{Code|typ jednostki 1}}, {{Code|typ jednostki 2}}, {{Code|typ jednostki 3}},..., {{Code|typ jednostki i}} - typy jednostek, którym odpowiadają pewne przestrzenie przedmiotowe, dla pozycji bazowej, numerkowej i ogólnej, ** {{Code|dyskusja typu jednostki}}, {{Code|dyskusja typu jednostki 1}}, {{Code|dyskusja typ jednostki 2}}, {{Code|dyskusja typ jednostki 3}},..., {{Code|dyskusja typ jednostki i}} - czy dany typ jednostki ma przedstawiać, jeśli niepusta, przestrzeń dyskusji dla pozycji bazowej, numerkowej i ogólnej. Przykłady: <syntaxhighlight lang="mediawiki"> {{Nazwa szablonu|nazwa przestrzeni nazw=Wikibooks|nazwa przestrzeni nazw 2=Szablon|nazwa przestrzeni nazw i=Moduł}} </syntaxhighlight> W dziecku powiedzmy jest wywołanie, i szukamy nazwy przestrzeni nazw o numerze dwa, która nie została podana, ale istnieje za to jej wersji ogólna {{Code|nazwa przestrzeni nazw i}} i domyślna {{Code|nazwa przestrzeni nazw}}: <syntaxhighlight lang="mediawiki"> {{#invoke:Pudełko|Nazwa przestrzeni nazw|numer jednostki=1}} </syntaxhighlight> Na podstawie powyższego przykładu otrzymamy wynik o schemacie, nie wyniku, bo tam nie ma zmiennej {{Code|nazwa przestrzeni nazw 1}}, ale jest {{Code|nazwa przestrzeni nazw i}}: <syntaxhighlight lang="mediawiki"> <!-- Ale nie "nazwa przestrzeni nazw", bo jej nie ma, ale za to istnieje "nazwa przestrzeni nazw i"; --> <!-- nazwa przestrzeni nazw 2=nazwa przestrzeni nazw i=Moduł; --> <!-- Czyli wynik: --> Moduł <!-- Widzimy, że wygenerowała się nazwa przestrzeni nazw, którą jest przestrzeń programowa, którą również jest "Szablon"; --> </syntaxhighlight> Nie jest brana w tym powyższym przykładzie zmienna {{Code|nazwa przestrzeni nazw}}, bo jej nie ma, ale za to jest {{Code|nazwa przestrzeni nazw i}}, bo ona występuje jako parametr domyślny ogólny dla parametrów numerkowych. Przykłady w wikikodzie: * {{Code|{{m|Pudełko|Nazwa przestrzeni nazw|numer jednostki{{=}}2}}}} → {{Tt|{{#invoke:Pudełko|Nazwa przestrzeni nazw|numer jednostki=2}}}} * {{Code|{{m|Pudełko|Nazwa przestrzeni nazw|Szablon|nazwa przestrzeni nazw i{{=}}Moja przestrzeń|numer jednostki{{=}}2}}}} → {{Tt|{{#invoke:Pudełko|Nazwa przestrzeni nazw|Szablon|nazwa przestrzeni nazw i=Moja przestrzeń|numer jednostki=2}}}} * {{Code|{{m|Pudełko|Nazwa przestrzeni nazw|nazwa przestrzeni nazw 2{{=}}Szablon|numer jednostki{{=}}2}}}} → {{Tt|{{#invoke:Pudełko|Nazwa przestrzeni nazw|nazwa przestrzeni nazw 2=Szablon|numer jednostki=2}}}} * {{Code|{{m|Pudełko|Nazwa przestrzeni nazw|nazwa przestrzeni nazw 2{{=}}Szablon|numer jednostki{{=}}2}}}} → {{Tt|{{#invoke:Pudełko|Nazwa przestrzeni nazw|nazwa przestrzeni nazw i=Szablon|numer jednostki=2}}}} * {{Code|{{m|Pudełko|Nazwa przestrzeni nazw|nazwa przestrzeni nazw{{=}}Szablon|numer jednostki{{=}}2}}}} → {{Tt|{{#invoke:Pudełko|Nazwa przestrzeni nazw|nazwa przestrzeni nazw=Szablon|numer jednostki=2}}}} Powyżej dla przykładu podano parametry nie w rodzicu w szablonie, tylko w dziecku, jeśli chodzi o parametry nazw przestrzeni nazw, ale ich się za to nie powinno podawać w tych ramach, tylko w szablonach, w których wywoływane są te ramki pudełek {{Code|{{m|Pudełko}}}}, ale tak tutaj tak zrobiono by było najłatwiej sprawdzić działanie tego typu funkcji. Analogicznie możemy podawać parametry typu jednostki, np.: wywołaniu modułowym {{Code|{{m|Pudełko|Nazwa przestrzeni nazw|typ jednostki 2{{=}}strona szablonu|numer jednostki{{=}}2}}}}, ale o tym więcej w rozdziałach {{Code|{{sr|# p["Typ jednostki"](frame,i)|p=Pudełko}}}}, {{Code|{{sr|#p["Typ jednostki 2"](frame,i)|p=Pudełko}}}}, {{Code|{{sr|#p["Typ jednostki 3"](frame,i)|p=Pudełko}}}} itp. w „{{sr|#Funkcje typu jednostki|p=Pudełko}}”, on definiuje przestrzenie przedmiotowe, ale można użyć parametru dyskusji typu jednostki z wartością niepustą, wtedy wyświetli się nazwa przestrzeni nazw dyskusji. Również parametry typu jednostki nie powinno się podawać w dziecku w ramce, tylko w rodzicu w szablonie jako parametry, w którym ta ramka jest wywoływana, ale tutaj podano jedynie dla przykładu, jak najłatwiej sprawdzić działanie tych parametrów tej funkcji. Najpierw w funkcji nagłówku brane są parametry nazw przestrzeni nazw, a jeżeli ich nie ma, to parametry typu jednostki, a jeżeli nie ma, to generowane są nazwy na podstawie aktualnego modułu. === {{Code|p["Nazwa przedmiotowej przestrzeni nazw"](frame,...)}} === Funkcja pisze przedmiotową nazwę przestrzeni nazw jakikolwiek nazwy przestrzeni nazw (tzn. nazwę przedmiotową nazwy przestrzenie nazw, czyli nie dyskusji, zamieniana jest na nią samą, czyli identyfikator przestrzeni się nie zmienia, a dyskusji, nie przedmiotową, przekształca się na przedmiotową jej odpowiadającą, czyli w tym przypadku identyfikator przestrzeni zmniejsza się o numer mniej), według podanej w zmiennej {{Code|nazwa przestrzeni nazw}} dla pozycja bazowej w podanych parametrach szablonu rodzicu ramki dziecka, lub dla innej pozycji należy parametr podawać w formie {{Code|nazwa przestrzeni nazw 1}}, {{Code|nazwa przestrzeni nazw 2}}, {{Code|nazwa przestrzeni nazw 3}},..., lub te parametry można podać w postaci ogólnej {{Code|nazwa przestrzeni nazw i}}. Parametry podaje się w parametrach rodzica wywołania tej funkcji {{Code|{{m|Pudełko|Nazwa przedmiotowej przestrzeni nazw}}}} (ale ich nie trzeba podawać w dziecku, ale można) i w parametrach dziecka, jeśli chodzi o zmienną {{Code|numer jednostki}}, czyli np.: {{Code|{{m|Pudełko|Nazwa przedmiotowej przestrzeni nazw|numer jednostki{{=}}<jakaś liczba całkowita dodatnia>}}}}. Te parametry przestrzenne zamiast w rodzicu w szablonie można podać w ramce dziecka, wtedy parametry dziecka mają pierwszeństwo. Parametry przestrzenne mogą mogą być podane w postaci przestrzeni przedmiotowej lub dyskusji, ale ta funkcja zawsze ją zamienia na przedmiotową. Przestrzeń nazw z parametrów nazw przestrzennych może odpowiadać wartości przestrzeni głównej, to wtedy odpowiednia przestrzeń nazw z parametru nazwy jednostki się nie liczy w tej funkcji, aby się liczyła należy użyć funkcji {{Code|{{sr|#p["Nazwa przedmiotowej przestrzeni nazw 2"](frame,...)|p=Pudełko}}}}. Definicja skrótowa funkcji: <syntaxhighlight lang="lua"> p["Nazwa przedmiotowej przestrzeni nazw"]=function(frame,czy_uwzglednic_alternatywna_nazwe,i)...end; </syntaxhighlight> Wtedy ciało funkcji tej, czyli jego definicja w środku, jest: <syntaxhighlight lang="lua"> -- Jest liczony numer parametru nazwy przestrzeni nazw, domyslnie chodzi tu o numer bazowy parametrów przestrzennych; local numer_jednostki=i or frame.args["numer jednostki"]; local liczba_numer_jednostki=((numer_jednostki)and(tonumber(numer_jednostki))or 0); local pudelko_pomocne_modul=require("Module:Pudełko/Pomocne"); -- Liczy nazwę przestrzeni nazw przedmiotową na podstawie podanych parametrów; return pudelko_pomocne_modul.Nazwa_przestrzeni_nazw(frame,1, czy_uwzglednic_alternatywna_nazwe,liczba_numer_jednostki); </syntaxhighlight> Parametry funkcji: * {{Code|frame}} - tablica ramki tablicy transportu, * {{Code|czy_uwzglednic_alternatywna_nazwe}} - czy ma uwzględniać nazwę przestrzeni nazw domyślną szablonu, dostępne wartości: {{Code|false}}, w której nazwa domyślna nie jest uwzględniana wtedy, oraz {{Code|nil}} i {{Code|true}}, które oznaczają to samo, w tym jeżeli ona jest uwzględniana, wtedy jest brany parametr pierwszy dziecka, który musi istnieć przy takiej wartości tego parametru, tzn. {{Code|{{m|Pudełko|Nazwa przedmiotowej przestrzeni nazw|Dyskusja szablonu}}}} - ta nazwa domyślna zostanie zamieniona na przedmiotową, a jak ona by była przedmiotowa, to żadnej zamiany by nie było, a nazwa uzyskana z nazwy przestrzeni nazw z parametrów przestrzennych jest w takim przypadku błędna, to w takim razie brany jest ten parametr, a jeżeli ta nazwa domyślna jest błędna, czyli {{Code|{{m|Pudełko|Nazwa przedmiotowej przestrzeni nazw|Moja przestrzeń}}}}, wtedy funkcja zwraca stan błędu {{Code|(błąd)}}. * {{Code|i}} - numer zmiennej nazwy przestrzeni nazw. Funkcja wykorzystuje {{Code|{{sr|#p.Nazwa_przestrzeni_nazw(frame,...)|p=Pudełko/Pomocne}}}} do wyznaczania ogólnego nazwy przestrzeni nazw dla pozycji bazowej i numerkowej, tzn. dla pozycji: jeden, dwa, trzy,..., itd, i ich ogólnej. Parametry ramki tablicy transportu dziecka: * {{Code|nazwa przestrzeni nazw}}, {{Code|nazwa przestrzeni nazw 1}}, {{Code|nazwa przestrzeni nazw 2}}, {{Code|nazwa przestrzeni nazw 3}},..., {{Code|nazwa przestrzeni nazw i}} - nazwy przestrzeni nazw dla pozycji bazowej, numerkowej i ogólnej, * {{Code|typ jednostki}}, {{Code|typ jednostki 1}}, {{Code|typ jednostki 2}}, {{Code|typ jednostki 3}},..., {{Code|typ jednostki i}} - typy jednostek, którym odpowiadają pewne przestrzenie przedmiotowe, dla pozycji bazowej, numerkowej i ogólnej, ** {{Code|dyskusja typu jednostki}}, {{Code|dyskusja typu jednostki 1}}, {{Code|dyskusja typ jednostki 2}}, {{Code|dyskusja typ jednostki 3}},..., {{Code|dyskusja typ jednostki i}} - czy dany typ jednostki ma przedstawiać, jeśli niepusta, przestrzeń dyskusji dla pozycji bazowej, numerkowej i ogólnej, * {{Code|numer jednostki}} - jak parametr {{Code|i}} nie został ustawiony, to wtedy liczy się ta zmienna. Parametr ramki tablicy transportu rodzica szablonu: * {{Code|nazwa przestrzeni nazw}}, {{Code|nazwa przestrzeni nazw 1}}, {{Code|nazwa przestrzeni nazw 2}}, {{Code|nazwa przestrzeni nazw 3}},..., {{Code|nazwa przestrzeni nazw i}} - nazwy przestrzeni nazw dla pozycji bazowej oraz zwykłej i ogólnej numerkowej, * {{Code|typ jednostki}}, {{Code|typ jednostki 1}}, {{Code|typ jednostki 2}}, {{Code|typ jednostki 3}},..., {{Code|typ jednostki i}} - typy jednostek, którym odpowiadają pewne przestrzenie przedmiotowe, dla pozycji bazowej, numerkowej i ogólnej, ** {{Code|dyskusja typu jednostki}}, {{Code|dyskusja typu jednostki 1}}, {{Code|dyskusja typ jednostki 2}}, {{Code|dyskusja typ jednostki 3}},..., {{Code|dyskusja typ jednostki i}} - czy dany typ jednostki ma przedstawiać, jeśli niepusta, przestrzeń dyskusji dla pozycji bazowej, numerkowej i ogólnej. Przykłady: <syntaxhighlight lang="mediawiki"> {{Nazwa szablonu|nazwa przestrzeni nazw=Dyskusja Wikibooks|nazwa przestrzeni nazw 2=Dyskusja szablonu|nazwa przestrzeni nazw i=Dyskusja modułu}} </syntaxhighlight> W dziecku powiedzmy jest wywołanie, i szukamy nazwy przestrzeni nazw o numerze dwa, która nie została podana, ale istnieje za to jej wersji ogólna {{Code|nazwa przestrzeni nazw i}} i domyślna {{Code|nazwa przestrzeni nazw}}: <syntaxhighlight lang="mediawiki"> {{#invoke:Pudełko|Nazwa przedmiotowej przestrzeni nazw|numer jednostki=1}} </syntaxhighlight> Na podstawie powyższego przykładu otrzymamy wynik o schemacie, nie wyniku, bo tam nie ma zmiennej {{Code|nazwa przestrzeni nazw 1}}, ale jest {{Code|nazwa przestrzeni nazw i}}: <syntaxhighlight lang="mediawiki"> <!-- Ale nie "nazwa przestrzeni nazw", bo jej nie ma, ale za to istnieje "nazwa przestrzeni nazw i"; --> <!-- nazwa przestrzeni nazw 2=nazwa przestrzeni nazw i=Dyskusja modułu; --> <!-- Czyli wynik: --> Moduł <!-- Widzimy, że wygenerowała się nazwa przestrzeni nazw, którą jest przestrzeń przedmiotowa programowa przestrzeni dyskusji "Dyskusja modułu", którą również jest "Szablon" jego przestrzeni dyskusji "Dyskusja szablonu", a dla ich przestrzeni przedmiotowej, zamiast dyskusji, to samo przekształca się na to samo; --> </syntaxhighlight> Nie jest brana w tym powyższym przykładzie zmienna {{Code|nazwa przestrzeni nazw}}, bo jej nie ma, ale za to jest {{Code|nazwa przestrzeni nazw i}}, bo ona występuje jako parametr domyślny ogólny dla parametrów numerkowych. Przykłady w wikikodzie: * {{Code|{{m|Pudełko|Nazwa przedmiotowej przestrzeni nazw|numer jednostki{{=}}2}}}} → {{Tt|{{#invoke:Pudełko|Nazwa przedmiotowej przestrzeni nazw|numer jednostki=2}}}} * {{Code|{{m|Pudełko|Nazwa przedmiotowej przestrzeni nazw|Dyskusja szablonu|nazwa przestrzeni nazw i{{=}}Moja przestrzeń|numer jednostki{{=}}2}}}} → {{Tt|{{#invoke:Pudełko|Nazwa przedmiotowej przestrzeni nazw|Dyskusja szablonu|nazwa przestrzeni nazw i=Moja przestrzeń|numer jednostki=2}}}} * {{Code|{{m|Pudełko|Nazwa przedmiotowej przestrzeni nazw|nazwa przestrzeni nazw 2{{=}}Dyskusja szablonu|numer jednostki{{=}}2}}}} → {{Tt|{{#invoke:Pudełko|Nazwa przedmiotowej przestrzeni nazw|nazwa przestrzeni nazw 2=Dyskusja szablonu|numer jednostki=2}}}} * {{Code|{{m|Pudełko|Nazwa przedmiotowej przestrzeni nazw|nazwa przestrzeni nazw 2{{=}}Dyskusja szablonu|numer jednostki{{=}}2}}}} → {{Tt|{{#invoke:Pudełko|Nazwa przedmiotowej przestrzeni nazw|nazwa przestrzeni nazw i=Dyskusja szablonu|numer jednostki=2}}}} * {{Code|{{m|Pudełko|Nazwa przedmiotowej przestrzeni nazw|nazwa przestrzeni nazw{{=}}Dyskusja szablonu|numer jednostki{{=}}2}}}} → {{Tt|{{#invoke:Pudełko|Nazwa przedmiotowej przestrzeni nazw|nazwa przestrzeni nazw=Dyskusja szablonu|numer jednostki=2}}}} Powyżej dla przykładu podano parametry nie w rodzicu w szablonie, tylko w dziecku, jeśli chodzi o parametry nazw przestrzeni nazw, ale ich się za to nie powinno podawać w tych ramach, tylko w szablonach, w których wywoływane są te ramki pudełek {{Code|{{m|Pudełko}}}}, ale tak tutaj tak zrobiono by było najłatwiej sprawdzić działanie tego typu funkcji. Analogicznie możemy podawać parametry typu jednostki, np.: wywołaniu modułowym {{Code|{{m|Pudełko|Nazwa przedmiotowej przestrzeni nazw|typ jednostki 2{{=}}strona szablonu|numer jednostki{{=}}2}}}}, ale o tym więcej w rozdziałach {{Code|{{sr|# p["Typ jednostki"](frame,i)|p=Pudełko}}}}, {{Code|{{sr|#p["Typ jednostki 2"](frame,i)|p=Pudełko}}}}, {{Code|{{sr|#p["Typ jednostki 3"](frame,i)|p=Pudełko}}}} itp. w „{{sr|#Funkcje typu jednostki|p=Pudełko}}”, ale wtedy ta sama nazwa przestrzeni nazw reprezentowana przez {{Parametr|typ jednostki 2|strona szablonu}}, jest zamieniana na to samo, lepiej jest tutaj używać parametrów przestrzennych nazw niż typu jednostki, bo typ jednostki ma taką samą wartość dla przestrzeni przedmiotowej, co dyskusji. Tutaj parametr dyskusji typu jednostki bazowy i numerkowy ogólny, czy szczegółowy, nie gra roli, bo nawet, gdy wygenerujemy nazwę przestrzeni dyskusji za pomoca tego parametru, to i tak otrzymamy na samym końcu jego nazwę przedmiotową. Również parametry typu jednostki nie powinno się podawać w dziecku w ramce, tylko w rodzicu w szablonie jako parametry, w którym ta ramka jest wywoływana, ale tutaj podano jedynie dla przykładu, jak najłatwiej sprawdzić działanie tych parametrów tej funkcji. Najpierw w funkcji nagłówku brane są parametry nazw przestrzeni nazw, a jeżeli ich nie ma, to parametry typu jednostki, a jeżeli nie ma, to generowane są nazwy na podstawie aktualnego modułu. === {{Code|p["Nazwa przestrzeni nazw dyskusji"](frame,...)}} === Funkcja pisze nazwę przestrzeni nazw dyskusji jakikolwiek nazwy przestrzeni nazw (tzn. nazwę przedmiotową nazwy przestrzenie nazw, czyli nie dyskusji, zamieniana jest na dyskusji, czyli identyfikator przestrzeni się zmienia jeden wyżej, a dyskusji, nie przedmiotową, przekształca się na tą samą), według podanej w zmiennej {{Code|nazwa przestrzeni nazw}} dla pozycja bazowej w podanych parametrach szablonu rodzicu ramki dziecka, lub dla innej pozycji należy parametr podawać w formie {{Code|nazwa przestrzeni nazw 1}}, {{Code|nazwa przestrzeni nazw 2}}, {{Code|nazwa przestrzeni nazw 3}},..., lub te parametry można podać w postaci ogólnej {{Code|nazwa przestrzeni nazw i}}. Parametry podaje się w parametrach rodzica wywołania tej funkcji {{Code|{{m|Pudełko|Nazwa przestrzeni nazw dyskusji}}}} (ale ich nie trzeba podawać w dziecku, ale można) i w parametrach dziecka, jeśli chodzi o zmienną {{Code|numer jednostki}}, czyli np.: {{Code|{{m|Pudełko|Nazwa przestrzeni nazw dyskusji|numer jednostki{{=}}<jakaś liczba całkowita dodatnia>}}}}. Te parametry przestrzenne zamiast w rodzicu w szablonie można podać w ramce dziecka, wtedy parametry dziecka mają pierwszeństwo. Parametry przestrzenne mogą mogą być podane w postaci przestrzeni przedmiotowej lub dyskusji, ale ta funkcja zawsze ją zamienia na dyskusji. Przestrzeń nazw z parametrów nazw przestrzennych może odpowiadać wartości przestrzeni głównej, to wtedy odpowiednia przestrzeń nazw z parametru nazwy jednostki się nie liczy w tej funkcji, aby się liczyła należy użyć funkcji {{Code|{{sr|#p["Nazwa przestrzeni nazw dyskusji 2"](frame,...)|p=Pudełko}}}}. Definicja skrótowa funkcji: <syntaxhighlight lang="lua"> p["Nazwa przestrzeni nazw dyskusji"]=function(frame,czy_uwzglednic_alternatywna_nazwe,i)...end; </syntaxhighlight> Wtedy ciało funkcji tej, czyli jego definicja w środku, jest: <syntaxhighlight lang="lua"> -- Jest liczony numer parametru nazwy przestrzeni nazw, domyslnie chodzi tu o numer bazowy parametrów przestrzennych; local numer_jednostki=i or frame.args["numer jednostki"]; local liczba_numer_jednostki=((numer_jednostki)and(tonumber(numer_jednostki))or 0); local pudelko_pomocne_modul=require("Module:Pudełko/Pomocne"); -- Liczy nazwę przestrzeni nazw dyskusji na podstawie podanych parametrów; return pudelko_pomocne_modul.Nazwa_przestrzeni_nazw(frame,2, czy_uwzglednic_alternatywna_nazwe,liczba_numer_jednostki); </syntaxhighlight> Parametry funkcji: * {{Code|frame}} - tablica ramki tablicy transportu, * {{Code|czy_uwzglednic_alternatywna_nazwe}} - czy ma uwzględniać nazwę przestrzeni nazw domyślną szablonu, dostępne wartości: {{Code|false}}, w której nazwa domyślna nie jest uwzględniana wtedy, oraz {{Code|nil}} i {{Code|true}}, które oznaczają to samo, w tym jeżeli ona jest uwzględniana, wtedy jest brany parametr pierwszy dziecka, który musi istnieć przy takiej wartości tego parametru, tzn. {{Code|{{m|Pudełko|Nazwa przestrzeni nazw dyskusji|Szablon}}}} - ta nazwa domyślna zostanie przekształcona na dyskusji, a jeżeli ona by była dyskusji, to nie byłoby żadnego przekształcenia, a nazwa uzyskana nazwy przestrzeni nazw z parametrów przestrzennych jest w takim przypadku błędna, to w takim razie brany jest ten parametr, a jeżeli nazwa domyślna jest błędna, czyli {{Code|{{m|Pudełko|Nazwa przestrzeni nazw dyskusji|Moja przestrzeń}}}}, wtedy funkcja zwraca stan błędu {{Code|(błąd)}}. * {{Code|i}} - numer zmiennej nazwy przestrzeni nazw. Funkcja wykorzystuje {{Code|{{sr|#p.Nazwa_przestrzeni_nazw(frame,...)|p=Pudełko/Pomocne}}}} do wyznaczania ogólnego nazwy przestrzeni nazw dla pozycji bazowej i numerkowej, tzn. dla pozycji: jeden, dwa, trzy,..., itd, i ich ogólnej. Parametry ramki tablicy transportu dziecka: * {{Code|nazwa przestrzeni nazw}}, {{Code|nazwa przestrzeni nazw 1}}, {{Code|nazwa przestrzeni nazw 2}}, {{Code|nazwa przestrzeni nazw 3}},..., {{Code|nazwa przestrzeni nazw i}} - nazwy przestrzeni nazw dla pozycji bazowej, numerkowej i ogólnej, * {{Code|typ jednostki}}, {{Code|typ jednostki 1}}, {{Code|typ jednostki 2}}, {{Code|typ jednostki 3}},..., {{Code|typ jednostki i}} - typy jednostek, którym odpowiadają pewne przestrzenie przedmiotowe, dla pozycji bazowej, numerkowej i ogólnej, ** {{Code|dyskusja typu jednostki}}, {{Code|dyskusja typu jednostki 1}}, {{Code|dyskusja typ jednostki 2}}, {{Code|dyskusja typ jednostki 3}},..., {{Code|dyskusja typ jednostki i}} - czy dany typ jednostki ma przedstawiać, jeśli niepusta, przestrzeń dyskusji dla pozycji bazowej, numerkowej i ogólnej, * {{Code|numer jednostki}} - jak parametr {{Code|i}} nie został ustawiony, to wtedy liczy się ta zmienna. Parametr ramki tablicy transportu rodzica szablonu: * {{Code|nazwa przestrzeni nazw}}, {{Code|nazwa przestrzeni nazw 1}}, {{Code|nazwa przestrzeni nazw 2}}, {{Code|nazwa przestrzeni nazw 3}},..., {{Code|nazwa przestrzeni nazw i}} - nazwy przestrzeni nazw dla pozycji bazowej oraz zwykłej i ogólnej numerkowej, * {{Code|typ jednostki}}, {{Code|typ jednostki 1}}, {{Code|typ jednostki 2}}, {{Code|typ jednostki 3}},..., {{Code|typ jednostki i}} - typy jednostek, którym odpowiadają pewne przestrzenie przedmiotowe, dla pozycji bazowej, numerkowej i ogólnej, ** {{Code|dyskusja typu jednostki}}, {{Code|dyskusja typu jednostki 1}}, {{Code|dyskusja typ jednostki 2}}, {{Code|dyskusja typ jednostki 3}},..., {{Code|dyskusja typ jednostki i}} - czy dany typ jednostki ma przedstawiać, jeśli niepusta, przestrzeń dyskusji dla pozycji bazowej, numerkowej i ogólnej. Przykłady: <syntaxhighlight lang="mediawiki"> {{Nazwa szablonu|nazwa przestrzeni nazw=Wikibooks|nazwa przestrzeni nazw 2=Szablon|nazwa przestrzeni nazw i=Moduł}} </syntaxhighlight> W dziecku powiedzmy jest wywołanie, i szukamy nazwy przestrzeni nazw o numerze dwa, która nie została podana, ale istnieje za to jej wersji ogólna {{Code|nazwa przestrzeni nazw i}} i domyślna {{Code|nazwa przestrzeni nazw}}: <syntaxhighlight lang="mediawiki"> {{#invoke:Pudełko|Nazwa przestrzeni nazw dyskusji|numer jednostki=1}} </syntaxhighlight> Na podstawie powyższego przykładu otrzymamy wynik o schemacie, nie wyniku, bo tam nie ma zmiennej {{Code|nazwa przestrzeni nazw 1}}, ale jest {{Code|nazwa przestrzeni nazw i}}: <syntaxhighlight lang="mediawiki"> <!-- Ale nie "nazwa przestrzeni nazw", bo jej nie ma, ale za to istnieje "nazwa przestrzeni nazw i"; --> <!-- nazwa przestrzeni nazw 2=nazwa przestrzeni nazw i=Moduł; --> <!-- Czyli wynik: --> Dyskusja modułu <!-- Widzimy, że wygenerowała się nazwa przestrzeni nazw, którą jest przestrzeń dyskusji przestrzeni programowej przestrzeni przedmiotowej "Moduł", którą również jest "Szablon" jego przestrzeni dyskusji "Dyskusja szablonu", a dla ich przestrzeni przedmiotowej, zamiast dyskusji, to przekształca się na dyskusji jej odpowiadającą; --> </syntaxhighlight> Nie jest brana w tym powyższym przykładzie zmienna {{Code|nazwa przestrzeni nazw}}, bo jej nie ma, ale za to jest {{Code|nazwa przestrzeni nazw i}}, bo ona występuje jako parametr domyślny ogólny dla parametrów numerkowych. Przykłady w wikikodzie: * {{Code|{{m|Pudełko|Nazwa przestrzeni nazw dyskusji|numer jednostki{{=}}2}}}} → {{Tt|{{#invoke:Pudełko|Nazwa przestrzeni nazw dyskusji|numer jednostki=2}}}} * {{Code|{{m|Pudełko|Nazwa przestrzeni nazw dyskusji|Szablon|nazwa przestrzeni nazw i{{=}}Moja przestrzeń|numer jednostki{{=}}2}}}} → {{Tt|{{#invoke:Pudełko|Nazwa przestrzeni nazw dyskusji|Szablon|nazwa przestrzeni nazw i=Moja przestrzeń|numer jednostki=2}}}} * {{Code|{{m|Pudełko|Nazwa przestrzeni nazw dyskusji|nazwa przestrzeni nazw 2{{=}}Szablon|numer jednostki{{=}}2}}}} → {{Tt|{{#invoke:Pudełko|Nazwa przestrzeni nazw dyskusji|nazwa przestrzeni nazw 2=Szablon|numer jednostki=2}}}} * {{Code|{{m|Pudełko|Nazwa przestrzeni nazw dyskusji|nazwa przestrzeni nazw 2{{=}}Szablon|numer jednostki{{=}}2}}}} → {{Tt|{{#invoke:Pudełko|Nazwa przestrzeni nazw dyskusji|nazwa przestrzeni nazw i=Szablon|numer jednostki=2}}}} * {{Code|{{m|Pudełko|Nazwa przestrzeni nazw dyskusji|nazwa przestrzeni nazw{{=}}Szablon|numer jednostki{{=}}2}}}} → {{Tt|{{#invoke:Pudełko|Nazwa przestrzeni nazw dyskusji|nazwa przestrzeni nazw=Szablon|numer jednostki=2}}}} Powyżej dla przykładu podano parametry nie w rodzicu w szablonie, tylko w dziecku, jeśli chodzi o parametry nazw przestrzeni nazw, ale ich się za to nie powinno podawać w tych ramach, tylko w szablonach, w których wywoływane są te ramki pudełek {{Code|{{m|Pudełko}}}}, ale tak tutaj tak zrobiono by było najłatwiej sprawdzić działanie tego typu funkcji. Analogicznie możemy podawać parametry typu jednostki, np.: wywołaniu modułowym {{Code|{{m|Pudełko|Nazwa przestrzeni nazw dyskusji|typ jednostki 2{{=}}strona szablonu|numer jednostki{{=}}2}}}}, ale o tym więcej w rozdziałach {{Code|{{sr|# p["Typ jednostki"](frame,i)|p=Pudełko}}}}, {{Code|{{sr|#p["Typ jednostki 2"](frame,i)|p=Pudełko}}}}, {{Code|{{sr|#p["Typ jednostki 3"](frame,i)|p=Pudełko}}}} itp. w „{{sr|#Funkcje typu jednostki|p=Pudełko}}”, ale wtedy nazwa przestrzeni nazw reprezentowana przez {{Parametr|typ jednostki 2|strona szablonu}}, jest zamieniana na nazwę przestrzeni nazw dyskusji. Parametr dyskusji typu jednostki bazowy lub dla danego numerka ogólny, czy szczegółowy, nie gra roli. Również parametry typu jednostki nie powinno się podawać w dziecku w ramce, tylko w rodzicu w szablonie jako parametry, w którym ta ramka jest wywoływana, ale tutaj podano jedynie dla przykładu, jak najłatwiej sprawdzić działanie tych parametrów tej funkcji. Najpierw w funkcji nagłówku brane są parametry nazw przestrzeni nazw, a jeżeli ich nie ma, to parametry typu jednostki, a jeżeli nie ma, to generowane są nazwy na podstawie aktualnego modułu. == Funkcje nazw przestrzeni nazw drugiej wersji == === {{Code|p["Nazwa przestrzeni nazw 2"](frame,...)}} === Funkcja pisze nazwę przestrzeni nazw, niezależnie, czy to jest przedmiotowa, czy dyskusji, według podanej w zmiennej {{Code|nazwa przestrzeni nazw}} dla pozycja bazowej w podanych parametrach szablonu rodzicu ramki dziecka, lub dla innej pozycji należy parametr podawaćw formie {{Code|nazwa przestrzeni nazw 1}}, {{Code|nazwa przestrzeni nazw 2}}, {{Code|nazwa przestrzeni nazw 3}},..., lub te parametry można podać w postaci ogólnej {{Code|nazwa przestrzeni nazw i}}. Parametry podaje się w parametrach rodzica wywołania tej funkcji {{Code|{{m|Pudełko|Nazwa przestrzeni nazw 2}}}} (ale ich nie trzeba podawać w dziecku, ale można) i w parametrach dziecka, jeśli chodzi o zmienną {{Code|numer jednostki}}, czyli np.: {{Code|{{m|Pudełko|Nazwa przestrzeni nazw 2|numer jednostki{{=}}<jakaś liczba całkowita dodatnia>}}}}. Te parametry przestrzenne zamiast w rodzicu w szablonie można podać w ramce dziecka, wtedy parametry dziecka mają pierwszeństwo. Przestrzeń nazw z parametrów nazw przestrzennych może odpowiadać wartości przestrzeni głównej, to wtedy odpowiednia przestrzeń nazw z parametru nazwy jednostki się liczy w tej funkcji, wtedy jest liczona nazwa przestrzeni nazw z tego parametru. Definicja skrótowa funkcji: <syntaxhighlight lang="lua"> p["Nazwa przestrzeni nazw 2"]=function(frame,czy_uwzglednic_alternatywna_nazwe,i)...end; </syntaxhighlight> Wtedy ciało funkcji tej, czyli jego definicja w środku, jest: <syntaxhighlight lang="lua"> local pudelko_pomocne_modul=require("Module:Pudełko/Pomocne"); -- Liczy nazwę przestrzeni nazw, jeżeli z parametrów przestrzennych przestrzeń wskazuje na główną, to wtedy jest liczona przestrzeń nazw z nazwy jednostki; return pudelko_pomocne_modul.Nazwa_przestrzeni_nazw_2(frame,czy_uwzglednic_alternatywna_nazwe,i) </syntaxhighlight> Parametry funkcji: * {{Code|frame}} - tablica ramki tablicy transportu, * {{Code|czy_uwzglednic_alternatywna_nazwe}} - czy ma uwzględniać nazwę przestrzeni nazw domyślną szablonu, dostępne wartości: {{Code|false}}, w której nazwa domyślna nie jest uwzględniana wtedy, oraz {{Code|nil}} i {{Code|true}}, które oznaczają to samo, w tym jeżeli ona jest uwzględniana, wtedy jest brany parametr pierwszy dziecka, który musi istnieć przy takiej wartości tego parametru, tzn. {{Code|{{m|Pudełko|Nazwa przestrzeni nazw 2|Szablon}}}}, a nazwa uzyskana nazwy przestrzeni nazw jest w takim przypadku błędna, a jeżeli nazwa domyślna jest błędna, czyli {{Code|{{m|Pudełko|Nazwa przestrzeni nazw 2|Moja przestrzeń}}}}, wtedy funkcja zwraca stan błędu {{Code|(błąd)}}. * {{Code|i}} - numer zmiennej nazwy przestrzeni nazw. Funkcja wykorzystuje {{Code|{{sr|#p.Nazwa_przestrzeni_nazw_2(frame,...)|p=Pudełko/Pomocne}}}} do wyznaczania ogólnego nazwy przestrzeni nazw dla pozycji bazowej i numerkowej, tzn. dla pozycji: jeden, dwa, trzy,..., itd, i ich ogólnej. Parametry ramki tablicy transportu dziecka: * {{Code|nazwa przestrzeni nazw}}, {{Code|nazwa przestrzeni nazw 1}}, {{Code|nazwa przestrzeni nazw 2}}, {{Code|nazwa przestrzeni nazw 3}},..., {{Code|nazwa przestrzeni nazw i}} - nazwy przestrzeni nazw dla pozycji bazowej, numerkowej i ogólnej, * {{Code|typ jednostki}}, {{Code|typ jednostki 1}}, {{Code|typ jednostki 2}}, {{Code|typ jednostki 3}},..., {{Code|typ jednostki i}} - typy jednostek, którym odpowiadają pewne przestrzenie przedmiotowe, dla pozycji bazowej, numerkowej i ogólnej, ** {{Code|dyskusja typu jednostki}}, {{Code|dyskusja typu jednostki 1}}, {{Code|dyskusja typ jednostki 2}}, {{Code|dyskusja typ jednostki 3}},..., {{Code|dyskusja typ jednostki i}} - czy dany typ jednostki ma przedstawiać, jeśli niepusta, przestrzeń dyskusji dla pozycji bazowej, numerkowej i ogólnej, * {{Code|numer jednostki}} - jak parametr {{Code|i}} nie został ustawiony, to wtedy liczy się ta zmienna. Parametr ramki tablicy transportu rodzica szablonu: * {{Code|nazwa przestrzeni nazw}}, {{Code|nazwa przestrzeni nazw 1}}, {{Code|nazwa przestrzeni nazw 2}}, {{Code|nazwa przestrzeni nazw 3}},..., {{Code|nazwa przestrzeni nazw i}} - nazwy przestrzeni nazw dla pozycji bazowej oraz zwykłej i ogólnej numerkowej, * {{Code|typ jednostki}}, {{Code|typ jednostki 1}}, {{Code|typ jednostki 2}}, {{Code|typ jednostki 3}},..., {{Code|typ jednostki i}} - typy jednostek, którym odpowiadają pewne przestrzenie przedmiotowe, dla pozycji bazowej, numerkowej i ogólnej, ** {{Code|dyskusja typu jednostki}}, {{Code|dyskusja typu jednostki 1}}, {{Code|dyskusja typ jednostki 2}}, {{Code|dyskusja typ jednostki 3}},..., {{Code|dyskusja typ jednostki i}} - czy dany typ jednostki ma przedstawiać, jeśli niepusta, przestrzeń dyskusji dla pozycji bazowej, numerkowej i ogólnej. Przykłady: <syntaxhighlight lang="mediawiki"> {{Nazwa szablonu|nazwa przestrzeni nazw=Wikibooks|nazwa przestrzeni nazw 1=Szablon|nazwa przestrzeni nazw i=|nazwa jednostki 2=Wikibooks:Strona}} </syntaxhighlight> W dziecku powiedzmy jest wywołanie, i szukamy nazwy przestrzeni nazw o numerze dwa, która została podana, ale istnieje za to jej wersji ogólna {{Code|nazwa przestrzeni nazw i}} i domyślna {{Code|nazwa przestrzeni nazw}}, ale wtedy dla tego numerkowego liczy się to ogólne z {{Code| i}}, a ponieważ ta nazwa jest pusta, więc będziemy liczyli nazwę przestrzeni nazw z {{Code|nazwa jednostki 2}}: <syntaxhighlight lang="mediawiki"> {{#invoke:Pudełko|Nazwa przestrzeni nazw 2|numer jednostki=2}} </syntaxhighlight> Na podstawie powyższego przykładu otrzymamy wynik o schemacie, nie wyniku, bo tam nie ma zmiennej {{Code|nazwa przestrzeni nazw 1}}, ale jest {{Code|nazwa przestrzeni nazw i}}: <syntaxhighlight lang="mediawiki"> <!-- Ale nie "nazwa przestrzeni nazw 2", bo jej nie ma, ale za to istnieje "nazwa przestrzeni nazw i"; --> <!-- nazwa przestrzeni nazw 2=nazwa przestrzeni nazw i="", a nazwa jednostki 2="Wikibooks:Strona"; --> <!-- Czyli wynik: --> Wikibooks <!-- Widzimy, że wygenerowała się nazwa przestrzeni nazw, którą jest przestrzeń nieprogramowa, ale projektu, wychodząca z nazwy jednostek w tym przypadku z "nazwa jednostki 2"; --> </syntaxhighlight> Nie jest brana w tym powyższym przykładzie zmienna {{Code|nazwa przestrzeni nazw}}, bo jej nie ma, ale za to jest {{Code|nazwa przestrzeni nazw i}}, bo ona występuje jako parametr domyślny ogólny dla parametrów numerkowych. Tytaj jest używwana jest zmienna {{Code|nazwa jednostki 2}} do wygenerowania ostatecznego wyniki,bo jak mozna zauważyć, parametry przestrzenne wskazują na przestrzeń główną, a nazwy jednostek już nie. Przykłady w wikikodzie: * {{Code|{{m|Pudełko|Nazwa przestrzeni nazw 2|numer jednostki{{=}}2}}}} → {{Tt|{{#invoke:Pudełko|Nazwa przestrzeni nazw 2|numer jednostki=2}}}} * {{Code|{{m|Pudełko|Nazwa przestrzeni nazw 2|Szablon|nazwa przestrzeni nazw i{{=}}Moja przestrzeń|numer jednostki{{=}}2}}}} → {{Tt|{{#invoke:Pudełko|Nazwa przestrzeni nazw 2|Szablon|nazwa przestrzeni nazw i=Moja przestrzeń|numer jednostki=2}}}} * {{Code|{{m|Pudełko|Nazwa przestrzeni nazw 2|nazwa przestrzeni nazw 2{{=}}|nazwa jednostki 2{{=}}Szablon:Strona|numer jednostki{{=}}2}}}} → {{Tt|{{#invoke:Pudełko|Nazwa przestrzeni nazw 2|nazwa przestrzeni nazw 2=|nazwa jednostki 2=Szablon:Strona|numer jednostki=2}}}} * {{Code|{{m|Pudełko|Nazwa przestrzeni nazw 2|nazwa przestrzeni nazw i{{=}}|nazwa jednostki 2{{=}}Szablon:Strona|numer jednostki{{=}}2}}}} → {{Tt|{{#invoke:Pudełko|Nazwa przestrzeni nazw 2|nazwa przestrzeni nazw i=|nazwa jednostki 2=Szablon:Strona|numer jednostki=2}}}} * {{Code|{{m|Pudełko|Nazwa przestrzeni nazw 2|Szablon|nazwa przestrzeni nazw{{=}}|nazwa jednostki 2{{=}}Wikibooks:Strona|numer jednostki{{=}}2}}}} → {{Tt|{{#invoke:Pudełko|Nazwa przestrzeni nazw 2|Szablon|nazwa przestrzeni nazw=|nazwa jednostki 2=Wikibooks:Strona|numer jednostki=2}}}} Powyżej dla przykładu podano parametry nie w rodzicu w szablonie, tylko w dziecku, jeśli chodzi o parametry nazw przestrzeni nazw i nazw jednostek, ale ich się za to nie powinno podawać w tych ramach, tylko w szablonach, w których wywoływane są te ramki pudełek {{Code|{{m|Pudełko}}}}, ale tak tutaj tak zrobiono by było najłatwiej sprawdzić działanie tego typu funkcji. Analogicznie możemy podawać parametry typu jednostki, np.: wywołaniu modułowym {{Code|{{m|Pudełko|Nazwa przestrzeni nazw 2|typ jednostki 2{{=}}strona szablonu|numer jednostki{{=}}2}}}}, ale o tym więcej w rozdziałach {{Code|{{sr|# p["Typ jednostki"](frame,i)|p=Pudełko}}}}, {{Code|{{sr|#p["Typ jednostki 2"](frame,i)|p=Pudełko}}}}, {{Code|{{sr|#p["Typ jednostki 3"](frame,i)|p=Pudełko}}}} itp. w „{{sr|#Funkcje typu jednostki|p=Pudełko}}”, on definiuje przestrzenie przedmiotowe, ale można użyć parametru dyskusji typu jednostki z wartością niepustą, wtedy wyświetli się nazwa przestrzeni nazw dyskusji. Jeżeli typ jednostki wskazuje na przestrzeń nazw główną, wtedy się liczą parametry nazw jednostek. Również parametry typu jednostki nie powinno się podawać w dziecku w ramce, tylko w rodzicu w szablonie jako parametry, w którym ta ramka jest wywoływana, ale tutaj podano jedynie dla przykładu, jak najłatwiej sprawdzić działanie tych parametrów tej funkcji. Najpierw w funkcji nagłówku brane są parametry nazw przestrzeni nazw, a jeżeli ich nie ma, to parametry typu jednostki, a jeżeli nie ma lub parametry przestrzenne wskazują na przestrzeń główną, i nie ma nazwy jednostki, to generowane są nazwy tej funkcji na podstawie aktualnej strony. === {{Code|p["Nazwa przedmiotowej przestrzeni nazw 2"](frame,...)}} === === {{Code|p["Nazwa przestrzeni nazw dyskusji 2"](frame,...)}} === == Funkcje pełnych nazw jednostki == === {{Code|p["Pełna nazwa dyskusji jednostki"](frame,i)}} === === {{Code|p["Pełna nazwa przedmiotowa jednostki"](frame,i)}} === === {{Code|p["Pełna nazwa jednostki"](frame,i)}} === == Funkcje pełnych nazw jednostki drugiej wersji == === {{Code|p["Pełna nazwa dyskusji jednostki 2"](frame,i)}} === === {{Code|p["Pełna nazwa przedmiotowa jednostki 2"](frame,i)}} === === {{Code|p["Pełna nazwa jednostki 2"](frame,i)}} === == Funkcje pełnych nazw jednostki trzeciej wersji == === {{Code|p["Pełna nazwa dyskusji jednostki 3"](frame,i)}} === === {{Code|p["Pełna nazwa przedmiotowa jednostki 3"](frame,i)}} === === {{Code|p["Pełna nazwa jednostki 3"](frame,i)}} === == Funkcje nazw jednostki == === {{Code|p["Nazwa jednostki"](frame,i)}} === == Funkcje nazw jednostki drugiej wersji == === {{Code|p["Nazwa jednostki 2"](frame,i)}} === === {{Code|p["Nazwa przedmiotowa jednostki 2"](frame,i)}} === === {{Code|p["Nazwa dyskusji jednostki 2"](frame,i)}} === == Funkcje nazw przestrzeni nazw trzeciej wersji == === {{Code|p["Nazwa przestrzeni nazw 3"](frame,i)}} === === {{Code|p["Nazwa przedmiotowej przestrzeni nazw 3"](frame,i)}} === === {{Code|p["Nazwa przestrzeni nazw dyskusji 3"](frame,i)}} === == Funkcje nazw jednostki trzeciej wersji == === {{Code|p["Nazwa jednostki 3"](frame,i)}} === === {{Code|p["Nazwa przedmiotowa jednostki 3"](frame,i)}} === === {{Code|p["Nazwa dyskusji jednostki 3"](frame,i)}} === == Funkcje typu jednostki == === {{Code|p["Typ jednostki"](frame,i)}} === === {{Code|p["Typ jednostki 2"](frame,i)}} === === {{Code|p["Typ jednostki 3"](frame,i)}} === === Funkcje typu jednostki przedmiotowe === ==== {{Code|p["Przedmiotowy typ jednostki"](frame,i)}} ==== ==== {{Code|p["Przedmiotowy typ jednostki 2"](frame,i)}} ==== ==== {{Code|p["Przedmiotowy typ jednostki 3"](frame,i)}} ==== === Fukcje typu jednostki dyskusji === ==== {{Code|p["Dyskusyjny typ jednostki"](frame,i)}} ==== ==== {{Code|p["Dyskusyjny typ jednostki 2"](frame,i)}}} ==== ==== {{Code|p["Dyskusyjny typ jednostki 3"](frame,i)}} ==== == Funkcje chech pudełka == === {{Code|p["Cecha pudełka"](frame)}} === === {{Code|p["Przedmiotowa cecha pudełka"](frame)}} === === {{Code|p["Dyskusyjna cecha pudełka"](frame)}} === == Fukcje ogólnego pudełka == === {{Code|p["Ogólne pudełko"](frame)}} === == Funkcje ogólne == === {{Code|p["Tekst pudełka"](frame)}} === == Funkcje błędów pudełka == === {{Code|p["Błędy pudełka"](frame)}} === === {{Code|p["Przedmiotowe błędy pudełka"](frame)}} === === {{Code|p["Dyskusyjne błędy pudełka"](frame)}} === == Funkcje nazw stron == === {{Code|p["Nazwa strony głównej projektu"](frame,i)}} === === {{Code|p["Nazwa strony głównej dla dzieci projektu"](frame,i)}} === == Funkcje kodów == === {{Code|p["Kod języka"](frame,i)}} === === {{Code|p["Kod projektu"](frame,i)}} === === {{Code|p["Klucz projektu"](frame,i)}} === == Funkcje wiki == === {{Code|p["Inny niż język bieżący wiki"](frame)}} === === {{Code|p["Inne niż lokalne wiki"](frame)}} === === {{Code|p["Inne niż bieżące wiki"](frame)}} === == Funkcje typów parametrów, czy podane je == === {{Code|p["Podano parametry nienazwane"](frame)}} === === {{Code|p["Podano parametry numerowane"](frame)}} === === {{Code|p["Podano parametry nazwane"](frame)}} === == Funkcje kodów tego projektu == === {{Code|p["Kod projektu tego projektu"](frame)}} === === {{Code|p["Kod języka tego projektu"](frame)}} === === {{Code|p["Klucz projektu tego projektu"](frame)}} === == Funkcje stron == === {{Code|p["Strona główna tego projektu"](frame)}} === === {{Code|p["Strona główna dla dzieci tego projektu"](frame)}} === == Funkcje nazw stron drugiej wersji == === {{Code|p["Nazwa strony głównej dla dzieci projektu 2"](frame)}} === === {{Code| p["Nazwa strony głównej projektu 2"](frame)}} === {{BrClear}} <noinclude><!-- -->{{ProstaStronaKoniec}}<!-- -->{{Kategoria|Opisy funkcji, w Lua w Scribunto, w modułach}}<!-- --></noinclude> 75wr3hikr3it0oe49sj4n38lyp4hrav 540375 540374 2026-04-23T12:55:09Z Persino 2851 /* {{Code|p["Nazwa przestrzeni nazw 2"](frame,...)}} */ 540375 wikitext text/x-wiki <noinclude>{{ProstaStronaStart | nagłówek = {{Podrozdział|{{ld2|Pudełko}}|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 pudelko_modul=require("Module:Pudełko"); </syntaxhighlight> dzięki, któremu można wypisywać funkcje należącego do niego. Posługuje się na parametrach pudełkowych {{Parametr|nazwa przestrzeni nazw}} (czy też bez numerka {{Parametr|nazwa przestrzeni nazw i}} dla tego numerowanego) lub te z numerkiem po jednej spacji w nich (ale nie dla tego z końcówką {{Code| i}}) mogą zostać użyte jako parametry szablonu. Moduł {{Code|{{ld2|Pudełko}}}} przedstawia funkcje nazw w oparciu o funkcje nazw {{Code|{{ld2|Nazwy}}}}, generuje on nazwy za pomocą parametrów pudełkowych podanych poniżej. Parametr {{Parametr|nazwa jednostki}} (lub parametr {{Parametr|cel}} dla numerka tego pierwszego, tego alternatywnego), lub te z numerkiem po jednej spacji w nazwie parametru, albo numerowane numerkami {{Code|1}}, {{Code|2}},..., mogą zostać użyte jako parametry szablonu. Parametry określające rodzaj jednostki {{Parametr|typ jednostki}} z {{Parametr|dyskusja typu jednostki}}, itp. w wersjach z numerkiem po jednej spacji w nich mogą zostać użyte jako parametry szablonu. A te tymi numerowanymi liczbami naturalnymi {{Tt|nazwy jednostki}} od jedynki wzwyż poprzez szablon, w którym są one użyte, one też mogą być użyte z dwukropkiem, te numerowane, na samym początku nazwy, wtedy one są traktowane jako pełne nazwy strony, i wtedy one nie zostaną z interpretowane, że do nich trzeba użyć parametr odpowiedni z nazwą przetrzeni nazw z tego numerowanego, czy ogólny, aby utworzyć znów inną pełną nazwę strony dla tego numerka. Zestawienie: * {{Code|nazwa przestrzeni nazw}} i {{Code|nazwa przestrzeni nazw i}} (ogólna nazwa przestrzeni nazw dla wszystkich numerków, i tych numerowanych jednostek) - i to pierwsze z numerkiem, tzn. {{Code|nazwa przestrzeni nazw 1}}, {{Code|nazwa przestrzeni nazw 2}}, ..., * {{Code|nazwa jednostki}} - i te z numerkiem: {{Code|nazwa jednostki 1}}, {{Code|nazwa jednostki 2}}, ..., lub gdy jest zamiast tego parametrem numerowany, {{Code|1}}, {{Code|2}},..., który dla tego pierwszego może być uznany jako: {{Code|cel}} {{=}} {{Code|1}}, * {{Code|typ jednostki}} (parametr bazowy) i {{Code|typ jednostki i}} (parametr domyślny numerkowy) - i te z numerkiem: {{Code|typ jednostki 1}}, {{Code|typ jednostki 2}}, ..., tzn. gdy chcemy określić z jakim typem jednostki mamy do czynienia w zależności do jakiej przestrzeni nazw należy, a w danej, czy jest on np. programowy, czy tylko jest opisem, jak to bywa w szablonach {{Np|Template|link=tak}}, podobnie jest w przypadku {{Np|Module|link=tak}}, czy jak jest w innych przestrzeniach nazw, ** {{Code|dyskusja typu jednostki}} (parametr bazowy) i {{Code|dyskusja typu jednostki i}} (parametr domyślny numerkowy) - i te z numerkiem: {{Code|dyskusja typu jednostki 1}}, {{Code|dyskusja typu jednostki 2}}, ..., gdy chcemy określić wartością niepustą,że chodzi tutaj o typ jednostki. == {{Code|p.CzyNiepoprawnaNazwa(nazwa_jednostki)}} == Funkcja sprawdzajaca, czy jest poprawnie podana nazwa jednostki, czy ma poprawną nazwę. Znakami tymi, z których nie powinna składać się nazwa jest {{Code|<nowiki>{}<>|[]#\n</nowiki>}} i dodatkowo znak {{Code|&#127;}} (kod {{Code|{{Nowiki|&#127;}}}}). Też nie może składać się z trzech znaków tyldy, tzn. {{Code|<nowiki>~~~</nowiki>}}. Również w swojej budowie nie może składać się ze kodów {{Strong|HTML}} literowych o wzorze {{Code|{{Nowiki|&(%a+);}}}}. Natomiast może składać się z {{Code|{{Nowiki|&#(%d+);}}}} i {{Code|{{Nowiki|&#x(%x+);}}}}, ale w pierw te kody muszą być zamienione na normalne znaki. Skrótowa definicja funkcji: <syntaxhighlight lang="lua"> function p.CzyNiepoprawnaNazwa(nazwa_jednostki)...end; </syntaxhighlight> Wtedy ciało funkcji tej, czyli jego definicja w środku, jest: <syntaxhighlight lang="lua"> -- Moduł: "Moduł:Html/dane", służy do ładowania znaku o kodzie HTML "&#127;"; local html_dane_modul=mw.loadData("Module:Html/dane"); return mw.ustring.match(nazwa_jednostki,"[{}<>|%[%]#\n"..html_dane_modul.znak_127.."]+") or mw.ustring.match(nazwa_jednostki,"~~~") or mw.ustring.match(nazwa_jednostki,"&(%a+);"); </syntaxhighlight> Parametry: * {{Code|nazwa_jednostki}} - nazwa jednostki do sprawdzenia. Przykłady: <syntaxhighlight lang="lua"> local pudelko_modul=require("Module:Pudełko"); -- Podana przykładowa niepoprawna nazwa jedostki local nazwa_jednostki="Nazwa pliku [[Nazwa linku w pliku]]"; -- Fukcja zwróci wartość: local czy_poprawna_nazwa=true; local czy_poprawna_nazwa=pudelko_modul.CzyNiepoprawnaNazwa(nazwa_jednostki); </syntaxhighlight> == Funkcje nazw przestrzeni nazw == === {{Code|p["Nazwa przestrzeni nazw"](frame,...)}} === Funkcja pisze nazwę przestrzeni nazw, niezależnie, czy to jest przedmiotowa, czy dyskusji, według podanej w zmiennej {{Code|nazwa przestrzeni nazw}} dla pozycja bazowej w podanych parametrach szablonu rodzicu ramki dziecka, lub dla innej pozycji należy parametr podawaćw formie {{Code|nazwa przestrzeni nazw 1}}, {{Code|nazwa przestrzeni nazw 2}}, {{Code|nazwa przestrzeni nazw 3}},..., lub te parametry można podać w postaci ogólnej {{Code|nazwa przestrzeni nazw i}}. Parametry podaje się w parametrach rodzica wywołania tej funkcji {{Code|{{m|Pudełko|Nazwa przestrzeni nazw}}}} (ale ich nie trzeba podawać w dziecku, ale można) i w parametrach dziecka, jeśli chodzi o zmienną {{Code|numer jednostki}}, czyli np.: {{Code|{{m|Pudełko|Nazwa przestrzeni nazw|numer jednostki{{=}}<jakaś liczba całkowita dodatnia>}}}}. Te parametry przestrzenne zamiast w rodzicu w szablonie można podać w ramce dziecka, wtedy parametry dziecka mają pierwszeństwo. Przestrzeń nazw z parametrów nazw przestrzennych może odpowiadać wartości przestrzeni głównej, to wtedy odpowiednia przestrzeń nazw z parametru nazwy jednostki się nie liczy w tej funkcji, aby się liczyła należy użyć funkcji {{Code|{{sr|#p["Nazwa przestrzeni nazw 2"](frame,...)|p=Pudełko}}}}. Definicja skrótowa funkcji: <syntaxhighlight lang="lua"> p["Nazwa przestrzeni nazw"]=function(frame,czy_uwzglednic_alternatywna_nazwe,i)...end; </syntaxhighlight> Wtedy ciało funkcji tej, czyli jego definicja w środku, jest: <syntaxhighlight lang="lua"> -- Jest liczony numer parametru nazwy przestrzeni nazw, domyslnie chodzi tu o numer bazowy parametrów przestrzennych; local numer_jednostki=i or frame.args["numer jednostki"]; local liczba_numer_jednostki=((numer_jednostki)and(tonumber(numer_jednostki))or 0); local pudelko_pomocne_modul=require("Module:Pudełko/Pomocne"); -- Liczy nazwę przestrzeni nazw na podstawie podanych parametrów; return pudelko_pomocne_modul.Nazwa_przestrzeni_nazw(frame,0, czy_uwzglednic_alternatywna_nazwe,liczba_numer_jednostki); </syntaxhighlight> Parametry funkcji: * {{Code|frame}} - tablica ramki tablicy transportu, * {{Code|czy_uwzglednic_alternatywna_nazwe}} - czy ma uwzględniać nazwę przestrzeni nazw domyślną szablonu, dostępne wartości: {{Code|false}}, w której nazwa domyślna nie jest uwzględniana wtedy, oraz {{Code|nil}} i {{Code|true}}, które oznaczają to samo, w tym jeżeli ona jest uwzględniana, wtedy jest brany parametr pierwszy dziecka, który musi istnieć przy takiej wartości tego parametru, tzn. {{Code|{{m|Pudełko|Nazwa przestrzeni nazw|Szablon}}}}, a nazwa uzyskana nazwy przestrzeni nazw jest w takim przypadku błędna, a jeżeli nazwa domyślna jest błędna, czyli {{Code|{{m|Pudełko|Nazwa przestrzeni nazw|Moja przestrzeń}}}}, wtedy funkcja zwraca stan błędu {{Code|(błąd)}}. * {{Code|i}} - numer zmiennej nazwy przestrzeni nazw. Funkcja wykorzystuje {{Code|{{sr|#p.Nazwa_przestrzeni_nazw(frame,...)|p=Pudełko/Pomocne}}}} do wyznaczania ogólnego nazwy przestrzeni nazw dla pozycji bazowej i numerkowej, tzn. dla pozycji: jeden, dwa, trzy,..., itd, i ich ogólnej. Parametry ramki tablicy transportu dziecka: * {{Code|nazwa przestrzeni nazw}}, {{Code|nazwa przestrzeni nazw 1}}, {{Code|nazwa przestrzeni nazw 2}}, {{Code|nazwa przestrzeni nazw 3}},..., {{Code|nazwa przestrzeni nazw i}} - nazwy przestrzeni nazw dla pozycji bazowej, numerkowej i ogólnej, * {{Code|typ jednostki}}, {{Code|typ jednostki 1}}, {{Code|typ jednostki 2}}, {{Code|typ jednostki 3}},..., {{Code|typ jednostki i}} - typy jednostek, którym odpowiadają pewne przestrzenie przedmiotowe, dla pozycji bazowej, numerkowej i ogólnej, ** {{Code|dyskusja typu jednostki}}, {{Code|dyskusja typu jednostki 1}}, {{Code|dyskusja typ jednostki 2}}, {{Code|dyskusja typ jednostki 3}},..., {{Code|dyskusja typ jednostki i}} - czy dany typ jednostki ma przedstawiać, jeśli niepusta, przestrzeń dyskusji dla pozycji bazowej, numerkowej i ogólnej, * {{Code|numer jednostki}} - jak parametr {{Code|i}} nie został ustawiony, to wtedy liczy się ta zmienna. Parametr ramki tablicy transportu rodzica szablonu: * {{Code|nazwa przestrzeni nazw}}, {{Code|nazwa przestrzeni nazw 1}}, {{Code|nazwa przestrzeni nazw 2}}, {{Code|nazwa przestrzeni nazw 3}},..., {{Code|nazwa przestrzeni nazw i}} - nazwy przestrzeni nazw dla pozycji bazowej oraz zwykłej i ogólnej numerkowej, * {{Code|typ jednostki}}, {{Code|typ jednostki 1}}, {{Code|typ jednostki 2}}, {{Code|typ jednostki 3}},..., {{Code|typ jednostki i}} - typy jednostek, którym odpowiadają pewne przestrzenie przedmiotowe, dla pozycji bazowej, numerkowej i ogólnej, ** {{Code|dyskusja typu jednostki}}, {{Code|dyskusja typu jednostki 1}}, {{Code|dyskusja typ jednostki 2}}, {{Code|dyskusja typ jednostki 3}},..., {{Code|dyskusja typ jednostki i}} - czy dany typ jednostki ma przedstawiać, jeśli niepusta, przestrzeń dyskusji dla pozycji bazowej, numerkowej i ogólnej. Przykłady: <syntaxhighlight lang="mediawiki"> {{Nazwa szablonu|nazwa przestrzeni nazw=Wikibooks|nazwa przestrzeni nazw 2=Szablon|nazwa przestrzeni nazw i=Moduł}} </syntaxhighlight> W dziecku powiedzmy jest wywołanie, i szukamy nazwy przestrzeni nazw o numerze dwa, która nie została podana, ale istnieje za to jej wersji ogólna {{Code|nazwa przestrzeni nazw i}} i domyślna {{Code|nazwa przestrzeni nazw}}: <syntaxhighlight lang="mediawiki"> {{#invoke:Pudełko|Nazwa przestrzeni nazw|numer jednostki=1}} </syntaxhighlight> Na podstawie powyższego przykładu otrzymamy wynik o schemacie, nie wyniku, bo tam nie ma zmiennej {{Code|nazwa przestrzeni nazw 1}}, ale jest {{Code|nazwa przestrzeni nazw i}}: <syntaxhighlight lang="mediawiki"> <!-- Ale nie "nazwa przestrzeni nazw", bo jej nie ma, ale za to istnieje "nazwa przestrzeni nazw i"; --> <!-- nazwa przestrzeni nazw 2=nazwa przestrzeni nazw i=Moduł; --> <!-- Czyli wynik: --> Moduł <!-- Widzimy, że wygenerowała się nazwa przestrzeni nazw, którą jest przestrzeń programowa, którą również jest "Szablon"; --> </syntaxhighlight> Nie jest brana w tym powyższym przykładzie zmienna {{Code|nazwa przestrzeni nazw}}, bo jej nie ma, ale za to jest {{Code|nazwa przestrzeni nazw i}}, bo ona występuje jako parametr domyślny ogólny dla parametrów numerkowych. Przykłady w wikikodzie: * {{Code|{{m|Pudełko|Nazwa przestrzeni nazw|numer jednostki{{=}}2}}}} → {{Tt|{{#invoke:Pudełko|Nazwa przestrzeni nazw|numer jednostki=2}}}} * {{Code|{{m|Pudełko|Nazwa przestrzeni nazw|Szablon|nazwa przestrzeni nazw i{{=}}Moja przestrzeń|numer jednostki{{=}}2}}}} → {{Tt|{{#invoke:Pudełko|Nazwa przestrzeni nazw|Szablon|nazwa przestrzeni nazw i=Moja przestrzeń|numer jednostki=2}}}} * {{Code|{{m|Pudełko|Nazwa przestrzeni nazw|nazwa przestrzeni nazw 2{{=}}Szablon|numer jednostki{{=}}2}}}} → {{Tt|{{#invoke:Pudełko|Nazwa przestrzeni nazw|nazwa przestrzeni nazw 2=Szablon|numer jednostki=2}}}} * {{Code|{{m|Pudełko|Nazwa przestrzeni nazw|nazwa przestrzeni nazw 2{{=}}Szablon|numer jednostki{{=}}2}}}} → {{Tt|{{#invoke:Pudełko|Nazwa przestrzeni nazw|nazwa przestrzeni nazw i=Szablon|numer jednostki=2}}}} * {{Code|{{m|Pudełko|Nazwa przestrzeni nazw|nazwa przestrzeni nazw{{=}}Szablon|numer jednostki{{=}}2}}}} → {{Tt|{{#invoke:Pudełko|Nazwa przestrzeni nazw|nazwa przestrzeni nazw=Szablon|numer jednostki=2}}}} Powyżej dla przykładu podano parametry nie w rodzicu w szablonie, tylko w dziecku, jeśli chodzi o parametry nazw przestrzeni nazw, ale ich się za to nie powinno podawać w tych ramach, tylko w szablonach, w których wywoływane są te ramki pudełek {{Code|{{m|Pudełko}}}}, ale tak tutaj tak zrobiono by było najłatwiej sprawdzić działanie tego typu funkcji. Analogicznie możemy podawać parametry typu jednostki, np.: wywołaniu modułowym {{Code|{{m|Pudełko|Nazwa przestrzeni nazw|typ jednostki 2{{=}}strona szablonu|numer jednostki{{=}}2}}}}, ale o tym więcej w rozdziałach {{Code|{{sr|# p["Typ jednostki"](frame,i)|p=Pudełko}}}}, {{Code|{{sr|#p["Typ jednostki 2"](frame,i)|p=Pudełko}}}}, {{Code|{{sr|#p["Typ jednostki 3"](frame,i)|p=Pudełko}}}} itp. w „{{sr|#Funkcje typu jednostki|p=Pudełko}}”, on definiuje przestrzenie przedmiotowe, ale można użyć parametru dyskusji typu jednostki z wartością niepustą, wtedy wyświetli się nazwa przestrzeni nazw dyskusji. Również parametry typu jednostki nie powinno się podawać w dziecku w ramce, tylko w rodzicu w szablonie jako parametry, w którym ta ramka jest wywoływana, ale tutaj podano jedynie dla przykładu, jak najłatwiej sprawdzić działanie tych parametrów tej funkcji. Najpierw w funkcji nagłówku brane są parametry nazw przestrzeni nazw, a jeżeli ich nie ma, to parametry typu jednostki, a jeżeli nie ma, to generowane są nazwy na podstawie aktualnego modułu. === {{Code|p["Nazwa przedmiotowej przestrzeni nazw"](frame,...)}} === Funkcja pisze przedmiotową nazwę przestrzeni nazw jakikolwiek nazwy przestrzeni nazw (tzn. nazwę przedmiotową nazwy przestrzenie nazw, czyli nie dyskusji, zamieniana jest na nią samą, czyli identyfikator przestrzeni się nie zmienia, a dyskusji, nie przedmiotową, przekształca się na przedmiotową jej odpowiadającą, czyli w tym przypadku identyfikator przestrzeni zmniejsza się o numer mniej), według podanej w zmiennej {{Code|nazwa przestrzeni nazw}} dla pozycja bazowej w podanych parametrach szablonu rodzicu ramki dziecka, lub dla innej pozycji należy parametr podawać w formie {{Code|nazwa przestrzeni nazw 1}}, {{Code|nazwa przestrzeni nazw 2}}, {{Code|nazwa przestrzeni nazw 3}},..., lub te parametry można podać w postaci ogólnej {{Code|nazwa przestrzeni nazw i}}. Parametry podaje się w parametrach rodzica wywołania tej funkcji {{Code|{{m|Pudełko|Nazwa przedmiotowej przestrzeni nazw}}}} (ale ich nie trzeba podawać w dziecku, ale można) i w parametrach dziecka, jeśli chodzi o zmienną {{Code|numer jednostki}}, czyli np.: {{Code|{{m|Pudełko|Nazwa przedmiotowej przestrzeni nazw|numer jednostki{{=}}<jakaś liczba całkowita dodatnia>}}}}. Te parametry przestrzenne zamiast w rodzicu w szablonie można podać w ramce dziecka, wtedy parametry dziecka mają pierwszeństwo. Parametry przestrzenne mogą mogą być podane w postaci przestrzeni przedmiotowej lub dyskusji, ale ta funkcja zawsze ją zamienia na przedmiotową. Przestrzeń nazw z parametrów nazw przestrzennych może odpowiadać wartości przestrzeni głównej, to wtedy odpowiednia przestrzeń nazw z parametru nazwy jednostki się nie liczy w tej funkcji, aby się liczyła należy użyć funkcji {{Code|{{sr|#p["Nazwa przedmiotowej przestrzeni nazw 2"](frame,...)|p=Pudełko}}}}. Definicja skrótowa funkcji: <syntaxhighlight lang="lua"> p["Nazwa przedmiotowej przestrzeni nazw"]=function(frame,czy_uwzglednic_alternatywna_nazwe,i)...end; </syntaxhighlight> Wtedy ciało funkcji tej, czyli jego definicja w środku, jest: <syntaxhighlight lang="lua"> -- Jest liczony numer parametru nazwy przestrzeni nazw, domyslnie chodzi tu o numer bazowy parametrów przestrzennych; local numer_jednostki=i or frame.args["numer jednostki"]; local liczba_numer_jednostki=((numer_jednostki)and(tonumber(numer_jednostki))or 0); local pudelko_pomocne_modul=require("Module:Pudełko/Pomocne"); -- Liczy nazwę przestrzeni nazw przedmiotową na podstawie podanych parametrów; return pudelko_pomocne_modul.Nazwa_przestrzeni_nazw(frame,1, czy_uwzglednic_alternatywna_nazwe,liczba_numer_jednostki); </syntaxhighlight> Parametry funkcji: * {{Code|frame}} - tablica ramki tablicy transportu, * {{Code|czy_uwzglednic_alternatywna_nazwe}} - czy ma uwzględniać nazwę przestrzeni nazw domyślną szablonu, dostępne wartości: {{Code|false}}, w której nazwa domyślna nie jest uwzględniana wtedy, oraz {{Code|nil}} i {{Code|true}}, które oznaczają to samo, w tym jeżeli ona jest uwzględniana, wtedy jest brany parametr pierwszy dziecka, który musi istnieć przy takiej wartości tego parametru, tzn. {{Code|{{m|Pudełko|Nazwa przedmiotowej przestrzeni nazw|Dyskusja szablonu}}}} - ta nazwa domyślna zostanie zamieniona na przedmiotową, a jak ona by była przedmiotowa, to żadnej zamiany by nie było, a nazwa uzyskana z nazwy przestrzeni nazw z parametrów przestrzennych jest w takim przypadku błędna, to w takim razie brany jest ten parametr, a jeżeli ta nazwa domyślna jest błędna, czyli {{Code|{{m|Pudełko|Nazwa przedmiotowej przestrzeni nazw|Moja przestrzeń}}}}, wtedy funkcja zwraca stan błędu {{Code|(błąd)}}. * {{Code|i}} - numer zmiennej nazwy przestrzeni nazw. Funkcja wykorzystuje {{Code|{{sr|#p.Nazwa_przestrzeni_nazw(frame,...)|p=Pudełko/Pomocne}}}} do wyznaczania ogólnego nazwy przestrzeni nazw dla pozycji bazowej i numerkowej, tzn. dla pozycji: jeden, dwa, trzy,..., itd, i ich ogólnej. Parametry ramki tablicy transportu dziecka: * {{Code|nazwa przestrzeni nazw}}, {{Code|nazwa przestrzeni nazw 1}}, {{Code|nazwa przestrzeni nazw 2}}, {{Code|nazwa przestrzeni nazw 3}},..., {{Code|nazwa przestrzeni nazw i}} - nazwy przestrzeni nazw dla pozycji bazowej, numerkowej i ogólnej, * {{Code|typ jednostki}}, {{Code|typ jednostki 1}}, {{Code|typ jednostki 2}}, {{Code|typ jednostki 3}},..., {{Code|typ jednostki i}} - typy jednostek, którym odpowiadają pewne przestrzenie przedmiotowe, dla pozycji bazowej, numerkowej i ogólnej, ** {{Code|dyskusja typu jednostki}}, {{Code|dyskusja typu jednostki 1}}, {{Code|dyskusja typ jednostki 2}}, {{Code|dyskusja typ jednostki 3}},..., {{Code|dyskusja typ jednostki i}} - czy dany typ jednostki ma przedstawiać, jeśli niepusta, przestrzeń dyskusji dla pozycji bazowej, numerkowej i ogólnej, * {{Code|numer jednostki}} - jak parametr {{Code|i}} nie został ustawiony, to wtedy liczy się ta zmienna. Parametr ramki tablicy transportu rodzica szablonu: * {{Code|nazwa przestrzeni nazw}}, {{Code|nazwa przestrzeni nazw 1}}, {{Code|nazwa przestrzeni nazw 2}}, {{Code|nazwa przestrzeni nazw 3}},..., {{Code|nazwa przestrzeni nazw i}} - nazwy przestrzeni nazw dla pozycji bazowej oraz zwykłej i ogólnej numerkowej, * {{Code|typ jednostki}}, {{Code|typ jednostki 1}}, {{Code|typ jednostki 2}}, {{Code|typ jednostki 3}},..., {{Code|typ jednostki i}} - typy jednostek, którym odpowiadają pewne przestrzenie przedmiotowe, dla pozycji bazowej, numerkowej i ogólnej, ** {{Code|dyskusja typu jednostki}}, {{Code|dyskusja typu jednostki 1}}, {{Code|dyskusja typ jednostki 2}}, {{Code|dyskusja typ jednostki 3}},..., {{Code|dyskusja typ jednostki i}} - czy dany typ jednostki ma przedstawiać, jeśli niepusta, przestrzeń dyskusji dla pozycji bazowej, numerkowej i ogólnej. Przykłady: <syntaxhighlight lang="mediawiki"> {{Nazwa szablonu|nazwa przestrzeni nazw=Dyskusja Wikibooks|nazwa przestrzeni nazw 2=Dyskusja szablonu|nazwa przestrzeni nazw i=Dyskusja modułu}} </syntaxhighlight> W dziecku powiedzmy jest wywołanie, i szukamy nazwy przestrzeni nazw o numerze dwa, która nie została podana, ale istnieje za to jej wersji ogólna {{Code|nazwa przestrzeni nazw i}} i domyślna {{Code|nazwa przestrzeni nazw}}: <syntaxhighlight lang="mediawiki"> {{#invoke:Pudełko|Nazwa przedmiotowej przestrzeni nazw|numer jednostki=1}} </syntaxhighlight> Na podstawie powyższego przykładu otrzymamy wynik o schemacie, nie wyniku, bo tam nie ma zmiennej {{Code|nazwa przestrzeni nazw 1}}, ale jest {{Code|nazwa przestrzeni nazw i}}: <syntaxhighlight lang="mediawiki"> <!-- Ale nie "nazwa przestrzeni nazw", bo jej nie ma, ale za to istnieje "nazwa przestrzeni nazw i"; --> <!-- nazwa przestrzeni nazw 2=nazwa przestrzeni nazw i=Dyskusja modułu; --> <!-- Czyli wynik: --> Moduł <!-- Widzimy, że wygenerowała się nazwa przestrzeni nazw, którą jest przestrzeń przedmiotowa programowa przestrzeni dyskusji "Dyskusja modułu", którą również jest "Szablon" jego przestrzeni dyskusji "Dyskusja szablonu", a dla ich przestrzeni przedmiotowej, zamiast dyskusji, to samo przekształca się na to samo; --> </syntaxhighlight> Nie jest brana w tym powyższym przykładzie zmienna {{Code|nazwa przestrzeni nazw}}, bo jej nie ma, ale za to jest {{Code|nazwa przestrzeni nazw i}}, bo ona występuje jako parametr domyślny ogólny dla parametrów numerkowych. Przykłady w wikikodzie: * {{Code|{{m|Pudełko|Nazwa przedmiotowej przestrzeni nazw|numer jednostki{{=}}2}}}} → {{Tt|{{#invoke:Pudełko|Nazwa przedmiotowej przestrzeni nazw|numer jednostki=2}}}} * {{Code|{{m|Pudełko|Nazwa przedmiotowej przestrzeni nazw|Dyskusja szablonu|nazwa przestrzeni nazw i{{=}}Moja przestrzeń|numer jednostki{{=}}2}}}} → {{Tt|{{#invoke:Pudełko|Nazwa przedmiotowej przestrzeni nazw|Dyskusja szablonu|nazwa przestrzeni nazw i=Moja przestrzeń|numer jednostki=2}}}} * {{Code|{{m|Pudełko|Nazwa przedmiotowej przestrzeni nazw|nazwa przestrzeni nazw 2{{=}}Dyskusja szablonu|numer jednostki{{=}}2}}}} → {{Tt|{{#invoke:Pudełko|Nazwa przedmiotowej przestrzeni nazw|nazwa przestrzeni nazw 2=Dyskusja szablonu|numer jednostki=2}}}} * {{Code|{{m|Pudełko|Nazwa przedmiotowej przestrzeni nazw|nazwa przestrzeni nazw 2{{=}}Dyskusja szablonu|numer jednostki{{=}}2}}}} → {{Tt|{{#invoke:Pudełko|Nazwa przedmiotowej przestrzeni nazw|nazwa przestrzeni nazw i=Dyskusja szablonu|numer jednostki=2}}}} * {{Code|{{m|Pudełko|Nazwa przedmiotowej przestrzeni nazw|nazwa przestrzeni nazw{{=}}Dyskusja szablonu|numer jednostki{{=}}2}}}} → {{Tt|{{#invoke:Pudełko|Nazwa przedmiotowej przestrzeni nazw|nazwa przestrzeni nazw=Dyskusja szablonu|numer jednostki=2}}}} Powyżej dla przykładu podano parametry nie w rodzicu w szablonie, tylko w dziecku, jeśli chodzi o parametry nazw przestrzeni nazw, ale ich się za to nie powinno podawać w tych ramach, tylko w szablonach, w których wywoływane są te ramki pudełek {{Code|{{m|Pudełko}}}}, ale tak tutaj tak zrobiono by było najłatwiej sprawdzić działanie tego typu funkcji. Analogicznie możemy podawać parametry typu jednostki, np.: wywołaniu modułowym {{Code|{{m|Pudełko|Nazwa przedmiotowej przestrzeni nazw|typ jednostki 2{{=}}strona szablonu|numer jednostki{{=}}2}}}}, ale o tym więcej w rozdziałach {{Code|{{sr|# p["Typ jednostki"](frame,i)|p=Pudełko}}}}, {{Code|{{sr|#p["Typ jednostki 2"](frame,i)|p=Pudełko}}}}, {{Code|{{sr|#p["Typ jednostki 3"](frame,i)|p=Pudełko}}}} itp. w „{{sr|#Funkcje typu jednostki|p=Pudełko}}”, ale wtedy ta sama nazwa przestrzeni nazw reprezentowana przez {{Parametr|typ jednostki 2|strona szablonu}}, jest zamieniana na to samo, lepiej jest tutaj używać parametrów przestrzennych nazw niż typu jednostki, bo typ jednostki ma taką samą wartość dla przestrzeni przedmiotowej, co dyskusji. Tutaj parametr dyskusji typu jednostki bazowy i numerkowy ogólny, czy szczegółowy, nie gra roli, bo nawet, gdy wygenerujemy nazwę przestrzeni dyskusji za pomoca tego parametru, to i tak otrzymamy na samym końcu jego nazwę przedmiotową. Również parametry typu jednostki nie powinno się podawać w dziecku w ramce, tylko w rodzicu w szablonie jako parametry, w którym ta ramka jest wywoływana, ale tutaj podano jedynie dla przykładu, jak najłatwiej sprawdzić działanie tych parametrów tej funkcji. Najpierw w funkcji nagłówku brane są parametry nazw przestrzeni nazw, a jeżeli ich nie ma, to parametry typu jednostki, a jeżeli nie ma, to generowane są nazwy na podstawie aktualnego modułu. === {{Code|p["Nazwa przestrzeni nazw dyskusji"](frame,...)}} === Funkcja pisze nazwę przestrzeni nazw dyskusji jakikolwiek nazwy przestrzeni nazw (tzn. nazwę przedmiotową nazwy przestrzenie nazw, czyli nie dyskusji, zamieniana jest na dyskusji, czyli identyfikator przestrzeni się zmienia jeden wyżej, a dyskusji, nie przedmiotową, przekształca się na tą samą), według podanej w zmiennej {{Code|nazwa przestrzeni nazw}} dla pozycja bazowej w podanych parametrach szablonu rodzicu ramki dziecka, lub dla innej pozycji należy parametr podawać w formie {{Code|nazwa przestrzeni nazw 1}}, {{Code|nazwa przestrzeni nazw 2}}, {{Code|nazwa przestrzeni nazw 3}},..., lub te parametry można podać w postaci ogólnej {{Code|nazwa przestrzeni nazw i}}. Parametry podaje się w parametrach rodzica wywołania tej funkcji {{Code|{{m|Pudełko|Nazwa przestrzeni nazw dyskusji}}}} (ale ich nie trzeba podawać w dziecku, ale można) i w parametrach dziecka, jeśli chodzi o zmienną {{Code|numer jednostki}}, czyli np.: {{Code|{{m|Pudełko|Nazwa przestrzeni nazw dyskusji|numer jednostki{{=}}<jakaś liczba całkowita dodatnia>}}}}. Te parametry przestrzenne zamiast w rodzicu w szablonie można podać w ramce dziecka, wtedy parametry dziecka mają pierwszeństwo. Parametry przestrzenne mogą mogą być podane w postaci przestrzeni przedmiotowej lub dyskusji, ale ta funkcja zawsze ją zamienia na dyskusji. Przestrzeń nazw z parametrów nazw przestrzennych może odpowiadać wartości przestrzeni głównej, to wtedy odpowiednia przestrzeń nazw z parametru nazwy jednostki się nie liczy w tej funkcji, aby się liczyła należy użyć funkcji {{Code|{{sr|#p["Nazwa przestrzeni nazw dyskusji 2"](frame,...)|p=Pudełko}}}}. Definicja skrótowa funkcji: <syntaxhighlight lang="lua"> p["Nazwa przestrzeni nazw dyskusji"]=function(frame,czy_uwzglednic_alternatywna_nazwe,i)...end; </syntaxhighlight> Wtedy ciało funkcji tej, czyli jego definicja w środku, jest: <syntaxhighlight lang="lua"> -- Jest liczony numer parametru nazwy przestrzeni nazw, domyslnie chodzi tu o numer bazowy parametrów przestrzennych; local numer_jednostki=i or frame.args["numer jednostki"]; local liczba_numer_jednostki=((numer_jednostki)and(tonumber(numer_jednostki))or 0); local pudelko_pomocne_modul=require("Module:Pudełko/Pomocne"); -- Liczy nazwę przestrzeni nazw dyskusji na podstawie podanych parametrów; return pudelko_pomocne_modul.Nazwa_przestrzeni_nazw(frame,2, czy_uwzglednic_alternatywna_nazwe,liczba_numer_jednostki); </syntaxhighlight> Parametry funkcji: * {{Code|frame}} - tablica ramki tablicy transportu, * {{Code|czy_uwzglednic_alternatywna_nazwe}} - czy ma uwzględniać nazwę przestrzeni nazw domyślną szablonu, dostępne wartości: {{Code|false}}, w której nazwa domyślna nie jest uwzględniana wtedy, oraz {{Code|nil}} i {{Code|true}}, które oznaczają to samo, w tym jeżeli ona jest uwzględniana, wtedy jest brany parametr pierwszy dziecka, który musi istnieć przy takiej wartości tego parametru, tzn. {{Code|{{m|Pudełko|Nazwa przestrzeni nazw dyskusji|Szablon}}}} - ta nazwa domyślna zostanie przekształcona na dyskusji, a jeżeli ona by była dyskusji, to nie byłoby żadnego przekształcenia, a nazwa uzyskana nazwy przestrzeni nazw z parametrów przestrzennych jest w takim przypadku błędna, to w takim razie brany jest ten parametr, a jeżeli nazwa domyślna jest błędna, czyli {{Code|{{m|Pudełko|Nazwa przestrzeni nazw dyskusji|Moja przestrzeń}}}}, wtedy funkcja zwraca stan błędu {{Code|(błąd)}}. * {{Code|i}} - numer zmiennej nazwy przestrzeni nazw. Funkcja wykorzystuje {{Code|{{sr|#p.Nazwa_przestrzeni_nazw(frame,...)|p=Pudełko/Pomocne}}}} do wyznaczania ogólnego nazwy przestrzeni nazw dla pozycji bazowej i numerkowej, tzn. dla pozycji: jeden, dwa, trzy,..., itd, i ich ogólnej. Parametry ramki tablicy transportu dziecka: * {{Code|nazwa przestrzeni nazw}}, {{Code|nazwa przestrzeni nazw 1}}, {{Code|nazwa przestrzeni nazw 2}}, {{Code|nazwa przestrzeni nazw 3}},..., {{Code|nazwa przestrzeni nazw i}} - nazwy przestrzeni nazw dla pozycji bazowej, numerkowej i ogólnej, * {{Code|typ jednostki}}, {{Code|typ jednostki 1}}, {{Code|typ jednostki 2}}, {{Code|typ jednostki 3}},..., {{Code|typ jednostki i}} - typy jednostek, którym odpowiadają pewne przestrzenie przedmiotowe, dla pozycji bazowej, numerkowej i ogólnej, ** {{Code|dyskusja typu jednostki}}, {{Code|dyskusja typu jednostki 1}}, {{Code|dyskusja typ jednostki 2}}, {{Code|dyskusja typ jednostki 3}},..., {{Code|dyskusja typ jednostki i}} - czy dany typ jednostki ma przedstawiać, jeśli niepusta, przestrzeń dyskusji dla pozycji bazowej, numerkowej i ogólnej, * {{Code|numer jednostki}} - jak parametr {{Code|i}} nie został ustawiony, to wtedy liczy się ta zmienna. Parametr ramki tablicy transportu rodzica szablonu: * {{Code|nazwa przestrzeni nazw}}, {{Code|nazwa przestrzeni nazw 1}}, {{Code|nazwa przestrzeni nazw 2}}, {{Code|nazwa przestrzeni nazw 3}},..., {{Code|nazwa przestrzeni nazw i}} - nazwy przestrzeni nazw dla pozycji bazowej oraz zwykłej i ogólnej numerkowej, * {{Code|typ jednostki}}, {{Code|typ jednostki 1}}, {{Code|typ jednostki 2}}, {{Code|typ jednostki 3}},..., {{Code|typ jednostki i}} - typy jednostek, którym odpowiadają pewne przestrzenie przedmiotowe, dla pozycji bazowej, numerkowej i ogólnej, ** {{Code|dyskusja typu jednostki}}, {{Code|dyskusja typu jednostki 1}}, {{Code|dyskusja typ jednostki 2}}, {{Code|dyskusja typ jednostki 3}},..., {{Code|dyskusja typ jednostki i}} - czy dany typ jednostki ma przedstawiać, jeśli niepusta, przestrzeń dyskusji dla pozycji bazowej, numerkowej i ogólnej. Przykłady: <syntaxhighlight lang="mediawiki"> {{Nazwa szablonu|nazwa przestrzeni nazw=Wikibooks|nazwa przestrzeni nazw 2=Szablon|nazwa przestrzeni nazw i=Moduł}} </syntaxhighlight> W dziecku powiedzmy jest wywołanie, i szukamy nazwy przestrzeni nazw o numerze dwa, która nie została podana, ale istnieje za to jej wersji ogólna {{Code|nazwa przestrzeni nazw i}} i domyślna {{Code|nazwa przestrzeni nazw}}: <syntaxhighlight lang="mediawiki"> {{#invoke:Pudełko|Nazwa przestrzeni nazw dyskusji|numer jednostki=1}} </syntaxhighlight> Na podstawie powyższego przykładu otrzymamy wynik o schemacie, nie wyniku, bo tam nie ma zmiennej {{Code|nazwa przestrzeni nazw 1}}, ale jest {{Code|nazwa przestrzeni nazw i}}: <syntaxhighlight lang="mediawiki"> <!-- Ale nie "nazwa przestrzeni nazw", bo jej nie ma, ale za to istnieje "nazwa przestrzeni nazw i"; --> <!-- nazwa przestrzeni nazw 2=nazwa przestrzeni nazw i=Moduł; --> <!-- Czyli wynik: --> Dyskusja modułu <!-- Widzimy, że wygenerowała się nazwa przestrzeni nazw, którą jest przestrzeń dyskusji przestrzeni programowej przestrzeni przedmiotowej "Moduł", którą również jest "Szablon" jego przestrzeni dyskusji "Dyskusja szablonu", a dla ich przestrzeni przedmiotowej, zamiast dyskusji, to przekształca się na dyskusji jej odpowiadającą; --> </syntaxhighlight> Nie jest brana w tym powyższym przykładzie zmienna {{Code|nazwa przestrzeni nazw}}, bo jej nie ma, ale za to jest {{Code|nazwa przestrzeni nazw i}}, bo ona występuje jako parametr domyślny ogólny dla parametrów numerkowych. Przykłady w wikikodzie: * {{Code|{{m|Pudełko|Nazwa przestrzeni nazw dyskusji|numer jednostki{{=}}2}}}} → {{Tt|{{#invoke:Pudełko|Nazwa przestrzeni nazw dyskusji|numer jednostki=2}}}} * {{Code|{{m|Pudełko|Nazwa przestrzeni nazw dyskusji|Szablon|nazwa przestrzeni nazw i{{=}}Moja przestrzeń|numer jednostki{{=}}2}}}} → {{Tt|{{#invoke:Pudełko|Nazwa przestrzeni nazw dyskusji|Szablon|nazwa przestrzeni nazw i=Moja przestrzeń|numer jednostki=2}}}} * {{Code|{{m|Pudełko|Nazwa przestrzeni nazw dyskusji|nazwa przestrzeni nazw 2{{=}}Szablon|numer jednostki{{=}}2}}}} → {{Tt|{{#invoke:Pudełko|Nazwa przestrzeni nazw dyskusji|nazwa przestrzeni nazw 2=Szablon|numer jednostki=2}}}} * {{Code|{{m|Pudełko|Nazwa przestrzeni nazw dyskusji|nazwa przestrzeni nazw 2{{=}}Szablon|numer jednostki{{=}}2}}}} → {{Tt|{{#invoke:Pudełko|Nazwa przestrzeni nazw dyskusji|nazwa przestrzeni nazw i=Szablon|numer jednostki=2}}}} * {{Code|{{m|Pudełko|Nazwa przestrzeni nazw dyskusji|nazwa przestrzeni nazw{{=}}Szablon|numer jednostki{{=}}2}}}} → {{Tt|{{#invoke:Pudełko|Nazwa przestrzeni nazw dyskusji|nazwa przestrzeni nazw=Szablon|numer jednostki=2}}}} Powyżej dla przykładu podano parametry nie w rodzicu w szablonie, tylko w dziecku, jeśli chodzi o parametry nazw przestrzeni nazw, ale ich się za to nie powinno podawać w tych ramach, tylko w szablonach, w których wywoływane są te ramki pudełek {{Code|{{m|Pudełko}}}}, ale tak tutaj tak zrobiono by było najłatwiej sprawdzić działanie tego typu funkcji. Analogicznie możemy podawać parametry typu jednostki, np.: wywołaniu modułowym {{Code|{{m|Pudełko|Nazwa przestrzeni nazw dyskusji|typ jednostki 2{{=}}strona szablonu|numer jednostki{{=}}2}}}}, ale o tym więcej w rozdziałach {{Code|{{sr|# p["Typ jednostki"](frame,i)|p=Pudełko}}}}, {{Code|{{sr|#p["Typ jednostki 2"](frame,i)|p=Pudełko}}}}, {{Code|{{sr|#p["Typ jednostki 3"](frame,i)|p=Pudełko}}}} itp. w „{{sr|#Funkcje typu jednostki|p=Pudełko}}”, ale wtedy nazwa przestrzeni nazw reprezentowana przez {{Parametr|typ jednostki 2|strona szablonu}}, jest zamieniana na nazwę przestrzeni nazw dyskusji. Parametr dyskusji typu jednostki bazowy lub dla danego numerka ogólny, czy szczegółowy, nie gra roli. Również parametry typu jednostki nie powinno się podawać w dziecku w ramce, tylko w rodzicu w szablonie jako parametry, w którym ta ramka jest wywoływana, ale tutaj podano jedynie dla przykładu, jak najłatwiej sprawdzić działanie tych parametrów tej funkcji. Najpierw w funkcji nagłówku brane są parametry nazw przestrzeni nazw, a jeżeli ich nie ma, to parametry typu jednostki, a jeżeli nie ma, to generowane są nazwy na podstawie aktualnego modułu. == Funkcje nazw przestrzeni nazw drugiej wersji == === {{Code|p["Nazwa przestrzeni nazw 2"](frame,...)}} === Funkcja pisze nazwę przestrzeni nazw, niezależnie, czy to jest przedmiotowa, czy dyskusji, według podanej w zmiennej {{Code|nazwa przestrzeni nazw}} dla pozycja bazowej w podanych parametrach szablonu rodzicu ramki dziecka, lub dla innej pozycji należy parametr podawaćw formie {{Code|nazwa przestrzeni nazw 1}}, {{Code|nazwa przestrzeni nazw 2}}, {{Code|nazwa przestrzeni nazw 3}},..., lub te parametry można podać w postaci ogólnej {{Code|nazwa przestrzeni nazw i}}. Parametry podaje się w parametrach rodzica wywołania tej funkcji {{Code|{{m|Pudełko|Nazwa przestrzeni nazw 2}}}} (ale ich nie trzeba podawać w dziecku, ale można) i w parametrach dziecka, jeśli chodzi o zmienną {{Code|numer jednostki}}, czyli np.: {{Code|{{m|Pudełko|Nazwa przestrzeni nazw 2|numer jednostki{{=}}<jakaś liczba całkowita dodatnia>}}}}. Te parametry przestrzenne zamiast w rodzicu w szablonie można podać w ramce dziecka, wtedy parametry dziecka mają pierwszeństwo. Przestrzeń nazw z parametrów nazw przestrzennych może odpowiadać wartości przestrzeni głównej, to wtedy odpowiednia przestrzeń nazw z parametru nazwy jednostki się liczy w tej funkcji, wtedy jest liczona nazwa przestrzeni nazw z tego parametru. Gdy parametry przestrzenne lub typ jednostki w drugim podejściu nie wskazują na przestrzeń główną, to wtedy działanie tej funkcji jest podobne do {{Code|{{sr|#p["Nazwa przestrzeni nazw"](frame,...)|p=Pudełko}}}}. Definicja skrótowa funkcji: <syntaxhighlight lang="lua"> p["Nazwa przestrzeni nazw 2"]=function(frame,czy_uwzglednic_alternatywna_nazwe,i)...end; </syntaxhighlight> Wtedy ciało funkcji tej, czyli jego definicja w środku, jest: <syntaxhighlight lang="lua"> local pudelko_pomocne_modul=require("Module:Pudełko/Pomocne"); -- Liczy nazwę przestrzeni nazw, jeżeli z parametrów przestrzennych przestrzeń wskazuje na główną, to wtedy jest liczona przestrzeń nazw z nazwy jednostki; return pudelko_pomocne_modul.Nazwa_przestrzeni_nazw_2(frame,czy_uwzglednic_alternatywna_nazwe,i) </syntaxhighlight> Parametry funkcji: * {{Code|frame}} - tablica ramki tablicy transportu, * {{Code|czy_uwzglednic_alternatywna_nazwe}} - czy ma uwzględniać nazwę przestrzeni nazw domyślną szablonu, dostępne wartości: {{Code|false}}, w której nazwa domyślna nie jest uwzględniana wtedy, oraz {{Code|nil}} i {{Code|true}}, które oznaczają to samo, w tym jeżeli ona jest uwzględniana, wtedy jest brany parametr pierwszy dziecka, który musi istnieć przy takiej wartości tego parametru, tzn. {{Code|{{m|Pudełko|Nazwa przestrzeni nazw 2|Szablon}}}}, a nazwa uzyskana nazwy przestrzeni nazw jest w takim przypadku błędna, a jeżeli nazwa domyślna jest błędna, czyli {{Code|{{m|Pudełko|Nazwa przestrzeni nazw 2|Moja przestrzeń}}}}, wtedy funkcja zwraca stan błędu {{Code|(błąd)}}. * {{Code|i}} - numer zmiennej nazwy przestrzeni nazw. Funkcja wykorzystuje {{Code|{{sr|#p.Nazwa_przestrzeni_nazw_2(frame,...)|p=Pudełko/Pomocne}}}} do wyznaczania ogólnego nazwy przestrzeni nazw dla pozycji bazowej i numerkowej, tzn. dla pozycji: jeden, dwa, trzy,..., itd, i ich ogólnej. Parametry ramki tablicy transportu dziecka: * {{Code|nazwa przestrzeni nazw}}, {{Code|nazwa przestrzeni nazw 1}}, {{Code|nazwa przestrzeni nazw 2}}, {{Code|nazwa przestrzeni nazw 3}},..., {{Code|nazwa przestrzeni nazw i}} - nazwy przestrzeni nazw dla pozycji bazowej, numerkowej i ogólnej, * {{Code|typ jednostki}}, {{Code|typ jednostki 1}}, {{Code|typ jednostki 2}}, {{Code|typ jednostki 3}},..., {{Code|typ jednostki i}} - typy jednostek, którym odpowiadają pewne przestrzenie przedmiotowe, dla pozycji bazowej, numerkowej i ogólnej, ** {{Code|dyskusja typu jednostki}}, {{Code|dyskusja typu jednostki 1}}, {{Code|dyskusja typ jednostki 2}}, {{Code|dyskusja typ jednostki 3}},..., {{Code|dyskusja typ jednostki i}} - czy dany typ jednostki ma przedstawiać, jeśli niepusta, przestrzeń dyskusji dla pozycji bazowej, numerkowej i ogólnej, * {{Code|numer jednostki}} - jak parametr {{Code|i}} nie został ustawiony, to wtedy liczy się ta zmienna. Parametr ramki tablicy transportu rodzica szablonu: * {{Code|nazwa przestrzeni nazw}}, {{Code|nazwa przestrzeni nazw 1}}, {{Code|nazwa przestrzeni nazw 2}}, {{Code|nazwa przestrzeni nazw 3}},..., {{Code|nazwa przestrzeni nazw i}} - nazwy przestrzeni nazw dla pozycji bazowej oraz zwykłej i ogólnej numerkowej, * {{Code|typ jednostki}}, {{Code|typ jednostki 1}}, {{Code|typ jednostki 2}}, {{Code|typ jednostki 3}},..., {{Code|typ jednostki i}} - typy jednostek, którym odpowiadają pewne przestrzenie przedmiotowe, dla pozycji bazowej, numerkowej i ogólnej, ** {{Code|dyskusja typu jednostki}}, {{Code|dyskusja typu jednostki 1}}, {{Code|dyskusja typ jednostki 2}}, {{Code|dyskusja typ jednostki 3}},..., {{Code|dyskusja typ jednostki i}} - czy dany typ jednostki ma przedstawiać, jeśli niepusta, przestrzeń dyskusji dla pozycji bazowej, numerkowej i ogólnej. Przykłady: <syntaxhighlight lang="mediawiki"> {{Nazwa szablonu|nazwa przestrzeni nazw=Wikibooks|nazwa przestrzeni nazw 1=Szablon|nazwa przestrzeni nazw i=|nazwa jednostki 2=Wikibooks:Strona}} </syntaxhighlight> W dziecku powiedzmy jest wywołanie, i szukamy nazwy przestrzeni nazw o numerze dwa, która została podana, ale istnieje za to jej wersji ogólna {{Code|nazwa przestrzeni nazw i}} i domyślna {{Code|nazwa przestrzeni nazw}}, ale wtedy dla tego numerkowego liczy się to ogólne z {{Code| i}}, a ponieważ ta nazwa jest pusta, więc będziemy liczyli nazwę przestrzeni nazw z {{Code|nazwa jednostki 2}}: <syntaxhighlight lang="mediawiki"> {{#invoke:Pudełko|Nazwa przestrzeni nazw 2|numer jednostki=2}} </syntaxhighlight> Na podstawie powyższego przykładu otrzymamy wynik o schemacie, nie wyniku, bo tam nie ma zmiennej {{Code|nazwa przestrzeni nazw 1}}, ale jest {{Code|nazwa przestrzeni nazw i}}: <syntaxhighlight lang="mediawiki"> <!-- Ale nie "nazwa przestrzeni nazw 2", bo jej nie ma, ale za to istnieje "nazwa przestrzeni nazw i"; --> <!-- nazwa przestrzeni nazw 2=nazwa przestrzeni nazw i="", a nazwa jednostki 2="Wikibooks:Strona"; --> <!-- Czyli wynik: --> Wikibooks <!-- Widzimy, że wygenerowała się nazwa przestrzeni nazw, którą jest przestrzeń nieprogramowa, ale projektu, wychodząca z nazwy jednostek w tym przypadku z "nazwa jednostki 2"; --> </syntaxhighlight> Nie jest brana w tym powyższym przykładzie zmienna {{Code|nazwa przestrzeni nazw}}, bo jej nie ma, ale za to jest {{Code|nazwa przestrzeni nazw i}}, bo ona występuje jako parametr domyślny ogólny dla parametrów numerkowych. Tytaj jest używwana jest zmienna {{Code|nazwa jednostki 2}} do wygenerowania ostatecznego wyniki,bo jak mozna zauważyć, parametry przestrzenne wskazują na przestrzeń główną, a nazwy jednostek już nie. Przykłady w wikikodzie: * {{Code|{{m|Pudełko|Nazwa przestrzeni nazw 2|numer jednostki{{=}}2}}}} → {{Tt|{{#invoke:Pudełko|Nazwa przestrzeni nazw 2|numer jednostki=2}}}} * {{Code|{{m|Pudełko|Nazwa przestrzeni nazw 2|Szablon|nazwa przestrzeni nazw i{{=}}Moja przestrzeń|numer jednostki{{=}}2}}}} → {{Tt|{{#invoke:Pudełko|Nazwa przestrzeni nazw 2|Szablon|nazwa przestrzeni nazw i=Moja przestrzeń|numer jednostki=2}}}} * {{Code|{{m|Pudełko|Nazwa przestrzeni nazw 2|nazwa przestrzeni nazw 2{{=}}|nazwa jednostki 2{{=}}Szablon:Strona|numer jednostki{{=}}2}}}} → {{Tt|{{#invoke:Pudełko|Nazwa przestrzeni nazw 2|nazwa przestrzeni nazw 2=|nazwa jednostki 2=Szablon:Strona|numer jednostki=2}}}} * {{Code|{{m|Pudełko|Nazwa przestrzeni nazw 2|nazwa przestrzeni nazw i{{=}}|nazwa jednostki 2{{=}}Szablon:Strona|numer jednostki{{=}}2}}}} → {{Tt|{{#invoke:Pudełko|Nazwa przestrzeni nazw 2|nazwa przestrzeni nazw i=|nazwa jednostki 2=Szablon:Strona|numer jednostki=2}}}} * {{Code|{{m|Pudełko|Nazwa przestrzeni nazw 2|Szablon|nazwa przestrzeni nazw{{=}}|nazwa jednostki 2{{=}}Wikibooks:Strona|numer jednostki{{=}}2}}}} → {{Tt|{{#invoke:Pudełko|Nazwa przestrzeni nazw 2|Szablon|nazwa przestrzeni nazw=|nazwa jednostki 2=Wikibooks:Strona|numer jednostki=2}}}} Powyżej dla przykładu podano parametry nie w rodzicu w szablonie, tylko w dziecku, jeśli chodzi o parametry nazw przestrzeni nazw i nazw jednostek, ale ich się za to nie powinno podawać w tych ramach, tylko w szablonach, w których wywoływane są te ramki pudełek {{Code|{{m|Pudełko}}}}, ale tak tutaj tak zrobiono by było najłatwiej sprawdzić działanie tego typu funkcji. Analogicznie możemy podawać parametry typu jednostki, np.: wywołaniu modułowym {{Code|{{m|Pudełko|Nazwa przestrzeni nazw 2|typ jednostki 2{{=}}strona szablonu|numer jednostki{{=}}2}}}}, ale o tym więcej w rozdziałach {{Code|{{sr|# p["Typ jednostki"](frame,i)|p=Pudełko}}}}, {{Code|{{sr|#p["Typ jednostki 2"](frame,i)|p=Pudełko}}}}, {{Code|{{sr|#p["Typ jednostki 3"](frame,i)|p=Pudełko}}}} itp. w „{{sr|#Funkcje typu jednostki|p=Pudełko}}”, on definiuje przestrzenie przedmiotowe, ale można użyć parametru dyskusji typu jednostki z wartością niepustą, wtedy wyświetli się nazwa przestrzeni nazw dyskusji. Jeżeli typ jednostki wskazuje na przestrzeń nazw główną, wtedy się liczą parametry nazw jednostek. Również parametry typu jednostki nie powinno się podawać w dziecku w ramce, tylko w rodzicu w szablonie jako parametry, w którym ta ramka jest wywoływana, ale tutaj podano jedynie dla przykładu, jak najłatwiej sprawdzić działanie tych parametrów tej funkcji. Najpierw w funkcji nagłówku brane są parametry nazw przestrzeni nazw, a jeżeli ich nie ma, to parametry typu jednostki, a jeżeli nie ma lub parametry przestrzenne wskazują na przestrzeń główną, i nie ma nazwy jednostki, to generowane są nazwy tej funkcji na podstawie aktualnej strony. === {{Code|p["Nazwa przedmiotowej przestrzeni nazw 2"](frame,...)}} === === {{Code|p["Nazwa przestrzeni nazw dyskusji 2"](frame,...)}} === == Funkcje pełnych nazw jednostki == === {{Code|p["Pełna nazwa dyskusji jednostki"](frame,i)}} === === {{Code|p["Pełna nazwa przedmiotowa jednostki"](frame,i)}} === === {{Code|p["Pełna nazwa jednostki"](frame,i)}} === == Funkcje pełnych nazw jednostki drugiej wersji == === {{Code|p["Pełna nazwa dyskusji jednostki 2"](frame,i)}} === === {{Code|p["Pełna nazwa przedmiotowa jednostki 2"](frame,i)}} === === {{Code|p["Pełna nazwa jednostki 2"](frame,i)}} === == Funkcje pełnych nazw jednostki trzeciej wersji == === {{Code|p["Pełna nazwa dyskusji jednostki 3"](frame,i)}} === === {{Code|p["Pełna nazwa przedmiotowa jednostki 3"](frame,i)}} === === {{Code|p["Pełna nazwa jednostki 3"](frame,i)}} === == Funkcje nazw jednostki == === {{Code|p["Nazwa jednostki"](frame,i)}} === == Funkcje nazw jednostki drugiej wersji == === {{Code|p["Nazwa jednostki 2"](frame,i)}} === === {{Code|p["Nazwa przedmiotowa jednostki 2"](frame,i)}} === === {{Code|p["Nazwa dyskusji jednostki 2"](frame,i)}} === == Funkcje nazw przestrzeni nazw trzeciej wersji == === {{Code|p["Nazwa przestrzeni nazw 3"](frame,i)}} === === {{Code|p["Nazwa przedmiotowej przestrzeni nazw 3"](frame,i)}} === === {{Code|p["Nazwa przestrzeni nazw dyskusji 3"](frame,i)}} === == Funkcje nazw jednostki trzeciej wersji == === {{Code|p["Nazwa jednostki 3"](frame,i)}} === === {{Code|p["Nazwa przedmiotowa jednostki 3"](frame,i)}} === === {{Code|p["Nazwa dyskusji jednostki 3"](frame,i)}} === == Funkcje typu jednostki == === {{Code|p["Typ jednostki"](frame,i)}} === === {{Code|p["Typ jednostki 2"](frame,i)}} === === {{Code|p["Typ jednostki 3"](frame,i)}} === === Funkcje typu jednostki przedmiotowe === ==== {{Code|p["Przedmiotowy typ jednostki"](frame,i)}} ==== ==== {{Code|p["Przedmiotowy typ jednostki 2"](frame,i)}} ==== ==== {{Code|p["Przedmiotowy typ jednostki 3"](frame,i)}} ==== === Fukcje typu jednostki dyskusji === ==== {{Code|p["Dyskusyjny typ jednostki"](frame,i)}} ==== ==== {{Code|p["Dyskusyjny typ jednostki 2"](frame,i)}}} ==== ==== {{Code|p["Dyskusyjny typ jednostki 3"](frame,i)}} ==== == Funkcje chech pudełka == === {{Code|p["Cecha pudełka"](frame)}} === === {{Code|p["Przedmiotowa cecha pudełka"](frame)}} === === {{Code|p["Dyskusyjna cecha pudełka"](frame)}} === == Fukcje ogólnego pudełka == === {{Code|p["Ogólne pudełko"](frame)}} === == Funkcje ogólne == === {{Code|p["Tekst pudełka"](frame)}} === == Funkcje błędów pudełka == === {{Code|p["Błędy pudełka"](frame)}} === === {{Code|p["Przedmiotowe błędy pudełka"](frame)}} === === {{Code|p["Dyskusyjne błędy pudełka"](frame)}} === == Funkcje nazw stron == === {{Code|p["Nazwa strony głównej projektu"](frame,i)}} === === {{Code|p["Nazwa strony głównej dla dzieci projektu"](frame,i)}} === == Funkcje kodów == === {{Code|p["Kod języka"](frame,i)}} === === {{Code|p["Kod projektu"](frame,i)}} === === {{Code|p["Klucz projektu"](frame,i)}} === == Funkcje wiki == === {{Code|p["Inny niż język bieżący wiki"](frame)}} === === {{Code|p["Inne niż lokalne wiki"](frame)}} === === {{Code|p["Inne niż bieżące wiki"](frame)}} === == Funkcje typów parametrów, czy podane je == === {{Code|p["Podano parametry nienazwane"](frame)}} === === {{Code|p["Podano parametry numerowane"](frame)}} === === {{Code|p["Podano parametry nazwane"](frame)}} === == Funkcje kodów tego projektu == === {{Code|p["Kod projektu tego projektu"](frame)}} === === {{Code|p["Kod języka tego projektu"](frame)}} === === {{Code|p["Klucz projektu tego projektu"](frame)}} === == Funkcje stron == === {{Code|p["Strona główna tego projektu"](frame)}} === === {{Code|p["Strona główna dla dzieci tego projektu"](frame)}} === == Funkcje nazw stron drugiej wersji == === {{Code|p["Nazwa strony głównej dla dzieci projektu 2"](frame)}} === === {{Code| p["Nazwa strony głównej projektu 2"](frame)}} === {{BrClear}} <noinclude><!-- -->{{ProstaStronaKoniec}}<!-- -->{{Kategoria|Opisy funkcji, w Lua w Scribunto, w modułach}}<!-- --></noinclude> jvwu2puwxdbp5q1sfaglanf94eki9mw 540376 540375 2026-04-23T13:01:49Z Persino 2851 /* {{Code|p["Nazwa przestrzeni nazw 2"](frame,...)}} */ 540376 wikitext text/x-wiki <noinclude>{{ProstaStronaStart | nagłówek = {{Podrozdział|{{ld2|Pudełko}}|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 pudelko_modul=require("Module:Pudełko"); </syntaxhighlight> dzięki, któremu można wypisywać funkcje należącego do niego. Posługuje się na parametrach pudełkowych {{Parametr|nazwa przestrzeni nazw}} (czy też bez numerka {{Parametr|nazwa przestrzeni nazw i}} dla tego numerowanego) lub te z numerkiem po jednej spacji w nich (ale nie dla tego z końcówką {{Code| i}}) mogą zostać użyte jako parametry szablonu. Moduł {{Code|{{ld2|Pudełko}}}} przedstawia funkcje nazw w oparciu o funkcje nazw {{Code|{{ld2|Nazwy}}}}, generuje on nazwy za pomocą parametrów pudełkowych podanych poniżej. Parametr {{Parametr|nazwa jednostki}} (lub parametr {{Parametr|cel}} dla numerka tego pierwszego, tego alternatywnego), lub te z numerkiem po jednej spacji w nazwie parametru, albo numerowane numerkami {{Code|1}}, {{Code|2}},..., mogą zostać użyte jako parametry szablonu. Parametry określające rodzaj jednostki {{Parametr|typ jednostki}} z {{Parametr|dyskusja typu jednostki}}, itp. w wersjach z numerkiem po jednej spacji w nich mogą zostać użyte jako parametry szablonu. A te tymi numerowanymi liczbami naturalnymi {{Tt|nazwy jednostki}} od jedynki wzwyż poprzez szablon, w którym są one użyte, one też mogą być użyte z dwukropkiem, te numerowane, na samym początku nazwy, wtedy one są traktowane jako pełne nazwy strony, i wtedy one nie zostaną z interpretowane, że do nich trzeba użyć parametr odpowiedni z nazwą przetrzeni nazw z tego numerowanego, czy ogólny, aby utworzyć znów inną pełną nazwę strony dla tego numerka. Zestawienie: * {{Code|nazwa przestrzeni nazw}} i {{Code|nazwa przestrzeni nazw i}} (ogólna nazwa przestrzeni nazw dla wszystkich numerków, i tych numerowanych jednostek) - i to pierwsze z numerkiem, tzn. {{Code|nazwa przestrzeni nazw 1}}, {{Code|nazwa przestrzeni nazw 2}}, ..., * {{Code|nazwa jednostki}} - i te z numerkiem: {{Code|nazwa jednostki 1}}, {{Code|nazwa jednostki 2}}, ..., lub gdy jest zamiast tego parametrem numerowany, {{Code|1}}, {{Code|2}},..., który dla tego pierwszego może być uznany jako: {{Code|cel}} {{=}} {{Code|1}}, * {{Code|typ jednostki}} (parametr bazowy) i {{Code|typ jednostki i}} (parametr domyślny numerkowy) - i te z numerkiem: {{Code|typ jednostki 1}}, {{Code|typ jednostki 2}}, ..., tzn. gdy chcemy określić z jakim typem jednostki mamy do czynienia w zależności do jakiej przestrzeni nazw należy, a w danej, czy jest on np. programowy, czy tylko jest opisem, jak to bywa w szablonach {{Np|Template|link=tak}}, podobnie jest w przypadku {{Np|Module|link=tak}}, czy jak jest w innych przestrzeniach nazw, ** {{Code|dyskusja typu jednostki}} (parametr bazowy) i {{Code|dyskusja typu jednostki i}} (parametr domyślny numerkowy) - i te z numerkiem: {{Code|dyskusja typu jednostki 1}}, {{Code|dyskusja typu jednostki 2}}, ..., gdy chcemy określić wartością niepustą,że chodzi tutaj o typ jednostki. == {{Code|p.CzyNiepoprawnaNazwa(nazwa_jednostki)}} == Funkcja sprawdzajaca, czy jest poprawnie podana nazwa jednostki, czy ma poprawną nazwę. Znakami tymi, z których nie powinna składać się nazwa jest {{Code|<nowiki>{}<>|[]#\n</nowiki>}} i dodatkowo znak {{Code|&#127;}} (kod {{Code|{{Nowiki|&#127;}}}}). Też nie może składać się z trzech znaków tyldy, tzn. {{Code|<nowiki>~~~</nowiki>}}. Również w swojej budowie nie może składać się ze kodów {{Strong|HTML}} literowych o wzorze {{Code|{{Nowiki|&(%a+);}}}}. Natomiast może składać się z {{Code|{{Nowiki|&#(%d+);}}}} i {{Code|{{Nowiki|&#x(%x+);}}}}, ale w pierw te kody muszą być zamienione na normalne znaki. Skrótowa definicja funkcji: <syntaxhighlight lang="lua"> function p.CzyNiepoprawnaNazwa(nazwa_jednostki)...end; </syntaxhighlight> Wtedy ciało funkcji tej, czyli jego definicja w środku, jest: <syntaxhighlight lang="lua"> -- Moduł: "Moduł:Html/dane", służy do ładowania znaku o kodzie HTML "&#127;"; local html_dane_modul=mw.loadData("Module:Html/dane"); return mw.ustring.match(nazwa_jednostki,"[{}<>|%[%]#\n"..html_dane_modul.znak_127.."]+") or mw.ustring.match(nazwa_jednostki,"~~~") or mw.ustring.match(nazwa_jednostki,"&(%a+);"); </syntaxhighlight> Parametry: * {{Code|nazwa_jednostki}} - nazwa jednostki do sprawdzenia. Przykłady: <syntaxhighlight lang="lua"> local pudelko_modul=require("Module:Pudełko"); -- Podana przykładowa niepoprawna nazwa jedostki local nazwa_jednostki="Nazwa pliku [[Nazwa linku w pliku]]"; -- Fukcja zwróci wartość: local czy_poprawna_nazwa=true; local czy_poprawna_nazwa=pudelko_modul.CzyNiepoprawnaNazwa(nazwa_jednostki); </syntaxhighlight> == Funkcje nazw przestrzeni nazw == === {{Code|p["Nazwa przestrzeni nazw"](frame,...)}} === Funkcja pisze nazwę przestrzeni nazw, niezależnie, czy to jest przedmiotowa, czy dyskusji, według podanej w zmiennej {{Code|nazwa przestrzeni nazw}} dla pozycja bazowej w podanych parametrach szablonu rodzicu ramki dziecka, lub dla innej pozycji należy parametr podawaćw formie {{Code|nazwa przestrzeni nazw 1}}, {{Code|nazwa przestrzeni nazw 2}}, {{Code|nazwa przestrzeni nazw 3}},..., lub te parametry można podać w postaci ogólnej {{Code|nazwa przestrzeni nazw i}}. Parametry podaje się w parametrach rodzica wywołania tej funkcji {{Code|{{m|Pudełko|Nazwa przestrzeni nazw}}}} (ale ich nie trzeba podawać w dziecku, ale można) i w parametrach dziecka, jeśli chodzi o zmienną {{Code|numer jednostki}}, czyli np.: {{Code|{{m|Pudełko|Nazwa przestrzeni nazw|numer jednostki{{=}}<jakaś liczba całkowita dodatnia>}}}}. Te parametry przestrzenne zamiast w rodzicu w szablonie można podać w ramce dziecka, wtedy parametry dziecka mają pierwszeństwo. Przestrzeń nazw z parametrów nazw przestrzennych może odpowiadać wartości przestrzeni głównej, to wtedy odpowiednia przestrzeń nazw z parametru nazwy jednostki się nie liczy w tej funkcji, aby się liczyła należy użyć funkcji {{Code|{{sr|#p["Nazwa przestrzeni nazw 2"](frame,...)|p=Pudełko}}}}. Definicja skrótowa funkcji: <syntaxhighlight lang="lua"> p["Nazwa przestrzeni nazw"]=function(frame,czy_uwzglednic_alternatywna_nazwe,i)...end; </syntaxhighlight> Wtedy ciało funkcji tej, czyli jego definicja w środku, jest: <syntaxhighlight lang="lua"> -- Jest liczony numer parametru nazwy przestrzeni nazw, domyslnie chodzi tu o numer bazowy parametrów przestrzennych; local numer_jednostki=i or frame.args["numer jednostki"]; local liczba_numer_jednostki=((numer_jednostki)and(tonumber(numer_jednostki))or 0); local pudelko_pomocne_modul=require("Module:Pudełko/Pomocne"); -- Liczy nazwę przestrzeni nazw na podstawie podanych parametrów; return pudelko_pomocne_modul.Nazwa_przestrzeni_nazw(frame,0, czy_uwzglednic_alternatywna_nazwe,liczba_numer_jednostki); </syntaxhighlight> Parametry funkcji: * {{Code|frame}} - tablica ramki tablicy transportu, * {{Code|czy_uwzglednic_alternatywna_nazwe}} - czy ma uwzględniać nazwę przestrzeni nazw domyślną szablonu, dostępne wartości: {{Code|false}}, w której nazwa domyślna nie jest uwzględniana wtedy, oraz {{Code|nil}} i {{Code|true}}, które oznaczają to samo, w tym jeżeli ona jest uwzględniana, wtedy jest brany parametr pierwszy dziecka, który musi istnieć przy takiej wartości tego parametru, tzn. {{Code|{{m|Pudełko|Nazwa przestrzeni nazw|Szablon}}}}, a nazwa uzyskana nazwy przestrzeni nazw jest w takim przypadku błędna, a jeżeli nazwa domyślna jest błędna, czyli {{Code|{{m|Pudełko|Nazwa przestrzeni nazw|Moja przestrzeń}}}}, wtedy funkcja zwraca stan błędu {{Code|(błąd)}}. * {{Code|i}} - numer zmiennej nazwy przestrzeni nazw. Funkcja wykorzystuje {{Code|{{sr|#p.Nazwa_przestrzeni_nazw(frame,...)|p=Pudełko/Pomocne}}}} do wyznaczania ogólnego nazwy przestrzeni nazw dla pozycji bazowej i numerkowej, tzn. dla pozycji: jeden, dwa, trzy,..., itd, i ich ogólnej. Parametry ramki tablicy transportu dziecka: * {{Code|nazwa przestrzeni nazw}}, {{Code|nazwa przestrzeni nazw 1}}, {{Code|nazwa przestrzeni nazw 2}}, {{Code|nazwa przestrzeni nazw 3}},..., {{Code|nazwa przestrzeni nazw i}} - nazwy przestrzeni nazw dla pozycji bazowej, numerkowej i ogólnej, * {{Code|typ jednostki}}, {{Code|typ jednostki 1}}, {{Code|typ jednostki 2}}, {{Code|typ jednostki 3}},..., {{Code|typ jednostki i}} - typy jednostek, którym odpowiadają pewne przestrzenie przedmiotowe, dla pozycji bazowej, numerkowej i ogólnej, ** {{Code|dyskusja typu jednostki}}, {{Code|dyskusja typu jednostki 1}}, {{Code|dyskusja typ jednostki 2}}, {{Code|dyskusja typ jednostki 3}},..., {{Code|dyskusja typ jednostki i}} - czy dany typ jednostki ma przedstawiać, jeśli niepusta, przestrzeń dyskusji dla pozycji bazowej, numerkowej i ogólnej, * {{Code|numer jednostki}} - jak parametr {{Code|i}} nie został ustawiony, to wtedy liczy się ta zmienna. Parametr ramki tablicy transportu rodzica szablonu: * {{Code|nazwa przestrzeni nazw}}, {{Code|nazwa przestrzeni nazw 1}}, {{Code|nazwa przestrzeni nazw 2}}, {{Code|nazwa przestrzeni nazw 3}},..., {{Code|nazwa przestrzeni nazw i}} - nazwy przestrzeni nazw dla pozycji bazowej oraz zwykłej i ogólnej numerkowej, * {{Code|typ jednostki}}, {{Code|typ jednostki 1}}, {{Code|typ jednostki 2}}, {{Code|typ jednostki 3}},..., {{Code|typ jednostki i}} - typy jednostek, którym odpowiadają pewne przestrzenie przedmiotowe, dla pozycji bazowej, numerkowej i ogólnej, ** {{Code|dyskusja typu jednostki}}, {{Code|dyskusja typu jednostki 1}}, {{Code|dyskusja typ jednostki 2}}, {{Code|dyskusja typ jednostki 3}},..., {{Code|dyskusja typ jednostki i}} - czy dany typ jednostki ma przedstawiać, jeśli niepusta, przestrzeń dyskusji dla pozycji bazowej, numerkowej i ogólnej. Przykłady: <syntaxhighlight lang="mediawiki"> {{Nazwa szablonu|nazwa przestrzeni nazw=Wikibooks|nazwa przestrzeni nazw 2=Szablon|nazwa przestrzeni nazw i=Moduł}} </syntaxhighlight> W dziecku powiedzmy jest wywołanie, i szukamy nazwy przestrzeni nazw o numerze dwa, która nie została podana, ale istnieje za to jej wersji ogólna {{Code|nazwa przestrzeni nazw i}} i domyślna {{Code|nazwa przestrzeni nazw}}: <syntaxhighlight lang="mediawiki"> {{#invoke:Pudełko|Nazwa przestrzeni nazw|numer jednostki=1}} </syntaxhighlight> Na podstawie powyższego przykładu otrzymamy wynik o schemacie, nie wyniku, bo tam nie ma zmiennej {{Code|nazwa przestrzeni nazw 1}}, ale jest {{Code|nazwa przestrzeni nazw i}}: <syntaxhighlight lang="mediawiki"> <!-- Ale nie "nazwa przestrzeni nazw", bo jej nie ma, ale za to istnieje "nazwa przestrzeni nazw i"; --> <!-- nazwa przestrzeni nazw 2=nazwa przestrzeni nazw i=Moduł; --> <!-- Czyli wynik: --> Moduł <!-- Widzimy, że wygenerowała się nazwa przestrzeni nazw, którą jest przestrzeń programowa, którą również jest "Szablon"; --> </syntaxhighlight> Nie jest brana w tym powyższym przykładzie zmienna {{Code|nazwa przestrzeni nazw}}, bo jej nie ma, ale za to jest {{Code|nazwa przestrzeni nazw i}}, bo ona występuje jako parametr domyślny ogólny dla parametrów numerkowych. Przykłady w wikikodzie: * {{Code|{{m|Pudełko|Nazwa przestrzeni nazw|numer jednostki{{=}}2}}}} → {{Tt|{{#invoke:Pudełko|Nazwa przestrzeni nazw|numer jednostki=2}}}} * {{Code|{{m|Pudełko|Nazwa przestrzeni nazw|Szablon|nazwa przestrzeni nazw i{{=}}Moja przestrzeń|numer jednostki{{=}}2}}}} → {{Tt|{{#invoke:Pudełko|Nazwa przestrzeni nazw|Szablon|nazwa przestrzeni nazw i=Moja przestrzeń|numer jednostki=2}}}} * {{Code|{{m|Pudełko|Nazwa przestrzeni nazw|nazwa przestrzeni nazw 2{{=}}Szablon|numer jednostki{{=}}2}}}} → {{Tt|{{#invoke:Pudełko|Nazwa przestrzeni nazw|nazwa przestrzeni nazw 2=Szablon|numer jednostki=2}}}} * {{Code|{{m|Pudełko|Nazwa przestrzeni nazw|nazwa przestrzeni nazw 2{{=}}Szablon|numer jednostki{{=}}2}}}} → {{Tt|{{#invoke:Pudełko|Nazwa przestrzeni nazw|nazwa przestrzeni nazw i=Szablon|numer jednostki=2}}}} * {{Code|{{m|Pudełko|Nazwa przestrzeni nazw|nazwa przestrzeni nazw{{=}}Szablon|numer jednostki{{=}}2}}}} → {{Tt|{{#invoke:Pudełko|Nazwa przestrzeni nazw|nazwa przestrzeni nazw=Szablon|numer jednostki=2}}}} Powyżej dla przykładu podano parametry nie w rodzicu w szablonie, tylko w dziecku, jeśli chodzi o parametry nazw przestrzeni nazw, ale ich się za to nie powinno podawać w tych ramach, tylko w szablonach, w których wywoływane są te ramki pudełek {{Code|{{m|Pudełko}}}}, ale tak tutaj tak zrobiono by było najłatwiej sprawdzić działanie tego typu funkcji. Analogicznie możemy podawać parametry typu jednostki, np.: wywołaniu modułowym {{Code|{{m|Pudełko|Nazwa przestrzeni nazw|typ jednostki 2{{=}}strona szablonu|numer jednostki{{=}}2}}}}, ale o tym więcej w rozdziałach {{Code|{{sr|# p["Typ jednostki"](frame,i)|p=Pudełko}}}}, {{Code|{{sr|#p["Typ jednostki 2"](frame,i)|p=Pudełko}}}}, {{Code|{{sr|#p["Typ jednostki 3"](frame,i)|p=Pudełko}}}} itp. w „{{sr|#Funkcje typu jednostki|p=Pudełko}}”, on definiuje przestrzenie przedmiotowe, ale można użyć parametru dyskusji typu jednostki z wartością niepustą, wtedy wyświetli się nazwa przestrzeni nazw dyskusji. Również parametry typu jednostki nie powinno się podawać w dziecku w ramce, tylko w rodzicu w szablonie jako parametry, w którym ta ramka jest wywoływana, ale tutaj podano jedynie dla przykładu, jak najłatwiej sprawdzić działanie tych parametrów tej funkcji. Najpierw w funkcji nagłówku brane są parametry nazw przestrzeni nazw, a jeżeli ich nie ma, to parametry typu jednostki, a jeżeli nie ma, to generowane są nazwy na podstawie aktualnego modułu. === {{Code|p["Nazwa przedmiotowej przestrzeni nazw"](frame,...)}} === Funkcja pisze przedmiotową nazwę przestrzeni nazw jakikolwiek nazwy przestrzeni nazw (tzn. nazwę przedmiotową nazwy przestrzenie nazw, czyli nie dyskusji, zamieniana jest na nią samą, czyli identyfikator przestrzeni się nie zmienia, a dyskusji, nie przedmiotową, przekształca się na przedmiotową jej odpowiadającą, czyli w tym przypadku identyfikator przestrzeni zmniejsza się o numer mniej), według podanej w zmiennej {{Code|nazwa przestrzeni nazw}} dla pozycja bazowej w podanych parametrach szablonu rodzicu ramki dziecka, lub dla innej pozycji należy parametr podawać w formie {{Code|nazwa przestrzeni nazw 1}}, {{Code|nazwa przestrzeni nazw 2}}, {{Code|nazwa przestrzeni nazw 3}},..., lub te parametry można podać w postaci ogólnej {{Code|nazwa przestrzeni nazw i}}. Parametry podaje się w parametrach rodzica wywołania tej funkcji {{Code|{{m|Pudełko|Nazwa przedmiotowej przestrzeni nazw}}}} (ale ich nie trzeba podawać w dziecku, ale można) i w parametrach dziecka, jeśli chodzi o zmienną {{Code|numer jednostki}}, czyli np.: {{Code|{{m|Pudełko|Nazwa przedmiotowej przestrzeni nazw|numer jednostki{{=}}<jakaś liczba całkowita dodatnia>}}}}. Te parametry przestrzenne zamiast w rodzicu w szablonie można podać w ramce dziecka, wtedy parametry dziecka mają pierwszeństwo. Parametry przestrzenne mogą mogą być podane w postaci przestrzeni przedmiotowej lub dyskusji, ale ta funkcja zawsze ją zamienia na przedmiotową. Przestrzeń nazw z parametrów nazw przestrzennych może odpowiadać wartości przestrzeni głównej, to wtedy odpowiednia przestrzeń nazw z parametru nazwy jednostki się nie liczy w tej funkcji, aby się liczyła należy użyć funkcji {{Code|{{sr|#p["Nazwa przedmiotowej przestrzeni nazw 2"](frame,...)|p=Pudełko}}}}. Definicja skrótowa funkcji: <syntaxhighlight lang="lua"> p["Nazwa przedmiotowej przestrzeni nazw"]=function(frame,czy_uwzglednic_alternatywna_nazwe,i)...end; </syntaxhighlight> Wtedy ciało funkcji tej, czyli jego definicja w środku, jest: <syntaxhighlight lang="lua"> -- Jest liczony numer parametru nazwy przestrzeni nazw, domyslnie chodzi tu o numer bazowy parametrów przestrzennych; local numer_jednostki=i or frame.args["numer jednostki"]; local liczba_numer_jednostki=((numer_jednostki)and(tonumber(numer_jednostki))or 0); local pudelko_pomocne_modul=require("Module:Pudełko/Pomocne"); -- Liczy nazwę przestrzeni nazw przedmiotową na podstawie podanych parametrów; return pudelko_pomocne_modul.Nazwa_przestrzeni_nazw(frame,1, czy_uwzglednic_alternatywna_nazwe,liczba_numer_jednostki); </syntaxhighlight> Parametry funkcji: * {{Code|frame}} - tablica ramki tablicy transportu, * {{Code|czy_uwzglednic_alternatywna_nazwe}} - czy ma uwzględniać nazwę przestrzeni nazw domyślną szablonu, dostępne wartości: {{Code|false}}, w której nazwa domyślna nie jest uwzględniana wtedy, oraz {{Code|nil}} i {{Code|true}}, które oznaczają to samo, w tym jeżeli ona jest uwzględniana, wtedy jest brany parametr pierwszy dziecka, który musi istnieć przy takiej wartości tego parametru, tzn. {{Code|{{m|Pudełko|Nazwa przedmiotowej przestrzeni nazw|Dyskusja szablonu}}}} - ta nazwa domyślna zostanie zamieniona na przedmiotową, a jak ona by była przedmiotowa, to żadnej zamiany by nie było, a nazwa uzyskana z nazwy przestrzeni nazw z parametrów przestrzennych jest w takim przypadku błędna, to w takim razie brany jest ten parametr, a jeżeli ta nazwa domyślna jest błędna, czyli {{Code|{{m|Pudełko|Nazwa przedmiotowej przestrzeni nazw|Moja przestrzeń}}}}, wtedy funkcja zwraca stan błędu {{Code|(błąd)}}. * {{Code|i}} - numer zmiennej nazwy przestrzeni nazw. Funkcja wykorzystuje {{Code|{{sr|#p.Nazwa_przestrzeni_nazw(frame,...)|p=Pudełko/Pomocne}}}} do wyznaczania ogólnego nazwy przestrzeni nazw dla pozycji bazowej i numerkowej, tzn. dla pozycji: jeden, dwa, trzy,..., itd, i ich ogólnej. Parametry ramki tablicy transportu dziecka: * {{Code|nazwa przestrzeni nazw}}, {{Code|nazwa przestrzeni nazw 1}}, {{Code|nazwa przestrzeni nazw 2}}, {{Code|nazwa przestrzeni nazw 3}},..., {{Code|nazwa przestrzeni nazw i}} - nazwy przestrzeni nazw dla pozycji bazowej, numerkowej i ogólnej, * {{Code|typ jednostki}}, {{Code|typ jednostki 1}}, {{Code|typ jednostki 2}}, {{Code|typ jednostki 3}},..., {{Code|typ jednostki i}} - typy jednostek, którym odpowiadają pewne przestrzenie przedmiotowe, dla pozycji bazowej, numerkowej i ogólnej, ** {{Code|dyskusja typu jednostki}}, {{Code|dyskusja typu jednostki 1}}, {{Code|dyskusja typ jednostki 2}}, {{Code|dyskusja typ jednostki 3}},..., {{Code|dyskusja typ jednostki i}} - czy dany typ jednostki ma przedstawiać, jeśli niepusta, przestrzeń dyskusji dla pozycji bazowej, numerkowej i ogólnej, * {{Code|numer jednostki}} - jak parametr {{Code|i}} nie został ustawiony, to wtedy liczy się ta zmienna. Parametr ramki tablicy transportu rodzica szablonu: * {{Code|nazwa przestrzeni nazw}}, {{Code|nazwa przestrzeni nazw 1}}, {{Code|nazwa przestrzeni nazw 2}}, {{Code|nazwa przestrzeni nazw 3}},..., {{Code|nazwa przestrzeni nazw i}} - nazwy przestrzeni nazw dla pozycji bazowej oraz zwykłej i ogólnej numerkowej, * {{Code|typ jednostki}}, {{Code|typ jednostki 1}}, {{Code|typ jednostki 2}}, {{Code|typ jednostki 3}},..., {{Code|typ jednostki i}} - typy jednostek, którym odpowiadają pewne przestrzenie przedmiotowe, dla pozycji bazowej, numerkowej i ogólnej, ** {{Code|dyskusja typu jednostki}}, {{Code|dyskusja typu jednostki 1}}, {{Code|dyskusja typ jednostki 2}}, {{Code|dyskusja typ jednostki 3}},..., {{Code|dyskusja typ jednostki i}} - czy dany typ jednostki ma przedstawiać, jeśli niepusta, przestrzeń dyskusji dla pozycji bazowej, numerkowej i ogólnej. Przykłady: <syntaxhighlight lang="mediawiki"> {{Nazwa szablonu|nazwa przestrzeni nazw=Dyskusja Wikibooks|nazwa przestrzeni nazw 2=Dyskusja szablonu|nazwa przestrzeni nazw i=Dyskusja modułu}} </syntaxhighlight> W dziecku powiedzmy jest wywołanie, i szukamy nazwy przestrzeni nazw o numerze dwa, która nie została podana, ale istnieje za to jej wersji ogólna {{Code|nazwa przestrzeni nazw i}} i domyślna {{Code|nazwa przestrzeni nazw}}: <syntaxhighlight lang="mediawiki"> {{#invoke:Pudełko|Nazwa przedmiotowej przestrzeni nazw|numer jednostki=1}} </syntaxhighlight> Na podstawie powyższego przykładu otrzymamy wynik o schemacie, nie wyniku, bo tam nie ma zmiennej {{Code|nazwa przestrzeni nazw 1}}, ale jest {{Code|nazwa przestrzeni nazw i}}: <syntaxhighlight lang="mediawiki"> <!-- Ale nie "nazwa przestrzeni nazw", bo jej nie ma, ale za to istnieje "nazwa przestrzeni nazw i"; --> <!-- nazwa przestrzeni nazw 2=nazwa przestrzeni nazw i=Dyskusja modułu; --> <!-- Czyli wynik: --> Moduł <!-- Widzimy, że wygenerowała się nazwa przestrzeni nazw, którą jest przestrzeń przedmiotowa programowa przestrzeni dyskusji "Dyskusja modułu", którą również jest "Szablon" jego przestrzeni dyskusji "Dyskusja szablonu", a dla ich przestrzeni przedmiotowej, zamiast dyskusji, to samo przekształca się na to samo; --> </syntaxhighlight> Nie jest brana w tym powyższym przykładzie zmienna {{Code|nazwa przestrzeni nazw}}, bo jej nie ma, ale za to jest {{Code|nazwa przestrzeni nazw i}}, bo ona występuje jako parametr domyślny ogólny dla parametrów numerkowych. Przykłady w wikikodzie: * {{Code|{{m|Pudełko|Nazwa przedmiotowej przestrzeni nazw|numer jednostki{{=}}2}}}} → {{Tt|{{#invoke:Pudełko|Nazwa przedmiotowej przestrzeni nazw|numer jednostki=2}}}} * {{Code|{{m|Pudełko|Nazwa przedmiotowej przestrzeni nazw|Dyskusja szablonu|nazwa przestrzeni nazw i{{=}}Moja przestrzeń|numer jednostki{{=}}2}}}} → {{Tt|{{#invoke:Pudełko|Nazwa przedmiotowej przestrzeni nazw|Dyskusja szablonu|nazwa przestrzeni nazw i=Moja przestrzeń|numer jednostki=2}}}} * {{Code|{{m|Pudełko|Nazwa przedmiotowej przestrzeni nazw|nazwa przestrzeni nazw 2{{=}}Dyskusja szablonu|numer jednostki{{=}}2}}}} → {{Tt|{{#invoke:Pudełko|Nazwa przedmiotowej przestrzeni nazw|nazwa przestrzeni nazw 2=Dyskusja szablonu|numer jednostki=2}}}} * {{Code|{{m|Pudełko|Nazwa przedmiotowej przestrzeni nazw|nazwa przestrzeni nazw 2{{=}}Dyskusja szablonu|numer jednostki{{=}}2}}}} → {{Tt|{{#invoke:Pudełko|Nazwa przedmiotowej przestrzeni nazw|nazwa przestrzeni nazw i=Dyskusja szablonu|numer jednostki=2}}}} * {{Code|{{m|Pudełko|Nazwa przedmiotowej przestrzeni nazw|nazwa przestrzeni nazw{{=}}Dyskusja szablonu|numer jednostki{{=}}2}}}} → {{Tt|{{#invoke:Pudełko|Nazwa przedmiotowej przestrzeni nazw|nazwa przestrzeni nazw=Dyskusja szablonu|numer jednostki=2}}}} Powyżej dla przykładu podano parametry nie w rodzicu w szablonie, tylko w dziecku, jeśli chodzi o parametry nazw przestrzeni nazw, ale ich się za to nie powinno podawać w tych ramach, tylko w szablonach, w których wywoływane są te ramki pudełek {{Code|{{m|Pudełko}}}}, ale tak tutaj tak zrobiono by było najłatwiej sprawdzić działanie tego typu funkcji. Analogicznie możemy podawać parametry typu jednostki, np.: wywołaniu modułowym {{Code|{{m|Pudełko|Nazwa przedmiotowej przestrzeni nazw|typ jednostki 2{{=}}strona szablonu|numer jednostki{{=}}2}}}}, ale o tym więcej w rozdziałach {{Code|{{sr|# p["Typ jednostki"](frame,i)|p=Pudełko}}}}, {{Code|{{sr|#p["Typ jednostki 2"](frame,i)|p=Pudełko}}}}, {{Code|{{sr|#p["Typ jednostki 3"](frame,i)|p=Pudełko}}}} itp. w „{{sr|#Funkcje typu jednostki|p=Pudełko}}”, ale wtedy ta sama nazwa przestrzeni nazw reprezentowana przez {{Parametr|typ jednostki 2|strona szablonu}}, jest zamieniana na to samo, lepiej jest tutaj używać parametrów przestrzennych nazw niż typu jednostki, bo typ jednostki ma taką samą wartość dla przestrzeni przedmiotowej, co dyskusji. Tutaj parametr dyskusji typu jednostki bazowy i numerkowy ogólny, czy szczegółowy, nie gra roli, bo nawet, gdy wygenerujemy nazwę przestrzeni dyskusji za pomoca tego parametru, to i tak otrzymamy na samym końcu jego nazwę przedmiotową. Również parametry typu jednostki nie powinno się podawać w dziecku w ramce, tylko w rodzicu w szablonie jako parametry, w którym ta ramka jest wywoływana, ale tutaj podano jedynie dla przykładu, jak najłatwiej sprawdzić działanie tych parametrów tej funkcji. Najpierw w funkcji nagłówku brane są parametry nazw przestrzeni nazw, a jeżeli ich nie ma, to parametry typu jednostki, a jeżeli nie ma, to generowane są nazwy na podstawie aktualnego modułu. === {{Code|p["Nazwa przestrzeni nazw dyskusji"](frame,...)}} === Funkcja pisze nazwę przestrzeni nazw dyskusji jakikolwiek nazwy przestrzeni nazw (tzn. nazwę przedmiotową nazwy przestrzenie nazw, czyli nie dyskusji, zamieniana jest na dyskusji, czyli identyfikator przestrzeni się zmienia jeden wyżej, a dyskusji, nie przedmiotową, przekształca się na tą samą), według podanej w zmiennej {{Code|nazwa przestrzeni nazw}} dla pozycja bazowej w podanych parametrach szablonu rodzicu ramki dziecka, lub dla innej pozycji należy parametr podawać w formie {{Code|nazwa przestrzeni nazw 1}}, {{Code|nazwa przestrzeni nazw 2}}, {{Code|nazwa przestrzeni nazw 3}},..., lub te parametry można podać w postaci ogólnej {{Code|nazwa przestrzeni nazw i}}. Parametry podaje się w parametrach rodzica wywołania tej funkcji {{Code|{{m|Pudełko|Nazwa przestrzeni nazw dyskusji}}}} (ale ich nie trzeba podawać w dziecku, ale można) i w parametrach dziecka, jeśli chodzi o zmienną {{Code|numer jednostki}}, czyli np.: {{Code|{{m|Pudełko|Nazwa przestrzeni nazw dyskusji|numer jednostki{{=}}<jakaś liczba całkowita dodatnia>}}}}. Te parametry przestrzenne zamiast w rodzicu w szablonie można podać w ramce dziecka, wtedy parametry dziecka mają pierwszeństwo. Parametry przestrzenne mogą mogą być podane w postaci przestrzeni przedmiotowej lub dyskusji, ale ta funkcja zawsze ją zamienia na dyskusji. Przestrzeń nazw z parametrów nazw przestrzennych może odpowiadać wartości przestrzeni głównej, to wtedy odpowiednia przestrzeń nazw z parametru nazwy jednostki się nie liczy w tej funkcji, aby się liczyła należy użyć funkcji {{Code|{{sr|#p["Nazwa przestrzeni nazw dyskusji 2"](frame,...)|p=Pudełko}}}}. Definicja skrótowa funkcji: <syntaxhighlight lang="lua"> p["Nazwa przestrzeni nazw dyskusji"]=function(frame,czy_uwzglednic_alternatywna_nazwe,i)...end; </syntaxhighlight> Wtedy ciało funkcji tej, czyli jego definicja w środku, jest: <syntaxhighlight lang="lua"> -- Jest liczony numer parametru nazwy przestrzeni nazw, domyslnie chodzi tu o numer bazowy parametrów przestrzennych; local numer_jednostki=i or frame.args["numer jednostki"]; local liczba_numer_jednostki=((numer_jednostki)and(tonumber(numer_jednostki))or 0); local pudelko_pomocne_modul=require("Module:Pudełko/Pomocne"); -- Liczy nazwę przestrzeni nazw dyskusji na podstawie podanych parametrów; return pudelko_pomocne_modul.Nazwa_przestrzeni_nazw(frame,2, czy_uwzglednic_alternatywna_nazwe,liczba_numer_jednostki); </syntaxhighlight> Parametry funkcji: * {{Code|frame}} - tablica ramki tablicy transportu, * {{Code|czy_uwzglednic_alternatywna_nazwe}} - czy ma uwzględniać nazwę przestrzeni nazw domyślną szablonu, dostępne wartości: {{Code|false}}, w której nazwa domyślna nie jest uwzględniana wtedy, oraz {{Code|nil}} i {{Code|true}}, które oznaczają to samo, w tym jeżeli ona jest uwzględniana, wtedy jest brany parametr pierwszy dziecka, który musi istnieć przy takiej wartości tego parametru, tzn. {{Code|{{m|Pudełko|Nazwa przestrzeni nazw dyskusji|Szablon}}}} - ta nazwa domyślna zostanie przekształcona na dyskusji, a jeżeli ona by była dyskusji, to nie byłoby żadnego przekształcenia, a nazwa uzyskana nazwy przestrzeni nazw z parametrów przestrzennych jest w takim przypadku błędna, to w takim razie brany jest ten parametr, a jeżeli nazwa domyślna jest błędna, czyli {{Code|{{m|Pudełko|Nazwa przestrzeni nazw dyskusji|Moja przestrzeń}}}}, wtedy funkcja zwraca stan błędu {{Code|(błąd)}}. * {{Code|i}} - numer zmiennej nazwy przestrzeni nazw. Funkcja wykorzystuje {{Code|{{sr|#p.Nazwa_przestrzeni_nazw(frame,...)|p=Pudełko/Pomocne}}}} do wyznaczania ogólnego nazwy przestrzeni nazw dla pozycji bazowej i numerkowej, tzn. dla pozycji: jeden, dwa, trzy,..., itd, i ich ogólnej. Parametry ramki tablicy transportu dziecka: * {{Code|nazwa przestrzeni nazw}}, {{Code|nazwa przestrzeni nazw 1}}, {{Code|nazwa przestrzeni nazw 2}}, {{Code|nazwa przestrzeni nazw 3}},..., {{Code|nazwa przestrzeni nazw i}} - nazwy przestrzeni nazw dla pozycji bazowej, numerkowej i ogólnej, * {{Code|typ jednostki}}, {{Code|typ jednostki 1}}, {{Code|typ jednostki 2}}, {{Code|typ jednostki 3}},..., {{Code|typ jednostki i}} - typy jednostek, którym odpowiadają pewne przestrzenie przedmiotowe, dla pozycji bazowej, numerkowej i ogólnej, ** {{Code|dyskusja typu jednostki}}, {{Code|dyskusja typu jednostki 1}}, {{Code|dyskusja typ jednostki 2}}, {{Code|dyskusja typ jednostki 3}},..., {{Code|dyskusja typ jednostki i}} - czy dany typ jednostki ma przedstawiać, jeśli niepusta, przestrzeń dyskusji dla pozycji bazowej, numerkowej i ogólnej, * {{Code|numer jednostki}} - jak parametr {{Code|i}} nie został ustawiony, to wtedy liczy się ta zmienna. Parametr ramki tablicy transportu rodzica szablonu: * {{Code|nazwa przestrzeni nazw}}, {{Code|nazwa przestrzeni nazw 1}}, {{Code|nazwa przestrzeni nazw 2}}, {{Code|nazwa przestrzeni nazw 3}},..., {{Code|nazwa przestrzeni nazw i}} - nazwy przestrzeni nazw dla pozycji bazowej oraz zwykłej i ogólnej numerkowej, * {{Code|typ jednostki}}, {{Code|typ jednostki 1}}, {{Code|typ jednostki 2}}, {{Code|typ jednostki 3}},..., {{Code|typ jednostki i}} - typy jednostek, którym odpowiadają pewne przestrzenie przedmiotowe, dla pozycji bazowej, numerkowej i ogólnej, ** {{Code|dyskusja typu jednostki}}, {{Code|dyskusja typu jednostki 1}}, {{Code|dyskusja typ jednostki 2}}, {{Code|dyskusja typ jednostki 3}},..., {{Code|dyskusja typ jednostki i}} - czy dany typ jednostki ma przedstawiać, jeśli niepusta, przestrzeń dyskusji dla pozycji bazowej, numerkowej i ogólnej. Przykłady: <syntaxhighlight lang="mediawiki"> {{Nazwa szablonu|nazwa przestrzeni nazw=Wikibooks|nazwa przestrzeni nazw 2=Szablon|nazwa przestrzeni nazw i=Moduł}} </syntaxhighlight> W dziecku powiedzmy jest wywołanie, i szukamy nazwy przestrzeni nazw o numerze dwa, która nie została podana, ale istnieje za to jej wersji ogólna {{Code|nazwa przestrzeni nazw i}} i domyślna {{Code|nazwa przestrzeni nazw}}: <syntaxhighlight lang="mediawiki"> {{#invoke:Pudełko|Nazwa przestrzeni nazw dyskusji|numer jednostki=1}} </syntaxhighlight> Na podstawie powyższego przykładu otrzymamy wynik o schemacie, nie wyniku, bo tam nie ma zmiennej {{Code|nazwa przestrzeni nazw 1}}, ale jest {{Code|nazwa przestrzeni nazw i}}: <syntaxhighlight lang="mediawiki"> <!-- Ale nie "nazwa przestrzeni nazw", bo jej nie ma, ale za to istnieje "nazwa przestrzeni nazw i"; --> <!-- nazwa przestrzeni nazw 2=nazwa przestrzeni nazw i=Moduł; --> <!-- Czyli wynik: --> Dyskusja modułu <!-- Widzimy, że wygenerowała się nazwa przestrzeni nazw, którą jest przestrzeń dyskusji przestrzeni programowej przestrzeni przedmiotowej "Moduł", którą również jest "Szablon" jego przestrzeni dyskusji "Dyskusja szablonu", a dla ich przestrzeni przedmiotowej, zamiast dyskusji, to przekształca się na dyskusji jej odpowiadającą; --> </syntaxhighlight> Nie jest brana w tym powyższym przykładzie zmienna {{Code|nazwa przestrzeni nazw}}, bo jej nie ma, ale za to jest {{Code|nazwa przestrzeni nazw i}}, bo ona występuje jako parametr domyślny ogólny dla parametrów numerkowych. Przykłady w wikikodzie: * {{Code|{{m|Pudełko|Nazwa przestrzeni nazw dyskusji|numer jednostki{{=}}2}}}} → {{Tt|{{#invoke:Pudełko|Nazwa przestrzeni nazw dyskusji|numer jednostki=2}}}} * {{Code|{{m|Pudełko|Nazwa przestrzeni nazw dyskusji|Szablon|nazwa przestrzeni nazw i{{=}}Moja przestrzeń|numer jednostki{{=}}2}}}} → {{Tt|{{#invoke:Pudełko|Nazwa przestrzeni nazw dyskusji|Szablon|nazwa przestrzeni nazw i=Moja przestrzeń|numer jednostki=2}}}} * {{Code|{{m|Pudełko|Nazwa przestrzeni nazw dyskusji|nazwa przestrzeni nazw 2{{=}}Szablon|numer jednostki{{=}}2}}}} → {{Tt|{{#invoke:Pudełko|Nazwa przestrzeni nazw dyskusji|nazwa przestrzeni nazw 2=Szablon|numer jednostki=2}}}} * {{Code|{{m|Pudełko|Nazwa przestrzeni nazw dyskusji|nazwa przestrzeni nazw 2{{=}}Szablon|numer jednostki{{=}}2}}}} → {{Tt|{{#invoke:Pudełko|Nazwa przestrzeni nazw dyskusji|nazwa przestrzeni nazw i=Szablon|numer jednostki=2}}}} * {{Code|{{m|Pudełko|Nazwa przestrzeni nazw dyskusji|nazwa przestrzeni nazw{{=}}Szablon|numer jednostki{{=}}2}}}} → {{Tt|{{#invoke:Pudełko|Nazwa przestrzeni nazw dyskusji|nazwa przestrzeni nazw=Szablon|numer jednostki=2}}}} Powyżej dla przykładu podano parametry nie w rodzicu w szablonie, tylko w dziecku, jeśli chodzi o parametry nazw przestrzeni nazw, ale ich się za to nie powinno podawać w tych ramach, tylko w szablonach, w których wywoływane są te ramki pudełek {{Code|{{m|Pudełko}}}}, ale tak tutaj tak zrobiono by było najłatwiej sprawdzić działanie tego typu funkcji. Analogicznie możemy podawać parametry typu jednostki, np.: wywołaniu modułowym {{Code|{{m|Pudełko|Nazwa przestrzeni nazw dyskusji|typ jednostki 2{{=}}strona szablonu|numer jednostki{{=}}2}}}}, ale o tym więcej w rozdziałach {{Code|{{sr|# p["Typ jednostki"](frame,i)|p=Pudełko}}}}, {{Code|{{sr|#p["Typ jednostki 2"](frame,i)|p=Pudełko}}}}, {{Code|{{sr|#p["Typ jednostki 3"](frame,i)|p=Pudełko}}}} itp. w „{{sr|#Funkcje typu jednostki|p=Pudełko}}”, ale wtedy nazwa przestrzeni nazw reprezentowana przez {{Parametr|typ jednostki 2|strona szablonu}}, jest zamieniana na nazwę przestrzeni nazw dyskusji. Parametr dyskusji typu jednostki bazowy lub dla danego numerka ogólny, czy szczegółowy, nie gra roli. Również parametry typu jednostki nie powinno się podawać w dziecku w ramce, tylko w rodzicu w szablonie jako parametry, w którym ta ramka jest wywoływana, ale tutaj podano jedynie dla przykładu, jak najłatwiej sprawdzić działanie tych parametrów tej funkcji. Najpierw w funkcji nagłówku brane są parametry nazw przestrzeni nazw, a jeżeli ich nie ma, to parametry typu jednostki, a jeżeli nie ma, to generowane są nazwy na podstawie aktualnego modułu. == Funkcje nazw przestrzeni nazw drugiej wersji == === {{Code|p["Nazwa przestrzeni nazw 2"](frame,...)}} === Funkcja pisze nazwę przestrzeni nazw, niezależnie, czy to jest przedmiotowa, czy dyskusji, według podanej w zmiennej {{Code|nazwa przestrzeni nazw}} dla pozycja bazowej w podanych parametrach szablonu rodzicu ramki dziecka, lub dla innej pozycji należy parametr podawaćw formie {{Code|nazwa przestrzeni nazw 1}}, {{Code|nazwa przestrzeni nazw 2}}, {{Code|nazwa przestrzeni nazw 3}},..., lub te parametry można podać w postaci ogólnej {{Code|nazwa przestrzeni nazw i}}. W tej funkccji trzeba też podawać parametry nazwy jednostek {{Code|nazwa jednostki}}, {{Code|nazwa jednostki 1}}, {{Code|nazwa jednostki 2}}, {{Code|nazwa jednostki 3}},... Parametry podaje się w parametrach rodzica wywołania tej funkcji {{Code|{{m|Pudełko|Nazwa przestrzeni nazw 2}}}} (ale ich nie trzeba podawać w dziecku, ale można) i w parametrach dziecka, jeśli chodzi o zmienną {{Code|numer jednostki}}, czyli np.: {{Code|{{m|Pudełko|Nazwa przestrzeni nazw 2|numer jednostki{{=}}<jakaś liczba całkowita dodatnia>}}}}. Te parametry przestrzenne zamiast w rodzicu w szablonie można podać w ramce dziecka, wtedy parametry dziecka mają pierwszeństwo. Przestrzeń nazw z parametrów nazw przestrzennych może odpowiadać wartości przestrzeni głównej, to wtedy odpowiednia przestrzeń nazw z parametru nazwy jednostki się liczy w tej funkcji, wtedy jest liczona nazwa przestrzeni nazw z tego parametru. Gdy parametry przestrzenne lub typ jednostki w drugim podejściu nie wskazują na przestrzeń główną, to wtedy działanie tej funkcji jest podobne do {{Code|{{sr|#p["Nazwa przestrzeni nazw"](frame,...)|p=Pudełko}}}}. Definicja skrótowa funkcji: <syntaxhighlight lang="lua"> p["Nazwa przestrzeni nazw 2"]=function(frame,czy_uwzglednic_alternatywna_nazwe,i)...end; </syntaxhighlight> Wtedy ciało funkcji tej, czyli jego definicja w środku, jest: <syntaxhighlight lang="lua"> local pudelko_pomocne_modul=require("Module:Pudełko/Pomocne"); -- Liczy nazwę przestrzeni nazw, jeżeli z parametrów przestrzennych przestrzeń wskazuje na główną, to wtedy jest liczona przestrzeń nazw z nazwy jednostki; return pudelko_pomocne_modul.Nazwa_przestrzeni_nazw_2(frame,czy_uwzglednic_alternatywna_nazwe,i) </syntaxhighlight> Parametry funkcji: * {{Code|frame}} - tablica ramki tablicy transportu, * {{Code|czy_uwzglednic_alternatywna_nazwe}} - czy ma uwzględniać nazwę przestrzeni nazw domyślną szablonu, dostępne wartości: {{Code|false}}, w której nazwa domyślna nie jest uwzględniana wtedy, oraz {{Code|nil}} i {{Code|true}}, które oznaczają to samo, w tym jeżeli ona jest uwzględniana, wtedy jest brany parametr pierwszy dziecka, który musi istnieć przy takiej wartości tego parametru, tzn. {{Code|{{m|Pudełko|Nazwa przestrzeni nazw 2|Szablon}}}}, a nazwa uzyskana nazwy przestrzeni nazw jest w takim przypadku błędna, a jeżeli nazwa domyślna jest błędna, czyli {{Code|{{m|Pudełko|Nazwa przestrzeni nazw 2|Moja przestrzeń}}}}, wtedy funkcja zwraca stan błędu {{Code|(błąd)}}. * {{Code|i}} - numer zmiennej nazwy przestrzeni nazw. Funkcja wykorzystuje {{Code|{{sr|#p.Nazwa_przestrzeni_nazw_2(frame,...)|p=Pudełko/Pomocne}}}} do wyznaczania ogólnego nazwy przestrzeni nazw dla pozycji bazowej i numerkowej, tzn. dla pozycji: jeden, dwa, trzy,..., itd, i ich ogólnej. Parametry ramki tablicy transportu dziecka: * {{Code|nazwa przestrzeni nazw}}, {{Code|nazwa przestrzeni nazw 1}}, {{Code|nazwa przestrzeni nazw 2}}, {{Code|nazwa przestrzeni nazw 3}},..., {{Code|nazwa przestrzeni nazw i}} - nazwy przestrzeni nazw dla pozycji bazowej, numerkowej i ogólnej, * {{Code|typ jednostki}}, {{Code|typ jednostki 1}}, {{Code|typ jednostki 2}}, {{Code|typ jednostki 3}},..., {{Code|typ jednostki i}} - typy jednostek, którym odpowiadają pewne przestrzenie przedmiotowe, dla pozycji bazowej, numerkowej i ogólnej, ** {{Code|dyskusja typu jednostki}}, {{Code|dyskusja typu jednostki 1}}, {{Code|dyskusja typ jednostki 2}}, {{Code|dyskusja typ jednostki 3}},..., {{Code|dyskusja typ jednostki i}} - czy dany typ jednostki ma przedstawiać, jeśli niepusta, przestrzeń dyskusji dla pozycji bazowej, numerkowej i ogólnej, * {{Code|numer jednostki}} - jak parametr {{Code|i}} nie został ustawiony, to wtedy liczy się ta zmienna. Parametr ramki tablicy transportu rodzica szablonu: * {{Code|nazwa przestrzeni nazw}}, {{Code|nazwa przestrzeni nazw 1}}, {{Code|nazwa przestrzeni nazw 2}}, {{Code|nazwa przestrzeni nazw 3}},..., {{Code|nazwa przestrzeni nazw i}} - nazwy przestrzeni nazw dla pozycji bazowej oraz zwykłej i ogólnej numerkowej, * {{Code|typ jednostki}}, {{Code|typ jednostki 1}}, {{Code|typ jednostki 2}}, {{Code|typ jednostki 3}},..., {{Code|typ jednostki i}} - typy jednostek, którym odpowiadają pewne przestrzenie przedmiotowe, dla pozycji bazowej, numerkowej i ogólnej, ** {{Code|dyskusja typu jednostki}}, {{Code|dyskusja typu jednostki 1}}, {{Code|dyskusja typ jednostki 2}}, {{Code|dyskusja typ jednostki 3}},..., {{Code|dyskusja typ jednostki i}} - czy dany typ jednostki ma przedstawiać, jeśli niepusta, przestrzeń dyskusji dla pozycji bazowej, numerkowej i ogólnej. Przykłady: <syntaxhighlight lang="mediawiki"> {{Nazwa szablonu|nazwa przestrzeni nazw=Wikibooks|nazwa przestrzeni nazw 1=Szablon|nazwa przestrzeni nazw i=|nazwa jednostki 2=Wikibooks:Strona}} </syntaxhighlight> W dziecku powiedzmy jest wywołanie, i szukamy nazwy przestrzeni nazw o numerze dwa, która została podana, ale istnieje za to jej wersji ogólna {{Code|nazwa przestrzeni nazw i}} i domyślna {{Code|nazwa przestrzeni nazw}}, ale wtedy dla tego numerkowego liczy się to ogólne z {{Code| i}}, a ponieważ ta nazwa jest pusta, więc będziemy liczyli nazwę przestrzeni nazw z {{Code|nazwa jednostki 2}}: <syntaxhighlight lang="mediawiki"> {{#invoke:Pudełko|Nazwa przestrzeni nazw 2|numer jednostki=2}} </syntaxhighlight> Na podstawie powyższego przykładu otrzymamy wynik o schemacie, nie wyniku, bo tam nie ma zmiennej {{Code|nazwa przestrzeni nazw 1}}, ale jest {{Code|nazwa przestrzeni nazw i}}: <syntaxhighlight lang="mediawiki"> <!-- Ale nie "nazwa przestrzeni nazw 2", bo jej nie ma, ale za to istnieje "nazwa przestrzeni nazw i"; --> <!-- nazwa przestrzeni nazw 2=nazwa przestrzeni nazw i="", a nazwa jednostki 2="Wikibooks:Strona"; --> <!-- Czyli wynik: --> Wikibooks <!-- Widzimy, że wygenerowała się nazwa przestrzeni nazw, którą jest przestrzeń nieprogramowa, ale projektu, wychodząca z nazwy jednostek w tym przypadku z "nazwa jednostki 2"; --> </syntaxhighlight> Nie jest brana w tym powyższym przykładzie zmienna {{Code|nazwa przestrzeni nazw}}, bo jej nie ma, ale za to jest {{Code|nazwa przestrzeni nazw i}}, bo ona występuje jako parametr domyślny ogólny dla parametrów numerkowych. Tytaj jest używwana jest zmienna {{Code|nazwa jednostki 2}} do wygenerowania ostatecznego wyniki,bo jak mozna zauważyć, parametry przestrzenne wskazują na przestrzeń główną, a nazwy jednostek już nie. Przykłady w wikikodzie: * {{Code|{{m|Pudełko|Nazwa przestrzeni nazw 2|numer jednostki{{=}}2}}}} → {{Tt|{{#invoke:Pudełko|Nazwa przestrzeni nazw 2|numer jednostki=2}}}} * {{Code|{{m|Pudełko|Nazwa przestrzeni nazw 2|Szablon|nazwa przestrzeni nazw i{{=}}Moja przestrzeń|numer jednostki{{=}}2}}}} → {{Tt|{{#invoke:Pudełko|Nazwa przestrzeni nazw 2|Szablon|nazwa przestrzeni nazw i=Moja przestrzeń|numer jednostki=2}}}} * {{Code|{{m|Pudełko|Nazwa przestrzeni nazw 2|nazwa przestrzeni nazw 2{{=}}|nazwa jednostki 2{{=}}Szablon:Strona|numer jednostki{{=}}2}}}} → {{Tt|{{#invoke:Pudełko|Nazwa przestrzeni nazw 2|nazwa przestrzeni nazw 2=|nazwa jednostki 2=Szablon:Strona|numer jednostki=2}}}} * {{Code|{{m|Pudełko|Nazwa przestrzeni nazw 2|nazwa przestrzeni nazw i{{=}}|nazwa jednostki 2{{=}}Szablon:Strona|numer jednostki{{=}}2}}}} → {{Tt|{{#invoke:Pudełko|Nazwa przestrzeni nazw 2|nazwa przestrzeni nazw i=|nazwa jednostki 2=Szablon:Strona|numer jednostki=2}}}} * {{Code|{{m|Pudełko|Nazwa przestrzeni nazw 2|Szablon|nazwa przestrzeni nazw{{=}}|nazwa jednostki 2{{=}}Wikibooks:Strona|numer jednostki{{=}}2}}}} → {{Tt|{{#invoke:Pudełko|Nazwa przestrzeni nazw 2|Szablon|nazwa przestrzeni nazw=|nazwa jednostki 2=Wikibooks:Strona|numer jednostki=2}}}} Powyżej dla przykładu podano parametry nie w rodzicu w szablonie, tylko w dziecku, jeśli chodzi o parametry nazw przestrzeni nazw i nazw jednostek, ale ich się za to nie powinno podawać w tych ramach, tylko w szablonach, w których wywoływane są te ramki pudełek {{Code|{{m|Pudełko}}}}, ale tak tutaj tak zrobiono by było najłatwiej sprawdzić działanie tego typu funkcji. Analogicznie możemy podawać parametry typu jednostki, np.: wywołaniu modułowym {{Code|{{m|Pudełko|Nazwa przestrzeni nazw 2|typ jednostki 2{{=}}strona szablonu|numer jednostki{{=}}2}}}}, ale o tym więcej w rozdziałach {{Code|{{sr|# p["Typ jednostki"](frame,i)|p=Pudełko}}}}, {{Code|{{sr|#p["Typ jednostki 2"](frame,i)|p=Pudełko}}}}, {{Code|{{sr|#p["Typ jednostki 3"](frame,i)|p=Pudełko}}}} itp. w „{{sr|#Funkcje typu jednostki|p=Pudełko}}”, on definiuje przestrzenie przedmiotowe, ale można użyć parametru dyskusji typu jednostki z wartością niepustą, wtedy wyświetli się nazwa przestrzeni nazw dyskusji. Jeżeli typ jednostki wskazuje na przestrzeń nazw główną, wtedy się liczą parametry nazw jednostek. Również parametry typu jednostki nie powinno się podawać w dziecku w ramce, tylko w rodzicu w szablonie jako parametry, w którym ta ramka jest wywoływana, ale tutaj podano jedynie dla przykładu, jak najłatwiej sprawdzić działanie tych parametrów tej funkcji. Najpierw w funkcji nagłówku brane są parametry nazw przestrzeni nazw, a jeżeli ich nie ma, to parametry typu jednostki, a jeżeli nie ma lub parametry przestrzenne wskazują na przestrzeń główną, i nie ma nazwy jednostki, to generowane są nazwy tej funkcji na podstawie aktualnej strony. === {{Code|p["Nazwa przedmiotowej przestrzeni nazw 2"](frame,...)}} === === {{Code|p["Nazwa przestrzeni nazw dyskusji 2"](frame,...)}} === == Funkcje pełnych nazw jednostki == === {{Code|p["Pełna nazwa dyskusji jednostki"](frame,i)}} === === {{Code|p["Pełna nazwa przedmiotowa jednostki"](frame,i)}} === === {{Code|p["Pełna nazwa jednostki"](frame,i)}} === == Funkcje pełnych nazw jednostki drugiej wersji == === {{Code|p["Pełna nazwa dyskusji jednostki 2"](frame,i)}} === === {{Code|p["Pełna nazwa przedmiotowa jednostki 2"](frame,i)}} === === {{Code|p["Pełna nazwa jednostki 2"](frame,i)}} === == Funkcje pełnych nazw jednostki trzeciej wersji == === {{Code|p["Pełna nazwa dyskusji jednostki 3"](frame,i)}} === === {{Code|p["Pełna nazwa przedmiotowa jednostki 3"](frame,i)}} === === {{Code|p["Pełna nazwa jednostki 3"](frame,i)}} === == Funkcje nazw jednostki == === {{Code|p["Nazwa jednostki"](frame,i)}} === == Funkcje nazw jednostki drugiej wersji == === {{Code|p["Nazwa jednostki 2"](frame,i)}} === === {{Code|p["Nazwa przedmiotowa jednostki 2"](frame,i)}} === === {{Code|p["Nazwa dyskusji jednostki 2"](frame,i)}} === == Funkcje nazw przestrzeni nazw trzeciej wersji == === {{Code|p["Nazwa przestrzeni nazw 3"](frame,i)}} === === {{Code|p["Nazwa przedmiotowej przestrzeni nazw 3"](frame,i)}} === === {{Code|p["Nazwa przestrzeni nazw dyskusji 3"](frame,i)}} === == Funkcje nazw jednostki trzeciej wersji == === {{Code|p["Nazwa jednostki 3"](frame,i)}} === === {{Code|p["Nazwa przedmiotowa jednostki 3"](frame,i)}} === === {{Code|p["Nazwa dyskusji jednostki 3"](frame,i)}} === == Funkcje typu jednostki == === {{Code|p["Typ jednostki"](frame,i)}} === === {{Code|p["Typ jednostki 2"](frame,i)}} === === {{Code|p["Typ jednostki 3"](frame,i)}} === === Funkcje typu jednostki przedmiotowe === ==== {{Code|p["Przedmiotowy typ jednostki"](frame,i)}} ==== ==== {{Code|p["Przedmiotowy typ jednostki 2"](frame,i)}} ==== ==== {{Code|p["Przedmiotowy typ jednostki 3"](frame,i)}} ==== === Fukcje typu jednostki dyskusji === ==== {{Code|p["Dyskusyjny typ jednostki"](frame,i)}} ==== ==== {{Code|p["Dyskusyjny typ jednostki 2"](frame,i)}}} ==== ==== {{Code|p["Dyskusyjny typ jednostki 3"](frame,i)}} ==== == Funkcje chech pudełka == === {{Code|p["Cecha pudełka"](frame)}} === === {{Code|p["Przedmiotowa cecha pudełka"](frame)}} === === {{Code|p["Dyskusyjna cecha pudełka"](frame)}} === == Fukcje ogólnego pudełka == === {{Code|p["Ogólne pudełko"](frame)}} === == Funkcje ogólne == === {{Code|p["Tekst pudełka"](frame)}} === == Funkcje błędów pudełka == === {{Code|p["Błędy pudełka"](frame)}} === === {{Code|p["Przedmiotowe błędy pudełka"](frame)}} === === {{Code|p["Dyskusyjne błędy pudełka"](frame)}} === == Funkcje nazw stron == === {{Code|p["Nazwa strony głównej projektu"](frame,i)}} === === {{Code|p["Nazwa strony głównej dla dzieci projektu"](frame,i)}} === == Funkcje kodów == === {{Code|p["Kod języka"](frame,i)}} === === {{Code|p["Kod projektu"](frame,i)}} === === {{Code|p["Klucz projektu"](frame,i)}} === == Funkcje wiki == === {{Code|p["Inny niż język bieżący wiki"](frame)}} === === {{Code|p["Inne niż lokalne wiki"](frame)}} === === {{Code|p["Inne niż bieżące wiki"](frame)}} === == Funkcje typów parametrów, czy podane je == === {{Code|p["Podano parametry nienazwane"](frame)}} === === {{Code|p["Podano parametry numerowane"](frame)}} === === {{Code|p["Podano parametry nazwane"](frame)}} === == Funkcje kodów tego projektu == === {{Code|p["Kod projektu tego projektu"](frame)}} === === {{Code|p["Kod języka tego projektu"](frame)}} === === {{Code|p["Klucz projektu tego projektu"](frame)}} === == Funkcje stron == === {{Code|p["Strona główna tego projektu"](frame)}} === === {{Code|p["Strona główna dla dzieci tego projektu"](frame)}} === == Funkcje nazw stron drugiej wersji == === {{Code|p["Nazwa strony głównej dla dzieci projektu 2"](frame)}} === === {{Code| p["Nazwa strony głównej projektu 2"](frame)}} === {{BrClear}} <noinclude><!-- -->{{ProstaStronaKoniec}}<!-- -->{{Kategoria|Opisy funkcji, w Lua w Scribunto, w modułach}}<!-- --></noinclude> ek5zzjeocxetno2vtsp3n2sa1m9ytp0 540377 540376 2026-04-23T13:04:18Z Persino 2851 /* {{Code|p["Nazwa przestrzeni nazw 2"](frame,...)}} */ 540377 wikitext text/x-wiki <noinclude>{{ProstaStronaStart | nagłówek = {{Podrozdział|{{ld2|Pudełko}}|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 pudelko_modul=require("Module:Pudełko"); </syntaxhighlight> dzięki, któremu można wypisywać funkcje należącego do niego. Posługuje się na parametrach pudełkowych {{Parametr|nazwa przestrzeni nazw}} (czy też bez numerka {{Parametr|nazwa przestrzeni nazw i}} dla tego numerowanego) lub te z numerkiem po jednej spacji w nich (ale nie dla tego z końcówką {{Code| i}}) mogą zostać użyte jako parametry szablonu. Moduł {{Code|{{ld2|Pudełko}}}} przedstawia funkcje nazw w oparciu o funkcje nazw {{Code|{{ld2|Nazwy}}}}, generuje on nazwy za pomocą parametrów pudełkowych podanych poniżej. Parametr {{Parametr|nazwa jednostki}} (lub parametr {{Parametr|cel}} dla numerka tego pierwszego, tego alternatywnego), lub te z numerkiem po jednej spacji w nazwie parametru, albo numerowane numerkami {{Code|1}}, {{Code|2}},..., mogą zostać użyte jako parametry szablonu. Parametry określające rodzaj jednostki {{Parametr|typ jednostki}} z {{Parametr|dyskusja typu jednostki}}, itp. w wersjach z numerkiem po jednej spacji w nich mogą zostać użyte jako parametry szablonu. A te tymi numerowanymi liczbami naturalnymi {{Tt|nazwy jednostki}} od jedynki wzwyż poprzez szablon, w którym są one użyte, one też mogą być użyte z dwukropkiem, te numerowane, na samym początku nazwy, wtedy one są traktowane jako pełne nazwy strony, i wtedy one nie zostaną z interpretowane, że do nich trzeba użyć parametr odpowiedni z nazwą przetrzeni nazw z tego numerowanego, czy ogólny, aby utworzyć znów inną pełną nazwę strony dla tego numerka. Zestawienie: * {{Code|nazwa przestrzeni nazw}} i {{Code|nazwa przestrzeni nazw i}} (ogólna nazwa przestrzeni nazw dla wszystkich numerków, i tych numerowanych jednostek) - i to pierwsze z numerkiem, tzn. {{Code|nazwa przestrzeni nazw 1}}, {{Code|nazwa przestrzeni nazw 2}}, ..., * {{Code|nazwa jednostki}} - i te z numerkiem: {{Code|nazwa jednostki 1}}, {{Code|nazwa jednostki 2}}, ..., lub gdy jest zamiast tego parametrem numerowany, {{Code|1}}, {{Code|2}},..., który dla tego pierwszego może być uznany jako: {{Code|cel}} {{=}} {{Code|1}}, * {{Code|typ jednostki}} (parametr bazowy) i {{Code|typ jednostki i}} (parametr domyślny numerkowy) - i te z numerkiem: {{Code|typ jednostki 1}}, {{Code|typ jednostki 2}}, ..., tzn. gdy chcemy określić z jakim typem jednostki mamy do czynienia w zależności do jakiej przestrzeni nazw należy, a w danej, czy jest on np. programowy, czy tylko jest opisem, jak to bywa w szablonach {{Np|Template|link=tak}}, podobnie jest w przypadku {{Np|Module|link=tak}}, czy jak jest w innych przestrzeniach nazw, ** {{Code|dyskusja typu jednostki}} (parametr bazowy) i {{Code|dyskusja typu jednostki i}} (parametr domyślny numerkowy) - i te z numerkiem: {{Code|dyskusja typu jednostki 1}}, {{Code|dyskusja typu jednostki 2}}, ..., gdy chcemy określić wartością niepustą,że chodzi tutaj o typ jednostki. == {{Code|p.CzyNiepoprawnaNazwa(nazwa_jednostki)}} == Funkcja sprawdzajaca, czy jest poprawnie podana nazwa jednostki, czy ma poprawną nazwę. Znakami tymi, z których nie powinna składać się nazwa jest {{Code|<nowiki>{}<>|[]#\n</nowiki>}} i dodatkowo znak {{Code|&#127;}} (kod {{Code|{{Nowiki|&#127;}}}}). Też nie może składać się z trzech znaków tyldy, tzn. {{Code|<nowiki>~~~</nowiki>}}. Również w swojej budowie nie może składać się ze kodów {{Strong|HTML}} literowych o wzorze {{Code|{{Nowiki|&(%a+);}}}}. Natomiast może składać się z {{Code|{{Nowiki|&#(%d+);}}}} i {{Code|{{Nowiki|&#x(%x+);}}}}, ale w pierw te kody muszą być zamienione na normalne znaki. Skrótowa definicja funkcji: <syntaxhighlight lang="lua"> function p.CzyNiepoprawnaNazwa(nazwa_jednostki)...end; </syntaxhighlight> Wtedy ciało funkcji tej, czyli jego definicja w środku, jest: <syntaxhighlight lang="lua"> -- Moduł: "Moduł:Html/dane", służy do ładowania znaku o kodzie HTML "&#127;"; local html_dane_modul=mw.loadData("Module:Html/dane"); return mw.ustring.match(nazwa_jednostki,"[{}<>|%[%]#\n"..html_dane_modul.znak_127.."]+") or mw.ustring.match(nazwa_jednostki,"~~~") or mw.ustring.match(nazwa_jednostki,"&(%a+);"); </syntaxhighlight> Parametry: * {{Code|nazwa_jednostki}} - nazwa jednostki do sprawdzenia. Przykłady: <syntaxhighlight lang="lua"> local pudelko_modul=require("Module:Pudełko"); -- Podana przykładowa niepoprawna nazwa jedostki local nazwa_jednostki="Nazwa pliku [[Nazwa linku w pliku]]"; -- Fukcja zwróci wartość: local czy_poprawna_nazwa=true; local czy_poprawna_nazwa=pudelko_modul.CzyNiepoprawnaNazwa(nazwa_jednostki); </syntaxhighlight> == Funkcje nazw przestrzeni nazw == === {{Code|p["Nazwa przestrzeni nazw"](frame,...)}} === Funkcja pisze nazwę przestrzeni nazw, niezależnie, czy to jest przedmiotowa, czy dyskusji, według podanej w zmiennej {{Code|nazwa przestrzeni nazw}} dla pozycja bazowej w podanych parametrach szablonu rodzicu ramki dziecka, lub dla innej pozycji należy parametr podawaćw formie {{Code|nazwa przestrzeni nazw 1}}, {{Code|nazwa przestrzeni nazw 2}}, {{Code|nazwa przestrzeni nazw 3}},..., lub te parametry można podać w postaci ogólnej {{Code|nazwa przestrzeni nazw i}}. Parametry podaje się w parametrach rodzica wywołania tej funkcji {{Code|{{m|Pudełko|Nazwa przestrzeni nazw}}}} (ale ich nie trzeba podawać w dziecku, ale można) i w parametrach dziecka, jeśli chodzi o zmienną {{Code|numer jednostki}}, czyli np.: {{Code|{{m|Pudełko|Nazwa przestrzeni nazw|numer jednostki{{=}}<jakaś liczba całkowita dodatnia>}}}}. Te parametry przestrzenne zamiast w rodzicu w szablonie można podać w ramce dziecka, wtedy parametry dziecka mają pierwszeństwo. Przestrzeń nazw z parametrów nazw przestrzennych może odpowiadać wartości przestrzeni głównej, to wtedy odpowiednia przestrzeń nazw z parametru nazwy jednostki się nie liczy w tej funkcji, aby się liczyła należy użyć funkcji {{Code|{{sr|#p["Nazwa przestrzeni nazw 2"](frame,...)|p=Pudełko}}}}. Definicja skrótowa funkcji: <syntaxhighlight lang="lua"> p["Nazwa przestrzeni nazw"]=function(frame,czy_uwzglednic_alternatywna_nazwe,i)...end; </syntaxhighlight> Wtedy ciało funkcji tej, czyli jego definicja w środku, jest: <syntaxhighlight lang="lua"> -- Jest liczony numer parametru nazwy przestrzeni nazw, domyslnie chodzi tu o numer bazowy parametrów przestrzennych; local numer_jednostki=i or frame.args["numer jednostki"]; local liczba_numer_jednostki=((numer_jednostki)and(tonumber(numer_jednostki))or 0); local pudelko_pomocne_modul=require("Module:Pudełko/Pomocne"); -- Liczy nazwę przestrzeni nazw na podstawie podanych parametrów; return pudelko_pomocne_modul.Nazwa_przestrzeni_nazw(frame,0, czy_uwzglednic_alternatywna_nazwe,liczba_numer_jednostki); </syntaxhighlight> Parametry funkcji: * {{Code|frame}} - tablica ramki tablicy transportu, * {{Code|czy_uwzglednic_alternatywna_nazwe}} - czy ma uwzględniać nazwę przestrzeni nazw domyślną szablonu, dostępne wartości: {{Code|false}}, w której nazwa domyślna nie jest uwzględniana wtedy, oraz {{Code|nil}} i {{Code|true}}, które oznaczają to samo, w tym jeżeli ona jest uwzględniana, wtedy jest brany parametr pierwszy dziecka, który musi istnieć przy takiej wartości tego parametru, tzn. {{Code|{{m|Pudełko|Nazwa przestrzeni nazw|Szablon}}}}, a nazwa uzyskana nazwy przestrzeni nazw jest w takim przypadku błędna, a jeżeli nazwa domyślna jest błędna, czyli {{Code|{{m|Pudełko|Nazwa przestrzeni nazw|Moja przestrzeń}}}}, wtedy funkcja zwraca stan błędu {{Code|(błąd)}}. * {{Code|i}} - numer zmiennej nazwy przestrzeni nazw. Funkcja wykorzystuje {{Code|{{sr|#p.Nazwa_przestrzeni_nazw(frame,...)|p=Pudełko/Pomocne}}}} do wyznaczania ogólnego nazwy przestrzeni nazw dla pozycji bazowej i numerkowej, tzn. dla pozycji: jeden, dwa, trzy,..., itd, i ich ogólnej. Parametry ramki tablicy transportu dziecka: * {{Code|nazwa przestrzeni nazw}}, {{Code|nazwa przestrzeni nazw 1}}, {{Code|nazwa przestrzeni nazw 2}}, {{Code|nazwa przestrzeni nazw 3}},..., {{Code|nazwa przestrzeni nazw i}} - nazwy przestrzeni nazw dla pozycji bazowej, numerkowej i ogólnej, * {{Code|typ jednostki}}, {{Code|typ jednostki 1}}, {{Code|typ jednostki 2}}, {{Code|typ jednostki 3}},..., {{Code|typ jednostki i}} - typy jednostek, którym odpowiadają pewne przestrzenie przedmiotowe, dla pozycji bazowej, numerkowej i ogólnej, ** {{Code|dyskusja typu jednostki}}, {{Code|dyskusja typu jednostki 1}}, {{Code|dyskusja typ jednostki 2}}, {{Code|dyskusja typ jednostki 3}},..., {{Code|dyskusja typ jednostki i}} - czy dany typ jednostki ma przedstawiać, jeśli niepusta, przestrzeń dyskusji dla pozycji bazowej, numerkowej i ogólnej, * {{Code|numer jednostki}} - jak parametr {{Code|i}} nie został ustawiony, to wtedy liczy się ta zmienna. Parametr ramki tablicy transportu rodzica szablonu: * {{Code|nazwa przestrzeni nazw}}, {{Code|nazwa przestrzeni nazw 1}}, {{Code|nazwa przestrzeni nazw 2}}, {{Code|nazwa przestrzeni nazw 3}},..., {{Code|nazwa przestrzeni nazw i}} - nazwy przestrzeni nazw dla pozycji bazowej oraz zwykłej i ogólnej numerkowej, * {{Code|typ jednostki}}, {{Code|typ jednostki 1}}, {{Code|typ jednostki 2}}, {{Code|typ jednostki 3}},..., {{Code|typ jednostki i}} - typy jednostek, którym odpowiadają pewne przestrzenie przedmiotowe, dla pozycji bazowej, numerkowej i ogólnej, ** {{Code|dyskusja typu jednostki}}, {{Code|dyskusja typu jednostki 1}}, {{Code|dyskusja typ jednostki 2}}, {{Code|dyskusja typ jednostki 3}},..., {{Code|dyskusja typ jednostki i}} - czy dany typ jednostki ma przedstawiać, jeśli niepusta, przestrzeń dyskusji dla pozycji bazowej, numerkowej i ogólnej. Przykłady: <syntaxhighlight lang="mediawiki"> {{Nazwa szablonu|nazwa przestrzeni nazw=Wikibooks|nazwa przestrzeni nazw 2=Szablon|nazwa przestrzeni nazw i=Moduł}} </syntaxhighlight> W dziecku powiedzmy jest wywołanie, i szukamy nazwy przestrzeni nazw o numerze dwa, która nie została podana, ale istnieje za to jej wersji ogólna {{Code|nazwa przestrzeni nazw i}} i domyślna {{Code|nazwa przestrzeni nazw}}: <syntaxhighlight lang="mediawiki"> {{#invoke:Pudełko|Nazwa przestrzeni nazw|numer jednostki=1}} </syntaxhighlight> Na podstawie powyższego przykładu otrzymamy wynik o schemacie, nie wyniku, bo tam nie ma zmiennej {{Code|nazwa przestrzeni nazw 1}}, ale jest {{Code|nazwa przestrzeni nazw i}}: <syntaxhighlight lang="mediawiki"> <!-- Ale nie "nazwa przestrzeni nazw", bo jej nie ma, ale za to istnieje "nazwa przestrzeni nazw i"; --> <!-- nazwa przestrzeni nazw 2=nazwa przestrzeni nazw i=Moduł; --> <!-- Czyli wynik: --> Moduł <!-- Widzimy, że wygenerowała się nazwa przestrzeni nazw, którą jest przestrzeń programowa, którą również jest "Szablon"; --> </syntaxhighlight> Nie jest brana w tym powyższym przykładzie zmienna {{Code|nazwa przestrzeni nazw}}, bo jej nie ma, ale za to jest {{Code|nazwa przestrzeni nazw i}}, bo ona występuje jako parametr domyślny ogólny dla parametrów numerkowych. Przykłady w wikikodzie: * {{Code|{{m|Pudełko|Nazwa przestrzeni nazw|numer jednostki{{=}}2}}}} → {{Tt|{{#invoke:Pudełko|Nazwa przestrzeni nazw|numer jednostki=2}}}} * {{Code|{{m|Pudełko|Nazwa przestrzeni nazw|Szablon|nazwa przestrzeni nazw i{{=}}Moja przestrzeń|numer jednostki{{=}}2}}}} → {{Tt|{{#invoke:Pudełko|Nazwa przestrzeni nazw|Szablon|nazwa przestrzeni nazw i=Moja przestrzeń|numer jednostki=2}}}} * {{Code|{{m|Pudełko|Nazwa przestrzeni nazw|nazwa przestrzeni nazw 2{{=}}Szablon|numer jednostki{{=}}2}}}} → {{Tt|{{#invoke:Pudełko|Nazwa przestrzeni nazw|nazwa przestrzeni nazw 2=Szablon|numer jednostki=2}}}} * {{Code|{{m|Pudełko|Nazwa przestrzeni nazw|nazwa przestrzeni nazw 2{{=}}Szablon|numer jednostki{{=}}2}}}} → {{Tt|{{#invoke:Pudełko|Nazwa przestrzeni nazw|nazwa przestrzeni nazw i=Szablon|numer jednostki=2}}}} * {{Code|{{m|Pudełko|Nazwa przestrzeni nazw|nazwa przestrzeni nazw{{=}}Szablon|numer jednostki{{=}}2}}}} → {{Tt|{{#invoke:Pudełko|Nazwa przestrzeni nazw|nazwa przestrzeni nazw=Szablon|numer jednostki=2}}}} Powyżej dla przykładu podano parametry nie w rodzicu w szablonie, tylko w dziecku, jeśli chodzi o parametry nazw przestrzeni nazw, ale ich się za to nie powinno podawać w tych ramach, tylko w szablonach, w których wywoływane są te ramki pudełek {{Code|{{m|Pudełko}}}}, ale tak tutaj tak zrobiono by było najłatwiej sprawdzić działanie tego typu funkcji. Analogicznie możemy podawać parametry typu jednostki, np.: wywołaniu modułowym {{Code|{{m|Pudełko|Nazwa przestrzeni nazw|typ jednostki 2{{=}}strona szablonu|numer jednostki{{=}}2}}}}, ale o tym więcej w rozdziałach {{Code|{{sr|# p["Typ jednostki"](frame,i)|p=Pudełko}}}}, {{Code|{{sr|#p["Typ jednostki 2"](frame,i)|p=Pudełko}}}}, {{Code|{{sr|#p["Typ jednostki 3"](frame,i)|p=Pudełko}}}} itp. w „{{sr|#Funkcje typu jednostki|p=Pudełko}}”, on definiuje przestrzenie przedmiotowe, ale można użyć parametru dyskusji typu jednostki z wartością niepustą, wtedy wyświetli się nazwa przestrzeni nazw dyskusji. Również parametry typu jednostki nie powinno się podawać w dziecku w ramce, tylko w rodzicu w szablonie jako parametry, w którym ta ramka jest wywoływana, ale tutaj podano jedynie dla przykładu, jak najłatwiej sprawdzić działanie tych parametrów tej funkcji. Najpierw w funkcji nagłówku brane są parametry nazw przestrzeni nazw, a jeżeli ich nie ma, to parametry typu jednostki, a jeżeli nie ma, to generowane są nazwy na podstawie aktualnego modułu. === {{Code|p["Nazwa przedmiotowej przestrzeni nazw"](frame,...)}} === Funkcja pisze przedmiotową nazwę przestrzeni nazw jakikolwiek nazwy przestrzeni nazw (tzn. nazwę przedmiotową nazwy przestrzenie nazw, czyli nie dyskusji, zamieniana jest na nią samą, czyli identyfikator przestrzeni się nie zmienia, a dyskusji, nie przedmiotową, przekształca się na przedmiotową jej odpowiadającą, czyli w tym przypadku identyfikator przestrzeni zmniejsza się o numer mniej), według podanej w zmiennej {{Code|nazwa przestrzeni nazw}} dla pozycja bazowej w podanych parametrach szablonu rodzicu ramki dziecka, lub dla innej pozycji należy parametr podawać w formie {{Code|nazwa przestrzeni nazw 1}}, {{Code|nazwa przestrzeni nazw 2}}, {{Code|nazwa przestrzeni nazw 3}},..., lub te parametry można podać w postaci ogólnej {{Code|nazwa przestrzeni nazw i}}. Parametry podaje się w parametrach rodzica wywołania tej funkcji {{Code|{{m|Pudełko|Nazwa przedmiotowej przestrzeni nazw}}}} (ale ich nie trzeba podawać w dziecku, ale można) i w parametrach dziecka, jeśli chodzi o zmienną {{Code|numer jednostki}}, czyli np.: {{Code|{{m|Pudełko|Nazwa przedmiotowej przestrzeni nazw|numer jednostki{{=}}<jakaś liczba całkowita dodatnia>}}}}. Te parametry przestrzenne zamiast w rodzicu w szablonie można podać w ramce dziecka, wtedy parametry dziecka mają pierwszeństwo. Parametry przestrzenne mogą mogą być podane w postaci przestrzeni przedmiotowej lub dyskusji, ale ta funkcja zawsze ją zamienia na przedmiotową. Przestrzeń nazw z parametrów nazw przestrzennych może odpowiadać wartości przestrzeni głównej, to wtedy odpowiednia przestrzeń nazw z parametru nazwy jednostki się nie liczy w tej funkcji, aby się liczyła należy użyć funkcji {{Code|{{sr|#p["Nazwa przedmiotowej przestrzeni nazw 2"](frame,...)|p=Pudełko}}}}. Definicja skrótowa funkcji: <syntaxhighlight lang="lua"> p["Nazwa przedmiotowej przestrzeni nazw"]=function(frame,czy_uwzglednic_alternatywna_nazwe,i)...end; </syntaxhighlight> Wtedy ciało funkcji tej, czyli jego definicja w środku, jest: <syntaxhighlight lang="lua"> -- Jest liczony numer parametru nazwy przestrzeni nazw, domyslnie chodzi tu o numer bazowy parametrów przestrzennych; local numer_jednostki=i or frame.args["numer jednostki"]; local liczba_numer_jednostki=((numer_jednostki)and(tonumber(numer_jednostki))or 0); local pudelko_pomocne_modul=require("Module:Pudełko/Pomocne"); -- Liczy nazwę przestrzeni nazw przedmiotową na podstawie podanych parametrów; return pudelko_pomocne_modul.Nazwa_przestrzeni_nazw(frame,1, czy_uwzglednic_alternatywna_nazwe,liczba_numer_jednostki); </syntaxhighlight> Parametry funkcji: * {{Code|frame}} - tablica ramki tablicy transportu, * {{Code|czy_uwzglednic_alternatywna_nazwe}} - czy ma uwzględniać nazwę przestrzeni nazw domyślną szablonu, dostępne wartości: {{Code|false}}, w której nazwa domyślna nie jest uwzględniana wtedy, oraz {{Code|nil}} i {{Code|true}}, które oznaczają to samo, w tym jeżeli ona jest uwzględniana, wtedy jest brany parametr pierwszy dziecka, który musi istnieć przy takiej wartości tego parametru, tzn. {{Code|{{m|Pudełko|Nazwa przedmiotowej przestrzeni nazw|Dyskusja szablonu}}}} - ta nazwa domyślna zostanie zamieniona na przedmiotową, a jak ona by była przedmiotowa, to żadnej zamiany by nie było, a nazwa uzyskana z nazwy przestrzeni nazw z parametrów przestrzennych jest w takim przypadku błędna, to w takim razie brany jest ten parametr, a jeżeli ta nazwa domyślna jest błędna, czyli {{Code|{{m|Pudełko|Nazwa przedmiotowej przestrzeni nazw|Moja przestrzeń}}}}, wtedy funkcja zwraca stan błędu {{Code|(błąd)}}. * {{Code|i}} - numer zmiennej nazwy przestrzeni nazw. Funkcja wykorzystuje {{Code|{{sr|#p.Nazwa_przestrzeni_nazw(frame,...)|p=Pudełko/Pomocne}}}} do wyznaczania ogólnego nazwy przestrzeni nazw dla pozycji bazowej i numerkowej, tzn. dla pozycji: jeden, dwa, trzy,..., itd, i ich ogólnej. Parametry ramki tablicy transportu dziecka: * {{Code|nazwa przestrzeni nazw}}, {{Code|nazwa przestrzeni nazw 1}}, {{Code|nazwa przestrzeni nazw 2}}, {{Code|nazwa przestrzeni nazw 3}},..., {{Code|nazwa przestrzeni nazw i}} - nazwy przestrzeni nazw dla pozycji bazowej, numerkowej i ogólnej, * {{Code|typ jednostki}}, {{Code|typ jednostki 1}}, {{Code|typ jednostki 2}}, {{Code|typ jednostki 3}},..., {{Code|typ jednostki i}} - typy jednostek, którym odpowiadają pewne przestrzenie przedmiotowe, dla pozycji bazowej, numerkowej i ogólnej, ** {{Code|dyskusja typu jednostki}}, {{Code|dyskusja typu jednostki 1}}, {{Code|dyskusja typ jednostki 2}}, {{Code|dyskusja typ jednostki 3}},..., {{Code|dyskusja typ jednostki i}} - czy dany typ jednostki ma przedstawiać, jeśli niepusta, przestrzeń dyskusji dla pozycji bazowej, numerkowej i ogólnej, * {{Code|numer jednostki}} - jak parametr {{Code|i}} nie został ustawiony, to wtedy liczy się ta zmienna. Parametr ramki tablicy transportu rodzica szablonu: * {{Code|nazwa przestrzeni nazw}}, {{Code|nazwa przestrzeni nazw 1}}, {{Code|nazwa przestrzeni nazw 2}}, {{Code|nazwa przestrzeni nazw 3}},..., {{Code|nazwa przestrzeni nazw i}} - nazwy przestrzeni nazw dla pozycji bazowej oraz zwykłej i ogólnej numerkowej, * {{Code|typ jednostki}}, {{Code|typ jednostki 1}}, {{Code|typ jednostki 2}}, {{Code|typ jednostki 3}},..., {{Code|typ jednostki i}} - typy jednostek, którym odpowiadają pewne przestrzenie przedmiotowe, dla pozycji bazowej, numerkowej i ogólnej, ** {{Code|dyskusja typu jednostki}}, {{Code|dyskusja typu jednostki 1}}, {{Code|dyskusja typ jednostki 2}}, {{Code|dyskusja typ jednostki 3}},..., {{Code|dyskusja typ jednostki i}} - czy dany typ jednostki ma przedstawiać, jeśli niepusta, przestrzeń dyskusji dla pozycji bazowej, numerkowej i ogólnej. Przykłady: <syntaxhighlight lang="mediawiki"> {{Nazwa szablonu|nazwa przestrzeni nazw=Dyskusja Wikibooks|nazwa przestrzeni nazw 2=Dyskusja szablonu|nazwa przestrzeni nazw i=Dyskusja modułu}} </syntaxhighlight> W dziecku powiedzmy jest wywołanie, i szukamy nazwy przestrzeni nazw o numerze dwa, która nie została podana, ale istnieje za to jej wersji ogólna {{Code|nazwa przestrzeni nazw i}} i domyślna {{Code|nazwa przestrzeni nazw}}: <syntaxhighlight lang="mediawiki"> {{#invoke:Pudełko|Nazwa przedmiotowej przestrzeni nazw|numer jednostki=1}} </syntaxhighlight> Na podstawie powyższego przykładu otrzymamy wynik o schemacie, nie wyniku, bo tam nie ma zmiennej {{Code|nazwa przestrzeni nazw 1}}, ale jest {{Code|nazwa przestrzeni nazw i}}: <syntaxhighlight lang="mediawiki"> <!-- Ale nie "nazwa przestrzeni nazw", bo jej nie ma, ale za to istnieje "nazwa przestrzeni nazw i"; --> <!-- nazwa przestrzeni nazw 2=nazwa przestrzeni nazw i=Dyskusja modułu; --> <!-- Czyli wynik: --> Moduł <!-- Widzimy, że wygenerowała się nazwa przestrzeni nazw, którą jest przestrzeń przedmiotowa programowa przestrzeni dyskusji "Dyskusja modułu", którą również jest "Szablon" jego przestrzeni dyskusji "Dyskusja szablonu", a dla ich przestrzeni przedmiotowej, zamiast dyskusji, to samo przekształca się na to samo; --> </syntaxhighlight> Nie jest brana w tym powyższym przykładzie zmienna {{Code|nazwa przestrzeni nazw}}, bo jej nie ma, ale za to jest {{Code|nazwa przestrzeni nazw i}}, bo ona występuje jako parametr domyślny ogólny dla parametrów numerkowych. Przykłady w wikikodzie: * {{Code|{{m|Pudełko|Nazwa przedmiotowej przestrzeni nazw|numer jednostki{{=}}2}}}} → {{Tt|{{#invoke:Pudełko|Nazwa przedmiotowej przestrzeni nazw|numer jednostki=2}}}} * {{Code|{{m|Pudełko|Nazwa przedmiotowej przestrzeni nazw|Dyskusja szablonu|nazwa przestrzeni nazw i{{=}}Moja przestrzeń|numer jednostki{{=}}2}}}} → {{Tt|{{#invoke:Pudełko|Nazwa przedmiotowej przestrzeni nazw|Dyskusja szablonu|nazwa przestrzeni nazw i=Moja przestrzeń|numer jednostki=2}}}} * {{Code|{{m|Pudełko|Nazwa przedmiotowej przestrzeni nazw|nazwa przestrzeni nazw 2{{=}}Dyskusja szablonu|numer jednostki{{=}}2}}}} → {{Tt|{{#invoke:Pudełko|Nazwa przedmiotowej przestrzeni nazw|nazwa przestrzeni nazw 2=Dyskusja szablonu|numer jednostki=2}}}} * {{Code|{{m|Pudełko|Nazwa przedmiotowej przestrzeni nazw|nazwa przestrzeni nazw 2{{=}}Dyskusja szablonu|numer jednostki{{=}}2}}}} → {{Tt|{{#invoke:Pudełko|Nazwa przedmiotowej przestrzeni nazw|nazwa przestrzeni nazw i=Dyskusja szablonu|numer jednostki=2}}}} * {{Code|{{m|Pudełko|Nazwa przedmiotowej przestrzeni nazw|nazwa przestrzeni nazw{{=}}Dyskusja szablonu|numer jednostki{{=}}2}}}} → {{Tt|{{#invoke:Pudełko|Nazwa przedmiotowej przestrzeni nazw|nazwa przestrzeni nazw=Dyskusja szablonu|numer jednostki=2}}}} Powyżej dla przykładu podano parametry nie w rodzicu w szablonie, tylko w dziecku, jeśli chodzi o parametry nazw przestrzeni nazw, ale ich się za to nie powinno podawać w tych ramach, tylko w szablonach, w których wywoływane są te ramki pudełek {{Code|{{m|Pudełko}}}}, ale tak tutaj tak zrobiono by było najłatwiej sprawdzić działanie tego typu funkcji. Analogicznie możemy podawać parametry typu jednostki, np.: wywołaniu modułowym {{Code|{{m|Pudełko|Nazwa przedmiotowej przestrzeni nazw|typ jednostki 2{{=}}strona szablonu|numer jednostki{{=}}2}}}}, ale o tym więcej w rozdziałach {{Code|{{sr|# p["Typ jednostki"](frame,i)|p=Pudełko}}}}, {{Code|{{sr|#p["Typ jednostki 2"](frame,i)|p=Pudełko}}}}, {{Code|{{sr|#p["Typ jednostki 3"](frame,i)|p=Pudełko}}}} itp. w „{{sr|#Funkcje typu jednostki|p=Pudełko}}”, ale wtedy ta sama nazwa przestrzeni nazw reprezentowana przez {{Parametr|typ jednostki 2|strona szablonu}}, jest zamieniana na to samo, lepiej jest tutaj używać parametrów przestrzennych nazw niż typu jednostki, bo typ jednostki ma taką samą wartość dla przestrzeni przedmiotowej, co dyskusji. Tutaj parametr dyskusji typu jednostki bazowy i numerkowy ogólny, czy szczegółowy, nie gra roli, bo nawet, gdy wygenerujemy nazwę przestrzeni dyskusji za pomoca tego parametru, to i tak otrzymamy na samym końcu jego nazwę przedmiotową. Również parametry typu jednostki nie powinno się podawać w dziecku w ramce, tylko w rodzicu w szablonie jako parametry, w którym ta ramka jest wywoływana, ale tutaj podano jedynie dla przykładu, jak najłatwiej sprawdzić działanie tych parametrów tej funkcji. Najpierw w funkcji nagłówku brane są parametry nazw przestrzeni nazw, a jeżeli ich nie ma, to parametry typu jednostki, a jeżeli nie ma, to generowane są nazwy na podstawie aktualnego modułu. === {{Code|p["Nazwa przestrzeni nazw dyskusji"](frame,...)}} === Funkcja pisze nazwę przestrzeni nazw dyskusji jakikolwiek nazwy przestrzeni nazw (tzn. nazwę przedmiotową nazwy przestrzenie nazw, czyli nie dyskusji, zamieniana jest na dyskusji, czyli identyfikator przestrzeni się zmienia jeden wyżej, a dyskusji, nie przedmiotową, przekształca się na tą samą), według podanej w zmiennej {{Code|nazwa przestrzeni nazw}} dla pozycja bazowej w podanych parametrach szablonu rodzicu ramki dziecka, lub dla innej pozycji należy parametr podawać w formie {{Code|nazwa przestrzeni nazw 1}}, {{Code|nazwa przestrzeni nazw 2}}, {{Code|nazwa przestrzeni nazw 3}},..., lub te parametry można podać w postaci ogólnej {{Code|nazwa przestrzeni nazw i}}. Parametry podaje się w parametrach rodzica wywołania tej funkcji {{Code|{{m|Pudełko|Nazwa przestrzeni nazw dyskusji}}}} (ale ich nie trzeba podawać w dziecku, ale można) i w parametrach dziecka, jeśli chodzi o zmienną {{Code|numer jednostki}}, czyli np.: {{Code|{{m|Pudełko|Nazwa przestrzeni nazw dyskusji|numer jednostki{{=}}<jakaś liczba całkowita dodatnia>}}}}. Te parametry przestrzenne zamiast w rodzicu w szablonie można podać w ramce dziecka, wtedy parametry dziecka mają pierwszeństwo. Parametry przestrzenne mogą mogą być podane w postaci przestrzeni przedmiotowej lub dyskusji, ale ta funkcja zawsze ją zamienia na dyskusji. Przestrzeń nazw z parametrów nazw przestrzennych może odpowiadać wartości przestrzeni głównej, to wtedy odpowiednia przestrzeń nazw z parametru nazwy jednostki się nie liczy w tej funkcji, aby się liczyła należy użyć funkcji {{Code|{{sr|#p["Nazwa przestrzeni nazw dyskusji 2"](frame,...)|p=Pudełko}}}}. Definicja skrótowa funkcji: <syntaxhighlight lang="lua"> p["Nazwa przestrzeni nazw dyskusji"]=function(frame,czy_uwzglednic_alternatywna_nazwe,i)...end; </syntaxhighlight> Wtedy ciało funkcji tej, czyli jego definicja w środku, jest: <syntaxhighlight lang="lua"> -- Jest liczony numer parametru nazwy przestrzeni nazw, domyslnie chodzi tu o numer bazowy parametrów przestrzennych; local numer_jednostki=i or frame.args["numer jednostki"]; local liczba_numer_jednostki=((numer_jednostki)and(tonumber(numer_jednostki))or 0); local pudelko_pomocne_modul=require("Module:Pudełko/Pomocne"); -- Liczy nazwę przestrzeni nazw dyskusji na podstawie podanych parametrów; return pudelko_pomocne_modul.Nazwa_przestrzeni_nazw(frame,2, czy_uwzglednic_alternatywna_nazwe,liczba_numer_jednostki); </syntaxhighlight> Parametry funkcji: * {{Code|frame}} - tablica ramki tablicy transportu, * {{Code|czy_uwzglednic_alternatywna_nazwe}} - czy ma uwzględniać nazwę przestrzeni nazw domyślną szablonu, dostępne wartości: {{Code|false}}, w której nazwa domyślna nie jest uwzględniana wtedy, oraz {{Code|nil}} i {{Code|true}}, które oznaczają to samo, w tym jeżeli ona jest uwzględniana, wtedy jest brany parametr pierwszy dziecka, który musi istnieć przy takiej wartości tego parametru, tzn. {{Code|{{m|Pudełko|Nazwa przestrzeni nazw dyskusji|Szablon}}}} - ta nazwa domyślna zostanie przekształcona na dyskusji, a jeżeli ona by była dyskusji, to nie byłoby żadnego przekształcenia, a nazwa uzyskana nazwy przestrzeni nazw z parametrów przestrzennych jest w takim przypadku błędna, to w takim razie brany jest ten parametr, a jeżeli nazwa domyślna jest błędna, czyli {{Code|{{m|Pudełko|Nazwa przestrzeni nazw dyskusji|Moja przestrzeń}}}}, wtedy funkcja zwraca stan błędu {{Code|(błąd)}}. * {{Code|i}} - numer zmiennej nazwy przestrzeni nazw. Funkcja wykorzystuje {{Code|{{sr|#p.Nazwa_przestrzeni_nazw(frame,...)|p=Pudełko/Pomocne}}}} do wyznaczania ogólnego nazwy przestrzeni nazw dla pozycji bazowej i numerkowej, tzn. dla pozycji: jeden, dwa, trzy,..., itd, i ich ogólnej. Parametry ramki tablicy transportu dziecka: * {{Code|nazwa przestrzeni nazw}}, {{Code|nazwa przestrzeni nazw 1}}, {{Code|nazwa przestrzeni nazw 2}}, {{Code|nazwa przestrzeni nazw 3}},..., {{Code|nazwa przestrzeni nazw i}} - nazwy przestrzeni nazw dla pozycji bazowej, numerkowej i ogólnej, * {{Code|typ jednostki}}, {{Code|typ jednostki 1}}, {{Code|typ jednostki 2}}, {{Code|typ jednostki 3}},..., {{Code|typ jednostki i}} - typy jednostek, którym odpowiadają pewne przestrzenie przedmiotowe, dla pozycji bazowej, numerkowej i ogólnej, ** {{Code|dyskusja typu jednostki}}, {{Code|dyskusja typu jednostki 1}}, {{Code|dyskusja typ jednostki 2}}, {{Code|dyskusja typ jednostki 3}},..., {{Code|dyskusja typ jednostki i}} - czy dany typ jednostki ma przedstawiać, jeśli niepusta, przestrzeń dyskusji dla pozycji bazowej, numerkowej i ogólnej, * {{Code|numer jednostki}} - jak parametr {{Code|i}} nie został ustawiony, to wtedy liczy się ta zmienna. Parametr ramki tablicy transportu rodzica szablonu: * {{Code|nazwa przestrzeni nazw}}, {{Code|nazwa przestrzeni nazw 1}}, {{Code|nazwa przestrzeni nazw 2}}, {{Code|nazwa przestrzeni nazw 3}},..., {{Code|nazwa przestrzeni nazw i}} - nazwy przestrzeni nazw dla pozycji bazowej oraz zwykłej i ogólnej numerkowej, * {{Code|typ jednostki}}, {{Code|typ jednostki 1}}, {{Code|typ jednostki 2}}, {{Code|typ jednostki 3}},..., {{Code|typ jednostki i}} - typy jednostek, którym odpowiadają pewne przestrzenie przedmiotowe, dla pozycji bazowej, numerkowej i ogólnej, ** {{Code|dyskusja typu jednostki}}, {{Code|dyskusja typu jednostki 1}}, {{Code|dyskusja typ jednostki 2}}, {{Code|dyskusja typ jednostki 3}},..., {{Code|dyskusja typ jednostki i}} - czy dany typ jednostki ma przedstawiać, jeśli niepusta, przestrzeń dyskusji dla pozycji bazowej, numerkowej i ogólnej. Przykłady: <syntaxhighlight lang="mediawiki"> {{Nazwa szablonu|nazwa przestrzeni nazw=Wikibooks|nazwa przestrzeni nazw 2=Szablon|nazwa przestrzeni nazw i=Moduł}} </syntaxhighlight> W dziecku powiedzmy jest wywołanie, i szukamy nazwy przestrzeni nazw o numerze dwa, która nie została podana, ale istnieje za to jej wersji ogólna {{Code|nazwa przestrzeni nazw i}} i domyślna {{Code|nazwa przestrzeni nazw}}: <syntaxhighlight lang="mediawiki"> {{#invoke:Pudełko|Nazwa przestrzeni nazw dyskusji|numer jednostki=1}} </syntaxhighlight> Na podstawie powyższego przykładu otrzymamy wynik o schemacie, nie wyniku, bo tam nie ma zmiennej {{Code|nazwa przestrzeni nazw 1}}, ale jest {{Code|nazwa przestrzeni nazw i}}: <syntaxhighlight lang="mediawiki"> <!-- Ale nie "nazwa przestrzeni nazw", bo jej nie ma, ale za to istnieje "nazwa przestrzeni nazw i"; --> <!-- nazwa przestrzeni nazw 2=nazwa przestrzeni nazw i=Moduł; --> <!-- Czyli wynik: --> Dyskusja modułu <!-- Widzimy, że wygenerowała się nazwa przestrzeni nazw, którą jest przestrzeń dyskusji przestrzeni programowej przestrzeni przedmiotowej "Moduł", którą również jest "Szablon" jego przestrzeni dyskusji "Dyskusja szablonu", a dla ich przestrzeni przedmiotowej, zamiast dyskusji, to przekształca się na dyskusji jej odpowiadającą; --> </syntaxhighlight> Nie jest brana w tym powyższym przykładzie zmienna {{Code|nazwa przestrzeni nazw}}, bo jej nie ma, ale za to jest {{Code|nazwa przestrzeni nazw i}}, bo ona występuje jako parametr domyślny ogólny dla parametrów numerkowych. Przykłady w wikikodzie: * {{Code|{{m|Pudełko|Nazwa przestrzeni nazw dyskusji|numer jednostki{{=}}2}}}} → {{Tt|{{#invoke:Pudełko|Nazwa przestrzeni nazw dyskusji|numer jednostki=2}}}} * {{Code|{{m|Pudełko|Nazwa przestrzeni nazw dyskusji|Szablon|nazwa przestrzeni nazw i{{=}}Moja przestrzeń|numer jednostki{{=}}2}}}} → {{Tt|{{#invoke:Pudełko|Nazwa przestrzeni nazw dyskusji|Szablon|nazwa przestrzeni nazw i=Moja przestrzeń|numer jednostki=2}}}} * {{Code|{{m|Pudełko|Nazwa przestrzeni nazw dyskusji|nazwa przestrzeni nazw 2{{=}}Szablon|numer jednostki{{=}}2}}}} → {{Tt|{{#invoke:Pudełko|Nazwa przestrzeni nazw dyskusji|nazwa przestrzeni nazw 2=Szablon|numer jednostki=2}}}} * {{Code|{{m|Pudełko|Nazwa przestrzeni nazw dyskusji|nazwa przestrzeni nazw 2{{=}}Szablon|numer jednostki{{=}}2}}}} → {{Tt|{{#invoke:Pudełko|Nazwa przestrzeni nazw dyskusji|nazwa przestrzeni nazw i=Szablon|numer jednostki=2}}}} * {{Code|{{m|Pudełko|Nazwa przestrzeni nazw dyskusji|nazwa przestrzeni nazw{{=}}Szablon|numer jednostki{{=}}2}}}} → {{Tt|{{#invoke:Pudełko|Nazwa przestrzeni nazw dyskusji|nazwa przestrzeni nazw=Szablon|numer jednostki=2}}}} Powyżej dla przykładu podano parametry nie w rodzicu w szablonie, tylko w dziecku, jeśli chodzi o parametry nazw przestrzeni nazw, ale ich się za to nie powinno podawać w tych ramach, tylko w szablonach, w których wywoływane są te ramki pudełek {{Code|{{m|Pudełko}}}}, ale tak tutaj tak zrobiono by było najłatwiej sprawdzić działanie tego typu funkcji. Analogicznie możemy podawać parametry typu jednostki, np.: wywołaniu modułowym {{Code|{{m|Pudełko|Nazwa przestrzeni nazw dyskusji|typ jednostki 2{{=}}strona szablonu|numer jednostki{{=}}2}}}}, ale o tym więcej w rozdziałach {{Code|{{sr|# p["Typ jednostki"](frame,i)|p=Pudełko}}}}, {{Code|{{sr|#p["Typ jednostki 2"](frame,i)|p=Pudełko}}}}, {{Code|{{sr|#p["Typ jednostki 3"](frame,i)|p=Pudełko}}}} itp. w „{{sr|#Funkcje typu jednostki|p=Pudełko}}”, ale wtedy nazwa przestrzeni nazw reprezentowana przez {{Parametr|typ jednostki 2|strona szablonu}}, jest zamieniana na nazwę przestrzeni nazw dyskusji. Parametr dyskusji typu jednostki bazowy lub dla danego numerka ogólny, czy szczegółowy, nie gra roli. Również parametry typu jednostki nie powinno się podawać w dziecku w ramce, tylko w rodzicu w szablonie jako parametry, w którym ta ramka jest wywoływana, ale tutaj podano jedynie dla przykładu, jak najłatwiej sprawdzić działanie tych parametrów tej funkcji. Najpierw w funkcji nagłówku brane są parametry nazw przestrzeni nazw, a jeżeli ich nie ma, to parametry typu jednostki, a jeżeli nie ma, to generowane są nazwy na podstawie aktualnego modułu. == Funkcje nazw przestrzeni nazw drugiej wersji == === {{Code|p["Nazwa przestrzeni nazw 2"](frame,...)}} === Funkcja pisze nazwę przestrzeni nazw, niezależnie, czy to jest przedmiotowa, czy dyskusji, według podanej w zmiennej {{Code|nazwa przestrzeni nazw}} dla pozycja bazowej w podanych parametrach szablonu rodzicu ramki dziecka, lub dla innej pozycji należy parametr podawaćw formie {{Code|nazwa przestrzeni nazw 1}}, {{Code|nazwa przestrzeni nazw 2}}, {{Code|nazwa przestrzeni nazw 3}},..., lub te parametry można podać w postaci ogólnej {{Code|nazwa przestrzeni nazw i}}. W tej funkccji trzeba też podawać parametry nazwy jednostek {{Code|nazwa jednostki}}, {{Code|nazwa jednostki 1}}, {{Code|nazwa jednostki 2}}, {{Code|nazwa jednostki 3}},... Parametry podaje się w parametrach rodzica wywołania tej funkcji {{Code|{{m|Pudełko|Nazwa przestrzeni nazw 2}}}} (ale ich nie trzeba podawać w dziecku, ale można) i w parametrach dziecka, jeśli chodzi o zmienną {{Code|numer jednostki}}, czyli np.: {{Code|{{m|Pudełko|Nazwa przestrzeni nazw 2|numer jednostki{{=}}<jakaś liczba całkowita dodatnia>}}}}. Te parametry przestrzenne zamiast w rodzicu w szablonie można podać w ramce dziecka, wtedy parametry dziecka mają pierwszeństwo. Przestrzeń nazw z parametrów nazw przestrzennych może odpowiadać wartości przestrzeni głównej, to wtedy odpowiednia przestrzeń nazw z parametru nazwy jednostki się liczy w tej funkcji, wtedy jest liczona nazwa przestrzeni nazw z tego parametru. Gdy parametry przestrzenne lub typ jednostki w drugim podejściu nie wskazują na przestrzeń główną, to wtedy działanie tej funkcji jest podobne do {{Code|{{sr|#p["Nazwa przestrzeni nazw"](frame,...)|p=Pudełko}}}}. Definicja skrótowa funkcji: <syntaxhighlight lang="lua"> p["Nazwa przestrzeni nazw 2"]=function(frame,czy_uwzglednic_alternatywna_nazwe,i)...end; </syntaxhighlight> Wtedy ciało funkcji tej, czyli jego definicja w środku, jest: <syntaxhighlight lang="lua"> local pudelko_pomocne_modul=require("Module:Pudełko/Pomocne"); -- Liczy nazwę przestrzeni nazw, jeżeli z parametrów przestrzennych przestrzeń wskazuje na główną, to wtedy jest liczona przestrzeń nazw z nazwy jednostki; return pudelko_pomocne_modul.Nazwa_przestrzeni_nazw_2(frame,czy_uwzglednic_alternatywna_nazwe,i) </syntaxhighlight> Parametry funkcji: * {{Code|frame}} - tablica ramki tablicy transportu, * {{Code|czy_uwzglednic_alternatywna_nazwe}} - czy ma uwzględniać nazwę przestrzeni nazw domyślną szablonu, dostępne wartości: {{Code|false}}, w której nazwa domyślna nie jest uwzględniana wtedy, oraz {{Code|nil}} i {{Code|true}}, które oznaczają to samo, w tym jeżeli ona jest uwzględniana, wtedy jest brany parametr pierwszy dziecka, który musi istnieć przy takiej wartości tego parametru, tzn. {{Code|{{m|Pudełko|Nazwa przestrzeni nazw 2|Szablon}}}}, a nazwa uzyskana nazwy przestrzeni nazw jest w takim przypadku błędna, a jeżeli nazwa domyślna jest błędna, czyli {{Code|{{m|Pudełko|Nazwa przestrzeni nazw 2|Moja przestrzeń}}}}, wtedy funkcja zwraca stan błędu {{Code|(błąd)}}. * {{Code|i}} - numer zmiennej nazwy przestrzeni nazw. Funkcja wykorzystuje {{Code|{{sr|#p.Nazwa_przestrzeni_nazw_2(frame,...)|p=Pudełko/Pomocne}}}} do wyznaczania ogólnego nazwy przestrzeni nazw dla pozycji bazowej i numerkowej, tzn. dla pozycji: jeden, dwa, trzy,..., itd, i ich ogólnej. Parametry ramki tablicy transportu dziecka: * {{Code|nazwa przestrzeni nazw}}, {{Code|nazwa przestrzeni nazw 1}}, {{Code|nazwa przestrzeni nazw 2}}, {{Code|nazwa przestrzeni nazw 3}},..., {{Code|nazwa przestrzeni nazw i}} - nazwy przestrzeni nazw dla pozycji bazowej, numerkowej i ogólnej, * {{Code|typ jednostki}}, {{Code|typ jednostki 1}}, {{Code|typ jednostki 2}}, {{Code|typ jednostki 3}},..., {{Code|typ jednostki i}} - typy jednostek, którym odpowiadają pewne przestrzenie przedmiotowe, dla pozycji bazowej, numerkowej i ogólnej, ** {{Code|dyskusja typu jednostki}}, {{Code|dyskusja typu jednostki 1}}, {{Code|dyskusja typ jednostki 2}}, {{Code|dyskusja typ jednostki 3}},..., {{Code|dyskusja typ jednostki i}} - czy dany typ jednostki ma przedstawiać, jeśli niepusta, przestrzeń dyskusji dla pozycji bazowej, numerkowej i ogólnej, * {{Code|numer jednostki}} - jak parametr {{Code|i}} nie został ustawiony, to wtedy liczy się ta zmienna. Parametr ramki tablicy transportu rodzica szablonu: * {{Code|nazwa przestrzeni nazw}}, {{Code|nazwa przestrzeni nazw 1}}, {{Code|nazwa przestrzeni nazw 2}}, {{Code|nazwa przestrzeni nazw 3}},..., {{Code|nazwa przestrzeni nazw i}} - nazwy przestrzeni nazw dla pozycji bazowej oraz zwykłej i ogólnej numerkowej, * {{Code|typ jednostki}}, {{Code|typ jednostki 1}}, {{Code|typ jednostki 2}}, {{Code|typ jednostki 3}},..., {{Code|typ jednostki i}} - typy jednostek, którym odpowiadają pewne przestrzenie przedmiotowe, dla pozycji bazowej, numerkowej i ogólnej, ** {{Code|dyskusja typu jednostki}}, {{Code|dyskusja typu jednostki 1}}, {{Code|dyskusja typ jednostki 2}}, {{Code|dyskusja typ jednostki 3}},..., {{Code|dyskusja typ jednostki i}} - czy dany typ jednostki ma przedstawiać, jeśli niepusta, przestrzeń dyskusji dla pozycji bazowej, numerkowej i ogólnej. Przykłady: <syntaxhighlight lang="mediawiki"> {{Nazwa szablonu|nazwa przestrzeni nazw=Wikibooks|nazwa przestrzeni nazw 1=Szablon|nazwa przestrzeni nazw i=|nazwa jednostki 2=Wikibooks:Strona}} </syntaxhighlight> W dziecku powiedzmy jest wywołanie, i szukamy nazwy przestrzeni nazw o numerze dwa, która została podana, ale istnieje za to jej wersji ogólna {{Code|nazwa przestrzeni nazw i}} i domyślna {{Code|nazwa przestrzeni nazw}}, ale wtedy dla tego numerkowego liczy się to ogólne z {{Code| i}}, a ponieważ ta nazwa jest pusta, więc będziemy liczyli nazwę przestrzeni nazw z {{Code|nazwa jednostki 2}}: <syntaxhighlight lang="mediawiki"> {{#invoke:Pudełko|Nazwa przestrzeni nazw 2|numer jednostki=2}} </syntaxhighlight> Na podstawie powyższego przykładu otrzymamy wynik o schemacie, nie wyniku, bo tam nie ma zmiennej {{Code|nazwa przestrzeni nazw 1}}, ale jest {{Code|nazwa przestrzeni nazw i}}: <syntaxhighlight lang="mediawiki"> <!-- Ale nie "nazwa przestrzeni nazw 2", bo jej nie ma, ale za to istnieje "nazwa przestrzeni nazw i"; --> <!-- nazwa przestrzeni nazw 2=nazwa przestrzeni nazw i="", a nazwa jednostki 2="Wikibooks:Strona"; --> <!-- Czyli wynik: --> Wikibooks <!-- Widzimy, że wygenerowała się nazwa przestrzeni nazw, którą jest przestrzeń nieprogramowa, ale projektu, wychodząca z nazwy jednostek w tym przypadku z "nazwa jednostki 2"; --> </syntaxhighlight> Nie jest brana w tym powyższym przykładzie zmienna {{Code|nazwa przestrzeni nazw}}, bo jej nie ma, ale za to jest {{Code|nazwa przestrzeni nazw i}}, bo ona występuje jako parametr domyślny ogólny dla parametrów numerkowych. Tytaj jest używwana jest zmienna {{Code|nazwa jednostki 2}} do wygenerowania ostatecznego wyniki,bo jak mozna zauważyć, parametry przestrzenne wskazują na przestrzeń główną, a nazwy jednostek już nie. Przykłady w wikikodzie: * {{Code|{{m|Pudełko|Nazwa przestrzeni nazw 2|numer jednostki{{=}}2}}}} → {{Tt|{{#invoke:Pudełko|Nazwa przestrzeni nazw 2|numer jednostki=2}}}} * {{Code|{{m|Pudełko|Nazwa przestrzeni nazw 2|Szablon|nazwa przestrzeni nazw i{{=}}Moja przestrzeń|numer jednostki{{=}}2}}}} → {{Tt|{{#invoke:Pudełko|Nazwa przestrzeni nazw 2|Szablon|nazwa przestrzeni nazw i=Moja przestrzeń|numer jednostki=2}}}} * {{Code|{{m|Pudełko|Nazwa przestrzeni nazw 2|nazwa przestrzeni nazw 2{{=}}|nazwa jednostki 2{{=}}Szablon:Strona|numer jednostki{{=}}2}}}} → {{Tt|{{#invoke:Pudełko|Nazwa przestrzeni nazw 2|nazwa przestrzeni nazw 2=|nazwa jednostki 2=Szablon:Strona|numer jednostki=2}}}} * {{Code|{{m|Pudełko|Nazwa przestrzeni nazw 2|nazwa przestrzeni nazw i{{=}}|nazwa jednostki 2{{=}}Szablon:Strona|numer jednostki{{=}}2}}}} → {{Tt|{{#invoke:Pudełko|Nazwa przestrzeni nazw 2|nazwa przestrzeni nazw i=|nazwa jednostki 2=Szablon:Strona|numer jednostki=2}}}} * {{Code|{{m|Pudełko|Nazwa przestrzeni nazw 2|Szablon|nazwa przestrzeni nazw{{=}}|nazwa jednostki 2{{=}}Wikibooks:Strona|numer jednostki{{=}}2}}}} → {{Tt|{{#invoke:Pudełko|Nazwa przestrzeni nazw 2|Szablon|nazwa przestrzeni nazw=|nazwa jednostki 2=Wikibooks:Strona|numer jednostki=2}}}} Powyżej dla przykładu podano parametry nie w rodzicu w szablonie, tylko w dziecku, jeśli chodzi o parametry nazw przestrzeni nazw i nazw jednostek, ale ich się za to nie powinno podawać w tych ramach, tylko w szablonach, w których wywoływane są te ramki pudełek {{Code|{{m|Pudełko}}}}, ale tak tutaj tak zrobiono by było najłatwiej sprawdzić działanie tego typu funkcji. Analogicznie możemy podawać parametry typu jednostki, np.: wywołaniu modułowym {{Code|{{m|Pudełko|Nazwa przestrzeni nazw 2|typ jednostki 2{{=}}Podręcznik|nazwa jednostki 2{{=}}Szablon:Strona|umer jednostki{{=}}2}}}} (ale wtedy jest brana przestrzeń nazw z nazwy jednostki), ale o tym więcej w rozdziałach {{Code|{{sr|# p["Typ jednostki"](frame,i)|p=Pudełko}}}}, {{Code|{{sr|#p["Typ jednostki 2"](frame,i)|p=Pudełko}}}}, {{Code|{{sr|#p["Typ jednostki 3"](frame,i)|p=Pudełko}}}} itp. w „{{sr|#Funkcje typu jednostki|p=Pudełko}}”, on definiuje przestrzenie przedmiotowe, ale można użyć parametru dyskusji typu jednostki z wartością niepustą, wtedy wyświetli się nazwa przestrzeni nazw dyskusji. Jeżeli typ jednostki wskazuje na przestrzeń nazw główną, wtedy się liczą parametry nazw jednostek. Również parametry typu jednostki nie powinno się podawać w dziecku w ramce, tylko w rodzicu w szablonie jako parametry, w którym ta ramka jest wywoływana, ale tutaj podano jedynie dla przykładu, jak najłatwiej sprawdzić działanie tych parametrów tej funkcji. Najpierw w funkcji nagłówku brane są parametry nazw przestrzeni nazw, a jeżeli ich nie ma, to parametry typu jednostki, a jeżeli nie ma lub parametry przestrzenne wskazują na przestrzeń główną, i nie ma nazwy jednostki, to generowane są nazwy tej funkcji na podstawie aktualnej strony. === {{Code|p["Nazwa przedmiotowej przestrzeni nazw 2"](frame,...)}} === === {{Code|p["Nazwa przestrzeni nazw dyskusji 2"](frame,...)}} === == Funkcje pełnych nazw jednostki == === {{Code|p["Pełna nazwa dyskusji jednostki"](frame,i)}} === === {{Code|p["Pełna nazwa przedmiotowa jednostki"](frame,i)}} === === {{Code|p["Pełna nazwa jednostki"](frame,i)}} === == Funkcje pełnych nazw jednostki drugiej wersji == === {{Code|p["Pełna nazwa dyskusji jednostki 2"](frame,i)}} === === {{Code|p["Pełna nazwa przedmiotowa jednostki 2"](frame,i)}} === === {{Code|p["Pełna nazwa jednostki 2"](frame,i)}} === == Funkcje pełnych nazw jednostki trzeciej wersji == === {{Code|p["Pełna nazwa dyskusji jednostki 3"](frame,i)}} === === {{Code|p["Pełna nazwa przedmiotowa jednostki 3"](frame,i)}} === === {{Code|p["Pełna nazwa jednostki 3"](frame,i)}} === == Funkcje nazw jednostki == === {{Code|p["Nazwa jednostki"](frame,i)}} === == Funkcje nazw jednostki drugiej wersji == === {{Code|p["Nazwa jednostki 2"](frame,i)}} === === {{Code|p["Nazwa przedmiotowa jednostki 2"](frame,i)}} === === {{Code|p["Nazwa dyskusji jednostki 2"](frame,i)}} === == Funkcje nazw przestrzeni nazw trzeciej wersji == === {{Code|p["Nazwa przestrzeni nazw 3"](frame,i)}} === === {{Code|p["Nazwa przedmiotowej przestrzeni nazw 3"](frame,i)}} === === {{Code|p["Nazwa przestrzeni nazw dyskusji 3"](frame,i)}} === == Funkcje nazw jednostki trzeciej wersji == === {{Code|p["Nazwa jednostki 3"](frame,i)}} === === {{Code|p["Nazwa przedmiotowa jednostki 3"](frame,i)}} === === {{Code|p["Nazwa dyskusji jednostki 3"](frame,i)}} === == Funkcje typu jednostki == === {{Code|p["Typ jednostki"](frame,i)}} === === {{Code|p["Typ jednostki 2"](frame,i)}} === === {{Code|p["Typ jednostki 3"](frame,i)}} === === Funkcje typu jednostki przedmiotowe === ==== {{Code|p["Przedmiotowy typ jednostki"](frame,i)}} ==== ==== {{Code|p["Przedmiotowy typ jednostki 2"](frame,i)}} ==== ==== {{Code|p["Przedmiotowy typ jednostki 3"](frame,i)}} ==== === Fukcje typu jednostki dyskusji === ==== {{Code|p["Dyskusyjny typ jednostki"](frame,i)}} ==== ==== {{Code|p["Dyskusyjny typ jednostki 2"](frame,i)}}} ==== ==== {{Code|p["Dyskusyjny typ jednostki 3"](frame,i)}} ==== == Funkcje chech pudełka == === {{Code|p["Cecha pudełka"](frame)}} === === {{Code|p["Przedmiotowa cecha pudełka"](frame)}} === === {{Code|p["Dyskusyjna cecha pudełka"](frame)}} === == Fukcje ogólnego pudełka == === {{Code|p["Ogólne pudełko"](frame)}} === == Funkcje ogólne == === {{Code|p["Tekst pudełka"](frame)}} === == Funkcje błędów pudełka == === {{Code|p["Błędy pudełka"](frame)}} === === {{Code|p["Przedmiotowe błędy pudełka"](frame)}} === === {{Code|p["Dyskusyjne błędy pudełka"](frame)}} === == Funkcje nazw stron == === {{Code|p["Nazwa strony głównej projektu"](frame,i)}} === === {{Code|p["Nazwa strony głównej dla dzieci projektu"](frame,i)}} === == Funkcje kodów == === {{Code|p["Kod języka"](frame,i)}} === === {{Code|p["Kod projektu"](frame,i)}} === === {{Code|p["Klucz projektu"](frame,i)}} === == Funkcje wiki == === {{Code|p["Inny niż język bieżący wiki"](frame)}} === === {{Code|p["Inne niż lokalne wiki"](frame)}} === === {{Code|p["Inne niż bieżące wiki"](frame)}} === == Funkcje typów parametrów, czy podane je == === {{Code|p["Podano parametry nienazwane"](frame)}} === === {{Code|p["Podano parametry numerowane"](frame)}} === === {{Code|p["Podano parametry nazwane"](frame)}} === == Funkcje kodów tego projektu == === {{Code|p["Kod projektu tego projektu"](frame)}} === === {{Code|p["Kod języka tego projektu"](frame)}} === === {{Code|p["Klucz projektu tego projektu"](frame)}} === == Funkcje stron == === {{Code|p["Strona główna tego projektu"](frame)}} === === {{Code|p["Strona główna dla dzieci tego projektu"](frame)}} === == Funkcje nazw stron drugiej wersji == === {{Code|p["Nazwa strony głównej dla dzieci projektu 2"](frame)}} === === {{Code| p["Nazwa strony głównej projektu 2"](frame)}} === {{BrClear}} <noinclude><!-- -->{{ProstaStronaKoniec}}<!-- -->{{Kategoria|Opisy funkcji, w Lua w Scribunto, w modułach}}<!-- --></noinclude> 2j6z6dtvjz1w85sdgofgs8yb86cqdnn 540378 540377 2026-04-23T13:06:40Z Persino 2851 /* {{Code|p["Nazwa przestrzeni nazw 2"](frame,...)}} */ 540378 wikitext text/x-wiki <noinclude>{{ProstaStronaStart | nagłówek = {{Podrozdział|{{ld2|Pudełko}}|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 pudelko_modul=require("Module:Pudełko"); </syntaxhighlight> dzięki, któremu można wypisywać funkcje należącego do niego. Posługuje się na parametrach pudełkowych {{Parametr|nazwa przestrzeni nazw}} (czy też bez numerka {{Parametr|nazwa przestrzeni nazw i}} dla tego numerowanego) lub te z numerkiem po jednej spacji w nich (ale nie dla tego z końcówką {{Code| i}}) mogą zostać użyte jako parametry szablonu. Moduł {{Code|{{ld2|Pudełko}}}} przedstawia funkcje nazw w oparciu o funkcje nazw {{Code|{{ld2|Nazwy}}}}, generuje on nazwy za pomocą parametrów pudełkowych podanych poniżej. Parametr {{Parametr|nazwa jednostki}} (lub parametr {{Parametr|cel}} dla numerka tego pierwszego, tego alternatywnego), lub te z numerkiem po jednej spacji w nazwie parametru, albo numerowane numerkami {{Code|1}}, {{Code|2}},..., mogą zostać użyte jako parametry szablonu. Parametry określające rodzaj jednostki {{Parametr|typ jednostki}} z {{Parametr|dyskusja typu jednostki}}, itp. w wersjach z numerkiem po jednej spacji w nich mogą zostać użyte jako parametry szablonu. A te tymi numerowanymi liczbami naturalnymi {{Tt|nazwy jednostki}} od jedynki wzwyż poprzez szablon, w którym są one użyte, one też mogą być użyte z dwukropkiem, te numerowane, na samym początku nazwy, wtedy one są traktowane jako pełne nazwy strony, i wtedy one nie zostaną z interpretowane, że do nich trzeba użyć parametr odpowiedni z nazwą przetrzeni nazw z tego numerowanego, czy ogólny, aby utworzyć znów inną pełną nazwę strony dla tego numerka. Zestawienie: * {{Code|nazwa przestrzeni nazw}} i {{Code|nazwa przestrzeni nazw i}} (ogólna nazwa przestrzeni nazw dla wszystkich numerków, i tych numerowanych jednostek) - i to pierwsze z numerkiem, tzn. {{Code|nazwa przestrzeni nazw 1}}, {{Code|nazwa przestrzeni nazw 2}}, ..., * {{Code|nazwa jednostki}} - i te z numerkiem: {{Code|nazwa jednostki 1}}, {{Code|nazwa jednostki 2}}, ..., lub gdy jest zamiast tego parametrem numerowany, {{Code|1}}, {{Code|2}},..., który dla tego pierwszego może być uznany jako: {{Code|cel}} {{=}} {{Code|1}}, * {{Code|typ jednostki}} (parametr bazowy) i {{Code|typ jednostki i}} (parametr domyślny numerkowy) - i te z numerkiem: {{Code|typ jednostki 1}}, {{Code|typ jednostki 2}}, ..., tzn. gdy chcemy określić z jakim typem jednostki mamy do czynienia w zależności do jakiej przestrzeni nazw należy, a w danej, czy jest on np. programowy, czy tylko jest opisem, jak to bywa w szablonach {{Np|Template|link=tak}}, podobnie jest w przypadku {{Np|Module|link=tak}}, czy jak jest w innych przestrzeniach nazw, ** {{Code|dyskusja typu jednostki}} (parametr bazowy) i {{Code|dyskusja typu jednostki i}} (parametr domyślny numerkowy) - i te z numerkiem: {{Code|dyskusja typu jednostki 1}}, {{Code|dyskusja typu jednostki 2}}, ..., gdy chcemy określić wartością niepustą,że chodzi tutaj o typ jednostki. == {{Code|p.CzyNiepoprawnaNazwa(nazwa_jednostki)}} == Funkcja sprawdzajaca, czy jest poprawnie podana nazwa jednostki, czy ma poprawną nazwę. Znakami tymi, z których nie powinna składać się nazwa jest {{Code|<nowiki>{}<>|[]#\n</nowiki>}} i dodatkowo znak {{Code|&#127;}} (kod {{Code|{{Nowiki|&#127;}}}}). Też nie może składać się z trzech znaków tyldy, tzn. {{Code|<nowiki>~~~</nowiki>}}. Również w swojej budowie nie może składać się ze kodów {{Strong|HTML}} literowych o wzorze {{Code|{{Nowiki|&(%a+);}}}}. Natomiast może składać się z {{Code|{{Nowiki|&#(%d+);}}}} i {{Code|{{Nowiki|&#x(%x+);}}}}, ale w pierw te kody muszą być zamienione na normalne znaki. Skrótowa definicja funkcji: <syntaxhighlight lang="lua"> function p.CzyNiepoprawnaNazwa(nazwa_jednostki)...end; </syntaxhighlight> Wtedy ciało funkcji tej, czyli jego definicja w środku, jest: <syntaxhighlight lang="lua"> -- Moduł: "Moduł:Html/dane", służy do ładowania znaku o kodzie HTML "&#127;"; local html_dane_modul=mw.loadData("Module:Html/dane"); return mw.ustring.match(nazwa_jednostki,"[{}<>|%[%]#\n"..html_dane_modul.znak_127.."]+") or mw.ustring.match(nazwa_jednostki,"~~~") or mw.ustring.match(nazwa_jednostki,"&(%a+);"); </syntaxhighlight> Parametry: * {{Code|nazwa_jednostki}} - nazwa jednostki do sprawdzenia. Przykłady: <syntaxhighlight lang="lua"> local pudelko_modul=require("Module:Pudełko"); -- Podana przykładowa niepoprawna nazwa jedostki local nazwa_jednostki="Nazwa pliku [[Nazwa linku w pliku]]"; -- Fukcja zwróci wartość: local czy_poprawna_nazwa=true; local czy_poprawna_nazwa=pudelko_modul.CzyNiepoprawnaNazwa(nazwa_jednostki); </syntaxhighlight> == Funkcje nazw przestrzeni nazw == === {{Code|p["Nazwa przestrzeni nazw"](frame,...)}} === Funkcja pisze nazwę przestrzeni nazw, niezależnie, czy to jest przedmiotowa, czy dyskusji, według podanej w zmiennej {{Code|nazwa przestrzeni nazw}} dla pozycja bazowej w podanych parametrach szablonu rodzicu ramki dziecka, lub dla innej pozycji należy parametr podawaćw formie {{Code|nazwa przestrzeni nazw 1}}, {{Code|nazwa przestrzeni nazw 2}}, {{Code|nazwa przestrzeni nazw 3}},..., lub te parametry można podać w postaci ogólnej {{Code|nazwa przestrzeni nazw i}}. Parametry podaje się w parametrach rodzica wywołania tej funkcji {{Code|{{m|Pudełko|Nazwa przestrzeni nazw}}}} (ale ich nie trzeba podawać w dziecku, ale można) i w parametrach dziecka, jeśli chodzi o zmienną {{Code|numer jednostki}}, czyli np.: {{Code|{{m|Pudełko|Nazwa przestrzeni nazw|numer jednostki{{=}}<jakaś liczba całkowita dodatnia>}}}}. Te parametry przestrzenne zamiast w rodzicu w szablonie można podać w ramce dziecka, wtedy parametry dziecka mają pierwszeństwo. Przestrzeń nazw z parametrów nazw przestrzennych może odpowiadać wartości przestrzeni głównej, to wtedy odpowiednia przestrzeń nazw z parametru nazwy jednostki się nie liczy w tej funkcji, aby się liczyła należy użyć funkcji {{Code|{{sr|#p["Nazwa przestrzeni nazw 2"](frame,...)|p=Pudełko}}}}. Definicja skrótowa funkcji: <syntaxhighlight lang="lua"> p["Nazwa przestrzeni nazw"]=function(frame,czy_uwzglednic_alternatywna_nazwe,i)...end; </syntaxhighlight> Wtedy ciało funkcji tej, czyli jego definicja w środku, jest: <syntaxhighlight lang="lua"> -- Jest liczony numer parametru nazwy przestrzeni nazw, domyslnie chodzi tu o numer bazowy parametrów przestrzennych; local numer_jednostki=i or frame.args["numer jednostki"]; local liczba_numer_jednostki=((numer_jednostki)and(tonumber(numer_jednostki))or 0); local pudelko_pomocne_modul=require("Module:Pudełko/Pomocne"); -- Liczy nazwę przestrzeni nazw na podstawie podanych parametrów; return pudelko_pomocne_modul.Nazwa_przestrzeni_nazw(frame,0, czy_uwzglednic_alternatywna_nazwe,liczba_numer_jednostki); </syntaxhighlight> Parametry funkcji: * {{Code|frame}} - tablica ramki tablicy transportu, * {{Code|czy_uwzglednic_alternatywna_nazwe}} - czy ma uwzględniać nazwę przestrzeni nazw domyślną szablonu, dostępne wartości: {{Code|false}}, w której nazwa domyślna nie jest uwzględniana wtedy, oraz {{Code|nil}} i {{Code|true}}, które oznaczają to samo, w tym jeżeli ona jest uwzględniana, wtedy jest brany parametr pierwszy dziecka, który musi istnieć przy takiej wartości tego parametru, tzn. {{Code|{{m|Pudełko|Nazwa przestrzeni nazw|Szablon}}}}, a nazwa uzyskana nazwy przestrzeni nazw jest w takim przypadku błędna, a jeżeli nazwa domyślna jest błędna, czyli {{Code|{{m|Pudełko|Nazwa przestrzeni nazw|Moja przestrzeń}}}}, wtedy funkcja zwraca stan błędu {{Code|(błąd)}}. * {{Code|i}} - numer zmiennej nazwy przestrzeni nazw. Funkcja wykorzystuje {{Code|{{sr|#p.Nazwa_przestrzeni_nazw(frame,...)|p=Pudełko/Pomocne}}}} do wyznaczania ogólnego nazwy przestrzeni nazw dla pozycji bazowej i numerkowej, tzn. dla pozycji: jeden, dwa, trzy,..., itd, i ich ogólnej. Parametry ramki tablicy transportu dziecka: * {{Code|nazwa przestrzeni nazw}}, {{Code|nazwa przestrzeni nazw 1}}, {{Code|nazwa przestrzeni nazw 2}}, {{Code|nazwa przestrzeni nazw 3}},..., {{Code|nazwa przestrzeni nazw i}} - nazwy przestrzeni nazw dla pozycji bazowej, numerkowej i ogólnej, * {{Code|typ jednostki}}, {{Code|typ jednostki 1}}, {{Code|typ jednostki 2}}, {{Code|typ jednostki 3}},..., {{Code|typ jednostki i}} - typy jednostek, którym odpowiadają pewne przestrzenie przedmiotowe, dla pozycji bazowej, numerkowej i ogólnej, ** {{Code|dyskusja typu jednostki}}, {{Code|dyskusja typu jednostki 1}}, {{Code|dyskusja typ jednostki 2}}, {{Code|dyskusja typ jednostki 3}},..., {{Code|dyskusja typ jednostki i}} - czy dany typ jednostki ma przedstawiać, jeśli niepusta, przestrzeń dyskusji dla pozycji bazowej, numerkowej i ogólnej, * {{Code|numer jednostki}} - jak parametr {{Code|i}} nie został ustawiony, to wtedy liczy się ta zmienna. Parametr ramki tablicy transportu rodzica szablonu: * {{Code|nazwa przestrzeni nazw}}, {{Code|nazwa przestrzeni nazw 1}}, {{Code|nazwa przestrzeni nazw 2}}, {{Code|nazwa przestrzeni nazw 3}},..., {{Code|nazwa przestrzeni nazw i}} - nazwy przestrzeni nazw dla pozycji bazowej oraz zwykłej i ogólnej numerkowej, * {{Code|typ jednostki}}, {{Code|typ jednostki 1}}, {{Code|typ jednostki 2}}, {{Code|typ jednostki 3}},..., {{Code|typ jednostki i}} - typy jednostek, którym odpowiadają pewne przestrzenie przedmiotowe, dla pozycji bazowej, numerkowej i ogólnej, ** {{Code|dyskusja typu jednostki}}, {{Code|dyskusja typu jednostki 1}}, {{Code|dyskusja typ jednostki 2}}, {{Code|dyskusja typ jednostki 3}},..., {{Code|dyskusja typ jednostki i}} - czy dany typ jednostki ma przedstawiać, jeśli niepusta, przestrzeń dyskusji dla pozycji bazowej, numerkowej i ogólnej. Przykłady: <syntaxhighlight lang="mediawiki"> {{Nazwa szablonu|nazwa przestrzeni nazw=Wikibooks|nazwa przestrzeni nazw 2=Szablon|nazwa przestrzeni nazw i=Moduł}} </syntaxhighlight> W dziecku powiedzmy jest wywołanie, i szukamy nazwy przestrzeni nazw o numerze dwa, która nie została podana, ale istnieje za to jej wersji ogólna {{Code|nazwa przestrzeni nazw i}} i domyślna {{Code|nazwa przestrzeni nazw}}: <syntaxhighlight lang="mediawiki"> {{#invoke:Pudełko|Nazwa przestrzeni nazw|numer jednostki=1}} </syntaxhighlight> Na podstawie powyższego przykładu otrzymamy wynik o schemacie, nie wyniku, bo tam nie ma zmiennej {{Code|nazwa przestrzeni nazw 1}}, ale jest {{Code|nazwa przestrzeni nazw i}}: <syntaxhighlight lang="mediawiki"> <!-- Ale nie "nazwa przestrzeni nazw", bo jej nie ma, ale za to istnieje "nazwa przestrzeni nazw i"; --> <!-- nazwa przestrzeni nazw 2=nazwa przestrzeni nazw i=Moduł; --> <!-- Czyli wynik: --> Moduł <!-- Widzimy, że wygenerowała się nazwa przestrzeni nazw, którą jest przestrzeń programowa, którą również jest "Szablon"; --> </syntaxhighlight> Nie jest brana w tym powyższym przykładzie zmienna {{Code|nazwa przestrzeni nazw}}, bo jej nie ma, ale za to jest {{Code|nazwa przestrzeni nazw i}}, bo ona występuje jako parametr domyślny ogólny dla parametrów numerkowych. Przykłady w wikikodzie: * {{Code|{{m|Pudełko|Nazwa przestrzeni nazw|numer jednostki{{=}}2}}}} → {{Tt|{{#invoke:Pudełko|Nazwa przestrzeni nazw|numer jednostki=2}}}} * {{Code|{{m|Pudełko|Nazwa przestrzeni nazw|Szablon|nazwa przestrzeni nazw i{{=}}Moja przestrzeń|numer jednostki{{=}}2}}}} → {{Tt|{{#invoke:Pudełko|Nazwa przestrzeni nazw|Szablon|nazwa przestrzeni nazw i=Moja przestrzeń|numer jednostki=2}}}} * {{Code|{{m|Pudełko|Nazwa przestrzeni nazw|nazwa przestrzeni nazw 2{{=}}Szablon|numer jednostki{{=}}2}}}} → {{Tt|{{#invoke:Pudełko|Nazwa przestrzeni nazw|nazwa przestrzeni nazw 2=Szablon|numer jednostki=2}}}} * {{Code|{{m|Pudełko|Nazwa przestrzeni nazw|nazwa przestrzeni nazw 2{{=}}Szablon|numer jednostki{{=}}2}}}} → {{Tt|{{#invoke:Pudełko|Nazwa przestrzeni nazw|nazwa przestrzeni nazw i=Szablon|numer jednostki=2}}}} * {{Code|{{m|Pudełko|Nazwa przestrzeni nazw|nazwa przestrzeni nazw{{=}}Szablon|numer jednostki{{=}}2}}}} → {{Tt|{{#invoke:Pudełko|Nazwa przestrzeni nazw|nazwa przestrzeni nazw=Szablon|numer jednostki=2}}}} Powyżej dla przykładu podano parametry nie w rodzicu w szablonie, tylko w dziecku, jeśli chodzi o parametry nazw przestrzeni nazw, ale ich się za to nie powinno podawać w tych ramach, tylko w szablonach, w których wywoływane są te ramki pudełek {{Code|{{m|Pudełko}}}}, ale tak tutaj tak zrobiono by było najłatwiej sprawdzić działanie tego typu funkcji. Analogicznie możemy podawać parametry typu jednostki, np.: wywołaniu modułowym {{Code|{{m|Pudełko|Nazwa przestrzeni nazw|typ jednostki 2{{=}}strona szablonu|numer jednostki{{=}}2}}}}, ale o tym więcej w rozdziałach {{Code|{{sr|# p["Typ jednostki"](frame,i)|p=Pudełko}}}}, {{Code|{{sr|#p["Typ jednostki 2"](frame,i)|p=Pudełko}}}}, {{Code|{{sr|#p["Typ jednostki 3"](frame,i)|p=Pudełko}}}} itp. w „{{sr|#Funkcje typu jednostki|p=Pudełko}}”, on definiuje przestrzenie przedmiotowe, ale można użyć parametru dyskusji typu jednostki z wartością niepustą, wtedy wyświetli się nazwa przestrzeni nazw dyskusji. Również parametry typu jednostki nie powinno się podawać w dziecku w ramce, tylko w rodzicu w szablonie jako parametry, w którym ta ramka jest wywoływana, ale tutaj podano jedynie dla przykładu, jak najłatwiej sprawdzić działanie tych parametrów tej funkcji. Najpierw w funkcji nagłówku brane są parametry nazw przestrzeni nazw, a jeżeli ich nie ma, to parametry typu jednostki, a jeżeli nie ma, to generowane są nazwy na podstawie aktualnego modułu. === {{Code|p["Nazwa przedmiotowej przestrzeni nazw"](frame,...)}} === Funkcja pisze przedmiotową nazwę przestrzeni nazw jakikolwiek nazwy przestrzeni nazw (tzn. nazwę przedmiotową nazwy przestrzenie nazw, czyli nie dyskusji, zamieniana jest na nią samą, czyli identyfikator przestrzeni się nie zmienia, a dyskusji, nie przedmiotową, przekształca się na przedmiotową jej odpowiadającą, czyli w tym przypadku identyfikator przestrzeni zmniejsza się o numer mniej), według podanej w zmiennej {{Code|nazwa przestrzeni nazw}} dla pozycja bazowej w podanych parametrach szablonu rodzicu ramki dziecka, lub dla innej pozycji należy parametr podawać w formie {{Code|nazwa przestrzeni nazw 1}}, {{Code|nazwa przestrzeni nazw 2}}, {{Code|nazwa przestrzeni nazw 3}},..., lub te parametry można podać w postaci ogólnej {{Code|nazwa przestrzeni nazw i}}. Parametry podaje się w parametrach rodzica wywołania tej funkcji {{Code|{{m|Pudełko|Nazwa przedmiotowej przestrzeni nazw}}}} (ale ich nie trzeba podawać w dziecku, ale można) i w parametrach dziecka, jeśli chodzi o zmienną {{Code|numer jednostki}}, czyli np.: {{Code|{{m|Pudełko|Nazwa przedmiotowej przestrzeni nazw|numer jednostki{{=}}<jakaś liczba całkowita dodatnia>}}}}. Te parametry przestrzenne zamiast w rodzicu w szablonie można podać w ramce dziecka, wtedy parametry dziecka mają pierwszeństwo. Parametry przestrzenne mogą mogą być podane w postaci przestrzeni przedmiotowej lub dyskusji, ale ta funkcja zawsze ją zamienia na przedmiotową. Przestrzeń nazw z parametrów nazw przestrzennych może odpowiadać wartości przestrzeni głównej, to wtedy odpowiednia przestrzeń nazw z parametru nazwy jednostki się nie liczy w tej funkcji, aby się liczyła należy użyć funkcji {{Code|{{sr|#p["Nazwa przedmiotowej przestrzeni nazw 2"](frame,...)|p=Pudełko}}}}. Definicja skrótowa funkcji: <syntaxhighlight lang="lua"> p["Nazwa przedmiotowej przestrzeni nazw"]=function(frame,czy_uwzglednic_alternatywna_nazwe,i)...end; </syntaxhighlight> Wtedy ciało funkcji tej, czyli jego definicja w środku, jest: <syntaxhighlight lang="lua"> -- Jest liczony numer parametru nazwy przestrzeni nazw, domyslnie chodzi tu o numer bazowy parametrów przestrzennych; local numer_jednostki=i or frame.args["numer jednostki"]; local liczba_numer_jednostki=((numer_jednostki)and(tonumber(numer_jednostki))or 0); local pudelko_pomocne_modul=require("Module:Pudełko/Pomocne"); -- Liczy nazwę przestrzeni nazw przedmiotową na podstawie podanych parametrów; return pudelko_pomocne_modul.Nazwa_przestrzeni_nazw(frame,1, czy_uwzglednic_alternatywna_nazwe,liczba_numer_jednostki); </syntaxhighlight> Parametry funkcji: * {{Code|frame}} - tablica ramki tablicy transportu, * {{Code|czy_uwzglednic_alternatywna_nazwe}} - czy ma uwzględniać nazwę przestrzeni nazw domyślną szablonu, dostępne wartości: {{Code|false}}, w której nazwa domyślna nie jest uwzględniana wtedy, oraz {{Code|nil}} i {{Code|true}}, które oznaczają to samo, w tym jeżeli ona jest uwzględniana, wtedy jest brany parametr pierwszy dziecka, który musi istnieć przy takiej wartości tego parametru, tzn. {{Code|{{m|Pudełko|Nazwa przedmiotowej przestrzeni nazw|Dyskusja szablonu}}}} - ta nazwa domyślna zostanie zamieniona na przedmiotową, a jak ona by była przedmiotowa, to żadnej zamiany by nie było, a nazwa uzyskana z nazwy przestrzeni nazw z parametrów przestrzennych jest w takim przypadku błędna, to w takim razie brany jest ten parametr, a jeżeli ta nazwa domyślna jest błędna, czyli {{Code|{{m|Pudełko|Nazwa przedmiotowej przestrzeni nazw|Moja przestrzeń}}}}, wtedy funkcja zwraca stan błędu {{Code|(błąd)}}. * {{Code|i}} - numer zmiennej nazwy przestrzeni nazw. Funkcja wykorzystuje {{Code|{{sr|#p.Nazwa_przestrzeni_nazw(frame,...)|p=Pudełko/Pomocne}}}} do wyznaczania ogólnego nazwy przestrzeni nazw dla pozycji bazowej i numerkowej, tzn. dla pozycji: jeden, dwa, trzy,..., itd, i ich ogólnej. Parametry ramki tablicy transportu dziecka: * {{Code|nazwa przestrzeni nazw}}, {{Code|nazwa przestrzeni nazw 1}}, {{Code|nazwa przestrzeni nazw 2}}, {{Code|nazwa przestrzeni nazw 3}},..., {{Code|nazwa przestrzeni nazw i}} - nazwy przestrzeni nazw dla pozycji bazowej, numerkowej i ogólnej, * {{Code|typ jednostki}}, {{Code|typ jednostki 1}}, {{Code|typ jednostki 2}}, {{Code|typ jednostki 3}},..., {{Code|typ jednostki i}} - typy jednostek, którym odpowiadają pewne przestrzenie przedmiotowe, dla pozycji bazowej, numerkowej i ogólnej, ** {{Code|dyskusja typu jednostki}}, {{Code|dyskusja typu jednostki 1}}, {{Code|dyskusja typ jednostki 2}}, {{Code|dyskusja typ jednostki 3}},..., {{Code|dyskusja typ jednostki i}} - czy dany typ jednostki ma przedstawiać, jeśli niepusta, przestrzeń dyskusji dla pozycji bazowej, numerkowej i ogólnej, * {{Code|numer jednostki}} - jak parametr {{Code|i}} nie został ustawiony, to wtedy liczy się ta zmienna. Parametr ramki tablicy transportu rodzica szablonu: * {{Code|nazwa przestrzeni nazw}}, {{Code|nazwa przestrzeni nazw 1}}, {{Code|nazwa przestrzeni nazw 2}}, {{Code|nazwa przestrzeni nazw 3}},..., {{Code|nazwa przestrzeni nazw i}} - nazwy przestrzeni nazw dla pozycji bazowej oraz zwykłej i ogólnej numerkowej, * {{Code|typ jednostki}}, {{Code|typ jednostki 1}}, {{Code|typ jednostki 2}}, {{Code|typ jednostki 3}},..., {{Code|typ jednostki i}} - typy jednostek, którym odpowiadają pewne przestrzenie przedmiotowe, dla pozycji bazowej, numerkowej i ogólnej, ** {{Code|dyskusja typu jednostki}}, {{Code|dyskusja typu jednostki 1}}, {{Code|dyskusja typ jednostki 2}}, {{Code|dyskusja typ jednostki 3}},..., {{Code|dyskusja typ jednostki i}} - czy dany typ jednostki ma przedstawiać, jeśli niepusta, przestrzeń dyskusji dla pozycji bazowej, numerkowej i ogólnej. Przykłady: <syntaxhighlight lang="mediawiki"> {{Nazwa szablonu|nazwa przestrzeni nazw=Dyskusja Wikibooks|nazwa przestrzeni nazw 2=Dyskusja szablonu|nazwa przestrzeni nazw i=Dyskusja modułu}} </syntaxhighlight> W dziecku powiedzmy jest wywołanie, i szukamy nazwy przestrzeni nazw o numerze dwa, która nie została podana, ale istnieje za to jej wersji ogólna {{Code|nazwa przestrzeni nazw i}} i domyślna {{Code|nazwa przestrzeni nazw}}: <syntaxhighlight lang="mediawiki"> {{#invoke:Pudełko|Nazwa przedmiotowej przestrzeni nazw|numer jednostki=1}} </syntaxhighlight> Na podstawie powyższego przykładu otrzymamy wynik o schemacie, nie wyniku, bo tam nie ma zmiennej {{Code|nazwa przestrzeni nazw 1}}, ale jest {{Code|nazwa przestrzeni nazw i}}: <syntaxhighlight lang="mediawiki"> <!-- Ale nie "nazwa przestrzeni nazw", bo jej nie ma, ale za to istnieje "nazwa przestrzeni nazw i"; --> <!-- nazwa przestrzeni nazw 2=nazwa przestrzeni nazw i=Dyskusja modułu; --> <!-- Czyli wynik: --> Moduł <!-- Widzimy, że wygenerowała się nazwa przestrzeni nazw, którą jest przestrzeń przedmiotowa programowa przestrzeni dyskusji "Dyskusja modułu", którą również jest "Szablon" jego przestrzeni dyskusji "Dyskusja szablonu", a dla ich przestrzeni przedmiotowej, zamiast dyskusji, to samo przekształca się na to samo; --> </syntaxhighlight> Nie jest brana w tym powyższym przykładzie zmienna {{Code|nazwa przestrzeni nazw}}, bo jej nie ma, ale za to jest {{Code|nazwa przestrzeni nazw i}}, bo ona występuje jako parametr domyślny ogólny dla parametrów numerkowych. Przykłady w wikikodzie: * {{Code|{{m|Pudełko|Nazwa przedmiotowej przestrzeni nazw|numer jednostki{{=}}2}}}} → {{Tt|{{#invoke:Pudełko|Nazwa przedmiotowej przestrzeni nazw|numer jednostki=2}}}} * {{Code|{{m|Pudełko|Nazwa przedmiotowej przestrzeni nazw|Dyskusja szablonu|nazwa przestrzeni nazw i{{=}}Moja przestrzeń|numer jednostki{{=}}2}}}} → {{Tt|{{#invoke:Pudełko|Nazwa przedmiotowej przestrzeni nazw|Dyskusja szablonu|nazwa przestrzeni nazw i=Moja przestrzeń|numer jednostki=2}}}} * {{Code|{{m|Pudełko|Nazwa przedmiotowej przestrzeni nazw|nazwa przestrzeni nazw 2{{=}}Dyskusja szablonu|numer jednostki{{=}}2}}}} → {{Tt|{{#invoke:Pudełko|Nazwa przedmiotowej przestrzeni nazw|nazwa przestrzeni nazw 2=Dyskusja szablonu|numer jednostki=2}}}} * {{Code|{{m|Pudełko|Nazwa przedmiotowej przestrzeni nazw|nazwa przestrzeni nazw 2{{=}}Dyskusja szablonu|numer jednostki{{=}}2}}}} → {{Tt|{{#invoke:Pudełko|Nazwa przedmiotowej przestrzeni nazw|nazwa przestrzeni nazw i=Dyskusja szablonu|numer jednostki=2}}}} * {{Code|{{m|Pudełko|Nazwa przedmiotowej przestrzeni nazw|nazwa przestrzeni nazw{{=}}Dyskusja szablonu|numer jednostki{{=}}2}}}} → {{Tt|{{#invoke:Pudełko|Nazwa przedmiotowej przestrzeni nazw|nazwa przestrzeni nazw=Dyskusja szablonu|numer jednostki=2}}}} Powyżej dla przykładu podano parametry nie w rodzicu w szablonie, tylko w dziecku, jeśli chodzi o parametry nazw przestrzeni nazw, ale ich się za to nie powinno podawać w tych ramach, tylko w szablonach, w których wywoływane są te ramki pudełek {{Code|{{m|Pudełko}}}}, ale tak tutaj tak zrobiono by było najłatwiej sprawdzić działanie tego typu funkcji. Analogicznie możemy podawać parametry typu jednostki, np.: wywołaniu modułowym {{Code|{{m|Pudełko|Nazwa przedmiotowej przestrzeni nazw|typ jednostki 2{{=}}strona szablonu|numer jednostki{{=}}2}}}}, ale o tym więcej w rozdziałach {{Code|{{sr|# p["Typ jednostki"](frame,i)|p=Pudełko}}}}, {{Code|{{sr|#p["Typ jednostki 2"](frame,i)|p=Pudełko}}}}, {{Code|{{sr|#p["Typ jednostki 3"](frame,i)|p=Pudełko}}}} itp. w „{{sr|#Funkcje typu jednostki|p=Pudełko}}”, ale wtedy ta sama nazwa przestrzeni nazw reprezentowana przez {{Parametr|typ jednostki 2|strona szablonu}}, jest zamieniana na to samo, lepiej jest tutaj używać parametrów przestrzennych nazw niż typu jednostki, bo typ jednostki ma taką samą wartość dla przestrzeni przedmiotowej, co dyskusji. Tutaj parametr dyskusji typu jednostki bazowy i numerkowy ogólny, czy szczegółowy, nie gra roli, bo nawet, gdy wygenerujemy nazwę przestrzeni dyskusji za pomoca tego parametru, to i tak otrzymamy na samym końcu jego nazwę przedmiotową. Również parametry typu jednostki nie powinno się podawać w dziecku w ramce, tylko w rodzicu w szablonie jako parametry, w którym ta ramka jest wywoływana, ale tutaj podano jedynie dla przykładu, jak najłatwiej sprawdzić działanie tych parametrów tej funkcji. Najpierw w funkcji nagłówku brane są parametry nazw przestrzeni nazw, a jeżeli ich nie ma, to parametry typu jednostki, a jeżeli nie ma, to generowane są nazwy na podstawie aktualnego modułu. === {{Code|p["Nazwa przestrzeni nazw dyskusji"](frame,...)}} === Funkcja pisze nazwę przestrzeni nazw dyskusji jakikolwiek nazwy przestrzeni nazw (tzn. nazwę przedmiotową nazwy przestrzenie nazw, czyli nie dyskusji, zamieniana jest na dyskusji, czyli identyfikator przestrzeni się zmienia jeden wyżej, a dyskusji, nie przedmiotową, przekształca się na tą samą), według podanej w zmiennej {{Code|nazwa przestrzeni nazw}} dla pozycja bazowej w podanych parametrach szablonu rodzicu ramki dziecka, lub dla innej pozycji należy parametr podawać w formie {{Code|nazwa przestrzeni nazw 1}}, {{Code|nazwa przestrzeni nazw 2}}, {{Code|nazwa przestrzeni nazw 3}},..., lub te parametry można podać w postaci ogólnej {{Code|nazwa przestrzeni nazw i}}. Parametry podaje się w parametrach rodzica wywołania tej funkcji {{Code|{{m|Pudełko|Nazwa przestrzeni nazw dyskusji}}}} (ale ich nie trzeba podawać w dziecku, ale można) i w parametrach dziecka, jeśli chodzi o zmienną {{Code|numer jednostki}}, czyli np.: {{Code|{{m|Pudełko|Nazwa przestrzeni nazw dyskusji|numer jednostki{{=}}<jakaś liczba całkowita dodatnia>}}}}. Te parametry przestrzenne zamiast w rodzicu w szablonie można podać w ramce dziecka, wtedy parametry dziecka mają pierwszeństwo. Parametry przestrzenne mogą mogą być podane w postaci przestrzeni przedmiotowej lub dyskusji, ale ta funkcja zawsze ją zamienia na dyskusji. Przestrzeń nazw z parametrów nazw przestrzennych może odpowiadać wartości przestrzeni głównej, to wtedy odpowiednia przestrzeń nazw z parametru nazwy jednostki się nie liczy w tej funkcji, aby się liczyła należy użyć funkcji {{Code|{{sr|#p["Nazwa przestrzeni nazw dyskusji 2"](frame,...)|p=Pudełko}}}}. Definicja skrótowa funkcji: <syntaxhighlight lang="lua"> p["Nazwa przestrzeni nazw dyskusji"]=function(frame,czy_uwzglednic_alternatywna_nazwe,i)...end; </syntaxhighlight> Wtedy ciało funkcji tej, czyli jego definicja w środku, jest: <syntaxhighlight lang="lua"> -- Jest liczony numer parametru nazwy przestrzeni nazw, domyslnie chodzi tu o numer bazowy parametrów przestrzennych; local numer_jednostki=i or frame.args["numer jednostki"]; local liczba_numer_jednostki=((numer_jednostki)and(tonumber(numer_jednostki))or 0); local pudelko_pomocne_modul=require("Module:Pudełko/Pomocne"); -- Liczy nazwę przestrzeni nazw dyskusji na podstawie podanych parametrów; return pudelko_pomocne_modul.Nazwa_przestrzeni_nazw(frame,2, czy_uwzglednic_alternatywna_nazwe,liczba_numer_jednostki); </syntaxhighlight> Parametry funkcji: * {{Code|frame}} - tablica ramki tablicy transportu, * {{Code|czy_uwzglednic_alternatywna_nazwe}} - czy ma uwzględniać nazwę przestrzeni nazw domyślną szablonu, dostępne wartości: {{Code|false}}, w której nazwa domyślna nie jest uwzględniana wtedy, oraz {{Code|nil}} i {{Code|true}}, które oznaczają to samo, w tym jeżeli ona jest uwzględniana, wtedy jest brany parametr pierwszy dziecka, który musi istnieć przy takiej wartości tego parametru, tzn. {{Code|{{m|Pudełko|Nazwa przestrzeni nazw dyskusji|Szablon}}}} - ta nazwa domyślna zostanie przekształcona na dyskusji, a jeżeli ona by była dyskusji, to nie byłoby żadnego przekształcenia, a nazwa uzyskana nazwy przestrzeni nazw z parametrów przestrzennych jest w takim przypadku błędna, to w takim razie brany jest ten parametr, a jeżeli nazwa domyślna jest błędna, czyli {{Code|{{m|Pudełko|Nazwa przestrzeni nazw dyskusji|Moja przestrzeń}}}}, wtedy funkcja zwraca stan błędu {{Code|(błąd)}}. * {{Code|i}} - numer zmiennej nazwy przestrzeni nazw. Funkcja wykorzystuje {{Code|{{sr|#p.Nazwa_przestrzeni_nazw(frame,...)|p=Pudełko/Pomocne}}}} do wyznaczania ogólnego nazwy przestrzeni nazw dla pozycji bazowej i numerkowej, tzn. dla pozycji: jeden, dwa, trzy,..., itd, i ich ogólnej. Parametry ramki tablicy transportu dziecka: * {{Code|nazwa przestrzeni nazw}}, {{Code|nazwa przestrzeni nazw 1}}, {{Code|nazwa przestrzeni nazw 2}}, {{Code|nazwa przestrzeni nazw 3}},..., {{Code|nazwa przestrzeni nazw i}} - nazwy przestrzeni nazw dla pozycji bazowej, numerkowej i ogólnej, * {{Code|typ jednostki}}, {{Code|typ jednostki 1}}, {{Code|typ jednostki 2}}, {{Code|typ jednostki 3}},..., {{Code|typ jednostki i}} - typy jednostek, którym odpowiadają pewne przestrzenie przedmiotowe, dla pozycji bazowej, numerkowej i ogólnej, ** {{Code|dyskusja typu jednostki}}, {{Code|dyskusja typu jednostki 1}}, {{Code|dyskusja typ jednostki 2}}, {{Code|dyskusja typ jednostki 3}},..., {{Code|dyskusja typ jednostki i}} - czy dany typ jednostki ma przedstawiać, jeśli niepusta, przestrzeń dyskusji dla pozycji bazowej, numerkowej i ogólnej, * {{Code|numer jednostki}} - jak parametr {{Code|i}} nie został ustawiony, to wtedy liczy się ta zmienna. Parametr ramki tablicy transportu rodzica szablonu: * {{Code|nazwa przestrzeni nazw}}, {{Code|nazwa przestrzeni nazw 1}}, {{Code|nazwa przestrzeni nazw 2}}, {{Code|nazwa przestrzeni nazw 3}},..., {{Code|nazwa przestrzeni nazw i}} - nazwy przestrzeni nazw dla pozycji bazowej oraz zwykłej i ogólnej numerkowej, * {{Code|typ jednostki}}, {{Code|typ jednostki 1}}, {{Code|typ jednostki 2}}, {{Code|typ jednostki 3}},..., {{Code|typ jednostki i}} - typy jednostek, którym odpowiadają pewne przestrzenie przedmiotowe, dla pozycji bazowej, numerkowej i ogólnej, ** {{Code|dyskusja typu jednostki}}, {{Code|dyskusja typu jednostki 1}}, {{Code|dyskusja typ jednostki 2}}, {{Code|dyskusja typ jednostki 3}},..., {{Code|dyskusja typ jednostki i}} - czy dany typ jednostki ma przedstawiać, jeśli niepusta, przestrzeń dyskusji dla pozycji bazowej, numerkowej i ogólnej. Przykłady: <syntaxhighlight lang="mediawiki"> {{Nazwa szablonu|nazwa przestrzeni nazw=Wikibooks|nazwa przestrzeni nazw 2=Szablon|nazwa przestrzeni nazw i=Moduł}} </syntaxhighlight> W dziecku powiedzmy jest wywołanie, i szukamy nazwy przestrzeni nazw o numerze dwa, która nie została podana, ale istnieje za to jej wersji ogólna {{Code|nazwa przestrzeni nazw i}} i domyślna {{Code|nazwa przestrzeni nazw}}: <syntaxhighlight lang="mediawiki"> {{#invoke:Pudełko|Nazwa przestrzeni nazw dyskusji|numer jednostki=1}} </syntaxhighlight> Na podstawie powyższego przykładu otrzymamy wynik o schemacie, nie wyniku, bo tam nie ma zmiennej {{Code|nazwa przestrzeni nazw 1}}, ale jest {{Code|nazwa przestrzeni nazw i}}: <syntaxhighlight lang="mediawiki"> <!-- Ale nie "nazwa przestrzeni nazw", bo jej nie ma, ale za to istnieje "nazwa przestrzeni nazw i"; --> <!-- nazwa przestrzeni nazw 2=nazwa przestrzeni nazw i=Moduł; --> <!-- Czyli wynik: --> Dyskusja modułu <!-- Widzimy, że wygenerowała się nazwa przestrzeni nazw, którą jest przestrzeń dyskusji przestrzeni programowej przestrzeni przedmiotowej "Moduł", którą również jest "Szablon" jego przestrzeni dyskusji "Dyskusja szablonu", a dla ich przestrzeni przedmiotowej, zamiast dyskusji, to przekształca się na dyskusji jej odpowiadającą; --> </syntaxhighlight> Nie jest brana w tym powyższym przykładzie zmienna {{Code|nazwa przestrzeni nazw}}, bo jej nie ma, ale za to jest {{Code|nazwa przestrzeni nazw i}}, bo ona występuje jako parametr domyślny ogólny dla parametrów numerkowych. Przykłady w wikikodzie: * {{Code|{{m|Pudełko|Nazwa przestrzeni nazw dyskusji|numer jednostki{{=}}2}}}} → {{Tt|{{#invoke:Pudełko|Nazwa przestrzeni nazw dyskusji|numer jednostki=2}}}} * {{Code|{{m|Pudełko|Nazwa przestrzeni nazw dyskusji|Szablon|nazwa przestrzeni nazw i{{=}}Moja przestrzeń|numer jednostki{{=}}2}}}} → {{Tt|{{#invoke:Pudełko|Nazwa przestrzeni nazw dyskusji|Szablon|nazwa przestrzeni nazw i=Moja przestrzeń|numer jednostki=2}}}} * {{Code|{{m|Pudełko|Nazwa przestrzeni nazw dyskusji|nazwa przestrzeni nazw 2{{=}}Szablon|numer jednostki{{=}}2}}}} → {{Tt|{{#invoke:Pudełko|Nazwa przestrzeni nazw dyskusji|nazwa przestrzeni nazw 2=Szablon|numer jednostki=2}}}} * {{Code|{{m|Pudełko|Nazwa przestrzeni nazw dyskusji|nazwa przestrzeni nazw 2{{=}}Szablon|numer jednostki{{=}}2}}}} → {{Tt|{{#invoke:Pudełko|Nazwa przestrzeni nazw dyskusji|nazwa przestrzeni nazw i=Szablon|numer jednostki=2}}}} * {{Code|{{m|Pudełko|Nazwa przestrzeni nazw dyskusji|nazwa przestrzeni nazw{{=}}Szablon|numer jednostki{{=}}2}}}} → {{Tt|{{#invoke:Pudełko|Nazwa przestrzeni nazw dyskusji|nazwa przestrzeni nazw=Szablon|numer jednostki=2}}}} Powyżej dla przykładu podano parametry nie w rodzicu w szablonie, tylko w dziecku, jeśli chodzi o parametry nazw przestrzeni nazw, ale ich się za to nie powinno podawać w tych ramach, tylko w szablonach, w których wywoływane są te ramki pudełek {{Code|{{m|Pudełko}}}}, ale tak tutaj tak zrobiono by było najłatwiej sprawdzić działanie tego typu funkcji. Analogicznie możemy podawać parametry typu jednostki, np.: wywołaniu modułowym {{Code|{{m|Pudełko|Nazwa przestrzeni nazw dyskusji|typ jednostki 2{{=}}strona szablonu|numer jednostki{{=}}2}}}}, ale o tym więcej w rozdziałach {{Code|{{sr|# p["Typ jednostki"](frame,i)|p=Pudełko}}}}, {{Code|{{sr|#p["Typ jednostki 2"](frame,i)|p=Pudełko}}}}, {{Code|{{sr|#p["Typ jednostki 3"](frame,i)|p=Pudełko}}}} itp. w „{{sr|#Funkcje typu jednostki|p=Pudełko}}”, ale wtedy nazwa przestrzeni nazw reprezentowana przez {{Parametr|typ jednostki 2|strona szablonu}}, jest zamieniana na nazwę przestrzeni nazw dyskusji. Parametr dyskusji typu jednostki bazowy lub dla danego numerka ogólny, czy szczegółowy, nie gra roli. Również parametry typu jednostki nie powinno się podawać w dziecku w ramce, tylko w rodzicu w szablonie jako parametry, w którym ta ramka jest wywoływana, ale tutaj podano jedynie dla przykładu, jak najłatwiej sprawdzić działanie tych parametrów tej funkcji. Najpierw w funkcji nagłówku brane są parametry nazw przestrzeni nazw, a jeżeli ich nie ma, to parametry typu jednostki, a jeżeli nie ma, to generowane są nazwy na podstawie aktualnego modułu. == Funkcje nazw przestrzeni nazw drugiej wersji == === {{Code|p["Nazwa przestrzeni nazw 2"](frame,...)}} === Funkcja pisze nazwę przestrzeni nazw, niezależnie, czy to jest przedmiotowa, czy dyskusji, według podanej w zmiennej {{Code|nazwa przestrzeni nazw}} dla pozycja bazowej w podanych parametrach szablonu rodzicu ramki dziecka, lub dla innej pozycji należy parametr podawaćw formie {{Code|nazwa przestrzeni nazw 1}}, {{Code|nazwa przestrzeni nazw 2}}, {{Code|nazwa przestrzeni nazw 3}},..., lub te parametry można podać w postaci ogólnej {{Code|nazwa przestrzeni nazw i}}. W tej funkcji trzeba też podawać parametry nazwy jednostek {{Code|nazwa jednostki}}, {{Code|nazwa jednostki 1}}, {{Code|nazwa jednostki 2}}, {{Code|nazwa jednostki 3}},... Parametry podaje się w parametrach rodzica wywołania tej funkcji {{Code|{{m|Pudełko|Nazwa przestrzeni nazw 2}}}} (ale ich nie trzeba podawać w dziecku, ale można) i w parametrach dziecka, jeśli chodzi o zmienną {{Code|numer jednostki}}, czyli np.: {{Code|{{m|Pudełko|Nazwa przestrzeni nazw 2|numer jednostki{{=}}<jakaś liczba całkowita dodatnia>}}}}. Te parametry przestrzenne zamiast w rodzicu w szablonie można podać w ramce dziecka, wtedy parametry dziecka mają pierwszeństwo. Przestrzeń nazw z parametrów nazw przestrzennych może odpowiadać wartości przestrzeni głównej, to wtedy odpowiednia przestrzeń nazw z parametru nazwy jednostki się liczy w tej funkcji, wtedy jest liczona nazwa przestrzeni nazw z tego parametru. Gdy parametry przestrzenne lub typ jednostki w drugim podejściu nie wskazują na przestrzeń główną, to wtedy działanie tej funkcji jest podobne do {{Code|{{sr|#p["Nazwa przestrzeni nazw"](frame,...)|p=Pudełko}}}}. Definicja skrótowa funkcji: <syntaxhighlight lang="lua"> p["Nazwa przestrzeni nazw 2"]=function(frame,czy_uwzglednic_alternatywna_nazwe,i)...end; </syntaxhighlight> Wtedy ciało funkcji tej, czyli jego definicja w środku, jest: <syntaxhighlight lang="lua"> local pudelko_pomocne_modul=require("Module:Pudełko/Pomocne"); -- Liczy nazwę przestrzeni nazw, jeżeli z parametrów przestrzennych przestrzeń wskazuje na główną, to wtedy jest liczona przestrzeń nazw z nazwy jednostki; return pudelko_pomocne_modul.Nazwa_przestrzeni_nazw_2(frame,czy_uwzglednic_alternatywna_nazwe,i) </syntaxhighlight> Parametry funkcji: * {{Code|frame}} - tablica ramki tablicy transportu, * {{Code|czy_uwzglednic_alternatywna_nazwe}} - czy ma uwzględniać nazwę przestrzeni nazw domyślną szablonu, dostępne wartości: {{Code|false}}, w której nazwa domyślna nie jest uwzględniana wtedy, oraz {{Code|nil}} i {{Code|true}}, które oznaczają to samo, w tym jeżeli ona jest uwzględniana, wtedy jest brany parametr pierwszy dziecka, który musi istnieć przy takiej wartości tego parametru, tzn. {{Code|{{m|Pudełko|Nazwa przestrzeni nazw 2|Szablon}}}}, a nazwa uzyskana nazwy przestrzeni nazw jest w takim przypadku błędna, a jeżeli nazwa domyślna jest błędna, czyli {{Code|{{m|Pudełko|Nazwa przestrzeni nazw 2|Moja przestrzeń}}}}, wtedy funkcja zwraca stan błędu {{Code|(błąd)}}. * {{Code|i}} - numer zmiennej nazwy przestrzeni nazw. Funkcja wykorzystuje {{Code|{{sr|#p.Nazwa_przestrzeni_nazw_2(frame,...)|p=Pudełko/Pomocne}}}} do wyznaczania ogólnego nazwy przestrzeni nazw dla pozycji bazowej i numerkowej, tzn. dla pozycji: jeden, dwa, trzy,..., itd, i ich ogólnej. Parametry ramki tablicy transportu dziecka: * {{Code|nazwa przestrzeni nazw}}, {{Code|nazwa przestrzeni nazw 1}}, {{Code|nazwa przestrzeni nazw 2}}, {{Code|nazwa przestrzeni nazw 3}},..., {{Code|nazwa przestrzeni nazw i}} - nazwy przestrzeni nazw dla pozycji bazowej, numerkowej i ogólnej, * {{Code|typ jednostki}}, {{Code|typ jednostki 1}}, {{Code|typ jednostki 2}}, {{Code|typ jednostki 3}},..., {{Code|typ jednostki i}} - typy jednostek, którym odpowiadają pewne przestrzenie przedmiotowe, dla pozycji bazowej, numerkowej i ogólnej, ** {{Code|dyskusja typu jednostki}}, {{Code|dyskusja typu jednostki 1}}, {{Code|dyskusja typ jednostki 2}}, {{Code|dyskusja typ jednostki 3}},..., {{Code|dyskusja typ jednostki i}} - czy dany typ jednostki ma przedstawiać, jeśli niepusta, przestrzeń dyskusji dla pozycji bazowej, numerkowej i ogólnej, * {{Code|numer jednostki}} - jak parametr {{Code|i}} nie został ustawiony, to wtedy liczy się ta zmienna. Parametr ramki tablicy transportu rodzica szablonu: * {{Code|nazwa przestrzeni nazw}}, {{Code|nazwa przestrzeni nazw 1}}, {{Code|nazwa przestrzeni nazw 2}}, {{Code|nazwa przestrzeni nazw 3}},..., {{Code|nazwa przestrzeni nazw i}} - nazwy przestrzeni nazw dla pozycji bazowej oraz zwykłej i ogólnej numerkowej, * {{Code|typ jednostki}}, {{Code|typ jednostki 1}}, {{Code|typ jednostki 2}}, {{Code|typ jednostki 3}},..., {{Code|typ jednostki i}} - typy jednostek, którym odpowiadają pewne przestrzenie przedmiotowe, dla pozycji bazowej, numerkowej i ogólnej, ** {{Code|dyskusja typu jednostki}}, {{Code|dyskusja typu jednostki 1}}, {{Code|dyskusja typ jednostki 2}}, {{Code|dyskusja typ jednostki 3}},..., {{Code|dyskusja typ jednostki i}} - czy dany typ jednostki ma przedstawiać, jeśli niepusta, przestrzeń dyskusji dla pozycji bazowej, numerkowej i ogólnej. Przykłady: <syntaxhighlight lang="mediawiki"> {{Nazwa szablonu|nazwa przestrzeni nazw=Wikibooks|nazwa przestrzeni nazw 1=Szablon|nazwa przestrzeni nazw i=|nazwa jednostki 2=Wikibooks:Strona}} </syntaxhighlight> W dziecku powiedzmy jest wywołanie, i szukamy nazwy przestrzeni nazw o numerze dwa, która została podana, ale istnieje za to jej wersji ogólna {{Code|nazwa przestrzeni nazw i}} i domyślna {{Code|nazwa przestrzeni nazw}}, ale wtedy dla tego numerkowego liczy się to ogólne z {{Code| i}}, a ponieważ ta nazwa jest pusta, więc będziemy liczyli nazwę przestrzeni nazw z {{Code|nazwa jednostki 2}}: <syntaxhighlight lang="mediawiki"> {{#invoke:Pudełko|Nazwa przestrzeni nazw 2|numer jednostki=2}} </syntaxhighlight> Na podstawie powyższego przykładu otrzymamy wynik o schemacie, nie wyniku, bo tam nie ma zmiennej {{Code|nazwa przestrzeni nazw 1}}, ale jest {{Code|nazwa przestrzeni nazw i}}: <syntaxhighlight lang="mediawiki"> <!-- Ale nie "nazwa przestrzeni nazw 2", bo jej nie ma, ale za to istnieje "nazwa przestrzeni nazw i"; --> <!-- nazwa przestrzeni nazw 2=nazwa przestrzeni nazw i="", a nazwa jednostki 2="Wikibooks:Strona"; --> <!-- Czyli wynik: --> Wikibooks <!-- Widzimy, że wygenerowała się nazwa przestrzeni nazw, którą jest przestrzeń nieprogramowa, ale projektu, wychodząca z nazwy jednostek w tym przypadku z "nazwa jednostki 2"; --> </syntaxhighlight> Nie jest brana w tym powyższym przykładzie zmienna {{Code|nazwa przestrzeni nazw}}, bo jej nie ma, ale za to jest {{Code|nazwa przestrzeni nazw i}}, bo ona występuje jako parametr domyślny ogólny dla parametrów numerkowych. Tytaj jest używwana jest zmienna {{Code|nazwa jednostki 2}} do wygenerowania ostatecznego wyniki,bo jak mozna zauważyć, parametry przestrzenne wskazują na przestrzeń główną, a nazwy jednostek już nie. Przykłady w wikikodzie: * {{Code|{{m|Pudełko|Nazwa przestrzeni nazw 2|numer jednostki{{=}}2}}}} → {{Tt|{{#invoke:Pudełko|Nazwa przestrzeni nazw 2|numer jednostki=2}}}} * {{Code|{{m|Pudełko|Nazwa przestrzeni nazw 2|Szablon|nazwa przestrzeni nazw i{{=}}Moja przestrzeń|numer jednostki{{=}}2}}}} → {{Tt|{{#invoke:Pudełko|Nazwa przestrzeni nazw 2|Szablon|nazwa przestrzeni nazw i=Moja przestrzeń|numer jednostki=2}}}} * {{Code|{{m|Pudełko|Nazwa przestrzeni nazw 2|nazwa przestrzeni nazw 2{{=}}|nazwa jednostki 2{{=}}Szablon:Strona|numer jednostki{{=}}2}}}} → {{Tt|{{#invoke:Pudełko|Nazwa przestrzeni nazw 2|nazwa przestrzeni nazw 2=|nazwa jednostki 2=Szablon:Strona|numer jednostki=2}}}} * {{Code|{{m|Pudełko|Nazwa przestrzeni nazw 2|nazwa przestrzeni nazw i{{=}}|nazwa jednostki 2{{=}}Szablon:Strona|numer jednostki{{=}}2}}}} → {{Tt|{{#invoke:Pudełko|Nazwa przestrzeni nazw 2|nazwa przestrzeni nazw i=|nazwa jednostki 2=Szablon:Strona|numer jednostki=2}}}} * {{Code|{{m|Pudełko|Nazwa przestrzeni nazw 2|Szablon|nazwa przestrzeni nazw{{=}}|nazwa jednostki 2{{=}}Wikibooks:Strona|numer jednostki{{=}}2}}}} → {{Tt|{{#invoke:Pudełko|Nazwa przestrzeni nazw 2|Szablon|nazwa przestrzeni nazw=|nazwa jednostki 2=Wikibooks:Strona|numer jednostki=2}}}} Powyżej dla przykładu podano parametry nie w rodzicu w szablonie, tylko w dziecku, jeśli chodzi o parametry nazw przestrzeni nazw i nazw jednostek, ale ich się za to nie powinno podawać w tych ramach, tylko w szablonach, w których wywoływane są te ramki pudełek {{Code|{{m|Pudełko}}}}, ale tak tutaj tak zrobiono by było najłatwiej sprawdzić działanie tego typu funkcji. Analogicznie możemy podawać parametry typu jednostki, np.: wywołaniu modułowym {{Code|{{m|Pudełko|Nazwa przestrzeni nazw 2|typ jednostki 2{{=}}Podręcznik|nazwa jednostki 2{{=}}Szablon:Strona|umer jednostki{{=}}2}}}} (ale wtedy jest brana przestrzeń nazw z nazwy jednostki), ale o tym więcej w rozdziałach {{Code|{{sr|# p["Typ jednostki"](frame,i)|p=Pudełko}}}}, {{Code|{{sr|#p["Typ jednostki 2"](frame,i)|p=Pudełko}}}}, {{Code|{{sr|#p["Typ jednostki 3"](frame,i)|p=Pudełko}}}} itp. w „{{sr|#Funkcje typu jednostki|p=Pudełko}}”, on definiuje przestrzenie przedmiotowe, ale można użyć parametru dyskusji typu jednostki z wartością niepustą, wtedy wyświetli się nazwa przestrzeni nazw dyskusji. Jeżeli typ jednostki wskazuje na przestrzeń nazw główną, wtedy się liczą parametry nazw jednostek. Również parametry typu jednostki nie powinno się podawać w dziecku w ramce, tylko w rodzicu w szablonie jako parametry, w którym ta ramka jest wywoływana, ale tutaj podano jedynie dla przykładu, jak najłatwiej sprawdzić działanie tych parametrów tej funkcji. Najpierw w funkcji nagłówku brane są parametry nazw przestrzeni nazw, a jeżeli ich nie ma, to parametry typu jednostki, a jeżeli nie ma lub parametry przestrzenne wskazują na przestrzeń główną, i nie ma nazwy jednostki, to generowane są nazwy tej funkcji na podstawie aktualnej strony. === {{Code|p["Nazwa przedmiotowej przestrzeni nazw 2"](frame,...)}} === === {{Code|p["Nazwa przestrzeni nazw dyskusji 2"](frame,...)}} === == Funkcje pełnych nazw jednostki == === {{Code|p["Pełna nazwa dyskusji jednostki"](frame,i)}} === === {{Code|p["Pełna nazwa przedmiotowa jednostki"](frame,i)}} === === {{Code|p["Pełna nazwa jednostki"](frame,i)}} === == Funkcje pełnych nazw jednostki drugiej wersji == === {{Code|p["Pełna nazwa dyskusji jednostki 2"](frame,i)}} === === {{Code|p["Pełna nazwa przedmiotowa jednostki 2"](frame,i)}} === === {{Code|p["Pełna nazwa jednostki 2"](frame,i)}} === == Funkcje pełnych nazw jednostki trzeciej wersji == === {{Code|p["Pełna nazwa dyskusji jednostki 3"](frame,i)}} === === {{Code|p["Pełna nazwa przedmiotowa jednostki 3"](frame,i)}} === === {{Code|p["Pełna nazwa jednostki 3"](frame,i)}} === == Funkcje nazw jednostki == === {{Code|p["Nazwa jednostki"](frame,i)}} === == Funkcje nazw jednostki drugiej wersji == === {{Code|p["Nazwa jednostki 2"](frame,i)}} === === {{Code|p["Nazwa przedmiotowa jednostki 2"](frame,i)}} === === {{Code|p["Nazwa dyskusji jednostki 2"](frame,i)}} === == Funkcje nazw przestrzeni nazw trzeciej wersji == === {{Code|p["Nazwa przestrzeni nazw 3"](frame,i)}} === === {{Code|p["Nazwa przedmiotowej przestrzeni nazw 3"](frame,i)}} === === {{Code|p["Nazwa przestrzeni nazw dyskusji 3"](frame,i)}} === == Funkcje nazw jednostki trzeciej wersji == === {{Code|p["Nazwa jednostki 3"](frame,i)}} === === {{Code|p["Nazwa przedmiotowa jednostki 3"](frame,i)}} === === {{Code|p["Nazwa dyskusji jednostki 3"](frame,i)}} === == Funkcje typu jednostki == === {{Code|p["Typ jednostki"](frame,i)}} === === {{Code|p["Typ jednostki 2"](frame,i)}} === === {{Code|p["Typ jednostki 3"](frame,i)}} === === Funkcje typu jednostki przedmiotowe === ==== {{Code|p["Przedmiotowy typ jednostki"](frame,i)}} ==== ==== {{Code|p["Przedmiotowy typ jednostki 2"](frame,i)}} ==== ==== {{Code|p["Przedmiotowy typ jednostki 3"](frame,i)}} ==== === Fukcje typu jednostki dyskusji === ==== {{Code|p["Dyskusyjny typ jednostki"](frame,i)}} ==== ==== {{Code|p["Dyskusyjny typ jednostki 2"](frame,i)}}} ==== ==== {{Code|p["Dyskusyjny typ jednostki 3"](frame,i)}} ==== == Funkcje chech pudełka == === {{Code|p["Cecha pudełka"](frame)}} === === {{Code|p["Przedmiotowa cecha pudełka"](frame)}} === === {{Code|p["Dyskusyjna cecha pudełka"](frame)}} === == Fukcje ogólnego pudełka == === {{Code|p["Ogólne pudełko"](frame)}} === == Funkcje ogólne == === {{Code|p["Tekst pudełka"](frame)}} === == Funkcje błędów pudełka == === {{Code|p["Błędy pudełka"](frame)}} === === {{Code|p["Przedmiotowe błędy pudełka"](frame)}} === === {{Code|p["Dyskusyjne błędy pudełka"](frame)}} === == Funkcje nazw stron == === {{Code|p["Nazwa strony głównej projektu"](frame,i)}} === === {{Code|p["Nazwa strony głównej dla dzieci projektu"](frame,i)}} === == Funkcje kodów == === {{Code|p["Kod języka"](frame,i)}} === === {{Code|p["Kod projektu"](frame,i)}} === === {{Code|p["Klucz projektu"](frame,i)}} === == Funkcje wiki == === {{Code|p["Inny niż język bieżący wiki"](frame)}} === === {{Code|p["Inne niż lokalne wiki"](frame)}} === === {{Code|p["Inne niż bieżące wiki"](frame)}} === == Funkcje typów parametrów, czy podane je == === {{Code|p["Podano parametry nienazwane"](frame)}} === === {{Code|p["Podano parametry numerowane"](frame)}} === === {{Code|p["Podano parametry nazwane"](frame)}} === == Funkcje kodów tego projektu == === {{Code|p["Kod projektu tego projektu"](frame)}} === === {{Code|p["Kod języka tego projektu"](frame)}} === === {{Code|p["Klucz projektu tego projektu"](frame)}} === == Funkcje stron == === {{Code|p["Strona główna tego projektu"](frame)}} === === {{Code|p["Strona główna dla dzieci tego projektu"](frame)}} === == Funkcje nazw stron drugiej wersji == === {{Code|p["Nazwa strony głównej dla dzieci projektu 2"](frame)}} === === {{Code| p["Nazwa strony głównej projektu 2"](frame)}} === {{BrClear}} <noinclude><!-- -->{{ProstaStronaKoniec}}<!-- -->{{Kategoria|Opisy funkcji, w Lua w Scribunto, w modułach}}<!-- --></noinclude> qf3e06pihmrcpwzz855ctnsqwwovr9k 540379 540378 2026-04-23T13:09:18Z Persino 2851 540379 wikitext text/x-wiki <noinclude>{{ProstaStronaStart | nagłówek = {{Podrozdział|{{ld2|Pudełko}}|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 pudelko_modul=require("Module:Pudełko"); </syntaxhighlight> dzięki, któremu można wypisywać funkcje należącego do niego. Posługuje się na parametrach pudełkowych {{Parametr|nazwa przestrzeni nazw}} (czy też bez numerka {{Parametr|nazwa przestrzeni nazw i}} dla tego numerowanego) lub te z numerkiem po jednej spacji w nich (ale nie dla tego z końcówką {{Code| i}}) mogą zostać użyte jako parametry szablonu. Moduł {{Code|{{ld2|Pudełko}}}} przedstawia funkcje nazw w oparciu o funkcje nazw {{Code|{{ld2|Nazwy}}}}, generuje on nazwy za pomocą parametrów pudełkowych podanych poniżej. Parametr {{Parametr|nazwa jednostki}} (lub parametr {{Parametr|cel}} dla numerka tego pierwszego, tego alternatywnego), lub te z numerkiem po jednej spacji w nazwie parametru, albo numerowane numerkami {{Code|1}}, {{Code|2}},..., mogą zostać użyte jako parametry szablonu. Parametry określające rodzaj jednostki {{Parametr|typ jednostki}} z {{Parametr|dyskusja typu jednostki}}, itp. w wersjach z numerkiem po jednej spacji w nich mogą zostać użyte jako parametry szablonu. A te tymi numerowanymi liczbami naturalnymi {{Tt|nazwy jednostki}} od jedynki wzwyż poprzez szablon, w którym są one użyte, one też mogą być użyte z dwukropkiem, te numerowane, na samym początku nazwy, wtedy one są traktowane jako pełne nazwy strony, i wtedy one nie zostaną z interpretowane, że do nich trzeba użyć parametr odpowiedni z nazwą przetrzeni nazw z tego numerowanego, czy ogólny, aby utworzyć znów inną pełną nazwę strony dla tego numerka. Zestawienie: * {{Code|nazwa przestrzeni nazw}} i {{Code|nazwa przestrzeni nazw i}} (ogólna nazwa przestrzeni nazw dla wszystkich numerków, i tych numerowanych jednostek) - i to pierwsze z numerkiem, tzn. {{Code|nazwa przestrzeni nazw 1}}, {{Code|nazwa przestrzeni nazw 2}}, ..., * {{Code|nazwa jednostki}} - i te z numerkiem: {{Code|nazwa jednostki 1}}, {{Code|nazwa jednostki 2}}, ..., lub gdy jest zamiast tego parametrem numerowany, {{Code|1}}, {{Code|2}},..., który dla tego pierwszego może być uznany jako: {{Code|cel}} {{=}} {{Code|1}}, * {{Code|typ jednostki}} (parametr bazowy) i {{Code|typ jednostki i}} (parametr domyślny numerkowy) - i te z numerkiem: {{Code|typ jednostki 1}}, {{Code|typ jednostki 2}}, ..., tzn. gdy chcemy określić z jakim typem jednostki mamy do czynienia w zależności do jakiej przestrzeni nazw należy, a w danej, czy jest on np. programowy, czy tylko jest opisem, jak to bywa w szablonach {{Np|Template|link=tak}}, podobnie jest w przypadku {{Np|Module|link=tak}}, czy jak jest w innych przestrzeniach nazw, ** {{Code|dyskusja typu jednostki}} (parametr bazowy) i {{Code|dyskusja typu jednostki i}} (parametr domyślny numerkowy) - i te z numerkiem: {{Code|dyskusja typu jednostki 1}}, {{Code|dyskusja typu jednostki 2}}, ..., gdy chcemy określić wartością niepustą,że chodzi tutaj o typ jednostki. == {{Code|p.CzyNiepoprawnaNazwa(nazwa_jednostki)}} == Funkcja sprawdzajaca, czy jest poprawnie podana nazwa jednostki, czy ma poprawną nazwę. Znakami tymi, z których nie powinna składać się nazwa jest {{Code|<nowiki>{}<>|[]#\n</nowiki>}} i dodatkowo znak {{Code|&#127;}} (kod {{Code|{{Nowiki|&#127;}}}}). Też nie może składać się z trzech znaków tyldy, tzn. {{Code|<nowiki>~~~</nowiki>}}. Również w swojej budowie nie może składać się ze kodów {{Strong|HTML}} literowych o wzorze {{Code|{{Nowiki|&(%a+);}}}}. Natomiast może składać się z {{Code|{{Nowiki|&#(%d+);}}}} i {{Code|{{Nowiki|&#x(%x+);}}}}, ale w pierw te kody muszą być zamienione na normalne znaki. Skrótowa definicja funkcji: <syntaxhighlight lang="lua"> function p.CzyNiepoprawnaNazwa(nazwa_jednostki)...end; </syntaxhighlight> Wtedy ciało funkcji tej, czyli jego definicja w środku, jest: <syntaxhighlight lang="lua"> -- Moduł: "Moduł:Html/dane", służy do ładowania znaku o kodzie HTML "&#127;"; local html_dane_modul=mw.loadData("Module:Html/dane"); return mw.ustring.match(nazwa_jednostki,"[{}<>|%[%]#\n"..html_dane_modul.znak_127.."]+") or mw.ustring.match(nazwa_jednostki,"~~~") or mw.ustring.match(nazwa_jednostki,"&(%a+);"); </syntaxhighlight> Parametry: * {{Code|nazwa_jednostki}} - nazwa jednostki do sprawdzenia. Przykłady: <syntaxhighlight lang="lua"> local pudelko_modul=require("Module:Pudełko"); -- Podana przykładowa niepoprawna nazwa jedostki local nazwa_jednostki="Nazwa pliku [[Nazwa linku w pliku]]"; -- Fukcja zwróci wartość: local czy_poprawna_nazwa=true; local czy_poprawna_nazwa=pudelko_modul.CzyNiepoprawnaNazwa(nazwa_jednostki); </syntaxhighlight> == Funkcje nazw przestrzeni nazw == === {{Code|p["Nazwa przestrzeni nazw"](frame,...)}} === Funkcja pisze nazwę przestrzeni nazw, niezależnie, czy to jest przedmiotowa, czy dyskusji, według podanej w zmiennej {{Code|nazwa przestrzeni nazw}} dla pozycja bazowej w podanych parametrach szablonu rodzicu ramki dziecka, lub dla innej pozycji należy parametr podawać w formie {{Code|nazwa przestrzeni nazw 1}}, {{Code|nazwa przestrzeni nazw 2}}, {{Code|nazwa przestrzeni nazw 3}},..., lub te parametry można podać w postaci ogólnej {{Code|nazwa przestrzeni nazw i}}. Parametry podaje się w parametrach rodzica wywołania tej funkcji {{Code|{{m|Pudełko|Nazwa przestrzeni nazw}}}} (ale ich nie trzeba podawać w dziecku, ale można) i w parametrach dziecka, jeśli chodzi o zmienną {{Code|numer jednostki}}, czyli np.: {{Code|{{m|Pudełko|Nazwa przestrzeni nazw|numer jednostki{{=}}<jakaś liczba całkowita dodatnia>}}}}. Te parametry przestrzenne zamiast w rodzicu w szablonie można podać w ramce dziecka, wtedy parametry dziecka mają pierwszeństwo. Przestrzeń nazw z parametrów nazw przestrzennych może odpowiadać wartości przestrzeni głównej, to wtedy odpowiednia przestrzeń nazw z parametru nazwy jednostki się nie liczy w tej funkcji, aby się liczyła należy użyć funkcji {{Code|{{sr|#p["Nazwa przestrzeni nazw 2"](frame,...)|p=Pudełko}}}}. Definicja skrótowa funkcji: <syntaxhighlight lang="lua"> p["Nazwa przestrzeni nazw"]=function(frame,czy_uwzglednic_alternatywna_nazwe,i)...end; </syntaxhighlight> Wtedy ciało funkcji tej, czyli jego definicja w środku, jest: <syntaxhighlight lang="lua"> -- Jest liczony numer parametru nazwy przestrzeni nazw, domyslnie chodzi tu o numer bazowy parametrów przestrzennych; local numer_jednostki=i or frame.args["numer jednostki"]; local liczba_numer_jednostki=((numer_jednostki)and(tonumber(numer_jednostki))or 0); local pudelko_pomocne_modul=require("Module:Pudełko/Pomocne"); -- Liczy nazwę przestrzeni nazw na podstawie podanych parametrów; return pudelko_pomocne_modul.Nazwa_przestrzeni_nazw(frame,0, czy_uwzglednic_alternatywna_nazwe,liczba_numer_jednostki); </syntaxhighlight> Parametry funkcji: * {{Code|frame}} - tablica ramki tablicy transportu, * {{Code|czy_uwzglednic_alternatywna_nazwe}} - czy ma uwzględniać nazwę przestrzeni nazw domyślną szablonu, dostępne wartości: {{Code|false}}, w której nazwa domyślna nie jest uwzględniana wtedy, oraz {{Code|nil}} i {{Code|true}}, które oznaczają to samo, w tym jeżeli ona jest uwzględniana, wtedy jest brany parametr pierwszy dziecka, który musi istnieć przy takiej wartości tego parametru, tzn. {{Code|{{m|Pudełko|Nazwa przestrzeni nazw|Szablon}}}}, a nazwa uzyskana nazwy przestrzeni nazw jest w takim przypadku błędna, a jeżeli nazwa domyślna jest błędna, czyli {{Code|{{m|Pudełko|Nazwa przestrzeni nazw|Moja przestrzeń}}}}, wtedy funkcja zwraca stan błędu {{Code|(błąd)}}. * {{Code|i}} - numer zmiennej nazwy przestrzeni nazw. Funkcja wykorzystuje {{Code|{{sr|#p.Nazwa_przestrzeni_nazw(frame,...)|p=Pudełko/Pomocne}}}} do wyznaczania ogólnego nazwy przestrzeni nazw dla pozycji bazowej i numerkowej, tzn. dla pozycji: jeden, dwa, trzy,..., itd, i ich ogólnej. Parametry ramki tablicy transportu dziecka: * {{Code|nazwa przestrzeni nazw}}, {{Code|nazwa przestrzeni nazw 1}}, {{Code|nazwa przestrzeni nazw 2}}, {{Code|nazwa przestrzeni nazw 3}},..., {{Code|nazwa przestrzeni nazw i}} - nazwy przestrzeni nazw dla pozycji bazowej, numerkowej i ogólnej, * {{Code|typ jednostki}}, {{Code|typ jednostki 1}}, {{Code|typ jednostki 2}}, {{Code|typ jednostki 3}},..., {{Code|typ jednostki i}} - typy jednostek, którym odpowiadają pewne przestrzenie przedmiotowe, dla pozycji bazowej, numerkowej i ogólnej, ** {{Code|dyskusja typu jednostki}}, {{Code|dyskusja typu jednostki 1}}, {{Code|dyskusja typ jednostki 2}}, {{Code|dyskusja typ jednostki 3}},..., {{Code|dyskusja typ jednostki i}} - czy dany typ jednostki ma przedstawiać, jeśli niepusta, przestrzeń dyskusji dla pozycji bazowej, numerkowej i ogólnej, * {{Code|numer jednostki}} - jak parametr {{Code|i}} nie został ustawiony, to wtedy liczy się ta zmienna. Parametr ramki tablicy transportu rodzica szablonu: * {{Code|nazwa przestrzeni nazw}}, {{Code|nazwa przestrzeni nazw 1}}, {{Code|nazwa przestrzeni nazw 2}}, {{Code|nazwa przestrzeni nazw 3}},..., {{Code|nazwa przestrzeni nazw i}} - nazwy przestrzeni nazw dla pozycji bazowej oraz zwykłej i ogólnej numerkowej, * {{Code|typ jednostki}}, {{Code|typ jednostki 1}}, {{Code|typ jednostki 2}}, {{Code|typ jednostki 3}},..., {{Code|typ jednostki i}} - typy jednostek, którym odpowiadają pewne przestrzenie przedmiotowe, dla pozycji bazowej, numerkowej i ogólnej, ** {{Code|dyskusja typu jednostki}}, {{Code|dyskusja typu jednostki 1}}, {{Code|dyskusja typ jednostki 2}}, {{Code|dyskusja typ jednostki 3}},..., {{Code|dyskusja typ jednostki i}} - czy dany typ jednostki ma przedstawiać, jeśli niepusta, przestrzeń dyskusji dla pozycji bazowej, numerkowej i ogólnej. Przykłady: <syntaxhighlight lang="mediawiki"> {{Nazwa szablonu|nazwa przestrzeni nazw=Wikibooks|nazwa przestrzeni nazw 2=Szablon|nazwa przestrzeni nazw i=Moduł}} </syntaxhighlight> W dziecku powiedzmy jest wywołanie, i szukamy nazwy przestrzeni nazw o numerze dwa, która nie została podana, ale istnieje za to jej wersji ogólna {{Code|nazwa przestrzeni nazw i}} i domyślna {{Code|nazwa przestrzeni nazw}}: <syntaxhighlight lang="mediawiki"> {{#invoke:Pudełko|Nazwa przestrzeni nazw|numer jednostki=1}} </syntaxhighlight> Na podstawie powyższego przykładu otrzymamy wynik o schemacie, nie wyniku, bo tam nie ma zmiennej {{Code|nazwa przestrzeni nazw 1}}, ale jest {{Code|nazwa przestrzeni nazw i}}: <syntaxhighlight lang="mediawiki"> <!-- Ale nie "nazwa przestrzeni nazw", bo jej nie ma, ale za to istnieje "nazwa przestrzeni nazw i"; --> <!-- nazwa przestrzeni nazw 2=nazwa przestrzeni nazw i=Moduł; --> <!-- Czyli wynik: --> Moduł <!-- Widzimy, że wygenerowała się nazwa przestrzeni nazw, którą jest przestrzeń programowa, którą również jest "Szablon"; --> </syntaxhighlight> Nie jest brana w tym powyższym przykładzie zmienna {{Code|nazwa przestrzeni nazw}}, bo jej nie ma, ale za to jest {{Code|nazwa przestrzeni nazw i}}, bo ona występuje jako parametr domyślny ogólny dla parametrów numerkowych. Przykłady w wikikodzie: * {{Code|{{m|Pudełko|Nazwa przestrzeni nazw|numer jednostki{{=}}2}}}} → {{Tt|{{#invoke:Pudełko|Nazwa przestrzeni nazw|numer jednostki=2}}}} * {{Code|{{m|Pudełko|Nazwa przestrzeni nazw|Szablon|nazwa przestrzeni nazw i{{=}}Moja przestrzeń|numer jednostki{{=}}2}}}} → {{Tt|{{#invoke:Pudełko|Nazwa przestrzeni nazw|Szablon|nazwa przestrzeni nazw i=Moja przestrzeń|numer jednostki=2}}}} * {{Code|{{m|Pudełko|Nazwa przestrzeni nazw|nazwa przestrzeni nazw 2{{=}}Szablon|numer jednostki{{=}}2}}}} → {{Tt|{{#invoke:Pudełko|Nazwa przestrzeni nazw|nazwa przestrzeni nazw 2=Szablon|numer jednostki=2}}}} * {{Code|{{m|Pudełko|Nazwa przestrzeni nazw|nazwa przestrzeni nazw 2{{=}}Szablon|numer jednostki{{=}}2}}}} → {{Tt|{{#invoke:Pudełko|Nazwa przestrzeni nazw|nazwa przestrzeni nazw i=Szablon|numer jednostki=2}}}} * {{Code|{{m|Pudełko|Nazwa przestrzeni nazw|nazwa przestrzeni nazw{{=}}Szablon|numer jednostki{{=}}2}}}} → {{Tt|{{#invoke:Pudełko|Nazwa przestrzeni nazw|nazwa przestrzeni nazw=Szablon|numer jednostki=2}}}} Powyżej dla przykładu podano parametry nie w rodzicu w szablonie, tylko w dziecku, jeśli chodzi o parametry nazw przestrzeni nazw, ale ich się za to nie powinno podawać w tych ramach, tylko w szablonach, w których wywoływane są te ramki pudełek {{Code|{{m|Pudełko}}}}, ale tak tutaj tak zrobiono by było najłatwiej sprawdzić działanie tego typu funkcji. Analogicznie możemy podawać parametry typu jednostki, np.: wywołaniu modułowym {{Code|{{m|Pudełko|Nazwa przestrzeni nazw|typ jednostki 2{{=}}strona szablonu|numer jednostki{{=}}2}}}}, ale o tym więcej w rozdziałach {{Code|{{sr|# p["Typ jednostki"](frame,i)|p=Pudełko}}}}, {{Code|{{sr|#p["Typ jednostki 2"](frame,i)|p=Pudełko}}}}, {{Code|{{sr|#p["Typ jednostki 3"](frame,i)|p=Pudełko}}}} itp. w „{{sr|#Funkcje typu jednostki|p=Pudełko}}”, on definiuje przestrzenie przedmiotowe, ale można użyć parametru dyskusji typu jednostki z wartością niepustą, wtedy wyświetli się nazwa przestrzeni nazw dyskusji. Również parametry typu jednostki nie powinno się podawać w dziecku w ramce, tylko w rodzicu w szablonie jako parametry, w którym ta ramka jest wywoływana, ale tutaj podano jedynie dla przykładu, jak najłatwiej sprawdzić działanie tych parametrów tej funkcji. Najpierw w funkcji nagłówku brane są parametry nazw przestrzeni nazw, a jeżeli ich nie ma, to parametry typu jednostki, a jeżeli nie ma, to generowane są nazwy na podstawie aktualnego modułu. === {{Code|p["Nazwa przedmiotowej przestrzeni nazw"](frame,...)}} === Funkcja pisze przedmiotową nazwę przestrzeni nazw jakikolwiek nazwy przestrzeni nazw (tzn. nazwę przedmiotową nazwy przestrzenie nazw, czyli nie dyskusji, zamieniana jest na nią samą, czyli identyfikator przestrzeni się nie zmienia, a dyskusji, nie przedmiotową, przekształca się na przedmiotową jej odpowiadającą, czyli w tym przypadku identyfikator przestrzeni zmniejsza się o numer mniej), według podanej w zmiennej {{Code|nazwa przestrzeni nazw}} dla pozycja bazowej w podanych parametrach szablonu rodzicu ramki dziecka, lub dla innej pozycji należy parametr podawać w formie {{Code|nazwa przestrzeni nazw 1}}, {{Code|nazwa przestrzeni nazw 2}}, {{Code|nazwa przestrzeni nazw 3}},..., lub te parametry można podać w postaci ogólnej {{Code|nazwa przestrzeni nazw i}}. Parametry podaje się w parametrach rodzica wywołania tej funkcji {{Code|{{m|Pudełko|Nazwa przedmiotowej przestrzeni nazw}}}} (ale ich nie trzeba podawać w dziecku, ale można) i w parametrach dziecka, jeśli chodzi o zmienną {{Code|numer jednostki}}, czyli np.: {{Code|{{m|Pudełko|Nazwa przedmiotowej przestrzeni nazw|numer jednostki{{=}}<jakaś liczba całkowita dodatnia>}}}}. Te parametry przestrzenne zamiast w rodzicu w szablonie można podać w ramce dziecka, wtedy parametry dziecka mają pierwszeństwo. Parametry przestrzenne mogą mogą być podane w postaci przestrzeni przedmiotowej lub dyskusji, ale ta funkcja zawsze ją zamienia na przedmiotową. Przestrzeń nazw z parametrów nazw przestrzennych może odpowiadać wartości przestrzeni głównej, to wtedy odpowiednia przestrzeń nazw z parametru nazwy jednostki się nie liczy w tej funkcji, aby się liczyła należy użyć funkcji {{Code|{{sr|#p["Nazwa przedmiotowej przestrzeni nazw 2"](frame,...)|p=Pudełko}}}}. Definicja skrótowa funkcji: <syntaxhighlight lang="lua"> p["Nazwa przedmiotowej przestrzeni nazw"]=function(frame,czy_uwzglednic_alternatywna_nazwe,i)...end; </syntaxhighlight> Wtedy ciało funkcji tej, czyli jego definicja w środku, jest: <syntaxhighlight lang="lua"> -- Jest liczony numer parametru nazwy przestrzeni nazw, domyslnie chodzi tu o numer bazowy parametrów przestrzennych; local numer_jednostki=i or frame.args["numer jednostki"]; local liczba_numer_jednostki=((numer_jednostki)and(tonumber(numer_jednostki))or 0); local pudelko_pomocne_modul=require("Module:Pudełko/Pomocne"); -- Liczy nazwę przestrzeni nazw przedmiotową na podstawie podanych parametrów; return pudelko_pomocne_modul.Nazwa_przestrzeni_nazw(frame,1, czy_uwzglednic_alternatywna_nazwe,liczba_numer_jednostki); </syntaxhighlight> Parametry funkcji: * {{Code|frame}} - tablica ramki tablicy transportu, * {{Code|czy_uwzglednic_alternatywna_nazwe}} - czy ma uwzględniać nazwę przestrzeni nazw domyślną szablonu, dostępne wartości: {{Code|false}}, w której nazwa domyślna nie jest uwzględniana wtedy, oraz {{Code|nil}} i {{Code|true}}, które oznaczają to samo, w tym jeżeli ona jest uwzględniana, wtedy jest brany parametr pierwszy dziecka, który musi istnieć przy takiej wartości tego parametru, tzn. {{Code|{{m|Pudełko|Nazwa przedmiotowej przestrzeni nazw|Dyskusja szablonu}}}} - ta nazwa domyślna zostanie zamieniona na przedmiotową, a jak ona by była przedmiotowa, to żadnej zamiany by nie było, a nazwa uzyskana z nazwy przestrzeni nazw z parametrów przestrzennych jest w takim przypadku błędna, to w takim razie brany jest ten parametr, a jeżeli ta nazwa domyślna jest błędna, czyli {{Code|{{m|Pudełko|Nazwa przedmiotowej przestrzeni nazw|Moja przestrzeń}}}}, wtedy funkcja zwraca stan błędu {{Code|(błąd)}}. * {{Code|i}} - numer zmiennej nazwy przestrzeni nazw. Funkcja wykorzystuje {{Code|{{sr|#p.Nazwa_przestrzeni_nazw(frame,...)|p=Pudełko/Pomocne}}}} do wyznaczania ogólnego nazwy przestrzeni nazw dla pozycji bazowej i numerkowej, tzn. dla pozycji: jeden, dwa, trzy,..., itd, i ich ogólnej. Parametry ramki tablicy transportu dziecka: * {{Code|nazwa przestrzeni nazw}}, {{Code|nazwa przestrzeni nazw 1}}, {{Code|nazwa przestrzeni nazw 2}}, {{Code|nazwa przestrzeni nazw 3}},..., {{Code|nazwa przestrzeni nazw i}} - nazwy przestrzeni nazw dla pozycji bazowej, numerkowej i ogólnej, * {{Code|typ jednostki}}, {{Code|typ jednostki 1}}, {{Code|typ jednostki 2}}, {{Code|typ jednostki 3}},..., {{Code|typ jednostki i}} - typy jednostek, którym odpowiadają pewne przestrzenie przedmiotowe, dla pozycji bazowej, numerkowej i ogólnej, ** {{Code|dyskusja typu jednostki}}, {{Code|dyskusja typu jednostki 1}}, {{Code|dyskusja typ jednostki 2}}, {{Code|dyskusja typ jednostki 3}},..., {{Code|dyskusja typ jednostki i}} - czy dany typ jednostki ma przedstawiać, jeśli niepusta, przestrzeń dyskusji dla pozycji bazowej, numerkowej i ogólnej, * {{Code|numer jednostki}} - jak parametr {{Code|i}} nie został ustawiony, to wtedy liczy się ta zmienna. Parametr ramki tablicy transportu rodzica szablonu: * {{Code|nazwa przestrzeni nazw}}, {{Code|nazwa przestrzeni nazw 1}}, {{Code|nazwa przestrzeni nazw 2}}, {{Code|nazwa przestrzeni nazw 3}},..., {{Code|nazwa przestrzeni nazw i}} - nazwy przestrzeni nazw dla pozycji bazowej oraz zwykłej i ogólnej numerkowej, * {{Code|typ jednostki}}, {{Code|typ jednostki 1}}, {{Code|typ jednostki 2}}, {{Code|typ jednostki 3}},..., {{Code|typ jednostki i}} - typy jednostek, którym odpowiadają pewne przestrzenie przedmiotowe, dla pozycji bazowej, numerkowej i ogólnej, ** {{Code|dyskusja typu jednostki}}, {{Code|dyskusja typu jednostki 1}}, {{Code|dyskusja typ jednostki 2}}, {{Code|dyskusja typ jednostki 3}},..., {{Code|dyskusja typ jednostki i}} - czy dany typ jednostki ma przedstawiać, jeśli niepusta, przestrzeń dyskusji dla pozycji bazowej, numerkowej i ogólnej. Przykłady: <syntaxhighlight lang="mediawiki"> {{Nazwa szablonu|nazwa przestrzeni nazw=Dyskusja Wikibooks|nazwa przestrzeni nazw 2=Dyskusja szablonu|nazwa przestrzeni nazw i=Dyskusja modułu}} </syntaxhighlight> W dziecku powiedzmy jest wywołanie, i szukamy nazwy przestrzeni nazw o numerze dwa, która nie została podana, ale istnieje za to jej wersji ogólna {{Code|nazwa przestrzeni nazw i}} i domyślna {{Code|nazwa przestrzeni nazw}}: <syntaxhighlight lang="mediawiki"> {{#invoke:Pudełko|Nazwa przedmiotowej przestrzeni nazw|numer jednostki=1}} </syntaxhighlight> Na podstawie powyższego przykładu otrzymamy wynik o schemacie, nie wyniku, bo tam nie ma zmiennej {{Code|nazwa przestrzeni nazw 1}}, ale jest {{Code|nazwa przestrzeni nazw i}}: <syntaxhighlight lang="mediawiki"> <!-- Ale nie "nazwa przestrzeni nazw", bo jej nie ma, ale za to istnieje "nazwa przestrzeni nazw i"; --> <!-- nazwa przestrzeni nazw 2=nazwa przestrzeni nazw i=Dyskusja modułu; --> <!-- Czyli wynik: --> Moduł <!-- Widzimy, że wygenerowała się nazwa przestrzeni nazw, którą jest przestrzeń przedmiotowa programowa przestrzeni dyskusji "Dyskusja modułu", którą również jest "Szablon" jego przestrzeni dyskusji "Dyskusja szablonu", a dla ich przestrzeni przedmiotowej, zamiast dyskusji, to samo przekształca się na to samo; --> </syntaxhighlight> Nie jest brana w tym powyższym przykładzie zmienna {{Code|nazwa przestrzeni nazw}}, bo jej nie ma, ale za to jest {{Code|nazwa przestrzeni nazw i}}, bo ona występuje jako parametr domyślny ogólny dla parametrów numerkowych. Przykłady w wikikodzie: * {{Code|{{m|Pudełko|Nazwa przedmiotowej przestrzeni nazw|numer jednostki{{=}}2}}}} → {{Tt|{{#invoke:Pudełko|Nazwa przedmiotowej przestrzeni nazw|numer jednostki=2}}}} * {{Code|{{m|Pudełko|Nazwa przedmiotowej przestrzeni nazw|Dyskusja szablonu|nazwa przestrzeni nazw i{{=}}Moja przestrzeń|numer jednostki{{=}}2}}}} → {{Tt|{{#invoke:Pudełko|Nazwa przedmiotowej przestrzeni nazw|Dyskusja szablonu|nazwa przestrzeni nazw i=Moja przestrzeń|numer jednostki=2}}}} * {{Code|{{m|Pudełko|Nazwa przedmiotowej przestrzeni nazw|nazwa przestrzeni nazw 2{{=}}Dyskusja szablonu|numer jednostki{{=}}2}}}} → {{Tt|{{#invoke:Pudełko|Nazwa przedmiotowej przestrzeni nazw|nazwa przestrzeni nazw 2=Dyskusja szablonu|numer jednostki=2}}}} * {{Code|{{m|Pudełko|Nazwa przedmiotowej przestrzeni nazw|nazwa przestrzeni nazw 2{{=}}Dyskusja szablonu|numer jednostki{{=}}2}}}} → {{Tt|{{#invoke:Pudełko|Nazwa przedmiotowej przestrzeni nazw|nazwa przestrzeni nazw i=Dyskusja szablonu|numer jednostki=2}}}} * {{Code|{{m|Pudełko|Nazwa przedmiotowej przestrzeni nazw|nazwa przestrzeni nazw{{=}}Dyskusja szablonu|numer jednostki{{=}}2}}}} → {{Tt|{{#invoke:Pudełko|Nazwa przedmiotowej przestrzeni nazw|nazwa przestrzeni nazw=Dyskusja szablonu|numer jednostki=2}}}} Powyżej dla przykładu podano parametry nie w rodzicu w szablonie, tylko w dziecku, jeśli chodzi o parametry nazw przestrzeni nazw, ale ich się za to nie powinno podawać w tych ramach, tylko w szablonach, w których wywoływane są te ramki pudełek {{Code|{{m|Pudełko}}}}, ale tak tutaj tak zrobiono by było najłatwiej sprawdzić działanie tego typu funkcji. Analogicznie możemy podawać parametry typu jednostki, np.: wywołaniu modułowym {{Code|{{m|Pudełko|Nazwa przedmiotowej przestrzeni nazw|typ jednostki 2{{=}}strona szablonu|numer jednostki{{=}}2}}}}, ale o tym więcej w rozdziałach {{Code|{{sr|# p["Typ jednostki"](frame,i)|p=Pudełko}}}}, {{Code|{{sr|#p["Typ jednostki 2"](frame,i)|p=Pudełko}}}}, {{Code|{{sr|#p["Typ jednostki 3"](frame,i)|p=Pudełko}}}} itp. w „{{sr|#Funkcje typu jednostki|p=Pudełko}}”, ale wtedy ta sama nazwa przestrzeni nazw reprezentowana przez {{Parametr|typ jednostki 2|strona szablonu}}, jest zamieniana na to samo, lepiej jest tutaj używać parametrów przestrzennych nazw niż typu jednostki, bo typ jednostki ma taką samą wartość dla przestrzeni przedmiotowej, co dyskusji. Tutaj parametr dyskusji typu jednostki bazowy i numerkowy ogólny, czy szczegółowy, nie gra roli, bo nawet, gdy wygenerujemy nazwę przestrzeni dyskusji za pomoca tego parametru, to i tak otrzymamy na samym końcu jego nazwę przedmiotową. Również parametry typu jednostki nie powinno się podawać w dziecku w ramce, tylko w rodzicu w szablonie jako parametry, w którym ta ramka jest wywoływana, ale tutaj podano jedynie dla przykładu, jak najłatwiej sprawdzić działanie tych parametrów tej funkcji. Najpierw w funkcji nagłówku brane są parametry nazw przestrzeni nazw, a jeżeli ich nie ma, to parametry typu jednostki, a jeżeli nie ma, to generowane są nazwy na podstawie aktualnego modułu. === {{Code|p["Nazwa przestrzeni nazw dyskusji"](frame,...)}} === Funkcja pisze nazwę przestrzeni nazw dyskusji jakikolwiek nazwy przestrzeni nazw (tzn. nazwę przedmiotową nazwy przestrzenie nazw, czyli nie dyskusji, zamieniana jest na dyskusji, czyli identyfikator przestrzeni się zmienia jeden wyżej, a dyskusji, nie przedmiotową, przekształca się na tą samą), według podanej w zmiennej {{Code|nazwa przestrzeni nazw}} dla pozycja bazowej w podanych parametrach szablonu rodzicu ramki dziecka, lub dla innej pozycji należy parametr podawać w formie {{Code|nazwa przestrzeni nazw 1}}, {{Code|nazwa przestrzeni nazw 2}}, {{Code|nazwa przestrzeni nazw 3}},..., lub te parametry można podać w postaci ogólnej {{Code|nazwa przestrzeni nazw i}}. Parametry podaje się w parametrach rodzica wywołania tej funkcji {{Code|{{m|Pudełko|Nazwa przestrzeni nazw dyskusji}}}} (ale ich nie trzeba podawać w dziecku, ale można) i w parametrach dziecka, jeśli chodzi o zmienną {{Code|numer jednostki}}, czyli np.: {{Code|{{m|Pudełko|Nazwa przestrzeni nazw dyskusji|numer jednostki{{=}}<jakaś liczba całkowita dodatnia>}}}}. Te parametry przestrzenne zamiast w rodzicu w szablonie można podać w ramce dziecka, wtedy parametry dziecka mają pierwszeństwo. Parametry przestrzenne mogą mogą być podane w postaci przestrzeni przedmiotowej lub dyskusji, ale ta funkcja zawsze ją zamienia na dyskusji. Przestrzeń nazw z parametrów nazw przestrzennych może odpowiadać wartości przestrzeni głównej, to wtedy odpowiednia przestrzeń nazw z parametru nazwy jednostki się nie liczy w tej funkcji, aby się liczyła należy użyć funkcji {{Code|{{sr|#p["Nazwa przestrzeni nazw dyskusji 2"](frame,...)|p=Pudełko}}}}. Definicja skrótowa funkcji: <syntaxhighlight lang="lua"> p["Nazwa przestrzeni nazw dyskusji"]=function(frame,czy_uwzglednic_alternatywna_nazwe,i)...end; </syntaxhighlight> Wtedy ciało funkcji tej, czyli jego definicja w środku, jest: <syntaxhighlight lang="lua"> -- Jest liczony numer parametru nazwy przestrzeni nazw, domyslnie chodzi tu o numer bazowy parametrów przestrzennych; local numer_jednostki=i or frame.args["numer jednostki"]; local liczba_numer_jednostki=((numer_jednostki)and(tonumber(numer_jednostki))or 0); local pudelko_pomocne_modul=require("Module:Pudełko/Pomocne"); -- Liczy nazwę przestrzeni nazw dyskusji na podstawie podanych parametrów; return pudelko_pomocne_modul.Nazwa_przestrzeni_nazw(frame,2, czy_uwzglednic_alternatywna_nazwe,liczba_numer_jednostki); </syntaxhighlight> Parametry funkcji: * {{Code|frame}} - tablica ramki tablicy transportu, * {{Code|czy_uwzglednic_alternatywna_nazwe}} - czy ma uwzględniać nazwę przestrzeni nazw domyślną szablonu, dostępne wartości: {{Code|false}}, w której nazwa domyślna nie jest uwzględniana wtedy, oraz {{Code|nil}} i {{Code|true}}, które oznaczają to samo, w tym jeżeli ona jest uwzględniana, wtedy jest brany parametr pierwszy dziecka, który musi istnieć przy takiej wartości tego parametru, tzn. {{Code|{{m|Pudełko|Nazwa przestrzeni nazw dyskusji|Szablon}}}} - ta nazwa domyślna zostanie przekształcona na dyskusji, a jeżeli ona by była dyskusji, to nie byłoby żadnego przekształcenia, a nazwa uzyskana nazwy przestrzeni nazw z parametrów przestrzennych jest w takim przypadku błędna, to w takim razie brany jest ten parametr, a jeżeli nazwa domyślna jest błędna, czyli {{Code|{{m|Pudełko|Nazwa przestrzeni nazw dyskusji|Moja przestrzeń}}}}, wtedy funkcja zwraca stan błędu {{Code|(błąd)}}. * {{Code|i}} - numer zmiennej nazwy przestrzeni nazw. Funkcja wykorzystuje {{Code|{{sr|#p.Nazwa_przestrzeni_nazw(frame,...)|p=Pudełko/Pomocne}}}} do wyznaczania ogólnego nazwy przestrzeni nazw dla pozycji bazowej i numerkowej, tzn. dla pozycji: jeden, dwa, trzy,..., itd, i ich ogólnej. Parametry ramki tablicy transportu dziecka: * {{Code|nazwa przestrzeni nazw}}, {{Code|nazwa przestrzeni nazw 1}}, {{Code|nazwa przestrzeni nazw 2}}, {{Code|nazwa przestrzeni nazw 3}},..., {{Code|nazwa przestrzeni nazw i}} - nazwy przestrzeni nazw dla pozycji bazowej, numerkowej i ogólnej, * {{Code|typ jednostki}}, {{Code|typ jednostki 1}}, {{Code|typ jednostki 2}}, {{Code|typ jednostki 3}},..., {{Code|typ jednostki i}} - typy jednostek, którym odpowiadają pewne przestrzenie przedmiotowe, dla pozycji bazowej, numerkowej i ogólnej, ** {{Code|dyskusja typu jednostki}}, {{Code|dyskusja typu jednostki 1}}, {{Code|dyskusja typ jednostki 2}}, {{Code|dyskusja typ jednostki 3}},..., {{Code|dyskusja typ jednostki i}} - czy dany typ jednostki ma przedstawiać, jeśli niepusta, przestrzeń dyskusji dla pozycji bazowej, numerkowej i ogólnej, * {{Code|numer jednostki}} - jak parametr {{Code|i}} nie został ustawiony, to wtedy liczy się ta zmienna. Parametr ramki tablicy transportu rodzica szablonu: * {{Code|nazwa przestrzeni nazw}}, {{Code|nazwa przestrzeni nazw 1}}, {{Code|nazwa przestrzeni nazw 2}}, {{Code|nazwa przestrzeni nazw 3}},..., {{Code|nazwa przestrzeni nazw i}} - nazwy przestrzeni nazw dla pozycji bazowej oraz zwykłej i ogólnej numerkowej, * {{Code|typ jednostki}}, {{Code|typ jednostki 1}}, {{Code|typ jednostki 2}}, {{Code|typ jednostki 3}},..., {{Code|typ jednostki i}} - typy jednostek, którym odpowiadają pewne przestrzenie przedmiotowe, dla pozycji bazowej, numerkowej i ogólnej, ** {{Code|dyskusja typu jednostki}}, {{Code|dyskusja typu jednostki 1}}, {{Code|dyskusja typ jednostki 2}}, {{Code|dyskusja typ jednostki 3}},..., {{Code|dyskusja typ jednostki i}} - czy dany typ jednostki ma przedstawiać, jeśli niepusta, przestrzeń dyskusji dla pozycji bazowej, numerkowej i ogólnej. Przykłady: <syntaxhighlight lang="mediawiki"> {{Nazwa szablonu|nazwa przestrzeni nazw=Wikibooks|nazwa przestrzeni nazw 2=Szablon|nazwa przestrzeni nazw i=Moduł}} </syntaxhighlight> W dziecku powiedzmy jest wywołanie, i szukamy nazwy przestrzeni nazw o numerze dwa, która nie została podana, ale istnieje za to jej wersji ogólna {{Code|nazwa przestrzeni nazw i}} i domyślna {{Code|nazwa przestrzeni nazw}}: <syntaxhighlight lang="mediawiki"> {{#invoke:Pudełko|Nazwa przestrzeni nazw dyskusji|numer jednostki=1}} </syntaxhighlight> Na podstawie powyższego przykładu otrzymamy wynik o schemacie, nie wyniku, bo tam nie ma zmiennej {{Code|nazwa przestrzeni nazw 1}}, ale jest {{Code|nazwa przestrzeni nazw i}}: <syntaxhighlight lang="mediawiki"> <!-- Ale nie "nazwa przestrzeni nazw", bo jej nie ma, ale za to istnieje "nazwa przestrzeni nazw i"; --> <!-- nazwa przestrzeni nazw 2=nazwa przestrzeni nazw i=Moduł; --> <!-- Czyli wynik: --> Dyskusja modułu <!-- Widzimy, że wygenerowała się nazwa przestrzeni nazw, którą jest przestrzeń dyskusji przestrzeni programowej przestrzeni przedmiotowej "Moduł", którą również jest "Szablon" jego przestrzeni dyskusji "Dyskusja szablonu", a dla ich przestrzeni przedmiotowej, zamiast dyskusji, to przekształca się na dyskusji jej odpowiadającą; --> </syntaxhighlight> Nie jest brana w tym powyższym przykładzie zmienna {{Code|nazwa przestrzeni nazw}}, bo jej nie ma, ale za to jest {{Code|nazwa przestrzeni nazw i}}, bo ona występuje jako parametr domyślny ogólny dla parametrów numerkowych. Przykłady w wikikodzie: * {{Code|{{m|Pudełko|Nazwa przestrzeni nazw dyskusji|numer jednostki{{=}}2}}}} → {{Tt|{{#invoke:Pudełko|Nazwa przestrzeni nazw dyskusji|numer jednostki=2}}}} * {{Code|{{m|Pudełko|Nazwa przestrzeni nazw dyskusji|Szablon|nazwa przestrzeni nazw i{{=}}Moja przestrzeń|numer jednostki{{=}}2}}}} → {{Tt|{{#invoke:Pudełko|Nazwa przestrzeni nazw dyskusji|Szablon|nazwa przestrzeni nazw i=Moja przestrzeń|numer jednostki=2}}}} * {{Code|{{m|Pudełko|Nazwa przestrzeni nazw dyskusji|nazwa przestrzeni nazw 2{{=}}Szablon|numer jednostki{{=}}2}}}} → {{Tt|{{#invoke:Pudełko|Nazwa przestrzeni nazw dyskusji|nazwa przestrzeni nazw 2=Szablon|numer jednostki=2}}}} * {{Code|{{m|Pudełko|Nazwa przestrzeni nazw dyskusji|nazwa przestrzeni nazw 2{{=}}Szablon|numer jednostki{{=}}2}}}} → {{Tt|{{#invoke:Pudełko|Nazwa przestrzeni nazw dyskusji|nazwa przestrzeni nazw i=Szablon|numer jednostki=2}}}} * {{Code|{{m|Pudełko|Nazwa przestrzeni nazw dyskusji|nazwa przestrzeni nazw{{=}}Szablon|numer jednostki{{=}}2}}}} → {{Tt|{{#invoke:Pudełko|Nazwa przestrzeni nazw dyskusji|nazwa przestrzeni nazw=Szablon|numer jednostki=2}}}} Powyżej dla przykładu podano parametry nie w rodzicu w szablonie, tylko w dziecku, jeśli chodzi o parametry nazw przestrzeni nazw, ale ich się za to nie powinno podawać w tych ramach, tylko w szablonach, w których wywoływane są te ramki pudełek {{Code|{{m|Pudełko}}}}, ale tak tutaj tak zrobiono by było najłatwiej sprawdzić działanie tego typu funkcji. Analogicznie możemy podawać parametry typu jednostki, np.: wywołaniu modułowym {{Code|{{m|Pudełko|Nazwa przestrzeni nazw dyskusji|typ jednostki 2{{=}}strona szablonu|numer jednostki{{=}}2}}}}, ale o tym więcej w rozdziałach {{Code|{{sr|# p["Typ jednostki"](frame,i)|p=Pudełko}}}}, {{Code|{{sr|#p["Typ jednostki 2"](frame,i)|p=Pudełko}}}}, {{Code|{{sr|#p["Typ jednostki 3"](frame,i)|p=Pudełko}}}} itp. w „{{sr|#Funkcje typu jednostki|p=Pudełko}}”, ale wtedy nazwa przestrzeni nazw reprezentowana przez {{Parametr|typ jednostki 2|strona szablonu}}, jest zamieniana na nazwę przestrzeni nazw dyskusji. Parametr dyskusji typu jednostki bazowy lub dla danego numerka ogólny, czy szczegółowy, nie gra roli. Również parametry typu jednostki nie powinno się podawać w dziecku w ramce, tylko w rodzicu w szablonie jako parametry, w którym ta ramka jest wywoływana, ale tutaj podano jedynie dla przykładu, jak najłatwiej sprawdzić działanie tych parametrów tej funkcji. Najpierw w funkcji nagłówku brane są parametry nazw przestrzeni nazw, a jeżeli ich nie ma, to parametry typu jednostki, a jeżeli nie ma, to generowane są nazwy na podstawie aktualnego modułu. == Funkcje nazw przestrzeni nazw drugiej wersji == === {{Code|p["Nazwa przestrzeni nazw 2"](frame,...)}} === Funkcja pisze nazwę przestrzeni nazw, niezależnie, czy to jest przedmiotowa, czy dyskusji, według podanej w zmiennej {{Code|nazwa przestrzeni nazw}} dla pozycja bazowej w podanych parametrach szablonu rodzicu ramki dziecka, lub dla innej pozycji należy parametr podawać w formie {{Code|nazwa przestrzeni nazw 1}}, {{Code|nazwa przestrzeni nazw 2}}, {{Code|nazwa przestrzeni nazw 3}},..., lub te parametry można podać w postaci ogólnej {{Code|nazwa przestrzeni nazw i}}. W tej funkcji trzeba też podawać parametry nazwy jednostek {{Code|nazwa jednostki}}, {{Code|nazwa jednostki 1}}, {{Code|nazwa jednostki 2}}, {{Code|nazwa jednostki 3}},... Parametry podaje się w parametrach rodzica wywołania tej funkcji {{Code|{{m|Pudełko|Nazwa przestrzeni nazw 2}}}} (ale ich nie trzeba podawać w dziecku, ale można) i w parametrach dziecka, jeśli chodzi o zmienną {{Code|numer jednostki}}, czyli np.: {{Code|{{m|Pudełko|Nazwa przestrzeni nazw 2|numer jednostki{{=}}<jakaś liczba całkowita dodatnia>}}}}. Te parametry przestrzenne zamiast w rodzicu w szablonie można podać w ramce dziecka, wtedy parametry dziecka mają pierwszeństwo. Przestrzeń nazw z parametrów nazw przestrzennych może odpowiadać wartości przestrzeni głównej, to wtedy odpowiednia przestrzeń nazw z parametru nazwy jednostki się liczy w tej funkcji, wtedy jest liczona nazwa przestrzeni nazw z tego parametru. Gdy parametry przestrzenne lub typ jednostki w drugim podejściu nie wskazują na przestrzeń główną, to wtedy działanie tej funkcji jest podobne do {{Code|{{sr|#p["Nazwa przestrzeni nazw"](frame,...)|p=Pudełko}}}}. Definicja skrótowa funkcji: <syntaxhighlight lang="lua"> p["Nazwa przestrzeni nazw 2"]=function(frame,czy_uwzglednic_alternatywna_nazwe,i)...end; </syntaxhighlight> Wtedy ciało funkcji tej, czyli jego definicja w środku, jest: <syntaxhighlight lang="lua"> local pudelko_pomocne_modul=require("Module:Pudełko/Pomocne"); -- Liczy nazwę przestrzeni nazw, jeżeli z parametrów przestrzennych przestrzeń wskazuje na główną, to wtedy jest liczona przestrzeń nazw z nazwy jednostki; return pudelko_pomocne_modul.Nazwa_przestrzeni_nazw_2(frame,czy_uwzglednic_alternatywna_nazwe,i) </syntaxhighlight> Parametry funkcji: * {{Code|frame}} - tablica ramki tablicy transportu, * {{Code|czy_uwzglednic_alternatywna_nazwe}} - czy ma uwzględniać nazwę przestrzeni nazw domyślną szablonu, dostępne wartości: {{Code|false}}, w której nazwa domyślna nie jest uwzględniana wtedy, oraz {{Code|nil}} i {{Code|true}}, które oznaczają to samo, w tym jeżeli ona jest uwzględniana, wtedy jest brany parametr pierwszy dziecka, który musi istnieć przy takiej wartości tego parametru, tzn. {{Code|{{m|Pudełko|Nazwa przestrzeni nazw 2|Szablon}}}}, a nazwa uzyskana nazwy przestrzeni nazw jest w takim przypadku błędna, a jeżeli nazwa domyślna jest błędna, czyli {{Code|{{m|Pudełko|Nazwa przestrzeni nazw 2|Moja przestrzeń}}}}, wtedy funkcja zwraca stan błędu {{Code|(błąd)}}. * {{Code|i}} - numer zmiennej nazwy przestrzeni nazw. Funkcja wykorzystuje {{Code|{{sr|#p.Nazwa_przestrzeni_nazw_2(frame,...)|p=Pudełko/Pomocne}}}} do wyznaczania ogólnego nazwy przestrzeni nazw dla pozycji bazowej i numerkowej, tzn. dla pozycji: jeden, dwa, trzy,..., itd, i ich ogólnej. Parametry ramki tablicy transportu dziecka: * {{Code|nazwa przestrzeni nazw}}, {{Code|nazwa przestrzeni nazw 1}}, {{Code|nazwa przestrzeni nazw 2}}, {{Code|nazwa przestrzeni nazw 3}},..., {{Code|nazwa przestrzeni nazw i}} - nazwy przestrzeni nazw dla pozycji bazowej, numerkowej i ogólnej, * {{Code|typ jednostki}}, {{Code|typ jednostki 1}}, {{Code|typ jednostki 2}}, {{Code|typ jednostki 3}},..., {{Code|typ jednostki i}} - typy jednostek, którym odpowiadają pewne przestrzenie przedmiotowe, dla pozycji bazowej, numerkowej i ogólnej, ** {{Code|dyskusja typu jednostki}}, {{Code|dyskusja typu jednostki 1}}, {{Code|dyskusja typ jednostki 2}}, {{Code|dyskusja typ jednostki 3}},..., {{Code|dyskusja typ jednostki i}} - czy dany typ jednostki ma przedstawiać, jeśli niepusta, przestrzeń dyskusji dla pozycji bazowej, numerkowej i ogólnej, * {{Code|numer jednostki}} - jak parametr {{Code|i}} nie został ustawiony, to wtedy liczy się ta zmienna. Parametr ramki tablicy transportu rodzica szablonu: * {{Code|nazwa przestrzeni nazw}}, {{Code|nazwa przestrzeni nazw 1}}, {{Code|nazwa przestrzeni nazw 2}}, {{Code|nazwa przestrzeni nazw 3}},..., {{Code|nazwa przestrzeni nazw i}} - nazwy przestrzeni nazw dla pozycji bazowej oraz zwykłej i ogólnej numerkowej, * {{Code|typ jednostki}}, {{Code|typ jednostki 1}}, {{Code|typ jednostki 2}}, {{Code|typ jednostki 3}},..., {{Code|typ jednostki i}} - typy jednostek, którym odpowiadają pewne przestrzenie przedmiotowe, dla pozycji bazowej, numerkowej i ogólnej, ** {{Code|dyskusja typu jednostki}}, {{Code|dyskusja typu jednostki 1}}, {{Code|dyskusja typ jednostki 2}}, {{Code|dyskusja typ jednostki 3}},..., {{Code|dyskusja typ jednostki i}} - czy dany typ jednostki ma przedstawiać, jeśli niepusta, przestrzeń dyskusji dla pozycji bazowej, numerkowej i ogólnej. Przykłady: <syntaxhighlight lang="mediawiki"> {{Nazwa szablonu|nazwa przestrzeni nazw=Wikibooks|nazwa przestrzeni nazw 1=Szablon|nazwa przestrzeni nazw i=|nazwa jednostki 2=Wikibooks:Strona}} </syntaxhighlight> W dziecku powiedzmy jest wywołanie, i szukamy nazwy przestrzeni nazw o numerze dwa, która została podana, ale istnieje za to jej wersji ogólna {{Code|nazwa przestrzeni nazw i}} i domyślna {{Code|nazwa przestrzeni nazw}}, ale wtedy dla tego numerkowego liczy się to ogólne z {{Code| i}}, a ponieważ ta nazwa jest pusta, więc będziemy liczyli nazwę przestrzeni nazw z {{Code|nazwa jednostki 2}}: <syntaxhighlight lang="mediawiki"> {{#invoke:Pudełko|Nazwa przestrzeni nazw 2|numer jednostki=2}} </syntaxhighlight> Na podstawie powyższego przykładu otrzymamy wynik o schemacie, nie wyniku, bo tam nie ma zmiennej {{Code|nazwa przestrzeni nazw 1}}, ale jest {{Code|nazwa przestrzeni nazw i}}: <syntaxhighlight lang="mediawiki"> <!-- Ale nie "nazwa przestrzeni nazw 2", bo jej nie ma, ale za to istnieje "nazwa przestrzeni nazw i"; --> <!-- nazwa przestrzeni nazw 2=nazwa przestrzeni nazw i="", a nazwa jednostki 2="Wikibooks:Strona"; --> <!-- Czyli wynik: --> Wikibooks <!-- Widzimy, że wygenerowała się nazwa przestrzeni nazw, którą jest przestrzeń nieprogramowa, ale projektu, wychodząca z nazwy jednostek w tym przypadku z "nazwa jednostki 2"; --> </syntaxhighlight> Nie jest brana w tym powyższym przykładzie zmienna {{Code|nazwa przestrzeni nazw}}, bo jej nie ma, ale za to jest {{Code|nazwa przestrzeni nazw i}}, bo ona występuje jako parametr domyślny ogólny dla parametrów numerkowych. Tytaj jest używwana jest zmienna {{Code|nazwa jednostki 2}} do wygenerowania ostatecznego wyniki,bo jak mozna zauważyć, parametry przestrzenne wskazują na przestrzeń główną, a nazwy jednostek już nie. Przykłady w wikikodzie: * {{Code|{{m|Pudełko|Nazwa przestrzeni nazw 2|numer jednostki{{=}}2}}}} → {{Tt|{{#invoke:Pudełko|Nazwa przestrzeni nazw 2|numer jednostki=2}}}} * {{Code|{{m|Pudełko|Nazwa przestrzeni nazw 2|Szablon|nazwa przestrzeni nazw i{{=}}Moja przestrzeń|numer jednostki{{=}}2}}}} → {{Tt|{{#invoke:Pudełko|Nazwa przestrzeni nazw 2|Szablon|nazwa przestrzeni nazw i=Moja przestrzeń|numer jednostki=2}}}} * {{Code|{{m|Pudełko|Nazwa przestrzeni nazw 2|nazwa przestrzeni nazw 2{{=}}|nazwa jednostki 2{{=}}Szablon:Strona|numer jednostki{{=}}2}}}} → {{Tt|{{#invoke:Pudełko|Nazwa przestrzeni nazw 2|nazwa przestrzeni nazw 2=|nazwa jednostki 2=Szablon:Strona|numer jednostki=2}}}} * {{Code|{{m|Pudełko|Nazwa przestrzeni nazw 2|nazwa przestrzeni nazw i{{=}}|nazwa jednostki 2{{=}}Szablon:Strona|numer jednostki{{=}}2}}}} → {{Tt|{{#invoke:Pudełko|Nazwa przestrzeni nazw 2|nazwa przestrzeni nazw i=|nazwa jednostki 2=Szablon:Strona|numer jednostki=2}}}} * {{Code|{{m|Pudełko|Nazwa przestrzeni nazw 2|Szablon|nazwa przestrzeni nazw{{=}}|nazwa jednostki 2{{=}}Wikibooks:Strona|numer jednostki{{=}}2}}}} → {{Tt|{{#invoke:Pudełko|Nazwa przestrzeni nazw 2|Szablon|nazwa przestrzeni nazw=|nazwa jednostki 2=Wikibooks:Strona|numer jednostki=2}}}} Powyżej dla przykładu podano parametry nie w rodzicu w szablonie, tylko w dziecku, jeśli chodzi o parametry nazw przestrzeni nazw i nazw jednostek, ale ich się za to nie powinno podawać w tych ramach, tylko w szablonach, w których wywoływane są te ramki pudełek {{Code|{{m|Pudełko}}}}, ale tak tutaj tak zrobiono by było najłatwiej sprawdzić działanie tego typu funkcji. Analogicznie możemy podawać parametry typu jednostki, np.: wywołaniu modułowym {{Code|{{m|Pudełko|Nazwa przestrzeni nazw 2|typ jednostki 2{{=}}Podręcznik|nazwa jednostki 2{{=}}Szablon:Strona|umer jednostki{{=}}2}}}} (ale wtedy jest brana przestrzeń nazw z nazwy jednostki), ale o tym więcej w rozdziałach {{Code|{{sr|# p["Typ jednostki"](frame,i)|p=Pudełko}}}}, {{Code|{{sr|#p["Typ jednostki 2"](frame,i)|p=Pudełko}}}}, {{Code|{{sr|#p["Typ jednostki 3"](frame,i)|p=Pudełko}}}} itp. w „{{sr|#Funkcje typu jednostki|p=Pudełko}}”, on definiuje przestrzenie przedmiotowe, ale można użyć parametru dyskusji typu jednostki z wartością niepustą, wtedy wyświetli się nazwa przestrzeni nazw dyskusji. Jeżeli typ jednostki wskazuje na przestrzeń nazw główną, wtedy się liczą parametry nazw jednostek. Również parametry typu jednostki nie powinno się podawać w dziecku w ramce, tylko w rodzicu w szablonie jako parametry, w którym ta ramka jest wywoływana, ale tutaj podano jedynie dla przykładu, jak najłatwiej sprawdzić działanie tych parametrów tej funkcji. Najpierw w funkcji nagłówku brane są parametry nazw przestrzeni nazw, a jeżeli ich nie ma, to parametry typu jednostki, a jeżeli nie ma lub parametry przestrzenne wskazują na przestrzeń główną, i nie ma nazwy jednostki, to generowane są nazwy tej funkcji na podstawie aktualnej strony. === {{Code|p["Nazwa przedmiotowej przestrzeni nazw 2"](frame,...)}} === === {{Code|p["Nazwa przestrzeni nazw dyskusji 2"](frame,...)}} === == Funkcje pełnych nazw jednostki == === {{Code|p["Pełna nazwa dyskusji jednostki"](frame,i)}} === === {{Code|p["Pełna nazwa przedmiotowa jednostki"](frame,i)}} === === {{Code|p["Pełna nazwa jednostki"](frame,i)}} === == Funkcje pełnych nazw jednostki drugiej wersji == === {{Code|p["Pełna nazwa dyskusji jednostki 2"](frame,i)}} === === {{Code|p["Pełna nazwa przedmiotowa jednostki 2"](frame,i)}} === === {{Code|p["Pełna nazwa jednostki 2"](frame,i)}} === == Funkcje pełnych nazw jednostki trzeciej wersji == === {{Code|p["Pełna nazwa dyskusji jednostki 3"](frame,i)}} === === {{Code|p["Pełna nazwa przedmiotowa jednostki 3"](frame,i)}} === === {{Code|p["Pełna nazwa jednostki 3"](frame,i)}} === == Funkcje nazw jednostki == === {{Code|p["Nazwa jednostki"](frame,i)}} === == Funkcje nazw jednostki drugiej wersji == === {{Code|p["Nazwa jednostki 2"](frame,i)}} === === {{Code|p["Nazwa przedmiotowa jednostki 2"](frame,i)}} === === {{Code|p["Nazwa dyskusji jednostki 2"](frame,i)}} === == Funkcje nazw przestrzeni nazw trzeciej wersji == === {{Code|p["Nazwa przestrzeni nazw 3"](frame,i)}} === === {{Code|p["Nazwa przedmiotowej przestrzeni nazw 3"](frame,i)}} === === {{Code|p["Nazwa przestrzeni nazw dyskusji 3"](frame,i)}} === == Funkcje nazw jednostki trzeciej wersji == === {{Code|p["Nazwa jednostki 3"](frame,i)}} === === {{Code|p["Nazwa przedmiotowa jednostki 3"](frame,i)}} === === {{Code|p["Nazwa dyskusji jednostki 3"](frame,i)}} === == Funkcje typu jednostki == === {{Code|p["Typ jednostki"](frame,i)}} === === {{Code|p["Typ jednostki 2"](frame,i)}} === === {{Code|p["Typ jednostki 3"](frame,i)}} === === Funkcje typu jednostki przedmiotowe === ==== {{Code|p["Przedmiotowy typ jednostki"](frame,i)}} ==== ==== {{Code|p["Przedmiotowy typ jednostki 2"](frame,i)}} ==== ==== {{Code|p["Przedmiotowy typ jednostki 3"](frame,i)}} ==== === Fukcje typu jednostki dyskusji === ==== {{Code|p["Dyskusyjny typ jednostki"](frame,i)}} ==== ==== {{Code|p["Dyskusyjny typ jednostki 2"](frame,i)}}} ==== ==== {{Code|p["Dyskusyjny typ jednostki 3"](frame,i)}} ==== == Funkcje chech pudełka == === {{Code|p["Cecha pudełka"](frame)}} === === {{Code|p["Przedmiotowa cecha pudełka"](frame)}} === === {{Code|p["Dyskusyjna cecha pudełka"](frame)}} === == Fukcje ogólnego pudełka == === {{Code|p["Ogólne pudełko"](frame)}} === == Funkcje ogólne == === {{Code|p["Tekst pudełka"](frame)}} === == Funkcje błędów pudełka == === {{Code|p["Błędy pudełka"](frame)}} === === {{Code|p["Przedmiotowe błędy pudełka"](frame)}} === === {{Code|p["Dyskusyjne błędy pudełka"](frame)}} === == Funkcje nazw stron == === {{Code|p["Nazwa strony głównej projektu"](frame,i)}} === === {{Code|p["Nazwa strony głównej dla dzieci projektu"](frame,i)}} === == Funkcje kodów == === {{Code|p["Kod języka"](frame,i)}} === === {{Code|p["Kod projektu"](frame,i)}} === === {{Code|p["Klucz projektu"](frame,i)}} === == Funkcje wiki == === {{Code|p["Inny niż język bieżący wiki"](frame)}} === === {{Code|p["Inne niż lokalne wiki"](frame)}} === === {{Code|p["Inne niż bieżące wiki"](frame)}} === == Funkcje typów parametrów, czy podane je == === {{Code|p["Podano parametry nienazwane"](frame)}} === === {{Code|p["Podano parametry numerowane"](frame)}} === === {{Code|p["Podano parametry nazwane"](frame)}} === == Funkcje kodów tego projektu == === {{Code|p["Kod projektu tego projektu"](frame)}} === === {{Code|p["Kod języka tego projektu"](frame)}} === === {{Code|p["Klucz projektu tego projektu"](frame)}} === == Funkcje stron == === {{Code|p["Strona główna tego projektu"](frame)}} === === {{Code|p["Strona główna dla dzieci tego projektu"](frame)}} === == Funkcje nazw stron drugiej wersji == === {{Code|p["Nazwa strony głównej dla dzieci projektu 2"](frame)}} === === {{Code| p["Nazwa strony głównej projektu 2"](frame)}} === {{BrClear}} <noinclude><!-- -->{{ProstaStronaKoniec}}<!-- -->{{Kategoria|Opisy funkcji, w Lua w Scribunto, w modułach}}<!-- --></noinclude> 8lvbq6pwangwk6cxhldzansoch65inl 540380 540379 2026-04-23T13:12:18Z Persino 2851 /* {{Code|p["Nazwa przestrzeni nazw 2"](frame,...)}} */ 540380 wikitext text/x-wiki <noinclude>{{ProstaStronaStart | nagłówek = {{Podrozdział|{{ld2|Pudełko}}|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 pudelko_modul=require("Module:Pudełko"); </syntaxhighlight> dzięki, któremu można wypisywać funkcje należącego do niego. Posługuje się na parametrach pudełkowych {{Parametr|nazwa przestrzeni nazw}} (czy też bez numerka {{Parametr|nazwa przestrzeni nazw i}} dla tego numerowanego) lub te z numerkiem po jednej spacji w nich (ale nie dla tego z końcówką {{Code| i}}) mogą zostać użyte jako parametry szablonu. Moduł {{Code|{{ld2|Pudełko}}}} przedstawia funkcje nazw w oparciu o funkcje nazw {{Code|{{ld2|Nazwy}}}}, generuje on nazwy za pomocą parametrów pudełkowych podanych poniżej. Parametr {{Parametr|nazwa jednostki}} (lub parametr {{Parametr|cel}} dla numerka tego pierwszego, tego alternatywnego), lub te z numerkiem po jednej spacji w nazwie parametru, albo numerowane numerkami {{Code|1}}, {{Code|2}},..., mogą zostać użyte jako parametry szablonu. Parametry określające rodzaj jednostki {{Parametr|typ jednostki}} z {{Parametr|dyskusja typu jednostki}}, itp. w wersjach z numerkiem po jednej spacji w nich mogą zostać użyte jako parametry szablonu. A te tymi numerowanymi liczbami naturalnymi {{Tt|nazwy jednostki}} od jedynki wzwyż poprzez szablon, w którym są one użyte, one też mogą być użyte z dwukropkiem, te numerowane, na samym początku nazwy, wtedy one są traktowane jako pełne nazwy strony, i wtedy one nie zostaną z interpretowane, że do nich trzeba użyć parametr odpowiedni z nazwą przetrzeni nazw z tego numerowanego, czy ogólny, aby utworzyć znów inną pełną nazwę strony dla tego numerka. Zestawienie: * {{Code|nazwa przestrzeni nazw}} i {{Code|nazwa przestrzeni nazw i}} (ogólna nazwa przestrzeni nazw dla wszystkich numerków, i tych numerowanych jednostek) - i to pierwsze z numerkiem, tzn. {{Code|nazwa przestrzeni nazw 1}}, {{Code|nazwa przestrzeni nazw 2}}, ..., * {{Code|nazwa jednostki}} - i te z numerkiem: {{Code|nazwa jednostki 1}}, {{Code|nazwa jednostki 2}}, ..., lub gdy jest zamiast tego parametrem numerowany, {{Code|1}}, {{Code|2}},..., który dla tego pierwszego może być uznany jako: {{Code|cel}} {{=}} {{Code|1}}, * {{Code|typ jednostki}} (parametr bazowy) i {{Code|typ jednostki i}} (parametr domyślny numerkowy) - i te z numerkiem: {{Code|typ jednostki 1}}, {{Code|typ jednostki 2}}, ..., tzn. gdy chcemy określić z jakim typem jednostki mamy do czynienia w zależności do jakiej przestrzeni nazw należy, a w danej, czy jest on np. programowy, czy tylko jest opisem, jak to bywa w szablonach {{Np|Template|link=tak}}, podobnie jest w przypadku {{Np|Module|link=tak}}, czy jak jest w innych przestrzeniach nazw, ** {{Code|dyskusja typu jednostki}} (parametr bazowy) i {{Code|dyskusja typu jednostki i}} (parametr domyślny numerkowy) - i te z numerkiem: {{Code|dyskusja typu jednostki 1}}, {{Code|dyskusja typu jednostki 2}}, ..., gdy chcemy określić wartością niepustą,że chodzi tutaj o typ jednostki. == {{Code|p.CzyNiepoprawnaNazwa(nazwa_jednostki)}} == Funkcja sprawdzajaca, czy jest poprawnie podana nazwa jednostki, czy ma poprawną nazwę. Znakami tymi, z których nie powinna składać się nazwa jest {{Code|<nowiki>{}<>|[]#\n</nowiki>}} i dodatkowo znak {{Code|&#127;}} (kod {{Code|{{Nowiki|&#127;}}}}). Też nie może składać się z trzech znaków tyldy, tzn. {{Code|<nowiki>~~~</nowiki>}}. Również w swojej budowie nie może składać się ze kodów {{Strong|HTML}} literowych o wzorze {{Code|{{Nowiki|&(%a+);}}}}. Natomiast może składać się z {{Code|{{Nowiki|&#(%d+);}}}} i {{Code|{{Nowiki|&#x(%x+);}}}}, ale w pierw te kody muszą być zamienione na normalne znaki. Skrótowa definicja funkcji: <syntaxhighlight lang="lua"> function p.CzyNiepoprawnaNazwa(nazwa_jednostki)...end; </syntaxhighlight> Wtedy ciało funkcji tej, czyli jego definicja w środku, jest: <syntaxhighlight lang="lua"> -- Moduł: "Moduł:Html/dane", służy do ładowania znaku o kodzie HTML "&#127;"; local html_dane_modul=mw.loadData("Module:Html/dane"); return mw.ustring.match(nazwa_jednostki,"[{}<>|%[%]#\n"..html_dane_modul.znak_127.."]+") or mw.ustring.match(nazwa_jednostki,"~~~") or mw.ustring.match(nazwa_jednostki,"&(%a+);"); </syntaxhighlight> Parametry: * {{Code|nazwa_jednostki}} - nazwa jednostki do sprawdzenia. Przykłady: <syntaxhighlight lang="lua"> local pudelko_modul=require("Module:Pudełko"); -- Podana przykładowa niepoprawna nazwa jedostki local nazwa_jednostki="Nazwa pliku [[Nazwa linku w pliku]]"; -- Fukcja zwróci wartość: local czy_poprawna_nazwa=true; local czy_poprawna_nazwa=pudelko_modul.CzyNiepoprawnaNazwa(nazwa_jednostki); </syntaxhighlight> == Funkcje nazw przestrzeni nazw == === {{Code|p["Nazwa przestrzeni nazw"](frame,...)}} === Funkcja pisze nazwę przestrzeni nazw, niezależnie, czy to jest przedmiotowa, czy dyskusji, według podanej w zmiennej {{Code|nazwa przestrzeni nazw}} dla pozycja bazowej w podanych parametrach szablonu rodzicu ramki dziecka, lub dla innej pozycji należy parametr podawać w formie {{Code|nazwa przestrzeni nazw 1}}, {{Code|nazwa przestrzeni nazw 2}}, {{Code|nazwa przestrzeni nazw 3}},..., lub te parametry można podać w postaci ogólnej {{Code|nazwa przestrzeni nazw i}}. Parametry podaje się w parametrach rodzica wywołania tej funkcji {{Code|{{m|Pudełko|Nazwa przestrzeni nazw}}}} (ale ich nie trzeba podawać w dziecku, ale można) i w parametrach dziecka, jeśli chodzi o zmienną {{Code|numer jednostki}}, czyli np.: {{Code|{{m|Pudełko|Nazwa przestrzeni nazw|numer jednostki{{=}}<jakaś liczba całkowita dodatnia>}}}}. Te parametry przestrzenne zamiast w rodzicu w szablonie można podać w ramce dziecka, wtedy parametry dziecka mają pierwszeństwo. Przestrzeń nazw z parametrów nazw przestrzennych może odpowiadać wartości przestrzeni głównej, to wtedy odpowiednia przestrzeń nazw z parametru nazwy jednostki się nie liczy w tej funkcji, aby się liczyła należy użyć funkcji {{Code|{{sr|#p["Nazwa przestrzeni nazw 2"](frame,...)|p=Pudełko}}}}. Definicja skrótowa funkcji: <syntaxhighlight lang="lua"> p["Nazwa przestrzeni nazw"]=function(frame,czy_uwzglednic_alternatywna_nazwe,i)...end; </syntaxhighlight> Wtedy ciało funkcji tej, czyli jego definicja w środku, jest: <syntaxhighlight lang="lua"> -- Jest liczony numer parametru nazwy przestrzeni nazw, domyslnie chodzi tu o numer bazowy parametrów przestrzennych; local numer_jednostki=i or frame.args["numer jednostki"]; local liczba_numer_jednostki=((numer_jednostki)and(tonumber(numer_jednostki))or 0); local pudelko_pomocne_modul=require("Module:Pudełko/Pomocne"); -- Liczy nazwę przestrzeni nazw na podstawie podanych parametrów; return pudelko_pomocne_modul.Nazwa_przestrzeni_nazw(frame,0, czy_uwzglednic_alternatywna_nazwe,liczba_numer_jednostki); </syntaxhighlight> Parametry funkcji: * {{Code|frame}} - tablica ramki tablicy transportu, * {{Code|czy_uwzglednic_alternatywna_nazwe}} - czy ma uwzględniać nazwę przestrzeni nazw domyślną szablonu, dostępne wartości: {{Code|false}}, w której nazwa domyślna nie jest uwzględniana wtedy, oraz {{Code|nil}} i {{Code|true}}, które oznaczają to samo, w tym jeżeli ona jest uwzględniana, wtedy jest brany parametr pierwszy dziecka, który musi istnieć przy takiej wartości tego parametru, tzn. {{Code|{{m|Pudełko|Nazwa przestrzeni nazw|Szablon}}}}, a nazwa uzyskana nazwy przestrzeni nazw jest w takim przypadku błędna, a jeżeli nazwa domyślna jest błędna, czyli {{Code|{{m|Pudełko|Nazwa przestrzeni nazw|Moja przestrzeń}}}}, wtedy funkcja zwraca stan błędu {{Code|(błąd)}}. * {{Code|i}} - numer zmiennej nazwy przestrzeni nazw. Funkcja wykorzystuje {{Code|{{sr|#p.Nazwa_przestrzeni_nazw(frame,...)|p=Pudełko/Pomocne}}}} do wyznaczania ogólnego nazwy przestrzeni nazw dla pozycji bazowej i numerkowej, tzn. dla pozycji: jeden, dwa, trzy,..., itd, i ich ogólnej. Parametry ramki tablicy transportu dziecka: * {{Code|nazwa przestrzeni nazw}}, {{Code|nazwa przestrzeni nazw 1}}, {{Code|nazwa przestrzeni nazw 2}}, {{Code|nazwa przestrzeni nazw 3}},..., {{Code|nazwa przestrzeni nazw i}} - nazwy przestrzeni nazw dla pozycji bazowej, numerkowej i ogólnej, * {{Code|typ jednostki}}, {{Code|typ jednostki 1}}, {{Code|typ jednostki 2}}, {{Code|typ jednostki 3}},..., {{Code|typ jednostki i}} - typy jednostek, którym odpowiadają pewne przestrzenie przedmiotowe, dla pozycji bazowej, numerkowej i ogólnej, ** {{Code|dyskusja typu jednostki}}, {{Code|dyskusja typu jednostki 1}}, {{Code|dyskusja typ jednostki 2}}, {{Code|dyskusja typ jednostki 3}},..., {{Code|dyskusja typ jednostki i}} - czy dany typ jednostki ma przedstawiać, jeśli niepusta, przestrzeń dyskusji dla pozycji bazowej, numerkowej i ogólnej, * {{Code|numer jednostki}} - jak parametr {{Code|i}} nie został ustawiony, to wtedy liczy się ta zmienna. Parametr ramki tablicy transportu rodzica szablonu: * {{Code|nazwa przestrzeni nazw}}, {{Code|nazwa przestrzeni nazw 1}}, {{Code|nazwa przestrzeni nazw 2}}, {{Code|nazwa przestrzeni nazw 3}},..., {{Code|nazwa przestrzeni nazw i}} - nazwy przestrzeni nazw dla pozycji bazowej oraz zwykłej i ogólnej numerkowej, * {{Code|typ jednostki}}, {{Code|typ jednostki 1}}, {{Code|typ jednostki 2}}, {{Code|typ jednostki 3}},..., {{Code|typ jednostki i}} - typy jednostek, którym odpowiadają pewne przestrzenie przedmiotowe, dla pozycji bazowej, numerkowej i ogólnej, ** {{Code|dyskusja typu jednostki}}, {{Code|dyskusja typu jednostki 1}}, {{Code|dyskusja typ jednostki 2}}, {{Code|dyskusja typ jednostki 3}},..., {{Code|dyskusja typ jednostki i}} - czy dany typ jednostki ma przedstawiać, jeśli niepusta, przestrzeń dyskusji dla pozycji bazowej, numerkowej i ogólnej. Przykłady: <syntaxhighlight lang="mediawiki"> {{Nazwa szablonu|nazwa przestrzeni nazw=Wikibooks|nazwa przestrzeni nazw 2=Szablon|nazwa przestrzeni nazw i=Moduł}} </syntaxhighlight> W dziecku powiedzmy jest wywołanie, i szukamy nazwy przestrzeni nazw o numerze dwa, która nie została podana, ale istnieje za to jej wersji ogólna {{Code|nazwa przestrzeni nazw i}} i domyślna {{Code|nazwa przestrzeni nazw}}: <syntaxhighlight lang="mediawiki"> {{#invoke:Pudełko|Nazwa przestrzeni nazw|numer jednostki=1}} </syntaxhighlight> Na podstawie powyższego przykładu otrzymamy wynik o schemacie, nie wyniku, bo tam nie ma zmiennej {{Code|nazwa przestrzeni nazw 1}}, ale jest {{Code|nazwa przestrzeni nazw i}}: <syntaxhighlight lang="mediawiki"> <!-- Ale nie "nazwa przestrzeni nazw", bo jej nie ma, ale za to istnieje "nazwa przestrzeni nazw i"; --> <!-- nazwa przestrzeni nazw 2=nazwa przestrzeni nazw i=Moduł; --> <!-- Czyli wynik: --> Moduł <!-- Widzimy, że wygenerowała się nazwa przestrzeni nazw, którą jest przestrzeń programowa, którą również jest "Szablon"; --> </syntaxhighlight> Nie jest brana w tym powyższym przykładzie zmienna {{Code|nazwa przestrzeni nazw}}, bo jej nie ma, ale za to jest {{Code|nazwa przestrzeni nazw i}}, bo ona występuje jako parametr domyślny ogólny dla parametrów numerkowych. Przykłady w wikikodzie: * {{Code|{{m|Pudełko|Nazwa przestrzeni nazw|numer jednostki{{=}}2}}}} → {{Tt|{{#invoke:Pudełko|Nazwa przestrzeni nazw|numer jednostki=2}}}} * {{Code|{{m|Pudełko|Nazwa przestrzeni nazw|Szablon|nazwa przestrzeni nazw i{{=}}Moja przestrzeń|numer jednostki{{=}}2}}}} → {{Tt|{{#invoke:Pudełko|Nazwa przestrzeni nazw|Szablon|nazwa przestrzeni nazw i=Moja przestrzeń|numer jednostki=2}}}} * {{Code|{{m|Pudełko|Nazwa przestrzeni nazw|nazwa przestrzeni nazw 2{{=}}Szablon|numer jednostki{{=}}2}}}} → {{Tt|{{#invoke:Pudełko|Nazwa przestrzeni nazw|nazwa przestrzeni nazw 2=Szablon|numer jednostki=2}}}} * {{Code|{{m|Pudełko|Nazwa przestrzeni nazw|nazwa przestrzeni nazw 2{{=}}Szablon|numer jednostki{{=}}2}}}} → {{Tt|{{#invoke:Pudełko|Nazwa przestrzeni nazw|nazwa przestrzeni nazw i=Szablon|numer jednostki=2}}}} * {{Code|{{m|Pudełko|Nazwa przestrzeni nazw|nazwa przestrzeni nazw{{=}}Szablon|numer jednostki{{=}}2}}}} → {{Tt|{{#invoke:Pudełko|Nazwa przestrzeni nazw|nazwa przestrzeni nazw=Szablon|numer jednostki=2}}}} Powyżej dla przykładu podano parametry nie w rodzicu w szablonie, tylko w dziecku, jeśli chodzi o parametry nazw przestrzeni nazw, ale ich się za to nie powinno podawać w tych ramach, tylko w szablonach, w których wywoływane są te ramki pudełek {{Code|{{m|Pudełko}}}}, ale tak tutaj tak zrobiono by było najłatwiej sprawdzić działanie tego typu funkcji. Analogicznie możemy podawać parametry typu jednostki, np.: wywołaniu modułowym {{Code|{{m|Pudełko|Nazwa przestrzeni nazw|typ jednostki 2{{=}}strona szablonu|numer jednostki{{=}}2}}}}, ale o tym więcej w rozdziałach {{Code|{{sr|# p["Typ jednostki"](frame,i)|p=Pudełko}}}}, {{Code|{{sr|#p["Typ jednostki 2"](frame,i)|p=Pudełko}}}}, {{Code|{{sr|#p["Typ jednostki 3"](frame,i)|p=Pudełko}}}} itp. w „{{sr|#Funkcje typu jednostki|p=Pudełko}}”, on definiuje przestrzenie przedmiotowe, ale można użyć parametru dyskusji typu jednostki z wartością niepustą, wtedy wyświetli się nazwa przestrzeni nazw dyskusji. Również parametry typu jednostki nie powinno się podawać w dziecku w ramce, tylko w rodzicu w szablonie jako parametry, w którym ta ramka jest wywoływana, ale tutaj podano jedynie dla przykładu, jak najłatwiej sprawdzić działanie tych parametrów tej funkcji. Najpierw w funkcji nagłówku brane są parametry nazw przestrzeni nazw, a jeżeli ich nie ma, to parametry typu jednostki, a jeżeli nie ma, to generowane są nazwy na podstawie aktualnego modułu. === {{Code|p["Nazwa przedmiotowej przestrzeni nazw"](frame,...)}} === Funkcja pisze przedmiotową nazwę przestrzeni nazw jakikolwiek nazwy przestrzeni nazw (tzn. nazwę przedmiotową nazwy przestrzenie nazw, czyli nie dyskusji, zamieniana jest na nią samą, czyli identyfikator przestrzeni się nie zmienia, a dyskusji, nie przedmiotową, przekształca się na przedmiotową jej odpowiadającą, czyli w tym przypadku identyfikator przestrzeni zmniejsza się o numer mniej), według podanej w zmiennej {{Code|nazwa przestrzeni nazw}} dla pozycja bazowej w podanych parametrach szablonu rodzicu ramki dziecka, lub dla innej pozycji należy parametr podawać w formie {{Code|nazwa przestrzeni nazw 1}}, {{Code|nazwa przestrzeni nazw 2}}, {{Code|nazwa przestrzeni nazw 3}},..., lub te parametry można podać w postaci ogólnej {{Code|nazwa przestrzeni nazw i}}. Parametry podaje się w parametrach rodzica wywołania tej funkcji {{Code|{{m|Pudełko|Nazwa przedmiotowej przestrzeni nazw}}}} (ale ich nie trzeba podawać w dziecku, ale można) i w parametrach dziecka, jeśli chodzi o zmienną {{Code|numer jednostki}}, czyli np.: {{Code|{{m|Pudełko|Nazwa przedmiotowej przestrzeni nazw|numer jednostki{{=}}<jakaś liczba całkowita dodatnia>}}}}. Te parametry przestrzenne zamiast w rodzicu w szablonie można podać w ramce dziecka, wtedy parametry dziecka mają pierwszeństwo. Parametry przestrzenne mogą mogą być podane w postaci przestrzeni przedmiotowej lub dyskusji, ale ta funkcja zawsze ją zamienia na przedmiotową. Przestrzeń nazw z parametrów nazw przestrzennych może odpowiadać wartości przestrzeni głównej, to wtedy odpowiednia przestrzeń nazw z parametru nazwy jednostki się nie liczy w tej funkcji, aby się liczyła należy użyć funkcji {{Code|{{sr|#p["Nazwa przedmiotowej przestrzeni nazw 2"](frame,...)|p=Pudełko}}}}. Definicja skrótowa funkcji: <syntaxhighlight lang="lua"> p["Nazwa przedmiotowej przestrzeni nazw"]=function(frame,czy_uwzglednic_alternatywna_nazwe,i)...end; </syntaxhighlight> Wtedy ciało funkcji tej, czyli jego definicja w środku, jest: <syntaxhighlight lang="lua"> -- Jest liczony numer parametru nazwy przestrzeni nazw, domyslnie chodzi tu o numer bazowy parametrów przestrzennych; local numer_jednostki=i or frame.args["numer jednostki"]; local liczba_numer_jednostki=((numer_jednostki)and(tonumber(numer_jednostki))or 0); local pudelko_pomocne_modul=require("Module:Pudełko/Pomocne"); -- Liczy nazwę przestrzeni nazw przedmiotową na podstawie podanych parametrów; return pudelko_pomocne_modul.Nazwa_przestrzeni_nazw(frame,1, czy_uwzglednic_alternatywna_nazwe,liczba_numer_jednostki); </syntaxhighlight> Parametry funkcji: * {{Code|frame}} - tablica ramki tablicy transportu, * {{Code|czy_uwzglednic_alternatywna_nazwe}} - czy ma uwzględniać nazwę przestrzeni nazw domyślną szablonu, dostępne wartości: {{Code|false}}, w której nazwa domyślna nie jest uwzględniana wtedy, oraz {{Code|nil}} i {{Code|true}}, które oznaczają to samo, w tym jeżeli ona jest uwzględniana, wtedy jest brany parametr pierwszy dziecka, który musi istnieć przy takiej wartości tego parametru, tzn. {{Code|{{m|Pudełko|Nazwa przedmiotowej przestrzeni nazw|Dyskusja szablonu}}}} - ta nazwa domyślna zostanie zamieniona na przedmiotową, a jak ona by była przedmiotowa, to żadnej zamiany by nie było, a nazwa uzyskana z nazwy przestrzeni nazw z parametrów przestrzennych jest w takim przypadku błędna, to w takim razie brany jest ten parametr, a jeżeli ta nazwa domyślna jest błędna, czyli {{Code|{{m|Pudełko|Nazwa przedmiotowej przestrzeni nazw|Moja przestrzeń}}}}, wtedy funkcja zwraca stan błędu {{Code|(błąd)}}. * {{Code|i}} - numer zmiennej nazwy przestrzeni nazw. Funkcja wykorzystuje {{Code|{{sr|#p.Nazwa_przestrzeni_nazw(frame,...)|p=Pudełko/Pomocne}}}} do wyznaczania ogólnego nazwy przestrzeni nazw dla pozycji bazowej i numerkowej, tzn. dla pozycji: jeden, dwa, trzy,..., itd, i ich ogólnej. Parametry ramki tablicy transportu dziecka: * {{Code|nazwa przestrzeni nazw}}, {{Code|nazwa przestrzeni nazw 1}}, {{Code|nazwa przestrzeni nazw 2}}, {{Code|nazwa przestrzeni nazw 3}},..., {{Code|nazwa przestrzeni nazw i}} - nazwy przestrzeni nazw dla pozycji bazowej, numerkowej i ogólnej, * {{Code|typ jednostki}}, {{Code|typ jednostki 1}}, {{Code|typ jednostki 2}}, {{Code|typ jednostki 3}},..., {{Code|typ jednostki i}} - typy jednostek, którym odpowiadają pewne przestrzenie przedmiotowe, dla pozycji bazowej, numerkowej i ogólnej, ** {{Code|dyskusja typu jednostki}}, {{Code|dyskusja typu jednostki 1}}, {{Code|dyskusja typ jednostki 2}}, {{Code|dyskusja typ jednostki 3}},..., {{Code|dyskusja typ jednostki i}} - czy dany typ jednostki ma przedstawiać, jeśli niepusta, przestrzeń dyskusji dla pozycji bazowej, numerkowej i ogólnej, * {{Code|numer jednostki}} - jak parametr {{Code|i}} nie został ustawiony, to wtedy liczy się ta zmienna. Parametr ramki tablicy transportu rodzica szablonu: * {{Code|nazwa przestrzeni nazw}}, {{Code|nazwa przestrzeni nazw 1}}, {{Code|nazwa przestrzeni nazw 2}}, {{Code|nazwa przestrzeni nazw 3}},..., {{Code|nazwa przestrzeni nazw i}} - nazwy przestrzeni nazw dla pozycji bazowej oraz zwykłej i ogólnej numerkowej, * {{Code|typ jednostki}}, {{Code|typ jednostki 1}}, {{Code|typ jednostki 2}}, {{Code|typ jednostki 3}},..., {{Code|typ jednostki i}} - typy jednostek, którym odpowiadają pewne przestrzenie przedmiotowe, dla pozycji bazowej, numerkowej i ogólnej, ** {{Code|dyskusja typu jednostki}}, {{Code|dyskusja typu jednostki 1}}, {{Code|dyskusja typ jednostki 2}}, {{Code|dyskusja typ jednostki 3}},..., {{Code|dyskusja typ jednostki i}} - czy dany typ jednostki ma przedstawiać, jeśli niepusta, przestrzeń dyskusji dla pozycji bazowej, numerkowej i ogólnej. Przykłady: <syntaxhighlight lang="mediawiki"> {{Nazwa szablonu|nazwa przestrzeni nazw=Dyskusja Wikibooks|nazwa przestrzeni nazw 2=Dyskusja szablonu|nazwa przestrzeni nazw i=Dyskusja modułu}} </syntaxhighlight> W dziecku powiedzmy jest wywołanie, i szukamy nazwy przestrzeni nazw o numerze dwa, która nie została podana, ale istnieje za to jej wersji ogólna {{Code|nazwa przestrzeni nazw i}} i domyślna {{Code|nazwa przestrzeni nazw}}: <syntaxhighlight lang="mediawiki"> {{#invoke:Pudełko|Nazwa przedmiotowej przestrzeni nazw|numer jednostki=1}} </syntaxhighlight> Na podstawie powyższego przykładu otrzymamy wynik o schemacie, nie wyniku, bo tam nie ma zmiennej {{Code|nazwa przestrzeni nazw 1}}, ale jest {{Code|nazwa przestrzeni nazw i}}: <syntaxhighlight lang="mediawiki"> <!-- Ale nie "nazwa przestrzeni nazw", bo jej nie ma, ale za to istnieje "nazwa przestrzeni nazw i"; --> <!-- nazwa przestrzeni nazw 2=nazwa przestrzeni nazw i=Dyskusja modułu; --> <!-- Czyli wynik: --> Moduł <!-- Widzimy, że wygenerowała się nazwa przestrzeni nazw, którą jest przestrzeń przedmiotowa programowa przestrzeni dyskusji "Dyskusja modułu", którą również jest "Szablon" jego przestrzeni dyskusji "Dyskusja szablonu", a dla ich przestrzeni przedmiotowej, zamiast dyskusji, to samo przekształca się na to samo; --> </syntaxhighlight> Nie jest brana w tym powyższym przykładzie zmienna {{Code|nazwa przestrzeni nazw}}, bo jej nie ma, ale za to jest {{Code|nazwa przestrzeni nazw i}}, bo ona występuje jako parametr domyślny ogólny dla parametrów numerkowych. Przykłady w wikikodzie: * {{Code|{{m|Pudełko|Nazwa przedmiotowej przestrzeni nazw|numer jednostki{{=}}2}}}} → {{Tt|{{#invoke:Pudełko|Nazwa przedmiotowej przestrzeni nazw|numer jednostki=2}}}} * {{Code|{{m|Pudełko|Nazwa przedmiotowej przestrzeni nazw|Dyskusja szablonu|nazwa przestrzeni nazw i{{=}}Moja przestrzeń|numer jednostki{{=}}2}}}} → {{Tt|{{#invoke:Pudełko|Nazwa przedmiotowej przestrzeni nazw|Dyskusja szablonu|nazwa przestrzeni nazw i=Moja przestrzeń|numer jednostki=2}}}} * {{Code|{{m|Pudełko|Nazwa przedmiotowej przestrzeni nazw|nazwa przestrzeni nazw 2{{=}}Dyskusja szablonu|numer jednostki{{=}}2}}}} → {{Tt|{{#invoke:Pudełko|Nazwa przedmiotowej przestrzeni nazw|nazwa przestrzeni nazw 2=Dyskusja szablonu|numer jednostki=2}}}} * {{Code|{{m|Pudełko|Nazwa przedmiotowej przestrzeni nazw|nazwa przestrzeni nazw 2{{=}}Dyskusja szablonu|numer jednostki{{=}}2}}}} → {{Tt|{{#invoke:Pudełko|Nazwa przedmiotowej przestrzeni nazw|nazwa przestrzeni nazw i=Dyskusja szablonu|numer jednostki=2}}}} * {{Code|{{m|Pudełko|Nazwa przedmiotowej przestrzeni nazw|nazwa przestrzeni nazw{{=}}Dyskusja szablonu|numer jednostki{{=}}2}}}} → {{Tt|{{#invoke:Pudełko|Nazwa przedmiotowej przestrzeni nazw|nazwa przestrzeni nazw=Dyskusja szablonu|numer jednostki=2}}}} Powyżej dla przykładu podano parametry nie w rodzicu w szablonie, tylko w dziecku, jeśli chodzi o parametry nazw przestrzeni nazw, ale ich się za to nie powinno podawać w tych ramach, tylko w szablonach, w których wywoływane są te ramki pudełek {{Code|{{m|Pudełko}}}}, ale tak tutaj tak zrobiono by było najłatwiej sprawdzić działanie tego typu funkcji. Analogicznie możemy podawać parametry typu jednostki, np.: wywołaniu modułowym {{Code|{{m|Pudełko|Nazwa przedmiotowej przestrzeni nazw|typ jednostki 2{{=}}strona szablonu|numer jednostki{{=}}2}}}}, ale o tym więcej w rozdziałach {{Code|{{sr|# p["Typ jednostki"](frame,i)|p=Pudełko}}}}, {{Code|{{sr|#p["Typ jednostki 2"](frame,i)|p=Pudełko}}}}, {{Code|{{sr|#p["Typ jednostki 3"](frame,i)|p=Pudełko}}}} itp. w „{{sr|#Funkcje typu jednostki|p=Pudełko}}”, ale wtedy ta sama nazwa przestrzeni nazw reprezentowana przez {{Parametr|typ jednostki 2|strona szablonu}}, jest zamieniana na to samo, lepiej jest tutaj używać parametrów przestrzennych nazw niż typu jednostki, bo typ jednostki ma taką samą wartość dla przestrzeni przedmiotowej, co dyskusji. Tutaj parametr dyskusji typu jednostki bazowy i numerkowy ogólny, czy szczegółowy, nie gra roli, bo nawet, gdy wygenerujemy nazwę przestrzeni dyskusji za pomoca tego parametru, to i tak otrzymamy na samym końcu jego nazwę przedmiotową. Również parametry typu jednostki nie powinno się podawać w dziecku w ramce, tylko w rodzicu w szablonie jako parametry, w którym ta ramka jest wywoływana, ale tutaj podano jedynie dla przykładu, jak najłatwiej sprawdzić działanie tych parametrów tej funkcji. Najpierw w funkcji nagłówku brane są parametry nazw przestrzeni nazw, a jeżeli ich nie ma, to parametry typu jednostki, a jeżeli nie ma, to generowane są nazwy na podstawie aktualnego modułu. === {{Code|p["Nazwa przestrzeni nazw dyskusji"](frame,...)}} === Funkcja pisze nazwę przestrzeni nazw dyskusji jakikolwiek nazwy przestrzeni nazw (tzn. nazwę przedmiotową nazwy przestrzenie nazw, czyli nie dyskusji, zamieniana jest na dyskusji, czyli identyfikator przestrzeni się zmienia jeden wyżej, a dyskusji, nie przedmiotową, przekształca się na tą samą), według podanej w zmiennej {{Code|nazwa przestrzeni nazw}} dla pozycja bazowej w podanych parametrach szablonu rodzicu ramki dziecka, lub dla innej pozycji należy parametr podawać w formie {{Code|nazwa przestrzeni nazw 1}}, {{Code|nazwa przestrzeni nazw 2}}, {{Code|nazwa przestrzeni nazw 3}},..., lub te parametry można podać w postaci ogólnej {{Code|nazwa przestrzeni nazw i}}. Parametry podaje się w parametrach rodzica wywołania tej funkcji {{Code|{{m|Pudełko|Nazwa przestrzeni nazw dyskusji}}}} (ale ich nie trzeba podawać w dziecku, ale można) i w parametrach dziecka, jeśli chodzi o zmienną {{Code|numer jednostki}}, czyli np.: {{Code|{{m|Pudełko|Nazwa przestrzeni nazw dyskusji|numer jednostki{{=}}<jakaś liczba całkowita dodatnia>}}}}. Te parametry przestrzenne zamiast w rodzicu w szablonie można podać w ramce dziecka, wtedy parametry dziecka mają pierwszeństwo. Parametry przestrzenne mogą mogą być podane w postaci przestrzeni przedmiotowej lub dyskusji, ale ta funkcja zawsze ją zamienia na dyskusji. Przestrzeń nazw z parametrów nazw przestrzennych może odpowiadać wartości przestrzeni głównej, to wtedy odpowiednia przestrzeń nazw z parametru nazwy jednostki się nie liczy w tej funkcji, aby się liczyła należy użyć funkcji {{Code|{{sr|#p["Nazwa przestrzeni nazw dyskusji 2"](frame,...)|p=Pudełko}}}}. Definicja skrótowa funkcji: <syntaxhighlight lang="lua"> p["Nazwa przestrzeni nazw dyskusji"]=function(frame,czy_uwzglednic_alternatywna_nazwe,i)...end; </syntaxhighlight> Wtedy ciało funkcji tej, czyli jego definicja w środku, jest: <syntaxhighlight lang="lua"> -- Jest liczony numer parametru nazwy przestrzeni nazw, domyslnie chodzi tu o numer bazowy parametrów przestrzennych; local numer_jednostki=i or frame.args["numer jednostki"]; local liczba_numer_jednostki=((numer_jednostki)and(tonumber(numer_jednostki))or 0); local pudelko_pomocne_modul=require("Module:Pudełko/Pomocne"); -- Liczy nazwę przestrzeni nazw dyskusji na podstawie podanych parametrów; return pudelko_pomocne_modul.Nazwa_przestrzeni_nazw(frame,2, czy_uwzglednic_alternatywna_nazwe,liczba_numer_jednostki); </syntaxhighlight> Parametry funkcji: * {{Code|frame}} - tablica ramki tablicy transportu, * {{Code|czy_uwzglednic_alternatywna_nazwe}} - czy ma uwzględniać nazwę przestrzeni nazw domyślną szablonu, dostępne wartości: {{Code|false}}, w której nazwa domyślna nie jest uwzględniana wtedy, oraz {{Code|nil}} i {{Code|true}}, które oznaczają to samo, w tym jeżeli ona jest uwzględniana, wtedy jest brany parametr pierwszy dziecka, który musi istnieć przy takiej wartości tego parametru, tzn. {{Code|{{m|Pudełko|Nazwa przestrzeni nazw dyskusji|Szablon}}}} - ta nazwa domyślna zostanie przekształcona na dyskusji, a jeżeli ona by była dyskusji, to nie byłoby żadnego przekształcenia, a nazwa uzyskana nazwy przestrzeni nazw z parametrów przestrzennych jest w takim przypadku błędna, to w takim razie brany jest ten parametr, a jeżeli nazwa domyślna jest błędna, czyli {{Code|{{m|Pudełko|Nazwa przestrzeni nazw dyskusji|Moja przestrzeń}}}}, wtedy funkcja zwraca stan błędu {{Code|(błąd)}}. * {{Code|i}} - numer zmiennej nazwy przestrzeni nazw. Funkcja wykorzystuje {{Code|{{sr|#p.Nazwa_przestrzeni_nazw(frame,...)|p=Pudełko/Pomocne}}}} do wyznaczania ogólnego nazwy przestrzeni nazw dla pozycji bazowej i numerkowej, tzn. dla pozycji: jeden, dwa, trzy,..., itd, i ich ogólnej. Parametry ramki tablicy transportu dziecka: * {{Code|nazwa przestrzeni nazw}}, {{Code|nazwa przestrzeni nazw 1}}, {{Code|nazwa przestrzeni nazw 2}}, {{Code|nazwa przestrzeni nazw 3}},..., {{Code|nazwa przestrzeni nazw i}} - nazwy przestrzeni nazw dla pozycji bazowej, numerkowej i ogólnej, * {{Code|typ jednostki}}, {{Code|typ jednostki 1}}, {{Code|typ jednostki 2}}, {{Code|typ jednostki 3}},..., {{Code|typ jednostki i}} - typy jednostek, którym odpowiadają pewne przestrzenie przedmiotowe, dla pozycji bazowej, numerkowej i ogólnej, ** {{Code|dyskusja typu jednostki}}, {{Code|dyskusja typu jednostki 1}}, {{Code|dyskusja typ jednostki 2}}, {{Code|dyskusja typ jednostki 3}},..., {{Code|dyskusja typ jednostki i}} - czy dany typ jednostki ma przedstawiać, jeśli niepusta, przestrzeń dyskusji dla pozycji bazowej, numerkowej i ogólnej, * {{Code|numer jednostki}} - jak parametr {{Code|i}} nie został ustawiony, to wtedy liczy się ta zmienna. Parametr ramki tablicy transportu rodzica szablonu: * {{Code|nazwa przestrzeni nazw}}, {{Code|nazwa przestrzeni nazw 1}}, {{Code|nazwa przestrzeni nazw 2}}, {{Code|nazwa przestrzeni nazw 3}},..., {{Code|nazwa przestrzeni nazw i}} - nazwy przestrzeni nazw dla pozycji bazowej oraz zwykłej i ogólnej numerkowej, * {{Code|typ jednostki}}, {{Code|typ jednostki 1}}, {{Code|typ jednostki 2}}, {{Code|typ jednostki 3}},..., {{Code|typ jednostki i}} - typy jednostek, którym odpowiadają pewne przestrzenie przedmiotowe, dla pozycji bazowej, numerkowej i ogólnej, ** {{Code|dyskusja typu jednostki}}, {{Code|dyskusja typu jednostki 1}}, {{Code|dyskusja typ jednostki 2}}, {{Code|dyskusja typ jednostki 3}},..., {{Code|dyskusja typ jednostki i}} - czy dany typ jednostki ma przedstawiać, jeśli niepusta, przestrzeń dyskusji dla pozycji bazowej, numerkowej i ogólnej. Przykłady: <syntaxhighlight lang="mediawiki"> {{Nazwa szablonu|nazwa przestrzeni nazw=Wikibooks|nazwa przestrzeni nazw 2=Szablon|nazwa przestrzeni nazw i=Moduł}} </syntaxhighlight> W dziecku powiedzmy jest wywołanie, i szukamy nazwy przestrzeni nazw o numerze dwa, która nie została podana, ale istnieje za to jej wersji ogólna {{Code|nazwa przestrzeni nazw i}} i domyślna {{Code|nazwa przestrzeni nazw}}: <syntaxhighlight lang="mediawiki"> {{#invoke:Pudełko|Nazwa przestrzeni nazw dyskusji|numer jednostki=1}} </syntaxhighlight> Na podstawie powyższego przykładu otrzymamy wynik o schemacie, nie wyniku, bo tam nie ma zmiennej {{Code|nazwa przestrzeni nazw 1}}, ale jest {{Code|nazwa przestrzeni nazw i}}: <syntaxhighlight lang="mediawiki"> <!-- Ale nie "nazwa przestrzeni nazw", bo jej nie ma, ale za to istnieje "nazwa przestrzeni nazw i"; --> <!-- nazwa przestrzeni nazw 2=nazwa przestrzeni nazw i=Moduł; --> <!-- Czyli wynik: --> Dyskusja modułu <!-- Widzimy, że wygenerowała się nazwa przestrzeni nazw, którą jest przestrzeń dyskusji przestrzeni programowej przestrzeni przedmiotowej "Moduł", którą również jest "Szablon" jego przestrzeni dyskusji "Dyskusja szablonu", a dla ich przestrzeni przedmiotowej, zamiast dyskusji, to przekształca się na dyskusji jej odpowiadającą; --> </syntaxhighlight> Nie jest brana w tym powyższym przykładzie zmienna {{Code|nazwa przestrzeni nazw}}, bo jej nie ma, ale za to jest {{Code|nazwa przestrzeni nazw i}}, bo ona występuje jako parametr domyślny ogólny dla parametrów numerkowych. Przykłady w wikikodzie: * {{Code|{{m|Pudełko|Nazwa przestrzeni nazw dyskusji|numer jednostki{{=}}2}}}} → {{Tt|{{#invoke:Pudełko|Nazwa przestrzeni nazw dyskusji|numer jednostki=2}}}} * {{Code|{{m|Pudełko|Nazwa przestrzeni nazw dyskusji|Szablon|nazwa przestrzeni nazw i{{=}}Moja przestrzeń|numer jednostki{{=}}2}}}} → {{Tt|{{#invoke:Pudełko|Nazwa przestrzeni nazw dyskusji|Szablon|nazwa przestrzeni nazw i=Moja przestrzeń|numer jednostki=2}}}} * {{Code|{{m|Pudełko|Nazwa przestrzeni nazw dyskusji|nazwa przestrzeni nazw 2{{=}}Szablon|numer jednostki{{=}}2}}}} → {{Tt|{{#invoke:Pudełko|Nazwa przestrzeni nazw dyskusji|nazwa przestrzeni nazw 2=Szablon|numer jednostki=2}}}} * {{Code|{{m|Pudełko|Nazwa przestrzeni nazw dyskusji|nazwa przestrzeni nazw 2{{=}}Szablon|numer jednostki{{=}}2}}}} → {{Tt|{{#invoke:Pudełko|Nazwa przestrzeni nazw dyskusji|nazwa przestrzeni nazw i=Szablon|numer jednostki=2}}}} * {{Code|{{m|Pudełko|Nazwa przestrzeni nazw dyskusji|nazwa przestrzeni nazw{{=}}Szablon|numer jednostki{{=}}2}}}} → {{Tt|{{#invoke:Pudełko|Nazwa przestrzeni nazw dyskusji|nazwa przestrzeni nazw=Szablon|numer jednostki=2}}}} Powyżej dla przykładu podano parametry nie w rodzicu w szablonie, tylko w dziecku, jeśli chodzi o parametry nazw przestrzeni nazw, ale ich się za to nie powinno podawać w tych ramach, tylko w szablonach, w których wywoływane są te ramki pudełek {{Code|{{m|Pudełko}}}}, ale tak tutaj tak zrobiono by było najłatwiej sprawdzić działanie tego typu funkcji. Analogicznie możemy podawać parametry typu jednostki, np.: wywołaniu modułowym {{Code|{{m|Pudełko|Nazwa przestrzeni nazw dyskusji|typ jednostki 2{{=}}strona szablonu|numer jednostki{{=}}2}}}}, ale o tym więcej w rozdziałach {{Code|{{sr|# p["Typ jednostki"](frame,i)|p=Pudełko}}}}, {{Code|{{sr|#p["Typ jednostki 2"](frame,i)|p=Pudełko}}}}, {{Code|{{sr|#p["Typ jednostki 3"](frame,i)|p=Pudełko}}}} itp. w „{{sr|#Funkcje typu jednostki|p=Pudełko}}”, ale wtedy nazwa przestrzeni nazw reprezentowana przez {{Parametr|typ jednostki 2|strona szablonu}}, jest zamieniana na nazwę przestrzeni nazw dyskusji. Parametr dyskusji typu jednostki bazowy lub dla danego numerka ogólny, czy szczegółowy, nie gra roli. Również parametry typu jednostki nie powinno się podawać w dziecku w ramce, tylko w rodzicu w szablonie jako parametry, w którym ta ramka jest wywoływana, ale tutaj podano jedynie dla przykładu, jak najłatwiej sprawdzić działanie tych parametrów tej funkcji. Najpierw w funkcji nagłówku brane są parametry nazw przestrzeni nazw, a jeżeli ich nie ma, to parametry typu jednostki, a jeżeli nie ma, to generowane są nazwy na podstawie aktualnego modułu. == Funkcje nazw przestrzeni nazw drugiej wersji == === {{Code|p["Nazwa przestrzeni nazw 2"](frame,...)}} === Funkcja pisze nazwę przestrzeni nazw, niezależnie, czy to jest przedmiotowa, czy dyskusji, według podanej w zmiennej {{Code|nazwa przestrzeni nazw}} dla pozycja bazowej w podanych parametrach szablonu rodzicu ramki dziecka, lub dla innej pozycji należy parametr podawać w formie {{Code|nazwa przestrzeni nazw 1}}, {{Code|nazwa przestrzeni nazw 2}}, {{Code|nazwa przestrzeni nazw 3}},..., lub te parametry można podać w postaci ogólnej {{Code|nazwa przestrzeni nazw i}}. W tej funkcji trzeba też podawać parametry nazwy jednostek {{Code|nazwa jednostki}}, {{Code|nazwa jednostki 1}}, {{Code|nazwa jednostki 2}}, {{Code|nazwa jednostki 3}},... Parametry podaje się w parametrach rodzica wywołania tej funkcji {{Code|{{m|Pudełko|Nazwa przestrzeni nazw 2}}}} (ale ich nie trzeba podawać w dziecku, ale można) i w parametrach dziecka, jeśli chodzi o zmienną {{Code|numer jednostki}}, czyli np.: {{Code|{{m|Pudełko|Nazwa przestrzeni nazw 2|numer jednostki{{=}}<jakaś liczba całkowita dodatnia>}}}}. Te parametry przestrzenne zamiast w rodzicu w szablonie można podać w ramce dziecka, wtedy parametry dziecka mają pierwszeństwo. Przestrzeń nazw z parametrów nazw przestrzennych może odpowiadać wartości przestrzeni głównej, to wtedy odpowiednia przestrzeń nazw z parametru nazwy jednostki się liczy w tej funkcji, wtedy jest liczona nazwa przestrzeni nazw z tego parametru. Gdy parametry przestrzenne lub typ jednostki w drugim podejściu nie wskazują na przestrzeń główną, to wtedy działanie tej funkcji jest podobne do {{Code|{{sr|#p["Nazwa przestrzeni nazw"](frame,...)|p=Pudełko}}}}. Definicja skrótowa funkcji: <syntaxhighlight lang="lua"> p["Nazwa przestrzeni nazw 2"]=function(frame,czy_uwzglednic_alternatywna_nazwe,i)...end; </syntaxhighlight> Wtedy ciało funkcji tej, czyli jego definicja w środku, jest: <syntaxhighlight lang="lua"> local pudelko_pomocne_modul=require("Module:Pudełko/Pomocne"); -- Liczy nazwę przestrzeni nazw, jeżeli z parametrów przestrzennych przestrzeń wskazuje na główną, to wtedy jest liczona przestrzeń nazw z nazwy jednostki; return pudelko_pomocne_modul.Nazwa_przestrzeni_nazw_2(frame,czy_uwzglednic_alternatywna_nazwe,i) </syntaxhighlight> Parametry funkcji: * {{Code|frame}} - tablica ramki tablicy transportu, * {{Code|czy_uwzglednic_alternatywna_nazwe}} - czy ma uwzględniać nazwę przestrzeni nazw domyślną szablonu, dostępne wartości: {{Code|false}}, w której nazwa domyślna nie jest uwzględniana wtedy, oraz {{Code|nil}} i {{Code|true}}, które oznaczają to samo, w tym jeżeli ona jest uwzględniana, wtedy jest brany parametr pierwszy dziecka, który musi istnieć przy takiej wartości tego parametru, tzn. {{Code|{{m|Pudełko|Nazwa przestrzeni nazw 2|Szablon}}}}, a nazwa uzyskana nazwy przestrzeni nazw jest w takim przypadku błędna, a jeżeli nazwa domyślna jest błędna, czyli {{Code|{{m|Pudełko|Nazwa przestrzeni nazw 2|Moja przestrzeń}}}}, wtedy funkcja zwraca stan błędu {{Code|(błąd)}}. * {{Code|i}} - numer zmiennej nazwy przestrzeni nazw. Funkcja wykorzystuje {{Code|{{sr|#p.Nazwa_przestrzeni_nazw_2(frame,...)|p=Pudełko/Pomocne}}}} do wyznaczania ogólnego nazwy przestrzeni nazw dla pozycji bazowej i numerkowej, tzn. dla pozycji: jeden, dwa, trzy,..., itd, i ich ogólnej. Parametry ramki tablicy transportu dziecka: * {{Code|nazwa przestrzeni nazw}}, {{Code|nazwa przestrzeni nazw 1}}, {{Code|nazwa przestrzeni nazw 2}}, {{Code|nazwa przestrzeni nazw 3}},..., {{Code|nazwa przestrzeni nazw i}} - nazwy przestrzeni nazw dla pozycji bazowej, numerkowej i ogólnej, * {{Code|typ jednostki}}, {{Code|typ jednostki 1}}, {{Code|typ jednostki 2}}, {{Code|typ jednostki 3}},..., {{Code|typ jednostki i}} - typy jednostek, którym odpowiadają pewne przestrzenie przedmiotowe, dla pozycji bazowej, numerkowej i ogólnej, ** {{Code|dyskusja typu jednostki}}, {{Code|dyskusja typu jednostki 1}}, {{Code|dyskusja typ jednostki 2}}, {{Code|dyskusja typ jednostki 3}},..., {{Code|dyskusja typ jednostki i}} - czy dany typ jednostki ma przedstawiać, jeśli niepusta, przestrzeń dyskusji dla pozycji bazowej, numerkowej i ogólnej, * {{Code|numer jednostki}} - jak parametr {{Code|i}} nie został ustawiony, to wtedy liczy się ta zmienna. Parametr ramki tablicy transportu rodzica szablonu: * {{Code|nazwa przestrzeni nazw}}, {{Code|nazwa przestrzeni nazw 1}}, {{Code|nazwa przestrzeni nazw 2}}, {{Code|nazwa przestrzeni nazw 3}},..., {{Code|nazwa przestrzeni nazw i}} - nazwy przestrzeni nazw dla pozycji bazowej oraz zwykłej i ogólnej numerkowej, * {{Code|typ jednostki}}, {{Code|typ jednostki 1}}, {{Code|typ jednostki 2}}, {{Code|typ jednostki 3}},..., {{Code|typ jednostki i}} - typy jednostek, którym odpowiadają pewne przestrzenie przedmiotowe, dla pozycji bazowej, numerkowej i ogólnej, ** {{Code|dyskusja typu jednostki}}, {{Code|dyskusja typu jednostki 1}}, {{Code|dyskusja typ jednostki 2}}, {{Code|dyskusja typ jednostki 3}},..., {{Code|dyskusja typ jednostki i}} - czy dany typ jednostki ma przedstawiać, jeśli niepusta, przestrzeń dyskusji dla pozycji bazowej, numerkowej i ogólnej. Przykłady: <syntaxhighlight lang="mediawiki"> {{Nazwa szablonu|nazwa przestrzeni nazw=Wikibooks|nazwa przestrzeni nazw 1=Szablon|nazwa przestrzeni nazw i=|nazwa jednostki 2=Wikibooks:Strona}} </syntaxhighlight> W dziecku powiedzmy jest wywołanie, i szukamy nazwy przestrzeni nazw o numerze dwa, która została podana, ale istnieje za to jej wersji ogólna {{Code|nazwa przestrzeni nazw i}} i domyślna {{Code|nazwa przestrzeni nazw}}, ale wtedy dla tego numerkowego liczy się to ogólne z {{Code| i}}, a ponieważ ta nazwa jest pusta, więc będziemy liczyli nazwę przestrzeni nazw z {{Code|nazwa jednostki 2}}: <syntaxhighlight lang="mediawiki"> {{#invoke:Pudełko|Nazwa przestrzeni nazw 2|numer jednostki=2}} </syntaxhighlight> Na podstawie powyższego przykładu otrzymamy wynik o schemacie, nie wyniku, bo tam nie ma zmiennej {{Code|nazwa przestrzeni nazw 1}}, ale jest {{Code|nazwa przestrzeni nazw i}}: <syntaxhighlight lang="mediawiki"> <!-- Ale nie "nazwa przestrzeni nazw 2", bo jej nie ma, ale za to istnieje "nazwa przestrzeni nazw i"; --> <!-- nazwa przestrzeni nazw 2=nazwa przestrzeni nazw i="", a nazwa jednostki 2="Wikibooks:Strona"; --> <!-- Czyli wynik: --> Wikibooks <!-- Widzimy, że wygenerowała się nazwa przestrzeni nazw, którą jest przestrzeń nieprogramowa, ale projektu, wychodząca z nazwy jednostek w tym przypadku z "nazwa jednostki 2"; --> </syntaxhighlight> Nie jest brana w tym powyższym przykładzie zmienna {{Code|nazwa przestrzeni nazw}}, bo jej nie ma, ale za to jest {{Code|nazwa przestrzeni nazw i}}, bo ona występuje jako parametr domyślny ogólny dla parametrów numerkowych. Tytaj jest używwana jest zmienna {{Code|nazwa jednostki 2}} do wygenerowania ostatecznego wyniki, bo jak można zauważyć, parametry przestrzenne wskazują na przestrzeń główną, a nazwy jednostek już nie. Przykłady w wikikodzie: * {{Code|{{m|Pudełko|Nazwa przestrzeni nazw 2|numer jednostki{{=}}2}}}} → {{Tt|{{#invoke:Pudełko|Nazwa przestrzeni nazw 2|numer jednostki=2}}}} * {{Code|{{m|Pudełko|Nazwa przestrzeni nazw 2|Szablon|nazwa przestrzeni nazw i{{=}}Moja przestrzeń|numer jednostki{{=}}2}}}} → {{Tt|{{#invoke:Pudełko|Nazwa przestrzeni nazw 2|Szablon|nazwa przestrzeni nazw i=Moja przestrzeń|numer jednostki=2}}}} * {{Code|{{m|Pudełko|Nazwa przestrzeni nazw 2|nazwa przestrzeni nazw 2{{=}}|nazwa jednostki 2{{=}}Szablon:Strona|numer jednostki{{=}}2}}}} → {{Tt|{{#invoke:Pudełko|Nazwa przestrzeni nazw 2|nazwa przestrzeni nazw 2=|nazwa jednostki 2=Szablon:Strona|numer jednostki=2}}}} * {{Code|{{m|Pudełko|Nazwa przestrzeni nazw 2|nazwa przestrzeni nazw i{{=}}|nazwa jednostki 2{{=}}Szablon:Strona|numer jednostki{{=}}2}}}} → {{Tt|{{#invoke:Pudełko|Nazwa przestrzeni nazw 2|nazwa przestrzeni nazw i=|nazwa jednostki 2=Szablon:Strona|numer jednostki=2}}}} * {{Code|{{m|Pudełko|Nazwa przestrzeni nazw 2|Szablon|nazwa przestrzeni nazw{{=}}|nazwa jednostki 2{{=}}Wikibooks:Strona|numer jednostki{{=}}2}}}} → {{Tt|{{#invoke:Pudełko|Nazwa przestrzeni nazw 2|Szablon|nazwa przestrzeni nazw=|nazwa jednostki 2=Wikibooks:Strona|numer jednostki=2}}}} Powyżej dla przykładu podano parametry nie w rodzicu w szablonie, tylko w dziecku, jeśli chodzi o parametry nazw przestrzeni nazw i nazw jednostek, ale ich się za to nie powinno podawać w tych ramach, tylko w szablonach, w których wywoływane są te ramki pudełek {{Code|{{m|Pudełko}}}}, ale tak tutaj tak zrobiono by było najłatwiej sprawdzić działanie tego typu funkcji. Analogicznie możemy podawać parametry typu jednostki, np.: wywołaniu modułowym {{Code|{{m|Pudełko|Nazwa przestrzeni nazw 2|typ jednostki 2{{=}}Podręcznik|nazwa jednostki 2{{=}}Szablon:Strona|umer jednostki{{=}}2}}}} (ale wtedy jest brana przestrzeń nazw z nazwy jednostki), ale o tym więcej w rozdziałach {{Code|{{sr|# p["Typ jednostki"](frame,i)|p=Pudełko}}}}, {{Code|{{sr|#p["Typ jednostki 2"](frame,i)|p=Pudełko}}}}, {{Code|{{sr|#p["Typ jednostki 3"](frame,i)|p=Pudełko}}}} itp. w „{{sr|#Funkcje typu jednostki|p=Pudełko}}”, on definiuje przestrzenie przedmiotowe, ale można użyć parametru dyskusji typu jednostki z wartością niepustą, wtedy wyświetli się nazwa przestrzeni nazw dyskusji. Jeżeli typ jednostki wskazuje na przestrzeń nazw główną, wtedy się liczą parametry nazw jednostek. Również parametry typu jednostki nie powinno się podawać w dziecku w ramce, tylko w rodzicu w szablonie jako parametry, w którym ta ramka jest wywoływana, ale tutaj podano jedynie dla przykładu, jak najłatwiej sprawdzić działanie tych parametrów tej funkcji. Najpierw w funkcji nagłówku brane są parametry nazw przestrzeni nazw, a jeżeli ich nie ma, to parametry typu jednostki, a jeżeli nie ma lub parametry przestrzenne wskazują na przestrzeń główną, i nie ma nazwy jednostki, to generowane są nazwy tej funkcji na podstawie aktualnej strony. === {{Code|p["Nazwa przedmiotowej przestrzeni nazw 2"](frame,...)}} === === {{Code|p["Nazwa przestrzeni nazw dyskusji 2"](frame,...)}} === == Funkcje pełnych nazw jednostki == === {{Code|p["Pełna nazwa dyskusji jednostki"](frame,i)}} === === {{Code|p["Pełna nazwa przedmiotowa jednostki"](frame,i)}} === === {{Code|p["Pełna nazwa jednostki"](frame,i)}} === == Funkcje pełnych nazw jednostki drugiej wersji == === {{Code|p["Pełna nazwa dyskusji jednostki 2"](frame,i)}} === === {{Code|p["Pełna nazwa przedmiotowa jednostki 2"](frame,i)}} === === {{Code|p["Pełna nazwa jednostki 2"](frame,i)}} === == Funkcje pełnych nazw jednostki trzeciej wersji == === {{Code|p["Pełna nazwa dyskusji jednostki 3"](frame,i)}} === === {{Code|p["Pełna nazwa przedmiotowa jednostki 3"](frame,i)}} === === {{Code|p["Pełna nazwa jednostki 3"](frame,i)}} === == Funkcje nazw jednostki == === {{Code|p["Nazwa jednostki"](frame,i)}} === == Funkcje nazw jednostki drugiej wersji == === {{Code|p["Nazwa jednostki 2"](frame,i)}} === === {{Code|p["Nazwa przedmiotowa jednostki 2"](frame,i)}} === === {{Code|p["Nazwa dyskusji jednostki 2"](frame,i)}} === == Funkcje nazw przestrzeni nazw trzeciej wersji == === {{Code|p["Nazwa przestrzeni nazw 3"](frame,i)}} === === {{Code|p["Nazwa przedmiotowej przestrzeni nazw 3"](frame,i)}} === === {{Code|p["Nazwa przestrzeni nazw dyskusji 3"](frame,i)}} === == Funkcje nazw jednostki trzeciej wersji == === {{Code|p["Nazwa jednostki 3"](frame,i)}} === === {{Code|p["Nazwa przedmiotowa jednostki 3"](frame,i)}} === === {{Code|p["Nazwa dyskusji jednostki 3"](frame,i)}} === == Funkcje typu jednostki == === {{Code|p["Typ jednostki"](frame,i)}} === === {{Code|p["Typ jednostki 2"](frame,i)}} === === {{Code|p["Typ jednostki 3"](frame,i)}} === === Funkcje typu jednostki przedmiotowe === ==== {{Code|p["Przedmiotowy typ jednostki"](frame,i)}} ==== ==== {{Code|p["Przedmiotowy typ jednostki 2"](frame,i)}} ==== ==== {{Code|p["Przedmiotowy typ jednostki 3"](frame,i)}} ==== === Fukcje typu jednostki dyskusji === ==== {{Code|p["Dyskusyjny typ jednostki"](frame,i)}} ==== ==== {{Code|p["Dyskusyjny typ jednostki 2"](frame,i)}}} ==== ==== {{Code|p["Dyskusyjny typ jednostki 3"](frame,i)}} ==== == Funkcje chech pudełka == === {{Code|p["Cecha pudełka"](frame)}} === === {{Code|p["Przedmiotowa cecha pudełka"](frame)}} === === {{Code|p["Dyskusyjna cecha pudełka"](frame)}} === == Fukcje ogólnego pudełka == === {{Code|p["Ogólne pudełko"](frame)}} === == Funkcje ogólne == === {{Code|p["Tekst pudełka"](frame)}} === == Funkcje błędów pudełka == === {{Code|p["Błędy pudełka"](frame)}} === === {{Code|p["Przedmiotowe błędy pudełka"](frame)}} === === {{Code|p["Dyskusyjne błędy pudełka"](frame)}} === == Funkcje nazw stron == === {{Code|p["Nazwa strony głównej projektu"](frame,i)}} === === {{Code|p["Nazwa strony głównej dla dzieci projektu"](frame,i)}} === == Funkcje kodów == === {{Code|p["Kod języka"](frame,i)}} === === {{Code|p["Kod projektu"](frame,i)}} === === {{Code|p["Klucz projektu"](frame,i)}} === == Funkcje wiki == === {{Code|p["Inny niż język bieżący wiki"](frame)}} === === {{Code|p["Inne niż lokalne wiki"](frame)}} === === {{Code|p["Inne niż bieżące wiki"](frame)}} === == Funkcje typów parametrów, czy podane je == === {{Code|p["Podano parametry nienazwane"](frame)}} === === {{Code|p["Podano parametry numerowane"](frame)}} === === {{Code|p["Podano parametry nazwane"](frame)}} === == Funkcje kodów tego projektu == === {{Code|p["Kod projektu tego projektu"](frame)}} === === {{Code|p["Kod języka tego projektu"](frame)}} === === {{Code|p["Klucz projektu tego projektu"](frame)}} === == Funkcje stron == === {{Code|p["Strona główna tego projektu"](frame)}} === === {{Code|p["Strona główna dla dzieci tego projektu"](frame)}} === == Funkcje nazw stron drugiej wersji == === {{Code|p["Nazwa strony głównej dla dzieci projektu 2"](frame)}} === === {{Code| p["Nazwa strony głównej projektu 2"](frame)}} === {{BrClear}} <noinclude><!-- -->{{ProstaStronaKoniec}}<!-- -->{{Kategoria|Opisy funkcji, w Lua w Scribunto, w modułach}}<!-- --></noinclude> 1vumwcdj184uyvm8j123hrbyl6p91dv 540383 540380 2026-04-23T13:18:30Z Persino 2851 /* {{Code|p["Nazwa przestrzeni nazw 2"](frame,...)}} */ 540383 wikitext text/x-wiki <noinclude>{{ProstaStronaStart | nagłówek = {{Podrozdział|{{ld2|Pudełko}}|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 pudelko_modul=require("Module:Pudełko"); </syntaxhighlight> dzięki, któremu można wypisywać funkcje należącego do niego. Posługuje się na parametrach pudełkowych {{Parametr|nazwa przestrzeni nazw}} (czy też bez numerka {{Parametr|nazwa przestrzeni nazw i}} dla tego numerowanego) lub te z numerkiem po jednej spacji w nich (ale nie dla tego z końcówką {{Code| i}}) mogą zostać użyte jako parametry szablonu. Moduł {{Code|{{ld2|Pudełko}}}} przedstawia funkcje nazw w oparciu o funkcje nazw {{Code|{{ld2|Nazwy}}}}, generuje on nazwy za pomocą parametrów pudełkowych podanych poniżej. Parametr {{Parametr|nazwa jednostki}} (lub parametr {{Parametr|cel}} dla numerka tego pierwszego, tego alternatywnego), lub te z numerkiem po jednej spacji w nazwie parametru, albo numerowane numerkami {{Code|1}}, {{Code|2}},..., mogą zostać użyte jako parametry szablonu. Parametry określające rodzaj jednostki {{Parametr|typ jednostki}} z {{Parametr|dyskusja typu jednostki}}, itp. w wersjach z numerkiem po jednej spacji w nich mogą zostać użyte jako parametry szablonu. A te tymi numerowanymi liczbami naturalnymi {{Tt|nazwy jednostki}} od jedynki wzwyż poprzez szablon, w którym są one użyte, one też mogą być użyte z dwukropkiem, te numerowane, na samym początku nazwy, wtedy one są traktowane jako pełne nazwy strony, i wtedy one nie zostaną z interpretowane, że do nich trzeba użyć parametr odpowiedni z nazwą przetrzeni nazw z tego numerowanego, czy ogólny, aby utworzyć znów inną pełną nazwę strony dla tego numerka. Zestawienie: * {{Code|nazwa przestrzeni nazw}} i {{Code|nazwa przestrzeni nazw i}} (ogólna nazwa przestrzeni nazw dla wszystkich numerków, i tych numerowanych jednostek) - i to pierwsze z numerkiem, tzn. {{Code|nazwa przestrzeni nazw 1}}, {{Code|nazwa przestrzeni nazw 2}}, ..., * {{Code|nazwa jednostki}} - i te z numerkiem: {{Code|nazwa jednostki 1}}, {{Code|nazwa jednostki 2}}, ..., lub gdy jest zamiast tego parametrem numerowany, {{Code|1}}, {{Code|2}},..., który dla tego pierwszego może być uznany jako: {{Code|cel}} {{=}} {{Code|1}}, * {{Code|typ jednostki}} (parametr bazowy) i {{Code|typ jednostki i}} (parametr domyślny numerkowy) - i te z numerkiem: {{Code|typ jednostki 1}}, {{Code|typ jednostki 2}}, ..., tzn. gdy chcemy określić z jakim typem jednostki mamy do czynienia w zależności do jakiej przestrzeni nazw należy, a w danej, czy jest on np. programowy, czy tylko jest opisem, jak to bywa w szablonach {{Np|Template|link=tak}}, podobnie jest w przypadku {{Np|Module|link=tak}}, czy jak jest w innych przestrzeniach nazw, ** {{Code|dyskusja typu jednostki}} (parametr bazowy) i {{Code|dyskusja typu jednostki i}} (parametr domyślny numerkowy) - i te z numerkiem: {{Code|dyskusja typu jednostki 1}}, {{Code|dyskusja typu jednostki 2}}, ..., gdy chcemy określić wartością niepustą,że chodzi tutaj o typ jednostki. == {{Code|p.CzyNiepoprawnaNazwa(nazwa_jednostki)}} == Funkcja sprawdzajaca, czy jest poprawnie podana nazwa jednostki, czy ma poprawną nazwę. Znakami tymi, z których nie powinna składać się nazwa jest {{Code|<nowiki>{}<>|[]#\n</nowiki>}} i dodatkowo znak {{Code|&#127;}} (kod {{Code|{{Nowiki|&#127;}}}}). Też nie może składać się z trzech znaków tyldy, tzn. {{Code|<nowiki>~~~</nowiki>}}. Również w swojej budowie nie może składać się ze kodów {{Strong|HTML}} literowych o wzorze {{Code|{{Nowiki|&(%a+);}}}}. Natomiast może składać się z {{Code|{{Nowiki|&#(%d+);}}}} i {{Code|{{Nowiki|&#x(%x+);}}}}, ale w pierw te kody muszą być zamienione na normalne znaki. Skrótowa definicja funkcji: <syntaxhighlight lang="lua"> function p.CzyNiepoprawnaNazwa(nazwa_jednostki)...end; </syntaxhighlight> Wtedy ciało funkcji tej, czyli jego definicja w środku, jest: <syntaxhighlight lang="lua"> -- Moduł: "Moduł:Html/dane", służy do ładowania znaku o kodzie HTML "&#127;"; local html_dane_modul=mw.loadData("Module:Html/dane"); return mw.ustring.match(nazwa_jednostki,"[{}<>|%[%]#\n"..html_dane_modul.znak_127.."]+") or mw.ustring.match(nazwa_jednostki,"~~~") or mw.ustring.match(nazwa_jednostki,"&(%a+);"); </syntaxhighlight> Parametry: * {{Code|nazwa_jednostki}} - nazwa jednostki do sprawdzenia. Przykłady: <syntaxhighlight lang="lua"> local pudelko_modul=require("Module:Pudełko"); -- Podana przykładowa niepoprawna nazwa jedostki local nazwa_jednostki="Nazwa pliku [[Nazwa linku w pliku]]"; -- Fukcja zwróci wartość: local czy_poprawna_nazwa=true; local czy_poprawna_nazwa=pudelko_modul.CzyNiepoprawnaNazwa(nazwa_jednostki); </syntaxhighlight> == Funkcje nazw przestrzeni nazw == === {{Code|p["Nazwa przestrzeni nazw"](frame,...)}} === Funkcja pisze nazwę przestrzeni nazw, niezależnie, czy to jest przedmiotowa, czy dyskusji, według podanej w zmiennej {{Code|nazwa przestrzeni nazw}} dla pozycja bazowej w podanych parametrach szablonu rodzicu ramki dziecka, lub dla innej pozycji należy parametr podawać w formie {{Code|nazwa przestrzeni nazw 1}}, {{Code|nazwa przestrzeni nazw 2}}, {{Code|nazwa przestrzeni nazw 3}},..., lub te parametry można podać w postaci ogólnej {{Code|nazwa przestrzeni nazw i}}. Parametry podaje się w parametrach rodzica wywołania tej funkcji {{Code|{{m|Pudełko|Nazwa przestrzeni nazw}}}} (ale ich nie trzeba podawać w dziecku, ale można) i w parametrach dziecka, jeśli chodzi o zmienną {{Code|numer jednostki}}, czyli np.: {{Code|{{m|Pudełko|Nazwa przestrzeni nazw|numer jednostki{{=}}<jakaś liczba całkowita dodatnia>}}}}. Te parametry przestrzenne zamiast w rodzicu w szablonie można podać w ramce dziecka, wtedy parametry dziecka mają pierwszeństwo. Przestrzeń nazw z parametrów nazw przestrzennych może odpowiadać wartości przestrzeni głównej, to wtedy odpowiednia przestrzeń nazw z parametru nazwy jednostki się nie liczy w tej funkcji, aby się liczyła należy użyć funkcji {{Code|{{sr|#p["Nazwa przestrzeni nazw 2"](frame,...)|p=Pudełko}}}}. Definicja skrótowa funkcji: <syntaxhighlight lang="lua"> p["Nazwa przestrzeni nazw"]=function(frame,czy_uwzglednic_alternatywna_nazwe,i)...end; </syntaxhighlight> Wtedy ciało funkcji tej, czyli jego definicja w środku, jest: <syntaxhighlight lang="lua"> -- Jest liczony numer parametru nazwy przestrzeni nazw, domyslnie chodzi tu o numer bazowy parametrów przestrzennych; local numer_jednostki=i or frame.args["numer jednostki"]; local liczba_numer_jednostki=((numer_jednostki)and(tonumber(numer_jednostki))or 0); local pudelko_pomocne_modul=require("Module:Pudełko/Pomocne"); -- Liczy nazwę przestrzeni nazw na podstawie podanych parametrów; return pudelko_pomocne_modul.Nazwa_przestrzeni_nazw(frame,0, czy_uwzglednic_alternatywna_nazwe,liczba_numer_jednostki); </syntaxhighlight> Parametry funkcji: * {{Code|frame}} - tablica ramki tablicy transportu, * {{Code|czy_uwzglednic_alternatywna_nazwe}} - czy ma uwzględniać nazwę przestrzeni nazw domyślną szablonu, dostępne wartości: {{Code|false}}, w której nazwa domyślna nie jest uwzględniana wtedy, oraz {{Code|nil}} i {{Code|true}}, które oznaczają to samo, w tym jeżeli ona jest uwzględniana, wtedy jest brany parametr pierwszy dziecka, który musi istnieć przy takiej wartości tego parametru, tzn. {{Code|{{m|Pudełko|Nazwa przestrzeni nazw|Szablon}}}}, a nazwa uzyskana nazwy przestrzeni nazw jest w takim przypadku błędna, a jeżeli nazwa domyślna jest błędna, czyli {{Code|{{m|Pudełko|Nazwa przestrzeni nazw|Moja przestrzeń}}}}, wtedy funkcja zwraca stan błędu {{Code|(błąd)}}. * {{Code|i}} - numer zmiennej nazwy przestrzeni nazw. Funkcja wykorzystuje {{Code|{{sr|#p.Nazwa_przestrzeni_nazw(frame,...)|p=Pudełko/Pomocne}}}} do wyznaczania ogólnego nazwy przestrzeni nazw dla pozycji bazowej i numerkowej, tzn. dla pozycji: jeden, dwa, trzy,..., itd, i ich ogólnej. Parametry ramki tablicy transportu dziecka: * {{Code|nazwa przestrzeni nazw}}, {{Code|nazwa przestrzeni nazw 1}}, {{Code|nazwa przestrzeni nazw 2}}, {{Code|nazwa przestrzeni nazw 3}},..., {{Code|nazwa przestrzeni nazw i}} - nazwy przestrzeni nazw dla pozycji bazowej, numerkowej i ogólnej, * {{Code|typ jednostki}}, {{Code|typ jednostki 1}}, {{Code|typ jednostki 2}}, {{Code|typ jednostki 3}},..., {{Code|typ jednostki i}} - typy jednostek, którym odpowiadają pewne przestrzenie przedmiotowe, dla pozycji bazowej, numerkowej i ogólnej, ** {{Code|dyskusja typu jednostki}}, {{Code|dyskusja typu jednostki 1}}, {{Code|dyskusja typ jednostki 2}}, {{Code|dyskusja typ jednostki 3}},..., {{Code|dyskusja typ jednostki i}} - czy dany typ jednostki ma przedstawiać, jeśli niepusta, przestrzeń dyskusji dla pozycji bazowej, numerkowej i ogólnej, * {{Code|numer jednostki}} - jak parametr {{Code|i}} nie został ustawiony, to wtedy liczy się ta zmienna. Parametr ramki tablicy transportu rodzica szablonu: * {{Code|nazwa przestrzeni nazw}}, {{Code|nazwa przestrzeni nazw 1}}, {{Code|nazwa przestrzeni nazw 2}}, {{Code|nazwa przestrzeni nazw 3}},..., {{Code|nazwa przestrzeni nazw i}} - nazwy przestrzeni nazw dla pozycji bazowej oraz zwykłej i ogólnej numerkowej, * {{Code|typ jednostki}}, {{Code|typ jednostki 1}}, {{Code|typ jednostki 2}}, {{Code|typ jednostki 3}},..., {{Code|typ jednostki i}} - typy jednostek, którym odpowiadają pewne przestrzenie przedmiotowe, dla pozycji bazowej, numerkowej i ogólnej, ** {{Code|dyskusja typu jednostki}}, {{Code|dyskusja typu jednostki 1}}, {{Code|dyskusja typ jednostki 2}}, {{Code|dyskusja typ jednostki 3}},..., {{Code|dyskusja typ jednostki i}} - czy dany typ jednostki ma przedstawiać, jeśli niepusta, przestrzeń dyskusji dla pozycji bazowej, numerkowej i ogólnej. Przykłady: <syntaxhighlight lang="mediawiki"> {{Nazwa szablonu|nazwa przestrzeni nazw=Wikibooks|nazwa przestrzeni nazw 2=Szablon|nazwa przestrzeni nazw i=Moduł}} </syntaxhighlight> W dziecku powiedzmy jest wywołanie, i szukamy nazwy przestrzeni nazw o numerze dwa, która nie została podana, ale istnieje za to jej wersji ogólna {{Code|nazwa przestrzeni nazw i}} i domyślna {{Code|nazwa przestrzeni nazw}}: <syntaxhighlight lang="mediawiki"> {{#invoke:Pudełko|Nazwa przestrzeni nazw|numer jednostki=1}} </syntaxhighlight> Na podstawie powyższego przykładu otrzymamy wynik o schemacie, nie wyniku, bo tam nie ma zmiennej {{Code|nazwa przestrzeni nazw 1}}, ale jest {{Code|nazwa przestrzeni nazw i}}: <syntaxhighlight lang="mediawiki"> <!-- Ale nie "nazwa przestrzeni nazw", bo jej nie ma, ale za to istnieje "nazwa przestrzeni nazw i"; --> <!-- nazwa przestrzeni nazw 2=nazwa przestrzeni nazw i=Moduł; --> <!-- Czyli wynik: --> Moduł <!-- Widzimy, że wygenerowała się nazwa przestrzeni nazw, którą jest przestrzeń programowa, którą również jest "Szablon"; --> </syntaxhighlight> Nie jest brana w tym powyższym przykładzie zmienna {{Code|nazwa przestrzeni nazw}}, bo jej nie ma, ale za to jest {{Code|nazwa przestrzeni nazw i}}, bo ona występuje jako parametr domyślny ogólny dla parametrów numerkowych. Przykłady w wikikodzie: * {{Code|{{m|Pudełko|Nazwa przestrzeni nazw|numer jednostki{{=}}2}}}} → {{Tt|{{#invoke:Pudełko|Nazwa przestrzeni nazw|numer jednostki=2}}}} * {{Code|{{m|Pudełko|Nazwa przestrzeni nazw|Szablon|nazwa przestrzeni nazw i{{=}}Moja przestrzeń|numer jednostki{{=}}2}}}} → {{Tt|{{#invoke:Pudełko|Nazwa przestrzeni nazw|Szablon|nazwa przestrzeni nazw i=Moja przestrzeń|numer jednostki=2}}}} * {{Code|{{m|Pudełko|Nazwa przestrzeni nazw|nazwa przestrzeni nazw 2{{=}}Szablon|numer jednostki{{=}}2}}}} → {{Tt|{{#invoke:Pudełko|Nazwa przestrzeni nazw|nazwa przestrzeni nazw 2=Szablon|numer jednostki=2}}}} * {{Code|{{m|Pudełko|Nazwa przestrzeni nazw|nazwa przestrzeni nazw 2{{=}}Szablon|numer jednostki{{=}}2}}}} → {{Tt|{{#invoke:Pudełko|Nazwa przestrzeni nazw|nazwa przestrzeni nazw i=Szablon|numer jednostki=2}}}} * {{Code|{{m|Pudełko|Nazwa przestrzeni nazw|nazwa przestrzeni nazw{{=}}Szablon|numer jednostki{{=}}2}}}} → {{Tt|{{#invoke:Pudełko|Nazwa przestrzeni nazw|nazwa przestrzeni nazw=Szablon|numer jednostki=2}}}} Powyżej dla przykładu podano parametry nie w rodzicu w szablonie, tylko w dziecku, jeśli chodzi o parametry nazw przestrzeni nazw, ale ich się za to nie powinno podawać w tych ramach, tylko w szablonach, w których wywoływane są te ramki pudełek {{Code|{{m|Pudełko}}}}, ale tak tutaj tak zrobiono by było najłatwiej sprawdzić działanie tego typu funkcji. Analogicznie możemy podawać parametry typu jednostki, np.: wywołaniu modułowym {{Code|{{m|Pudełko|Nazwa przestrzeni nazw|typ jednostki 2{{=}}strona szablonu|numer jednostki{{=}}2}}}}, ale o tym więcej w rozdziałach {{Code|{{sr|# p["Typ jednostki"](frame,i)|p=Pudełko}}}}, {{Code|{{sr|#p["Typ jednostki 2"](frame,i)|p=Pudełko}}}}, {{Code|{{sr|#p["Typ jednostki 3"](frame,i)|p=Pudełko}}}} itp. w „{{sr|#Funkcje typu jednostki|p=Pudełko}}”, on definiuje przestrzenie przedmiotowe, ale można użyć parametru dyskusji typu jednostki z wartością niepustą, wtedy wyświetli się nazwa przestrzeni nazw dyskusji. Również parametry typu jednostki nie powinno się podawać w dziecku w ramce, tylko w rodzicu w szablonie jako parametry, w którym ta ramka jest wywoływana, ale tutaj podano jedynie dla przykładu, jak najłatwiej sprawdzić działanie tych parametrów tej funkcji. Najpierw w funkcji nagłówku brane są parametry nazw przestrzeni nazw, a jeżeli ich nie ma, to parametry typu jednostki, a jeżeli nie ma, to generowane są nazwy na podstawie aktualnego modułu. === {{Code|p["Nazwa przedmiotowej przestrzeni nazw"](frame,...)}} === Funkcja pisze przedmiotową nazwę przestrzeni nazw jakikolwiek nazwy przestrzeni nazw (tzn. nazwę przedmiotową nazwy przestrzenie nazw, czyli nie dyskusji, zamieniana jest na nią samą, czyli identyfikator przestrzeni się nie zmienia, a dyskusji, nie przedmiotową, przekształca się na przedmiotową jej odpowiadającą, czyli w tym przypadku identyfikator przestrzeni zmniejsza się o numer mniej), według podanej w zmiennej {{Code|nazwa przestrzeni nazw}} dla pozycja bazowej w podanych parametrach szablonu rodzicu ramki dziecka, lub dla innej pozycji należy parametr podawać w formie {{Code|nazwa przestrzeni nazw 1}}, {{Code|nazwa przestrzeni nazw 2}}, {{Code|nazwa przestrzeni nazw 3}},..., lub te parametry można podać w postaci ogólnej {{Code|nazwa przestrzeni nazw i}}. Parametry podaje się w parametrach rodzica wywołania tej funkcji {{Code|{{m|Pudełko|Nazwa przedmiotowej przestrzeni nazw}}}} (ale ich nie trzeba podawać w dziecku, ale można) i w parametrach dziecka, jeśli chodzi o zmienną {{Code|numer jednostki}}, czyli np.: {{Code|{{m|Pudełko|Nazwa przedmiotowej przestrzeni nazw|numer jednostki{{=}}<jakaś liczba całkowita dodatnia>}}}}. Te parametry przestrzenne zamiast w rodzicu w szablonie można podać w ramce dziecka, wtedy parametry dziecka mają pierwszeństwo. Parametry przestrzenne mogą mogą być podane w postaci przestrzeni przedmiotowej lub dyskusji, ale ta funkcja zawsze ją zamienia na przedmiotową. Przestrzeń nazw z parametrów nazw przestrzennych może odpowiadać wartości przestrzeni głównej, to wtedy odpowiednia przestrzeń nazw z parametru nazwy jednostki się nie liczy w tej funkcji, aby się liczyła należy użyć funkcji {{Code|{{sr|#p["Nazwa przedmiotowej przestrzeni nazw 2"](frame,...)|p=Pudełko}}}}. Definicja skrótowa funkcji: <syntaxhighlight lang="lua"> p["Nazwa przedmiotowej przestrzeni nazw"]=function(frame,czy_uwzglednic_alternatywna_nazwe,i)...end; </syntaxhighlight> Wtedy ciało funkcji tej, czyli jego definicja w środku, jest: <syntaxhighlight lang="lua"> -- Jest liczony numer parametru nazwy przestrzeni nazw, domyslnie chodzi tu o numer bazowy parametrów przestrzennych; local numer_jednostki=i or frame.args["numer jednostki"]; local liczba_numer_jednostki=((numer_jednostki)and(tonumber(numer_jednostki))or 0); local pudelko_pomocne_modul=require("Module:Pudełko/Pomocne"); -- Liczy nazwę przestrzeni nazw przedmiotową na podstawie podanych parametrów; return pudelko_pomocne_modul.Nazwa_przestrzeni_nazw(frame,1, czy_uwzglednic_alternatywna_nazwe,liczba_numer_jednostki); </syntaxhighlight> Parametry funkcji: * {{Code|frame}} - tablica ramki tablicy transportu, * {{Code|czy_uwzglednic_alternatywna_nazwe}} - czy ma uwzględniać nazwę przestrzeni nazw domyślną szablonu, dostępne wartości: {{Code|false}}, w której nazwa domyślna nie jest uwzględniana wtedy, oraz {{Code|nil}} i {{Code|true}}, które oznaczają to samo, w tym jeżeli ona jest uwzględniana, wtedy jest brany parametr pierwszy dziecka, który musi istnieć przy takiej wartości tego parametru, tzn. {{Code|{{m|Pudełko|Nazwa przedmiotowej przestrzeni nazw|Dyskusja szablonu}}}} - ta nazwa domyślna zostanie zamieniona na przedmiotową, a jak ona by była przedmiotowa, to żadnej zamiany by nie było, a nazwa uzyskana z nazwy przestrzeni nazw z parametrów przestrzennych jest w takim przypadku błędna, to w takim razie brany jest ten parametr, a jeżeli ta nazwa domyślna jest błędna, czyli {{Code|{{m|Pudełko|Nazwa przedmiotowej przestrzeni nazw|Moja przestrzeń}}}}, wtedy funkcja zwraca stan błędu {{Code|(błąd)}}. * {{Code|i}} - numer zmiennej nazwy przestrzeni nazw. Funkcja wykorzystuje {{Code|{{sr|#p.Nazwa_przestrzeni_nazw(frame,...)|p=Pudełko/Pomocne}}}} do wyznaczania ogólnego nazwy przestrzeni nazw dla pozycji bazowej i numerkowej, tzn. dla pozycji: jeden, dwa, trzy,..., itd, i ich ogólnej. Parametry ramki tablicy transportu dziecka: * {{Code|nazwa przestrzeni nazw}}, {{Code|nazwa przestrzeni nazw 1}}, {{Code|nazwa przestrzeni nazw 2}}, {{Code|nazwa przestrzeni nazw 3}},..., {{Code|nazwa przestrzeni nazw i}} - nazwy przestrzeni nazw dla pozycji bazowej, numerkowej i ogólnej, * {{Code|typ jednostki}}, {{Code|typ jednostki 1}}, {{Code|typ jednostki 2}}, {{Code|typ jednostki 3}},..., {{Code|typ jednostki i}} - typy jednostek, którym odpowiadają pewne przestrzenie przedmiotowe, dla pozycji bazowej, numerkowej i ogólnej, ** {{Code|dyskusja typu jednostki}}, {{Code|dyskusja typu jednostki 1}}, {{Code|dyskusja typ jednostki 2}}, {{Code|dyskusja typ jednostki 3}},..., {{Code|dyskusja typ jednostki i}} - czy dany typ jednostki ma przedstawiać, jeśli niepusta, przestrzeń dyskusji dla pozycji bazowej, numerkowej i ogólnej, * {{Code|numer jednostki}} - jak parametr {{Code|i}} nie został ustawiony, to wtedy liczy się ta zmienna. Parametr ramki tablicy transportu rodzica szablonu: * {{Code|nazwa przestrzeni nazw}}, {{Code|nazwa przestrzeni nazw 1}}, {{Code|nazwa przestrzeni nazw 2}}, {{Code|nazwa przestrzeni nazw 3}},..., {{Code|nazwa przestrzeni nazw i}} - nazwy przestrzeni nazw dla pozycji bazowej oraz zwykłej i ogólnej numerkowej, * {{Code|typ jednostki}}, {{Code|typ jednostki 1}}, {{Code|typ jednostki 2}}, {{Code|typ jednostki 3}},..., {{Code|typ jednostki i}} - typy jednostek, którym odpowiadają pewne przestrzenie przedmiotowe, dla pozycji bazowej, numerkowej i ogólnej, ** {{Code|dyskusja typu jednostki}}, {{Code|dyskusja typu jednostki 1}}, {{Code|dyskusja typ jednostki 2}}, {{Code|dyskusja typ jednostki 3}},..., {{Code|dyskusja typ jednostki i}} - czy dany typ jednostki ma przedstawiać, jeśli niepusta, przestrzeń dyskusji dla pozycji bazowej, numerkowej i ogólnej. Przykłady: <syntaxhighlight lang="mediawiki"> {{Nazwa szablonu|nazwa przestrzeni nazw=Dyskusja Wikibooks|nazwa przestrzeni nazw 2=Dyskusja szablonu|nazwa przestrzeni nazw i=Dyskusja modułu}} </syntaxhighlight> W dziecku powiedzmy jest wywołanie, i szukamy nazwy przestrzeni nazw o numerze dwa, która nie została podana, ale istnieje za to jej wersji ogólna {{Code|nazwa przestrzeni nazw i}} i domyślna {{Code|nazwa przestrzeni nazw}}: <syntaxhighlight lang="mediawiki"> {{#invoke:Pudełko|Nazwa przedmiotowej przestrzeni nazw|numer jednostki=1}} </syntaxhighlight> Na podstawie powyższego przykładu otrzymamy wynik o schemacie, nie wyniku, bo tam nie ma zmiennej {{Code|nazwa przestrzeni nazw 1}}, ale jest {{Code|nazwa przestrzeni nazw i}}: <syntaxhighlight lang="mediawiki"> <!-- Ale nie "nazwa przestrzeni nazw", bo jej nie ma, ale za to istnieje "nazwa przestrzeni nazw i"; --> <!-- nazwa przestrzeni nazw 2=nazwa przestrzeni nazw i=Dyskusja modułu; --> <!-- Czyli wynik: --> Moduł <!-- Widzimy, że wygenerowała się nazwa przestrzeni nazw, którą jest przestrzeń przedmiotowa programowa przestrzeni dyskusji "Dyskusja modułu", którą również jest "Szablon" jego przestrzeni dyskusji "Dyskusja szablonu", a dla ich przestrzeni przedmiotowej, zamiast dyskusji, to samo przekształca się na to samo; --> </syntaxhighlight> Nie jest brana w tym powyższym przykładzie zmienna {{Code|nazwa przestrzeni nazw}}, bo jej nie ma, ale za to jest {{Code|nazwa przestrzeni nazw i}}, bo ona występuje jako parametr domyślny ogólny dla parametrów numerkowych. Przykłady w wikikodzie: * {{Code|{{m|Pudełko|Nazwa przedmiotowej przestrzeni nazw|numer jednostki{{=}}2}}}} → {{Tt|{{#invoke:Pudełko|Nazwa przedmiotowej przestrzeni nazw|numer jednostki=2}}}} * {{Code|{{m|Pudełko|Nazwa przedmiotowej przestrzeni nazw|Dyskusja szablonu|nazwa przestrzeni nazw i{{=}}Moja przestrzeń|numer jednostki{{=}}2}}}} → {{Tt|{{#invoke:Pudełko|Nazwa przedmiotowej przestrzeni nazw|Dyskusja szablonu|nazwa przestrzeni nazw i=Moja przestrzeń|numer jednostki=2}}}} * {{Code|{{m|Pudełko|Nazwa przedmiotowej przestrzeni nazw|nazwa przestrzeni nazw 2{{=}}Dyskusja szablonu|numer jednostki{{=}}2}}}} → {{Tt|{{#invoke:Pudełko|Nazwa przedmiotowej przestrzeni nazw|nazwa przestrzeni nazw 2=Dyskusja szablonu|numer jednostki=2}}}} * {{Code|{{m|Pudełko|Nazwa przedmiotowej przestrzeni nazw|nazwa przestrzeni nazw 2{{=}}Dyskusja szablonu|numer jednostki{{=}}2}}}} → {{Tt|{{#invoke:Pudełko|Nazwa przedmiotowej przestrzeni nazw|nazwa przestrzeni nazw i=Dyskusja szablonu|numer jednostki=2}}}} * {{Code|{{m|Pudełko|Nazwa przedmiotowej przestrzeni nazw|nazwa przestrzeni nazw{{=}}Dyskusja szablonu|numer jednostki{{=}}2}}}} → {{Tt|{{#invoke:Pudełko|Nazwa przedmiotowej przestrzeni nazw|nazwa przestrzeni nazw=Dyskusja szablonu|numer jednostki=2}}}} Powyżej dla przykładu podano parametry nie w rodzicu w szablonie, tylko w dziecku, jeśli chodzi o parametry nazw przestrzeni nazw, ale ich się za to nie powinno podawać w tych ramach, tylko w szablonach, w których wywoływane są te ramki pudełek {{Code|{{m|Pudełko}}}}, ale tak tutaj tak zrobiono by było najłatwiej sprawdzić działanie tego typu funkcji. Analogicznie możemy podawać parametry typu jednostki, np.: wywołaniu modułowym {{Code|{{m|Pudełko|Nazwa przedmiotowej przestrzeni nazw|typ jednostki 2{{=}}strona szablonu|numer jednostki{{=}}2}}}}, ale o tym więcej w rozdziałach {{Code|{{sr|# p["Typ jednostki"](frame,i)|p=Pudełko}}}}, {{Code|{{sr|#p["Typ jednostki 2"](frame,i)|p=Pudełko}}}}, {{Code|{{sr|#p["Typ jednostki 3"](frame,i)|p=Pudełko}}}} itp. w „{{sr|#Funkcje typu jednostki|p=Pudełko}}”, ale wtedy ta sama nazwa przestrzeni nazw reprezentowana przez {{Parametr|typ jednostki 2|strona szablonu}}, jest zamieniana na to samo, lepiej jest tutaj używać parametrów przestrzennych nazw niż typu jednostki, bo typ jednostki ma taką samą wartość dla przestrzeni przedmiotowej, co dyskusji. Tutaj parametr dyskusji typu jednostki bazowy i numerkowy ogólny, czy szczegółowy, nie gra roli, bo nawet, gdy wygenerujemy nazwę przestrzeni dyskusji za pomoca tego parametru, to i tak otrzymamy na samym końcu jego nazwę przedmiotową. Również parametry typu jednostki nie powinno się podawać w dziecku w ramce, tylko w rodzicu w szablonie jako parametry, w którym ta ramka jest wywoływana, ale tutaj podano jedynie dla przykładu, jak najłatwiej sprawdzić działanie tych parametrów tej funkcji. Najpierw w funkcji nagłówku brane są parametry nazw przestrzeni nazw, a jeżeli ich nie ma, to parametry typu jednostki, a jeżeli nie ma, to generowane są nazwy na podstawie aktualnego modułu. === {{Code|p["Nazwa przestrzeni nazw dyskusji"](frame,...)}} === Funkcja pisze nazwę przestrzeni nazw dyskusji jakikolwiek nazwy przestrzeni nazw (tzn. nazwę przedmiotową nazwy przestrzenie nazw, czyli nie dyskusji, zamieniana jest na dyskusji, czyli identyfikator przestrzeni się zmienia jeden wyżej, a dyskusji, nie przedmiotową, przekształca się na tą samą), według podanej w zmiennej {{Code|nazwa przestrzeni nazw}} dla pozycja bazowej w podanych parametrach szablonu rodzicu ramki dziecka, lub dla innej pozycji należy parametr podawać w formie {{Code|nazwa przestrzeni nazw 1}}, {{Code|nazwa przestrzeni nazw 2}}, {{Code|nazwa przestrzeni nazw 3}},..., lub te parametry można podać w postaci ogólnej {{Code|nazwa przestrzeni nazw i}}. Parametry podaje się w parametrach rodzica wywołania tej funkcji {{Code|{{m|Pudełko|Nazwa przestrzeni nazw dyskusji}}}} (ale ich nie trzeba podawać w dziecku, ale można) i w parametrach dziecka, jeśli chodzi o zmienną {{Code|numer jednostki}}, czyli np.: {{Code|{{m|Pudełko|Nazwa przestrzeni nazw dyskusji|numer jednostki{{=}}<jakaś liczba całkowita dodatnia>}}}}. Te parametry przestrzenne zamiast w rodzicu w szablonie można podać w ramce dziecka, wtedy parametry dziecka mają pierwszeństwo. Parametry przestrzenne mogą mogą być podane w postaci przestrzeni przedmiotowej lub dyskusji, ale ta funkcja zawsze ją zamienia na dyskusji. Przestrzeń nazw z parametrów nazw przestrzennych może odpowiadać wartości przestrzeni głównej, to wtedy odpowiednia przestrzeń nazw z parametru nazwy jednostki się nie liczy w tej funkcji, aby się liczyła należy użyć funkcji {{Code|{{sr|#p["Nazwa przestrzeni nazw dyskusji 2"](frame,...)|p=Pudełko}}}}. Definicja skrótowa funkcji: <syntaxhighlight lang="lua"> p["Nazwa przestrzeni nazw dyskusji"]=function(frame,czy_uwzglednic_alternatywna_nazwe,i)...end; </syntaxhighlight> Wtedy ciało funkcji tej, czyli jego definicja w środku, jest: <syntaxhighlight lang="lua"> -- Jest liczony numer parametru nazwy przestrzeni nazw, domyslnie chodzi tu o numer bazowy parametrów przestrzennych; local numer_jednostki=i or frame.args["numer jednostki"]; local liczba_numer_jednostki=((numer_jednostki)and(tonumber(numer_jednostki))or 0); local pudelko_pomocne_modul=require("Module:Pudełko/Pomocne"); -- Liczy nazwę przestrzeni nazw dyskusji na podstawie podanych parametrów; return pudelko_pomocne_modul.Nazwa_przestrzeni_nazw(frame,2, czy_uwzglednic_alternatywna_nazwe,liczba_numer_jednostki); </syntaxhighlight> Parametry funkcji: * {{Code|frame}} - tablica ramki tablicy transportu, * {{Code|czy_uwzglednic_alternatywna_nazwe}} - czy ma uwzględniać nazwę przestrzeni nazw domyślną szablonu, dostępne wartości: {{Code|false}}, w której nazwa domyślna nie jest uwzględniana wtedy, oraz {{Code|nil}} i {{Code|true}}, które oznaczają to samo, w tym jeżeli ona jest uwzględniana, wtedy jest brany parametr pierwszy dziecka, który musi istnieć przy takiej wartości tego parametru, tzn. {{Code|{{m|Pudełko|Nazwa przestrzeni nazw dyskusji|Szablon}}}} - ta nazwa domyślna zostanie przekształcona na dyskusji, a jeżeli ona by była dyskusji, to nie byłoby żadnego przekształcenia, a nazwa uzyskana nazwy przestrzeni nazw z parametrów przestrzennych jest w takim przypadku błędna, to w takim razie brany jest ten parametr, a jeżeli nazwa domyślna jest błędna, czyli {{Code|{{m|Pudełko|Nazwa przestrzeni nazw dyskusji|Moja przestrzeń}}}}, wtedy funkcja zwraca stan błędu {{Code|(błąd)}}. * {{Code|i}} - numer zmiennej nazwy przestrzeni nazw. Funkcja wykorzystuje {{Code|{{sr|#p.Nazwa_przestrzeni_nazw(frame,...)|p=Pudełko/Pomocne}}}} do wyznaczania ogólnego nazwy przestrzeni nazw dla pozycji bazowej i numerkowej, tzn. dla pozycji: jeden, dwa, trzy,..., itd, i ich ogólnej. Parametry ramki tablicy transportu dziecka: * {{Code|nazwa przestrzeni nazw}}, {{Code|nazwa przestrzeni nazw 1}}, {{Code|nazwa przestrzeni nazw 2}}, {{Code|nazwa przestrzeni nazw 3}},..., {{Code|nazwa przestrzeni nazw i}} - nazwy przestrzeni nazw dla pozycji bazowej, numerkowej i ogólnej, * {{Code|typ jednostki}}, {{Code|typ jednostki 1}}, {{Code|typ jednostki 2}}, {{Code|typ jednostki 3}},..., {{Code|typ jednostki i}} - typy jednostek, którym odpowiadają pewne przestrzenie przedmiotowe, dla pozycji bazowej, numerkowej i ogólnej, ** {{Code|dyskusja typu jednostki}}, {{Code|dyskusja typu jednostki 1}}, {{Code|dyskusja typ jednostki 2}}, {{Code|dyskusja typ jednostki 3}},..., {{Code|dyskusja typ jednostki i}} - czy dany typ jednostki ma przedstawiać, jeśli niepusta, przestrzeń dyskusji dla pozycji bazowej, numerkowej i ogólnej, * {{Code|numer jednostki}} - jak parametr {{Code|i}} nie został ustawiony, to wtedy liczy się ta zmienna. Parametr ramki tablicy transportu rodzica szablonu: * {{Code|nazwa przestrzeni nazw}}, {{Code|nazwa przestrzeni nazw 1}}, {{Code|nazwa przestrzeni nazw 2}}, {{Code|nazwa przestrzeni nazw 3}},..., {{Code|nazwa przestrzeni nazw i}} - nazwy przestrzeni nazw dla pozycji bazowej oraz zwykłej i ogólnej numerkowej, * {{Code|typ jednostki}}, {{Code|typ jednostki 1}}, {{Code|typ jednostki 2}}, {{Code|typ jednostki 3}},..., {{Code|typ jednostki i}} - typy jednostek, którym odpowiadają pewne przestrzenie przedmiotowe, dla pozycji bazowej, numerkowej i ogólnej, ** {{Code|dyskusja typu jednostki}}, {{Code|dyskusja typu jednostki 1}}, {{Code|dyskusja typ jednostki 2}}, {{Code|dyskusja typ jednostki 3}},..., {{Code|dyskusja typ jednostki i}} - czy dany typ jednostki ma przedstawiać, jeśli niepusta, przestrzeń dyskusji dla pozycji bazowej, numerkowej i ogólnej. Przykłady: <syntaxhighlight lang="mediawiki"> {{Nazwa szablonu|nazwa przestrzeni nazw=Wikibooks|nazwa przestrzeni nazw 2=Szablon|nazwa przestrzeni nazw i=Moduł}} </syntaxhighlight> W dziecku powiedzmy jest wywołanie, i szukamy nazwy przestrzeni nazw o numerze dwa, która nie została podana, ale istnieje za to jej wersji ogólna {{Code|nazwa przestrzeni nazw i}} i domyślna {{Code|nazwa przestrzeni nazw}}: <syntaxhighlight lang="mediawiki"> {{#invoke:Pudełko|Nazwa przestrzeni nazw dyskusji|numer jednostki=1}} </syntaxhighlight> Na podstawie powyższego przykładu otrzymamy wynik o schemacie, nie wyniku, bo tam nie ma zmiennej {{Code|nazwa przestrzeni nazw 1}}, ale jest {{Code|nazwa przestrzeni nazw i}}: <syntaxhighlight lang="mediawiki"> <!-- Ale nie "nazwa przestrzeni nazw", bo jej nie ma, ale za to istnieje "nazwa przestrzeni nazw i"; --> <!-- nazwa przestrzeni nazw 2=nazwa przestrzeni nazw i=Moduł; --> <!-- Czyli wynik: --> Dyskusja modułu <!-- Widzimy, że wygenerowała się nazwa przestrzeni nazw, którą jest przestrzeń dyskusji przestrzeni programowej przestrzeni przedmiotowej "Moduł", którą również jest "Szablon" jego przestrzeni dyskusji "Dyskusja szablonu", a dla ich przestrzeni przedmiotowej, zamiast dyskusji, to przekształca się na dyskusji jej odpowiadającą; --> </syntaxhighlight> Nie jest brana w tym powyższym przykładzie zmienna {{Code|nazwa przestrzeni nazw}}, bo jej nie ma, ale za to jest {{Code|nazwa przestrzeni nazw i}}, bo ona występuje jako parametr domyślny ogólny dla parametrów numerkowych. Przykłady w wikikodzie: * {{Code|{{m|Pudełko|Nazwa przestrzeni nazw dyskusji|numer jednostki{{=}}2}}}} → {{Tt|{{#invoke:Pudełko|Nazwa przestrzeni nazw dyskusji|numer jednostki=2}}}} * {{Code|{{m|Pudełko|Nazwa przestrzeni nazw dyskusji|Szablon|nazwa przestrzeni nazw i{{=}}Moja przestrzeń|numer jednostki{{=}}2}}}} → {{Tt|{{#invoke:Pudełko|Nazwa przestrzeni nazw dyskusji|Szablon|nazwa przestrzeni nazw i=Moja przestrzeń|numer jednostki=2}}}} * {{Code|{{m|Pudełko|Nazwa przestrzeni nazw dyskusji|nazwa przestrzeni nazw 2{{=}}Szablon|numer jednostki{{=}}2}}}} → {{Tt|{{#invoke:Pudełko|Nazwa przestrzeni nazw dyskusji|nazwa przestrzeni nazw 2=Szablon|numer jednostki=2}}}} * {{Code|{{m|Pudełko|Nazwa przestrzeni nazw dyskusji|nazwa przestrzeni nazw 2{{=}}Szablon|numer jednostki{{=}}2}}}} → {{Tt|{{#invoke:Pudełko|Nazwa przestrzeni nazw dyskusji|nazwa przestrzeni nazw i=Szablon|numer jednostki=2}}}} * {{Code|{{m|Pudełko|Nazwa przestrzeni nazw dyskusji|nazwa przestrzeni nazw{{=}}Szablon|numer jednostki{{=}}2}}}} → {{Tt|{{#invoke:Pudełko|Nazwa przestrzeni nazw dyskusji|nazwa przestrzeni nazw=Szablon|numer jednostki=2}}}} Powyżej dla przykładu podano parametry nie w rodzicu w szablonie, tylko w dziecku, jeśli chodzi o parametry nazw przestrzeni nazw, ale ich się za to nie powinno podawać w tych ramach, tylko w szablonach, w których wywoływane są te ramki pudełek {{Code|{{m|Pudełko}}}}, ale tak tutaj tak zrobiono by było najłatwiej sprawdzić działanie tego typu funkcji. Analogicznie możemy podawać parametry typu jednostki, np.: wywołaniu modułowym {{Code|{{m|Pudełko|Nazwa przestrzeni nazw dyskusji|typ jednostki 2{{=}}strona szablonu|numer jednostki{{=}}2}}}}, ale o tym więcej w rozdziałach {{Code|{{sr|# p["Typ jednostki"](frame,i)|p=Pudełko}}}}, {{Code|{{sr|#p["Typ jednostki 2"](frame,i)|p=Pudełko}}}}, {{Code|{{sr|#p["Typ jednostki 3"](frame,i)|p=Pudełko}}}} itp. w „{{sr|#Funkcje typu jednostki|p=Pudełko}}”, ale wtedy nazwa przestrzeni nazw reprezentowana przez {{Parametr|typ jednostki 2|strona szablonu}}, jest zamieniana na nazwę przestrzeni nazw dyskusji. Parametr dyskusji typu jednostki bazowy lub dla danego numerka ogólny, czy szczegółowy, nie gra roli. Również parametry typu jednostki nie powinno się podawać w dziecku w ramce, tylko w rodzicu w szablonie jako parametry, w którym ta ramka jest wywoływana, ale tutaj podano jedynie dla przykładu, jak najłatwiej sprawdzić działanie tych parametrów tej funkcji. Najpierw w funkcji nagłówku brane są parametry nazw przestrzeni nazw, a jeżeli ich nie ma, to parametry typu jednostki, a jeżeli nie ma, to generowane są nazwy na podstawie aktualnego modułu. == Funkcje nazw przestrzeni nazw drugiej wersji == === {{Code|p["Nazwa przestrzeni nazw 2"](frame,...)}} === Funkcja pisze nazwę przestrzeni nazw, niezależnie, czy to jest przedmiotowa, czy dyskusji, według, i nie zawsze tylko, podanej w zmiennej {{Code|nazwa przestrzeni nazw}} dla pozycja bazowej w podanych parametrach szablonu rodzicu ramki dziecka, lub dla innej pozycji należy parametr podawać w formie {{Code|nazwa przestrzeni nazw 1}}, {{Code|nazwa przestrzeni nazw 2}}, {{Code|nazwa przestrzeni nazw 3}},..., lub te parametry można podać w postaci ogólnej {{Code|nazwa przestrzeni nazw i}}. W tej funkcji trzeba też podawać parametry nazwy jednostek {{Code|nazwa jednostki}}, {{Code|nazwa jednostki 1}}, {{Code|nazwa jednostki 2}}, {{Code|nazwa jednostki 3}},... Parametry podaje się w parametrach rodzica wywołania tej funkcji {{Code|{{m|Pudełko|Nazwa przestrzeni nazw 2}}}} (ale ich nie trzeba podawać w dziecku, ale można) i w parametrach dziecka, jeśli chodzi o zmienną {{Code|numer jednostki}}, czyli np.: {{Code|{{m|Pudełko|Nazwa przestrzeni nazw 2|numer jednostki{{=}}<jakaś liczba całkowita dodatnia>}}}}. Te parametry przestrzenne zamiast w rodzicu w szablonie można podać w ramce dziecka, wtedy parametry dziecka mają pierwszeństwo. Przestrzeń nazw z parametrów nazw przestrzennych może odpowiadać wartości przestrzeni głównej, to wtedy odpowiednia przestrzeń nazw z parametru nazwy jednostki się liczy w tej funkcji, wtedy jest liczona nazwa przestrzeni nazw z tego parametru. Gdy parametry przestrzenne lub typ jednostki w drugim podejściu nie wskazują na przestrzeń główną, to wtedy działanie tej funkcji jest podobne do {{Code|{{sr|#p["Nazwa przestrzeni nazw"](frame,...)|p=Pudełko}}}}. Definicja skrótowa funkcji: <syntaxhighlight lang="lua"> p["Nazwa przestrzeni nazw 2"]=function(frame,czy_uwzglednic_alternatywna_nazwe,i)...end; </syntaxhighlight> Wtedy ciało funkcji tej, czyli jego definicja w środku, jest: <syntaxhighlight lang="lua"> local pudelko_pomocne_modul=require("Module:Pudełko/Pomocne"); -- Liczy nazwę przestrzeni nazw, jeżeli z parametrów przestrzennych przestrzeń wskazuje na główną, to wtedy jest liczona przestrzeń nazw z nazwy jednostki; return pudelko_pomocne_modul.Nazwa_przestrzeni_nazw_2(frame,czy_uwzglednic_alternatywna_nazwe,i) </syntaxhighlight> Parametry funkcji: * {{Code|frame}} - tablica ramki tablicy transportu, * {{Code|czy_uwzglednic_alternatywna_nazwe}} - czy ma uwzględniać nazwę przestrzeni nazw domyślną szablonu, dostępne wartości: {{Code|false}}, w której nazwa domyślna nie jest uwzględniana wtedy, oraz {{Code|nil}} i {{Code|true}}, które oznaczają to samo, w tym jeżeli ona jest uwzględniana, wtedy jest brany parametr pierwszy dziecka, który musi istnieć przy takiej wartości tego parametru, tzn. {{Code|{{m|Pudełko|Nazwa przestrzeni nazw 2|Szablon}}}}, a nazwa uzyskana nazwy przestrzeni nazw jest w takim przypadku błędna, a jeżeli nazwa domyślna jest błędna, czyli {{Code|{{m|Pudełko|Nazwa przestrzeni nazw 2|Moja przestrzeń}}}}, wtedy funkcja zwraca stan błędu {{Code|(błąd)}}. * {{Code|i}} - numer zmiennej nazwy przestrzeni nazw. Funkcja wykorzystuje {{Code|{{sr|#p.Nazwa_przestrzeni_nazw_2(frame,...)|p=Pudełko/Pomocne}}}} do wyznaczania ogólnego nazwy przestrzeni nazw dla pozycji bazowej i numerkowej, tzn. dla pozycji: jeden, dwa, trzy,..., itd, i ich ogólnej. Parametry ramki tablicy transportu dziecka: * {{Code|nazwa przestrzeni nazw}}, {{Code|nazwa przestrzeni nazw 1}}, {{Code|nazwa przestrzeni nazw 2}}, {{Code|nazwa przestrzeni nazw 3}},..., {{Code|nazwa przestrzeni nazw i}} - nazwy przestrzeni nazw dla pozycji bazowej, numerkowej i ogólnej, * {{Code|typ jednostki}}, {{Code|typ jednostki 1}}, {{Code|typ jednostki 2}}, {{Code|typ jednostki 3}},..., {{Code|typ jednostki i}} - typy jednostek, którym odpowiadają pewne przestrzenie przedmiotowe, dla pozycji bazowej, numerkowej i ogólnej, ** {{Code|dyskusja typu jednostki}}, {{Code|dyskusja typu jednostki 1}}, {{Code|dyskusja typ jednostki 2}}, {{Code|dyskusja typ jednostki 3}},..., {{Code|dyskusja typ jednostki i}} - czy dany typ jednostki ma przedstawiać, jeśli niepusta, przestrzeń dyskusji dla pozycji bazowej, numerkowej i ogólnej, * {{Code|numer jednostki}} - jak parametr {{Code|i}} nie został ustawiony, to wtedy liczy się ta zmienna. Parametr ramki tablicy transportu rodzica szablonu: * {{Code|nazwa przestrzeni nazw}}, {{Code|nazwa przestrzeni nazw 1}}, {{Code|nazwa przestrzeni nazw 2}}, {{Code|nazwa przestrzeni nazw 3}},..., {{Code|nazwa przestrzeni nazw i}} - nazwy przestrzeni nazw dla pozycji bazowej oraz zwykłej i ogólnej numerkowej, * {{Code|typ jednostki}}, {{Code|typ jednostki 1}}, {{Code|typ jednostki 2}}, {{Code|typ jednostki 3}},..., {{Code|typ jednostki i}} - typy jednostek, którym odpowiadają pewne przestrzenie przedmiotowe, dla pozycji bazowej, numerkowej i ogólnej, ** {{Code|dyskusja typu jednostki}}, {{Code|dyskusja typu jednostki 1}}, {{Code|dyskusja typ jednostki 2}}, {{Code|dyskusja typ jednostki 3}},..., {{Code|dyskusja typ jednostki i}} - czy dany typ jednostki ma przedstawiać, jeśli niepusta, przestrzeń dyskusji dla pozycji bazowej, numerkowej i ogólnej. Przykłady: <syntaxhighlight lang="mediawiki"> {{Nazwa szablonu|nazwa przestrzeni nazw=Wikibooks|nazwa przestrzeni nazw 1=Szablon|nazwa przestrzeni nazw i=|nazwa jednostki 2=Wikibooks:Strona}} </syntaxhighlight> W dziecku powiedzmy jest wywołanie, i szukamy nazwy przestrzeni nazw o numerze dwa, która została podana, ale istnieje za to jej wersji ogólna {{Code|nazwa przestrzeni nazw i}} i domyślna {{Code|nazwa przestrzeni nazw}}, ale wtedy dla tego numerkowego liczy się to ogólne z {{Code| i}}, a ponieważ ta nazwa jest pusta, więc będziemy liczyli nazwę przestrzeni nazw z {{Code|nazwa jednostki 2}}: <syntaxhighlight lang="mediawiki"> {{#invoke:Pudełko|Nazwa przestrzeni nazw 2|numer jednostki=2}} </syntaxhighlight> Na podstawie powyższego przykładu otrzymamy wynik o schemacie, nie wyniku, bo tam nie ma zmiennej {{Code|nazwa przestrzeni nazw 1}}, ale jest {{Code|nazwa przestrzeni nazw i}}: <syntaxhighlight lang="mediawiki"> <!-- Ale nie "nazwa przestrzeni nazw 2", bo jej nie ma, ale za to istnieje "nazwa przestrzeni nazw i"; --> <!-- nazwa przestrzeni nazw 2=nazwa przestrzeni nazw i="", a nazwa jednostki 2="Wikibooks:Strona"; --> <!-- Czyli wynik: --> Wikibooks <!-- Widzimy, że wygenerowała się nazwa przestrzeni nazw, którą jest przestrzeń nieprogramowa, ale projektu, wychodząca z nazwy jednostek w tym przypadku z "nazwa jednostki 2"; --> </syntaxhighlight> Nie jest brana w tym powyższym przykładzie zmienna {{Code|nazwa przestrzeni nazw}}, bo jej nie ma, ale za to jest {{Code|nazwa przestrzeni nazw i}}, bo ona występuje jako parametr domyślny ogólny dla parametrów numerkowych. Tytaj jest używwana jest zmienna {{Code|nazwa jednostki 2}} do wygenerowania ostatecznego wyniki, bo jak można zauważyć, parametry przestrzenne wskazują na przestrzeń główną, a nazwy jednostek już nie. Przykłady w wikikodzie: * {{Code|{{m|Pudełko|Nazwa przestrzeni nazw 2|numer jednostki{{=}}2}}}} → {{Tt|{{#invoke:Pudełko|Nazwa przestrzeni nazw 2|numer jednostki=2}}}} * {{Code|{{m|Pudełko|Nazwa przestrzeni nazw 2|Szablon|nazwa przestrzeni nazw i{{=}}Moja przestrzeń|numer jednostki{{=}}2}}}} → {{Tt|{{#invoke:Pudełko|Nazwa przestrzeni nazw 2|Szablon|nazwa przestrzeni nazw i=Moja przestrzeń|numer jednostki=2}}}} * {{Code|{{m|Pudełko|Nazwa przestrzeni nazw 2|nazwa przestrzeni nazw 2{{=}}|nazwa jednostki 2{{=}}Szablon:Strona|numer jednostki{{=}}2}}}} → {{Tt|{{#invoke:Pudełko|Nazwa przestrzeni nazw 2|nazwa przestrzeni nazw 2=|nazwa jednostki 2=Szablon:Strona|numer jednostki=2}}}} * {{Code|{{m|Pudełko|Nazwa przestrzeni nazw 2|nazwa przestrzeni nazw i{{=}}|nazwa jednostki 2{{=}}Szablon:Strona|numer jednostki{{=}}2}}}} → {{Tt|{{#invoke:Pudełko|Nazwa przestrzeni nazw 2|nazwa przestrzeni nazw i=|nazwa jednostki 2=Szablon:Strona|numer jednostki=2}}}} * {{Code|{{m|Pudełko|Nazwa przestrzeni nazw 2|Szablon|nazwa przestrzeni nazw{{=}}|nazwa jednostki 2{{=}}Wikibooks:Strona|numer jednostki{{=}}2}}}} → {{Tt|{{#invoke:Pudełko|Nazwa przestrzeni nazw 2|Szablon|nazwa przestrzeni nazw=|nazwa jednostki 2=Wikibooks:Strona|numer jednostki=2}}}} Powyżej dla przykładu podano parametry nie w rodzicu w szablonie, tylko w dziecku, jeśli chodzi o parametry nazw przestrzeni nazw i nazw jednostek, ale ich się za to nie powinno podawać w tych ramach, tylko w szablonach, w których wywoływane są te ramki pudełek {{Code|{{m|Pudełko}}}}, ale tak tutaj tak zrobiono by było najłatwiej sprawdzić działanie tego typu funkcji. Analogicznie możemy podawać parametry typu jednostki, np.: wywołaniu modułowym {{Code|{{m|Pudełko|Nazwa przestrzeni nazw 2|typ jednostki 2{{=}}Podręcznik|nazwa jednostki 2{{=}}Szablon:Strona|umer jednostki{{=}}2}}}} (ale wtedy jest brana przestrzeń nazw z nazwy jednostki), ale o tym więcej w rozdziałach {{Code|{{sr|# p["Typ jednostki"](frame,i)|p=Pudełko}}}}, {{Code|{{sr|#p["Typ jednostki 2"](frame,i)|p=Pudełko}}}}, {{Code|{{sr|#p["Typ jednostki 3"](frame,i)|p=Pudełko}}}} itp. w „{{sr|#Funkcje typu jednostki|p=Pudełko}}”, on definiuje przestrzenie przedmiotowe, ale można użyć parametru dyskusji typu jednostki z wartością niepustą, wtedy wyświetli się nazwa przestrzeni nazw dyskusji. Jeżeli typ jednostki wskazuje na przestrzeń nazw główną, wtedy się liczą parametry nazw jednostek. Również parametry typu jednostki nie powinno się podawać w dziecku w ramce, tylko w rodzicu w szablonie jako parametry, w którym ta ramka jest wywoływana, ale tutaj podano jedynie dla przykładu, jak najłatwiej sprawdzić działanie tych parametrów tej funkcji. Najpierw w funkcji nagłówku brane są parametry nazw przestrzeni nazw, a jeżeli ich nie ma, to parametry typu jednostki, a jeżeli nie ma lub parametry przestrzenne wskazują na przestrzeń główną, i nie ma nazwy jednostki, to generowane są nazwy tej funkcji na podstawie aktualnej strony. === {{Code|p["Nazwa przedmiotowej przestrzeni nazw 2"](frame,...)}} === === {{Code|p["Nazwa przestrzeni nazw dyskusji 2"](frame,...)}} === == Funkcje pełnych nazw jednostki == === {{Code|p["Pełna nazwa dyskusji jednostki"](frame,i)}} === === {{Code|p["Pełna nazwa przedmiotowa jednostki"](frame,i)}} === === {{Code|p["Pełna nazwa jednostki"](frame,i)}} === == Funkcje pełnych nazw jednostki drugiej wersji == === {{Code|p["Pełna nazwa dyskusji jednostki 2"](frame,i)}} === === {{Code|p["Pełna nazwa przedmiotowa jednostki 2"](frame,i)}} === === {{Code|p["Pełna nazwa jednostki 2"](frame,i)}} === == Funkcje pełnych nazw jednostki trzeciej wersji == === {{Code|p["Pełna nazwa dyskusji jednostki 3"](frame,i)}} === === {{Code|p["Pełna nazwa przedmiotowa jednostki 3"](frame,i)}} === === {{Code|p["Pełna nazwa jednostki 3"](frame,i)}} === == Funkcje nazw jednostki == === {{Code|p["Nazwa jednostki"](frame,i)}} === == Funkcje nazw jednostki drugiej wersji == === {{Code|p["Nazwa jednostki 2"](frame,i)}} === === {{Code|p["Nazwa przedmiotowa jednostki 2"](frame,i)}} === === {{Code|p["Nazwa dyskusji jednostki 2"](frame,i)}} === == Funkcje nazw przestrzeni nazw trzeciej wersji == === {{Code|p["Nazwa przestrzeni nazw 3"](frame,i)}} === === {{Code|p["Nazwa przedmiotowej przestrzeni nazw 3"](frame,i)}} === === {{Code|p["Nazwa przestrzeni nazw dyskusji 3"](frame,i)}} === == Funkcje nazw jednostki trzeciej wersji == === {{Code|p["Nazwa jednostki 3"](frame,i)}} === === {{Code|p["Nazwa przedmiotowa jednostki 3"](frame,i)}} === === {{Code|p["Nazwa dyskusji jednostki 3"](frame,i)}} === == Funkcje typu jednostki == === {{Code|p["Typ jednostki"](frame,i)}} === === {{Code|p["Typ jednostki 2"](frame,i)}} === === {{Code|p["Typ jednostki 3"](frame,i)}} === === Funkcje typu jednostki przedmiotowe === ==== {{Code|p["Przedmiotowy typ jednostki"](frame,i)}} ==== ==== {{Code|p["Przedmiotowy typ jednostki 2"](frame,i)}} ==== ==== {{Code|p["Przedmiotowy typ jednostki 3"](frame,i)}} ==== === Fukcje typu jednostki dyskusji === ==== {{Code|p["Dyskusyjny typ jednostki"](frame,i)}} ==== ==== {{Code|p["Dyskusyjny typ jednostki 2"](frame,i)}}} ==== ==== {{Code|p["Dyskusyjny typ jednostki 3"](frame,i)}} ==== == Funkcje chech pudełka == === {{Code|p["Cecha pudełka"](frame)}} === === {{Code|p["Przedmiotowa cecha pudełka"](frame)}} === === {{Code|p["Dyskusyjna cecha pudełka"](frame)}} === == Fukcje ogólnego pudełka == === {{Code|p["Ogólne pudełko"](frame)}} === == Funkcje ogólne == === {{Code|p["Tekst pudełka"](frame)}} === == Funkcje błędów pudełka == === {{Code|p["Błędy pudełka"](frame)}} === === {{Code|p["Przedmiotowe błędy pudełka"](frame)}} === === {{Code|p["Dyskusyjne błędy pudełka"](frame)}} === == Funkcje nazw stron == === {{Code|p["Nazwa strony głównej projektu"](frame,i)}} === === {{Code|p["Nazwa strony głównej dla dzieci projektu"](frame,i)}} === == Funkcje kodów == === {{Code|p["Kod języka"](frame,i)}} === === {{Code|p["Kod projektu"](frame,i)}} === === {{Code|p["Klucz projektu"](frame,i)}} === == Funkcje wiki == === {{Code|p["Inny niż język bieżący wiki"](frame)}} === === {{Code|p["Inne niż lokalne wiki"](frame)}} === === {{Code|p["Inne niż bieżące wiki"](frame)}} === == Funkcje typów parametrów, czy podane je == === {{Code|p["Podano parametry nienazwane"](frame)}} === === {{Code|p["Podano parametry numerowane"](frame)}} === === {{Code|p["Podano parametry nazwane"](frame)}} === == Funkcje kodów tego projektu == === {{Code|p["Kod projektu tego projektu"](frame)}} === === {{Code|p["Kod języka tego projektu"](frame)}} === === {{Code|p["Klucz projektu tego projektu"](frame)}} === == Funkcje stron == === {{Code|p["Strona główna tego projektu"](frame)}} === === {{Code|p["Strona główna dla dzieci tego projektu"](frame)}} === == Funkcje nazw stron drugiej wersji == === {{Code|p["Nazwa strony głównej dla dzieci projektu 2"](frame)}} === === {{Code| p["Nazwa strony głównej projektu 2"](frame)}} === {{BrClear}} <noinclude><!-- -->{{ProstaStronaKoniec}}<!-- -->{{Kategoria|Opisy funkcji, w Lua w Scribunto, w modułach}}<!-- --></noinclude> c2o3pwm50ipxh93842tpugl3y2h4cw3 540384 540383 2026-04-23T13:31:00Z Persino 2851 /* {{Code|p["Nazwa przestrzeni nazw 2"](frame,...)}} */ 540384 wikitext text/x-wiki <noinclude>{{ProstaStronaStart | nagłówek = {{Podrozdział|{{ld2|Pudełko}}|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 pudelko_modul=require("Module:Pudełko"); </syntaxhighlight> dzięki, któremu można wypisywać funkcje należącego do niego. Posługuje się na parametrach pudełkowych {{Parametr|nazwa przestrzeni nazw}} (czy też bez numerka {{Parametr|nazwa przestrzeni nazw i}} dla tego numerowanego) lub te z numerkiem po jednej spacji w nich (ale nie dla tego z końcówką {{Code| i}}) mogą zostać użyte jako parametry szablonu. Moduł {{Code|{{ld2|Pudełko}}}} przedstawia funkcje nazw w oparciu o funkcje nazw {{Code|{{ld2|Nazwy}}}}, generuje on nazwy za pomocą parametrów pudełkowych podanych poniżej. Parametr {{Parametr|nazwa jednostki}} (lub parametr {{Parametr|cel}} dla numerka tego pierwszego, tego alternatywnego), lub te z numerkiem po jednej spacji w nazwie parametru, albo numerowane numerkami {{Code|1}}, {{Code|2}},..., mogą zostać użyte jako parametry szablonu. Parametry określające rodzaj jednostki {{Parametr|typ jednostki}} z {{Parametr|dyskusja typu jednostki}}, itp. w wersjach z numerkiem po jednej spacji w nich mogą zostać użyte jako parametry szablonu. A te tymi numerowanymi liczbami naturalnymi {{Tt|nazwy jednostki}} od jedynki wzwyż poprzez szablon, w którym są one użyte, one też mogą być użyte z dwukropkiem, te numerowane, na samym początku nazwy, wtedy one są traktowane jako pełne nazwy strony, i wtedy one nie zostaną z interpretowane, że do nich trzeba użyć parametr odpowiedni z nazwą przetrzeni nazw z tego numerowanego, czy ogólny, aby utworzyć znów inną pełną nazwę strony dla tego numerka. Zestawienie: * {{Code|nazwa przestrzeni nazw}} i {{Code|nazwa przestrzeni nazw i}} (ogólna nazwa przestrzeni nazw dla wszystkich numerków, i tych numerowanych jednostek) - i to pierwsze z numerkiem, tzn. {{Code|nazwa przestrzeni nazw 1}}, {{Code|nazwa przestrzeni nazw 2}}, ..., * {{Code|nazwa jednostki}} - i te z numerkiem: {{Code|nazwa jednostki 1}}, {{Code|nazwa jednostki 2}}, ..., lub gdy jest zamiast tego parametrem numerowany, {{Code|1}}, {{Code|2}},..., który dla tego pierwszego może być uznany jako: {{Code|cel}} {{=}} {{Code|1}}, * {{Code|typ jednostki}} (parametr bazowy) i {{Code|typ jednostki i}} (parametr domyślny numerkowy) - i te z numerkiem: {{Code|typ jednostki 1}}, {{Code|typ jednostki 2}}, ..., tzn. gdy chcemy określić z jakim typem jednostki mamy do czynienia w zależności do jakiej przestrzeni nazw należy, a w danej, czy jest on np. programowy, czy tylko jest opisem, jak to bywa w szablonach {{Np|Template|link=tak}}, podobnie jest w przypadku {{Np|Module|link=tak}}, czy jak jest w innych przestrzeniach nazw, ** {{Code|dyskusja typu jednostki}} (parametr bazowy) i {{Code|dyskusja typu jednostki i}} (parametr domyślny numerkowy) - i te z numerkiem: {{Code|dyskusja typu jednostki 1}}, {{Code|dyskusja typu jednostki 2}}, ..., gdy chcemy określić wartością niepustą,że chodzi tutaj o typ jednostki. == {{Code|p.CzyNiepoprawnaNazwa(nazwa_jednostki)}} == Funkcja sprawdzajaca, czy jest poprawnie podana nazwa jednostki, czy ma poprawną nazwę. Znakami tymi, z których nie powinna składać się nazwa jest {{Code|<nowiki>{}<>|[]#\n</nowiki>}} i dodatkowo znak {{Code|&#127;}} (kod {{Code|{{Nowiki|&#127;}}}}). Też nie może składać się z trzech znaków tyldy, tzn. {{Code|<nowiki>~~~</nowiki>}}. Również w swojej budowie nie może składać się ze kodów {{Strong|HTML}} literowych o wzorze {{Code|{{Nowiki|&(%a+);}}}}. Natomiast może składać się z {{Code|{{Nowiki|&#(%d+);}}}} i {{Code|{{Nowiki|&#x(%x+);}}}}, ale w pierw te kody muszą być zamienione na normalne znaki. Skrótowa definicja funkcji: <syntaxhighlight lang="lua"> function p.CzyNiepoprawnaNazwa(nazwa_jednostki)...end; </syntaxhighlight> Wtedy ciało funkcji tej, czyli jego definicja w środku, jest: <syntaxhighlight lang="lua"> -- Moduł: "Moduł:Html/dane", służy do ładowania znaku o kodzie HTML "&#127;"; local html_dane_modul=mw.loadData("Module:Html/dane"); return mw.ustring.match(nazwa_jednostki,"[{}<>|%[%]#\n"..html_dane_modul.znak_127.."]+") or mw.ustring.match(nazwa_jednostki,"~~~") or mw.ustring.match(nazwa_jednostki,"&(%a+);"); </syntaxhighlight> Parametry: * {{Code|nazwa_jednostki}} - nazwa jednostki do sprawdzenia. Przykłady: <syntaxhighlight lang="lua"> local pudelko_modul=require("Module:Pudełko"); -- Podana przykładowa niepoprawna nazwa jedostki local nazwa_jednostki="Nazwa pliku [[Nazwa linku w pliku]]"; -- Fukcja zwróci wartość: local czy_poprawna_nazwa=true; local czy_poprawna_nazwa=pudelko_modul.CzyNiepoprawnaNazwa(nazwa_jednostki); </syntaxhighlight> == Funkcje nazw przestrzeni nazw == === {{Code|p["Nazwa przestrzeni nazw"](frame,...)}} === Funkcja pisze nazwę przestrzeni nazw, niezależnie, czy to jest przedmiotowa, czy dyskusji, według podanej w zmiennej {{Code|nazwa przestrzeni nazw}} dla pozycja bazowej w podanych parametrach szablonu rodzicu ramki dziecka, lub dla innej pozycji należy parametr podawać w formie {{Code|nazwa przestrzeni nazw 1}}, {{Code|nazwa przestrzeni nazw 2}}, {{Code|nazwa przestrzeni nazw 3}},..., lub te parametry można podać w postaci ogólnej {{Code|nazwa przestrzeni nazw i}}. Parametry podaje się w parametrach rodzica wywołania tej funkcji {{Code|{{m|Pudełko|Nazwa przestrzeni nazw}}}} (ale ich nie trzeba podawać w dziecku, ale można) i w parametrach dziecka, jeśli chodzi o zmienną {{Code|numer jednostki}}, czyli np.: {{Code|{{m|Pudełko|Nazwa przestrzeni nazw|numer jednostki{{=}}<jakaś liczba całkowita dodatnia>}}}}. Te parametry przestrzenne zamiast w rodzicu w szablonie można podać w ramce dziecka, wtedy parametry dziecka mają pierwszeństwo. Przestrzeń nazw z parametrów nazw przestrzennych może odpowiadać wartości przestrzeni głównej, to wtedy odpowiednia przestrzeń nazw z parametru nazwy jednostki się nie liczy w tej funkcji, aby się liczyła należy użyć funkcji {{Code|{{sr|#p["Nazwa przestrzeni nazw 2"](frame,...)|p=Pudełko}}}}. Definicja skrótowa funkcji: <syntaxhighlight lang="lua"> p["Nazwa przestrzeni nazw"]=function(frame,czy_uwzglednic_alternatywna_nazwe,i)...end; </syntaxhighlight> Wtedy ciało funkcji tej, czyli jego definicja w środku, jest: <syntaxhighlight lang="lua"> -- Jest liczony numer parametru nazwy przestrzeni nazw, domyslnie chodzi tu o numer bazowy parametrów przestrzennych; local numer_jednostki=i or frame.args["numer jednostki"]; local liczba_numer_jednostki=((numer_jednostki)and(tonumber(numer_jednostki))or 0); local pudelko_pomocne_modul=require("Module:Pudełko/Pomocne"); -- Liczy nazwę przestrzeni nazw na podstawie podanych parametrów; return pudelko_pomocne_modul.Nazwa_przestrzeni_nazw(frame,0, czy_uwzglednic_alternatywna_nazwe,liczba_numer_jednostki); </syntaxhighlight> Parametry funkcji: * {{Code|frame}} - tablica ramki tablicy transportu, * {{Code|czy_uwzglednic_alternatywna_nazwe}} - czy ma uwzględniać nazwę przestrzeni nazw domyślną szablonu, dostępne wartości: {{Code|false}}, w której nazwa domyślna nie jest uwzględniana wtedy, oraz {{Code|nil}} i {{Code|true}}, które oznaczają to samo, w tym jeżeli ona jest uwzględniana, wtedy jest brany parametr pierwszy dziecka, który musi istnieć przy takiej wartości tego parametru, tzn. {{Code|{{m|Pudełko|Nazwa przestrzeni nazw|Szablon}}}}, a nazwa uzyskana nazwy przestrzeni nazw jest w takim przypadku błędna, a jeżeli nazwa domyślna jest błędna, czyli {{Code|{{m|Pudełko|Nazwa przestrzeni nazw|Moja przestrzeń}}}}, wtedy funkcja zwraca stan błędu {{Code|(błąd)}}. * {{Code|i}} - numer zmiennej nazwy przestrzeni nazw. Funkcja wykorzystuje {{Code|{{sr|#p.Nazwa_przestrzeni_nazw(frame,...)|p=Pudełko/Pomocne}}}} do wyznaczania ogólnego nazwy przestrzeni nazw dla pozycji bazowej i numerkowej, tzn. dla pozycji: jeden, dwa, trzy,..., itd, i ich ogólnej. Parametry ramki tablicy transportu dziecka: * {{Code|nazwa przestrzeni nazw}}, {{Code|nazwa przestrzeni nazw 1}}, {{Code|nazwa przestrzeni nazw 2}}, {{Code|nazwa przestrzeni nazw 3}},..., {{Code|nazwa przestrzeni nazw i}} - nazwy przestrzeni nazw dla pozycji bazowej, numerkowej i ogólnej, * {{Code|typ jednostki}}, {{Code|typ jednostki 1}}, {{Code|typ jednostki 2}}, {{Code|typ jednostki 3}},..., {{Code|typ jednostki i}} - typy jednostek, którym odpowiadają pewne przestrzenie przedmiotowe, dla pozycji bazowej, numerkowej i ogólnej, ** {{Code|dyskusja typu jednostki}}, {{Code|dyskusja typu jednostki 1}}, {{Code|dyskusja typ jednostki 2}}, {{Code|dyskusja typ jednostki 3}},..., {{Code|dyskusja typ jednostki i}} - czy dany typ jednostki ma przedstawiać, jeśli niepusta, przestrzeń dyskusji dla pozycji bazowej, numerkowej i ogólnej, * {{Code|numer jednostki}} - jak parametr {{Code|i}} nie został ustawiony, to wtedy liczy się ta zmienna. Parametr ramki tablicy transportu rodzica szablonu: * {{Code|nazwa przestrzeni nazw}}, {{Code|nazwa przestrzeni nazw 1}}, {{Code|nazwa przestrzeni nazw 2}}, {{Code|nazwa przestrzeni nazw 3}},..., {{Code|nazwa przestrzeni nazw i}} - nazwy przestrzeni nazw dla pozycji bazowej oraz zwykłej i ogólnej numerkowej, * {{Code|typ jednostki}}, {{Code|typ jednostki 1}}, {{Code|typ jednostki 2}}, {{Code|typ jednostki 3}},..., {{Code|typ jednostki i}} - typy jednostek, którym odpowiadają pewne przestrzenie przedmiotowe, dla pozycji bazowej, numerkowej i ogólnej, ** {{Code|dyskusja typu jednostki}}, {{Code|dyskusja typu jednostki 1}}, {{Code|dyskusja typ jednostki 2}}, {{Code|dyskusja typ jednostki 3}},..., {{Code|dyskusja typ jednostki i}} - czy dany typ jednostki ma przedstawiać, jeśli niepusta, przestrzeń dyskusji dla pozycji bazowej, numerkowej i ogólnej. Przykłady: <syntaxhighlight lang="mediawiki"> {{Nazwa szablonu|nazwa przestrzeni nazw=Wikibooks|nazwa przestrzeni nazw 2=Szablon|nazwa przestrzeni nazw i=Moduł}} </syntaxhighlight> W dziecku powiedzmy jest wywołanie, i szukamy nazwy przestrzeni nazw o numerze dwa, która nie została podana, ale istnieje za to jej wersji ogólna {{Code|nazwa przestrzeni nazw i}} i domyślna {{Code|nazwa przestrzeni nazw}}: <syntaxhighlight lang="mediawiki"> {{#invoke:Pudełko|Nazwa przestrzeni nazw|numer jednostki=1}} </syntaxhighlight> Na podstawie powyższego przykładu otrzymamy wynik o schemacie, nie wyniku, bo tam nie ma zmiennej {{Code|nazwa przestrzeni nazw 1}}, ale jest {{Code|nazwa przestrzeni nazw i}}: <syntaxhighlight lang="mediawiki"> <!-- Ale nie "nazwa przestrzeni nazw", bo jej nie ma, ale za to istnieje "nazwa przestrzeni nazw i"; --> <!-- nazwa przestrzeni nazw 2=nazwa przestrzeni nazw i=Moduł; --> <!-- Czyli wynik: --> Moduł <!-- Widzimy, że wygenerowała się nazwa przestrzeni nazw, którą jest przestrzeń programowa, którą również jest "Szablon"; --> </syntaxhighlight> Nie jest brana w tym powyższym przykładzie zmienna {{Code|nazwa przestrzeni nazw}}, bo jej nie ma, ale za to jest {{Code|nazwa przestrzeni nazw i}}, bo ona występuje jako parametr domyślny ogólny dla parametrów numerkowych. Przykłady w wikikodzie: * {{Code|{{m|Pudełko|Nazwa przestrzeni nazw|numer jednostki{{=}}2}}}} → {{Tt|{{#invoke:Pudełko|Nazwa przestrzeni nazw|numer jednostki=2}}}} * {{Code|{{m|Pudełko|Nazwa przestrzeni nazw|Szablon|nazwa przestrzeni nazw i{{=}}Moja przestrzeń|numer jednostki{{=}}2}}}} → {{Tt|{{#invoke:Pudełko|Nazwa przestrzeni nazw|Szablon|nazwa przestrzeni nazw i=Moja przestrzeń|numer jednostki=2}}}} * {{Code|{{m|Pudełko|Nazwa przestrzeni nazw|nazwa przestrzeni nazw 2{{=}}Szablon|numer jednostki{{=}}2}}}} → {{Tt|{{#invoke:Pudełko|Nazwa przestrzeni nazw|nazwa przestrzeni nazw 2=Szablon|numer jednostki=2}}}} * {{Code|{{m|Pudełko|Nazwa przestrzeni nazw|nazwa przestrzeni nazw 2{{=}}Szablon|numer jednostki{{=}}2}}}} → {{Tt|{{#invoke:Pudełko|Nazwa przestrzeni nazw|nazwa przestrzeni nazw i=Szablon|numer jednostki=2}}}} * {{Code|{{m|Pudełko|Nazwa przestrzeni nazw|nazwa przestrzeni nazw{{=}}Szablon|numer jednostki{{=}}2}}}} → {{Tt|{{#invoke:Pudełko|Nazwa przestrzeni nazw|nazwa przestrzeni nazw=Szablon|numer jednostki=2}}}} Powyżej dla przykładu podano parametry nie w rodzicu w szablonie, tylko w dziecku, jeśli chodzi o parametry nazw przestrzeni nazw, ale ich się za to nie powinno podawać w tych ramach, tylko w szablonach, w których wywoływane są te ramki pudełek {{Code|{{m|Pudełko}}}}, ale tak tutaj tak zrobiono by było najłatwiej sprawdzić działanie tego typu funkcji. Analogicznie możemy podawać parametry typu jednostki, np.: wywołaniu modułowym {{Code|{{m|Pudełko|Nazwa przestrzeni nazw|typ jednostki 2{{=}}strona szablonu|numer jednostki{{=}}2}}}}, ale o tym więcej w rozdziałach {{Code|{{sr|# p["Typ jednostki"](frame,i)|p=Pudełko}}}}, {{Code|{{sr|#p["Typ jednostki 2"](frame,i)|p=Pudełko}}}}, {{Code|{{sr|#p["Typ jednostki 3"](frame,i)|p=Pudełko}}}} itp. w „{{sr|#Funkcje typu jednostki|p=Pudełko}}”, on definiuje przestrzenie przedmiotowe, ale można użyć parametru dyskusji typu jednostki z wartością niepustą, wtedy wyświetli się nazwa przestrzeni nazw dyskusji. Również parametry typu jednostki nie powinno się podawać w dziecku w ramce, tylko w rodzicu w szablonie jako parametry, w którym ta ramka jest wywoływana, ale tutaj podano jedynie dla przykładu, jak najłatwiej sprawdzić działanie tych parametrów tej funkcji. Najpierw w funkcji nagłówku brane są parametry nazw przestrzeni nazw, a jeżeli ich nie ma, to parametry typu jednostki, a jeżeli nie ma, to generowane są nazwy na podstawie aktualnego modułu. === {{Code|p["Nazwa przedmiotowej przestrzeni nazw"](frame,...)}} === Funkcja pisze przedmiotową nazwę przestrzeni nazw jakikolwiek nazwy przestrzeni nazw (tzn. nazwę przedmiotową nazwy przestrzenie nazw, czyli nie dyskusji, zamieniana jest na nią samą, czyli identyfikator przestrzeni się nie zmienia, a dyskusji, nie przedmiotową, przekształca się na przedmiotową jej odpowiadającą, czyli w tym przypadku identyfikator przestrzeni zmniejsza się o numer mniej), według podanej w zmiennej {{Code|nazwa przestrzeni nazw}} dla pozycja bazowej w podanych parametrach szablonu rodzicu ramki dziecka, lub dla innej pozycji należy parametr podawać w formie {{Code|nazwa przestrzeni nazw 1}}, {{Code|nazwa przestrzeni nazw 2}}, {{Code|nazwa przestrzeni nazw 3}},..., lub te parametry można podać w postaci ogólnej {{Code|nazwa przestrzeni nazw i}}. Parametry podaje się w parametrach rodzica wywołania tej funkcji {{Code|{{m|Pudełko|Nazwa przedmiotowej przestrzeni nazw}}}} (ale ich nie trzeba podawać w dziecku, ale można) i w parametrach dziecka, jeśli chodzi o zmienną {{Code|numer jednostki}}, czyli np.: {{Code|{{m|Pudełko|Nazwa przedmiotowej przestrzeni nazw|numer jednostki{{=}}<jakaś liczba całkowita dodatnia>}}}}. Te parametry przestrzenne zamiast w rodzicu w szablonie można podać w ramce dziecka, wtedy parametry dziecka mają pierwszeństwo. Parametry przestrzenne mogą mogą być podane w postaci przestrzeni przedmiotowej lub dyskusji, ale ta funkcja zawsze ją zamienia na przedmiotową. Przestrzeń nazw z parametrów nazw przestrzennych może odpowiadać wartości przestrzeni głównej, to wtedy odpowiednia przestrzeń nazw z parametru nazwy jednostki się nie liczy w tej funkcji, aby się liczyła należy użyć funkcji {{Code|{{sr|#p["Nazwa przedmiotowej przestrzeni nazw 2"](frame,...)|p=Pudełko}}}}. Definicja skrótowa funkcji: <syntaxhighlight lang="lua"> p["Nazwa przedmiotowej przestrzeni nazw"]=function(frame,czy_uwzglednic_alternatywna_nazwe,i)...end; </syntaxhighlight> Wtedy ciało funkcji tej, czyli jego definicja w środku, jest: <syntaxhighlight lang="lua"> -- Jest liczony numer parametru nazwy przestrzeni nazw, domyslnie chodzi tu o numer bazowy parametrów przestrzennych; local numer_jednostki=i or frame.args["numer jednostki"]; local liczba_numer_jednostki=((numer_jednostki)and(tonumber(numer_jednostki))or 0); local pudelko_pomocne_modul=require("Module:Pudełko/Pomocne"); -- Liczy nazwę przestrzeni nazw przedmiotową na podstawie podanych parametrów; return pudelko_pomocne_modul.Nazwa_przestrzeni_nazw(frame,1, czy_uwzglednic_alternatywna_nazwe,liczba_numer_jednostki); </syntaxhighlight> Parametry funkcji: * {{Code|frame}} - tablica ramki tablicy transportu, * {{Code|czy_uwzglednic_alternatywna_nazwe}} - czy ma uwzględniać nazwę przestrzeni nazw domyślną szablonu, dostępne wartości: {{Code|false}}, w której nazwa domyślna nie jest uwzględniana wtedy, oraz {{Code|nil}} i {{Code|true}}, które oznaczają to samo, w tym jeżeli ona jest uwzględniana, wtedy jest brany parametr pierwszy dziecka, który musi istnieć przy takiej wartości tego parametru, tzn. {{Code|{{m|Pudełko|Nazwa przedmiotowej przestrzeni nazw|Dyskusja szablonu}}}} - ta nazwa domyślna zostanie zamieniona na przedmiotową, a jak ona by była przedmiotowa, to żadnej zamiany by nie było, a nazwa uzyskana z nazwy przestrzeni nazw z parametrów przestrzennych jest w takim przypadku błędna, to w takim razie brany jest ten parametr, a jeżeli ta nazwa domyślna jest błędna, czyli {{Code|{{m|Pudełko|Nazwa przedmiotowej przestrzeni nazw|Moja przestrzeń}}}}, wtedy funkcja zwraca stan błędu {{Code|(błąd)}}. * {{Code|i}} - numer zmiennej nazwy przestrzeni nazw. Funkcja wykorzystuje {{Code|{{sr|#p.Nazwa_przestrzeni_nazw(frame,...)|p=Pudełko/Pomocne}}}} do wyznaczania ogólnego nazwy przestrzeni nazw dla pozycji bazowej i numerkowej, tzn. dla pozycji: jeden, dwa, trzy,..., itd, i ich ogólnej. Parametry ramki tablicy transportu dziecka: * {{Code|nazwa przestrzeni nazw}}, {{Code|nazwa przestrzeni nazw 1}}, {{Code|nazwa przestrzeni nazw 2}}, {{Code|nazwa przestrzeni nazw 3}},..., {{Code|nazwa przestrzeni nazw i}} - nazwy przestrzeni nazw dla pozycji bazowej, numerkowej i ogólnej, * {{Code|typ jednostki}}, {{Code|typ jednostki 1}}, {{Code|typ jednostki 2}}, {{Code|typ jednostki 3}},..., {{Code|typ jednostki i}} - typy jednostek, którym odpowiadają pewne przestrzenie przedmiotowe, dla pozycji bazowej, numerkowej i ogólnej, ** {{Code|dyskusja typu jednostki}}, {{Code|dyskusja typu jednostki 1}}, {{Code|dyskusja typ jednostki 2}}, {{Code|dyskusja typ jednostki 3}},..., {{Code|dyskusja typ jednostki i}} - czy dany typ jednostki ma przedstawiać, jeśli niepusta, przestrzeń dyskusji dla pozycji bazowej, numerkowej i ogólnej, * {{Code|numer jednostki}} - jak parametr {{Code|i}} nie został ustawiony, to wtedy liczy się ta zmienna. Parametr ramki tablicy transportu rodzica szablonu: * {{Code|nazwa przestrzeni nazw}}, {{Code|nazwa przestrzeni nazw 1}}, {{Code|nazwa przestrzeni nazw 2}}, {{Code|nazwa przestrzeni nazw 3}},..., {{Code|nazwa przestrzeni nazw i}} - nazwy przestrzeni nazw dla pozycji bazowej oraz zwykłej i ogólnej numerkowej, * {{Code|typ jednostki}}, {{Code|typ jednostki 1}}, {{Code|typ jednostki 2}}, {{Code|typ jednostki 3}},..., {{Code|typ jednostki i}} - typy jednostek, którym odpowiadają pewne przestrzenie przedmiotowe, dla pozycji bazowej, numerkowej i ogólnej, ** {{Code|dyskusja typu jednostki}}, {{Code|dyskusja typu jednostki 1}}, {{Code|dyskusja typ jednostki 2}}, {{Code|dyskusja typ jednostki 3}},..., {{Code|dyskusja typ jednostki i}} - czy dany typ jednostki ma przedstawiać, jeśli niepusta, przestrzeń dyskusji dla pozycji bazowej, numerkowej i ogólnej. Przykłady: <syntaxhighlight lang="mediawiki"> {{Nazwa szablonu|nazwa przestrzeni nazw=Dyskusja Wikibooks|nazwa przestrzeni nazw 2=Dyskusja szablonu|nazwa przestrzeni nazw i=Dyskusja modułu}} </syntaxhighlight> W dziecku powiedzmy jest wywołanie, i szukamy nazwy przestrzeni nazw o numerze dwa, która nie została podana, ale istnieje za to jej wersji ogólna {{Code|nazwa przestrzeni nazw i}} i domyślna {{Code|nazwa przestrzeni nazw}}: <syntaxhighlight lang="mediawiki"> {{#invoke:Pudełko|Nazwa przedmiotowej przestrzeni nazw|numer jednostki=1}} </syntaxhighlight> Na podstawie powyższego przykładu otrzymamy wynik o schemacie, nie wyniku, bo tam nie ma zmiennej {{Code|nazwa przestrzeni nazw 1}}, ale jest {{Code|nazwa przestrzeni nazw i}}: <syntaxhighlight lang="mediawiki"> <!-- Ale nie "nazwa przestrzeni nazw", bo jej nie ma, ale za to istnieje "nazwa przestrzeni nazw i"; --> <!-- nazwa przestrzeni nazw 2=nazwa przestrzeni nazw i=Dyskusja modułu; --> <!-- Czyli wynik: --> Moduł <!-- Widzimy, że wygenerowała się nazwa przestrzeni nazw, którą jest przestrzeń przedmiotowa programowa przestrzeni dyskusji "Dyskusja modułu", którą również jest "Szablon" jego przestrzeni dyskusji "Dyskusja szablonu", a dla ich przestrzeni przedmiotowej, zamiast dyskusji, to samo przekształca się na to samo; --> </syntaxhighlight> Nie jest brana w tym powyższym przykładzie zmienna {{Code|nazwa przestrzeni nazw}}, bo jej nie ma, ale za to jest {{Code|nazwa przestrzeni nazw i}}, bo ona występuje jako parametr domyślny ogólny dla parametrów numerkowych. Przykłady w wikikodzie: * {{Code|{{m|Pudełko|Nazwa przedmiotowej przestrzeni nazw|numer jednostki{{=}}2}}}} → {{Tt|{{#invoke:Pudełko|Nazwa przedmiotowej przestrzeni nazw|numer jednostki=2}}}} * {{Code|{{m|Pudełko|Nazwa przedmiotowej przestrzeni nazw|Dyskusja szablonu|nazwa przestrzeni nazw i{{=}}Moja przestrzeń|numer jednostki{{=}}2}}}} → {{Tt|{{#invoke:Pudełko|Nazwa przedmiotowej przestrzeni nazw|Dyskusja szablonu|nazwa przestrzeni nazw i=Moja przestrzeń|numer jednostki=2}}}} * {{Code|{{m|Pudełko|Nazwa przedmiotowej przestrzeni nazw|nazwa przestrzeni nazw 2{{=}}Dyskusja szablonu|numer jednostki{{=}}2}}}} → {{Tt|{{#invoke:Pudełko|Nazwa przedmiotowej przestrzeni nazw|nazwa przestrzeni nazw 2=Dyskusja szablonu|numer jednostki=2}}}} * {{Code|{{m|Pudełko|Nazwa przedmiotowej przestrzeni nazw|nazwa przestrzeni nazw 2{{=}}Dyskusja szablonu|numer jednostki{{=}}2}}}} → {{Tt|{{#invoke:Pudełko|Nazwa przedmiotowej przestrzeni nazw|nazwa przestrzeni nazw i=Dyskusja szablonu|numer jednostki=2}}}} * {{Code|{{m|Pudełko|Nazwa przedmiotowej przestrzeni nazw|nazwa przestrzeni nazw{{=}}Dyskusja szablonu|numer jednostki{{=}}2}}}} → {{Tt|{{#invoke:Pudełko|Nazwa przedmiotowej przestrzeni nazw|nazwa przestrzeni nazw=Dyskusja szablonu|numer jednostki=2}}}} Powyżej dla przykładu podano parametry nie w rodzicu w szablonie, tylko w dziecku, jeśli chodzi o parametry nazw przestrzeni nazw, ale ich się za to nie powinno podawać w tych ramach, tylko w szablonach, w których wywoływane są te ramki pudełek {{Code|{{m|Pudełko}}}}, ale tak tutaj tak zrobiono by było najłatwiej sprawdzić działanie tego typu funkcji. Analogicznie możemy podawać parametry typu jednostki, np.: wywołaniu modułowym {{Code|{{m|Pudełko|Nazwa przedmiotowej przestrzeni nazw|typ jednostki 2{{=}}strona szablonu|numer jednostki{{=}}2}}}}, ale o tym więcej w rozdziałach {{Code|{{sr|# p["Typ jednostki"](frame,i)|p=Pudełko}}}}, {{Code|{{sr|#p["Typ jednostki 2"](frame,i)|p=Pudełko}}}}, {{Code|{{sr|#p["Typ jednostki 3"](frame,i)|p=Pudełko}}}} itp. w „{{sr|#Funkcje typu jednostki|p=Pudełko}}”, ale wtedy ta sama nazwa przestrzeni nazw reprezentowana przez {{Parametr|typ jednostki 2|strona szablonu}}, jest zamieniana na to samo, lepiej jest tutaj używać parametrów przestrzennych nazw niż typu jednostki, bo typ jednostki ma taką samą wartość dla przestrzeni przedmiotowej, co dyskusji. Tutaj parametr dyskusji typu jednostki bazowy i numerkowy ogólny, czy szczegółowy, nie gra roli, bo nawet, gdy wygenerujemy nazwę przestrzeni dyskusji za pomoca tego parametru, to i tak otrzymamy na samym końcu jego nazwę przedmiotową. Również parametry typu jednostki nie powinno się podawać w dziecku w ramce, tylko w rodzicu w szablonie jako parametry, w którym ta ramka jest wywoływana, ale tutaj podano jedynie dla przykładu, jak najłatwiej sprawdzić działanie tych parametrów tej funkcji. Najpierw w funkcji nagłówku brane są parametry nazw przestrzeni nazw, a jeżeli ich nie ma, to parametry typu jednostki, a jeżeli nie ma, to generowane są nazwy na podstawie aktualnego modułu. === {{Code|p["Nazwa przestrzeni nazw dyskusji"](frame,...)}} === Funkcja pisze nazwę przestrzeni nazw dyskusji jakikolwiek nazwy przestrzeni nazw (tzn. nazwę przedmiotową nazwy przestrzenie nazw, czyli nie dyskusji, zamieniana jest na dyskusji, czyli identyfikator przestrzeni się zmienia jeden wyżej, a dyskusji, nie przedmiotową, przekształca się na tą samą), według podanej w zmiennej {{Code|nazwa przestrzeni nazw}} dla pozycja bazowej w podanych parametrach szablonu rodzicu ramki dziecka, lub dla innej pozycji należy parametr podawać w formie {{Code|nazwa przestrzeni nazw 1}}, {{Code|nazwa przestrzeni nazw 2}}, {{Code|nazwa przestrzeni nazw 3}},..., lub te parametry można podać w postaci ogólnej {{Code|nazwa przestrzeni nazw i}}. Parametry podaje się w parametrach rodzica wywołania tej funkcji {{Code|{{m|Pudełko|Nazwa przestrzeni nazw dyskusji}}}} (ale ich nie trzeba podawać w dziecku, ale można) i w parametrach dziecka, jeśli chodzi o zmienną {{Code|numer jednostki}}, czyli np.: {{Code|{{m|Pudełko|Nazwa przestrzeni nazw dyskusji|numer jednostki{{=}}<jakaś liczba całkowita dodatnia>}}}}. Te parametry przestrzenne zamiast w rodzicu w szablonie można podać w ramce dziecka, wtedy parametry dziecka mają pierwszeństwo. Parametry przestrzenne mogą mogą być podane w postaci przestrzeni przedmiotowej lub dyskusji, ale ta funkcja zawsze ją zamienia na dyskusji. Przestrzeń nazw z parametrów nazw przestrzennych może odpowiadać wartości przestrzeni głównej, to wtedy odpowiednia przestrzeń nazw z parametru nazwy jednostki się nie liczy w tej funkcji, aby się liczyła należy użyć funkcji {{Code|{{sr|#p["Nazwa przestrzeni nazw dyskusji 2"](frame,...)|p=Pudełko}}}}. Definicja skrótowa funkcji: <syntaxhighlight lang="lua"> p["Nazwa przestrzeni nazw dyskusji"]=function(frame,czy_uwzglednic_alternatywna_nazwe,i)...end; </syntaxhighlight> Wtedy ciało funkcji tej, czyli jego definicja w środku, jest: <syntaxhighlight lang="lua"> -- Jest liczony numer parametru nazwy przestrzeni nazw, domyslnie chodzi tu o numer bazowy parametrów przestrzennych; local numer_jednostki=i or frame.args["numer jednostki"]; local liczba_numer_jednostki=((numer_jednostki)and(tonumber(numer_jednostki))or 0); local pudelko_pomocne_modul=require("Module:Pudełko/Pomocne"); -- Liczy nazwę przestrzeni nazw dyskusji na podstawie podanych parametrów; return pudelko_pomocne_modul.Nazwa_przestrzeni_nazw(frame,2, czy_uwzglednic_alternatywna_nazwe,liczba_numer_jednostki); </syntaxhighlight> Parametry funkcji: * {{Code|frame}} - tablica ramki tablicy transportu, * {{Code|czy_uwzglednic_alternatywna_nazwe}} - czy ma uwzględniać nazwę przestrzeni nazw domyślną szablonu, dostępne wartości: {{Code|false}}, w której nazwa domyślna nie jest uwzględniana wtedy, oraz {{Code|nil}} i {{Code|true}}, które oznaczają to samo, w tym jeżeli ona jest uwzględniana, wtedy jest brany parametr pierwszy dziecka, który musi istnieć przy takiej wartości tego parametru, tzn. {{Code|{{m|Pudełko|Nazwa przestrzeni nazw dyskusji|Szablon}}}} - ta nazwa domyślna zostanie przekształcona na dyskusji, a jeżeli ona by była dyskusji, to nie byłoby żadnego przekształcenia, a nazwa uzyskana nazwy przestrzeni nazw z parametrów przestrzennych jest w takim przypadku błędna, to w takim razie brany jest ten parametr, a jeżeli nazwa domyślna jest błędna, czyli {{Code|{{m|Pudełko|Nazwa przestrzeni nazw dyskusji|Moja przestrzeń}}}}, wtedy funkcja zwraca stan błędu {{Code|(błąd)}}. * {{Code|i}} - numer zmiennej nazwy przestrzeni nazw. Funkcja wykorzystuje {{Code|{{sr|#p.Nazwa_przestrzeni_nazw(frame,...)|p=Pudełko/Pomocne}}}} do wyznaczania ogólnego nazwy przestrzeni nazw dla pozycji bazowej i numerkowej, tzn. dla pozycji: jeden, dwa, trzy,..., itd, i ich ogólnej. Parametry ramki tablicy transportu dziecka: * {{Code|nazwa przestrzeni nazw}}, {{Code|nazwa przestrzeni nazw 1}}, {{Code|nazwa przestrzeni nazw 2}}, {{Code|nazwa przestrzeni nazw 3}},..., {{Code|nazwa przestrzeni nazw i}} - nazwy przestrzeni nazw dla pozycji bazowej, numerkowej i ogólnej, * {{Code|typ jednostki}}, {{Code|typ jednostki 1}}, {{Code|typ jednostki 2}}, {{Code|typ jednostki 3}},..., {{Code|typ jednostki i}} - typy jednostek, którym odpowiadają pewne przestrzenie przedmiotowe, dla pozycji bazowej, numerkowej i ogólnej, ** {{Code|dyskusja typu jednostki}}, {{Code|dyskusja typu jednostki 1}}, {{Code|dyskusja typ jednostki 2}}, {{Code|dyskusja typ jednostki 3}},..., {{Code|dyskusja typ jednostki i}} - czy dany typ jednostki ma przedstawiać, jeśli niepusta, przestrzeń dyskusji dla pozycji bazowej, numerkowej i ogólnej, * {{Code|numer jednostki}} - jak parametr {{Code|i}} nie został ustawiony, to wtedy liczy się ta zmienna. Parametr ramki tablicy transportu rodzica szablonu: * {{Code|nazwa przestrzeni nazw}}, {{Code|nazwa przestrzeni nazw 1}}, {{Code|nazwa przestrzeni nazw 2}}, {{Code|nazwa przestrzeni nazw 3}},..., {{Code|nazwa przestrzeni nazw i}} - nazwy przestrzeni nazw dla pozycji bazowej oraz zwykłej i ogólnej numerkowej, * {{Code|typ jednostki}}, {{Code|typ jednostki 1}}, {{Code|typ jednostki 2}}, {{Code|typ jednostki 3}},..., {{Code|typ jednostki i}} - typy jednostek, którym odpowiadają pewne przestrzenie przedmiotowe, dla pozycji bazowej, numerkowej i ogólnej, ** {{Code|dyskusja typu jednostki}}, {{Code|dyskusja typu jednostki 1}}, {{Code|dyskusja typ jednostki 2}}, {{Code|dyskusja typ jednostki 3}},..., {{Code|dyskusja typ jednostki i}} - czy dany typ jednostki ma przedstawiać, jeśli niepusta, przestrzeń dyskusji dla pozycji bazowej, numerkowej i ogólnej. Przykłady: <syntaxhighlight lang="mediawiki"> {{Nazwa szablonu|nazwa przestrzeni nazw=Wikibooks|nazwa przestrzeni nazw 2=Szablon|nazwa przestrzeni nazw i=Moduł}} </syntaxhighlight> W dziecku powiedzmy jest wywołanie, i szukamy nazwy przestrzeni nazw o numerze dwa, która nie została podana, ale istnieje za to jej wersji ogólna {{Code|nazwa przestrzeni nazw i}} i domyślna {{Code|nazwa przestrzeni nazw}}: <syntaxhighlight lang="mediawiki"> {{#invoke:Pudełko|Nazwa przestrzeni nazw dyskusji|numer jednostki=1}} </syntaxhighlight> Na podstawie powyższego przykładu otrzymamy wynik o schemacie, nie wyniku, bo tam nie ma zmiennej {{Code|nazwa przestrzeni nazw 1}}, ale jest {{Code|nazwa przestrzeni nazw i}}: <syntaxhighlight lang="mediawiki"> <!-- Ale nie "nazwa przestrzeni nazw", bo jej nie ma, ale za to istnieje "nazwa przestrzeni nazw i"; --> <!-- nazwa przestrzeni nazw 2=nazwa przestrzeni nazw i=Moduł; --> <!-- Czyli wynik: --> Dyskusja modułu <!-- Widzimy, że wygenerowała się nazwa przestrzeni nazw, którą jest przestrzeń dyskusji przestrzeni programowej przestrzeni przedmiotowej "Moduł", którą również jest "Szablon" jego przestrzeni dyskusji "Dyskusja szablonu", a dla ich przestrzeni przedmiotowej, zamiast dyskusji, to przekształca się na dyskusji jej odpowiadającą; --> </syntaxhighlight> Nie jest brana w tym powyższym przykładzie zmienna {{Code|nazwa przestrzeni nazw}}, bo jej nie ma, ale za to jest {{Code|nazwa przestrzeni nazw i}}, bo ona występuje jako parametr domyślny ogólny dla parametrów numerkowych. Przykłady w wikikodzie: * {{Code|{{m|Pudełko|Nazwa przestrzeni nazw dyskusji|numer jednostki{{=}}2}}}} → {{Tt|{{#invoke:Pudełko|Nazwa przestrzeni nazw dyskusji|numer jednostki=2}}}} * {{Code|{{m|Pudełko|Nazwa przestrzeni nazw dyskusji|Szablon|nazwa przestrzeni nazw i{{=}}Moja przestrzeń|numer jednostki{{=}}2}}}} → {{Tt|{{#invoke:Pudełko|Nazwa przestrzeni nazw dyskusji|Szablon|nazwa przestrzeni nazw i=Moja przestrzeń|numer jednostki=2}}}} * {{Code|{{m|Pudełko|Nazwa przestrzeni nazw dyskusji|nazwa przestrzeni nazw 2{{=}}Szablon|numer jednostki{{=}}2}}}} → {{Tt|{{#invoke:Pudełko|Nazwa przestrzeni nazw dyskusji|nazwa przestrzeni nazw 2=Szablon|numer jednostki=2}}}} * {{Code|{{m|Pudełko|Nazwa przestrzeni nazw dyskusji|nazwa przestrzeni nazw 2{{=}}Szablon|numer jednostki{{=}}2}}}} → {{Tt|{{#invoke:Pudełko|Nazwa przestrzeni nazw dyskusji|nazwa przestrzeni nazw i=Szablon|numer jednostki=2}}}} * {{Code|{{m|Pudełko|Nazwa przestrzeni nazw dyskusji|nazwa przestrzeni nazw{{=}}Szablon|numer jednostki{{=}}2}}}} → {{Tt|{{#invoke:Pudełko|Nazwa przestrzeni nazw dyskusji|nazwa przestrzeni nazw=Szablon|numer jednostki=2}}}} Powyżej dla przykładu podano parametry nie w rodzicu w szablonie, tylko w dziecku, jeśli chodzi o parametry nazw przestrzeni nazw, ale ich się za to nie powinno podawać w tych ramach, tylko w szablonach, w których wywoływane są te ramki pudełek {{Code|{{m|Pudełko}}}}, ale tak tutaj tak zrobiono by było najłatwiej sprawdzić działanie tego typu funkcji. Analogicznie możemy podawać parametry typu jednostki, np.: wywołaniu modułowym {{Code|{{m|Pudełko|Nazwa przestrzeni nazw dyskusji|typ jednostki 2{{=}}strona szablonu|numer jednostki{{=}}2}}}}, ale o tym więcej w rozdziałach {{Code|{{sr|# p["Typ jednostki"](frame,i)|p=Pudełko}}}}, {{Code|{{sr|#p["Typ jednostki 2"](frame,i)|p=Pudełko}}}}, {{Code|{{sr|#p["Typ jednostki 3"](frame,i)|p=Pudełko}}}} itp. w „{{sr|#Funkcje typu jednostki|p=Pudełko}}”, ale wtedy nazwa przestrzeni nazw reprezentowana przez {{Parametr|typ jednostki 2|strona szablonu}}, jest zamieniana na nazwę przestrzeni nazw dyskusji. Parametr dyskusji typu jednostki bazowy lub dla danego numerka ogólny, czy szczegółowy, nie gra roli. Również parametry typu jednostki nie powinno się podawać w dziecku w ramce, tylko w rodzicu w szablonie jako parametry, w którym ta ramka jest wywoływana, ale tutaj podano jedynie dla przykładu, jak najłatwiej sprawdzić działanie tych parametrów tej funkcji. Najpierw w funkcji nagłówku brane są parametry nazw przestrzeni nazw, a jeżeli ich nie ma, to parametry typu jednostki, a jeżeli nie ma, to generowane są nazwy na podstawie aktualnego modułu. == Funkcje nazw przestrzeni nazw drugiej wersji == === {{Code|p["Nazwa przestrzeni nazw 2"](frame,...)}} === Funkcja pisze nazwę przestrzeni nazw, niezależnie, czy to jest przedmiotowa, czy dyskusji, według, i nie zawsze tylko, podanej w zmiennej {{Code|nazwa przestrzeni nazw}} dla pozycja bazowej w podanych parametrach szablonu rodzicu ramki dziecka, lub dla innej pozycji należy parametr podawać w formie {{Code|nazwa przestrzeni nazw 1}}, {{Code|nazwa przestrzeni nazw 2}}, {{Code|nazwa przestrzeni nazw 3}},..., lub te parametry można podać w postaci ogólnej {{Code|nazwa przestrzeni nazw i}}. W tej funkcji trzeba też podawać parametry nazwy jednostek {{Code|nazwa jednostki}}, {{Code|nazwa jednostki 1}}, {{Code|nazwa jednostki 2}}, {{Code|nazwa jednostki 3}},... Parametry podaje się w parametrach rodzica wywołania tej funkcji {{Code|{{m|Pudełko|Nazwa przestrzeni nazw 2}}}} (ale ich nie trzeba podawać w dziecku, ale można) i w parametrach dziecka, jeśli chodzi o zmienną {{Code|numer jednostki}}, czyli np.: {{Code|{{m|Pudełko|Nazwa przestrzeni nazw 2|numer jednostki{{=}}<jakaś liczba całkowita dodatnia>}}}}. Te parametry przestrzenne zamiast w rodzicu w szablonie można podać w ramce dziecka, wtedy parametry dziecka mają pierwszeństwo. Przestrzeń nazw z parametrów nazw przestrzennych może odpowiadać wartości przestrzeni głównej, to wtedy odpowiednia przestrzeń nazw z parametru nazwy jednostki się liczy w tej funkcji, wtedy jest liczona nazwa przestrzeni nazw z tego parametru. Gdy parametry przestrzenne lub typ jednostki w drugim podejściu nie wskazują na przestrzeń główną, to wtedy działanie tej funkcji jest podobne do {{Code|{{sr|#p["Nazwa przestrzeni nazw"](frame,...)|p=Pudełko}}}}. Definicja skrótowa funkcji: <syntaxhighlight lang="lua"> p["Nazwa przestrzeni nazw 2"]=function(frame,czy_uwzglednic_alternatywna_nazwe,i)...end; </syntaxhighlight> Wtedy ciało funkcji tej, czyli jego definicja w środku, jest: <syntaxhighlight lang="lua"> local pudelko_pomocne_modul=require("Module:Pudełko/Pomocne"); -- Liczy nazwę przestrzeni nazw, jeżeli z parametrów przestrzennych przestrzeń wskazuje na główną, to wtedy jest liczona przestrzeń nazw z nazwy jednostki; return pudelko_pomocne_modul.Nazwa_przestrzeni_nazw_2(frame,czy_uwzglednic_alternatywna_nazwe,i) </syntaxhighlight> Parametry funkcji: * {{Code|frame}} - tablica ramki tablicy transportu, * {{Code|czy_uwzglednic_alternatywna_nazwe}} - czy ma uwzględniać nazwę przestrzeni nazw domyślną szablonu, dostępne wartości: {{Code|false}}, w której nazwa domyślna nie jest uwzględniana wtedy, oraz {{Code|nil}} i {{Code|true}}, które oznaczają to samo, w tym jeżeli ona jest uwzględniana, wtedy jest brany parametr pierwszy dziecka, który musi istnieć przy takiej wartości tego parametru, tzn. {{Code|{{m|Pudełko|Nazwa przestrzeni nazw 2|Szablon}}}}, a nazwa uzyskana nazwy przestrzeni nazw jest w takim przypadku błędna, a jeżeli nazwa domyślna jest błędna, czyli {{Code|{{m|Pudełko|Nazwa przestrzeni nazw 2|Moja przestrzeń}}}}, wtedy funkcja zwraca stan błędu {{Code|(błąd)}}. * {{Code|i}} - numer zmiennej nazwy przestrzeni nazw. Funkcja wykorzystuje {{Code|{{sr|#p.Nazwa_przestrzeni_nazw_2(frame,...)|p=Pudełko/Pomocne}}}} do wyznaczania ogólnego nazwy przestrzeni nazw dla pozycji bazowej i numerkowej, tzn. dla pozycji: jeden, dwa, trzy,..., itd, i ich ogólnej. Parametry ramki tablicy transportu dziecka: * {{Code|nazwa przestrzeni nazw}}, {{Code|nazwa przestrzeni nazw 1}}, {{Code|nazwa przestrzeni nazw 2}}, {{Code|nazwa przestrzeni nazw 3}},..., {{Code|nazwa przestrzeni nazw i}} - nazwy przestrzeni nazw dla pozycji bazowej, numerkowej i ogólnej, * {{Code|typ jednostki}}, {{Code|typ jednostki 1}}, {{Code|typ jednostki 2}}, {{Code|typ jednostki 3}},..., {{Code|typ jednostki i}} - typy jednostek, którym odpowiadają pewne przestrzenie przedmiotowe, dla pozycji bazowej, numerkowej i ogólnej, ** {{Code|dyskusja typu jednostki}}, {{Code|dyskusja typu jednostki 1}}, {{Code|dyskusja typ jednostki 2}}, {{Code|dyskusja typ jednostki 3}},..., {{Code|dyskusja typ jednostki i}} - czy dany typ jednostki ma przedstawiać, jeśli niepusta, przestrzeń dyskusji dla pozycji bazowej, numerkowej i ogólnej, * {{Code|numer jednostki}} - jak parametr {{Code|i}} nie został ustawiony, to wtedy liczy się ta zmienna. Parametr ramki tablicy transportu rodzica szablonu: * {{Code|nazwa przestrzeni nazw}}, {{Code|nazwa przestrzeni nazw 1}}, {{Code|nazwa przestrzeni nazw 2}}, {{Code|nazwa przestrzeni nazw 3}},..., {{Code|nazwa przestrzeni nazw i}} - nazwy przestrzeni nazw dla pozycji bazowej oraz zwykłej i ogólnej numerkowej, * {{Code|typ jednostki}}, {{Code|typ jednostki 1}}, {{Code|typ jednostki 2}}, {{Code|typ jednostki 3}},..., {{Code|typ jednostki i}} - typy jednostek, którym odpowiadają pewne przestrzenie przedmiotowe, dla pozycji bazowej, numerkowej i ogólnej, ** {{Code|dyskusja typu jednostki}}, {{Code|dyskusja typu jednostki 1}}, {{Code|dyskusja typ jednostki 2}}, {{Code|dyskusja typ jednostki 3}},..., {{Code|dyskusja typ jednostki i}} - czy dany typ jednostki ma przedstawiać, jeśli niepusta, przestrzeń dyskusji dla pozycji bazowej, numerkowej i ogólnej. Przykłady: <syntaxhighlight lang="mediawiki"> {{Nazwa szablonu|nazwa przestrzeni nazw=Wikibooks|nazwa przestrzeni nazw 1=Szablon|nazwa przestrzeni nazw i=|nazwa jednostki 2=Wikibooks:Strona}} </syntaxhighlight> W dziecku powiedzmy jest wywołanie, i szukamy nazwy przestrzeni nazw o numerze dwa, która została podana, ale istnieje za to jej wersji ogólna {{Code|nazwa przestrzeni nazw i}} i domyślna {{Code|nazwa przestrzeni nazw}}, ale wtedy dla tego numerkowego liczy się to ogólne z {{Code| i}}, a ponieważ ta nazwa jest pusta, więc będziemy liczyli nazwę przestrzeni nazw z {{Code|nazwa jednostki 2}}: <syntaxhighlight lang="mediawiki"> {{#invoke:Pudełko|Nazwa przestrzeni nazw 2|numer jednostki=2}} </syntaxhighlight> Na podstawie powyższego przykładu otrzymamy wynik o schemacie, nie wyniku, bo tam nie ma zmiennej {{Code|nazwa przestrzeni nazw 1}}, ale jest {{Code|nazwa przestrzeni nazw i}}: <syntaxhighlight lang="mediawiki"> <!-- Ale nie "nazwa przestrzeni nazw 2", bo jej nie ma, ale za to istnieje "nazwa przestrzeni nazw i"; --> <!-- nazwa przestrzeni nazw 2=nazwa przestrzeni nazw i="", a nazwa jednostki 2="Wikibooks:Strona"; --> <!-- Czyli wynik: --> Wikibooks <!-- Widzimy, że wygenerowała się nazwa przestrzeni nazw, którą jest przestrzeń nieprogramowa, ale projektu, wychodząca z nazwy jednostek w tym przypadku z "nazwa jednostki 2"; --> </syntaxhighlight> Nie jest brana w tym powyższym przykładzie zmienna {{Code|nazwa przestrzeni nazw}}, bo jej nie ma, ale za to jest {{Code|nazwa przestrzeni nazw i}}, bo ona występuje jako parametr domyślny ogólny dla parametrów numerkowych. Tytaj jest używana jest zmienna {{Code|nazwa jednostki 2}} do wygenerowania ostatecznego wyniku, bo jak można zauważyć, parametry przestrzenne wskazują na przestrzeń główną, a nazwy jednostek już nie. Przykłady w wikikodzie: * {{Code|{{m|Pudełko|Nazwa przestrzeni nazw 2|numer jednostki{{=}}2}}}} → {{Tt|{{#invoke:Pudełko|Nazwa przestrzeni nazw 2|numer jednostki=2}}}} * {{Code|{{m|Pudełko|Nazwa przestrzeni nazw 2|Szablon|nazwa przestrzeni nazw i{{=}}Moja przestrzeń|numer jednostki{{=}}2}}}} → {{Tt|{{#invoke:Pudełko|Nazwa przestrzeni nazw 2|Szablon|nazwa przestrzeni nazw i=Moja przestrzeń|numer jednostki=2}}}} * {{Code|{{m|Pudełko|Nazwa przestrzeni nazw 2|nazwa przestrzeni nazw 2{{=}}|nazwa jednostki 2{{=}}Szablon:Strona|numer jednostki{{=}}2}}}} → {{Tt|{{#invoke:Pudełko|Nazwa przestrzeni nazw 2|nazwa przestrzeni nazw 2=|nazwa jednostki 2=Szablon:Strona|numer jednostki=2}}}} * {{Code|{{m|Pudełko|Nazwa przestrzeni nazw 2|nazwa przestrzeni nazw i{{=}}|nazwa jednostki 2{{=}}Szablon:Strona|numer jednostki{{=}}2}}}} → {{Tt|{{#invoke:Pudełko|Nazwa przestrzeni nazw 2|nazwa przestrzeni nazw i=|nazwa jednostki 2=Szablon:Strona|numer jednostki=2}}}} * {{Code|{{m|Pudełko|Nazwa przestrzeni nazw 2|Szablon|nazwa przestrzeni nazw{{=}}|nazwa jednostki 2{{=}}Wikibooks:Strona|numer jednostki{{=}}2}}}} → {{Tt|{{#invoke:Pudełko|Nazwa przestrzeni nazw 2|Szablon|nazwa przestrzeni nazw=|nazwa jednostki 2=Wikibooks:Strona|numer jednostki=2}}}} Powyżej dla przykładu podano parametry nie w rodzicu w szablonie, tylko w dziecku, jeśli chodzi o parametry nazw przestrzeni nazw i nazw jednostek, ale ich się za to nie powinno podawać w tych ramach, tylko w szablonach, w których wywoływane są te ramki pudełek {{Code|{{m|Pudełko}}}}, ale tak tutaj tak zrobiono by było najłatwiej sprawdzić działanie tego typu funkcji. Analogicznie możemy podawać parametry typu jednostki, np.: wywołaniu modułowym {{Code|{{m|Pudełko|Nazwa przestrzeni nazw 2|typ jednostki 2{{=}}Podręcznik|nazwa jednostki 2{{=}}Szablon:Strona|umer jednostki{{=}}2}}}} (ale wtedy jest brana przestrzeń nazw z nazwy jednostki), ale o tym więcej w rozdziałach {{Code|{{sr|# p["Typ jednostki"](frame,i)|p=Pudełko}}}}, {{Code|{{sr|#p["Typ jednostki 2"](frame,i)|p=Pudełko}}}}, {{Code|{{sr|#p["Typ jednostki 3"](frame,i)|p=Pudełko}}}} itp. w „{{sr|#Funkcje typu jednostki|p=Pudełko}}”, on definiuje przestrzenie przedmiotowe, ale można użyć parametru dyskusji typu jednostki z wartością niepustą, wtedy wyświetli się nazwa przestrzeni nazw dyskusji. Jeżeli typ jednostki wskazuje na przestrzeń nazw główną, wtedy się liczą parametry nazw jednostek. Również parametry typu jednostki nie powinno się podawać w dziecku w ramce, tylko w rodzicu w szablonie jako parametry, w którym ta ramka jest wywoływana, ale tutaj podano jedynie dla przykładu, jak najłatwiej sprawdzić działanie tych parametrów tej funkcji. Najpierw w funkcji nagłówku brane są parametry nazw przestrzeni nazw, a jeżeli ich nie ma, to parametry typu jednostki, a jeżeli nie ma lub parametry przestrzenne wskazują na przestrzeń główną, i nie ma nazwy jednostki, to generowane są nazwy tej funkcji na podstawie aktualnej strony. === {{Code|p["Nazwa przedmiotowej przestrzeni nazw 2"](frame,...)}} === === {{Code|p["Nazwa przestrzeni nazw dyskusji 2"](frame,...)}} === == Funkcje pełnych nazw jednostki == === {{Code|p["Pełna nazwa dyskusji jednostki"](frame,i)}} === === {{Code|p["Pełna nazwa przedmiotowa jednostki"](frame,i)}} === === {{Code|p["Pełna nazwa jednostki"](frame,i)}} === == Funkcje pełnych nazw jednostki drugiej wersji == === {{Code|p["Pełna nazwa dyskusji jednostki 2"](frame,i)}} === === {{Code|p["Pełna nazwa przedmiotowa jednostki 2"](frame,i)}} === === {{Code|p["Pełna nazwa jednostki 2"](frame,i)}} === == Funkcje pełnych nazw jednostki trzeciej wersji == === {{Code|p["Pełna nazwa dyskusji jednostki 3"](frame,i)}} === === {{Code|p["Pełna nazwa przedmiotowa jednostki 3"](frame,i)}} === === {{Code|p["Pełna nazwa jednostki 3"](frame,i)}} === == Funkcje nazw jednostki == === {{Code|p["Nazwa jednostki"](frame,i)}} === == Funkcje nazw jednostki drugiej wersji == === {{Code|p["Nazwa jednostki 2"](frame,i)}} === === {{Code|p["Nazwa przedmiotowa jednostki 2"](frame,i)}} === === {{Code|p["Nazwa dyskusji jednostki 2"](frame,i)}} === == Funkcje nazw przestrzeni nazw trzeciej wersji == === {{Code|p["Nazwa przestrzeni nazw 3"](frame,i)}} === === {{Code|p["Nazwa przedmiotowej przestrzeni nazw 3"](frame,i)}} === === {{Code|p["Nazwa przestrzeni nazw dyskusji 3"](frame,i)}} === == Funkcje nazw jednostki trzeciej wersji == === {{Code|p["Nazwa jednostki 3"](frame,i)}} === === {{Code|p["Nazwa przedmiotowa jednostki 3"](frame,i)}} === === {{Code|p["Nazwa dyskusji jednostki 3"](frame,i)}} === == Funkcje typu jednostki == === {{Code|p["Typ jednostki"](frame,i)}} === === {{Code|p["Typ jednostki 2"](frame,i)}} === === {{Code|p["Typ jednostki 3"](frame,i)}} === === Funkcje typu jednostki przedmiotowe === ==== {{Code|p["Przedmiotowy typ jednostki"](frame,i)}} ==== ==== {{Code|p["Przedmiotowy typ jednostki 2"](frame,i)}} ==== ==== {{Code|p["Przedmiotowy typ jednostki 3"](frame,i)}} ==== === Fukcje typu jednostki dyskusji === ==== {{Code|p["Dyskusyjny typ jednostki"](frame,i)}} ==== ==== {{Code|p["Dyskusyjny typ jednostki 2"](frame,i)}}} ==== ==== {{Code|p["Dyskusyjny typ jednostki 3"](frame,i)}} ==== == Funkcje chech pudełka == === {{Code|p["Cecha pudełka"](frame)}} === === {{Code|p["Przedmiotowa cecha pudełka"](frame)}} === === {{Code|p["Dyskusyjna cecha pudełka"](frame)}} === == Fukcje ogólnego pudełka == === {{Code|p["Ogólne pudełko"](frame)}} === == Funkcje ogólne == === {{Code|p["Tekst pudełka"](frame)}} === == Funkcje błędów pudełka == === {{Code|p["Błędy pudełka"](frame)}} === === {{Code|p["Przedmiotowe błędy pudełka"](frame)}} === === {{Code|p["Dyskusyjne błędy pudełka"](frame)}} === == Funkcje nazw stron == === {{Code|p["Nazwa strony głównej projektu"](frame,i)}} === === {{Code|p["Nazwa strony głównej dla dzieci projektu"](frame,i)}} === == Funkcje kodów == === {{Code|p["Kod języka"](frame,i)}} === === {{Code|p["Kod projektu"](frame,i)}} === === {{Code|p["Klucz projektu"](frame,i)}} === == Funkcje wiki == === {{Code|p["Inny niż język bieżący wiki"](frame)}} === === {{Code|p["Inne niż lokalne wiki"](frame)}} === === {{Code|p["Inne niż bieżące wiki"](frame)}} === == Funkcje typów parametrów, czy podane je == === {{Code|p["Podano parametry nienazwane"](frame)}} === === {{Code|p["Podano parametry numerowane"](frame)}} === === {{Code|p["Podano parametry nazwane"](frame)}} === == Funkcje kodów tego projektu == === {{Code|p["Kod projektu tego projektu"](frame)}} === === {{Code|p["Kod języka tego projektu"](frame)}} === === {{Code|p["Klucz projektu tego projektu"](frame)}} === == Funkcje stron == === {{Code|p["Strona główna tego projektu"](frame)}} === === {{Code|p["Strona główna dla dzieci tego projektu"](frame)}} === == Funkcje nazw stron drugiej wersji == === {{Code|p["Nazwa strony głównej dla dzieci projektu 2"](frame)}} === === {{Code| p["Nazwa strony głównej projektu 2"](frame)}} === {{BrClear}} <noinclude><!-- -->{{ProstaStronaKoniec}}<!-- -->{{Kategoria|Opisy funkcji, w Lua w Scribunto, w modułach}}<!-- --></noinclude> 4kgym4jbsp98o9ydipn7u30nl5ssmky 540385 540384 2026-04-23T13:36:36Z Persino 2851 /* {{Code|p["Nazwa przestrzeni nazw 2"](frame,...)}} */ 540385 wikitext text/x-wiki <noinclude>{{ProstaStronaStart | nagłówek = {{Podrozdział|{{ld2|Pudełko}}|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 pudelko_modul=require("Module:Pudełko"); </syntaxhighlight> dzięki, któremu można wypisywać funkcje należącego do niego. Posługuje się na parametrach pudełkowych {{Parametr|nazwa przestrzeni nazw}} (czy też bez numerka {{Parametr|nazwa przestrzeni nazw i}} dla tego numerowanego) lub te z numerkiem po jednej spacji w nich (ale nie dla tego z końcówką {{Code| i}}) mogą zostać użyte jako parametry szablonu. Moduł {{Code|{{ld2|Pudełko}}}} przedstawia funkcje nazw w oparciu o funkcje nazw {{Code|{{ld2|Nazwy}}}}, generuje on nazwy za pomocą parametrów pudełkowych podanych poniżej. Parametr {{Parametr|nazwa jednostki}} (lub parametr {{Parametr|cel}} dla numerka tego pierwszego, tego alternatywnego), lub te z numerkiem po jednej spacji w nazwie parametru, albo numerowane numerkami {{Code|1}}, {{Code|2}},..., mogą zostać użyte jako parametry szablonu. Parametry określające rodzaj jednostki {{Parametr|typ jednostki}} z {{Parametr|dyskusja typu jednostki}}, itp. w wersjach z numerkiem po jednej spacji w nich mogą zostać użyte jako parametry szablonu. A te tymi numerowanymi liczbami naturalnymi {{Tt|nazwy jednostki}} od jedynki wzwyż poprzez szablon, w którym są one użyte, one też mogą być użyte z dwukropkiem, te numerowane, na samym początku nazwy, wtedy one są traktowane jako pełne nazwy strony, i wtedy one nie zostaną z interpretowane, że do nich trzeba użyć parametr odpowiedni z nazwą przetrzeni nazw z tego numerowanego, czy ogólny, aby utworzyć znów inną pełną nazwę strony dla tego numerka. Zestawienie: * {{Code|nazwa przestrzeni nazw}} i {{Code|nazwa przestrzeni nazw i}} (ogólna nazwa przestrzeni nazw dla wszystkich numerków, i tych numerowanych jednostek) - i to pierwsze z numerkiem, tzn. {{Code|nazwa przestrzeni nazw 1}}, {{Code|nazwa przestrzeni nazw 2}}, ..., * {{Code|nazwa jednostki}} - i te z numerkiem: {{Code|nazwa jednostki 1}}, {{Code|nazwa jednostki 2}}, ..., lub gdy jest zamiast tego parametrem numerowany, {{Code|1}}, {{Code|2}},..., który dla tego pierwszego może być uznany jako: {{Code|cel}} {{=}} {{Code|1}}, * {{Code|typ jednostki}} (parametr bazowy) i {{Code|typ jednostki i}} (parametr domyślny numerkowy) - i te z numerkiem: {{Code|typ jednostki 1}}, {{Code|typ jednostki 2}}, ..., tzn. gdy chcemy określić z jakim typem jednostki mamy do czynienia w zależności do jakiej przestrzeni nazw należy, a w danej, czy jest on np. programowy, czy tylko jest opisem, jak to bywa w szablonach {{Np|Template|link=tak}}, podobnie jest w przypadku {{Np|Module|link=tak}}, czy jak jest w innych przestrzeniach nazw, ** {{Code|dyskusja typu jednostki}} (parametr bazowy) i {{Code|dyskusja typu jednostki i}} (parametr domyślny numerkowy) - i te z numerkiem: {{Code|dyskusja typu jednostki 1}}, {{Code|dyskusja typu jednostki 2}}, ..., gdy chcemy określić wartością niepustą,że chodzi tutaj o typ jednostki. == {{Code|p.CzyNiepoprawnaNazwa(nazwa_jednostki)}} == Funkcja sprawdzajaca, czy jest poprawnie podana nazwa jednostki, czy ma poprawną nazwę. Znakami tymi, z których nie powinna składać się nazwa jest {{Code|<nowiki>{}<>|[]#\n</nowiki>}} i dodatkowo znak {{Code|&#127;}} (kod {{Code|{{Nowiki|&#127;}}}}). Też nie może składać się z trzech znaków tyldy, tzn. {{Code|<nowiki>~~~</nowiki>}}. Również w swojej budowie nie może składać się ze kodów {{Strong|HTML}} literowych o wzorze {{Code|{{Nowiki|&(%a+);}}}}. Natomiast może składać się z {{Code|{{Nowiki|&#(%d+);}}}} i {{Code|{{Nowiki|&#x(%x+);}}}}, ale w pierw te kody muszą być zamienione na normalne znaki. Skrótowa definicja funkcji: <syntaxhighlight lang="lua"> function p.CzyNiepoprawnaNazwa(nazwa_jednostki)...end; </syntaxhighlight> Wtedy ciało funkcji tej, czyli jego definicja w środku, jest: <syntaxhighlight lang="lua"> -- Moduł: "Moduł:Html/dane", służy do ładowania znaku o kodzie HTML "&#127;"; local html_dane_modul=mw.loadData("Module:Html/dane"); return mw.ustring.match(nazwa_jednostki,"[{}<>|%[%]#\n"..html_dane_modul.znak_127.."]+") or mw.ustring.match(nazwa_jednostki,"~~~") or mw.ustring.match(nazwa_jednostki,"&(%a+);"); </syntaxhighlight> Parametry: * {{Code|nazwa_jednostki}} - nazwa jednostki do sprawdzenia. Przykłady: <syntaxhighlight lang="lua"> local pudelko_modul=require("Module:Pudełko"); -- Podana przykładowa niepoprawna nazwa jedostki local nazwa_jednostki="Nazwa pliku [[Nazwa linku w pliku]]"; -- Fukcja zwróci wartość: local czy_poprawna_nazwa=true; local czy_poprawna_nazwa=pudelko_modul.CzyNiepoprawnaNazwa(nazwa_jednostki); </syntaxhighlight> == Funkcje nazw przestrzeni nazw == === {{Code|p["Nazwa przestrzeni nazw"](frame,...)}} === Funkcja pisze nazwę przestrzeni nazw, niezależnie, czy to jest przedmiotowa, czy dyskusji, według podanej w zmiennej {{Code|nazwa przestrzeni nazw}} dla pozycja bazowej w podanych parametrach szablonu rodzicu ramki dziecka, lub dla innej pozycji należy parametr podawać w formie {{Code|nazwa przestrzeni nazw 1}}, {{Code|nazwa przestrzeni nazw 2}}, {{Code|nazwa przestrzeni nazw 3}},..., lub te parametry można podać w postaci ogólnej {{Code|nazwa przestrzeni nazw i}}. Parametry podaje się w parametrach rodzica wywołania tej funkcji {{Code|{{m|Pudełko|Nazwa przestrzeni nazw}}}} (ale ich nie trzeba podawać w dziecku, ale można) i w parametrach dziecka, jeśli chodzi o zmienną {{Code|numer jednostki}}, czyli np.: {{Code|{{m|Pudełko|Nazwa przestrzeni nazw|numer jednostki{{=}}<jakaś liczba całkowita dodatnia>}}}}. Te parametry przestrzenne zamiast w rodzicu w szablonie można podać w ramce dziecka, wtedy parametry dziecka mają pierwszeństwo. Przestrzeń nazw z parametrów nazw przestrzennych może odpowiadać wartości przestrzeni głównej, to wtedy odpowiednia przestrzeń nazw z parametru nazwy jednostki się nie liczy w tej funkcji, aby się liczyła należy użyć funkcji {{Code|{{sr|#p["Nazwa przestrzeni nazw 2"](frame,...)|p=Pudełko}}}}. Definicja skrótowa funkcji: <syntaxhighlight lang="lua"> p["Nazwa przestrzeni nazw"]=function(frame,czy_uwzglednic_alternatywna_nazwe,i)...end; </syntaxhighlight> Wtedy ciało funkcji tej, czyli jego definicja w środku, jest: <syntaxhighlight lang="lua"> -- Jest liczony numer parametru nazwy przestrzeni nazw, domyslnie chodzi tu o numer bazowy parametrów przestrzennych; local numer_jednostki=i or frame.args["numer jednostki"]; local liczba_numer_jednostki=((numer_jednostki)and(tonumber(numer_jednostki))or 0); local pudelko_pomocne_modul=require("Module:Pudełko/Pomocne"); -- Liczy nazwę przestrzeni nazw na podstawie podanych parametrów; return pudelko_pomocne_modul.Nazwa_przestrzeni_nazw(frame,0, czy_uwzglednic_alternatywna_nazwe,liczba_numer_jednostki); </syntaxhighlight> Parametry funkcji: * {{Code|frame}} - tablica ramki tablicy transportu, * {{Code|czy_uwzglednic_alternatywna_nazwe}} - czy ma uwzględniać nazwę przestrzeni nazw domyślną szablonu, dostępne wartości: {{Code|false}}, w której nazwa domyślna nie jest uwzględniana wtedy, oraz {{Code|nil}} i {{Code|true}}, które oznaczają to samo, w tym jeżeli ona jest uwzględniana, wtedy jest brany parametr pierwszy dziecka, który musi istnieć przy takiej wartości tego parametru, tzn. {{Code|{{m|Pudełko|Nazwa przestrzeni nazw|Szablon}}}}, a nazwa uzyskana nazwy przestrzeni nazw jest w takim przypadku błędna, a jeżeli nazwa domyślna jest błędna, czyli {{Code|{{m|Pudełko|Nazwa przestrzeni nazw|Moja przestrzeń}}}}, wtedy funkcja zwraca stan błędu {{Code|(błąd)}}. * {{Code|i}} - numer zmiennej nazwy przestrzeni nazw. Funkcja wykorzystuje {{Code|{{sr|#p.Nazwa_przestrzeni_nazw(frame,...)|p=Pudełko/Pomocne}}}} do wyznaczania ogólnego nazwy przestrzeni nazw dla pozycji bazowej i numerkowej, tzn. dla pozycji: jeden, dwa, trzy,..., itd, i ich ogólnej. Parametry ramki tablicy transportu dziecka: * {{Code|nazwa przestrzeni nazw}}, {{Code|nazwa przestrzeni nazw 1}}, {{Code|nazwa przestrzeni nazw 2}}, {{Code|nazwa przestrzeni nazw 3}},..., {{Code|nazwa przestrzeni nazw i}} - nazwy przestrzeni nazw dla pozycji bazowej, numerkowej i ogólnej, * {{Code|typ jednostki}}, {{Code|typ jednostki 1}}, {{Code|typ jednostki 2}}, {{Code|typ jednostki 3}},..., {{Code|typ jednostki i}} - typy jednostek, którym odpowiadają pewne przestrzenie przedmiotowe, dla pozycji bazowej, numerkowej i ogólnej, ** {{Code|dyskusja typu jednostki}}, {{Code|dyskusja typu jednostki 1}}, {{Code|dyskusja typ jednostki 2}}, {{Code|dyskusja typ jednostki 3}},..., {{Code|dyskusja typ jednostki i}} - czy dany typ jednostki ma przedstawiać, jeśli niepusta, przestrzeń dyskusji dla pozycji bazowej, numerkowej i ogólnej, * {{Code|numer jednostki}} - jak parametr {{Code|i}} nie został ustawiony, to wtedy liczy się ta zmienna. Parametr ramki tablicy transportu rodzica szablonu: * {{Code|nazwa przestrzeni nazw}}, {{Code|nazwa przestrzeni nazw 1}}, {{Code|nazwa przestrzeni nazw 2}}, {{Code|nazwa przestrzeni nazw 3}},..., {{Code|nazwa przestrzeni nazw i}} - nazwy przestrzeni nazw dla pozycji bazowej oraz zwykłej i ogólnej numerkowej, * {{Code|typ jednostki}}, {{Code|typ jednostki 1}}, {{Code|typ jednostki 2}}, {{Code|typ jednostki 3}},..., {{Code|typ jednostki i}} - typy jednostek, którym odpowiadają pewne przestrzenie przedmiotowe, dla pozycji bazowej, numerkowej i ogólnej, ** {{Code|dyskusja typu jednostki}}, {{Code|dyskusja typu jednostki 1}}, {{Code|dyskusja typ jednostki 2}}, {{Code|dyskusja typ jednostki 3}},..., {{Code|dyskusja typ jednostki i}} - czy dany typ jednostki ma przedstawiać, jeśli niepusta, przestrzeń dyskusji dla pozycji bazowej, numerkowej i ogólnej. Przykłady: <syntaxhighlight lang="mediawiki"> {{Nazwa szablonu|nazwa przestrzeni nazw=Wikibooks|nazwa przestrzeni nazw 2=Szablon|nazwa przestrzeni nazw i=Moduł}} </syntaxhighlight> W dziecku powiedzmy jest wywołanie, i szukamy nazwy przestrzeni nazw o numerze dwa, która nie została podana, ale istnieje za to jej wersji ogólna {{Code|nazwa przestrzeni nazw i}} i domyślna {{Code|nazwa przestrzeni nazw}}: <syntaxhighlight lang="mediawiki"> {{#invoke:Pudełko|Nazwa przestrzeni nazw|numer jednostki=1}} </syntaxhighlight> Na podstawie powyższego przykładu otrzymamy wynik o schemacie, nie wyniku, bo tam nie ma zmiennej {{Code|nazwa przestrzeni nazw 1}}, ale jest {{Code|nazwa przestrzeni nazw i}}: <syntaxhighlight lang="mediawiki"> <!-- Ale nie "nazwa przestrzeni nazw", bo jej nie ma, ale za to istnieje "nazwa przestrzeni nazw i"; --> <!-- nazwa przestrzeni nazw 2=nazwa przestrzeni nazw i=Moduł; --> <!-- Czyli wynik: --> Moduł <!-- Widzimy, że wygenerowała się nazwa przestrzeni nazw, którą jest przestrzeń programowa, którą również jest "Szablon"; --> </syntaxhighlight> Nie jest brana w tym powyższym przykładzie zmienna {{Code|nazwa przestrzeni nazw}}, bo jej nie ma, ale za to jest {{Code|nazwa przestrzeni nazw i}}, bo ona występuje jako parametr domyślny ogólny dla parametrów numerkowych. Przykłady w wikikodzie: * {{Code|{{m|Pudełko|Nazwa przestrzeni nazw|numer jednostki{{=}}2}}}} → {{Tt|{{#invoke:Pudełko|Nazwa przestrzeni nazw|numer jednostki=2}}}} * {{Code|{{m|Pudełko|Nazwa przestrzeni nazw|Szablon|nazwa przestrzeni nazw i{{=}}Moja przestrzeń|numer jednostki{{=}}2}}}} → {{Tt|{{#invoke:Pudełko|Nazwa przestrzeni nazw|Szablon|nazwa przestrzeni nazw i=Moja przestrzeń|numer jednostki=2}}}} * {{Code|{{m|Pudełko|Nazwa przestrzeni nazw|nazwa przestrzeni nazw 2{{=}}Szablon|numer jednostki{{=}}2}}}} → {{Tt|{{#invoke:Pudełko|Nazwa przestrzeni nazw|nazwa przestrzeni nazw 2=Szablon|numer jednostki=2}}}} * {{Code|{{m|Pudełko|Nazwa przestrzeni nazw|nazwa przestrzeni nazw 2{{=}}Szablon|numer jednostki{{=}}2}}}} → {{Tt|{{#invoke:Pudełko|Nazwa przestrzeni nazw|nazwa przestrzeni nazw i=Szablon|numer jednostki=2}}}} * {{Code|{{m|Pudełko|Nazwa przestrzeni nazw|nazwa przestrzeni nazw{{=}}Szablon|numer jednostki{{=}}2}}}} → {{Tt|{{#invoke:Pudełko|Nazwa przestrzeni nazw|nazwa przestrzeni nazw=Szablon|numer jednostki=2}}}} Powyżej dla przykładu podano parametry nie w rodzicu w szablonie, tylko w dziecku, jeśli chodzi o parametry nazw przestrzeni nazw, ale ich się za to nie powinno podawać w tych ramach, tylko w szablonach, w których wywoływane są te ramki pudełek {{Code|{{m|Pudełko}}}}, ale tak tutaj tak zrobiono by było najłatwiej sprawdzić działanie tego typu funkcji. Analogicznie możemy podawać parametry typu jednostki, np.: wywołaniu modułowym {{Code|{{m|Pudełko|Nazwa przestrzeni nazw|typ jednostki 2{{=}}strona szablonu|numer jednostki{{=}}2}}}}, ale o tym więcej w rozdziałach {{Code|{{sr|# p["Typ jednostki"](frame,i)|p=Pudełko}}}}, {{Code|{{sr|#p["Typ jednostki 2"](frame,i)|p=Pudełko}}}}, {{Code|{{sr|#p["Typ jednostki 3"](frame,i)|p=Pudełko}}}} itp. w „{{sr|#Funkcje typu jednostki|p=Pudełko}}”, on definiuje przestrzenie przedmiotowe, ale można użyć parametru dyskusji typu jednostki z wartością niepustą, wtedy wyświetli się nazwa przestrzeni nazw dyskusji. Również parametry typu jednostki nie powinno się podawać w dziecku w ramce, tylko w rodzicu w szablonie jako parametry, w którym ta ramka jest wywoływana, ale tutaj podano jedynie dla przykładu, jak najłatwiej sprawdzić działanie tych parametrów tej funkcji. Najpierw w funkcji nagłówku brane są parametry nazw przestrzeni nazw, a jeżeli ich nie ma, to parametry typu jednostki, a jeżeli nie ma, to generowane są nazwy na podstawie aktualnego modułu. === {{Code|p["Nazwa przedmiotowej przestrzeni nazw"](frame,...)}} === Funkcja pisze przedmiotową nazwę przestrzeni nazw jakikolwiek nazwy przestrzeni nazw (tzn. nazwę przedmiotową nazwy przestrzenie nazw, czyli nie dyskusji, zamieniana jest na nią samą, czyli identyfikator przestrzeni się nie zmienia, a dyskusji, nie przedmiotową, przekształca się na przedmiotową jej odpowiadającą, czyli w tym przypadku identyfikator przestrzeni zmniejsza się o numer mniej), według podanej w zmiennej {{Code|nazwa przestrzeni nazw}} dla pozycja bazowej w podanych parametrach szablonu rodzicu ramki dziecka, lub dla innej pozycji należy parametr podawać w formie {{Code|nazwa przestrzeni nazw 1}}, {{Code|nazwa przestrzeni nazw 2}}, {{Code|nazwa przestrzeni nazw 3}},..., lub te parametry można podać w postaci ogólnej {{Code|nazwa przestrzeni nazw i}}. Parametry podaje się w parametrach rodzica wywołania tej funkcji {{Code|{{m|Pudełko|Nazwa przedmiotowej przestrzeni nazw}}}} (ale ich nie trzeba podawać w dziecku, ale można) i w parametrach dziecka, jeśli chodzi o zmienną {{Code|numer jednostki}}, czyli np.: {{Code|{{m|Pudełko|Nazwa przedmiotowej przestrzeni nazw|numer jednostki{{=}}<jakaś liczba całkowita dodatnia>}}}}. Te parametry przestrzenne zamiast w rodzicu w szablonie można podać w ramce dziecka, wtedy parametry dziecka mają pierwszeństwo. Parametry przestrzenne mogą mogą być podane w postaci przestrzeni przedmiotowej lub dyskusji, ale ta funkcja zawsze ją zamienia na przedmiotową. Przestrzeń nazw z parametrów nazw przestrzennych może odpowiadać wartości przestrzeni głównej, to wtedy odpowiednia przestrzeń nazw z parametru nazwy jednostki się nie liczy w tej funkcji, aby się liczyła należy użyć funkcji {{Code|{{sr|#p["Nazwa przedmiotowej przestrzeni nazw 2"](frame,...)|p=Pudełko}}}}. Definicja skrótowa funkcji: <syntaxhighlight lang="lua"> p["Nazwa przedmiotowej przestrzeni nazw"]=function(frame,czy_uwzglednic_alternatywna_nazwe,i)...end; </syntaxhighlight> Wtedy ciało funkcji tej, czyli jego definicja w środku, jest: <syntaxhighlight lang="lua"> -- Jest liczony numer parametru nazwy przestrzeni nazw, domyslnie chodzi tu o numer bazowy parametrów przestrzennych; local numer_jednostki=i or frame.args["numer jednostki"]; local liczba_numer_jednostki=((numer_jednostki)and(tonumber(numer_jednostki))or 0); local pudelko_pomocne_modul=require("Module:Pudełko/Pomocne"); -- Liczy nazwę przestrzeni nazw przedmiotową na podstawie podanych parametrów; return pudelko_pomocne_modul.Nazwa_przestrzeni_nazw(frame,1, czy_uwzglednic_alternatywna_nazwe,liczba_numer_jednostki); </syntaxhighlight> Parametry funkcji: * {{Code|frame}} - tablica ramki tablicy transportu, * {{Code|czy_uwzglednic_alternatywna_nazwe}} - czy ma uwzględniać nazwę przestrzeni nazw domyślną szablonu, dostępne wartości: {{Code|false}}, w której nazwa domyślna nie jest uwzględniana wtedy, oraz {{Code|nil}} i {{Code|true}}, które oznaczają to samo, w tym jeżeli ona jest uwzględniana, wtedy jest brany parametr pierwszy dziecka, który musi istnieć przy takiej wartości tego parametru, tzn. {{Code|{{m|Pudełko|Nazwa przedmiotowej przestrzeni nazw|Dyskusja szablonu}}}} - ta nazwa domyślna zostanie zamieniona na przedmiotową, a jak ona by była przedmiotowa, to żadnej zamiany by nie było, a nazwa uzyskana z nazwy przestrzeni nazw z parametrów przestrzennych jest w takim przypadku błędna, to w takim razie brany jest ten parametr, a jeżeli ta nazwa domyślna jest błędna, czyli {{Code|{{m|Pudełko|Nazwa przedmiotowej przestrzeni nazw|Moja przestrzeń}}}}, wtedy funkcja zwraca stan błędu {{Code|(błąd)}}. * {{Code|i}} - numer zmiennej nazwy przestrzeni nazw. Funkcja wykorzystuje {{Code|{{sr|#p.Nazwa_przestrzeni_nazw(frame,...)|p=Pudełko/Pomocne}}}} do wyznaczania ogólnego nazwy przestrzeni nazw dla pozycji bazowej i numerkowej, tzn. dla pozycji: jeden, dwa, trzy,..., itd, i ich ogólnej. Parametry ramki tablicy transportu dziecka: * {{Code|nazwa przestrzeni nazw}}, {{Code|nazwa przestrzeni nazw 1}}, {{Code|nazwa przestrzeni nazw 2}}, {{Code|nazwa przestrzeni nazw 3}},..., {{Code|nazwa przestrzeni nazw i}} - nazwy przestrzeni nazw dla pozycji bazowej, numerkowej i ogólnej, * {{Code|typ jednostki}}, {{Code|typ jednostki 1}}, {{Code|typ jednostki 2}}, {{Code|typ jednostki 3}},..., {{Code|typ jednostki i}} - typy jednostek, którym odpowiadają pewne przestrzenie przedmiotowe, dla pozycji bazowej, numerkowej i ogólnej, ** {{Code|dyskusja typu jednostki}}, {{Code|dyskusja typu jednostki 1}}, {{Code|dyskusja typ jednostki 2}}, {{Code|dyskusja typ jednostki 3}},..., {{Code|dyskusja typ jednostki i}} - czy dany typ jednostki ma przedstawiać, jeśli niepusta, przestrzeń dyskusji dla pozycji bazowej, numerkowej i ogólnej, * {{Code|numer jednostki}} - jak parametr {{Code|i}} nie został ustawiony, to wtedy liczy się ta zmienna. Parametr ramki tablicy transportu rodzica szablonu: * {{Code|nazwa przestrzeni nazw}}, {{Code|nazwa przestrzeni nazw 1}}, {{Code|nazwa przestrzeni nazw 2}}, {{Code|nazwa przestrzeni nazw 3}},..., {{Code|nazwa przestrzeni nazw i}} - nazwy przestrzeni nazw dla pozycji bazowej oraz zwykłej i ogólnej numerkowej, * {{Code|typ jednostki}}, {{Code|typ jednostki 1}}, {{Code|typ jednostki 2}}, {{Code|typ jednostki 3}},..., {{Code|typ jednostki i}} - typy jednostek, którym odpowiadają pewne przestrzenie przedmiotowe, dla pozycji bazowej, numerkowej i ogólnej, ** {{Code|dyskusja typu jednostki}}, {{Code|dyskusja typu jednostki 1}}, {{Code|dyskusja typ jednostki 2}}, {{Code|dyskusja typ jednostki 3}},..., {{Code|dyskusja typ jednostki i}} - czy dany typ jednostki ma przedstawiać, jeśli niepusta, przestrzeń dyskusji dla pozycji bazowej, numerkowej i ogólnej. Przykłady: <syntaxhighlight lang="mediawiki"> {{Nazwa szablonu|nazwa przestrzeni nazw=Dyskusja Wikibooks|nazwa przestrzeni nazw 2=Dyskusja szablonu|nazwa przestrzeni nazw i=Dyskusja modułu}} </syntaxhighlight> W dziecku powiedzmy jest wywołanie, i szukamy nazwy przestrzeni nazw o numerze dwa, która nie została podana, ale istnieje za to jej wersji ogólna {{Code|nazwa przestrzeni nazw i}} i domyślna {{Code|nazwa przestrzeni nazw}}: <syntaxhighlight lang="mediawiki"> {{#invoke:Pudełko|Nazwa przedmiotowej przestrzeni nazw|numer jednostki=1}} </syntaxhighlight> Na podstawie powyższego przykładu otrzymamy wynik o schemacie, nie wyniku, bo tam nie ma zmiennej {{Code|nazwa przestrzeni nazw 1}}, ale jest {{Code|nazwa przestrzeni nazw i}}: <syntaxhighlight lang="mediawiki"> <!-- Ale nie "nazwa przestrzeni nazw", bo jej nie ma, ale za to istnieje "nazwa przestrzeni nazw i"; --> <!-- nazwa przestrzeni nazw 2=nazwa przestrzeni nazw i=Dyskusja modułu; --> <!-- Czyli wynik: --> Moduł <!-- Widzimy, że wygenerowała się nazwa przestrzeni nazw, którą jest przestrzeń przedmiotowa programowa przestrzeni dyskusji "Dyskusja modułu", którą również jest "Szablon" jego przestrzeni dyskusji "Dyskusja szablonu", a dla ich przestrzeni przedmiotowej, zamiast dyskusji, to samo przekształca się na to samo; --> </syntaxhighlight> Nie jest brana w tym powyższym przykładzie zmienna {{Code|nazwa przestrzeni nazw}}, bo jej nie ma, ale za to jest {{Code|nazwa przestrzeni nazw i}}, bo ona występuje jako parametr domyślny ogólny dla parametrów numerkowych. Przykłady w wikikodzie: * {{Code|{{m|Pudełko|Nazwa przedmiotowej przestrzeni nazw|numer jednostki{{=}}2}}}} → {{Tt|{{#invoke:Pudełko|Nazwa przedmiotowej przestrzeni nazw|numer jednostki=2}}}} * {{Code|{{m|Pudełko|Nazwa przedmiotowej przestrzeni nazw|Dyskusja szablonu|nazwa przestrzeni nazw i{{=}}Moja przestrzeń|numer jednostki{{=}}2}}}} → {{Tt|{{#invoke:Pudełko|Nazwa przedmiotowej przestrzeni nazw|Dyskusja szablonu|nazwa przestrzeni nazw i=Moja przestrzeń|numer jednostki=2}}}} * {{Code|{{m|Pudełko|Nazwa przedmiotowej przestrzeni nazw|nazwa przestrzeni nazw 2{{=}}Dyskusja szablonu|numer jednostki{{=}}2}}}} → {{Tt|{{#invoke:Pudełko|Nazwa przedmiotowej przestrzeni nazw|nazwa przestrzeni nazw 2=Dyskusja szablonu|numer jednostki=2}}}} * {{Code|{{m|Pudełko|Nazwa przedmiotowej przestrzeni nazw|nazwa przestrzeni nazw 2{{=}}Dyskusja szablonu|numer jednostki{{=}}2}}}} → {{Tt|{{#invoke:Pudełko|Nazwa przedmiotowej przestrzeni nazw|nazwa przestrzeni nazw i=Dyskusja szablonu|numer jednostki=2}}}} * {{Code|{{m|Pudełko|Nazwa przedmiotowej przestrzeni nazw|nazwa przestrzeni nazw{{=}}Dyskusja szablonu|numer jednostki{{=}}2}}}} → {{Tt|{{#invoke:Pudełko|Nazwa przedmiotowej przestrzeni nazw|nazwa przestrzeni nazw=Dyskusja szablonu|numer jednostki=2}}}} Powyżej dla przykładu podano parametry nie w rodzicu w szablonie, tylko w dziecku, jeśli chodzi o parametry nazw przestrzeni nazw, ale ich się za to nie powinno podawać w tych ramach, tylko w szablonach, w których wywoływane są te ramki pudełek {{Code|{{m|Pudełko}}}}, ale tak tutaj tak zrobiono by było najłatwiej sprawdzić działanie tego typu funkcji. Analogicznie możemy podawać parametry typu jednostki, np.: wywołaniu modułowym {{Code|{{m|Pudełko|Nazwa przedmiotowej przestrzeni nazw|typ jednostki 2{{=}}strona szablonu|numer jednostki{{=}}2}}}}, ale o tym więcej w rozdziałach {{Code|{{sr|# p["Typ jednostki"](frame,i)|p=Pudełko}}}}, {{Code|{{sr|#p["Typ jednostki 2"](frame,i)|p=Pudełko}}}}, {{Code|{{sr|#p["Typ jednostki 3"](frame,i)|p=Pudełko}}}} itp. w „{{sr|#Funkcje typu jednostki|p=Pudełko}}”, ale wtedy ta sama nazwa przestrzeni nazw reprezentowana przez {{Parametr|typ jednostki 2|strona szablonu}}, jest zamieniana na to samo, lepiej jest tutaj używać parametrów przestrzennych nazw niż typu jednostki, bo typ jednostki ma taką samą wartość dla przestrzeni przedmiotowej, co dyskusji. Tutaj parametr dyskusji typu jednostki bazowy i numerkowy ogólny, czy szczegółowy, nie gra roli, bo nawet, gdy wygenerujemy nazwę przestrzeni dyskusji za pomoca tego parametru, to i tak otrzymamy na samym końcu jego nazwę przedmiotową. Również parametry typu jednostki nie powinno się podawać w dziecku w ramce, tylko w rodzicu w szablonie jako parametry, w którym ta ramka jest wywoływana, ale tutaj podano jedynie dla przykładu, jak najłatwiej sprawdzić działanie tych parametrów tej funkcji. Najpierw w funkcji nagłówku brane są parametry nazw przestrzeni nazw, a jeżeli ich nie ma, to parametry typu jednostki, a jeżeli nie ma, to generowane są nazwy na podstawie aktualnego modułu. === {{Code|p["Nazwa przestrzeni nazw dyskusji"](frame,...)}} === Funkcja pisze nazwę przestrzeni nazw dyskusji jakikolwiek nazwy przestrzeni nazw (tzn. nazwę przedmiotową nazwy przestrzenie nazw, czyli nie dyskusji, zamieniana jest na dyskusji, czyli identyfikator przestrzeni się zmienia jeden wyżej, a dyskusji, nie przedmiotową, przekształca się na tą samą), według podanej w zmiennej {{Code|nazwa przestrzeni nazw}} dla pozycja bazowej w podanych parametrach szablonu rodzicu ramki dziecka, lub dla innej pozycji należy parametr podawać w formie {{Code|nazwa przestrzeni nazw 1}}, {{Code|nazwa przestrzeni nazw 2}}, {{Code|nazwa przestrzeni nazw 3}},..., lub te parametry można podać w postaci ogólnej {{Code|nazwa przestrzeni nazw i}}. Parametry podaje się w parametrach rodzica wywołania tej funkcji {{Code|{{m|Pudełko|Nazwa przestrzeni nazw dyskusji}}}} (ale ich nie trzeba podawać w dziecku, ale można) i w parametrach dziecka, jeśli chodzi o zmienną {{Code|numer jednostki}}, czyli np.: {{Code|{{m|Pudełko|Nazwa przestrzeni nazw dyskusji|numer jednostki{{=}}<jakaś liczba całkowita dodatnia>}}}}. Te parametry przestrzenne zamiast w rodzicu w szablonie można podać w ramce dziecka, wtedy parametry dziecka mają pierwszeństwo. Parametry przestrzenne mogą mogą być podane w postaci przestrzeni przedmiotowej lub dyskusji, ale ta funkcja zawsze ją zamienia na dyskusji. Przestrzeń nazw z parametrów nazw przestrzennych może odpowiadać wartości przestrzeni głównej, to wtedy odpowiednia przestrzeń nazw z parametru nazwy jednostki się nie liczy w tej funkcji, aby się liczyła należy użyć funkcji {{Code|{{sr|#p["Nazwa przestrzeni nazw dyskusji 2"](frame,...)|p=Pudełko}}}}. Definicja skrótowa funkcji: <syntaxhighlight lang="lua"> p["Nazwa przestrzeni nazw dyskusji"]=function(frame,czy_uwzglednic_alternatywna_nazwe,i)...end; </syntaxhighlight> Wtedy ciało funkcji tej, czyli jego definicja w środku, jest: <syntaxhighlight lang="lua"> -- Jest liczony numer parametru nazwy przestrzeni nazw, domyslnie chodzi tu o numer bazowy parametrów przestrzennych; local numer_jednostki=i or frame.args["numer jednostki"]; local liczba_numer_jednostki=((numer_jednostki)and(tonumber(numer_jednostki))or 0); local pudelko_pomocne_modul=require("Module:Pudełko/Pomocne"); -- Liczy nazwę przestrzeni nazw dyskusji na podstawie podanych parametrów; return pudelko_pomocne_modul.Nazwa_przestrzeni_nazw(frame,2, czy_uwzglednic_alternatywna_nazwe,liczba_numer_jednostki); </syntaxhighlight> Parametry funkcji: * {{Code|frame}} - tablica ramki tablicy transportu, * {{Code|czy_uwzglednic_alternatywna_nazwe}} - czy ma uwzględniać nazwę przestrzeni nazw domyślną szablonu, dostępne wartości: {{Code|false}}, w której nazwa domyślna nie jest uwzględniana wtedy, oraz {{Code|nil}} i {{Code|true}}, które oznaczają to samo, w tym jeżeli ona jest uwzględniana, wtedy jest brany parametr pierwszy dziecka, który musi istnieć przy takiej wartości tego parametru, tzn. {{Code|{{m|Pudełko|Nazwa przestrzeni nazw dyskusji|Szablon}}}} - ta nazwa domyślna zostanie przekształcona na dyskusji, a jeżeli ona by była dyskusji, to nie byłoby żadnego przekształcenia, a nazwa uzyskana nazwy przestrzeni nazw z parametrów przestrzennych jest w takim przypadku błędna, to w takim razie brany jest ten parametr, a jeżeli nazwa domyślna jest błędna, czyli {{Code|{{m|Pudełko|Nazwa przestrzeni nazw dyskusji|Moja przestrzeń}}}}, wtedy funkcja zwraca stan błędu {{Code|(błąd)}}. * {{Code|i}} - numer zmiennej nazwy przestrzeni nazw. Funkcja wykorzystuje {{Code|{{sr|#p.Nazwa_przestrzeni_nazw(frame,...)|p=Pudełko/Pomocne}}}} do wyznaczania ogólnego nazwy przestrzeni nazw dla pozycji bazowej i numerkowej, tzn. dla pozycji: jeden, dwa, trzy,..., itd, i ich ogólnej. Parametry ramki tablicy transportu dziecka: * {{Code|nazwa przestrzeni nazw}}, {{Code|nazwa przestrzeni nazw 1}}, {{Code|nazwa przestrzeni nazw 2}}, {{Code|nazwa przestrzeni nazw 3}},..., {{Code|nazwa przestrzeni nazw i}} - nazwy przestrzeni nazw dla pozycji bazowej, numerkowej i ogólnej, * {{Code|typ jednostki}}, {{Code|typ jednostki 1}}, {{Code|typ jednostki 2}}, {{Code|typ jednostki 3}},..., {{Code|typ jednostki i}} - typy jednostek, którym odpowiadają pewne przestrzenie przedmiotowe, dla pozycji bazowej, numerkowej i ogólnej, ** {{Code|dyskusja typu jednostki}}, {{Code|dyskusja typu jednostki 1}}, {{Code|dyskusja typ jednostki 2}}, {{Code|dyskusja typ jednostki 3}},..., {{Code|dyskusja typ jednostki i}} - czy dany typ jednostki ma przedstawiać, jeśli niepusta, przestrzeń dyskusji dla pozycji bazowej, numerkowej i ogólnej, * {{Code|numer jednostki}} - jak parametr {{Code|i}} nie został ustawiony, to wtedy liczy się ta zmienna. Parametr ramki tablicy transportu rodzica szablonu: * {{Code|nazwa przestrzeni nazw}}, {{Code|nazwa przestrzeni nazw 1}}, {{Code|nazwa przestrzeni nazw 2}}, {{Code|nazwa przestrzeni nazw 3}},..., {{Code|nazwa przestrzeni nazw i}} - nazwy przestrzeni nazw dla pozycji bazowej oraz zwykłej i ogólnej numerkowej, * {{Code|typ jednostki}}, {{Code|typ jednostki 1}}, {{Code|typ jednostki 2}}, {{Code|typ jednostki 3}},..., {{Code|typ jednostki i}} - typy jednostek, którym odpowiadają pewne przestrzenie przedmiotowe, dla pozycji bazowej, numerkowej i ogólnej, ** {{Code|dyskusja typu jednostki}}, {{Code|dyskusja typu jednostki 1}}, {{Code|dyskusja typ jednostki 2}}, {{Code|dyskusja typ jednostki 3}},..., {{Code|dyskusja typ jednostki i}} - czy dany typ jednostki ma przedstawiać, jeśli niepusta, przestrzeń dyskusji dla pozycji bazowej, numerkowej i ogólnej. Przykłady: <syntaxhighlight lang="mediawiki"> {{Nazwa szablonu|nazwa przestrzeni nazw=Wikibooks|nazwa przestrzeni nazw 2=Szablon|nazwa przestrzeni nazw i=Moduł}} </syntaxhighlight> W dziecku powiedzmy jest wywołanie, i szukamy nazwy przestrzeni nazw o numerze dwa, która nie została podana, ale istnieje za to jej wersji ogólna {{Code|nazwa przestrzeni nazw i}} i domyślna {{Code|nazwa przestrzeni nazw}}: <syntaxhighlight lang="mediawiki"> {{#invoke:Pudełko|Nazwa przestrzeni nazw dyskusji|numer jednostki=1}} </syntaxhighlight> Na podstawie powyższego przykładu otrzymamy wynik o schemacie, nie wyniku, bo tam nie ma zmiennej {{Code|nazwa przestrzeni nazw 1}}, ale jest {{Code|nazwa przestrzeni nazw i}}: <syntaxhighlight lang="mediawiki"> <!-- Ale nie "nazwa przestrzeni nazw", bo jej nie ma, ale za to istnieje "nazwa przestrzeni nazw i"; --> <!-- nazwa przestrzeni nazw 2=nazwa przestrzeni nazw i=Moduł; --> <!-- Czyli wynik: --> Dyskusja modułu <!-- Widzimy, że wygenerowała się nazwa przestrzeni nazw, którą jest przestrzeń dyskusji przestrzeni programowej przestrzeni przedmiotowej "Moduł", którą również jest "Szablon" jego przestrzeni dyskusji "Dyskusja szablonu", a dla ich przestrzeni przedmiotowej, zamiast dyskusji, to przekształca się na dyskusji jej odpowiadającą; --> </syntaxhighlight> Nie jest brana w tym powyższym przykładzie zmienna {{Code|nazwa przestrzeni nazw}}, bo jej nie ma, ale za to jest {{Code|nazwa przestrzeni nazw i}}, bo ona występuje jako parametr domyślny ogólny dla parametrów numerkowych. Przykłady w wikikodzie: * {{Code|{{m|Pudełko|Nazwa przestrzeni nazw dyskusji|numer jednostki{{=}}2}}}} → {{Tt|{{#invoke:Pudełko|Nazwa przestrzeni nazw dyskusji|numer jednostki=2}}}} * {{Code|{{m|Pudełko|Nazwa przestrzeni nazw dyskusji|Szablon|nazwa przestrzeni nazw i{{=}}Moja przestrzeń|numer jednostki{{=}}2}}}} → {{Tt|{{#invoke:Pudełko|Nazwa przestrzeni nazw dyskusji|Szablon|nazwa przestrzeni nazw i=Moja przestrzeń|numer jednostki=2}}}} * {{Code|{{m|Pudełko|Nazwa przestrzeni nazw dyskusji|nazwa przestrzeni nazw 2{{=}}Szablon|numer jednostki{{=}}2}}}} → {{Tt|{{#invoke:Pudełko|Nazwa przestrzeni nazw dyskusji|nazwa przestrzeni nazw 2=Szablon|numer jednostki=2}}}} * {{Code|{{m|Pudełko|Nazwa przestrzeni nazw dyskusji|nazwa przestrzeni nazw 2{{=}}Szablon|numer jednostki{{=}}2}}}} → {{Tt|{{#invoke:Pudełko|Nazwa przestrzeni nazw dyskusji|nazwa przestrzeni nazw i=Szablon|numer jednostki=2}}}} * {{Code|{{m|Pudełko|Nazwa przestrzeni nazw dyskusji|nazwa przestrzeni nazw{{=}}Szablon|numer jednostki{{=}}2}}}} → {{Tt|{{#invoke:Pudełko|Nazwa przestrzeni nazw dyskusji|nazwa przestrzeni nazw=Szablon|numer jednostki=2}}}} Powyżej dla przykładu podano parametry nie w rodzicu w szablonie, tylko w dziecku, jeśli chodzi o parametry nazw przestrzeni nazw, ale ich się za to nie powinno podawać w tych ramach, tylko w szablonach, w których wywoływane są te ramki pudełek {{Code|{{m|Pudełko}}}}, ale tak tutaj tak zrobiono by było najłatwiej sprawdzić działanie tego typu funkcji. Analogicznie możemy podawać parametry typu jednostki, np.: wywołaniu modułowym {{Code|{{m|Pudełko|Nazwa przestrzeni nazw dyskusji|typ jednostki 2{{=}}strona szablonu|numer jednostki{{=}}2}}}}, ale o tym więcej w rozdziałach {{Code|{{sr|# p["Typ jednostki"](frame,i)|p=Pudełko}}}}, {{Code|{{sr|#p["Typ jednostki 2"](frame,i)|p=Pudełko}}}}, {{Code|{{sr|#p["Typ jednostki 3"](frame,i)|p=Pudełko}}}} itp. w „{{sr|#Funkcje typu jednostki|p=Pudełko}}”, ale wtedy nazwa przestrzeni nazw reprezentowana przez {{Parametr|typ jednostki 2|strona szablonu}}, jest zamieniana na nazwę przestrzeni nazw dyskusji. Parametr dyskusji typu jednostki bazowy lub dla danego numerka ogólny, czy szczegółowy, nie gra roli. Również parametry typu jednostki nie powinno się podawać w dziecku w ramce, tylko w rodzicu w szablonie jako parametry, w którym ta ramka jest wywoływana, ale tutaj podano jedynie dla przykładu, jak najłatwiej sprawdzić działanie tych parametrów tej funkcji. Najpierw w funkcji nagłówku brane są parametry nazw przestrzeni nazw, a jeżeli ich nie ma, to parametry typu jednostki, a jeżeli nie ma, to generowane są nazwy na podstawie aktualnego modułu. == Funkcje nazw przestrzeni nazw drugiej wersji == === {{Code|p["Nazwa przestrzeni nazw 2"](frame,...)}} === Funkcja pisze nazwę przestrzeni nazw, niezależnie, czy to jest przedmiotowa, czy dyskusji, według, i nie zawsze tylko, podanej w zmiennej {{Code|nazwa przestrzeni nazw}} dla pozycja bazowej w podanych parametrach szablonu rodzicu ramki dziecka, lub dla innej pozycji należy parametr podawać w formie {{Code|nazwa przestrzeni nazw 1}}, {{Code|nazwa przestrzeni nazw 2}}, {{Code|nazwa przestrzeni nazw 3}},..., lub te parametry można podać w postaci ogólnej {{Code|nazwa przestrzeni nazw i}}. W tej funkcji trzeba też podawać parametry nazwy jednostek {{Code|nazwa jednostki}}, {{Code|nazwa jednostki 1}}, {{Code|nazwa jednostki 2}}, {{Code|nazwa jednostki 3}},... Parametry podaje się w parametrach rodzica wywołania tej funkcji {{Code|{{m|Pudełko|Nazwa przestrzeni nazw 2}}}} (ale ich nie trzeba podawać w dziecku, ale można) i w parametrach dziecka, jeśli chodzi o zmienną {{Code|numer jednostki}}, czyli np.: {{Code|{{m|Pudełko|Nazwa przestrzeni nazw 2|numer jednostki{{=}}<jakaś liczba całkowita dodatnia>}}}}. Te parametry przestrzenne zamiast w rodzicu w szablonie można podać w ramce dziecka, wtedy parametry dziecka mają pierwszeństwo. Przestrzeń nazw z parametrów nazw przestrzennych może odpowiadać wartości przestrzeni głównej, to wtedy odpowiednia przestrzeń nazw z parametru nazwy jednostki się liczy w tej funkcji, wtedy jest liczona nazwa przestrzeni nazw z tego parametru. Gdy parametry przestrzenne lub typ jednostki w drugim podejściu nie wskazują na przestrzeń główną, to wtedy działanie tej funkcji jest podobne do {{Code|{{sr|#p["Nazwa przestrzeni nazw"](frame,...)|p=Pudełko}}}}. Definicja skrótowa funkcji: <syntaxhighlight lang="lua"> p["Nazwa przestrzeni nazw 2"]=function(frame,czy_uwzglednic_alternatywna_nazwe,i)...end; </syntaxhighlight> Wtedy ciało funkcji tej, czyli jego definicja w środku, jest: <syntaxhighlight lang="lua"> local pudelko_pomocne_modul=require("Module:Pudełko/Pomocne"); -- Liczy nazwę przestrzeni nazw, jeżeli z parametrów przestrzennych przestrzeń wskazuje na główną, to wtedy jest liczona przestrzeń nazw z nazwy jednostki; return pudelko_pomocne_modul.Nazwa_przestrzeni_nazw_2(frame,czy_uwzglednic_alternatywna_nazwe,i) </syntaxhighlight> Parametry funkcji: * {{Code|frame}} - tablica ramki tablicy transportu, * {{Code|czy_uwzglednic_alternatywna_nazwe}} - czy ma uwzględniać nazwę przestrzeni nazw domyślną szablonu, dostępne wartości: {{Code|false}}, w której nazwa domyślna nie jest uwzględniana wtedy, oraz {{Code|nil}} i {{Code|true}}, które oznaczają to samo, w tym jeżeli ona jest uwzględniana, wtedy jest brany parametr pierwszy dziecka, który musi istnieć przy takiej wartości tego parametru, tzn. {{Code|{{m|Pudełko|Nazwa przestrzeni nazw 2|Szablon}}}}, a nazwa uzyskana nazwy przestrzeni nazw jest w takim przypadku błędna, a jeżeli nazwa domyślna jest błędna, czyli {{Code|{{m|Pudełko|Nazwa przestrzeni nazw 2|Moja przestrzeń}}}}, wtedy funkcja zwraca stan błędu {{Code|(błąd)}}. * {{Code|i}} - numer zmiennej nazwy przestrzeni nazw. Funkcja wykorzystuje {{Code|{{sr|#p.Nazwa_przestrzeni_nazw_2(frame,...)|p=Pudełko/Pomocne}}}} do wyznaczania ogólnego nazwy przestrzeni nazw dla pozycji bazowej i numerkowej, tzn. dla pozycji: jeden, dwa, trzy,..., itd, i ich ogólnej. Parametry ramki tablicy transportu dziecka: * {{Code|nazwa przestrzeni nazw}}, {{Code|nazwa przestrzeni nazw 1}}, {{Code|nazwa przestrzeni nazw 2}}, {{Code|nazwa przestrzeni nazw 3}},..., {{Code|nazwa przestrzeni nazw i}} - nazwy przestrzeni nazw dla pozycji bazowej, numerkowej i ogólnej, * {{Code|nazwa jednostki}}, {{Code|nazwa jednostki 1}}, {{Code|nazwa jednostki 2}}, {{Code|nazwa jednostki 3}},... - nazwy jednostek dla pozycji bazowej i numerkowej, * {{Code|typ jednostki}}, {{Code|typ jednostki 1}}, {{Code|typ jednostki 2}}, {{Code|typ jednostki 3}},..., {{Code|typ jednostki i}} - typy jednostek, którym odpowiadają pewne przestrzenie przedmiotowe, dla pozycji bazowej, numerkowej i ogólnej, ** {{Code|dyskusja typu jednostki}}, {{Code|dyskusja typu jednostki 1}}, {{Code|dyskusja typ jednostki 2}}, {{Code|dyskusja typ jednostki 3}},..., {{Code|dyskusja typ jednostki i}} - czy dany typ jednostki ma przedstawiać, jeśli niepusta, przestrzeń dyskusji dla pozycji bazowej, numerkowej i ogólnej, * {{Code|numer jednostki}} - jak parametr {{Code|i}} nie został ustawiony, to wtedy liczy się ta zmienna. Parametr ramki tablicy transportu rodzica szablonu: * {{Code|nazwa przestrzeni nazw}}, {{Code|nazwa przestrzeni nazw 1}}, {{Code|nazwa przestrzeni nazw 2}}, {{Code|nazwa przestrzeni nazw 3}},..., {{Code|nazwa przestrzeni nazw i}} - nazwy przestrzeni nazw dla pozycji bazowej oraz zwykłej i ogólnej numerkowej, * {{Code|nazwa jednostki}}, {{Code|nazwa jednostki 1}}, {{Code|nazwa jednostki 2}}, {{Code|nazwa jednostki 3}},... - nazwy jednostek dla pozycji bazowej i numerkowej, * {{Code|typ jednostki}}, {{Code|typ jednostki 1}}, {{Code|typ jednostki 2}}, {{Code|typ jednostki 3}},..., {{Code|typ jednostki i}} - typy jednostek, którym odpowiadają pewne przestrzenie przedmiotowe, dla pozycji bazowej, numerkowej i ogólnej, ** {{Code|dyskusja typu jednostki}}, {{Code|dyskusja typu jednostki 1}}, {{Code|dyskusja typ jednostki 2}}, {{Code|dyskusja typ jednostki 3}},..., {{Code|dyskusja typ jednostki i}} - czy dany typ jednostki ma przedstawiać, jeśli niepusta, przestrzeń dyskusji dla pozycji bazowej, numerkowej i ogólnej. Przykłady: <syntaxhighlight lang="mediawiki"> {{Nazwa szablonu|nazwa przestrzeni nazw=Wikibooks|nazwa przestrzeni nazw 1=Szablon|nazwa przestrzeni nazw i=|nazwa jednostki 2=Wikibooks:Strona}} </syntaxhighlight> W dziecku powiedzmy jest wywołanie, i szukamy nazwy przestrzeni nazw o numerze dwa, która została podana, ale istnieje za to jej wersji ogólna {{Code|nazwa przestrzeni nazw i}} i domyślna {{Code|nazwa przestrzeni nazw}}, ale wtedy dla tego numerkowego liczy się to ogólne z {{Code| i}}, a ponieważ ta nazwa jest pusta, więc będziemy liczyli nazwę przestrzeni nazw z {{Code|nazwa jednostki 2}}: <syntaxhighlight lang="mediawiki"> {{#invoke:Pudełko|Nazwa przestrzeni nazw 2|numer jednostki=2}} </syntaxhighlight> Na podstawie powyższego przykładu otrzymamy wynik o schemacie, nie wyniku, bo tam nie ma zmiennej {{Code|nazwa przestrzeni nazw 1}}, ale jest {{Code|nazwa przestrzeni nazw i}}: <syntaxhighlight lang="mediawiki"> <!-- Ale nie "nazwa przestrzeni nazw 2", bo jej nie ma, ale za to istnieje "nazwa przestrzeni nazw i"; --> <!-- nazwa przestrzeni nazw 2=nazwa przestrzeni nazw i="", a nazwa jednostki 2="Wikibooks:Strona"; --> <!-- Czyli wynik: --> Wikibooks <!-- Widzimy, że wygenerowała się nazwa przestrzeni nazw, którą jest przestrzeń nieprogramowa, ale projektu, wychodząca z nazwy jednostek w tym przypadku z "nazwa jednostki 2"; --> </syntaxhighlight> Nie jest brana w tym powyższym przykładzie zmienna {{Code|nazwa przestrzeni nazw}}, bo jej nie ma, ale za to jest {{Code|nazwa przestrzeni nazw i}}, bo ona występuje jako parametr domyślny ogólny dla parametrów numerkowych. Tytaj jest używana jest zmienna {{Code|nazwa jednostki 2}} do wygenerowania ostatecznego wyniku, bo jak można zauważyć, parametry przestrzenne wskazują na przestrzeń główną, a nazwy jednostek już nie. Przykłady w wikikodzie: * {{Code|{{m|Pudełko|Nazwa przestrzeni nazw 2|numer jednostki{{=}}2}}}} → {{Tt|{{#invoke:Pudełko|Nazwa przestrzeni nazw 2|numer jednostki=2}}}} * {{Code|{{m|Pudełko|Nazwa przestrzeni nazw 2|Szablon|nazwa przestrzeni nazw i{{=}}Moja przestrzeń|numer jednostki{{=}}2}}}} → {{Tt|{{#invoke:Pudełko|Nazwa przestrzeni nazw 2|Szablon|nazwa przestrzeni nazw i=Moja przestrzeń|numer jednostki=2}}}} * {{Code|{{m|Pudełko|Nazwa przestrzeni nazw 2|nazwa przestrzeni nazw 2{{=}}|nazwa jednostki 2{{=}}Szablon:Strona|numer jednostki{{=}}2}}}} → {{Tt|{{#invoke:Pudełko|Nazwa przestrzeni nazw 2|nazwa przestrzeni nazw 2=|nazwa jednostki 2=Szablon:Strona|numer jednostki=2}}}} * {{Code|{{m|Pudełko|Nazwa przestrzeni nazw 2|nazwa przestrzeni nazw i{{=}}|nazwa jednostki 2{{=}}Szablon:Strona|numer jednostki{{=}}2}}}} → {{Tt|{{#invoke:Pudełko|Nazwa przestrzeni nazw 2|nazwa przestrzeni nazw i=|nazwa jednostki 2=Szablon:Strona|numer jednostki=2}}}} * {{Code|{{m|Pudełko|Nazwa przestrzeni nazw 2|Szablon|nazwa przestrzeni nazw{{=}}|nazwa jednostki 2{{=}}Wikibooks:Strona|numer jednostki{{=}}2}}}} → {{Tt|{{#invoke:Pudełko|Nazwa przestrzeni nazw 2|Szablon|nazwa przestrzeni nazw=|nazwa jednostki 2=Wikibooks:Strona|numer jednostki=2}}}} Powyżej dla przykładu podano parametry nie w rodzicu w szablonie, tylko w dziecku, jeśli chodzi o parametry nazw przestrzeni nazw i nazw jednostek, ale ich się za to nie powinno podawać w tych ramach, tylko w szablonach, w których wywoływane są te ramki pudełek {{Code|{{m|Pudełko}}}}, ale tak tutaj tak zrobiono by było najłatwiej sprawdzić działanie tego typu funkcji. Analogicznie możemy podawać parametry typu jednostki, np.: wywołaniu modułowym {{Code|{{m|Pudełko|Nazwa przestrzeni nazw 2|typ jednostki 2{{=}}Podręcznik|nazwa jednostki 2{{=}}Szablon:Strona|umer jednostki{{=}}2}}}} (ale wtedy jest brana przestrzeń nazw z nazwy jednostki), ale o tym więcej w rozdziałach {{Code|{{sr|# p["Typ jednostki"](frame,i)|p=Pudełko}}}}, {{Code|{{sr|#p["Typ jednostki 2"](frame,i)|p=Pudełko}}}}, {{Code|{{sr|#p["Typ jednostki 3"](frame,i)|p=Pudełko}}}} itp. w „{{sr|#Funkcje typu jednostki|p=Pudełko}}”, on definiuje przestrzenie przedmiotowe, ale można użyć parametru dyskusji typu jednostki z wartością niepustą, wtedy wyświetli się nazwa przestrzeni nazw dyskusji. Jeżeli typ jednostki wskazuje na przestrzeń nazw główną, wtedy się liczą parametry nazw jednostek. Również parametry typu jednostki nie powinno się podawać w dziecku w ramce, tylko w rodzicu w szablonie jako parametry, w którym ta ramka jest wywoływana, ale tutaj podano jedynie dla przykładu, jak najłatwiej sprawdzić działanie tych parametrów tej funkcji. Najpierw w funkcji nagłówku brane są parametry nazw przestrzeni nazw, a jeżeli ich nie ma, to parametry typu jednostki, a jeżeli nie ma lub parametry przestrzenne wskazują na przestrzeń główną, i nie ma nazwy jednostki, to generowane są nazwy tej funkcji na podstawie aktualnej strony. === {{Code|p["Nazwa przedmiotowej przestrzeni nazw 2"](frame,...)}} === === {{Code|p["Nazwa przestrzeni nazw dyskusji 2"](frame,...)}} === == Funkcje pełnych nazw jednostki == === {{Code|p["Pełna nazwa dyskusji jednostki"](frame,i)}} === === {{Code|p["Pełna nazwa przedmiotowa jednostki"](frame,i)}} === === {{Code|p["Pełna nazwa jednostki"](frame,i)}} === == Funkcje pełnych nazw jednostki drugiej wersji == === {{Code|p["Pełna nazwa dyskusji jednostki 2"](frame,i)}} === === {{Code|p["Pełna nazwa przedmiotowa jednostki 2"](frame,i)}} === === {{Code|p["Pełna nazwa jednostki 2"](frame,i)}} === == Funkcje pełnych nazw jednostki trzeciej wersji == === {{Code|p["Pełna nazwa dyskusji jednostki 3"](frame,i)}} === === {{Code|p["Pełna nazwa przedmiotowa jednostki 3"](frame,i)}} === === {{Code|p["Pełna nazwa jednostki 3"](frame,i)}} === == Funkcje nazw jednostki == === {{Code|p["Nazwa jednostki"](frame,i)}} === == Funkcje nazw jednostki drugiej wersji == === {{Code|p["Nazwa jednostki 2"](frame,i)}} === === {{Code|p["Nazwa przedmiotowa jednostki 2"](frame,i)}} === === {{Code|p["Nazwa dyskusji jednostki 2"](frame,i)}} === == Funkcje nazw przestrzeni nazw trzeciej wersji == === {{Code|p["Nazwa przestrzeni nazw 3"](frame,i)}} === === {{Code|p["Nazwa przedmiotowej przestrzeni nazw 3"](frame,i)}} === === {{Code|p["Nazwa przestrzeni nazw dyskusji 3"](frame,i)}} === == Funkcje nazw jednostki trzeciej wersji == === {{Code|p["Nazwa jednostki 3"](frame,i)}} === === {{Code|p["Nazwa przedmiotowa jednostki 3"](frame,i)}} === === {{Code|p["Nazwa dyskusji jednostki 3"](frame,i)}} === == Funkcje typu jednostki == === {{Code|p["Typ jednostki"](frame,i)}} === === {{Code|p["Typ jednostki 2"](frame,i)}} === === {{Code|p["Typ jednostki 3"](frame,i)}} === === Funkcje typu jednostki przedmiotowe === ==== {{Code|p["Przedmiotowy typ jednostki"](frame,i)}} ==== ==== {{Code|p["Przedmiotowy typ jednostki 2"](frame,i)}} ==== ==== {{Code|p["Przedmiotowy typ jednostki 3"](frame,i)}} ==== === Fukcje typu jednostki dyskusji === ==== {{Code|p["Dyskusyjny typ jednostki"](frame,i)}} ==== ==== {{Code|p["Dyskusyjny typ jednostki 2"](frame,i)}}} ==== ==== {{Code|p["Dyskusyjny typ jednostki 3"](frame,i)}} ==== == Funkcje chech pudełka == === {{Code|p["Cecha pudełka"](frame)}} === === {{Code|p["Przedmiotowa cecha pudełka"](frame)}} === === {{Code|p["Dyskusyjna cecha pudełka"](frame)}} === == Fukcje ogólnego pudełka == === {{Code|p["Ogólne pudełko"](frame)}} === == Funkcje ogólne == === {{Code|p["Tekst pudełka"](frame)}} === == Funkcje błędów pudełka == === {{Code|p["Błędy pudełka"](frame)}} === === {{Code|p["Przedmiotowe błędy pudełka"](frame)}} === === {{Code|p["Dyskusyjne błędy pudełka"](frame)}} === == Funkcje nazw stron == === {{Code|p["Nazwa strony głównej projektu"](frame,i)}} === === {{Code|p["Nazwa strony głównej dla dzieci projektu"](frame,i)}} === == Funkcje kodów == === {{Code|p["Kod języka"](frame,i)}} === === {{Code|p["Kod projektu"](frame,i)}} === === {{Code|p["Klucz projektu"](frame,i)}} === == Funkcje wiki == === {{Code|p["Inny niż język bieżący wiki"](frame)}} === === {{Code|p["Inne niż lokalne wiki"](frame)}} === === {{Code|p["Inne niż bieżące wiki"](frame)}} === == Funkcje typów parametrów, czy podane je == === {{Code|p["Podano parametry nienazwane"](frame)}} === === {{Code|p["Podano parametry numerowane"](frame)}} === === {{Code|p["Podano parametry nazwane"](frame)}} === == Funkcje kodów tego projektu == === {{Code|p["Kod projektu tego projektu"](frame)}} === === {{Code|p["Kod języka tego projektu"](frame)}} === === {{Code|p["Klucz projektu tego projektu"](frame)}} === == Funkcje stron == === {{Code|p["Strona główna tego projektu"](frame)}} === === {{Code|p["Strona główna dla dzieci tego projektu"](frame)}} === == Funkcje nazw stron drugiej wersji == === {{Code|p["Nazwa strony głównej dla dzieci projektu 2"](frame)}} === === {{Code| p["Nazwa strony głównej projektu 2"](frame)}} === {{BrClear}} <noinclude><!-- -->{{ProstaStronaKoniec}}<!-- -->{{Kategoria|Opisy funkcji, w Lua w Scribunto, w modułach}}<!-- --></noinclude> q2zqrcw5fhqemc7bsrh5o7mu8gic6w5 540386 540385 2026-04-23T13:40:31Z Persino 2851 540386 wikitext text/x-wiki <noinclude>{{ProstaStronaStart | nagłówek = {{Podrozdział|{{ld2|Pudełko}}|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 pudelko_modul=require("Module:Pudełko"); </syntaxhighlight> dzięki, któremu można wypisywać funkcje należącego do niego. Posługuje się na parametrach pudełkowych {{Parametr|nazwa przestrzeni nazw}} (czy też bez numerka {{Parametr|nazwa przestrzeni nazw i}} dla tego numerowanego) lub te z numerkiem po jednej spacji w nich (ale nie dla tego z końcówką {{Code| i}}) mogą zostać użyte jako parametry szablonu. Moduł {{Code|{{ld2|Pudełko}}}} przedstawia funkcje nazw w oparciu o funkcje nazw {{Code|{{ld2|Nazwy}}}}, generuje on nazwy za pomocą parametrów pudełkowych podanych poniżej. Parametr {{Parametr|nazwa jednostki}} (lub parametr {{Parametr|cel}} dla numerka tego pierwszego, tego alternatywnego), lub te z numerkiem po jednej spacji w nazwie parametru, albo numerowane numerkami {{Code|1}}, {{Code|2}},..., mogą zostać użyte jako parametry szablonu. Parametry określające rodzaj jednostki {{Parametr|typ jednostki}} z {{Parametr|dyskusja typu jednostki}}, itp. w wersjach z numerkiem po jednej spacji w nich mogą zostać użyte jako parametry szablonu. A te tymi numerowanymi liczbami naturalnymi {{Tt|nazwy jednostki}} od jedynki wzwyż poprzez szablon, w którym są one użyte, one też mogą być użyte z dwukropkiem, te numerowane, na samym początku nazwy, wtedy one są traktowane jako pełne nazwy strony, i wtedy one nie zostaną z interpretowane, że do nich trzeba użyć parametr odpowiedni z nazwą przetrzeni nazw z tego numerowanego, czy ogólny, aby utworzyć znów inną pełną nazwę strony dla tego numerka. Zestawienie: * {{Code|nazwa przestrzeni nazw}} i {{Code|nazwa przestrzeni nazw i}} (ogólna nazwa przestrzeni nazw dla wszystkich numerków, i tych numerowanych jednostek) - i to pierwsze z numerkiem, tzn. {{Code|nazwa przestrzeni nazw 1}}, {{Code|nazwa przestrzeni nazw 2}}, ..., * {{Code|nazwa jednostki}} - i te z numerkiem: {{Code|nazwa jednostki 1}}, {{Code|nazwa jednostki 2}}, ..., lub gdy jest zamiast tego parametrem numerowany, {{Code|1}}, {{Code|2}},..., który dla tego pierwszego może być uznany jako: {{Code|cel}} {{=}} {{Code|1}}, * {{Code|typ jednostki}} (parametr bazowy) i {{Code|typ jednostki i}} (parametr domyślny numerkowy) - i te z numerkiem: {{Code|typ jednostki 1}}, {{Code|typ jednostki 2}}, ..., tzn. gdy chcemy określić z jakim typem jednostki mamy do czynienia w zależności do jakiej przestrzeni nazw należy, a w danej, czy jest on np. programowy, czy tylko jest opisem, jak to bywa w szablonach {{Np|Template|link=tak}}, podobnie jest w przypadku {{Np|Module|link=tak}}, czy jak jest w innych przestrzeniach nazw, ** {{Code|dyskusja typu jednostki}} (parametr bazowy) i {{Code|dyskusja typu jednostki i}} (parametr domyślny numerkowy) - i te z numerkiem: {{Code|dyskusja typu jednostki 1}}, {{Code|dyskusja typu jednostki 2}}, ..., gdy chcemy określić wartością niepustą,że chodzi tutaj o typ jednostki. == {{Code|p.CzyNiepoprawnaNazwa(nazwa_jednostki)}} == Funkcja sprawdzajaca, czy jest poprawnie podana nazwa jednostki, czy ma poprawną nazwę. Znakami tymi, z których nie powinna składać się nazwa jest {{Code|<nowiki>{}<>|[]#\n</nowiki>}} i dodatkowo znak {{Code|&#127;}} (kod {{Code|{{Nowiki|&#127;}}}}). Też nie może składać się z trzech znaków tyldy, tzn. {{Code|<nowiki>~~~</nowiki>}}. Również w swojej budowie nie może składać się ze kodów {{Strong|HTML}} literowych o wzorze {{Code|{{Nowiki|&(%a+);}}}}. Natomiast może składać się z {{Code|{{Nowiki|&#(%d+);}}}} i {{Code|{{Nowiki|&#x(%x+);}}}}, ale w pierw te kody muszą być zamienione na normalne znaki. Skrótowa definicja funkcji: <syntaxhighlight lang="lua"> function p.CzyNiepoprawnaNazwa(nazwa_jednostki)...end; </syntaxhighlight> Wtedy ciało funkcji tej, czyli jego definicja w środku, jest: <syntaxhighlight lang="lua"> -- Moduł: "Moduł:Html/dane", służy do ładowania znaku o kodzie HTML "&#127;"; local html_dane_modul=mw.loadData("Module:Html/dane"); return mw.ustring.match(nazwa_jednostki,"[{}<>|%[%]#\n"..html_dane_modul.znak_127.."]+") or mw.ustring.match(nazwa_jednostki,"~~~") or mw.ustring.match(nazwa_jednostki,"&(%a+);"); </syntaxhighlight> Parametry: * {{Code|nazwa_jednostki}} - nazwa jednostki do sprawdzenia. Przykłady: <syntaxhighlight lang="lua"> local pudelko_modul=require("Module:Pudełko"); -- Podana przykładowa niepoprawna nazwa jedostki local nazwa_jednostki="Nazwa pliku [[Nazwa linku w pliku]]"; -- Fukcja zwróci wartość: local czy_poprawna_nazwa=true; local czy_poprawna_nazwa=pudelko_modul.CzyNiepoprawnaNazwa(nazwa_jednostki); </syntaxhighlight> == Funkcje nazw przestrzeni nazw == === {{Code|p["Nazwa przestrzeni nazw"](frame,...)}} === Funkcja pisze nazwę przestrzeni nazw, niezależnie, czy to jest przedmiotowa, czy dyskusji, według podanej w zmiennej {{Code|nazwa przestrzeni nazw}} dla pozycja bazowej w podanych parametrach szablonu rodzicu ramki dziecka, lub dla innej pozycji należy parametr podawać w formie {{Code|nazwa przestrzeni nazw 1}}, {{Code|nazwa przestrzeni nazw 2}}, {{Code|nazwa przestrzeni nazw 3}},..., lub te parametry można podać w postaci ogólnej {{Code|nazwa przestrzeni nazw i}}. Parametry podaje się w parametrach rodzica wywołania tej funkcji {{Code|{{m|Pudełko|Nazwa przestrzeni nazw}}}} (ale ich nie trzeba podawać w dziecku, ale można) i w parametrach dziecka, jeśli chodzi o zmienną {{Code|numer jednostki}}, czyli np.: {{Code|{{m|Pudełko|Nazwa przestrzeni nazw|numer jednostki{{=}}<jakaś liczba całkowita dodatnia>}}}}. Te parametry przestrzenne zamiast w rodzicu w szablonie można podać w ramce dziecka, wtedy parametry dziecka mają pierwszeństwo. Przestrzeń nazw z parametrów nazw przestrzennych może odpowiadać wartości przestrzeni głównej, to wtedy odpowiednia przestrzeń nazw z parametru nazwy jednostki się nie liczy w tej funkcji, aby się liczyła należy użyć funkcji {{Code|{{sr|#p["Nazwa przestrzeni nazw 2"](frame,...)|p=Pudełko}}}}. Definicja skrótowa funkcji: <syntaxhighlight lang="lua"> p["Nazwa przestrzeni nazw"]=function(frame,czy_uwzglednic_alternatywna_nazwe,i)...end; </syntaxhighlight> Wtedy ciało funkcji tej, czyli jego definicja w środku, jest: <syntaxhighlight lang="lua"> -- Jest liczony numer parametru nazwy przestrzeni nazw, domyslnie chodzi tu o numer bazowy parametrów przestrzennych; local numer_jednostki=i or frame.args["numer jednostki"]; local liczba_numer_jednostki=((numer_jednostki)and(tonumber(numer_jednostki))or 0); local pudelko_pomocne_modul=require("Module:Pudełko/Pomocne"); -- Liczy nazwę przestrzeni nazw na podstawie podanych parametrów; return pudelko_pomocne_modul.Nazwa_przestrzeni_nazw(frame,0, czy_uwzglednic_alternatywna_nazwe,liczba_numer_jednostki); </syntaxhighlight> Parametry funkcji: * {{Code|frame}} - tablica ramki tablicy transportu, * {{Code|czy_uwzglednic_alternatywna_nazwe}} - czy ma uwzględniać nazwę przestrzeni nazw domyślną szablonu, dostępne wartości: {{Code|false}}, w której nazwa domyślna nie jest uwzględniana wtedy, oraz {{Code|nil}} i {{Code|true}}, które oznaczają to samo, w tym jeżeli ona jest uwzględniana, wtedy jest brany parametr pierwszy dziecka, który musi istnieć przy takiej wartości tego parametru, tzn. {{Code|{{m|Pudełko|Nazwa przestrzeni nazw|Szablon}}}}, a nazwa uzyskana nazwy przestrzeni nazw jest w takim przypadku błędna, a jeżeli nazwa domyślna jest błędna, czyli {{Code|{{m|Pudełko|Nazwa przestrzeni nazw|Moja przestrzeń}}}}, wtedy funkcja zwraca stan błędu {{Code|(błąd)}}. * {{Code|i}} - numer zmiennej nazwy przestrzeni nazw. Funkcja wykorzystuje {{Code|{{sr|#p.Nazwa_przestrzeni_nazw(frame,...)|p=Pudełko/Pomocne}}}} do wyznaczania ogólnego nazwy przestrzeni nazw dla pozycji bazowej i numerkowej, tzn. dla pozycji: jeden, dwa, trzy,..., itd, i ich ogólnej. Parametr ramki tablicy transportu rodzica szablonu: * {{Code|nazwa przestrzeni nazw}}, {{Code|nazwa przestrzeni nazw 1}}, {{Code|nazwa przestrzeni nazw 2}}, {{Code|nazwa przestrzeni nazw 3}},..., {{Code|nazwa przestrzeni nazw i}} - nazwy przestrzeni nazw dla pozycji bazowej oraz zwykłej i ogólnej numerkowej, * {{Code|typ jednostki}}, {{Code|typ jednostki 1}}, {{Code|typ jednostki 2}}, {{Code|typ jednostki 3}},..., {{Code|typ jednostki i}} - typy jednostek, którym odpowiadają pewne przestrzenie przedmiotowe, dla pozycji bazowej, numerkowej i ogólnej, ** {{Code|dyskusja typu jednostki}}, {{Code|dyskusja typu jednostki 1}}, {{Code|dyskusja typ jednostki 2}}, {{Code|dyskusja typ jednostki 3}},..., {{Code|dyskusja typ jednostki i}} - czy dany typ jednostki ma przedstawiać, jeśli niepusta, przestrzeń dyskusji dla pozycji bazowej, numerkowej i ogólnej. Parametry ramki tablicy transportu dziecka: * Parametry dziecka są takie same jak rodzica dla funkcji pudełkowej plus tu wymienione, * {{Code|numer jednostki}} - jak parametr {{Code|i}} nie został ustawiony, to wtedy liczy się ta zmienna. Przykłady: <syntaxhighlight lang="mediawiki"> {{Nazwa szablonu|nazwa przestrzeni nazw=Wikibooks|nazwa przestrzeni nazw 2=Szablon|nazwa przestrzeni nazw i=Moduł}} </syntaxhighlight> W dziecku powiedzmy jest wywołanie, i szukamy nazwy przestrzeni nazw o numerze dwa, która nie została podana, ale istnieje za to jej wersji ogólna {{Code|nazwa przestrzeni nazw i}} i domyślna {{Code|nazwa przestrzeni nazw}}: <syntaxhighlight lang="mediawiki"> {{#invoke:Pudełko|Nazwa przestrzeni nazw|numer jednostki=1}} </syntaxhighlight> Na podstawie powyższego przykładu otrzymamy wynik o schemacie, nie wyniku, bo tam nie ma zmiennej {{Code|nazwa przestrzeni nazw 1}}, ale jest {{Code|nazwa przestrzeni nazw i}}: <syntaxhighlight lang="mediawiki"> <!-- Ale nie "nazwa przestrzeni nazw", bo jej nie ma, ale za to istnieje "nazwa przestrzeni nazw i"; --> <!-- nazwa przestrzeni nazw 2=nazwa przestrzeni nazw i=Moduł; --> <!-- Czyli wynik: --> Moduł <!-- Widzimy, że wygenerowała się nazwa przestrzeni nazw, którą jest przestrzeń programowa, którą również jest "Szablon"; --> </syntaxhighlight> Nie jest brana w tym powyższym przykładzie zmienna {{Code|nazwa przestrzeni nazw}}, bo jej nie ma, ale za to jest {{Code|nazwa przestrzeni nazw i}}, bo ona występuje jako parametr domyślny ogólny dla parametrów numerkowych. Przykłady w wikikodzie: * {{Code|{{m|Pudełko|Nazwa przestrzeni nazw|numer jednostki{{=}}2}}}} → {{Tt|{{#invoke:Pudełko|Nazwa przestrzeni nazw|numer jednostki=2}}}} * {{Code|{{m|Pudełko|Nazwa przestrzeni nazw|Szablon|nazwa przestrzeni nazw i{{=}}Moja przestrzeń|numer jednostki{{=}}2}}}} → {{Tt|{{#invoke:Pudełko|Nazwa przestrzeni nazw|Szablon|nazwa przestrzeni nazw i=Moja przestrzeń|numer jednostki=2}}}} * {{Code|{{m|Pudełko|Nazwa przestrzeni nazw|nazwa przestrzeni nazw 2{{=}}Szablon|numer jednostki{{=}}2}}}} → {{Tt|{{#invoke:Pudełko|Nazwa przestrzeni nazw|nazwa przestrzeni nazw 2=Szablon|numer jednostki=2}}}} * {{Code|{{m|Pudełko|Nazwa przestrzeni nazw|nazwa przestrzeni nazw 2{{=}}Szablon|numer jednostki{{=}}2}}}} → {{Tt|{{#invoke:Pudełko|Nazwa przestrzeni nazw|nazwa przestrzeni nazw i=Szablon|numer jednostki=2}}}} * {{Code|{{m|Pudełko|Nazwa przestrzeni nazw|nazwa przestrzeni nazw{{=}}Szablon|numer jednostki{{=}}2}}}} → {{Tt|{{#invoke:Pudełko|Nazwa przestrzeni nazw|nazwa przestrzeni nazw=Szablon|numer jednostki=2}}}} Powyżej dla przykładu podano parametry nie w rodzicu w szablonie, tylko w dziecku, jeśli chodzi o parametry nazw przestrzeni nazw, ale ich się za to nie powinno podawać w tych ramach, tylko w szablonach, w których wywoływane są te ramki pudełek {{Code|{{m|Pudełko}}}}, ale tak tutaj tak zrobiono by było najłatwiej sprawdzić działanie tego typu funkcji. Analogicznie możemy podawać parametry typu jednostki, np.: wywołaniu modułowym {{Code|{{m|Pudełko|Nazwa przestrzeni nazw|typ jednostki 2{{=}}strona szablonu|numer jednostki{{=}}2}}}}, ale o tym więcej w rozdziałach {{Code|{{sr|# p["Typ jednostki"](frame,i)|p=Pudełko}}}}, {{Code|{{sr|#p["Typ jednostki 2"](frame,i)|p=Pudełko}}}}, {{Code|{{sr|#p["Typ jednostki 3"](frame,i)|p=Pudełko}}}} itp. w „{{sr|#Funkcje typu jednostki|p=Pudełko}}”, on definiuje przestrzenie przedmiotowe, ale można użyć parametru dyskusji typu jednostki z wartością niepustą, wtedy wyświetli się nazwa przestrzeni nazw dyskusji. Również parametry typu jednostki nie powinno się podawać w dziecku w ramce, tylko w rodzicu w szablonie jako parametry, w którym ta ramka jest wywoływana, ale tutaj podano jedynie dla przykładu, jak najłatwiej sprawdzić działanie tych parametrów tej funkcji. Najpierw w funkcji nagłówku brane są parametry nazw przestrzeni nazw, a jeżeli ich nie ma, to parametry typu jednostki, a jeżeli nie ma, to generowane są nazwy na podstawie aktualnego modułu. === {{Code|p["Nazwa przedmiotowej przestrzeni nazw"](frame,...)}} === Funkcja pisze przedmiotową nazwę przestrzeni nazw jakikolwiek nazwy przestrzeni nazw (tzn. nazwę przedmiotową nazwy przestrzenie nazw, czyli nie dyskusji, zamieniana jest na nią samą, czyli identyfikator przestrzeni się nie zmienia, a dyskusji, nie przedmiotową, przekształca się na przedmiotową jej odpowiadającą, czyli w tym przypadku identyfikator przestrzeni zmniejsza się o numer mniej), według podanej w zmiennej {{Code|nazwa przestrzeni nazw}} dla pozycja bazowej w podanych parametrach szablonu rodzicu ramki dziecka, lub dla innej pozycji należy parametr podawać w formie {{Code|nazwa przestrzeni nazw 1}}, {{Code|nazwa przestrzeni nazw 2}}, {{Code|nazwa przestrzeni nazw 3}},..., lub te parametry można podać w postaci ogólnej {{Code|nazwa przestrzeni nazw i}}. Parametry podaje się w parametrach rodzica wywołania tej funkcji {{Code|{{m|Pudełko|Nazwa przedmiotowej przestrzeni nazw}}}} (ale ich nie trzeba podawać w dziecku, ale można) i w parametrach dziecka, jeśli chodzi o zmienną {{Code|numer jednostki}}, czyli np.: {{Code|{{m|Pudełko|Nazwa przedmiotowej przestrzeni nazw|numer jednostki{{=}}<jakaś liczba całkowita dodatnia>}}}}. Te parametry przestrzenne zamiast w rodzicu w szablonie można podać w ramce dziecka, wtedy parametry dziecka mają pierwszeństwo. Parametry przestrzenne mogą mogą być podane w postaci przestrzeni przedmiotowej lub dyskusji, ale ta funkcja zawsze ją zamienia na przedmiotową. Przestrzeń nazw z parametrów nazw przestrzennych może odpowiadać wartości przestrzeni głównej, to wtedy odpowiednia przestrzeń nazw z parametru nazwy jednostki się nie liczy w tej funkcji, aby się liczyła należy użyć funkcji {{Code|{{sr|#p["Nazwa przedmiotowej przestrzeni nazw 2"](frame,...)|p=Pudełko}}}}. Definicja skrótowa funkcji: <syntaxhighlight lang="lua"> p["Nazwa przedmiotowej przestrzeni nazw"]=function(frame,czy_uwzglednic_alternatywna_nazwe,i)...end; </syntaxhighlight> Wtedy ciało funkcji tej, czyli jego definicja w środku, jest: <syntaxhighlight lang="lua"> -- Jest liczony numer parametru nazwy przestrzeni nazw, domyslnie chodzi tu o numer bazowy parametrów przestrzennych; local numer_jednostki=i or frame.args["numer jednostki"]; local liczba_numer_jednostki=((numer_jednostki)and(tonumber(numer_jednostki))or 0); local pudelko_pomocne_modul=require("Module:Pudełko/Pomocne"); -- Liczy nazwę przestrzeni nazw przedmiotową na podstawie podanych parametrów; return pudelko_pomocne_modul.Nazwa_przestrzeni_nazw(frame,1, czy_uwzglednic_alternatywna_nazwe,liczba_numer_jednostki); </syntaxhighlight> Parametry funkcji: * {{Code|frame}} - tablica ramki tablicy transportu, * {{Code|czy_uwzglednic_alternatywna_nazwe}} - czy ma uwzględniać nazwę przestrzeni nazw domyślną szablonu, dostępne wartości: {{Code|false}}, w której nazwa domyślna nie jest uwzględniana wtedy, oraz {{Code|nil}} i {{Code|true}}, które oznaczają to samo, w tym jeżeli ona jest uwzględniana, wtedy jest brany parametr pierwszy dziecka, który musi istnieć przy takiej wartości tego parametru, tzn. {{Code|{{m|Pudełko|Nazwa przedmiotowej przestrzeni nazw|Dyskusja szablonu}}}} - ta nazwa domyślna zostanie zamieniona na przedmiotową, a jak ona by była przedmiotowa, to żadnej zamiany by nie było, a nazwa uzyskana z nazwy przestrzeni nazw z parametrów przestrzennych jest w takim przypadku błędna, to w takim razie brany jest ten parametr, a jeżeli ta nazwa domyślna jest błędna, czyli {{Code|{{m|Pudełko|Nazwa przedmiotowej przestrzeni nazw|Moja przestrzeń}}}}, wtedy funkcja zwraca stan błędu {{Code|(błąd)}}. * {{Code|i}} - numer zmiennej nazwy przestrzeni nazw. Funkcja wykorzystuje {{Code|{{sr|#p.Nazwa_przestrzeni_nazw(frame,...)|p=Pudełko/Pomocne}}}} do wyznaczania ogólnego nazwy przestrzeni nazw dla pozycji bazowej i numerkowej, tzn. dla pozycji: jeden, dwa, trzy,..., itd, i ich ogólnej. Parametr ramki tablicy transportu rodzica szablonu: * {{Code|nazwa przestrzeni nazw}}, {{Code|nazwa przestrzeni nazw 1}}, {{Code|nazwa przestrzeni nazw 2}}, {{Code|nazwa przestrzeni nazw 3}},..., {{Code|nazwa przestrzeni nazw i}} - nazwy przestrzeni nazw dla pozycji bazowej oraz zwykłej i ogólnej numerkowej, * {{Code|typ jednostki}}, {{Code|typ jednostki 1}}, {{Code|typ jednostki 2}}, {{Code|typ jednostki 3}},..., {{Code|typ jednostki i}} - typy jednostek, którym odpowiadają pewne przestrzenie przedmiotowe, dla pozycji bazowej, numerkowej i ogólnej, ** {{Code|dyskusja typu jednostki}}, {{Code|dyskusja typu jednostki 1}}, {{Code|dyskusja typ jednostki 2}}, {{Code|dyskusja typ jednostki 3}},..., {{Code|dyskusja typ jednostki i}} - czy dany typ jednostki ma przedstawiać, jeśli niepusta, przestrzeń dyskusji dla pozycji bazowej, numerkowej i ogólnej. Parametry ramki tablicy transportu dziecka: * Parametry dziecka są takie same jak rodzica dla funkcji pudełkowej plus tu wymienione, * {{Code|numer jednostki}} - jak parametr {{Code|i}} nie został ustawiony, to wtedy liczy się ta zmienna. Przykłady: <syntaxhighlight lang="mediawiki"> {{Nazwa szablonu|nazwa przestrzeni nazw=Dyskusja Wikibooks|nazwa przestrzeni nazw 2=Dyskusja szablonu|nazwa przestrzeni nazw i=Dyskusja modułu}} </syntaxhighlight> W dziecku powiedzmy jest wywołanie, i szukamy nazwy przestrzeni nazw o numerze dwa, która nie została podana, ale istnieje za to jej wersji ogólna {{Code|nazwa przestrzeni nazw i}} i domyślna {{Code|nazwa przestrzeni nazw}}: <syntaxhighlight lang="mediawiki"> {{#invoke:Pudełko|Nazwa przedmiotowej przestrzeni nazw|numer jednostki=1}} </syntaxhighlight> Na podstawie powyższego przykładu otrzymamy wynik o schemacie, nie wyniku, bo tam nie ma zmiennej {{Code|nazwa przestrzeni nazw 1}}, ale jest {{Code|nazwa przestrzeni nazw i}}: <syntaxhighlight lang="mediawiki"> <!-- Ale nie "nazwa przestrzeni nazw", bo jej nie ma, ale za to istnieje "nazwa przestrzeni nazw i"; --> <!-- nazwa przestrzeni nazw 2=nazwa przestrzeni nazw i=Dyskusja modułu; --> <!-- Czyli wynik: --> Moduł <!-- Widzimy, że wygenerowała się nazwa przestrzeni nazw, którą jest przestrzeń przedmiotowa programowa przestrzeni dyskusji "Dyskusja modułu", którą również jest "Szablon" jego przestrzeni dyskusji "Dyskusja szablonu", a dla ich przestrzeni przedmiotowej, zamiast dyskusji, to samo przekształca się na to samo; --> </syntaxhighlight> Nie jest brana w tym powyższym przykładzie zmienna {{Code|nazwa przestrzeni nazw}}, bo jej nie ma, ale za to jest {{Code|nazwa przestrzeni nazw i}}, bo ona występuje jako parametr domyślny ogólny dla parametrów numerkowych. Przykłady w wikikodzie: * {{Code|{{m|Pudełko|Nazwa przedmiotowej przestrzeni nazw|numer jednostki{{=}}2}}}} → {{Tt|{{#invoke:Pudełko|Nazwa przedmiotowej przestrzeni nazw|numer jednostki=2}}}} * {{Code|{{m|Pudełko|Nazwa przedmiotowej przestrzeni nazw|Dyskusja szablonu|nazwa przestrzeni nazw i{{=}}Moja przestrzeń|numer jednostki{{=}}2}}}} → {{Tt|{{#invoke:Pudełko|Nazwa przedmiotowej przestrzeni nazw|Dyskusja szablonu|nazwa przestrzeni nazw i=Moja przestrzeń|numer jednostki=2}}}} * {{Code|{{m|Pudełko|Nazwa przedmiotowej przestrzeni nazw|nazwa przestrzeni nazw 2{{=}}Dyskusja szablonu|numer jednostki{{=}}2}}}} → {{Tt|{{#invoke:Pudełko|Nazwa przedmiotowej przestrzeni nazw|nazwa przestrzeni nazw 2=Dyskusja szablonu|numer jednostki=2}}}} * {{Code|{{m|Pudełko|Nazwa przedmiotowej przestrzeni nazw|nazwa przestrzeni nazw 2{{=}}Dyskusja szablonu|numer jednostki{{=}}2}}}} → {{Tt|{{#invoke:Pudełko|Nazwa przedmiotowej przestrzeni nazw|nazwa przestrzeni nazw i=Dyskusja szablonu|numer jednostki=2}}}} * {{Code|{{m|Pudełko|Nazwa przedmiotowej przestrzeni nazw|nazwa przestrzeni nazw{{=}}Dyskusja szablonu|numer jednostki{{=}}2}}}} → {{Tt|{{#invoke:Pudełko|Nazwa przedmiotowej przestrzeni nazw|nazwa przestrzeni nazw=Dyskusja szablonu|numer jednostki=2}}}} Powyżej dla przykładu podano parametry nie w rodzicu w szablonie, tylko w dziecku, jeśli chodzi o parametry nazw przestrzeni nazw, ale ich się za to nie powinno podawać w tych ramach, tylko w szablonach, w których wywoływane są te ramki pudełek {{Code|{{m|Pudełko}}}}, ale tak tutaj tak zrobiono by było najłatwiej sprawdzić działanie tego typu funkcji. Analogicznie możemy podawać parametry typu jednostki, np.: wywołaniu modułowym {{Code|{{m|Pudełko|Nazwa przedmiotowej przestrzeni nazw|typ jednostki 2{{=}}strona szablonu|numer jednostki{{=}}2}}}}, ale o tym więcej w rozdziałach {{Code|{{sr|# p["Typ jednostki"](frame,i)|p=Pudełko}}}}, {{Code|{{sr|#p["Typ jednostki 2"](frame,i)|p=Pudełko}}}}, {{Code|{{sr|#p["Typ jednostki 3"](frame,i)|p=Pudełko}}}} itp. w „{{sr|#Funkcje typu jednostki|p=Pudełko}}”, ale wtedy ta sama nazwa przestrzeni nazw reprezentowana przez {{Parametr|typ jednostki 2|strona szablonu}}, jest zamieniana na to samo, lepiej jest tutaj używać parametrów przestrzennych nazw niż typu jednostki, bo typ jednostki ma taką samą wartość dla przestrzeni przedmiotowej, co dyskusji. Tutaj parametr dyskusji typu jednostki bazowy i numerkowy ogólny, czy szczegółowy, nie gra roli, bo nawet, gdy wygenerujemy nazwę przestrzeni dyskusji za pomoca tego parametru, to i tak otrzymamy na samym końcu jego nazwę przedmiotową. Również parametry typu jednostki nie powinno się podawać w dziecku w ramce, tylko w rodzicu w szablonie jako parametry, w którym ta ramka jest wywoływana, ale tutaj podano jedynie dla przykładu, jak najłatwiej sprawdzić działanie tych parametrów tej funkcji. Najpierw w funkcji nagłówku brane są parametry nazw przestrzeni nazw, a jeżeli ich nie ma, to parametry typu jednostki, a jeżeli nie ma, to generowane są nazwy na podstawie aktualnego modułu. === {{Code|p["Nazwa przestrzeni nazw dyskusji"](frame,...)}} === Funkcja pisze nazwę przestrzeni nazw dyskusji jakikolwiek nazwy przestrzeni nazw (tzn. nazwę przedmiotową nazwy przestrzenie nazw, czyli nie dyskusji, zamieniana jest na dyskusji, czyli identyfikator przestrzeni się zmienia jeden wyżej, a dyskusji, nie przedmiotową, przekształca się na tą samą), według podanej w zmiennej {{Code|nazwa przestrzeni nazw}} dla pozycja bazowej w podanych parametrach szablonu rodzicu ramki dziecka, lub dla innej pozycji należy parametr podawać w formie {{Code|nazwa przestrzeni nazw 1}}, {{Code|nazwa przestrzeni nazw 2}}, {{Code|nazwa przestrzeni nazw 3}},..., lub te parametry można podać w postaci ogólnej {{Code|nazwa przestrzeni nazw i}}. Parametry podaje się w parametrach rodzica wywołania tej funkcji {{Code|{{m|Pudełko|Nazwa przestrzeni nazw dyskusji}}}} (ale ich nie trzeba podawać w dziecku, ale można) i w parametrach dziecka, jeśli chodzi o zmienną {{Code|numer jednostki}}, czyli np.: {{Code|{{m|Pudełko|Nazwa przestrzeni nazw dyskusji|numer jednostki{{=}}<jakaś liczba całkowita dodatnia>}}}}. Te parametry przestrzenne zamiast w rodzicu w szablonie można podać w ramce dziecka, wtedy parametry dziecka mają pierwszeństwo. Parametry przestrzenne mogą mogą być podane w postaci przestrzeni przedmiotowej lub dyskusji, ale ta funkcja zawsze ją zamienia na dyskusji. Przestrzeń nazw z parametrów nazw przestrzennych może odpowiadać wartości przestrzeni głównej, to wtedy odpowiednia przestrzeń nazw z parametru nazwy jednostki się nie liczy w tej funkcji, aby się liczyła należy użyć funkcji {{Code|{{sr|#p["Nazwa przestrzeni nazw dyskusji 2"](frame,...)|p=Pudełko}}}}. Definicja skrótowa funkcji: <syntaxhighlight lang="lua"> p["Nazwa przestrzeni nazw dyskusji"]=function(frame,czy_uwzglednic_alternatywna_nazwe,i)...end; </syntaxhighlight> Wtedy ciało funkcji tej, czyli jego definicja w środku, jest: <syntaxhighlight lang="lua"> -- Jest liczony numer parametru nazwy przestrzeni nazw, domyslnie chodzi tu o numer bazowy parametrów przestrzennych; local numer_jednostki=i or frame.args["numer jednostki"]; local liczba_numer_jednostki=((numer_jednostki)and(tonumber(numer_jednostki))or 0); local pudelko_pomocne_modul=require("Module:Pudełko/Pomocne"); -- Liczy nazwę przestrzeni nazw dyskusji na podstawie podanych parametrów; return pudelko_pomocne_modul.Nazwa_przestrzeni_nazw(frame,2, czy_uwzglednic_alternatywna_nazwe,liczba_numer_jednostki); </syntaxhighlight> Parametry funkcji: * {{Code|frame}} - tablica ramki tablicy transportu, * {{Code|czy_uwzglednic_alternatywna_nazwe}} - czy ma uwzględniać nazwę przestrzeni nazw domyślną szablonu, dostępne wartości: {{Code|false}}, w której nazwa domyślna nie jest uwzględniana wtedy, oraz {{Code|nil}} i {{Code|true}}, które oznaczają to samo, w tym jeżeli ona jest uwzględniana, wtedy jest brany parametr pierwszy dziecka, który musi istnieć przy takiej wartości tego parametru, tzn. {{Code|{{m|Pudełko|Nazwa przestrzeni nazw dyskusji|Szablon}}}} - ta nazwa domyślna zostanie przekształcona na dyskusji, a jeżeli ona by była dyskusji, to nie byłoby żadnego przekształcenia, a nazwa uzyskana nazwy przestrzeni nazw z parametrów przestrzennych jest w takim przypadku błędna, to w takim razie brany jest ten parametr, a jeżeli nazwa domyślna jest błędna, czyli {{Code|{{m|Pudełko|Nazwa przestrzeni nazw dyskusji|Moja przestrzeń}}}}, wtedy funkcja zwraca stan błędu {{Code|(błąd)}}. * {{Code|i}} - numer zmiennej nazwy przestrzeni nazw. Funkcja wykorzystuje {{Code|{{sr|#p.Nazwa_przestrzeni_nazw(frame,...)|p=Pudełko/Pomocne}}}} do wyznaczania ogólnego nazwy przestrzeni nazw dla pozycji bazowej i numerkowej, tzn. dla pozycji: jeden, dwa, trzy,..., itd, i ich ogólnej. Parametr ramki tablicy transportu rodzica szablonu: * {{Code|nazwa przestrzeni nazw}}, {{Code|nazwa przestrzeni nazw 1}}, {{Code|nazwa przestrzeni nazw 2}}, {{Code|nazwa przestrzeni nazw 3}},..., {{Code|nazwa przestrzeni nazw i}} - nazwy przestrzeni nazw dla pozycji bazowej oraz zwykłej i ogólnej numerkowej, * {{Code|typ jednostki}}, {{Code|typ jednostki 1}}, {{Code|typ jednostki 2}}, {{Code|typ jednostki 3}},..., {{Code|typ jednostki i}} - typy jednostek, którym odpowiadają pewne przestrzenie przedmiotowe, dla pozycji bazowej, numerkowej i ogólnej, ** {{Code|dyskusja typu jednostki}}, {{Code|dyskusja typu jednostki 1}}, {{Code|dyskusja typ jednostki 2}}, {{Code|dyskusja typ jednostki 3}},..., {{Code|dyskusja typ jednostki i}} - czy dany typ jednostki ma przedstawiać, jeśli niepusta, przestrzeń dyskusji dla pozycji bazowej, numerkowej i ogólnej. Parametry ramki tablicy transportu dziecka: * Parametry dziecka są takie same jak rodzica dla funkcji pudełkowej plus tu wymienione, * {{Code|numer jednostki}} - jak parametr {{Code|i}} nie został ustawiony, to wtedy liczy się ta zmienna. Przykłady: <syntaxhighlight lang="mediawiki"> {{Nazwa szablonu|nazwa przestrzeni nazw=Wikibooks|nazwa przestrzeni nazw 2=Szablon|nazwa przestrzeni nazw i=Moduł}} </syntaxhighlight> W dziecku powiedzmy jest wywołanie, i szukamy nazwy przestrzeni nazw o numerze dwa, która nie została podana, ale istnieje za to jej wersji ogólna {{Code|nazwa przestrzeni nazw i}} i domyślna {{Code|nazwa przestrzeni nazw}}: <syntaxhighlight lang="mediawiki"> {{#invoke:Pudełko|Nazwa przestrzeni nazw dyskusji|numer jednostki=1}} </syntaxhighlight> Na podstawie powyższego przykładu otrzymamy wynik o schemacie, nie wyniku, bo tam nie ma zmiennej {{Code|nazwa przestrzeni nazw 1}}, ale jest {{Code|nazwa przestrzeni nazw i}}: <syntaxhighlight lang="mediawiki"> <!-- Ale nie "nazwa przestrzeni nazw", bo jej nie ma, ale za to istnieje "nazwa przestrzeni nazw i"; --> <!-- nazwa przestrzeni nazw 2=nazwa przestrzeni nazw i=Moduł; --> <!-- Czyli wynik: --> Dyskusja modułu <!-- Widzimy, że wygenerowała się nazwa przestrzeni nazw, którą jest przestrzeń dyskusji przestrzeni programowej przestrzeni przedmiotowej "Moduł", którą również jest "Szablon" jego przestrzeni dyskusji "Dyskusja szablonu", a dla ich przestrzeni przedmiotowej, zamiast dyskusji, to przekształca się na dyskusji jej odpowiadającą; --> </syntaxhighlight> Nie jest brana w tym powyższym przykładzie zmienna {{Code|nazwa przestrzeni nazw}}, bo jej nie ma, ale za to jest {{Code|nazwa przestrzeni nazw i}}, bo ona występuje jako parametr domyślny ogólny dla parametrów numerkowych. Przykłady w wikikodzie: * {{Code|{{m|Pudełko|Nazwa przestrzeni nazw dyskusji|numer jednostki{{=}}2}}}} → {{Tt|{{#invoke:Pudełko|Nazwa przestrzeni nazw dyskusji|numer jednostki=2}}}} * {{Code|{{m|Pudełko|Nazwa przestrzeni nazw dyskusji|Szablon|nazwa przestrzeni nazw i{{=}}Moja przestrzeń|numer jednostki{{=}}2}}}} → {{Tt|{{#invoke:Pudełko|Nazwa przestrzeni nazw dyskusji|Szablon|nazwa przestrzeni nazw i=Moja przestrzeń|numer jednostki=2}}}} * {{Code|{{m|Pudełko|Nazwa przestrzeni nazw dyskusji|nazwa przestrzeni nazw 2{{=}}Szablon|numer jednostki{{=}}2}}}} → {{Tt|{{#invoke:Pudełko|Nazwa przestrzeni nazw dyskusji|nazwa przestrzeni nazw 2=Szablon|numer jednostki=2}}}} * {{Code|{{m|Pudełko|Nazwa przestrzeni nazw dyskusji|nazwa przestrzeni nazw 2{{=}}Szablon|numer jednostki{{=}}2}}}} → {{Tt|{{#invoke:Pudełko|Nazwa przestrzeni nazw dyskusji|nazwa przestrzeni nazw i=Szablon|numer jednostki=2}}}} * {{Code|{{m|Pudełko|Nazwa przestrzeni nazw dyskusji|nazwa przestrzeni nazw{{=}}Szablon|numer jednostki{{=}}2}}}} → {{Tt|{{#invoke:Pudełko|Nazwa przestrzeni nazw dyskusji|nazwa przestrzeni nazw=Szablon|numer jednostki=2}}}} Powyżej dla przykładu podano parametry nie w rodzicu w szablonie, tylko w dziecku, jeśli chodzi o parametry nazw przestrzeni nazw, ale ich się za to nie powinno podawać w tych ramach, tylko w szablonach, w których wywoływane są te ramki pudełek {{Code|{{m|Pudełko}}}}, ale tak tutaj tak zrobiono by było najłatwiej sprawdzić działanie tego typu funkcji. Analogicznie możemy podawać parametry typu jednostki, np.: wywołaniu modułowym {{Code|{{m|Pudełko|Nazwa przestrzeni nazw dyskusji|typ jednostki 2{{=}}strona szablonu|numer jednostki{{=}}2}}}}, ale o tym więcej w rozdziałach {{Code|{{sr|# p["Typ jednostki"](frame,i)|p=Pudełko}}}}, {{Code|{{sr|#p["Typ jednostki 2"](frame,i)|p=Pudełko}}}}, {{Code|{{sr|#p["Typ jednostki 3"](frame,i)|p=Pudełko}}}} itp. w „{{sr|#Funkcje typu jednostki|p=Pudełko}}”, ale wtedy nazwa przestrzeni nazw reprezentowana przez {{Parametr|typ jednostki 2|strona szablonu}}, jest zamieniana na nazwę przestrzeni nazw dyskusji. Parametr dyskusji typu jednostki bazowy lub dla danego numerka ogólny, czy szczegółowy, nie gra roli. Również parametry typu jednostki nie powinno się podawać w dziecku w ramce, tylko w rodzicu w szablonie jako parametry, w którym ta ramka jest wywoływana, ale tutaj podano jedynie dla przykładu, jak najłatwiej sprawdzić działanie tych parametrów tej funkcji. Najpierw w funkcji nagłówku brane są parametry nazw przestrzeni nazw, a jeżeli ich nie ma, to parametry typu jednostki, a jeżeli nie ma, to generowane są nazwy na podstawie aktualnego modułu. == Funkcje nazw przestrzeni nazw drugiej wersji == === {{Code|p["Nazwa przestrzeni nazw 2"](frame,...)}} === Funkcja pisze nazwę przestrzeni nazw, niezależnie, czy to jest przedmiotowa, czy dyskusji, według, i nie zawsze tylko, podanej w zmiennej {{Code|nazwa przestrzeni nazw}} dla pozycja bazowej w podanych parametrach szablonu rodzicu ramki dziecka, lub dla innej pozycji należy parametr podawać w formie {{Code|nazwa przestrzeni nazw 1}}, {{Code|nazwa przestrzeni nazw 2}}, {{Code|nazwa przestrzeni nazw 3}},..., lub te parametry można podać w postaci ogólnej {{Code|nazwa przestrzeni nazw i}}. W tej funkcji trzeba też podawać parametry nazwy jednostek {{Code|nazwa jednostki}}, {{Code|nazwa jednostki 1}}, {{Code|nazwa jednostki 2}}, {{Code|nazwa jednostki 3}},... Parametry podaje się w parametrach rodzica wywołania tej funkcji {{Code|{{m|Pudełko|Nazwa przestrzeni nazw 2}}}} (ale ich nie trzeba podawać w dziecku, ale można) i w parametrach dziecka, jeśli chodzi o zmienną {{Code|numer jednostki}}, czyli np.: {{Code|{{m|Pudełko|Nazwa przestrzeni nazw 2|numer jednostki{{=}}<jakaś liczba całkowita dodatnia>}}}}. Te parametry przestrzenne zamiast w rodzicu w szablonie można podać w ramce dziecka, wtedy parametry dziecka mają pierwszeństwo. Przestrzeń nazw z parametrów nazw przestrzennych może odpowiadać wartości przestrzeni głównej, to wtedy odpowiednia przestrzeń nazw z parametru nazwy jednostki się liczy w tej funkcji, wtedy jest liczona nazwa przestrzeni nazw z tego parametru. Gdy parametry przestrzenne lub typ jednostki w drugim podejściu nie wskazują na przestrzeń główną, to wtedy działanie tej funkcji jest podobne do {{Code|{{sr|#p["Nazwa przestrzeni nazw"](frame,...)|p=Pudełko}}}}. Definicja skrótowa funkcji: <syntaxhighlight lang="lua"> p["Nazwa przestrzeni nazw 2"]=function(frame,czy_uwzglednic_alternatywna_nazwe,i)...end; </syntaxhighlight> Wtedy ciało funkcji tej, czyli jego definicja w środku, jest: <syntaxhighlight lang="lua"> local pudelko_pomocne_modul=require("Module:Pudełko/Pomocne"); -- Liczy nazwę przestrzeni nazw, jeżeli z parametrów przestrzennych przestrzeń wskazuje na główną, to wtedy jest liczona przestrzeń nazw z nazwy jednostki; return pudelko_pomocne_modul.Nazwa_przestrzeni_nazw_2(frame,czy_uwzglednic_alternatywna_nazwe,i) </syntaxhighlight> Parametry funkcji: * {{Code|frame}} - tablica ramki tablicy transportu, * {{Code|czy_uwzglednic_alternatywna_nazwe}} - czy ma uwzględniać nazwę przestrzeni nazw domyślną szablonu, dostępne wartości: {{Code|false}}, w której nazwa domyślna nie jest uwzględniana wtedy, oraz {{Code|nil}} i {{Code|true}}, które oznaczają to samo, w tym jeżeli ona jest uwzględniana, wtedy jest brany parametr pierwszy dziecka, który musi istnieć przy takiej wartości tego parametru, tzn. {{Code|{{m|Pudełko|Nazwa przestrzeni nazw 2|Szablon}}}}, a nazwa uzyskana nazwy przestrzeni nazw jest w takim przypadku błędna, a jeżeli nazwa domyślna jest błędna, czyli {{Code|{{m|Pudełko|Nazwa przestrzeni nazw 2|Moja przestrzeń}}}}, wtedy funkcja zwraca stan błędu {{Code|(błąd)}}. * {{Code|i}} - numer zmiennej nazwy przestrzeni nazw. Funkcja wykorzystuje {{Code|{{sr|#p.Nazwa_przestrzeni_nazw_2(frame,...)|p=Pudełko/Pomocne}}}} do wyznaczania ogólnego nazwy przestrzeni nazw dla pozycji bazowej i numerkowej, tzn. dla pozycji: jeden, dwa, trzy,..., itd, i ich ogólnej. Parametr ramki tablicy transportu rodzica szablonu: * {{Code|nazwa przestrzeni nazw}}, {{Code|nazwa przestrzeni nazw 1}}, {{Code|nazwa przestrzeni nazw 2}}, {{Code|nazwa przestrzeni nazw 3}},..., {{Code|nazwa przestrzeni nazw i}} - nazwy przestrzeni nazw dla pozycji bazowej oraz zwykłej i ogólnej numerkowej, * {{Code|nazwa jednostki}}, {{Code|nazwa jednostki 1}}, {{Code|nazwa jednostki 2}}, {{Code|nazwa jednostki 3}},... - nazwy jednostek dla pozycji bazowej i numerkowej, * {{Code|typ jednostki}}, {{Code|typ jednostki 1}}, {{Code|typ jednostki 2}}, {{Code|typ jednostki 3}},..., {{Code|typ jednostki i}} - typy jednostek, którym odpowiadają pewne przestrzenie przedmiotowe, dla pozycji bazowej, numerkowej i ogólnej, ** {{Code|dyskusja typu jednostki}}, {{Code|dyskusja typu jednostki 1}}, {{Code|dyskusja typ jednostki 2}}, {{Code|dyskusja typ jednostki 3}},..., {{Code|dyskusja typ jednostki i}} - czy dany typ jednostki ma przedstawiać, jeśli niepusta, przestrzeń dyskusji dla pozycji bazowej, numerkowej i ogólnej. Parametry ramki tablicy transportu dziecka: * Parametry dziecka są takie same jak rodzica dla funkcji pudełkowej plus tu wymienione, * {{Code|numer jednostki}} - jak parametr {{Code|i}} nie został ustawiony, to wtedy liczy się ta zmienna. Przykłady: <syntaxhighlight lang="mediawiki"> {{Nazwa szablonu|nazwa przestrzeni nazw=Wikibooks|nazwa przestrzeni nazw 1=Szablon|nazwa przestrzeni nazw i=|nazwa jednostki 2=Wikibooks:Strona}} </syntaxhighlight> W dziecku powiedzmy jest wywołanie, i szukamy nazwy przestrzeni nazw o numerze dwa, która została podana, ale istnieje za to jej wersji ogólna {{Code|nazwa przestrzeni nazw i}} i domyślna {{Code|nazwa przestrzeni nazw}}, ale wtedy dla tego numerkowego liczy się to ogólne z {{Code| i}}, a ponieważ ta nazwa jest pusta, więc będziemy liczyli nazwę przestrzeni nazw z {{Code|nazwa jednostki 2}}: <syntaxhighlight lang="mediawiki"> {{#invoke:Pudełko|Nazwa przestrzeni nazw 2|numer jednostki=2}} </syntaxhighlight> Na podstawie powyższego przykładu otrzymamy wynik o schemacie, nie wyniku, bo tam nie ma zmiennej {{Code|nazwa przestrzeni nazw 1}}, ale jest {{Code|nazwa przestrzeni nazw i}}: <syntaxhighlight lang="mediawiki"> <!-- Ale nie "nazwa przestrzeni nazw 2", bo jej nie ma, ale za to istnieje "nazwa przestrzeni nazw i"; --> <!-- nazwa przestrzeni nazw 2=nazwa przestrzeni nazw i="", a nazwa jednostki 2="Wikibooks:Strona"; --> <!-- Czyli wynik: --> Wikibooks <!-- Widzimy, że wygenerowała się nazwa przestrzeni nazw, którą jest przestrzeń nieprogramowa, ale projektu, wychodząca z nazwy jednostek w tym przypadku z "nazwa jednostki 2"; --> </syntaxhighlight> Nie jest brana w tym powyższym przykładzie zmienna {{Code|nazwa przestrzeni nazw}}, bo jej nie ma, ale za to jest {{Code|nazwa przestrzeni nazw i}}, bo ona występuje jako parametr domyślny ogólny dla parametrów numerkowych. Tytaj jest używana jest zmienna {{Code|nazwa jednostki 2}} do wygenerowania ostatecznego wyniku, bo jak można zauważyć, parametry przestrzenne wskazują na przestrzeń główną, a nazwy jednostek już nie. Przykłady w wikikodzie: * {{Code|{{m|Pudełko|Nazwa przestrzeni nazw 2|numer jednostki{{=}}2}}}} → {{Tt|{{#invoke:Pudełko|Nazwa przestrzeni nazw 2|numer jednostki=2}}}} * {{Code|{{m|Pudełko|Nazwa przestrzeni nazw 2|Szablon|nazwa przestrzeni nazw i{{=}}Moja przestrzeń|numer jednostki{{=}}2}}}} → {{Tt|{{#invoke:Pudełko|Nazwa przestrzeni nazw 2|Szablon|nazwa przestrzeni nazw i=Moja przestrzeń|numer jednostki=2}}}} * {{Code|{{m|Pudełko|Nazwa przestrzeni nazw 2|nazwa przestrzeni nazw 2{{=}}|nazwa jednostki 2{{=}}Szablon:Strona|numer jednostki{{=}}2}}}} → {{Tt|{{#invoke:Pudełko|Nazwa przestrzeni nazw 2|nazwa przestrzeni nazw 2=|nazwa jednostki 2=Szablon:Strona|numer jednostki=2}}}} * {{Code|{{m|Pudełko|Nazwa przestrzeni nazw 2|nazwa przestrzeni nazw i{{=}}|nazwa jednostki 2{{=}}Szablon:Strona|numer jednostki{{=}}2}}}} → {{Tt|{{#invoke:Pudełko|Nazwa przestrzeni nazw 2|nazwa przestrzeni nazw i=|nazwa jednostki 2=Szablon:Strona|numer jednostki=2}}}} * {{Code|{{m|Pudełko|Nazwa przestrzeni nazw 2|Szablon|nazwa przestrzeni nazw{{=}}|nazwa jednostki 2{{=}}Wikibooks:Strona|numer jednostki{{=}}2}}}} → {{Tt|{{#invoke:Pudełko|Nazwa przestrzeni nazw 2|Szablon|nazwa przestrzeni nazw=|nazwa jednostki 2=Wikibooks:Strona|numer jednostki=2}}}} Powyżej dla przykładu podano parametry nie w rodzicu w szablonie, tylko w dziecku, jeśli chodzi o parametry nazw przestrzeni nazw i nazw jednostek, ale ich się za to nie powinno podawać w tych ramach, tylko w szablonach, w których wywoływane są te ramki pudełek {{Code|{{m|Pudełko}}}}, ale tak tutaj tak zrobiono by było najłatwiej sprawdzić działanie tego typu funkcji. Analogicznie możemy podawać parametry typu jednostki, np.: wywołaniu modułowym {{Code|{{m|Pudełko|Nazwa przestrzeni nazw 2|typ jednostki 2{{=}}Podręcznik|nazwa jednostki 2{{=}}Szablon:Strona|umer jednostki{{=}}2}}}} (ale wtedy jest brana przestrzeń nazw z nazwy jednostki), ale o tym więcej w rozdziałach {{Code|{{sr|# p["Typ jednostki"](frame,i)|p=Pudełko}}}}, {{Code|{{sr|#p["Typ jednostki 2"](frame,i)|p=Pudełko}}}}, {{Code|{{sr|#p["Typ jednostki 3"](frame,i)|p=Pudełko}}}} itp. w „{{sr|#Funkcje typu jednostki|p=Pudełko}}”, on definiuje przestrzenie przedmiotowe, ale można użyć parametru dyskusji typu jednostki z wartością niepustą, wtedy wyświetli się nazwa przestrzeni nazw dyskusji. Jeżeli typ jednostki wskazuje na przestrzeń nazw główną, wtedy się liczą parametry nazw jednostek. Również parametry typu jednostki nie powinno się podawać w dziecku w ramce, tylko w rodzicu w szablonie jako parametry, w którym ta ramka jest wywoływana, ale tutaj podano jedynie dla przykładu, jak najłatwiej sprawdzić działanie tych parametrów tej funkcji. Najpierw w funkcji nagłówku brane są parametry nazw przestrzeni nazw, a jeżeli ich nie ma, to parametry typu jednostki, a jeżeli nie ma lub parametry przestrzenne wskazują na przestrzeń główną, i nie ma nazwy jednostki, to generowane są nazwy tej funkcji na podstawie aktualnej strony. === {{Code|p["Nazwa przedmiotowej przestrzeni nazw 2"](frame,...)}} === === {{Code|p["Nazwa przestrzeni nazw dyskusji 2"](frame,...)}} === == Funkcje pełnych nazw jednostki == === {{Code|p["Pełna nazwa dyskusji jednostki"](frame,i)}} === === {{Code|p["Pełna nazwa przedmiotowa jednostki"](frame,i)}} === === {{Code|p["Pełna nazwa jednostki"](frame,i)}} === == Funkcje pełnych nazw jednostki drugiej wersji == === {{Code|p["Pełna nazwa dyskusji jednostki 2"](frame,i)}} === === {{Code|p["Pełna nazwa przedmiotowa jednostki 2"](frame,i)}} === === {{Code|p["Pełna nazwa jednostki 2"](frame,i)}} === == Funkcje pełnych nazw jednostki trzeciej wersji == === {{Code|p["Pełna nazwa dyskusji jednostki 3"](frame,i)}} === === {{Code|p["Pełna nazwa przedmiotowa jednostki 3"](frame,i)}} === === {{Code|p["Pełna nazwa jednostki 3"](frame,i)}} === == Funkcje nazw jednostki == === {{Code|p["Nazwa jednostki"](frame,i)}} === == Funkcje nazw jednostki drugiej wersji == === {{Code|p["Nazwa jednostki 2"](frame,i)}} === === {{Code|p["Nazwa przedmiotowa jednostki 2"](frame,i)}} === === {{Code|p["Nazwa dyskusji jednostki 2"](frame,i)}} === == Funkcje nazw przestrzeni nazw trzeciej wersji == === {{Code|p["Nazwa przestrzeni nazw 3"](frame,i)}} === === {{Code|p["Nazwa przedmiotowej przestrzeni nazw 3"](frame,i)}} === === {{Code|p["Nazwa przestrzeni nazw dyskusji 3"](frame,i)}} === == Funkcje nazw jednostki trzeciej wersji == === {{Code|p["Nazwa jednostki 3"](frame,i)}} === === {{Code|p["Nazwa przedmiotowa jednostki 3"](frame,i)}} === === {{Code|p["Nazwa dyskusji jednostki 3"](frame,i)}} === == Funkcje typu jednostki == === {{Code|p["Typ jednostki"](frame,i)}} === === {{Code|p["Typ jednostki 2"](frame,i)}} === === {{Code|p["Typ jednostki 3"](frame,i)}} === === Funkcje typu jednostki przedmiotowe === ==== {{Code|p["Przedmiotowy typ jednostki"](frame,i)}} ==== ==== {{Code|p["Przedmiotowy typ jednostki 2"](frame,i)}} ==== ==== {{Code|p["Przedmiotowy typ jednostki 3"](frame,i)}} ==== === Fukcje typu jednostki dyskusji === ==== {{Code|p["Dyskusyjny typ jednostki"](frame,i)}} ==== ==== {{Code|p["Dyskusyjny typ jednostki 2"](frame,i)}}} ==== ==== {{Code|p["Dyskusyjny typ jednostki 3"](frame,i)}} ==== == Funkcje chech pudełka == === {{Code|p["Cecha pudełka"](frame)}} === === {{Code|p["Przedmiotowa cecha pudełka"](frame)}} === === {{Code|p["Dyskusyjna cecha pudełka"](frame)}} === == Fukcje ogólnego pudełka == === {{Code|p["Ogólne pudełko"](frame)}} === == Funkcje ogólne == === {{Code|p["Tekst pudełka"](frame)}} === == Funkcje błędów pudełka == === {{Code|p["Błędy pudełka"](frame)}} === === {{Code|p["Przedmiotowe błędy pudełka"](frame)}} === === {{Code|p["Dyskusyjne błędy pudełka"](frame)}} === == Funkcje nazw stron == === {{Code|p["Nazwa strony głównej projektu"](frame,i)}} === === {{Code|p["Nazwa strony głównej dla dzieci projektu"](frame,i)}} === == Funkcje kodów == === {{Code|p["Kod języka"](frame,i)}} === === {{Code|p["Kod projektu"](frame,i)}} === === {{Code|p["Klucz projektu"](frame,i)}} === == Funkcje wiki == === {{Code|p["Inny niż język bieżący wiki"](frame)}} === === {{Code|p["Inne niż lokalne wiki"](frame)}} === === {{Code|p["Inne niż bieżące wiki"](frame)}} === == Funkcje typów parametrów, czy podane je == === {{Code|p["Podano parametry nienazwane"](frame)}} === === {{Code|p["Podano parametry numerowane"](frame)}} === === {{Code|p["Podano parametry nazwane"](frame)}} === == Funkcje kodów tego projektu == === {{Code|p["Kod projektu tego projektu"](frame)}} === === {{Code|p["Kod języka tego projektu"](frame)}} === === {{Code|p["Klucz projektu tego projektu"](frame)}} === == Funkcje stron == === {{Code|p["Strona główna tego projektu"](frame)}} === === {{Code|p["Strona główna dla dzieci tego projektu"](frame)}} === == Funkcje nazw stron drugiej wersji == === {{Code|p["Nazwa strony głównej dla dzieci projektu 2"](frame)}} === === {{Code| p["Nazwa strony głównej projektu 2"](frame)}} === {{BrClear}} <noinclude><!-- -->{{ProstaStronaKoniec}}<!-- -->{{Kategoria|Opisy funkcji, w Lua w Scribunto, w modułach}}<!-- --></noinclude> 5xsy7s38z3ayqozgst7taedc4nng2vq 540387 540386 2026-04-23T13:44:02Z Persino 2851 /* {{Code|p["Nazwa przestrzeni nazw 2"](frame,...)}} */ 540387 wikitext text/x-wiki <noinclude>{{ProstaStronaStart | nagłówek = {{Podrozdział|{{ld2|Pudełko}}|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 pudelko_modul=require("Module:Pudełko"); </syntaxhighlight> dzięki, któremu można wypisywać funkcje należącego do niego. Posługuje się na parametrach pudełkowych {{Parametr|nazwa przestrzeni nazw}} (czy też bez numerka {{Parametr|nazwa przestrzeni nazw i}} dla tego numerowanego) lub te z numerkiem po jednej spacji w nich (ale nie dla tego z końcówką {{Code| i}}) mogą zostać użyte jako parametry szablonu. Moduł {{Code|{{ld2|Pudełko}}}} przedstawia funkcje nazw w oparciu o funkcje nazw {{Code|{{ld2|Nazwy}}}}, generuje on nazwy za pomocą parametrów pudełkowych podanych poniżej. Parametr {{Parametr|nazwa jednostki}} (lub parametr {{Parametr|cel}} dla numerka tego pierwszego, tego alternatywnego), lub te z numerkiem po jednej spacji w nazwie parametru, albo numerowane numerkami {{Code|1}}, {{Code|2}},..., mogą zostać użyte jako parametry szablonu. Parametry określające rodzaj jednostki {{Parametr|typ jednostki}} z {{Parametr|dyskusja typu jednostki}}, itp. w wersjach z numerkiem po jednej spacji w nich mogą zostać użyte jako parametry szablonu. A te tymi numerowanymi liczbami naturalnymi {{Tt|nazwy jednostki}} od jedynki wzwyż poprzez szablon, w którym są one użyte, one też mogą być użyte z dwukropkiem, te numerowane, na samym początku nazwy, wtedy one są traktowane jako pełne nazwy strony, i wtedy one nie zostaną z interpretowane, że do nich trzeba użyć parametr odpowiedni z nazwą przetrzeni nazw z tego numerowanego, czy ogólny, aby utworzyć znów inną pełną nazwę strony dla tego numerka. Zestawienie: * {{Code|nazwa przestrzeni nazw}} i {{Code|nazwa przestrzeni nazw i}} (ogólna nazwa przestrzeni nazw dla wszystkich numerków, i tych numerowanych jednostek) - i to pierwsze z numerkiem, tzn. {{Code|nazwa przestrzeni nazw 1}}, {{Code|nazwa przestrzeni nazw 2}}, ..., * {{Code|nazwa jednostki}} - i te z numerkiem: {{Code|nazwa jednostki 1}}, {{Code|nazwa jednostki 2}}, ..., lub gdy jest zamiast tego parametrem numerowany, {{Code|1}}, {{Code|2}},..., który dla tego pierwszego może być uznany jako: {{Code|cel}} {{=}} {{Code|1}}, * {{Code|typ jednostki}} (parametr bazowy) i {{Code|typ jednostki i}} (parametr domyślny numerkowy) - i te z numerkiem: {{Code|typ jednostki 1}}, {{Code|typ jednostki 2}}, ..., tzn. gdy chcemy określić z jakim typem jednostki mamy do czynienia w zależności do jakiej przestrzeni nazw należy, a w danej, czy jest on np. programowy, czy tylko jest opisem, jak to bywa w szablonach {{Np|Template|link=tak}}, podobnie jest w przypadku {{Np|Module|link=tak}}, czy jak jest w innych przestrzeniach nazw, ** {{Code|dyskusja typu jednostki}} (parametr bazowy) i {{Code|dyskusja typu jednostki i}} (parametr domyślny numerkowy) - i te z numerkiem: {{Code|dyskusja typu jednostki 1}}, {{Code|dyskusja typu jednostki 2}}, ..., gdy chcemy określić wartością niepustą,że chodzi tutaj o typ jednostki. == {{Code|p.CzyNiepoprawnaNazwa(nazwa_jednostki)}} == Funkcja sprawdzajaca, czy jest poprawnie podana nazwa jednostki, czy ma poprawną nazwę. Znakami tymi, z których nie powinna składać się nazwa jest {{Code|<nowiki>{}<>|[]#\n</nowiki>}} i dodatkowo znak {{Code|&#127;}} (kod {{Code|{{Nowiki|&#127;}}}}). Też nie może składać się z trzech znaków tyldy, tzn. {{Code|<nowiki>~~~</nowiki>}}. Również w swojej budowie nie może składać się ze kodów {{Strong|HTML}} literowych o wzorze {{Code|{{Nowiki|&(%a+);}}}}. Natomiast może składać się z {{Code|{{Nowiki|&#(%d+);}}}} i {{Code|{{Nowiki|&#x(%x+);}}}}, ale w pierw te kody muszą być zamienione na normalne znaki. Skrótowa definicja funkcji: <syntaxhighlight lang="lua"> function p.CzyNiepoprawnaNazwa(nazwa_jednostki)...end; </syntaxhighlight> Wtedy ciało funkcji tej, czyli jego definicja w środku, jest: <syntaxhighlight lang="lua"> -- Moduł: "Moduł:Html/dane", służy do ładowania znaku o kodzie HTML "&#127;"; local html_dane_modul=mw.loadData("Module:Html/dane"); return mw.ustring.match(nazwa_jednostki,"[{}<>|%[%]#\n"..html_dane_modul.znak_127.."]+") or mw.ustring.match(nazwa_jednostki,"~~~") or mw.ustring.match(nazwa_jednostki,"&(%a+);"); </syntaxhighlight> Parametry: * {{Code|nazwa_jednostki}} - nazwa jednostki do sprawdzenia. Przykłady: <syntaxhighlight lang="lua"> local pudelko_modul=require("Module:Pudełko"); -- Podana przykładowa niepoprawna nazwa jedostki local nazwa_jednostki="Nazwa pliku [[Nazwa linku w pliku]]"; -- Fukcja zwróci wartość: local czy_poprawna_nazwa=true; local czy_poprawna_nazwa=pudelko_modul.CzyNiepoprawnaNazwa(nazwa_jednostki); </syntaxhighlight> == Funkcje nazw przestrzeni nazw == === {{Code|p["Nazwa przestrzeni nazw"](frame,...)}} === Funkcja pisze nazwę przestrzeni nazw, niezależnie, czy to jest przedmiotowa, czy dyskusji, według podanej w zmiennej {{Code|nazwa przestrzeni nazw}} dla pozycja bazowej w podanych parametrach szablonu rodzicu ramki dziecka, lub dla innej pozycji należy parametr podawać w formie {{Code|nazwa przestrzeni nazw 1}}, {{Code|nazwa przestrzeni nazw 2}}, {{Code|nazwa przestrzeni nazw 3}},..., lub te parametry można podać w postaci ogólnej {{Code|nazwa przestrzeni nazw i}}. Parametry podaje się w parametrach rodzica wywołania tej funkcji {{Code|{{m|Pudełko|Nazwa przestrzeni nazw}}}} (ale ich nie trzeba podawać w dziecku, ale można) i w parametrach dziecka, jeśli chodzi o zmienną {{Code|numer jednostki}}, czyli np.: {{Code|{{m|Pudełko|Nazwa przestrzeni nazw|numer jednostki{{=}}<jakaś liczba całkowita dodatnia>}}}}. Te parametry przestrzenne zamiast w rodzicu w szablonie można podać w ramce dziecka, wtedy parametry dziecka mają pierwszeństwo. Przestrzeń nazw z parametrów nazw przestrzennych może odpowiadać wartości przestrzeni głównej, to wtedy odpowiednia przestrzeń nazw z parametru nazwy jednostki się nie liczy w tej funkcji, aby się liczyła należy użyć funkcji {{Code|{{sr|#p["Nazwa przestrzeni nazw 2"](frame,...)|p=Pudełko}}}}. Definicja skrótowa funkcji: <syntaxhighlight lang="lua"> p["Nazwa przestrzeni nazw"]=function(frame,czy_uwzglednic_alternatywna_nazwe,i)...end; </syntaxhighlight> Wtedy ciało funkcji tej, czyli jego definicja w środku, jest: <syntaxhighlight lang="lua"> -- Jest liczony numer parametru nazwy przestrzeni nazw, domyslnie chodzi tu o numer bazowy parametrów przestrzennych; local numer_jednostki=i or frame.args["numer jednostki"]; local liczba_numer_jednostki=((numer_jednostki)and(tonumber(numer_jednostki))or 0); local pudelko_pomocne_modul=require("Module:Pudełko/Pomocne"); -- Liczy nazwę przestrzeni nazw na podstawie podanych parametrów; return pudelko_pomocne_modul.Nazwa_przestrzeni_nazw(frame,0, czy_uwzglednic_alternatywna_nazwe,liczba_numer_jednostki); </syntaxhighlight> Parametry funkcji: * {{Code|frame}} - tablica ramki tablicy transportu, * {{Code|czy_uwzglednic_alternatywna_nazwe}} - czy ma uwzględniać nazwę przestrzeni nazw domyślną szablonu, dostępne wartości: {{Code|false}}, w której nazwa domyślna nie jest uwzględniana wtedy, oraz {{Code|nil}} i {{Code|true}}, które oznaczają to samo, w tym jeżeli ona jest uwzględniana, wtedy jest brany parametr pierwszy dziecka, który musi istnieć przy takiej wartości tego parametru, tzn. {{Code|{{m|Pudełko|Nazwa przestrzeni nazw|Szablon}}}}, a nazwa uzyskana nazwy przestrzeni nazw jest w takim przypadku błędna, a jeżeli nazwa domyślna jest błędna, czyli {{Code|{{m|Pudełko|Nazwa przestrzeni nazw|Moja przestrzeń}}}}, wtedy funkcja zwraca stan błędu {{Code|(błąd)}}. * {{Code|i}} - numer zmiennej nazwy przestrzeni nazw. Funkcja wykorzystuje {{Code|{{sr|#p.Nazwa_przestrzeni_nazw(frame,...)|p=Pudełko/Pomocne}}}} do wyznaczania ogólnego nazwy przestrzeni nazw dla pozycji bazowej i numerkowej, tzn. dla pozycji: jeden, dwa, trzy,..., itd, i ich ogólnej. Parametr ramki tablicy transportu rodzica szablonu: * {{Code|nazwa przestrzeni nazw}}, {{Code|nazwa przestrzeni nazw 1}}, {{Code|nazwa przestrzeni nazw 2}}, {{Code|nazwa przestrzeni nazw 3}},..., {{Code|nazwa przestrzeni nazw i}} - nazwy przestrzeni nazw dla pozycji bazowej oraz zwykłej i ogólnej numerkowej, * {{Code|typ jednostki}}, {{Code|typ jednostki 1}}, {{Code|typ jednostki 2}}, {{Code|typ jednostki 3}},..., {{Code|typ jednostki i}} - typy jednostek, którym odpowiadają pewne przestrzenie przedmiotowe, dla pozycji bazowej, numerkowej i ogólnej, ** {{Code|dyskusja typu jednostki}}, {{Code|dyskusja typu jednostki 1}}, {{Code|dyskusja typ jednostki 2}}, {{Code|dyskusja typ jednostki 3}},..., {{Code|dyskusja typ jednostki i}} - czy dany typ jednostki ma przedstawiać, jeśli niepusta, przestrzeń dyskusji dla pozycji bazowej, numerkowej i ogólnej. Parametry ramki tablicy transportu dziecka: * Parametry dziecka są takie same jak rodzica dla funkcji pudełkowej plus tu wymienione, * {{Code|numer jednostki}} - jak parametr {{Code|i}} nie został ustawiony, to wtedy liczy się ta zmienna. Przykłady: <syntaxhighlight lang="mediawiki"> {{Nazwa szablonu|nazwa przestrzeni nazw=Wikibooks|nazwa przestrzeni nazw 2=Szablon|nazwa przestrzeni nazw i=Moduł}} </syntaxhighlight> W dziecku powiedzmy jest wywołanie, i szukamy nazwy przestrzeni nazw o numerze dwa, która nie została podana, ale istnieje za to jej wersji ogólna {{Code|nazwa przestrzeni nazw i}} i domyślna {{Code|nazwa przestrzeni nazw}}: <syntaxhighlight lang="mediawiki"> {{#invoke:Pudełko|Nazwa przestrzeni nazw|numer jednostki=1}} </syntaxhighlight> Na podstawie powyższego przykładu otrzymamy wynik o schemacie, nie wyniku, bo tam nie ma zmiennej {{Code|nazwa przestrzeni nazw 1}}, ale jest {{Code|nazwa przestrzeni nazw i}}: <syntaxhighlight lang="mediawiki"> <!-- Ale nie "nazwa przestrzeni nazw", bo jej nie ma, ale za to istnieje "nazwa przestrzeni nazw i"; --> <!-- nazwa przestrzeni nazw 2=nazwa przestrzeni nazw i=Moduł; --> <!-- Czyli wynik: --> Moduł <!-- Widzimy, że wygenerowała się nazwa przestrzeni nazw, którą jest przestrzeń programowa, którą również jest "Szablon"; --> </syntaxhighlight> Nie jest brana w tym powyższym przykładzie zmienna {{Code|nazwa przestrzeni nazw}}, bo jej nie ma, ale za to jest {{Code|nazwa przestrzeni nazw i}}, bo ona występuje jako parametr domyślny ogólny dla parametrów numerkowych. Przykłady w wikikodzie: * {{Code|{{m|Pudełko|Nazwa przestrzeni nazw|numer jednostki{{=}}2}}}} → {{Tt|{{#invoke:Pudełko|Nazwa przestrzeni nazw|numer jednostki=2}}}} * {{Code|{{m|Pudełko|Nazwa przestrzeni nazw|Szablon|nazwa przestrzeni nazw i{{=}}Moja przestrzeń|numer jednostki{{=}}2}}}} → {{Tt|{{#invoke:Pudełko|Nazwa przestrzeni nazw|Szablon|nazwa przestrzeni nazw i=Moja przestrzeń|numer jednostki=2}}}} * {{Code|{{m|Pudełko|Nazwa przestrzeni nazw|nazwa przestrzeni nazw 2{{=}}Szablon|numer jednostki{{=}}2}}}} → {{Tt|{{#invoke:Pudełko|Nazwa przestrzeni nazw|nazwa przestrzeni nazw 2=Szablon|numer jednostki=2}}}} * {{Code|{{m|Pudełko|Nazwa przestrzeni nazw|nazwa przestrzeni nazw 2{{=}}Szablon|numer jednostki{{=}}2}}}} → {{Tt|{{#invoke:Pudełko|Nazwa przestrzeni nazw|nazwa przestrzeni nazw i=Szablon|numer jednostki=2}}}} * {{Code|{{m|Pudełko|Nazwa przestrzeni nazw|nazwa przestrzeni nazw{{=}}Szablon|numer jednostki{{=}}2}}}} → {{Tt|{{#invoke:Pudełko|Nazwa przestrzeni nazw|nazwa przestrzeni nazw=Szablon|numer jednostki=2}}}} Powyżej dla przykładu podano parametry nie w rodzicu w szablonie, tylko w dziecku, jeśli chodzi o parametry nazw przestrzeni nazw, ale ich się za to nie powinno podawać w tych ramach, tylko w szablonach, w których wywoływane są te ramki pudełek {{Code|{{m|Pudełko}}}}, ale tak tutaj tak zrobiono by było najłatwiej sprawdzić działanie tego typu funkcji. Analogicznie możemy podawać parametry typu jednostki, np.: wywołaniu modułowym {{Code|{{m|Pudełko|Nazwa przestrzeni nazw|typ jednostki 2{{=}}strona szablonu|numer jednostki{{=}}2}}}}, ale o tym więcej w rozdziałach {{Code|{{sr|# p["Typ jednostki"](frame,i)|p=Pudełko}}}}, {{Code|{{sr|#p["Typ jednostki 2"](frame,i)|p=Pudełko}}}}, {{Code|{{sr|#p["Typ jednostki 3"](frame,i)|p=Pudełko}}}} itp. w „{{sr|#Funkcje typu jednostki|p=Pudełko}}”, on definiuje przestrzenie przedmiotowe, ale można użyć parametru dyskusji typu jednostki z wartością niepustą, wtedy wyświetli się nazwa przestrzeni nazw dyskusji. Również parametry typu jednostki nie powinno się podawać w dziecku w ramce, tylko w rodzicu w szablonie jako parametry, w którym ta ramka jest wywoływana, ale tutaj podano jedynie dla przykładu, jak najłatwiej sprawdzić działanie tych parametrów tej funkcji. Najpierw w funkcji nagłówku brane są parametry nazw przestrzeni nazw, a jeżeli ich nie ma, to parametry typu jednostki, a jeżeli nie ma, to generowane są nazwy na podstawie aktualnego modułu. === {{Code|p["Nazwa przedmiotowej przestrzeni nazw"](frame,...)}} === Funkcja pisze przedmiotową nazwę przestrzeni nazw jakikolwiek nazwy przestrzeni nazw (tzn. nazwę przedmiotową nazwy przestrzenie nazw, czyli nie dyskusji, zamieniana jest na nią samą, czyli identyfikator przestrzeni się nie zmienia, a dyskusji, nie przedmiotową, przekształca się na przedmiotową jej odpowiadającą, czyli w tym przypadku identyfikator przestrzeni zmniejsza się o numer mniej), według podanej w zmiennej {{Code|nazwa przestrzeni nazw}} dla pozycja bazowej w podanych parametrach szablonu rodzicu ramki dziecka, lub dla innej pozycji należy parametr podawać w formie {{Code|nazwa przestrzeni nazw 1}}, {{Code|nazwa przestrzeni nazw 2}}, {{Code|nazwa przestrzeni nazw 3}},..., lub te parametry można podać w postaci ogólnej {{Code|nazwa przestrzeni nazw i}}. Parametry podaje się w parametrach rodzica wywołania tej funkcji {{Code|{{m|Pudełko|Nazwa przedmiotowej przestrzeni nazw}}}} (ale ich nie trzeba podawać w dziecku, ale można) i w parametrach dziecka, jeśli chodzi o zmienną {{Code|numer jednostki}}, czyli np.: {{Code|{{m|Pudełko|Nazwa przedmiotowej przestrzeni nazw|numer jednostki{{=}}<jakaś liczba całkowita dodatnia>}}}}. Te parametry przestrzenne zamiast w rodzicu w szablonie można podać w ramce dziecka, wtedy parametry dziecka mają pierwszeństwo. Parametry przestrzenne mogą mogą być podane w postaci przestrzeni przedmiotowej lub dyskusji, ale ta funkcja zawsze ją zamienia na przedmiotową. Przestrzeń nazw z parametrów nazw przestrzennych może odpowiadać wartości przestrzeni głównej, to wtedy odpowiednia przestrzeń nazw z parametru nazwy jednostki się nie liczy w tej funkcji, aby się liczyła należy użyć funkcji {{Code|{{sr|#p["Nazwa przedmiotowej przestrzeni nazw 2"](frame,...)|p=Pudełko}}}}. Definicja skrótowa funkcji: <syntaxhighlight lang="lua"> p["Nazwa przedmiotowej przestrzeni nazw"]=function(frame,czy_uwzglednic_alternatywna_nazwe,i)...end; </syntaxhighlight> Wtedy ciało funkcji tej, czyli jego definicja w środku, jest: <syntaxhighlight lang="lua"> -- Jest liczony numer parametru nazwy przestrzeni nazw, domyslnie chodzi tu o numer bazowy parametrów przestrzennych; local numer_jednostki=i or frame.args["numer jednostki"]; local liczba_numer_jednostki=((numer_jednostki)and(tonumber(numer_jednostki))or 0); local pudelko_pomocne_modul=require("Module:Pudełko/Pomocne"); -- Liczy nazwę przestrzeni nazw przedmiotową na podstawie podanych parametrów; return pudelko_pomocne_modul.Nazwa_przestrzeni_nazw(frame,1, czy_uwzglednic_alternatywna_nazwe,liczba_numer_jednostki); </syntaxhighlight> Parametry funkcji: * {{Code|frame}} - tablica ramki tablicy transportu, * {{Code|czy_uwzglednic_alternatywna_nazwe}} - czy ma uwzględniać nazwę przestrzeni nazw domyślną szablonu, dostępne wartości: {{Code|false}}, w której nazwa domyślna nie jest uwzględniana wtedy, oraz {{Code|nil}} i {{Code|true}}, które oznaczają to samo, w tym jeżeli ona jest uwzględniana, wtedy jest brany parametr pierwszy dziecka, który musi istnieć przy takiej wartości tego parametru, tzn. {{Code|{{m|Pudełko|Nazwa przedmiotowej przestrzeni nazw|Dyskusja szablonu}}}} - ta nazwa domyślna zostanie zamieniona na przedmiotową, a jak ona by była przedmiotowa, to żadnej zamiany by nie było, a nazwa uzyskana z nazwy przestrzeni nazw z parametrów przestrzennych jest w takim przypadku błędna, to w takim razie brany jest ten parametr, a jeżeli ta nazwa domyślna jest błędna, czyli {{Code|{{m|Pudełko|Nazwa przedmiotowej przestrzeni nazw|Moja przestrzeń}}}}, wtedy funkcja zwraca stan błędu {{Code|(błąd)}}. * {{Code|i}} - numer zmiennej nazwy przestrzeni nazw. Funkcja wykorzystuje {{Code|{{sr|#p.Nazwa_przestrzeni_nazw(frame,...)|p=Pudełko/Pomocne}}}} do wyznaczania ogólnego nazwy przestrzeni nazw dla pozycji bazowej i numerkowej, tzn. dla pozycji: jeden, dwa, trzy,..., itd, i ich ogólnej. Parametr ramki tablicy transportu rodzica szablonu: * {{Code|nazwa przestrzeni nazw}}, {{Code|nazwa przestrzeni nazw 1}}, {{Code|nazwa przestrzeni nazw 2}}, {{Code|nazwa przestrzeni nazw 3}},..., {{Code|nazwa przestrzeni nazw i}} - nazwy przestrzeni nazw dla pozycji bazowej oraz zwykłej i ogólnej numerkowej, * {{Code|typ jednostki}}, {{Code|typ jednostki 1}}, {{Code|typ jednostki 2}}, {{Code|typ jednostki 3}},..., {{Code|typ jednostki i}} - typy jednostek, którym odpowiadają pewne przestrzenie przedmiotowe, dla pozycji bazowej, numerkowej i ogólnej, ** {{Code|dyskusja typu jednostki}}, {{Code|dyskusja typu jednostki 1}}, {{Code|dyskusja typ jednostki 2}}, {{Code|dyskusja typ jednostki 3}},..., {{Code|dyskusja typ jednostki i}} - czy dany typ jednostki ma przedstawiać, jeśli niepusta, przestrzeń dyskusji dla pozycji bazowej, numerkowej i ogólnej. Parametry ramki tablicy transportu dziecka: * Parametry dziecka są takie same jak rodzica dla funkcji pudełkowej plus tu wymienione, * {{Code|numer jednostki}} - jak parametr {{Code|i}} nie został ustawiony, to wtedy liczy się ta zmienna. Przykłady: <syntaxhighlight lang="mediawiki"> {{Nazwa szablonu|nazwa przestrzeni nazw=Dyskusja Wikibooks|nazwa przestrzeni nazw 2=Dyskusja szablonu|nazwa przestrzeni nazw i=Dyskusja modułu}} </syntaxhighlight> W dziecku powiedzmy jest wywołanie, i szukamy nazwy przestrzeni nazw o numerze dwa, która nie została podana, ale istnieje za to jej wersji ogólna {{Code|nazwa przestrzeni nazw i}} i domyślna {{Code|nazwa przestrzeni nazw}}: <syntaxhighlight lang="mediawiki"> {{#invoke:Pudełko|Nazwa przedmiotowej przestrzeni nazw|numer jednostki=1}} </syntaxhighlight> Na podstawie powyższego przykładu otrzymamy wynik o schemacie, nie wyniku, bo tam nie ma zmiennej {{Code|nazwa przestrzeni nazw 1}}, ale jest {{Code|nazwa przestrzeni nazw i}}: <syntaxhighlight lang="mediawiki"> <!-- Ale nie "nazwa przestrzeni nazw", bo jej nie ma, ale za to istnieje "nazwa przestrzeni nazw i"; --> <!-- nazwa przestrzeni nazw 2=nazwa przestrzeni nazw i=Dyskusja modułu; --> <!-- Czyli wynik: --> Moduł <!-- Widzimy, że wygenerowała się nazwa przestrzeni nazw, którą jest przestrzeń przedmiotowa programowa przestrzeni dyskusji "Dyskusja modułu", którą również jest "Szablon" jego przestrzeni dyskusji "Dyskusja szablonu", a dla ich przestrzeni przedmiotowej, zamiast dyskusji, to samo przekształca się na to samo; --> </syntaxhighlight> Nie jest brana w tym powyższym przykładzie zmienna {{Code|nazwa przestrzeni nazw}}, bo jej nie ma, ale za to jest {{Code|nazwa przestrzeni nazw i}}, bo ona występuje jako parametr domyślny ogólny dla parametrów numerkowych. Przykłady w wikikodzie: * {{Code|{{m|Pudełko|Nazwa przedmiotowej przestrzeni nazw|numer jednostki{{=}}2}}}} → {{Tt|{{#invoke:Pudełko|Nazwa przedmiotowej przestrzeni nazw|numer jednostki=2}}}} * {{Code|{{m|Pudełko|Nazwa przedmiotowej przestrzeni nazw|Dyskusja szablonu|nazwa przestrzeni nazw i{{=}}Moja przestrzeń|numer jednostki{{=}}2}}}} → {{Tt|{{#invoke:Pudełko|Nazwa przedmiotowej przestrzeni nazw|Dyskusja szablonu|nazwa przestrzeni nazw i=Moja przestrzeń|numer jednostki=2}}}} * {{Code|{{m|Pudełko|Nazwa przedmiotowej przestrzeni nazw|nazwa przestrzeni nazw 2{{=}}Dyskusja szablonu|numer jednostki{{=}}2}}}} → {{Tt|{{#invoke:Pudełko|Nazwa przedmiotowej przestrzeni nazw|nazwa przestrzeni nazw 2=Dyskusja szablonu|numer jednostki=2}}}} * {{Code|{{m|Pudełko|Nazwa przedmiotowej przestrzeni nazw|nazwa przestrzeni nazw 2{{=}}Dyskusja szablonu|numer jednostki{{=}}2}}}} → {{Tt|{{#invoke:Pudełko|Nazwa przedmiotowej przestrzeni nazw|nazwa przestrzeni nazw i=Dyskusja szablonu|numer jednostki=2}}}} * {{Code|{{m|Pudełko|Nazwa przedmiotowej przestrzeni nazw|nazwa przestrzeni nazw{{=}}Dyskusja szablonu|numer jednostki{{=}}2}}}} → {{Tt|{{#invoke:Pudełko|Nazwa przedmiotowej przestrzeni nazw|nazwa przestrzeni nazw=Dyskusja szablonu|numer jednostki=2}}}} Powyżej dla przykładu podano parametry nie w rodzicu w szablonie, tylko w dziecku, jeśli chodzi o parametry nazw przestrzeni nazw, ale ich się za to nie powinno podawać w tych ramach, tylko w szablonach, w których wywoływane są te ramki pudełek {{Code|{{m|Pudełko}}}}, ale tak tutaj tak zrobiono by było najłatwiej sprawdzić działanie tego typu funkcji. Analogicznie możemy podawać parametry typu jednostki, np.: wywołaniu modułowym {{Code|{{m|Pudełko|Nazwa przedmiotowej przestrzeni nazw|typ jednostki 2{{=}}strona szablonu|numer jednostki{{=}}2}}}}, ale o tym więcej w rozdziałach {{Code|{{sr|# p["Typ jednostki"](frame,i)|p=Pudełko}}}}, {{Code|{{sr|#p["Typ jednostki 2"](frame,i)|p=Pudełko}}}}, {{Code|{{sr|#p["Typ jednostki 3"](frame,i)|p=Pudełko}}}} itp. w „{{sr|#Funkcje typu jednostki|p=Pudełko}}”, ale wtedy ta sama nazwa przestrzeni nazw reprezentowana przez {{Parametr|typ jednostki 2|strona szablonu}}, jest zamieniana na to samo, lepiej jest tutaj używać parametrów przestrzennych nazw niż typu jednostki, bo typ jednostki ma taką samą wartość dla przestrzeni przedmiotowej, co dyskusji. Tutaj parametr dyskusji typu jednostki bazowy i numerkowy ogólny, czy szczegółowy, nie gra roli, bo nawet, gdy wygenerujemy nazwę przestrzeni dyskusji za pomoca tego parametru, to i tak otrzymamy na samym końcu jego nazwę przedmiotową. Również parametry typu jednostki nie powinno się podawać w dziecku w ramce, tylko w rodzicu w szablonie jako parametry, w którym ta ramka jest wywoływana, ale tutaj podano jedynie dla przykładu, jak najłatwiej sprawdzić działanie tych parametrów tej funkcji. Najpierw w funkcji nagłówku brane są parametry nazw przestrzeni nazw, a jeżeli ich nie ma, to parametry typu jednostki, a jeżeli nie ma, to generowane są nazwy na podstawie aktualnego modułu. === {{Code|p["Nazwa przestrzeni nazw dyskusji"](frame,...)}} === Funkcja pisze nazwę przestrzeni nazw dyskusji jakikolwiek nazwy przestrzeni nazw (tzn. nazwę przedmiotową nazwy przestrzenie nazw, czyli nie dyskusji, zamieniana jest na dyskusji, czyli identyfikator przestrzeni się zmienia jeden wyżej, a dyskusji, nie przedmiotową, przekształca się na tą samą), według podanej w zmiennej {{Code|nazwa przestrzeni nazw}} dla pozycja bazowej w podanych parametrach szablonu rodzicu ramki dziecka, lub dla innej pozycji należy parametr podawać w formie {{Code|nazwa przestrzeni nazw 1}}, {{Code|nazwa przestrzeni nazw 2}}, {{Code|nazwa przestrzeni nazw 3}},..., lub te parametry można podać w postaci ogólnej {{Code|nazwa przestrzeni nazw i}}. Parametry podaje się w parametrach rodzica wywołania tej funkcji {{Code|{{m|Pudełko|Nazwa przestrzeni nazw dyskusji}}}} (ale ich nie trzeba podawać w dziecku, ale można) i w parametrach dziecka, jeśli chodzi o zmienną {{Code|numer jednostki}}, czyli np.: {{Code|{{m|Pudełko|Nazwa przestrzeni nazw dyskusji|numer jednostki{{=}}<jakaś liczba całkowita dodatnia>}}}}. Te parametry przestrzenne zamiast w rodzicu w szablonie można podać w ramce dziecka, wtedy parametry dziecka mają pierwszeństwo. Parametry przestrzenne mogą mogą być podane w postaci przestrzeni przedmiotowej lub dyskusji, ale ta funkcja zawsze ją zamienia na dyskusji. Przestrzeń nazw z parametrów nazw przestrzennych może odpowiadać wartości przestrzeni głównej, to wtedy odpowiednia przestrzeń nazw z parametru nazwy jednostki się nie liczy w tej funkcji, aby się liczyła należy użyć funkcji {{Code|{{sr|#p["Nazwa przestrzeni nazw dyskusji 2"](frame,...)|p=Pudełko}}}}. Definicja skrótowa funkcji: <syntaxhighlight lang="lua"> p["Nazwa przestrzeni nazw dyskusji"]=function(frame,czy_uwzglednic_alternatywna_nazwe,i)...end; </syntaxhighlight> Wtedy ciało funkcji tej, czyli jego definicja w środku, jest: <syntaxhighlight lang="lua"> -- Jest liczony numer parametru nazwy przestrzeni nazw, domyslnie chodzi tu o numer bazowy parametrów przestrzennych; local numer_jednostki=i or frame.args["numer jednostki"]; local liczba_numer_jednostki=((numer_jednostki)and(tonumber(numer_jednostki))or 0); local pudelko_pomocne_modul=require("Module:Pudełko/Pomocne"); -- Liczy nazwę przestrzeni nazw dyskusji na podstawie podanych parametrów; return pudelko_pomocne_modul.Nazwa_przestrzeni_nazw(frame,2, czy_uwzglednic_alternatywna_nazwe,liczba_numer_jednostki); </syntaxhighlight> Parametry funkcji: * {{Code|frame}} - tablica ramki tablicy transportu, * {{Code|czy_uwzglednic_alternatywna_nazwe}} - czy ma uwzględniać nazwę przestrzeni nazw domyślną szablonu, dostępne wartości: {{Code|false}}, w której nazwa domyślna nie jest uwzględniana wtedy, oraz {{Code|nil}} i {{Code|true}}, które oznaczają to samo, w tym jeżeli ona jest uwzględniana, wtedy jest brany parametr pierwszy dziecka, który musi istnieć przy takiej wartości tego parametru, tzn. {{Code|{{m|Pudełko|Nazwa przestrzeni nazw dyskusji|Szablon}}}} - ta nazwa domyślna zostanie przekształcona na dyskusji, a jeżeli ona by była dyskusji, to nie byłoby żadnego przekształcenia, a nazwa uzyskana nazwy przestrzeni nazw z parametrów przestrzennych jest w takim przypadku błędna, to w takim razie brany jest ten parametr, a jeżeli nazwa domyślna jest błędna, czyli {{Code|{{m|Pudełko|Nazwa przestrzeni nazw dyskusji|Moja przestrzeń}}}}, wtedy funkcja zwraca stan błędu {{Code|(błąd)}}. * {{Code|i}} - numer zmiennej nazwy przestrzeni nazw. Funkcja wykorzystuje {{Code|{{sr|#p.Nazwa_przestrzeni_nazw(frame,...)|p=Pudełko/Pomocne}}}} do wyznaczania ogólnego nazwy przestrzeni nazw dla pozycji bazowej i numerkowej, tzn. dla pozycji: jeden, dwa, trzy,..., itd, i ich ogólnej. Parametr ramki tablicy transportu rodzica szablonu: * {{Code|nazwa przestrzeni nazw}}, {{Code|nazwa przestrzeni nazw 1}}, {{Code|nazwa przestrzeni nazw 2}}, {{Code|nazwa przestrzeni nazw 3}},..., {{Code|nazwa przestrzeni nazw i}} - nazwy przestrzeni nazw dla pozycji bazowej oraz zwykłej i ogólnej numerkowej, * {{Code|typ jednostki}}, {{Code|typ jednostki 1}}, {{Code|typ jednostki 2}}, {{Code|typ jednostki 3}},..., {{Code|typ jednostki i}} - typy jednostek, którym odpowiadają pewne przestrzenie przedmiotowe, dla pozycji bazowej, numerkowej i ogólnej, ** {{Code|dyskusja typu jednostki}}, {{Code|dyskusja typu jednostki 1}}, {{Code|dyskusja typ jednostki 2}}, {{Code|dyskusja typ jednostki 3}},..., {{Code|dyskusja typ jednostki i}} - czy dany typ jednostki ma przedstawiać, jeśli niepusta, przestrzeń dyskusji dla pozycji bazowej, numerkowej i ogólnej. Parametry ramki tablicy transportu dziecka: * Parametry dziecka są takie same jak rodzica dla funkcji pudełkowej plus tu wymienione, * {{Code|numer jednostki}} - jak parametr {{Code|i}} nie został ustawiony, to wtedy liczy się ta zmienna. Przykłady: <syntaxhighlight lang="mediawiki"> {{Nazwa szablonu|nazwa przestrzeni nazw=Wikibooks|nazwa przestrzeni nazw 2=Szablon|nazwa przestrzeni nazw i=Moduł}} </syntaxhighlight> W dziecku powiedzmy jest wywołanie, i szukamy nazwy przestrzeni nazw o numerze dwa, która nie została podana, ale istnieje za to jej wersji ogólna {{Code|nazwa przestrzeni nazw i}} i domyślna {{Code|nazwa przestrzeni nazw}}: <syntaxhighlight lang="mediawiki"> {{#invoke:Pudełko|Nazwa przestrzeni nazw dyskusji|numer jednostki=1}} </syntaxhighlight> Na podstawie powyższego przykładu otrzymamy wynik o schemacie, nie wyniku, bo tam nie ma zmiennej {{Code|nazwa przestrzeni nazw 1}}, ale jest {{Code|nazwa przestrzeni nazw i}}: <syntaxhighlight lang="mediawiki"> <!-- Ale nie "nazwa przestrzeni nazw", bo jej nie ma, ale za to istnieje "nazwa przestrzeni nazw i"; --> <!-- nazwa przestrzeni nazw 2=nazwa przestrzeni nazw i=Moduł; --> <!-- Czyli wynik: --> Dyskusja modułu <!-- Widzimy, że wygenerowała się nazwa przestrzeni nazw, którą jest przestrzeń dyskusji przestrzeni programowej przestrzeni przedmiotowej "Moduł", którą również jest "Szablon" jego przestrzeni dyskusji "Dyskusja szablonu", a dla ich przestrzeni przedmiotowej, zamiast dyskusji, to przekształca się na dyskusji jej odpowiadającą; --> </syntaxhighlight> Nie jest brana w tym powyższym przykładzie zmienna {{Code|nazwa przestrzeni nazw}}, bo jej nie ma, ale za to jest {{Code|nazwa przestrzeni nazw i}}, bo ona występuje jako parametr domyślny ogólny dla parametrów numerkowych. Przykłady w wikikodzie: * {{Code|{{m|Pudełko|Nazwa przestrzeni nazw dyskusji|numer jednostki{{=}}2}}}} → {{Tt|{{#invoke:Pudełko|Nazwa przestrzeni nazw dyskusji|numer jednostki=2}}}} * {{Code|{{m|Pudełko|Nazwa przestrzeni nazw dyskusji|Szablon|nazwa przestrzeni nazw i{{=}}Moja przestrzeń|numer jednostki{{=}}2}}}} → {{Tt|{{#invoke:Pudełko|Nazwa przestrzeni nazw dyskusji|Szablon|nazwa przestrzeni nazw i=Moja przestrzeń|numer jednostki=2}}}} * {{Code|{{m|Pudełko|Nazwa przestrzeni nazw dyskusji|nazwa przestrzeni nazw 2{{=}}Szablon|numer jednostki{{=}}2}}}} → {{Tt|{{#invoke:Pudełko|Nazwa przestrzeni nazw dyskusji|nazwa przestrzeni nazw 2=Szablon|numer jednostki=2}}}} * {{Code|{{m|Pudełko|Nazwa przestrzeni nazw dyskusji|nazwa przestrzeni nazw 2{{=}}Szablon|numer jednostki{{=}}2}}}} → {{Tt|{{#invoke:Pudełko|Nazwa przestrzeni nazw dyskusji|nazwa przestrzeni nazw i=Szablon|numer jednostki=2}}}} * {{Code|{{m|Pudełko|Nazwa przestrzeni nazw dyskusji|nazwa przestrzeni nazw{{=}}Szablon|numer jednostki{{=}}2}}}} → {{Tt|{{#invoke:Pudełko|Nazwa przestrzeni nazw dyskusji|nazwa przestrzeni nazw=Szablon|numer jednostki=2}}}} Powyżej dla przykładu podano parametry nie w rodzicu w szablonie, tylko w dziecku, jeśli chodzi o parametry nazw przestrzeni nazw, ale ich się za to nie powinno podawać w tych ramach, tylko w szablonach, w których wywoływane są te ramki pudełek {{Code|{{m|Pudełko}}}}, ale tak tutaj tak zrobiono by było najłatwiej sprawdzić działanie tego typu funkcji. Analogicznie możemy podawać parametry typu jednostki, np.: wywołaniu modułowym {{Code|{{m|Pudełko|Nazwa przestrzeni nazw dyskusji|typ jednostki 2{{=}}strona szablonu|numer jednostki{{=}}2}}}}, ale o tym więcej w rozdziałach {{Code|{{sr|# p["Typ jednostki"](frame,i)|p=Pudełko}}}}, {{Code|{{sr|#p["Typ jednostki 2"](frame,i)|p=Pudełko}}}}, {{Code|{{sr|#p["Typ jednostki 3"](frame,i)|p=Pudełko}}}} itp. w „{{sr|#Funkcje typu jednostki|p=Pudełko}}”, ale wtedy nazwa przestrzeni nazw reprezentowana przez {{Parametr|typ jednostki 2|strona szablonu}}, jest zamieniana na nazwę przestrzeni nazw dyskusji. Parametr dyskusji typu jednostki bazowy lub dla danego numerka ogólny, czy szczegółowy, nie gra roli. Również parametry typu jednostki nie powinno się podawać w dziecku w ramce, tylko w rodzicu w szablonie jako parametry, w którym ta ramka jest wywoływana, ale tutaj podano jedynie dla przykładu, jak najłatwiej sprawdzić działanie tych parametrów tej funkcji. Najpierw w funkcji nagłówku brane są parametry nazw przestrzeni nazw, a jeżeli ich nie ma, to parametry typu jednostki, a jeżeli nie ma, to generowane są nazwy na podstawie aktualnego modułu. == Funkcje nazw przestrzeni nazw drugiej wersji == === {{Code|p["Nazwa przestrzeni nazw 2"](frame,...)}} === Funkcja pisze nazwę przestrzeni nazw, niezależnie, czy to jest przedmiotowa, czy dyskusji, według, i nie zawsze tylko, podanej w zmiennej {{Code|nazwa przestrzeni nazw}} dla pozycja bazowej w podanych parametrach szablonu rodzicu ramki dziecka, lub dla innej pozycji należy parametr podawać w formie {{Code|nazwa przestrzeni nazw 1}}, {{Code|nazwa przestrzeni nazw 2}}, {{Code|nazwa przestrzeni nazw 3}},..., lub te parametry można podać w postaci ogólnej {{Code|nazwa przestrzeni nazw i}}. W tej funkcji trzeba też podawać parametry nazwy jednostek {{Code|nazwa jednostki}}, {{Code|nazwa jednostki 1}}, {{Code|nazwa jednostki 2}}, {{Code|nazwa jednostki 3}},... Parametry podaje się w parametrach rodzica wywołania tej funkcji {{Code|{{m|Pudełko|Nazwa przestrzeni nazw 2}}}} (ale ich nie trzeba podawać w dziecku, ale można) i w parametrach dziecka, jeśli chodzi o zmienną {{Code|numer jednostki}}, czyli np.: {{Code|{{m|Pudełko|Nazwa przestrzeni nazw 2|numer jednostki{{=}}<jakaś liczba całkowita dodatnia>}}}}. Te parametry przestrzenne zamiast w rodzicu w szablonie można podać w ramce dziecka, wtedy parametry dziecka mają pierwszeństwo. Przestrzeń nazw z parametrów nazw przestrzennych może odpowiadać wartości przestrzeni głównej, to wtedy odpowiednia przestrzeń nazw z parametru nazwy jednostki się liczy w tej funkcji, wtedy jest liczona nazwa przestrzeni nazw z tego parametru. Gdy parametry przestrzenne lub typ jednostki w drugim podejściu nie wskazują na przestrzeń główną, to wtedy działanie tej funkcji jest podobne do {{Code|{{sr|#p["Nazwa przestrzeni nazw"](frame,...)|p=Pudełko}}}}. Definicja skrótowa funkcji: <syntaxhighlight lang="lua"> p["Nazwa przestrzeni nazw 2"]=function(frame,czy_uwzglednic_alternatywna_nazwe,i)...end; </syntaxhighlight> Wtedy ciało funkcji tej, czyli jego definicja w środku, jest: <syntaxhighlight lang="lua"> local pudelko_pomocne_modul=require("Module:Pudełko/Pomocne"); -- Liczy nazwę przestrzeni nazw, jeżeli z parametrów przestrzennych przestrzeń wskazuje na główną, to wtedy jest liczona przestrzeń nazw z nazwy jednostki; return pudelko_pomocne_modul.Nazwa_przestrzeni_nazw_2(frame,czy_uwzglednic_alternatywna_nazwe,i) </syntaxhighlight> Parametry funkcji: * {{Code|frame}} - tablica ramki tablicy transportu, * {{Code|czy_uwzglednic_alternatywna_nazwe}} - czy ma uwzględniać nazwę przestrzeni nazw domyślną szablonu, dostępne wartości: {{Code|false}}, w której nazwa domyślna nie jest uwzględniana wtedy, oraz {{Code|nil}} i {{Code|true}}, które oznaczają to samo, w tym jeżeli ona jest uwzględniana, wtedy jest brany parametr pierwszy dziecka, który musi istnieć przy takiej wartości tego parametru, tzn. {{Code|{{m|Pudełko|Nazwa przestrzeni nazw 2|Szablon}}}}, a nazwa uzyskana nazwy przestrzeni nazw jest w takim przypadku błędna, a jeżeli nazwa domyślna jest błędna, czyli {{Code|{{m|Pudełko|Nazwa przestrzeni nazw 2|Moja przestrzeń}}}}, wtedy funkcja zwraca stan błędu {{Code|(błąd)}}. * {{Code|i}} - numer zmiennej nazwy przestrzeni nazw. Funkcja wykorzystuje {{Code|{{sr|#p.Nazwa_przestrzeni_nazw_2(frame,...)|p=Pudełko/Pomocne}}}} do wyznaczania ogólnego nazwy przestrzeni nazw dla pozycji bazowej i numerkowej, tzn. dla pozycji: jeden, dwa, trzy,..., itd, i ich ogólnej. Parametr ramki tablicy transportu rodzica szablonu: * {{Code|nazwa przestrzeni nazw}}, {{Code|nazwa przestrzeni nazw 1}}, {{Code|nazwa przestrzeni nazw 2}}, {{Code|nazwa przestrzeni nazw 3}},..., {{Code|nazwa przestrzeni nazw i}} - nazwy przestrzeni nazw dla pozycji bazowej oraz zwykłej i ogólnej numerkowej, * {{Code|nazwa jednostki}}, {{Code|nazwa jednostki 1}}, {{Code|nazwa jednostki 2}}, {{Code|nazwa jednostki 3}},... - nazwy jednostek dla pozycji bazowej i numerkowej, * {{Code|typ jednostki}}, {{Code|typ jednostki 1}}, {{Code|typ jednostki 2}}, {{Code|typ jednostki 3}},..., {{Code|typ jednostki i}} - typy jednostek, którym odpowiadają pewne przestrzenie przedmiotowe, dla pozycji bazowej, numerkowej i ogólnej, ** {{Code|dyskusja typu jednostki}}, {{Code|dyskusja typu jednostki 1}}, {{Code|dyskusja typ jednostki 2}}, {{Code|dyskusja typ jednostki 3}},..., {{Code|dyskusja typ jednostki i}} - czy dany typ jednostki ma przedstawiać, jeśli niepusta, przestrzeń dyskusji dla pozycji bazowej, numerkowej i ogólnej. Parametry ramki tablicy transportu dziecka: * Parametry dziecka są takie same jak rodzica dla funkcji pudełkowej plus tu wymienione, * {{Code|numer jednostki}} - jak parametr {{Code|i}} nie został ustawiony, to wtedy liczy się ta zmienna. Przykłady: <syntaxhighlight lang="mediawiki"> {{Nazwa szablonu|nazwa przestrzeni nazw=Wikibooks|nazwa przestrzeni nazw 1=Szablon|nazwa przestrzeni nazw i=|nazwa jednostki 2=Wikibooks:Strona}} </syntaxhighlight> W dziecku powiedzmy jest wywołanie, i szukamy nazwy przestrzeni nazw o numerze dwa, która została podana, ale istnieje za to jej wersji ogólna {{Code|nazwa przestrzeni nazw i}} i domyślna {{Code|nazwa przestrzeni nazw}}, ale wtedy dla tego numerkowego liczy się to ogólne z {{Code| i}}, a ponieważ ta nazwa jest pusta, więc będziemy liczyli nazwę przestrzeni nazw z {{Code|nazwa jednostki 2}}: <syntaxhighlight lang="mediawiki"> {{#invoke:Pudełko|Nazwa przestrzeni nazw 2|numer jednostki=2}} </syntaxhighlight> Na podstawie powyższego przykładu otrzymamy wynik o schemacie, nie wyniku, bo tam nie ma zmiennej {{Code|nazwa przestrzeni nazw 1}}, ale jest {{Code|nazwa przestrzeni nazw i}}: <syntaxhighlight lang="mediawiki"> <!-- Ale nie "nazwa przestrzeni nazw 2", bo jej nie ma, ale za to istnieje "nazwa przestrzeni nazw i"; --> <!-- nazwa przestrzeni nazw 2=nazwa przestrzeni nazw i="", a nazwa jednostki 2="Wikibooks:Strona"; --> <!-- Czyli wynik: --> Wikibooks <!-- Widzimy, że wygenerowała się nazwa przestrzeni nazw, którą jest przestrzeń nieprogramowa, ale projektu, wychodząca z nazwy jednostek w tym przypadku z "nazwa jednostki 2"; --> </syntaxhighlight> Nie jest brana w tym powyższym przykładzie zmienna {{Code|nazwa przestrzeni nazw}}, bo jej nie ma, ale za to jest {{Code|nazwa przestrzeni nazw i}}, bo ona występuje jako parametr domyślny ogólny dla parametrów numerkowych. Tytaj jest używana jest zmienna {{Code|nazwa jednostki 2}} do wygenerowania ostatecznego wyniku, bo jak można zauważyć, parametry przestrzenne wskazują na przestrzeń główną, a nazwy jednostek już nie. Przykłady w wikikodzie: * {{Code|{{m|Pudełko|Nazwa przestrzeni nazw 2|numer jednostki{{=}}2}}}} → {{Tt|{{#invoke:Pudełko|Nazwa przestrzeni nazw 2|numer jednostki=2}}}} * {{Code|{{m|Pudełko|Nazwa przestrzeni nazw 2|Szablon|nazwa przestrzeni nazw i{{=}}Moja przestrzeń|numer jednostki{{=}}2}}}} → {{Tt|{{#invoke:Pudełko|Nazwa przestrzeni nazw 2|Szablon|nazwa przestrzeni nazw i=Moja przestrzeń|numer jednostki=2}}}} * {{Code|{{m|Pudełko|Nazwa przestrzeni nazw 2|nazwa przestrzeni nazw 2{{=}}|nazwa jednostki 2{{=}}Szablon:Strona|numer jednostki{{=}}2}}}} → {{Tt|{{#invoke:Pudełko|Nazwa przestrzeni nazw 2|nazwa przestrzeni nazw 2=|nazwa jednostki 2=Szablon:Strona|numer jednostki=2}}}} * {{Code|{{m|Pudełko|Nazwa przestrzeni nazw 2|nazwa przestrzeni nazw i{{=}}|nazwa jednostki 2{{=}}Szablon:Strona|numer jednostki{{=}}2}}}} → {{Tt|{{#invoke:Pudełko|Nazwa przestrzeni nazw 2|nazwa przestrzeni nazw i=|nazwa jednostki 2=Szablon:Strona|numer jednostki=2}}}} * {{Code|{{m|Pudełko|Nazwa przestrzeni nazw 2|Szablon|nazwa przestrzeni nazw{{=}}|nazwa jednostki 2{{=}}Wikibooks:Strona|numer jednostki{{=}}2}}}} → {{Tt|{{#invoke:Pudełko|Nazwa przestrzeni nazw 2|Szablon|nazwa przestrzeni nazw=|nazwa jednostki 2=Wikibooks:Strona|numer jednostki=2}}}} Powyżej dla przykładu podano parametry nie w rodzicu w szablonie, tylko w dziecku, jeśli chodzi o parametry nazw przestrzeni nazw i nazw jednostek, ale ich się za to nie powinno podawać w tych ramach, tylko w szablonach, w których wywoływane są te ramki pudełek {{Code|{{m|Pudełko}}}}, ale tak tutaj tak zrobiono by było najłatwiej sprawdzić działanie tego typu funkcji. Analogicznie możemy podawać parametry typu jednostki, np.: wywołaniu modułowym {{Code|{{m|Pudełko|Nazwa przestrzeni nazw 2|typ jednostki 2{{=}}Podręcznik|nazwa jednostki 2{{=}}Szablon:Strona|numer jednostki{{=}}2}}}} (ale wtedy jest brana przestrzeń nazw z nazwy jednostki), ale o tym więcej w rozdziałach {{Code|{{sr|# p["Typ jednostki"](frame,i)|p=Pudełko}}}}, {{Code|{{sr|#p["Typ jednostki 2"](frame,i)|p=Pudełko}}}}, {{Code|{{sr|#p["Typ jednostki 3"](frame,i)|p=Pudełko}}}} itp. w „{{sr|#Funkcje typu jednostki|p=Pudełko}}”, on definiuje przestrzenie przedmiotowe, ale można użyć parametru dyskusji typu jednostki z wartością niepustą, wtedy wyświetli się nazwa przestrzeni nazw dyskusji. Jeżeli typ jednostki wskazuje na przestrzeń nazw główną, wtedy się liczą parametry nazw jednostek. Również parametry typu jednostki nie powinno się podawać w dziecku w ramce, tylko w rodzicu w szablonie jako parametry, w którym ta ramka jest wywoływana, ale tutaj podano jedynie dla przykładu, jak najłatwiej sprawdzić działanie tych parametrów tej funkcji. Najpierw w funkcji nagłówku brane są parametry nazw przestrzeni nazw, a jeżeli ich nie ma, to parametry typu jednostki, a jeżeli nie ma lub parametry przestrzenne wskazują na przestrzeń główną, i nie ma nazwy jednostki, to generowane są nazwy tej funkcji na podstawie aktualnej strony. === {{Code|p["Nazwa przedmiotowej przestrzeni nazw 2"](frame,...)}} === === {{Code|p["Nazwa przestrzeni nazw dyskusji 2"](frame,...)}} === == Funkcje pełnych nazw jednostki == === {{Code|p["Pełna nazwa dyskusji jednostki"](frame,i)}} === === {{Code|p["Pełna nazwa przedmiotowa jednostki"](frame,i)}} === === {{Code|p["Pełna nazwa jednostki"](frame,i)}} === == Funkcje pełnych nazw jednostki drugiej wersji == === {{Code|p["Pełna nazwa dyskusji jednostki 2"](frame,i)}} === === {{Code|p["Pełna nazwa przedmiotowa jednostki 2"](frame,i)}} === === {{Code|p["Pełna nazwa jednostki 2"](frame,i)}} === == Funkcje pełnych nazw jednostki trzeciej wersji == === {{Code|p["Pełna nazwa dyskusji jednostki 3"](frame,i)}} === === {{Code|p["Pełna nazwa przedmiotowa jednostki 3"](frame,i)}} === === {{Code|p["Pełna nazwa jednostki 3"](frame,i)}} === == Funkcje nazw jednostki == === {{Code|p["Nazwa jednostki"](frame,i)}} === == Funkcje nazw jednostki drugiej wersji == === {{Code|p["Nazwa jednostki 2"](frame,i)}} === === {{Code|p["Nazwa przedmiotowa jednostki 2"](frame,i)}} === === {{Code|p["Nazwa dyskusji jednostki 2"](frame,i)}} === == Funkcje nazw przestrzeni nazw trzeciej wersji == === {{Code|p["Nazwa przestrzeni nazw 3"](frame,i)}} === === {{Code|p["Nazwa przedmiotowej przestrzeni nazw 3"](frame,i)}} === === {{Code|p["Nazwa przestrzeni nazw dyskusji 3"](frame,i)}} === == Funkcje nazw jednostki trzeciej wersji == === {{Code|p["Nazwa jednostki 3"](frame,i)}} === === {{Code|p["Nazwa przedmiotowa jednostki 3"](frame,i)}} === === {{Code|p["Nazwa dyskusji jednostki 3"](frame,i)}} === == Funkcje typu jednostki == === {{Code|p["Typ jednostki"](frame,i)}} === === {{Code|p["Typ jednostki 2"](frame,i)}} === === {{Code|p["Typ jednostki 3"](frame,i)}} === === Funkcje typu jednostki przedmiotowe === ==== {{Code|p["Przedmiotowy typ jednostki"](frame,i)}} ==== ==== {{Code|p["Przedmiotowy typ jednostki 2"](frame,i)}} ==== ==== {{Code|p["Przedmiotowy typ jednostki 3"](frame,i)}} ==== === Fukcje typu jednostki dyskusji === ==== {{Code|p["Dyskusyjny typ jednostki"](frame,i)}} ==== ==== {{Code|p["Dyskusyjny typ jednostki 2"](frame,i)}}} ==== ==== {{Code|p["Dyskusyjny typ jednostki 3"](frame,i)}} ==== == Funkcje chech pudełka == === {{Code|p["Cecha pudełka"](frame)}} === === {{Code|p["Przedmiotowa cecha pudełka"](frame)}} === === {{Code|p["Dyskusyjna cecha pudełka"](frame)}} === == Fukcje ogólnego pudełka == === {{Code|p["Ogólne pudełko"](frame)}} === == Funkcje ogólne == === {{Code|p["Tekst pudełka"](frame)}} === == Funkcje błędów pudełka == === {{Code|p["Błędy pudełka"](frame)}} === === {{Code|p["Przedmiotowe błędy pudełka"](frame)}} === === {{Code|p["Dyskusyjne błędy pudełka"](frame)}} === == Funkcje nazw stron == === {{Code|p["Nazwa strony głównej projektu"](frame,i)}} === === {{Code|p["Nazwa strony głównej dla dzieci projektu"](frame,i)}} === == Funkcje kodów == === {{Code|p["Kod języka"](frame,i)}} === === {{Code|p["Kod projektu"](frame,i)}} === === {{Code|p["Klucz projektu"](frame,i)}} === == Funkcje wiki == === {{Code|p["Inny niż język bieżący wiki"](frame)}} === === {{Code|p["Inne niż lokalne wiki"](frame)}} === === {{Code|p["Inne niż bieżące wiki"](frame)}} === == Funkcje typów parametrów, czy podane je == === {{Code|p["Podano parametry nienazwane"](frame)}} === === {{Code|p["Podano parametry numerowane"](frame)}} === === {{Code|p["Podano parametry nazwane"](frame)}} === == Funkcje kodów tego projektu == === {{Code|p["Kod projektu tego projektu"](frame)}} === === {{Code|p["Kod języka tego projektu"](frame)}} === === {{Code|p["Klucz projektu tego projektu"](frame)}} === == Funkcje stron == === {{Code|p["Strona główna tego projektu"](frame)}} === === {{Code|p["Strona główna dla dzieci tego projektu"](frame)}} === == Funkcje nazw stron drugiej wersji == === {{Code|p["Nazwa strony głównej dla dzieci projektu 2"](frame)}} === === {{Code| p["Nazwa strony głównej projektu 2"](frame)}} === {{BrClear}} <noinclude><!-- -->{{ProstaStronaKoniec}}<!-- -->{{Kategoria|Opisy funkcji, w Lua w Scribunto, w modułach}}<!-- --></noinclude> lzpcvu2mk64eiz8ps5su0maklput2ms 540388 540387 2026-04-23T13:45:30Z Persino 2851 540388 wikitext text/x-wiki <noinclude>{{ProstaStronaStart | nagłówek = {{Podrozdział|{{ld2|Pudełko}}|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 pudelko_modul=require("Module:Pudełko"); </syntaxhighlight> dzięki, któremu można wypisywać funkcje należącego do niego. Posługuje się na parametrach pudełkowych {{Parametr|nazwa przestrzeni nazw}} (czy też bez numerka {{Parametr|nazwa przestrzeni nazw i}} dla tego numerowanego) lub te z numerkiem po jednej spacji w nich (ale nie dla tego z końcówką {{Code| i}}) mogą zostać użyte jako parametry szablonu. Moduł {{Code|{{ld2|Pudełko}}}} przedstawia funkcje nazw w oparciu o funkcje nazw {{Code|{{ld2|Nazwy}}}}, generuje on nazwy za pomocą parametrów pudełkowych podanych poniżej. Parametr {{Parametr|nazwa jednostki}} (lub parametr {{Parametr|cel}} dla numerka tego pierwszego, tego alternatywnego), lub te z numerkiem po jednej spacji w nazwie parametru, albo numerowane numerkami {{Code|1}}, {{Code|2}},..., mogą zostać użyte jako parametry szablonu. Parametry określające rodzaj jednostki {{Parametr|typ jednostki}} z {{Parametr|dyskusja typu jednostki}}, itp. w wersjach z numerkiem po jednej spacji w nich mogą zostać użyte jako parametry szablonu. A te tymi numerowanymi liczbami naturalnymi {{Tt|nazwy jednostki}} od jedynki wzwyż poprzez szablon, w którym są one użyte, one też mogą być użyte z dwukropkiem, te numerowane, na samym początku nazwy, wtedy one są traktowane jako pełne nazwy strony, i wtedy one nie zostaną z interpretowane, że do nich trzeba użyć parametr odpowiedni z nazwą przetrzeni nazw z tego numerowanego, czy ogólny, aby utworzyć znów inną pełną nazwę strony dla tego numerka. Zestawienie: * {{Code|nazwa przestrzeni nazw}} i {{Code|nazwa przestrzeni nazw i}} (ogólna nazwa przestrzeni nazw dla wszystkich numerków, i tych numerowanych jednostek) - i to pierwsze z numerkiem, tzn. {{Code|nazwa przestrzeni nazw 1}}, {{Code|nazwa przestrzeni nazw 2}}, ..., * {{Code|nazwa jednostki}} - i te z numerkiem: {{Code|nazwa jednostki 1}}, {{Code|nazwa jednostki 2}}, ..., lub gdy jest zamiast tego parametrem numerowany, {{Code|1}}, {{Code|2}},..., który dla tego pierwszego może być uznany jako: {{Code|cel}} {{=}} {{Code|1}}, * {{Code|typ jednostki}} (parametr bazowy) i {{Code|typ jednostki i}} (parametr domyślny numerkowy) - i te z numerkiem: {{Code|typ jednostki 1}}, {{Code|typ jednostki 2}}, ..., tzn. gdy chcemy określić z jakim typem jednostki mamy do czynienia w zależności do jakiej przestrzeni nazw należy, a w danej, czy jest on np. programowy, czy tylko jest opisem, jak to bywa w szablonach {{Np|Template|link=tak}}, podobnie jest w przypadku {{Np|Module|link=tak}}, czy jak jest w innych przestrzeniach nazw, ** {{Code|dyskusja typu jednostki}} (parametr bazowy) i {{Code|dyskusja typu jednostki i}} (parametr domyślny numerkowy) - i te z numerkiem: {{Code|dyskusja typu jednostki 1}}, {{Code|dyskusja typu jednostki 2}}, ..., gdy chcemy określić wartością niepustą,że chodzi tutaj o typ jednostki. == {{Code|p.CzyNiepoprawnaNazwa(nazwa_jednostki)}} == Funkcja sprawdzajaca, czy jest poprawnie podana nazwa jednostki, czy ma poprawną nazwę. Znakami tymi, z których nie powinna składać się nazwa jest {{Code|<nowiki>{}<>|[]#\n</nowiki>}} i dodatkowo znak {{Code|&#127;}} (kod {{Code|{{Nowiki|&#127;}}}}). Też nie może składać się z trzech znaków tyldy, tzn. {{Code|<nowiki>~~~</nowiki>}}. Również w swojej budowie nie może składać się ze kodów {{Strong|HTML}} literowych o wzorze {{Code|{{Nowiki|&(%a+);}}}}. Natomiast może składać się z {{Code|{{Nowiki|&#(%d+);}}}} i {{Code|{{Nowiki|&#x(%x+);}}}}, ale w pierw te kody muszą być zamienione na normalne znaki. Skrótowa definicja funkcji: <syntaxhighlight lang="lua"> function p.CzyNiepoprawnaNazwa(nazwa_jednostki)...end; </syntaxhighlight> Wtedy ciało funkcji tej, czyli jego definicja w środku, jest: <syntaxhighlight lang="lua"> -- Moduł: "Moduł:Html/dane", służy do ładowania znaku o kodzie HTML "&#127;"; local html_dane_modul=mw.loadData("Module:Html/dane"); return mw.ustring.match(nazwa_jednostki,"[{}<>|%[%]#\n"..html_dane_modul.znak_127.."]+") or mw.ustring.match(nazwa_jednostki,"~~~") or mw.ustring.match(nazwa_jednostki,"&(%a+);"); </syntaxhighlight> Parametry: * {{Code|nazwa_jednostki}} - nazwa jednostki do sprawdzenia. Przykłady: <syntaxhighlight lang="lua"> local pudelko_modul=require("Module:Pudełko"); -- Podana przykładowa niepoprawna nazwa jedostki local nazwa_jednostki="Nazwa pliku [[Nazwa linku w pliku]]"; -- Fukcja zwróci wartość: local czy_poprawna_nazwa=true; local czy_poprawna_nazwa=pudelko_modul.CzyNiepoprawnaNazwa(nazwa_jednostki); </syntaxhighlight> == Funkcje nazw przestrzeni nazw == === {{Code|p["Nazwa przestrzeni nazw"](frame,...)}} === Funkcja pisze nazwę przestrzeni nazw, niezależnie, czy to jest przedmiotowa, czy dyskusji, według podanej w zmiennej {{Code|nazwa przestrzeni nazw}} dla pozycja bazowej w podanych parametrach szablonu rodzicu ramki dziecka, lub dla innej pozycji należy parametr podawać w formie {{Code|nazwa przestrzeni nazw 1}}, {{Code|nazwa przestrzeni nazw 2}}, {{Code|nazwa przestrzeni nazw 3}},..., lub te parametry można podać w postaci ogólnej {{Code|nazwa przestrzeni nazw i}}. Parametry podaje się w parametrach rodzica wywołania tej funkcji {{Code|{{m|Pudełko|Nazwa przestrzeni nazw}}}} (ale ich nie trzeba podawać w dziecku, ale można) i w parametrach dziecka, jeśli chodzi o zmienną {{Code|numer jednostki}}, czyli np.: {{Code|{{m|Pudełko|Nazwa przestrzeni nazw|numer jednostki{{=}}<jakaś liczba całkowita dodatnia>}}}}. Te parametry przestrzenne zamiast w rodzicu w szablonie można podać w ramce dziecka, wtedy parametry dziecka mają pierwszeństwo. Przestrzeń nazw z parametrów nazw przestrzennych może odpowiadać wartości przestrzeni głównej, to wtedy odpowiednia przestrzeń nazw z parametru nazwy jednostki się nie liczy w tej funkcji, aby się liczyła należy użyć funkcji {{Code|{{sr|#p["Nazwa przestrzeni nazw 2"](frame,...)|p=Pudełko}}}}. Definicja skrótowa funkcji: <syntaxhighlight lang="lua"> p["Nazwa przestrzeni nazw"]=function(frame,czy_uwzglednic_alternatywna_nazwe,i)...end; </syntaxhighlight> Wtedy ciało funkcji tej, czyli jego definicja w środku, jest: <syntaxhighlight lang="lua"> -- Jest liczony numer parametru nazwy przestrzeni nazw, domyslnie chodzi tu o numer bazowy parametrów przestrzennych; local numer_jednostki=i or frame.args["numer jednostki"]; local liczba_numer_jednostki=((numer_jednostki)and(tonumber(numer_jednostki))or 0); local pudelko_pomocne_modul=require("Module:Pudełko/Pomocne"); -- Liczy nazwę przestrzeni nazw na podstawie podanych parametrów; return pudelko_pomocne_modul.Nazwa_przestrzeni_nazw(frame,0, czy_uwzglednic_alternatywna_nazwe,liczba_numer_jednostki); </syntaxhighlight> Parametry funkcji: * {{Code|frame}} - tablica ramki tablicy transportu, * {{Code|czy_uwzglednic_alternatywna_nazwe}} - czy ma uwzględniać nazwę przestrzeni nazw domyślną szablonu, dostępne wartości: {{Code|false}}, w której nazwa domyślna nie jest uwzględniana wtedy, oraz {{Code|nil}} i {{Code|true}}, które oznaczają to samo, w tym jeżeli ona jest uwzględniana, wtedy jest brany parametr pierwszy dziecka, który musi istnieć przy takiej wartości tego parametru, tzn. {{Code|{{m|Pudełko|Nazwa przestrzeni nazw|Szablon}}}}, a nazwa uzyskana nazwy przestrzeni nazw jest w takim przypadku błędna, a jeżeli nazwa domyślna jest błędna, czyli {{Code|{{m|Pudełko|Nazwa przestrzeni nazw|Moja przestrzeń}}}}, wtedy funkcja zwraca stan błędu {{Code|(błąd)}}. * {{Code|i}} - numer zmiennej nazwy przestrzeni nazw. Funkcja wykorzystuje {{Code|{{sr|#p.Nazwa_przestrzeni_nazw(frame,...)|p=Pudełko/Pomocne}}}} do wyznaczania ogólnego nazwy przestrzeni nazw dla pozycji bazowej i numerkowej, tzn. dla pozycji: jeden, dwa, trzy,..., itd, i ich ogólnej. Parametr ramki tablicy transportu rodzica szablonu: * {{Code|nazwa przestrzeni nazw}}, {{Code|nazwa przestrzeni nazw 1}}, {{Code|nazwa przestrzeni nazw 2}}, {{Code|nazwa przestrzeni nazw 3}},..., {{Code|nazwa przestrzeni nazw i}} - nazwy przestrzeni nazw dla pozycji bazowej oraz zwykłej i ogólnej numerkowej, * {{Code|typ jednostki}}, {{Code|typ jednostki 1}}, {{Code|typ jednostki 2}}, {{Code|typ jednostki 3}},..., {{Code|typ jednostki i}} - typy jednostek, którym odpowiadają pewne przestrzenie przedmiotowe, dla pozycji bazowej, numerkowej i ogólnej, ** {{Code|dyskusja typu jednostki}}, {{Code|dyskusja typu jednostki 1}}, {{Code|dyskusja typ jednostki 2}}, {{Code|dyskusja typ jednostki 3}},..., {{Code|dyskusja typ jednostki i}} - czy dany typ jednostki ma przedstawiać, jeśli niepusta, przestrzeń dyskusji dla pozycji bazowej, numerkowej i ogólnej. Parametry ramki tablicy transportu dziecka: * Parametry dziecka są takie same jak rodzica dla funkcji pudełkowej plus tu wymienione, * {{Code|numer jednostki}} - jak parametr {{Code|i}} nie został ustawiony, to wtedy liczy się ta zmienna. Przykłady: <syntaxhighlight lang="mediawiki"> {{Nazwa szablonu|nazwa przestrzeni nazw=Wikibooks|nazwa przestrzeni nazw 2=Szablon|nazwa przestrzeni nazw i=Moduł}} </syntaxhighlight> W dziecku powiedzmy jest wywołanie, i szukamy nazwy przestrzeni nazw o numerze dwa, która nie została podana, ale istnieje za to jej wersji ogólna {{Code|nazwa przestrzeni nazw i}} i domyślna {{Code|nazwa przestrzeni nazw}}: <syntaxhighlight lang="mediawiki"> {{#invoke:Pudełko|Nazwa przestrzeni nazw|numer jednostki=1}} </syntaxhighlight> Na podstawie powyższego przykładu otrzymamy wynik o schemacie, nie wyniku, bo tam nie ma zmiennej {{Code|nazwa przestrzeni nazw 1}}, ale jest {{Code|nazwa przestrzeni nazw i}}: <syntaxhighlight lang="mediawiki"> <!-- Ale nie "nazwa przestrzeni nazw", bo jej nie ma, ale za to istnieje "nazwa przestrzeni nazw i"; --> <!-- nazwa przestrzeni nazw 2=nazwa przestrzeni nazw i=Moduł; --> <!-- Czyli wynik: --> Moduł <!-- Widzimy, że wygenerowała się nazwa przestrzeni nazw, którą jest przestrzeń programowa, którą również jest "Szablon"; --> </syntaxhighlight> Nie jest brana w tym powyższym przykładzie zmienna {{Code|nazwa przestrzeni nazw}}, bo jej nie ma, ale za to jest {{Code|nazwa przestrzeni nazw i}}, bo ona występuje jako parametr domyślny ogólny dla parametrów numerkowych. Przykłady w wikikodzie: * {{Code|{{m|Pudełko|Nazwa przestrzeni nazw|numer jednostki{{=}}2}}}} → {{Tt|{{#invoke:Pudełko|Nazwa przestrzeni nazw|numer jednostki=2}}}} * {{Code|{{m|Pudełko|Nazwa przestrzeni nazw|Szablon|nazwa przestrzeni nazw i{{=}}Moja przestrzeń|numer jednostki{{=}}2}}}} → {{Tt|{{#invoke:Pudełko|Nazwa przestrzeni nazw|Szablon|nazwa przestrzeni nazw i=Moja przestrzeń|numer jednostki=2}}}} * {{Code|{{m|Pudełko|Nazwa przestrzeni nazw|nazwa przestrzeni nazw 2{{=}}Szablon|numer jednostki{{=}}2}}}} → {{Tt|{{#invoke:Pudełko|Nazwa przestrzeni nazw|nazwa przestrzeni nazw 2=Szablon|numer jednostki=2}}}} * {{Code|{{m|Pudełko|Nazwa przestrzeni nazw|nazwa przestrzeni nazw 2{{=}}Szablon|numer jednostki{{=}}2}}}} → {{Tt|{{#invoke:Pudełko|Nazwa przestrzeni nazw|nazwa przestrzeni nazw i=Szablon|numer jednostki=2}}}} * {{Code|{{m|Pudełko|Nazwa przestrzeni nazw|nazwa przestrzeni nazw{{=}}Szablon|numer jednostki{{=}}2}}}} → {{Tt|{{#invoke:Pudełko|Nazwa przestrzeni nazw|nazwa przestrzeni nazw=Szablon|numer jednostki=2}}}} Powyżej dla przykładu podano parametry nie w rodzicu w szablonie, tylko w dziecku, jeśli chodzi o parametry nazw przestrzeni nazw, ale ich się za to nie powinno podawać w tych ramach, tylko w szablonach, w których wywoływane są te ramki pudełek {{Code|{{m|Pudełko}}}}, ale tak tutaj tak zrobiono by było najłatwiej sprawdzić działanie tego typu funkcji. Analogicznie możemy podawać parametry typu jednostki, np.: wywołaniu modułowym {{Code|{{m|Pudełko|Nazwa przestrzeni nazw|typ jednostki 2{{=}}strona szablonu|numer jednostki{{=}}2}}}}, ale o tym więcej w rozdziałach {{Code|{{sr|# p["Typ jednostki"](frame,i)|p=Pudełko}}}}, {{Code|{{sr|#p["Typ jednostki 2"](frame,i)|p=Pudełko}}}}, {{Code|{{sr|#p["Typ jednostki 3"](frame,i)|p=Pudełko}}}} itp. w „{{sr|#Funkcje typu jednostki|p=Pudełko}}”, on definiuje przestrzenie przedmiotowe, ale można użyć parametru dyskusji typu jednostki z wartością niepustą, wtedy wyświetli się nazwa przestrzeni nazw dyskusji. Również parametry typu jednostki nie powinno się podawać w dziecku w ramce, tylko w rodzicu w szablonie jako parametry, w którym ta ramka jest wywoływana, ale tutaj podano jedynie dla przykładu, jak najłatwiej sprawdzić działanie tych parametrów tej funkcji. Najpierw w funkcji nagłówku brane są parametry nazw przestrzeni nazw, a jeżeli ich nie ma, to parametry typu jednostki, a jeżeli nie ma, to generowane są nazwy na podstawie aktualnego modułu. === {{Code|p["Nazwa przedmiotowej przestrzeni nazw"](frame,...)}} === Funkcja pisze przedmiotową nazwę przestrzeni nazw jakikolwiek nazwy przestrzeni nazw (tzn. nazwę przedmiotową nazwy przestrzenie nazw, czyli nie dyskusji, zamieniana jest na nią samą, czyli identyfikator przestrzeni się nie zmienia, a dyskusji, nie przedmiotową, przekształca się na przedmiotową jej odpowiadającą, czyli w tym przypadku identyfikator przestrzeni zmniejsza się o numer mniej), według podanej w zmiennej {{Code|nazwa przestrzeni nazw}} dla pozycja bazowej w podanych parametrach szablonu rodzicu ramki dziecka, lub dla innej pozycji należy parametr podawać w formie {{Code|nazwa przestrzeni nazw 1}}, {{Code|nazwa przestrzeni nazw 2}}, {{Code|nazwa przestrzeni nazw 3}},..., lub te parametry można podać w postaci ogólnej {{Code|nazwa przestrzeni nazw i}}. Parametry podaje się w parametrach rodzica wywołania tej funkcji {{Code|{{m|Pudełko|Nazwa przedmiotowej przestrzeni nazw}}}} (ale ich nie trzeba podawać w dziecku, ale można) i w parametrach dziecka, jeśli chodzi o zmienną {{Code|numer jednostki}}, czyli np.: {{Code|{{m|Pudełko|Nazwa przedmiotowej przestrzeni nazw|numer jednostki{{=}}<jakaś liczba całkowita dodatnia>}}}}. Te parametry przestrzenne zamiast w rodzicu w szablonie można podać w ramce dziecka, wtedy parametry dziecka mają pierwszeństwo. Parametry przestrzenne mogą mogą być podane w postaci przestrzeni przedmiotowej lub dyskusji, ale ta funkcja zawsze ją zamienia na przedmiotową. Przestrzeń nazw z parametrów nazw przestrzennych może odpowiadać wartości przestrzeni głównej, to wtedy odpowiednia przestrzeń nazw z parametru nazwy jednostki się nie liczy w tej funkcji, aby się liczyła należy użyć funkcji {{Code|{{sr|#p["Nazwa przedmiotowej przestrzeni nazw 2"](frame,...)|p=Pudełko}}}}. Definicja skrótowa funkcji: <syntaxhighlight lang="lua"> p["Nazwa przedmiotowej przestrzeni nazw"]=function(frame,czy_uwzglednic_alternatywna_nazwe,i)...end; </syntaxhighlight> Wtedy ciało funkcji tej, czyli jego definicja w środku, jest: <syntaxhighlight lang="lua"> -- Jest liczony numer parametru nazwy przestrzeni nazw, domyslnie chodzi tu o numer bazowy parametrów przestrzennych; local numer_jednostki=i or frame.args["numer jednostki"]; local liczba_numer_jednostki=((numer_jednostki)and(tonumber(numer_jednostki))or 0); local pudelko_pomocne_modul=require("Module:Pudełko/Pomocne"); -- Liczy nazwę przestrzeni nazw przedmiotową na podstawie podanych parametrów; return pudelko_pomocne_modul.Nazwa_przestrzeni_nazw(frame,1, czy_uwzglednic_alternatywna_nazwe,liczba_numer_jednostki); </syntaxhighlight> Parametry funkcji: * {{Code|frame}} - tablica ramki tablicy transportu, * {{Code|czy_uwzglednic_alternatywna_nazwe}} - czy ma uwzględniać nazwę przestrzeni nazw domyślną szablonu, dostępne wartości: {{Code|false}}, w której nazwa domyślna nie jest uwzględniana wtedy, oraz {{Code|nil}} i {{Code|true}}, które oznaczają to samo, w tym jeżeli ona jest uwzględniana, wtedy jest brany parametr pierwszy dziecka, który musi istnieć przy takiej wartości tego parametru, tzn. {{Code|{{m|Pudełko|Nazwa przedmiotowej przestrzeni nazw|Dyskusja szablonu}}}} - ta nazwa domyślna zostanie zamieniona na przedmiotową, a jak ona by była przedmiotowa, to żadnej zamiany by nie było, a nazwa uzyskana z nazwy przestrzeni nazw z parametrów przestrzennych jest w takim przypadku błędna, to w takim razie brany jest ten parametr, a jeżeli ta nazwa domyślna jest błędna, czyli {{Code|{{m|Pudełko|Nazwa przedmiotowej przestrzeni nazw|Moja przestrzeń}}}}, wtedy funkcja zwraca stan błędu {{Code|(błąd)}}. * {{Code|i}} - numer zmiennej nazwy przestrzeni nazw. Funkcja wykorzystuje {{Code|{{sr|#p.Nazwa_przestrzeni_nazw(frame,...)|p=Pudełko/Pomocne}}}} do wyznaczania ogólnego nazwy przestrzeni nazw dla pozycji bazowej i numerkowej, tzn. dla pozycji: jeden, dwa, trzy,..., itd, i ich ogólnej. Parametr ramki tablicy transportu rodzica szablonu: * {{Code|nazwa przestrzeni nazw}}, {{Code|nazwa przestrzeni nazw 1}}, {{Code|nazwa przestrzeni nazw 2}}, {{Code|nazwa przestrzeni nazw 3}},..., {{Code|nazwa przestrzeni nazw i}} - nazwy przestrzeni nazw dla pozycji bazowej oraz zwykłej i ogólnej numerkowej, * {{Code|typ jednostki}}, {{Code|typ jednostki 1}}, {{Code|typ jednostki 2}}, {{Code|typ jednostki 3}},..., {{Code|typ jednostki i}} - typy jednostek, którym odpowiadają pewne przestrzenie przedmiotowe, dla pozycji bazowej, numerkowej i ogólnej. Parametry ramki tablicy transportu dziecka: * Parametry dziecka są takie same jak rodzica dla funkcji pudełkowej plus tu wymienione, * {{Code|numer jednostki}} - jak parametr {{Code|i}} nie został ustawiony, to wtedy liczy się ta zmienna. Przykłady: <syntaxhighlight lang="mediawiki"> {{Nazwa szablonu|nazwa przestrzeni nazw=Dyskusja Wikibooks|nazwa przestrzeni nazw 2=Dyskusja szablonu|nazwa przestrzeni nazw i=Dyskusja modułu}} </syntaxhighlight> W dziecku powiedzmy jest wywołanie, i szukamy nazwy przestrzeni nazw o numerze dwa, która nie została podana, ale istnieje za to jej wersji ogólna {{Code|nazwa przestrzeni nazw i}} i domyślna {{Code|nazwa przestrzeni nazw}}: <syntaxhighlight lang="mediawiki"> {{#invoke:Pudełko|Nazwa przedmiotowej przestrzeni nazw|numer jednostki=1}} </syntaxhighlight> Na podstawie powyższego przykładu otrzymamy wynik o schemacie, nie wyniku, bo tam nie ma zmiennej {{Code|nazwa przestrzeni nazw 1}}, ale jest {{Code|nazwa przestrzeni nazw i}}: <syntaxhighlight lang="mediawiki"> <!-- Ale nie "nazwa przestrzeni nazw", bo jej nie ma, ale za to istnieje "nazwa przestrzeni nazw i"; --> <!-- nazwa przestrzeni nazw 2=nazwa przestrzeni nazw i=Dyskusja modułu; --> <!-- Czyli wynik: --> Moduł <!-- Widzimy, że wygenerowała się nazwa przestrzeni nazw, którą jest przestrzeń przedmiotowa programowa przestrzeni dyskusji "Dyskusja modułu", którą również jest "Szablon" jego przestrzeni dyskusji "Dyskusja szablonu", a dla ich przestrzeni przedmiotowej, zamiast dyskusji, to samo przekształca się na to samo; --> </syntaxhighlight> Nie jest brana w tym powyższym przykładzie zmienna {{Code|nazwa przestrzeni nazw}}, bo jej nie ma, ale za to jest {{Code|nazwa przestrzeni nazw i}}, bo ona występuje jako parametr domyślny ogólny dla parametrów numerkowych. Przykłady w wikikodzie: * {{Code|{{m|Pudełko|Nazwa przedmiotowej przestrzeni nazw|numer jednostki{{=}}2}}}} → {{Tt|{{#invoke:Pudełko|Nazwa przedmiotowej przestrzeni nazw|numer jednostki=2}}}} * {{Code|{{m|Pudełko|Nazwa przedmiotowej przestrzeni nazw|Dyskusja szablonu|nazwa przestrzeni nazw i{{=}}Moja przestrzeń|numer jednostki{{=}}2}}}} → {{Tt|{{#invoke:Pudełko|Nazwa przedmiotowej przestrzeni nazw|Dyskusja szablonu|nazwa przestrzeni nazw i=Moja przestrzeń|numer jednostki=2}}}} * {{Code|{{m|Pudełko|Nazwa przedmiotowej przestrzeni nazw|nazwa przestrzeni nazw 2{{=}}Dyskusja szablonu|numer jednostki{{=}}2}}}} → {{Tt|{{#invoke:Pudełko|Nazwa przedmiotowej przestrzeni nazw|nazwa przestrzeni nazw 2=Dyskusja szablonu|numer jednostki=2}}}} * {{Code|{{m|Pudełko|Nazwa przedmiotowej przestrzeni nazw|nazwa przestrzeni nazw 2{{=}}Dyskusja szablonu|numer jednostki{{=}}2}}}} → {{Tt|{{#invoke:Pudełko|Nazwa przedmiotowej przestrzeni nazw|nazwa przestrzeni nazw i=Dyskusja szablonu|numer jednostki=2}}}} * {{Code|{{m|Pudełko|Nazwa przedmiotowej przestrzeni nazw|nazwa przestrzeni nazw{{=}}Dyskusja szablonu|numer jednostki{{=}}2}}}} → {{Tt|{{#invoke:Pudełko|Nazwa przedmiotowej przestrzeni nazw|nazwa przestrzeni nazw=Dyskusja szablonu|numer jednostki=2}}}} Powyżej dla przykładu podano parametry nie w rodzicu w szablonie, tylko w dziecku, jeśli chodzi o parametry nazw przestrzeni nazw, ale ich się za to nie powinno podawać w tych ramach, tylko w szablonach, w których wywoływane są te ramki pudełek {{Code|{{m|Pudełko}}}}, ale tak tutaj tak zrobiono by było najłatwiej sprawdzić działanie tego typu funkcji. Analogicznie możemy podawać parametry typu jednostki, np.: wywołaniu modułowym {{Code|{{m|Pudełko|Nazwa przedmiotowej przestrzeni nazw|typ jednostki 2{{=}}strona szablonu|numer jednostki{{=}}2}}}}, ale o tym więcej w rozdziałach {{Code|{{sr|# p["Typ jednostki"](frame,i)|p=Pudełko}}}}, {{Code|{{sr|#p["Typ jednostki 2"](frame,i)|p=Pudełko}}}}, {{Code|{{sr|#p["Typ jednostki 3"](frame,i)|p=Pudełko}}}} itp. w „{{sr|#Funkcje typu jednostki|p=Pudełko}}”, ale wtedy ta sama nazwa przestrzeni nazw reprezentowana przez {{Parametr|typ jednostki 2|strona szablonu}}, jest zamieniana na to samo, lepiej jest tutaj używać parametrów przestrzennych nazw niż typu jednostki, bo typ jednostki ma taką samą wartość dla przestrzeni przedmiotowej, co dyskusji. Tutaj parametr dyskusji typu jednostki bazowy i numerkowy ogólny, czy szczegółowy, nie gra roli, bo nawet, gdy wygenerujemy nazwę przestrzeni dyskusji za pomoca tego parametru, to i tak otrzymamy na samym końcu jego nazwę przedmiotową. Również parametry typu jednostki nie powinno się podawać w dziecku w ramce, tylko w rodzicu w szablonie jako parametry, w którym ta ramka jest wywoływana, ale tutaj podano jedynie dla przykładu, jak najłatwiej sprawdzić działanie tych parametrów tej funkcji. Najpierw w funkcji nagłówku brane są parametry nazw przestrzeni nazw, a jeżeli ich nie ma, to parametry typu jednostki, a jeżeli nie ma, to generowane są nazwy na podstawie aktualnego modułu. === {{Code|p["Nazwa przestrzeni nazw dyskusji"](frame,...)}} === Funkcja pisze nazwę przestrzeni nazw dyskusji jakikolwiek nazwy przestrzeni nazw (tzn. nazwę przedmiotową nazwy przestrzenie nazw, czyli nie dyskusji, zamieniana jest na dyskusji, czyli identyfikator przestrzeni się zmienia jeden wyżej, a dyskusji, nie przedmiotową, przekształca się na tą samą), według podanej w zmiennej {{Code|nazwa przestrzeni nazw}} dla pozycja bazowej w podanych parametrach szablonu rodzicu ramki dziecka, lub dla innej pozycji należy parametr podawać w formie {{Code|nazwa przestrzeni nazw 1}}, {{Code|nazwa przestrzeni nazw 2}}, {{Code|nazwa przestrzeni nazw 3}},..., lub te parametry można podać w postaci ogólnej {{Code|nazwa przestrzeni nazw i}}. Parametry podaje się w parametrach rodzica wywołania tej funkcji {{Code|{{m|Pudełko|Nazwa przestrzeni nazw dyskusji}}}} (ale ich nie trzeba podawać w dziecku, ale można) i w parametrach dziecka, jeśli chodzi o zmienną {{Code|numer jednostki}}, czyli np.: {{Code|{{m|Pudełko|Nazwa przestrzeni nazw dyskusji|numer jednostki{{=}}<jakaś liczba całkowita dodatnia>}}}}. Te parametry przestrzenne zamiast w rodzicu w szablonie można podać w ramce dziecka, wtedy parametry dziecka mają pierwszeństwo. Parametry przestrzenne mogą mogą być podane w postaci przestrzeni przedmiotowej lub dyskusji, ale ta funkcja zawsze ją zamienia na dyskusji. Przestrzeń nazw z parametrów nazw przestrzennych może odpowiadać wartości przestrzeni głównej, to wtedy odpowiednia przestrzeń nazw z parametru nazwy jednostki się nie liczy w tej funkcji, aby się liczyła należy użyć funkcji {{Code|{{sr|#p["Nazwa przestrzeni nazw dyskusji 2"](frame,...)|p=Pudełko}}}}. Definicja skrótowa funkcji: <syntaxhighlight lang="lua"> p["Nazwa przestrzeni nazw dyskusji"]=function(frame,czy_uwzglednic_alternatywna_nazwe,i)...end; </syntaxhighlight> Wtedy ciało funkcji tej, czyli jego definicja w środku, jest: <syntaxhighlight lang="lua"> -- Jest liczony numer parametru nazwy przestrzeni nazw, domyslnie chodzi tu o numer bazowy parametrów przestrzennych; local numer_jednostki=i or frame.args["numer jednostki"]; local liczba_numer_jednostki=((numer_jednostki)and(tonumber(numer_jednostki))or 0); local pudelko_pomocne_modul=require("Module:Pudełko/Pomocne"); -- Liczy nazwę przestrzeni nazw dyskusji na podstawie podanych parametrów; return pudelko_pomocne_modul.Nazwa_przestrzeni_nazw(frame,2, czy_uwzglednic_alternatywna_nazwe,liczba_numer_jednostki); </syntaxhighlight> Parametry funkcji: * {{Code|frame}} - tablica ramki tablicy transportu, * {{Code|czy_uwzglednic_alternatywna_nazwe}} - czy ma uwzględniać nazwę przestrzeni nazw domyślną szablonu, dostępne wartości: {{Code|false}}, w której nazwa domyślna nie jest uwzględniana wtedy, oraz {{Code|nil}} i {{Code|true}}, które oznaczają to samo, w tym jeżeli ona jest uwzględniana, wtedy jest brany parametr pierwszy dziecka, który musi istnieć przy takiej wartości tego parametru, tzn. {{Code|{{m|Pudełko|Nazwa przestrzeni nazw dyskusji|Szablon}}}} - ta nazwa domyślna zostanie przekształcona na dyskusji, a jeżeli ona by była dyskusji, to nie byłoby żadnego przekształcenia, a nazwa uzyskana nazwy przestrzeni nazw z parametrów przestrzennych jest w takim przypadku błędna, to w takim razie brany jest ten parametr, a jeżeli nazwa domyślna jest błędna, czyli {{Code|{{m|Pudełko|Nazwa przestrzeni nazw dyskusji|Moja przestrzeń}}}}, wtedy funkcja zwraca stan błędu {{Code|(błąd)}}. * {{Code|i}} - numer zmiennej nazwy przestrzeni nazw. Funkcja wykorzystuje {{Code|{{sr|#p.Nazwa_przestrzeni_nazw(frame,...)|p=Pudełko/Pomocne}}}} do wyznaczania ogólnego nazwy przestrzeni nazw dla pozycji bazowej i numerkowej, tzn. dla pozycji: jeden, dwa, trzy,..., itd, i ich ogólnej. Parametr ramki tablicy transportu rodzica szablonu: * {{Code|nazwa przestrzeni nazw}}, {{Code|nazwa przestrzeni nazw 1}}, {{Code|nazwa przestrzeni nazw 2}}, {{Code|nazwa przestrzeni nazw 3}},..., {{Code|nazwa przestrzeni nazw i}} - nazwy przestrzeni nazw dla pozycji bazowej oraz zwykłej i ogólnej numerkowej, * {{Code|typ jednostki}}, {{Code|typ jednostki 1}}, {{Code|typ jednostki 2}}, {{Code|typ jednostki 3}},..., {{Code|typ jednostki i}} - typy jednostek, którym odpowiadają pewne przestrzenie przedmiotowe, dla pozycji bazowej, numerkowej i ogólnej. Parametry ramki tablicy transportu dziecka: * Parametry dziecka są takie same jak rodzica dla funkcji pudełkowej plus tu wymienione, * {{Code|numer jednostki}} - jak parametr {{Code|i}} nie został ustawiony, to wtedy liczy się ta zmienna. Przykłady: <syntaxhighlight lang="mediawiki"> {{Nazwa szablonu|nazwa przestrzeni nazw=Wikibooks|nazwa przestrzeni nazw 2=Szablon|nazwa przestrzeni nazw i=Moduł}} </syntaxhighlight> W dziecku powiedzmy jest wywołanie, i szukamy nazwy przestrzeni nazw o numerze dwa, która nie została podana, ale istnieje za to jej wersji ogólna {{Code|nazwa przestrzeni nazw i}} i domyślna {{Code|nazwa przestrzeni nazw}}: <syntaxhighlight lang="mediawiki"> {{#invoke:Pudełko|Nazwa przestrzeni nazw dyskusji|numer jednostki=1}} </syntaxhighlight> Na podstawie powyższego przykładu otrzymamy wynik o schemacie, nie wyniku, bo tam nie ma zmiennej {{Code|nazwa przestrzeni nazw 1}}, ale jest {{Code|nazwa przestrzeni nazw i}}: <syntaxhighlight lang="mediawiki"> <!-- Ale nie "nazwa przestrzeni nazw", bo jej nie ma, ale za to istnieje "nazwa przestrzeni nazw i"; --> <!-- nazwa przestrzeni nazw 2=nazwa przestrzeni nazw i=Moduł; --> <!-- Czyli wynik: --> Dyskusja modułu <!-- Widzimy, że wygenerowała się nazwa przestrzeni nazw, którą jest przestrzeń dyskusji przestrzeni programowej przestrzeni przedmiotowej "Moduł", którą również jest "Szablon" jego przestrzeni dyskusji "Dyskusja szablonu", a dla ich przestrzeni przedmiotowej, zamiast dyskusji, to przekształca się na dyskusji jej odpowiadającą; --> </syntaxhighlight> Nie jest brana w tym powyższym przykładzie zmienna {{Code|nazwa przestrzeni nazw}}, bo jej nie ma, ale za to jest {{Code|nazwa przestrzeni nazw i}}, bo ona występuje jako parametr domyślny ogólny dla parametrów numerkowych. Przykłady w wikikodzie: * {{Code|{{m|Pudełko|Nazwa przestrzeni nazw dyskusji|numer jednostki{{=}}2}}}} → {{Tt|{{#invoke:Pudełko|Nazwa przestrzeni nazw dyskusji|numer jednostki=2}}}} * {{Code|{{m|Pudełko|Nazwa przestrzeni nazw dyskusji|Szablon|nazwa przestrzeni nazw i{{=}}Moja przestrzeń|numer jednostki{{=}}2}}}} → {{Tt|{{#invoke:Pudełko|Nazwa przestrzeni nazw dyskusji|Szablon|nazwa przestrzeni nazw i=Moja przestrzeń|numer jednostki=2}}}} * {{Code|{{m|Pudełko|Nazwa przestrzeni nazw dyskusji|nazwa przestrzeni nazw 2{{=}}Szablon|numer jednostki{{=}}2}}}} → {{Tt|{{#invoke:Pudełko|Nazwa przestrzeni nazw dyskusji|nazwa przestrzeni nazw 2=Szablon|numer jednostki=2}}}} * {{Code|{{m|Pudełko|Nazwa przestrzeni nazw dyskusji|nazwa przestrzeni nazw 2{{=}}Szablon|numer jednostki{{=}}2}}}} → {{Tt|{{#invoke:Pudełko|Nazwa przestrzeni nazw dyskusji|nazwa przestrzeni nazw i=Szablon|numer jednostki=2}}}} * {{Code|{{m|Pudełko|Nazwa przestrzeni nazw dyskusji|nazwa przestrzeni nazw{{=}}Szablon|numer jednostki{{=}}2}}}} → {{Tt|{{#invoke:Pudełko|Nazwa przestrzeni nazw dyskusji|nazwa przestrzeni nazw=Szablon|numer jednostki=2}}}} Powyżej dla przykładu podano parametry nie w rodzicu w szablonie, tylko w dziecku, jeśli chodzi o parametry nazw przestrzeni nazw, ale ich się za to nie powinno podawać w tych ramach, tylko w szablonach, w których wywoływane są te ramki pudełek {{Code|{{m|Pudełko}}}}, ale tak tutaj tak zrobiono by było najłatwiej sprawdzić działanie tego typu funkcji. Analogicznie możemy podawać parametry typu jednostki, np.: wywołaniu modułowym {{Code|{{m|Pudełko|Nazwa przestrzeni nazw dyskusji|typ jednostki 2{{=}}strona szablonu|numer jednostki{{=}}2}}}}, ale o tym więcej w rozdziałach {{Code|{{sr|# p["Typ jednostki"](frame,i)|p=Pudełko}}}}, {{Code|{{sr|#p["Typ jednostki 2"](frame,i)|p=Pudełko}}}}, {{Code|{{sr|#p["Typ jednostki 3"](frame,i)|p=Pudełko}}}} itp. w „{{sr|#Funkcje typu jednostki|p=Pudełko}}”, ale wtedy nazwa przestrzeni nazw reprezentowana przez {{Parametr|typ jednostki 2|strona szablonu}}, jest zamieniana na nazwę przestrzeni nazw dyskusji. Parametr dyskusji typu jednostki bazowy lub dla danego numerka ogólny, czy szczegółowy, nie gra roli. Również parametry typu jednostki nie powinno się podawać w dziecku w ramce, tylko w rodzicu w szablonie jako parametry, w którym ta ramka jest wywoływana, ale tutaj podano jedynie dla przykładu, jak najłatwiej sprawdzić działanie tych parametrów tej funkcji. Najpierw w funkcji nagłówku brane są parametry nazw przestrzeni nazw, a jeżeli ich nie ma, to parametry typu jednostki, a jeżeli nie ma, to generowane są nazwy na podstawie aktualnego modułu. == Funkcje nazw przestrzeni nazw drugiej wersji == === {{Code|p["Nazwa przestrzeni nazw 2"](frame,...)}} === Funkcja pisze nazwę przestrzeni nazw, niezależnie, czy to jest przedmiotowa, czy dyskusji, według, i nie zawsze tylko, podanej w zmiennej {{Code|nazwa przestrzeni nazw}} dla pozycja bazowej w podanych parametrach szablonu rodzicu ramki dziecka, lub dla innej pozycji należy parametr podawać w formie {{Code|nazwa przestrzeni nazw 1}}, {{Code|nazwa przestrzeni nazw 2}}, {{Code|nazwa przestrzeni nazw 3}},..., lub te parametry można podać w postaci ogólnej {{Code|nazwa przestrzeni nazw i}}. W tej funkcji trzeba też podawać parametry nazwy jednostek {{Code|nazwa jednostki}}, {{Code|nazwa jednostki 1}}, {{Code|nazwa jednostki 2}}, {{Code|nazwa jednostki 3}},... Parametry podaje się w parametrach rodzica wywołania tej funkcji {{Code|{{m|Pudełko|Nazwa przestrzeni nazw 2}}}} (ale ich nie trzeba podawać w dziecku, ale można) i w parametrach dziecka, jeśli chodzi o zmienną {{Code|numer jednostki}}, czyli np.: {{Code|{{m|Pudełko|Nazwa przestrzeni nazw 2|numer jednostki{{=}}<jakaś liczba całkowita dodatnia>}}}}. Te parametry przestrzenne zamiast w rodzicu w szablonie można podać w ramce dziecka, wtedy parametry dziecka mają pierwszeństwo. Przestrzeń nazw z parametrów nazw przestrzennych może odpowiadać wartości przestrzeni głównej, to wtedy odpowiednia przestrzeń nazw z parametru nazwy jednostki się liczy w tej funkcji, wtedy jest liczona nazwa przestrzeni nazw z tego parametru. Gdy parametry przestrzenne lub typ jednostki w drugim podejściu nie wskazują na przestrzeń główną, to wtedy działanie tej funkcji jest podobne do {{Code|{{sr|#p["Nazwa przestrzeni nazw"](frame,...)|p=Pudełko}}}}. Definicja skrótowa funkcji: <syntaxhighlight lang="lua"> p["Nazwa przestrzeni nazw 2"]=function(frame,czy_uwzglednic_alternatywna_nazwe,i)...end; </syntaxhighlight> Wtedy ciało funkcji tej, czyli jego definicja w środku, jest: <syntaxhighlight lang="lua"> local pudelko_pomocne_modul=require("Module:Pudełko/Pomocne"); -- Liczy nazwę przestrzeni nazw, jeżeli z parametrów przestrzennych przestrzeń wskazuje na główną, to wtedy jest liczona przestrzeń nazw z nazwy jednostki; return pudelko_pomocne_modul.Nazwa_przestrzeni_nazw_2(frame,czy_uwzglednic_alternatywna_nazwe,i) </syntaxhighlight> Parametry funkcji: * {{Code|frame}} - tablica ramki tablicy transportu, * {{Code|czy_uwzglednic_alternatywna_nazwe}} - czy ma uwzględniać nazwę przestrzeni nazw domyślną szablonu, dostępne wartości: {{Code|false}}, w której nazwa domyślna nie jest uwzględniana wtedy, oraz {{Code|nil}} i {{Code|true}}, które oznaczają to samo, w tym jeżeli ona jest uwzględniana, wtedy jest brany parametr pierwszy dziecka, który musi istnieć przy takiej wartości tego parametru, tzn. {{Code|{{m|Pudełko|Nazwa przestrzeni nazw 2|Szablon}}}}, a nazwa uzyskana nazwy przestrzeni nazw jest w takim przypadku błędna, a jeżeli nazwa domyślna jest błędna, czyli {{Code|{{m|Pudełko|Nazwa przestrzeni nazw 2|Moja przestrzeń}}}}, wtedy funkcja zwraca stan błędu {{Code|(błąd)}}. * {{Code|i}} - numer zmiennej nazwy przestrzeni nazw. Funkcja wykorzystuje {{Code|{{sr|#p.Nazwa_przestrzeni_nazw_2(frame,...)|p=Pudełko/Pomocne}}}} do wyznaczania ogólnego nazwy przestrzeni nazw dla pozycji bazowej i numerkowej, tzn. dla pozycji: jeden, dwa, trzy,..., itd, i ich ogólnej. Parametr ramki tablicy transportu rodzica szablonu: * {{Code|nazwa przestrzeni nazw}}, {{Code|nazwa przestrzeni nazw 1}}, {{Code|nazwa przestrzeni nazw 2}}, {{Code|nazwa przestrzeni nazw 3}},..., {{Code|nazwa przestrzeni nazw i}} - nazwy przestrzeni nazw dla pozycji bazowej oraz zwykłej i ogólnej numerkowej, * {{Code|nazwa jednostki}}, {{Code|nazwa jednostki 1}}, {{Code|nazwa jednostki 2}}, {{Code|nazwa jednostki 3}},... - nazwy jednostek dla pozycji bazowej i numerkowej, * {{Code|typ jednostki}}, {{Code|typ jednostki 1}}, {{Code|typ jednostki 2}}, {{Code|typ jednostki 3}},..., {{Code|typ jednostki i}} - typy jednostek, którym odpowiadają pewne przestrzenie przedmiotowe, dla pozycji bazowej, numerkowej i ogólnej, ** {{Code|dyskusja typu jednostki}}, {{Code|dyskusja typu jednostki 1}}, {{Code|dyskusja typ jednostki 2}}, {{Code|dyskusja typ jednostki 3}},..., {{Code|dyskusja typ jednostki i}} - czy dany typ jednostki ma przedstawiać, jeśli niepusta, przestrzeń dyskusji dla pozycji bazowej, numerkowej i ogólnej. Parametry ramki tablicy transportu dziecka: * Parametry dziecka są takie same jak rodzica dla funkcji pudełkowej plus tu wymienione, * {{Code|numer jednostki}} - jak parametr {{Code|i}} nie został ustawiony, to wtedy liczy się ta zmienna. Przykłady: <syntaxhighlight lang="mediawiki"> {{Nazwa szablonu|nazwa przestrzeni nazw=Wikibooks|nazwa przestrzeni nazw 1=Szablon|nazwa przestrzeni nazw i=|nazwa jednostki 2=Wikibooks:Strona}} </syntaxhighlight> W dziecku powiedzmy jest wywołanie, i szukamy nazwy przestrzeni nazw o numerze dwa, która została podana, ale istnieje za to jej wersji ogólna {{Code|nazwa przestrzeni nazw i}} i domyślna {{Code|nazwa przestrzeni nazw}}, ale wtedy dla tego numerkowego liczy się to ogólne z {{Code| i}}, a ponieważ ta nazwa jest pusta, więc będziemy liczyli nazwę przestrzeni nazw z {{Code|nazwa jednostki 2}}: <syntaxhighlight lang="mediawiki"> {{#invoke:Pudełko|Nazwa przestrzeni nazw 2|numer jednostki=2}} </syntaxhighlight> Na podstawie powyższego przykładu otrzymamy wynik o schemacie, nie wyniku, bo tam nie ma zmiennej {{Code|nazwa przestrzeni nazw 1}}, ale jest {{Code|nazwa przestrzeni nazw i}}: <syntaxhighlight lang="mediawiki"> <!-- Ale nie "nazwa przestrzeni nazw 2", bo jej nie ma, ale za to istnieje "nazwa przestrzeni nazw i"; --> <!-- nazwa przestrzeni nazw 2=nazwa przestrzeni nazw i="", a nazwa jednostki 2="Wikibooks:Strona"; --> <!-- Czyli wynik: --> Wikibooks <!-- Widzimy, że wygenerowała się nazwa przestrzeni nazw, którą jest przestrzeń nieprogramowa, ale projektu, wychodząca z nazwy jednostek w tym przypadku z "nazwa jednostki 2"; --> </syntaxhighlight> Nie jest brana w tym powyższym przykładzie zmienna {{Code|nazwa przestrzeni nazw}}, bo jej nie ma, ale za to jest {{Code|nazwa przestrzeni nazw i}}, bo ona występuje jako parametr domyślny ogólny dla parametrów numerkowych. Tytaj jest używana jest zmienna {{Code|nazwa jednostki 2}} do wygenerowania ostatecznego wyniku, bo jak można zauważyć, parametry przestrzenne wskazują na przestrzeń główną, a nazwy jednostek już nie. Przykłady w wikikodzie: * {{Code|{{m|Pudełko|Nazwa przestrzeni nazw 2|numer jednostki{{=}}2}}}} → {{Tt|{{#invoke:Pudełko|Nazwa przestrzeni nazw 2|numer jednostki=2}}}} * {{Code|{{m|Pudełko|Nazwa przestrzeni nazw 2|Szablon|nazwa przestrzeni nazw i{{=}}Moja przestrzeń|numer jednostki{{=}}2}}}} → {{Tt|{{#invoke:Pudełko|Nazwa przestrzeni nazw 2|Szablon|nazwa przestrzeni nazw i=Moja przestrzeń|numer jednostki=2}}}} * {{Code|{{m|Pudełko|Nazwa przestrzeni nazw 2|nazwa przestrzeni nazw 2{{=}}|nazwa jednostki 2{{=}}Szablon:Strona|numer jednostki{{=}}2}}}} → {{Tt|{{#invoke:Pudełko|Nazwa przestrzeni nazw 2|nazwa przestrzeni nazw 2=|nazwa jednostki 2=Szablon:Strona|numer jednostki=2}}}} * {{Code|{{m|Pudełko|Nazwa przestrzeni nazw 2|nazwa przestrzeni nazw i{{=}}|nazwa jednostki 2{{=}}Szablon:Strona|numer jednostki{{=}}2}}}} → {{Tt|{{#invoke:Pudełko|Nazwa przestrzeni nazw 2|nazwa przestrzeni nazw i=|nazwa jednostki 2=Szablon:Strona|numer jednostki=2}}}} * {{Code|{{m|Pudełko|Nazwa przestrzeni nazw 2|Szablon|nazwa przestrzeni nazw{{=}}|nazwa jednostki 2{{=}}Wikibooks:Strona|numer jednostki{{=}}2}}}} → {{Tt|{{#invoke:Pudełko|Nazwa przestrzeni nazw 2|Szablon|nazwa przestrzeni nazw=|nazwa jednostki 2=Wikibooks:Strona|numer jednostki=2}}}} Powyżej dla przykładu podano parametry nie w rodzicu w szablonie, tylko w dziecku, jeśli chodzi o parametry nazw przestrzeni nazw i nazw jednostek, ale ich się za to nie powinno podawać w tych ramach, tylko w szablonach, w których wywoływane są te ramki pudełek {{Code|{{m|Pudełko}}}}, ale tak tutaj tak zrobiono by było najłatwiej sprawdzić działanie tego typu funkcji. Analogicznie możemy podawać parametry typu jednostki, np.: wywołaniu modułowym {{Code|{{m|Pudełko|Nazwa przestrzeni nazw 2|typ jednostki 2{{=}}Podręcznik|nazwa jednostki 2{{=}}Szablon:Strona|numer jednostki{{=}}2}}}} (ale wtedy jest brana przestrzeń nazw z nazwy jednostki), ale o tym więcej w rozdziałach {{Code|{{sr|# p["Typ jednostki"](frame,i)|p=Pudełko}}}}, {{Code|{{sr|#p["Typ jednostki 2"](frame,i)|p=Pudełko}}}}, {{Code|{{sr|#p["Typ jednostki 3"](frame,i)|p=Pudełko}}}} itp. w „{{sr|#Funkcje typu jednostki|p=Pudełko}}”, on definiuje przestrzenie przedmiotowe, ale można użyć parametru dyskusji typu jednostki z wartością niepustą, wtedy wyświetli się nazwa przestrzeni nazw dyskusji. Jeżeli typ jednostki wskazuje na przestrzeń nazw główną, wtedy się liczą parametry nazw jednostek. Również parametry typu jednostki nie powinno się podawać w dziecku w ramce, tylko w rodzicu w szablonie jako parametry, w którym ta ramka jest wywoływana, ale tutaj podano jedynie dla przykładu, jak najłatwiej sprawdzić działanie tych parametrów tej funkcji. Najpierw w funkcji nagłówku brane są parametry nazw przestrzeni nazw, a jeżeli ich nie ma, to parametry typu jednostki, a jeżeli nie ma lub parametry przestrzenne wskazują na przestrzeń główną, i nie ma nazwy jednostki, to generowane są nazwy tej funkcji na podstawie aktualnej strony. === {{Code|p["Nazwa przedmiotowej przestrzeni nazw 2"](frame,...)}} === === {{Code|p["Nazwa przestrzeni nazw dyskusji 2"](frame,...)}} === == Funkcje pełnych nazw jednostki == === {{Code|p["Pełna nazwa dyskusji jednostki"](frame,i)}} === === {{Code|p["Pełna nazwa przedmiotowa jednostki"](frame,i)}} === === {{Code|p["Pełna nazwa jednostki"](frame,i)}} === == Funkcje pełnych nazw jednostki drugiej wersji == === {{Code|p["Pełna nazwa dyskusji jednostki 2"](frame,i)}} === === {{Code|p["Pełna nazwa przedmiotowa jednostki 2"](frame,i)}} === === {{Code|p["Pełna nazwa jednostki 2"](frame,i)}} === == Funkcje pełnych nazw jednostki trzeciej wersji == === {{Code|p["Pełna nazwa dyskusji jednostki 3"](frame,i)}} === === {{Code|p["Pełna nazwa przedmiotowa jednostki 3"](frame,i)}} === === {{Code|p["Pełna nazwa jednostki 3"](frame,i)}} === == Funkcje nazw jednostki == === {{Code|p["Nazwa jednostki"](frame,i)}} === == Funkcje nazw jednostki drugiej wersji == === {{Code|p["Nazwa jednostki 2"](frame,i)}} === === {{Code|p["Nazwa przedmiotowa jednostki 2"](frame,i)}} === === {{Code|p["Nazwa dyskusji jednostki 2"](frame,i)}} === == Funkcje nazw przestrzeni nazw trzeciej wersji == === {{Code|p["Nazwa przestrzeni nazw 3"](frame,i)}} === === {{Code|p["Nazwa przedmiotowej przestrzeni nazw 3"](frame,i)}} === === {{Code|p["Nazwa przestrzeni nazw dyskusji 3"](frame,i)}} === == Funkcje nazw jednostki trzeciej wersji == === {{Code|p["Nazwa jednostki 3"](frame,i)}} === === {{Code|p["Nazwa przedmiotowa jednostki 3"](frame,i)}} === === {{Code|p["Nazwa dyskusji jednostki 3"](frame,i)}} === == Funkcje typu jednostki == === {{Code|p["Typ jednostki"](frame,i)}} === === {{Code|p["Typ jednostki 2"](frame,i)}} === === {{Code|p["Typ jednostki 3"](frame,i)}} === === Funkcje typu jednostki przedmiotowe === ==== {{Code|p["Przedmiotowy typ jednostki"](frame,i)}} ==== ==== {{Code|p["Przedmiotowy typ jednostki 2"](frame,i)}} ==== ==== {{Code|p["Przedmiotowy typ jednostki 3"](frame,i)}} ==== === Fukcje typu jednostki dyskusji === ==== {{Code|p["Dyskusyjny typ jednostki"](frame,i)}} ==== ==== {{Code|p["Dyskusyjny typ jednostki 2"](frame,i)}}} ==== ==== {{Code|p["Dyskusyjny typ jednostki 3"](frame,i)}} ==== == Funkcje chech pudełka == === {{Code|p["Cecha pudełka"](frame)}} === === {{Code|p["Przedmiotowa cecha pudełka"](frame)}} === === {{Code|p["Dyskusyjna cecha pudełka"](frame)}} === == Fukcje ogólnego pudełka == === {{Code|p["Ogólne pudełko"](frame)}} === == Funkcje ogólne == === {{Code|p["Tekst pudełka"](frame)}} === == Funkcje błędów pudełka == === {{Code|p["Błędy pudełka"](frame)}} === === {{Code|p["Przedmiotowe błędy pudełka"](frame)}} === === {{Code|p["Dyskusyjne błędy pudełka"](frame)}} === == Funkcje nazw stron == === {{Code|p["Nazwa strony głównej projektu"](frame,i)}} === === {{Code|p["Nazwa strony głównej dla dzieci projektu"](frame,i)}} === == Funkcje kodów == === {{Code|p["Kod języka"](frame,i)}} === === {{Code|p["Kod projektu"](frame,i)}} === === {{Code|p["Klucz projektu"](frame,i)}} === == Funkcje wiki == === {{Code|p["Inny niż język bieżący wiki"](frame)}} === === {{Code|p["Inne niż lokalne wiki"](frame)}} === === {{Code|p["Inne niż bieżące wiki"](frame)}} === == Funkcje typów parametrów, czy podane je == === {{Code|p["Podano parametry nienazwane"](frame)}} === === {{Code|p["Podano parametry numerowane"](frame)}} === === {{Code|p["Podano parametry nazwane"](frame)}} === == Funkcje kodów tego projektu == === {{Code|p["Kod projektu tego projektu"](frame)}} === === {{Code|p["Kod języka tego projektu"](frame)}} === === {{Code|p["Klucz projektu tego projektu"](frame)}} === == Funkcje stron == === {{Code|p["Strona główna tego projektu"](frame)}} === === {{Code|p["Strona główna dla dzieci tego projektu"](frame)}} === == Funkcje nazw stron drugiej wersji == === {{Code|p["Nazwa strony głównej dla dzieci projektu 2"](frame)}} === === {{Code| p["Nazwa strony głównej projektu 2"](frame)}} === {{BrClear}} <noinclude><!-- -->{{ProstaStronaKoniec}}<!-- -->{{Kategoria|Opisy funkcji, w Lua w Scribunto, w modułach}}<!-- --></noinclude> jwiwr60zsbiiwp4oirvotc0mvnu90pp 540389 540388 2026-04-23T14:03:34Z Persino 2851 /* {{Code|p["Nazwa przedmiotowej przestrzeni nazw 2"](frame,...)}} */ 540389 wikitext text/x-wiki <noinclude>{{ProstaStronaStart | nagłówek = {{Podrozdział|{{ld2|Pudełko}}|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 pudelko_modul=require("Module:Pudełko"); </syntaxhighlight> dzięki, któremu można wypisywać funkcje należącego do niego. Posługuje się na parametrach pudełkowych {{Parametr|nazwa przestrzeni nazw}} (czy też bez numerka {{Parametr|nazwa przestrzeni nazw i}} dla tego numerowanego) lub te z numerkiem po jednej spacji w nich (ale nie dla tego z końcówką {{Code| i}}) mogą zostać użyte jako parametry szablonu. Moduł {{Code|{{ld2|Pudełko}}}} przedstawia funkcje nazw w oparciu o funkcje nazw {{Code|{{ld2|Nazwy}}}}, generuje on nazwy za pomocą parametrów pudełkowych podanych poniżej. Parametr {{Parametr|nazwa jednostki}} (lub parametr {{Parametr|cel}} dla numerka tego pierwszego, tego alternatywnego), lub te z numerkiem po jednej spacji w nazwie parametru, albo numerowane numerkami {{Code|1}}, {{Code|2}},..., mogą zostać użyte jako parametry szablonu. Parametry określające rodzaj jednostki {{Parametr|typ jednostki}} z {{Parametr|dyskusja typu jednostki}}, itp. w wersjach z numerkiem po jednej spacji w nich mogą zostać użyte jako parametry szablonu. A te tymi numerowanymi liczbami naturalnymi {{Tt|nazwy jednostki}} od jedynki wzwyż poprzez szablon, w którym są one użyte, one też mogą być użyte z dwukropkiem, te numerowane, na samym początku nazwy, wtedy one są traktowane jako pełne nazwy strony, i wtedy one nie zostaną z interpretowane, że do nich trzeba użyć parametr odpowiedni z nazwą przetrzeni nazw z tego numerowanego, czy ogólny, aby utworzyć znów inną pełną nazwę strony dla tego numerka. Zestawienie: * {{Code|nazwa przestrzeni nazw}} i {{Code|nazwa przestrzeni nazw i}} (ogólna nazwa przestrzeni nazw dla wszystkich numerków, i tych numerowanych jednostek) - i to pierwsze z numerkiem, tzn. {{Code|nazwa przestrzeni nazw 1}}, {{Code|nazwa przestrzeni nazw 2}}, ..., * {{Code|nazwa jednostki}} - i te z numerkiem: {{Code|nazwa jednostki 1}}, {{Code|nazwa jednostki 2}}, ..., lub gdy jest zamiast tego parametrem numerowany, {{Code|1}}, {{Code|2}},..., który dla tego pierwszego może być uznany jako: {{Code|cel}} {{=}} {{Code|1}}, * {{Code|typ jednostki}} (parametr bazowy) i {{Code|typ jednostki i}} (parametr domyślny numerkowy) - i te z numerkiem: {{Code|typ jednostki 1}}, {{Code|typ jednostki 2}}, ..., tzn. gdy chcemy określić z jakim typem jednostki mamy do czynienia w zależności do jakiej przestrzeni nazw należy, a w danej, czy jest on np. programowy, czy tylko jest opisem, jak to bywa w szablonach {{Np|Template|link=tak}}, podobnie jest w przypadku {{Np|Module|link=tak}}, czy jak jest w innych przestrzeniach nazw, ** {{Code|dyskusja typu jednostki}} (parametr bazowy) i {{Code|dyskusja typu jednostki i}} (parametr domyślny numerkowy) - i te z numerkiem: {{Code|dyskusja typu jednostki 1}}, {{Code|dyskusja typu jednostki 2}}, ..., gdy chcemy określić wartością niepustą,że chodzi tutaj o typ jednostki. == {{Code|p.CzyNiepoprawnaNazwa(nazwa_jednostki)}} == Funkcja sprawdzajaca, czy jest poprawnie podana nazwa jednostki, czy ma poprawną nazwę. Znakami tymi, z których nie powinna składać się nazwa jest {{Code|<nowiki>{}<>|[]#\n</nowiki>}} i dodatkowo znak {{Code|&#127;}} (kod {{Code|{{Nowiki|&#127;}}}}). Też nie może składać się z trzech znaków tyldy, tzn. {{Code|<nowiki>~~~</nowiki>}}. Również w swojej budowie nie może składać się ze kodów {{Strong|HTML}} literowych o wzorze {{Code|{{Nowiki|&(%a+);}}}}. Natomiast może składać się z {{Code|{{Nowiki|&#(%d+);}}}} i {{Code|{{Nowiki|&#x(%x+);}}}}, ale w pierw te kody muszą być zamienione na normalne znaki. Skrótowa definicja funkcji: <syntaxhighlight lang="lua"> function p.CzyNiepoprawnaNazwa(nazwa_jednostki)...end; </syntaxhighlight> Wtedy ciało funkcji tej, czyli jego definicja w środku, jest: <syntaxhighlight lang="lua"> -- Moduł: "Moduł:Html/dane", służy do ładowania znaku o kodzie HTML "&#127;"; local html_dane_modul=mw.loadData("Module:Html/dane"); return mw.ustring.match(nazwa_jednostki,"[{}<>|%[%]#\n"..html_dane_modul.znak_127.."]+") or mw.ustring.match(nazwa_jednostki,"~~~") or mw.ustring.match(nazwa_jednostki,"&(%a+);"); </syntaxhighlight> Parametry: * {{Code|nazwa_jednostki}} - nazwa jednostki do sprawdzenia. Przykłady: <syntaxhighlight lang="lua"> local pudelko_modul=require("Module:Pudełko"); -- Podana przykładowa niepoprawna nazwa jedostki local nazwa_jednostki="Nazwa pliku [[Nazwa linku w pliku]]"; -- Fukcja zwróci wartość: local czy_poprawna_nazwa=true; local czy_poprawna_nazwa=pudelko_modul.CzyNiepoprawnaNazwa(nazwa_jednostki); </syntaxhighlight> == Funkcje nazw przestrzeni nazw == === {{Code|p["Nazwa przestrzeni nazw"](frame,...)}} === Funkcja pisze nazwę przestrzeni nazw, niezależnie, czy to jest przedmiotowa, czy dyskusji, według podanej w zmiennej {{Code|nazwa przestrzeni nazw}} dla pozycja bazowej w podanych parametrach szablonu rodzicu ramki dziecka, lub dla innej pozycji należy parametr podawać w formie {{Code|nazwa przestrzeni nazw 1}}, {{Code|nazwa przestrzeni nazw 2}}, {{Code|nazwa przestrzeni nazw 3}},..., lub te parametry można podać w postaci ogólnej {{Code|nazwa przestrzeni nazw i}}. Parametry podaje się w parametrach rodzica wywołania tej funkcji {{Code|{{m|Pudełko|Nazwa przestrzeni nazw}}}} (ale ich nie trzeba podawać w dziecku, ale można) i w parametrach dziecka, jeśli chodzi o zmienną {{Code|numer jednostki}}, czyli np.: {{Code|{{m|Pudełko|Nazwa przestrzeni nazw|numer jednostki{{=}}<jakaś liczba całkowita dodatnia>}}}}. Te parametry przestrzenne zamiast w rodzicu w szablonie można podać w ramce dziecka, wtedy parametry dziecka mają pierwszeństwo. Przestrzeń nazw z parametrów nazw przestrzennych może odpowiadać wartości przestrzeni głównej, to wtedy odpowiednia przestrzeń nazw z parametru nazwy jednostki się nie liczy w tej funkcji, aby się liczyła należy użyć funkcji {{Code|{{sr|#p["Nazwa przestrzeni nazw 2"](frame,...)|p=Pudełko}}}}. Definicja skrótowa funkcji: <syntaxhighlight lang="lua"> p["Nazwa przestrzeni nazw"]=function(frame,czy_uwzglednic_alternatywna_nazwe,i)...end; </syntaxhighlight> Wtedy ciało funkcji tej, czyli jego definicja w środku, jest: <syntaxhighlight lang="lua"> -- Jest liczony numer parametru nazwy przestrzeni nazw, domyslnie chodzi tu o numer bazowy parametrów przestrzennych; local numer_jednostki=i or frame.args["numer jednostki"]; local liczba_numer_jednostki=((numer_jednostki)and(tonumber(numer_jednostki))or 0); local pudelko_pomocne_modul=require("Module:Pudełko/Pomocne"); -- Liczy nazwę przestrzeni nazw na podstawie podanych parametrów; return pudelko_pomocne_modul.Nazwa_przestrzeni_nazw(frame,0, czy_uwzglednic_alternatywna_nazwe,liczba_numer_jednostki); </syntaxhighlight> Parametry funkcji: * {{Code|frame}} - tablica ramki tablicy transportu, * {{Code|czy_uwzglednic_alternatywna_nazwe}} - czy ma uwzględniać nazwę przestrzeni nazw domyślną szablonu, dostępne wartości: {{Code|false}}, w której nazwa domyślna nie jest uwzględniana wtedy, oraz {{Code|nil}} i {{Code|true}}, które oznaczają to samo, w tym jeżeli ona jest uwzględniana, wtedy jest brany parametr pierwszy dziecka, który musi istnieć przy takiej wartości tego parametru, tzn. {{Code|{{m|Pudełko|Nazwa przestrzeni nazw|Szablon}}}}, a nazwa uzyskana nazwy przestrzeni nazw jest w takim przypadku błędna, a jeżeli nazwa domyślna jest błędna, czyli {{Code|{{m|Pudełko|Nazwa przestrzeni nazw|Moja przestrzeń}}}}, wtedy funkcja zwraca stan błędu {{Code|(błąd)}}. * {{Code|i}} - numer zmiennej nazwy przestrzeni nazw. Funkcja wykorzystuje {{Code|{{sr|#p.Nazwa_przestrzeni_nazw(frame,...)|p=Pudełko/Pomocne}}}} do wyznaczania ogólnego nazwy przestrzeni nazw dla pozycji bazowej i numerkowej, tzn. dla pozycji: jeden, dwa, trzy,..., itd, i ich ogólnej. Parametr ramki tablicy transportu rodzica szablonu: * {{Code|nazwa przestrzeni nazw}}, {{Code|nazwa przestrzeni nazw 1}}, {{Code|nazwa przestrzeni nazw 2}}, {{Code|nazwa przestrzeni nazw 3}},..., {{Code|nazwa przestrzeni nazw i}} - nazwy przestrzeni nazw dla pozycji bazowej oraz zwykłej i ogólnej numerkowej, * {{Code|typ jednostki}}, {{Code|typ jednostki 1}}, {{Code|typ jednostki 2}}, {{Code|typ jednostki 3}},..., {{Code|typ jednostki i}} - typy jednostek, którym odpowiadają pewne przestrzenie przedmiotowe, dla pozycji bazowej, numerkowej i ogólnej, ** {{Code|dyskusja typu jednostki}}, {{Code|dyskusja typu jednostki 1}}, {{Code|dyskusja typ jednostki 2}}, {{Code|dyskusja typ jednostki 3}},..., {{Code|dyskusja typ jednostki i}} - czy dany typ jednostki ma przedstawiać, jeśli niepusta, przestrzeń dyskusji dla pozycji bazowej, numerkowej i ogólnej. Parametry ramki tablicy transportu dziecka: * Parametry dziecka są takie same jak rodzica dla funkcji pudełkowej plus tu wymienione, * {{Code|numer jednostki}} - jak parametr {{Code|i}} nie został ustawiony, to wtedy liczy się ta zmienna. Przykłady: <syntaxhighlight lang="mediawiki"> {{Nazwa szablonu|nazwa przestrzeni nazw=Wikibooks|nazwa przestrzeni nazw 2=Szablon|nazwa przestrzeni nazw i=Moduł}} </syntaxhighlight> W dziecku powiedzmy jest wywołanie, i szukamy nazwy przestrzeni nazw o numerze dwa, która nie została podana, ale istnieje za to jej wersji ogólna {{Code|nazwa przestrzeni nazw i}} i domyślna {{Code|nazwa przestrzeni nazw}}: <syntaxhighlight lang="mediawiki"> {{#invoke:Pudełko|Nazwa przestrzeni nazw|numer jednostki=1}} </syntaxhighlight> Na podstawie powyższego przykładu otrzymamy wynik o schemacie, nie wyniku, bo tam nie ma zmiennej {{Code|nazwa przestrzeni nazw 1}}, ale jest {{Code|nazwa przestrzeni nazw i}}: <syntaxhighlight lang="mediawiki"> <!-- Ale nie "nazwa przestrzeni nazw", bo jej nie ma, ale za to istnieje "nazwa przestrzeni nazw i"; --> <!-- nazwa przestrzeni nazw 2=nazwa przestrzeni nazw i=Moduł; --> <!-- Czyli wynik: --> Moduł <!-- Widzimy, że wygenerowała się nazwa przestrzeni nazw, którą jest przestrzeń programowa, którą również jest "Szablon"; --> </syntaxhighlight> Nie jest brana w tym powyższym przykładzie zmienna {{Code|nazwa przestrzeni nazw}}, bo jej nie ma, ale za to jest {{Code|nazwa przestrzeni nazw i}}, bo ona występuje jako parametr domyślny ogólny dla parametrów numerkowych. Przykłady w wikikodzie: * {{Code|{{m|Pudełko|Nazwa przestrzeni nazw|numer jednostki{{=}}2}}}} → {{Tt|{{#invoke:Pudełko|Nazwa przestrzeni nazw|numer jednostki=2}}}} * {{Code|{{m|Pudełko|Nazwa przestrzeni nazw|Szablon|nazwa przestrzeni nazw i{{=}}Moja przestrzeń|numer jednostki{{=}}2}}}} → {{Tt|{{#invoke:Pudełko|Nazwa przestrzeni nazw|Szablon|nazwa przestrzeni nazw i=Moja przestrzeń|numer jednostki=2}}}} * {{Code|{{m|Pudełko|Nazwa przestrzeni nazw|nazwa przestrzeni nazw 2{{=}}Szablon|numer jednostki{{=}}2}}}} → {{Tt|{{#invoke:Pudełko|Nazwa przestrzeni nazw|nazwa przestrzeni nazw 2=Szablon|numer jednostki=2}}}} * {{Code|{{m|Pudełko|Nazwa przestrzeni nazw|nazwa przestrzeni nazw 2{{=}}Szablon|numer jednostki{{=}}2}}}} → {{Tt|{{#invoke:Pudełko|Nazwa przestrzeni nazw|nazwa przestrzeni nazw i=Szablon|numer jednostki=2}}}} * {{Code|{{m|Pudełko|Nazwa przestrzeni nazw|nazwa przestrzeni nazw{{=}}Szablon|numer jednostki{{=}}2}}}} → {{Tt|{{#invoke:Pudełko|Nazwa przestrzeni nazw|nazwa przestrzeni nazw=Szablon|numer jednostki=2}}}} Powyżej dla przykładu podano parametry nie w rodzicu w szablonie, tylko w dziecku, jeśli chodzi o parametry nazw przestrzeni nazw, ale ich się za to nie powinno podawać w tych ramach, tylko w szablonach, w których wywoływane są te ramki pudełek {{Code|{{m|Pudełko}}}}, ale tak tutaj tak zrobiono by było najłatwiej sprawdzić działanie tego typu funkcji. Analogicznie możemy podawać parametry typu jednostki, np.: wywołaniu modułowym {{Code|{{m|Pudełko|Nazwa przestrzeni nazw|typ jednostki 2{{=}}strona szablonu|numer jednostki{{=}}2}}}}, ale o tym więcej w rozdziałach {{Code|{{sr|# p["Typ jednostki"](frame,i)|p=Pudełko}}}}, {{Code|{{sr|#p["Typ jednostki 2"](frame,i)|p=Pudełko}}}}, {{Code|{{sr|#p["Typ jednostki 3"](frame,i)|p=Pudełko}}}} itp. w „{{sr|#Funkcje typu jednostki|p=Pudełko}}”, on definiuje przestrzenie przedmiotowe, ale można użyć parametru dyskusji typu jednostki z wartością niepustą, wtedy wyświetli się nazwa przestrzeni nazw dyskusji. Również parametry typu jednostki nie powinno się podawać w dziecku w ramce, tylko w rodzicu w szablonie jako parametry, w którym ta ramka jest wywoływana, ale tutaj podano jedynie dla przykładu, jak najłatwiej sprawdzić działanie tych parametrów tej funkcji. Najpierw w funkcji nagłówku brane są parametry nazw przestrzeni nazw, a jeżeli ich nie ma, to parametry typu jednostki, a jeżeli nie ma, to generowane są nazwy na podstawie aktualnego modułu. === {{Code|p["Nazwa przedmiotowej przestrzeni nazw"](frame,...)}} === Funkcja pisze przedmiotową nazwę przestrzeni nazw jakikolwiek nazwy przestrzeni nazw (tzn. nazwę przedmiotową nazwy przestrzenie nazw, czyli nie dyskusji, zamieniana jest na nią samą, czyli identyfikator przestrzeni się nie zmienia, a dyskusji, nie przedmiotową, przekształca się na przedmiotową jej odpowiadającą, czyli w tym przypadku identyfikator przestrzeni zmniejsza się o numer mniej), według podanej w zmiennej {{Code|nazwa przestrzeni nazw}} dla pozycja bazowej w podanych parametrach szablonu rodzicu ramki dziecka, lub dla innej pozycji należy parametr podawać w formie {{Code|nazwa przestrzeni nazw 1}}, {{Code|nazwa przestrzeni nazw 2}}, {{Code|nazwa przestrzeni nazw 3}},..., lub te parametry można podać w postaci ogólnej {{Code|nazwa przestrzeni nazw i}}. Parametry podaje się w parametrach rodzica wywołania tej funkcji {{Code|{{m|Pudełko|Nazwa przedmiotowej przestrzeni nazw}}}} (ale ich nie trzeba podawać w dziecku, ale można) i w parametrach dziecka, jeśli chodzi o zmienną {{Code|numer jednostki}}, czyli np.: {{Code|{{m|Pudełko|Nazwa przedmiotowej przestrzeni nazw|numer jednostki{{=}}<jakaś liczba całkowita dodatnia>}}}}. Te parametry przestrzenne zamiast w rodzicu w szablonie można podać w ramce dziecka, wtedy parametry dziecka mają pierwszeństwo. Parametry przestrzenne mogą mogą być podane w postaci przestrzeni przedmiotowej lub dyskusji, ale ta funkcja zawsze ją zamienia na przedmiotową. Przestrzeń nazw z parametrów nazw przestrzennych może odpowiadać wartości przestrzeni głównej, to wtedy odpowiednia przestrzeń nazw z parametru nazwy jednostki się nie liczy w tej funkcji, aby się liczyła należy użyć funkcji {{Code|{{sr|#p["Nazwa przedmiotowej przestrzeni nazw 2"](frame,...)|p=Pudełko}}}}. Definicja skrótowa funkcji: <syntaxhighlight lang="lua"> p["Nazwa przedmiotowej przestrzeni nazw"]=function(frame,czy_uwzglednic_alternatywna_nazwe,i)...end; </syntaxhighlight> Wtedy ciało funkcji tej, czyli jego definicja w środku, jest: <syntaxhighlight lang="lua"> -- Jest liczony numer parametru nazwy przestrzeni nazw, domyslnie chodzi tu o numer bazowy parametrów przestrzennych; local numer_jednostki=i or frame.args["numer jednostki"]; local liczba_numer_jednostki=((numer_jednostki)and(tonumber(numer_jednostki))or 0); local pudelko_pomocne_modul=require("Module:Pudełko/Pomocne"); -- Liczy nazwę przestrzeni nazw przedmiotową na podstawie podanych parametrów; return pudelko_pomocne_modul.Nazwa_przestrzeni_nazw(frame,1, czy_uwzglednic_alternatywna_nazwe,liczba_numer_jednostki); </syntaxhighlight> Parametry funkcji: * {{Code|frame}} - tablica ramki tablicy transportu, * {{Code|czy_uwzglednic_alternatywna_nazwe}} - czy ma uwzględniać nazwę przestrzeni nazw domyślną szablonu, dostępne wartości: {{Code|false}}, w której nazwa domyślna nie jest uwzględniana wtedy, oraz {{Code|nil}} i {{Code|true}}, które oznaczają to samo, w tym jeżeli ona jest uwzględniana, wtedy jest brany parametr pierwszy dziecka, który musi istnieć przy takiej wartości tego parametru, tzn. {{Code|{{m|Pudełko|Nazwa przedmiotowej przestrzeni nazw|Dyskusja szablonu}}}} - ta nazwa domyślna zostanie zamieniona na przedmiotową, a jak ona by była przedmiotowa, to żadnej zamiany by nie było, a nazwa uzyskana z nazwy przestrzeni nazw z parametrów przestrzennych jest w takim przypadku błędna, to w takim razie brany jest ten parametr, a jeżeli ta nazwa domyślna jest błędna, czyli {{Code|{{m|Pudełko|Nazwa przedmiotowej przestrzeni nazw|Moja przestrzeń}}}}, wtedy funkcja zwraca stan błędu {{Code|(błąd)}}. * {{Code|i}} - numer zmiennej nazwy przestrzeni nazw. Funkcja wykorzystuje {{Code|{{sr|#p.Nazwa_przestrzeni_nazw(frame,...)|p=Pudełko/Pomocne}}}} do wyznaczania ogólnego nazwy przestrzeni nazw dla pozycji bazowej i numerkowej, tzn. dla pozycji: jeden, dwa, trzy,..., itd, i ich ogólnej. Parametr ramki tablicy transportu rodzica szablonu: * {{Code|nazwa przestrzeni nazw}}, {{Code|nazwa przestrzeni nazw 1}}, {{Code|nazwa przestrzeni nazw 2}}, {{Code|nazwa przestrzeni nazw 3}},..., {{Code|nazwa przestrzeni nazw i}} - nazwy przestrzeni nazw dla pozycji bazowej oraz zwykłej i ogólnej numerkowej, * {{Code|typ jednostki}}, {{Code|typ jednostki 1}}, {{Code|typ jednostki 2}}, {{Code|typ jednostki 3}},..., {{Code|typ jednostki i}} - typy jednostek, którym odpowiadają pewne przestrzenie przedmiotowe, dla pozycji bazowej, numerkowej i ogólnej. Parametry ramki tablicy transportu dziecka: * Parametry dziecka są takie same jak rodzica dla funkcji pudełkowej plus tu wymienione, * {{Code|numer jednostki}} - jak parametr {{Code|i}} nie został ustawiony, to wtedy liczy się ta zmienna. Przykłady: <syntaxhighlight lang="mediawiki"> {{Nazwa szablonu|nazwa przestrzeni nazw=Dyskusja Wikibooks|nazwa przestrzeni nazw 2=Dyskusja szablonu|nazwa przestrzeni nazw i=Dyskusja modułu}} </syntaxhighlight> W dziecku powiedzmy jest wywołanie, i szukamy nazwy przestrzeni nazw o numerze dwa, która nie została podana, ale istnieje za to jej wersji ogólna {{Code|nazwa przestrzeni nazw i}} i domyślna {{Code|nazwa przestrzeni nazw}}: <syntaxhighlight lang="mediawiki"> {{#invoke:Pudełko|Nazwa przedmiotowej przestrzeni nazw|numer jednostki=1}} </syntaxhighlight> Na podstawie powyższego przykładu otrzymamy wynik o schemacie, nie wyniku, bo tam nie ma zmiennej {{Code|nazwa przestrzeni nazw 1}}, ale jest {{Code|nazwa przestrzeni nazw i}}: <syntaxhighlight lang="mediawiki"> <!-- Ale nie "nazwa przestrzeni nazw", bo jej nie ma, ale za to istnieje "nazwa przestrzeni nazw i"; --> <!-- nazwa przestrzeni nazw 2=nazwa przestrzeni nazw i=Dyskusja modułu; --> <!-- Czyli wynik: --> Moduł <!-- Widzimy, że wygenerowała się nazwa przestrzeni nazw, którą jest przestrzeń przedmiotowa programowa przestrzeni dyskusji "Dyskusja modułu", którą również jest "Szablon" jego przestrzeni dyskusji "Dyskusja szablonu", a dla ich przestrzeni przedmiotowej, zamiast dyskusji, to samo przekształca się na to samo; --> </syntaxhighlight> Nie jest brana w tym powyższym przykładzie zmienna {{Code|nazwa przestrzeni nazw}}, bo jej nie ma, ale za to jest {{Code|nazwa przestrzeni nazw i}}, bo ona występuje jako parametr domyślny ogólny dla parametrów numerkowych. Przykłady w wikikodzie: * {{Code|{{m|Pudełko|Nazwa przedmiotowej przestrzeni nazw|numer jednostki{{=}}2}}}} → {{Tt|{{#invoke:Pudełko|Nazwa przedmiotowej przestrzeni nazw|numer jednostki=2}}}} * {{Code|{{m|Pudełko|Nazwa przedmiotowej przestrzeni nazw|Dyskusja szablonu|nazwa przestrzeni nazw i{{=}}Moja przestrzeń|numer jednostki{{=}}2}}}} → {{Tt|{{#invoke:Pudełko|Nazwa przedmiotowej przestrzeni nazw|Dyskusja szablonu|nazwa przestrzeni nazw i=Moja przestrzeń|numer jednostki=2}}}} * {{Code|{{m|Pudełko|Nazwa przedmiotowej przestrzeni nazw|nazwa przestrzeni nazw 2{{=}}Dyskusja szablonu|numer jednostki{{=}}2}}}} → {{Tt|{{#invoke:Pudełko|Nazwa przedmiotowej przestrzeni nazw|nazwa przestrzeni nazw 2=Dyskusja szablonu|numer jednostki=2}}}} * {{Code|{{m|Pudełko|Nazwa przedmiotowej przestrzeni nazw|nazwa przestrzeni nazw 2{{=}}Dyskusja szablonu|numer jednostki{{=}}2}}}} → {{Tt|{{#invoke:Pudełko|Nazwa przedmiotowej przestrzeni nazw|nazwa przestrzeni nazw i=Dyskusja szablonu|numer jednostki=2}}}} * {{Code|{{m|Pudełko|Nazwa przedmiotowej przestrzeni nazw|nazwa przestrzeni nazw{{=}}Dyskusja szablonu|numer jednostki{{=}}2}}}} → {{Tt|{{#invoke:Pudełko|Nazwa przedmiotowej przestrzeni nazw|nazwa przestrzeni nazw=Dyskusja szablonu|numer jednostki=2}}}} Powyżej dla przykładu podano parametry nie w rodzicu w szablonie, tylko w dziecku, jeśli chodzi o parametry nazw przestrzeni nazw, ale ich się za to nie powinno podawać w tych ramach, tylko w szablonach, w których wywoływane są te ramki pudełek {{Code|{{m|Pudełko}}}}, ale tak tutaj tak zrobiono by było najłatwiej sprawdzić działanie tego typu funkcji. Analogicznie możemy podawać parametry typu jednostki, np.: wywołaniu modułowym {{Code|{{m|Pudełko|Nazwa przedmiotowej przestrzeni nazw|typ jednostki 2{{=}}strona szablonu|numer jednostki{{=}}2}}}}, ale o tym więcej w rozdziałach {{Code|{{sr|# p["Typ jednostki"](frame,i)|p=Pudełko}}}}, {{Code|{{sr|#p["Typ jednostki 2"](frame,i)|p=Pudełko}}}}, {{Code|{{sr|#p["Typ jednostki 3"](frame,i)|p=Pudełko}}}} itp. w „{{sr|#Funkcje typu jednostki|p=Pudełko}}”, ale wtedy ta sama nazwa przestrzeni nazw reprezentowana przez {{Parametr|typ jednostki 2|strona szablonu}}, jest zamieniana na to samo, lepiej jest tutaj używać parametrów przestrzennych nazw niż typu jednostki, bo typ jednostki ma taką samą wartość dla przestrzeni przedmiotowej, co dyskusji. Tutaj parametr dyskusji typu jednostki bazowy i numerkowy ogólny, czy szczegółowy, nie gra roli, bo nawet, gdy wygenerujemy nazwę przestrzeni dyskusji za pomoca tego parametru, to i tak otrzymamy na samym końcu jego nazwę przedmiotową. Również parametry typu jednostki nie powinno się podawać w dziecku w ramce, tylko w rodzicu w szablonie jako parametry, w którym ta ramka jest wywoływana, ale tutaj podano jedynie dla przykładu, jak najłatwiej sprawdzić działanie tych parametrów tej funkcji. Najpierw w funkcji nagłówku brane są parametry nazw przestrzeni nazw, a jeżeli ich nie ma, to parametry typu jednostki, a jeżeli nie ma, to generowane są nazwy na podstawie aktualnego modułu. === {{Code|p["Nazwa przestrzeni nazw dyskusji"](frame,...)}} === Funkcja pisze nazwę przestrzeni nazw dyskusji jakikolwiek nazwy przestrzeni nazw (tzn. nazwę przedmiotową nazwy przestrzenie nazw, czyli nie dyskusji, zamieniana jest na dyskusji, czyli identyfikator przestrzeni się zmienia jeden wyżej, a dyskusji, nie przedmiotową, przekształca się na tą samą), według podanej w zmiennej {{Code|nazwa przestrzeni nazw}} dla pozycja bazowej w podanych parametrach szablonu rodzicu ramki dziecka, lub dla innej pozycji należy parametr podawać w formie {{Code|nazwa przestrzeni nazw 1}}, {{Code|nazwa przestrzeni nazw 2}}, {{Code|nazwa przestrzeni nazw 3}},..., lub te parametry można podać w postaci ogólnej {{Code|nazwa przestrzeni nazw i}}. Parametry podaje się w parametrach rodzica wywołania tej funkcji {{Code|{{m|Pudełko|Nazwa przestrzeni nazw dyskusji}}}} (ale ich nie trzeba podawać w dziecku, ale można) i w parametrach dziecka, jeśli chodzi o zmienną {{Code|numer jednostki}}, czyli np.: {{Code|{{m|Pudełko|Nazwa przestrzeni nazw dyskusji|numer jednostki{{=}}<jakaś liczba całkowita dodatnia>}}}}. Te parametry przestrzenne zamiast w rodzicu w szablonie można podać w ramce dziecka, wtedy parametry dziecka mają pierwszeństwo. Parametry przestrzenne mogą mogą być podane w postaci przestrzeni przedmiotowej lub dyskusji, ale ta funkcja zawsze ją zamienia na dyskusji. Przestrzeń nazw z parametrów nazw przestrzennych może odpowiadać wartości przestrzeni głównej, to wtedy odpowiednia przestrzeń nazw z parametru nazwy jednostki się nie liczy w tej funkcji, aby się liczyła należy użyć funkcji {{Code|{{sr|#p["Nazwa przestrzeni nazw dyskusji 2"](frame,...)|p=Pudełko}}}}. Definicja skrótowa funkcji: <syntaxhighlight lang="lua"> p["Nazwa przestrzeni nazw dyskusji"]=function(frame,czy_uwzglednic_alternatywna_nazwe,i)...end; </syntaxhighlight> Wtedy ciało funkcji tej, czyli jego definicja w środku, jest: <syntaxhighlight lang="lua"> -- Jest liczony numer parametru nazwy przestrzeni nazw, domyslnie chodzi tu o numer bazowy parametrów przestrzennych; local numer_jednostki=i or frame.args["numer jednostki"]; local liczba_numer_jednostki=((numer_jednostki)and(tonumber(numer_jednostki))or 0); local pudelko_pomocne_modul=require("Module:Pudełko/Pomocne"); -- Liczy nazwę przestrzeni nazw dyskusji na podstawie podanych parametrów; return pudelko_pomocne_modul.Nazwa_przestrzeni_nazw(frame,2, czy_uwzglednic_alternatywna_nazwe,liczba_numer_jednostki); </syntaxhighlight> Parametry funkcji: * {{Code|frame}} - tablica ramki tablicy transportu, * {{Code|czy_uwzglednic_alternatywna_nazwe}} - czy ma uwzględniać nazwę przestrzeni nazw domyślną szablonu, dostępne wartości: {{Code|false}}, w której nazwa domyślna nie jest uwzględniana wtedy, oraz {{Code|nil}} i {{Code|true}}, które oznaczają to samo, w tym jeżeli ona jest uwzględniana, wtedy jest brany parametr pierwszy dziecka, który musi istnieć przy takiej wartości tego parametru, tzn. {{Code|{{m|Pudełko|Nazwa przestrzeni nazw dyskusji|Szablon}}}} - ta nazwa domyślna zostanie przekształcona na dyskusji, a jeżeli ona by była dyskusji, to nie byłoby żadnego przekształcenia, a nazwa uzyskana nazwy przestrzeni nazw z parametrów przestrzennych jest w takim przypadku błędna, to w takim razie brany jest ten parametr, a jeżeli nazwa domyślna jest błędna, czyli {{Code|{{m|Pudełko|Nazwa przestrzeni nazw dyskusji|Moja przestrzeń}}}}, wtedy funkcja zwraca stan błędu {{Code|(błąd)}}. * {{Code|i}} - numer zmiennej nazwy przestrzeni nazw. Funkcja wykorzystuje {{Code|{{sr|#p.Nazwa_przestrzeni_nazw(frame,...)|p=Pudełko/Pomocne}}}} do wyznaczania ogólnego nazwy przestrzeni nazw dla pozycji bazowej i numerkowej, tzn. dla pozycji: jeden, dwa, trzy,..., itd, i ich ogólnej. Parametr ramki tablicy transportu rodzica szablonu: * {{Code|nazwa przestrzeni nazw}}, {{Code|nazwa przestrzeni nazw 1}}, {{Code|nazwa przestrzeni nazw 2}}, {{Code|nazwa przestrzeni nazw 3}},..., {{Code|nazwa przestrzeni nazw i}} - nazwy przestrzeni nazw dla pozycji bazowej oraz zwykłej i ogólnej numerkowej, * {{Code|typ jednostki}}, {{Code|typ jednostki 1}}, {{Code|typ jednostki 2}}, {{Code|typ jednostki 3}},..., {{Code|typ jednostki i}} - typy jednostek, którym odpowiadają pewne przestrzenie przedmiotowe, dla pozycji bazowej, numerkowej i ogólnej. Parametry ramki tablicy transportu dziecka: * Parametry dziecka są takie same jak rodzica dla funkcji pudełkowej plus tu wymienione, * {{Code|numer jednostki}} - jak parametr {{Code|i}} nie został ustawiony, to wtedy liczy się ta zmienna. Przykłady: <syntaxhighlight lang="mediawiki"> {{Nazwa szablonu|nazwa przestrzeni nazw=Wikibooks|nazwa przestrzeni nazw 2=Szablon|nazwa przestrzeni nazw i=Moduł}} </syntaxhighlight> W dziecku powiedzmy jest wywołanie, i szukamy nazwy przestrzeni nazw o numerze dwa, która nie została podana, ale istnieje za to jej wersji ogólna {{Code|nazwa przestrzeni nazw i}} i domyślna {{Code|nazwa przestrzeni nazw}}: <syntaxhighlight lang="mediawiki"> {{#invoke:Pudełko|Nazwa przestrzeni nazw dyskusji|numer jednostki=1}} </syntaxhighlight> Na podstawie powyższego przykładu otrzymamy wynik o schemacie, nie wyniku, bo tam nie ma zmiennej {{Code|nazwa przestrzeni nazw 1}}, ale jest {{Code|nazwa przestrzeni nazw i}}: <syntaxhighlight lang="mediawiki"> <!-- Ale nie "nazwa przestrzeni nazw", bo jej nie ma, ale za to istnieje "nazwa przestrzeni nazw i"; --> <!-- nazwa przestrzeni nazw 2=nazwa przestrzeni nazw i=Moduł; --> <!-- Czyli wynik: --> Dyskusja modułu <!-- Widzimy, że wygenerowała się nazwa przestrzeni nazw, którą jest przestrzeń dyskusji przestrzeni programowej przestrzeni przedmiotowej "Moduł", którą również jest "Szablon" jego przestrzeni dyskusji "Dyskusja szablonu", a dla ich przestrzeni przedmiotowej, zamiast dyskusji, to przekształca się na dyskusji jej odpowiadającą; --> </syntaxhighlight> Nie jest brana w tym powyższym przykładzie zmienna {{Code|nazwa przestrzeni nazw}}, bo jej nie ma, ale za to jest {{Code|nazwa przestrzeni nazw i}}, bo ona występuje jako parametr domyślny ogólny dla parametrów numerkowych. Przykłady w wikikodzie: * {{Code|{{m|Pudełko|Nazwa przestrzeni nazw dyskusji|numer jednostki{{=}}2}}}} → {{Tt|{{#invoke:Pudełko|Nazwa przestrzeni nazw dyskusji|numer jednostki=2}}}} * {{Code|{{m|Pudełko|Nazwa przestrzeni nazw dyskusji|Szablon|nazwa przestrzeni nazw i{{=}}Moja przestrzeń|numer jednostki{{=}}2}}}} → {{Tt|{{#invoke:Pudełko|Nazwa przestrzeni nazw dyskusji|Szablon|nazwa przestrzeni nazw i=Moja przestrzeń|numer jednostki=2}}}} * {{Code|{{m|Pudełko|Nazwa przestrzeni nazw dyskusji|nazwa przestrzeni nazw 2{{=}}Szablon|numer jednostki{{=}}2}}}} → {{Tt|{{#invoke:Pudełko|Nazwa przestrzeni nazw dyskusji|nazwa przestrzeni nazw 2=Szablon|numer jednostki=2}}}} * {{Code|{{m|Pudełko|Nazwa przestrzeni nazw dyskusji|nazwa przestrzeni nazw 2{{=}}Szablon|numer jednostki{{=}}2}}}} → {{Tt|{{#invoke:Pudełko|Nazwa przestrzeni nazw dyskusji|nazwa przestrzeni nazw i=Szablon|numer jednostki=2}}}} * {{Code|{{m|Pudełko|Nazwa przestrzeni nazw dyskusji|nazwa przestrzeni nazw{{=}}Szablon|numer jednostki{{=}}2}}}} → {{Tt|{{#invoke:Pudełko|Nazwa przestrzeni nazw dyskusji|nazwa przestrzeni nazw=Szablon|numer jednostki=2}}}} Powyżej dla przykładu podano parametry nie w rodzicu w szablonie, tylko w dziecku, jeśli chodzi o parametry nazw przestrzeni nazw, ale ich się za to nie powinno podawać w tych ramach, tylko w szablonach, w których wywoływane są te ramki pudełek {{Code|{{m|Pudełko}}}}, ale tak tutaj tak zrobiono by było najłatwiej sprawdzić działanie tego typu funkcji. Analogicznie możemy podawać parametry typu jednostki, np.: wywołaniu modułowym {{Code|{{m|Pudełko|Nazwa przestrzeni nazw dyskusji|typ jednostki 2{{=}}strona szablonu|numer jednostki{{=}}2}}}}, ale o tym więcej w rozdziałach {{Code|{{sr|# p["Typ jednostki"](frame,i)|p=Pudełko}}}}, {{Code|{{sr|#p["Typ jednostki 2"](frame,i)|p=Pudełko}}}}, {{Code|{{sr|#p["Typ jednostki 3"](frame,i)|p=Pudełko}}}} itp. w „{{sr|#Funkcje typu jednostki|p=Pudełko}}”, ale wtedy nazwa przestrzeni nazw reprezentowana przez {{Parametr|typ jednostki 2|strona szablonu}}, jest zamieniana na nazwę przestrzeni nazw dyskusji. Parametr dyskusji typu jednostki bazowy lub dla danego numerka ogólny, czy szczegółowy, nie gra roli. Również parametry typu jednostki nie powinno się podawać w dziecku w ramce, tylko w rodzicu w szablonie jako parametry, w którym ta ramka jest wywoływana, ale tutaj podano jedynie dla przykładu, jak najłatwiej sprawdzić działanie tych parametrów tej funkcji. Najpierw w funkcji nagłówku brane są parametry nazw przestrzeni nazw, a jeżeli ich nie ma, to parametry typu jednostki, a jeżeli nie ma, to generowane są nazwy na podstawie aktualnego modułu. == Funkcje nazw przestrzeni nazw drugiej wersji == === {{Code|p["Nazwa przestrzeni nazw 2"](frame,...)}} === Funkcja pisze nazwę przestrzeni nazw, niezależnie, czy to jest przedmiotowa, czy dyskusji, według, i nie zawsze tylko, podanej w zmiennej {{Code|nazwa przestrzeni nazw}} dla pozycja bazowej w podanych parametrach szablonu rodzicu ramki dziecka, lub dla innej pozycji należy parametr podawać w formie {{Code|nazwa przestrzeni nazw 1}}, {{Code|nazwa przestrzeni nazw 2}}, {{Code|nazwa przestrzeni nazw 3}},..., lub te parametry można podać w postaci ogólnej {{Code|nazwa przestrzeni nazw i}}. W tej funkcji trzeba też podawać parametry nazwy jednostek {{Code|nazwa jednostki}}, {{Code|nazwa jednostki 1}}, {{Code|nazwa jednostki 2}}, {{Code|nazwa jednostki 3}},... Parametry podaje się w parametrach rodzica wywołania tej funkcji {{Code|{{m|Pudełko|Nazwa przestrzeni nazw 2}}}} (ale ich nie trzeba podawać w dziecku, ale można) i w parametrach dziecka, jeśli chodzi o zmienną {{Code|numer jednostki}}, czyli np.: {{Code|{{m|Pudełko|Nazwa przestrzeni nazw 2|numer jednostki{{=}}<jakaś liczba całkowita dodatnia>}}}}. Te parametry przestrzenne zamiast w rodzicu w szablonie można podać w ramce dziecka, wtedy parametry dziecka mają pierwszeństwo. Przestrzeń nazw z parametrów nazw przestrzennych może odpowiadać wartości przestrzeni głównej, to wtedy odpowiednia przestrzeń nazw z parametru nazwy jednostki się liczy w tej funkcji, wtedy jest liczona nazwa przestrzeni nazw z tego parametru. Gdy parametry przestrzenne lub typ jednostki w drugim podejściu nie wskazują na przestrzeń główną, to wtedy działanie tej funkcji jest podobne do {{Code|{{sr|#p["Nazwa przestrzeni nazw"](frame,...)|p=Pudełko}}}}. Definicja skrótowa funkcji: <syntaxhighlight lang="lua"> p["Nazwa przestrzeni nazw 2"]=function(frame,czy_uwzglednic_alternatywna_nazwe,i)...end; </syntaxhighlight> Wtedy ciało funkcji tej, czyli jego definicja w środku, jest: <syntaxhighlight lang="lua"> local pudelko_pomocne_modul=require("Module:Pudełko/Pomocne"); -- Liczy nazwę przestrzeni nazw, jeżeli z parametrów przestrzennych przestrzeń wskazuje na główną, to wtedy jest liczona przestrzeń nazw z nazwy jednostki; return pudelko_pomocne_modul.Nazwa_przestrzeni_nazw_2(frame,czy_uwzglednic_alternatywna_nazwe,i) </syntaxhighlight> Parametry funkcji: * {{Code|frame}} - tablica ramki tablicy transportu, * {{Code|czy_uwzglednic_alternatywna_nazwe}} - czy ma uwzględniać nazwę przestrzeni nazw domyślną szablonu, dostępne wartości: {{Code|false}}, w której nazwa domyślna nie jest uwzględniana wtedy, oraz {{Code|nil}} i {{Code|true}}, które oznaczają to samo, w tym jeżeli ona jest uwzględniana, wtedy jest brany parametr pierwszy dziecka, który musi istnieć przy takiej wartości tego parametru, tzn. {{Code|{{m|Pudełko|Nazwa przestrzeni nazw 2|Szablon}}}}, a nazwa uzyskana nazwy przestrzeni nazw jest w takim przypadku błędna, a jeżeli nazwa domyślna jest błędna, czyli {{Code|{{m|Pudełko|Nazwa przestrzeni nazw 2|Moja przestrzeń}}}}, wtedy funkcja zwraca stan błędu {{Code|(błąd)}}. * {{Code|i}} - numer zmiennej nazwy przestrzeni nazw. Funkcja wykorzystuje {{Code|{{sr|#p.Nazwa_przestrzeni_nazw_2(frame,...)|p=Pudełko/Pomocne}}}} do wyznaczania ogólnego nazwy przestrzeni nazw dla pozycji bazowej i numerkowej, tzn. dla pozycji: jeden, dwa, trzy,..., itd, i ich ogólnej. Parametr ramki tablicy transportu rodzica szablonu: * {{Code|nazwa przestrzeni nazw}}, {{Code|nazwa przestrzeni nazw 1}}, {{Code|nazwa przestrzeni nazw 2}}, {{Code|nazwa przestrzeni nazw 3}},..., {{Code|nazwa przestrzeni nazw i}} - nazwy przestrzeni nazw dla pozycji bazowej oraz zwykłej i ogólnej numerkowej, * {{Code|nazwa jednostki}}, {{Code|nazwa jednostki 1}}, {{Code|nazwa jednostki 2}}, {{Code|nazwa jednostki 3}},... - nazwy jednostek dla pozycji bazowej i numerkowej, * {{Code|typ jednostki}}, {{Code|typ jednostki 1}}, {{Code|typ jednostki 2}}, {{Code|typ jednostki 3}},..., {{Code|typ jednostki i}} - typy jednostek, którym odpowiadają pewne przestrzenie przedmiotowe, dla pozycji bazowej, numerkowej i ogólnej, ** {{Code|dyskusja typu jednostki}}, {{Code|dyskusja typu jednostki 1}}, {{Code|dyskusja typ jednostki 2}}, {{Code|dyskusja typ jednostki 3}},..., {{Code|dyskusja typ jednostki i}} - czy dany typ jednostki ma przedstawiać, jeśli niepusta, przestrzeń dyskusji dla pozycji bazowej, numerkowej i ogólnej. Parametry ramki tablicy transportu dziecka: * Parametry dziecka są takie same jak rodzica dla funkcji pudełkowej plus tu wymienione, * {{Code|numer jednostki}} - jak parametr {{Code|i}} nie został ustawiony, to wtedy liczy się ta zmienna. Przykłady: <syntaxhighlight lang="mediawiki"> {{Nazwa szablonu|nazwa przestrzeni nazw=Wikibooks|nazwa przestrzeni nazw 1=Szablon|nazwa przestrzeni nazw i=|nazwa jednostki 2=Wikibooks:Strona}} </syntaxhighlight> W dziecku powiedzmy jest wywołanie, i szukamy nazwy przestrzeni nazw o numerze dwa, która została podana, ale istnieje za to jej wersji ogólna {{Code|nazwa przestrzeni nazw i}} i domyślna {{Code|nazwa przestrzeni nazw}}, ale wtedy dla tego numerkowego liczy się to ogólne z {{Code| i}}, a ponieważ ta nazwa jest pusta, więc będziemy liczyli nazwę przestrzeni nazw z {{Code|nazwa jednostki 2}}: <syntaxhighlight lang="mediawiki"> {{#invoke:Pudełko|Nazwa przestrzeni nazw 2|numer jednostki=2}} </syntaxhighlight> Na podstawie powyższego przykładu otrzymamy wynik o schemacie, nie wyniku, bo tam nie ma zmiennej {{Code|nazwa przestrzeni nazw 1}}, ale jest {{Code|nazwa przestrzeni nazw i}}: <syntaxhighlight lang="mediawiki"> <!-- Ale nie "nazwa przestrzeni nazw 2", bo jej nie ma, ale za to istnieje "nazwa przestrzeni nazw i"; --> <!-- nazwa przestrzeni nazw 2=nazwa przestrzeni nazw i="", a nazwa jednostki 2="Wikibooks:Strona"; --> <!-- Czyli wynik: --> Wikibooks <!-- Widzimy, że wygenerowała się nazwa przestrzeni nazw, którą jest przestrzeń nieprogramowa, ale projektu, wychodząca z nazwy jednostek w tym przypadku z "nazwa jednostki 2"; --> </syntaxhighlight> Nie jest brana w tym powyższym przykładzie zmienna {{Code|nazwa przestrzeni nazw}}, bo jej nie ma, ale za to jest {{Code|nazwa przestrzeni nazw i}}, bo ona występuje jako parametr domyślny ogólny dla parametrów numerkowych. Tytaj jest używana jest zmienna {{Code|nazwa jednostki 2}} do wygenerowania ostatecznego wyniku, bo jak można zauważyć, parametry przestrzenne wskazują na przestrzeń główną, a nazwy jednostek już nie. Przykłady w wikikodzie: * {{Code|{{m|Pudełko|Nazwa przestrzeni nazw 2|numer jednostki{{=}}2}}}} → {{Tt|{{#invoke:Pudełko|Nazwa przestrzeni nazw 2|numer jednostki=2}}}} * {{Code|{{m|Pudełko|Nazwa przestrzeni nazw 2|Szablon|nazwa przestrzeni nazw i{{=}}Moja przestrzeń|numer jednostki{{=}}2}}}} → {{Tt|{{#invoke:Pudełko|Nazwa przestrzeni nazw 2|Szablon|nazwa przestrzeni nazw i=Moja przestrzeń|numer jednostki=2}}}} * {{Code|{{m|Pudełko|Nazwa przestrzeni nazw 2|nazwa przestrzeni nazw 2{{=}}|nazwa jednostki 2{{=}}Szablon:Strona|numer jednostki{{=}}2}}}} → {{Tt|{{#invoke:Pudełko|Nazwa przestrzeni nazw 2|nazwa przestrzeni nazw 2=|nazwa jednostki 2=Szablon:Strona|numer jednostki=2}}}} * {{Code|{{m|Pudełko|Nazwa przestrzeni nazw 2|nazwa przestrzeni nazw i{{=}}|nazwa jednostki 2{{=}}Szablon:Strona|numer jednostki{{=}}2}}}} → {{Tt|{{#invoke:Pudełko|Nazwa przestrzeni nazw 2|nazwa przestrzeni nazw i=|nazwa jednostki 2=Szablon:Strona|numer jednostki=2}}}} * {{Code|{{m|Pudełko|Nazwa przestrzeni nazw 2|Szablon|nazwa przestrzeni nazw{{=}}|nazwa jednostki 2{{=}}Wikibooks:Strona|numer jednostki{{=}}2}}}} → {{Tt|{{#invoke:Pudełko|Nazwa przestrzeni nazw 2|Szablon|nazwa przestrzeni nazw=|nazwa jednostki 2=Wikibooks:Strona|numer jednostki=2}}}} Powyżej dla przykładu podano parametry nie w rodzicu w szablonie, tylko w dziecku, jeśli chodzi o parametry nazw przestrzeni nazw i nazw jednostek, ale ich się za to nie powinno podawać w tych ramach, tylko w szablonach, w których wywoływane są te ramki pudełek {{Code|{{m|Pudełko}}}}, ale tak tutaj tak zrobiono by było najłatwiej sprawdzić działanie tego typu funkcji. Analogicznie możemy podawać parametry typu jednostki, np.: wywołaniu modułowym {{Code|{{m|Pudełko|Nazwa przestrzeni nazw 2|typ jednostki 2{{=}}Podręcznik|nazwa jednostki 2{{=}}Szablon:Strona|numer jednostki{{=}}2}}}} (ale wtedy jest brana przestrzeń nazw z nazwy jednostki), ale o tym więcej w rozdziałach {{Code|{{sr|# p["Typ jednostki"](frame,i)|p=Pudełko}}}}, {{Code|{{sr|#p["Typ jednostki 2"](frame,i)|p=Pudełko}}}}, {{Code|{{sr|#p["Typ jednostki 3"](frame,i)|p=Pudełko}}}} itp. w „{{sr|#Funkcje typu jednostki|p=Pudełko}}”, on definiuje przestrzenie przedmiotowe, ale można użyć parametru dyskusji typu jednostki z wartością niepustą, wtedy wyświetli się nazwa przestrzeni nazw dyskusji. Jeżeli typ jednostki wskazuje na przestrzeń nazw główną, wtedy się liczą parametry nazw jednostek. Również parametry typu jednostki nie powinno się podawać w dziecku w ramce, tylko w rodzicu w szablonie jako parametry, w którym ta ramka jest wywoływana, ale tutaj podano jedynie dla przykładu, jak najłatwiej sprawdzić działanie tych parametrów tej funkcji. Najpierw w funkcji nagłówku brane są parametry nazw przestrzeni nazw, a jeżeli ich nie ma, to parametry typu jednostki, a jeżeli nie ma lub parametry przestrzenne wskazują na przestrzeń główną, i nie ma nazwy jednostki, to generowane są nazwy tej funkcji na podstawie aktualnej strony. === {{Code|p["Nazwa przedmiotowej przestrzeni nazw 2"](frame,...)}} === Funkcja pisze przedmiotową nazwę przestrzeni nazw jakikolwiek nazwy przestrzeni nazw (tzn. nazwę przedmiotową nazwy przestrzenie nazw, czyli nie dyskusji, zamieniana jest na nią samą, czyli identyfikator przestrzeni się nie zmienia, a dyskusji, nie przedmiotową, przekształca się na przedmiotową jej odpowiadającą, czyli w tym przypadku identyfikator przestrzeni zmniejsza się o numer mniej), według, i nie zawsze tylko, podanej w zmiennej {{Code|nazwa przestrzeni nazw}} dla pozycja bazowej w podanych parametrach szablonu rodzicu ramki dziecka, lub dla innej pozycji należy parametr podawać w formie {{Code|nazwa przestrzeni nazw 1}}, {{Code|nazwa przestrzeni nazw 2}}, {{Code|nazwa przestrzeni nazw 3}},..., lub te parametry można podać w postaci ogólnej {{Code|nazwa przestrzeni nazw i}}. W tej funkcji trzeba też podawać parametry nazwy jednostek {{Code|nazwa jednostki}}, {{Code|nazwa jednostki 1}}, {{Code|nazwa jednostki 2}}, {{Code|nazwa jednostki 3}},... Parametry podaje się w parametrach rodzica wywołania tej funkcji {{Code|{{m|Pudełko|Nazwa przedmiotowej przestrzeni nazw 2}}}} (ale ich nie trzeba podawać w dziecku, ale można) i w parametrach dziecka, jeśli chodzi o zmienną {{Code|numer jednostki}}, czyli np.: {{Code|{{m|Pudełko|Nazwa przedmiotowej przestrzeni nazw 2|numer jednostki{{=}}<jakaś liczba całkowita dodatnia>}}}}. Te parametry przestrzenne zamiast w rodzicu w szablonie można podać w ramce dziecka, wtedy parametry dziecka mają pierwszeństwo. Przestrzeń nazw z parametrów nazw przestrzennych po przekształceniu na przedmiotową może odpowiadać wartości przestrzeni głównej, to wtedy odpowiednia przestrzeń nazw z parametru nazwy jednostki się liczy w tej funkcji, wtedy jest liczona nazwa przestrzeni nazw z tego parametru. Gdy parametry przestrzenne lub typ jednostki w drugim podejściu nie wskazują na przestrzeń główną, to wtedy działanie tej funkcji jest podobne do {{Code|{{sr|#p["Nazwa przedmiotowej przestrzeni nazw"](frame,...)|p=Pudełko}}}}. Definicja skrótowa funkcji: <syntaxhighlight lang="lua"> p["Nazwa przedmiotowej przestrzeni nazw 2"]=function(frame,czy_uwzglednic_alternatywna_nazwe,i)...end; </syntaxhighlight> Wtedy ciało funkcji tej, czyli jego definicja w środku, jest: <syntaxhighlight lang="lua"> local pudelko_pomocne_modul=require("Module:Pudełko/Pomocne"); return pudelko_pomocne_modul.Nazwa_przestrzeni_nazw_przedmiotowa_dyskusji_2(frame,czy_uwzglednic_alternatywna_nazwe,i,"przedmiotowa"); </syntaxhighlight> Parametry funkcji: * {{Code|frame}} - tablica ramki tablicy transportu, * {{Code|czy_uwzglednic_alternatywna_nazwe}} - czy ma uwzględniać nazwę przestrzeni nazw domyślną szablonu, dostępne wartości: {{Code|false}}, w której nazwa domyślna nie jest uwzględniana wtedy, oraz {{Code|nil}} i {{Code|true}}, które oznaczają to samo, w tym jeżeli ona jest uwzględniana, wtedy jest brany parametr pierwszy dziecka, który musi istnieć przy takiej wartości tego parametru, tzn. {{Code|{{m|Pudełko|Nazwa przedmiotowej przestrzeni nazw 2|Szablon}}}}, a nazwa uzyskana nazwy przestrzeni nazw jest w takim przypadku błędna, a jeżeli nazwa domyślna jest błędna, czyli {{Code|{{m|Pudełko|Nazwa przedmiotowej przestrzeni nazw 2|Moja przestrzeń}}}}, wtedy funkcja zwraca stan błędu {{Code|(błąd)}}. * {{Code|i}} - numer zmiennej nazwy przestrzeni nazw. Funkcja wykorzystuje {{Code|{{sr|#p.Nazwa_przestrzeni_nazw_2(frame,...)|p=Pudełko/Pomocne}}}} do wyznaczania ogólnego nazwy przestrzeni nazw dla pozycji bazowej i numerkowej, tzn. dla pozycji: jeden, dwa, trzy,..., itd, i ich ogólnej. Parametr ramki tablicy transportu rodzica szablonu: * {{Code|nazwa przestrzeni nazw}}, {{Code|nazwa przestrzeni nazw 1}}, {{Code|nazwa przestrzeni nazw 2}}, {{Code|nazwa przestrzeni nazw 3}},..., {{Code|nazwa przestrzeni nazw i}} - nazwy przestrzeni nazw dla pozycji bazowej oraz zwykłej i ogólnej numerkowej, * {{Code|nazwa jednostki}}, {{Code|nazwa jednostki 1}}, {{Code|nazwa jednostki 2}}, {{Code|nazwa jednostki 3}},... - nazwy jednostek dla pozycji bazowej i numerkowej, * {{Code|typ jednostki}}, {{Code|typ jednostki 1}}, {{Code|typ jednostki 2}}, {{Code|typ jednostki 3}},..., {{Code|typ jednostki i}} - typy jednostek, którym odpowiadają pewne przestrzenie przedmiotowe, dla pozycji bazowej, numerkowej i ogólnej. Parametry ramki tablicy transportu dziecka: * Parametry dziecka są takie same jak rodzica dla funkcji pudełkowej plus tu wymienione, * {{Code|numer jednostki}} - jak parametr {{Code|i}} nie został ustawiony, to wtedy liczy się ta zmienna. Przykłady: <syntaxhighlight lang="mediawiki"> {{Nazwa szablonu|nazwa przestrzeni nazw=Wikibooks|nazwa przestrzeni nazw 1=Szablon|nazwa przestrzeni nazw i=|nazwa jednostki 2=Dyskusja Wikibooks:Strona}} </syntaxhighlight> W dziecku powiedzmy jest wywołanie, i szukamy nazwy przestrzeni nazw o numerze dwa, która została podana, ale istnieje za to jej wersji ogólna {{Code|nazwa przestrzeni nazw i}} i domyślna {{Code|nazwa przestrzeni nazw}}, ale wtedy dla tego numerkowego liczy się to ogólne z {{Code| i}}, a ponieważ ta nazwa jest pusta, więc będziemy liczyli nazwę przestrzeni nazw z {{Code|nazwa jednostki 2}}: <syntaxhighlight lang="mediawiki"> {{#invoke:Pudełko|Nazwa przedmiotowej przestrzeni nazw 2|numer jednostki=2}} </syntaxhighlight> Na podstawie powyższego przykładu otrzymamy wynik o schemacie, nie wyniku, bo tam nie ma zmiennej {{Code|nazwa przestrzeni nazw 1}}, ale jest {{Code|nazwa przestrzeni nazw i}}: <syntaxhighlight lang="mediawiki"> <!-- Ale nie "nazwa przestrzeni nazw 2", bo jej nie ma, ale za to istnieje "nazwa przestrzeni nazw i"; --> <!-- nazwa przestrzeni nazw 2=nazwa przestrzeni nazw i="", a nazwa jednostki 2="Wikibooks:Strona"; --> <!-- Czyli wynik: --> Wikibooks <!-- Widzimy, że wygenerowała się nazwa przestrzeni nazw, którą jest przestrzeń nieprogramowa, ale projektu, wychodząca z nazwy jednostek w tym przypadku z "nazwa jednostki 2"; --> </syntaxhighlight> Nie jest brana w tym powyższym przykładzie zmienna {{Code|nazwa przestrzeni nazw}}, bo jej nie ma, ale za to jest {{Code|nazwa przestrzeni nazw i}}, bo ona występuje jako parametr domyślny ogólny dla parametrów numerkowych. Tytaj jest używana jest zmienna {{Code|nazwa jednostki 2}} do wygenerowania ostatecznego wyniku, bo jak można zauważyć, parametry przestrzenne wskazują na przestrzeń główną, a nazwy jednostek już nie. Przykłady w wikikodzie: * {{Code|{{m|Pudełko|Nazwa przedmiotowej przestrzeni nazw 2|numer jednostki{{=}}2}}}} → {{Tt|{{#invoke:Pudełko|Nazwa przedmiotowej przestrzeni nazw 2|numer jednostki=2}}}} * {{Code|{{m|Pudełko|Nazwa przedmiotowej przestrzeni nazw 2|Dyskusja szablonu|nazwa przestrzeni nazw i{{=}}Moja przestrzeń|numer jednostki{{=}}2}}}} → {{Tt|{{#invoke:Pudełko|Nazwa przedmiotowej przestrzeni nazw 2|Dyskusja szablonu|nazwa przestrzeni nazw i=Moja przestrzeń|numer jednostki=2}}}} * {{Code|{{m|Pudełko|Nazwa przedmiotowej przestrzeni nazw 2|nazwa przestrzeni nazw 2{{=}}Dyskusja|nazwa jednostki 2{{=}}Dyskusja szablonu:Strona|numer jednostki{{=}}2}}}} → {{Tt|{{#invoke:Pudełko|Nazwa przedmiotowej przestrzeni nazw 2|nazwa przestrzeni nazw 2=Dyskusja|nazwa jednostki 2=Dyskusja szablonu:Strona|numer jednostki=2}}}} * {{Code|{{m|Pudełko|Nazwa przedmiotowej przestrzeni nazw 2|nazwa przestrzeni nazw i{{=}}Dyskusja|nazwa jednostki 2{{=}}Dyskusja szablonu:Strona|numer jednostki{{=}}2}}}} → {{Tt|{{#invoke:Pudełko|Nazwa przedmiotowej przestrzeni nazw 2|nazwa przestrzeni nazw i=Dyskusja|nazwa jednostki 2=Dyskusja szablonu:Strona|numer jednostki=2}}}} * {{Code|{{m|Pudełko|Nazwa przedmiotowej przestrzeni nazw 2|Dyskusja szablonu|nazwa przestrzeni nazw{{=}}Dyskusja|nazwa jednostki 2{{=}}Wikibooks:Strona|numer jednostki{{=}}2}}}} → {{Tt|{{#invoke:Pudełko|Nazwa przedmiotowej przestrzeni nazw 2|Dyskusja szablonu|nazwa przestrzeni nazw=Dyskusja|nazwa jednostki 2=Dyskusja Wikibooks:Strona|numer jednostki=2}}}} Powyżej dla przykładu podano parametry nie w rodzicu w szablonie, tylko w dziecku, jeśli chodzi o parametry nazw przestrzeni nazw i nazw jednostek, ale ich się za to nie powinno podawać w tych ramach, tylko w szablonach, w których wywoływane są te ramki pudełek {{Code|{{m|Pudełko}}}}, ale tak tutaj tak zrobiono by było najłatwiej sprawdzić działanie tego typu funkcji. Analogicznie możemy podawać parametry typu jednostki, np.: wywołaniu modułowym {{Code|{{m|Pudełko|Nazwa przedmiotowej przestrzeni nazw 2|typ jednostki 2{{=}}Podręcznik|nazwa jednostki 2{{=}}Dyskusja szablonu:Strona|numer jednostki{{=}}2}}}} (ale wtedy jest brana przestrzeń nazw z nazwy jednostki), ale o tym więcej w rozdziałach {{Code|{{sr|# p["Typ jednostki"](frame,i)|p=Pudełko}}}}, {{Code|{{sr|#p["Typ jednostki 2"](frame,i)|p=Pudełko}}}}, {{Code|{{sr|#p["Typ jednostki 3"](frame,i)|p=Pudełko}}}} itp. w „{{sr|#Funkcje typu jednostki|p=Pudełko}}”, on definiuje przestrzenie przedmiotowe, ale można użyć parametru dyskusji typu jednostki z wartością niepustą, wtedy wyświetli się nazwa przestrzeni nazw dyskusji. Jeżeli typ jednostki wskazuje na przestrzeń nazw główną, wtedy się liczą parametry nazw jednostek. Również parametry typu jednostki nie powinno się podawać w dziecku w ramce, tylko w rodzicu w szablonie jako parametry, w którym ta ramka jest wywoływana, ale tutaj podano jedynie dla przykładu, jak najłatwiej sprawdzić działanie tych parametrów tej funkcji. Najpierw w funkcji nagłówku brane są parametry nazw przestrzeni nazw, a jeżeli ich nie ma, to parametry typu jednostki, a jeżeli nie ma lub parametry przestrzenne wskazują na przestrzeń główną, i nie ma nazwy jednostki, to generowane są nazwy tej funkcji na podstawie aktualnej strony. === {{Code|p["Nazwa przestrzeni nazw dyskusji 2"](frame,...)}} === == Funkcje pełnych nazw jednostki == === {{Code|p["Pełna nazwa dyskusji jednostki"](frame,i)}} === === {{Code|p["Pełna nazwa przedmiotowa jednostki"](frame,i)}} === === {{Code|p["Pełna nazwa jednostki"](frame,i)}} === == Funkcje pełnych nazw jednostki drugiej wersji == === {{Code|p["Pełna nazwa dyskusji jednostki 2"](frame,i)}} === === {{Code|p["Pełna nazwa przedmiotowa jednostki 2"](frame,i)}} === === {{Code|p["Pełna nazwa jednostki 2"](frame,i)}} === == Funkcje pełnych nazw jednostki trzeciej wersji == === {{Code|p["Pełna nazwa dyskusji jednostki 3"](frame,i)}} === === {{Code|p["Pełna nazwa przedmiotowa jednostki 3"](frame,i)}} === === {{Code|p["Pełna nazwa jednostki 3"](frame,i)}} === == Funkcje nazw jednostki == === {{Code|p["Nazwa jednostki"](frame,i)}} === == Funkcje nazw jednostki drugiej wersji == === {{Code|p["Nazwa jednostki 2"](frame,i)}} === === {{Code|p["Nazwa przedmiotowa jednostki 2"](frame,i)}} === === {{Code|p["Nazwa dyskusji jednostki 2"](frame,i)}} === == Funkcje nazw przestrzeni nazw trzeciej wersji == === {{Code|p["Nazwa przestrzeni nazw 3"](frame,i)}} === === {{Code|p["Nazwa przedmiotowej przestrzeni nazw 3"](frame,i)}} === === {{Code|p["Nazwa przestrzeni nazw dyskusji 3"](frame,i)}} === == Funkcje nazw jednostki trzeciej wersji == === {{Code|p["Nazwa jednostki 3"](frame,i)}} === === {{Code|p["Nazwa przedmiotowa jednostki 3"](frame,i)}} === === {{Code|p["Nazwa dyskusji jednostki 3"](frame,i)}} === == Funkcje typu jednostki == === {{Code|p["Typ jednostki"](frame,i)}} === === {{Code|p["Typ jednostki 2"](frame,i)}} === === {{Code|p["Typ jednostki 3"](frame,i)}} === === Funkcje typu jednostki przedmiotowe === ==== {{Code|p["Przedmiotowy typ jednostki"](frame,i)}} ==== ==== {{Code|p["Przedmiotowy typ jednostki 2"](frame,i)}} ==== ==== {{Code|p["Przedmiotowy typ jednostki 3"](frame,i)}} ==== === Fukcje typu jednostki dyskusji === ==== {{Code|p["Dyskusyjny typ jednostki"](frame,i)}} ==== ==== {{Code|p["Dyskusyjny typ jednostki 2"](frame,i)}}} ==== ==== {{Code|p["Dyskusyjny typ jednostki 3"](frame,i)}} ==== == Funkcje chech pudełka == === {{Code|p["Cecha pudełka"](frame)}} === === {{Code|p["Przedmiotowa cecha pudełka"](frame)}} === === {{Code|p["Dyskusyjna cecha pudełka"](frame)}} === == Fukcje ogólnego pudełka == === {{Code|p["Ogólne pudełko"](frame)}} === == Funkcje ogólne == === {{Code|p["Tekst pudełka"](frame)}} === == Funkcje błędów pudełka == === {{Code|p["Błędy pudełka"](frame)}} === === {{Code|p["Przedmiotowe błędy pudełka"](frame)}} === === {{Code|p["Dyskusyjne błędy pudełka"](frame)}} === == Funkcje nazw stron == === {{Code|p["Nazwa strony głównej projektu"](frame,i)}} === === {{Code|p["Nazwa strony głównej dla dzieci projektu"](frame,i)}} === == Funkcje kodów == === {{Code|p["Kod języka"](frame,i)}} === === {{Code|p["Kod projektu"](frame,i)}} === === {{Code|p["Klucz projektu"](frame,i)}} === == Funkcje wiki == === {{Code|p["Inny niż język bieżący wiki"](frame)}} === === {{Code|p["Inne niż lokalne wiki"](frame)}} === === {{Code|p["Inne niż bieżące wiki"](frame)}} === == Funkcje typów parametrów, czy podane je == === {{Code|p["Podano parametry nienazwane"](frame)}} === === {{Code|p["Podano parametry numerowane"](frame)}} === === {{Code|p["Podano parametry nazwane"](frame)}} === == Funkcje kodów tego projektu == === {{Code|p["Kod projektu tego projektu"](frame)}} === === {{Code|p["Kod języka tego projektu"](frame)}} === === {{Code|p["Klucz projektu tego projektu"](frame)}} === == Funkcje stron == === {{Code|p["Strona główna tego projektu"](frame)}} === === {{Code|p["Strona główna dla dzieci tego projektu"](frame)}} === == Funkcje nazw stron drugiej wersji == === {{Code|p["Nazwa strony głównej dla dzieci projektu 2"](frame)}} === === {{Code| p["Nazwa strony głównej projektu 2"](frame)}} === {{BrClear}} <noinclude><!-- -->{{ProstaStronaKoniec}}<!-- -->{{Kategoria|Opisy funkcji, w Lua w Scribunto, w modułach}}<!-- --></noinclude> jk245lum5y9b08fme77xd4eone8r9mh 540390 540389 2026-04-23T14:05:24Z Persino 2851 /* {{Code|p["Nazwa przedmiotowej przestrzeni nazw 2"](frame,...)}} */ 540390 wikitext text/x-wiki <noinclude>{{ProstaStronaStart | nagłówek = {{Podrozdział|{{ld2|Pudełko}}|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 pudelko_modul=require("Module:Pudełko"); </syntaxhighlight> dzięki, któremu można wypisywać funkcje należącego do niego. Posługuje się na parametrach pudełkowych {{Parametr|nazwa przestrzeni nazw}} (czy też bez numerka {{Parametr|nazwa przestrzeni nazw i}} dla tego numerowanego) lub te z numerkiem po jednej spacji w nich (ale nie dla tego z końcówką {{Code| i}}) mogą zostać użyte jako parametry szablonu. Moduł {{Code|{{ld2|Pudełko}}}} przedstawia funkcje nazw w oparciu o funkcje nazw {{Code|{{ld2|Nazwy}}}}, generuje on nazwy za pomocą parametrów pudełkowych podanych poniżej. Parametr {{Parametr|nazwa jednostki}} (lub parametr {{Parametr|cel}} dla numerka tego pierwszego, tego alternatywnego), lub te z numerkiem po jednej spacji w nazwie parametru, albo numerowane numerkami {{Code|1}}, {{Code|2}},..., mogą zostać użyte jako parametry szablonu. Parametry określające rodzaj jednostki {{Parametr|typ jednostki}} z {{Parametr|dyskusja typu jednostki}}, itp. w wersjach z numerkiem po jednej spacji w nich mogą zostać użyte jako parametry szablonu. A te tymi numerowanymi liczbami naturalnymi {{Tt|nazwy jednostki}} od jedynki wzwyż poprzez szablon, w którym są one użyte, one też mogą być użyte z dwukropkiem, te numerowane, na samym początku nazwy, wtedy one są traktowane jako pełne nazwy strony, i wtedy one nie zostaną z interpretowane, że do nich trzeba użyć parametr odpowiedni z nazwą przetrzeni nazw z tego numerowanego, czy ogólny, aby utworzyć znów inną pełną nazwę strony dla tego numerka. Zestawienie: * {{Code|nazwa przestrzeni nazw}} i {{Code|nazwa przestrzeni nazw i}} (ogólna nazwa przestrzeni nazw dla wszystkich numerków, i tych numerowanych jednostek) - i to pierwsze z numerkiem, tzn. {{Code|nazwa przestrzeni nazw 1}}, {{Code|nazwa przestrzeni nazw 2}}, ..., * {{Code|nazwa jednostki}} - i te z numerkiem: {{Code|nazwa jednostki 1}}, {{Code|nazwa jednostki 2}}, ..., lub gdy jest zamiast tego parametrem numerowany, {{Code|1}}, {{Code|2}},..., który dla tego pierwszego może być uznany jako: {{Code|cel}} {{=}} {{Code|1}}, * {{Code|typ jednostki}} (parametr bazowy) i {{Code|typ jednostki i}} (parametr domyślny numerkowy) - i te z numerkiem: {{Code|typ jednostki 1}}, {{Code|typ jednostki 2}}, ..., tzn. gdy chcemy określić z jakim typem jednostki mamy do czynienia w zależności do jakiej przestrzeni nazw należy, a w danej, czy jest on np. programowy, czy tylko jest opisem, jak to bywa w szablonach {{Np|Template|link=tak}}, podobnie jest w przypadku {{Np|Module|link=tak}}, czy jak jest w innych przestrzeniach nazw, ** {{Code|dyskusja typu jednostki}} (parametr bazowy) i {{Code|dyskusja typu jednostki i}} (parametr domyślny numerkowy) - i te z numerkiem: {{Code|dyskusja typu jednostki 1}}, {{Code|dyskusja typu jednostki 2}}, ..., gdy chcemy określić wartością niepustą,że chodzi tutaj o typ jednostki. == {{Code|p.CzyNiepoprawnaNazwa(nazwa_jednostki)}} == Funkcja sprawdzajaca, czy jest poprawnie podana nazwa jednostki, czy ma poprawną nazwę. Znakami tymi, z których nie powinna składać się nazwa jest {{Code|<nowiki>{}<>|[]#\n</nowiki>}} i dodatkowo znak {{Code|&#127;}} (kod {{Code|{{Nowiki|&#127;}}}}). Też nie może składać się z trzech znaków tyldy, tzn. {{Code|<nowiki>~~~</nowiki>}}. Również w swojej budowie nie może składać się ze kodów {{Strong|HTML}} literowych o wzorze {{Code|{{Nowiki|&(%a+);}}}}. Natomiast może składać się z {{Code|{{Nowiki|&#(%d+);}}}} i {{Code|{{Nowiki|&#x(%x+);}}}}, ale w pierw te kody muszą być zamienione na normalne znaki. Skrótowa definicja funkcji: <syntaxhighlight lang="lua"> function p.CzyNiepoprawnaNazwa(nazwa_jednostki)...end; </syntaxhighlight> Wtedy ciało funkcji tej, czyli jego definicja w środku, jest: <syntaxhighlight lang="lua"> -- Moduł: "Moduł:Html/dane", służy do ładowania znaku o kodzie HTML "&#127;"; local html_dane_modul=mw.loadData("Module:Html/dane"); return mw.ustring.match(nazwa_jednostki,"[{}<>|%[%]#\n"..html_dane_modul.znak_127.."]+") or mw.ustring.match(nazwa_jednostki,"~~~") or mw.ustring.match(nazwa_jednostki,"&(%a+);"); </syntaxhighlight> Parametry: * {{Code|nazwa_jednostki}} - nazwa jednostki do sprawdzenia. Przykłady: <syntaxhighlight lang="lua"> local pudelko_modul=require("Module:Pudełko"); -- Podana przykładowa niepoprawna nazwa jedostki local nazwa_jednostki="Nazwa pliku [[Nazwa linku w pliku]]"; -- Fukcja zwróci wartość: local czy_poprawna_nazwa=true; local czy_poprawna_nazwa=pudelko_modul.CzyNiepoprawnaNazwa(nazwa_jednostki); </syntaxhighlight> == Funkcje nazw przestrzeni nazw == === {{Code|p["Nazwa przestrzeni nazw"](frame,...)}} === Funkcja pisze nazwę przestrzeni nazw, niezależnie, czy to jest przedmiotowa, czy dyskusji, według podanej w zmiennej {{Code|nazwa przestrzeni nazw}} dla pozycja bazowej w podanych parametrach szablonu rodzicu ramki dziecka, lub dla innej pozycji należy parametr podawać w formie {{Code|nazwa przestrzeni nazw 1}}, {{Code|nazwa przestrzeni nazw 2}}, {{Code|nazwa przestrzeni nazw 3}},..., lub te parametry można podać w postaci ogólnej {{Code|nazwa przestrzeni nazw i}}. Parametry podaje się w parametrach rodzica wywołania tej funkcji {{Code|{{m|Pudełko|Nazwa przestrzeni nazw}}}} (ale ich nie trzeba podawać w dziecku, ale można) i w parametrach dziecka, jeśli chodzi o zmienną {{Code|numer jednostki}}, czyli np.: {{Code|{{m|Pudełko|Nazwa przestrzeni nazw|numer jednostki{{=}}<jakaś liczba całkowita dodatnia>}}}}. Te parametry przestrzenne zamiast w rodzicu w szablonie można podać w ramce dziecka, wtedy parametry dziecka mają pierwszeństwo. Przestrzeń nazw z parametrów nazw przestrzennych może odpowiadać wartości przestrzeni głównej, to wtedy odpowiednia przestrzeń nazw z parametru nazwy jednostki się nie liczy w tej funkcji, aby się liczyła należy użyć funkcji {{Code|{{sr|#p["Nazwa przestrzeni nazw 2"](frame,...)|p=Pudełko}}}}. Definicja skrótowa funkcji: <syntaxhighlight lang="lua"> p["Nazwa przestrzeni nazw"]=function(frame,czy_uwzglednic_alternatywna_nazwe,i)...end; </syntaxhighlight> Wtedy ciało funkcji tej, czyli jego definicja w środku, jest: <syntaxhighlight lang="lua"> -- Jest liczony numer parametru nazwy przestrzeni nazw, domyslnie chodzi tu o numer bazowy parametrów przestrzennych; local numer_jednostki=i or frame.args["numer jednostki"]; local liczba_numer_jednostki=((numer_jednostki)and(tonumber(numer_jednostki))or 0); local pudelko_pomocne_modul=require("Module:Pudełko/Pomocne"); -- Liczy nazwę przestrzeni nazw na podstawie podanych parametrów; return pudelko_pomocne_modul.Nazwa_przestrzeni_nazw(frame,0, czy_uwzglednic_alternatywna_nazwe,liczba_numer_jednostki); </syntaxhighlight> Parametry funkcji: * {{Code|frame}} - tablica ramki tablicy transportu, * {{Code|czy_uwzglednic_alternatywna_nazwe}} - czy ma uwzględniać nazwę przestrzeni nazw domyślną szablonu, dostępne wartości: {{Code|false}}, w której nazwa domyślna nie jest uwzględniana wtedy, oraz {{Code|nil}} i {{Code|true}}, które oznaczają to samo, w tym jeżeli ona jest uwzględniana, wtedy jest brany parametr pierwszy dziecka, który musi istnieć przy takiej wartości tego parametru, tzn. {{Code|{{m|Pudełko|Nazwa przestrzeni nazw|Szablon}}}}, a nazwa uzyskana nazwy przestrzeni nazw jest w takim przypadku błędna, a jeżeli nazwa domyślna jest błędna, czyli {{Code|{{m|Pudełko|Nazwa przestrzeni nazw|Moja przestrzeń}}}}, wtedy funkcja zwraca stan błędu {{Code|(błąd)}}. * {{Code|i}} - numer zmiennej nazwy przestrzeni nazw. Funkcja wykorzystuje {{Code|{{sr|#p.Nazwa_przestrzeni_nazw(frame,...)|p=Pudełko/Pomocne}}}} do wyznaczania ogólnego nazwy przestrzeni nazw dla pozycji bazowej i numerkowej, tzn. dla pozycji: jeden, dwa, trzy,..., itd, i ich ogólnej. Parametr ramki tablicy transportu rodzica szablonu: * {{Code|nazwa przestrzeni nazw}}, {{Code|nazwa przestrzeni nazw 1}}, {{Code|nazwa przestrzeni nazw 2}}, {{Code|nazwa przestrzeni nazw 3}},..., {{Code|nazwa przestrzeni nazw i}} - nazwy przestrzeni nazw dla pozycji bazowej oraz zwykłej i ogólnej numerkowej, * {{Code|typ jednostki}}, {{Code|typ jednostki 1}}, {{Code|typ jednostki 2}}, {{Code|typ jednostki 3}},..., {{Code|typ jednostki i}} - typy jednostek, którym odpowiadają pewne przestrzenie przedmiotowe, dla pozycji bazowej, numerkowej i ogólnej, ** {{Code|dyskusja typu jednostki}}, {{Code|dyskusja typu jednostki 1}}, {{Code|dyskusja typ jednostki 2}}, {{Code|dyskusja typ jednostki 3}},..., {{Code|dyskusja typ jednostki i}} - czy dany typ jednostki ma przedstawiać, jeśli niepusta, przestrzeń dyskusji dla pozycji bazowej, numerkowej i ogólnej. Parametry ramki tablicy transportu dziecka: * Parametry dziecka są takie same jak rodzica dla funkcji pudełkowej plus tu wymienione, * {{Code|numer jednostki}} - jak parametr {{Code|i}} nie został ustawiony, to wtedy liczy się ta zmienna. Przykłady: <syntaxhighlight lang="mediawiki"> {{Nazwa szablonu|nazwa przestrzeni nazw=Wikibooks|nazwa przestrzeni nazw 2=Szablon|nazwa przestrzeni nazw i=Moduł}} </syntaxhighlight> W dziecku powiedzmy jest wywołanie, i szukamy nazwy przestrzeni nazw o numerze dwa, która nie została podana, ale istnieje za to jej wersji ogólna {{Code|nazwa przestrzeni nazw i}} i domyślna {{Code|nazwa przestrzeni nazw}}: <syntaxhighlight lang="mediawiki"> {{#invoke:Pudełko|Nazwa przestrzeni nazw|numer jednostki=1}} </syntaxhighlight> Na podstawie powyższego przykładu otrzymamy wynik o schemacie, nie wyniku, bo tam nie ma zmiennej {{Code|nazwa przestrzeni nazw 1}}, ale jest {{Code|nazwa przestrzeni nazw i}}: <syntaxhighlight lang="mediawiki"> <!-- Ale nie "nazwa przestrzeni nazw", bo jej nie ma, ale za to istnieje "nazwa przestrzeni nazw i"; --> <!-- nazwa przestrzeni nazw 2=nazwa przestrzeni nazw i=Moduł; --> <!-- Czyli wynik: --> Moduł <!-- Widzimy, że wygenerowała się nazwa przestrzeni nazw, którą jest przestrzeń programowa, którą również jest "Szablon"; --> </syntaxhighlight> Nie jest brana w tym powyższym przykładzie zmienna {{Code|nazwa przestrzeni nazw}}, bo jej nie ma, ale za to jest {{Code|nazwa przestrzeni nazw i}}, bo ona występuje jako parametr domyślny ogólny dla parametrów numerkowych. Przykłady w wikikodzie: * {{Code|{{m|Pudełko|Nazwa przestrzeni nazw|numer jednostki{{=}}2}}}} → {{Tt|{{#invoke:Pudełko|Nazwa przestrzeni nazw|numer jednostki=2}}}} * {{Code|{{m|Pudełko|Nazwa przestrzeni nazw|Szablon|nazwa przestrzeni nazw i{{=}}Moja przestrzeń|numer jednostki{{=}}2}}}} → {{Tt|{{#invoke:Pudełko|Nazwa przestrzeni nazw|Szablon|nazwa przestrzeni nazw i=Moja przestrzeń|numer jednostki=2}}}} * {{Code|{{m|Pudełko|Nazwa przestrzeni nazw|nazwa przestrzeni nazw 2{{=}}Szablon|numer jednostki{{=}}2}}}} → {{Tt|{{#invoke:Pudełko|Nazwa przestrzeni nazw|nazwa przestrzeni nazw 2=Szablon|numer jednostki=2}}}} * {{Code|{{m|Pudełko|Nazwa przestrzeni nazw|nazwa przestrzeni nazw 2{{=}}Szablon|numer jednostki{{=}}2}}}} → {{Tt|{{#invoke:Pudełko|Nazwa przestrzeni nazw|nazwa przestrzeni nazw i=Szablon|numer jednostki=2}}}} * {{Code|{{m|Pudełko|Nazwa przestrzeni nazw|nazwa przestrzeni nazw{{=}}Szablon|numer jednostki{{=}}2}}}} → {{Tt|{{#invoke:Pudełko|Nazwa przestrzeni nazw|nazwa przestrzeni nazw=Szablon|numer jednostki=2}}}} Powyżej dla przykładu podano parametry nie w rodzicu w szablonie, tylko w dziecku, jeśli chodzi o parametry nazw przestrzeni nazw, ale ich się za to nie powinno podawać w tych ramach, tylko w szablonach, w których wywoływane są te ramki pudełek {{Code|{{m|Pudełko}}}}, ale tak tutaj tak zrobiono by było najłatwiej sprawdzić działanie tego typu funkcji. Analogicznie możemy podawać parametry typu jednostki, np.: wywołaniu modułowym {{Code|{{m|Pudełko|Nazwa przestrzeni nazw|typ jednostki 2{{=}}strona szablonu|numer jednostki{{=}}2}}}}, ale o tym więcej w rozdziałach {{Code|{{sr|# p["Typ jednostki"](frame,i)|p=Pudełko}}}}, {{Code|{{sr|#p["Typ jednostki 2"](frame,i)|p=Pudełko}}}}, {{Code|{{sr|#p["Typ jednostki 3"](frame,i)|p=Pudełko}}}} itp. w „{{sr|#Funkcje typu jednostki|p=Pudełko}}”, on definiuje przestrzenie przedmiotowe, ale można użyć parametru dyskusji typu jednostki z wartością niepustą, wtedy wyświetli się nazwa przestrzeni nazw dyskusji. Również parametry typu jednostki nie powinno się podawać w dziecku w ramce, tylko w rodzicu w szablonie jako parametry, w którym ta ramka jest wywoływana, ale tutaj podano jedynie dla przykładu, jak najłatwiej sprawdzić działanie tych parametrów tej funkcji. Najpierw w funkcji nagłówku brane są parametry nazw przestrzeni nazw, a jeżeli ich nie ma, to parametry typu jednostki, a jeżeli nie ma, to generowane są nazwy na podstawie aktualnego modułu. === {{Code|p["Nazwa przedmiotowej przestrzeni nazw"](frame,...)}} === Funkcja pisze przedmiotową nazwę przestrzeni nazw jakikolwiek nazwy przestrzeni nazw (tzn. nazwę przedmiotową nazwy przestrzenie nazw, czyli nie dyskusji, zamieniana jest na nią samą, czyli identyfikator przestrzeni się nie zmienia, a dyskusji, nie przedmiotową, przekształca się na przedmiotową jej odpowiadającą, czyli w tym przypadku identyfikator przestrzeni zmniejsza się o numer mniej), według podanej w zmiennej {{Code|nazwa przestrzeni nazw}} dla pozycja bazowej w podanych parametrach szablonu rodzicu ramki dziecka, lub dla innej pozycji należy parametr podawać w formie {{Code|nazwa przestrzeni nazw 1}}, {{Code|nazwa przestrzeni nazw 2}}, {{Code|nazwa przestrzeni nazw 3}},..., lub te parametry można podać w postaci ogólnej {{Code|nazwa przestrzeni nazw i}}. Parametry podaje się w parametrach rodzica wywołania tej funkcji {{Code|{{m|Pudełko|Nazwa przedmiotowej przestrzeni nazw}}}} (ale ich nie trzeba podawać w dziecku, ale można) i w parametrach dziecka, jeśli chodzi o zmienną {{Code|numer jednostki}}, czyli np.: {{Code|{{m|Pudełko|Nazwa przedmiotowej przestrzeni nazw|numer jednostki{{=}}<jakaś liczba całkowita dodatnia>}}}}. Te parametry przestrzenne zamiast w rodzicu w szablonie można podać w ramce dziecka, wtedy parametry dziecka mają pierwszeństwo. Parametry przestrzenne mogą mogą być podane w postaci przestrzeni przedmiotowej lub dyskusji, ale ta funkcja zawsze ją zamienia na przedmiotową. Przestrzeń nazw z parametrów nazw przestrzennych może odpowiadać wartości przestrzeni głównej, to wtedy odpowiednia przestrzeń nazw z parametru nazwy jednostki się nie liczy w tej funkcji, aby się liczyła należy użyć funkcji {{Code|{{sr|#p["Nazwa przedmiotowej przestrzeni nazw 2"](frame,...)|p=Pudełko}}}}. Definicja skrótowa funkcji: <syntaxhighlight lang="lua"> p["Nazwa przedmiotowej przestrzeni nazw"]=function(frame,czy_uwzglednic_alternatywna_nazwe,i)...end; </syntaxhighlight> Wtedy ciało funkcji tej, czyli jego definicja w środku, jest: <syntaxhighlight lang="lua"> -- Jest liczony numer parametru nazwy przestrzeni nazw, domyslnie chodzi tu o numer bazowy parametrów przestrzennych; local numer_jednostki=i or frame.args["numer jednostki"]; local liczba_numer_jednostki=((numer_jednostki)and(tonumber(numer_jednostki))or 0); local pudelko_pomocne_modul=require("Module:Pudełko/Pomocne"); -- Liczy nazwę przestrzeni nazw przedmiotową na podstawie podanych parametrów; return pudelko_pomocne_modul.Nazwa_przestrzeni_nazw(frame,1, czy_uwzglednic_alternatywna_nazwe,liczba_numer_jednostki); </syntaxhighlight> Parametry funkcji: * {{Code|frame}} - tablica ramki tablicy transportu, * {{Code|czy_uwzglednic_alternatywna_nazwe}} - czy ma uwzględniać nazwę przestrzeni nazw domyślną szablonu, dostępne wartości: {{Code|false}}, w której nazwa domyślna nie jest uwzględniana wtedy, oraz {{Code|nil}} i {{Code|true}}, które oznaczają to samo, w tym jeżeli ona jest uwzględniana, wtedy jest brany parametr pierwszy dziecka, który musi istnieć przy takiej wartości tego parametru, tzn. {{Code|{{m|Pudełko|Nazwa przedmiotowej przestrzeni nazw|Dyskusja szablonu}}}} - ta nazwa domyślna zostanie zamieniona na przedmiotową, a jak ona by była przedmiotowa, to żadnej zamiany by nie było, a nazwa uzyskana z nazwy przestrzeni nazw z parametrów przestrzennych jest w takim przypadku błędna, to w takim razie brany jest ten parametr, a jeżeli ta nazwa domyślna jest błędna, czyli {{Code|{{m|Pudełko|Nazwa przedmiotowej przestrzeni nazw|Moja przestrzeń}}}}, wtedy funkcja zwraca stan błędu {{Code|(błąd)}}. * {{Code|i}} - numer zmiennej nazwy przestrzeni nazw. Funkcja wykorzystuje {{Code|{{sr|#p.Nazwa_przestrzeni_nazw(frame,...)|p=Pudełko/Pomocne}}}} do wyznaczania ogólnego nazwy przestrzeni nazw dla pozycji bazowej i numerkowej, tzn. dla pozycji: jeden, dwa, trzy,..., itd, i ich ogólnej. Parametr ramki tablicy transportu rodzica szablonu: * {{Code|nazwa przestrzeni nazw}}, {{Code|nazwa przestrzeni nazw 1}}, {{Code|nazwa przestrzeni nazw 2}}, {{Code|nazwa przestrzeni nazw 3}},..., {{Code|nazwa przestrzeni nazw i}} - nazwy przestrzeni nazw dla pozycji bazowej oraz zwykłej i ogólnej numerkowej, * {{Code|typ jednostki}}, {{Code|typ jednostki 1}}, {{Code|typ jednostki 2}}, {{Code|typ jednostki 3}},..., {{Code|typ jednostki i}} - typy jednostek, którym odpowiadają pewne przestrzenie przedmiotowe, dla pozycji bazowej, numerkowej i ogólnej. Parametry ramki tablicy transportu dziecka: * Parametry dziecka są takie same jak rodzica dla funkcji pudełkowej plus tu wymienione, * {{Code|numer jednostki}} - jak parametr {{Code|i}} nie został ustawiony, to wtedy liczy się ta zmienna. Przykłady: <syntaxhighlight lang="mediawiki"> {{Nazwa szablonu|nazwa przestrzeni nazw=Dyskusja Wikibooks|nazwa przestrzeni nazw 2=Dyskusja szablonu|nazwa przestrzeni nazw i=Dyskusja modułu}} </syntaxhighlight> W dziecku powiedzmy jest wywołanie, i szukamy nazwy przestrzeni nazw o numerze dwa, która nie została podana, ale istnieje za to jej wersji ogólna {{Code|nazwa przestrzeni nazw i}} i domyślna {{Code|nazwa przestrzeni nazw}}: <syntaxhighlight lang="mediawiki"> {{#invoke:Pudełko|Nazwa przedmiotowej przestrzeni nazw|numer jednostki=1}} </syntaxhighlight> Na podstawie powyższego przykładu otrzymamy wynik o schemacie, nie wyniku, bo tam nie ma zmiennej {{Code|nazwa przestrzeni nazw 1}}, ale jest {{Code|nazwa przestrzeni nazw i}}: <syntaxhighlight lang="mediawiki"> <!-- Ale nie "nazwa przestrzeni nazw", bo jej nie ma, ale za to istnieje "nazwa przestrzeni nazw i"; --> <!-- nazwa przestrzeni nazw 2=nazwa przestrzeni nazw i=Dyskusja modułu; --> <!-- Czyli wynik: --> Moduł <!-- Widzimy, że wygenerowała się nazwa przestrzeni nazw, którą jest przestrzeń przedmiotowa programowa przestrzeni dyskusji "Dyskusja modułu", którą również jest "Szablon" jego przestrzeni dyskusji "Dyskusja szablonu", a dla ich przestrzeni przedmiotowej, zamiast dyskusji, to samo przekształca się na to samo; --> </syntaxhighlight> Nie jest brana w tym powyższym przykładzie zmienna {{Code|nazwa przestrzeni nazw}}, bo jej nie ma, ale za to jest {{Code|nazwa przestrzeni nazw i}}, bo ona występuje jako parametr domyślny ogólny dla parametrów numerkowych. Przykłady w wikikodzie: * {{Code|{{m|Pudełko|Nazwa przedmiotowej przestrzeni nazw|numer jednostki{{=}}2}}}} → {{Tt|{{#invoke:Pudełko|Nazwa przedmiotowej przestrzeni nazw|numer jednostki=2}}}} * {{Code|{{m|Pudełko|Nazwa przedmiotowej przestrzeni nazw|Dyskusja szablonu|nazwa przestrzeni nazw i{{=}}Moja przestrzeń|numer jednostki{{=}}2}}}} → {{Tt|{{#invoke:Pudełko|Nazwa przedmiotowej przestrzeni nazw|Dyskusja szablonu|nazwa przestrzeni nazw i=Moja przestrzeń|numer jednostki=2}}}} * {{Code|{{m|Pudełko|Nazwa przedmiotowej przestrzeni nazw|nazwa przestrzeni nazw 2{{=}}Dyskusja szablonu|numer jednostki{{=}}2}}}} → {{Tt|{{#invoke:Pudełko|Nazwa przedmiotowej przestrzeni nazw|nazwa przestrzeni nazw 2=Dyskusja szablonu|numer jednostki=2}}}} * {{Code|{{m|Pudełko|Nazwa przedmiotowej przestrzeni nazw|nazwa przestrzeni nazw 2{{=}}Dyskusja szablonu|numer jednostki{{=}}2}}}} → {{Tt|{{#invoke:Pudełko|Nazwa przedmiotowej przestrzeni nazw|nazwa przestrzeni nazw i=Dyskusja szablonu|numer jednostki=2}}}} * {{Code|{{m|Pudełko|Nazwa przedmiotowej przestrzeni nazw|nazwa przestrzeni nazw{{=}}Dyskusja szablonu|numer jednostki{{=}}2}}}} → {{Tt|{{#invoke:Pudełko|Nazwa przedmiotowej przestrzeni nazw|nazwa przestrzeni nazw=Dyskusja szablonu|numer jednostki=2}}}} Powyżej dla przykładu podano parametry nie w rodzicu w szablonie, tylko w dziecku, jeśli chodzi o parametry nazw przestrzeni nazw, ale ich się za to nie powinno podawać w tych ramach, tylko w szablonach, w których wywoływane są te ramki pudełek {{Code|{{m|Pudełko}}}}, ale tak tutaj tak zrobiono by było najłatwiej sprawdzić działanie tego typu funkcji. Analogicznie możemy podawać parametry typu jednostki, np.: wywołaniu modułowym {{Code|{{m|Pudełko|Nazwa przedmiotowej przestrzeni nazw|typ jednostki 2{{=}}strona szablonu|numer jednostki{{=}}2}}}}, ale o tym więcej w rozdziałach {{Code|{{sr|# p["Typ jednostki"](frame,i)|p=Pudełko}}}}, {{Code|{{sr|#p["Typ jednostki 2"](frame,i)|p=Pudełko}}}}, {{Code|{{sr|#p["Typ jednostki 3"](frame,i)|p=Pudełko}}}} itp. w „{{sr|#Funkcje typu jednostki|p=Pudełko}}”, ale wtedy ta sama nazwa przestrzeni nazw reprezentowana przez {{Parametr|typ jednostki 2|strona szablonu}}, jest zamieniana na to samo, lepiej jest tutaj używać parametrów przestrzennych nazw niż typu jednostki, bo typ jednostki ma taką samą wartość dla przestrzeni przedmiotowej, co dyskusji. Tutaj parametr dyskusji typu jednostki bazowy i numerkowy ogólny, czy szczegółowy, nie gra roli, bo nawet, gdy wygenerujemy nazwę przestrzeni dyskusji za pomoca tego parametru, to i tak otrzymamy na samym końcu jego nazwę przedmiotową. Również parametry typu jednostki nie powinno się podawać w dziecku w ramce, tylko w rodzicu w szablonie jako parametry, w którym ta ramka jest wywoływana, ale tutaj podano jedynie dla przykładu, jak najłatwiej sprawdzić działanie tych parametrów tej funkcji. Najpierw w funkcji nagłówku brane są parametry nazw przestrzeni nazw, a jeżeli ich nie ma, to parametry typu jednostki, a jeżeli nie ma, to generowane są nazwy na podstawie aktualnego modułu. === {{Code|p["Nazwa przestrzeni nazw dyskusji"](frame,...)}} === Funkcja pisze nazwę przestrzeni nazw dyskusji jakikolwiek nazwy przestrzeni nazw (tzn. nazwę przedmiotową nazwy przestrzenie nazw, czyli nie dyskusji, zamieniana jest na dyskusji, czyli identyfikator przestrzeni się zmienia jeden wyżej, a dyskusji, nie przedmiotową, przekształca się na tą samą), według podanej w zmiennej {{Code|nazwa przestrzeni nazw}} dla pozycja bazowej w podanych parametrach szablonu rodzicu ramki dziecka, lub dla innej pozycji należy parametr podawać w formie {{Code|nazwa przestrzeni nazw 1}}, {{Code|nazwa przestrzeni nazw 2}}, {{Code|nazwa przestrzeni nazw 3}},..., lub te parametry można podać w postaci ogólnej {{Code|nazwa przestrzeni nazw i}}. Parametry podaje się w parametrach rodzica wywołania tej funkcji {{Code|{{m|Pudełko|Nazwa przestrzeni nazw dyskusji}}}} (ale ich nie trzeba podawać w dziecku, ale można) i w parametrach dziecka, jeśli chodzi o zmienną {{Code|numer jednostki}}, czyli np.: {{Code|{{m|Pudełko|Nazwa przestrzeni nazw dyskusji|numer jednostki{{=}}<jakaś liczba całkowita dodatnia>}}}}. Te parametry przestrzenne zamiast w rodzicu w szablonie można podać w ramce dziecka, wtedy parametry dziecka mają pierwszeństwo. Parametry przestrzenne mogą mogą być podane w postaci przestrzeni przedmiotowej lub dyskusji, ale ta funkcja zawsze ją zamienia na dyskusji. Przestrzeń nazw z parametrów nazw przestrzennych może odpowiadać wartości przestrzeni głównej, to wtedy odpowiednia przestrzeń nazw z parametru nazwy jednostki się nie liczy w tej funkcji, aby się liczyła należy użyć funkcji {{Code|{{sr|#p["Nazwa przestrzeni nazw dyskusji 2"](frame,...)|p=Pudełko}}}}. Definicja skrótowa funkcji: <syntaxhighlight lang="lua"> p["Nazwa przestrzeni nazw dyskusji"]=function(frame,czy_uwzglednic_alternatywna_nazwe,i)...end; </syntaxhighlight> Wtedy ciało funkcji tej, czyli jego definicja w środku, jest: <syntaxhighlight lang="lua"> -- Jest liczony numer parametru nazwy przestrzeni nazw, domyslnie chodzi tu o numer bazowy parametrów przestrzennych; local numer_jednostki=i or frame.args["numer jednostki"]; local liczba_numer_jednostki=((numer_jednostki)and(tonumber(numer_jednostki))or 0); local pudelko_pomocne_modul=require("Module:Pudełko/Pomocne"); -- Liczy nazwę przestrzeni nazw dyskusji na podstawie podanych parametrów; return pudelko_pomocne_modul.Nazwa_przestrzeni_nazw(frame,2, czy_uwzglednic_alternatywna_nazwe,liczba_numer_jednostki); </syntaxhighlight> Parametry funkcji: * {{Code|frame}} - tablica ramki tablicy transportu, * {{Code|czy_uwzglednic_alternatywna_nazwe}} - czy ma uwzględniać nazwę przestrzeni nazw domyślną szablonu, dostępne wartości: {{Code|false}}, w której nazwa domyślna nie jest uwzględniana wtedy, oraz {{Code|nil}} i {{Code|true}}, które oznaczają to samo, w tym jeżeli ona jest uwzględniana, wtedy jest brany parametr pierwszy dziecka, który musi istnieć przy takiej wartości tego parametru, tzn. {{Code|{{m|Pudełko|Nazwa przestrzeni nazw dyskusji|Szablon}}}} - ta nazwa domyślna zostanie przekształcona na dyskusji, a jeżeli ona by była dyskusji, to nie byłoby żadnego przekształcenia, a nazwa uzyskana nazwy przestrzeni nazw z parametrów przestrzennych jest w takim przypadku błędna, to w takim razie brany jest ten parametr, a jeżeli nazwa domyślna jest błędna, czyli {{Code|{{m|Pudełko|Nazwa przestrzeni nazw dyskusji|Moja przestrzeń}}}}, wtedy funkcja zwraca stan błędu {{Code|(błąd)}}. * {{Code|i}} - numer zmiennej nazwy przestrzeni nazw. Funkcja wykorzystuje {{Code|{{sr|#p.Nazwa_przestrzeni_nazw(frame,...)|p=Pudełko/Pomocne}}}} do wyznaczania ogólnego nazwy przestrzeni nazw dla pozycji bazowej i numerkowej, tzn. dla pozycji: jeden, dwa, trzy,..., itd, i ich ogólnej. Parametr ramki tablicy transportu rodzica szablonu: * {{Code|nazwa przestrzeni nazw}}, {{Code|nazwa przestrzeni nazw 1}}, {{Code|nazwa przestrzeni nazw 2}}, {{Code|nazwa przestrzeni nazw 3}},..., {{Code|nazwa przestrzeni nazw i}} - nazwy przestrzeni nazw dla pozycji bazowej oraz zwykłej i ogólnej numerkowej, * {{Code|typ jednostki}}, {{Code|typ jednostki 1}}, {{Code|typ jednostki 2}}, {{Code|typ jednostki 3}},..., {{Code|typ jednostki i}} - typy jednostek, którym odpowiadają pewne przestrzenie przedmiotowe, dla pozycji bazowej, numerkowej i ogólnej. Parametry ramki tablicy transportu dziecka: * Parametry dziecka są takie same jak rodzica dla funkcji pudełkowej plus tu wymienione, * {{Code|numer jednostki}} - jak parametr {{Code|i}} nie został ustawiony, to wtedy liczy się ta zmienna. Przykłady: <syntaxhighlight lang="mediawiki"> {{Nazwa szablonu|nazwa przestrzeni nazw=Wikibooks|nazwa przestrzeni nazw 2=Szablon|nazwa przestrzeni nazw i=Moduł}} </syntaxhighlight> W dziecku powiedzmy jest wywołanie, i szukamy nazwy przestrzeni nazw o numerze dwa, która nie została podana, ale istnieje za to jej wersji ogólna {{Code|nazwa przestrzeni nazw i}} i domyślna {{Code|nazwa przestrzeni nazw}}: <syntaxhighlight lang="mediawiki"> {{#invoke:Pudełko|Nazwa przestrzeni nazw dyskusji|numer jednostki=1}} </syntaxhighlight> Na podstawie powyższego przykładu otrzymamy wynik o schemacie, nie wyniku, bo tam nie ma zmiennej {{Code|nazwa przestrzeni nazw 1}}, ale jest {{Code|nazwa przestrzeni nazw i}}: <syntaxhighlight lang="mediawiki"> <!-- Ale nie "nazwa przestrzeni nazw", bo jej nie ma, ale za to istnieje "nazwa przestrzeni nazw i"; --> <!-- nazwa przestrzeni nazw 2=nazwa przestrzeni nazw i=Moduł; --> <!-- Czyli wynik: --> Dyskusja modułu <!-- Widzimy, że wygenerowała się nazwa przestrzeni nazw, którą jest przestrzeń dyskusji przestrzeni programowej przestrzeni przedmiotowej "Moduł", którą również jest "Szablon" jego przestrzeni dyskusji "Dyskusja szablonu", a dla ich przestrzeni przedmiotowej, zamiast dyskusji, to przekształca się na dyskusji jej odpowiadającą; --> </syntaxhighlight> Nie jest brana w tym powyższym przykładzie zmienna {{Code|nazwa przestrzeni nazw}}, bo jej nie ma, ale za to jest {{Code|nazwa przestrzeni nazw i}}, bo ona występuje jako parametr domyślny ogólny dla parametrów numerkowych. Przykłady w wikikodzie: * {{Code|{{m|Pudełko|Nazwa przestrzeni nazw dyskusji|numer jednostki{{=}}2}}}} → {{Tt|{{#invoke:Pudełko|Nazwa przestrzeni nazw dyskusji|numer jednostki=2}}}} * {{Code|{{m|Pudełko|Nazwa przestrzeni nazw dyskusji|Szablon|nazwa przestrzeni nazw i{{=}}Moja przestrzeń|numer jednostki{{=}}2}}}} → {{Tt|{{#invoke:Pudełko|Nazwa przestrzeni nazw dyskusji|Szablon|nazwa przestrzeni nazw i=Moja przestrzeń|numer jednostki=2}}}} * {{Code|{{m|Pudełko|Nazwa przestrzeni nazw dyskusji|nazwa przestrzeni nazw 2{{=}}Szablon|numer jednostki{{=}}2}}}} → {{Tt|{{#invoke:Pudełko|Nazwa przestrzeni nazw dyskusji|nazwa przestrzeni nazw 2=Szablon|numer jednostki=2}}}} * {{Code|{{m|Pudełko|Nazwa przestrzeni nazw dyskusji|nazwa przestrzeni nazw 2{{=}}Szablon|numer jednostki{{=}}2}}}} → {{Tt|{{#invoke:Pudełko|Nazwa przestrzeni nazw dyskusji|nazwa przestrzeni nazw i=Szablon|numer jednostki=2}}}} * {{Code|{{m|Pudełko|Nazwa przestrzeni nazw dyskusji|nazwa przestrzeni nazw{{=}}Szablon|numer jednostki{{=}}2}}}} → {{Tt|{{#invoke:Pudełko|Nazwa przestrzeni nazw dyskusji|nazwa przestrzeni nazw=Szablon|numer jednostki=2}}}} Powyżej dla przykładu podano parametry nie w rodzicu w szablonie, tylko w dziecku, jeśli chodzi o parametry nazw przestrzeni nazw, ale ich się za to nie powinno podawać w tych ramach, tylko w szablonach, w których wywoływane są te ramki pudełek {{Code|{{m|Pudełko}}}}, ale tak tutaj tak zrobiono by było najłatwiej sprawdzić działanie tego typu funkcji. Analogicznie możemy podawać parametry typu jednostki, np.: wywołaniu modułowym {{Code|{{m|Pudełko|Nazwa przestrzeni nazw dyskusji|typ jednostki 2{{=}}strona szablonu|numer jednostki{{=}}2}}}}, ale o tym więcej w rozdziałach {{Code|{{sr|# p["Typ jednostki"](frame,i)|p=Pudełko}}}}, {{Code|{{sr|#p["Typ jednostki 2"](frame,i)|p=Pudełko}}}}, {{Code|{{sr|#p["Typ jednostki 3"](frame,i)|p=Pudełko}}}} itp. w „{{sr|#Funkcje typu jednostki|p=Pudełko}}”, ale wtedy nazwa przestrzeni nazw reprezentowana przez {{Parametr|typ jednostki 2|strona szablonu}}, jest zamieniana na nazwę przestrzeni nazw dyskusji. Parametr dyskusji typu jednostki bazowy lub dla danego numerka ogólny, czy szczegółowy, nie gra roli. Również parametry typu jednostki nie powinno się podawać w dziecku w ramce, tylko w rodzicu w szablonie jako parametry, w którym ta ramka jest wywoływana, ale tutaj podano jedynie dla przykładu, jak najłatwiej sprawdzić działanie tych parametrów tej funkcji. Najpierw w funkcji nagłówku brane są parametry nazw przestrzeni nazw, a jeżeli ich nie ma, to parametry typu jednostki, a jeżeli nie ma, to generowane są nazwy na podstawie aktualnego modułu. == Funkcje nazw przestrzeni nazw drugiej wersji == === {{Code|p["Nazwa przestrzeni nazw 2"](frame,...)}} === Funkcja pisze nazwę przestrzeni nazw, niezależnie, czy to jest przedmiotowa, czy dyskusji, według, i nie zawsze tylko, podanej w zmiennej {{Code|nazwa przestrzeni nazw}} dla pozycja bazowej w podanych parametrach szablonu rodzicu ramki dziecka, lub dla innej pozycji należy parametr podawać w formie {{Code|nazwa przestrzeni nazw 1}}, {{Code|nazwa przestrzeni nazw 2}}, {{Code|nazwa przestrzeni nazw 3}},..., lub te parametry można podać w postaci ogólnej {{Code|nazwa przestrzeni nazw i}}. W tej funkcji trzeba też podawać parametry nazwy jednostek {{Code|nazwa jednostki}}, {{Code|nazwa jednostki 1}}, {{Code|nazwa jednostki 2}}, {{Code|nazwa jednostki 3}},... Parametry podaje się w parametrach rodzica wywołania tej funkcji {{Code|{{m|Pudełko|Nazwa przestrzeni nazw 2}}}} (ale ich nie trzeba podawać w dziecku, ale można) i w parametrach dziecka, jeśli chodzi o zmienną {{Code|numer jednostki}}, czyli np.: {{Code|{{m|Pudełko|Nazwa przestrzeni nazw 2|numer jednostki{{=}}<jakaś liczba całkowita dodatnia>}}}}. Te parametry przestrzenne zamiast w rodzicu w szablonie można podać w ramce dziecka, wtedy parametry dziecka mają pierwszeństwo. Przestrzeń nazw z parametrów nazw przestrzennych może odpowiadać wartości przestrzeni głównej, to wtedy odpowiednia przestrzeń nazw z parametru nazwy jednostki się liczy w tej funkcji, wtedy jest liczona nazwa przestrzeni nazw z tego parametru. Gdy parametry przestrzenne lub typ jednostki w drugim podejściu nie wskazują na przestrzeń główną, to wtedy działanie tej funkcji jest podobne do {{Code|{{sr|#p["Nazwa przestrzeni nazw"](frame,...)|p=Pudełko}}}}. Definicja skrótowa funkcji: <syntaxhighlight lang="lua"> p["Nazwa przestrzeni nazw 2"]=function(frame,czy_uwzglednic_alternatywna_nazwe,i)...end; </syntaxhighlight> Wtedy ciało funkcji tej, czyli jego definicja w środku, jest: <syntaxhighlight lang="lua"> local pudelko_pomocne_modul=require("Module:Pudełko/Pomocne"); -- Liczy nazwę przestrzeni nazw, jeżeli z parametrów przestrzennych przestrzeń wskazuje na główną, to wtedy jest liczona przestrzeń nazw z nazwy jednostki; return pudelko_pomocne_modul.Nazwa_przestrzeni_nazw_2(frame,czy_uwzglednic_alternatywna_nazwe,i) </syntaxhighlight> Parametry funkcji: * {{Code|frame}} - tablica ramki tablicy transportu, * {{Code|czy_uwzglednic_alternatywna_nazwe}} - czy ma uwzględniać nazwę przestrzeni nazw domyślną szablonu, dostępne wartości: {{Code|false}}, w której nazwa domyślna nie jest uwzględniana wtedy, oraz {{Code|nil}} i {{Code|true}}, które oznaczają to samo, w tym jeżeli ona jest uwzględniana, wtedy jest brany parametr pierwszy dziecka, który musi istnieć przy takiej wartości tego parametru, tzn. {{Code|{{m|Pudełko|Nazwa przestrzeni nazw 2|Szablon}}}}, a nazwa uzyskana nazwy przestrzeni nazw jest w takim przypadku błędna, a jeżeli nazwa domyślna jest błędna, czyli {{Code|{{m|Pudełko|Nazwa przestrzeni nazw 2|Moja przestrzeń}}}}, wtedy funkcja zwraca stan błędu {{Code|(błąd)}}. * {{Code|i}} - numer zmiennej nazwy przestrzeni nazw. Funkcja wykorzystuje {{Code|{{sr|#p.Nazwa_przestrzeni_nazw_2(frame,...)|p=Pudełko/Pomocne}}}} do wyznaczania ogólnego nazwy przestrzeni nazw dla pozycji bazowej i numerkowej, tzn. dla pozycji: jeden, dwa, trzy,..., itd, i ich ogólnej. Parametr ramki tablicy transportu rodzica szablonu: * {{Code|nazwa przestrzeni nazw}}, {{Code|nazwa przestrzeni nazw 1}}, {{Code|nazwa przestrzeni nazw 2}}, {{Code|nazwa przestrzeni nazw 3}},..., {{Code|nazwa przestrzeni nazw i}} - nazwy przestrzeni nazw dla pozycji bazowej oraz zwykłej i ogólnej numerkowej, * {{Code|nazwa jednostki}}, {{Code|nazwa jednostki 1}}, {{Code|nazwa jednostki 2}}, {{Code|nazwa jednostki 3}},... - nazwy jednostek dla pozycji bazowej i numerkowej, * {{Code|typ jednostki}}, {{Code|typ jednostki 1}}, {{Code|typ jednostki 2}}, {{Code|typ jednostki 3}},..., {{Code|typ jednostki i}} - typy jednostek, którym odpowiadają pewne przestrzenie przedmiotowe, dla pozycji bazowej, numerkowej i ogólnej, ** {{Code|dyskusja typu jednostki}}, {{Code|dyskusja typu jednostki 1}}, {{Code|dyskusja typ jednostki 2}}, {{Code|dyskusja typ jednostki 3}},..., {{Code|dyskusja typ jednostki i}} - czy dany typ jednostki ma przedstawiać, jeśli niepusta, przestrzeń dyskusji dla pozycji bazowej, numerkowej i ogólnej. Parametry ramki tablicy transportu dziecka: * Parametry dziecka są takie same jak rodzica dla funkcji pudełkowej plus tu wymienione, * {{Code|numer jednostki}} - jak parametr {{Code|i}} nie został ustawiony, to wtedy liczy się ta zmienna. Przykłady: <syntaxhighlight lang="mediawiki"> {{Nazwa szablonu|nazwa przestrzeni nazw=Wikibooks|nazwa przestrzeni nazw 1=Szablon|nazwa przestrzeni nazw i=|nazwa jednostki 2=Wikibooks:Strona}} </syntaxhighlight> W dziecku powiedzmy jest wywołanie, i szukamy nazwy przestrzeni nazw o numerze dwa, która została podana, ale istnieje za to jej wersji ogólna {{Code|nazwa przestrzeni nazw i}} i domyślna {{Code|nazwa przestrzeni nazw}}, ale wtedy dla tego numerkowego liczy się to ogólne z {{Code| i}}, a ponieważ ta nazwa jest pusta, więc będziemy liczyli nazwę przestrzeni nazw z {{Code|nazwa jednostki 2}}: <syntaxhighlight lang="mediawiki"> {{#invoke:Pudełko|Nazwa przestrzeni nazw 2|numer jednostki=2}} </syntaxhighlight> Na podstawie powyższego przykładu otrzymamy wynik o schemacie, nie wyniku, bo tam nie ma zmiennej {{Code|nazwa przestrzeni nazw 1}}, ale jest {{Code|nazwa przestrzeni nazw i}}: <syntaxhighlight lang="mediawiki"> <!-- Ale nie "nazwa przestrzeni nazw 2", bo jej nie ma, ale za to istnieje "nazwa przestrzeni nazw i"; --> <!-- nazwa przestrzeni nazw 2=nazwa przestrzeni nazw i="", a nazwa jednostki 2="Wikibooks:Strona"; --> <!-- Czyli wynik: --> Wikibooks <!-- Widzimy, że wygenerowała się nazwa przestrzeni nazw, którą jest przestrzeń nieprogramowa, ale projektu, wychodząca z nazwy jednostek w tym przypadku z "nazwa jednostki 2"; --> </syntaxhighlight> Nie jest brana w tym powyższym przykładzie zmienna {{Code|nazwa przestrzeni nazw}}, bo jej nie ma, ale za to jest {{Code|nazwa przestrzeni nazw i}}, bo ona występuje jako parametr domyślny ogólny dla parametrów numerkowych. Tytaj jest używana jest zmienna {{Code|nazwa jednostki 2}} do wygenerowania ostatecznego wyniku, bo jak można zauważyć, parametry przestrzenne wskazują na przestrzeń główną, a nazwy jednostek już nie. Przykłady w wikikodzie: * {{Code|{{m|Pudełko|Nazwa przestrzeni nazw 2|numer jednostki{{=}}2}}}} → {{Tt|{{#invoke:Pudełko|Nazwa przestrzeni nazw 2|numer jednostki=2}}}} * {{Code|{{m|Pudełko|Nazwa przestrzeni nazw 2|Szablon|nazwa przestrzeni nazw i{{=}}Moja przestrzeń|numer jednostki{{=}}2}}}} → {{Tt|{{#invoke:Pudełko|Nazwa przestrzeni nazw 2|Szablon|nazwa przestrzeni nazw i=Moja przestrzeń|numer jednostki=2}}}} * {{Code|{{m|Pudełko|Nazwa przestrzeni nazw 2|nazwa przestrzeni nazw 2{{=}}|nazwa jednostki 2{{=}}Szablon:Strona|numer jednostki{{=}}2}}}} → {{Tt|{{#invoke:Pudełko|Nazwa przestrzeni nazw 2|nazwa przestrzeni nazw 2=|nazwa jednostki 2=Szablon:Strona|numer jednostki=2}}}} * {{Code|{{m|Pudełko|Nazwa przestrzeni nazw 2|nazwa przestrzeni nazw i{{=}}|nazwa jednostki 2{{=}}Szablon:Strona|numer jednostki{{=}}2}}}} → {{Tt|{{#invoke:Pudełko|Nazwa przestrzeni nazw 2|nazwa przestrzeni nazw i=|nazwa jednostki 2=Szablon:Strona|numer jednostki=2}}}} * {{Code|{{m|Pudełko|Nazwa przestrzeni nazw 2|Szablon|nazwa przestrzeni nazw{{=}}|nazwa jednostki 2{{=}}Wikibooks:Strona|numer jednostki{{=}}2}}}} → {{Tt|{{#invoke:Pudełko|Nazwa przestrzeni nazw 2|Szablon|nazwa przestrzeni nazw=|nazwa jednostki 2=Wikibooks:Strona|numer jednostki=2}}}} Powyżej dla przykładu podano parametry nie w rodzicu w szablonie, tylko w dziecku, jeśli chodzi o parametry nazw przestrzeni nazw i nazw jednostek, ale ich się za to nie powinno podawać w tych ramach, tylko w szablonach, w których wywoływane są te ramki pudełek {{Code|{{m|Pudełko}}}}, ale tak tutaj tak zrobiono by było najłatwiej sprawdzić działanie tego typu funkcji. Analogicznie możemy podawać parametry typu jednostki, np.: wywołaniu modułowym {{Code|{{m|Pudełko|Nazwa przestrzeni nazw 2|typ jednostki 2{{=}}Podręcznik|nazwa jednostki 2{{=}}Szablon:Strona|numer jednostki{{=}}2}}}} (ale wtedy jest brana przestrzeń nazw z nazwy jednostki), ale o tym więcej w rozdziałach {{Code|{{sr|# p["Typ jednostki"](frame,i)|p=Pudełko}}}}, {{Code|{{sr|#p["Typ jednostki 2"](frame,i)|p=Pudełko}}}}, {{Code|{{sr|#p["Typ jednostki 3"](frame,i)|p=Pudełko}}}} itp. w „{{sr|#Funkcje typu jednostki|p=Pudełko}}”, on definiuje przestrzenie przedmiotowe, ale można użyć parametru dyskusji typu jednostki z wartością niepustą, wtedy wyświetli się nazwa przestrzeni nazw dyskusji. Jeżeli typ jednostki wskazuje na przestrzeń nazw główną, wtedy się liczą parametry nazw jednostek. Również parametry typu jednostki nie powinno się podawać w dziecku w ramce, tylko w rodzicu w szablonie jako parametry, w którym ta ramka jest wywoływana, ale tutaj podano jedynie dla przykładu, jak najłatwiej sprawdzić działanie tych parametrów tej funkcji. Najpierw w funkcji nagłówku brane są parametry nazw przestrzeni nazw, a jeżeli ich nie ma, to parametry typu jednostki, a jeżeli nie ma lub parametry przestrzenne wskazują na przestrzeń główną, i nie ma nazwy jednostki, to generowane są nazwy tej funkcji na podstawie aktualnej strony. === {{Code|p["Nazwa przedmiotowej przestrzeni nazw 2"](frame,...)}} === Funkcja pisze przedmiotową nazwę przestrzeni nazw jakikolwiek nazwy przestrzeni nazw (tzn. nazwę przedmiotową nazwy przestrzenie nazw, czyli nie dyskusji, zamieniana jest na nią samą, czyli identyfikator przestrzeni się nie zmienia, a dyskusji, nie przedmiotową, przekształca się na przedmiotową jej odpowiadającą, czyli w tym przypadku identyfikator przestrzeni zmniejsza się o numer mniej), według, i nie zawsze tylko, podanej w zmiennej {{Code|nazwa przestrzeni nazw}} dla pozycja bazowej w podanych parametrach szablonu rodzicu ramki dziecka, lub dla innej pozycji należy parametr podawać w formie {{Code|nazwa przestrzeni nazw 1}}, {{Code|nazwa przestrzeni nazw 2}}, {{Code|nazwa przestrzeni nazw 3}},..., lub te parametry można podać w postaci ogólnej {{Code|nazwa przestrzeni nazw i}}. W tej funkcji trzeba też podawać parametry nazwy jednostek {{Code|nazwa jednostki}}, {{Code|nazwa jednostki 1}}, {{Code|nazwa jednostki 2}}, {{Code|nazwa jednostki 3}},... Parametry podaje się w parametrach rodzica wywołania tej funkcji {{Code|{{m|Pudełko|Nazwa przedmiotowej przestrzeni nazw 2}}}} (ale ich nie trzeba podawać w dziecku, ale można) i w parametrach dziecka, jeśli chodzi o zmienną {{Code|numer jednostki}}, czyli np.: {{Code|{{m|Pudełko|Nazwa przedmiotowej przestrzeni nazw 2|numer jednostki{{=}}<jakaś liczba całkowita dodatnia>}}}}. Te parametry przestrzenne zamiast w rodzicu w szablonie można podać w ramce dziecka, wtedy parametry dziecka mają pierwszeństwo. Przestrzeń nazw z parametrów nazw przestrzennych po przekształceniu na przedmiotową może odpowiadać wartości przestrzeni głównej, to wtedy odpowiednia przestrzeń nazw z parametru nazwy jednostki się liczy w tej funkcji, wtedy jest liczona nazwa przestrzeni nazw z tego parametru. Gdy parametry przestrzenne lub typ jednostki w drugim podejściu nie wskazują na przestrzeń główną, to wtedy działanie tej funkcji jest podobne do {{Code|{{sr|#p["Nazwa przedmiotowej przestrzeni nazw"](frame,...)|p=Pudełko}}}}. Definicja skrótowa funkcji: <syntaxhighlight lang="lua"> p["Nazwa przedmiotowej przestrzeni nazw 2"]=function(frame,czy_uwzglednic_alternatywna_nazwe,i)...end; </syntaxhighlight> Wtedy ciało funkcji tej, czyli jego definicja w środku, jest: <syntaxhighlight lang="lua"> local pudelko_pomocne_modul=require("Module:Pudełko/Pomocne"); return pudelko_pomocne_modul.Nazwa_przestrzeni_nazw_przedmiotowa_dyskusji_2(frame,czy_uwzglednic_alternatywna_nazwe,i,"przedmiotowa"); </syntaxhighlight> Parametry funkcji: * {{Code|frame}} - tablica ramki tablicy transportu, * {{Code|czy_uwzglednic_alternatywna_nazwe}} - czy ma uwzględniać nazwę przestrzeni nazw domyślną szablonu, dostępne wartości: {{Code|false}}, w której nazwa domyślna nie jest uwzględniana wtedy, oraz {{Code|nil}} i {{Code|true}}, które oznaczają to samo, w tym jeżeli ona jest uwzględniana, wtedy jest brany parametr pierwszy dziecka, który musi istnieć przy takiej wartości tego parametru, tzn. {{Code|{{m|Pudełko|Nazwa przedmiotowej przestrzeni nazw 2|Szablon}}}}, a nazwa uzyskana nazwy przestrzeni nazw jest w takim przypadku błędna, a jeżeli nazwa domyślna jest błędna, czyli {{Code|{{m|Pudełko|Nazwa przedmiotowej przestrzeni nazw 2|Moja przestrzeń}}}}, wtedy funkcja zwraca stan błędu {{Code|(błąd)}}. * {{Code|i}} - numer zmiennej nazwy przestrzeni nazw. Funkcja wykorzystuje {{Code|{{sr|#p.Nazwa_przestrzeni_nazw_przedmiotowa_dyskusji_2(frame,...)|p=Pudełko/Pomocne}}}} do wyznaczania ogólnego nazwy przestrzeni nazw dla pozycji bazowej i numerkowej, tzn. dla pozycji: jeden, dwa, trzy,..., itd, i ich ogólnej. Parametr ramki tablicy transportu rodzica szablonu: * {{Code|nazwa przestrzeni nazw}}, {{Code|nazwa przestrzeni nazw 1}}, {{Code|nazwa przestrzeni nazw 2}}, {{Code|nazwa przestrzeni nazw 3}},..., {{Code|nazwa przestrzeni nazw i}} - nazwy przestrzeni nazw dla pozycji bazowej oraz zwykłej i ogólnej numerkowej, * {{Code|nazwa jednostki}}, {{Code|nazwa jednostki 1}}, {{Code|nazwa jednostki 2}}, {{Code|nazwa jednostki 3}},... - nazwy jednostek dla pozycji bazowej i numerkowej, * {{Code|typ jednostki}}, {{Code|typ jednostki 1}}, {{Code|typ jednostki 2}}, {{Code|typ jednostki 3}},..., {{Code|typ jednostki i}} - typy jednostek, którym odpowiadają pewne przestrzenie przedmiotowe, dla pozycji bazowej, numerkowej i ogólnej. Parametry ramki tablicy transportu dziecka: * Parametry dziecka są takie same jak rodzica dla funkcji pudełkowej plus tu wymienione, * {{Code|numer jednostki}} - jak parametr {{Code|i}} nie został ustawiony, to wtedy liczy się ta zmienna. Przykłady: <syntaxhighlight lang="mediawiki"> {{Nazwa szablonu|nazwa przestrzeni nazw=Wikibooks|nazwa przestrzeni nazw 1=Szablon|nazwa przestrzeni nazw i=|nazwa jednostki 2=Dyskusja Wikibooks:Strona}} </syntaxhighlight> W dziecku powiedzmy jest wywołanie, i szukamy nazwy przestrzeni nazw o numerze dwa, która została podana, ale istnieje za to jej wersji ogólna {{Code|nazwa przestrzeni nazw i}} i domyślna {{Code|nazwa przestrzeni nazw}}, ale wtedy dla tego numerkowego liczy się to ogólne z {{Code| i}}, a ponieważ ta nazwa jest pusta, więc będziemy liczyli nazwę przestrzeni nazw z {{Code|nazwa jednostki 2}}: <syntaxhighlight lang="mediawiki"> {{#invoke:Pudełko|Nazwa przedmiotowej przestrzeni nazw 2|numer jednostki=2}} </syntaxhighlight> Na podstawie powyższego przykładu otrzymamy wynik o schemacie, nie wyniku, bo tam nie ma zmiennej {{Code|nazwa przestrzeni nazw 1}}, ale jest {{Code|nazwa przestrzeni nazw i}}: <syntaxhighlight lang="mediawiki"> <!-- Ale nie "nazwa przestrzeni nazw 2", bo jej nie ma, ale za to istnieje "nazwa przestrzeni nazw i"; --> <!-- nazwa przestrzeni nazw 2=nazwa przestrzeni nazw i="", a nazwa jednostki 2="Wikibooks:Strona"; --> <!-- Czyli wynik: --> Wikibooks <!-- Widzimy, że wygenerowała się nazwa przestrzeni nazw, którą jest przestrzeń nieprogramowa, ale projektu, wychodząca z nazwy jednostek w tym przypadku z "nazwa jednostki 2"; --> </syntaxhighlight> Nie jest brana w tym powyższym przykładzie zmienna {{Code|nazwa przestrzeni nazw}}, bo jej nie ma, ale za to jest {{Code|nazwa przestrzeni nazw i}}, bo ona występuje jako parametr domyślny ogólny dla parametrów numerkowych. Tytaj jest używana jest zmienna {{Code|nazwa jednostki 2}} do wygenerowania ostatecznego wyniku, bo jak można zauważyć, parametry przestrzenne wskazują na przestrzeń główną, a nazwy jednostek już nie. Przykłady w wikikodzie: * {{Code|{{m|Pudełko|Nazwa przedmiotowej przestrzeni nazw 2|numer jednostki{{=}}2}}}} → {{Tt|{{#invoke:Pudełko|Nazwa przedmiotowej przestrzeni nazw 2|numer jednostki=2}}}} * {{Code|{{m|Pudełko|Nazwa przedmiotowej przestrzeni nazw 2|Dyskusja szablonu|nazwa przestrzeni nazw i{{=}}Moja przestrzeń|numer jednostki{{=}}2}}}} → {{Tt|{{#invoke:Pudełko|Nazwa przedmiotowej przestrzeni nazw 2|Dyskusja szablonu|nazwa przestrzeni nazw i=Moja przestrzeń|numer jednostki=2}}}} * {{Code|{{m|Pudełko|Nazwa przedmiotowej przestrzeni nazw 2|nazwa przestrzeni nazw 2{{=}}Dyskusja|nazwa jednostki 2{{=}}Dyskusja szablonu:Strona|numer jednostki{{=}}2}}}} → {{Tt|{{#invoke:Pudełko|Nazwa przedmiotowej przestrzeni nazw 2|nazwa przestrzeni nazw 2=Dyskusja|nazwa jednostki 2=Dyskusja szablonu:Strona|numer jednostki=2}}}} * {{Code|{{m|Pudełko|Nazwa przedmiotowej przestrzeni nazw 2|nazwa przestrzeni nazw i{{=}}Dyskusja|nazwa jednostki 2{{=}}Dyskusja szablonu:Strona|numer jednostki{{=}}2}}}} → {{Tt|{{#invoke:Pudełko|Nazwa przedmiotowej przestrzeni nazw 2|nazwa przestrzeni nazw i=Dyskusja|nazwa jednostki 2=Dyskusja szablonu:Strona|numer jednostki=2}}}} * {{Code|{{m|Pudełko|Nazwa przedmiotowej przestrzeni nazw 2|Dyskusja szablonu|nazwa przestrzeni nazw{{=}}Dyskusja|nazwa jednostki 2{{=}}Wikibooks:Strona|numer jednostki{{=}}2}}}} → {{Tt|{{#invoke:Pudełko|Nazwa przedmiotowej przestrzeni nazw 2|Dyskusja szablonu|nazwa przestrzeni nazw=Dyskusja|nazwa jednostki 2=Dyskusja Wikibooks:Strona|numer jednostki=2}}}} Powyżej dla przykładu podano parametry nie w rodzicu w szablonie, tylko w dziecku, jeśli chodzi o parametry nazw przestrzeni nazw i nazw jednostek, ale ich się za to nie powinno podawać w tych ramach, tylko w szablonach, w których wywoływane są te ramki pudełek {{Code|{{m|Pudełko}}}}, ale tak tutaj tak zrobiono by było najłatwiej sprawdzić działanie tego typu funkcji. Analogicznie możemy podawać parametry typu jednostki, np.: wywołaniu modułowym {{Code|{{m|Pudełko|Nazwa przedmiotowej przestrzeni nazw 2|typ jednostki 2{{=}}Podręcznik|nazwa jednostki 2{{=}}Dyskusja szablonu:Strona|numer jednostki{{=}}2}}}} (ale wtedy jest brana przestrzeń nazw z nazwy jednostki), ale o tym więcej w rozdziałach {{Code|{{sr|# p["Typ jednostki"](frame,i)|p=Pudełko}}}}, {{Code|{{sr|#p["Typ jednostki 2"](frame,i)|p=Pudełko}}}}, {{Code|{{sr|#p["Typ jednostki 3"](frame,i)|p=Pudełko}}}} itp. w „{{sr|#Funkcje typu jednostki|p=Pudełko}}”, on definiuje przestrzenie przedmiotowe, ale można użyć parametru dyskusji typu jednostki z wartością niepustą, wtedy wyświetli się nazwa przestrzeni nazw dyskusji. Jeżeli typ jednostki wskazuje na przestrzeń nazw główną, wtedy się liczą parametry nazw jednostek. Również parametry typu jednostki nie powinno się podawać w dziecku w ramce, tylko w rodzicu w szablonie jako parametry, w którym ta ramka jest wywoływana, ale tutaj podano jedynie dla przykładu, jak najłatwiej sprawdzić działanie tych parametrów tej funkcji. Najpierw w funkcji nagłówku brane są parametry nazw przestrzeni nazw, a jeżeli ich nie ma, to parametry typu jednostki, a jeżeli nie ma lub parametry przestrzenne wskazują na przestrzeń główną, i nie ma nazwy jednostki, to generowane są nazwy tej funkcji na podstawie aktualnej strony. === {{Code|p["Nazwa przestrzeni nazw dyskusji 2"](frame,...)}} === == Funkcje pełnych nazw jednostki == === {{Code|p["Pełna nazwa dyskusji jednostki"](frame,i)}} === === {{Code|p["Pełna nazwa przedmiotowa jednostki"](frame,i)}} === === {{Code|p["Pełna nazwa jednostki"](frame,i)}} === == Funkcje pełnych nazw jednostki drugiej wersji == === {{Code|p["Pełna nazwa dyskusji jednostki 2"](frame,i)}} === === {{Code|p["Pełna nazwa przedmiotowa jednostki 2"](frame,i)}} === === {{Code|p["Pełna nazwa jednostki 2"](frame,i)}} === == Funkcje pełnych nazw jednostki trzeciej wersji == === {{Code|p["Pełna nazwa dyskusji jednostki 3"](frame,i)}} === === {{Code|p["Pełna nazwa przedmiotowa jednostki 3"](frame,i)}} === === {{Code|p["Pełna nazwa jednostki 3"](frame,i)}} === == Funkcje nazw jednostki == === {{Code|p["Nazwa jednostki"](frame,i)}} === == Funkcje nazw jednostki drugiej wersji == === {{Code|p["Nazwa jednostki 2"](frame,i)}} === === {{Code|p["Nazwa przedmiotowa jednostki 2"](frame,i)}} === === {{Code|p["Nazwa dyskusji jednostki 2"](frame,i)}} === == Funkcje nazw przestrzeni nazw trzeciej wersji == === {{Code|p["Nazwa przestrzeni nazw 3"](frame,i)}} === === {{Code|p["Nazwa przedmiotowej przestrzeni nazw 3"](frame,i)}} === === {{Code|p["Nazwa przestrzeni nazw dyskusji 3"](frame,i)}} === == Funkcje nazw jednostki trzeciej wersji == === {{Code|p["Nazwa jednostki 3"](frame,i)}} === === {{Code|p["Nazwa przedmiotowa jednostki 3"](frame,i)}} === === {{Code|p["Nazwa dyskusji jednostki 3"](frame,i)}} === == Funkcje typu jednostki == === {{Code|p["Typ jednostki"](frame,i)}} === === {{Code|p["Typ jednostki 2"](frame,i)}} === === {{Code|p["Typ jednostki 3"](frame,i)}} === === Funkcje typu jednostki przedmiotowe === ==== {{Code|p["Przedmiotowy typ jednostki"](frame,i)}} ==== ==== {{Code|p["Przedmiotowy typ jednostki 2"](frame,i)}} ==== ==== {{Code|p["Przedmiotowy typ jednostki 3"](frame,i)}} ==== === Fukcje typu jednostki dyskusji === ==== {{Code|p["Dyskusyjny typ jednostki"](frame,i)}} ==== ==== {{Code|p["Dyskusyjny typ jednostki 2"](frame,i)}}} ==== ==== {{Code|p["Dyskusyjny typ jednostki 3"](frame,i)}} ==== == Funkcje chech pudełka == === {{Code|p["Cecha pudełka"](frame)}} === === {{Code|p["Przedmiotowa cecha pudełka"](frame)}} === === {{Code|p["Dyskusyjna cecha pudełka"](frame)}} === == Fukcje ogólnego pudełka == === {{Code|p["Ogólne pudełko"](frame)}} === == Funkcje ogólne == === {{Code|p["Tekst pudełka"](frame)}} === == Funkcje błędów pudełka == === {{Code|p["Błędy pudełka"](frame)}} === === {{Code|p["Przedmiotowe błędy pudełka"](frame)}} === === {{Code|p["Dyskusyjne błędy pudełka"](frame)}} === == Funkcje nazw stron == === {{Code|p["Nazwa strony głównej projektu"](frame,i)}} === === {{Code|p["Nazwa strony głównej dla dzieci projektu"](frame,i)}} === == Funkcje kodów == === {{Code|p["Kod języka"](frame,i)}} === === {{Code|p["Kod projektu"](frame,i)}} === === {{Code|p["Klucz projektu"](frame,i)}} === == Funkcje wiki == === {{Code|p["Inny niż język bieżący wiki"](frame)}} === === {{Code|p["Inne niż lokalne wiki"](frame)}} === === {{Code|p["Inne niż bieżące wiki"](frame)}} === == Funkcje typów parametrów, czy podane je == === {{Code|p["Podano parametry nienazwane"](frame)}} === === {{Code|p["Podano parametry numerowane"](frame)}} === === {{Code|p["Podano parametry nazwane"](frame)}} === == Funkcje kodów tego projektu == === {{Code|p["Kod projektu tego projektu"](frame)}} === === {{Code|p["Kod języka tego projektu"](frame)}} === === {{Code|p["Klucz projektu tego projektu"](frame)}} === == Funkcje stron == === {{Code|p["Strona główna tego projektu"](frame)}} === === {{Code|p["Strona główna dla dzieci tego projektu"](frame)}} === == Funkcje nazw stron drugiej wersji == === {{Code|p["Nazwa strony głównej dla dzieci projektu 2"](frame)}} === === {{Code| p["Nazwa strony głównej projektu 2"](frame)}} === {{BrClear}} <noinclude><!-- -->{{ProstaStronaKoniec}}<!-- -->{{Kategoria|Opisy funkcji, w Lua w Scribunto, w modułach}}<!-- --></noinclude> tmat4w4k5bh8a3x9j0u646hknr9xypb 540392 540390 2026-04-23T14:49:42Z Persino 2851 /* {{Code|p["Nazwa przedmiotowej przestrzeni nazw 2"](frame,...)}} */ 540392 wikitext text/x-wiki <noinclude>{{ProstaStronaStart | nagłówek = {{Podrozdział|{{ld2|Pudełko}}|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 pudelko_modul=require("Module:Pudełko"); </syntaxhighlight> dzięki, któremu można wypisywać funkcje należącego do niego. Posługuje się na parametrach pudełkowych {{Parametr|nazwa przestrzeni nazw}} (czy też bez numerka {{Parametr|nazwa przestrzeni nazw i}} dla tego numerowanego) lub te z numerkiem po jednej spacji w nich (ale nie dla tego z końcówką {{Code| i}}) mogą zostać użyte jako parametry szablonu. Moduł {{Code|{{ld2|Pudełko}}}} przedstawia funkcje nazw w oparciu o funkcje nazw {{Code|{{ld2|Nazwy}}}}, generuje on nazwy za pomocą parametrów pudełkowych podanych poniżej. Parametr {{Parametr|nazwa jednostki}} (lub parametr {{Parametr|cel}} dla numerka tego pierwszego, tego alternatywnego), lub te z numerkiem po jednej spacji w nazwie parametru, albo numerowane numerkami {{Code|1}}, {{Code|2}},..., mogą zostać użyte jako parametry szablonu. Parametry określające rodzaj jednostki {{Parametr|typ jednostki}} z {{Parametr|dyskusja typu jednostki}}, itp. w wersjach z numerkiem po jednej spacji w nich mogą zostać użyte jako parametry szablonu. A te tymi numerowanymi liczbami naturalnymi {{Tt|nazwy jednostki}} od jedynki wzwyż poprzez szablon, w którym są one użyte, one też mogą być użyte z dwukropkiem, te numerowane, na samym początku nazwy, wtedy one są traktowane jako pełne nazwy strony, i wtedy one nie zostaną z interpretowane, że do nich trzeba użyć parametr odpowiedni z nazwą przetrzeni nazw z tego numerowanego, czy ogólny, aby utworzyć znów inną pełną nazwę strony dla tego numerka. Zestawienie: * {{Code|nazwa przestrzeni nazw}} i {{Code|nazwa przestrzeni nazw i}} (ogólna nazwa przestrzeni nazw dla wszystkich numerków, i tych numerowanych jednostek) - i to pierwsze z numerkiem, tzn. {{Code|nazwa przestrzeni nazw 1}}, {{Code|nazwa przestrzeni nazw 2}}, ..., * {{Code|nazwa jednostki}} - i te z numerkiem: {{Code|nazwa jednostki 1}}, {{Code|nazwa jednostki 2}}, ..., lub gdy jest zamiast tego parametrem numerowany, {{Code|1}}, {{Code|2}},..., który dla tego pierwszego może być uznany jako: {{Code|cel}} {{=}} {{Code|1}}, * {{Code|typ jednostki}} (parametr bazowy) i {{Code|typ jednostki i}} (parametr domyślny numerkowy) - i te z numerkiem: {{Code|typ jednostki 1}}, {{Code|typ jednostki 2}}, ..., tzn. gdy chcemy określić z jakim typem jednostki mamy do czynienia w zależności do jakiej przestrzeni nazw należy, a w danej, czy jest on np. programowy, czy tylko jest opisem, jak to bywa w szablonach {{Np|Template|link=tak}}, podobnie jest w przypadku {{Np|Module|link=tak}}, czy jak jest w innych przestrzeniach nazw, ** {{Code|dyskusja typu jednostki}} (parametr bazowy) i {{Code|dyskusja typu jednostki i}} (parametr domyślny numerkowy) - i te z numerkiem: {{Code|dyskusja typu jednostki 1}}, {{Code|dyskusja typu jednostki 2}}, ..., gdy chcemy określić wartością niepustą,że chodzi tutaj o typ jednostki. == {{Code|p.CzyNiepoprawnaNazwa(nazwa_jednostki)}} == Funkcja sprawdzajaca, czy jest poprawnie podana nazwa jednostki, czy ma poprawną nazwę. Znakami tymi, z których nie powinna składać się nazwa jest {{Code|<nowiki>{}<>|[]#\n</nowiki>}} i dodatkowo znak {{Code|&#127;}} (kod {{Code|{{Nowiki|&#127;}}}}). Też nie może składać się z trzech znaków tyldy, tzn. {{Code|<nowiki>~~~</nowiki>}}. Również w swojej budowie nie może składać się ze kodów {{Strong|HTML}} literowych o wzorze {{Code|{{Nowiki|&(%a+);}}}}. Natomiast może składać się z {{Code|{{Nowiki|&#(%d+);}}}} i {{Code|{{Nowiki|&#x(%x+);}}}}, ale w pierw te kody muszą być zamienione na normalne znaki. Skrótowa definicja funkcji: <syntaxhighlight lang="lua"> function p.CzyNiepoprawnaNazwa(nazwa_jednostki)...end; </syntaxhighlight> Wtedy ciało funkcji tej, czyli jego definicja w środku, jest: <syntaxhighlight lang="lua"> -- Moduł: "Moduł:Html/dane", służy do ładowania znaku o kodzie HTML "&#127;"; local html_dane_modul=mw.loadData("Module:Html/dane"); return mw.ustring.match(nazwa_jednostki,"[{}<>|%[%]#\n"..html_dane_modul.znak_127.."]+") or mw.ustring.match(nazwa_jednostki,"~~~") or mw.ustring.match(nazwa_jednostki,"&(%a+);"); </syntaxhighlight> Parametry: * {{Code|nazwa_jednostki}} - nazwa jednostki do sprawdzenia. Przykłady: <syntaxhighlight lang="lua"> local pudelko_modul=require("Module:Pudełko"); -- Podana przykładowa niepoprawna nazwa jedostki local nazwa_jednostki="Nazwa pliku [[Nazwa linku w pliku]]"; -- Fukcja zwróci wartość: local czy_poprawna_nazwa=true; local czy_poprawna_nazwa=pudelko_modul.CzyNiepoprawnaNazwa(nazwa_jednostki); </syntaxhighlight> == Funkcje nazw przestrzeni nazw == === {{Code|p["Nazwa przestrzeni nazw"](frame,...)}} === Funkcja pisze nazwę przestrzeni nazw, niezależnie, czy to jest przedmiotowa, czy dyskusji, według podanej w zmiennej {{Code|nazwa przestrzeni nazw}} dla pozycja bazowej w podanych parametrach szablonu rodzicu ramki dziecka, lub dla innej pozycji należy parametr podawać w formie {{Code|nazwa przestrzeni nazw 1}}, {{Code|nazwa przestrzeni nazw 2}}, {{Code|nazwa przestrzeni nazw 3}},..., lub te parametry można podać w postaci ogólnej {{Code|nazwa przestrzeni nazw i}}. Parametry podaje się w parametrach rodzica wywołania tej funkcji {{Code|{{m|Pudełko|Nazwa przestrzeni nazw}}}} (ale ich nie trzeba podawać w dziecku, ale można) i w parametrach dziecka, jeśli chodzi o zmienną {{Code|numer jednostki}}, czyli np.: {{Code|{{m|Pudełko|Nazwa przestrzeni nazw|numer jednostki{{=}}<jakaś liczba całkowita dodatnia>}}}}. Te parametry przestrzenne zamiast w rodzicu w szablonie można podać w ramce dziecka, wtedy parametry dziecka mają pierwszeństwo. Przestrzeń nazw z parametrów nazw przestrzennych może odpowiadać wartości przestrzeni głównej, to wtedy odpowiednia przestrzeń nazw z parametru nazwy jednostki się nie liczy w tej funkcji, aby się liczyła należy użyć funkcji {{Code|{{sr|#p["Nazwa przestrzeni nazw 2"](frame,...)|p=Pudełko}}}}. Definicja skrótowa funkcji: <syntaxhighlight lang="lua"> p["Nazwa przestrzeni nazw"]=function(frame,czy_uwzglednic_alternatywna_nazwe,i)...end; </syntaxhighlight> Wtedy ciało funkcji tej, czyli jego definicja w środku, jest: <syntaxhighlight lang="lua"> -- Jest liczony numer parametru nazwy przestrzeni nazw, domyslnie chodzi tu o numer bazowy parametrów przestrzennych; local numer_jednostki=i or frame.args["numer jednostki"]; local liczba_numer_jednostki=((numer_jednostki)and(tonumber(numer_jednostki))or 0); local pudelko_pomocne_modul=require("Module:Pudełko/Pomocne"); -- Liczy nazwę przestrzeni nazw na podstawie podanych parametrów; return pudelko_pomocne_modul.Nazwa_przestrzeni_nazw(frame,0, czy_uwzglednic_alternatywna_nazwe,liczba_numer_jednostki); </syntaxhighlight> Parametry funkcji: * {{Code|frame}} - tablica ramki tablicy transportu, * {{Code|czy_uwzglednic_alternatywna_nazwe}} - czy ma uwzględniać nazwę przestrzeni nazw domyślną szablonu, dostępne wartości: {{Code|false}}, w której nazwa domyślna nie jest uwzględniana wtedy, oraz {{Code|nil}} i {{Code|true}}, które oznaczają to samo, w tym jeżeli ona jest uwzględniana, wtedy jest brany parametr pierwszy dziecka, który musi istnieć przy takiej wartości tego parametru, tzn. {{Code|{{m|Pudełko|Nazwa przestrzeni nazw|Szablon}}}}, a nazwa uzyskana nazwy przestrzeni nazw jest w takim przypadku błędna, a jeżeli nazwa domyślna jest błędna, czyli {{Code|{{m|Pudełko|Nazwa przestrzeni nazw|Moja przestrzeń}}}}, wtedy funkcja zwraca stan błędu {{Code|(błąd)}}. * {{Code|i}} - numer zmiennej nazwy przestrzeni nazw. Funkcja wykorzystuje {{Code|{{sr|#p.Nazwa_przestrzeni_nazw(frame,...)|p=Pudełko/Pomocne}}}} do wyznaczania ogólnego nazwy przestrzeni nazw dla pozycji bazowej i numerkowej, tzn. dla pozycji: jeden, dwa, trzy,..., itd, i ich ogólnej. Parametr ramki tablicy transportu rodzica szablonu: * {{Code|nazwa przestrzeni nazw}}, {{Code|nazwa przestrzeni nazw 1}}, {{Code|nazwa przestrzeni nazw 2}}, {{Code|nazwa przestrzeni nazw 3}},..., {{Code|nazwa przestrzeni nazw i}} - nazwy przestrzeni nazw dla pozycji bazowej oraz zwykłej i ogólnej numerkowej, * {{Code|typ jednostki}}, {{Code|typ jednostki 1}}, {{Code|typ jednostki 2}}, {{Code|typ jednostki 3}},..., {{Code|typ jednostki i}} - typy jednostek, którym odpowiadają pewne przestrzenie przedmiotowe, dla pozycji bazowej, numerkowej i ogólnej, ** {{Code|dyskusja typu jednostki}}, {{Code|dyskusja typu jednostki 1}}, {{Code|dyskusja typ jednostki 2}}, {{Code|dyskusja typ jednostki 3}},..., {{Code|dyskusja typ jednostki i}} - czy dany typ jednostki ma przedstawiać, jeśli niepusta, przestrzeń dyskusji dla pozycji bazowej, numerkowej i ogólnej. Parametry ramki tablicy transportu dziecka: * Parametry dziecka są takie same jak rodzica dla funkcji pudełkowej plus tu wymienione, * {{Code|numer jednostki}} - jak parametr {{Code|i}} nie został ustawiony, to wtedy liczy się ta zmienna. Przykłady: <syntaxhighlight lang="mediawiki"> {{Nazwa szablonu|nazwa przestrzeni nazw=Wikibooks|nazwa przestrzeni nazw 2=Szablon|nazwa przestrzeni nazw i=Moduł}} </syntaxhighlight> W dziecku powiedzmy jest wywołanie, i szukamy nazwy przestrzeni nazw o numerze dwa, która nie została podana, ale istnieje za to jej wersji ogólna {{Code|nazwa przestrzeni nazw i}} i domyślna {{Code|nazwa przestrzeni nazw}}: <syntaxhighlight lang="mediawiki"> {{#invoke:Pudełko|Nazwa przestrzeni nazw|numer jednostki=1}} </syntaxhighlight> Na podstawie powyższego przykładu otrzymamy wynik o schemacie, nie wyniku, bo tam nie ma zmiennej {{Code|nazwa przestrzeni nazw 1}}, ale jest {{Code|nazwa przestrzeni nazw i}}: <syntaxhighlight lang="mediawiki"> <!-- Ale nie "nazwa przestrzeni nazw", bo jej nie ma, ale za to istnieje "nazwa przestrzeni nazw i"; --> <!-- nazwa przestrzeni nazw 2=nazwa przestrzeni nazw i=Moduł; --> <!-- Czyli wynik: --> Moduł <!-- Widzimy, że wygenerowała się nazwa przestrzeni nazw, którą jest przestrzeń programowa, którą również jest "Szablon"; --> </syntaxhighlight> Nie jest brana w tym powyższym przykładzie zmienna {{Code|nazwa przestrzeni nazw}}, bo jej nie ma, ale za to jest {{Code|nazwa przestrzeni nazw i}}, bo ona występuje jako parametr domyślny ogólny dla parametrów numerkowych. Przykłady w wikikodzie: * {{Code|{{m|Pudełko|Nazwa przestrzeni nazw|numer jednostki{{=}}2}}}} → {{Tt|{{#invoke:Pudełko|Nazwa przestrzeni nazw|numer jednostki=2}}}} * {{Code|{{m|Pudełko|Nazwa przestrzeni nazw|Szablon|nazwa przestrzeni nazw i{{=}}Moja przestrzeń|numer jednostki{{=}}2}}}} → {{Tt|{{#invoke:Pudełko|Nazwa przestrzeni nazw|Szablon|nazwa przestrzeni nazw i=Moja przestrzeń|numer jednostki=2}}}} * {{Code|{{m|Pudełko|Nazwa przestrzeni nazw|nazwa przestrzeni nazw 2{{=}}Szablon|numer jednostki{{=}}2}}}} → {{Tt|{{#invoke:Pudełko|Nazwa przestrzeni nazw|nazwa przestrzeni nazw 2=Szablon|numer jednostki=2}}}} * {{Code|{{m|Pudełko|Nazwa przestrzeni nazw|nazwa przestrzeni nazw 2{{=}}Szablon|numer jednostki{{=}}2}}}} → {{Tt|{{#invoke:Pudełko|Nazwa przestrzeni nazw|nazwa przestrzeni nazw i=Szablon|numer jednostki=2}}}} * {{Code|{{m|Pudełko|Nazwa przestrzeni nazw|nazwa przestrzeni nazw{{=}}Szablon|numer jednostki{{=}}2}}}} → {{Tt|{{#invoke:Pudełko|Nazwa przestrzeni nazw|nazwa przestrzeni nazw=Szablon|numer jednostki=2}}}} Powyżej dla przykładu podano parametry nie w rodzicu w szablonie, tylko w dziecku, jeśli chodzi o parametry nazw przestrzeni nazw, ale ich się za to nie powinno podawać w tych ramach, tylko w szablonach, w których wywoływane są te ramki pudełek {{Code|{{m|Pudełko}}}}, ale tak tutaj tak zrobiono by było najłatwiej sprawdzić działanie tego typu funkcji. Analogicznie możemy podawać parametry typu jednostki, np.: wywołaniu modułowym {{Code|{{m|Pudełko|Nazwa przestrzeni nazw|typ jednostki 2{{=}}strona szablonu|numer jednostki{{=}}2}}}}, ale o tym więcej w rozdziałach {{Code|{{sr|# p["Typ jednostki"](frame,i)|p=Pudełko}}}}, {{Code|{{sr|#p["Typ jednostki 2"](frame,i)|p=Pudełko}}}}, {{Code|{{sr|#p["Typ jednostki 3"](frame,i)|p=Pudełko}}}} itp. w „{{sr|#Funkcje typu jednostki|p=Pudełko}}”, on definiuje przestrzenie przedmiotowe, ale można użyć parametru dyskusji typu jednostki z wartością niepustą, wtedy wyświetli się nazwa przestrzeni nazw dyskusji. Również parametry typu jednostki nie powinno się podawać w dziecku w ramce, tylko w rodzicu w szablonie jako parametry, w którym ta ramka jest wywoływana, ale tutaj podano jedynie dla przykładu, jak najłatwiej sprawdzić działanie tych parametrów tej funkcji. Najpierw w funkcji nagłówku brane są parametry nazw przestrzeni nazw, a jeżeli ich nie ma, to parametry typu jednostki, a jeżeli nie ma, to generowane są nazwy na podstawie aktualnego modułu. === {{Code|p["Nazwa przedmiotowej przestrzeni nazw"](frame,...)}} === Funkcja pisze przedmiotową nazwę przestrzeni nazw jakikolwiek nazwy przestrzeni nazw (tzn. nazwę przedmiotową nazwy przestrzenie nazw, czyli nie dyskusji, zamieniana jest na nią samą, czyli identyfikator przestrzeni się nie zmienia, a dyskusji, nie przedmiotową, przekształca się na przedmiotową jej odpowiadającą, czyli w tym przypadku identyfikator przestrzeni zmniejsza się o numer mniej), według podanej w zmiennej {{Code|nazwa przestrzeni nazw}} dla pozycja bazowej w podanych parametrach szablonu rodzicu ramki dziecka, lub dla innej pozycji należy parametr podawać w formie {{Code|nazwa przestrzeni nazw 1}}, {{Code|nazwa przestrzeni nazw 2}}, {{Code|nazwa przestrzeni nazw 3}},..., lub te parametry można podać w postaci ogólnej {{Code|nazwa przestrzeni nazw i}}. Parametry podaje się w parametrach rodzica wywołania tej funkcji {{Code|{{m|Pudełko|Nazwa przedmiotowej przestrzeni nazw}}}} (ale ich nie trzeba podawać w dziecku, ale można) i w parametrach dziecka, jeśli chodzi o zmienną {{Code|numer jednostki}}, czyli np.: {{Code|{{m|Pudełko|Nazwa przedmiotowej przestrzeni nazw|numer jednostki{{=}}<jakaś liczba całkowita dodatnia>}}}}. Te parametry przestrzenne zamiast w rodzicu w szablonie można podać w ramce dziecka, wtedy parametry dziecka mają pierwszeństwo. Parametry przestrzenne mogą mogą być podane w postaci przestrzeni przedmiotowej lub dyskusji, ale ta funkcja zawsze ją zamienia na przedmiotową. Przestrzeń nazw z parametrów nazw przestrzennych może odpowiadać wartości przestrzeni głównej, to wtedy odpowiednia przestrzeń nazw z parametru nazwy jednostki się nie liczy w tej funkcji, aby się liczyła należy użyć funkcji {{Code|{{sr|#p["Nazwa przedmiotowej przestrzeni nazw 2"](frame,...)|p=Pudełko}}}}. Definicja skrótowa funkcji: <syntaxhighlight lang="lua"> p["Nazwa przedmiotowej przestrzeni nazw"]=function(frame,czy_uwzglednic_alternatywna_nazwe,i)...end; </syntaxhighlight> Wtedy ciało funkcji tej, czyli jego definicja w środku, jest: <syntaxhighlight lang="lua"> -- Jest liczony numer parametru nazwy przestrzeni nazw, domyslnie chodzi tu o numer bazowy parametrów przestrzennych; local numer_jednostki=i or frame.args["numer jednostki"]; local liczba_numer_jednostki=((numer_jednostki)and(tonumber(numer_jednostki))or 0); local pudelko_pomocne_modul=require("Module:Pudełko/Pomocne"); -- Liczy nazwę przestrzeni nazw przedmiotową na podstawie podanych parametrów; return pudelko_pomocne_modul.Nazwa_przestrzeni_nazw(frame,1, czy_uwzglednic_alternatywna_nazwe,liczba_numer_jednostki); </syntaxhighlight> Parametry funkcji: * {{Code|frame}} - tablica ramki tablicy transportu, * {{Code|czy_uwzglednic_alternatywna_nazwe}} - czy ma uwzględniać nazwę przestrzeni nazw domyślną szablonu, dostępne wartości: {{Code|false}}, w której nazwa domyślna nie jest uwzględniana wtedy, oraz {{Code|nil}} i {{Code|true}}, które oznaczają to samo, w tym jeżeli ona jest uwzględniana, wtedy jest brany parametr pierwszy dziecka, który musi istnieć przy takiej wartości tego parametru, tzn. {{Code|{{m|Pudełko|Nazwa przedmiotowej przestrzeni nazw|Dyskusja szablonu}}}} - ta nazwa domyślna zostanie zamieniona na przedmiotową, a jak ona by była przedmiotowa, to żadnej zamiany by nie było, a nazwa uzyskana z nazwy przestrzeni nazw z parametrów przestrzennych jest w takim przypadku błędna, to w takim razie brany jest ten parametr, a jeżeli ta nazwa domyślna jest błędna, czyli {{Code|{{m|Pudełko|Nazwa przedmiotowej przestrzeni nazw|Moja przestrzeń}}}}, wtedy funkcja zwraca stan błędu {{Code|(błąd)}}. * {{Code|i}} - numer zmiennej nazwy przestrzeni nazw. Funkcja wykorzystuje {{Code|{{sr|#p.Nazwa_przestrzeni_nazw(frame,...)|p=Pudełko/Pomocne}}}} do wyznaczania ogólnego nazwy przestrzeni nazw dla pozycji bazowej i numerkowej, tzn. dla pozycji: jeden, dwa, trzy,..., itd, i ich ogólnej. Parametr ramki tablicy transportu rodzica szablonu: * {{Code|nazwa przestrzeni nazw}}, {{Code|nazwa przestrzeni nazw 1}}, {{Code|nazwa przestrzeni nazw 2}}, {{Code|nazwa przestrzeni nazw 3}},..., {{Code|nazwa przestrzeni nazw i}} - nazwy przestrzeni nazw dla pozycji bazowej oraz zwykłej i ogólnej numerkowej, * {{Code|typ jednostki}}, {{Code|typ jednostki 1}}, {{Code|typ jednostki 2}}, {{Code|typ jednostki 3}},..., {{Code|typ jednostki i}} - typy jednostek, którym odpowiadają pewne przestrzenie przedmiotowe, dla pozycji bazowej, numerkowej i ogólnej. Parametry ramki tablicy transportu dziecka: * Parametry dziecka są takie same jak rodzica dla funkcji pudełkowej plus tu wymienione, * {{Code|numer jednostki}} - jak parametr {{Code|i}} nie został ustawiony, to wtedy liczy się ta zmienna. Przykłady: <syntaxhighlight lang="mediawiki"> {{Nazwa szablonu|nazwa przestrzeni nazw=Dyskusja Wikibooks|nazwa przestrzeni nazw 2=Dyskusja szablonu|nazwa przestrzeni nazw i=Dyskusja modułu}} </syntaxhighlight> W dziecku powiedzmy jest wywołanie, i szukamy nazwy przestrzeni nazw o numerze dwa, która nie została podana, ale istnieje za to jej wersji ogólna {{Code|nazwa przestrzeni nazw i}} i domyślna {{Code|nazwa przestrzeni nazw}}: <syntaxhighlight lang="mediawiki"> {{#invoke:Pudełko|Nazwa przedmiotowej przestrzeni nazw|numer jednostki=1}} </syntaxhighlight> Na podstawie powyższego przykładu otrzymamy wynik o schemacie, nie wyniku, bo tam nie ma zmiennej {{Code|nazwa przestrzeni nazw 1}}, ale jest {{Code|nazwa przestrzeni nazw i}}: <syntaxhighlight lang="mediawiki"> <!-- Ale nie "nazwa przestrzeni nazw", bo jej nie ma, ale za to istnieje "nazwa przestrzeni nazw i"; --> <!-- nazwa przestrzeni nazw 2=nazwa przestrzeni nazw i=Dyskusja modułu; --> <!-- Czyli wynik: --> Moduł <!-- Widzimy, że wygenerowała się nazwa przestrzeni nazw, którą jest przestrzeń przedmiotowa programowa przestrzeni dyskusji "Dyskusja modułu", którą również jest "Szablon" jego przestrzeni dyskusji "Dyskusja szablonu", a dla ich przestrzeni przedmiotowej, zamiast dyskusji, to samo przekształca się na to samo; --> </syntaxhighlight> Nie jest brana w tym powyższym przykładzie zmienna {{Code|nazwa przestrzeni nazw}}, bo jej nie ma, ale za to jest {{Code|nazwa przestrzeni nazw i}}, bo ona występuje jako parametr domyślny ogólny dla parametrów numerkowych. Przykłady w wikikodzie: * {{Code|{{m|Pudełko|Nazwa przedmiotowej przestrzeni nazw|numer jednostki{{=}}2}}}} → {{Tt|{{#invoke:Pudełko|Nazwa przedmiotowej przestrzeni nazw|numer jednostki=2}}}} * {{Code|{{m|Pudełko|Nazwa przedmiotowej przestrzeni nazw|Dyskusja szablonu|nazwa przestrzeni nazw i{{=}}Moja przestrzeń|numer jednostki{{=}}2}}}} → {{Tt|{{#invoke:Pudełko|Nazwa przedmiotowej przestrzeni nazw|Dyskusja szablonu|nazwa przestrzeni nazw i=Moja przestrzeń|numer jednostki=2}}}} * {{Code|{{m|Pudełko|Nazwa przedmiotowej przestrzeni nazw|nazwa przestrzeni nazw 2{{=}}Dyskusja szablonu|numer jednostki{{=}}2}}}} → {{Tt|{{#invoke:Pudełko|Nazwa przedmiotowej przestrzeni nazw|nazwa przestrzeni nazw 2=Dyskusja szablonu|numer jednostki=2}}}} * {{Code|{{m|Pudełko|Nazwa przedmiotowej przestrzeni nazw|nazwa przestrzeni nazw 2{{=}}Dyskusja szablonu|numer jednostki{{=}}2}}}} → {{Tt|{{#invoke:Pudełko|Nazwa przedmiotowej przestrzeni nazw|nazwa przestrzeni nazw i=Dyskusja szablonu|numer jednostki=2}}}} * {{Code|{{m|Pudełko|Nazwa przedmiotowej przestrzeni nazw|nazwa przestrzeni nazw{{=}}Dyskusja szablonu|numer jednostki{{=}}2}}}} → {{Tt|{{#invoke:Pudełko|Nazwa przedmiotowej przestrzeni nazw|nazwa przestrzeni nazw=Dyskusja szablonu|numer jednostki=2}}}} Powyżej dla przykładu podano parametry nie w rodzicu w szablonie, tylko w dziecku, jeśli chodzi o parametry nazw przestrzeni nazw, ale ich się za to nie powinno podawać w tych ramach, tylko w szablonach, w których wywoływane są te ramki pudełek {{Code|{{m|Pudełko}}}}, ale tak tutaj tak zrobiono by było najłatwiej sprawdzić działanie tego typu funkcji. Analogicznie możemy podawać parametry typu jednostki, np.: wywołaniu modułowym {{Code|{{m|Pudełko|Nazwa przedmiotowej przestrzeni nazw|typ jednostki 2{{=}}strona szablonu|numer jednostki{{=}}2}}}}, ale o tym więcej w rozdziałach {{Code|{{sr|# p["Typ jednostki"](frame,i)|p=Pudełko}}}}, {{Code|{{sr|#p["Typ jednostki 2"](frame,i)|p=Pudełko}}}}, {{Code|{{sr|#p["Typ jednostki 3"](frame,i)|p=Pudełko}}}} itp. w „{{sr|#Funkcje typu jednostki|p=Pudełko}}”, ale wtedy ta sama nazwa przestrzeni nazw reprezentowana przez {{Parametr|typ jednostki 2|strona szablonu}}, jest zamieniana na to samo, lepiej jest tutaj używać parametrów przestrzennych nazw niż typu jednostki, bo typ jednostki ma taką samą wartość dla przestrzeni przedmiotowej, co dyskusji. Tutaj parametr dyskusji typu jednostki bazowy i numerkowy ogólny, czy szczegółowy, nie gra roli, bo nawet, gdy wygenerujemy nazwę przestrzeni dyskusji za pomoca tego parametru, to i tak otrzymamy na samym końcu jego nazwę przedmiotową. Również parametry typu jednostki nie powinno się podawać w dziecku w ramce, tylko w rodzicu w szablonie jako parametry, w którym ta ramka jest wywoływana, ale tutaj podano jedynie dla przykładu, jak najłatwiej sprawdzić działanie tych parametrów tej funkcji. Najpierw w funkcji nagłówku brane są parametry nazw przestrzeni nazw, a jeżeli ich nie ma, to parametry typu jednostki, a jeżeli nie ma, to generowane są nazwy na podstawie aktualnego modułu. === {{Code|p["Nazwa przestrzeni nazw dyskusji"](frame,...)}} === Funkcja pisze nazwę przestrzeni nazw dyskusji jakikolwiek nazwy przestrzeni nazw (tzn. nazwę przedmiotową nazwy przestrzenie nazw, czyli nie dyskusji, zamieniana jest na dyskusji, czyli identyfikator przestrzeni się zmienia jeden wyżej, a dyskusji, nie przedmiotową, przekształca się na tą samą), według podanej w zmiennej {{Code|nazwa przestrzeni nazw}} dla pozycja bazowej w podanych parametrach szablonu rodzicu ramki dziecka, lub dla innej pozycji należy parametr podawać w formie {{Code|nazwa przestrzeni nazw 1}}, {{Code|nazwa przestrzeni nazw 2}}, {{Code|nazwa przestrzeni nazw 3}},..., lub te parametry można podać w postaci ogólnej {{Code|nazwa przestrzeni nazw i}}. Parametry podaje się w parametrach rodzica wywołania tej funkcji {{Code|{{m|Pudełko|Nazwa przestrzeni nazw dyskusji}}}} (ale ich nie trzeba podawać w dziecku, ale można) i w parametrach dziecka, jeśli chodzi o zmienną {{Code|numer jednostki}}, czyli np.: {{Code|{{m|Pudełko|Nazwa przestrzeni nazw dyskusji|numer jednostki{{=}}<jakaś liczba całkowita dodatnia>}}}}. Te parametry przestrzenne zamiast w rodzicu w szablonie można podać w ramce dziecka, wtedy parametry dziecka mają pierwszeństwo. Parametry przestrzenne mogą mogą być podane w postaci przestrzeni przedmiotowej lub dyskusji, ale ta funkcja zawsze ją zamienia na dyskusji. Przestrzeń nazw z parametrów nazw przestrzennych może odpowiadać wartości przestrzeni głównej, to wtedy odpowiednia przestrzeń nazw z parametru nazwy jednostki się nie liczy w tej funkcji, aby się liczyła należy użyć funkcji {{Code|{{sr|#p["Nazwa przestrzeni nazw dyskusji 2"](frame,...)|p=Pudełko}}}}. Definicja skrótowa funkcji: <syntaxhighlight lang="lua"> p["Nazwa przestrzeni nazw dyskusji"]=function(frame,czy_uwzglednic_alternatywna_nazwe,i)...end; </syntaxhighlight> Wtedy ciało funkcji tej, czyli jego definicja w środku, jest: <syntaxhighlight lang="lua"> -- Jest liczony numer parametru nazwy przestrzeni nazw, domyslnie chodzi tu o numer bazowy parametrów przestrzennych; local numer_jednostki=i or frame.args["numer jednostki"]; local liczba_numer_jednostki=((numer_jednostki)and(tonumber(numer_jednostki))or 0); local pudelko_pomocne_modul=require("Module:Pudełko/Pomocne"); -- Liczy nazwę przestrzeni nazw dyskusji na podstawie podanych parametrów; return pudelko_pomocne_modul.Nazwa_przestrzeni_nazw(frame,2, czy_uwzglednic_alternatywna_nazwe,liczba_numer_jednostki); </syntaxhighlight> Parametry funkcji: * {{Code|frame}} - tablica ramki tablicy transportu, * {{Code|czy_uwzglednic_alternatywna_nazwe}} - czy ma uwzględniać nazwę przestrzeni nazw domyślną szablonu, dostępne wartości: {{Code|false}}, w której nazwa domyślna nie jest uwzględniana wtedy, oraz {{Code|nil}} i {{Code|true}}, które oznaczają to samo, w tym jeżeli ona jest uwzględniana, wtedy jest brany parametr pierwszy dziecka, który musi istnieć przy takiej wartości tego parametru, tzn. {{Code|{{m|Pudełko|Nazwa przestrzeni nazw dyskusji|Szablon}}}} - ta nazwa domyślna zostanie przekształcona na dyskusji, a jeżeli ona by była dyskusji, to nie byłoby żadnego przekształcenia, a nazwa uzyskana nazwy przestrzeni nazw z parametrów przestrzennych jest w takim przypadku błędna, to w takim razie brany jest ten parametr, a jeżeli nazwa domyślna jest błędna, czyli {{Code|{{m|Pudełko|Nazwa przestrzeni nazw dyskusji|Moja przestrzeń}}}}, wtedy funkcja zwraca stan błędu {{Code|(błąd)}}. * {{Code|i}} - numer zmiennej nazwy przestrzeni nazw. Funkcja wykorzystuje {{Code|{{sr|#p.Nazwa_przestrzeni_nazw(frame,...)|p=Pudełko/Pomocne}}}} do wyznaczania ogólnego nazwy przestrzeni nazw dla pozycji bazowej i numerkowej, tzn. dla pozycji: jeden, dwa, trzy,..., itd, i ich ogólnej. Parametr ramki tablicy transportu rodzica szablonu: * {{Code|nazwa przestrzeni nazw}}, {{Code|nazwa przestrzeni nazw 1}}, {{Code|nazwa przestrzeni nazw 2}}, {{Code|nazwa przestrzeni nazw 3}},..., {{Code|nazwa przestrzeni nazw i}} - nazwy przestrzeni nazw dla pozycji bazowej oraz zwykłej i ogólnej numerkowej, * {{Code|typ jednostki}}, {{Code|typ jednostki 1}}, {{Code|typ jednostki 2}}, {{Code|typ jednostki 3}},..., {{Code|typ jednostki i}} - typy jednostek, którym odpowiadają pewne przestrzenie przedmiotowe, dla pozycji bazowej, numerkowej i ogólnej. Parametry ramki tablicy transportu dziecka: * Parametry dziecka są takie same jak rodzica dla funkcji pudełkowej plus tu wymienione, * {{Code|numer jednostki}} - jak parametr {{Code|i}} nie został ustawiony, to wtedy liczy się ta zmienna. Przykłady: <syntaxhighlight lang="mediawiki"> {{Nazwa szablonu|nazwa przestrzeni nazw=Wikibooks|nazwa przestrzeni nazw 2=Szablon|nazwa przestrzeni nazw i=Moduł}} </syntaxhighlight> W dziecku powiedzmy jest wywołanie, i szukamy nazwy przestrzeni nazw o numerze dwa, która nie została podana, ale istnieje za to jej wersji ogólna {{Code|nazwa przestrzeni nazw i}} i domyślna {{Code|nazwa przestrzeni nazw}}: <syntaxhighlight lang="mediawiki"> {{#invoke:Pudełko|Nazwa przestrzeni nazw dyskusji|numer jednostki=1}} </syntaxhighlight> Na podstawie powyższego przykładu otrzymamy wynik o schemacie, nie wyniku, bo tam nie ma zmiennej {{Code|nazwa przestrzeni nazw 1}}, ale jest {{Code|nazwa przestrzeni nazw i}}: <syntaxhighlight lang="mediawiki"> <!-- Ale nie "nazwa przestrzeni nazw", bo jej nie ma, ale za to istnieje "nazwa przestrzeni nazw i"; --> <!-- nazwa przestrzeni nazw 2=nazwa przestrzeni nazw i=Moduł; --> <!-- Czyli wynik: --> Dyskusja modułu <!-- Widzimy, że wygenerowała się nazwa przestrzeni nazw, którą jest przestrzeń dyskusji przestrzeni programowej przestrzeni przedmiotowej "Moduł", którą również jest "Szablon" jego przestrzeni dyskusji "Dyskusja szablonu", a dla ich przestrzeni przedmiotowej, zamiast dyskusji, to przekształca się na dyskusji jej odpowiadającą; --> </syntaxhighlight> Nie jest brana w tym powyższym przykładzie zmienna {{Code|nazwa przestrzeni nazw}}, bo jej nie ma, ale za to jest {{Code|nazwa przestrzeni nazw i}}, bo ona występuje jako parametr domyślny ogólny dla parametrów numerkowych. Przykłady w wikikodzie: * {{Code|{{m|Pudełko|Nazwa przestrzeni nazw dyskusji|numer jednostki{{=}}2}}}} → {{Tt|{{#invoke:Pudełko|Nazwa przestrzeni nazw dyskusji|numer jednostki=2}}}} * {{Code|{{m|Pudełko|Nazwa przestrzeni nazw dyskusji|Szablon|nazwa przestrzeni nazw i{{=}}Moja przestrzeń|numer jednostki{{=}}2}}}} → {{Tt|{{#invoke:Pudełko|Nazwa przestrzeni nazw dyskusji|Szablon|nazwa przestrzeni nazw i=Moja przestrzeń|numer jednostki=2}}}} * {{Code|{{m|Pudełko|Nazwa przestrzeni nazw dyskusji|nazwa przestrzeni nazw 2{{=}}Szablon|numer jednostki{{=}}2}}}} → {{Tt|{{#invoke:Pudełko|Nazwa przestrzeni nazw dyskusji|nazwa przestrzeni nazw 2=Szablon|numer jednostki=2}}}} * {{Code|{{m|Pudełko|Nazwa przestrzeni nazw dyskusji|nazwa przestrzeni nazw 2{{=}}Szablon|numer jednostki{{=}}2}}}} → {{Tt|{{#invoke:Pudełko|Nazwa przestrzeni nazw dyskusji|nazwa przestrzeni nazw i=Szablon|numer jednostki=2}}}} * {{Code|{{m|Pudełko|Nazwa przestrzeni nazw dyskusji|nazwa przestrzeni nazw{{=}}Szablon|numer jednostki{{=}}2}}}} → {{Tt|{{#invoke:Pudełko|Nazwa przestrzeni nazw dyskusji|nazwa przestrzeni nazw=Szablon|numer jednostki=2}}}} Powyżej dla przykładu podano parametry nie w rodzicu w szablonie, tylko w dziecku, jeśli chodzi o parametry nazw przestrzeni nazw, ale ich się za to nie powinno podawać w tych ramach, tylko w szablonach, w których wywoływane są te ramki pudełek {{Code|{{m|Pudełko}}}}, ale tak tutaj tak zrobiono by było najłatwiej sprawdzić działanie tego typu funkcji. Analogicznie możemy podawać parametry typu jednostki, np.: wywołaniu modułowym {{Code|{{m|Pudełko|Nazwa przestrzeni nazw dyskusji|typ jednostki 2{{=}}strona szablonu|numer jednostki{{=}}2}}}}, ale o tym więcej w rozdziałach {{Code|{{sr|# p["Typ jednostki"](frame,i)|p=Pudełko}}}}, {{Code|{{sr|#p["Typ jednostki 2"](frame,i)|p=Pudełko}}}}, {{Code|{{sr|#p["Typ jednostki 3"](frame,i)|p=Pudełko}}}} itp. w „{{sr|#Funkcje typu jednostki|p=Pudełko}}”, ale wtedy nazwa przestrzeni nazw reprezentowana przez {{Parametr|typ jednostki 2|strona szablonu}}, jest zamieniana na nazwę przestrzeni nazw dyskusji. Parametr dyskusji typu jednostki bazowy lub dla danego numerka ogólny, czy szczegółowy, nie gra roli. Również parametry typu jednostki nie powinno się podawać w dziecku w ramce, tylko w rodzicu w szablonie jako parametry, w którym ta ramka jest wywoływana, ale tutaj podano jedynie dla przykładu, jak najłatwiej sprawdzić działanie tych parametrów tej funkcji. Najpierw w funkcji nagłówku brane są parametry nazw przestrzeni nazw, a jeżeli ich nie ma, to parametry typu jednostki, a jeżeli nie ma, to generowane są nazwy na podstawie aktualnego modułu. == Funkcje nazw przestrzeni nazw drugiej wersji == === {{Code|p["Nazwa przestrzeni nazw 2"](frame,...)}} === Funkcja pisze nazwę przestrzeni nazw, niezależnie, czy to jest przedmiotowa, czy dyskusji, według, i nie zawsze tylko, podanej w zmiennej {{Code|nazwa przestrzeni nazw}} dla pozycja bazowej w podanych parametrach szablonu rodzicu ramki dziecka, lub dla innej pozycji należy parametr podawać w formie {{Code|nazwa przestrzeni nazw 1}}, {{Code|nazwa przestrzeni nazw 2}}, {{Code|nazwa przestrzeni nazw 3}},..., lub te parametry można podać w postaci ogólnej {{Code|nazwa przestrzeni nazw i}}. W tej funkcji trzeba też podawać parametry nazwy jednostek {{Code|nazwa jednostki}}, {{Code|nazwa jednostki 1}}, {{Code|nazwa jednostki 2}}, {{Code|nazwa jednostki 3}},... Parametry podaje się w parametrach rodzica wywołania tej funkcji {{Code|{{m|Pudełko|Nazwa przestrzeni nazw 2}}}} (ale ich nie trzeba podawać w dziecku, ale można) i w parametrach dziecka, jeśli chodzi o zmienną {{Code|numer jednostki}}, czyli np.: {{Code|{{m|Pudełko|Nazwa przestrzeni nazw 2|numer jednostki{{=}}<jakaś liczba całkowita dodatnia>}}}}. Te parametry przestrzenne zamiast w rodzicu w szablonie można podać w ramce dziecka, wtedy parametry dziecka mają pierwszeństwo. Przestrzeń nazw z parametrów nazw przestrzennych może odpowiadać wartości przestrzeni głównej, to wtedy odpowiednia przestrzeń nazw z parametru nazwy jednostki się liczy w tej funkcji, wtedy jest liczona nazwa przestrzeni nazw z tego parametru. Gdy parametry przestrzenne lub typ jednostki w drugim podejściu nie wskazują na przestrzeń główną, to wtedy działanie tej funkcji jest podobne do {{Code|{{sr|#p["Nazwa przestrzeni nazw"](frame,...)|p=Pudełko}}}}. Definicja skrótowa funkcji: <syntaxhighlight lang="lua"> p["Nazwa przestrzeni nazw 2"]=function(frame,czy_uwzglednic_alternatywna_nazwe,i)...end; </syntaxhighlight> Wtedy ciało funkcji tej, czyli jego definicja w środku, jest: <syntaxhighlight lang="lua"> local pudelko_pomocne_modul=require("Module:Pudełko/Pomocne"); -- Liczy nazwę przestrzeni nazw, jeżeli z parametrów przestrzennych przestrzeń wskazuje na główną, to wtedy jest liczona przestrzeń nazw z nazwy jednostki; return pudelko_pomocne_modul.Nazwa_przestrzeni_nazw_2(frame,czy_uwzglednic_alternatywna_nazwe,i) </syntaxhighlight> Parametry funkcji: * {{Code|frame}} - tablica ramki tablicy transportu, * {{Code|czy_uwzglednic_alternatywna_nazwe}} - czy ma uwzględniać nazwę przestrzeni nazw domyślną szablonu, dostępne wartości: {{Code|false}}, w której nazwa domyślna nie jest uwzględniana wtedy, oraz {{Code|nil}} i {{Code|true}}, które oznaczają to samo, w tym jeżeli ona jest uwzględniana, wtedy jest brany parametr pierwszy dziecka, który musi istnieć przy takiej wartości tego parametru, tzn. {{Code|{{m|Pudełko|Nazwa przestrzeni nazw 2|Szablon}}}}, a nazwa uzyskana nazwy przestrzeni nazw jest w takim przypadku błędna, a jeżeli nazwa domyślna jest błędna, czyli {{Code|{{m|Pudełko|Nazwa przestrzeni nazw 2|Moja przestrzeń}}}}, wtedy funkcja zwraca stan błędu {{Code|(błąd)}}. * {{Code|i}} - numer zmiennej nazwy przestrzeni nazw. Funkcja wykorzystuje {{Code|{{sr|#p.Nazwa_przestrzeni_nazw_2(frame,...)|p=Pudełko/Pomocne}}}} do wyznaczania ogólnego nazwy przestrzeni nazw dla pozycji bazowej i numerkowej, tzn. dla pozycji: jeden, dwa, trzy,..., itd, i ich ogólnej. Parametr ramki tablicy transportu rodzica szablonu: * {{Code|nazwa przestrzeni nazw}}, {{Code|nazwa przestrzeni nazw 1}}, {{Code|nazwa przestrzeni nazw 2}}, {{Code|nazwa przestrzeni nazw 3}},..., {{Code|nazwa przestrzeni nazw i}} - nazwy przestrzeni nazw dla pozycji bazowej oraz zwykłej i ogólnej numerkowej, * {{Code|nazwa jednostki}}, {{Code|nazwa jednostki 1}}, {{Code|nazwa jednostki 2}}, {{Code|nazwa jednostki 3}},... - nazwy jednostek dla pozycji bazowej i numerkowej, * {{Code|typ jednostki}}, {{Code|typ jednostki 1}}, {{Code|typ jednostki 2}}, {{Code|typ jednostki 3}},..., {{Code|typ jednostki i}} - typy jednostek, którym odpowiadają pewne przestrzenie przedmiotowe, dla pozycji bazowej, numerkowej i ogólnej, ** {{Code|dyskusja typu jednostki}}, {{Code|dyskusja typu jednostki 1}}, {{Code|dyskusja typ jednostki 2}}, {{Code|dyskusja typ jednostki 3}},..., {{Code|dyskusja typ jednostki i}} - czy dany typ jednostki ma przedstawiać, jeśli niepusta, przestrzeń dyskusji dla pozycji bazowej, numerkowej i ogólnej. Parametry ramki tablicy transportu dziecka: * Parametry dziecka są takie same jak rodzica dla funkcji pudełkowej plus tu wymienione, * {{Code|numer jednostki}} - jak parametr {{Code|i}} nie został ustawiony, to wtedy liczy się ta zmienna. Przykłady: <syntaxhighlight lang="mediawiki"> {{Nazwa szablonu|nazwa przestrzeni nazw=Wikibooks|nazwa przestrzeni nazw 1=Szablon|nazwa przestrzeni nazw i=|nazwa jednostki 2=Wikibooks:Strona}} </syntaxhighlight> W dziecku powiedzmy jest wywołanie, i szukamy nazwy przestrzeni nazw o numerze dwa, która została podana, ale istnieje za to jej wersji ogólna {{Code|nazwa przestrzeni nazw i}} i domyślna {{Code|nazwa przestrzeni nazw}}, ale wtedy dla tego numerkowego liczy się to ogólne z {{Code| i}}, a ponieważ ta nazwa jest pusta, więc będziemy liczyli nazwę przestrzeni nazw z {{Code|nazwa jednostki 2}}: <syntaxhighlight lang="mediawiki"> {{#invoke:Pudełko|Nazwa przestrzeni nazw 2|numer jednostki=2}} </syntaxhighlight> Na podstawie powyższego przykładu otrzymamy wynik o schemacie, nie wyniku, bo tam nie ma zmiennej {{Code|nazwa przestrzeni nazw 1}}, ale jest {{Code|nazwa przestrzeni nazw i}}: <syntaxhighlight lang="mediawiki"> <!-- Ale nie "nazwa przestrzeni nazw 2", bo jej nie ma, ale za to istnieje "nazwa przestrzeni nazw i"; --> <!-- nazwa przestrzeni nazw 2=nazwa przestrzeni nazw i="", a nazwa jednostki 2="Wikibooks:Strona"; --> <!-- Czyli wynik: --> Wikibooks <!-- Widzimy, że wygenerowała się nazwa przestrzeni nazw, którą jest przestrzeń nieprogramowa, ale projektu, wychodząca z nazwy jednostek w tym przypadku z "nazwa jednostki 2"; --> </syntaxhighlight> Nie jest brana w tym powyższym przykładzie zmienna {{Code|nazwa przestrzeni nazw}}, bo jej nie ma, ale za to jest {{Code|nazwa przestrzeni nazw i}}, bo ona występuje jako parametr domyślny ogólny dla parametrów numerkowych. Tytaj jest używana jest zmienna {{Code|nazwa jednostki 2}} do wygenerowania ostatecznego wyniku, bo jak można zauważyć, parametry przestrzenne wskazują na przestrzeń główną, a nazwy jednostek już nie. Przykłady w wikikodzie: * {{Code|{{m|Pudełko|Nazwa przestrzeni nazw 2|numer jednostki{{=}}2}}}} → {{Tt|{{#invoke:Pudełko|Nazwa przestrzeni nazw 2|numer jednostki=2}}}} * {{Code|{{m|Pudełko|Nazwa przestrzeni nazw 2|Szablon|nazwa przestrzeni nazw i{{=}}Moja przestrzeń|numer jednostki{{=}}2}}}} → {{Tt|{{#invoke:Pudełko|Nazwa przestrzeni nazw 2|Szablon|nazwa przestrzeni nazw i=Moja przestrzeń|numer jednostki=2}}}} * {{Code|{{m|Pudełko|Nazwa przestrzeni nazw 2|nazwa przestrzeni nazw 2{{=}}|nazwa jednostki 2{{=}}Szablon:Strona|numer jednostki{{=}}2}}}} → {{Tt|{{#invoke:Pudełko|Nazwa przestrzeni nazw 2|nazwa przestrzeni nazw 2=|nazwa jednostki 2=Szablon:Strona|numer jednostki=2}}}} * {{Code|{{m|Pudełko|Nazwa przestrzeni nazw 2|nazwa przestrzeni nazw i{{=}}|nazwa jednostki 2{{=}}Szablon:Strona|numer jednostki{{=}}2}}}} → {{Tt|{{#invoke:Pudełko|Nazwa przestrzeni nazw 2|nazwa przestrzeni nazw i=|nazwa jednostki 2=Szablon:Strona|numer jednostki=2}}}} * {{Code|{{m|Pudełko|Nazwa przestrzeni nazw 2|Szablon|nazwa przestrzeni nazw{{=}}|nazwa jednostki 2{{=}}Wikibooks:Strona|numer jednostki{{=}}2}}}} → {{Tt|{{#invoke:Pudełko|Nazwa przestrzeni nazw 2|Szablon|nazwa przestrzeni nazw=|nazwa jednostki 2=Wikibooks:Strona|numer jednostki=2}}}} Powyżej dla przykładu podano parametry nie w rodzicu w szablonie, tylko w dziecku, jeśli chodzi o parametry nazw przestrzeni nazw i nazw jednostek, ale ich się za to nie powinno podawać w tych ramach, tylko w szablonach, w których wywoływane są te ramki pudełek {{Code|{{m|Pudełko}}}}, ale tak tutaj tak zrobiono by było najłatwiej sprawdzić działanie tego typu funkcji. Analogicznie możemy podawać parametry typu jednostki, np.: wywołaniu modułowym {{Code|{{m|Pudełko|Nazwa przestrzeni nazw 2|typ jednostki 2{{=}}Podręcznik|nazwa jednostki 2{{=}}Szablon:Strona|numer jednostki{{=}}2}}}} (ale wtedy jest brana przestrzeń nazw z nazwy jednostki), ale o tym więcej w rozdziałach {{Code|{{sr|# p["Typ jednostki"](frame,i)|p=Pudełko}}}}, {{Code|{{sr|#p["Typ jednostki 2"](frame,i)|p=Pudełko}}}}, {{Code|{{sr|#p["Typ jednostki 3"](frame,i)|p=Pudełko}}}} itp. w „{{sr|#Funkcje typu jednostki|p=Pudełko}}”, on definiuje przestrzenie przedmiotowe, ale można użyć parametru dyskusji typu jednostki z wartością niepustą, wtedy wyświetli się nazwa przestrzeni nazw dyskusji. Jeżeli typ jednostki wskazuje na przestrzeń nazw główną, wtedy się liczą parametry nazw jednostek. Również parametry typu jednostki nie powinno się podawać w dziecku w ramce, tylko w rodzicu w szablonie jako parametry, w którym ta ramka jest wywoływana, ale tutaj podano jedynie dla przykładu, jak najłatwiej sprawdzić działanie tych parametrów tej funkcji. Najpierw w funkcji nagłówku brane są parametry nazw przestrzeni nazw, a jeżeli ich nie ma, to parametry typu jednostki, a jeżeli nie ma lub parametry przestrzenne wskazują na przestrzeń główną, i nie ma nazwy jednostki, to generowane są nazwy tej funkcji na podstawie aktualnej strony. === {{Code|p["Nazwa przedmiotowej przestrzeni nazw 2"](frame,...)}} === Funkcja pisze przedmiotową nazwę przestrzeni nazw jakikolwiek nazwy przestrzeni nazw (tzn. nazwę przedmiotową nazwy przestrzenie nazw, czyli nie dyskusji, zamieniana jest na nią samą, czyli identyfikator przestrzeni się nie zmienia, a dyskusji, nie przedmiotową, przekształca się na przedmiotową jej odpowiadającą, czyli w tym przypadku identyfikator przestrzeni zmniejsza się o numer mniej), według, i nie zawsze tylko, podanej w zmiennej {{Code|nazwa przestrzeni nazw}} dla pozycja bazowej w podanych parametrach szablonu rodzicu ramki dziecka, lub dla innej pozycji należy parametr podawać w formie {{Code|nazwa przestrzeni nazw 1}}, {{Code|nazwa przestrzeni nazw 2}}, {{Code|nazwa przestrzeni nazw 3}},..., lub te parametry można podać w postaci ogólnej {{Code|nazwa przestrzeni nazw i}}. W tej funkcji trzeba też podawać parametry nazwy jednostek {{Code|nazwa jednostki}}, {{Code|nazwa jednostki 1}}, {{Code|nazwa jednostki 2}}, {{Code|nazwa jednostki 3}},... Parametry podaje się w parametrach rodzica wywołania tej funkcji {{Code|{{m|Pudełko|Nazwa przedmiotowej przestrzeni nazw 2}}}} (ale ich nie trzeba podawać w dziecku, ale można) i w parametrach dziecka, jeśli chodzi o zmienną {{Code|numer jednostki}}, czyli np.: {{Code|{{m|Pudełko|Nazwa przedmiotowej przestrzeni nazw 2|numer jednostki{{=}}<jakaś liczba całkowita dodatnia>}}}}. Te parametry przestrzenne zamiast w rodzicu w szablonie można podać w ramce dziecka, wtedy parametry dziecka mają pierwszeństwo. Przestrzeń nazw z parametrów nazw przestrzennych po przekształceniu na przedmiotową może odpowiadać wartości przestrzeni głównej, to wtedy odpowiednia przestrzeń nazw z parametru nazwy jednostki się liczy w tej funkcji, wtedy jest liczona nazwa przestrzeni nazw z tego parametru. Gdy parametry przestrzenne lub typ jednostki w drugim podejściu nie wskazują na przestrzeń główną, to wtedy działanie tej funkcji jest podobne do {{Code|{{sr|#p["Nazwa przedmiotowej przestrzeni nazw"](frame,...)|p=Pudełko}}}}. Definicja skrótowa funkcji: <syntaxhighlight lang="lua"> p["Nazwa przedmiotowej przestrzeni nazw 2"]=function(frame,czy_uwzglednic_alternatywna_nazwe,i)...end; </syntaxhighlight> Wtedy ciało funkcji tej, czyli jego definicja w środku, jest: <syntaxhighlight lang="lua"> local pudelko_pomocne_modul=require("Module:Pudełko/Pomocne"); return pudelko_pomocne_modul.Nazwa_przestrzeni_nazw_przedmiotowa_dyskusji_2(frame,czy_uwzglednic_alternatywna_nazwe,i,"przedmiotowa"); </syntaxhighlight> Parametry funkcji: * {{Code|frame}} - tablica ramki tablicy transportu, * {{Code|czy_uwzglednic_alternatywna_nazwe}} - czy ma uwzględniać nazwę przestrzeni nazw domyślną szablonu, dostępne wartości: {{Code|false}}, w której nazwa domyślna nie jest uwzględniana wtedy, oraz {{Code|nil}} i {{Code|true}}, które oznaczają to samo, w tym jeżeli ona jest uwzględniana, wtedy jest brany parametr pierwszy dziecka, który musi istnieć przy takiej wartości tego parametru, tzn. {{Code|{{m|Pudełko|Nazwa przedmiotowej przestrzeni nazw 2|Szablon}}}}, a nazwa uzyskana nazwy przestrzeni nazw jest w takim przypadku błędna, a jeżeli nazwa domyślna jest błędna, czyli {{Code|{{m|Pudełko|Nazwa przedmiotowej przestrzeni nazw 2|Moja przestrzeń}}}}, wtedy funkcja zwraca stan błędu {{Code|(błąd)}}. * {{Code|i}} - numer zmiennej nazwy przestrzeni nazw. Funkcja wykorzystuje {{Code|{{sr|#p.Nazwa_przestrzeni_nazw_przedmiotowa_dyskusji_2(frame,...)|p=Pudełko/Pomocne}}}} do wyznaczania ogólnego nazwy przestrzeni nazw dla pozycji bazowej i numerkowej, tzn. dla pozycji: jeden, dwa, trzy,..., itd, i ich ogólnej. Parametr ramki tablicy transportu rodzica szablonu: * {{Code|nazwa przestrzeni nazw}}, {{Code|nazwa przestrzeni nazw 1}}, {{Code|nazwa przestrzeni nazw 2}}, {{Code|nazwa przestrzeni nazw 3}},..., {{Code|nazwa przestrzeni nazw i}} - nazwy przestrzeni nazw dla pozycji bazowej oraz zwykłej i ogólnej numerkowej, * {{Code|nazwa jednostki}}, {{Code|nazwa jednostki 1}}, {{Code|nazwa jednostki 2}}, {{Code|nazwa jednostki 3}},... - nazwy jednostek dla pozycji bazowej i numerkowej, * {{Code|typ jednostki}}, {{Code|typ jednostki 1}}, {{Code|typ jednostki 2}}, {{Code|typ jednostki 3}},..., {{Code|typ jednostki i}} - typy jednostek, którym odpowiadają pewne przestrzenie przedmiotowe, dla pozycji bazowej, numerkowej i ogólnej. Parametry ramki tablicy transportu dziecka: * Parametry dziecka są takie same jak rodzica dla funkcji pudełkowej plus tu wymienione, * {{Code|numer jednostki}} - jak parametr {{Code|i}} nie został ustawiony, to wtedy liczy się ta zmienna. Przykłady: <syntaxhighlight lang="mediawiki"> {{Nazwa szablonu|nazwa przestrzeni nazw=Wikibooks|nazwa przestrzeni nazw 1=Szablon|nazwa przestrzeni nazw i=|nazwa jednostki 2=Dyskusja Wikibooks:Strona}} </syntaxhighlight> W dziecku powiedzmy jest wywołanie, i szukamy nazwy przestrzeni nazw o numerze dwa, która została podana, ale istnieje za to jej wersji ogólna {{Code|nazwa przestrzeni nazw i}} i domyślna {{Code|nazwa przestrzeni nazw}}, ale wtedy dla tego numerkowego liczy się to ogólne z {{Code| i}}, a ponieważ ta nazwa jest pusta, więc będziemy liczyli nazwę przestrzeni nazw z {{Code|nazwa jednostki 2}}: <syntaxhighlight lang="mediawiki"> {{#invoke:Pudełko|Nazwa przedmiotowej przestrzeni nazw 2|numer jednostki=2}} </syntaxhighlight> Na podstawie powyższego przykładu otrzymamy wynik o schemacie, nie wyniku, bo tam nie ma zmiennej {{Code|nazwa przestrzeni nazw 1}}, ale jest {{Code|nazwa przestrzeni nazw i}}: <syntaxhighlight lang="mediawiki"> <!-- Ale nie "nazwa przestrzeni nazw 2", bo jej nie ma, ale za to istnieje "nazwa przestrzeni nazw i"; --> <!-- nazwa przestrzeni nazw 2=nazwa przestrzeni nazw i="", a nazwa jednostki 2="Dyskusja Wikibooks:Strona"; --> <!-- Czyli wynik: --> Wikibooks <!-- Widzimy, że wygenerowała się nazwa przestrzeni nazw, którą jest przestrzeń nieprogramowa, ale projektu, wychodząca z nazwy jednostek w tym przypadku z "nazwa jednostki 2"; --> </syntaxhighlight> Nie jest brana w tym powyższym przykładzie zmienna {{Code|nazwa przestrzeni nazw}}, bo jej nie ma, ale za to jest {{Code|nazwa przestrzeni nazw i}}, bo ona występuje jako parametr domyślny ogólny dla parametrów numerkowych. Tytaj jest używana jest zmienna {{Code|nazwa jednostki 2}} do wygenerowania ostatecznego wyniku, bo jak można zauważyć, parametry przestrzenne wskazują na przestrzeń główną, a nazwy jednostek już nie. Przykłady w wikikodzie: * {{Code|{{m|Pudełko|Nazwa przedmiotowej przestrzeni nazw 2|numer jednostki{{=}}2}}}} → {{Tt|{{#invoke:Pudełko|Nazwa przedmiotowej przestrzeni nazw 2|numer jednostki=2}}}} * {{Code|{{m|Pudełko|Nazwa przedmiotowej przestrzeni nazw 2|Dyskusja szablonu|nazwa przestrzeni nazw i{{=}}Moja przestrzeń|numer jednostki{{=}}2}}}} → {{Tt|{{#invoke:Pudełko|Nazwa przedmiotowej przestrzeni nazw 2|Dyskusja szablonu|nazwa przestrzeni nazw i=Moja przestrzeń|numer jednostki=2}}}} * {{Code|{{m|Pudełko|Nazwa przedmiotowej przestrzeni nazw 2|nazwa przestrzeni nazw 2{{=}}Dyskusja|nazwa jednostki 2{{=}}Dyskusja szablonu:Strona|numer jednostki{{=}}2}}}} → {{Tt|{{#invoke:Pudełko|Nazwa przedmiotowej przestrzeni nazw 2|nazwa przestrzeni nazw 2=Dyskusja|nazwa jednostki 2=Dyskusja szablonu:Strona|numer jednostki=2}}}} * {{Code|{{m|Pudełko|Nazwa przedmiotowej przestrzeni nazw 2|nazwa przestrzeni nazw i{{=}}Dyskusja|nazwa jednostki 2{{=}}Dyskusja szablonu:Strona|numer jednostki{{=}}2}}}} → {{Tt|{{#invoke:Pudełko|Nazwa przedmiotowej przestrzeni nazw 2|nazwa przestrzeni nazw i=Dyskusja|nazwa jednostki 2=Dyskusja szablonu:Strona|numer jednostki=2}}}} * {{Code|{{m|Pudełko|Nazwa przedmiotowej przestrzeni nazw 2|Dyskusja szablonu|nazwa przestrzeni nazw{{=}}Dyskusja|nazwa jednostki 2{{=}}Wikibooks:Strona|numer jednostki{{=}}2}}}} → {{Tt|{{#invoke:Pudełko|Nazwa przedmiotowej przestrzeni nazw 2|Dyskusja szablonu|nazwa przestrzeni nazw=Dyskusja|nazwa jednostki 2=Dyskusja Wikibooks:Strona|numer jednostki=2}}}} Powyżej dla przykładu podano parametry nie w rodzicu w szablonie, tylko w dziecku, jeśli chodzi o parametry nazw przestrzeni nazw i nazw jednostek, ale ich się za to nie powinno podawać w tych ramach, tylko w szablonach, w których wywoływane są te ramki pudełek {{Code|{{m|Pudełko}}}}, ale tak tutaj tak zrobiono by było najłatwiej sprawdzić działanie tego typu funkcji. Analogicznie możemy podawać parametry typu jednostki, np.: wywołaniu modułowym {{Code|{{m|Pudełko|Nazwa przedmiotowej przestrzeni nazw 2|typ jednostki 2{{=}}Podręcznik|nazwa jednostki 2{{=}}Dyskusja szablonu:Strona|numer jednostki{{=}}2}}}} (ale wtedy jest brana przestrzeń nazw z nazwy jednostki), ale o tym więcej w rozdziałach {{Code|{{sr|# p["Typ jednostki"](frame,i)|p=Pudełko}}}}, {{Code|{{sr|#p["Typ jednostki 2"](frame,i)|p=Pudełko}}}}, {{Code|{{sr|#p["Typ jednostki 3"](frame,i)|p=Pudełko}}}} itp. w „{{sr|#Funkcje typu jednostki|p=Pudełko}}”, on definiuje przestrzenie przedmiotowe, ale można użyć parametru dyskusji typu jednostki z wartością niepustą, wtedy wyświetli się nazwa przestrzeni nazw dyskusji. Jeżeli typ jednostki wskazuje na przestrzeń nazw główną, wtedy się liczą parametry nazw jednostek. Również parametry typu jednostki nie powinno się podawać w dziecku w ramce, tylko w rodzicu w szablonie jako parametry, w którym ta ramka jest wywoływana, ale tutaj podano jedynie dla przykładu, jak najłatwiej sprawdzić działanie tych parametrów tej funkcji. Najpierw w funkcji nagłówku brane są parametry nazw przestrzeni nazw, a jeżeli ich nie ma, to parametry typu jednostki, a jeżeli nie ma lub parametry przestrzenne wskazują na przestrzeń główną, i nie ma nazwy jednostki, to generowane są nazwy tej funkcji na podstawie aktualnej strony. === {{Code|p["Nazwa przestrzeni nazw dyskusji 2"](frame,...)}} === == Funkcje pełnych nazw jednostki == === {{Code|p["Pełna nazwa dyskusji jednostki"](frame,i)}} === === {{Code|p["Pełna nazwa przedmiotowa jednostki"](frame,i)}} === === {{Code|p["Pełna nazwa jednostki"](frame,i)}} === == Funkcje pełnych nazw jednostki drugiej wersji == === {{Code|p["Pełna nazwa dyskusji jednostki 2"](frame,i)}} === === {{Code|p["Pełna nazwa przedmiotowa jednostki 2"](frame,i)}} === === {{Code|p["Pełna nazwa jednostki 2"](frame,i)}} === == Funkcje pełnych nazw jednostki trzeciej wersji == === {{Code|p["Pełna nazwa dyskusji jednostki 3"](frame,i)}} === === {{Code|p["Pełna nazwa przedmiotowa jednostki 3"](frame,i)}} === === {{Code|p["Pełna nazwa jednostki 3"](frame,i)}} === == Funkcje nazw jednostki == === {{Code|p["Nazwa jednostki"](frame,i)}} === == Funkcje nazw jednostki drugiej wersji == === {{Code|p["Nazwa jednostki 2"](frame,i)}} === === {{Code|p["Nazwa przedmiotowa jednostki 2"](frame,i)}} === === {{Code|p["Nazwa dyskusji jednostki 2"](frame,i)}} === == Funkcje nazw przestrzeni nazw trzeciej wersji == === {{Code|p["Nazwa przestrzeni nazw 3"](frame,i)}} === === {{Code|p["Nazwa przedmiotowej przestrzeni nazw 3"](frame,i)}} === === {{Code|p["Nazwa przestrzeni nazw dyskusji 3"](frame,i)}} === == Funkcje nazw jednostki trzeciej wersji == === {{Code|p["Nazwa jednostki 3"](frame,i)}} === === {{Code|p["Nazwa przedmiotowa jednostki 3"](frame,i)}} === === {{Code|p["Nazwa dyskusji jednostki 3"](frame,i)}} === == Funkcje typu jednostki == === {{Code|p["Typ jednostki"](frame,i)}} === === {{Code|p["Typ jednostki 2"](frame,i)}} === === {{Code|p["Typ jednostki 3"](frame,i)}} === === Funkcje typu jednostki przedmiotowe === ==== {{Code|p["Przedmiotowy typ jednostki"](frame,i)}} ==== ==== {{Code|p["Przedmiotowy typ jednostki 2"](frame,i)}} ==== ==== {{Code|p["Przedmiotowy typ jednostki 3"](frame,i)}} ==== === Fukcje typu jednostki dyskusji === ==== {{Code|p["Dyskusyjny typ jednostki"](frame,i)}} ==== ==== {{Code|p["Dyskusyjny typ jednostki 2"](frame,i)}}} ==== ==== {{Code|p["Dyskusyjny typ jednostki 3"](frame,i)}} ==== == Funkcje chech pudełka == === {{Code|p["Cecha pudełka"](frame)}} === === {{Code|p["Przedmiotowa cecha pudełka"](frame)}} === === {{Code|p["Dyskusyjna cecha pudełka"](frame)}} === == Fukcje ogólnego pudełka == === {{Code|p["Ogólne pudełko"](frame)}} === == Funkcje ogólne == === {{Code|p["Tekst pudełka"](frame)}} === == Funkcje błędów pudełka == === {{Code|p["Błędy pudełka"](frame)}} === === {{Code|p["Przedmiotowe błędy pudełka"](frame)}} === === {{Code|p["Dyskusyjne błędy pudełka"](frame)}} === == Funkcje nazw stron == === {{Code|p["Nazwa strony głównej projektu"](frame,i)}} === === {{Code|p["Nazwa strony głównej dla dzieci projektu"](frame,i)}} === == Funkcje kodów == === {{Code|p["Kod języka"](frame,i)}} === === {{Code|p["Kod projektu"](frame,i)}} === === {{Code|p["Klucz projektu"](frame,i)}} === == Funkcje wiki == === {{Code|p["Inny niż język bieżący wiki"](frame)}} === === {{Code|p["Inne niż lokalne wiki"](frame)}} === === {{Code|p["Inne niż bieżące wiki"](frame)}} === == Funkcje typów parametrów, czy podane je == === {{Code|p["Podano parametry nienazwane"](frame)}} === === {{Code|p["Podano parametry numerowane"](frame)}} === === {{Code|p["Podano parametry nazwane"](frame)}} === == Funkcje kodów tego projektu == === {{Code|p["Kod projektu tego projektu"](frame)}} === === {{Code|p["Kod języka tego projektu"](frame)}} === === {{Code|p["Klucz projektu tego projektu"](frame)}} === == Funkcje stron == === {{Code|p["Strona główna tego projektu"](frame)}} === === {{Code|p["Strona główna dla dzieci tego projektu"](frame)}} === == Funkcje nazw stron drugiej wersji == === {{Code|p["Nazwa strony głównej dla dzieci projektu 2"](frame)}} === === {{Code| p["Nazwa strony głównej projektu 2"](frame)}} === {{BrClear}} <noinclude><!-- -->{{ProstaStronaKoniec}}<!-- -->{{Kategoria|Opisy funkcji, w Lua w Scribunto, w modułach}}<!-- --></noinclude> brzyn9ljk1cqkfz1opp1jag561wdmjr 540399 540392 2026-04-23T16:11:18Z Persino 2851 /* {{Code|p["Dyskusyjny typ jednostki 2"](frame,i)}}} */ 540399 wikitext text/x-wiki <noinclude>{{ProstaStronaStart | nagłówek = {{Podrozdział|{{ld2|Pudełko}}|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 pudelko_modul=require("Module:Pudełko"); </syntaxhighlight> dzięki, któremu można wypisywać funkcje należącego do niego. Posługuje się na parametrach pudełkowych {{Parametr|nazwa przestrzeni nazw}} (czy też bez numerka {{Parametr|nazwa przestrzeni nazw i}} dla tego numerowanego) lub te z numerkiem po jednej spacji w nich (ale nie dla tego z końcówką {{Code| i}}) mogą zostać użyte jako parametry szablonu. Moduł {{Code|{{ld2|Pudełko}}}} przedstawia funkcje nazw w oparciu o funkcje nazw {{Code|{{ld2|Nazwy}}}}, generuje on nazwy za pomocą parametrów pudełkowych podanych poniżej. Parametr {{Parametr|nazwa jednostki}} (lub parametr {{Parametr|cel}} dla numerka tego pierwszego, tego alternatywnego), lub te z numerkiem po jednej spacji w nazwie parametru, albo numerowane numerkami {{Code|1}}, {{Code|2}},..., mogą zostać użyte jako parametry szablonu. Parametry określające rodzaj jednostki {{Parametr|typ jednostki}} z {{Parametr|dyskusja typu jednostki}}, itp. w wersjach z numerkiem po jednej spacji w nich mogą zostać użyte jako parametry szablonu. A te tymi numerowanymi liczbami naturalnymi {{Tt|nazwy jednostki}} od jedynki wzwyż poprzez szablon, w którym są one użyte, one też mogą być użyte z dwukropkiem, te numerowane, na samym początku nazwy, wtedy one są traktowane jako pełne nazwy strony, i wtedy one nie zostaną z interpretowane, że do nich trzeba użyć parametr odpowiedni z nazwą przetrzeni nazw z tego numerowanego, czy ogólny, aby utworzyć znów inną pełną nazwę strony dla tego numerka. Zestawienie: * {{Code|nazwa przestrzeni nazw}} i {{Code|nazwa przestrzeni nazw i}} (ogólna nazwa przestrzeni nazw dla wszystkich numerków, i tych numerowanych jednostek) - i to pierwsze z numerkiem, tzn. {{Code|nazwa przestrzeni nazw 1}}, {{Code|nazwa przestrzeni nazw 2}}, ..., * {{Code|nazwa jednostki}} - i te z numerkiem: {{Code|nazwa jednostki 1}}, {{Code|nazwa jednostki 2}}, ..., lub gdy jest zamiast tego parametrem numerowany, {{Code|1}}, {{Code|2}},..., który dla tego pierwszego może być uznany jako: {{Code|cel}} {{=}} {{Code|1}}, * {{Code|typ jednostki}} (parametr bazowy) i {{Code|typ jednostki i}} (parametr domyślny numerkowy) - i te z numerkiem: {{Code|typ jednostki 1}}, {{Code|typ jednostki 2}}, ..., tzn. gdy chcemy określić z jakim typem jednostki mamy do czynienia w zależności do jakiej przestrzeni nazw należy, a w danej, czy jest on np. programowy, czy tylko jest opisem, jak to bywa w szablonach {{Np|Template|link=tak}}, podobnie jest w przypadku {{Np|Module|link=tak}}, czy jak jest w innych przestrzeniach nazw, ** {{Code|dyskusja typu jednostki}} (parametr bazowy) i {{Code|dyskusja typu jednostki i}} (parametr domyślny numerkowy) - i te z numerkiem: {{Code|dyskusja typu jednostki 1}}, {{Code|dyskusja typu jednostki 2}}, ..., gdy chcemy określić wartością niepustą,że chodzi tutaj o typ jednostki. == {{Code|p.CzyNiepoprawnaNazwa(nazwa_jednostki)}} == Funkcja sprawdzajaca, czy jest poprawnie podana nazwa jednostki, czy ma poprawną nazwę. Znakami tymi, z których nie powinna składać się nazwa jest {{Code|<nowiki>{}<>|[]#\n</nowiki>}} i dodatkowo znak {{Code|&#127;}} (kod {{Code|{{Nowiki|&#127;}}}}). Też nie może składać się z trzech znaków tyldy, tzn. {{Code|<nowiki>~~~</nowiki>}}. Również w swojej budowie nie może składać się ze kodów {{Strong|HTML}} literowych o wzorze {{Code|{{Nowiki|&(%a+);}}}}. Natomiast może składać się z {{Code|{{Nowiki|&#(%d+);}}}} i {{Code|{{Nowiki|&#x(%x+);}}}}, ale w pierw te kody muszą być zamienione na normalne znaki. Skrótowa definicja funkcji: <syntaxhighlight lang="lua"> function p.CzyNiepoprawnaNazwa(nazwa_jednostki)...end; </syntaxhighlight> Wtedy ciało funkcji tej, czyli jego definicja w środku, jest: <syntaxhighlight lang="lua"> -- Moduł: "Moduł:Html/dane", służy do ładowania znaku o kodzie HTML "&#127;"; local html_dane_modul=mw.loadData("Module:Html/dane"); return mw.ustring.match(nazwa_jednostki,"[{}<>|%[%]#\n"..html_dane_modul.znak_127.."]+") or mw.ustring.match(nazwa_jednostki,"~~~") or mw.ustring.match(nazwa_jednostki,"&(%a+);"); </syntaxhighlight> Parametry: * {{Code|nazwa_jednostki}} - nazwa jednostki do sprawdzenia. Przykłady: <syntaxhighlight lang="lua"> local pudelko_modul=require("Module:Pudełko"); -- Podana przykładowa niepoprawna nazwa jedostki local nazwa_jednostki="Nazwa pliku [[Nazwa linku w pliku]]"; -- Fukcja zwróci wartość: local czy_poprawna_nazwa=true; local czy_poprawna_nazwa=pudelko_modul.CzyNiepoprawnaNazwa(nazwa_jednostki); </syntaxhighlight> == Funkcje nazw przestrzeni nazw == === {{Code|p["Nazwa przestrzeni nazw"](frame,...)}} === Funkcja pisze nazwę przestrzeni nazw, niezależnie, czy to jest przedmiotowa, czy dyskusji, według podanej w zmiennej {{Code|nazwa przestrzeni nazw}} dla pozycja bazowej w podanych parametrach szablonu rodzicu ramki dziecka, lub dla innej pozycji należy parametr podawać w formie {{Code|nazwa przestrzeni nazw 1}}, {{Code|nazwa przestrzeni nazw 2}}, {{Code|nazwa przestrzeni nazw 3}},..., lub te parametry można podać w postaci ogólnej {{Code|nazwa przestrzeni nazw i}}. Parametry podaje się w parametrach rodzica wywołania tej funkcji {{Code|{{m|Pudełko|Nazwa przestrzeni nazw}}}} (ale ich nie trzeba podawać w dziecku, ale można) i w parametrach dziecka, jeśli chodzi o zmienną {{Code|numer jednostki}}, czyli np.: {{Code|{{m|Pudełko|Nazwa przestrzeni nazw|numer jednostki{{=}}<jakaś liczba całkowita dodatnia>}}}}. Te parametry przestrzenne zamiast w rodzicu w szablonie można podać w ramce dziecka, wtedy parametry dziecka mają pierwszeństwo. Przestrzeń nazw z parametrów nazw przestrzennych może odpowiadać wartości przestrzeni głównej, to wtedy odpowiednia przestrzeń nazw z parametru nazwy jednostki się nie liczy w tej funkcji, aby się liczyła należy użyć funkcji {{Code|{{sr|#p["Nazwa przestrzeni nazw 2"](frame,...)|p=Pudełko}}}}. Definicja skrótowa funkcji: <syntaxhighlight lang="lua"> p["Nazwa przestrzeni nazw"]=function(frame,czy_uwzglednic_alternatywna_nazwe,i)...end; </syntaxhighlight> Wtedy ciało funkcji tej, czyli jego definicja w środku, jest: <syntaxhighlight lang="lua"> -- Jest liczony numer parametru nazwy przestrzeni nazw, domyslnie chodzi tu o numer bazowy parametrów przestrzennych; local numer_jednostki=i or frame.args["numer jednostki"]; local liczba_numer_jednostki=((numer_jednostki)and(tonumber(numer_jednostki))or 0); local pudelko_pomocne_modul=require("Module:Pudełko/Pomocne"); -- Liczy nazwę przestrzeni nazw na podstawie podanych parametrów; return pudelko_pomocne_modul.Nazwa_przestrzeni_nazw(frame,0, czy_uwzglednic_alternatywna_nazwe,liczba_numer_jednostki); </syntaxhighlight> Parametry funkcji: * {{Code|frame}} - tablica ramki tablicy transportu, * {{Code|czy_uwzglednic_alternatywna_nazwe}} - czy ma uwzględniać nazwę przestrzeni nazw domyślną szablonu, dostępne wartości: {{Code|false}}, w której nazwa domyślna nie jest uwzględniana wtedy, oraz {{Code|nil}} i {{Code|true}}, które oznaczają to samo, w tym jeżeli ona jest uwzględniana, wtedy jest brany parametr pierwszy dziecka, który musi istnieć przy takiej wartości tego parametru, tzn. {{Code|{{m|Pudełko|Nazwa przestrzeni nazw|Szablon}}}}, a nazwa uzyskana nazwy przestrzeni nazw jest w takim przypadku błędna, a jeżeli nazwa domyślna jest błędna, czyli {{Code|{{m|Pudełko|Nazwa przestrzeni nazw|Moja przestrzeń}}}}, wtedy funkcja zwraca stan błędu {{Code|(błąd)}}. * {{Code|i}} - numer zmiennej nazwy przestrzeni nazw. Funkcja wykorzystuje {{Code|{{sr|#p.Nazwa_przestrzeni_nazw(frame,...)|p=Pudełko/Pomocne}}}} do wyznaczania ogólnego nazwy przestrzeni nazw dla pozycji bazowej i numerkowej, tzn. dla pozycji: jeden, dwa, trzy,..., itd, i ich ogólnej. Parametr ramki tablicy transportu rodzica szablonu: * {{Code|nazwa przestrzeni nazw}}, {{Code|nazwa przestrzeni nazw 1}}, {{Code|nazwa przestrzeni nazw 2}}, {{Code|nazwa przestrzeni nazw 3}},..., {{Code|nazwa przestrzeni nazw i}} - nazwy przestrzeni nazw dla pozycji bazowej oraz zwykłej i ogólnej numerkowej, * {{Code|typ jednostki}}, {{Code|typ jednostki 1}}, {{Code|typ jednostki 2}}, {{Code|typ jednostki 3}},..., {{Code|typ jednostki i}} - typy jednostek, którym odpowiadają pewne przestrzenie przedmiotowe, dla pozycji bazowej, numerkowej i ogólnej, ** {{Code|dyskusja typu jednostki}}, {{Code|dyskusja typu jednostki 1}}, {{Code|dyskusja typ jednostki 2}}, {{Code|dyskusja typ jednostki 3}},..., {{Code|dyskusja typ jednostki i}} - czy dany typ jednostki ma przedstawiać, jeśli niepusta, przestrzeń dyskusji dla pozycji bazowej, numerkowej i ogólnej. Parametry ramki tablicy transportu dziecka: * Parametry dziecka są takie same jak rodzica dla funkcji pudełkowej plus tu wymienione, * {{Code|numer jednostki}} - jak parametr {{Code|i}} nie został ustawiony, to wtedy liczy się ta zmienna. Przykłady: <syntaxhighlight lang="mediawiki"> {{Nazwa szablonu|nazwa przestrzeni nazw=Wikibooks|nazwa przestrzeni nazw 2=Szablon|nazwa przestrzeni nazw i=Moduł}} </syntaxhighlight> W dziecku powiedzmy jest wywołanie, i szukamy nazwy przestrzeni nazw o numerze dwa, która nie została podana, ale istnieje za to jej wersji ogólna {{Code|nazwa przestrzeni nazw i}} i domyślna {{Code|nazwa przestrzeni nazw}}: <syntaxhighlight lang="mediawiki"> {{#invoke:Pudełko|Nazwa przestrzeni nazw|numer jednostki=1}} </syntaxhighlight> Na podstawie powyższego przykładu otrzymamy wynik o schemacie, nie wyniku, bo tam nie ma zmiennej {{Code|nazwa przestrzeni nazw 1}}, ale jest {{Code|nazwa przestrzeni nazw i}}: <syntaxhighlight lang="mediawiki"> <!-- Ale nie "nazwa przestrzeni nazw", bo jej nie ma, ale za to istnieje "nazwa przestrzeni nazw i"; --> <!-- nazwa przestrzeni nazw 2=nazwa przestrzeni nazw i=Moduł; --> <!-- Czyli wynik: --> Moduł <!-- Widzimy, że wygenerowała się nazwa przestrzeni nazw, którą jest przestrzeń programowa, którą również jest "Szablon"; --> </syntaxhighlight> Nie jest brana w tym powyższym przykładzie zmienna {{Code|nazwa przestrzeni nazw}}, bo jej nie ma, ale za to jest {{Code|nazwa przestrzeni nazw i}}, bo ona występuje jako parametr domyślny ogólny dla parametrów numerkowych. Przykłady w wikikodzie: * {{Code|{{m|Pudełko|Nazwa przestrzeni nazw|numer jednostki{{=}}2}}}} → {{Tt|{{#invoke:Pudełko|Nazwa przestrzeni nazw|numer jednostki=2}}}} * {{Code|{{m|Pudełko|Nazwa przestrzeni nazw|Szablon|nazwa przestrzeni nazw i{{=}}Moja przestrzeń|numer jednostki{{=}}2}}}} → {{Tt|{{#invoke:Pudełko|Nazwa przestrzeni nazw|Szablon|nazwa przestrzeni nazw i=Moja przestrzeń|numer jednostki=2}}}} * {{Code|{{m|Pudełko|Nazwa przestrzeni nazw|nazwa przestrzeni nazw 2{{=}}Szablon|numer jednostki{{=}}2}}}} → {{Tt|{{#invoke:Pudełko|Nazwa przestrzeni nazw|nazwa przestrzeni nazw 2=Szablon|numer jednostki=2}}}} * {{Code|{{m|Pudełko|Nazwa przestrzeni nazw|nazwa przestrzeni nazw 2{{=}}Szablon|numer jednostki{{=}}2}}}} → {{Tt|{{#invoke:Pudełko|Nazwa przestrzeni nazw|nazwa przestrzeni nazw i=Szablon|numer jednostki=2}}}} * {{Code|{{m|Pudełko|Nazwa przestrzeni nazw|nazwa przestrzeni nazw{{=}}Szablon|numer jednostki{{=}}2}}}} → {{Tt|{{#invoke:Pudełko|Nazwa przestrzeni nazw|nazwa przestrzeni nazw=Szablon|numer jednostki=2}}}} Powyżej dla przykładu podano parametry nie w rodzicu w szablonie, tylko w dziecku, jeśli chodzi o parametry nazw przestrzeni nazw, ale ich się za to nie powinno podawać w tych ramach, tylko w szablonach, w których wywoływane są te ramki pudełek {{Code|{{m|Pudełko}}}}, ale tak tutaj tak zrobiono by było najłatwiej sprawdzić działanie tego typu funkcji. Analogicznie możemy podawać parametry typu jednostki, np.: wywołaniu modułowym {{Code|{{m|Pudełko|Nazwa przestrzeni nazw|typ jednostki 2{{=}}strona szablonu|numer jednostki{{=}}2}}}}, ale o tym więcej w rozdziałach {{Code|{{sr|# p["Typ jednostki"](frame,i)|p=Pudełko}}}}, {{Code|{{sr|#p["Typ jednostki 2"](frame,i)|p=Pudełko}}}}, {{Code|{{sr|#p["Typ jednostki 3"](frame,i)|p=Pudełko}}}} itp. w „{{sr|#Funkcje typu jednostki|p=Pudełko}}”, on definiuje przestrzenie przedmiotowe, ale można użyć parametru dyskusji typu jednostki z wartością niepustą, wtedy wyświetli się nazwa przestrzeni nazw dyskusji. Również parametry typu jednostki nie powinno się podawać w dziecku w ramce, tylko w rodzicu w szablonie jako parametry, w którym ta ramka jest wywoływana, ale tutaj podano jedynie dla przykładu, jak najłatwiej sprawdzić działanie tych parametrów tej funkcji. Najpierw w funkcji nagłówku brane są parametry nazw przestrzeni nazw, a jeżeli ich nie ma, to parametry typu jednostki, a jeżeli nie ma, to generowane są nazwy na podstawie aktualnego modułu. === {{Code|p["Nazwa przedmiotowej przestrzeni nazw"](frame,...)}} === Funkcja pisze przedmiotową nazwę przestrzeni nazw jakikolwiek nazwy przestrzeni nazw (tzn. nazwę przedmiotową nazwy przestrzenie nazw, czyli nie dyskusji, zamieniana jest na nią samą, czyli identyfikator przestrzeni się nie zmienia, a dyskusji, nie przedmiotową, przekształca się na przedmiotową jej odpowiadającą, czyli w tym przypadku identyfikator przestrzeni zmniejsza się o numer mniej), według podanej w zmiennej {{Code|nazwa przestrzeni nazw}} dla pozycja bazowej w podanych parametrach szablonu rodzicu ramki dziecka, lub dla innej pozycji należy parametr podawać w formie {{Code|nazwa przestrzeni nazw 1}}, {{Code|nazwa przestrzeni nazw 2}}, {{Code|nazwa przestrzeni nazw 3}},..., lub te parametry można podać w postaci ogólnej {{Code|nazwa przestrzeni nazw i}}. Parametry podaje się w parametrach rodzica wywołania tej funkcji {{Code|{{m|Pudełko|Nazwa przedmiotowej przestrzeni nazw}}}} (ale ich nie trzeba podawać w dziecku, ale można) i w parametrach dziecka, jeśli chodzi o zmienną {{Code|numer jednostki}}, czyli np.: {{Code|{{m|Pudełko|Nazwa przedmiotowej przestrzeni nazw|numer jednostki{{=}}<jakaś liczba całkowita dodatnia>}}}}. Te parametry przestrzenne zamiast w rodzicu w szablonie można podać w ramce dziecka, wtedy parametry dziecka mają pierwszeństwo. Parametry przestrzenne mogą mogą być podane w postaci przestrzeni przedmiotowej lub dyskusji, ale ta funkcja zawsze ją zamienia na przedmiotową. Przestrzeń nazw z parametrów nazw przestrzennych może odpowiadać wartości przestrzeni głównej, to wtedy odpowiednia przestrzeń nazw z parametru nazwy jednostki się nie liczy w tej funkcji, aby się liczyła należy użyć funkcji {{Code|{{sr|#p["Nazwa przedmiotowej przestrzeni nazw 2"](frame,...)|p=Pudełko}}}}. Definicja skrótowa funkcji: <syntaxhighlight lang="lua"> p["Nazwa przedmiotowej przestrzeni nazw"]=function(frame,czy_uwzglednic_alternatywna_nazwe,i)...end; </syntaxhighlight> Wtedy ciało funkcji tej, czyli jego definicja w środku, jest: <syntaxhighlight lang="lua"> -- Jest liczony numer parametru nazwy przestrzeni nazw, domyslnie chodzi tu o numer bazowy parametrów przestrzennych; local numer_jednostki=i or frame.args["numer jednostki"]; local liczba_numer_jednostki=((numer_jednostki)and(tonumber(numer_jednostki))or 0); local pudelko_pomocne_modul=require("Module:Pudełko/Pomocne"); -- Liczy nazwę przestrzeni nazw przedmiotową na podstawie podanych parametrów; return pudelko_pomocne_modul.Nazwa_przestrzeni_nazw(frame,1, czy_uwzglednic_alternatywna_nazwe,liczba_numer_jednostki); </syntaxhighlight> Parametry funkcji: * {{Code|frame}} - tablica ramki tablicy transportu, * {{Code|czy_uwzglednic_alternatywna_nazwe}} - czy ma uwzględniać nazwę przestrzeni nazw domyślną szablonu, dostępne wartości: {{Code|false}}, w której nazwa domyślna nie jest uwzględniana wtedy, oraz {{Code|nil}} i {{Code|true}}, które oznaczają to samo, w tym jeżeli ona jest uwzględniana, wtedy jest brany parametr pierwszy dziecka, który musi istnieć przy takiej wartości tego parametru, tzn. {{Code|{{m|Pudełko|Nazwa przedmiotowej przestrzeni nazw|Dyskusja szablonu}}}} - ta nazwa domyślna zostanie zamieniona na przedmiotową, a jak ona by była przedmiotowa, to żadnej zamiany by nie było, a nazwa uzyskana z nazwy przestrzeni nazw z parametrów przestrzennych jest w takim przypadku błędna, to w takim razie brany jest ten parametr, a jeżeli ta nazwa domyślna jest błędna, czyli {{Code|{{m|Pudełko|Nazwa przedmiotowej przestrzeni nazw|Moja przestrzeń}}}}, wtedy funkcja zwraca stan błędu {{Code|(błąd)}}. * {{Code|i}} - numer zmiennej nazwy przestrzeni nazw. Funkcja wykorzystuje {{Code|{{sr|#p.Nazwa_przestrzeni_nazw(frame,...)|p=Pudełko/Pomocne}}}} do wyznaczania ogólnego nazwy przestrzeni nazw dla pozycji bazowej i numerkowej, tzn. dla pozycji: jeden, dwa, trzy,..., itd, i ich ogólnej. Parametr ramki tablicy transportu rodzica szablonu: * {{Code|nazwa przestrzeni nazw}}, {{Code|nazwa przestrzeni nazw 1}}, {{Code|nazwa przestrzeni nazw 2}}, {{Code|nazwa przestrzeni nazw 3}},..., {{Code|nazwa przestrzeni nazw i}} - nazwy przestrzeni nazw dla pozycji bazowej oraz zwykłej i ogólnej numerkowej, * {{Code|typ jednostki}}, {{Code|typ jednostki 1}}, {{Code|typ jednostki 2}}, {{Code|typ jednostki 3}},..., {{Code|typ jednostki i}} - typy jednostek, którym odpowiadają pewne przestrzenie przedmiotowe, dla pozycji bazowej, numerkowej i ogólnej. Parametry ramki tablicy transportu dziecka: * Parametry dziecka są takie same jak rodzica dla funkcji pudełkowej plus tu wymienione, * {{Code|numer jednostki}} - jak parametr {{Code|i}} nie został ustawiony, to wtedy liczy się ta zmienna. Przykłady: <syntaxhighlight lang="mediawiki"> {{Nazwa szablonu|nazwa przestrzeni nazw=Dyskusja Wikibooks|nazwa przestrzeni nazw 2=Dyskusja szablonu|nazwa przestrzeni nazw i=Dyskusja modułu}} </syntaxhighlight> W dziecku powiedzmy jest wywołanie, i szukamy nazwy przestrzeni nazw o numerze dwa, która nie została podana, ale istnieje za to jej wersji ogólna {{Code|nazwa przestrzeni nazw i}} i domyślna {{Code|nazwa przestrzeni nazw}}: <syntaxhighlight lang="mediawiki"> {{#invoke:Pudełko|Nazwa przedmiotowej przestrzeni nazw|numer jednostki=1}} </syntaxhighlight> Na podstawie powyższego przykładu otrzymamy wynik o schemacie, nie wyniku, bo tam nie ma zmiennej {{Code|nazwa przestrzeni nazw 1}}, ale jest {{Code|nazwa przestrzeni nazw i}}: <syntaxhighlight lang="mediawiki"> <!-- Ale nie "nazwa przestrzeni nazw", bo jej nie ma, ale za to istnieje "nazwa przestrzeni nazw i"; --> <!-- nazwa przestrzeni nazw 2=nazwa przestrzeni nazw i=Dyskusja modułu; --> <!-- Czyli wynik: --> Moduł <!-- Widzimy, że wygenerowała się nazwa przestrzeni nazw, którą jest przestrzeń przedmiotowa programowa przestrzeni dyskusji "Dyskusja modułu", którą również jest "Szablon" jego przestrzeni dyskusji "Dyskusja szablonu", a dla ich przestrzeni przedmiotowej, zamiast dyskusji, to samo przekształca się na to samo; --> </syntaxhighlight> Nie jest brana w tym powyższym przykładzie zmienna {{Code|nazwa przestrzeni nazw}}, bo jej nie ma, ale za to jest {{Code|nazwa przestrzeni nazw i}}, bo ona występuje jako parametr domyślny ogólny dla parametrów numerkowych. Przykłady w wikikodzie: * {{Code|{{m|Pudełko|Nazwa przedmiotowej przestrzeni nazw|numer jednostki{{=}}2}}}} → {{Tt|{{#invoke:Pudełko|Nazwa przedmiotowej przestrzeni nazw|numer jednostki=2}}}} * {{Code|{{m|Pudełko|Nazwa przedmiotowej przestrzeni nazw|Dyskusja szablonu|nazwa przestrzeni nazw i{{=}}Moja przestrzeń|numer jednostki{{=}}2}}}} → {{Tt|{{#invoke:Pudełko|Nazwa przedmiotowej przestrzeni nazw|Dyskusja szablonu|nazwa przestrzeni nazw i=Moja przestrzeń|numer jednostki=2}}}} * {{Code|{{m|Pudełko|Nazwa przedmiotowej przestrzeni nazw|nazwa przestrzeni nazw 2{{=}}Dyskusja szablonu|numer jednostki{{=}}2}}}} → {{Tt|{{#invoke:Pudełko|Nazwa przedmiotowej przestrzeni nazw|nazwa przestrzeni nazw 2=Dyskusja szablonu|numer jednostki=2}}}} * {{Code|{{m|Pudełko|Nazwa przedmiotowej przestrzeni nazw|nazwa przestrzeni nazw 2{{=}}Dyskusja szablonu|numer jednostki{{=}}2}}}} → {{Tt|{{#invoke:Pudełko|Nazwa przedmiotowej przestrzeni nazw|nazwa przestrzeni nazw i=Dyskusja szablonu|numer jednostki=2}}}} * {{Code|{{m|Pudełko|Nazwa przedmiotowej przestrzeni nazw|nazwa przestrzeni nazw{{=}}Dyskusja szablonu|numer jednostki{{=}}2}}}} → {{Tt|{{#invoke:Pudełko|Nazwa przedmiotowej przestrzeni nazw|nazwa przestrzeni nazw=Dyskusja szablonu|numer jednostki=2}}}} Powyżej dla przykładu podano parametry nie w rodzicu w szablonie, tylko w dziecku, jeśli chodzi o parametry nazw przestrzeni nazw, ale ich się za to nie powinno podawać w tych ramach, tylko w szablonach, w których wywoływane są te ramki pudełek {{Code|{{m|Pudełko}}}}, ale tak tutaj tak zrobiono by było najłatwiej sprawdzić działanie tego typu funkcji. Analogicznie możemy podawać parametry typu jednostki, np.: wywołaniu modułowym {{Code|{{m|Pudełko|Nazwa przedmiotowej przestrzeni nazw|typ jednostki 2{{=}}strona szablonu|numer jednostki{{=}}2}}}}, ale o tym więcej w rozdziałach {{Code|{{sr|# p["Typ jednostki"](frame,i)|p=Pudełko}}}}, {{Code|{{sr|#p["Typ jednostki 2"](frame,i)|p=Pudełko}}}}, {{Code|{{sr|#p["Typ jednostki 3"](frame,i)|p=Pudełko}}}} itp. w „{{sr|#Funkcje typu jednostki|p=Pudełko}}”, ale wtedy ta sama nazwa przestrzeni nazw reprezentowana przez {{Parametr|typ jednostki 2|strona szablonu}}, jest zamieniana na to samo, lepiej jest tutaj używać parametrów przestrzennych nazw niż typu jednostki, bo typ jednostki ma taką samą wartość dla przestrzeni przedmiotowej, co dyskusji. Tutaj parametr dyskusji typu jednostki bazowy i numerkowy ogólny, czy szczegółowy, nie gra roli, bo nawet, gdy wygenerujemy nazwę przestrzeni dyskusji za pomoca tego parametru, to i tak otrzymamy na samym końcu jego nazwę przedmiotową. Również parametry typu jednostki nie powinno się podawać w dziecku w ramce, tylko w rodzicu w szablonie jako parametry, w którym ta ramka jest wywoływana, ale tutaj podano jedynie dla przykładu, jak najłatwiej sprawdzić działanie tych parametrów tej funkcji. Najpierw w funkcji nagłówku brane są parametry nazw przestrzeni nazw, a jeżeli ich nie ma, to parametry typu jednostki, a jeżeli nie ma, to generowane są nazwy na podstawie aktualnego modułu. === {{Code|p["Nazwa przestrzeni nazw dyskusji"](frame,...)}} === Funkcja pisze nazwę przestrzeni nazw dyskusji jakikolwiek nazwy przestrzeni nazw (tzn. nazwę przedmiotową nazwy przestrzenie nazw, czyli nie dyskusji, zamieniana jest na dyskusji, czyli identyfikator przestrzeni się zmienia jeden wyżej, a dyskusji, nie przedmiotową, przekształca się na tą samą), według podanej w zmiennej {{Code|nazwa przestrzeni nazw}} dla pozycja bazowej w podanych parametrach szablonu rodzicu ramki dziecka, lub dla innej pozycji należy parametr podawać w formie {{Code|nazwa przestrzeni nazw 1}}, {{Code|nazwa przestrzeni nazw 2}}, {{Code|nazwa przestrzeni nazw 3}},..., lub te parametry można podać w postaci ogólnej {{Code|nazwa przestrzeni nazw i}}. Parametry podaje się w parametrach rodzica wywołania tej funkcji {{Code|{{m|Pudełko|Nazwa przestrzeni nazw dyskusji}}}} (ale ich nie trzeba podawać w dziecku, ale można) i w parametrach dziecka, jeśli chodzi o zmienną {{Code|numer jednostki}}, czyli np.: {{Code|{{m|Pudełko|Nazwa przestrzeni nazw dyskusji|numer jednostki{{=}}<jakaś liczba całkowita dodatnia>}}}}. Te parametry przestrzenne zamiast w rodzicu w szablonie można podać w ramce dziecka, wtedy parametry dziecka mają pierwszeństwo. Parametry przestrzenne mogą mogą być podane w postaci przestrzeni przedmiotowej lub dyskusji, ale ta funkcja zawsze ją zamienia na dyskusji. Przestrzeń nazw z parametrów nazw przestrzennych może odpowiadać wartości przestrzeni głównej, to wtedy odpowiednia przestrzeń nazw z parametru nazwy jednostki się nie liczy w tej funkcji, aby się liczyła należy użyć funkcji {{Code|{{sr|#p["Nazwa przestrzeni nazw dyskusji 2"](frame,...)|p=Pudełko}}}}. Definicja skrótowa funkcji: <syntaxhighlight lang="lua"> p["Nazwa przestrzeni nazw dyskusji"]=function(frame,czy_uwzglednic_alternatywna_nazwe,i)...end; </syntaxhighlight> Wtedy ciało funkcji tej, czyli jego definicja w środku, jest: <syntaxhighlight lang="lua"> -- Jest liczony numer parametru nazwy przestrzeni nazw, domyslnie chodzi tu o numer bazowy parametrów przestrzennych; local numer_jednostki=i or frame.args["numer jednostki"]; local liczba_numer_jednostki=((numer_jednostki)and(tonumber(numer_jednostki))or 0); local pudelko_pomocne_modul=require("Module:Pudełko/Pomocne"); -- Liczy nazwę przestrzeni nazw dyskusji na podstawie podanych parametrów; return pudelko_pomocne_modul.Nazwa_przestrzeni_nazw(frame,2, czy_uwzglednic_alternatywna_nazwe,liczba_numer_jednostki); </syntaxhighlight> Parametry funkcji: * {{Code|frame}} - tablica ramki tablicy transportu, * {{Code|czy_uwzglednic_alternatywna_nazwe}} - czy ma uwzględniać nazwę przestrzeni nazw domyślną szablonu, dostępne wartości: {{Code|false}}, w której nazwa domyślna nie jest uwzględniana wtedy, oraz {{Code|nil}} i {{Code|true}}, które oznaczają to samo, w tym jeżeli ona jest uwzględniana, wtedy jest brany parametr pierwszy dziecka, który musi istnieć przy takiej wartości tego parametru, tzn. {{Code|{{m|Pudełko|Nazwa przestrzeni nazw dyskusji|Szablon}}}} - ta nazwa domyślna zostanie przekształcona na dyskusji, a jeżeli ona by była dyskusji, to nie byłoby żadnego przekształcenia, a nazwa uzyskana nazwy przestrzeni nazw z parametrów przestrzennych jest w takim przypadku błędna, to w takim razie brany jest ten parametr, a jeżeli nazwa domyślna jest błędna, czyli {{Code|{{m|Pudełko|Nazwa przestrzeni nazw dyskusji|Moja przestrzeń}}}}, wtedy funkcja zwraca stan błędu {{Code|(błąd)}}. * {{Code|i}} - numer zmiennej nazwy przestrzeni nazw. Funkcja wykorzystuje {{Code|{{sr|#p.Nazwa_przestrzeni_nazw(frame,...)|p=Pudełko/Pomocne}}}} do wyznaczania ogólnego nazwy przestrzeni nazw dla pozycji bazowej i numerkowej, tzn. dla pozycji: jeden, dwa, trzy,..., itd, i ich ogólnej. Parametr ramki tablicy transportu rodzica szablonu: * {{Code|nazwa przestrzeni nazw}}, {{Code|nazwa przestrzeni nazw 1}}, {{Code|nazwa przestrzeni nazw 2}}, {{Code|nazwa przestrzeni nazw 3}},..., {{Code|nazwa przestrzeni nazw i}} - nazwy przestrzeni nazw dla pozycji bazowej oraz zwykłej i ogólnej numerkowej, * {{Code|typ jednostki}}, {{Code|typ jednostki 1}}, {{Code|typ jednostki 2}}, {{Code|typ jednostki 3}},..., {{Code|typ jednostki i}} - typy jednostek, którym odpowiadają pewne przestrzenie przedmiotowe, dla pozycji bazowej, numerkowej i ogólnej. Parametry ramki tablicy transportu dziecka: * Parametry dziecka są takie same jak rodzica dla funkcji pudełkowej plus tu wymienione, * {{Code|numer jednostki}} - jak parametr {{Code|i}} nie został ustawiony, to wtedy liczy się ta zmienna. Przykłady: <syntaxhighlight lang="mediawiki"> {{Nazwa szablonu|nazwa przestrzeni nazw=Wikibooks|nazwa przestrzeni nazw 2=Szablon|nazwa przestrzeni nazw i=Moduł}} </syntaxhighlight> W dziecku powiedzmy jest wywołanie, i szukamy nazwy przestrzeni nazw o numerze dwa, która nie została podana, ale istnieje za to jej wersji ogólna {{Code|nazwa przestrzeni nazw i}} i domyślna {{Code|nazwa przestrzeni nazw}}: <syntaxhighlight lang="mediawiki"> {{#invoke:Pudełko|Nazwa przestrzeni nazw dyskusji|numer jednostki=1}} </syntaxhighlight> Na podstawie powyższego przykładu otrzymamy wynik o schemacie, nie wyniku, bo tam nie ma zmiennej {{Code|nazwa przestrzeni nazw 1}}, ale jest {{Code|nazwa przestrzeni nazw i}}: <syntaxhighlight lang="mediawiki"> <!-- Ale nie "nazwa przestrzeni nazw", bo jej nie ma, ale za to istnieje "nazwa przestrzeni nazw i"; --> <!-- nazwa przestrzeni nazw 2=nazwa przestrzeni nazw i=Moduł; --> <!-- Czyli wynik: --> Dyskusja modułu <!-- Widzimy, że wygenerowała się nazwa przestrzeni nazw, którą jest przestrzeń dyskusji przestrzeni programowej przestrzeni przedmiotowej "Moduł", którą również jest "Szablon" jego przestrzeni dyskusji "Dyskusja szablonu", a dla ich przestrzeni przedmiotowej, zamiast dyskusji, to przekształca się na dyskusji jej odpowiadającą; --> </syntaxhighlight> Nie jest brana w tym powyższym przykładzie zmienna {{Code|nazwa przestrzeni nazw}}, bo jej nie ma, ale za to jest {{Code|nazwa przestrzeni nazw i}}, bo ona występuje jako parametr domyślny ogólny dla parametrów numerkowych. Przykłady w wikikodzie: * {{Code|{{m|Pudełko|Nazwa przestrzeni nazw dyskusji|numer jednostki{{=}}2}}}} → {{Tt|{{#invoke:Pudełko|Nazwa przestrzeni nazw dyskusji|numer jednostki=2}}}} * {{Code|{{m|Pudełko|Nazwa przestrzeni nazw dyskusji|Szablon|nazwa przestrzeni nazw i{{=}}Moja przestrzeń|numer jednostki{{=}}2}}}} → {{Tt|{{#invoke:Pudełko|Nazwa przestrzeni nazw dyskusji|Szablon|nazwa przestrzeni nazw i=Moja przestrzeń|numer jednostki=2}}}} * {{Code|{{m|Pudełko|Nazwa przestrzeni nazw dyskusji|nazwa przestrzeni nazw 2{{=}}Szablon|numer jednostki{{=}}2}}}} → {{Tt|{{#invoke:Pudełko|Nazwa przestrzeni nazw dyskusji|nazwa przestrzeni nazw 2=Szablon|numer jednostki=2}}}} * {{Code|{{m|Pudełko|Nazwa przestrzeni nazw dyskusji|nazwa przestrzeni nazw 2{{=}}Szablon|numer jednostki{{=}}2}}}} → {{Tt|{{#invoke:Pudełko|Nazwa przestrzeni nazw dyskusji|nazwa przestrzeni nazw i=Szablon|numer jednostki=2}}}} * {{Code|{{m|Pudełko|Nazwa przestrzeni nazw dyskusji|nazwa przestrzeni nazw{{=}}Szablon|numer jednostki{{=}}2}}}} → {{Tt|{{#invoke:Pudełko|Nazwa przestrzeni nazw dyskusji|nazwa przestrzeni nazw=Szablon|numer jednostki=2}}}} Powyżej dla przykładu podano parametry nie w rodzicu w szablonie, tylko w dziecku, jeśli chodzi o parametry nazw przestrzeni nazw, ale ich się za to nie powinno podawać w tych ramach, tylko w szablonach, w których wywoływane są te ramki pudełek {{Code|{{m|Pudełko}}}}, ale tak tutaj tak zrobiono by było najłatwiej sprawdzić działanie tego typu funkcji. Analogicznie możemy podawać parametry typu jednostki, np.: wywołaniu modułowym {{Code|{{m|Pudełko|Nazwa przestrzeni nazw dyskusji|typ jednostki 2{{=}}strona szablonu|numer jednostki{{=}}2}}}}, ale o tym więcej w rozdziałach {{Code|{{sr|# p["Typ jednostki"](frame,i)|p=Pudełko}}}}, {{Code|{{sr|#p["Typ jednostki 2"](frame,i)|p=Pudełko}}}}, {{Code|{{sr|#p["Typ jednostki 3"](frame,i)|p=Pudełko}}}} itp. w „{{sr|#Funkcje typu jednostki|p=Pudełko}}”, ale wtedy nazwa przestrzeni nazw reprezentowana przez {{Parametr|typ jednostki 2|strona szablonu}}, jest zamieniana na nazwę przestrzeni nazw dyskusji. Parametr dyskusji typu jednostki bazowy lub dla danego numerka ogólny, czy szczegółowy, nie gra roli. Również parametry typu jednostki nie powinno się podawać w dziecku w ramce, tylko w rodzicu w szablonie jako parametry, w którym ta ramka jest wywoływana, ale tutaj podano jedynie dla przykładu, jak najłatwiej sprawdzić działanie tych parametrów tej funkcji. Najpierw w funkcji nagłówku brane są parametry nazw przestrzeni nazw, a jeżeli ich nie ma, to parametry typu jednostki, a jeżeli nie ma, to generowane są nazwy na podstawie aktualnego modułu. == Funkcje nazw przestrzeni nazw drugiej wersji == === {{Code|p["Nazwa przestrzeni nazw 2"](frame,...)}} === Funkcja pisze nazwę przestrzeni nazw, niezależnie, czy to jest przedmiotowa, czy dyskusji, według, i nie zawsze tylko, podanej w zmiennej {{Code|nazwa przestrzeni nazw}} dla pozycja bazowej w podanych parametrach szablonu rodzicu ramki dziecka, lub dla innej pozycji należy parametr podawać w formie {{Code|nazwa przestrzeni nazw 1}}, {{Code|nazwa przestrzeni nazw 2}}, {{Code|nazwa przestrzeni nazw 3}},..., lub te parametry można podać w postaci ogólnej {{Code|nazwa przestrzeni nazw i}}. W tej funkcji trzeba też podawać parametry nazwy jednostek {{Code|nazwa jednostki}}, {{Code|nazwa jednostki 1}}, {{Code|nazwa jednostki 2}}, {{Code|nazwa jednostki 3}},... Parametry podaje się w parametrach rodzica wywołania tej funkcji {{Code|{{m|Pudełko|Nazwa przestrzeni nazw 2}}}} (ale ich nie trzeba podawać w dziecku, ale można) i w parametrach dziecka, jeśli chodzi o zmienną {{Code|numer jednostki}}, czyli np.: {{Code|{{m|Pudełko|Nazwa przestrzeni nazw 2|numer jednostki{{=}}<jakaś liczba całkowita dodatnia>}}}}. Te parametry przestrzenne zamiast w rodzicu w szablonie można podać w ramce dziecka, wtedy parametry dziecka mają pierwszeństwo. Przestrzeń nazw z parametrów nazw przestrzennych może odpowiadać wartości przestrzeni głównej, to wtedy odpowiednia przestrzeń nazw z parametru nazwy jednostki się liczy w tej funkcji, wtedy jest liczona nazwa przestrzeni nazw z tego parametru. Gdy parametry przestrzenne lub typ jednostki w drugim podejściu nie wskazują na przestrzeń główną, to wtedy działanie tej funkcji jest podobne do {{Code|{{sr|#p["Nazwa przestrzeni nazw"](frame,...)|p=Pudełko}}}}. Definicja skrótowa funkcji: <syntaxhighlight lang="lua"> p["Nazwa przestrzeni nazw 2"]=function(frame,czy_uwzglednic_alternatywna_nazwe,i)...end; </syntaxhighlight> Wtedy ciało funkcji tej, czyli jego definicja w środku, jest: <syntaxhighlight lang="lua"> local pudelko_pomocne_modul=require("Module:Pudełko/Pomocne"); -- Liczy nazwę przestrzeni nazw, jeżeli z parametrów przestrzennych przestrzeń wskazuje na główną, to wtedy jest liczona przestrzeń nazw z nazwy jednostki; return pudelko_pomocne_modul.Nazwa_przestrzeni_nazw_2(frame,czy_uwzglednic_alternatywna_nazwe,i) </syntaxhighlight> Parametry funkcji: * {{Code|frame}} - tablica ramki tablicy transportu, * {{Code|czy_uwzglednic_alternatywna_nazwe}} - czy ma uwzględniać nazwę przestrzeni nazw domyślną szablonu, dostępne wartości: {{Code|false}}, w której nazwa domyślna nie jest uwzględniana wtedy, oraz {{Code|nil}} i {{Code|true}}, które oznaczają to samo, w tym jeżeli ona jest uwzględniana, wtedy jest brany parametr pierwszy dziecka, który musi istnieć przy takiej wartości tego parametru, tzn. {{Code|{{m|Pudełko|Nazwa przestrzeni nazw 2|Szablon}}}}, a nazwa uzyskana nazwy przestrzeni nazw jest w takim przypadku błędna, a jeżeli nazwa domyślna jest błędna, czyli {{Code|{{m|Pudełko|Nazwa przestrzeni nazw 2|Moja przestrzeń}}}}, wtedy funkcja zwraca stan błędu {{Code|(błąd)}}. * {{Code|i}} - numer zmiennej nazwy przestrzeni nazw. Funkcja wykorzystuje {{Code|{{sr|#p.Nazwa_przestrzeni_nazw_2(frame,...)|p=Pudełko/Pomocne}}}} do wyznaczania ogólnego nazwy przestrzeni nazw dla pozycji bazowej i numerkowej, tzn. dla pozycji: jeden, dwa, trzy,..., itd, i ich ogólnej. Parametr ramki tablicy transportu rodzica szablonu: * {{Code|nazwa przestrzeni nazw}}, {{Code|nazwa przestrzeni nazw 1}}, {{Code|nazwa przestrzeni nazw 2}}, {{Code|nazwa przestrzeni nazw 3}},..., {{Code|nazwa przestrzeni nazw i}} - nazwy przestrzeni nazw dla pozycji bazowej oraz zwykłej i ogólnej numerkowej, * {{Code|nazwa jednostki}}, {{Code|nazwa jednostki 1}}, {{Code|nazwa jednostki 2}}, {{Code|nazwa jednostki 3}},... - nazwy jednostek dla pozycji bazowej i numerkowej, * {{Code|typ jednostki}}, {{Code|typ jednostki 1}}, {{Code|typ jednostki 2}}, {{Code|typ jednostki 3}},..., {{Code|typ jednostki i}} - typy jednostek, którym odpowiadają pewne przestrzenie przedmiotowe, dla pozycji bazowej, numerkowej i ogólnej, ** {{Code|dyskusja typu jednostki}}, {{Code|dyskusja typu jednostki 1}}, {{Code|dyskusja typ jednostki 2}}, {{Code|dyskusja typ jednostki 3}},..., {{Code|dyskusja typ jednostki i}} - czy dany typ jednostki ma przedstawiać, jeśli niepusta, przestrzeń dyskusji dla pozycji bazowej, numerkowej i ogólnej. Parametry ramki tablicy transportu dziecka: * Parametry dziecka są takie same jak rodzica dla funkcji pudełkowej plus tu wymienione, * {{Code|numer jednostki}} - jak parametr {{Code|i}} nie został ustawiony, to wtedy liczy się ta zmienna. Przykłady: <syntaxhighlight lang="mediawiki"> {{Nazwa szablonu|nazwa przestrzeni nazw=Wikibooks|nazwa przestrzeni nazw 1=Szablon|nazwa przestrzeni nazw i=|nazwa jednostki 2=Wikibooks:Strona}} </syntaxhighlight> W dziecku powiedzmy jest wywołanie, i szukamy nazwy przestrzeni nazw o numerze dwa, która została podana, ale istnieje za to jej wersji ogólna {{Code|nazwa przestrzeni nazw i}} i domyślna {{Code|nazwa przestrzeni nazw}}, ale wtedy dla tego numerkowego liczy się to ogólne z {{Code| i}}, a ponieważ ta nazwa jest pusta, więc będziemy liczyli nazwę przestrzeni nazw z {{Code|nazwa jednostki 2}}: <syntaxhighlight lang="mediawiki"> {{#invoke:Pudełko|Nazwa przestrzeni nazw 2|numer jednostki=2}} </syntaxhighlight> Na podstawie powyższego przykładu otrzymamy wynik o schemacie, nie wyniku, bo tam nie ma zmiennej {{Code|nazwa przestrzeni nazw 1}}, ale jest {{Code|nazwa przestrzeni nazw i}}: <syntaxhighlight lang="mediawiki"> <!-- Ale nie "nazwa przestrzeni nazw 2", bo jej nie ma, ale za to istnieje "nazwa przestrzeni nazw i"; --> <!-- nazwa przestrzeni nazw 2=nazwa przestrzeni nazw i="", a nazwa jednostki 2="Wikibooks:Strona"; --> <!-- Czyli wynik: --> Wikibooks <!-- Widzimy, że wygenerowała się nazwa przestrzeni nazw, którą jest przestrzeń nieprogramowa, ale projektu, wychodząca z nazwy jednostek w tym przypadku z "nazwa jednostki 2"; --> </syntaxhighlight> Nie jest brana w tym powyższym przykładzie zmienna {{Code|nazwa przestrzeni nazw}}, bo jej nie ma, ale za to jest {{Code|nazwa przestrzeni nazw i}}, bo ona występuje jako parametr domyślny ogólny dla parametrów numerkowych. Tytaj jest używana jest zmienna {{Code|nazwa jednostki 2}} do wygenerowania ostatecznego wyniku, bo jak można zauważyć, parametry przestrzenne wskazują na przestrzeń główną, a nazwy jednostek już nie. Przykłady w wikikodzie: * {{Code|{{m|Pudełko|Nazwa przestrzeni nazw 2|numer jednostki{{=}}2}}}} → {{Tt|{{#invoke:Pudełko|Nazwa przestrzeni nazw 2|numer jednostki=2}}}} * {{Code|{{m|Pudełko|Nazwa przestrzeni nazw 2|Szablon|nazwa przestrzeni nazw i{{=}}Moja przestrzeń|numer jednostki{{=}}2}}}} → {{Tt|{{#invoke:Pudełko|Nazwa przestrzeni nazw 2|Szablon|nazwa przestrzeni nazw i=Moja przestrzeń|numer jednostki=2}}}} * {{Code|{{m|Pudełko|Nazwa przestrzeni nazw 2|nazwa przestrzeni nazw 2{{=}}|nazwa jednostki 2{{=}}Szablon:Strona|numer jednostki{{=}}2}}}} → {{Tt|{{#invoke:Pudełko|Nazwa przestrzeni nazw 2|nazwa przestrzeni nazw 2=|nazwa jednostki 2=Szablon:Strona|numer jednostki=2}}}} * {{Code|{{m|Pudełko|Nazwa przestrzeni nazw 2|nazwa przestrzeni nazw i{{=}}|nazwa jednostki 2{{=}}Szablon:Strona|numer jednostki{{=}}2}}}} → {{Tt|{{#invoke:Pudełko|Nazwa przestrzeni nazw 2|nazwa przestrzeni nazw i=|nazwa jednostki 2=Szablon:Strona|numer jednostki=2}}}} * {{Code|{{m|Pudełko|Nazwa przestrzeni nazw 2|Szablon|nazwa przestrzeni nazw{{=}}|nazwa jednostki 2{{=}}Wikibooks:Strona|numer jednostki{{=}}2}}}} → {{Tt|{{#invoke:Pudełko|Nazwa przestrzeni nazw 2|Szablon|nazwa przestrzeni nazw=|nazwa jednostki 2=Wikibooks:Strona|numer jednostki=2}}}} Powyżej dla przykładu podano parametry nie w rodzicu w szablonie, tylko w dziecku, jeśli chodzi o parametry nazw przestrzeni nazw i nazw jednostek, ale ich się za to nie powinno podawać w tych ramach, tylko w szablonach, w których wywoływane są te ramki pudełek {{Code|{{m|Pudełko}}}}, ale tak tutaj tak zrobiono by było najłatwiej sprawdzić działanie tego typu funkcji. Analogicznie możemy podawać parametry typu jednostki, np.: wywołaniu modułowym {{Code|{{m|Pudełko|Nazwa przestrzeni nazw 2|typ jednostki 2{{=}}Podręcznik|nazwa jednostki 2{{=}}Szablon:Strona|numer jednostki{{=}}2}}}} (ale wtedy jest brana przestrzeń nazw z nazwy jednostki), ale o tym więcej w rozdziałach {{Code|{{sr|# p["Typ jednostki"](frame,i)|p=Pudełko}}}}, {{Code|{{sr|#p["Typ jednostki 2"](frame,i)|p=Pudełko}}}}, {{Code|{{sr|#p["Typ jednostki 3"](frame,i)|p=Pudełko}}}} itp. w „{{sr|#Funkcje typu jednostki|p=Pudełko}}”, on definiuje przestrzenie przedmiotowe, ale można użyć parametru dyskusji typu jednostki z wartością niepustą, wtedy wyświetli się nazwa przestrzeni nazw dyskusji. Jeżeli typ jednostki wskazuje na przestrzeń nazw główną, wtedy się liczą parametry nazw jednostek. Również parametry typu jednostki nie powinno się podawać w dziecku w ramce, tylko w rodzicu w szablonie jako parametry, w którym ta ramka jest wywoływana, ale tutaj podano jedynie dla przykładu, jak najłatwiej sprawdzić działanie tych parametrów tej funkcji. Najpierw w funkcji nagłówku brane są parametry nazw przestrzeni nazw, a jeżeli ich nie ma, to parametry typu jednostki, a jeżeli nie ma lub parametry przestrzenne wskazują na przestrzeń główną, i nie ma nazwy jednostki, to generowane są nazwy tej funkcji na podstawie aktualnej strony. === {{Code|p["Nazwa przedmiotowej przestrzeni nazw 2"](frame,...)}} === Funkcja pisze przedmiotową nazwę przestrzeni nazw jakikolwiek nazwy przestrzeni nazw (tzn. nazwę przedmiotową nazwy przestrzenie nazw, czyli nie dyskusji, zamieniana jest na nią samą, czyli identyfikator przestrzeni się nie zmienia, a dyskusji, nie przedmiotową, przekształca się na przedmiotową jej odpowiadającą, czyli w tym przypadku identyfikator przestrzeni zmniejsza się o numer mniej), według, i nie zawsze tylko, podanej w zmiennej {{Code|nazwa przestrzeni nazw}} dla pozycja bazowej w podanych parametrach szablonu rodzicu ramki dziecka, lub dla innej pozycji należy parametr podawać w formie {{Code|nazwa przestrzeni nazw 1}}, {{Code|nazwa przestrzeni nazw 2}}, {{Code|nazwa przestrzeni nazw 3}},..., lub te parametry można podać w postaci ogólnej {{Code|nazwa przestrzeni nazw i}}. W tej funkcji trzeba też podawać parametry nazwy jednostek {{Code|nazwa jednostki}}, {{Code|nazwa jednostki 1}}, {{Code|nazwa jednostki 2}}, {{Code|nazwa jednostki 3}},... Parametry podaje się w parametrach rodzica wywołania tej funkcji {{Code|{{m|Pudełko|Nazwa przedmiotowej przestrzeni nazw 2}}}} (ale ich nie trzeba podawać w dziecku, ale można) i w parametrach dziecka, jeśli chodzi o zmienną {{Code|numer jednostki}}, czyli np.: {{Code|{{m|Pudełko|Nazwa przedmiotowej przestrzeni nazw 2|numer jednostki{{=}}<jakaś liczba całkowita dodatnia>}}}}. Te parametry przestrzenne zamiast w rodzicu w szablonie można podać w ramce dziecka, wtedy parametry dziecka mają pierwszeństwo. Przestrzeń nazw z parametrów nazw przestrzennych po przekształceniu na przedmiotową może odpowiadać wartości przestrzeni głównej, to wtedy odpowiednia przestrzeń nazw z parametru nazwy jednostki się liczy w tej funkcji, wtedy jest liczona nazwa przestrzeni nazw z tego parametru. Gdy parametry przestrzenne lub typ jednostki w drugim podejściu nie wskazują na przestrzeń główną, to wtedy działanie tej funkcji jest podobne do {{Code|{{sr|#p["Nazwa przedmiotowej przestrzeni nazw"](frame,...)|p=Pudełko}}}}. Definicja skrótowa funkcji: <syntaxhighlight lang="lua"> p["Nazwa przedmiotowej przestrzeni nazw 2"]=function(frame,czy_uwzglednic_alternatywna_nazwe,i)...end; </syntaxhighlight> Wtedy ciało funkcji tej, czyli jego definicja w środku, jest: <syntaxhighlight lang="lua"> local pudelko_pomocne_modul=require("Module:Pudełko/Pomocne"); return pudelko_pomocne_modul.Nazwa_przestrzeni_nazw_przedmiotowa_dyskusji_2(frame,czy_uwzglednic_alternatywna_nazwe,i,"przedmiotowa"); </syntaxhighlight> Parametry funkcji: * {{Code|frame}} - tablica ramki tablicy transportu, * {{Code|czy_uwzglednic_alternatywna_nazwe}} - czy ma uwzględniać nazwę przestrzeni nazw domyślną szablonu, dostępne wartości: {{Code|false}}, w której nazwa domyślna nie jest uwzględniana wtedy, oraz {{Code|nil}} i {{Code|true}}, które oznaczają to samo, w tym jeżeli ona jest uwzględniana, wtedy jest brany parametr pierwszy dziecka, który musi istnieć przy takiej wartości tego parametru, tzn. {{Code|{{m|Pudełko|Nazwa przedmiotowej przestrzeni nazw 2|Szablon}}}}, a nazwa uzyskana nazwy przestrzeni nazw jest w takim przypadku błędna, a jeżeli nazwa domyślna jest błędna, czyli {{Code|{{m|Pudełko|Nazwa przedmiotowej przestrzeni nazw 2|Moja przestrzeń}}}}, wtedy funkcja zwraca stan błędu {{Code|(błąd)}}. * {{Code|i}} - numer zmiennej nazwy przestrzeni nazw. Funkcja wykorzystuje {{Code|{{sr|#p.Nazwa_przestrzeni_nazw_przedmiotowa_dyskusji_2(frame,...)|p=Pudełko/Pomocne}}}} do wyznaczania ogólnego nazwy przestrzeni nazw dla pozycji bazowej i numerkowej, tzn. dla pozycji: jeden, dwa, trzy,..., itd, i ich ogólnej. Parametr ramki tablicy transportu rodzica szablonu: * {{Code|nazwa przestrzeni nazw}}, {{Code|nazwa przestrzeni nazw 1}}, {{Code|nazwa przestrzeni nazw 2}}, {{Code|nazwa przestrzeni nazw 3}},..., {{Code|nazwa przestrzeni nazw i}} - nazwy przestrzeni nazw dla pozycji bazowej oraz zwykłej i ogólnej numerkowej, * {{Code|nazwa jednostki}}, {{Code|nazwa jednostki 1}}, {{Code|nazwa jednostki 2}}, {{Code|nazwa jednostki 3}},... - nazwy jednostek dla pozycji bazowej i numerkowej, * {{Code|typ jednostki}}, {{Code|typ jednostki 1}}, {{Code|typ jednostki 2}}, {{Code|typ jednostki 3}},..., {{Code|typ jednostki i}} - typy jednostek, którym odpowiadają pewne przestrzenie przedmiotowe, dla pozycji bazowej, numerkowej i ogólnej. Parametry ramki tablicy transportu dziecka: * Parametry dziecka są takie same jak rodzica dla funkcji pudełkowej plus tu wymienione, * {{Code|numer jednostki}} - jak parametr {{Code|i}} nie został ustawiony, to wtedy liczy się ta zmienna. Przykłady: <syntaxhighlight lang="mediawiki"> {{Nazwa szablonu|nazwa przestrzeni nazw=Wikibooks|nazwa przestrzeni nazw 1=Szablon|nazwa przestrzeni nazw i=|nazwa jednostki 2=Dyskusja Wikibooks:Strona}} </syntaxhighlight> W dziecku powiedzmy jest wywołanie, i szukamy nazwy przestrzeni nazw o numerze dwa, która została podana, ale istnieje za to jej wersji ogólna {{Code|nazwa przestrzeni nazw i}} i domyślna {{Code|nazwa przestrzeni nazw}}, ale wtedy dla tego numerkowego liczy się to ogólne z {{Code| i}}, a ponieważ ta nazwa jest pusta, więc będziemy liczyli nazwę przestrzeni nazw z {{Code|nazwa jednostki 2}}: <syntaxhighlight lang="mediawiki"> {{#invoke:Pudełko|Nazwa przedmiotowej przestrzeni nazw 2|numer jednostki=2}} </syntaxhighlight> Na podstawie powyższego przykładu otrzymamy wynik o schemacie, nie wyniku, bo tam nie ma zmiennej {{Code|nazwa przestrzeni nazw 1}}, ale jest {{Code|nazwa przestrzeni nazw i}}: <syntaxhighlight lang="mediawiki"> <!-- Ale nie "nazwa przestrzeni nazw 2", bo jej nie ma, ale za to istnieje "nazwa przestrzeni nazw i"; --> <!-- nazwa przestrzeni nazw 2=nazwa przestrzeni nazw i="", a nazwa jednostki 2="Dyskusja Wikibooks:Strona"; --> <!-- Czyli wynik: --> Wikibooks <!-- Widzimy, że wygenerowała się nazwa przestrzeni nazw, którą jest przestrzeń nieprogramowa, ale projektu, wychodząca z nazwy jednostek w tym przypadku z "nazwa jednostki 2"; --> </syntaxhighlight> Nie jest brana w tym powyższym przykładzie zmienna {{Code|nazwa przestrzeni nazw}}, bo jej nie ma, ale za to jest {{Code|nazwa przestrzeni nazw i}}, bo ona występuje jako parametr domyślny ogólny dla parametrów numerkowych. Tytaj jest używana jest zmienna {{Code|nazwa jednostki 2}} do wygenerowania ostatecznego wyniku, bo jak można zauważyć, parametry przestrzenne wskazują na przestrzeń główną, a nazwy jednostek już nie. Przykłady w wikikodzie: * {{Code|{{m|Pudełko|Nazwa przedmiotowej przestrzeni nazw 2|numer jednostki{{=}}2}}}} → {{Tt|{{#invoke:Pudełko|Nazwa przedmiotowej przestrzeni nazw 2|numer jednostki=2}}}} * {{Code|{{m|Pudełko|Nazwa przedmiotowej przestrzeni nazw 2|Dyskusja szablonu|nazwa przestrzeni nazw i{{=}}Moja przestrzeń|numer jednostki{{=}}2}}}} → {{Tt|{{#invoke:Pudełko|Nazwa przedmiotowej przestrzeni nazw 2|Dyskusja szablonu|nazwa przestrzeni nazw i=Moja przestrzeń|numer jednostki=2}}}} * {{Code|{{m|Pudełko|Nazwa przedmiotowej przestrzeni nazw 2|nazwa przestrzeni nazw 2{{=}}Dyskusja|nazwa jednostki 2{{=}}Dyskusja szablonu:Strona|numer jednostki{{=}}2}}}} → {{Tt|{{#invoke:Pudełko|Nazwa przedmiotowej przestrzeni nazw 2|nazwa przestrzeni nazw 2=Dyskusja|nazwa jednostki 2=Dyskusja szablonu:Strona|numer jednostki=2}}}} * {{Code|{{m|Pudełko|Nazwa przedmiotowej przestrzeni nazw 2|nazwa przestrzeni nazw i{{=}}Dyskusja|nazwa jednostki 2{{=}}Dyskusja szablonu:Strona|numer jednostki{{=}}2}}}} → {{Tt|{{#invoke:Pudełko|Nazwa przedmiotowej przestrzeni nazw 2|nazwa przestrzeni nazw i=Dyskusja|nazwa jednostki 2=Dyskusja szablonu:Strona|numer jednostki=2}}}} * {{Code|{{m|Pudełko|Nazwa przedmiotowej przestrzeni nazw 2|Dyskusja szablonu|nazwa przestrzeni nazw{{=}}Dyskusja|nazwa jednostki 2{{=}}Wikibooks:Strona|numer jednostki{{=}}2}}}} → {{Tt|{{#invoke:Pudełko|Nazwa przedmiotowej przestrzeni nazw 2|Dyskusja szablonu|nazwa przestrzeni nazw=Dyskusja|nazwa jednostki 2=Dyskusja Wikibooks:Strona|numer jednostki=2}}}} Powyżej dla przykładu podano parametry nie w rodzicu w szablonie, tylko w dziecku, jeśli chodzi o parametry nazw przestrzeni nazw i nazw jednostek, ale ich się za to nie powinno podawać w tych ramach, tylko w szablonach, w których wywoływane są te ramki pudełek {{Code|{{m|Pudełko}}}}, ale tak tutaj tak zrobiono by było najłatwiej sprawdzić działanie tego typu funkcji. Analogicznie możemy podawać parametry typu jednostki, np.: wywołaniu modułowym {{Code|{{m|Pudełko|Nazwa przedmiotowej przestrzeni nazw 2|typ jednostki 2{{=}}Podręcznik|nazwa jednostki 2{{=}}Dyskusja szablonu:Strona|numer jednostki{{=}}2}}}} (ale wtedy jest brana przestrzeń nazw z nazwy jednostki), ale o tym więcej w rozdziałach {{Code|{{sr|# p["Typ jednostki"](frame,i)|p=Pudełko}}}}, {{Code|{{sr|#p["Typ jednostki 2"](frame,i)|p=Pudełko}}}}, {{Code|{{sr|#p["Typ jednostki 3"](frame,i)|p=Pudełko}}}} itp. w „{{sr|#Funkcje typu jednostki|p=Pudełko}}”, on definiuje przestrzenie przedmiotowe, ale można użyć parametru dyskusji typu jednostki z wartością niepustą, wtedy wyświetli się nazwa przestrzeni nazw dyskusji. Jeżeli typ jednostki wskazuje na przestrzeń nazw główną, wtedy się liczą parametry nazw jednostek. Również parametry typu jednostki nie powinno się podawać w dziecku w ramce, tylko w rodzicu w szablonie jako parametry, w którym ta ramka jest wywoływana, ale tutaj podano jedynie dla przykładu, jak najłatwiej sprawdzić działanie tych parametrów tej funkcji. Najpierw w funkcji nagłówku brane są parametry nazw przestrzeni nazw, a jeżeli ich nie ma, to parametry typu jednostki, a jeżeli nie ma lub parametry przestrzenne wskazują na przestrzeń główną, i nie ma nazwy jednostki, to generowane są nazwy tej funkcji na podstawie aktualnej strony. === {{Code|p["Nazwa przestrzeni nazw dyskusji 2"](frame,...)}} === == Funkcje pełnych nazw jednostki == === {{Code|p["Pełna nazwa dyskusji jednostki"](frame,i)}} === === {{Code|p["Pełna nazwa przedmiotowa jednostki"](frame,i)}} === === {{Code|p["Pełna nazwa jednostki"](frame,i)}} === == Funkcje pełnych nazw jednostki drugiej wersji == === {{Code|p["Pełna nazwa dyskusji jednostki 2"](frame,i)}} === === {{Code|p["Pełna nazwa przedmiotowa jednostki 2"](frame,i)}} === === {{Code|p["Pełna nazwa jednostki 2"](frame,i)}} === == Funkcje pełnych nazw jednostki trzeciej wersji == === {{Code|p["Pełna nazwa dyskusji jednostki 3"](frame,i)}} === === {{Code|p["Pełna nazwa przedmiotowa jednostki 3"](frame,i)}} === === {{Code|p["Pełna nazwa jednostki 3"](frame,i)}} === == Funkcje nazw jednostki == === {{Code|p["Nazwa jednostki"](frame,i)}} === == Funkcje nazw jednostki drugiej wersji == === {{Code|p["Nazwa jednostki 2"](frame,i)}} === === {{Code|p["Nazwa przedmiotowa jednostki 2"](frame,i)}} === === {{Code|p["Nazwa dyskusji jednostki 2"](frame,i)}} === == Funkcje nazw przestrzeni nazw trzeciej wersji == === {{Code|p["Nazwa przestrzeni nazw 3"](frame,i)}} === === {{Code|p["Nazwa przedmiotowej przestrzeni nazw 3"](frame,i)}} === === {{Code|p["Nazwa przestrzeni nazw dyskusji 3"](frame,i)}} === == Funkcje nazw jednostki trzeciej wersji == === {{Code|p["Nazwa jednostki 3"](frame,i)}} === === {{Code|p["Nazwa przedmiotowa jednostki 3"](frame,i)}} === === {{Code|p["Nazwa dyskusji jednostki 3"](frame,i)}} === == Funkcje typu jednostki == === {{Code|p["Typ jednostki"](frame,i)}} === === {{Code|p["Typ jednostki 2"](frame,i)}} === === {{Code|p["Typ jednostki 3"](frame,i)}} === === Funkcje typu jednostki przedmiotowe === ==== {{Code|p["Przedmiotowy typ jednostki"](frame,i)}} ==== ==== {{Code|p["Przedmiotowy typ jednostki 2"](frame,i)}} ==== ==== {{Code|p["Przedmiotowy typ jednostki 3"](frame,i)}} ==== === Fukcje typu jednostki dyskusji === ==== {{Code|p["Dyskusyjny typ jednostki"](frame,i)}} ==== ==== {{Code|p["Dyskusyjny typ jednostki 2"](frame,i)}} ==== ==== {{Code|p["Dyskusyjny typ jednostki 3"](frame,i)}} ==== == Funkcje chech pudełka == === {{Code|p["Cecha pudełka"](frame)}} === === {{Code|p["Przedmiotowa cecha pudełka"](frame)}} === === {{Code|p["Dyskusyjna cecha pudełka"](frame)}} === == Fukcje ogólnego pudełka == === {{Code|p["Ogólne pudełko"](frame)}} === == Funkcje ogólne == === {{Code|p["Tekst pudełka"](frame)}} === == Funkcje błędów pudełka == === {{Code|p["Błędy pudełka"](frame)}} === === {{Code|p["Przedmiotowe błędy pudełka"](frame)}} === === {{Code|p["Dyskusyjne błędy pudełka"](frame)}} === == Funkcje nazw stron == === {{Code|p["Nazwa strony głównej projektu"](frame,i)}} === === {{Code|p["Nazwa strony głównej dla dzieci projektu"](frame,i)}} === == Funkcje kodów == === {{Code|p["Kod języka"](frame,i)}} === === {{Code|p["Kod projektu"](frame,i)}} === === {{Code|p["Klucz projektu"](frame,i)}} === == Funkcje wiki == === {{Code|p["Inny niż język bieżący wiki"](frame)}} === === {{Code|p["Inne niż lokalne wiki"](frame)}} === === {{Code|p["Inne niż bieżące wiki"](frame)}} === == Funkcje typów parametrów, czy podane je == === {{Code|p["Podano parametry nienazwane"](frame)}} === === {{Code|p["Podano parametry numerowane"](frame)}} === === {{Code|p["Podano parametry nazwane"](frame)}} === == Funkcje kodów tego projektu == === {{Code|p["Kod projektu tego projektu"](frame)}} === === {{Code|p["Kod języka tego projektu"](frame)}} === === {{Code|p["Klucz projektu tego projektu"](frame)}} === == Funkcje stron == === {{Code|p["Strona główna tego projektu"](frame)}} === === {{Code|p["Strona główna dla dzieci tego projektu"](frame)}} === == Funkcje nazw stron drugiej wersji == === {{Code|p["Nazwa strony głównej dla dzieci projektu 2"](frame)}} === === {{Code| p["Nazwa strony głównej projektu 2"](frame)}} === {{BrClear}} <noinclude><!-- -->{{ProstaStronaKoniec}}<!-- -->{{Kategoria|Opisy funkcji, w Lua w Scribunto, w modułach}}<!-- --></noinclude> e1n6fu0yggs83oamvyoxs52sb7vxidj 540404 540399 2026-04-23T16:56:11Z Persino 2851 /* {{Code|p["Nazwa przestrzeni nazw dyskusji 2"](frame,...)}} */ 540404 wikitext text/x-wiki <noinclude>{{ProstaStronaStart | nagłówek = {{Podrozdział|{{ld2|Pudełko}}|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 pudelko_modul=require("Module:Pudełko"); </syntaxhighlight> dzięki, któremu można wypisywać funkcje należącego do niego. Posługuje się na parametrach pudełkowych {{Parametr|nazwa przestrzeni nazw}} (czy też bez numerka {{Parametr|nazwa przestrzeni nazw i}} dla tego numerowanego) lub te z numerkiem po jednej spacji w nich (ale nie dla tego z końcówką {{Code| i}}) mogą zostać użyte jako parametry szablonu. Moduł {{Code|{{ld2|Pudełko}}}} przedstawia funkcje nazw w oparciu o funkcje nazw {{Code|{{ld2|Nazwy}}}}, generuje on nazwy za pomocą parametrów pudełkowych podanych poniżej. Parametr {{Parametr|nazwa jednostki}} (lub parametr {{Parametr|cel}} dla numerka tego pierwszego, tego alternatywnego), lub te z numerkiem po jednej spacji w nazwie parametru, albo numerowane numerkami {{Code|1}}, {{Code|2}},..., mogą zostać użyte jako parametry szablonu. Parametry określające rodzaj jednostki {{Parametr|typ jednostki}} z {{Parametr|dyskusja typu jednostki}}, itp. w wersjach z numerkiem po jednej spacji w nich mogą zostać użyte jako parametry szablonu. A te tymi numerowanymi liczbami naturalnymi {{Tt|nazwy jednostki}} od jedynki wzwyż poprzez szablon, w którym są one użyte, one też mogą być użyte z dwukropkiem, te numerowane, na samym początku nazwy, wtedy one są traktowane jako pełne nazwy strony, i wtedy one nie zostaną z interpretowane, że do nich trzeba użyć parametr odpowiedni z nazwą przetrzeni nazw z tego numerowanego, czy ogólny, aby utworzyć znów inną pełną nazwę strony dla tego numerka. Zestawienie: * {{Code|nazwa przestrzeni nazw}} i {{Code|nazwa przestrzeni nazw i}} (ogólna nazwa przestrzeni nazw dla wszystkich numerków, i tych numerowanych jednostek) - i to pierwsze z numerkiem, tzn. {{Code|nazwa przestrzeni nazw 1}}, {{Code|nazwa przestrzeni nazw 2}}, ..., * {{Code|nazwa jednostki}} - i te z numerkiem: {{Code|nazwa jednostki 1}}, {{Code|nazwa jednostki 2}}, ..., lub gdy jest zamiast tego parametrem numerowany, {{Code|1}}, {{Code|2}},..., który dla tego pierwszego może być uznany jako: {{Code|cel}} {{=}} {{Code|1}}, * {{Code|typ jednostki}} (parametr bazowy) i {{Code|typ jednostki i}} (parametr domyślny numerkowy) - i te z numerkiem: {{Code|typ jednostki 1}}, {{Code|typ jednostki 2}}, ..., tzn. gdy chcemy określić z jakim typem jednostki mamy do czynienia w zależności do jakiej przestrzeni nazw należy, a w danej, czy jest on np. programowy, czy tylko jest opisem, jak to bywa w szablonach {{Np|Template|link=tak}}, podobnie jest w przypadku {{Np|Module|link=tak}}, czy jak jest w innych przestrzeniach nazw, ** {{Code|dyskusja typu jednostki}} (parametr bazowy) i {{Code|dyskusja typu jednostki i}} (parametr domyślny numerkowy) - i te z numerkiem: {{Code|dyskusja typu jednostki 1}}, {{Code|dyskusja typu jednostki 2}}, ..., gdy chcemy określić wartością niepustą,że chodzi tutaj o typ jednostki. == {{Code|p.CzyNiepoprawnaNazwa(nazwa_jednostki)}} == Funkcja sprawdzajaca, czy jest poprawnie podana nazwa jednostki, czy ma poprawną nazwę. Znakami tymi, z których nie powinna składać się nazwa jest {{Code|<nowiki>{}<>|[]#\n</nowiki>}} i dodatkowo znak {{Code|&#127;}} (kod {{Code|{{Nowiki|&#127;}}}}). Też nie może składać się z trzech znaków tyldy, tzn. {{Code|<nowiki>~~~</nowiki>}}. Również w swojej budowie nie może składać się ze kodów {{Strong|HTML}} literowych o wzorze {{Code|{{Nowiki|&(%a+);}}}}. Natomiast może składać się z {{Code|{{Nowiki|&#(%d+);}}}} i {{Code|{{Nowiki|&#x(%x+);}}}}, ale w pierw te kody muszą być zamienione na normalne znaki. Skrótowa definicja funkcji: <syntaxhighlight lang="lua"> function p.CzyNiepoprawnaNazwa(nazwa_jednostki)...end; </syntaxhighlight> Wtedy ciało funkcji tej, czyli jego definicja w środku, jest: <syntaxhighlight lang="lua"> -- Moduł: "Moduł:Html/dane", służy do ładowania znaku o kodzie HTML "&#127;"; local html_dane_modul=mw.loadData("Module:Html/dane"); return mw.ustring.match(nazwa_jednostki,"[{}<>|%[%]#\n"..html_dane_modul.znak_127.."]+") or mw.ustring.match(nazwa_jednostki,"~~~") or mw.ustring.match(nazwa_jednostki,"&(%a+);"); </syntaxhighlight> Parametry: * {{Code|nazwa_jednostki}} - nazwa jednostki do sprawdzenia. Przykłady: <syntaxhighlight lang="lua"> local pudelko_modul=require("Module:Pudełko"); -- Podana przykładowa niepoprawna nazwa jedostki local nazwa_jednostki="Nazwa pliku [[Nazwa linku w pliku]]"; -- Fukcja zwróci wartość: local czy_poprawna_nazwa=true; local czy_poprawna_nazwa=pudelko_modul.CzyNiepoprawnaNazwa(nazwa_jednostki); </syntaxhighlight> == Funkcje nazw przestrzeni nazw == === {{Code|p["Nazwa przestrzeni nazw"](frame,...)}} === Funkcja pisze nazwę przestrzeni nazw, niezależnie, czy to jest przedmiotowa, czy dyskusji, według podanej w zmiennej {{Code|nazwa przestrzeni nazw}} dla pozycja bazowej w podanych parametrach szablonu rodzicu ramki dziecka, lub dla innej pozycji należy parametr podawać w formie {{Code|nazwa przestrzeni nazw 1}}, {{Code|nazwa przestrzeni nazw 2}}, {{Code|nazwa przestrzeni nazw 3}},..., lub te parametry można podać w postaci ogólnej {{Code|nazwa przestrzeni nazw i}}. Parametry podaje się w parametrach rodzica wywołania tej funkcji {{Code|{{m|Pudełko|Nazwa przestrzeni nazw}}}} (ale ich nie trzeba podawać w dziecku, ale można) i w parametrach dziecka, jeśli chodzi o zmienną {{Code|numer jednostki}}, czyli np.: {{Code|{{m|Pudełko|Nazwa przestrzeni nazw|numer jednostki{{=}}<jakaś liczba całkowita dodatnia>}}}}. Te parametry przestrzenne zamiast w rodzicu w szablonie można podać w ramce dziecka, wtedy parametry dziecka mają pierwszeństwo. Przestrzeń nazw z parametrów nazw przestrzennych może odpowiadać wartości przestrzeni głównej, to wtedy odpowiednia przestrzeń nazw z parametru nazwy jednostki się nie liczy w tej funkcji, aby się liczyła należy użyć funkcji {{Code|{{sr|#p["Nazwa przestrzeni nazw 2"](frame,...)|p=Pudełko}}}}. Definicja skrótowa funkcji: <syntaxhighlight lang="lua"> p["Nazwa przestrzeni nazw"]=function(frame,czy_uwzglednic_alternatywna_nazwe,i)...end; </syntaxhighlight> Wtedy ciało funkcji tej, czyli jego definicja w środku, jest: <syntaxhighlight lang="lua"> -- Jest liczony numer parametru nazwy przestrzeni nazw, domyslnie chodzi tu o numer bazowy parametrów przestrzennych; local numer_jednostki=i or frame.args["numer jednostki"]; local liczba_numer_jednostki=((numer_jednostki)and(tonumber(numer_jednostki))or 0); local pudelko_pomocne_modul=require("Module:Pudełko/Pomocne"); -- Liczy nazwę przestrzeni nazw na podstawie podanych parametrów; return pudelko_pomocne_modul.Nazwa_przestrzeni_nazw(frame,0, czy_uwzglednic_alternatywna_nazwe,liczba_numer_jednostki); </syntaxhighlight> Parametry funkcji: * {{Code|frame}} - tablica ramki tablicy transportu, * {{Code|czy_uwzglednic_alternatywna_nazwe}} - czy ma uwzględniać nazwę przestrzeni nazw domyślną szablonu, dostępne wartości: {{Code|false}}, w której nazwa domyślna nie jest uwzględniana wtedy, oraz {{Code|nil}} i {{Code|true}}, które oznaczają to samo, w tym jeżeli ona jest uwzględniana, wtedy jest brany parametr pierwszy dziecka, który musi istnieć przy takiej wartości tego parametru, tzn. {{Code|{{m|Pudełko|Nazwa przestrzeni nazw|Szablon}}}}, a nazwa uzyskana nazwy przestrzeni nazw jest w takim przypadku błędna, a jeżeli nazwa domyślna jest błędna, czyli {{Code|{{m|Pudełko|Nazwa przestrzeni nazw|Moja przestrzeń}}}}, wtedy funkcja zwraca stan błędu {{Code|(błąd)}}. * {{Code|i}} - numer zmiennej nazwy przestrzeni nazw. Funkcja wykorzystuje {{Code|{{sr|#p.Nazwa_przestrzeni_nazw(frame,...)|p=Pudełko/Pomocne}}}} do wyznaczania ogólnego nazwy przestrzeni nazw dla pozycji bazowej i numerkowej, tzn. dla pozycji: jeden, dwa, trzy,..., itd, i ich ogólnej. Parametr ramki tablicy transportu rodzica szablonu: * {{Code|nazwa przestrzeni nazw}}, {{Code|nazwa przestrzeni nazw 1}}, {{Code|nazwa przestrzeni nazw 2}}, {{Code|nazwa przestrzeni nazw 3}},..., {{Code|nazwa przestrzeni nazw i}} - nazwy przestrzeni nazw dla pozycji bazowej oraz zwykłej i ogólnej numerkowej, * {{Code|typ jednostki}}, {{Code|typ jednostki 1}}, {{Code|typ jednostki 2}}, {{Code|typ jednostki 3}},..., {{Code|typ jednostki i}} - typy jednostek, którym odpowiadają pewne przestrzenie przedmiotowe, dla pozycji bazowej, numerkowej i ogólnej, ** {{Code|dyskusja typu jednostki}}, {{Code|dyskusja typu jednostki 1}}, {{Code|dyskusja typ jednostki 2}}, {{Code|dyskusja typ jednostki 3}},..., {{Code|dyskusja typ jednostki i}} - czy dany typ jednostki ma przedstawiać, jeśli niepusta, przestrzeń dyskusji dla pozycji bazowej, numerkowej i ogólnej. Parametry ramki tablicy transportu dziecka: * Parametry dziecka są takie same jak rodzica dla funkcji pudełkowej plus tu wymienione, * {{Code|numer jednostki}} - jak parametr {{Code|i}} nie został ustawiony, to wtedy liczy się ta zmienna. Przykłady: <syntaxhighlight lang="mediawiki"> {{Nazwa szablonu|nazwa przestrzeni nazw=Wikibooks|nazwa przestrzeni nazw 2=Szablon|nazwa przestrzeni nazw i=Moduł}} </syntaxhighlight> W dziecku powiedzmy jest wywołanie, i szukamy nazwy przestrzeni nazw o numerze dwa, która nie została podana, ale istnieje za to jej wersji ogólna {{Code|nazwa przestrzeni nazw i}} i domyślna {{Code|nazwa przestrzeni nazw}}: <syntaxhighlight lang="mediawiki"> {{#invoke:Pudełko|Nazwa przestrzeni nazw|numer jednostki=1}} </syntaxhighlight> Na podstawie powyższego przykładu otrzymamy wynik o schemacie, nie wyniku, bo tam nie ma zmiennej {{Code|nazwa przestrzeni nazw 1}}, ale jest {{Code|nazwa przestrzeni nazw i}}: <syntaxhighlight lang="mediawiki"> <!-- Ale nie "nazwa przestrzeni nazw", bo jej nie ma, ale za to istnieje "nazwa przestrzeni nazw i"; --> <!-- nazwa przestrzeni nazw 2=nazwa przestrzeni nazw i=Moduł; --> <!-- Czyli wynik: --> Moduł <!-- Widzimy, że wygenerowała się nazwa przestrzeni nazw, którą jest przestrzeń programowa, którą również jest "Szablon"; --> </syntaxhighlight> Nie jest brana w tym powyższym przykładzie zmienna {{Code|nazwa przestrzeni nazw}}, bo jej nie ma, ale za to jest {{Code|nazwa przestrzeni nazw i}}, bo ona występuje jako parametr domyślny ogólny dla parametrów numerkowych. Przykłady w wikikodzie: * {{Code|{{m|Pudełko|Nazwa przestrzeni nazw|numer jednostki{{=}}2}}}} → {{Tt|{{#invoke:Pudełko|Nazwa przestrzeni nazw|numer jednostki=2}}}} * {{Code|{{m|Pudełko|Nazwa przestrzeni nazw|Szablon|nazwa przestrzeni nazw i{{=}}Moja przestrzeń|numer jednostki{{=}}2}}}} → {{Tt|{{#invoke:Pudełko|Nazwa przestrzeni nazw|Szablon|nazwa przestrzeni nazw i=Moja przestrzeń|numer jednostki=2}}}} * {{Code|{{m|Pudełko|Nazwa przestrzeni nazw|nazwa przestrzeni nazw 2{{=}}Szablon|numer jednostki{{=}}2}}}} → {{Tt|{{#invoke:Pudełko|Nazwa przestrzeni nazw|nazwa przestrzeni nazw 2=Szablon|numer jednostki=2}}}} * {{Code|{{m|Pudełko|Nazwa przestrzeni nazw|nazwa przestrzeni nazw 2{{=}}Szablon|numer jednostki{{=}}2}}}} → {{Tt|{{#invoke:Pudełko|Nazwa przestrzeni nazw|nazwa przestrzeni nazw i=Szablon|numer jednostki=2}}}} * {{Code|{{m|Pudełko|Nazwa przestrzeni nazw|nazwa przestrzeni nazw{{=}}Szablon|numer jednostki{{=}}2}}}} → {{Tt|{{#invoke:Pudełko|Nazwa przestrzeni nazw|nazwa przestrzeni nazw=Szablon|numer jednostki=2}}}} Powyżej dla przykładu podano parametry nie w rodzicu w szablonie, tylko w dziecku, jeśli chodzi o parametry nazw przestrzeni nazw, ale ich się za to nie powinno podawać w tych ramach, tylko w szablonach, w których wywoływane są te ramki pudełek {{Code|{{m|Pudełko}}}}, ale tak tutaj tak zrobiono by było najłatwiej sprawdzić działanie tego typu funkcji. Analogicznie możemy podawać parametry typu jednostki, np.: wywołaniu modułowym {{Code|{{m|Pudełko|Nazwa przestrzeni nazw|typ jednostki 2{{=}}strona szablonu|numer jednostki{{=}}2}}}}, ale o tym więcej w rozdziałach {{Code|{{sr|# p["Typ jednostki"](frame,i)|p=Pudełko}}}}, {{Code|{{sr|#p["Typ jednostki 2"](frame,i)|p=Pudełko}}}}, {{Code|{{sr|#p["Typ jednostki 3"](frame,i)|p=Pudełko}}}} itp. w „{{sr|#Funkcje typu jednostki|p=Pudełko}}”, on definiuje przestrzenie przedmiotowe, ale można użyć parametru dyskusji typu jednostki z wartością niepustą, wtedy wyświetli się nazwa przestrzeni nazw dyskusji. Również parametry typu jednostki nie powinno się podawać w dziecku w ramce, tylko w rodzicu w szablonie jako parametry, w którym ta ramka jest wywoływana, ale tutaj podano jedynie dla przykładu, jak najłatwiej sprawdzić działanie tych parametrów tej funkcji. Najpierw w funkcji nagłówku brane są parametry nazw przestrzeni nazw, a jeżeli ich nie ma, to parametry typu jednostki, a jeżeli nie ma, to generowane są nazwy na podstawie aktualnego modułu. === {{Code|p["Nazwa przedmiotowej przestrzeni nazw"](frame,...)}} === Funkcja pisze przedmiotową nazwę przestrzeni nazw jakikolwiek nazwy przestrzeni nazw (tzn. nazwę przedmiotową nazwy przestrzenie nazw, czyli nie dyskusji, zamieniana jest na nią samą, czyli identyfikator przestrzeni się nie zmienia, a dyskusji, nie przedmiotową, przekształca się na przedmiotową jej odpowiadającą, czyli w tym przypadku identyfikator przestrzeni zmniejsza się o numer mniej), według podanej w zmiennej {{Code|nazwa przestrzeni nazw}} dla pozycja bazowej w podanych parametrach szablonu rodzicu ramki dziecka, lub dla innej pozycji należy parametr podawać w formie {{Code|nazwa przestrzeni nazw 1}}, {{Code|nazwa przestrzeni nazw 2}}, {{Code|nazwa przestrzeni nazw 3}},..., lub te parametry można podać w postaci ogólnej {{Code|nazwa przestrzeni nazw i}}. Parametry podaje się w parametrach rodzica wywołania tej funkcji {{Code|{{m|Pudełko|Nazwa przedmiotowej przestrzeni nazw}}}} (ale ich nie trzeba podawać w dziecku, ale można) i w parametrach dziecka, jeśli chodzi o zmienną {{Code|numer jednostki}}, czyli np.: {{Code|{{m|Pudełko|Nazwa przedmiotowej przestrzeni nazw|numer jednostki{{=}}<jakaś liczba całkowita dodatnia>}}}}. Te parametry przestrzenne zamiast w rodzicu w szablonie można podać w ramce dziecka, wtedy parametry dziecka mają pierwszeństwo. Parametry przestrzenne mogą mogą być podane w postaci przestrzeni przedmiotowej lub dyskusji, ale ta funkcja zawsze ją zamienia na przedmiotową. Przestrzeń nazw z parametrów nazw przestrzennych może odpowiadać wartości przestrzeni głównej, to wtedy odpowiednia przestrzeń nazw z parametru nazwy jednostki się nie liczy w tej funkcji, aby się liczyła należy użyć funkcji {{Code|{{sr|#p["Nazwa przedmiotowej przestrzeni nazw 2"](frame,...)|p=Pudełko}}}}. Definicja skrótowa funkcji: <syntaxhighlight lang="lua"> p["Nazwa przedmiotowej przestrzeni nazw"]=function(frame,czy_uwzglednic_alternatywna_nazwe,i)...end; </syntaxhighlight> Wtedy ciało funkcji tej, czyli jego definicja w środku, jest: <syntaxhighlight lang="lua"> -- Jest liczony numer parametru nazwy przestrzeni nazw, domyslnie chodzi tu o numer bazowy parametrów przestrzennych; local numer_jednostki=i or frame.args["numer jednostki"]; local liczba_numer_jednostki=((numer_jednostki)and(tonumber(numer_jednostki))or 0); local pudelko_pomocne_modul=require("Module:Pudełko/Pomocne"); -- Liczy nazwę przestrzeni nazw przedmiotową na podstawie podanych parametrów; return pudelko_pomocne_modul.Nazwa_przestrzeni_nazw(frame,1, czy_uwzglednic_alternatywna_nazwe,liczba_numer_jednostki); </syntaxhighlight> Parametry funkcji: * {{Code|frame}} - tablica ramki tablicy transportu, * {{Code|czy_uwzglednic_alternatywna_nazwe}} - czy ma uwzględniać nazwę przestrzeni nazw domyślną szablonu, dostępne wartości: {{Code|false}}, w której nazwa domyślna nie jest uwzględniana wtedy, oraz {{Code|nil}} i {{Code|true}}, które oznaczają to samo, w tym jeżeli ona jest uwzględniana, wtedy jest brany parametr pierwszy dziecka, który musi istnieć przy takiej wartości tego parametru, tzn. {{Code|{{m|Pudełko|Nazwa przedmiotowej przestrzeni nazw|Dyskusja szablonu}}}} - ta nazwa domyślna zostanie zamieniona na przedmiotową, a jak ona by była przedmiotowa, to żadnej zamiany by nie było, a nazwa uzyskana z nazwy przestrzeni nazw z parametrów przestrzennych jest w takim przypadku błędna, to w takim razie brany jest ten parametr, a jeżeli ta nazwa domyślna jest błędna, czyli {{Code|{{m|Pudełko|Nazwa przedmiotowej przestrzeni nazw|Moja przestrzeń}}}}, wtedy funkcja zwraca stan błędu {{Code|(błąd)}}. * {{Code|i}} - numer zmiennej nazwy przestrzeni nazw. Funkcja wykorzystuje {{Code|{{sr|#p.Nazwa_przestrzeni_nazw(frame,...)|p=Pudełko/Pomocne}}}} do wyznaczania ogólnego nazwy przestrzeni nazw dla pozycji bazowej i numerkowej, tzn. dla pozycji: jeden, dwa, trzy,..., itd, i ich ogólnej. Parametr ramki tablicy transportu rodzica szablonu: * {{Code|nazwa przestrzeni nazw}}, {{Code|nazwa przestrzeni nazw 1}}, {{Code|nazwa przestrzeni nazw 2}}, {{Code|nazwa przestrzeni nazw 3}},..., {{Code|nazwa przestrzeni nazw i}} - nazwy przestrzeni nazw dla pozycji bazowej oraz zwykłej i ogólnej numerkowej, * {{Code|typ jednostki}}, {{Code|typ jednostki 1}}, {{Code|typ jednostki 2}}, {{Code|typ jednostki 3}},..., {{Code|typ jednostki i}} - typy jednostek, którym odpowiadają pewne przestrzenie przedmiotowe, dla pozycji bazowej, numerkowej i ogólnej. Parametry ramki tablicy transportu dziecka: * Parametry dziecka są takie same jak rodzica dla funkcji pudełkowej plus tu wymienione, * {{Code|numer jednostki}} - jak parametr {{Code|i}} nie został ustawiony, to wtedy liczy się ta zmienna. Przykłady: <syntaxhighlight lang="mediawiki"> {{Nazwa szablonu|nazwa przestrzeni nazw=Dyskusja Wikibooks|nazwa przestrzeni nazw 2=Dyskusja szablonu|nazwa przestrzeni nazw i=Dyskusja modułu}} </syntaxhighlight> W dziecku powiedzmy jest wywołanie, i szukamy nazwy przestrzeni nazw o numerze dwa, która nie została podana, ale istnieje za to jej wersji ogólna {{Code|nazwa przestrzeni nazw i}} i domyślna {{Code|nazwa przestrzeni nazw}}: <syntaxhighlight lang="mediawiki"> {{#invoke:Pudełko|Nazwa przedmiotowej przestrzeni nazw|numer jednostki=1}} </syntaxhighlight> Na podstawie powyższego przykładu otrzymamy wynik o schemacie, nie wyniku, bo tam nie ma zmiennej {{Code|nazwa przestrzeni nazw 1}}, ale jest {{Code|nazwa przestrzeni nazw i}}: <syntaxhighlight lang="mediawiki"> <!-- Ale nie "nazwa przestrzeni nazw", bo jej nie ma, ale za to istnieje "nazwa przestrzeni nazw i"; --> <!-- nazwa przestrzeni nazw 2=nazwa przestrzeni nazw i=Dyskusja modułu; --> <!-- Czyli wynik: --> Moduł <!-- Widzimy, że wygenerowała się nazwa przestrzeni nazw, którą jest przestrzeń przedmiotowa programowa przestrzeni dyskusji "Dyskusja modułu", którą również jest "Szablon" jego przestrzeni dyskusji "Dyskusja szablonu", a dla ich przestrzeni przedmiotowej, zamiast dyskusji, to samo przekształca się na to samo; --> </syntaxhighlight> Nie jest brana w tym powyższym przykładzie zmienna {{Code|nazwa przestrzeni nazw}}, bo jej nie ma, ale za to jest {{Code|nazwa przestrzeni nazw i}}, bo ona występuje jako parametr domyślny ogólny dla parametrów numerkowych. Przykłady w wikikodzie: * {{Code|{{m|Pudełko|Nazwa przedmiotowej przestrzeni nazw|numer jednostki{{=}}2}}}} → {{Tt|{{#invoke:Pudełko|Nazwa przedmiotowej przestrzeni nazw|numer jednostki=2}}}} * {{Code|{{m|Pudełko|Nazwa przedmiotowej przestrzeni nazw|Dyskusja szablonu|nazwa przestrzeni nazw i{{=}}Moja przestrzeń|numer jednostki{{=}}2}}}} → {{Tt|{{#invoke:Pudełko|Nazwa przedmiotowej przestrzeni nazw|Dyskusja szablonu|nazwa przestrzeni nazw i=Moja przestrzeń|numer jednostki=2}}}} * {{Code|{{m|Pudełko|Nazwa przedmiotowej przestrzeni nazw|nazwa przestrzeni nazw 2{{=}}Dyskusja szablonu|numer jednostki{{=}}2}}}} → {{Tt|{{#invoke:Pudełko|Nazwa przedmiotowej przestrzeni nazw|nazwa przestrzeni nazw 2=Dyskusja szablonu|numer jednostki=2}}}} * {{Code|{{m|Pudełko|Nazwa przedmiotowej przestrzeni nazw|nazwa przestrzeni nazw 2{{=}}Dyskusja szablonu|numer jednostki{{=}}2}}}} → {{Tt|{{#invoke:Pudełko|Nazwa przedmiotowej przestrzeni nazw|nazwa przestrzeni nazw i=Dyskusja szablonu|numer jednostki=2}}}} * {{Code|{{m|Pudełko|Nazwa przedmiotowej przestrzeni nazw|nazwa przestrzeni nazw{{=}}Dyskusja szablonu|numer jednostki{{=}}2}}}} → {{Tt|{{#invoke:Pudełko|Nazwa przedmiotowej przestrzeni nazw|nazwa przestrzeni nazw=Dyskusja szablonu|numer jednostki=2}}}} Powyżej dla przykładu podano parametry nie w rodzicu w szablonie, tylko w dziecku, jeśli chodzi o parametry nazw przestrzeni nazw, ale ich się za to nie powinno podawać w tych ramach, tylko w szablonach, w których wywoływane są te ramki pudełek {{Code|{{m|Pudełko}}}}, ale tak tutaj tak zrobiono by było najłatwiej sprawdzić działanie tego typu funkcji. Analogicznie możemy podawać parametry typu jednostki, np.: wywołaniu modułowym {{Code|{{m|Pudełko|Nazwa przedmiotowej przestrzeni nazw|typ jednostki 2{{=}}strona szablonu|numer jednostki{{=}}2}}}}, ale o tym więcej w rozdziałach {{Code|{{sr|# p["Typ jednostki"](frame,i)|p=Pudełko}}}}, {{Code|{{sr|#p["Typ jednostki 2"](frame,i)|p=Pudełko}}}}, {{Code|{{sr|#p["Typ jednostki 3"](frame,i)|p=Pudełko}}}} itp. w „{{sr|#Funkcje typu jednostki|p=Pudełko}}”, ale wtedy ta sama nazwa przestrzeni nazw reprezentowana przez {{Parametr|typ jednostki 2|strona szablonu}}, jest zamieniana na to samo, lepiej jest tutaj używać parametrów przestrzennych nazw niż typu jednostki, bo typ jednostki ma taką samą wartość dla przestrzeni przedmiotowej, co dyskusji. Tutaj parametr dyskusji typu jednostki bazowy i numerkowy ogólny, czy szczegółowy, nie gra roli, bo nawet, gdy wygenerujemy nazwę przestrzeni dyskusji za pomoca tego parametru, to i tak otrzymamy na samym końcu jego nazwę przedmiotową. Również parametry typu jednostki nie powinno się podawać w dziecku w ramce, tylko w rodzicu w szablonie jako parametry, w którym ta ramka jest wywoływana, ale tutaj podano jedynie dla przykładu, jak najłatwiej sprawdzić działanie tych parametrów tej funkcji. Najpierw w funkcji nagłówku brane są parametry nazw przestrzeni nazw, a jeżeli ich nie ma, to parametry typu jednostki, a jeżeli nie ma, to generowane są nazwy na podstawie aktualnego modułu. === {{Code|p["Nazwa przestrzeni nazw dyskusji"](frame,...)}} === Funkcja pisze nazwę przestrzeni nazw dyskusji jakikolwiek nazwy przestrzeni nazw (tzn. nazwę przedmiotową nazwy przestrzenie nazw, czyli nie dyskusji, zamieniana jest na dyskusji, czyli identyfikator przestrzeni się zmienia jeden wyżej, a dyskusji, nie przedmiotową, przekształca się na tą samą), według podanej w zmiennej {{Code|nazwa przestrzeni nazw}} dla pozycja bazowej w podanych parametrach szablonu rodzicu ramki dziecka, lub dla innej pozycji należy parametr podawać w formie {{Code|nazwa przestrzeni nazw 1}}, {{Code|nazwa przestrzeni nazw 2}}, {{Code|nazwa przestrzeni nazw 3}},..., lub te parametry można podać w postaci ogólnej {{Code|nazwa przestrzeni nazw i}}. Parametry podaje się w parametrach rodzica wywołania tej funkcji {{Code|{{m|Pudełko|Nazwa przestrzeni nazw dyskusji}}}} (ale ich nie trzeba podawać w dziecku, ale można) i w parametrach dziecka, jeśli chodzi o zmienną {{Code|numer jednostki}}, czyli np.: {{Code|{{m|Pudełko|Nazwa przestrzeni nazw dyskusji|numer jednostki{{=}}<jakaś liczba całkowita dodatnia>}}}}. Te parametry przestrzenne zamiast w rodzicu w szablonie można podać w ramce dziecka, wtedy parametry dziecka mają pierwszeństwo. Parametry przestrzenne mogą mogą być podane w postaci przestrzeni przedmiotowej lub dyskusji, ale ta funkcja zawsze ją zamienia na dyskusji. Przestrzeń nazw z parametrów nazw przestrzennych może odpowiadać wartości przestrzeni głównej, to wtedy odpowiednia przestrzeń nazw z parametru nazwy jednostki się nie liczy w tej funkcji, aby się liczyła należy użyć funkcji {{Code|{{sr|#p["Nazwa przestrzeni nazw dyskusji 2"](frame,...)|p=Pudełko}}}}. Definicja skrótowa funkcji: <syntaxhighlight lang="lua"> p["Nazwa przestrzeni nazw dyskusji"]=function(frame,czy_uwzglednic_alternatywna_nazwe,i)...end; </syntaxhighlight> Wtedy ciało funkcji tej, czyli jego definicja w środku, jest: <syntaxhighlight lang="lua"> -- Jest liczony numer parametru nazwy przestrzeni nazw, domyslnie chodzi tu o numer bazowy parametrów przestrzennych; local numer_jednostki=i or frame.args["numer jednostki"]; local liczba_numer_jednostki=((numer_jednostki)and(tonumber(numer_jednostki))or 0); local pudelko_pomocne_modul=require("Module:Pudełko/Pomocne"); -- Liczy nazwę przestrzeni nazw dyskusji na podstawie podanych parametrów; return pudelko_pomocne_modul.Nazwa_przestrzeni_nazw(frame,2, czy_uwzglednic_alternatywna_nazwe,liczba_numer_jednostki); </syntaxhighlight> Parametry funkcji: * {{Code|frame}} - tablica ramki tablicy transportu, * {{Code|czy_uwzglednic_alternatywna_nazwe}} - czy ma uwzględniać nazwę przestrzeni nazw domyślną szablonu, dostępne wartości: {{Code|false}}, w której nazwa domyślna nie jest uwzględniana wtedy, oraz {{Code|nil}} i {{Code|true}}, które oznaczają to samo, w tym jeżeli ona jest uwzględniana, wtedy jest brany parametr pierwszy dziecka, który musi istnieć przy takiej wartości tego parametru, tzn. {{Code|{{m|Pudełko|Nazwa przestrzeni nazw dyskusji|Szablon}}}} - ta nazwa domyślna zostanie przekształcona na dyskusji, a jeżeli ona by była dyskusji, to nie byłoby żadnego przekształcenia, a nazwa uzyskana nazwy przestrzeni nazw z parametrów przestrzennych jest w takim przypadku błędna, to w takim razie brany jest ten parametr, a jeżeli nazwa domyślna jest błędna, czyli {{Code|{{m|Pudełko|Nazwa przestrzeni nazw dyskusji|Moja przestrzeń}}}}, wtedy funkcja zwraca stan błędu {{Code|(błąd)}}. * {{Code|i}} - numer zmiennej nazwy przestrzeni nazw. Funkcja wykorzystuje {{Code|{{sr|#p.Nazwa_przestrzeni_nazw(frame,...)|p=Pudełko/Pomocne}}}} do wyznaczania ogólnego nazwy przestrzeni nazw dla pozycji bazowej i numerkowej, tzn. dla pozycji: jeden, dwa, trzy,..., itd, i ich ogólnej. Parametr ramki tablicy transportu rodzica szablonu: * {{Code|nazwa przestrzeni nazw}}, {{Code|nazwa przestrzeni nazw 1}}, {{Code|nazwa przestrzeni nazw 2}}, {{Code|nazwa przestrzeni nazw 3}},..., {{Code|nazwa przestrzeni nazw i}} - nazwy przestrzeni nazw dla pozycji bazowej oraz zwykłej i ogólnej numerkowej, * {{Code|typ jednostki}}, {{Code|typ jednostki 1}}, {{Code|typ jednostki 2}}, {{Code|typ jednostki 3}},..., {{Code|typ jednostki i}} - typy jednostek, którym odpowiadają pewne przestrzenie przedmiotowe, dla pozycji bazowej, numerkowej i ogólnej. Parametry ramki tablicy transportu dziecka: * Parametry dziecka są takie same jak rodzica dla funkcji pudełkowej plus tu wymienione, * {{Code|numer jednostki}} - jak parametr {{Code|i}} nie został ustawiony, to wtedy liczy się ta zmienna. Przykłady: <syntaxhighlight lang="mediawiki"> {{Nazwa szablonu|nazwa przestrzeni nazw=Wikibooks|nazwa przestrzeni nazw 2=Szablon|nazwa przestrzeni nazw i=Moduł}} </syntaxhighlight> W dziecku powiedzmy jest wywołanie, i szukamy nazwy przestrzeni nazw o numerze dwa, która nie została podana, ale istnieje za to jej wersji ogólna {{Code|nazwa przestrzeni nazw i}} i domyślna {{Code|nazwa przestrzeni nazw}}: <syntaxhighlight lang="mediawiki"> {{#invoke:Pudełko|Nazwa przestrzeni nazw dyskusji|numer jednostki=1}} </syntaxhighlight> Na podstawie powyższego przykładu otrzymamy wynik o schemacie, nie wyniku, bo tam nie ma zmiennej {{Code|nazwa przestrzeni nazw 1}}, ale jest {{Code|nazwa przestrzeni nazw i}}: <syntaxhighlight lang="mediawiki"> <!-- Ale nie "nazwa przestrzeni nazw", bo jej nie ma, ale za to istnieje "nazwa przestrzeni nazw i"; --> <!-- nazwa przestrzeni nazw 2=nazwa przestrzeni nazw i=Moduł; --> <!-- Czyli wynik: --> Dyskusja modułu <!-- Widzimy, że wygenerowała się nazwa przestrzeni nazw, którą jest przestrzeń dyskusji przestrzeni programowej przestrzeni przedmiotowej "Moduł", którą również jest "Szablon" jego przestrzeni dyskusji "Dyskusja szablonu", a dla ich przestrzeni przedmiotowej, zamiast dyskusji, to przekształca się na dyskusji jej odpowiadającą; --> </syntaxhighlight> Nie jest brana w tym powyższym przykładzie zmienna {{Code|nazwa przestrzeni nazw}}, bo jej nie ma, ale za to jest {{Code|nazwa przestrzeni nazw i}}, bo ona występuje jako parametr domyślny ogólny dla parametrów numerkowych. Przykłady w wikikodzie: * {{Code|{{m|Pudełko|Nazwa przestrzeni nazw dyskusji|numer jednostki{{=}}2}}}} → {{Tt|{{#invoke:Pudełko|Nazwa przestrzeni nazw dyskusji|numer jednostki=2}}}} * {{Code|{{m|Pudełko|Nazwa przestrzeni nazw dyskusji|Szablon|nazwa przestrzeni nazw i{{=}}Moja przestrzeń|numer jednostki{{=}}2}}}} → {{Tt|{{#invoke:Pudełko|Nazwa przestrzeni nazw dyskusji|Szablon|nazwa przestrzeni nazw i=Moja przestrzeń|numer jednostki=2}}}} * {{Code|{{m|Pudełko|Nazwa przestrzeni nazw dyskusji|nazwa przestrzeni nazw 2{{=}}Szablon|numer jednostki{{=}}2}}}} → {{Tt|{{#invoke:Pudełko|Nazwa przestrzeni nazw dyskusji|nazwa przestrzeni nazw 2=Szablon|numer jednostki=2}}}} * {{Code|{{m|Pudełko|Nazwa przestrzeni nazw dyskusji|nazwa przestrzeni nazw 2{{=}}Szablon|numer jednostki{{=}}2}}}} → {{Tt|{{#invoke:Pudełko|Nazwa przestrzeni nazw dyskusji|nazwa przestrzeni nazw i=Szablon|numer jednostki=2}}}} * {{Code|{{m|Pudełko|Nazwa przestrzeni nazw dyskusji|nazwa przestrzeni nazw{{=}}Szablon|numer jednostki{{=}}2}}}} → {{Tt|{{#invoke:Pudełko|Nazwa przestrzeni nazw dyskusji|nazwa przestrzeni nazw=Szablon|numer jednostki=2}}}} Powyżej dla przykładu podano parametry nie w rodzicu w szablonie, tylko w dziecku, jeśli chodzi o parametry nazw przestrzeni nazw, ale ich się za to nie powinno podawać w tych ramach, tylko w szablonach, w których wywoływane są te ramki pudełek {{Code|{{m|Pudełko}}}}, ale tak tutaj tak zrobiono by było najłatwiej sprawdzić działanie tego typu funkcji. Analogicznie możemy podawać parametry typu jednostki, np.: wywołaniu modułowym {{Code|{{m|Pudełko|Nazwa przestrzeni nazw dyskusji|typ jednostki 2{{=}}strona szablonu|numer jednostki{{=}}2}}}}, ale o tym więcej w rozdziałach {{Code|{{sr|# p["Typ jednostki"](frame,i)|p=Pudełko}}}}, {{Code|{{sr|#p["Typ jednostki 2"](frame,i)|p=Pudełko}}}}, {{Code|{{sr|#p["Typ jednostki 3"](frame,i)|p=Pudełko}}}} itp. w „{{sr|#Funkcje typu jednostki|p=Pudełko}}”, ale wtedy nazwa przestrzeni nazw reprezentowana przez {{Parametr|typ jednostki 2|strona szablonu}}, jest zamieniana na nazwę przestrzeni nazw dyskusji. Parametr dyskusji typu jednostki bazowy lub dla danego numerka ogólny, czy szczegółowy, nie gra roli. Również parametry typu jednostki nie powinno się podawać w dziecku w ramce, tylko w rodzicu w szablonie jako parametry, w którym ta ramka jest wywoływana, ale tutaj podano jedynie dla przykładu, jak najłatwiej sprawdzić działanie tych parametrów tej funkcji. Najpierw w funkcji nagłówku brane są parametry nazw przestrzeni nazw, a jeżeli ich nie ma, to parametry typu jednostki, a jeżeli nie ma, to generowane są nazwy na podstawie aktualnego modułu. == Funkcje nazw przestrzeni nazw drugiej wersji == === {{Code|p["Nazwa przestrzeni nazw 2"](frame,...)}} === Funkcja pisze nazwę przestrzeni nazw, niezależnie, czy to jest przedmiotowa, czy dyskusji, według, i nie zawsze tylko, podanej w zmiennej {{Code|nazwa przestrzeni nazw}} dla pozycja bazowej w podanych parametrach szablonu rodzicu ramki dziecka, lub dla innej pozycji należy parametr podawać w formie {{Code|nazwa przestrzeni nazw 1}}, {{Code|nazwa przestrzeni nazw 2}}, {{Code|nazwa przestrzeni nazw 3}},..., lub te parametry można podać w postaci ogólnej {{Code|nazwa przestrzeni nazw i}}. W tej funkcji trzeba też podawać parametry nazwy jednostek {{Code|nazwa jednostki}}, {{Code|nazwa jednostki 1}}, {{Code|nazwa jednostki 2}}, {{Code|nazwa jednostki 3}},... Parametry podaje się w parametrach rodzica wywołania tej funkcji {{Code|{{m|Pudełko|Nazwa przestrzeni nazw 2}}}} (ale ich nie trzeba podawać w dziecku, ale można) i w parametrach dziecka, jeśli chodzi o zmienną {{Code|numer jednostki}}, czyli np.: {{Code|{{m|Pudełko|Nazwa przestrzeni nazw 2|numer jednostki{{=}}<jakaś liczba całkowita dodatnia>}}}}. Te parametry przestrzenne zamiast w rodzicu w szablonie można podać w ramce dziecka, wtedy parametry dziecka mają pierwszeństwo. Przestrzeń nazw z parametrów nazw przestrzennych może odpowiadać wartości przestrzeni głównej, to wtedy odpowiednia przestrzeń nazw z parametru nazwy jednostki się liczy w tej funkcji, wtedy jest liczona nazwa przestrzeni nazw z tego parametru. Gdy parametry przestrzenne lub typ jednostki w drugim podejściu nie wskazują na przestrzeń główną, to wtedy działanie tej funkcji jest podobne do {{Code|{{sr|#p["Nazwa przestrzeni nazw"](frame,...)|p=Pudełko}}}}. Definicja skrótowa funkcji: <syntaxhighlight lang="lua"> p["Nazwa przestrzeni nazw 2"]=function(frame,czy_uwzglednic_alternatywna_nazwe,i)...end; </syntaxhighlight> Wtedy ciało funkcji tej, czyli jego definicja w środku, jest: <syntaxhighlight lang="lua"> local pudelko_pomocne_modul=require("Module:Pudełko/Pomocne"); -- Liczy nazwę przestrzeni nazw, jeżeli z parametrów przestrzennych przestrzeń wskazuje na główną, to wtedy jest liczona przestrzeń nazw z nazwy jednostki; return pudelko_pomocne_modul.Nazwa_przestrzeni_nazw_2(frame,czy_uwzglednic_alternatywna_nazwe,i) </syntaxhighlight> Parametry funkcji: * {{Code|frame}} - tablica ramki tablicy transportu, * {{Code|czy_uwzglednic_alternatywna_nazwe}} - czy ma uwzględniać nazwę przestrzeni nazw domyślną szablonu, dostępne wartości: {{Code|false}}, w której nazwa domyślna nie jest uwzględniana wtedy, oraz {{Code|nil}} i {{Code|true}}, które oznaczają to samo, w tym jeżeli ona jest uwzględniana, wtedy jest brany parametr pierwszy dziecka, który musi istnieć przy takiej wartości tego parametru, tzn. {{Code|{{m|Pudełko|Nazwa przestrzeni nazw 2|Szablon}}}}, a nazwa uzyskana nazwy przestrzeni nazw jest w takim przypadku błędna, a jeżeli nazwa domyślna jest błędna, czyli {{Code|{{m|Pudełko|Nazwa przestrzeni nazw 2|Moja przestrzeń}}}}, wtedy funkcja zwraca stan błędu {{Code|(błąd)}}. * {{Code|i}} - numer zmiennej nazwy przestrzeni nazw. Funkcja wykorzystuje {{Code|{{sr|#p.Nazwa_przestrzeni_nazw_2(frame,...)|p=Pudełko/Pomocne}}}} do wyznaczania ogólnego nazwy przestrzeni nazw dla pozycji bazowej i numerkowej, tzn. dla pozycji: jeden, dwa, trzy,..., itd, i ich ogólnej. Parametr ramki tablicy transportu rodzica szablonu: * {{Code|nazwa przestrzeni nazw}}, {{Code|nazwa przestrzeni nazw 1}}, {{Code|nazwa przestrzeni nazw 2}}, {{Code|nazwa przestrzeni nazw 3}},..., {{Code|nazwa przestrzeni nazw i}} - nazwy przestrzeni nazw dla pozycji bazowej oraz zwykłej i ogólnej numerkowej, * {{Code|nazwa jednostki}}, {{Code|nazwa jednostki 1}}, {{Code|nazwa jednostki 2}}, {{Code|nazwa jednostki 3}},... - nazwy jednostek dla pozycji bazowej i numerkowej, * {{Code|typ jednostki}}, {{Code|typ jednostki 1}}, {{Code|typ jednostki 2}}, {{Code|typ jednostki 3}},..., {{Code|typ jednostki i}} - typy jednostek, którym odpowiadają pewne przestrzenie przedmiotowe, dla pozycji bazowej, numerkowej i ogólnej, ** {{Code|dyskusja typu jednostki}}, {{Code|dyskusja typu jednostki 1}}, {{Code|dyskusja typ jednostki 2}}, {{Code|dyskusja typ jednostki 3}},..., {{Code|dyskusja typ jednostki i}} - czy dany typ jednostki ma przedstawiać, jeśli niepusta, przestrzeń dyskusji dla pozycji bazowej, numerkowej i ogólnej. Parametry ramki tablicy transportu dziecka: * Parametry dziecka są takie same jak rodzica dla funkcji pudełkowej plus tu wymienione, * {{Code|numer jednostki}} - jak parametr {{Code|i}} nie został ustawiony, to wtedy liczy się ta zmienna. Przykłady: <syntaxhighlight lang="mediawiki"> {{Nazwa szablonu|nazwa przestrzeni nazw=Wikibooks|nazwa przestrzeni nazw 1=Szablon|nazwa przestrzeni nazw i=|nazwa jednostki 2=Wikibooks:Strona}} </syntaxhighlight> W dziecku powiedzmy jest wywołanie, i szukamy nazwy przestrzeni nazw o numerze dwa, która została podana, ale istnieje za to jej wersji ogólna {{Code|nazwa przestrzeni nazw i}} i domyślna {{Code|nazwa przestrzeni nazw}}, ale wtedy dla tego numerkowego liczy się to ogólne z {{Code| i}}, a ponieważ ta nazwa jest pusta, więc będziemy liczyli nazwę przestrzeni nazw z {{Code|nazwa jednostki 2}}: <syntaxhighlight lang="mediawiki"> {{#invoke:Pudełko|Nazwa przestrzeni nazw 2|numer jednostki=2}} </syntaxhighlight> Na podstawie powyższego przykładu otrzymamy wynik o schemacie, nie wyniku, bo tam nie ma zmiennej {{Code|nazwa przestrzeni nazw 1}}, ale jest {{Code|nazwa przestrzeni nazw i}}: <syntaxhighlight lang="mediawiki"> <!-- Ale nie "nazwa przestrzeni nazw 2", bo jej nie ma, ale za to istnieje "nazwa przestrzeni nazw i"; --> <!-- nazwa przestrzeni nazw 2=nazwa przestrzeni nazw i="", a nazwa jednostki 2="Wikibooks:Strona"; --> <!-- Czyli wynik: --> Wikibooks <!-- Widzimy, że wygenerowała się nazwa przestrzeni nazw, którą jest przestrzeń nieprogramowa, ale projektu, wychodząca z nazwy jednostek w tym przypadku z "nazwa jednostki 2"; --> </syntaxhighlight> Nie jest brana w tym powyższym przykładzie zmienna {{Code|nazwa przestrzeni nazw}}, bo jej nie ma, ale za to jest {{Code|nazwa przestrzeni nazw i}}, bo ona występuje jako parametr domyślny ogólny dla parametrów numerkowych. Tytaj jest używana jest zmienna {{Code|nazwa jednostki 2}} do wygenerowania ostatecznego wyniku, bo jak można zauważyć, parametry przestrzenne wskazują na przestrzeń główną, a nazwy jednostek już nie. Przykłady w wikikodzie: * {{Code|{{m|Pudełko|Nazwa przestrzeni nazw 2|numer jednostki{{=}}2}}}} → {{Tt|{{#invoke:Pudełko|Nazwa przestrzeni nazw 2|numer jednostki=2}}}} * {{Code|{{m|Pudełko|Nazwa przestrzeni nazw 2|Szablon|nazwa przestrzeni nazw i{{=}}Moja przestrzeń|numer jednostki{{=}}2}}}} → {{Tt|{{#invoke:Pudełko|Nazwa przestrzeni nazw 2|Szablon|nazwa przestrzeni nazw i=Moja przestrzeń|numer jednostki=2}}}} * {{Code|{{m|Pudełko|Nazwa przestrzeni nazw 2|nazwa przestrzeni nazw 2{{=}}|nazwa jednostki 2{{=}}Szablon:Strona|numer jednostki{{=}}2}}}} → {{Tt|{{#invoke:Pudełko|Nazwa przestrzeni nazw 2|nazwa przestrzeni nazw 2=|nazwa jednostki 2=Szablon:Strona|numer jednostki=2}}}} * {{Code|{{m|Pudełko|Nazwa przestrzeni nazw 2|nazwa przestrzeni nazw i{{=}}|nazwa jednostki 2{{=}}Szablon:Strona|numer jednostki{{=}}2}}}} → {{Tt|{{#invoke:Pudełko|Nazwa przestrzeni nazw 2|nazwa przestrzeni nazw i=|nazwa jednostki 2=Szablon:Strona|numer jednostki=2}}}} * {{Code|{{m|Pudełko|Nazwa przestrzeni nazw 2|Szablon|nazwa przestrzeni nazw{{=}}|nazwa jednostki 2{{=}}Wikibooks:Strona|numer jednostki{{=}}2}}}} → {{Tt|{{#invoke:Pudełko|Nazwa przestrzeni nazw 2|Szablon|nazwa przestrzeni nazw=|nazwa jednostki 2=Wikibooks:Strona|numer jednostki=2}}}} Powyżej dla przykładu podano parametry nie w rodzicu w szablonie, tylko w dziecku, jeśli chodzi o parametry nazw przestrzeni nazw i nazw jednostek, ale ich się za to nie powinno podawać w tych ramach, tylko w szablonach, w których wywoływane są te ramki pudełek {{Code|{{m|Pudełko}}}}, ale tak tutaj tak zrobiono by było najłatwiej sprawdzić działanie tego typu funkcji. Analogicznie możemy podawać parametry typu jednostki, np.: wywołaniu modułowym {{Code|{{m|Pudełko|Nazwa przestrzeni nazw 2|typ jednostki 2{{=}}Podręcznik|nazwa jednostki 2{{=}}Szablon:Strona|numer jednostki{{=}}2}}}} (ale wtedy jest brana przestrzeń nazw z nazwy jednostki), ale o tym więcej w rozdziałach {{Code|{{sr|# p["Typ jednostki"](frame,i)|p=Pudełko}}}}, {{Code|{{sr|#p["Typ jednostki 2"](frame,i)|p=Pudełko}}}}, {{Code|{{sr|#p["Typ jednostki 3"](frame,i)|p=Pudełko}}}} itp. w „{{sr|#Funkcje typu jednostki|p=Pudełko}}”, on definiuje przestrzenie przedmiotowe, ale można użyć parametru dyskusji typu jednostki z wartością niepustą, wtedy wyświetli się nazwa przestrzeni nazw dyskusji. Jeżeli typ jednostki wskazuje na przestrzeń nazw główną, wtedy się liczą parametry nazw jednostek. Również parametry typu jednostki nie powinno się podawać w dziecku w ramce, tylko w rodzicu w szablonie jako parametry, w którym ta ramka jest wywoływana, ale tutaj podano jedynie dla przykładu, jak najłatwiej sprawdzić działanie tych parametrów tej funkcji. Najpierw w funkcji nagłówku brane są parametry nazw przestrzeni nazw, a jeżeli ich nie ma, to parametry typu jednostki, a jeżeli nie ma lub parametry przestrzenne wskazują na przestrzeń główną, i nie ma nazwy jednostki, to generowane są nazwy tej funkcji na podstawie aktualnej strony. === {{Code|p["Nazwa przedmiotowej przestrzeni nazw 2"](frame,...)}} === Funkcja pisze przedmiotową nazwę przestrzeni nazw jakikolwiek nazwy przestrzeni nazw (tzn. nazwę przedmiotową nazwy przestrzenie nazw, czyli nie dyskusji, zamieniana jest na nią samą, czyli identyfikator przestrzeni się nie zmienia, a dyskusji, nie przedmiotową, przekształca się na przedmiotową jej odpowiadającą, czyli w tym przypadku identyfikator przestrzeni zmniejsza się o numer mniej), według, i nie zawsze tylko, podanej w zmiennej {{Code|nazwa przestrzeni nazw}} dla pozycja bazowej w podanych parametrach szablonu rodzicu ramki dziecka, lub dla innej pozycji należy parametr podawać w formie {{Code|nazwa przestrzeni nazw 1}}, {{Code|nazwa przestrzeni nazw 2}}, {{Code|nazwa przestrzeni nazw 3}},..., lub te parametry można podać w postaci ogólnej {{Code|nazwa przestrzeni nazw i}}. W tej funkcji trzeba też podawać parametry nazwy jednostek {{Code|nazwa jednostki}}, {{Code|nazwa jednostki 1}}, {{Code|nazwa jednostki 2}}, {{Code|nazwa jednostki 3}},... Parametry podaje się w parametrach rodzica wywołania tej funkcji {{Code|{{m|Pudełko|Nazwa przedmiotowej przestrzeni nazw 2}}}} (ale ich nie trzeba podawać w dziecku, ale można) i w parametrach dziecka, jeśli chodzi o zmienną {{Code|numer jednostki}}, czyli np.: {{Code|{{m|Pudełko|Nazwa przedmiotowej przestrzeni nazw 2|numer jednostki{{=}}<jakaś liczba całkowita dodatnia>}}}}. Te parametry przestrzenne zamiast w rodzicu w szablonie można podać w ramce dziecka, wtedy parametry dziecka mają pierwszeństwo. Przestrzeń nazw z parametrów nazw przestrzennych po przekształceniu na przedmiotową może odpowiadać wartości przestrzeni głównej, to wtedy odpowiednia przestrzeń nazw z parametru nazwy jednostki się liczy w tej funkcji, wtedy jest liczona nazwa przestrzeni nazw z tego parametru. Gdy parametry przestrzenne lub typ jednostki w drugim podejściu nie wskazują na przestrzeń główną, to wtedy działanie tej funkcji jest podobne do {{Code|{{sr|#p["Nazwa przedmiotowej przestrzeni nazw"](frame,...)|p=Pudełko}}}}. Definicja skrótowa funkcji: <syntaxhighlight lang="lua"> p["Nazwa przedmiotowej przestrzeni nazw 2"]=function(frame,czy_uwzglednic_alternatywna_nazwe,i)...end; </syntaxhighlight> Wtedy ciało funkcji tej, czyli jego definicja w środku, jest: <syntaxhighlight lang="lua"> local pudelko_pomocne_modul=require("Module:Pudełko/Pomocne"); return pudelko_pomocne_modul.Nazwa_przestrzeni_nazw_przedmiotowa_dyskusji_2(frame,czy_uwzglednic_alternatywna_nazwe,i,"przedmiotowa"); </syntaxhighlight> Parametry funkcji: * {{Code|frame}} - tablica ramki tablicy transportu, * {{Code|czy_uwzglednic_alternatywna_nazwe}} - czy ma uwzględniać nazwę przestrzeni nazw domyślną szablonu, dostępne wartości: {{Code|false}}, w której nazwa domyślna nie jest uwzględniana wtedy, oraz {{Code|nil}} i {{Code|true}}, które oznaczają to samo, w tym jeżeli ona jest uwzględniana, wtedy jest brany parametr pierwszy dziecka, który musi istnieć przy takiej wartości tego parametru, tzn. {{Code|{{m|Pudełko|Nazwa przedmiotowej przestrzeni nazw 2|Szablon}}}}, a nazwa uzyskana nazwy przestrzeni nazw jest w takim przypadku błędna, a jeżeli nazwa domyślna jest błędna, czyli {{Code|{{m|Pudełko|Nazwa przedmiotowej przestrzeni nazw 2|Moja przestrzeń}}}}, wtedy funkcja zwraca stan błędu {{Code|(błąd)}}. * {{Code|i}} - numer zmiennej nazwy przestrzeni nazw. Funkcja wykorzystuje {{Code|{{sr|#p.Nazwa_przestrzeni_nazw_przedmiotowa_dyskusji_2(frame,...)|p=Pudełko/Pomocne}}}} do wyznaczania ogólnego nazwy przestrzeni nazw dla pozycji bazowej i numerkowej, tzn. dla pozycji: jeden, dwa, trzy,..., itd, i ich ogólnej. Parametr ramki tablicy transportu rodzica szablonu: * {{Code|nazwa przestrzeni nazw}}, {{Code|nazwa przestrzeni nazw 1}}, {{Code|nazwa przestrzeni nazw 2}}, {{Code|nazwa przestrzeni nazw 3}},..., {{Code|nazwa przestrzeni nazw i}} - nazwy przestrzeni nazw dla pozycji bazowej oraz zwykłej i ogólnej numerkowej, * {{Code|nazwa jednostki}}, {{Code|nazwa jednostki 1}}, {{Code|nazwa jednostki 2}}, {{Code|nazwa jednostki 3}},... - nazwy jednostek dla pozycji bazowej i numerkowej, * {{Code|typ jednostki}}, {{Code|typ jednostki 1}}, {{Code|typ jednostki 2}}, {{Code|typ jednostki 3}},..., {{Code|typ jednostki i}} - typy jednostek, którym odpowiadają pewne przestrzenie przedmiotowe, dla pozycji bazowej, numerkowej i ogólnej. Parametry ramki tablicy transportu dziecka: * Parametry dziecka są takie same jak rodzica dla funkcji pudełkowej plus tu wymienione, * {{Code|numer jednostki}} - jak parametr {{Code|i}} nie został ustawiony, to wtedy liczy się ta zmienna. Przykłady: <syntaxhighlight lang="mediawiki"> {{Nazwa szablonu|nazwa przestrzeni nazw=Wikibooks|nazwa przestrzeni nazw 1=Szablon|nazwa przestrzeni nazw i=|nazwa jednostki 2=Dyskusja Wikibooks:Strona}} </syntaxhighlight> W dziecku powiedzmy jest wywołanie, i szukamy nazwy przestrzeni nazw o numerze dwa, która została podana, ale istnieje za to jej wersji ogólna {{Code|nazwa przestrzeni nazw i}} i domyślna {{Code|nazwa przestrzeni nazw}}, ale wtedy dla tego numerkowego liczy się to ogólne z {{Code| i}}, a ponieważ ta nazwa jest pusta, więc będziemy liczyli nazwę przestrzeni nazw z {{Code|nazwa jednostki 2}}: <syntaxhighlight lang="mediawiki"> {{#invoke:Pudełko|Nazwa przedmiotowej przestrzeni nazw 2|numer jednostki=2}} </syntaxhighlight> Na podstawie powyższego przykładu otrzymamy wynik o schemacie, nie wyniku, bo tam nie ma zmiennej {{Code|nazwa przestrzeni nazw 1}}, ale jest {{Code|nazwa przestrzeni nazw i}}: <syntaxhighlight lang="mediawiki"> <!-- Ale nie "nazwa przestrzeni nazw 2", bo jej nie ma, ale za to istnieje "nazwa przestrzeni nazw i"; --> <!-- nazwa przestrzeni nazw 2=nazwa przestrzeni nazw i="", a nazwa jednostki 2="Dyskusja Wikibooks:Strona"; --> <!-- Czyli wynik: --> Wikibooks <!-- Widzimy, że wygenerowała się nazwa przestrzeni nazw, którą jest przestrzeń nieprogramowa, ale projektu, wychodząca z nazwy jednostek w tym przypadku z "nazwa jednostki 2"; --> </syntaxhighlight> Nie jest brana w tym powyższym przykładzie zmienna {{Code|nazwa przestrzeni nazw}}, bo jej nie ma, ale za to jest {{Code|nazwa przestrzeni nazw i}}, bo ona występuje jako parametr domyślny ogólny dla parametrów numerkowych. Tytaj jest używana jest zmienna {{Code|nazwa jednostki 2}} do wygenerowania ostatecznego wyniku, bo jak można zauważyć, parametry przestrzenne wskazują na przestrzeń główną, a nazwy jednostek już nie. Przykłady w wikikodzie: * {{Code|{{m|Pudełko|Nazwa przedmiotowej przestrzeni nazw 2|numer jednostki{{=}}2}}}} → {{Tt|{{#invoke:Pudełko|Nazwa przedmiotowej przestrzeni nazw 2|numer jednostki=2}}}} * {{Code|{{m|Pudełko|Nazwa przedmiotowej przestrzeni nazw 2|Dyskusja szablonu|nazwa przestrzeni nazw i{{=}}Moja przestrzeń|numer jednostki{{=}}2}}}} → {{Tt|{{#invoke:Pudełko|Nazwa przedmiotowej przestrzeni nazw 2|Dyskusja szablonu|nazwa przestrzeni nazw i=Moja przestrzeń|numer jednostki=2}}}} * {{Code|{{m|Pudełko|Nazwa przedmiotowej przestrzeni nazw 2|nazwa przestrzeni nazw 2{{=}}Dyskusja|nazwa jednostki 2{{=}}Dyskusja szablonu:Strona|numer jednostki{{=}}2}}}} → {{Tt|{{#invoke:Pudełko|Nazwa przedmiotowej przestrzeni nazw 2|nazwa przestrzeni nazw 2=Dyskusja|nazwa jednostki 2=Dyskusja szablonu:Strona|numer jednostki=2}}}} * {{Code|{{m|Pudełko|Nazwa przedmiotowej przestrzeni nazw 2|nazwa przestrzeni nazw i{{=}}Dyskusja|nazwa jednostki 2{{=}}Dyskusja szablonu:Strona|numer jednostki{{=}}2}}}} → {{Tt|{{#invoke:Pudełko|Nazwa przedmiotowej przestrzeni nazw 2|nazwa przestrzeni nazw i=Dyskusja|nazwa jednostki 2=Dyskusja szablonu:Strona|numer jednostki=2}}}} * {{Code|{{m|Pudełko|Nazwa przedmiotowej przestrzeni nazw 2|Dyskusja szablonu|nazwa przestrzeni nazw{{=}}Dyskusja|nazwa jednostki 2{{=}}Wikibooks:Strona|numer jednostki{{=}}2}}}} → {{Tt|{{#invoke:Pudełko|Nazwa przedmiotowej przestrzeni nazw 2|Dyskusja szablonu|nazwa przestrzeni nazw=Dyskusja|nazwa jednostki 2=Dyskusja Wikibooks:Strona|numer jednostki=2}}}} Powyżej dla przykładu podano parametry nie w rodzicu w szablonie, tylko w dziecku, jeśli chodzi o parametry nazw przestrzeni nazw i nazw jednostek, ale ich się za to nie powinno podawać w tych ramach, tylko w szablonach, w których wywoływane są te ramki pudełek {{Code|{{m|Pudełko}}}}, ale tak tutaj tak zrobiono by było najłatwiej sprawdzić działanie tego typu funkcji. Analogicznie możemy podawać parametry typu jednostki, np.: wywołaniu modułowym {{Code|{{m|Pudełko|Nazwa przedmiotowej przestrzeni nazw 2|typ jednostki 2{{=}}Podręcznik|nazwa jednostki 2{{=}}Dyskusja szablonu:Strona|numer jednostki{{=}}2}}}} (ale wtedy jest brana przestrzeń nazw z nazwy jednostki), ale o tym więcej w rozdziałach {{Code|{{sr|# p["Typ jednostki"](frame,i)|p=Pudełko}}}}, {{Code|{{sr|#p["Typ jednostki 2"](frame,i)|p=Pudełko}}}}, {{Code|{{sr|#p["Typ jednostki 3"](frame,i)|p=Pudełko}}}} itp. w „{{sr|#Funkcje typu jednostki|p=Pudełko}}”, on definiuje przestrzenie przedmiotowe, ale można użyć parametru dyskusji typu jednostki z wartością niepustą, wtedy wyświetli się nazwa przestrzeni nazw dyskusji. Jeżeli typ jednostki wskazuje na przestrzeń nazw główną, wtedy się liczą parametry nazw jednostek. Również parametry typu jednostki nie powinno się podawać w dziecku w ramce, tylko w rodzicu w szablonie jako parametry, w którym ta ramka jest wywoływana, ale tutaj podano jedynie dla przykładu, jak najłatwiej sprawdzić działanie tych parametrów tej funkcji. Najpierw w funkcji nagłówku brane są parametry nazw przestrzeni nazw, a jeżeli ich nie ma, to parametry typu jednostki, a jeżeli nie ma lub parametry przestrzenne wskazują na przestrzeń główną, i nie ma nazwy jednostki, to generowane są nazwy tej funkcji na podstawie aktualnej strony. === {{Code|p["Nazwa przestrzeni nazw dyskusji 2"](frame,...)}} === Funkcja pisze nazwę przestrzeni nazw dyskusji jakikolwiek nazwy przestrzeni nazw (tzn. nazwę dyskusji nazwy przestrzenie nazw, czyli nie przedmiotowej, zamieniana jest na nią samą, czyli identyfikator przestrzeni się nie zmienia, a przedmiotową, nie dyskusji, przekształca się na dyskusji jej odpowiadającą, czyli w tym przypadku identyfikator przestrzeni zwiększa się o numer więcej), według, i nie zawsze tylko, podanej w zmiennej {{Code|nazwa przestrzeni nazw}} dla pozycja bazowej w podanych parametrach szablonu rodzicu ramki dziecka, lub dla innej pozycji należy parametr podawać w formie {{Code|nazwa przestrzeni nazw 1}}, {{Code|nazwa przestrzeni nazw 2}}, {{Code|nazwa przestrzeni nazw 3}},..., lub te parametry można podać w postaci ogólnej {{Code|nazwa przestrzeni nazw i}}. W tej funkcji trzeba też podawać parametry nazwy jednostek {{Code|nazwa jednostki}}, {{Code|nazwa jednostki 1}}, {{Code|nazwa jednostki 2}}, {{Code|nazwa jednostki 3}},... Parametry podaje się w parametrach rodzica wywołania tej funkcji {{Code|{{m|Pudełko|Nazwa przestrzeni nazw dyskusji 2}}}} (ale ich nie trzeba podawać w dziecku, ale można) i w parametrach dziecka, jeśli chodzi o zmienną {{Code|numer jednostki}}, czyli np.: {{Code|{{m|Pudełko|Nazwa przestrzeni nazw dyskusji 2|numer jednostki{{=}}<jakaś liczba całkowita dodatnia>}}}}. Te parametry przestrzenne zamiast w rodzicu w szablonie można podać w ramce dziecka, wtedy parametry dziecka mają pierwszeństwo. Przestrzeń nazw z parametrów nazw przestrzennych po przekształceniu na przedmiotową może odpowiadać wartości przestrzeni głównej, to wtedy odpowiednia przestrzeń nazw z parametru nazwy jednostki się liczy w tej funkcji, wtedy jest liczona nazwa przestrzeni nazw z tego parametru. Gdy parametry przestrzenne lub typ jednostki w drugim podejściu nie wskazują na przestrzeń główną, to wtedy działanie tej funkcji jest podobne do {{Code|{{sr|#p["Nazwa dyskusji przestrzeni nazw"](frame,...)|p=Pudełko}}}}. Definicja skrótowa funkcji: <syntaxhighlight lang="lua"> p["Nazwa przestrzeni nazw dyskusji 2"]=function(frame,czy_uwzglednic_alternatywna_nazwe,i)...end; </syntaxhighlight> Wtedy ciało funkcji tej, czyli jego definicja w środku, jest: <syntaxhighlight lang="lua"> local pudelko_pomocne_modul=require("Module:Pudełko/Pomocne"); return pudelko_pomocne_modul.Nazwa_przestrzeni_nazw_przedmiotowa_dyskusji_2(frame,czy_uwzglednic_alternatywna_nazwe,i,"dyskusja"); </syntaxhighlight> Parametry funkcji: * {{Code|frame}} - tablica ramki tablicy transportu, * {{Code|czy_uwzglednic_alternatywna_nazwe}} - czy ma uwzględniać nazwę przestrzeni nazw domyślną szablonu, dostępne wartości: {{Code|false}}, w której nazwa domyślna nie jest uwzględniana wtedy, oraz {{Code|nil}} i {{Code|true}}, które oznaczają to samo, w tym jeżeli ona jest uwzględniana, wtedy jest brany parametr pierwszy dziecka, który musi istnieć przy takiej wartości tego parametru, tzn. {{Code|{{m|Pudełko|Nazwa przestrzeni nazw dyskusji 2|Szablon}}}}, a nazwa uzyskana nazwy przestrzeni nazw jest w takim przypadku błędna, a jeżeli nazwa domyślna jest błędna, czyli {{Code|{{m|Pudełko|Nazwa przestrzeni nazw dyskusji 2|Moja przestrzeń}}}}, wtedy funkcja zwraca stan błędu {{Code|(błąd)}}. * {{Code|i}} - numer zmiennej nazwy przestrzeni nazw. Funkcja wykorzystuje {{Code|{{sr|#p.Nazwa_przestrzeni_nazw_przedmiotowa_dyskusji_2(frame,...)|p=Pudełko/Pomocne}}}} do wyznaczania ogólnego nazwy przestrzeni nazw dla pozycji bazowej i numerkowej, tzn. dla pozycji: jeden, dwa, trzy,..., itd, i ich ogólnej. Parametr ramki tablicy transportu rodzica szablonu: * {{Code|nazwa przestrzeni nazw}}, {{Code|nazwa przestrzeni nazw 1}}, {{Code|nazwa przestrzeni nazw 2}}, {{Code|nazwa przestrzeni nazw 3}},..., {{Code|nazwa przestrzeni nazw i}} - nazwy przestrzeni nazw dla pozycji bazowej oraz zwykłej i ogólnej numerkowej, * {{Code|nazwa jednostki}}, {{Code|nazwa jednostki 1}}, {{Code|nazwa jednostki 2}}, {{Code|nazwa jednostki 3}},... - nazwy jednostek dla pozycji bazowej i numerkowej, * {{Code|typ jednostki}}, {{Code|typ jednostki 1}}, {{Code|typ jednostki 2}}, {{Code|typ jednostki 3}},..., {{Code|typ jednostki i}} - typy jednostek, którym odpowiadają pewne przestrzenie przedmiotowe, dla pozycji bazowej, numerkowej i ogólnej. Parametry ramki tablicy transportu dziecka: * Parametry dziecka są takie same jak rodzica dla funkcji pudełkowej plus tu wymienione, * {{Code|numer jednostki}} - jak parametr {{Code|i}} nie został ustawiony, to wtedy liczy się ta zmienna. Przykłady: <syntaxhighlight lang="mediawiki"> {{Nazwa szablonu|nazwa przestrzeni nazw=Wikibooks|nazwa przestrzeni nazw 1=Szablon|nazwa przestrzeni nazw i=|nazwa jednostki 2=Wikibooks:Strona}} </syntaxhighlight> W dziecku powiedzmy jest wywołanie, i szukamy nazwy przestrzeni nazw o numerze dwa, która została podana, ale istnieje za to jej wersji ogólna {{Code|nazwa przestrzeni nazw i}} i domyślna {{Code|nazwa przestrzeni nazw}}, ale wtedy dla tego numerkowego liczy się to ogólne z {{Code| i}}, a ponieważ ta nazwa jest pusta, więc będziemy liczyli nazwę przestrzeni nazw z {{Code|nazwa jednostki 2}}: <syntaxhighlight lang="mediawiki"> {{#invoke:Pudełko|Nazwa przestrzeni nazw dyskusji 2|numer jednostki=2}} </syntaxhighlight> Na podstawie powyższego przykładu otrzymamy wynik o schemacie, nie wyniku, bo tam nie ma zmiennej {{Code|nazwa przestrzeni nazw 1}}, ale jest {{Code|nazwa przestrzeni nazw i}}: <syntaxhighlight lang="mediawiki"> <!-- Ale nie "nazwa przestrzeni nazw 2", bo jej nie ma, ale za to istnieje "nazwa przestrzeni nazw i"; --> <!-- nazwa przestrzeni nazw 2=nazwa przestrzeni nazw i="", a nazwa jednostki 2="Wikibooks:Strona"; --> <!-- Czyli wynik: --> Dyskusja Wikibooks <!-- Widzimy, że wygenerowała się nazwa przestrzeni nazw, którą jest przestrzeń nieprogramowa, ale dyskusji projektu, wychodząca z nazwy jednostek w tym przypadku z "nazwa jednostki 2"; --> </syntaxhighlight> Nie jest brana w tym powyższym przykładzie zmienna {{Code|nazwa przestrzeni nazw}}, bo jej nie ma, ale za to jest {{Code|nazwa przestrzeni nazw i}}, bo ona występuje jako parametr domyślny ogólny dla parametrów numerkowych. Tytaj jest używana jest zmienna {{Code|nazwa jednostki 2}} do wygenerowania ostatecznego wyniku, bo jak można zauważyć, parametry przestrzenne wskazują na przestrzeń główną, a nazwy jednostek już nie. Przykłady w wikikodzie: * {{Code|{{m|Pudełko|Nazwa przestrzeni nazw dyskusji 2|numer jednostki{{=}}2}}}} → {{Tt|{{#invoke:Pudełko|Nazwa przestrzeni nazw dyskusji 2|numer jednostki=2}}}} * {{Code|{{m|Pudełko|Nazwa przestrzeni nazw dyskusji 2|Szablon|nazwa przestrzeni nazw i{{=}}Moja przestrzeń|numer jednostki{{=}}2}}}} → {{Tt|{{#invoke:Pudełko|Nazwa przestrzeni nazw dyskusji 2|Szablon|nazwa przestrzeni nazw i=Moja przestrzeń|numer jednostki=2}}}} * {{Code|{{m|Pudełko|Nazwa przestrzeni nazw dyskusji 2|nazwa przestrzeni nazw 2{{=}}|nazwa jednostki 2{{=}}Szablon:Strona|numer jednostki{{=}}2}}}} → {{Tt|{{#invoke:Pudełko|Nazwa przestrzeni nazw dyskusji 2|nazwa przestrzeni nazw 2=|nazwa jednostki 2=Szablon:Strona|numer jednostki=2}}}} * {{Code|{{m|Pudełko|Nazwa przestrzeni nazw dyskusji 2|nazwa przestrzeni nazw i{{=}}|nazwa jednostki 2{{=}}Szablon:Strona|numer jednostki{{=}}2}}}} → {{Tt|{{#invoke:Pudełko|Nazwa przestrzeni nazw dyskusji 2|nazwa przestrzeni nazw i=|nazwa jednostki 2=Szablon:Strona|numer jednostki=2}}}} * {{Code|{{m|Pudełko|Nazwa przestrzeni nazw dyskusji 2|Szablon|nazwa przestrzeni nazw{{=}}|nazwa jednostki 2{{=}}Wikibooks:Strona|numer jednostki{{=}}2}}}} → {{Tt|{{#invoke:Pudełko|Nazwa przestrzeni nazw dyskusji 2|Szablon|nazwa przestrzeni nazw=|nazwa jednostki 2=Dyskusja Wikibooks:Strona|numer jednostki=2}}}} Powyżej dla przykładu podano parametry nie w rodzicu w szablonie, tylko w dziecku, jeśli chodzi o parametry nazw przestrzeni nazw i nazw jednostek, ale ich się za to nie powinno podawać w tych ramach, tylko w szablonach, w których wywoływane są te ramki pudełek {{Code|{{m|Pudełko}}}}, ale tak tutaj tak zrobiono by było najłatwiej sprawdzić działanie tego typu funkcji. Analogicznie możemy podawać parametry typu jednostki, np.: wywołaniu modułowym {{Code|{{m|Pudełko|Nazwa przestrzeni nazw dyskusji 2|typ jednostki 2{{=}}Podręcznik|nazwa jednostki 2{{=}}Szablon:Strona|numer jednostki{{=}}2}}}} (ale wtedy jest brana przestrzeń nazw z nazwy jednostki), ale o tym więcej w rozdziałach {{Code|{{sr|# p["Typ jednostki"](frame,i)|p=Pudełko}}}}, {{Code|{{sr|#p["Typ jednostki 2"](frame,i)|p=Pudełko}}}}, {{Code|{{sr|#p["Typ jednostki 3"](frame,i)|p=Pudełko}}}} itp. w „{{sr|#Funkcje typu jednostki|p=Pudełko}}”, on definiuje przestrzenie dyskusji, ale można użyć parametru dyskusji typu jednostki z obojętnie jaką wartością niepustą, czy pustą, czy nawet jej nie podamy, wtedy wyświetli się nazwa przestrzeni nazw dyskusji. Jeżeli typ jednostki wskazuje na przestrzeń nazw główną, wtedy się liczą parametry nazw jednostek. Również parametry typu jednostki nie powinno się podawać w dziecku w ramce, tylko w rodzicu w szablonie jako parametry, w którym ta ramka jest wywoływana, ale tutaj podano jedynie dla przykładu, jak najłatwiej sprawdzić działanie tych parametrów tej funkcji. Najpierw w funkcji nagłówku brane są parametry nazw przestrzeni nazw, a jeżeli ich nie ma, to parametry typu jednostki, a jeżeli nie ma lub parametry przestrzenne wskazują na przestrzeń główną, i nie ma nazwy jednostki, to generowane są nazwy tej funkcji na podstawie aktualnej strony. == Funkcje pełnych nazw jednostki == === {{Code|p["Pełna nazwa dyskusji jednostki"](frame,i)}} === === {{Code|p["Pełna nazwa przedmiotowa jednostki"](frame,i)}} === === {{Code|p["Pełna nazwa jednostki"](frame,i)}} === == Funkcje pełnych nazw jednostki drugiej wersji == === {{Code|p["Pełna nazwa dyskusji jednostki 2"](frame,i)}} === === {{Code|p["Pełna nazwa przedmiotowa jednostki 2"](frame,i)}} === === {{Code|p["Pełna nazwa jednostki 2"](frame,i)}} === == Funkcje pełnych nazw jednostki trzeciej wersji == === {{Code|p["Pełna nazwa dyskusji jednostki 3"](frame,i)}} === === {{Code|p["Pełna nazwa przedmiotowa jednostki 3"](frame,i)}} === === {{Code|p["Pełna nazwa jednostki 3"](frame,i)}} === == Funkcje nazw jednostki == === {{Code|p["Nazwa jednostki"](frame,i)}} === == Funkcje nazw jednostki drugiej wersji == === {{Code|p["Nazwa jednostki 2"](frame,i)}} === === {{Code|p["Nazwa przedmiotowa jednostki 2"](frame,i)}} === === {{Code|p["Nazwa dyskusji jednostki 2"](frame,i)}} === == Funkcje nazw przestrzeni nazw trzeciej wersji == === {{Code|p["Nazwa przestrzeni nazw 3"](frame,i)}} === === {{Code|p["Nazwa przedmiotowej przestrzeni nazw 3"](frame,i)}} === === {{Code|p["Nazwa przestrzeni nazw dyskusji 3"](frame,i)}} === == Funkcje nazw jednostki trzeciej wersji == === {{Code|p["Nazwa jednostki 3"](frame,i)}} === === {{Code|p["Nazwa przedmiotowa jednostki 3"](frame,i)}} === === {{Code|p["Nazwa dyskusji jednostki 3"](frame,i)}} === == Funkcje typu jednostki == === {{Code|p["Typ jednostki"](frame,i)}} === === {{Code|p["Typ jednostki 2"](frame,i)}} === === {{Code|p["Typ jednostki 3"](frame,i)}} === === Funkcje typu jednostki przedmiotowe === ==== {{Code|p["Przedmiotowy typ jednostki"](frame,i)}} ==== ==== {{Code|p["Przedmiotowy typ jednostki 2"](frame,i)}} ==== ==== {{Code|p["Przedmiotowy typ jednostki 3"](frame,i)}} ==== === Fukcje typu jednostki dyskusji === ==== {{Code|p["Dyskusyjny typ jednostki"](frame,i)}} ==== ==== {{Code|p["Dyskusyjny typ jednostki 2"](frame,i)}} ==== ==== {{Code|p["Dyskusyjny typ jednostki 3"](frame,i)}} ==== == Funkcje chech pudełka == === {{Code|p["Cecha pudełka"](frame)}} === === {{Code|p["Przedmiotowa cecha pudełka"](frame)}} === === {{Code|p["Dyskusyjna cecha pudełka"](frame)}} === == Fukcje ogólnego pudełka == === {{Code|p["Ogólne pudełko"](frame)}} === == Funkcje ogólne == === {{Code|p["Tekst pudełka"](frame)}} === == Funkcje błędów pudełka == === {{Code|p["Błędy pudełka"](frame)}} === === {{Code|p["Przedmiotowe błędy pudełka"](frame)}} === === {{Code|p["Dyskusyjne błędy pudełka"](frame)}} === == Funkcje nazw stron == === {{Code|p["Nazwa strony głównej projektu"](frame,i)}} === === {{Code|p["Nazwa strony głównej dla dzieci projektu"](frame,i)}} === == Funkcje kodów == === {{Code|p["Kod języka"](frame,i)}} === === {{Code|p["Kod projektu"](frame,i)}} === === {{Code|p["Klucz projektu"](frame,i)}} === == Funkcje wiki == === {{Code|p["Inny niż język bieżący wiki"](frame)}} === === {{Code|p["Inne niż lokalne wiki"](frame)}} === === {{Code|p["Inne niż bieżące wiki"](frame)}} === == Funkcje typów parametrów, czy podane je == === {{Code|p["Podano parametry nienazwane"](frame)}} === === {{Code|p["Podano parametry numerowane"](frame)}} === === {{Code|p["Podano parametry nazwane"](frame)}} === == Funkcje kodów tego projektu == === {{Code|p["Kod projektu tego projektu"](frame)}} === === {{Code|p["Kod języka tego projektu"](frame)}} === === {{Code|p["Klucz projektu tego projektu"](frame)}} === == Funkcje stron == === {{Code|p["Strona główna tego projektu"](frame)}} === === {{Code|p["Strona główna dla dzieci tego projektu"](frame)}} === == Funkcje nazw stron drugiej wersji == === {{Code|p["Nazwa strony głównej dla dzieci projektu 2"](frame)}} === === {{Code| p["Nazwa strony głównej projektu 2"](frame)}} === {{BrClear}} <noinclude><!-- -->{{ProstaStronaKoniec}}<!-- -->{{Kategoria|Opisy funkcji, w Lua w Scribunto, w modułach}}<!-- --></noinclude> biudru4lyspd1pbo9150p5j2sshxge1 540405 540404 2026-04-23T16:57:34Z Persino 2851 /* {{Code|p["Nazwa przedmiotowej przestrzeni nazw 2"](frame,...)}} */ 540405 wikitext text/x-wiki <noinclude>{{ProstaStronaStart | nagłówek = {{Podrozdział|{{ld2|Pudełko}}|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 pudelko_modul=require("Module:Pudełko"); </syntaxhighlight> dzięki, któremu można wypisywać funkcje należącego do niego. Posługuje się na parametrach pudełkowych {{Parametr|nazwa przestrzeni nazw}} (czy też bez numerka {{Parametr|nazwa przestrzeni nazw i}} dla tego numerowanego) lub te z numerkiem po jednej spacji w nich (ale nie dla tego z końcówką {{Code| i}}) mogą zostać użyte jako parametry szablonu. Moduł {{Code|{{ld2|Pudełko}}}} przedstawia funkcje nazw w oparciu o funkcje nazw {{Code|{{ld2|Nazwy}}}}, generuje on nazwy za pomocą parametrów pudełkowych podanych poniżej. Parametr {{Parametr|nazwa jednostki}} (lub parametr {{Parametr|cel}} dla numerka tego pierwszego, tego alternatywnego), lub te z numerkiem po jednej spacji w nazwie parametru, albo numerowane numerkami {{Code|1}}, {{Code|2}},..., mogą zostać użyte jako parametry szablonu. Parametry określające rodzaj jednostki {{Parametr|typ jednostki}} z {{Parametr|dyskusja typu jednostki}}, itp. w wersjach z numerkiem po jednej spacji w nich mogą zostać użyte jako parametry szablonu. A te tymi numerowanymi liczbami naturalnymi {{Tt|nazwy jednostki}} od jedynki wzwyż poprzez szablon, w którym są one użyte, one też mogą być użyte z dwukropkiem, te numerowane, na samym początku nazwy, wtedy one są traktowane jako pełne nazwy strony, i wtedy one nie zostaną z interpretowane, że do nich trzeba użyć parametr odpowiedni z nazwą przetrzeni nazw z tego numerowanego, czy ogólny, aby utworzyć znów inną pełną nazwę strony dla tego numerka. Zestawienie: * {{Code|nazwa przestrzeni nazw}} i {{Code|nazwa przestrzeni nazw i}} (ogólna nazwa przestrzeni nazw dla wszystkich numerków, i tych numerowanych jednostek) - i to pierwsze z numerkiem, tzn. {{Code|nazwa przestrzeni nazw 1}}, {{Code|nazwa przestrzeni nazw 2}}, ..., * {{Code|nazwa jednostki}} - i te z numerkiem: {{Code|nazwa jednostki 1}}, {{Code|nazwa jednostki 2}}, ..., lub gdy jest zamiast tego parametrem numerowany, {{Code|1}}, {{Code|2}},..., który dla tego pierwszego może być uznany jako: {{Code|cel}} {{=}} {{Code|1}}, * {{Code|typ jednostki}} (parametr bazowy) i {{Code|typ jednostki i}} (parametr domyślny numerkowy) - i te z numerkiem: {{Code|typ jednostki 1}}, {{Code|typ jednostki 2}}, ..., tzn. gdy chcemy określić z jakim typem jednostki mamy do czynienia w zależności do jakiej przestrzeni nazw należy, a w danej, czy jest on np. programowy, czy tylko jest opisem, jak to bywa w szablonach {{Np|Template|link=tak}}, podobnie jest w przypadku {{Np|Module|link=tak}}, czy jak jest w innych przestrzeniach nazw, ** {{Code|dyskusja typu jednostki}} (parametr bazowy) i {{Code|dyskusja typu jednostki i}} (parametr domyślny numerkowy) - i te z numerkiem: {{Code|dyskusja typu jednostki 1}}, {{Code|dyskusja typu jednostki 2}}, ..., gdy chcemy określić wartością niepustą,że chodzi tutaj o typ jednostki. == {{Code|p.CzyNiepoprawnaNazwa(nazwa_jednostki)}} == Funkcja sprawdzajaca, czy jest poprawnie podana nazwa jednostki, czy ma poprawną nazwę. Znakami tymi, z których nie powinna składać się nazwa jest {{Code|<nowiki>{}<>|[]#\n</nowiki>}} i dodatkowo znak {{Code|&#127;}} (kod {{Code|{{Nowiki|&#127;}}}}). Też nie może składać się z trzech znaków tyldy, tzn. {{Code|<nowiki>~~~</nowiki>}}. Również w swojej budowie nie może składać się ze kodów {{Strong|HTML}} literowych o wzorze {{Code|{{Nowiki|&(%a+);}}}}. Natomiast może składać się z {{Code|{{Nowiki|&#(%d+);}}}} i {{Code|{{Nowiki|&#x(%x+);}}}}, ale w pierw te kody muszą być zamienione na normalne znaki. Skrótowa definicja funkcji: <syntaxhighlight lang="lua"> function p.CzyNiepoprawnaNazwa(nazwa_jednostki)...end; </syntaxhighlight> Wtedy ciało funkcji tej, czyli jego definicja w środku, jest: <syntaxhighlight lang="lua"> -- Moduł: "Moduł:Html/dane", służy do ładowania znaku o kodzie HTML "&#127;"; local html_dane_modul=mw.loadData("Module:Html/dane"); return mw.ustring.match(nazwa_jednostki,"[{}<>|%[%]#\n"..html_dane_modul.znak_127.."]+") or mw.ustring.match(nazwa_jednostki,"~~~") or mw.ustring.match(nazwa_jednostki,"&(%a+);"); </syntaxhighlight> Parametry: * {{Code|nazwa_jednostki}} - nazwa jednostki do sprawdzenia. Przykłady: <syntaxhighlight lang="lua"> local pudelko_modul=require("Module:Pudełko"); -- Podana przykładowa niepoprawna nazwa jedostki local nazwa_jednostki="Nazwa pliku [[Nazwa linku w pliku]]"; -- Fukcja zwróci wartość: local czy_poprawna_nazwa=true; local czy_poprawna_nazwa=pudelko_modul.CzyNiepoprawnaNazwa(nazwa_jednostki); </syntaxhighlight> == Funkcje nazw przestrzeni nazw == === {{Code|p["Nazwa przestrzeni nazw"](frame,...)}} === Funkcja pisze nazwę przestrzeni nazw, niezależnie, czy to jest przedmiotowa, czy dyskusji, według podanej w zmiennej {{Code|nazwa przestrzeni nazw}} dla pozycja bazowej w podanych parametrach szablonu rodzicu ramki dziecka, lub dla innej pozycji należy parametr podawać w formie {{Code|nazwa przestrzeni nazw 1}}, {{Code|nazwa przestrzeni nazw 2}}, {{Code|nazwa przestrzeni nazw 3}},..., lub te parametry można podać w postaci ogólnej {{Code|nazwa przestrzeni nazw i}}. Parametry podaje się w parametrach rodzica wywołania tej funkcji {{Code|{{m|Pudełko|Nazwa przestrzeni nazw}}}} (ale ich nie trzeba podawać w dziecku, ale można) i w parametrach dziecka, jeśli chodzi o zmienną {{Code|numer jednostki}}, czyli np.: {{Code|{{m|Pudełko|Nazwa przestrzeni nazw|numer jednostki{{=}}<jakaś liczba całkowita dodatnia>}}}}. Te parametry przestrzenne zamiast w rodzicu w szablonie można podać w ramce dziecka, wtedy parametry dziecka mają pierwszeństwo. Przestrzeń nazw z parametrów nazw przestrzennych może odpowiadać wartości przestrzeni głównej, to wtedy odpowiednia przestrzeń nazw z parametru nazwy jednostki się nie liczy w tej funkcji, aby się liczyła należy użyć funkcji {{Code|{{sr|#p["Nazwa przestrzeni nazw 2"](frame,...)|p=Pudełko}}}}. Definicja skrótowa funkcji: <syntaxhighlight lang="lua"> p["Nazwa przestrzeni nazw"]=function(frame,czy_uwzglednic_alternatywna_nazwe,i)...end; </syntaxhighlight> Wtedy ciało funkcji tej, czyli jego definicja w środku, jest: <syntaxhighlight lang="lua"> -- Jest liczony numer parametru nazwy przestrzeni nazw, domyslnie chodzi tu o numer bazowy parametrów przestrzennych; local numer_jednostki=i or frame.args["numer jednostki"]; local liczba_numer_jednostki=((numer_jednostki)and(tonumber(numer_jednostki))or 0); local pudelko_pomocne_modul=require("Module:Pudełko/Pomocne"); -- Liczy nazwę przestrzeni nazw na podstawie podanych parametrów; return pudelko_pomocne_modul.Nazwa_przestrzeni_nazw(frame,0, czy_uwzglednic_alternatywna_nazwe,liczba_numer_jednostki); </syntaxhighlight> Parametry funkcji: * {{Code|frame}} - tablica ramki tablicy transportu, * {{Code|czy_uwzglednic_alternatywna_nazwe}} - czy ma uwzględniać nazwę przestrzeni nazw domyślną szablonu, dostępne wartości: {{Code|false}}, w której nazwa domyślna nie jest uwzględniana wtedy, oraz {{Code|nil}} i {{Code|true}}, które oznaczają to samo, w tym jeżeli ona jest uwzględniana, wtedy jest brany parametr pierwszy dziecka, który musi istnieć przy takiej wartości tego parametru, tzn. {{Code|{{m|Pudełko|Nazwa przestrzeni nazw|Szablon}}}}, a nazwa uzyskana nazwy przestrzeni nazw jest w takim przypadku błędna, a jeżeli nazwa domyślna jest błędna, czyli {{Code|{{m|Pudełko|Nazwa przestrzeni nazw|Moja przestrzeń}}}}, wtedy funkcja zwraca stan błędu {{Code|(błąd)}}. * {{Code|i}} - numer zmiennej nazwy przestrzeni nazw. Funkcja wykorzystuje {{Code|{{sr|#p.Nazwa_przestrzeni_nazw(frame,...)|p=Pudełko/Pomocne}}}} do wyznaczania ogólnego nazwy przestrzeni nazw dla pozycji bazowej i numerkowej, tzn. dla pozycji: jeden, dwa, trzy,..., itd, i ich ogólnej. Parametr ramki tablicy transportu rodzica szablonu: * {{Code|nazwa przestrzeni nazw}}, {{Code|nazwa przestrzeni nazw 1}}, {{Code|nazwa przestrzeni nazw 2}}, {{Code|nazwa przestrzeni nazw 3}},..., {{Code|nazwa przestrzeni nazw i}} - nazwy przestrzeni nazw dla pozycji bazowej oraz zwykłej i ogólnej numerkowej, * {{Code|typ jednostki}}, {{Code|typ jednostki 1}}, {{Code|typ jednostki 2}}, {{Code|typ jednostki 3}},..., {{Code|typ jednostki i}} - typy jednostek, którym odpowiadają pewne przestrzenie przedmiotowe, dla pozycji bazowej, numerkowej i ogólnej, ** {{Code|dyskusja typu jednostki}}, {{Code|dyskusja typu jednostki 1}}, {{Code|dyskusja typ jednostki 2}}, {{Code|dyskusja typ jednostki 3}},..., {{Code|dyskusja typ jednostki i}} - czy dany typ jednostki ma przedstawiać, jeśli niepusta, przestrzeń dyskusji dla pozycji bazowej, numerkowej i ogólnej. Parametry ramki tablicy transportu dziecka: * Parametry dziecka są takie same jak rodzica dla funkcji pudełkowej plus tu wymienione, * {{Code|numer jednostki}} - jak parametr {{Code|i}} nie został ustawiony, to wtedy liczy się ta zmienna. Przykłady: <syntaxhighlight lang="mediawiki"> {{Nazwa szablonu|nazwa przestrzeni nazw=Wikibooks|nazwa przestrzeni nazw 2=Szablon|nazwa przestrzeni nazw i=Moduł}} </syntaxhighlight> W dziecku powiedzmy jest wywołanie, i szukamy nazwy przestrzeni nazw o numerze dwa, która nie została podana, ale istnieje za to jej wersji ogólna {{Code|nazwa przestrzeni nazw i}} i domyślna {{Code|nazwa przestrzeni nazw}}: <syntaxhighlight lang="mediawiki"> {{#invoke:Pudełko|Nazwa przestrzeni nazw|numer jednostki=1}} </syntaxhighlight> Na podstawie powyższego przykładu otrzymamy wynik o schemacie, nie wyniku, bo tam nie ma zmiennej {{Code|nazwa przestrzeni nazw 1}}, ale jest {{Code|nazwa przestrzeni nazw i}}: <syntaxhighlight lang="mediawiki"> <!-- Ale nie "nazwa przestrzeni nazw", bo jej nie ma, ale za to istnieje "nazwa przestrzeni nazw i"; --> <!-- nazwa przestrzeni nazw 2=nazwa przestrzeni nazw i=Moduł; --> <!-- Czyli wynik: --> Moduł <!-- Widzimy, że wygenerowała się nazwa przestrzeni nazw, którą jest przestrzeń programowa, którą również jest "Szablon"; --> </syntaxhighlight> Nie jest brana w tym powyższym przykładzie zmienna {{Code|nazwa przestrzeni nazw}}, bo jej nie ma, ale za to jest {{Code|nazwa przestrzeni nazw i}}, bo ona występuje jako parametr domyślny ogólny dla parametrów numerkowych. Przykłady w wikikodzie: * {{Code|{{m|Pudełko|Nazwa przestrzeni nazw|numer jednostki{{=}}2}}}} → {{Tt|{{#invoke:Pudełko|Nazwa przestrzeni nazw|numer jednostki=2}}}} * {{Code|{{m|Pudełko|Nazwa przestrzeni nazw|Szablon|nazwa przestrzeni nazw i{{=}}Moja przestrzeń|numer jednostki{{=}}2}}}} → {{Tt|{{#invoke:Pudełko|Nazwa przestrzeni nazw|Szablon|nazwa przestrzeni nazw i=Moja przestrzeń|numer jednostki=2}}}} * {{Code|{{m|Pudełko|Nazwa przestrzeni nazw|nazwa przestrzeni nazw 2{{=}}Szablon|numer jednostki{{=}}2}}}} → {{Tt|{{#invoke:Pudełko|Nazwa przestrzeni nazw|nazwa przestrzeni nazw 2=Szablon|numer jednostki=2}}}} * {{Code|{{m|Pudełko|Nazwa przestrzeni nazw|nazwa przestrzeni nazw 2{{=}}Szablon|numer jednostki{{=}}2}}}} → {{Tt|{{#invoke:Pudełko|Nazwa przestrzeni nazw|nazwa przestrzeni nazw i=Szablon|numer jednostki=2}}}} * {{Code|{{m|Pudełko|Nazwa przestrzeni nazw|nazwa przestrzeni nazw{{=}}Szablon|numer jednostki{{=}}2}}}} → {{Tt|{{#invoke:Pudełko|Nazwa przestrzeni nazw|nazwa przestrzeni nazw=Szablon|numer jednostki=2}}}} Powyżej dla przykładu podano parametry nie w rodzicu w szablonie, tylko w dziecku, jeśli chodzi o parametry nazw przestrzeni nazw, ale ich się za to nie powinno podawać w tych ramach, tylko w szablonach, w których wywoływane są te ramki pudełek {{Code|{{m|Pudełko}}}}, ale tak tutaj tak zrobiono by było najłatwiej sprawdzić działanie tego typu funkcji. Analogicznie możemy podawać parametry typu jednostki, np.: wywołaniu modułowym {{Code|{{m|Pudełko|Nazwa przestrzeni nazw|typ jednostki 2{{=}}strona szablonu|numer jednostki{{=}}2}}}}, ale o tym więcej w rozdziałach {{Code|{{sr|# p["Typ jednostki"](frame,i)|p=Pudełko}}}}, {{Code|{{sr|#p["Typ jednostki 2"](frame,i)|p=Pudełko}}}}, {{Code|{{sr|#p["Typ jednostki 3"](frame,i)|p=Pudełko}}}} itp. w „{{sr|#Funkcje typu jednostki|p=Pudełko}}”, on definiuje przestrzenie przedmiotowe, ale można użyć parametru dyskusji typu jednostki z wartością niepustą, wtedy wyświetli się nazwa przestrzeni nazw dyskusji. Również parametry typu jednostki nie powinno się podawać w dziecku w ramce, tylko w rodzicu w szablonie jako parametry, w którym ta ramka jest wywoływana, ale tutaj podano jedynie dla przykładu, jak najłatwiej sprawdzić działanie tych parametrów tej funkcji. Najpierw w funkcji nagłówku brane są parametry nazw przestrzeni nazw, a jeżeli ich nie ma, to parametry typu jednostki, a jeżeli nie ma, to generowane są nazwy na podstawie aktualnego modułu. === {{Code|p["Nazwa przedmiotowej przestrzeni nazw"](frame,...)}} === Funkcja pisze przedmiotową nazwę przestrzeni nazw jakikolwiek nazwy przestrzeni nazw (tzn. nazwę przedmiotową nazwy przestrzenie nazw, czyli nie dyskusji, zamieniana jest na nią samą, czyli identyfikator przestrzeni się nie zmienia, a dyskusji, nie przedmiotową, przekształca się na przedmiotową jej odpowiadającą, czyli w tym przypadku identyfikator przestrzeni zmniejsza się o numer mniej), według podanej w zmiennej {{Code|nazwa przestrzeni nazw}} dla pozycja bazowej w podanych parametrach szablonu rodzicu ramki dziecka, lub dla innej pozycji należy parametr podawać w formie {{Code|nazwa przestrzeni nazw 1}}, {{Code|nazwa przestrzeni nazw 2}}, {{Code|nazwa przestrzeni nazw 3}},..., lub te parametry można podać w postaci ogólnej {{Code|nazwa przestrzeni nazw i}}. Parametry podaje się w parametrach rodzica wywołania tej funkcji {{Code|{{m|Pudełko|Nazwa przedmiotowej przestrzeni nazw}}}} (ale ich nie trzeba podawać w dziecku, ale można) i w parametrach dziecka, jeśli chodzi o zmienną {{Code|numer jednostki}}, czyli np.: {{Code|{{m|Pudełko|Nazwa przedmiotowej przestrzeni nazw|numer jednostki{{=}}<jakaś liczba całkowita dodatnia>}}}}. Te parametry przestrzenne zamiast w rodzicu w szablonie można podać w ramce dziecka, wtedy parametry dziecka mają pierwszeństwo. Parametry przestrzenne mogą mogą być podane w postaci przestrzeni przedmiotowej lub dyskusji, ale ta funkcja zawsze ją zamienia na przedmiotową. Przestrzeń nazw z parametrów nazw przestrzennych może odpowiadać wartości przestrzeni głównej, to wtedy odpowiednia przestrzeń nazw z parametru nazwy jednostki się nie liczy w tej funkcji, aby się liczyła należy użyć funkcji {{Code|{{sr|#p["Nazwa przedmiotowej przestrzeni nazw 2"](frame,...)|p=Pudełko}}}}. Definicja skrótowa funkcji: <syntaxhighlight lang="lua"> p["Nazwa przedmiotowej przestrzeni nazw"]=function(frame,czy_uwzglednic_alternatywna_nazwe,i)...end; </syntaxhighlight> Wtedy ciało funkcji tej, czyli jego definicja w środku, jest: <syntaxhighlight lang="lua"> -- Jest liczony numer parametru nazwy przestrzeni nazw, domyslnie chodzi tu o numer bazowy parametrów przestrzennych; local numer_jednostki=i or frame.args["numer jednostki"]; local liczba_numer_jednostki=((numer_jednostki)and(tonumber(numer_jednostki))or 0); local pudelko_pomocne_modul=require("Module:Pudełko/Pomocne"); -- Liczy nazwę przestrzeni nazw przedmiotową na podstawie podanych parametrów; return pudelko_pomocne_modul.Nazwa_przestrzeni_nazw(frame,1, czy_uwzglednic_alternatywna_nazwe,liczba_numer_jednostki); </syntaxhighlight> Parametry funkcji: * {{Code|frame}} - tablica ramki tablicy transportu, * {{Code|czy_uwzglednic_alternatywna_nazwe}} - czy ma uwzględniać nazwę przestrzeni nazw domyślną szablonu, dostępne wartości: {{Code|false}}, w której nazwa domyślna nie jest uwzględniana wtedy, oraz {{Code|nil}} i {{Code|true}}, które oznaczają to samo, w tym jeżeli ona jest uwzględniana, wtedy jest brany parametr pierwszy dziecka, który musi istnieć przy takiej wartości tego parametru, tzn. {{Code|{{m|Pudełko|Nazwa przedmiotowej przestrzeni nazw|Dyskusja szablonu}}}} - ta nazwa domyślna zostanie zamieniona na przedmiotową, a jak ona by była przedmiotowa, to żadnej zamiany by nie było, a nazwa uzyskana z nazwy przestrzeni nazw z parametrów przestrzennych jest w takim przypadku błędna, to w takim razie brany jest ten parametr, a jeżeli ta nazwa domyślna jest błędna, czyli {{Code|{{m|Pudełko|Nazwa przedmiotowej przestrzeni nazw|Moja przestrzeń}}}}, wtedy funkcja zwraca stan błędu {{Code|(błąd)}}. * {{Code|i}} - numer zmiennej nazwy przestrzeni nazw. Funkcja wykorzystuje {{Code|{{sr|#p.Nazwa_przestrzeni_nazw(frame,...)|p=Pudełko/Pomocne}}}} do wyznaczania ogólnego nazwy przestrzeni nazw dla pozycji bazowej i numerkowej, tzn. dla pozycji: jeden, dwa, trzy,..., itd, i ich ogólnej. Parametr ramki tablicy transportu rodzica szablonu: * {{Code|nazwa przestrzeni nazw}}, {{Code|nazwa przestrzeni nazw 1}}, {{Code|nazwa przestrzeni nazw 2}}, {{Code|nazwa przestrzeni nazw 3}},..., {{Code|nazwa przestrzeni nazw i}} - nazwy przestrzeni nazw dla pozycji bazowej oraz zwykłej i ogólnej numerkowej, * {{Code|typ jednostki}}, {{Code|typ jednostki 1}}, {{Code|typ jednostki 2}}, {{Code|typ jednostki 3}},..., {{Code|typ jednostki i}} - typy jednostek, którym odpowiadają pewne przestrzenie przedmiotowe, dla pozycji bazowej, numerkowej i ogólnej. Parametry ramki tablicy transportu dziecka: * Parametry dziecka są takie same jak rodzica dla funkcji pudełkowej plus tu wymienione, * {{Code|numer jednostki}} - jak parametr {{Code|i}} nie został ustawiony, to wtedy liczy się ta zmienna. Przykłady: <syntaxhighlight lang="mediawiki"> {{Nazwa szablonu|nazwa przestrzeni nazw=Dyskusja Wikibooks|nazwa przestrzeni nazw 2=Dyskusja szablonu|nazwa przestrzeni nazw i=Dyskusja modułu}} </syntaxhighlight> W dziecku powiedzmy jest wywołanie, i szukamy nazwy przestrzeni nazw o numerze dwa, która nie została podana, ale istnieje za to jej wersji ogólna {{Code|nazwa przestrzeni nazw i}} i domyślna {{Code|nazwa przestrzeni nazw}}: <syntaxhighlight lang="mediawiki"> {{#invoke:Pudełko|Nazwa przedmiotowej przestrzeni nazw|numer jednostki=1}} </syntaxhighlight> Na podstawie powyższego przykładu otrzymamy wynik o schemacie, nie wyniku, bo tam nie ma zmiennej {{Code|nazwa przestrzeni nazw 1}}, ale jest {{Code|nazwa przestrzeni nazw i}}: <syntaxhighlight lang="mediawiki"> <!-- Ale nie "nazwa przestrzeni nazw", bo jej nie ma, ale za to istnieje "nazwa przestrzeni nazw i"; --> <!-- nazwa przestrzeni nazw 2=nazwa przestrzeni nazw i=Dyskusja modułu; --> <!-- Czyli wynik: --> Moduł <!-- Widzimy, że wygenerowała się nazwa przestrzeni nazw, którą jest przestrzeń przedmiotowa programowa przestrzeni dyskusji "Dyskusja modułu", którą również jest "Szablon" jego przestrzeni dyskusji "Dyskusja szablonu", a dla ich przestrzeni przedmiotowej, zamiast dyskusji, to samo przekształca się na to samo; --> </syntaxhighlight> Nie jest brana w tym powyższym przykładzie zmienna {{Code|nazwa przestrzeni nazw}}, bo jej nie ma, ale za to jest {{Code|nazwa przestrzeni nazw i}}, bo ona występuje jako parametr domyślny ogólny dla parametrów numerkowych. Przykłady w wikikodzie: * {{Code|{{m|Pudełko|Nazwa przedmiotowej przestrzeni nazw|numer jednostki{{=}}2}}}} → {{Tt|{{#invoke:Pudełko|Nazwa przedmiotowej przestrzeni nazw|numer jednostki=2}}}} * {{Code|{{m|Pudełko|Nazwa przedmiotowej przestrzeni nazw|Dyskusja szablonu|nazwa przestrzeni nazw i{{=}}Moja przestrzeń|numer jednostki{{=}}2}}}} → {{Tt|{{#invoke:Pudełko|Nazwa przedmiotowej przestrzeni nazw|Dyskusja szablonu|nazwa przestrzeni nazw i=Moja przestrzeń|numer jednostki=2}}}} * {{Code|{{m|Pudełko|Nazwa przedmiotowej przestrzeni nazw|nazwa przestrzeni nazw 2{{=}}Dyskusja szablonu|numer jednostki{{=}}2}}}} → {{Tt|{{#invoke:Pudełko|Nazwa przedmiotowej przestrzeni nazw|nazwa przestrzeni nazw 2=Dyskusja szablonu|numer jednostki=2}}}} * {{Code|{{m|Pudełko|Nazwa przedmiotowej przestrzeni nazw|nazwa przestrzeni nazw 2{{=}}Dyskusja szablonu|numer jednostki{{=}}2}}}} → {{Tt|{{#invoke:Pudełko|Nazwa przedmiotowej przestrzeni nazw|nazwa przestrzeni nazw i=Dyskusja szablonu|numer jednostki=2}}}} * {{Code|{{m|Pudełko|Nazwa przedmiotowej przestrzeni nazw|nazwa przestrzeni nazw{{=}}Dyskusja szablonu|numer jednostki{{=}}2}}}} → {{Tt|{{#invoke:Pudełko|Nazwa przedmiotowej przestrzeni nazw|nazwa przestrzeni nazw=Dyskusja szablonu|numer jednostki=2}}}} Powyżej dla przykładu podano parametry nie w rodzicu w szablonie, tylko w dziecku, jeśli chodzi o parametry nazw przestrzeni nazw, ale ich się za to nie powinno podawać w tych ramach, tylko w szablonach, w których wywoływane są te ramki pudełek {{Code|{{m|Pudełko}}}}, ale tak tutaj tak zrobiono by było najłatwiej sprawdzić działanie tego typu funkcji. Analogicznie możemy podawać parametry typu jednostki, np.: wywołaniu modułowym {{Code|{{m|Pudełko|Nazwa przedmiotowej przestrzeni nazw|typ jednostki 2{{=}}strona szablonu|numer jednostki{{=}}2}}}}, ale o tym więcej w rozdziałach {{Code|{{sr|# p["Typ jednostki"](frame,i)|p=Pudełko}}}}, {{Code|{{sr|#p["Typ jednostki 2"](frame,i)|p=Pudełko}}}}, {{Code|{{sr|#p["Typ jednostki 3"](frame,i)|p=Pudełko}}}} itp. w „{{sr|#Funkcje typu jednostki|p=Pudełko}}”, ale wtedy ta sama nazwa przestrzeni nazw reprezentowana przez {{Parametr|typ jednostki 2|strona szablonu}}, jest zamieniana na to samo, lepiej jest tutaj używać parametrów przestrzennych nazw niż typu jednostki, bo typ jednostki ma taką samą wartość dla przestrzeni przedmiotowej, co dyskusji. Tutaj parametr dyskusji typu jednostki bazowy i numerkowy ogólny, czy szczegółowy, nie gra roli, bo nawet, gdy wygenerujemy nazwę przestrzeni dyskusji za pomoca tego parametru, to i tak otrzymamy na samym końcu jego nazwę przedmiotową. Również parametry typu jednostki nie powinno się podawać w dziecku w ramce, tylko w rodzicu w szablonie jako parametry, w którym ta ramka jest wywoływana, ale tutaj podano jedynie dla przykładu, jak najłatwiej sprawdzić działanie tych parametrów tej funkcji. Najpierw w funkcji nagłówku brane są parametry nazw przestrzeni nazw, a jeżeli ich nie ma, to parametry typu jednostki, a jeżeli nie ma, to generowane są nazwy na podstawie aktualnego modułu. === {{Code|p["Nazwa przestrzeni nazw dyskusji"](frame,...)}} === Funkcja pisze nazwę przestrzeni nazw dyskusji jakikolwiek nazwy przestrzeni nazw (tzn. nazwę przedmiotową nazwy przestrzenie nazw, czyli nie dyskusji, zamieniana jest na dyskusji, czyli identyfikator przestrzeni się zmienia jeden wyżej, a dyskusji, nie przedmiotową, przekształca się na tą samą), według podanej w zmiennej {{Code|nazwa przestrzeni nazw}} dla pozycja bazowej w podanych parametrach szablonu rodzicu ramki dziecka, lub dla innej pozycji należy parametr podawać w formie {{Code|nazwa przestrzeni nazw 1}}, {{Code|nazwa przestrzeni nazw 2}}, {{Code|nazwa przestrzeni nazw 3}},..., lub te parametry można podać w postaci ogólnej {{Code|nazwa przestrzeni nazw i}}. Parametry podaje się w parametrach rodzica wywołania tej funkcji {{Code|{{m|Pudełko|Nazwa przestrzeni nazw dyskusji}}}} (ale ich nie trzeba podawać w dziecku, ale można) i w parametrach dziecka, jeśli chodzi o zmienną {{Code|numer jednostki}}, czyli np.: {{Code|{{m|Pudełko|Nazwa przestrzeni nazw dyskusji|numer jednostki{{=}}<jakaś liczba całkowita dodatnia>}}}}. Te parametry przestrzenne zamiast w rodzicu w szablonie można podać w ramce dziecka, wtedy parametry dziecka mają pierwszeństwo. Parametry przestrzenne mogą mogą być podane w postaci przestrzeni przedmiotowej lub dyskusji, ale ta funkcja zawsze ją zamienia na dyskusji. Przestrzeń nazw z parametrów nazw przestrzennych może odpowiadać wartości przestrzeni głównej, to wtedy odpowiednia przestrzeń nazw z parametru nazwy jednostki się nie liczy w tej funkcji, aby się liczyła należy użyć funkcji {{Code|{{sr|#p["Nazwa przestrzeni nazw dyskusji 2"](frame,...)|p=Pudełko}}}}. Definicja skrótowa funkcji: <syntaxhighlight lang="lua"> p["Nazwa przestrzeni nazw dyskusji"]=function(frame,czy_uwzglednic_alternatywna_nazwe,i)...end; </syntaxhighlight> Wtedy ciało funkcji tej, czyli jego definicja w środku, jest: <syntaxhighlight lang="lua"> -- Jest liczony numer parametru nazwy przestrzeni nazw, domyslnie chodzi tu o numer bazowy parametrów przestrzennych; local numer_jednostki=i or frame.args["numer jednostki"]; local liczba_numer_jednostki=((numer_jednostki)and(tonumber(numer_jednostki))or 0); local pudelko_pomocne_modul=require("Module:Pudełko/Pomocne"); -- Liczy nazwę przestrzeni nazw dyskusji na podstawie podanych parametrów; return pudelko_pomocne_modul.Nazwa_przestrzeni_nazw(frame,2, czy_uwzglednic_alternatywna_nazwe,liczba_numer_jednostki); </syntaxhighlight> Parametry funkcji: * {{Code|frame}} - tablica ramki tablicy transportu, * {{Code|czy_uwzglednic_alternatywna_nazwe}} - czy ma uwzględniać nazwę przestrzeni nazw domyślną szablonu, dostępne wartości: {{Code|false}}, w której nazwa domyślna nie jest uwzględniana wtedy, oraz {{Code|nil}} i {{Code|true}}, które oznaczają to samo, w tym jeżeli ona jest uwzględniana, wtedy jest brany parametr pierwszy dziecka, który musi istnieć przy takiej wartości tego parametru, tzn. {{Code|{{m|Pudełko|Nazwa przestrzeni nazw dyskusji|Szablon}}}} - ta nazwa domyślna zostanie przekształcona na dyskusji, a jeżeli ona by była dyskusji, to nie byłoby żadnego przekształcenia, a nazwa uzyskana nazwy przestrzeni nazw z parametrów przestrzennych jest w takim przypadku błędna, to w takim razie brany jest ten parametr, a jeżeli nazwa domyślna jest błędna, czyli {{Code|{{m|Pudełko|Nazwa przestrzeni nazw dyskusji|Moja przestrzeń}}}}, wtedy funkcja zwraca stan błędu {{Code|(błąd)}}. * {{Code|i}} - numer zmiennej nazwy przestrzeni nazw. Funkcja wykorzystuje {{Code|{{sr|#p.Nazwa_przestrzeni_nazw(frame,...)|p=Pudełko/Pomocne}}}} do wyznaczania ogólnego nazwy przestrzeni nazw dla pozycji bazowej i numerkowej, tzn. dla pozycji: jeden, dwa, trzy,..., itd, i ich ogólnej. Parametr ramki tablicy transportu rodzica szablonu: * {{Code|nazwa przestrzeni nazw}}, {{Code|nazwa przestrzeni nazw 1}}, {{Code|nazwa przestrzeni nazw 2}}, {{Code|nazwa przestrzeni nazw 3}},..., {{Code|nazwa przestrzeni nazw i}} - nazwy przestrzeni nazw dla pozycji bazowej oraz zwykłej i ogólnej numerkowej, * {{Code|typ jednostki}}, {{Code|typ jednostki 1}}, {{Code|typ jednostki 2}}, {{Code|typ jednostki 3}},..., {{Code|typ jednostki i}} - typy jednostek, którym odpowiadają pewne przestrzenie przedmiotowe, dla pozycji bazowej, numerkowej i ogólnej. Parametry ramki tablicy transportu dziecka: * Parametry dziecka są takie same jak rodzica dla funkcji pudełkowej plus tu wymienione, * {{Code|numer jednostki}} - jak parametr {{Code|i}} nie został ustawiony, to wtedy liczy się ta zmienna. Przykłady: <syntaxhighlight lang="mediawiki"> {{Nazwa szablonu|nazwa przestrzeni nazw=Wikibooks|nazwa przestrzeni nazw 2=Szablon|nazwa przestrzeni nazw i=Moduł}} </syntaxhighlight> W dziecku powiedzmy jest wywołanie, i szukamy nazwy przestrzeni nazw o numerze dwa, która nie została podana, ale istnieje za to jej wersji ogólna {{Code|nazwa przestrzeni nazw i}} i domyślna {{Code|nazwa przestrzeni nazw}}: <syntaxhighlight lang="mediawiki"> {{#invoke:Pudełko|Nazwa przestrzeni nazw dyskusji|numer jednostki=1}} </syntaxhighlight> Na podstawie powyższego przykładu otrzymamy wynik o schemacie, nie wyniku, bo tam nie ma zmiennej {{Code|nazwa przestrzeni nazw 1}}, ale jest {{Code|nazwa przestrzeni nazw i}}: <syntaxhighlight lang="mediawiki"> <!-- Ale nie "nazwa przestrzeni nazw", bo jej nie ma, ale za to istnieje "nazwa przestrzeni nazw i"; --> <!-- nazwa przestrzeni nazw 2=nazwa przestrzeni nazw i=Moduł; --> <!-- Czyli wynik: --> Dyskusja modułu <!-- Widzimy, że wygenerowała się nazwa przestrzeni nazw, którą jest przestrzeń dyskusji przestrzeni programowej przestrzeni przedmiotowej "Moduł", którą również jest "Szablon" jego przestrzeni dyskusji "Dyskusja szablonu", a dla ich przestrzeni przedmiotowej, zamiast dyskusji, to przekształca się na dyskusji jej odpowiadającą; --> </syntaxhighlight> Nie jest brana w tym powyższym przykładzie zmienna {{Code|nazwa przestrzeni nazw}}, bo jej nie ma, ale za to jest {{Code|nazwa przestrzeni nazw i}}, bo ona występuje jako parametr domyślny ogólny dla parametrów numerkowych. Przykłady w wikikodzie: * {{Code|{{m|Pudełko|Nazwa przestrzeni nazw dyskusji|numer jednostki{{=}}2}}}} → {{Tt|{{#invoke:Pudełko|Nazwa przestrzeni nazw dyskusji|numer jednostki=2}}}} * {{Code|{{m|Pudełko|Nazwa przestrzeni nazw dyskusji|Szablon|nazwa przestrzeni nazw i{{=}}Moja przestrzeń|numer jednostki{{=}}2}}}} → {{Tt|{{#invoke:Pudełko|Nazwa przestrzeni nazw dyskusji|Szablon|nazwa przestrzeni nazw i=Moja przestrzeń|numer jednostki=2}}}} * {{Code|{{m|Pudełko|Nazwa przestrzeni nazw dyskusji|nazwa przestrzeni nazw 2{{=}}Szablon|numer jednostki{{=}}2}}}} → {{Tt|{{#invoke:Pudełko|Nazwa przestrzeni nazw dyskusji|nazwa przestrzeni nazw 2=Szablon|numer jednostki=2}}}} * {{Code|{{m|Pudełko|Nazwa przestrzeni nazw dyskusji|nazwa przestrzeni nazw 2{{=}}Szablon|numer jednostki{{=}}2}}}} → {{Tt|{{#invoke:Pudełko|Nazwa przestrzeni nazw dyskusji|nazwa przestrzeni nazw i=Szablon|numer jednostki=2}}}} * {{Code|{{m|Pudełko|Nazwa przestrzeni nazw dyskusji|nazwa przestrzeni nazw{{=}}Szablon|numer jednostki{{=}}2}}}} → {{Tt|{{#invoke:Pudełko|Nazwa przestrzeni nazw dyskusji|nazwa przestrzeni nazw=Szablon|numer jednostki=2}}}} Powyżej dla przykładu podano parametry nie w rodzicu w szablonie, tylko w dziecku, jeśli chodzi o parametry nazw przestrzeni nazw, ale ich się za to nie powinno podawać w tych ramach, tylko w szablonach, w których wywoływane są te ramki pudełek {{Code|{{m|Pudełko}}}}, ale tak tutaj tak zrobiono by było najłatwiej sprawdzić działanie tego typu funkcji. Analogicznie możemy podawać parametry typu jednostki, np.: wywołaniu modułowym {{Code|{{m|Pudełko|Nazwa przestrzeni nazw dyskusji|typ jednostki 2{{=}}strona szablonu|numer jednostki{{=}}2}}}}, ale o tym więcej w rozdziałach {{Code|{{sr|# p["Typ jednostki"](frame,i)|p=Pudełko}}}}, {{Code|{{sr|#p["Typ jednostki 2"](frame,i)|p=Pudełko}}}}, {{Code|{{sr|#p["Typ jednostki 3"](frame,i)|p=Pudełko}}}} itp. w „{{sr|#Funkcje typu jednostki|p=Pudełko}}”, ale wtedy nazwa przestrzeni nazw reprezentowana przez {{Parametr|typ jednostki 2|strona szablonu}}, jest zamieniana na nazwę przestrzeni nazw dyskusji. Parametr dyskusji typu jednostki bazowy lub dla danego numerka ogólny, czy szczegółowy, nie gra roli. Również parametry typu jednostki nie powinno się podawać w dziecku w ramce, tylko w rodzicu w szablonie jako parametry, w którym ta ramka jest wywoływana, ale tutaj podano jedynie dla przykładu, jak najłatwiej sprawdzić działanie tych parametrów tej funkcji. Najpierw w funkcji nagłówku brane są parametry nazw przestrzeni nazw, a jeżeli ich nie ma, to parametry typu jednostki, a jeżeli nie ma, to generowane są nazwy na podstawie aktualnego modułu. == Funkcje nazw przestrzeni nazw drugiej wersji == === {{Code|p["Nazwa przestrzeni nazw 2"](frame,...)}} === Funkcja pisze nazwę przestrzeni nazw, niezależnie, czy to jest przedmiotowa, czy dyskusji, według, i nie zawsze tylko, podanej w zmiennej {{Code|nazwa przestrzeni nazw}} dla pozycja bazowej w podanych parametrach szablonu rodzicu ramki dziecka, lub dla innej pozycji należy parametr podawać w formie {{Code|nazwa przestrzeni nazw 1}}, {{Code|nazwa przestrzeni nazw 2}}, {{Code|nazwa przestrzeni nazw 3}},..., lub te parametry można podać w postaci ogólnej {{Code|nazwa przestrzeni nazw i}}. W tej funkcji trzeba też podawać parametry nazwy jednostek {{Code|nazwa jednostki}}, {{Code|nazwa jednostki 1}}, {{Code|nazwa jednostki 2}}, {{Code|nazwa jednostki 3}},... Parametry podaje się w parametrach rodzica wywołania tej funkcji {{Code|{{m|Pudełko|Nazwa przestrzeni nazw 2}}}} (ale ich nie trzeba podawać w dziecku, ale można) i w parametrach dziecka, jeśli chodzi o zmienną {{Code|numer jednostki}}, czyli np.: {{Code|{{m|Pudełko|Nazwa przestrzeni nazw 2|numer jednostki{{=}}<jakaś liczba całkowita dodatnia>}}}}. Te parametry przestrzenne zamiast w rodzicu w szablonie można podać w ramce dziecka, wtedy parametry dziecka mają pierwszeństwo. Przestrzeń nazw z parametrów nazw przestrzennych może odpowiadać wartości przestrzeni głównej, to wtedy odpowiednia przestrzeń nazw z parametru nazwy jednostki się liczy w tej funkcji, wtedy jest liczona nazwa przestrzeni nazw z tego parametru. Gdy parametry przestrzenne lub typ jednostki w drugim podejściu nie wskazują na przestrzeń główną, to wtedy działanie tej funkcji jest podobne do {{Code|{{sr|#p["Nazwa przestrzeni nazw"](frame,...)|p=Pudełko}}}}. Definicja skrótowa funkcji: <syntaxhighlight lang="lua"> p["Nazwa przestrzeni nazw 2"]=function(frame,czy_uwzglednic_alternatywna_nazwe,i)...end; </syntaxhighlight> Wtedy ciało funkcji tej, czyli jego definicja w środku, jest: <syntaxhighlight lang="lua"> local pudelko_pomocne_modul=require("Module:Pudełko/Pomocne"); -- Liczy nazwę przestrzeni nazw, jeżeli z parametrów przestrzennych przestrzeń wskazuje na główną, to wtedy jest liczona przestrzeń nazw z nazwy jednostki; return pudelko_pomocne_modul.Nazwa_przestrzeni_nazw_2(frame,czy_uwzglednic_alternatywna_nazwe,i) </syntaxhighlight> Parametry funkcji: * {{Code|frame}} - tablica ramki tablicy transportu, * {{Code|czy_uwzglednic_alternatywna_nazwe}} - czy ma uwzględniać nazwę przestrzeni nazw domyślną szablonu, dostępne wartości: {{Code|false}}, w której nazwa domyślna nie jest uwzględniana wtedy, oraz {{Code|nil}} i {{Code|true}}, które oznaczają to samo, w tym jeżeli ona jest uwzględniana, wtedy jest brany parametr pierwszy dziecka, który musi istnieć przy takiej wartości tego parametru, tzn. {{Code|{{m|Pudełko|Nazwa przestrzeni nazw 2|Szablon}}}}, a nazwa uzyskana nazwy przestrzeni nazw jest w takim przypadku błędna, a jeżeli nazwa domyślna jest błędna, czyli {{Code|{{m|Pudełko|Nazwa przestrzeni nazw 2|Moja przestrzeń}}}}, wtedy funkcja zwraca stan błędu {{Code|(błąd)}}. * {{Code|i}} - numer zmiennej nazwy przestrzeni nazw. Funkcja wykorzystuje {{Code|{{sr|#p.Nazwa_przestrzeni_nazw_2(frame,...)|p=Pudełko/Pomocne}}}} do wyznaczania ogólnego nazwy przestrzeni nazw dla pozycji bazowej i numerkowej, tzn. dla pozycji: jeden, dwa, trzy,..., itd, i ich ogólnej. Parametr ramki tablicy transportu rodzica szablonu: * {{Code|nazwa przestrzeni nazw}}, {{Code|nazwa przestrzeni nazw 1}}, {{Code|nazwa przestrzeni nazw 2}}, {{Code|nazwa przestrzeni nazw 3}},..., {{Code|nazwa przestrzeni nazw i}} - nazwy przestrzeni nazw dla pozycji bazowej oraz zwykłej i ogólnej numerkowej, * {{Code|nazwa jednostki}}, {{Code|nazwa jednostki 1}}, {{Code|nazwa jednostki 2}}, {{Code|nazwa jednostki 3}},... - nazwy jednostek dla pozycji bazowej i numerkowej, * {{Code|typ jednostki}}, {{Code|typ jednostki 1}}, {{Code|typ jednostki 2}}, {{Code|typ jednostki 3}},..., {{Code|typ jednostki i}} - typy jednostek, którym odpowiadają pewne przestrzenie przedmiotowe, dla pozycji bazowej, numerkowej i ogólnej, ** {{Code|dyskusja typu jednostki}}, {{Code|dyskusja typu jednostki 1}}, {{Code|dyskusja typ jednostki 2}}, {{Code|dyskusja typ jednostki 3}},..., {{Code|dyskusja typ jednostki i}} - czy dany typ jednostki ma przedstawiać, jeśli niepusta, przestrzeń dyskusji dla pozycji bazowej, numerkowej i ogólnej. Parametry ramki tablicy transportu dziecka: * Parametry dziecka są takie same jak rodzica dla funkcji pudełkowej plus tu wymienione, * {{Code|numer jednostki}} - jak parametr {{Code|i}} nie został ustawiony, to wtedy liczy się ta zmienna. Przykłady: <syntaxhighlight lang="mediawiki"> {{Nazwa szablonu|nazwa przestrzeni nazw=Wikibooks|nazwa przestrzeni nazw 1=Szablon|nazwa przestrzeni nazw i=|nazwa jednostki 2=Wikibooks:Strona}} </syntaxhighlight> W dziecku powiedzmy jest wywołanie, i szukamy nazwy przestrzeni nazw o numerze dwa, która została podana, ale istnieje za to jej wersji ogólna {{Code|nazwa przestrzeni nazw i}} i domyślna {{Code|nazwa przestrzeni nazw}}, ale wtedy dla tego numerkowego liczy się to ogólne z {{Code| i}}, a ponieważ ta nazwa jest pusta, więc będziemy liczyli nazwę przestrzeni nazw z {{Code|nazwa jednostki 2}}: <syntaxhighlight lang="mediawiki"> {{#invoke:Pudełko|Nazwa przestrzeni nazw 2|numer jednostki=2}} </syntaxhighlight> Na podstawie powyższego przykładu otrzymamy wynik o schemacie, nie wyniku, bo tam nie ma zmiennej {{Code|nazwa przestrzeni nazw 1}}, ale jest {{Code|nazwa przestrzeni nazw i}}: <syntaxhighlight lang="mediawiki"> <!-- Ale nie "nazwa przestrzeni nazw 2", bo jej nie ma, ale za to istnieje "nazwa przestrzeni nazw i"; --> <!-- nazwa przestrzeni nazw 2=nazwa przestrzeni nazw i="", a nazwa jednostki 2="Wikibooks:Strona"; --> <!-- Czyli wynik: --> Wikibooks <!-- Widzimy, że wygenerowała się nazwa przestrzeni nazw, którą jest przestrzeń nieprogramowa, ale projektu, wychodząca z nazwy jednostek w tym przypadku z "nazwa jednostki 2"; --> </syntaxhighlight> Nie jest brana w tym powyższym przykładzie zmienna {{Code|nazwa przestrzeni nazw}}, bo jej nie ma, ale za to jest {{Code|nazwa przestrzeni nazw i}}, bo ona występuje jako parametr domyślny ogólny dla parametrów numerkowych. Tytaj jest używana jest zmienna {{Code|nazwa jednostki 2}} do wygenerowania ostatecznego wyniku, bo jak można zauważyć, parametry przestrzenne wskazują na przestrzeń główną, a nazwy jednostek już nie. Przykłady w wikikodzie: * {{Code|{{m|Pudełko|Nazwa przestrzeni nazw 2|numer jednostki{{=}}2}}}} → {{Tt|{{#invoke:Pudełko|Nazwa przestrzeni nazw 2|numer jednostki=2}}}} * {{Code|{{m|Pudełko|Nazwa przestrzeni nazw 2|Szablon|nazwa przestrzeni nazw i{{=}}Moja przestrzeń|numer jednostki{{=}}2}}}} → {{Tt|{{#invoke:Pudełko|Nazwa przestrzeni nazw 2|Szablon|nazwa przestrzeni nazw i=Moja przestrzeń|numer jednostki=2}}}} * {{Code|{{m|Pudełko|Nazwa przestrzeni nazw 2|nazwa przestrzeni nazw 2{{=}}|nazwa jednostki 2{{=}}Szablon:Strona|numer jednostki{{=}}2}}}} → {{Tt|{{#invoke:Pudełko|Nazwa przestrzeni nazw 2|nazwa przestrzeni nazw 2=|nazwa jednostki 2=Szablon:Strona|numer jednostki=2}}}} * {{Code|{{m|Pudełko|Nazwa przestrzeni nazw 2|nazwa przestrzeni nazw i{{=}}|nazwa jednostki 2{{=}}Szablon:Strona|numer jednostki{{=}}2}}}} → {{Tt|{{#invoke:Pudełko|Nazwa przestrzeni nazw 2|nazwa przestrzeni nazw i=|nazwa jednostki 2=Szablon:Strona|numer jednostki=2}}}} * {{Code|{{m|Pudełko|Nazwa przestrzeni nazw 2|Szablon|nazwa przestrzeni nazw{{=}}|nazwa jednostki 2{{=}}Wikibooks:Strona|numer jednostki{{=}}2}}}} → {{Tt|{{#invoke:Pudełko|Nazwa przestrzeni nazw 2|Szablon|nazwa przestrzeni nazw=|nazwa jednostki 2=Wikibooks:Strona|numer jednostki=2}}}} Powyżej dla przykładu podano parametry nie w rodzicu w szablonie, tylko w dziecku, jeśli chodzi o parametry nazw przestrzeni nazw i nazw jednostek, ale ich się za to nie powinno podawać w tych ramach, tylko w szablonach, w których wywoływane są te ramki pudełek {{Code|{{m|Pudełko}}}}, ale tak tutaj tak zrobiono by było najłatwiej sprawdzić działanie tego typu funkcji. Analogicznie możemy podawać parametry typu jednostki, np.: wywołaniu modułowym {{Code|{{m|Pudełko|Nazwa przestrzeni nazw 2|typ jednostki 2{{=}}Podręcznik|nazwa jednostki 2{{=}}Szablon:Strona|numer jednostki{{=}}2}}}} (ale wtedy jest brana przestrzeń nazw z nazwy jednostki), ale o tym więcej w rozdziałach {{Code|{{sr|# p["Typ jednostki"](frame,i)|p=Pudełko}}}}, {{Code|{{sr|#p["Typ jednostki 2"](frame,i)|p=Pudełko}}}}, {{Code|{{sr|#p["Typ jednostki 3"](frame,i)|p=Pudełko}}}} itp. w „{{sr|#Funkcje typu jednostki|p=Pudełko}}”, on definiuje przestrzenie przedmiotowe, ale można użyć parametru dyskusji typu jednostki z wartością niepustą, wtedy wyświetli się nazwa przestrzeni nazw dyskusji. Jeżeli typ jednostki wskazuje na przestrzeń nazw główną, wtedy się liczą parametry nazw jednostek. Również parametry typu jednostki nie powinno się podawać w dziecku w ramce, tylko w rodzicu w szablonie jako parametry, w którym ta ramka jest wywoływana, ale tutaj podano jedynie dla przykładu, jak najłatwiej sprawdzić działanie tych parametrów tej funkcji. Najpierw w funkcji nagłówku brane są parametry nazw przestrzeni nazw, a jeżeli ich nie ma, to parametry typu jednostki, a jeżeli nie ma lub parametry przestrzenne wskazują na przestrzeń główną, i nie ma nazwy jednostki, to generowane są nazwy tej funkcji na podstawie aktualnej strony. === {{Code|p["Nazwa przedmiotowej przestrzeni nazw 2"](frame,...)}} === Funkcja pisze przedmiotową nazwę przestrzeni nazw jakikolwiek nazwy przestrzeni nazw (tzn. nazwę przedmiotową nazwy przestrzenie nazw, czyli nie dyskusji, zamieniana jest na nią samą, czyli identyfikator przestrzeni się nie zmienia, a dyskusji, nie przedmiotową, przekształca się na przedmiotową jej odpowiadającą, czyli w tym przypadku identyfikator przestrzeni zmniejsza się o numer mniej), według, i nie zawsze tylko, podanej w zmiennej {{Code|nazwa przestrzeni nazw}} dla pozycja bazowej w podanych parametrach szablonu rodzicu ramki dziecka, lub dla innej pozycji należy parametr podawać w formie {{Code|nazwa przestrzeni nazw 1}}, {{Code|nazwa przestrzeni nazw 2}}, {{Code|nazwa przestrzeni nazw 3}},..., lub te parametry można podać w postaci ogólnej {{Code|nazwa przestrzeni nazw i}}. W tej funkcji trzeba też podawać parametry nazwy jednostek {{Code|nazwa jednostki}}, {{Code|nazwa jednostki 1}}, {{Code|nazwa jednostki 2}}, {{Code|nazwa jednostki 3}},... Parametry podaje się w parametrach rodzica wywołania tej funkcji {{Code|{{m|Pudełko|Nazwa przedmiotowej przestrzeni nazw 2}}}} (ale ich nie trzeba podawać w dziecku, ale można) i w parametrach dziecka, jeśli chodzi o zmienną {{Code|numer jednostki}}, czyli np.: {{Code|{{m|Pudełko|Nazwa przedmiotowej przestrzeni nazw 2|numer jednostki{{=}}<jakaś liczba całkowita dodatnia>}}}}. Te parametry przestrzenne zamiast w rodzicu w szablonie można podać w ramce dziecka, wtedy parametry dziecka mają pierwszeństwo. Przestrzeń nazw z parametrów nazw przestrzennych po przekształceniu na przedmiotową może odpowiadać wartości przestrzeni głównej, to wtedy odpowiednia przestrzeń nazw z parametru nazwy jednostki się liczy w tej funkcji, wtedy jest liczona nazwa przestrzeni nazw z tego parametru. Gdy parametry przestrzenne lub typ jednostki w drugim podejściu nie wskazują na przestrzeń główną, to wtedy działanie tej funkcji jest podobne do {{Code|{{sr|#p["Nazwa przedmiotowej przestrzeni nazw"](frame,...)|p=Pudełko}}}}. Definicja skrótowa funkcji: <syntaxhighlight lang="lua"> p["Nazwa przedmiotowej przestrzeni nazw 2"]=function(frame,czy_uwzglednic_alternatywna_nazwe,i)...end; </syntaxhighlight> Wtedy ciało funkcji tej, czyli jego definicja w środku, jest: <syntaxhighlight lang="lua"> local pudelko_pomocne_modul=require("Module:Pudełko/Pomocne"); return pudelko_pomocne_modul.Nazwa_przestrzeni_nazw_przedmiotowa_dyskusji_2(frame,czy_uwzglednic_alternatywna_nazwe,i,"przedmiotowa"); </syntaxhighlight> Parametry funkcji: * {{Code|frame}} - tablica ramki tablicy transportu, * {{Code|czy_uwzglednic_alternatywna_nazwe}} - czy ma uwzględniać nazwę przestrzeni nazw domyślną szablonu, dostępne wartości: {{Code|false}}, w której nazwa domyślna nie jest uwzględniana wtedy, oraz {{Code|nil}} i {{Code|true}}, które oznaczają to samo, w tym jeżeli ona jest uwzględniana, wtedy jest brany parametr pierwszy dziecka, który musi istnieć przy takiej wartości tego parametru, tzn. {{Code|{{m|Pudełko|Nazwa przedmiotowej przestrzeni nazw 2|Szablon}}}}, a nazwa uzyskana nazwy przestrzeni nazw jest w takim przypadku błędna, a jeżeli nazwa domyślna jest błędna, czyli {{Code|{{m|Pudełko|Nazwa przedmiotowej przestrzeni nazw 2|Moja przestrzeń}}}}, wtedy funkcja zwraca stan błędu {{Code|(błąd)}}. * {{Code|i}} - numer zmiennej nazwy przestrzeni nazw. Funkcja wykorzystuje {{Code|{{sr|#p.Nazwa_przestrzeni_nazw_przedmiotowa_dyskusji_2(frame,...)|p=Pudełko/Pomocne}}}} do wyznaczania ogólnego nazwy przestrzeni nazw dla pozycji bazowej i numerkowej, tzn. dla pozycji: jeden, dwa, trzy,..., itd, i ich ogólnej. Parametr ramki tablicy transportu rodzica szablonu: * {{Code|nazwa przestrzeni nazw}}, {{Code|nazwa przestrzeni nazw 1}}, {{Code|nazwa przestrzeni nazw 2}}, {{Code|nazwa przestrzeni nazw 3}},..., {{Code|nazwa przestrzeni nazw i}} - nazwy przestrzeni nazw dla pozycji bazowej oraz zwykłej i ogólnej numerkowej, * {{Code|nazwa jednostki}}, {{Code|nazwa jednostki 1}}, {{Code|nazwa jednostki 2}}, {{Code|nazwa jednostki 3}},... - nazwy jednostek dla pozycji bazowej i numerkowej, * {{Code|typ jednostki}}, {{Code|typ jednostki 1}}, {{Code|typ jednostki 2}}, {{Code|typ jednostki 3}},..., {{Code|typ jednostki i}} - typy jednostek, którym odpowiadają pewne przestrzenie przedmiotowe, dla pozycji bazowej, numerkowej i ogólnej. Parametry ramki tablicy transportu dziecka: * Parametry dziecka są takie same jak rodzica dla funkcji pudełkowej plus tu wymienione, * {{Code|numer jednostki}} - jak parametr {{Code|i}} nie został ustawiony, to wtedy liczy się ta zmienna. Przykłady: <syntaxhighlight lang="mediawiki"> {{Nazwa szablonu|nazwa przestrzeni nazw=Wikibooks|nazwa przestrzeni nazw 1=Szablon|nazwa przestrzeni nazw i=|nazwa jednostki 2=Dyskusja Wikibooks:Strona}} </syntaxhighlight> W dziecku powiedzmy jest wywołanie, i szukamy nazwy przestrzeni nazw o numerze dwa, która została podana, ale istnieje za to jej wersji ogólna {{Code|nazwa przestrzeni nazw i}} i domyślna {{Code|nazwa przestrzeni nazw}}, ale wtedy dla tego numerkowego liczy się to ogólne z {{Code| i}}, a ponieważ ta nazwa jest pusta, więc będziemy liczyli nazwę przestrzeni nazw z {{Code|nazwa jednostki 2}}: <syntaxhighlight lang="mediawiki"> {{#invoke:Pudełko|Nazwa przedmiotowej przestrzeni nazw 2|numer jednostki=2}} </syntaxhighlight> Na podstawie powyższego przykładu otrzymamy wynik o schemacie, nie wyniku, bo tam nie ma zmiennej {{Code|nazwa przestrzeni nazw 1}}, ale jest {{Code|nazwa przestrzeni nazw i}}: <syntaxhighlight lang="mediawiki"> <!-- Ale nie "nazwa przestrzeni nazw 2", bo jej nie ma, ale za to istnieje "nazwa przestrzeni nazw i"; --> <!-- nazwa przestrzeni nazw 2=nazwa przestrzeni nazw i="", a nazwa jednostki 2="Dyskusja Wikibooks:Strona"; --> <!-- Czyli wynik: --> Wikibooks <!-- Widzimy, że wygenerowała się nazwa przestrzeni nazw, którą jest przestrzeń nieprogramowa, ale projektu, wychodząca z nazwy jednostek w tym przypadku z "nazwa jednostki 2"; --> </syntaxhighlight> Nie jest brana w tym powyższym przykładzie zmienna {{Code|nazwa przestrzeni nazw}}, bo jej nie ma, ale za to jest {{Code|nazwa przestrzeni nazw i}}, bo ona występuje jako parametr domyślny ogólny dla parametrów numerkowych. Tytaj jest używana jest zmienna {{Code|nazwa jednostki 2}} do wygenerowania ostatecznego wyniku, bo jak można zauważyć, parametry przestrzenne wskazują na przestrzeń główną, a nazwy jednostek już nie. Przykłady w wikikodzie: * {{Code|{{m|Pudełko|Nazwa przedmiotowej przestrzeni nazw 2|numer jednostki{{=}}2}}}} → {{Tt|{{#invoke:Pudełko|Nazwa przedmiotowej przestrzeni nazw 2|numer jednostki=2}}}} * {{Code|{{m|Pudełko|Nazwa przedmiotowej przestrzeni nazw 2|Dyskusja szablonu|nazwa przestrzeni nazw i{{=}}Moja przestrzeń|numer jednostki{{=}}2}}}} → {{Tt|{{#invoke:Pudełko|Nazwa przedmiotowej przestrzeni nazw 2|Dyskusja szablonu|nazwa przestrzeni nazw i=Moja przestrzeń|numer jednostki=2}}}} * {{Code|{{m|Pudełko|Nazwa przedmiotowej przestrzeni nazw 2|nazwa przestrzeni nazw 2{{=}}Dyskusja|nazwa jednostki 2{{=}}Dyskusja szablonu:Strona|numer jednostki{{=}}2}}}} → {{Tt|{{#invoke:Pudełko|Nazwa przedmiotowej przestrzeni nazw 2|nazwa przestrzeni nazw 2=Dyskusja|nazwa jednostki 2=Dyskusja szablonu:Strona|numer jednostki=2}}}} * {{Code|{{m|Pudełko|Nazwa przedmiotowej przestrzeni nazw 2|nazwa przestrzeni nazw i{{=}}Dyskusja|nazwa jednostki 2{{=}}Dyskusja szablonu:Strona|numer jednostki{{=}}2}}}} → {{Tt|{{#invoke:Pudełko|Nazwa przedmiotowej przestrzeni nazw 2|nazwa przestrzeni nazw i=Dyskusja|nazwa jednostki 2=Dyskusja szablonu:Strona|numer jednostki=2}}}} * {{Code|{{m|Pudełko|Nazwa przedmiotowej przestrzeni nazw 2|Dyskusja szablonu|nazwa przestrzeni nazw{{=}}Dyskusja|nazwa jednostki 2{{=}}Wikibooks:Strona|numer jednostki{{=}}2}}}} → {{Tt|{{#invoke:Pudełko|Nazwa przedmiotowej przestrzeni nazw 2|Dyskusja szablonu|nazwa przestrzeni nazw=Dyskusja|nazwa jednostki 2=Dyskusja Wikibooks:Strona|numer jednostki=2}}}} Powyżej dla przykładu podano parametry nie w rodzicu w szablonie, tylko w dziecku, jeśli chodzi o parametry nazw przestrzeni nazw i nazw jednostek, ale ich się za to nie powinno podawać w tych ramach, tylko w szablonach, w których wywoływane są te ramki pudełek {{Code|{{m|Pudełko}}}}, ale tak tutaj tak zrobiono by było najłatwiej sprawdzić działanie tego typu funkcji. Analogicznie możemy podawać parametry typu jednostki, np.: wywołaniu modułowym {{Code|{{m|Pudełko|Nazwa przedmiotowej przestrzeni nazw 2|typ jednostki 2{{=}}Podręcznik|nazwa jednostki 2{{=}}Dyskusja szablonu:Strona|numer jednostki{{=}}2}}}} (ale wtedy jest brana przestrzeń nazw z nazwy jednostki), ale o tym więcej w rozdziałach {{Code|{{sr|# p["Typ jednostki"](frame,i)|p=Pudełko}}}}, {{Code|{{sr|#p["Typ jednostki 2"](frame,i)|p=Pudełko}}}}, {{Code|{{sr|#p["Typ jednostki 3"](frame,i)|p=Pudełko}}}} itp. w „{{sr|#Funkcje typu jednostki|p=Pudełko}}”, on definiuje przestrzenie przedmiotowe, ale można użyć parametru dyskusji typu jednostki z wartością niepustą, pustą, czy nawet jej nie podamy, wtedy wyświetli się nazwa przestrzeni nazw przedmiotowej. Jeżeli typ jednostki wskazuje na przestrzeń nazw główną, wtedy się liczą parametry nazw jednostek. Również parametry typu jednostki nie powinno się podawać w dziecku w ramce, tylko w rodzicu w szablonie jako parametry, w którym ta ramka jest wywoływana, ale tutaj podano jedynie dla przykładu, jak najłatwiej sprawdzić działanie tych parametrów tej funkcji. Najpierw w funkcji nagłówku brane są parametry nazw przestrzeni nazw, a jeżeli ich nie ma, to parametry typu jednostki, a jeżeli nie ma lub parametry przestrzenne wskazują na przestrzeń główną, i nie ma nazwy jednostki, to generowane są nazwy tej funkcji na podstawie aktualnej strony. === {{Code|p["Nazwa przestrzeni nazw dyskusji 2"](frame,...)}} === Funkcja pisze nazwę przestrzeni nazw dyskusji jakikolwiek nazwy przestrzeni nazw (tzn. nazwę dyskusji nazwy przestrzenie nazw, czyli nie przedmiotowej, zamieniana jest na nią samą, czyli identyfikator przestrzeni się nie zmienia, a przedmiotową, nie dyskusji, przekształca się na dyskusji jej odpowiadającą, czyli w tym przypadku identyfikator przestrzeni zwiększa się o numer więcej), według, i nie zawsze tylko, podanej w zmiennej {{Code|nazwa przestrzeni nazw}} dla pozycja bazowej w podanych parametrach szablonu rodzicu ramki dziecka, lub dla innej pozycji należy parametr podawać w formie {{Code|nazwa przestrzeni nazw 1}}, {{Code|nazwa przestrzeni nazw 2}}, {{Code|nazwa przestrzeni nazw 3}},..., lub te parametry można podać w postaci ogólnej {{Code|nazwa przestrzeni nazw i}}. W tej funkcji trzeba też podawać parametry nazwy jednostek {{Code|nazwa jednostki}}, {{Code|nazwa jednostki 1}}, {{Code|nazwa jednostki 2}}, {{Code|nazwa jednostki 3}},... Parametry podaje się w parametrach rodzica wywołania tej funkcji {{Code|{{m|Pudełko|Nazwa przestrzeni nazw dyskusji 2}}}} (ale ich nie trzeba podawać w dziecku, ale można) i w parametrach dziecka, jeśli chodzi o zmienną {{Code|numer jednostki}}, czyli np.: {{Code|{{m|Pudełko|Nazwa przestrzeni nazw dyskusji 2|numer jednostki{{=}}<jakaś liczba całkowita dodatnia>}}}}. Te parametry przestrzenne zamiast w rodzicu w szablonie można podać w ramce dziecka, wtedy parametry dziecka mają pierwszeństwo. Przestrzeń nazw z parametrów nazw przestrzennych po przekształceniu na przedmiotową może odpowiadać wartości przestrzeni głównej, to wtedy odpowiednia przestrzeń nazw z parametru nazwy jednostki się liczy w tej funkcji, wtedy jest liczona nazwa przestrzeni nazw z tego parametru. Gdy parametry przestrzenne lub typ jednostki w drugim podejściu nie wskazują na przestrzeń główną, to wtedy działanie tej funkcji jest podobne do {{Code|{{sr|#p["Nazwa dyskusji przestrzeni nazw"](frame,...)|p=Pudełko}}}}. Definicja skrótowa funkcji: <syntaxhighlight lang="lua"> p["Nazwa przestrzeni nazw dyskusji 2"]=function(frame,czy_uwzglednic_alternatywna_nazwe,i)...end; </syntaxhighlight> Wtedy ciało funkcji tej, czyli jego definicja w środku, jest: <syntaxhighlight lang="lua"> local pudelko_pomocne_modul=require("Module:Pudełko/Pomocne"); return pudelko_pomocne_modul.Nazwa_przestrzeni_nazw_przedmiotowa_dyskusji_2(frame,czy_uwzglednic_alternatywna_nazwe,i,"dyskusja"); </syntaxhighlight> Parametry funkcji: * {{Code|frame}} - tablica ramki tablicy transportu, * {{Code|czy_uwzglednic_alternatywna_nazwe}} - czy ma uwzględniać nazwę przestrzeni nazw domyślną szablonu, dostępne wartości: {{Code|false}}, w której nazwa domyślna nie jest uwzględniana wtedy, oraz {{Code|nil}} i {{Code|true}}, które oznaczają to samo, w tym jeżeli ona jest uwzględniana, wtedy jest brany parametr pierwszy dziecka, który musi istnieć przy takiej wartości tego parametru, tzn. {{Code|{{m|Pudełko|Nazwa przestrzeni nazw dyskusji 2|Szablon}}}}, a nazwa uzyskana nazwy przestrzeni nazw jest w takim przypadku błędna, a jeżeli nazwa domyślna jest błędna, czyli {{Code|{{m|Pudełko|Nazwa przestrzeni nazw dyskusji 2|Moja przestrzeń}}}}, wtedy funkcja zwraca stan błędu {{Code|(błąd)}}. * {{Code|i}} - numer zmiennej nazwy przestrzeni nazw. Funkcja wykorzystuje {{Code|{{sr|#p.Nazwa_przestrzeni_nazw_przedmiotowa_dyskusji_2(frame,...)|p=Pudełko/Pomocne}}}} do wyznaczania ogólnego nazwy przestrzeni nazw dla pozycji bazowej i numerkowej, tzn. dla pozycji: jeden, dwa, trzy,..., itd, i ich ogólnej. Parametr ramki tablicy transportu rodzica szablonu: * {{Code|nazwa przestrzeni nazw}}, {{Code|nazwa przestrzeni nazw 1}}, {{Code|nazwa przestrzeni nazw 2}}, {{Code|nazwa przestrzeni nazw 3}},..., {{Code|nazwa przestrzeni nazw i}} - nazwy przestrzeni nazw dla pozycji bazowej oraz zwykłej i ogólnej numerkowej, * {{Code|nazwa jednostki}}, {{Code|nazwa jednostki 1}}, {{Code|nazwa jednostki 2}}, {{Code|nazwa jednostki 3}},... - nazwy jednostek dla pozycji bazowej i numerkowej, * {{Code|typ jednostki}}, {{Code|typ jednostki 1}}, {{Code|typ jednostki 2}}, {{Code|typ jednostki 3}},..., {{Code|typ jednostki i}} - typy jednostek, którym odpowiadają pewne przestrzenie przedmiotowe, dla pozycji bazowej, numerkowej i ogólnej. Parametry ramki tablicy transportu dziecka: * Parametry dziecka są takie same jak rodzica dla funkcji pudełkowej plus tu wymienione, * {{Code|numer jednostki}} - jak parametr {{Code|i}} nie został ustawiony, to wtedy liczy się ta zmienna. Przykłady: <syntaxhighlight lang="mediawiki"> {{Nazwa szablonu|nazwa przestrzeni nazw=Wikibooks|nazwa przestrzeni nazw 1=Szablon|nazwa przestrzeni nazw i=|nazwa jednostki 2=Wikibooks:Strona}} </syntaxhighlight> W dziecku powiedzmy jest wywołanie, i szukamy nazwy przestrzeni nazw o numerze dwa, która została podana, ale istnieje za to jej wersji ogólna {{Code|nazwa przestrzeni nazw i}} i domyślna {{Code|nazwa przestrzeni nazw}}, ale wtedy dla tego numerkowego liczy się to ogólne z {{Code| i}}, a ponieważ ta nazwa jest pusta, więc będziemy liczyli nazwę przestrzeni nazw z {{Code|nazwa jednostki 2}}: <syntaxhighlight lang="mediawiki"> {{#invoke:Pudełko|Nazwa przestrzeni nazw dyskusji 2|numer jednostki=2}} </syntaxhighlight> Na podstawie powyższego przykładu otrzymamy wynik o schemacie, nie wyniku, bo tam nie ma zmiennej {{Code|nazwa przestrzeni nazw 1}}, ale jest {{Code|nazwa przestrzeni nazw i}}: <syntaxhighlight lang="mediawiki"> <!-- Ale nie "nazwa przestrzeni nazw 2", bo jej nie ma, ale za to istnieje "nazwa przestrzeni nazw i"; --> <!-- nazwa przestrzeni nazw 2=nazwa przestrzeni nazw i="", a nazwa jednostki 2="Wikibooks:Strona"; --> <!-- Czyli wynik: --> Dyskusja Wikibooks <!-- Widzimy, że wygenerowała się nazwa przestrzeni nazw, którą jest przestrzeń nieprogramowa, ale dyskusji projektu, wychodząca z nazwy jednostek w tym przypadku z "nazwa jednostki 2"; --> </syntaxhighlight> Nie jest brana w tym powyższym przykładzie zmienna {{Code|nazwa przestrzeni nazw}}, bo jej nie ma, ale za to jest {{Code|nazwa przestrzeni nazw i}}, bo ona występuje jako parametr domyślny ogólny dla parametrów numerkowych. Tytaj jest używana jest zmienna {{Code|nazwa jednostki 2}} do wygenerowania ostatecznego wyniku, bo jak można zauważyć, parametry przestrzenne wskazują na przestrzeń główną, a nazwy jednostek już nie. Przykłady w wikikodzie: * {{Code|{{m|Pudełko|Nazwa przestrzeni nazw dyskusji 2|numer jednostki{{=}}2}}}} → {{Tt|{{#invoke:Pudełko|Nazwa przestrzeni nazw dyskusji 2|numer jednostki=2}}}} * {{Code|{{m|Pudełko|Nazwa przestrzeni nazw dyskusji 2|Szablon|nazwa przestrzeni nazw i{{=}}Moja przestrzeń|numer jednostki{{=}}2}}}} → {{Tt|{{#invoke:Pudełko|Nazwa przestrzeni nazw dyskusji 2|Szablon|nazwa przestrzeni nazw i=Moja przestrzeń|numer jednostki=2}}}} * {{Code|{{m|Pudełko|Nazwa przestrzeni nazw dyskusji 2|nazwa przestrzeni nazw 2{{=}}|nazwa jednostki 2{{=}}Szablon:Strona|numer jednostki{{=}}2}}}} → {{Tt|{{#invoke:Pudełko|Nazwa przestrzeni nazw dyskusji 2|nazwa przestrzeni nazw 2=|nazwa jednostki 2=Szablon:Strona|numer jednostki=2}}}} * {{Code|{{m|Pudełko|Nazwa przestrzeni nazw dyskusji 2|nazwa przestrzeni nazw i{{=}}|nazwa jednostki 2{{=}}Szablon:Strona|numer jednostki{{=}}2}}}} → {{Tt|{{#invoke:Pudełko|Nazwa przestrzeni nazw dyskusji 2|nazwa przestrzeni nazw i=|nazwa jednostki 2=Szablon:Strona|numer jednostki=2}}}} * {{Code|{{m|Pudełko|Nazwa przestrzeni nazw dyskusji 2|Szablon|nazwa przestrzeni nazw{{=}}|nazwa jednostki 2{{=}}Wikibooks:Strona|numer jednostki{{=}}2}}}} → {{Tt|{{#invoke:Pudełko|Nazwa przestrzeni nazw dyskusji 2|Szablon|nazwa przestrzeni nazw=|nazwa jednostki 2=Dyskusja Wikibooks:Strona|numer jednostki=2}}}} Powyżej dla przykładu podano parametry nie w rodzicu w szablonie, tylko w dziecku, jeśli chodzi o parametry nazw przestrzeni nazw i nazw jednostek, ale ich się za to nie powinno podawać w tych ramach, tylko w szablonach, w których wywoływane są te ramki pudełek {{Code|{{m|Pudełko}}}}, ale tak tutaj tak zrobiono by było najłatwiej sprawdzić działanie tego typu funkcji. Analogicznie możemy podawać parametry typu jednostki, np.: wywołaniu modułowym {{Code|{{m|Pudełko|Nazwa przestrzeni nazw dyskusji 2|typ jednostki 2{{=}}Podręcznik|nazwa jednostki 2{{=}}Szablon:Strona|numer jednostki{{=}}2}}}} (ale wtedy jest brana przestrzeń nazw z nazwy jednostki), ale o tym więcej w rozdziałach {{Code|{{sr|# p["Typ jednostki"](frame,i)|p=Pudełko}}}}, {{Code|{{sr|#p["Typ jednostki 2"](frame,i)|p=Pudełko}}}}, {{Code|{{sr|#p["Typ jednostki 3"](frame,i)|p=Pudełko}}}} itp. w „{{sr|#Funkcje typu jednostki|p=Pudełko}}”, on definiuje przestrzenie dyskusji, ale można użyć parametru dyskusji typu jednostki z obojętnie jaką wartością niepustą, czy pustą, czy nawet jej nie podamy, wtedy wyświetli się nazwa przestrzeni nazw dyskusji. Jeżeli typ jednostki wskazuje na przestrzeń nazw główną, wtedy się liczą parametry nazw jednostek. Również parametry typu jednostki nie powinno się podawać w dziecku w ramce, tylko w rodzicu w szablonie jako parametry, w którym ta ramka jest wywoływana, ale tutaj podano jedynie dla przykładu, jak najłatwiej sprawdzić działanie tych parametrów tej funkcji. Najpierw w funkcji nagłówku brane są parametry nazw przestrzeni nazw, a jeżeli ich nie ma, to parametry typu jednostki, a jeżeli nie ma lub parametry przestrzenne wskazują na przestrzeń główną, i nie ma nazwy jednostki, to generowane są nazwy tej funkcji na podstawie aktualnej strony. == Funkcje pełnych nazw jednostki == === {{Code|p["Pełna nazwa dyskusji jednostki"](frame,i)}} === === {{Code|p["Pełna nazwa przedmiotowa jednostki"](frame,i)}} === === {{Code|p["Pełna nazwa jednostki"](frame,i)}} === == Funkcje pełnych nazw jednostki drugiej wersji == === {{Code|p["Pełna nazwa dyskusji jednostki 2"](frame,i)}} === === {{Code|p["Pełna nazwa przedmiotowa jednostki 2"](frame,i)}} === === {{Code|p["Pełna nazwa jednostki 2"](frame,i)}} === == Funkcje pełnych nazw jednostki trzeciej wersji == === {{Code|p["Pełna nazwa dyskusji jednostki 3"](frame,i)}} === === {{Code|p["Pełna nazwa przedmiotowa jednostki 3"](frame,i)}} === === {{Code|p["Pełna nazwa jednostki 3"](frame,i)}} === == Funkcje nazw jednostki == === {{Code|p["Nazwa jednostki"](frame,i)}} === == Funkcje nazw jednostki drugiej wersji == === {{Code|p["Nazwa jednostki 2"](frame,i)}} === === {{Code|p["Nazwa przedmiotowa jednostki 2"](frame,i)}} === === {{Code|p["Nazwa dyskusji jednostki 2"](frame,i)}} === == Funkcje nazw przestrzeni nazw trzeciej wersji == === {{Code|p["Nazwa przestrzeni nazw 3"](frame,i)}} === === {{Code|p["Nazwa przedmiotowej przestrzeni nazw 3"](frame,i)}} === === {{Code|p["Nazwa przestrzeni nazw dyskusji 3"](frame,i)}} === == Funkcje nazw jednostki trzeciej wersji == === {{Code|p["Nazwa jednostki 3"](frame,i)}} === === {{Code|p["Nazwa przedmiotowa jednostki 3"](frame,i)}} === === {{Code|p["Nazwa dyskusji jednostki 3"](frame,i)}} === == Funkcje typu jednostki == === {{Code|p["Typ jednostki"](frame,i)}} === === {{Code|p["Typ jednostki 2"](frame,i)}} === === {{Code|p["Typ jednostki 3"](frame,i)}} === === Funkcje typu jednostki przedmiotowe === ==== {{Code|p["Przedmiotowy typ jednostki"](frame,i)}} ==== ==== {{Code|p["Przedmiotowy typ jednostki 2"](frame,i)}} ==== ==== {{Code|p["Przedmiotowy typ jednostki 3"](frame,i)}} ==== === Fukcje typu jednostki dyskusji === ==== {{Code|p["Dyskusyjny typ jednostki"](frame,i)}} ==== ==== {{Code|p["Dyskusyjny typ jednostki 2"](frame,i)}} ==== ==== {{Code|p["Dyskusyjny typ jednostki 3"](frame,i)}} ==== == Funkcje chech pudełka == === {{Code|p["Cecha pudełka"](frame)}} === === {{Code|p["Przedmiotowa cecha pudełka"](frame)}} === === {{Code|p["Dyskusyjna cecha pudełka"](frame)}} === == Fukcje ogólnego pudełka == === {{Code|p["Ogólne pudełko"](frame)}} === == Funkcje ogólne == === {{Code|p["Tekst pudełka"](frame)}} === == Funkcje błędów pudełka == === {{Code|p["Błędy pudełka"](frame)}} === === {{Code|p["Przedmiotowe błędy pudełka"](frame)}} === === {{Code|p["Dyskusyjne błędy pudełka"](frame)}} === == Funkcje nazw stron == === {{Code|p["Nazwa strony głównej projektu"](frame,i)}} === === {{Code|p["Nazwa strony głównej dla dzieci projektu"](frame,i)}} === == Funkcje kodów == === {{Code|p["Kod języka"](frame,i)}} === === {{Code|p["Kod projektu"](frame,i)}} === === {{Code|p["Klucz projektu"](frame,i)}} === == Funkcje wiki == === {{Code|p["Inny niż język bieżący wiki"](frame)}} === === {{Code|p["Inne niż lokalne wiki"](frame)}} === === {{Code|p["Inne niż bieżące wiki"](frame)}} === == Funkcje typów parametrów, czy podane je == === {{Code|p["Podano parametry nienazwane"](frame)}} === === {{Code|p["Podano parametry numerowane"](frame)}} === === {{Code|p["Podano parametry nazwane"](frame)}} === == Funkcje kodów tego projektu == === {{Code|p["Kod projektu tego projektu"](frame)}} === === {{Code|p["Kod języka tego projektu"](frame)}} === === {{Code|p["Klucz projektu tego projektu"](frame)}} === == Funkcje stron == === {{Code|p["Strona główna tego projektu"](frame)}} === === {{Code|p["Strona główna dla dzieci tego projektu"](frame)}} === == Funkcje nazw stron drugiej wersji == === {{Code|p["Nazwa strony głównej dla dzieci projektu 2"](frame)}} === === {{Code| p["Nazwa strony głównej projektu 2"](frame)}} === {{BrClear}} <noinclude><!-- -->{{ProstaStronaKoniec}}<!-- -->{{Kategoria|Opisy funkcji, w Lua w Scribunto, w modułach}}<!-- --></noinclude> rgrg8arc6rxifw8hu76x553qg1syllj 540406 540405 2026-04-23T17:07:37Z Persino 2851 540406 wikitext text/x-wiki <noinclude>{{ProstaStronaStart | nagłówek = {{Podrozdział|{{ld2|Pudełko}}|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 pudelko_modul=require("Module:Pudełko"); </syntaxhighlight> dzięki, któremu można wypisywać funkcje należącego do niego. Posługuje się na parametrach pudełkowych {{Parametr|nazwa przestrzeni nazw}} (czy też bez numerka {{Parametr|nazwa przestrzeni nazw i}} dla tego numerowanego) lub te z numerkiem po jednej spacji w nich (ale nie dla tego z końcówką {{Code| i}}) mogą zostać użyte jako parametry szablonu. Moduł {{Code|{{ld2|Pudełko}}}} przedstawia funkcje nazw w oparciu o funkcje nazw {{Code|{{ld2|Nazwy}}}}, generuje on nazwy za pomocą parametrów pudełkowych podanych poniżej. Parametr {{Parametr|nazwa jednostki}} (lub parametr {{Parametr|cel}} dla numerka tego pierwszego, tego alternatywnego), lub te z numerkiem po jednej spacji w nazwie parametru, albo numerowane numerkami {{Code|1}}, {{Code|2}},..., mogą zostać użyte jako parametry szablonu. Parametry określające rodzaj jednostki {{Parametr|typ jednostki}} z {{Parametr|dyskusja typu jednostki}}, itp. w wersjach z numerkiem po jednej spacji w nich mogą zostać użyte jako parametry szablonu. A te tymi numerowanymi liczbami naturalnymi {{Tt|nazwy jednostki}} od jedynki wzwyż poprzez szablon, w którym są one użyte, one też mogą być użyte z dwukropkiem, te numerowane, na samym początku nazwy, wtedy one są traktowane jako pełne nazwy strony, i wtedy one nie zostaną z interpretowane, że do nich trzeba użyć parametr odpowiedni z nazwą przetrzeni nazw z tego numerowanego, czy ogólny, aby utworzyć znów inną pełną nazwę strony dla tego numerka. Zestawienie: * {{Code|nazwa przestrzeni nazw}} i {{Code|nazwa przestrzeni nazw i}} (ogólna nazwa przestrzeni nazw dla wszystkich numerków, i tych numerowanych jednostek) - i to pierwsze z numerkiem, tzn. {{Code|nazwa przestrzeni nazw 1}}, {{Code|nazwa przestrzeni nazw 2}}, ..., * {{Code|nazwa jednostki}} - i te z numerkiem: {{Code|nazwa jednostki 1}}, {{Code|nazwa jednostki 2}}, ..., lub gdy jest zamiast tego parametrem numerowany, {{Code|1}}, {{Code|2}},..., który dla tego pierwszego może być uznany jako: {{Code|cel}} {{=}} {{Code|1}}, * {{Code|typ jednostki}} (parametr bazowy) i {{Code|typ jednostki i}} (parametr domyślny numerkowy) - i te z numerkiem: {{Code|typ jednostki 1}}, {{Code|typ jednostki 2}}, ..., tzn. gdy chcemy określić z jakim typem jednostki mamy do czynienia w zależności do jakiej przestrzeni nazw należy, a w danej, czy jest on np. programowy, czy tylko jest opisem, jak to bywa w szablonach {{Np|Template|link=tak}}, podobnie jest w przypadku {{Np|Module|link=tak}}, czy jak jest w innych przestrzeniach nazw, ** {{Code|dyskusja typu jednostki}} (parametr bazowy) i {{Code|dyskusja typu jednostki i}} (parametr domyślny numerkowy) - i te z numerkiem: {{Code|dyskusja typu jednostki 1}}, {{Code|dyskusja typu jednostki 2}}, ..., gdy chcemy określić wartością niepustą,że chodzi tutaj o typ jednostki. == {{Code|p.CzyNiepoprawnaNazwa(nazwa_jednostki)}} == Funkcja sprawdzajaca, czy jest poprawnie podana nazwa jednostki, czy ma poprawną nazwę. Znakami tymi, z których nie powinna składać się nazwa jest {{Code|<nowiki>{}<>|[]#\n</nowiki>}} i dodatkowo znak {{Code|&#127;}} (kod {{Code|{{Nowiki|&#127;}}}}). Też nie może składać się z trzech znaków tyldy, tzn. {{Code|<nowiki>~~~</nowiki>}}. Również w swojej budowie nie może składać się ze kodów {{Strong|HTML}} literowych o wzorze {{Code|{{Nowiki|&(%a+);}}}}. Natomiast może składać się z {{Code|{{Nowiki|&#(%d+);}}}} i {{Code|{{Nowiki|&#x(%x+);}}}}, ale w pierw te kody muszą być zamienione na normalne znaki. Skrótowa definicja funkcji: <syntaxhighlight lang="lua"> function p.CzyNiepoprawnaNazwa(nazwa_jednostki)...end; </syntaxhighlight> Wtedy ciało funkcji tej, czyli jego definicja w środku, jest: <syntaxhighlight lang="lua"> -- Moduł: "Moduł:Html/dane", służy do ładowania znaku o kodzie HTML "&#127;"; local html_dane_modul=mw.loadData("Module:Html/dane"); return mw.ustring.match(nazwa_jednostki,"[{}<>|%[%]#\n"..html_dane_modul.znak_127.."]+") or mw.ustring.match(nazwa_jednostki,"~~~") or mw.ustring.match(nazwa_jednostki,"&(%a+);"); </syntaxhighlight> Parametry: * {{Code|nazwa_jednostki}} - nazwa jednostki do sprawdzenia. Przykłady: <syntaxhighlight lang="lua"> local pudelko_modul=require("Module:Pudełko"); -- Podana przykładowa niepoprawna nazwa jedostki local nazwa_jednostki="Nazwa pliku [[Nazwa linku w pliku]]"; -- Fukcja zwróci wartość: local czy_poprawna_nazwa=true; local czy_poprawna_nazwa=pudelko_modul.CzyNiepoprawnaNazwa(nazwa_jednostki); </syntaxhighlight> == Funkcje nazw przestrzeni nazw == === {{Code|p["Nazwa przestrzeni nazw"](frame,...)}} === Funkcja pisze nazwę przestrzeni nazw, niezależnie, czy to jest przedmiotowa, czy dyskusji, według podanej w zmiennej {{Code|nazwa przestrzeni nazw}} dla pozycja bazowej w podanych parametrach szablonu rodzicu ramki dziecka, lub dla innej pozycji należy parametr podawać w formie {{Code|nazwa przestrzeni nazw 1}}, {{Code|nazwa przestrzeni nazw 2}}, {{Code|nazwa przestrzeni nazw 3}},..., lub te parametry można podać w postaci ogólnej {{Code|nazwa przestrzeni nazw i}}. Parametry podaje się w parametrach rodzica wywołania tej funkcji {{Code|{{m|Pudełko|Nazwa przestrzeni nazw}}}} (ale ich nie trzeba podawać w dziecku, ale można) i w parametrach dziecka, jeśli chodzi o zmienną {{Code|numer jednostki}}, czyli np.: {{Code|{{m|Pudełko|Nazwa przestrzeni nazw|numer jednostki{{=}}<jakaś liczba całkowita dodatnia>}}}}. Te parametry przestrzenne zamiast w rodzicu w szablonie można podać w ramce dziecka, wtedy parametry dziecka mają pierwszeństwo. Przestrzeń nazw z parametrów nazw przestrzennych może odpowiadać wartości przestrzeni głównej, to wtedy odpowiednia przestrzeń nazw z parametru nazwy jednostki się nie liczy w tej funkcji, aby się liczyła należy użyć funkcji {{Code|{{sr|#p["Nazwa przestrzeni nazw 2"](frame,...)|p=Pudełko}}}}. Definicja skrótowa funkcji: <syntaxhighlight lang="lua"> p["Nazwa przestrzeni nazw"]=function(frame,czy_uwzglednic_alternatywna_nazwe,i)...end; </syntaxhighlight> Wtedy ciało funkcji tej, czyli jego definicja w środku, jest: <syntaxhighlight lang="lua"> -- Jest liczony numer parametru nazwy przestrzeni nazw, domyslnie chodzi tu o numer bazowy parametrów przestrzennych; local numer_jednostki=i or frame.args["numer jednostki"]; local liczba_numer_jednostki=((numer_jednostki)and(tonumber(numer_jednostki))or 0); local pudelko_pomocne_modul=require("Module:Pudełko/Pomocne"); -- Liczy nazwę przestrzeni nazw na podstawie podanych parametrów; return pudelko_pomocne_modul.Nazwa_przestrzeni_nazw(frame,0, czy_uwzglednic_alternatywna_nazwe,liczba_numer_jednostki); </syntaxhighlight> Parametry funkcji: * {{Code|frame}} - tablica ramki tablicy transportu, * {{Code|czy_uwzglednic_alternatywna_nazwe}} - czy ma uwzględniać nazwę przestrzeni nazw domyślną szablonu, dostępne wartości: {{Code|false}}, w której nazwa domyślna nie jest uwzględniana wtedy, oraz {{Code|nil}} i {{Code|true}}, które oznaczają to samo, w tym jeżeli ona jest uwzględniana, wtedy jest brany parametr pierwszy dziecka, który musi istnieć przy takiej wartości tego parametru, tzn. {{Code|{{m|Pudełko|Nazwa przestrzeni nazw|Szablon}}}}, a nazwa uzyskana nazwy przestrzeni nazw jest w takim przypadku błędna, a jeżeli nazwa domyślna jest błędna, czyli {{Code|{{m|Pudełko|Nazwa przestrzeni nazw|Moja przestrzeń}}}}, wtedy funkcja zwraca stan błędu {{Code|(błąd)}}. * {{Code|i}} - numer zmiennej nazwy przestrzeni nazw. Funkcja wykorzystuje {{Code|{{sr|#p.Nazwa_przestrzeni_nazw(frame,...)|p=Pudełko/Pomocne}}}} do wyznaczania ogólnego nazwy przestrzeni nazw dla pozycji bazowej i numerkowej, tzn. dla pozycji: jeden, dwa, trzy,..., itd, i ich ogólnej. Parametr ramki tablicy transportu rodzica szablonu: * {{Code|nazwa przestrzeni nazw}}, {{Code|nazwa przestrzeni nazw 1}}, {{Code|nazwa przestrzeni nazw 2}}, {{Code|nazwa przestrzeni nazw 3}},..., {{Code|nazwa przestrzeni nazw i}} - nazwy przestrzeni nazw dla pozycji bazowej oraz zwykłej i ogólnej numerkowej, * {{Code|typ jednostki}}, {{Code|typ jednostki 1}}, {{Code|typ jednostki 2}}, {{Code|typ jednostki 3}},..., {{Code|typ jednostki i}} - typy jednostek, którym odpowiadają pewne przestrzenie przedmiotowe, dla pozycji bazowej, numerkowej i ogólnej, ** {{Code|dyskusja typu jednostki}}, {{Code|dyskusja typu jednostki 1}}, {{Code|dyskusja typ jednostki 2}}, {{Code|dyskusja typ jednostki 3}},..., {{Code|dyskusja typ jednostki i}} - czy dany typ jednostki ma przedstawiać, jeśli niepusta, przestrzeń dyskusji dla pozycji bazowej, numerkowej i ogólnej. Parametry ramki tablicy transportu dziecka: * Parametry dziecka są takie same jak rodzica dla funkcji pudełkowej plus tu wymienione, * {{Code|numer jednostki}} - jak parametr {{Code|i}} nie został ustawiony, to wtedy liczy się ta zmienna. Przykłady: <syntaxhighlight lang="mediawiki"> {{Nazwa szablonu|nazwa przestrzeni nazw=Wikibooks|nazwa przestrzeni nazw 2=Szablon|nazwa przestrzeni nazw i=Moduł}} </syntaxhighlight> W dziecku powiedzmy jest wywołanie, i szukamy nazwy przestrzeni nazw o numerze dwa, która nie została podana, ale istnieje za to jej wersji ogólna {{Code|nazwa przestrzeni nazw i}} i domyślna {{Code|nazwa przestrzeni nazw}}: <syntaxhighlight lang="mediawiki"> {{#invoke:Pudełko|Nazwa przestrzeni nazw|numer jednostki=1}} </syntaxhighlight> Na podstawie powyższego przykładu otrzymamy wynik o schemacie, nie wyniku, bo tam nie ma zmiennej {{Code|nazwa przestrzeni nazw 1}}, ale jest {{Code|nazwa przestrzeni nazw i}}: <syntaxhighlight lang="mediawiki"> <!-- Ale nie "nazwa przestrzeni nazw", bo jej nie ma, ale za to istnieje "nazwa przestrzeni nazw i"; --> <!-- nazwa przestrzeni nazw 2=nazwa przestrzeni nazw i=Moduł; --> <!-- Czyli wynik: --> Moduł <!-- Widzimy, że wygenerowała się nazwa przestrzeni nazw, którą jest przestrzeń programowa, którą również jest "Szablon"; --> </syntaxhighlight> Nie jest brana w tym powyższym przykładzie zmienna {{Code|nazwa przestrzeni nazw}}, bo jej nie ma, ale za to jest {{Code|nazwa przestrzeni nazw i}}, bo ona występuje jako parametr domyślny ogólny dla parametrów numerkowych. Przykłady w wikikodzie: * {{Code|{{m|Pudełko|Nazwa przestrzeni nazw|numer jednostki{{=}}2}}}} → {{Tt|{{#invoke:Pudełko|Nazwa przestrzeni nazw|numer jednostki=2}}}} * {{Code|{{m|Pudełko|Nazwa przestrzeni nazw|Szablon|nazwa przestrzeni nazw i{{=}}Moja przestrzeń|numer jednostki{{=}}2}}}} → {{Tt|{{#invoke:Pudełko|Nazwa przestrzeni nazw|Szablon|nazwa przestrzeni nazw i=Moja przestrzeń|numer jednostki=2}}}} * {{Code|{{m|Pudełko|Nazwa przestrzeni nazw|nazwa przestrzeni nazw 2{{=}}Szablon|numer jednostki{{=}}2}}}} → {{Tt|{{#invoke:Pudełko|Nazwa przestrzeni nazw|nazwa przestrzeni nazw 2=Szablon|numer jednostki=2}}}} * {{Code|{{m|Pudełko|Nazwa przestrzeni nazw|nazwa przestrzeni nazw 2{{=}}Szablon|numer jednostki{{=}}2}}}} → {{Tt|{{#invoke:Pudełko|Nazwa przestrzeni nazw|nazwa przestrzeni nazw i=Szablon|numer jednostki=2}}}} * {{Code|{{m|Pudełko|Nazwa przestrzeni nazw|nazwa przestrzeni nazw{{=}}Szablon|numer jednostki{{=}}2}}}} → {{Tt|{{#invoke:Pudełko|Nazwa przestrzeni nazw|nazwa przestrzeni nazw=Szablon|numer jednostki=2}}}} Powyżej dla przykładu podano parametry nie w rodzicu w szablonie, tylko w dziecku, jeśli chodzi o parametry nazw przestrzeni nazw, ale ich się za to nie powinno podawać w tych ramach, tylko w szablonach, w których wywoływane są te ramki pudełek {{Code|{{m|Pudełko}}}}, ale tak tutaj tak zrobiono by było najłatwiej sprawdzić działanie tego typu funkcji. Analogicznie możemy podawać parametry typu jednostki, np.: wywołaniu modułowym {{Code|{{m|Pudełko|Nazwa przestrzeni nazw|typ jednostki 2{{=}}strona szablonu|numer jednostki{{=}}2}}}}, ale o tym więcej w rozdziałach {{Code|{{sr|# p["Typ jednostki"](frame,i)|p=Pudełko}}}} w „{{sr|#Funkcje typu jednostki|p=Pudełko}}”, on definiuje przestrzenie przedmiotowe, ale można użyć parametru dyskusji typu jednostki z wartością niepustą, wtedy wyświetli się nazwa przestrzeni nazw dyskusji. Również parametry typu jednostki nie powinno się podawać w dziecku w ramce, tylko w rodzicu w szablonie jako parametry, w którym ta ramka jest wywoływana, ale tutaj podano jedynie dla przykładu, jak najłatwiej sprawdzić działanie tych parametrów tej funkcji. Najpierw w funkcji nagłówku brane są parametry nazw przestrzeni nazw, a jeżeli ich nie ma, to parametry typu jednostki, a jeżeli nie ma, to generowane są nazwy na podstawie aktualnego modułu. === {{Code|p["Nazwa przedmiotowej przestrzeni nazw"](frame,...)}} === Funkcja pisze przedmiotową nazwę przestrzeni nazw jakikolwiek nazwy przestrzeni nazw (tzn. nazwę przedmiotową nazwy przestrzenie nazw, czyli nie dyskusji, zamieniana jest na nią samą, czyli identyfikator przestrzeni się nie zmienia, a dyskusji, nie przedmiotową, przekształca się na przedmiotową jej odpowiadającą, czyli w tym przypadku identyfikator przestrzeni zmniejsza się o numer mniej), według podanej w zmiennej {{Code|nazwa przestrzeni nazw}} dla pozycja bazowej w podanych parametrach szablonu rodzicu ramki dziecka, lub dla innej pozycji należy parametr podawać w formie {{Code|nazwa przestrzeni nazw 1}}, {{Code|nazwa przestrzeni nazw 2}}, {{Code|nazwa przestrzeni nazw 3}},..., lub te parametry można podać w postaci ogólnej {{Code|nazwa przestrzeni nazw i}}. Parametry podaje się w parametrach rodzica wywołania tej funkcji {{Code|{{m|Pudełko|Nazwa przedmiotowej przestrzeni nazw}}}} (ale ich nie trzeba podawać w dziecku, ale można) i w parametrach dziecka, jeśli chodzi o zmienną {{Code|numer jednostki}}, czyli np.: {{Code|{{m|Pudełko|Nazwa przedmiotowej przestrzeni nazw|numer jednostki{{=}}<jakaś liczba całkowita dodatnia>}}}}. Te parametry przestrzenne zamiast w rodzicu w szablonie można podać w ramce dziecka, wtedy parametry dziecka mają pierwszeństwo. Parametry przestrzenne mogą mogą być podane w postaci przestrzeni przedmiotowej lub dyskusji, ale ta funkcja zawsze ją zamienia na przedmiotową. Przestrzeń nazw z parametrów nazw przestrzennych może odpowiadać wartości przestrzeni głównej, to wtedy odpowiednia przestrzeń nazw z parametru nazwy jednostki się nie liczy w tej funkcji, aby się liczyła należy użyć funkcji {{Code|{{sr|#p["Nazwa przedmiotowej przestrzeni nazw 2"](frame,...)|p=Pudełko}}}}. Definicja skrótowa funkcji: <syntaxhighlight lang="lua"> p["Nazwa przedmiotowej przestrzeni nazw"]=function(frame,czy_uwzglednic_alternatywna_nazwe,i)...end; </syntaxhighlight> Wtedy ciało funkcji tej, czyli jego definicja w środku, jest: <syntaxhighlight lang="lua"> -- Jest liczony numer parametru nazwy przestrzeni nazw, domyslnie chodzi tu o numer bazowy parametrów przestrzennych; local numer_jednostki=i or frame.args["numer jednostki"]; local liczba_numer_jednostki=((numer_jednostki)and(tonumber(numer_jednostki))or 0); local pudelko_pomocne_modul=require("Module:Pudełko/Pomocne"); -- Liczy nazwę przestrzeni nazw przedmiotową na podstawie podanych parametrów; return pudelko_pomocne_modul.Nazwa_przestrzeni_nazw(frame,1, czy_uwzglednic_alternatywna_nazwe,liczba_numer_jednostki); </syntaxhighlight> Parametry funkcji: * {{Code|frame}} - tablica ramki tablicy transportu, * {{Code|czy_uwzglednic_alternatywna_nazwe}} - czy ma uwzględniać nazwę przestrzeni nazw domyślną szablonu, dostępne wartości: {{Code|false}}, w której nazwa domyślna nie jest uwzględniana wtedy, oraz {{Code|nil}} i {{Code|true}}, które oznaczają to samo, w tym jeżeli ona jest uwzględniana, wtedy jest brany parametr pierwszy dziecka, który musi istnieć przy takiej wartości tego parametru, tzn. {{Code|{{m|Pudełko|Nazwa przedmiotowej przestrzeni nazw|Dyskusja szablonu}}}} - ta nazwa domyślna zostanie zamieniona na przedmiotową, a jak ona by była przedmiotowa, to żadnej zamiany by nie było, a nazwa uzyskana z nazwy przestrzeni nazw z parametrów przestrzennych jest w takim przypadku błędna, to w takim razie brany jest ten parametr, a jeżeli ta nazwa domyślna jest błędna, czyli {{Code|{{m|Pudełko|Nazwa przedmiotowej przestrzeni nazw|Moja przestrzeń}}}}, wtedy funkcja zwraca stan błędu {{Code|(błąd)}}. * {{Code|i}} - numer zmiennej nazwy przestrzeni nazw. Funkcja wykorzystuje {{Code|{{sr|#p.Nazwa_przestrzeni_nazw(frame,...)|p=Pudełko/Pomocne}}}} do wyznaczania ogólnego nazwy przestrzeni nazw dla pozycji bazowej i numerkowej, tzn. dla pozycji: jeden, dwa, trzy,..., itd, i ich ogólnej. Parametr ramki tablicy transportu rodzica szablonu: * {{Code|nazwa przestrzeni nazw}}, {{Code|nazwa przestrzeni nazw 1}}, {{Code|nazwa przestrzeni nazw 2}}, {{Code|nazwa przestrzeni nazw 3}},..., {{Code|nazwa przestrzeni nazw i}} - nazwy przestrzeni nazw dla pozycji bazowej oraz zwykłej i ogólnej numerkowej, * {{Code|typ jednostki}}, {{Code|typ jednostki 1}}, {{Code|typ jednostki 2}}, {{Code|typ jednostki 3}},..., {{Code|typ jednostki i}} - typy jednostek, którym odpowiadają pewne przestrzenie przedmiotowe, dla pozycji bazowej, numerkowej i ogólnej. Parametry ramki tablicy transportu dziecka: * Parametry dziecka są takie same jak rodzica dla funkcji pudełkowej plus tu wymienione, * {{Code|numer jednostki}} - jak parametr {{Code|i}} nie został ustawiony, to wtedy liczy się ta zmienna. Przykłady: <syntaxhighlight lang="mediawiki"> {{Nazwa szablonu|nazwa przestrzeni nazw=Dyskusja Wikibooks|nazwa przestrzeni nazw 2=Dyskusja szablonu|nazwa przestrzeni nazw i=Dyskusja modułu}} </syntaxhighlight> W dziecku powiedzmy jest wywołanie, i szukamy nazwy przestrzeni nazw o numerze dwa, która nie została podana, ale istnieje za to jej wersji ogólna {{Code|nazwa przestrzeni nazw i}} i domyślna {{Code|nazwa przestrzeni nazw}}: <syntaxhighlight lang="mediawiki"> {{#invoke:Pudełko|Nazwa przedmiotowej przestrzeni nazw|numer jednostki=1}} </syntaxhighlight> Na podstawie powyższego przykładu otrzymamy wynik o schemacie, nie wyniku, bo tam nie ma zmiennej {{Code|nazwa przestrzeni nazw 1}}, ale jest {{Code|nazwa przestrzeni nazw i}}: <syntaxhighlight lang="mediawiki"> <!-- Ale nie "nazwa przestrzeni nazw", bo jej nie ma, ale za to istnieje "nazwa przestrzeni nazw i"; --> <!-- nazwa przestrzeni nazw 2=nazwa przestrzeni nazw i=Dyskusja modułu; --> <!-- Czyli wynik: --> Moduł <!-- Widzimy, że wygenerowała się nazwa przestrzeni nazw, którą jest przestrzeń przedmiotowa programowa przestrzeni dyskusji "Dyskusja modułu", którą również jest "Szablon" jego przestrzeni dyskusji "Dyskusja szablonu", a dla ich przestrzeni przedmiotowej, zamiast dyskusji, to samo przekształca się na to samo; --> </syntaxhighlight> Nie jest brana w tym powyższym przykładzie zmienna {{Code|nazwa przestrzeni nazw}}, bo jej nie ma, ale za to jest {{Code|nazwa przestrzeni nazw i}}, bo ona występuje jako parametr domyślny ogólny dla parametrów numerkowych. Przykłady w wikikodzie: * {{Code|{{m|Pudełko|Nazwa przedmiotowej przestrzeni nazw|numer jednostki{{=}}2}}}} → {{Tt|{{#invoke:Pudełko|Nazwa przedmiotowej przestrzeni nazw|numer jednostki=2}}}} * {{Code|{{m|Pudełko|Nazwa przedmiotowej przestrzeni nazw|Dyskusja szablonu|nazwa przestrzeni nazw i{{=}}Moja przestrzeń|numer jednostki{{=}}2}}}} → {{Tt|{{#invoke:Pudełko|Nazwa przedmiotowej przestrzeni nazw|Dyskusja szablonu|nazwa przestrzeni nazw i=Moja przestrzeń|numer jednostki=2}}}} * {{Code|{{m|Pudełko|Nazwa przedmiotowej przestrzeni nazw|nazwa przestrzeni nazw 2{{=}}Dyskusja szablonu|numer jednostki{{=}}2}}}} → {{Tt|{{#invoke:Pudełko|Nazwa przedmiotowej przestrzeni nazw|nazwa przestrzeni nazw 2=Dyskusja szablonu|numer jednostki=2}}}} * {{Code|{{m|Pudełko|Nazwa przedmiotowej przestrzeni nazw|nazwa przestrzeni nazw 2{{=}}Dyskusja szablonu|numer jednostki{{=}}2}}}} → {{Tt|{{#invoke:Pudełko|Nazwa przedmiotowej przestrzeni nazw|nazwa przestrzeni nazw i=Dyskusja szablonu|numer jednostki=2}}}} * {{Code|{{m|Pudełko|Nazwa przedmiotowej przestrzeni nazw|nazwa przestrzeni nazw{{=}}Dyskusja szablonu|numer jednostki{{=}}2}}}} → {{Tt|{{#invoke:Pudełko|Nazwa przedmiotowej przestrzeni nazw|nazwa przestrzeni nazw=Dyskusja szablonu|numer jednostki=2}}}} Powyżej dla przykładu podano parametry nie w rodzicu w szablonie, tylko w dziecku, jeśli chodzi o parametry nazw przestrzeni nazw, ale ich się za to nie powinno podawać w tych ramach, tylko w szablonach, w których wywoływane są te ramki pudełek {{Code|{{m|Pudełko}}}}, ale tak tutaj tak zrobiono by było najłatwiej sprawdzić działanie tego typu funkcji. Analogicznie możemy podawać parametry typu jednostki, np.: wywołaniu modułowym {{Code|{{m|Pudełko|Nazwa przedmiotowej przestrzeni nazw|typ jednostki 2{{=}}strona szablonu|numer jednostki{{=}}2}}}}, ale o tym więcej w rozdziałach {{Code|{{sr|# p["Przedmiotowy typ jednostki"](frame,i)|p=Pudełko}}}} w „{{sr|#Funkcje typu jednostki|p=Pudełko}}”, ale wtedy ta sama nazwa przestrzeni nazw reprezentowana przez {{Parametr|typ jednostki 2|strona szablonu}}, jest zamieniana na to samo, lepiej jest tutaj używać parametrów przestrzennych nazw niż typu jednostki, bo typ jednostki ma taką samą wartość dla przestrzeni przedmiotowej, co dyskusji. Tutaj parametr dyskusji typu jednostki bazowy i numerkowy ogólny, czy szczegółowy, nie gra roli, bo nawet, gdy wygenerujemy nazwę przestrzeni dyskusji za pomoca tego parametru, to i tak otrzymamy na samym końcu jego nazwę przedmiotową. Również parametry typu jednostki nie powinno się podawać w dziecku w ramce, tylko w rodzicu w szablonie jako parametry, w którym ta ramka jest wywoływana, ale tutaj podano jedynie dla przykładu, jak najłatwiej sprawdzić działanie tych parametrów tej funkcji. Najpierw w funkcji nagłówku brane są parametry nazw przestrzeni nazw, a jeżeli ich nie ma, to parametry typu jednostki, a jeżeli nie ma, to generowane są nazwy na podstawie aktualnego modułu. === {{Code|p["Nazwa przestrzeni nazw dyskusji"](frame,...)}} === Funkcja pisze nazwę przestrzeni nazw dyskusji jakikolwiek nazwy przestrzeni nazw (tzn. nazwę przedmiotową nazwy przestrzenie nazw, czyli nie dyskusji, zamieniana jest na dyskusji, czyli identyfikator przestrzeni się zmienia jeden wyżej, a dyskusji, nie przedmiotową, przekształca się na tą samą), według podanej w zmiennej {{Code|nazwa przestrzeni nazw}} dla pozycja bazowej w podanych parametrach szablonu rodzicu ramki dziecka, lub dla innej pozycji należy parametr podawać w formie {{Code|nazwa przestrzeni nazw 1}}, {{Code|nazwa przestrzeni nazw 2}}, {{Code|nazwa przestrzeni nazw 3}},..., lub te parametry można podać w postaci ogólnej {{Code|nazwa przestrzeni nazw i}}. Parametry podaje się w parametrach rodzica wywołania tej funkcji {{Code|{{m|Pudełko|Nazwa przestrzeni nazw dyskusji}}}} (ale ich nie trzeba podawać w dziecku, ale można) i w parametrach dziecka, jeśli chodzi o zmienną {{Code|numer jednostki}}, czyli np.: {{Code|{{m|Pudełko|Nazwa przestrzeni nazw dyskusji|numer jednostki{{=}}<jakaś liczba całkowita dodatnia>}}}}. Te parametry przestrzenne zamiast w rodzicu w szablonie można podać w ramce dziecka, wtedy parametry dziecka mają pierwszeństwo. Parametry przestrzenne mogą mogą być podane w postaci przestrzeni przedmiotowej lub dyskusji, ale ta funkcja zawsze ją zamienia na dyskusji. Przestrzeń nazw z parametrów nazw przestrzennych może odpowiadać wartości przestrzeni głównej, to wtedy odpowiednia przestrzeń nazw z parametru nazwy jednostki się nie liczy w tej funkcji, aby się liczyła należy użyć funkcji {{Code|{{sr|#p["Nazwa przestrzeni nazw dyskusji 2"](frame,...)|p=Pudełko}}}}. Definicja skrótowa funkcji: <syntaxhighlight lang="lua"> p["Nazwa przestrzeni nazw dyskusji"]=function(frame,czy_uwzglednic_alternatywna_nazwe,i)...end; </syntaxhighlight> Wtedy ciało funkcji tej, czyli jego definicja w środku, jest: <syntaxhighlight lang="lua"> -- Jest liczony numer parametru nazwy przestrzeni nazw, domyslnie chodzi tu o numer bazowy parametrów przestrzennych; local numer_jednostki=i or frame.args["numer jednostki"]; local liczba_numer_jednostki=((numer_jednostki)and(tonumber(numer_jednostki))or 0); local pudelko_pomocne_modul=require("Module:Pudełko/Pomocne"); -- Liczy nazwę przestrzeni nazw dyskusji na podstawie podanych parametrów; return pudelko_pomocne_modul.Nazwa_przestrzeni_nazw(frame,2, czy_uwzglednic_alternatywna_nazwe,liczba_numer_jednostki); </syntaxhighlight> Parametry funkcji: * {{Code|frame}} - tablica ramki tablicy transportu, * {{Code|czy_uwzglednic_alternatywna_nazwe}} - czy ma uwzględniać nazwę przestrzeni nazw domyślną szablonu, dostępne wartości: {{Code|false}}, w której nazwa domyślna nie jest uwzględniana wtedy, oraz {{Code|nil}} i {{Code|true}}, które oznaczają to samo, w tym jeżeli ona jest uwzględniana, wtedy jest brany parametr pierwszy dziecka, który musi istnieć przy takiej wartości tego parametru, tzn. {{Code|{{m|Pudełko|Nazwa przestrzeni nazw dyskusji|Szablon}}}} - ta nazwa domyślna zostanie przekształcona na dyskusji, a jeżeli ona by była dyskusji, to nie byłoby żadnego przekształcenia, a nazwa uzyskana nazwy przestrzeni nazw z parametrów przestrzennych jest w takim przypadku błędna, to w takim razie brany jest ten parametr, a jeżeli nazwa domyślna jest błędna, czyli {{Code|{{m|Pudełko|Nazwa przestrzeni nazw dyskusji|Moja przestrzeń}}}}, wtedy funkcja zwraca stan błędu {{Code|(błąd)}}. * {{Code|i}} - numer zmiennej nazwy przestrzeni nazw. Funkcja wykorzystuje {{Code|{{sr|#p.Nazwa_przestrzeni_nazw(frame,...)|p=Pudełko/Pomocne}}}} do wyznaczania ogólnego nazwy przestrzeni nazw dla pozycji bazowej i numerkowej, tzn. dla pozycji: jeden, dwa, trzy,..., itd, i ich ogólnej. Parametr ramki tablicy transportu rodzica szablonu: * {{Code|nazwa przestrzeni nazw}}, {{Code|nazwa przestrzeni nazw 1}}, {{Code|nazwa przestrzeni nazw 2}}, {{Code|nazwa przestrzeni nazw 3}},..., {{Code|nazwa przestrzeni nazw i}} - nazwy przestrzeni nazw dla pozycji bazowej oraz zwykłej i ogólnej numerkowej, * {{Code|typ jednostki}}, {{Code|typ jednostki 1}}, {{Code|typ jednostki 2}}, {{Code|typ jednostki 3}},..., {{Code|typ jednostki i}} - typy jednostek, którym odpowiadają pewne przestrzenie przedmiotowe, dla pozycji bazowej, numerkowej i ogólnej. Parametry ramki tablicy transportu dziecka: * Parametry dziecka są takie same jak rodzica dla funkcji pudełkowej plus tu wymienione, * {{Code|numer jednostki}} - jak parametr {{Code|i}} nie został ustawiony, to wtedy liczy się ta zmienna. Przykłady: <syntaxhighlight lang="mediawiki"> {{Nazwa szablonu|nazwa przestrzeni nazw=Wikibooks|nazwa przestrzeni nazw 2=Szablon|nazwa przestrzeni nazw i=Moduł}} </syntaxhighlight> W dziecku powiedzmy jest wywołanie, i szukamy nazwy przestrzeni nazw o numerze dwa, która nie została podana, ale istnieje za to jej wersji ogólna {{Code|nazwa przestrzeni nazw i}} i domyślna {{Code|nazwa przestrzeni nazw}}: <syntaxhighlight lang="mediawiki"> {{#invoke:Pudełko|Nazwa przestrzeni nazw dyskusji|numer jednostki=1}} </syntaxhighlight> Na podstawie powyższego przykładu otrzymamy wynik o schemacie, nie wyniku, bo tam nie ma zmiennej {{Code|nazwa przestrzeni nazw 1}}, ale jest {{Code|nazwa przestrzeni nazw i}}: <syntaxhighlight lang="mediawiki"> <!-- Ale nie "nazwa przestrzeni nazw", bo jej nie ma, ale za to istnieje "nazwa przestrzeni nazw i"; --> <!-- nazwa przestrzeni nazw 2=nazwa przestrzeni nazw i=Moduł; --> <!-- Czyli wynik: --> Dyskusja modułu <!-- Widzimy, że wygenerowała się nazwa przestrzeni nazw, którą jest przestrzeń dyskusji przestrzeni programowej przestrzeni przedmiotowej "Moduł", którą również jest "Szablon" jego przestrzeni dyskusji "Dyskusja szablonu", a dla ich przestrzeni przedmiotowej, zamiast dyskusji, to przekształca się na dyskusji jej odpowiadającą; --> </syntaxhighlight> Nie jest brana w tym powyższym przykładzie zmienna {{Code|nazwa przestrzeni nazw}}, bo jej nie ma, ale za to jest {{Code|nazwa przestrzeni nazw i}}, bo ona występuje jako parametr domyślny ogólny dla parametrów numerkowych. Przykłady w wikikodzie: * {{Code|{{m|Pudełko|Nazwa przestrzeni nazw dyskusji|numer jednostki{{=}}2}}}} → {{Tt|{{#invoke:Pudełko|Nazwa przestrzeni nazw dyskusji|numer jednostki=2}}}} * {{Code|{{m|Pudełko|Nazwa przestrzeni nazw dyskusji|Szablon|nazwa przestrzeni nazw i{{=}}Moja przestrzeń|numer jednostki{{=}}2}}}} → {{Tt|{{#invoke:Pudełko|Nazwa przestrzeni nazw dyskusji|Szablon|nazwa przestrzeni nazw i=Moja przestrzeń|numer jednostki=2}}}} * {{Code|{{m|Pudełko|Nazwa przestrzeni nazw dyskusji|nazwa przestrzeni nazw 2{{=}}Szablon|numer jednostki{{=}}2}}}} → {{Tt|{{#invoke:Pudełko|Nazwa przestrzeni nazw dyskusji|nazwa przestrzeni nazw 2=Szablon|numer jednostki=2}}}} * {{Code|{{m|Pudełko|Nazwa przestrzeni nazw dyskusji|nazwa przestrzeni nazw 2{{=}}Szablon|numer jednostki{{=}}2}}}} → {{Tt|{{#invoke:Pudełko|Nazwa przestrzeni nazw dyskusji|nazwa przestrzeni nazw i=Szablon|numer jednostki=2}}}} * {{Code|{{m|Pudełko|Nazwa przestrzeni nazw dyskusji|nazwa przestrzeni nazw{{=}}Szablon|numer jednostki{{=}}2}}}} → {{Tt|{{#invoke:Pudełko|Nazwa przestrzeni nazw dyskusji|nazwa przestrzeni nazw=Szablon|numer jednostki=2}}}} Powyżej dla przykładu podano parametry nie w rodzicu w szablonie, tylko w dziecku, jeśli chodzi o parametry nazw przestrzeni nazw, ale ich się za to nie powinno podawać w tych ramach, tylko w szablonach, w których wywoływane są te ramki pudełek {{Code|{{m|Pudełko}}}}, ale tak tutaj tak zrobiono by było najłatwiej sprawdzić działanie tego typu funkcji. Analogicznie możemy podawać parametry typu jednostki, np.: wywołaniu modułowym {{Code|{{m|Pudełko|Nazwa przestrzeni nazw dyskusji|typ jednostki 2{{=}}strona szablonu|numer jednostki{{=}}2}}}}, ale o tym więcej w rozdziałach {{Code|{{sr|# p["Dyskusyjny typ jednostki"](frame,i)|p=Pudełko}}}} w „{{sr|#Funkcje typu jednostki|p=Pudełko}}”, ale wtedy nazwa przestrzeni nazw reprezentowana przez {{Parametr|typ jednostki 2|strona szablonu}}, jest zamieniana na nazwę przestrzeni nazw dyskusji. Parametr dyskusji typu jednostki bazowy lub dla danego numerka ogólny, czy szczegółowy, nie gra roli. Również parametry typu jednostki nie powinno się podawać w dziecku w ramce, tylko w rodzicu w szablonie jako parametry, w którym ta ramka jest wywoływana, ale tutaj podano jedynie dla przykładu, jak najłatwiej sprawdzić działanie tych parametrów tej funkcji. Najpierw w funkcji nagłówku brane są parametry nazw przestrzeni nazw, a jeżeli ich nie ma, to parametry typu jednostki, a jeżeli nie ma, to generowane są nazwy na podstawie aktualnego modułu. == Funkcje nazw przestrzeni nazw drugiej wersji == === {{Code|p["Nazwa przestrzeni nazw 2"](frame,...)}} === Funkcja pisze nazwę przestrzeni nazw, niezależnie, czy to jest przedmiotowa, czy dyskusji, według, i nie zawsze tylko, podanej w zmiennej {{Code|nazwa przestrzeni nazw}} dla pozycja bazowej w podanych parametrach szablonu rodzicu ramki dziecka, lub dla innej pozycji należy parametr podawać w formie {{Code|nazwa przestrzeni nazw 1}}, {{Code|nazwa przestrzeni nazw 2}}, {{Code|nazwa przestrzeni nazw 3}},..., lub te parametry można podać w postaci ogólnej {{Code|nazwa przestrzeni nazw i}}. W tej funkcji trzeba też podawać parametry nazwy jednostek {{Code|nazwa jednostki}}, {{Code|nazwa jednostki 1}}, {{Code|nazwa jednostki 2}}, {{Code|nazwa jednostki 3}},... Parametry podaje się w parametrach rodzica wywołania tej funkcji {{Code|{{m|Pudełko|Nazwa przestrzeni nazw 2}}}} (ale ich nie trzeba podawać w dziecku, ale można) i w parametrach dziecka, jeśli chodzi o zmienną {{Code|numer jednostki}}, czyli np.: {{Code|{{m|Pudełko|Nazwa przestrzeni nazw 2|numer jednostki{{=}}<jakaś liczba całkowita dodatnia>}}}}. Te parametry przestrzenne zamiast w rodzicu w szablonie można podać w ramce dziecka, wtedy parametry dziecka mają pierwszeństwo. Przestrzeń nazw z parametrów nazw przestrzennych może odpowiadać wartości przestrzeni głównej, to wtedy odpowiednia przestrzeń nazw z parametru nazwy jednostki się liczy w tej funkcji, wtedy jest liczona nazwa przestrzeni nazw z tego parametru. Gdy parametry przestrzenne lub typ jednostki w drugim podejściu nie wskazują na przestrzeń główną, to wtedy działanie tej funkcji jest podobne do {{Code|{{sr|#p["Nazwa przestrzeni nazw"](frame,...)|p=Pudełko}}}}. Definicja skrótowa funkcji: <syntaxhighlight lang="lua"> p["Nazwa przestrzeni nazw 2"]=function(frame,czy_uwzglednic_alternatywna_nazwe,i)...end; </syntaxhighlight> Wtedy ciało funkcji tej, czyli jego definicja w środku, jest: <syntaxhighlight lang="lua"> local pudelko_pomocne_modul=require("Module:Pudełko/Pomocne"); -- Liczy nazwę przestrzeni nazw, jeżeli z parametrów przestrzennych przestrzeń wskazuje na główną, to wtedy jest liczona przestrzeń nazw z nazwy jednostki; return pudelko_pomocne_modul.Nazwa_przestrzeni_nazw_2(frame,czy_uwzglednic_alternatywna_nazwe,i) </syntaxhighlight> Parametry funkcji: * {{Code|frame}} - tablica ramki tablicy transportu, * {{Code|czy_uwzglednic_alternatywna_nazwe}} - czy ma uwzględniać nazwę przestrzeni nazw domyślną szablonu, dostępne wartości: {{Code|false}}, w której nazwa domyślna nie jest uwzględniana wtedy, oraz {{Code|nil}} i {{Code|true}}, które oznaczają to samo, w tym jeżeli ona jest uwzględniana, wtedy jest brany parametr pierwszy dziecka, który musi istnieć przy takiej wartości tego parametru, tzn. {{Code|{{m|Pudełko|Nazwa przestrzeni nazw 2|Szablon}}}}, a nazwa uzyskana nazwy przestrzeni nazw jest w takim przypadku błędna, a jeżeli nazwa domyślna jest błędna, czyli {{Code|{{m|Pudełko|Nazwa przestrzeni nazw 2|Moja przestrzeń}}}}, wtedy funkcja zwraca stan błędu {{Code|(błąd)}}. * {{Code|i}} - numer zmiennej nazwy przestrzeni nazw. Funkcja wykorzystuje {{Code|{{sr|#p.Nazwa_przestrzeni_nazw_2(frame,...)|p=Pudełko/Pomocne}}}} do wyznaczania ogólnego nazwy przestrzeni nazw dla pozycji bazowej i numerkowej, tzn. dla pozycji: jeden, dwa, trzy,..., itd, i ich ogólnej. Parametr ramki tablicy transportu rodzica szablonu: * {{Code|nazwa przestrzeni nazw}}, {{Code|nazwa przestrzeni nazw 1}}, {{Code|nazwa przestrzeni nazw 2}}, {{Code|nazwa przestrzeni nazw 3}},..., {{Code|nazwa przestrzeni nazw i}} - nazwy przestrzeni nazw dla pozycji bazowej oraz zwykłej i ogólnej numerkowej, * {{Code|nazwa jednostki}}, {{Code|nazwa jednostki 1}}, {{Code|nazwa jednostki 2}}, {{Code|nazwa jednostki 3}},... - nazwy jednostek dla pozycji bazowej i numerkowej, * {{Code|typ jednostki}}, {{Code|typ jednostki 1}}, {{Code|typ jednostki 2}}, {{Code|typ jednostki 3}},..., {{Code|typ jednostki i}} - typy jednostek, którym odpowiadają pewne przestrzenie przedmiotowe, dla pozycji bazowej, numerkowej i ogólnej, ** {{Code|dyskusja typu jednostki}}, {{Code|dyskusja typu jednostki 1}}, {{Code|dyskusja typ jednostki 2}}, {{Code|dyskusja typ jednostki 3}},..., {{Code|dyskusja typ jednostki i}} - czy dany typ jednostki ma przedstawiać, jeśli niepusta, przestrzeń dyskusji dla pozycji bazowej, numerkowej i ogólnej. Parametry ramki tablicy transportu dziecka: * Parametry dziecka są takie same jak rodzica dla funkcji pudełkowej plus tu wymienione, * {{Code|numer jednostki}} - jak parametr {{Code|i}} nie został ustawiony, to wtedy liczy się ta zmienna. Przykłady: <syntaxhighlight lang="mediawiki"> {{Nazwa szablonu|nazwa przestrzeni nazw=Wikibooks|nazwa przestrzeni nazw 1=Szablon|nazwa przestrzeni nazw i=|nazwa jednostki 2=Wikibooks:Strona}} </syntaxhighlight> W dziecku powiedzmy jest wywołanie, i szukamy nazwy przestrzeni nazw o numerze dwa, która została podana, ale istnieje za to jej wersji ogólna {{Code|nazwa przestrzeni nazw i}} i domyślna {{Code|nazwa przestrzeni nazw}}, ale wtedy dla tego numerkowego liczy się to ogólne z {{Code| i}}, a ponieważ ta nazwa jest pusta, więc będziemy liczyli nazwę przestrzeni nazw z {{Code|nazwa jednostki 2}}: <syntaxhighlight lang="mediawiki"> {{#invoke:Pudełko|Nazwa przestrzeni nazw 2|numer jednostki=2}} </syntaxhighlight> Na podstawie powyższego przykładu otrzymamy wynik o schemacie, nie wyniku, bo tam nie ma zmiennej {{Code|nazwa przestrzeni nazw 1}}, ale jest {{Code|nazwa przestrzeni nazw i}}: <syntaxhighlight lang="mediawiki"> <!-- Ale nie "nazwa przestrzeni nazw 2", bo jej nie ma, ale za to istnieje "nazwa przestrzeni nazw i"; --> <!-- nazwa przestrzeni nazw 2=nazwa przestrzeni nazw i="", a nazwa jednostki 2="Wikibooks:Strona"; --> <!-- Czyli wynik: --> Wikibooks <!-- Widzimy, że wygenerowała się nazwa przestrzeni nazw, którą jest przestrzeń nieprogramowa, ale projektu, wychodząca z nazwy jednostek w tym przypadku z "nazwa jednostki 2"; --> </syntaxhighlight> Nie jest brana w tym powyższym przykładzie zmienna {{Code|nazwa przestrzeni nazw}}, bo jej nie ma, ale za to jest {{Code|nazwa przestrzeni nazw i}}, bo ona występuje jako parametr domyślny ogólny dla parametrów numerkowych. Tytaj jest używana jest zmienna {{Code|nazwa jednostki 2}} do wygenerowania ostatecznego wyniku, bo jak można zauważyć, parametry przestrzenne wskazują na przestrzeń główną, a nazwy jednostek już nie. Przykłady w wikikodzie: * {{Code|{{m|Pudełko|Nazwa przestrzeni nazw 2|numer jednostki{{=}}2}}}} → {{Tt|{{#invoke:Pudełko|Nazwa przestrzeni nazw 2|numer jednostki=2}}}} * {{Code|{{m|Pudełko|Nazwa przestrzeni nazw 2|Szablon|nazwa przestrzeni nazw i{{=}}Moja przestrzeń|numer jednostki{{=}}2}}}} → {{Tt|{{#invoke:Pudełko|Nazwa przestrzeni nazw 2|Szablon|nazwa przestrzeni nazw i=Moja przestrzeń|numer jednostki=2}}}} * {{Code|{{m|Pudełko|Nazwa przestrzeni nazw 2|nazwa przestrzeni nazw 2{{=}}|nazwa jednostki 2{{=}}Szablon:Strona|numer jednostki{{=}}2}}}} → {{Tt|{{#invoke:Pudełko|Nazwa przestrzeni nazw 2|nazwa przestrzeni nazw 2=|nazwa jednostki 2=Szablon:Strona|numer jednostki=2}}}} * {{Code|{{m|Pudełko|Nazwa przestrzeni nazw 2|nazwa przestrzeni nazw i{{=}}|nazwa jednostki 2{{=}}Szablon:Strona|numer jednostki{{=}}2}}}} → {{Tt|{{#invoke:Pudełko|Nazwa przestrzeni nazw 2|nazwa przestrzeni nazw i=|nazwa jednostki 2=Szablon:Strona|numer jednostki=2}}}} * {{Code|{{m|Pudełko|Nazwa przestrzeni nazw 2|Szablon|nazwa przestrzeni nazw{{=}}|nazwa jednostki 2{{=}}Wikibooks:Strona|numer jednostki{{=}}2}}}} → {{Tt|{{#invoke:Pudełko|Nazwa przestrzeni nazw 2|Szablon|nazwa przestrzeni nazw=|nazwa jednostki 2=Wikibooks:Strona|numer jednostki=2}}}} Powyżej dla przykładu podano parametry nie w rodzicu w szablonie, tylko w dziecku, jeśli chodzi o parametry nazw przestrzeni nazw i nazw jednostek, ale ich się za to nie powinno podawać w tych ramach, tylko w szablonach, w których wywoływane są te ramki pudełek {{Code|{{m|Pudełko}}}}, ale tak tutaj tak zrobiono by było najłatwiej sprawdzić działanie tego typu funkcji. Analogicznie możemy podawać parametry typu jednostki, np.: wywołaniu modułowym {{Code|{{m|Pudełko|Nazwa przestrzeni nazw 2|typ jednostki 2{{=}}Podręcznik|nazwa jednostki 2{{=}}Szablon:Strona|numer jednostki{{=}}2}}}} (ale wtedy jest brana przestrzeń nazw z nazwy jednostki), ale o tym więcej w rozdziałach {{Code|{{sr|#p["Typ jednostki 2"](frame,i)|p=Pudełko}}}} w „{{sr|#Funkcje typu jednostki|p=Pudełko}}”, on definiuje przestrzenie przedmiotowe, ale można użyć parametru dyskusji typu jednostki z wartością niepustą, wtedy wyświetli się nazwa przestrzeni nazw dyskusji. Jeżeli typ jednostki wskazuje na przestrzeń nazw główną, wtedy się liczą parametry nazw jednostek. Również parametry typu jednostki nie powinno się podawać w dziecku w ramce, tylko w rodzicu w szablonie jako parametry, w którym ta ramka jest wywoływana, ale tutaj podano jedynie dla przykładu, jak najłatwiej sprawdzić działanie tych parametrów tej funkcji. Najpierw w funkcji nagłówku brane są parametry nazw przestrzeni nazw, a jeżeli ich nie ma, to parametry typu jednostki, a jeżeli nie ma lub parametry przestrzenne wskazują na przestrzeń główną, i nie ma nazwy jednostki, to generowane są nazwy tej funkcji na podstawie aktualnej strony. === {{Code|p["Nazwa przedmiotowej przestrzeni nazw 2"](frame,...)}} === Funkcja pisze przedmiotową nazwę przestrzeni nazw jakikolwiek nazwy przestrzeni nazw (tzn. nazwę przedmiotową nazwy przestrzenie nazw, czyli nie dyskusji, zamieniana jest na nią samą, czyli identyfikator przestrzeni się nie zmienia, a dyskusji, nie przedmiotową, przekształca się na przedmiotową jej odpowiadającą, czyli w tym przypadku identyfikator przestrzeni zmniejsza się o numer mniej), według, i nie zawsze tylko, podanej w zmiennej {{Code|nazwa przestrzeni nazw}} dla pozycja bazowej w podanych parametrach szablonu rodzicu ramki dziecka, lub dla innej pozycji należy parametr podawać w formie {{Code|nazwa przestrzeni nazw 1}}, {{Code|nazwa przestrzeni nazw 2}}, {{Code|nazwa przestrzeni nazw 3}},..., lub te parametry można podać w postaci ogólnej {{Code|nazwa przestrzeni nazw i}}. W tej funkcji trzeba też podawać parametry nazwy jednostek {{Code|nazwa jednostki}}, {{Code|nazwa jednostki 1}}, {{Code|nazwa jednostki 2}}, {{Code|nazwa jednostki 3}},... Parametry podaje się w parametrach rodzica wywołania tej funkcji {{Code|{{m|Pudełko|Nazwa przedmiotowej przestrzeni nazw 2}}}} (ale ich nie trzeba podawać w dziecku, ale można) i w parametrach dziecka, jeśli chodzi o zmienną {{Code|numer jednostki}}, czyli np.: {{Code|{{m|Pudełko|Nazwa przedmiotowej przestrzeni nazw 2|numer jednostki{{=}}<jakaś liczba całkowita dodatnia>}}}}. Te parametry przestrzenne zamiast w rodzicu w szablonie można podać w ramce dziecka, wtedy parametry dziecka mają pierwszeństwo. Przestrzeń nazw z parametrów nazw przestrzennych po przekształceniu na przedmiotową może odpowiadać wartości przestrzeni głównej, to wtedy odpowiednia przestrzeń nazw z parametru nazwy jednostki się liczy w tej funkcji, wtedy jest liczona nazwa przestrzeni nazw z tego parametru. Gdy parametry przestrzenne lub typ jednostki w drugim podejściu nie wskazują na przestrzeń główną, to wtedy działanie tej funkcji jest podobne do {{Code|{{sr|#p["Nazwa przedmiotowej przestrzeni nazw"](frame,...)|p=Pudełko}}}}. Definicja skrótowa funkcji: <syntaxhighlight lang="lua"> p["Nazwa przedmiotowej przestrzeni nazw 2"]=function(frame,czy_uwzglednic_alternatywna_nazwe,i)...end; </syntaxhighlight> Wtedy ciało funkcji tej, czyli jego definicja w środku, jest: <syntaxhighlight lang="lua"> local pudelko_pomocne_modul=require("Module:Pudełko/Pomocne"); return pudelko_pomocne_modul.Nazwa_przestrzeni_nazw_przedmiotowa_dyskusji_2(frame,czy_uwzglednic_alternatywna_nazwe,i,"przedmiotowa"); </syntaxhighlight> Parametry funkcji: * {{Code|frame}} - tablica ramki tablicy transportu, * {{Code|czy_uwzglednic_alternatywna_nazwe}} - czy ma uwzględniać nazwę przestrzeni nazw domyślną szablonu, dostępne wartości: {{Code|false}}, w której nazwa domyślna nie jest uwzględniana wtedy, oraz {{Code|nil}} i {{Code|true}}, które oznaczają to samo, w tym jeżeli ona jest uwzględniana, wtedy jest brany parametr pierwszy dziecka, który musi istnieć przy takiej wartości tego parametru, tzn. {{Code|{{m|Pudełko|Nazwa przedmiotowej przestrzeni nazw 2|Szablon}}}}, a nazwa uzyskana nazwy przestrzeni nazw jest w takim przypadku błędna, a jeżeli nazwa domyślna jest błędna, czyli {{Code|{{m|Pudełko|Nazwa przedmiotowej przestrzeni nazw 2|Moja przestrzeń}}}}, wtedy funkcja zwraca stan błędu {{Code|(błąd)}}. * {{Code|i}} - numer zmiennej nazwy przestrzeni nazw. Funkcja wykorzystuje {{Code|{{sr|#p.Nazwa_przestrzeni_nazw_przedmiotowa_dyskusji_2(frame,...)|p=Pudełko/Pomocne}}}} do wyznaczania ogólnego nazwy przestrzeni nazw dla pozycji bazowej i numerkowej, tzn. dla pozycji: jeden, dwa, trzy,..., itd, i ich ogólnej. Parametr ramki tablicy transportu rodzica szablonu: * {{Code|nazwa przestrzeni nazw}}, {{Code|nazwa przestrzeni nazw 1}}, {{Code|nazwa przestrzeni nazw 2}}, {{Code|nazwa przestrzeni nazw 3}},..., {{Code|nazwa przestrzeni nazw i}} - nazwy przestrzeni nazw dla pozycji bazowej oraz zwykłej i ogólnej numerkowej, * {{Code|nazwa jednostki}}, {{Code|nazwa jednostki 1}}, {{Code|nazwa jednostki 2}}, {{Code|nazwa jednostki 3}},... - nazwy jednostek dla pozycji bazowej i numerkowej, * {{Code|typ jednostki}}, {{Code|typ jednostki 1}}, {{Code|typ jednostki 2}}, {{Code|typ jednostki 3}},..., {{Code|typ jednostki i}} - typy jednostek, którym odpowiadają pewne przestrzenie przedmiotowe, dla pozycji bazowej, numerkowej i ogólnej. Parametry ramki tablicy transportu dziecka: * Parametry dziecka są takie same jak rodzica dla funkcji pudełkowej plus tu wymienione, * {{Code|numer jednostki}} - jak parametr {{Code|i}} nie został ustawiony, to wtedy liczy się ta zmienna. Przykłady: <syntaxhighlight lang="mediawiki"> {{Nazwa szablonu|nazwa przestrzeni nazw=Wikibooks|nazwa przestrzeni nazw 1=Szablon|nazwa przestrzeni nazw i=|nazwa jednostki 2=Dyskusja Wikibooks:Strona}} </syntaxhighlight> W dziecku powiedzmy jest wywołanie, i szukamy nazwy przestrzeni nazw o numerze dwa, która została podana, ale istnieje za to jej wersji ogólna {{Code|nazwa przestrzeni nazw i}} i domyślna {{Code|nazwa przestrzeni nazw}}, ale wtedy dla tego numerkowego liczy się to ogólne z {{Code| i}}, a ponieważ ta nazwa jest pusta, więc będziemy liczyli nazwę przestrzeni nazw z {{Code|nazwa jednostki 2}}: <syntaxhighlight lang="mediawiki"> {{#invoke:Pudełko|Nazwa przedmiotowej przestrzeni nazw 2|numer jednostki=2}} </syntaxhighlight> Na podstawie powyższego przykładu otrzymamy wynik o schemacie, nie wyniku, bo tam nie ma zmiennej {{Code|nazwa przestrzeni nazw 1}}, ale jest {{Code|nazwa przestrzeni nazw i}}: <syntaxhighlight lang="mediawiki"> <!-- Ale nie "nazwa przestrzeni nazw 2", bo jej nie ma, ale za to istnieje "nazwa przestrzeni nazw i"; --> <!-- nazwa przestrzeni nazw 2=nazwa przestrzeni nazw i="", a nazwa jednostki 2="Dyskusja Wikibooks:Strona"; --> <!-- Czyli wynik: --> Wikibooks <!-- Widzimy, że wygenerowała się nazwa przestrzeni nazw, którą jest przestrzeń nieprogramowa, ale projektu, wychodząca z nazwy jednostek w tym przypadku z "nazwa jednostki 2"; --> </syntaxhighlight> Nie jest brana w tym powyższym przykładzie zmienna {{Code|nazwa przestrzeni nazw}}, bo jej nie ma, ale za to jest {{Code|nazwa przestrzeni nazw i}}, bo ona występuje jako parametr domyślny ogólny dla parametrów numerkowych. Tytaj jest używana jest zmienna {{Code|nazwa jednostki 2}} do wygenerowania ostatecznego wyniku, bo jak można zauważyć, parametry przestrzenne wskazują na przestrzeń główną, a nazwy jednostek już nie. Przykłady w wikikodzie: * {{Code|{{m|Pudełko|Nazwa przedmiotowej przestrzeni nazw 2|numer jednostki{{=}}2}}}} → {{Tt|{{#invoke:Pudełko|Nazwa przedmiotowej przestrzeni nazw 2|numer jednostki=2}}}} * {{Code|{{m|Pudełko|Nazwa przedmiotowej przestrzeni nazw 2|Dyskusja szablonu|nazwa przestrzeni nazw i{{=}}Moja przestrzeń|numer jednostki{{=}}2}}}} → {{Tt|{{#invoke:Pudełko|Nazwa przedmiotowej przestrzeni nazw 2|Dyskusja szablonu|nazwa przestrzeni nazw i=Moja przestrzeń|numer jednostki=2}}}} * {{Code|{{m|Pudełko|Nazwa przedmiotowej przestrzeni nazw 2|nazwa przestrzeni nazw 2{{=}}Dyskusja|nazwa jednostki 2{{=}}Dyskusja szablonu:Strona|numer jednostki{{=}}2}}}} → {{Tt|{{#invoke:Pudełko|Nazwa przedmiotowej przestrzeni nazw 2|nazwa przestrzeni nazw 2=Dyskusja|nazwa jednostki 2=Dyskusja szablonu:Strona|numer jednostki=2}}}} * {{Code|{{m|Pudełko|Nazwa przedmiotowej przestrzeni nazw 2|nazwa przestrzeni nazw i{{=}}Dyskusja|nazwa jednostki 2{{=}}Dyskusja szablonu:Strona|numer jednostki{{=}}2}}}} → {{Tt|{{#invoke:Pudełko|Nazwa przedmiotowej przestrzeni nazw 2|nazwa przestrzeni nazw i=Dyskusja|nazwa jednostki 2=Dyskusja szablonu:Strona|numer jednostki=2}}}} * {{Code|{{m|Pudełko|Nazwa przedmiotowej przestrzeni nazw 2|Dyskusja szablonu|nazwa przestrzeni nazw{{=}}Dyskusja|nazwa jednostki 2{{=}}Wikibooks:Strona|numer jednostki{{=}}2}}}} → {{Tt|{{#invoke:Pudełko|Nazwa przedmiotowej przestrzeni nazw 2|Dyskusja szablonu|nazwa przestrzeni nazw=Dyskusja|nazwa jednostki 2=Dyskusja Wikibooks:Strona|numer jednostki=2}}}} Powyżej dla przykładu podano parametry nie w rodzicu w szablonie, tylko w dziecku, jeśli chodzi o parametry nazw przestrzeni nazw i nazw jednostek, ale ich się za to nie powinno podawać w tych ramach, tylko w szablonach, w których wywoływane są te ramki pudełek {{Code|{{m|Pudełko}}}}, ale tak tutaj tak zrobiono by było najłatwiej sprawdzić działanie tego typu funkcji. Analogicznie możemy podawać parametry typu jednostki, np.: wywołaniu modułowym {{Code|{{m|Pudełko|Nazwa przedmiotowej przestrzeni nazw 2|typ jednostki 2{{=}}Podręcznik|nazwa jednostki 2{{=}}Dyskusja szablonu:Strona|numer jednostki{{=}}2}}}} (ale wtedy jest brana przestrzeń nazw z nazwy jednostki), ale o tym więcej w rozdziałach {{Code|{{sr|# p["Przedmiotowy typ jednostki"](frame,i)|p=Pudełko}}}} w „{{sr|#Funkcje typu jednostki|p=Pudełko}}”, on definiuje przestrzenie przedmiotowe, ale można użyć parametru dyskusji typu jednostki z wartością niepustą, pustą, czy nawet jej nie podamy, wtedy wyświetli się nazwa przestrzeni nazw przedmiotowej. Jeżeli typ jednostki wskazuje na przestrzeń nazw główną, wtedy się liczą parametry nazw jednostek. Również parametry typu jednostki nie powinno się podawać w dziecku w ramce, tylko w rodzicu w szablonie jako parametry, w którym ta ramka jest wywoływana, ale tutaj podano jedynie dla przykładu, jak najłatwiej sprawdzić działanie tych parametrów tej funkcji. Najpierw w funkcji nagłówku brane są parametry nazw przestrzeni nazw, a jeżeli ich nie ma, to parametry typu jednostki, a jeżeli nie ma lub parametry przestrzenne wskazują na przestrzeń główną, i nie ma nazwy jednostki, to generowane są nazwy tej funkcji na podstawie aktualnej strony. === {{Code|p["Nazwa przestrzeni nazw dyskusji 2"](frame,...)}} === Funkcja pisze nazwę przestrzeni nazw dyskusji jakikolwiek nazwy przestrzeni nazw (tzn. nazwę dyskusji nazwy przestrzenie nazw, czyli nie przedmiotowej, zamieniana jest na nią samą, czyli identyfikator przestrzeni się nie zmienia, a przedmiotową, nie dyskusji, przekształca się na dyskusji jej odpowiadającą, czyli w tym przypadku identyfikator przestrzeni zwiększa się o numer więcej), według, i nie zawsze tylko, podanej w zmiennej {{Code|nazwa przestrzeni nazw}} dla pozycja bazowej w podanych parametrach szablonu rodzicu ramki dziecka, lub dla innej pozycji należy parametr podawać w formie {{Code|nazwa przestrzeni nazw 1}}, {{Code|nazwa przestrzeni nazw 2}}, {{Code|nazwa przestrzeni nazw 3}},..., lub te parametry można podać w postaci ogólnej {{Code|nazwa przestrzeni nazw i}}. W tej funkcji trzeba też podawać parametry nazwy jednostek {{Code|nazwa jednostki}}, {{Code|nazwa jednostki 1}}, {{Code|nazwa jednostki 2}}, {{Code|nazwa jednostki 3}},... Parametry podaje się w parametrach rodzica wywołania tej funkcji {{Code|{{m|Pudełko|Nazwa przestrzeni nazw dyskusji 2}}}} (ale ich nie trzeba podawać w dziecku, ale można) i w parametrach dziecka, jeśli chodzi o zmienną {{Code|numer jednostki}}, czyli np.: {{Code|{{m|Pudełko|Nazwa przestrzeni nazw dyskusji 2|numer jednostki{{=}}<jakaś liczba całkowita dodatnia>}}}}. Te parametry przestrzenne zamiast w rodzicu w szablonie można podać w ramce dziecka, wtedy parametry dziecka mają pierwszeństwo. Przestrzeń nazw z parametrów nazw przestrzennych po przekształceniu na przedmiotową może odpowiadać wartości przestrzeni głównej, to wtedy odpowiednia przestrzeń nazw z parametru nazwy jednostki się liczy w tej funkcji, wtedy jest liczona nazwa przestrzeni nazw z tego parametru. Gdy parametry przestrzenne lub typ jednostki w drugim podejściu nie wskazują na przestrzeń główną, to wtedy działanie tej funkcji jest podobne do {{Code|{{sr|#p["Nazwa dyskusji przestrzeni nazw"](frame,...)|p=Pudełko}}}}. Definicja skrótowa funkcji: <syntaxhighlight lang="lua"> p["Nazwa przestrzeni nazw dyskusji 2"]=function(frame,czy_uwzglednic_alternatywna_nazwe,i)...end; </syntaxhighlight> Wtedy ciało funkcji tej, czyli jego definicja w środku, jest: <syntaxhighlight lang="lua"> local pudelko_pomocne_modul=require("Module:Pudełko/Pomocne"); return pudelko_pomocne_modul.Nazwa_przestrzeni_nazw_przedmiotowa_dyskusji_2(frame,czy_uwzglednic_alternatywna_nazwe,i,"dyskusja"); </syntaxhighlight> Parametry funkcji: * {{Code|frame}} - tablica ramki tablicy transportu, * {{Code|czy_uwzglednic_alternatywna_nazwe}} - czy ma uwzględniać nazwę przestrzeni nazw domyślną szablonu, dostępne wartości: {{Code|false}}, w której nazwa domyślna nie jest uwzględniana wtedy, oraz {{Code|nil}} i {{Code|true}}, które oznaczają to samo, w tym jeżeli ona jest uwzględniana, wtedy jest brany parametr pierwszy dziecka, który musi istnieć przy takiej wartości tego parametru, tzn. {{Code|{{m|Pudełko|Nazwa przestrzeni nazw dyskusji 2|Szablon}}}}, a nazwa uzyskana nazwy przestrzeni nazw jest w takim przypadku błędna, a jeżeli nazwa domyślna jest błędna, czyli {{Code|{{m|Pudełko|Nazwa przestrzeni nazw dyskusji 2|Moja przestrzeń}}}}, wtedy funkcja zwraca stan błędu {{Code|(błąd)}}. * {{Code|i}} - numer zmiennej nazwy przestrzeni nazw. Funkcja wykorzystuje {{Code|{{sr|#p.Nazwa_przestrzeni_nazw_przedmiotowa_dyskusji_2(frame,...)|p=Pudełko/Pomocne}}}} do wyznaczania ogólnego nazwy przestrzeni nazw dla pozycji bazowej i numerkowej, tzn. dla pozycji: jeden, dwa, trzy,..., itd, i ich ogólnej. Parametr ramki tablicy transportu rodzica szablonu: * {{Code|nazwa przestrzeni nazw}}, {{Code|nazwa przestrzeni nazw 1}}, {{Code|nazwa przestrzeni nazw 2}}, {{Code|nazwa przestrzeni nazw 3}},..., {{Code|nazwa przestrzeni nazw i}} - nazwy przestrzeni nazw dla pozycji bazowej oraz zwykłej i ogólnej numerkowej, * {{Code|nazwa jednostki}}, {{Code|nazwa jednostki 1}}, {{Code|nazwa jednostki 2}}, {{Code|nazwa jednostki 3}},... - nazwy jednostek dla pozycji bazowej i numerkowej, * {{Code|typ jednostki}}, {{Code|typ jednostki 1}}, {{Code|typ jednostki 2}}, {{Code|typ jednostki 3}},..., {{Code|typ jednostki i}} - typy jednostek, którym odpowiadają pewne przestrzenie przedmiotowe, dla pozycji bazowej, numerkowej i ogólnej. Parametry ramki tablicy transportu dziecka: * Parametry dziecka są takie same jak rodzica dla funkcji pudełkowej plus tu wymienione, * {{Code|numer jednostki}} - jak parametr {{Code|i}} nie został ustawiony, to wtedy liczy się ta zmienna. Przykłady: <syntaxhighlight lang="mediawiki"> {{Nazwa szablonu|nazwa przestrzeni nazw=Wikibooks|nazwa przestrzeni nazw 1=Szablon|nazwa przestrzeni nazw i=|nazwa jednostki 2=Wikibooks:Strona}} </syntaxhighlight> W dziecku powiedzmy jest wywołanie, i szukamy nazwy przestrzeni nazw o numerze dwa, która została podana, ale istnieje za to jej wersji ogólna {{Code|nazwa przestrzeni nazw i}} i domyślna {{Code|nazwa przestrzeni nazw}}, ale wtedy dla tego numerkowego liczy się to ogólne z {{Code| i}}, a ponieważ ta nazwa jest pusta, więc będziemy liczyli nazwę przestrzeni nazw z {{Code|nazwa jednostki 2}}: <syntaxhighlight lang="mediawiki"> {{#invoke:Pudełko|Nazwa przestrzeni nazw dyskusji 2|numer jednostki=2}} </syntaxhighlight> Na podstawie powyższego przykładu otrzymamy wynik o schemacie, nie wyniku, bo tam nie ma zmiennej {{Code|nazwa przestrzeni nazw 1}}, ale jest {{Code|nazwa przestrzeni nazw i}}: <syntaxhighlight lang="mediawiki"> <!-- Ale nie "nazwa przestrzeni nazw 2", bo jej nie ma, ale za to istnieje "nazwa przestrzeni nazw i"; --> <!-- nazwa przestrzeni nazw 2=nazwa przestrzeni nazw i="", a nazwa jednostki 2="Wikibooks:Strona"; --> <!-- Czyli wynik: --> Dyskusja Wikibooks <!-- Widzimy, że wygenerowała się nazwa przestrzeni nazw, którą jest przestrzeń nieprogramowa, ale dyskusji projektu, wychodząca z nazwy jednostek w tym przypadku z "nazwa jednostki 2"; --> </syntaxhighlight> Nie jest brana w tym powyższym przykładzie zmienna {{Code|nazwa przestrzeni nazw}}, bo jej nie ma, ale za to jest {{Code|nazwa przestrzeni nazw i}}, bo ona występuje jako parametr domyślny ogólny dla parametrów numerkowych. Tytaj jest używana jest zmienna {{Code|nazwa jednostki 2}} do wygenerowania ostatecznego wyniku, bo jak można zauważyć, parametry przestrzenne wskazują na przestrzeń główną, a nazwy jednostek już nie. Przykłady w wikikodzie: * {{Code|{{m|Pudełko|Nazwa przestrzeni nazw dyskusji 2|numer jednostki{{=}}2}}}} → {{Tt|{{#invoke:Pudełko|Nazwa przestrzeni nazw dyskusji 2|numer jednostki=2}}}} * {{Code|{{m|Pudełko|Nazwa przestrzeni nazw dyskusji 2|Szablon|nazwa przestrzeni nazw i{{=}}Moja przestrzeń|numer jednostki{{=}}2}}}} → {{Tt|{{#invoke:Pudełko|Nazwa przestrzeni nazw dyskusji 2|Szablon|nazwa przestrzeni nazw i=Moja przestrzeń|numer jednostki=2}}}} * {{Code|{{m|Pudełko|Nazwa przestrzeni nazw dyskusji 2|nazwa przestrzeni nazw 2{{=}}|nazwa jednostki 2{{=}}Szablon:Strona|numer jednostki{{=}}2}}}} → {{Tt|{{#invoke:Pudełko|Nazwa przestrzeni nazw dyskusji 2|nazwa przestrzeni nazw 2=|nazwa jednostki 2=Szablon:Strona|numer jednostki=2}}}} * {{Code|{{m|Pudełko|Nazwa przestrzeni nazw dyskusji 2|nazwa przestrzeni nazw i{{=}}|nazwa jednostki 2{{=}}Szablon:Strona|numer jednostki{{=}}2}}}} → {{Tt|{{#invoke:Pudełko|Nazwa przestrzeni nazw dyskusji 2|nazwa przestrzeni nazw i=|nazwa jednostki 2=Szablon:Strona|numer jednostki=2}}}} * {{Code|{{m|Pudełko|Nazwa przestrzeni nazw dyskusji 2|Szablon|nazwa przestrzeni nazw{{=}}|nazwa jednostki 2{{=}}Wikibooks:Strona|numer jednostki{{=}}2}}}} → {{Tt|{{#invoke:Pudełko|Nazwa przestrzeni nazw dyskusji 2|Szablon|nazwa przestrzeni nazw=|nazwa jednostki 2=Dyskusja Wikibooks:Strona|numer jednostki=2}}}} Powyżej dla przykładu podano parametry nie w rodzicu w szablonie, tylko w dziecku, jeśli chodzi o parametry nazw przestrzeni nazw i nazw jednostek, ale ich się za to nie powinno podawać w tych ramach, tylko w szablonach, w których wywoływane są te ramki pudełek {{Code|{{m|Pudełko}}}}, ale tak tutaj tak zrobiono by było najłatwiej sprawdzić działanie tego typu funkcji. Analogicznie możemy podawać parametry typu jednostki, np.: wywołaniu modułowym {{Code|{{m|Pudełko|Nazwa przestrzeni nazw dyskusji 2|typ jednostki 2{{=}}Podręcznik|nazwa jednostki 2{{=}}Szablon:Strona|numer jednostki{{=}}2}}}} (ale wtedy jest brana przestrzeń nazw z nazwy jednostki), ale o tym więcej w rozdziałach {{Code|{{sr|# p["Dyskusyjny typ jednostki"](frame,i)|p=Pudełko}}}} w „{{sr|#Funkcje typu jednostki|p=Pudełko}}”, on definiuje przestrzenie dyskusji, ale można użyć parametru dyskusji typu jednostki z obojętnie jaką wartością niepustą, czy pustą, czy nawet jej nie podamy, wtedy wyświetli się nazwa przestrzeni nazw dyskusji. Jeżeli typ jednostki wskazuje na przestrzeń nazw główną, wtedy się liczą parametry nazw jednostek. Również parametry typu jednostki nie powinno się podawać w dziecku w ramce, tylko w rodzicu w szablonie jako parametry, w którym ta ramka jest wywoływana, ale tutaj podano jedynie dla przykładu, jak najłatwiej sprawdzić działanie tych parametrów tej funkcji. Najpierw w funkcji nagłówku brane są parametry nazw przestrzeni nazw, a jeżeli ich nie ma, to parametry typu jednostki, a jeżeli nie ma lub parametry przestrzenne wskazują na przestrzeń główną, i nie ma nazwy jednostki, to generowane są nazwy tej funkcji na podstawie aktualnej strony. == Funkcje pełnych nazw jednostki == === {{Code|p["Pełna nazwa dyskusji jednostki"](frame,i)}} === === {{Code|p["Pełna nazwa przedmiotowa jednostki"](frame,i)}} === === {{Code|p["Pełna nazwa jednostki"](frame,i)}} === == Funkcje pełnych nazw jednostki drugiej wersji == === {{Code|p["Pełna nazwa dyskusji jednostki 2"](frame,i)}} === === {{Code|p["Pełna nazwa przedmiotowa jednostki 2"](frame,i)}} === === {{Code|p["Pełna nazwa jednostki 2"](frame,i)}} === == Funkcje pełnych nazw jednostki trzeciej wersji == === {{Code|p["Pełna nazwa dyskusji jednostki 3"](frame,i)}} === === {{Code|p["Pełna nazwa przedmiotowa jednostki 3"](frame,i)}} === === {{Code|p["Pełna nazwa jednostki 3"](frame,i)}} === == Funkcje nazw jednostki == === {{Code|p["Nazwa jednostki"](frame,i)}} === == Funkcje nazw jednostki drugiej wersji == === {{Code|p["Nazwa jednostki 2"](frame,i)}} === === {{Code|p["Nazwa przedmiotowa jednostki 2"](frame,i)}} === === {{Code|p["Nazwa dyskusji jednostki 2"](frame,i)}} === == Funkcje nazw przestrzeni nazw trzeciej wersji == === {{Code|p["Nazwa przestrzeni nazw 3"](frame,i)}} === === {{Code|p["Nazwa przedmiotowej przestrzeni nazw 3"](frame,i)}} === === {{Code|p["Nazwa przestrzeni nazw dyskusji 3"](frame,i)}} === == Funkcje nazw jednostki trzeciej wersji == === {{Code|p["Nazwa jednostki 3"](frame,i)}} === === {{Code|p["Nazwa przedmiotowa jednostki 3"](frame,i)}} === === {{Code|p["Nazwa dyskusji jednostki 3"](frame,i)}} === == Funkcje typu jednostki == === {{Code|p["Typ jednostki"](frame,i)}} === === {{Code|p["Typ jednostki 2"](frame,i)}} === === {{Code|p["Typ jednostki 3"](frame,i)}} === === Funkcje typu jednostki przedmiotowe === ==== {{Code|p["Przedmiotowy typ jednostki"](frame,i)}} ==== ==== {{Code|p["Przedmiotowy typ jednostki 2"](frame,i)}} ==== ==== {{Code|p["Przedmiotowy typ jednostki 3"](frame,i)}} ==== === Fukcje typu jednostki dyskusji === ==== {{Code|p["Dyskusyjny typ jednostki"](frame,i)}} ==== ==== {{Code|p["Dyskusyjny typ jednostki 2"](frame,i)}} ==== ==== {{Code|p["Dyskusyjny typ jednostki 3"](frame,i)}} ==== == Funkcje chech pudełka == === {{Code|p["Cecha pudełka"](frame)}} === === {{Code|p["Przedmiotowa cecha pudełka"](frame)}} === === {{Code|p["Dyskusyjna cecha pudełka"](frame)}} === == Fukcje ogólnego pudełka == === {{Code|p["Ogólne pudełko"](frame)}} === == Funkcje ogólne == === {{Code|p["Tekst pudełka"](frame)}} === == Funkcje błędów pudełka == === {{Code|p["Błędy pudełka"](frame)}} === === {{Code|p["Przedmiotowe błędy pudełka"](frame)}} === === {{Code|p["Dyskusyjne błędy pudełka"](frame)}} === == Funkcje nazw stron == === {{Code|p["Nazwa strony głównej projektu"](frame,i)}} === === {{Code|p["Nazwa strony głównej dla dzieci projektu"](frame,i)}} === == Funkcje kodów == === {{Code|p["Kod języka"](frame,i)}} === === {{Code|p["Kod projektu"](frame,i)}} === === {{Code|p["Klucz projektu"](frame,i)}} === == Funkcje wiki == === {{Code|p["Inny niż język bieżący wiki"](frame)}} === === {{Code|p["Inne niż lokalne wiki"](frame)}} === === {{Code|p["Inne niż bieżące wiki"](frame)}} === == Funkcje typów parametrów, czy podane je == === {{Code|p["Podano parametry nienazwane"](frame)}} === === {{Code|p["Podano parametry numerowane"](frame)}} === === {{Code|p["Podano parametry nazwane"](frame)}} === == Funkcje kodów tego projektu == === {{Code|p["Kod projektu tego projektu"](frame)}} === === {{Code|p["Kod języka tego projektu"](frame)}} === === {{Code|p["Klucz projektu tego projektu"](frame)}} === == Funkcje stron == === {{Code|p["Strona główna tego projektu"](frame)}} === === {{Code|p["Strona główna dla dzieci tego projektu"](frame)}} === == Funkcje nazw stron drugiej wersji == === {{Code|p["Nazwa strony głównej dla dzieci projektu 2"](frame)}} === === {{Code| p["Nazwa strony głównej projektu 2"](frame)}} === {{BrClear}} <noinclude><!-- -->{{ProstaStronaKoniec}}<!-- -->{{Kategoria|Opisy funkcji, w Lua w Scribunto, w modułach}}<!-- --></noinclude> 1s01m33jr73xb1ti5vxbk6pmv945qo5 540407 540406 2026-04-23T17:27:27Z Persino 2851 /* Funkcje nazw przestrzeni nazw drugiej wersji */ 540407 wikitext text/x-wiki <noinclude>{{ProstaStronaStart | nagłówek = {{Podrozdział|{{ld2|Pudełko}}|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 pudelko_modul=require("Module:Pudełko"); </syntaxhighlight> dzięki, któremu można wypisywać funkcje należącego do niego. Posługuje się na parametrach pudełkowych {{Parametr|nazwa przestrzeni nazw}} (czy też bez numerka {{Parametr|nazwa przestrzeni nazw i}} dla tego numerowanego) lub te z numerkiem po jednej spacji w nich (ale nie dla tego z końcówką {{Code| i}}) mogą zostać użyte jako parametry szablonu. Moduł {{Code|{{ld2|Pudełko}}}} przedstawia funkcje nazw w oparciu o funkcje nazw {{Code|{{ld2|Nazwy}}}}, generuje on nazwy za pomocą parametrów pudełkowych podanych poniżej. Parametr {{Parametr|nazwa jednostki}} (lub parametr {{Parametr|cel}} dla numerka tego pierwszego, tego alternatywnego), lub te z numerkiem po jednej spacji w nazwie parametru, albo numerowane numerkami {{Code|1}}, {{Code|2}},..., mogą zostać użyte jako parametry szablonu. Parametry określające rodzaj jednostki {{Parametr|typ jednostki}} z {{Parametr|dyskusja typu jednostki}}, itp. w wersjach z numerkiem po jednej spacji w nich mogą zostać użyte jako parametry szablonu. A te tymi numerowanymi liczbami naturalnymi {{Tt|nazwy jednostki}} od jedynki wzwyż poprzez szablon, w którym są one użyte, one też mogą być użyte z dwukropkiem, te numerowane, na samym początku nazwy, wtedy one są traktowane jako pełne nazwy strony, i wtedy one nie zostaną z interpretowane, że do nich trzeba użyć parametr odpowiedni z nazwą przetrzeni nazw z tego numerowanego, czy ogólny, aby utworzyć znów inną pełną nazwę strony dla tego numerka. Zestawienie: * {{Code|nazwa przestrzeni nazw}} i {{Code|nazwa przestrzeni nazw i}} (ogólna nazwa przestrzeni nazw dla wszystkich numerków, i tych numerowanych jednostek) - i to pierwsze z numerkiem, tzn. {{Code|nazwa przestrzeni nazw 1}}, {{Code|nazwa przestrzeni nazw 2}}, ..., * {{Code|nazwa jednostki}} - i te z numerkiem: {{Code|nazwa jednostki 1}}, {{Code|nazwa jednostki 2}}, ..., lub gdy jest zamiast tego parametrem numerowany, {{Code|1}}, {{Code|2}},..., który dla tego pierwszego może być uznany jako: {{Code|cel}} {{=}} {{Code|1}}, * {{Code|typ jednostki}} (parametr bazowy) i {{Code|typ jednostki i}} (parametr domyślny numerkowy) - i te z numerkiem: {{Code|typ jednostki 1}}, {{Code|typ jednostki 2}}, ..., tzn. gdy chcemy określić z jakim typem jednostki mamy do czynienia w zależności do jakiej przestrzeni nazw należy, a w danej, czy jest on np. programowy, czy tylko jest opisem, jak to bywa w szablonach {{Np|Template|link=tak}}, podobnie jest w przypadku {{Np|Module|link=tak}}, czy jak jest w innych przestrzeniach nazw, ** {{Code|dyskusja typu jednostki}} (parametr bazowy) i {{Code|dyskusja typu jednostki i}} (parametr domyślny numerkowy) - i te z numerkiem: {{Code|dyskusja typu jednostki 1}}, {{Code|dyskusja typu jednostki 2}}, ..., gdy chcemy określić wartością niepustą,że chodzi tutaj o typ jednostki. == {{Code|p.CzyNiepoprawnaNazwa(nazwa_jednostki)}} == Funkcja sprawdzajaca, czy jest poprawnie podana nazwa jednostki, czy ma poprawną nazwę. Znakami tymi, z których nie powinna składać się nazwa jest {{Code|<nowiki>{}<>|[]#\n</nowiki>}} i dodatkowo znak {{Code|&#127;}} (kod {{Code|{{Nowiki|&#127;}}}}). Też nie może składać się z trzech znaków tyldy, tzn. {{Code|<nowiki>~~~</nowiki>}}. Również w swojej budowie nie może składać się ze kodów {{Strong|HTML}} literowych o wzorze {{Code|{{Nowiki|&(%a+);}}}}. Natomiast może składać się z {{Code|{{Nowiki|&#(%d+);}}}} i {{Code|{{Nowiki|&#x(%x+);}}}}, ale w pierw te kody muszą być zamienione na normalne znaki. Skrótowa definicja funkcji: <syntaxhighlight lang="lua"> function p.CzyNiepoprawnaNazwa(nazwa_jednostki)...end; </syntaxhighlight> Wtedy ciało funkcji tej, czyli jego definicja w środku, jest: <syntaxhighlight lang="lua"> -- Moduł: "Moduł:Html/dane", służy do ładowania znaku o kodzie HTML "&#127;"; local html_dane_modul=mw.loadData("Module:Html/dane"); return mw.ustring.match(nazwa_jednostki,"[{}<>|%[%]#\n"..html_dane_modul.znak_127.."]+") or mw.ustring.match(nazwa_jednostki,"~~~") or mw.ustring.match(nazwa_jednostki,"&(%a+);"); </syntaxhighlight> Parametry: * {{Code|nazwa_jednostki}} - nazwa jednostki do sprawdzenia. Przykłady: <syntaxhighlight lang="lua"> local pudelko_modul=require("Module:Pudełko"); -- Podana przykładowa niepoprawna nazwa jedostki local nazwa_jednostki="Nazwa pliku [[Nazwa linku w pliku]]"; -- Fukcja zwróci wartość: local czy_poprawna_nazwa=true; local czy_poprawna_nazwa=pudelko_modul.CzyNiepoprawnaNazwa(nazwa_jednostki); </syntaxhighlight> == Funkcje nazw przestrzeni nazw == === {{Code|p["Nazwa przestrzeni nazw"](frame,...)}} === Funkcja pisze nazwę przestrzeni nazw, niezależnie, czy to jest przedmiotowa, czy dyskusji, według podanej w zmiennej {{Code|nazwa przestrzeni nazw}} dla pozycja bazowej w podanych parametrach szablonu rodzicu ramki dziecka, lub dla innej pozycji należy parametr podawać w formie {{Code|nazwa przestrzeni nazw 1}}, {{Code|nazwa przestrzeni nazw 2}}, {{Code|nazwa przestrzeni nazw 3}},..., lub te parametry można podać w postaci ogólnej {{Code|nazwa przestrzeni nazw i}}. Parametry podaje się w parametrach rodzica wywołania tej funkcji {{Code|{{m|Pudełko|Nazwa przestrzeni nazw}}}} (ale ich nie trzeba podawać w dziecku, ale można) i w parametrach dziecka, jeśli chodzi o zmienną {{Code|numer jednostki}}, czyli np.: {{Code|{{m|Pudełko|Nazwa przestrzeni nazw|numer jednostki{{=}}<jakaś liczba całkowita dodatnia>}}}}. Te parametry przestrzenne zamiast w rodzicu w szablonie można podać w ramce dziecka, wtedy parametry dziecka mają pierwszeństwo. Przestrzeń nazw z parametrów nazw przestrzennych może odpowiadać wartości przestrzeni głównej, to wtedy odpowiednia przestrzeń nazw z parametru nazwy jednostki się nie liczy w tej funkcji, aby się liczyła należy użyć funkcji {{Code|{{sr|#p["Nazwa przestrzeni nazw 2"](frame,...)|p=Pudełko}}}}. Definicja skrótowa funkcji: <syntaxhighlight lang="lua"> p["Nazwa przestrzeni nazw"]=function(frame,czy_uwzglednic_alternatywna_nazwe,i)...end; </syntaxhighlight> Wtedy ciało funkcji tej, czyli jego definicja w środku, jest: <syntaxhighlight lang="lua"> -- Jest liczony numer parametru nazwy przestrzeni nazw, domyslnie chodzi tu o numer bazowy parametrów przestrzennych; local numer_jednostki=i or frame.args["numer jednostki"]; local liczba_numer_jednostki=((numer_jednostki)and(tonumber(numer_jednostki))or 0); local pudelko_pomocne_modul=require("Module:Pudełko/Pomocne"); -- Liczy nazwę przestrzeni nazw na podstawie podanych parametrów; return pudelko_pomocne_modul.Nazwa_przestrzeni_nazw(frame,0, czy_uwzglednic_alternatywna_nazwe,liczba_numer_jednostki); </syntaxhighlight> Parametry funkcji: * {{Code|frame}} - tablica ramki tablicy transportu, * {{Code|czy_uwzglednic_alternatywna_nazwe}} - czy ma uwzględniać nazwę przestrzeni nazw domyślną szablonu, dostępne wartości: {{Code|false}}, w której nazwa domyślna nie jest uwzględniana wtedy, oraz {{Code|nil}} i {{Code|true}}, które oznaczają to samo, w tym jeżeli ona jest uwzględniana, wtedy jest brany parametr pierwszy dziecka, który musi istnieć przy takiej wartości tego parametru, tzn. {{Code|{{m|Pudełko|Nazwa przestrzeni nazw|Szablon}}}}, a nazwa uzyskana nazwy przestrzeni nazw jest w takim przypadku błędna, a jeżeli nazwa domyślna jest błędna, czyli {{Code|{{m|Pudełko|Nazwa przestrzeni nazw|Moja przestrzeń}}}}, wtedy funkcja zwraca stan błędu {{Code|(błąd)}}. * {{Code|i}} - numer zmiennej nazwy przestrzeni nazw. Funkcja wykorzystuje {{Code|{{sr|#p.Nazwa_przestrzeni_nazw(frame,...)|p=Pudełko/Pomocne}}}} do wyznaczania ogólnego nazwy przestrzeni nazw dla pozycji bazowej i numerkowej, tzn. dla pozycji: jeden, dwa, trzy,..., itd, i ich ogólnej. Parametr ramki tablicy transportu rodzica szablonu: * {{Code|nazwa przestrzeni nazw}}, {{Code|nazwa przestrzeni nazw 1}}, {{Code|nazwa przestrzeni nazw 2}}, {{Code|nazwa przestrzeni nazw 3}},..., {{Code|nazwa przestrzeni nazw i}} - nazwy przestrzeni nazw dla pozycji bazowej oraz zwykłej i ogólnej numerkowej, * {{Code|typ jednostki}}, {{Code|typ jednostki 1}}, {{Code|typ jednostki 2}}, {{Code|typ jednostki 3}},..., {{Code|typ jednostki i}} - typy jednostek, którym odpowiadają pewne przestrzenie przedmiotowe, dla pozycji bazowej, numerkowej i ogólnej, ** {{Code|dyskusja typu jednostki}}, {{Code|dyskusja typu jednostki 1}}, {{Code|dyskusja typ jednostki 2}}, {{Code|dyskusja typ jednostki 3}},..., {{Code|dyskusja typ jednostki i}} - czy dany typ jednostki ma przedstawiać, jeśli niepusta, przestrzeń dyskusji dla pozycji bazowej, numerkowej i ogólnej. Parametry ramki tablicy transportu dziecka: * Parametry dziecka są takie same jak rodzica dla funkcji pudełkowej plus tu wymienione, * {{Code|numer jednostki}} - jak parametr {{Code|i}} nie został ustawiony, to wtedy liczy się ta zmienna. Przykłady: <syntaxhighlight lang="mediawiki"> {{Nazwa szablonu|nazwa przestrzeni nazw=Wikibooks|nazwa przestrzeni nazw 2=Szablon|nazwa przestrzeni nazw i=Moduł}} </syntaxhighlight> W dziecku powiedzmy jest wywołanie, i szukamy nazwy przestrzeni nazw o numerze dwa, która nie została podana, ale istnieje za to jej wersji ogólna {{Code|nazwa przestrzeni nazw i}} i domyślna {{Code|nazwa przestrzeni nazw}}: <syntaxhighlight lang="mediawiki"> {{#invoke:Pudełko|Nazwa przestrzeni nazw|numer jednostki=1}} </syntaxhighlight> Na podstawie powyższego przykładu otrzymamy wynik o schemacie, nie wyniku, bo tam nie ma zmiennej {{Code|nazwa przestrzeni nazw 1}}, ale jest {{Code|nazwa przestrzeni nazw i}}: <syntaxhighlight lang="mediawiki"> <!-- Ale nie "nazwa przestrzeni nazw", bo jej nie ma, ale za to istnieje "nazwa przestrzeni nazw i"; --> <!-- nazwa przestrzeni nazw 2=nazwa przestrzeni nazw i=Moduł; --> <!-- Czyli wynik: --> Moduł <!-- Widzimy, że wygenerowała się nazwa przestrzeni nazw, którą jest przestrzeń programowa, którą również jest "Szablon"; --> </syntaxhighlight> Nie jest brana w tym powyższym przykładzie zmienna {{Code|nazwa przestrzeni nazw}}, bo jej nie ma, ale za to jest {{Code|nazwa przestrzeni nazw i}}, bo ona występuje jako parametr domyślny ogólny dla parametrów numerkowych. Przykłady w wikikodzie: * {{Code|{{m|Pudełko|Nazwa przestrzeni nazw|numer jednostki{{=}}2}}}} → {{Tt|{{#invoke:Pudełko|Nazwa przestrzeni nazw|numer jednostki=2}}}} * {{Code|{{m|Pudełko|Nazwa przestrzeni nazw|Szablon|nazwa przestrzeni nazw i{{=}}Moja przestrzeń|numer jednostki{{=}}2}}}} → {{Tt|{{#invoke:Pudełko|Nazwa przestrzeni nazw|Szablon|nazwa przestrzeni nazw i=Moja przestrzeń|numer jednostki=2}}}} * {{Code|{{m|Pudełko|Nazwa przestrzeni nazw|nazwa przestrzeni nazw 2{{=}}Szablon|numer jednostki{{=}}2}}}} → {{Tt|{{#invoke:Pudełko|Nazwa przestrzeni nazw|nazwa przestrzeni nazw 2=Szablon|numer jednostki=2}}}} * {{Code|{{m|Pudełko|Nazwa przestrzeni nazw|nazwa przestrzeni nazw 2{{=}}Szablon|numer jednostki{{=}}2}}}} → {{Tt|{{#invoke:Pudełko|Nazwa przestrzeni nazw|nazwa przestrzeni nazw i=Szablon|numer jednostki=2}}}} * {{Code|{{m|Pudełko|Nazwa przestrzeni nazw|nazwa przestrzeni nazw{{=}}Szablon|numer jednostki{{=}}2}}}} → {{Tt|{{#invoke:Pudełko|Nazwa przestrzeni nazw|nazwa przestrzeni nazw=Szablon|numer jednostki=2}}}} Powyżej dla przykładu podano parametry nie w rodzicu w szablonie, tylko w dziecku, jeśli chodzi o parametry nazw przestrzeni nazw, ale ich się za to nie powinno podawać w tych ramach, tylko w szablonach, w których wywoływane są te ramki pudełek {{Code|{{m|Pudełko}}}}, ale tak tutaj tak zrobiono by było najłatwiej sprawdzić działanie tego typu funkcji. Analogicznie możemy podawać parametry typu jednostki, np.: wywołaniu modułowym {{Code|{{m|Pudełko|Nazwa przestrzeni nazw|typ jednostki 2{{=}}strona szablonu|numer jednostki{{=}}2}}}}, ale o tym więcej w rozdziałach {{Code|{{sr|# p["Typ jednostki"](frame,i)|p=Pudełko}}}} w „{{sr|#Funkcje typu jednostki|p=Pudełko}}”, on definiuje przestrzenie przedmiotowe, ale można użyć parametru dyskusji typu jednostki z wartością niepustą, wtedy wyświetli się nazwa przestrzeni nazw dyskusji. Również parametry typu jednostki nie powinno się podawać w dziecku w ramce, tylko w rodzicu w szablonie jako parametry, w którym ta ramka jest wywoływana, ale tutaj podano jedynie dla przykładu, jak najłatwiej sprawdzić działanie tych parametrów tej funkcji. Najpierw w funkcji nagłówku brane są parametry nazw przestrzeni nazw, a jeżeli ich nie ma, to parametry typu jednostki, a jeżeli nie ma, to generowane są nazwy na podstawie aktualnego modułu. === {{Code|p["Nazwa przedmiotowej przestrzeni nazw"](frame,...)}} === Funkcja pisze przedmiotową nazwę przestrzeni nazw jakikolwiek nazwy przestrzeni nazw (tzn. nazwę przedmiotową nazwy przestrzenie nazw, czyli nie dyskusji, zamieniana jest na nią samą, czyli identyfikator przestrzeni się nie zmienia, a dyskusji, nie przedmiotową, przekształca się na przedmiotową jej odpowiadającą, czyli w tym przypadku identyfikator przestrzeni zmniejsza się o numer mniej), według podanej w zmiennej {{Code|nazwa przestrzeni nazw}} dla pozycja bazowej w podanych parametrach szablonu rodzicu ramki dziecka, lub dla innej pozycji należy parametr podawać w formie {{Code|nazwa przestrzeni nazw 1}}, {{Code|nazwa przestrzeni nazw 2}}, {{Code|nazwa przestrzeni nazw 3}},..., lub te parametry można podać w postaci ogólnej {{Code|nazwa przestrzeni nazw i}}. Parametry podaje się w parametrach rodzica wywołania tej funkcji {{Code|{{m|Pudełko|Nazwa przedmiotowej przestrzeni nazw}}}} (ale ich nie trzeba podawać w dziecku, ale można) i w parametrach dziecka, jeśli chodzi o zmienną {{Code|numer jednostki}}, czyli np.: {{Code|{{m|Pudełko|Nazwa przedmiotowej przestrzeni nazw|numer jednostki{{=}}<jakaś liczba całkowita dodatnia>}}}}. Te parametry przestrzenne zamiast w rodzicu w szablonie można podać w ramce dziecka, wtedy parametry dziecka mają pierwszeństwo. Parametry przestrzenne mogą mogą być podane w postaci przestrzeni przedmiotowej lub dyskusji, ale ta funkcja zawsze ją zamienia na przedmiotową. Przestrzeń nazw z parametrów nazw przestrzennych może odpowiadać wartości przestrzeni głównej, to wtedy odpowiednia przestrzeń nazw z parametru nazwy jednostki się nie liczy w tej funkcji, aby się liczyła należy użyć funkcji {{Code|{{sr|#p["Nazwa przedmiotowej przestrzeni nazw 2"](frame,...)|p=Pudełko}}}}. Definicja skrótowa funkcji: <syntaxhighlight lang="lua"> p["Nazwa przedmiotowej przestrzeni nazw"]=function(frame,czy_uwzglednic_alternatywna_nazwe,i)...end; </syntaxhighlight> Wtedy ciało funkcji tej, czyli jego definicja w środku, jest: <syntaxhighlight lang="lua"> -- Jest liczony numer parametru nazwy przestrzeni nazw, domyslnie chodzi tu o numer bazowy parametrów przestrzennych; local numer_jednostki=i or frame.args["numer jednostki"]; local liczba_numer_jednostki=((numer_jednostki)and(tonumber(numer_jednostki))or 0); local pudelko_pomocne_modul=require("Module:Pudełko/Pomocne"); -- Liczy nazwę przestrzeni nazw przedmiotową na podstawie podanych parametrów; return pudelko_pomocne_modul.Nazwa_przestrzeni_nazw(frame,1, czy_uwzglednic_alternatywna_nazwe,liczba_numer_jednostki); </syntaxhighlight> Parametry funkcji: * {{Code|frame}} - tablica ramki tablicy transportu, * {{Code|czy_uwzglednic_alternatywna_nazwe}} - czy ma uwzględniać nazwę przestrzeni nazw domyślną szablonu, dostępne wartości: {{Code|false}}, w której nazwa domyślna nie jest uwzględniana wtedy, oraz {{Code|nil}} i {{Code|true}}, które oznaczają to samo, w tym jeżeli ona jest uwzględniana, wtedy jest brany parametr pierwszy dziecka, który musi istnieć przy takiej wartości tego parametru, tzn. {{Code|{{m|Pudełko|Nazwa przedmiotowej przestrzeni nazw|Dyskusja szablonu}}}} - ta nazwa domyślna zostanie zamieniona na przedmiotową, a jak ona by była przedmiotowa, to żadnej zamiany by nie było, a nazwa uzyskana z nazwy przestrzeni nazw z parametrów przestrzennych jest w takim przypadku błędna, to w takim razie brany jest ten parametr, a jeżeli ta nazwa domyślna jest błędna, czyli {{Code|{{m|Pudełko|Nazwa przedmiotowej przestrzeni nazw|Moja przestrzeń}}}}, wtedy funkcja zwraca stan błędu {{Code|(błąd)}}. * {{Code|i}} - numer zmiennej nazwy przestrzeni nazw. Funkcja wykorzystuje {{Code|{{sr|#p.Nazwa_przestrzeni_nazw(frame,...)|p=Pudełko/Pomocne}}}} do wyznaczania ogólnego nazwy przestrzeni nazw dla pozycji bazowej i numerkowej, tzn. dla pozycji: jeden, dwa, trzy,..., itd, i ich ogólnej. Parametr ramki tablicy transportu rodzica szablonu: * {{Code|nazwa przestrzeni nazw}}, {{Code|nazwa przestrzeni nazw 1}}, {{Code|nazwa przestrzeni nazw 2}}, {{Code|nazwa przestrzeni nazw 3}},..., {{Code|nazwa przestrzeni nazw i}} - nazwy przestrzeni nazw dla pozycji bazowej oraz zwykłej i ogólnej numerkowej, * {{Code|typ jednostki}}, {{Code|typ jednostki 1}}, {{Code|typ jednostki 2}}, {{Code|typ jednostki 3}},..., {{Code|typ jednostki i}} - typy jednostek, którym odpowiadają pewne przestrzenie przedmiotowe, dla pozycji bazowej, numerkowej i ogólnej. Parametry ramki tablicy transportu dziecka: * Parametry dziecka są takie same jak rodzica dla funkcji pudełkowej plus tu wymienione, * {{Code|numer jednostki}} - jak parametr {{Code|i}} nie został ustawiony, to wtedy liczy się ta zmienna. Przykłady: <syntaxhighlight lang="mediawiki"> {{Nazwa szablonu|nazwa przestrzeni nazw=Dyskusja Wikibooks|nazwa przestrzeni nazw 2=Dyskusja szablonu|nazwa przestrzeni nazw i=Dyskusja modułu}} </syntaxhighlight> W dziecku powiedzmy jest wywołanie, i szukamy nazwy przestrzeni nazw o numerze dwa, która nie została podana, ale istnieje za to jej wersji ogólna {{Code|nazwa przestrzeni nazw i}} i domyślna {{Code|nazwa przestrzeni nazw}}: <syntaxhighlight lang="mediawiki"> {{#invoke:Pudełko|Nazwa przedmiotowej przestrzeni nazw|numer jednostki=1}} </syntaxhighlight> Na podstawie powyższego przykładu otrzymamy wynik o schemacie, nie wyniku, bo tam nie ma zmiennej {{Code|nazwa przestrzeni nazw 1}}, ale jest {{Code|nazwa przestrzeni nazw i}}: <syntaxhighlight lang="mediawiki"> <!-- Ale nie "nazwa przestrzeni nazw", bo jej nie ma, ale za to istnieje "nazwa przestrzeni nazw i"; --> <!-- nazwa przestrzeni nazw 2=nazwa przestrzeni nazw i=Dyskusja modułu; --> <!-- Czyli wynik: --> Moduł <!-- Widzimy, że wygenerowała się nazwa przestrzeni nazw, którą jest przestrzeń przedmiotowa programowa przestrzeni dyskusji "Dyskusja modułu", którą również jest "Szablon" jego przestrzeni dyskusji "Dyskusja szablonu", a dla ich przestrzeni przedmiotowej, zamiast dyskusji, to samo przekształca się na to samo; --> </syntaxhighlight> Nie jest brana w tym powyższym przykładzie zmienna {{Code|nazwa przestrzeni nazw}}, bo jej nie ma, ale za to jest {{Code|nazwa przestrzeni nazw i}}, bo ona występuje jako parametr domyślny ogólny dla parametrów numerkowych. Przykłady w wikikodzie: * {{Code|{{m|Pudełko|Nazwa przedmiotowej przestrzeni nazw|numer jednostki{{=}}2}}}} → {{Tt|{{#invoke:Pudełko|Nazwa przedmiotowej przestrzeni nazw|numer jednostki=2}}}} * {{Code|{{m|Pudełko|Nazwa przedmiotowej przestrzeni nazw|Dyskusja szablonu|nazwa przestrzeni nazw i{{=}}Moja przestrzeń|numer jednostki{{=}}2}}}} → {{Tt|{{#invoke:Pudełko|Nazwa przedmiotowej przestrzeni nazw|Dyskusja szablonu|nazwa przestrzeni nazw i=Moja przestrzeń|numer jednostki=2}}}} * {{Code|{{m|Pudełko|Nazwa przedmiotowej przestrzeni nazw|nazwa przestrzeni nazw 2{{=}}Dyskusja szablonu|numer jednostki{{=}}2}}}} → {{Tt|{{#invoke:Pudełko|Nazwa przedmiotowej przestrzeni nazw|nazwa przestrzeni nazw 2=Dyskusja szablonu|numer jednostki=2}}}} * {{Code|{{m|Pudełko|Nazwa przedmiotowej przestrzeni nazw|nazwa przestrzeni nazw 2{{=}}Dyskusja szablonu|numer jednostki{{=}}2}}}} → {{Tt|{{#invoke:Pudełko|Nazwa przedmiotowej przestrzeni nazw|nazwa przestrzeni nazw i=Dyskusja szablonu|numer jednostki=2}}}} * {{Code|{{m|Pudełko|Nazwa przedmiotowej przestrzeni nazw|nazwa przestrzeni nazw{{=}}Dyskusja szablonu|numer jednostki{{=}}2}}}} → {{Tt|{{#invoke:Pudełko|Nazwa przedmiotowej przestrzeni nazw|nazwa przestrzeni nazw=Dyskusja szablonu|numer jednostki=2}}}} Powyżej dla przykładu podano parametry nie w rodzicu w szablonie, tylko w dziecku, jeśli chodzi o parametry nazw przestrzeni nazw, ale ich się za to nie powinno podawać w tych ramach, tylko w szablonach, w których wywoływane są te ramki pudełek {{Code|{{m|Pudełko}}}}, ale tak tutaj tak zrobiono by było najłatwiej sprawdzić działanie tego typu funkcji. Analogicznie możemy podawać parametry typu jednostki, np.: wywołaniu modułowym {{Code|{{m|Pudełko|Nazwa przedmiotowej przestrzeni nazw|typ jednostki 2{{=}}strona szablonu|numer jednostki{{=}}2}}}}, ale o tym więcej w rozdziałach {{Code|{{sr|# p["Przedmiotowy typ jednostki"](frame,i)|p=Pudełko}}}} w „{{sr|#Funkcje typu jednostki|p=Pudełko}}”, ale wtedy ta sama nazwa przestrzeni nazw reprezentowana przez {{Parametr|typ jednostki 2|strona szablonu}}, jest zamieniana na to samo, lepiej jest tutaj używać parametrów przestrzennych nazw niż typu jednostki, bo typ jednostki ma taką samą wartość dla przestrzeni przedmiotowej, co dyskusji. Tutaj parametr dyskusji typu jednostki bazowy i numerkowy ogólny, czy szczegółowy, nie gra roli, bo nawet, gdy wygenerujemy nazwę przestrzeni dyskusji za pomoca tego parametru, to i tak otrzymamy na samym końcu jego nazwę przedmiotową. Również parametry typu jednostki nie powinno się podawać w dziecku w ramce, tylko w rodzicu w szablonie jako parametry, w którym ta ramka jest wywoływana, ale tutaj podano jedynie dla przykładu, jak najłatwiej sprawdzić działanie tych parametrów tej funkcji. Najpierw w funkcji nagłówku brane są parametry nazw przestrzeni nazw, a jeżeli ich nie ma, to parametry typu jednostki, a jeżeli nie ma, to generowane są nazwy na podstawie aktualnego modułu. === {{Code|p["Nazwa przestrzeni nazw dyskusji"](frame,...)}} === Funkcja pisze nazwę przestrzeni nazw dyskusji jakikolwiek nazwy przestrzeni nazw (tzn. nazwę przedmiotową nazwy przestrzenie nazw, czyli nie dyskusji, zamieniana jest na dyskusji, czyli identyfikator przestrzeni się zmienia jeden wyżej, a dyskusji, nie przedmiotową, przekształca się na tą samą), według podanej w zmiennej {{Code|nazwa przestrzeni nazw}} dla pozycja bazowej w podanych parametrach szablonu rodzicu ramki dziecka, lub dla innej pozycji należy parametr podawać w formie {{Code|nazwa przestrzeni nazw 1}}, {{Code|nazwa przestrzeni nazw 2}}, {{Code|nazwa przestrzeni nazw 3}},..., lub te parametry można podać w postaci ogólnej {{Code|nazwa przestrzeni nazw i}}. Parametry podaje się w parametrach rodzica wywołania tej funkcji {{Code|{{m|Pudełko|Nazwa przestrzeni nazw dyskusji}}}} (ale ich nie trzeba podawać w dziecku, ale można) i w parametrach dziecka, jeśli chodzi o zmienną {{Code|numer jednostki}}, czyli np.: {{Code|{{m|Pudełko|Nazwa przestrzeni nazw dyskusji|numer jednostki{{=}}<jakaś liczba całkowita dodatnia>}}}}. Te parametry przestrzenne zamiast w rodzicu w szablonie można podać w ramce dziecka, wtedy parametry dziecka mają pierwszeństwo. Parametry przestrzenne mogą mogą być podane w postaci przestrzeni przedmiotowej lub dyskusji, ale ta funkcja zawsze ją zamienia na dyskusji. Przestrzeń nazw z parametrów nazw przestrzennych może odpowiadać wartości przestrzeni głównej, to wtedy odpowiednia przestrzeń nazw z parametru nazwy jednostki się nie liczy w tej funkcji, aby się liczyła należy użyć funkcji {{Code|{{sr|#p["Nazwa przestrzeni nazw dyskusji 2"](frame,...)|p=Pudełko}}}}. Definicja skrótowa funkcji: <syntaxhighlight lang="lua"> p["Nazwa przestrzeni nazw dyskusji"]=function(frame,czy_uwzglednic_alternatywna_nazwe,i)...end; </syntaxhighlight> Wtedy ciało funkcji tej, czyli jego definicja w środku, jest: <syntaxhighlight lang="lua"> -- Jest liczony numer parametru nazwy przestrzeni nazw, domyslnie chodzi tu o numer bazowy parametrów przestrzennych; local numer_jednostki=i or frame.args["numer jednostki"]; local liczba_numer_jednostki=((numer_jednostki)and(tonumber(numer_jednostki))or 0); local pudelko_pomocne_modul=require("Module:Pudełko/Pomocne"); -- Liczy nazwę przestrzeni nazw dyskusji na podstawie podanych parametrów; return pudelko_pomocne_modul.Nazwa_przestrzeni_nazw(frame,2, czy_uwzglednic_alternatywna_nazwe,liczba_numer_jednostki); </syntaxhighlight> Parametry funkcji: * {{Code|frame}} - tablica ramki tablicy transportu, * {{Code|czy_uwzglednic_alternatywna_nazwe}} - czy ma uwzględniać nazwę przestrzeni nazw domyślną szablonu, dostępne wartości: {{Code|false}}, w której nazwa domyślna nie jest uwzględniana wtedy, oraz {{Code|nil}} i {{Code|true}}, które oznaczają to samo, w tym jeżeli ona jest uwzględniana, wtedy jest brany parametr pierwszy dziecka, który musi istnieć przy takiej wartości tego parametru, tzn. {{Code|{{m|Pudełko|Nazwa przestrzeni nazw dyskusji|Szablon}}}} - ta nazwa domyślna zostanie przekształcona na dyskusji, a jeżeli ona by była dyskusji, to nie byłoby żadnego przekształcenia, a nazwa uzyskana nazwy przestrzeni nazw z parametrów przestrzennych jest w takim przypadku błędna, to w takim razie brany jest ten parametr, a jeżeli nazwa domyślna jest błędna, czyli {{Code|{{m|Pudełko|Nazwa przestrzeni nazw dyskusji|Moja przestrzeń}}}}, wtedy funkcja zwraca stan błędu {{Code|(błąd)}}. * {{Code|i}} - numer zmiennej nazwy przestrzeni nazw. Funkcja wykorzystuje {{Code|{{sr|#p.Nazwa_przestrzeni_nazw(frame,...)|p=Pudełko/Pomocne}}}} do wyznaczania ogólnego nazwy przestrzeni nazw dla pozycji bazowej i numerkowej, tzn. dla pozycji: jeden, dwa, trzy,..., itd, i ich ogólnej. Parametr ramki tablicy transportu rodzica szablonu: * {{Code|nazwa przestrzeni nazw}}, {{Code|nazwa przestrzeni nazw 1}}, {{Code|nazwa przestrzeni nazw 2}}, {{Code|nazwa przestrzeni nazw 3}},..., {{Code|nazwa przestrzeni nazw i}} - nazwy przestrzeni nazw dla pozycji bazowej oraz zwykłej i ogólnej numerkowej, * {{Code|typ jednostki}}, {{Code|typ jednostki 1}}, {{Code|typ jednostki 2}}, {{Code|typ jednostki 3}},..., {{Code|typ jednostki i}} - typy jednostek, którym odpowiadają pewne przestrzenie przedmiotowe, dla pozycji bazowej, numerkowej i ogólnej. Parametry ramki tablicy transportu dziecka: * Parametry dziecka są takie same jak rodzica dla funkcji pudełkowej plus tu wymienione, * {{Code|numer jednostki}} - jak parametr {{Code|i}} nie został ustawiony, to wtedy liczy się ta zmienna. Przykłady: <syntaxhighlight lang="mediawiki"> {{Nazwa szablonu|nazwa przestrzeni nazw=Wikibooks|nazwa przestrzeni nazw 2=Szablon|nazwa przestrzeni nazw i=Moduł}} </syntaxhighlight> W dziecku powiedzmy jest wywołanie, i szukamy nazwy przestrzeni nazw o numerze dwa, która nie została podana, ale istnieje za to jej wersji ogólna {{Code|nazwa przestrzeni nazw i}} i domyślna {{Code|nazwa przestrzeni nazw}}: <syntaxhighlight lang="mediawiki"> {{#invoke:Pudełko|Nazwa przestrzeni nazw dyskusji|numer jednostki=1}} </syntaxhighlight> Na podstawie powyższego przykładu otrzymamy wynik o schemacie, nie wyniku, bo tam nie ma zmiennej {{Code|nazwa przestrzeni nazw 1}}, ale jest {{Code|nazwa przestrzeni nazw i}}: <syntaxhighlight lang="mediawiki"> <!-- Ale nie "nazwa przestrzeni nazw", bo jej nie ma, ale za to istnieje "nazwa przestrzeni nazw i"; --> <!-- nazwa przestrzeni nazw 2=nazwa przestrzeni nazw i=Moduł; --> <!-- Czyli wynik: --> Dyskusja modułu <!-- Widzimy, że wygenerowała się nazwa przestrzeni nazw, którą jest przestrzeń dyskusji przestrzeni programowej przestrzeni przedmiotowej "Moduł", którą również jest "Szablon" jego przestrzeni dyskusji "Dyskusja szablonu", a dla ich przestrzeni przedmiotowej, zamiast dyskusji, to przekształca się na dyskusji jej odpowiadającą; --> </syntaxhighlight> Nie jest brana w tym powyższym przykładzie zmienna {{Code|nazwa przestrzeni nazw}}, bo jej nie ma, ale za to jest {{Code|nazwa przestrzeni nazw i}}, bo ona występuje jako parametr domyślny ogólny dla parametrów numerkowych. Przykłady w wikikodzie: * {{Code|{{m|Pudełko|Nazwa przestrzeni nazw dyskusji|numer jednostki{{=}}2}}}} → {{Tt|{{#invoke:Pudełko|Nazwa przestrzeni nazw dyskusji|numer jednostki=2}}}} * {{Code|{{m|Pudełko|Nazwa przestrzeni nazw dyskusji|Szablon|nazwa przestrzeni nazw i{{=}}Moja przestrzeń|numer jednostki{{=}}2}}}} → {{Tt|{{#invoke:Pudełko|Nazwa przestrzeni nazw dyskusji|Szablon|nazwa przestrzeni nazw i=Moja przestrzeń|numer jednostki=2}}}} * {{Code|{{m|Pudełko|Nazwa przestrzeni nazw dyskusji|nazwa przestrzeni nazw 2{{=}}Szablon|numer jednostki{{=}}2}}}} → {{Tt|{{#invoke:Pudełko|Nazwa przestrzeni nazw dyskusji|nazwa przestrzeni nazw 2=Szablon|numer jednostki=2}}}} * {{Code|{{m|Pudełko|Nazwa przestrzeni nazw dyskusji|nazwa przestrzeni nazw 2{{=}}Szablon|numer jednostki{{=}}2}}}} → {{Tt|{{#invoke:Pudełko|Nazwa przestrzeni nazw dyskusji|nazwa przestrzeni nazw i=Szablon|numer jednostki=2}}}} * {{Code|{{m|Pudełko|Nazwa przestrzeni nazw dyskusji|nazwa przestrzeni nazw{{=}}Szablon|numer jednostki{{=}}2}}}} → {{Tt|{{#invoke:Pudełko|Nazwa przestrzeni nazw dyskusji|nazwa przestrzeni nazw=Szablon|numer jednostki=2}}}} Powyżej dla przykładu podano parametry nie w rodzicu w szablonie, tylko w dziecku, jeśli chodzi o parametry nazw przestrzeni nazw, ale ich się za to nie powinno podawać w tych ramach, tylko w szablonach, w których wywoływane są te ramki pudełek {{Code|{{m|Pudełko}}}}, ale tak tutaj tak zrobiono by było najłatwiej sprawdzić działanie tego typu funkcji. Analogicznie możemy podawać parametry typu jednostki, np.: wywołaniu modułowym {{Code|{{m|Pudełko|Nazwa przestrzeni nazw dyskusji|typ jednostki 2{{=}}strona szablonu|numer jednostki{{=}}2}}}}, ale o tym więcej w rozdziałach {{Code|{{sr|# p["Dyskusyjny typ jednostki"](frame,i)|p=Pudełko}}}} w „{{sr|#Funkcje typu jednostki|p=Pudełko}}”, ale wtedy nazwa przestrzeni nazw reprezentowana przez {{Parametr|typ jednostki 2|strona szablonu}}, jest zamieniana na nazwę przestrzeni nazw dyskusji. Parametr dyskusji typu jednostki bazowy lub dla danego numerka ogólny, czy szczegółowy, nie gra roli. Również parametry typu jednostki nie powinno się podawać w dziecku w ramce, tylko w rodzicu w szablonie jako parametry, w którym ta ramka jest wywoływana, ale tutaj podano jedynie dla przykładu, jak najłatwiej sprawdzić działanie tych parametrów tej funkcji. Najpierw w funkcji nagłówku brane są parametry nazw przestrzeni nazw, a jeżeli ich nie ma, to parametry typu jednostki, a jeżeli nie ma, to generowane są nazwy na podstawie aktualnego modułu. == Funkcje nazw przestrzeni nazw drugiej wersji == === {{Code|p["Nazwa przestrzeni nazw 2"](frame,...)}} === Funkcja pisze nazwę przestrzeni nazw, niezależnie, czy to jest przedmiotowa, czy dyskusji, według, i nie zawsze tylko, podanej w zmiennej {{Code|nazwa przestrzeni nazw}} dla pozycja bazowej w podanych parametrach szablonu rodzicu ramki dziecka, lub dla innej pozycji należy parametr podawać w formie {{Code|nazwa przestrzeni nazw 1}}, {{Code|nazwa przestrzeni nazw 2}}, {{Code|nazwa przestrzeni nazw 3}},..., lub te parametry można podać w postaci ogólnej {{Code|nazwa przestrzeni nazw i}}. W tej funkcji trzeba też podawać parametry nazwy jednostek {{Code|nazwa jednostki}}, {{Code|nazwa jednostki 1}}, {{Code|nazwa jednostki 2}}, {{Code|nazwa jednostki 3}},... Parametry podaje się w parametrach rodzica wywołania tej funkcji {{Code|{{m|Pudełko|Nazwa przestrzeni nazw 2}}}} (ale ich nie trzeba podawać w dziecku, ale można) i w parametrach dziecka, jeśli chodzi o zmienną {{Code|numer jednostki}}, czyli np.: {{Code|{{m|Pudełko|Nazwa przestrzeni nazw 2|numer jednostki{{=}}<jakaś liczba całkowita dodatnia>}}}}. Te parametry przestrzenne zamiast w rodzicu w szablonie można podać w ramce dziecka, wtedy parametry dziecka mają pierwszeństwo. Przestrzeń nazw z parametrów nazw przestrzennych może odpowiadać wartości przestrzeni głównej, to wtedy odpowiednia przestrzeń nazw z parametru nazwy jednostki się liczy w tej funkcji, wtedy jest liczona nazwa przestrzeni nazw z tego parametru. Gdy parametry przestrzenne lub typ jednostki w drugim podejściu nie wskazują na przestrzeń główną, to wtedy działanie tej funkcji jest podobne do {{Code|{{sr|#p["Nazwa przestrzeni nazw"](frame,...)|p=Pudełko}}}}. Definicja skrótowa funkcji: <syntaxhighlight lang="lua"> p["Nazwa przestrzeni nazw 2"]=function(frame,czy_uwzglednic_alternatywna_nazwe,i)...end; </syntaxhighlight> Wtedy ciało funkcji tej, czyli jego definicja w środku, jest: <syntaxhighlight lang="lua"> local pudelko_pomocne_modul=require("Module:Pudełko/Pomocne"); -- Liczy nazwę przestrzeni nazw, jeżeli z parametrów przestrzennych przestrzeń wskazuje na główną, to wtedy jest liczona przestrzeń nazw z nazwy jednostki; return pudelko_pomocne_modul.Nazwa_przestrzeni_nazw_2(frame,czy_uwzglednic_alternatywna_nazwe,i) </syntaxhighlight> Parametry funkcji: * {{Code|frame}} - tablica ramki tablicy transportu, * {{Code|czy_uwzglednic_alternatywna_nazwe}} - czy ma uwzględniać nazwę przestrzeni nazw domyślną szablonu, dostępne wartości: {{Code|false}}, w której nazwa domyślna nie jest uwzględniana wtedy, oraz {{Code|nil}} i {{Code|true}}, które oznaczają to samo, w tym jeżeli ona jest uwzględniana, wtedy jest brany parametr pierwszy dziecka, który musi istnieć przy takiej wartości tego parametru, tzn. {{Code|{{m|Pudełko|Nazwa przestrzeni nazw 2|Szablon}}}}, a nazwa uzyskana nazwy przestrzeni nazw jest w takim przypadku błędna, a jeżeli nazwa domyślna jest błędna, czyli {{Code|{{m|Pudełko|Nazwa przestrzeni nazw 2|Moja przestrzeń}}}}, wtedy funkcja zwraca stan błędu {{Code|(błąd)}}. * {{Code|i}} - numer zmiennej nazwy przestrzeni nazw. Funkcja wykorzystuje {{Code|{{sr|#p.Nazwa_przestrzeni_nazw_2(frame,...)|p=Pudełko/Pomocne}}}} do wyznaczania ogólnego nazwy przestrzeni nazw dla pozycji bazowej i numerkowej, tzn. dla pozycji: jeden, dwa, trzy,..., itd, i ich ogólnej. Parametr ramki tablicy transportu rodzica szablonu: * {{Code|nazwa przestrzeni nazw}}, {{Code|nazwa przestrzeni nazw 1}}, {{Code|nazwa przestrzeni nazw 2}}, {{Code|nazwa przestrzeni nazw 3}},..., {{Code|nazwa przestrzeni nazw i}} - nazwy przestrzeni nazw dla pozycji bazowej oraz zwykłej i ogólnej numerkowej, * {{Code|nazwa jednostki}}, {{Code|nazwa jednostki 1}}, {{Code|nazwa jednostki 2}}, {{Code|nazwa jednostki 3}},... - nazwy jednostek dla pozycji bazowej i numerkowej, * {{Code|typ jednostki}}, {{Code|typ jednostki 1}}, {{Code|typ jednostki 2}}, {{Code|typ jednostki 3}},..., {{Code|typ jednostki i}} - typy jednostek, którym odpowiadają pewne przestrzenie przedmiotowe, dla pozycji bazowej, numerkowej i ogólnej, ** {{Code|dyskusja typu jednostki}}, {{Code|dyskusja typu jednostki 1}}, {{Code|dyskusja typ jednostki 2}}, {{Code|dyskusja typ jednostki 3}},..., {{Code|dyskusja typ jednostki i}} - czy dany typ jednostki ma przedstawiać, jeśli niepusta, przestrzeń dyskusji dla pozycji bazowej, numerkowej i ogólnej. Parametry ramki tablicy transportu dziecka: * Parametry dziecka są takie same jak rodzica dla funkcji pudełkowej plus tu wymienione, * {{Code|numer jednostki}} - jak parametr {{Code|i}} nie został ustawiony, to wtedy liczy się ta zmienna. Przykłady: <syntaxhighlight lang="mediawiki"> {{Nazwa szablonu|nazwa przestrzeni nazw=Wikibooks|nazwa przestrzeni nazw 1=Szablon|nazwa przestrzeni nazw i=|nazwa jednostki 2=Wikibooks:Strona}} </syntaxhighlight> W dziecku powiedzmy jest wywołanie, i szukamy nazwy przestrzeni nazw o numerze dwa, która została podana, ale istnieje za to jej wersji ogólna {{Code|nazwa przestrzeni nazw i}} i domyślna {{Code|nazwa przestrzeni nazw}}, ale wtedy dla tego numerkowego liczy się to ogólne z {{Code| i}}, a ponieważ ta nazwa jest pusta, więc będziemy liczyli nazwę przestrzeni nazw z {{Code|nazwa jednostki 2}}: <syntaxhighlight lang="mediawiki"> {{#invoke:Pudełko|Nazwa przestrzeni nazw 2|numer jednostki=2}} </syntaxhighlight> Na podstawie powyższego przykładu otrzymamy wynik o schemacie, nie wyniku, bo tam nie ma zmiennej {{Code|nazwa przestrzeni nazw 1}}, ale jest {{Code|nazwa przestrzeni nazw i}}: <syntaxhighlight lang="mediawiki"> <!-- Ale nie "nazwa przestrzeni nazw 2", bo jej nie ma, ale za to istnieje "nazwa przestrzeni nazw i"; --> <!-- nazwa przestrzeni nazw 2=nazwa przestrzeni nazw i="", a nazwa jednostki 2="Wikibooks:Strona"; --> <!-- Czyli wynik: --> Wikibooks <!-- Widzimy, że wygenerowała się nazwa przestrzeni nazw, którą jest przestrzeń nieprogramowa, ale projektu, wychodząca z nazwy jednostek w tym przypadku z "nazwa jednostki 2"; --> </syntaxhighlight> Nie jest brana w tym powyższym przykładzie zmienna {{Code|nazwa przestrzeni nazw}}, bo jej nie ma, ale za to jest {{Code|nazwa przestrzeni nazw i}}, bo ona występuje jako parametr domyślny ogólny dla parametrów numerkowych. Tytaj jest używana jest zmienna {{Code|nazwa jednostki 2}} do wygenerowania ostatecznego wyniku, bo jak można zauważyć, parametry przestrzenne wskazują na przestrzeń główną, a nazwy jednostek już nie. Przykłady w wikikodzie: * {{Code|{{m|Pudełko|Nazwa przestrzeni nazw 2|numer jednostki{{=}}2}}}} → {{Tt|{{#invoke:Pudełko|Nazwa przestrzeni nazw 2|numer jednostki=2}}}} * {{Code|{{m|Pudełko|Nazwa przestrzeni nazw 2|Szablon|nazwa przestrzeni nazw i{{=}}Moja przestrzeń|numer jednostki{{=}}2}}}} → {{Tt|{{#invoke:Pudełko|Nazwa przestrzeni nazw 2|Szablon|nazwa przestrzeni nazw i=Moja przestrzeń|numer jednostki=2}}}} * {{Code|{{m|Pudełko|Nazwa przestrzeni nazw 2|nazwa przestrzeni nazw 2{{=}}|nazwa jednostki 2{{=}}Szablon:Strona|numer jednostki{{=}}2}}}} → {{Tt|{{#invoke:Pudełko|Nazwa przestrzeni nazw 2|nazwa przestrzeni nazw 2=|nazwa jednostki 2=Szablon:Strona|numer jednostki=2}}}} * {{Code|{{m|Pudełko|Nazwa przestrzeni nazw 2|nazwa przestrzeni nazw i{{=}}|nazwa jednostki 2{{=}}Szablon:Strona|numer jednostki{{=}}2}}}} → {{Tt|{{#invoke:Pudełko|Nazwa przestrzeni nazw 2|nazwa przestrzeni nazw i=|nazwa jednostki 2=Szablon:Strona|numer jednostki=2}}}} * {{Code|{{m|Pudełko|Nazwa przestrzeni nazw 2|Szablon|nazwa przestrzeni nazw{{=}}|nazwa jednostki 2{{=}}Wikibooks:Strona|numer jednostki{{=}}2}}}} → {{Tt|{{#invoke:Pudełko|Nazwa przestrzeni nazw 2|Szablon|nazwa przestrzeni nazw=|nazwa jednostki 2=Wikibooks:Strona|numer jednostki=2}}}} Powyżej dla przykładu podano parametry nie w rodzicu w szablonie, tylko w dziecku, jeśli chodzi o parametry nazw przestrzeni nazw i nazw jednostek, ale ich się za to nie powinno podawać w tych ramach, tylko w szablonach, w których wywoływane są te ramki pudełek {{Code|{{m|Pudełko}}}}, ale tak tutaj tak zrobiono by było najłatwiej sprawdzić działanie tego typu funkcji. Analogicznie możemy podawać parametry typu jednostki, np.: wywołaniu modułowym {{Code|{{m|Pudełko|Nazwa przestrzeni nazw 2|typ jednostki 2{{=}}Podręcznik|nazwa jednostki 2{{=}}Szablon:Strona|numer jednostki{{=}}2}}}} (ale wtedy jest brana przestrzeń nazw z nazwy jednostki), ale o tym więcej w rozdziałach {{Code|{{sr|#p["Typ jednostki 2"](frame,i)|p=Pudełko}}}} w „{{sr|#Funkcje typu jednostki|p=Pudełko}}”, on definiuje przestrzenie przedmiotowe, ale można użyć parametru dyskusji typu jednostki z wartością niepustą, wtedy wyświetli się nazwa przestrzeni nazw dyskusji. Jeżeli typ jednostki wskazuje na przestrzeń nazw główną, wtedy się liczą parametry nazw jednostek. Również parametry typu jednostki nie powinno się podawać w dziecku w ramce, tylko w rodzicu w szablonie jako parametry, w którym ta ramka jest wywoływana, ale tutaj podano jedynie dla przykładu, jak najłatwiej sprawdzić działanie tych parametrów tej funkcji. Najpierw w funkcji nagłówku brane są parametry nazw przestrzeni nazw, a jeżeli ich nie ma, to parametry typu jednostki, a jeżeli nie ma lub parametry przestrzenne wskazują na przestrzeń główną, i nie ma nazwy jednostki, to generowane są nazwy tej funkcji na podstawie aktualnej strony. === {{Code|p["Nazwa przedmiotowej przestrzeni nazw 2"](frame,...)}} === Funkcja pisze przedmiotową nazwę przestrzeni nazw jakikolwiek nazwy przestrzeni nazw (tzn. nazwę przedmiotową nazwy przestrzenie nazw, czyli nie dyskusji, zamieniana jest na nią samą, czyli identyfikator przestrzeni się nie zmienia, a dyskusji, nie przedmiotową, przekształca się na przedmiotową jej odpowiadającą, czyli w tym przypadku identyfikator przestrzeni zmniejsza się o numer mniej), według, i nie zawsze tylko, podanej w zmiennej {{Code|nazwa przestrzeni nazw}} dla pozycja bazowej w podanych parametrach szablonu rodzicu ramki dziecka, lub dla innej pozycji należy parametr podawać w formie {{Code|nazwa przestrzeni nazw 1}}, {{Code|nazwa przestrzeni nazw 2}}, {{Code|nazwa przestrzeni nazw 3}},..., lub te parametry można podać w postaci ogólnej {{Code|nazwa przestrzeni nazw i}}. W tej funkcji trzeba też podawać parametry nazwy jednostek {{Code|nazwa jednostki}}, {{Code|nazwa jednostki 1}}, {{Code|nazwa jednostki 2}}, {{Code|nazwa jednostki 3}},... Parametry podaje się w parametrach rodzica wywołania tej funkcji {{Code|{{m|Pudełko|Nazwa przedmiotowej przestrzeni nazw 2}}}} (ale ich nie trzeba podawać w dziecku, ale można) i w parametrach dziecka, jeśli chodzi o zmienną {{Code|numer jednostki}}, czyli np.: {{Code|{{m|Pudełko|Nazwa przedmiotowej przestrzeni nazw 2|numer jednostki{{=}}<jakaś liczba całkowita dodatnia>}}}}. Te parametry przestrzenne zamiast w rodzicu w szablonie można podać w ramce dziecka, wtedy parametry dziecka mają pierwszeństwo. Przestrzeń nazw z parametrów nazw przestrzennych po przekształceniu na przedmiotową może odpowiadać wartości przestrzeni głównej, to wtedy odpowiednia przestrzeń nazw z parametru nazwy jednostki się liczy w tej funkcji, wtedy jest liczona nazwa przestrzeni nazw z tego parametru. Gdy parametry przestrzenne lub typ jednostki w drugim podejściu nie wskazują na przestrzeń główną, to wtedy działanie tej funkcji jest podobne do {{Code|{{sr|#p["Nazwa przedmiotowej przestrzeni nazw"](frame,...)|p=Pudełko}}}}. Definicja skrótowa funkcji: <syntaxhighlight lang="lua"> p["Nazwa przedmiotowej przestrzeni nazw 2"]=function(frame,czy_uwzglednic_alternatywna_nazwe,i)...end; </syntaxhighlight> Wtedy ciało funkcji tej, czyli jego definicja w środku, jest: <syntaxhighlight lang="lua"> local pudelko_pomocne_modul=require("Module:Pudełko/Pomocne"); return pudelko_pomocne_modul.Nazwa_przestrzeni_nazw_przedmiotowa_dyskusji_2(frame,czy_uwzglednic_alternatywna_nazwe,i,"przedmiotowa"); </syntaxhighlight> Parametry funkcji: * {{Code|frame}} - tablica ramki tablicy transportu, * {{Code|czy_uwzglednic_alternatywna_nazwe}} - czy ma uwzględniać nazwę przestrzeni nazw domyślną szablonu, dostępne wartości: {{Code|false}}, w której nazwa domyślna nie jest uwzględniana wtedy, oraz {{Code|nil}} i {{Code|true}}, które oznaczają to samo, w tym jeżeli ona jest uwzględniana, wtedy jest brany parametr pierwszy dziecka, który musi istnieć przy takiej wartości tego parametru, tzn. {{Code|{{m|Pudełko|Nazwa przedmiotowej przestrzeni nazw 2|Szablon}}}}, a nazwa uzyskana nazwy przestrzeni nazw jest w takim przypadku błędna, a jeżeli nazwa domyślna jest błędna, czyli {{Code|{{m|Pudełko|Nazwa przedmiotowej przestrzeni nazw 2|Moja przestrzeń}}}}, wtedy funkcja zwraca stan błędu {{Code|(błąd)}}. * {{Code|i}} - numer zmiennej nazwy przestrzeni nazw. Funkcja wykorzystuje {{Code|{{sr|#p.Nazwa_przestrzeni_nazw_przedmiotowa_dyskusji_2(frame,...)|p=Pudełko/Pomocne}}}} do wyznaczania ogólnego nazwy przestrzeni nazw dla pozycji bazowej i numerkowej, tzn. dla pozycji: jeden, dwa, trzy,..., itd, i ich ogólnej. Parametr ramki tablicy transportu rodzica szablonu: * {{Code|nazwa przestrzeni nazw}}, {{Code|nazwa przestrzeni nazw 1}}, {{Code|nazwa przestrzeni nazw 2}}, {{Code|nazwa przestrzeni nazw 3}},..., {{Code|nazwa przestrzeni nazw i}} - nazwy przestrzeni nazw dla pozycji bazowej oraz zwykłej i ogólnej numerkowej, * {{Code|nazwa jednostki}}, {{Code|nazwa jednostki 1}}, {{Code|nazwa jednostki 2}}, {{Code|nazwa jednostki 3}},... - nazwy jednostek dla pozycji bazowej i numerkowej, * {{Code|typ jednostki}}, {{Code|typ jednostki 1}}, {{Code|typ jednostki 2}}, {{Code|typ jednostki 3}},..., {{Code|typ jednostki i}} - typy jednostek, którym odpowiadają pewne przestrzenie przedmiotowe, dla pozycji bazowej, numerkowej i ogólnej. Parametry ramki tablicy transportu dziecka: * Parametry dziecka są takie same jak rodzica dla funkcji pudełkowej plus tu wymienione, * {{Code|numer jednostki}} - jak parametr {{Code|i}} nie został ustawiony, to wtedy liczy się ta zmienna. Przykłady: <syntaxhighlight lang="mediawiki"> {{Nazwa szablonu|nazwa przestrzeni nazw=Wikibooks|nazwa przestrzeni nazw 1=Szablon|nazwa przestrzeni nazw i=|nazwa jednostki 2=Dyskusja Wikibooks:Strona}} </syntaxhighlight> W dziecku powiedzmy jest wywołanie, i szukamy nazwy przestrzeni nazw o numerze dwa, która została podana, ale istnieje za to jej wersji ogólna {{Code|nazwa przestrzeni nazw i}} i domyślna {{Code|nazwa przestrzeni nazw}}, ale wtedy dla tego numerkowego liczy się to ogólne z {{Code| i}}, a ponieważ ta nazwa jest pusta, więc będziemy liczyli nazwę przestrzeni nazw z {{Code|nazwa jednostki 2}}: <syntaxhighlight lang="mediawiki"> {{#invoke:Pudełko|Nazwa przedmiotowej przestrzeni nazw 2|numer jednostki=2}} </syntaxhighlight> Na podstawie powyższego przykładu otrzymamy wynik o schemacie, nie wyniku, bo tam nie ma zmiennej {{Code|nazwa przestrzeni nazw 1}}, ale jest {{Code|nazwa przestrzeni nazw i}}: <syntaxhighlight lang="mediawiki"> <!-- Ale nie "nazwa przestrzeni nazw 2", bo jej nie ma, ale za to istnieje "nazwa przestrzeni nazw i"; --> <!-- nazwa przestrzeni nazw 2=nazwa przestrzeni nazw i="", a nazwa jednostki 2="Dyskusja Wikibooks:Strona"; --> <!-- Czyli wynik: --> Wikibooks <!-- Widzimy, że wygenerowała się nazwa przestrzeni nazw, którą jest przestrzeń nieprogramowa, ale projektu, wychodząca z nazwy jednostek w tym przypadku z "nazwa jednostki 2"; --> </syntaxhighlight> Nie jest brana w tym powyższym przykładzie zmienna {{Code|nazwa przestrzeni nazw}}, bo jej nie ma, ale za to jest {{Code|nazwa przestrzeni nazw i}}, bo ona występuje jako parametr domyślny ogólny dla parametrów numerkowych. Tytaj jest używana jest zmienna {{Code|nazwa jednostki 2}} do wygenerowania ostatecznego wyniku, bo jak można zauważyć, parametry przestrzenne wskazują na przestrzeń główną, a nazwy jednostek już nie. Przykłady w wikikodzie: * {{Code|{{m|Pudełko|Nazwa przedmiotowej przestrzeni nazw 2|numer jednostki{{=}}2}}}} → {{Tt|{{#invoke:Pudełko|Nazwa przedmiotowej przestrzeni nazw 2|numer jednostki=2}}}} * {{Code|{{m|Pudełko|Nazwa przedmiotowej przestrzeni nazw 2|Dyskusja szablonu|nazwa przestrzeni nazw i{{=}}Moja przestrzeń|numer jednostki{{=}}2}}}} → {{Tt|{{#invoke:Pudełko|Nazwa przedmiotowej przestrzeni nazw 2|Dyskusja szablonu|nazwa przestrzeni nazw i=Moja przestrzeń|numer jednostki=2}}}} * {{Code|{{m|Pudełko|Nazwa przedmiotowej przestrzeni nazw 2|nazwa przestrzeni nazw 2{{=}}Dyskusja|nazwa jednostki 2{{=}}Dyskusja szablonu:Strona|numer jednostki{{=}}2}}}} → {{Tt|{{#invoke:Pudełko|Nazwa przedmiotowej przestrzeni nazw 2|nazwa przestrzeni nazw 2=Dyskusja|nazwa jednostki 2=Dyskusja szablonu:Strona|numer jednostki=2}}}} * {{Code|{{m|Pudełko|Nazwa przedmiotowej przestrzeni nazw 2|nazwa przestrzeni nazw i{{=}}Dyskusja|nazwa jednostki 2{{=}}Dyskusja szablonu:Strona|numer jednostki{{=}}2}}}} → {{Tt|{{#invoke:Pudełko|Nazwa przedmiotowej przestrzeni nazw 2|nazwa przestrzeni nazw i=Dyskusja|nazwa jednostki 2=Dyskusja szablonu:Strona|numer jednostki=2}}}} * {{Code|{{m|Pudełko|Nazwa przedmiotowej przestrzeni nazw 2|Dyskusja szablonu|nazwa przestrzeni nazw{{=}}Dyskusja|nazwa jednostki 2{{=}}Wikibooks:Strona|numer jednostki{{=}}2}}}} → {{Tt|{{#invoke:Pudełko|Nazwa przedmiotowej przestrzeni nazw 2|Dyskusja szablonu|nazwa przestrzeni nazw=Dyskusja|nazwa jednostki 2=Dyskusja Wikibooks:Strona|numer jednostki=2}}}} Powyżej dla przykładu podano parametry nie w rodzicu w szablonie, tylko w dziecku, jeśli chodzi o parametry nazw przestrzeni nazw i nazw jednostek, ale ich się za to nie powinno podawać w tych ramach, tylko w szablonach, w których wywoływane są te ramki pudełek {{Code|{{m|Pudełko}}}}, ale tak tutaj tak zrobiono by było najłatwiej sprawdzić działanie tego typu funkcji. Analogicznie możemy podawać parametry typu jednostki, np.: wywołaniu modułowym {{Code|{{m|Pudełko|Nazwa przedmiotowej przestrzeni nazw 2|typ jednostki 2{{=}}Podręcznik|nazwa jednostki 2{{=}}Dyskusja szablonu:Strona|numer jednostki{{=}}2}}}} (ale wtedy jest brana przestrzeń nazw z nazwy jednostki), ale o tym więcej w rozdziałach {{Code|{{sr|# p["Przedmiotowy typ jednostki 2"](frame,i)|p=Pudełko}}}} w „{{sr|#Funkcje typu jednostki|p=Pudełko}}”, on definiuje przestrzenie przedmiotowe, ale można użyć parametru dyskusji typu jednostki z wartością niepustą, pustą, czy nawet jej nie podamy, wtedy wyświetli się nazwa przestrzeni nazw przedmiotowej. Jeżeli typ jednostki wskazuje na przestrzeń nazw główną, wtedy się liczą parametry nazw jednostek. Również parametry typu jednostki nie powinno się podawać w dziecku w ramce, tylko w rodzicu w szablonie jako parametry, w którym ta ramka jest wywoływana, ale tutaj podano jedynie dla przykładu, jak najłatwiej sprawdzić działanie tych parametrów tej funkcji. Najpierw w funkcji nagłówku brane są parametry nazw przestrzeni nazw, a jeżeli ich nie ma, to parametry typu jednostki, a jeżeli nie ma lub parametry przestrzenne wskazują na przestrzeń główną, i nie ma nazwy jednostki, to generowane są nazwy tej funkcji na podstawie aktualnej strony. === {{Code|p["Nazwa przestrzeni nazw dyskusji 2"](frame,...)}} === Funkcja pisze nazwę przestrzeni nazw dyskusji jakikolwiek nazwy przestrzeni nazw (tzn. nazwę dyskusji nazwy przestrzenie nazw, czyli nie przedmiotowej, zamieniana jest na nią samą, czyli identyfikator przestrzeni się nie zmienia, a przedmiotową, nie dyskusji, przekształca się na dyskusji jej odpowiadającą, czyli w tym przypadku identyfikator przestrzeni zwiększa się o numer więcej), według, i nie zawsze tylko, podanej w zmiennej {{Code|nazwa przestrzeni nazw}} dla pozycja bazowej w podanych parametrach szablonu rodzicu ramki dziecka, lub dla innej pozycji należy parametr podawać w formie {{Code|nazwa przestrzeni nazw 1}}, {{Code|nazwa przestrzeni nazw 2}}, {{Code|nazwa przestrzeni nazw 3}},..., lub te parametry można podać w postaci ogólnej {{Code|nazwa przestrzeni nazw i}}. W tej funkcji trzeba też podawać parametry nazwy jednostek {{Code|nazwa jednostki}}, {{Code|nazwa jednostki 1}}, {{Code|nazwa jednostki 2}}, {{Code|nazwa jednostki 3}},... Parametry podaje się w parametrach rodzica wywołania tej funkcji {{Code|{{m|Pudełko|Nazwa przestrzeni nazw dyskusji 2}}}} (ale ich nie trzeba podawać w dziecku, ale można) i w parametrach dziecka, jeśli chodzi o zmienną {{Code|numer jednostki}}, czyli np.: {{Code|{{m|Pudełko|Nazwa przestrzeni nazw dyskusji 2|numer jednostki{{=}}<jakaś liczba całkowita dodatnia>}}}}. Te parametry przestrzenne zamiast w rodzicu w szablonie można podać w ramce dziecka, wtedy parametry dziecka mają pierwszeństwo. Przestrzeń nazw z parametrów nazw przestrzennych po przekształceniu na przedmiotową może odpowiadać wartości przestrzeni głównej, to wtedy odpowiednia przestrzeń nazw z parametru nazwy jednostki się liczy w tej funkcji, wtedy jest liczona nazwa przestrzeni nazw z tego parametru. Gdy parametry przestrzenne lub typ jednostki w drugim podejściu nie wskazują na przestrzeń główną, to wtedy działanie tej funkcji jest podobne do {{Code|{{sr|#p["Nazwa dyskusji przestrzeni nazw"](frame,...)|p=Pudełko}}}}. Definicja skrótowa funkcji: <syntaxhighlight lang="lua"> p["Nazwa przestrzeni nazw dyskusji 2"]=function(frame,czy_uwzglednic_alternatywna_nazwe,i)...end; </syntaxhighlight> Wtedy ciało funkcji tej, czyli jego definicja w środku, jest: <syntaxhighlight lang="lua"> local pudelko_pomocne_modul=require("Module:Pudełko/Pomocne"); return pudelko_pomocne_modul.Nazwa_przestrzeni_nazw_przedmiotowa_dyskusji_2(frame,czy_uwzglednic_alternatywna_nazwe,i,"dyskusja"); </syntaxhighlight> Parametry funkcji: * {{Code|frame}} - tablica ramki tablicy transportu, * {{Code|czy_uwzglednic_alternatywna_nazwe}} - czy ma uwzględniać nazwę przestrzeni nazw domyślną szablonu, dostępne wartości: {{Code|false}}, w której nazwa domyślna nie jest uwzględniana wtedy, oraz {{Code|nil}} i {{Code|true}}, które oznaczają to samo, w tym jeżeli ona jest uwzględniana, wtedy jest brany parametr pierwszy dziecka, który musi istnieć przy takiej wartości tego parametru, tzn. {{Code|{{m|Pudełko|Nazwa przestrzeni nazw dyskusji 2|Szablon}}}}, a nazwa uzyskana nazwy przestrzeni nazw jest w takim przypadku błędna, a jeżeli nazwa domyślna jest błędna, czyli {{Code|{{m|Pudełko|Nazwa przestrzeni nazw dyskusji 2|Moja przestrzeń}}}}, wtedy funkcja zwraca stan błędu {{Code|(błąd)}}. * {{Code|i}} - numer zmiennej nazwy przestrzeni nazw. Funkcja wykorzystuje {{Code|{{sr|#p.Nazwa_przestrzeni_nazw_przedmiotowa_dyskusji_2(frame,...)|p=Pudełko/Pomocne}}}} do wyznaczania ogólnego nazwy przestrzeni nazw dla pozycji bazowej i numerkowej, tzn. dla pozycji: jeden, dwa, trzy,..., itd, i ich ogólnej. Parametr ramki tablicy transportu rodzica szablonu: * {{Code|nazwa przestrzeni nazw}}, {{Code|nazwa przestrzeni nazw 1}}, {{Code|nazwa przestrzeni nazw 2}}, {{Code|nazwa przestrzeni nazw 3}},..., {{Code|nazwa przestrzeni nazw i}} - nazwy przestrzeni nazw dla pozycji bazowej oraz zwykłej i ogólnej numerkowej, * {{Code|nazwa jednostki}}, {{Code|nazwa jednostki 1}}, {{Code|nazwa jednostki 2}}, {{Code|nazwa jednostki 3}},... - nazwy jednostek dla pozycji bazowej i numerkowej, * {{Code|typ jednostki}}, {{Code|typ jednostki 1}}, {{Code|typ jednostki 2}}, {{Code|typ jednostki 3}},..., {{Code|typ jednostki i}} - typy jednostek, którym odpowiadają pewne przestrzenie przedmiotowe, dla pozycji bazowej, numerkowej i ogólnej. Parametry ramki tablicy transportu dziecka: * Parametry dziecka są takie same jak rodzica dla funkcji pudełkowej plus tu wymienione, * {{Code|numer jednostki}} - jak parametr {{Code|i}} nie został ustawiony, to wtedy liczy się ta zmienna. Przykłady: <syntaxhighlight lang="mediawiki"> {{Nazwa szablonu|nazwa przestrzeni nazw=Wikibooks|nazwa przestrzeni nazw 1=Szablon|nazwa przestrzeni nazw i=|nazwa jednostki 2=Wikibooks:Strona}} </syntaxhighlight> W dziecku powiedzmy jest wywołanie, i szukamy nazwy przestrzeni nazw o numerze dwa, która została podana, ale istnieje za to jej wersji ogólna {{Code|nazwa przestrzeni nazw i}} i domyślna {{Code|nazwa przestrzeni nazw}}, ale wtedy dla tego numerkowego liczy się to ogólne z {{Code| i}}, a ponieważ ta nazwa jest pusta, więc będziemy liczyli nazwę przestrzeni nazw z {{Code|nazwa jednostki 2}}: <syntaxhighlight lang="mediawiki"> {{#invoke:Pudełko|Nazwa przestrzeni nazw dyskusji 2|numer jednostki=2}} </syntaxhighlight> Na podstawie powyższego przykładu otrzymamy wynik o schemacie, nie wyniku, bo tam nie ma zmiennej {{Code|nazwa przestrzeni nazw 1}}, ale jest {{Code|nazwa przestrzeni nazw i}}: <syntaxhighlight lang="mediawiki"> <!-- Ale nie "nazwa przestrzeni nazw 2", bo jej nie ma, ale za to istnieje "nazwa przestrzeni nazw i"; --> <!-- nazwa przestrzeni nazw 2=nazwa przestrzeni nazw i="", a nazwa jednostki 2="Wikibooks:Strona"; --> <!-- Czyli wynik: --> Dyskusja Wikibooks <!-- Widzimy, że wygenerowała się nazwa przestrzeni nazw, którą jest przestrzeń nieprogramowa, ale dyskusji projektu, wychodząca z nazwy jednostek w tym przypadku z "nazwa jednostki 2"; --> </syntaxhighlight> Nie jest brana w tym powyższym przykładzie zmienna {{Code|nazwa przestrzeni nazw}}, bo jej nie ma, ale za to jest {{Code|nazwa przestrzeni nazw i}}, bo ona występuje jako parametr domyślny ogólny dla parametrów numerkowych. Tytaj jest używana jest zmienna {{Code|nazwa jednostki 2}} do wygenerowania ostatecznego wyniku, bo jak można zauważyć, parametry przestrzenne wskazują na przestrzeń główną, a nazwy jednostek już nie. Przykłady w wikikodzie: * {{Code|{{m|Pudełko|Nazwa przestrzeni nazw dyskusji 2|numer jednostki{{=}}2}}}} → {{Tt|{{#invoke:Pudełko|Nazwa przestrzeni nazw dyskusji 2|numer jednostki=2}}}} * {{Code|{{m|Pudełko|Nazwa przestrzeni nazw dyskusji 2|Szablon|nazwa przestrzeni nazw i{{=}}Moja przestrzeń|numer jednostki{{=}}2}}}} → {{Tt|{{#invoke:Pudełko|Nazwa przestrzeni nazw dyskusji 2|Szablon|nazwa przestrzeni nazw i=Moja przestrzeń|numer jednostki=2}}}} * {{Code|{{m|Pudełko|Nazwa przestrzeni nazw dyskusji 2|nazwa przestrzeni nazw 2{{=}}|nazwa jednostki 2{{=}}Szablon:Strona|numer jednostki{{=}}2}}}} → {{Tt|{{#invoke:Pudełko|Nazwa przestrzeni nazw dyskusji 2|nazwa przestrzeni nazw 2=|nazwa jednostki 2=Szablon:Strona|numer jednostki=2}}}} * {{Code|{{m|Pudełko|Nazwa przestrzeni nazw dyskusji 2|nazwa przestrzeni nazw i{{=}}|nazwa jednostki 2{{=}}Szablon:Strona|numer jednostki{{=}}2}}}} → {{Tt|{{#invoke:Pudełko|Nazwa przestrzeni nazw dyskusji 2|nazwa przestrzeni nazw i=|nazwa jednostki 2=Szablon:Strona|numer jednostki=2}}}} * {{Code|{{m|Pudełko|Nazwa przestrzeni nazw dyskusji 2|Szablon|nazwa przestrzeni nazw{{=}}|nazwa jednostki 2{{=}}Wikibooks:Strona|numer jednostki{{=}}2}}}} → {{Tt|{{#invoke:Pudełko|Nazwa przestrzeni nazw dyskusji 2|Szablon|nazwa przestrzeni nazw=|nazwa jednostki 2=Dyskusja Wikibooks:Strona|numer jednostki=2}}}} Powyżej dla przykładu podano parametry nie w rodzicu w szablonie, tylko w dziecku, jeśli chodzi o parametry nazw przestrzeni nazw i nazw jednostek, ale ich się za to nie powinno podawać w tych ramach, tylko w szablonach, w których wywoływane są te ramki pudełek {{Code|{{m|Pudełko}}}}, ale tak tutaj tak zrobiono by było najłatwiej sprawdzić działanie tego typu funkcji. Analogicznie możemy podawać parametry typu jednostki, np.: wywołaniu modułowym {{Code|{{m|Pudełko|Nazwa przestrzeni nazw dyskusji 2|typ jednostki 2{{=}}Podręcznik|nazwa jednostki 2{{=}}Szablon:Strona|numer jednostki{{=}}2}}}} (ale wtedy jest brana przestrzeń nazw z nazwy jednostki), ale o tym więcej w rozdziałach {{Code|{{sr|# p["Dyskusyjny typ jednostki 2"](frame,i)|p=Pudełko}}}} w „{{sr|#Funkcje typu jednostki|p=Pudełko}}”, on definiuje przestrzenie dyskusji, ale można użyć parametru dyskusji typu jednostki z obojętnie jaką wartością niepustą, czy pustą, czy nawet jej nie podamy, wtedy wyświetli się nazwa przestrzeni nazw dyskusji. Jeżeli typ jednostki wskazuje na przestrzeń nazw główną, wtedy się liczą parametry nazw jednostek. Również parametry typu jednostki nie powinno się podawać w dziecku w ramce, tylko w rodzicu w szablonie jako parametry, w którym ta ramka jest wywoływana, ale tutaj podano jedynie dla przykładu, jak najłatwiej sprawdzić działanie tych parametrów tej funkcji. Najpierw w funkcji nagłówku brane są parametry nazw przestrzeni nazw, a jeżeli ich nie ma, to parametry typu jednostki, a jeżeli nie ma lub parametry przestrzenne wskazują na przestrzeń główną, i nie ma nazwy jednostki, to generowane są nazwy tej funkcji na podstawie aktualnej strony. == Funkcje pełnych nazw jednostki == === {{Code|p["Pełna nazwa dyskusji jednostki"](frame,i)}} === === {{Code|p["Pełna nazwa przedmiotowa jednostki"](frame,i)}} === === {{Code|p["Pełna nazwa jednostki"](frame,i)}} === == Funkcje pełnych nazw jednostki drugiej wersji == === {{Code|p["Pełna nazwa dyskusji jednostki 2"](frame,i)}} === === {{Code|p["Pełna nazwa przedmiotowa jednostki 2"](frame,i)}} === === {{Code|p["Pełna nazwa jednostki 2"](frame,i)}} === == Funkcje pełnych nazw jednostki trzeciej wersji == === {{Code|p["Pełna nazwa dyskusji jednostki 3"](frame,i)}} === === {{Code|p["Pełna nazwa przedmiotowa jednostki 3"](frame,i)}} === === {{Code|p["Pełna nazwa jednostki 3"](frame,i)}} === == Funkcje nazw jednostki == === {{Code|p["Nazwa jednostki"](frame,i)}} === == Funkcje nazw jednostki drugiej wersji == === {{Code|p["Nazwa jednostki 2"](frame,i)}} === === {{Code|p["Nazwa przedmiotowa jednostki 2"](frame,i)}} === === {{Code|p["Nazwa dyskusji jednostki 2"](frame,i)}} === == Funkcje nazw przestrzeni nazw trzeciej wersji == === {{Code|p["Nazwa przestrzeni nazw 3"](frame,i)}} === === {{Code|p["Nazwa przedmiotowej przestrzeni nazw 3"](frame,i)}} === === {{Code|p["Nazwa przestrzeni nazw dyskusji 3"](frame,i)}} === == Funkcje nazw jednostki trzeciej wersji == === {{Code|p["Nazwa jednostki 3"](frame,i)}} === === {{Code|p["Nazwa przedmiotowa jednostki 3"](frame,i)}} === === {{Code|p["Nazwa dyskusji jednostki 3"](frame,i)}} === == Funkcje typu jednostki == === {{Code|p["Typ jednostki"](frame,i)}} === === {{Code|p["Typ jednostki 2"](frame,i)}} === === {{Code|p["Typ jednostki 3"](frame,i)}} === === Funkcje typu jednostki przedmiotowe === ==== {{Code|p["Przedmiotowy typ jednostki"](frame,i)}} ==== ==== {{Code|p["Przedmiotowy typ jednostki 2"](frame,i)}} ==== ==== {{Code|p["Przedmiotowy typ jednostki 3"](frame,i)}} ==== === Fukcje typu jednostki dyskusji === ==== {{Code|p["Dyskusyjny typ jednostki"](frame,i)}} ==== ==== {{Code|p["Dyskusyjny typ jednostki 2"](frame,i)}} ==== ==== {{Code|p["Dyskusyjny typ jednostki 3"](frame,i)}} ==== == Funkcje chech pudełka == === {{Code|p["Cecha pudełka"](frame)}} === === {{Code|p["Przedmiotowa cecha pudełka"](frame)}} === === {{Code|p["Dyskusyjna cecha pudełka"](frame)}} === == Fukcje ogólnego pudełka == === {{Code|p["Ogólne pudełko"](frame)}} === == Funkcje ogólne == === {{Code|p["Tekst pudełka"](frame)}} === == Funkcje błędów pudełka == === {{Code|p["Błędy pudełka"](frame)}} === === {{Code|p["Przedmiotowe błędy pudełka"](frame)}} === === {{Code|p["Dyskusyjne błędy pudełka"](frame)}} === == Funkcje nazw stron == === {{Code|p["Nazwa strony głównej projektu"](frame,i)}} === === {{Code|p["Nazwa strony głównej dla dzieci projektu"](frame,i)}} === == Funkcje kodów == === {{Code|p["Kod języka"](frame,i)}} === === {{Code|p["Kod projektu"](frame,i)}} === === {{Code|p["Klucz projektu"](frame,i)}} === == Funkcje wiki == === {{Code|p["Inny niż język bieżący wiki"](frame)}} === === {{Code|p["Inne niż lokalne wiki"](frame)}} === === {{Code|p["Inne niż bieżące wiki"](frame)}} === == Funkcje typów parametrów, czy podane je == === {{Code|p["Podano parametry nienazwane"](frame)}} === === {{Code|p["Podano parametry numerowane"](frame)}} === === {{Code|p["Podano parametry nazwane"](frame)}} === == Funkcje kodów tego projektu == === {{Code|p["Kod projektu tego projektu"](frame)}} === === {{Code|p["Kod języka tego projektu"](frame)}} === === {{Code|p["Klucz projektu tego projektu"](frame)}} === == Funkcje stron == === {{Code|p["Strona główna tego projektu"](frame)}} === === {{Code|p["Strona główna dla dzieci tego projektu"](frame)}} === == Funkcje nazw stron drugiej wersji == === {{Code|p["Nazwa strony głównej dla dzieci projektu 2"](frame)}} === === {{Code| p["Nazwa strony głównej projektu 2"](frame)}} === {{BrClear}} <noinclude><!-- -->{{ProstaStronaKoniec}}<!-- -->{{Kategoria|Opisy funkcji, w Lua w Scribunto, w modułach}}<!-- --></noinclude> k39sr3nx85fe0lacy68ogun4xlv23k1 540408 540407 2026-04-23T18:50:56Z Persino 2851 /* {{Code|p["Nazwa przestrzeni nazw 3"](frame,i)}} */ 540408 wikitext text/x-wiki <noinclude>{{ProstaStronaStart | nagłówek = {{Podrozdział|{{ld2|Pudełko}}|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 pudelko_modul=require("Module:Pudełko"); </syntaxhighlight> dzięki, któremu można wypisywać funkcje należącego do niego. Posługuje się na parametrach pudełkowych {{Parametr|nazwa przestrzeni nazw}} (czy też bez numerka {{Parametr|nazwa przestrzeni nazw i}} dla tego numerowanego) lub te z numerkiem po jednej spacji w nich (ale nie dla tego z końcówką {{Code| i}}) mogą zostać użyte jako parametry szablonu. Moduł {{Code|{{ld2|Pudełko}}}} przedstawia funkcje nazw w oparciu o funkcje nazw {{Code|{{ld2|Nazwy}}}}, generuje on nazwy za pomocą parametrów pudełkowych podanych poniżej. Parametr {{Parametr|nazwa jednostki}} (lub parametr {{Parametr|cel}} dla numerka tego pierwszego, tego alternatywnego), lub te z numerkiem po jednej spacji w nazwie parametru, albo numerowane numerkami {{Code|1}}, {{Code|2}},..., mogą zostać użyte jako parametry szablonu. Parametry określające rodzaj jednostki {{Parametr|typ jednostki}} z {{Parametr|dyskusja typu jednostki}}, itp. w wersjach z numerkiem po jednej spacji w nich mogą zostać użyte jako parametry szablonu. A te tymi numerowanymi liczbami naturalnymi {{Tt|nazwy jednostki}} od jedynki wzwyż poprzez szablon, w którym są one użyte, one też mogą być użyte z dwukropkiem, te numerowane, na samym początku nazwy, wtedy one są traktowane jako pełne nazwy strony, i wtedy one nie zostaną z interpretowane, że do nich trzeba użyć parametr odpowiedni z nazwą przetrzeni nazw z tego numerowanego, czy ogólny, aby utworzyć znów inną pełną nazwę strony dla tego numerka. Zestawienie: * {{Code|nazwa przestrzeni nazw}} i {{Code|nazwa przestrzeni nazw i}} (ogólna nazwa przestrzeni nazw dla wszystkich numerków, i tych numerowanych jednostek) - i to pierwsze z numerkiem, tzn. {{Code|nazwa przestrzeni nazw 1}}, {{Code|nazwa przestrzeni nazw 2}}, ..., * {{Code|nazwa jednostki}} - i te z numerkiem: {{Code|nazwa jednostki 1}}, {{Code|nazwa jednostki 2}}, ..., lub gdy jest zamiast tego parametrem numerowany, {{Code|1}}, {{Code|2}},..., który dla tego pierwszego może być uznany jako: {{Code|cel}} {{=}} {{Code|1}}, * {{Code|typ jednostki}} (parametr bazowy) i {{Code|typ jednostki i}} (parametr domyślny numerkowy) - i te z numerkiem: {{Code|typ jednostki 1}}, {{Code|typ jednostki 2}}, ..., tzn. gdy chcemy określić z jakim typem jednostki mamy do czynienia w zależności do jakiej przestrzeni nazw należy, a w danej, czy jest on np. programowy, czy tylko jest opisem, jak to bywa w szablonach {{Np|Template|link=tak}}, podobnie jest w przypadku {{Np|Module|link=tak}}, czy jak jest w innych przestrzeniach nazw, ** {{Code|dyskusja typu jednostki}} (parametr bazowy) i {{Code|dyskusja typu jednostki i}} (parametr domyślny numerkowy) - i te z numerkiem: {{Code|dyskusja typu jednostki 1}}, {{Code|dyskusja typu jednostki 2}}, ..., gdy chcemy określić wartością niepustą,że chodzi tutaj o typ jednostki. == {{Code|p.CzyNiepoprawnaNazwa(nazwa_jednostki)}} == Funkcja sprawdzajaca, czy jest poprawnie podana nazwa jednostki, czy ma poprawną nazwę. Znakami tymi, z których nie powinna składać się nazwa jest {{Code|<nowiki>{}<>|[]#\n</nowiki>}} i dodatkowo znak {{Code|&#127;}} (kod {{Code|{{Nowiki|&#127;}}}}). Też nie może składać się z trzech znaków tyldy, tzn. {{Code|<nowiki>~~~</nowiki>}}. Również w swojej budowie nie może składać się ze kodów {{Strong|HTML}} literowych o wzorze {{Code|{{Nowiki|&(%a+);}}}}. Natomiast może składać się z {{Code|{{Nowiki|&#(%d+);}}}} i {{Code|{{Nowiki|&#x(%x+);}}}}, ale w pierw te kody muszą być zamienione na normalne znaki. Skrótowa definicja funkcji: <syntaxhighlight lang="lua"> function p.CzyNiepoprawnaNazwa(nazwa_jednostki)...end; </syntaxhighlight> Wtedy ciało funkcji tej, czyli jego definicja w środku, jest: <syntaxhighlight lang="lua"> -- Moduł: "Moduł:Html/dane", służy do ładowania znaku o kodzie HTML "&#127;"; local html_dane_modul=mw.loadData("Module:Html/dane"); return mw.ustring.match(nazwa_jednostki,"[{}<>|%[%]#\n"..html_dane_modul.znak_127.."]+") or mw.ustring.match(nazwa_jednostki,"~~~") or mw.ustring.match(nazwa_jednostki,"&(%a+);"); </syntaxhighlight> Parametry: * {{Code|nazwa_jednostki}} - nazwa jednostki do sprawdzenia. Przykłady: <syntaxhighlight lang="lua"> local pudelko_modul=require("Module:Pudełko"); -- Podana przykładowa niepoprawna nazwa jedostki local nazwa_jednostki="Nazwa pliku [[Nazwa linku w pliku]]"; -- Fukcja zwróci wartość: local czy_poprawna_nazwa=true; local czy_poprawna_nazwa=pudelko_modul.CzyNiepoprawnaNazwa(nazwa_jednostki); </syntaxhighlight> == Funkcje nazw przestrzeni nazw == === {{Code|p["Nazwa przestrzeni nazw"](frame,...)}} === Funkcja pisze nazwę przestrzeni nazw, niezależnie, czy to jest przedmiotowa, czy dyskusji, według podanej w zmiennej {{Code|nazwa przestrzeni nazw}} dla pozycja bazowej w podanych parametrach szablonu rodzicu ramki dziecka, lub dla innej pozycji należy parametr podawać w formie {{Code|nazwa przestrzeni nazw 1}}, {{Code|nazwa przestrzeni nazw 2}}, {{Code|nazwa przestrzeni nazw 3}},..., lub te parametry można podać w postaci ogólnej {{Code|nazwa przestrzeni nazw i}}. Parametry podaje się w parametrach rodzica wywołania tej funkcji {{Code|{{m|Pudełko|Nazwa przestrzeni nazw}}}} (ale ich nie trzeba podawać w dziecku, ale można) i w parametrach dziecka, jeśli chodzi o zmienną {{Code|numer jednostki}}, czyli np.: {{Code|{{m|Pudełko|Nazwa przestrzeni nazw|numer jednostki{{=}}<jakaś liczba całkowita dodatnia>}}}}. Te parametry przestrzenne zamiast w rodzicu w szablonie można podać w ramce dziecka, wtedy parametry dziecka mają pierwszeństwo. Przestrzeń nazw z parametrów nazw przestrzennych może odpowiadać wartości przestrzeni głównej, to wtedy odpowiednia przestrzeń nazw z parametru nazwy jednostki się nie liczy w tej funkcji, aby się liczyła należy użyć funkcji {{Code|{{sr|#p["Nazwa przestrzeni nazw 2"](frame,...)|p=Pudełko}}}}. Definicja skrótowa funkcji: <syntaxhighlight lang="lua"> p["Nazwa przestrzeni nazw"]=function(frame,czy_uwzglednic_alternatywna_nazwe,i)...end; </syntaxhighlight> Wtedy ciało funkcji tej, czyli jego definicja w środku, jest: <syntaxhighlight lang="lua"> -- Jest liczony numer parametru nazwy przestrzeni nazw, domyslnie chodzi tu o numer bazowy parametrów przestrzennych; local numer_jednostki=i or frame.args["numer jednostki"]; local liczba_numer_jednostki=((numer_jednostki)and(tonumber(numer_jednostki))or 0); local pudelko_pomocne_modul=require("Module:Pudełko/Pomocne"); -- Liczy nazwę przestrzeni nazw na podstawie podanych parametrów; return pudelko_pomocne_modul.Nazwa_przestrzeni_nazw(frame,0, czy_uwzglednic_alternatywna_nazwe,liczba_numer_jednostki); </syntaxhighlight> Parametry funkcji: * {{Code|frame}} - tablica ramki tablicy transportu, * {{Code|czy_uwzglednic_alternatywna_nazwe}} - czy ma uwzględniać nazwę przestrzeni nazw domyślną szablonu, dostępne wartości: {{Code|false}}, w której nazwa domyślna nie jest uwzględniana wtedy, oraz {{Code|nil}} i {{Code|true}}, które oznaczają to samo, w tym jeżeli ona jest uwzględniana, wtedy jest brany parametr pierwszy dziecka, który musi istnieć przy takiej wartości tego parametru, tzn. {{Code|{{m|Pudełko|Nazwa przestrzeni nazw|Szablon}}}}, a nazwa uzyskana nazwy przestrzeni nazw jest w takim przypadku błędna, a jeżeli nazwa domyślna jest błędna, czyli {{Code|{{m|Pudełko|Nazwa przestrzeni nazw|Moja przestrzeń}}}}, wtedy funkcja zwraca stan błędu {{Code|(błąd)}}. * {{Code|i}} - numer zmiennej nazwy przestrzeni nazw. Funkcja wykorzystuje {{Code|{{sr|#p.Nazwa_przestrzeni_nazw(frame,...)|p=Pudełko/Pomocne}}}} do wyznaczania ogólnego nazwy przestrzeni nazw dla pozycji bazowej i numerkowej, tzn. dla pozycji: jeden, dwa, trzy,..., itd, i ich ogólnej. Parametr ramki tablicy transportu rodzica szablonu: * {{Code|nazwa przestrzeni nazw}}, {{Code|nazwa przestrzeni nazw 1}}, {{Code|nazwa przestrzeni nazw 2}}, {{Code|nazwa przestrzeni nazw 3}},..., {{Code|nazwa przestrzeni nazw i}} - nazwy przestrzeni nazw dla pozycji bazowej oraz zwykłej i ogólnej numerkowej, * {{Code|typ jednostki}}, {{Code|typ jednostki 1}}, {{Code|typ jednostki 2}}, {{Code|typ jednostki 3}},..., {{Code|typ jednostki i}} - typy jednostek, którym odpowiadają pewne przestrzenie przedmiotowe, dla pozycji bazowej, numerkowej i ogólnej, ** {{Code|dyskusja typu jednostki}}, {{Code|dyskusja typu jednostki 1}}, {{Code|dyskusja typ jednostki 2}}, {{Code|dyskusja typ jednostki 3}},..., {{Code|dyskusja typ jednostki i}} - czy dany typ jednostki ma przedstawiać, jeśli niepusta, przestrzeń dyskusji dla pozycji bazowej, numerkowej i ogólnej. Parametry ramki tablicy transportu dziecka: * Parametry dziecka są takie same jak rodzica dla funkcji pudełkowej plus tu wymienione, * {{Code|numer jednostki}} - jak parametr {{Code|i}} nie został ustawiony, to wtedy liczy się ta zmienna. Przykłady: <syntaxhighlight lang="mediawiki"> {{Nazwa szablonu|nazwa przestrzeni nazw=Wikibooks|nazwa przestrzeni nazw 2=Szablon|nazwa przestrzeni nazw i=Moduł}} </syntaxhighlight> W dziecku powiedzmy jest wywołanie, i szukamy nazwy przestrzeni nazw o numerze dwa, która nie została podana, ale istnieje za to jej wersji ogólna {{Code|nazwa przestrzeni nazw i}} i domyślna {{Code|nazwa przestrzeni nazw}}: <syntaxhighlight lang="mediawiki"> {{#invoke:Pudełko|Nazwa przestrzeni nazw|numer jednostki=1}} </syntaxhighlight> Na podstawie powyższego przykładu otrzymamy wynik o schemacie, nie wyniku, bo tam nie ma zmiennej {{Code|nazwa przestrzeni nazw 1}}, ale jest {{Code|nazwa przestrzeni nazw i}}: <syntaxhighlight lang="mediawiki"> <!-- Ale nie "nazwa przestrzeni nazw", bo jej nie ma, ale za to istnieje "nazwa przestrzeni nazw i"; --> <!-- nazwa przestrzeni nazw 2=nazwa przestrzeni nazw i=Moduł; --> <!-- Czyli wynik: --> Moduł <!-- Widzimy, że wygenerowała się nazwa przestrzeni nazw, którą jest przestrzeń programowa, którą również jest "Szablon"; --> </syntaxhighlight> Nie jest brana w tym powyższym przykładzie zmienna {{Code|nazwa przestrzeni nazw}}, bo jej nie ma, ale za to jest {{Code|nazwa przestrzeni nazw i}}, bo ona występuje jako parametr domyślny ogólny dla parametrów numerkowych. Przykłady w wikikodzie: * {{Code|{{m|Pudełko|Nazwa przestrzeni nazw|numer jednostki{{=}}2}}}} → {{Tt|{{#invoke:Pudełko|Nazwa przestrzeni nazw|numer jednostki=2}}}} * {{Code|{{m|Pudełko|Nazwa przestrzeni nazw|Szablon|nazwa przestrzeni nazw i{{=}}Moja przestrzeń|numer jednostki{{=}}2}}}} → {{Tt|{{#invoke:Pudełko|Nazwa przestrzeni nazw|Szablon|nazwa przestrzeni nazw i=Moja przestrzeń|numer jednostki=2}}}} * {{Code|{{m|Pudełko|Nazwa przestrzeni nazw|nazwa przestrzeni nazw 2{{=}}Szablon|numer jednostki{{=}}2}}}} → {{Tt|{{#invoke:Pudełko|Nazwa przestrzeni nazw|nazwa przestrzeni nazw 2=Szablon|numer jednostki=2}}}} * {{Code|{{m|Pudełko|Nazwa przestrzeni nazw|nazwa przestrzeni nazw 2{{=}}Szablon|numer jednostki{{=}}2}}}} → {{Tt|{{#invoke:Pudełko|Nazwa przestrzeni nazw|nazwa przestrzeni nazw i=Szablon|numer jednostki=2}}}} * {{Code|{{m|Pudełko|Nazwa przestrzeni nazw|nazwa przestrzeni nazw{{=}}Szablon|numer jednostki{{=}}2}}}} → {{Tt|{{#invoke:Pudełko|Nazwa przestrzeni nazw|nazwa przestrzeni nazw=Szablon|numer jednostki=2}}}} Powyżej dla przykładu podano parametry nie w rodzicu w szablonie, tylko w dziecku, jeśli chodzi o parametry nazw przestrzeni nazw, ale ich się za to nie powinno podawać w tych ramach, tylko w szablonach, w których wywoływane są te ramki pudełek {{Code|{{m|Pudełko}}}}, ale tak tutaj tak zrobiono by było najłatwiej sprawdzić działanie tego typu funkcji. Analogicznie możemy podawać parametry typu jednostki, np.: wywołaniu modułowym {{Code|{{m|Pudełko|Nazwa przestrzeni nazw|typ jednostki 2{{=}}strona szablonu|numer jednostki{{=}}2}}}}, ale o tym więcej w rozdziałach {{Code|{{sr|# p["Typ jednostki"](frame,i)|p=Pudełko}}}} w „{{sr|#Funkcje typu jednostki|p=Pudełko}}”, on definiuje przestrzenie przedmiotowe, ale można użyć parametru dyskusji typu jednostki z wartością niepustą, wtedy wyświetli się nazwa przestrzeni nazw dyskusji. Również parametry typu jednostki nie powinno się podawać w dziecku w ramce, tylko w rodzicu w szablonie jako parametry, w którym ta ramka jest wywoływana, ale tutaj podano jedynie dla przykładu, jak najłatwiej sprawdzić działanie tych parametrów tej funkcji. Najpierw w funkcji nagłówku brane są parametry nazw przestrzeni nazw, a jeżeli ich nie ma, to parametry typu jednostki, a jeżeli nie ma, to generowane są nazwy na podstawie aktualnego modułu. === {{Code|p["Nazwa przedmiotowej przestrzeni nazw"](frame,...)}} === Funkcja pisze przedmiotową nazwę przestrzeni nazw jakikolwiek nazwy przestrzeni nazw (tzn. nazwę przedmiotową nazwy przestrzenie nazw, czyli nie dyskusji, zamieniana jest na nią samą, czyli identyfikator przestrzeni się nie zmienia, a dyskusji, nie przedmiotową, przekształca się na przedmiotową jej odpowiadającą, czyli w tym przypadku identyfikator przestrzeni zmniejsza się o numer mniej), według podanej w zmiennej {{Code|nazwa przestrzeni nazw}} dla pozycja bazowej w podanych parametrach szablonu rodzicu ramki dziecka, lub dla innej pozycji należy parametr podawać w formie {{Code|nazwa przestrzeni nazw 1}}, {{Code|nazwa przestrzeni nazw 2}}, {{Code|nazwa przestrzeni nazw 3}},..., lub te parametry można podać w postaci ogólnej {{Code|nazwa przestrzeni nazw i}}. Parametry podaje się w parametrach rodzica wywołania tej funkcji {{Code|{{m|Pudełko|Nazwa przedmiotowej przestrzeni nazw}}}} (ale ich nie trzeba podawać w dziecku, ale można) i w parametrach dziecka, jeśli chodzi o zmienną {{Code|numer jednostki}}, czyli np.: {{Code|{{m|Pudełko|Nazwa przedmiotowej przestrzeni nazw|numer jednostki{{=}}<jakaś liczba całkowita dodatnia>}}}}. Te parametry przestrzenne zamiast w rodzicu w szablonie można podać w ramce dziecka, wtedy parametry dziecka mają pierwszeństwo. Parametry przestrzenne mogą mogą być podane w postaci przestrzeni przedmiotowej lub dyskusji, ale ta funkcja zawsze ją zamienia na przedmiotową. Przestrzeń nazw z parametrów nazw przestrzennych może odpowiadać wartości przestrzeni głównej, to wtedy odpowiednia przestrzeń nazw z parametru nazwy jednostki się nie liczy w tej funkcji, aby się liczyła należy użyć funkcji {{Code|{{sr|#p["Nazwa przedmiotowej przestrzeni nazw 2"](frame,...)|p=Pudełko}}}}. Definicja skrótowa funkcji: <syntaxhighlight lang="lua"> p["Nazwa przedmiotowej przestrzeni nazw"]=function(frame,czy_uwzglednic_alternatywna_nazwe,i)...end; </syntaxhighlight> Wtedy ciało funkcji tej, czyli jego definicja w środku, jest: <syntaxhighlight lang="lua"> -- Jest liczony numer parametru nazwy przestrzeni nazw, domyslnie chodzi tu o numer bazowy parametrów przestrzennych; local numer_jednostki=i or frame.args["numer jednostki"]; local liczba_numer_jednostki=((numer_jednostki)and(tonumber(numer_jednostki))or 0); local pudelko_pomocne_modul=require("Module:Pudełko/Pomocne"); -- Liczy nazwę przestrzeni nazw przedmiotową na podstawie podanych parametrów; return pudelko_pomocne_modul.Nazwa_przestrzeni_nazw(frame,1, czy_uwzglednic_alternatywna_nazwe,liczba_numer_jednostki); </syntaxhighlight> Parametry funkcji: * {{Code|frame}} - tablica ramki tablicy transportu, * {{Code|czy_uwzglednic_alternatywna_nazwe}} - czy ma uwzględniać nazwę przestrzeni nazw domyślną szablonu, dostępne wartości: {{Code|false}}, w której nazwa domyślna nie jest uwzględniana wtedy, oraz {{Code|nil}} i {{Code|true}}, które oznaczają to samo, w tym jeżeli ona jest uwzględniana, wtedy jest brany parametr pierwszy dziecka, który musi istnieć przy takiej wartości tego parametru, tzn. {{Code|{{m|Pudełko|Nazwa przedmiotowej przestrzeni nazw|Dyskusja szablonu}}}} - ta nazwa domyślna zostanie zamieniona na przedmiotową, a jak ona by była przedmiotowa, to żadnej zamiany by nie było, a nazwa uzyskana z nazwy przestrzeni nazw z parametrów przestrzennych jest w takim przypadku błędna, to w takim razie brany jest ten parametr, a jeżeli ta nazwa domyślna jest błędna, czyli {{Code|{{m|Pudełko|Nazwa przedmiotowej przestrzeni nazw|Moja przestrzeń}}}}, wtedy funkcja zwraca stan błędu {{Code|(błąd)}}. * {{Code|i}} - numer zmiennej nazwy przestrzeni nazw. Funkcja wykorzystuje {{Code|{{sr|#p.Nazwa_przestrzeni_nazw(frame,...)|p=Pudełko/Pomocne}}}} do wyznaczania ogólnego nazwy przestrzeni nazw dla pozycji bazowej i numerkowej, tzn. dla pozycji: jeden, dwa, trzy,..., itd, i ich ogólnej. Parametr ramki tablicy transportu rodzica szablonu: * {{Code|nazwa przestrzeni nazw}}, {{Code|nazwa przestrzeni nazw 1}}, {{Code|nazwa przestrzeni nazw 2}}, {{Code|nazwa przestrzeni nazw 3}},..., {{Code|nazwa przestrzeni nazw i}} - nazwy przestrzeni nazw dla pozycji bazowej oraz zwykłej i ogólnej numerkowej, * {{Code|typ jednostki}}, {{Code|typ jednostki 1}}, {{Code|typ jednostki 2}}, {{Code|typ jednostki 3}},..., {{Code|typ jednostki i}} - typy jednostek, którym odpowiadają pewne przestrzenie przedmiotowe, dla pozycji bazowej, numerkowej i ogólnej. Parametry ramki tablicy transportu dziecka: * Parametry dziecka są takie same jak rodzica dla funkcji pudełkowej plus tu wymienione, * {{Code|numer jednostki}} - jak parametr {{Code|i}} nie został ustawiony, to wtedy liczy się ta zmienna. Przykłady: <syntaxhighlight lang="mediawiki"> {{Nazwa szablonu|nazwa przestrzeni nazw=Dyskusja Wikibooks|nazwa przestrzeni nazw 2=Dyskusja szablonu|nazwa przestrzeni nazw i=Dyskusja modułu}} </syntaxhighlight> W dziecku powiedzmy jest wywołanie, i szukamy nazwy przestrzeni nazw o numerze dwa, która nie została podana, ale istnieje za to jej wersji ogólna {{Code|nazwa przestrzeni nazw i}} i domyślna {{Code|nazwa przestrzeni nazw}}: <syntaxhighlight lang="mediawiki"> {{#invoke:Pudełko|Nazwa przedmiotowej przestrzeni nazw|numer jednostki=1}} </syntaxhighlight> Na podstawie powyższego przykładu otrzymamy wynik o schemacie, nie wyniku, bo tam nie ma zmiennej {{Code|nazwa przestrzeni nazw 1}}, ale jest {{Code|nazwa przestrzeni nazw i}}: <syntaxhighlight lang="mediawiki"> <!-- Ale nie "nazwa przestrzeni nazw", bo jej nie ma, ale za to istnieje "nazwa przestrzeni nazw i"; --> <!-- nazwa przestrzeni nazw 2=nazwa przestrzeni nazw i=Dyskusja modułu; --> <!-- Czyli wynik: --> Moduł <!-- Widzimy, że wygenerowała się nazwa przestrzeni nazw, którą jest przestrzeń przedmiotowa programowa przestrzeni dyskusji "Dyskusja modułu", którą również jest "Szablon" jego przestrzeni dyskusji "Dyskusja szablonu", a dla ich przestrzeni przedmiotowej, zamiast dyskusji, to samo przekształca się na to samo; --> </syntaxhighlight> Nie jest brana w tym powyższym przykładzie zmienna {{Code|nazwa przestrzeni nazw}}, bo jej nie ma, ale za to jest {{Code|nazwa przestrzeni nazw i}}, bo ona występuje jako parametr domyślny ogólny dla parametrów numerkowych. Przykłady w wikikodzie: * {{Code|{{m|Pudełko|Nazwa przedmiotowej przestrzeni nazw|numer jednostki{{=}}2}}}} → {{Tt|{{#invoke:Pudełko|Nazwa przedmiotowej przestrzeni nazw|numer jednostki=2}}}} * {{Code|{{m|Pudełko|Nazwa przedmiotowej przestrzeni nazw|Dyskusja szablonu|nazwa przestrzeni nazw i{{=}}Moja przestrzeń|numer jednostki{{=}}2}}}} → {{Tt|{{#invoke:Pudełko|Nazwa przedmiotowej przestrzeni nazw|Dyskusja szablonu|nazwa przestrzeni nazw i=Moja przestrzeń|numer jednostki=2}}}} * {{Code|{{m|Pudełko|Nazwa przedmiotowej przestrzeni nazw|nazwa przestrzeni nazw 2{{=}}Dyskusja szablonu|numer jednostki{{=}}2}}}} → {{Tt|{{#invoke:Pudełko|Nazwa przedmiotowej przestrzeni nazw|nazwa przestrzeni nazw 2=Dyskusja szablonu|numer jednostki=2}}}} * {{Code|{{m|Pudełko|Nazwa przedmiotowej przestrzeni nazw|nazwa przestrzeni nazw 2{{=}}Dyskusja szablonu|numer jednostki{{=}}2}}}} → {{Tt|{{#invoke:Pudełko|Nazwa przedmiotowej przestrzeni nazw|nazwa przestrzeni nazw i=Dyskusja szablonu|numer jednostki=2}}}} * {{Code|{{m|Pudełko|Nazwa przedmiotowej przestrzeni nazw|nazwa przestrzeni nazw{{=}}Dyskusja szablonu|numer jednostki{{=}}2}}}} → {{Tt|{{#invoke:Pudełko|Nazwa przedmiotowej przestrzeni nazw|nazwa przestrzeni nazw=Dyskusja szablonu|numer jednostki=2}}}} Powyżej dla przykładu podano parametry nie w rodzicu w szablonie, tylko w dziecku, jeśli chodzi o parametry nazw przestrzeni nazw, ale ich się za to nie powinno podawać w tych ramach, tylko w szablonach, w których wywoływane są te ramki pudełek {{Code|{{m|Pudełko}}}}, ale tak tutaj tak zrobiono by było najłatwiej sprawdzić działanie tego typu funkcji. Analogicznie możemy podawać parametry typu jednostki, np.: wywołaniu modułowym {{Code|{{m|Pudełko|Nazwa przedmiotowej przestrzeni nazw|typ jednostki 2{{=}}strona szablonu|numer jednostki{{=}}2}}}}, ale o tym więcej w rozdziałach {{Code|{{sr|# p["Przedmiotowy typ jednostki"](frame,i)|p=Pudełko}}}} w „{{sr|#Funkcje typu jednostki|p=Pudełko}}”, ale wtedy ta sama nazwa przestrzeni nazw reprezentowana przez {{Parametr|typ jednostki 2|strona szablonu}}, jest zamieniana na to samo, lepiej jest tutaj używać parametrów przestrzennych nazw niż typu jednostki, bo typ jednostki ma taką samą wartość dla przestrzeni przedmiotowej, co dyskusji. Tutaj parametr dyskusji typu jednostki bazowy i numerkowy ogólny, czy szczegółowy, nie gra roli, bo nawet, gdy wygenerujemy nazwę przestrzeni dyskusji za pomoca tego parametru, to i tak otrzymamy na samym końcu jego nazwę przedmiotową. Również parametry typu jednostki nie powinno się podawać w dziecku w ramce, tylko w rodzicu w szablonie jako parametry, w którym ta ramka jest wywoływana, ale tutaj podano jedynie dla przykładu, jak najłatwiej sprawdzić działanie tych parametrów tej funkcji. Najpierw w funkcji nagłówku brane są parametry nazw przestrzeni nazw, a jeżeli ich nie ma, to parametry typu jednostki, a jeżeli nie ma, to generowane są nazwy na podstawie aktualnego modułu. === {{Code|p["Nazwa przestrzeni nazw dyskusji"](frame,...)}} === Funkcja pisze nazwę przestrzeni nazw dyskusji jakikolwiek nazwy przestrzeni nazw (tzn. nazwę przedmiotową nazwy przestrzenie nazw, czyli nie dyskusji, zamieniana jest na dyskusji, czyli identyfikator przestrzeni się zmienia jeden wyżej, a dyskusji, nie przedmiotową, przekształca się na tą samą), według podanej w zmiennej {{Code|nazwa przestrzeni nazw}} dla pozycja bazowej w podanych parametrach szablonu rodzicu ramki dziecka, lub dla innej pozycji należy parametr podawać w formie {{Code|nazwa przestrzeni nazw 1}}, {{Code|nazwa przestrzeni nazw 2}}, {{Code|nazwa przestrzeni nazw 3}},..., lub te parametry można podać w postaci ogólnej {{Code|nazwa przestrzeni nazw i}}. Parametry podaje się w parametrach rodzica wywołania tej funkcji {{Code|{{m|Pudełko|Nazwa przestrzeni nazw dyskusji}}}} (ale ich nie trzeba podawać w dziecku, ale można) i w parametrach dziecka, jeśli chodzi o zmienną {{Code|numer jednostki}}, czyli np.: {{Code|{{m|Pudełko|Nazwa przestrzeni nazw dyskusji|numer jednostki{{=}}<jakaś liczba całkowita dodatnia>}}}}. Te parametry przestrzenne zamiast w rodzicu w szablonie można podać w ramce dziecka, wtedy parametry dziecka mają pierwszeństwo. Parametry przestrzenne mogą mogą być podane w postaci przestrzeni przedmiotowej lub dyskusji, ale ta funkcja zawsze ją zamienia na dyskusji. Przestrzeń nazw z parametrów nazw przestrzennych może odpowiadać wartości przestrzeni głównej, to wtedy odpowiednia przestrzeń nazw z parametru nazwy jednostki się nie liczy w tej funkcji, aby się liczyła należy użyć funkcji {{Code|{{sr|#p["Nazwa przestrzeni nazw dyskusji 2"](frame,...)|p=Pudełko}}}}. Definicja skrótowa funkcji: <syntaxhighlight lang="lua"> p["Nazwa przestrzeni nazw dyskusji"]=function(frame,czy_uwzglednic_alternatywna_nazwe,i)...end; </syntaxhighlight> Wtedy ciało funkcji tej, czyli jego definicja w środku, jest: <syntaxhighlight lang="lua"> -- Jest liczony numer parametru nazwy przestrzeni nazw, domyslnie chodzi tu o numer bazowy parametrów przestrzennych; local numer_jednostki=i or frame.args["numer jednostki"]; local liczba_numer_jednostki=((numer_jednostki)and(tonumber(numer_jednostki))or 0); local pudelko_pomocne_modul=require("Module:Pudełko/Pomocne"); -- Liczy nazwę przestrzeni nazw dyskusji na podstawie podanych parametrów; return pudelko_pomocne_modul.Nazwa_przestrzeni_nazw(frame,2, czy_uwzglednic_alternatywna_nazwe,liczba_numer_jednostki); </syntaxhighlight> Parametry funkcji: * {{Code|frame}} - tablica ramki tablicy transportu, * {{Code|czy_uwzglednic_alternatywna_nazwe}} - czy ma uwzględniać nazwę przestrzeni nazw domyślną szablonu, dostępne wartości: {{Code|false}}, w której nazwa domyślna nie jest uwzględniana wtedy, oraz {{Code|nil}} i {{Code|true}}, które oznaczają to samo, w tym jeżeli ona jest uwzględniana, wtedy jest brany parametr pierwszy dziecka, który musi istnieć przy takiej wartości tego parametru, tzn. {{Code|{{m|Pudełko|Nazwa przestrzeni nazw dyskusji|Szablon}}}} - ta nazwa domyślna zostanie przekształcona na dyskusji, a jeżeli ona by była dyskusji, to nie byłoby żadnego przekształcenia, a nazwa uzyskana nazwy przestrzeni nazw z parametrów przestrzennych jest w takim przypadku błędna, to w takim razie brany jest ten parametr, a jeżeli nazwa domyślna jest błędna, czyli {{Code|{{m|Pudełko|Nazwa przestrzeni nazw dyskusji|Moja przestrzeń}}}}, wtedy funkcja zwraca stan błędu {{Code|(błąd)}}. * {{Code|i}} - numer zmiennej nazwy przestrzeni nazw. Funkcja wykorzystuje {{Code|{{sr|#p.Nazwa_przestrzeni_nazw(frame,...)|p=Pudełko/Pomocne}}}} do wyznaczania ogólnego nazwy przestrzeni nazw dla pozycji bazowej i numerkowej, tzn. dla pozycji: jeden, dwa, trzy,..., itd, i ich ogólnej. Parametr ramki tablicy transportu rodzica szablonu: * {{Code|nazwa przestrzeni nazw}}, {{Code|nazwa przestrzeni nazw 1}}, {{Code|nazwa przestrzeni nazw 2}}, {{Code|nazwa przestrzeni nazw 3}},..., {{Code|nazwa przestrzeni nazw i}} - nazwy przestrzeni nazw dla pozycji bazowej oraz zwykłej i ogólnej numerkowej, * {{Code|typ jednostki}}, {{Code|typ jednostki 1}}, {{Code|typ jednostki 2}}, {{Code|typ jednostki 3}},..., {{Code|typ jednostki i}} - typy jednostek, którym odpowiadają pewne przestrzenie przedmiotowe, dla pozycji bazowej, numerkowej i ogólnej. Parametry ramki tablicy transportu dziecka: * Parametry dziecka są takie same jak rodzica dla funkcji pudełkowej plus tu wymienione, * {{Code|numer jednostki}} - jak parametr {{Code|i}} nie został ustawiony, to wtedy liczy się ta zmienna. Przykłady: <syntaxhighlight lang="mediawiki"> {{Nazwa szablonu|nazwa przestrzeni nazw=Wikibooks|nazwa przestrzeni nazw 2=Szablon|nazwa przestrzeni nazw i=Moduł}} </syntaxhighlight> W dziecku powiedzmy jest wywołanie, i szukamy nazwy przestrzeni nazw o numerze dwa, która nie została podana, ale istnieje za to jej wersji ogólna {{Code|nazwa przestrzeni nazw i}} i domyślna {{Code|nazwa przestrzeni nazw}}: <syntaxhighlight lang="mediawiki"> {{#invoke:Pudełko|Nazwa przestrzeni nazw dyskusji|numer jednostki=1}} </syntaxhighlight> Na podstawie powyższego przykładu otrzymamy wynik o schemacie, nie wyniku, bo tam nie ma zmiennej {{Code|nazwa przestrzeni nazw 1}}, ale jest {{Code|nazwa przestrzeni nazw i}}: <syntaxhighlight lang="mediawiki"> <!-- Ale nie "nazwa przestrzeni nazw", bo jej nie ma, ale za to istnieje "nazwa przestrzeni nazw i"; --> <!-- nazwa przestrzeni nazw 2=nazwa przestrzeni nazw i=Moduł; --> <!-- Czyli wynik: --> Dyskusja modułu <!-- Widzimy, że wygenerowała się nazwa przestrzeni nazw, którą jest przestrzeń dyskusji przestrzeni programowej przestrzeni przedmiotowej "Moduł", którą również jest "Szablon" jego przestrzeni dyskusji "Dyskusja szablonu", a dla ich przestrzeni przedmiotowej, zamiast dyskusji, to przekształca się na dyskusji jej odpowiadającą; --> </syntaxhighlight> Nie jest brana w tym powyższym przykładzie zmienna {{Code|nazwa przestrzeni nazw}}, bo jej nie ma, ale za to jest {{Code|nazwa przestrzeni nazw i}}, bo ona występuje jako parametr domyślny ogólny dla parametrów numerkowych. Przykłady w wikikodzie: * {{Code|{{m|Pudełko|Nazwa przestrzeni nazw dyskusji|numer jednostki{{=}}2}}}} → {{Tt|{{#invoke:Pudełko|Nazwa przestrzeni nazw dyskusji|numer jednostki=2}}}} * {{Code|{{m|Pudełko|Nazwa przestrzeni nazw dyskusji|Szablon|nazwa przestrzeni nazw i{{=}}Moja przestrzeń|numer jednostki{{=}}2}}}} → {{Tt|{{#invoke:Pudełko|Nazwa przestrzeni nazw dyskusji|Szablon|nazwa przestrzeni nazw i=Moja przestrzeń|numer jednostki=2}}}} * {{Code|{{m|Pudełko|Nazwa przestrzeni nazw dyskusji|nazwa przestrzeni nazw 2{{=}}Szablon|numer jednostki{{=}}2}}}} → {{Tt|{{#invoke:Pudełko|Nazwa przestrzeni nazw dyskusji|nazwa przestrzeni nazw 2=Szablon|numer jednostki=2}}}} * {{Code|{{m|Pudełko|Nazwa przestrzeni nazw dyskusji|nazwa przestrzeni nazw 2{{=}}Szablon|numer jednostki{{=}}2}}}} → {{Tt|{{#invoke:Pudełko|Nazwa przestrzeni nazw dyskusji|nazwa przestrzeni nazw i=Szablon|numer jednostki=2}}}} * {{Code|{{m|Pudełko|Nazwa przestrzeni nazw dyskusji|nazwa przestrzeni nazw{{=}}Szablon|numer jednostki{{=}}2}}}} → {{Tt|{{#invoke:Pudełko|Nazwa przestrzeni nazw dyskusji|nazwa przestrzeni nazw=Szablon|numer jednostki=2}}}} Powyżej dla przykładu podano parametry nie w rodzicu w szablonie, tylko w dziecku, jeśli chodzi o parametry nazw przestrzeni nazw, ale ich się za to nie powinno podawać w tych ramach, tylko w szablonach, w których wywoływane są te ramki pudełek {{Code|{{m|Pudełko}}}}, ale tak tutaj tak zrobiono by było najłatwiej sprawdzić działanie tego typu funkcji. Analogicznie możemy podawać parametry typu jednostki, np.: wywołaniu modułowym {{Code|{{m|Pudełko|Nazwa przestrzeni nazw dyskusji|typ jednostki 2{{=}}strona szablonu|numer jednostki{{=}}2}}}}, ale o tym więcej w rozdziałach {{Code|{{sr|# p["Dyskusyjny typ jednostki"](frame,i)|p=Pudełko}}}} w „{{sr|#Funkcje typu jednostki|p=Pudełko}}”, ale wtedy nazwa przestrzeni nazw reprezentowana przez {{Parametr|typ jednostki 2|strona szablonu}}, jest zamieniana na nazwę przestrzeni nazw dyskusji. Parametr dyskusji typu jednostki bazowy lub dla danego numerka ogólny, czy szczegółowy, nie gra roli. Również parametry typu jednostki nie powinno się podawać w dziecku w ramce, tylko w rodzicu w szablonie jako parametry, w którym ta ramka jest wywoływana, ale tutaj podano jedynie dla przykładu, jak najłatwiej sprawdzić działanie tych parametrów tej funkcji. Najpierw w funkcji nagłówku brane są parametry nazw przestrzeni nazw, a jeżeli ich nie ma, to parametry typu jednostki, a jeżeli nie ma, to generowane są nazwy na podstawie aktualnego modułu. == Funkcje nazw przestrzeni nazw drugiej wersji == === {{Code|p["Nazwa przestrzeni nazw 2"](frame,...)}} === Funkcja pisze nazwę przestrzeni nazw, niezależnie, czy to jest przedmiotowa, czy dyskusji, według, i nie zawsze tylko, podanej w zmiennej {{Code|nazwa przestrzeni nazw}} dla pozycja bazowej w podanych parametrach szablonu rodzicu ramki dziecka, lub dla innej pozycji należy parametr podawać w formie {{Code|nazwa przestrzeni nazw 1}}, {{Code|nazwa przestrzeni nazw 2}}, {{Code|nazwa przestrzeni nazw 3}},..., lub te parametry można podać w postaci ogólnej {{Code|nazwa przestrzeni nazw i}}. W tej funkcji trzeba też podawać parametry nazwy jednostek {{Code|nazwa jednostki}}, {{Code|nazwa jednostki 1}}, {{Code|nazwa jednostki 2}}, {{Code|nazwa jednostki 3}},... Parametry podaje się w parametrach rodzica wywołania tej funkcji {{Code|{{m|Pudełko|Nazwa przestrzeni nazw 2}}}} (ale ich nie trzeba podawać w dziecku, ale można) i w parametrach dziecka, jeśli chodzi o zmienną {{Code|numer jednostki}}, czyli np.: {{Code|{{m|Pudełko|Nazwa przestrzeni nazw 2|numer jednostki{{=}}<jakaś liczba całkowita dodatnia>}}}}. Te parametry przestrzenne zamiast w rodzicu w szablonie można podać w ramce dziecka, wtedy parametry dziecka mają pierwszeństwo. Przestrzeń nazw z parametrów nazw przestrzennych może odpowiadać wartości przestrzeni głównej, to wtedy odpowiednia przestrzeń nazw z parametru nazwy jednostki się liczy w tej funkcji, wtedy jest liczona nazwa przestrzeni nazw z tego parametru. Gdy parametry przestrzenne lub typ jednostki w drugim podejściu nie wskazują na przestrzeń główną, to wtedy działanie tej funkcji jest podobne do {{Code|{{sr|#p["Nazwa przestrzeni nazw"](frame,...)|p=Pudełko}}}}. Definicja skrótowa funkcji: <syntaxhighlight lang="lua"> p["Nazwa przestrzeni nazw 2"]=function(frame,czy_uwzglednic_alternatywna_nazwe,i)...end; </syntaxhighlight> Wtedy ciało funkcji tej, czyli jego definicja w środku, jest: <syntaxhighlight lang="lua"> local pudelko_pomocne_modul=require("Module:Pudełko/Pomocne"); -- Liczy nazwę przestrzeni nazw, jeżeli z parametrów przestrzennych przestrzeń wskazuje na główną, to wtedy jest liczona przestrzeń nazw z nazwy jednostki; return pudelko_pomocne_modul.Nazwa_przestrzeni_nazw_2(frame,czy_uwzglednic_alternatywna_nazwe,i) </syntaxhighlight> Parametry funkcji: * {{Code|frame}} - tablica ramki tablicy transportu, * {{Code|czy_uwzglednic_alternatywna_nazwe}} - czy ma uwzględniać nazwę przestrzeni nazw domyślną szablonu, dostępne wartości: {{Code|false}}, w której nazwa domyślna nie jest uwzględniana wtedy, oraz {{Code|nil}} i {{Code|true}}, które oznaczają to samo, w tym jeżeli ona jest uwzględniana, wtedy jest brany parametr pierwszy dziecka, który musi istnieć przy takiej wartości tego parametru, tzn. {{Code|{{m|Pudełko|Nazwa przestrzeni nazw 2|Szablon}}}}, a nazwa uzyskana nazwy przestrzeni nazw jest w takim przypadku błędna, a jeżeli nazwa domyślna jest błędna, czyli {{Code|{{m|Pudełko|Nazwa przestrzeni nazw 2|Moja przestrzeń}}}}, wtedy funkcja zwraca stan błędu {{Code|(błąd)}}. * {{Code|i}} - numer zmiennej nazwy przestrzeni nazw. Funkcja wykorzystuje {{Code|{{sr|#p.Nazwa_przestrzeni_nazw_2(frame,...)|p=Pudełko/Pomocne}}}} do wyznaczania ogólnego nazwy przestrzeni nazw dla pozycji bazowej i numerkowej, tzn. dla pozycji: jeden, dwa, trzy,..., itd, i ich ogólnej. Parametr ramki tablicy transportu rodzica szablonu: * {{Code|nazwa przestrzeni nazw}}, {{Code|nazwa przestrzeni nazw 1}}, {{Code|nazwa przestrzeni nazw 2}}, {{Code|nazwa przestrzeni nazw 3}},..., {{Code|nazwa przestrzeni nazw i}} - nazwy przestrzeni nazw dla pozycji bazowej oraz zwykłej i ogólnej numerkowej, * {{Code|nazwa jednostki}}, {{Code|nazwa jednostki 1}}, {{Code|nazwa jednostki 2}}, {{Code|nazwa jednostki 3}},... - nazwy jednostek dla pozycji bazowej i numerkowej, * {{Code|typ jednostki}}, {{Code|typ jednostki 1}}, {{Code|typ jednostki 2}}, {{Code|typ jednostki 3}},..., {{Code|typ jednostki i}} - typy jednostek, którym odpowiadają pewne przestrzenie przedmiotowe, dla pozycji bazowej, numerkowej i ogólnej, ** {{Code|dyskusja typu jednostki}}, {{Code|dyskusja typu jednostki 1}}, {{Code|dyskusja typ jednostki 2}}, {{Code|dyskusja typ jednostki 3}},..., {{Code|dyskusja typ jednostki i}} - czy dany typ jednostki ma przedstawiać, jeśli niepusta, przestrzeń dyskusji dla pozycji bazowej, numerkowej i ogólnej. Parametry ramki tablicy transportu dziecka: * Parametry dziecka są takie same jak rodzica dla funkcji pudełkowej plus tu wymienione, * {{Code|numer jednostki}} - jak parametr {{Code|i}} nie został ustawiony, to wtedy liczy się ta zmienna. Przykłady: <syntaxhighlight lang="mediawiki"> {{Nazwa szablonu|nazwa przestrzeni nazw=Wikibooks|nazwa przestrzeni nazw 1=Szablon|nazwa przestrzeni nazw i=|nazwa jednostki 2=Wikibooks:Strona}} </syntaxhighlight> W dziecku powiedzmy jest wywołanie, i szukamy nazwy przestrzeni nazw o numerze dwa, która została podana, ale istnieje za to jej wersji ogólna {{Code|nazwa przestrzeni nazw i}} i domyślna {{Code|nazwa przestrzeni nazw}}, ale wtedy dla tego numerkowego liczy się to ogólne z {{Code| i}}, a ponieważ ta nazwa jest pusta, więc będziemy liczyli nazwę przestrzeni nazw z {{Code|nazwa jednostki 2}}: <syntaxhighlight lang="mediawiki"> {{#invoke:Pudełko|Nazwa przestrzeni nazw 2|numer jednostki=2}} </syntaxhighlight> Na podstawie powyższego przykładu otrzymamy wynik o schemacie, nie wyniku, bo tam nie ma zmiennej {{Code|nazwa przestrzeni nazw 1}}, ale jest {{Code|nazwa przestrzeni nazw i}}: <syntaxhighlight lang="mediawiki"> <!-- Ale nie "nazwa przestrzeni nazw 2", bo jej nie ma, ale za to istnieje "nazwa przestrzeni nazw i"; --> <!-- nazwa przestrzeni nazw 2=nazwa przestrzeni nazw i="", a nazwa jednostki 2="Wikibooks:Strona"; --> <!-- Czyli wynik: --> Wikibooks <!-- Widzimy, że wygenerowała się nazwa przestrzeni nazw, którą jest przestrzeń nieprogramowa, ale projektu, wychodząca z nazwy jednostek w tym przypadku z "nazwa jednostki 2"; --> </syntaxhighlight> Nie jest brana w tym powyższym przykładzie zmienna {{Code|nazwa przestrzeni nazw}}, bo jej nie ma, ale za to jest {{Code|nazwa przestrzeni nazw i}}, bo ona występuje jako parametr domyślny ogólny dla parametrów numerkowych. Tytaj jest używana jest zmienna {{Code|nazwa jednostki 2}} do wygenerowania ostatecznego wyniku, bo jak można zauważyć, parametry przestrzenne wskazują na przestrzeń główną, a nazwy jednostek już nie. Przykłady w wikikodzie: * {{Code|{{m|Pudełko|Nazwa przestrzeni nazw 2|numer jednostki{{=}}2}}}} → {{Tt|{{#invoke:Pudełko|Nazwa przestrzeni nazw 2|numer jednostki=2}}}} * {{Code|{{m|Pudełko|Nazwa przestrzeni nazw 2|Szablon|nazwa przestrzeni nazw i{{=}}Moja przestrzeń|numer jednostki{{=}}2}}}} → {{Tt|{{#invoke:Pudełko|Nazwa przestrzeni nazw 2|Szablon|nazwa przestrzeni nazw i=Moja przestrzeń|numer jednostki=2}}}} * {{Code|{{m|Pudełko|Nazwa przestrzeni nazw 2|nazwa przestrzeni nazw 2{{=}}|nazwa jednostki 2{{=}}Szablon:Strona|numer jednostki{{=}}2}}}} → {{Tt|{{#invoke:Pudełko|Nazwa przestrzeni nazw 2|nazwa przestrzeni nazw 2=|nazwa jednostki 2=Szablon:Strona|numer jednostki=2}}}} * {{Code|{{m|Pudełko|Nazwa przestrzeni nazw 2|nazwa przestrzeni nazw i{{=}}|nazwa jednostki 2{{=}}Szablon:Strona|numer jednostki{{=}}2}}}} → {{Tt|{{#invoke:Pudełko|Nazwa przestrzeni nazw 2|nazwa przestrzeni nazw i=|nazwa jednostki 2=Szablon:Strona|numer jednostki=2}}}} * {{Code|{{m|Pudełko|Nazwa przestrzeni nazw 2|Szablon|nazwa przestrzeni nazw{{=}}|nazwa jednostki 2{{=}}Wikibooks:Strona|numer jednostki{{=}}2}}}} → {{Tt|{{#invoke:Pudełko|Nazwa przestrzeni nazw 2|Szablon|nazwa przestrzeni nazw=|nazwa jednostki 2=Wikibooks:Strona|numer jednostki=2}}}} Powyżej dla przykładu podano parametry nie w rodzicu w szablonie, tylko w dziecku, jeśli chodzi o parametry nazw przestrzeni nazw i nazw jednostek, ale ich się za to nie powinno podawać w tych ramach, tylko w szablonach, w których wywoływane są te ramki pudełek {{Code|{{m|Pudełko}}}}, ale tak tutaj tak zrobiono by było najłatwiej sprawdzić działanie tego typu funkcji. Analogicznie możemy podawać parametry typu jednostki, np.: wywołaniu modułowym {{Code|{{m|Pudełko|Nazwa przestrzeni nazw 2|typ jednostki 2{{=}}Podręcznik|nazwa jednostki 2{{=}}Szablon:Strona|numer jednostki{{=}}2}}}} (ale wtedy jest brana przestrzeń nazw z nazwy jednostki), ale o tym więcej w rozdziałach {{Code|{{sr|#p["Typ jednostki 2"](frame,i)|p=Pudełko}}}} w „{{sr|#Funkcje typu jednostki|p=Pudełko}}”, on definiuje przestrzenie przedmiotowe, ale można użyć parametru dyskusji typu jednostki z wartością niepustą, wtedy wyświetli się nazwa przestrzeni nazw dyskusji. Jeżeli typ jednostki wskazuje na przestrzeń nazw główną, wtedy się liczą parametry nazw jednostek. Również parametry typu jednostki nie powinno się podawać w dziecku w ramce, tylko w rodzicu w szablonie jako parametry, w którym ta ramka jest wywoływana, ale tutaj podano jedynie dla przykładu, jak najłatwiej sprawdzić działanie tych parametrów tej funkcji. Najpierw w funkcji nagłówku brane są parametry nazw przestrzeni nazw, a jeżeli ich nie ma, to parametry typu jednostki, a jeżeli nie ma lub parametry przestrzenne wskazują na przestrzeń główną, i nie ma nazwy jednostki, to generowane są nazwy tej funkcji na podstawie aktualnej strony. === {{Code|p["Nazwa przedmiotowej przestrzeni nazw 2"](frame,...)}} === Funkcja pisze przedmiotową nazwę przestrzeni nazw jakikolwiek nazwy przestrzeni nazw (tzn. nazwę przedmiotową nazwy przestrzenie nazw, czyli nie dyskusji, zamieniana jest na nią samą, czyli identyfikator przestrzeni się nie zmienia, a dyskusji, nie przedmiotową, przekształca się na przedmiotową jej odpowiadającą, czyli w tym przypadku identyfikator przestrzeni zmniejsza się o numer mniej), według, i nie zawsze tylko, podanej w zmiennej {{Code|nazwa przestrzeni nazw}} dla pozycja bazowej w podanych parametrach szablonu rodzicu ramki dziecka, lub dla innej pozycji należy parametr podawać w formie {{Code|nazwa przestrzeni nazw 1}}, {{Code|nazwa przestrzeni nazw 2}}, {{Code|nazwa przestrzeni nazw 3}},..., lub te parametry można podać w postaci ogólnej {{Code|nazwa przestrzeni nazw i}}. W tej funkcji trzeba też podawać parametry nazwy jednostek {{Code|nazwa jednostki}}, {{Code|nazwa jednostki 1}}, {{Code|nazwa jednostki 2}}, {{Code|nazwa jednostki 3}},... Parametry podaje się w parametrach rodzica wywołania tej funkcji {{Code|{{m|Pudełko|Nazwa przedmiotowej przestrzeni nazw 2}}}} (ale ich nie trzeba podawać w dziecku, ale można) i w parametrach dziecka, jeśli chodzi o zmienną {{Code|numer jednostki}}, czyli np.: {{Code|{{m|Pudełko|Nazwa przedmiotowej przestrzeni nazw 2|numer jednostki{{=}}<jakaś liczba całkowita dodatnia>}}}}. Te parametry przestrzenne zamiast w rodzicu w szablonie można podać w ramce dziecka, wtedy parametry dziecka mają pierwszeństwo. Przestrzeń nazw z parametrów nazw przestrzennych po przekształceniu na przedmiotową może odpowiadać wartości przestrzeni głównej, to wtedy odpowiednia przestrzeń nazw z parametru nazwy jednostki się liczy w tej funkcji, wtedy jest liczona nazwa przestrzeni nazw z tego parametru. Gdy parametry przestrzenne lub typ jednostki w drugim podejściu nie wskazują na przestrzeń główną, to wtedy działanie tej funkcji jest podobne do {{Code|{{sr|#p["Nazwa przedmiotowej przestrzeni nazw"](frame,...)|p=Pudełko}}}}. Definicja skrótowa funkcji: <syntaxhighlight lang="lua"> p["Nazwa przedmiotowej przestrzeni nazw 2"]=function(frame,czy_uwzglednic_alternatywna_nazwe,i)...end; </syntaxhighlight> Wtedy ciało funkcji tej, czyli jego definicja w środku, jest: <syntaxhighlight lang="lua"> local pudelko_pomocne_modul=require("Module:Pudełko/Pomocne"); return pudelko_pomocne_modul.Nazwa_przestrzeni_nazw_przedmiotowa_dyskusji_2(frame,czy_uwzglednic_alternatywna_nazwe,i,"przedmiotowa"); </syntaxhighlight> Parametry funkcji: * {{Code|frame}} - tablica ramki tablicy transportu, * {{Code|czy_uwzglednic_alternatywna_nazwe}} - czy ma uwzględniać nazwę przestrzeni nazw domyślną szablonu, dostępne wartości: {{Code|false}}, w której nazwa domyślna nie jest uwzględniana wtedy, oraz {{Code|nil}} i {{Code|true}}, które oznaczają to samo, w tym jeżeli ona jest uwzględniana, wtedy jest brany parametr pierwszy dziecka, który musi istnieć przy takiej wartości tego parametru, tzn. {{Code|{{m|Pudełko|Nazwa przedmiotowej przestrzeni nazw 2|Szablon}}}}, a nazwa uzyskana nazwy przestrzeni nazw jest w takim przypadku błędna, a jeżeli nazwa domyślna jest błędna, czyli {{Code|{{m|Pudełko|Nazwa przedmiotowej przestrzeni nazw 2|Moja przestrzeń}}}}, wtedy funkcja zwraca stan błędu {{Code|(błąd)}}. * {{Code|i}} - numer zmiennej nazwy przestrzeni nazw. Funkcja wykorzystuje {{Code|{{sr|#p.Nazwa_przestrzeni_nazw_przedmiotowa_dyskusji_2(frame,...)|p=Pudełko/Pomocne}}}} do wyznaczania ogólnego nazwy przestrzeni nazw dla pozycji bazowej i numerkowej, tzn. dla pozycji: jeden, dwa, trzy,..., itd, i ich ogólnej. Parametr ramki tablicy transportu rodzica szablonu: * {{Code|nazwa przestrzeni nazw}}, {{Code|nazwa przestrzeni nazw 1}}, {{Code|nazwa przestrzeni nazw 2}}, {{Code|nazwa przestrzeni nazw 3}},..., {{Code|nazwa przestrzeni nazw i}} - nazwy przestrzeni nazw dla pozycji bazowej oraz zwykłej i ogólnej numerkowej, * {{Code|nazwa jednostki}}, {{Code|nazwa jednostki 1}}, {{Code|nazwa jednostki 2}}, {{Code|nazwa jednostki 3}},... - nazwy jednostek dla pozycji bazowej i numerkowej, * {{Code|typ jednostki}}, {{Code|typ jednostki 1}}, {{Code|typ jednostki 2}}, {{Code|typ jednostki 3}},..., {{Code|typ jednostki i}} - typy jednostek, którym odpowiadają pewne przestrzenie przedmiotowe, dla pozycji bazowej, numerkowej i ogólnej. Parametry ramki tablicy transportu dziecka: * Parametry dziecka są takie same jak rodzica dla funkcji pudełkowej plus tu wymienione, * {{Code|numer jednostki}} - jak parametr {{Code|i}} nie został ustawiony, to wtedy liczy się ta zmienna. Przykłady: <syntaxhighlight lang="mediawiki"> {{Nazwa szablonu|nazwa przestrzeni nazw=Wikibooks|nazwa przestrzeni nazw 1=Szablon|nazwa przestrzeni nazw i=|nazwa jednostki 2=Dyskusja Wikibooks:Strona}} </syntaxhighlight> W dziecku powiedzmy jest wywołanie, i szukamy nazwy przestrzeni nazw o numerze dwa, która została podana, ale istnieje za to jej wersji ogólna {{Code|nazwa przestrzeni nazw i}} i domyślna {{Code|nazwa przestrzeni nazw}}, ale wtedy dla tego numerkowego liczy się to ogólne z {{Code| i}}, a ponieważ ta nazwa jest pusta, więc będziemy liczyli nazwę przestrzeni nazw z {{Code|nazwa jednostki 2}}: <syntaxhighlight lang="mediawiki"> {{#invoke:Pudełko|Nazwa przedmiotowej przestrzeni nazw 2|numer jednostki=2}} </syntaxhighlight> Na podstawie powyższego przykładu otrzymamy wynik o schemacie, nie wyniku, bo tam nie ma zmiennej {{Code|nazwa przestrzeni nazw 1}}, ale jest {{Code|nazwa przestrzeni nazw i}}: <syntaxhighlight lang="mediawiki"> <!-- Ale nie "nazwa przestrzeni nazw 2", bo jej nie ma, ale za to istnieje "nazwa przestrzeni nazw i"; --> <!-- nazwa przestrzeni nazw 2=nazwa przestrzeni nazw i="", a nazwa jednostki 2="Dyskusja Wikibooks:Strona"; --> <!-- Czyli wynik: --> Wikibooks <!-- Widzimy, że wygenerowała się nazwa przestrzeni nazw, którą jest przestrzeń nieprogramowa, ale projektu, wychodząca z nazwy jednostek w tym przypadku z "nazwa jednostki 2"; --> </syntaxhighlight> Nie jest brana w tym powyższym przykładzie zmienna {{Code|nazwa przestrzeni nazw}}, bo jej nie ma, ale za to jest {{Code|nazwa przestrzeni nazw i}}, bo ona występuje jako parametr domyślny ogólny dla parametrów numerkowych. Tytaj jest używana jest zmienna {{Code|nazwa jednostki 2}} do wygenerowania ostatecznego wyniku, bo jak można zauważyć, parametry przestrzenne wskazują na przestrzeń główną, a nazwy jednostek już nie. Przykłady w wikikodzie: * {{Code|{{m|Pudełko|Nazwa przedmiotowej przestrzeni nazw 2|numer jednostki{{=}}2}}}} → {{Tt|{{#invoke:Pudełko|Nazwa przedmiotowej przestrzeni nazw 2|numer jednostki=2}}}} * {{Code|{{m|Pudełko|Nazwa przedmiotowej przestrzeni nazw 2|Dyskusja szablonu|nazwa przestrzeni nazw i{{=}}Moja przestrzeń|numer jednostki{{=}}2}}}} → {{Tt|{{#invoke:Pudełko|Nazwa przedmiotowej przestrzeni nazw 2|Dyskusja szablonu|nazwa przestrzeni nazw i=Moja przestrzeń|numer jednostki=2}}}} * {{Code|{{m|Pudełko|Nazwa przedmiotowej przestrzeni nazw 2|nazwa przestrzeni nazw 2{{=}}Dyskusja|nazwa jednostki 2{{=}}Dyskusja szablonu:Strona|numer jednostki{{=}}2}}}} → {{Tt|{{#invoke:Pudełko|Nazwa przedmiotowej przestrzeni nazw 2|nazwa przestrzeni nazw 2=Dyskusja|nazwa jednostki 2=Dyskusja szablonu:Strona|numer jednostki=2}}}} * {{Code|{{m|Pudełko|Nazwa przedmiotowej przestrzeni nazw 2|nazwa przestrzeni nazw i{{=}}Dyskusja|nazwa jednostki 2{{=}}Dyskusja szablonu:Strona|numer jednostki{{=}}2}}}} → {{Tt|{{#invoke:Pudełko|Nazwa przedmiotowej przestrzeni nazw 2|nazwa przestrzeni nazw i=Dyskusja|nazwa jednostki 2=Dyskusja szablonu:Strona|numer jednostki=2}}}} * {{Code|{{m|Pudełko|Nazwa przedmiotowej przestrzeni nazw 2|Dyskusja szablonu|nazwa przestrzeni nazw{{=}}Dyskusja|nazwa jednostki 2{{=}}Wikibooks:Strona|numer jednostki{{=}}2}}}} → {{Tt|{{#invoke:Pudełko|Nazwa przedmiotowej przestrzeni nazw 2|Dyskusja szablonu|nazwa przestrzeni nazw=Dyskusja|nazwa jednostki 2=Dyskusja Wikibooks:Strona|numer jednostki=2}}}} Powyżej dla przykładu podano parametry nie w rodzicu w szablonie, tylko w dziecku, jeśli chodzi o parametry nazw przestrzeni nazw i nazw jednostek, ale ich się za to nie powinno podawać w tych ramach, tylko w szablonach, w których wywoływane są te ramki pudełek {{Code|{{m|Pudełko}}}}, ale tak tutaj tak zrobiono by było najłatwiej sprawdzić działanie tego typu funkcji. Analogicznie możemy podawać parametry typu jednostki, np.: wywołaniu modułowym {{Code|{{m|Pudełko|Nazwa przedmiotowej przestrzeni nazw 2|typ jednostki 2{{=}}Podręcznik|nazwa jednostki 2{{=}}Dyskusja szablonu:Strona|numer jednostki{{=}}2}}}} (ale wtedy jest brana przestrzeń nazw z nazwy jednostki), ale o tym więcej w rozdziałach {{Code|{{sr|# p["Przedmiotowy typ jednostki 2"](frame,i)|p=Pudełko}}}} w „{{sr|#Funkcje typu jednostki|p=Pudełko}}”, on definiuje przestrzenie przedmiotowe, ale można użyć parametru dyskusji typu jednostki z wartością niepustą, pustą, czy nawet jej nie podamy, wtedy wyświetli się nazwa przestrzeni nazw przedmiotowej. Jeżeli typ jednostki wskazuje na przestrzeń nazw główną, wtedy się liczą parametry nazw jednostek. Również parametry typu jednostki nie powinno się podawać w dziecku w ramce, tylko w rodzicu w szablonie jako parametry, w którym ta ramka jest wywoływana, ale tutaj podano jedynie dla przykładu, jak najłatwiej sprawdzić działanie tych parametrów tej funkcji. Najpierw w funkcji nagłówku brane są parametry nazw przestrzeni nazw, a jeżeli ich nie ma, to parametry typu jednostki, a jeżeli nie ma lub parametry przestrzenne wskazują na przestrzeń główną, i nie ma nazwy jednostki, to generowane są nazwy tej funkcji na podstawie aktualnej strony. === {{Code|p["Nazwa przestrzeni nazw dyskusji 2"](frame,...)}} === Funkcja pisze nazwę przestrzeni nazw dyskusji jakikolwiek nazwy przestrzeni nazw (tzn. nazwę dyskusji nazwy przestrzenie nazw, czyli nie przedmiotowej, zamieniana jest na nią samą, czyli identyfikator przestrzeni się nie zmienia, a przedmiotową, nie dyskusji, przekształca się na dyskusji jej odpowiadającą, czyli w tym przypadku identyfikator przestrzeni zwiększa się o numer więcej), według, i nie zawsze tylko, podanej w zmiennej {{Code|nazwa przestrzeni nazw}} dla pozycja bazowej w podanych parametrach szablonu rodzicu ramki dziecka, lub dla innej pozycji należy parametr podawać w formie {{Code|nazwa przestrzeni nazw 1}}, {{Code|nazwa przestrzeni nazw 2}}, {{Code|nazwa przestrzeni nazw 3}},..., lub te parametry można podać w postaci ogólnej {{Code|nazwa przestrzeni nazw i}}. W tej funkcji trzeba też podawać parametry nazwy jednostek {{Code|nazwa jednostki}}, {{Code|nazwa jednostki 1}}, {{Code|nazwa jednostki 2}}, {{Code|nazwa jednostki 3}},... Parametry podaje się w parametrach rodzica wywołania tej funkcji {{Code|{{m|Pudełko|Nazwa przestrzeni nazw dyskusji 2}}}} (ale ich nie trzeba podawać w dziecku, ale można) i w parametrach dziecka, jeśli chodzi o zmienną {{Code|numer jednostki}}, czyli np.: {{Code|{{m|Pudełko|Nazwa przestrzeni nazw dyskusji 2|numer jednostki{{=}}<jakaś liczba całkowita dodatnia>}}}}. Te parametry przestrzenne zamiast w rodzicu w szablonie można podać w ramce dziecka, wtedy parametry dziecka mają pierwszeństwo. Przestrzeń nazw z parametrów nazw przestrzennych po przekształceniu na przedmiotową może odpowiadać wartości przestrzeni głównej, to wtedy odpowiednia przestrzeń nazw z parametru nazwy jednostki się liczy w tej funkcji, wtedy jest liczona nazwa przestrzeni nazw z tego parametru. Gdy parametry przestrzenne lub typ jednostki w drugim podejściu nie wskazują na przestrzeń główną, to wtedy działanie tej funkcji jest podobne do {{Code|{{sr|#p["Nazwa dyskusji przestrzeni nazw"](frame,...)|p=Pudełko}}}}. Definicja skrótowa funkcji: <syntaxhighlight lang="lua"> p["Nazwa przestrzeni nazw dyskusji 2"]=function(frame,czy_uwzglednic_alternatywna_nazwe,i)...end; </syntaxhighlight> Wtedy ciało funkcji tej, czyli jego definicja w środku, jest: <syntaxhighlight lang="lua"> local pudelko_pomocne_modul=require("Module:Pudełko/Pomocne"); return pudelko_pomocne_modul.Nazwa_przestrzeni_nazw_przedmiotowa_dyskusji_2(frame,czy_uwzglednic_alternatywna_nazwe,i,"dyskusja"); </syntaxhighlight> Parametry funkcji: * {{Code|frame}} - tablica ramki tablicy transportu, * {{Code|czy_uwzglednic_alternatywna_nazwe}} - czy ma uwzględniać nazwę przestrzeni nazw domyślną szablonu, dostępne wartości: {{Code|false}}, w której nazwa domyślna nie jest uwzględniana wtedy, oraz {{Code|nil}} i {{Code|true}}, które oznaczają to samo, w tym jeżeli ona jest uwzględniana, wtedy jest brany parametr pierwszy dziecka, który musi istnieć przy takiej wartości tego parametru, tzn. {{Code|{{m|Pudełko|Nazwa przestrzeni nazw dyskusji 2|Szablon}}}}, a nazwa uzyskana nazwy przestrzeni nazw jest w takim przypadku błędna, a jeżeli nazwa domyślna jest błędna, czyli {{Code|{{m|Pudełko|Nazwa przestrzeni nazw dyskusji 2|Moja przestrzeń}}}}, wtedy funkcja zwraca stan błędu {{Code|(błąd)}}. * {{Code|i}} - numer zmiennej nazwy przestrzeni nazw. Funkcja wykorzystuje {{Code|{{sr|#p.Nazwa_przestrzeni_nazw_przedmiotowa_dyskusji_2(frame,...)|p=Pudełko/Pomocne}}}} do wyznaczania ogólnego nazwy przestrzeni nazw dla pozycji bazowej i numerkowej, tzn. dla pozycji: jeden, dwa, trzy,..., itd, i ich ogólnej. Parametr ramki tablicy transportu rodzica szablonu: * {{Code|nazwa przestrzeni nazw}}, {{Code|nazwa przestrzeni nazw 1}}, {{Code|nazwa przestrzeni nazw 2}}, {{Code|nazwa przestrzeni nazw 3}},..., {{Code|nazwa przestrzeni nazw i}} - nazwy przestrzeni nazw dla pozycji bazowej oraz zwykłej i ogólnej numerkowej, * {{Code|nazwa jednostki}}, {{Code|nazwa jednostki 1}}, {{Code|nazwa jednostki 2}}, {{Code|nazwa jednostki 3}},... - nazwy jednostek dla pozycji bazowej i numerkowej, * {{Code|typ jednostki}}, {{Code|typ jednostki 1}}, {{Code|typ jednostki 2}}, {{Code|typ jednostki 3}},..., {{Code|typ jednostki i}} - typy jednostek, którym odpowiadają pewne przestrzenie przedmiotowe, dla pozycji bazowej, numerkowej i ogólnej. Parametry ramki tablicy transportu dziecka: * Parametry dziecka są takie same jak rodzica dla funkcji pudełkowej plus tu wymienione, * {{Code|numer jednostki}} - jak parametr {{Code|i}} nie został ustawiony, to wtedy liczy się ta zmienna. Przykłady: <syntaxhighlight lang="mediawiki"> {{Nazwa szablonu|nazwa przestrzeni nazw=Wikibooks|nazwa przestrzeni nazw 1=Szablon|nazwa przestrzeni nazw i=|nazwa jednostki 2=Wikibooks:Strona}} </syntaxhighlight> W dziecku powiedzmy jest wywołanie, i szukamy nazwy przestrzeni nazw o numerze dwa, która została podana, ale istnieje za to jej wersji ogólna {{Code|nazwa przestrzeni nazw i}} i domyślna {{Code|nazwa przestrzeni nazw}}, ale wtedy dla tego numerkowego liczy się to ogólne z {{Code| i}}, a ponieważ ta nazwa jest pusta, więc będziemy liczyli nazwę przestrzeni nazw z {{Code|nazwa jednostki 2}}: <syntaxhighlight lang="mediawiki"> {{#invoke:Pudełko|Nazwa przestrzeni nazw dyskusji 2|numer jednostki=2}} </syntaxhighlight> Na podstawie powyższego przykładu otrzymamy wynik o schemacie, nie wyniku, bo tam nie ma zmiennej {{Code|nazwa przestrzeni nazw 1}}, ale jest {{Code|nazwa przestrzeni nazw i}}: <syntaxhighlight lang="mediawiki"> <!-- Ale nie "nazwa przestrzeni nazw 2", bo jej nie ma, ale za to istnieje "nazwa przestrzeni nazw i"; --> <!-- nazwa przestrzeni nazw 2=nazwa przestrzeni nazw i="", a nazwa jednostki 2="Wikibooks:Strona"; --> <!-- Czyli wynik: --> Dyskusja Wikibooks <!-- Widzimy, że wygenerowała się nazwa przestrzeni nazw, którą jest przestrzeń nieprogramowa, ale dyskusji projektu, wychodząca z nazwy jednostek w tym przypadku z "nazwa jednostki 2"; --> </syntaxhighlight> Nie jest brana w tym powyższym przykładzie zmienna {{Code|nazwa przestrzeni nazw}}, bo jej nie ma, ale za to jest {{Code|nazwa przestrzeni nazw i}}, bo ona występuje jako parametr domyślny ogólny dla parametrów numerkowych. Tytaj jest używana jest zmienna {{Code|nazwa jednostki 2}} do wygenerowania ostatecznego wyniku, bo jak można zauważyć, parametry przestrzenne wskazują na przestrzeń główną, a nazwy jednostek już nie. Przykłady w wikikodzie: * {{Code|{{m|Pudełko|Nazwa przestrzeni nazw dyskusji 2|numer jednostki{{=}}2}}}} → {{Tt|{{#invoke:Pudełko|Nazwa przestrzeni nazw dyskusji 2|numer jednostki=2}}}} * {{Code|{{m|Pudełko|Nazwa przestrzeni nazw dyskusji 2|Szablon|nazwa przestrzeni nazw i{{=}}Moja przestrzeń|numer jednostki{{=}}2}}}} → {{Tt|{{#invoke:Pudełko|Nazwa przestrzeni nazw dyskusji 2|Szablon|nazwa przestrzeni nazw i=Moja przestrzeń|numer jednostki=2}}}} * {{Code|{{m|Pudełko|Nazwa przestrzeni nazw dyskusji 2|nazwa przestrzeni nazw 2{{=}}|nazwa jednostki 2{{=}}Szablon:Strona|numer jednostki{{=}}2}}}} → {{Tt|{{#invoke:Pudełko|Nazwa przestrzeni nazw dyskusji 2|nazwa przestrzeni nazw 2=|nazwa jednostki 2=Szablon:Strona|numer jednostki=2}}}} * {{Code|{{m|Pudełko|Nazwa przestrzeni nazw dyskusji 2|nazwa przestrzeni nazw i{{=}}|nazwa jednostki 2{{=}}Szablon:Strona|numer jednostki{{=}}2}}}} → {{Tt|{{#invoke:Pudełko|Nazwa przestrzeni nazw dyskusji 2|nazwa przestrzeni nazw i=|nazwa jednostki 2=Szablon:Strona|numer jednostki=2}}}} * {{Code|{{m|Pudełko|Nazwa przestrzeni nazw dyskusji 2|Szablon|nazwa przestrzeni nazw{{=}}|nazwa jednostki 2{{=}}Wikibooks:Strona|numer jednostki{{=}}2}}}} → {{Tt|{{#invoke:Pudełko|Nazwa przestrzeni nazw dyskusji 2|Szablon|nazwa przestrzeni nazw=|nazwa jednostki 2=Dyskusja Wikibooks:Strona|numer jednostki=2}}}} Powyżej dla przykładu podano parametry nie w rodzicu w szablonie, tylko w dziecku, jeśli chodzi o parametry nazw przestrzeni nazw i nazw jednostek, ale ich się za to nie powinno podawać w tych ramach, tylko w szablonach, w których wywoływane są te ramki pudełek {{Code|{{m|Pudełko}}}}, ale tak tutaj tak zrobiono by było najłatwiej sprawdzić działanie tego typu funkcji. Analogicznie możemy podawać parametry typu jednostki, np.: wywołaniu modułowym {{Code|{{m|Pudełko|Nazwa przestrzeni nazw dyskusji 2|typ jednostki 2{{=}}Podręcznik|nazwa jednostki 2{{=}}Szablon:Strona|numer jednostki{{=}}2}}}} (ale wtedy jest brana przestrzeń nazw z nazwy jednostki), ale o tym więcej w rozdziałach {{Code|{{sr|# p["Dyskusyjny typ jednostki 2"](frame,i)|p=Pudełko}}}} w „{{sr|#Funkcje typu jednostki|p=Pudełko}}”, on definiuje przestrzenie dyskusji, ale można użyć parametru dyskusji typu jednostki z obojętnie jaką wartością niepustą, czy pustą, czy nawet jej nie podamy, wtedy wyświetli się nazwa przestrzeni nazw dyskusji. Jeżeli typ jednostki wskazuje na przestrzeń nazw główną, wtedy się liczą parametry nazw jednostek. Również parametry typu jednostki nie powinno się podawać w dziecku w ramce, tylko w rodzicu w szablonie jako parametry, w którym ta ramka jest wywoływana, ale tutaj podano jedynie dla przykładu, jak najłatwiej sprawdzić działanie tych parametrów tej funkcji. Najpierw w funkcji nagłówku brane są parametry nazw przestrzeni nazw, a jeżeli ich nie ma, to parametry typu jednostki, a jeżeli nie ma lub parametry przestrzenne wskazują na przestrzeń główną, i nie ma nazwy jednostki, to generowane są nazwy tej funkcji na podstawie aktualnej strony. == Funkcje pełnych nazw jednostki == === {{Code|p["Pełna nazwa dyskusji jednostki"](frame,i)}} === === {{Code|p["Pełna nazwa przedmiotowa jednostki"](frame,i)}} === === {{Code|p["Pełna nazwa jednostki"](frame,i)}} === == Funkcje pełnych nazw jednostki drugiej wersji == === {{Code|p["Pełna nazwa dyskusji jednostki 2"](frame,i)}} === === {{Code|p["Pełna nazwa przedmiotowa jednostki 2"](frame,i)}} === === {{Code|p["Pełna nazwa jednostki 2"](frame,i)}} === == Funkcje pełnych nazw jednostki trzeciej wersji == === {{Code|p["Pełna nazwa dyskusji jednostki 3"](frame,i)}} === === {{Code|p["Pełna nazwa przedmiotowa jednostki 3"](frame,i)}} === === {{Code|p["Pełna nazwa jednostki 3"](frame,i)}} === == Funkcje nazw jednostki == === {{Code|p["Nazwa jednostki"](frame,i)}} === == Funkcje nazw jednostki drugiej wersji == === {{Code|p["Nazwa jednostki 2"](frame,i)}} === === {{Code|p["Nazwa przedmiotowa jednostki 2"](frame,i)}} === === {{Code|p["Nazwa dyskusji jednostki 2"](frame,i)}} === == Funkcje nazw przestrzeni nazw trzeciej wersji == === {{Code|p["Nazwa przestrzeni nazw 3"](frame,i)}} === Funkcja pisze nazwę przestrzeni nazw, niezależnie, czy to jest przedmiotowa, czy dyskusji, według, i nie zawsze tylko, podanej w zmiennej {{Code|nazwa przestrzeni nazw}} dla pozycja bazowej w podanych parametrach szablonu rodzicu ramki dziecka, lub dla innej pozycji należy parametr podawać w formie {{Code|nazwa przestrzeni nazw 1}}, {{Code|Nazwa przestrzeni nazw 3}}, {{Code|nazwa przestrzeni nazw 3}},..., lub te parametry można podać w postaci ogólnej {{Code|nazwa przestrzeni nazw i}}. W tej funkcji trzeba też podawać parametry nazwy jednostek {{Code|nazwa jednostki}}, {{Code|nazwa jednostki 1}}, {{Code|nazwa jednostki 2}}, {{Code|nazwa jednostki 3}},... Parametry podaje się w parametrach rodzica wywołania tej funkcji {{Code|{{m|Pudełko|Nazwa przestrzeni nazw 3}}}} (ale ich nie trzeba podawać w dziecku, ale można) i w parametrach dziecka, jeśli chodzi o zmienną {{Code|numer jednostki}}, czyli np.: {{Code|{{m|Pudełko|Nazwa przestrzeni nazw 3|numer jednostki{{=}}<jakaś liczba całkowita dodatnia>}}}}. Te parametry przestrzenne zamiast w rodzicu w szablonie można podać w ramce dziecka, wtedy parametry dziecka mają pierwszeństwo. Przestrzeń nazw z parametrów nazw przestrzennych bazowych (bez numerka) może odpowiadać wartości przestrzeni głównej, to wtedy odpowiednia przestrzeń nazw z parametru nazwy jednostki się nie liczy w tej funkcji, aby się liczyła należy użyć funkcji {{Code|{{sr|#p["Nazwa przestrzeni nazw dyskusji 2"](frame,...)|p=Pudełko}}}}. Przestrzeń nazw z parametrów nazw przestrzennych numerkowych może odpowiadać wartości przestrzeni głównej, to wtedy odpowiednia przestrzeń nazw z parametru nazwy jednostki się liczy w tej funkcji, wtedy jest liczona nazwa przestrzeni nazw z tego parametru. Gdy parametry przestrzenne lub typ jednostki w drugim podejściu nie wskazują na przestrzeń główną, to wtedy działanie tej funkcji jest podobne do {{Code|{{sr|#p["Nazwa przestrzeni nazw"](frame,...)|p=Pudełko}}}}. Definicja skrótowa funkcji: <syntaxhighlight lang="lua"> p["Nazwa przestrzeni nazw 3"]=function(frame,czy_uwzglednic_alternatywna_nazwe,i)...end; </syntaxhighlight> Wtedy ciało funkcji tej, czyli jego definicja w środku, jest: <syntaxhighlight lang="lua"> -- Jest liczony numer parametru nazwy przestrzeni nazw, domyslnie chodzi tu o numer bazowy parametrów przestrzennych; local numer_jednostki=i or frame.args["numer jednostki"]; local liczba_numeru_jednostki=((numer_jednostki)and(tonumber(numer_jednostki)) or 0); local pudelko_pomocne_modul=require("Module:Pudełko/Pomocne"); -- Liczy nazwę przestrzeni nazw dyskusji na podstawie podanych parametrów; return pudelko_pomocne_modul.Uzyskanie_nazw_jednostki(frame,0,liczba_numeru_jednostki,nil,2); </syntaxhighlight> Parametry funkcji: * {{Code|frame}} - tablica ramki tablicy transportu, * {{Code|czy_uwzglednic_alternatywna_nazwe}} - czy ma uwzględniać nazwę przestrzeni nazw domyślną szablonu, dostępne wartości: {{Code|false}}, w której nazwa domyślna nie jest uwzględniana wtedy, oraz {{Code|nil}} i {{Code|true}}, które oznaczają to samo, w tym jeżeli ona jest uwzględniana, wtedy jest brany parametr pierwszy dziecka, który musi istnieć przy takiej wartości tego parametru, tzn. {{Code|{{m|Pudełko|Nazwa przestrzeni nazw 3|Szablon}}}}, a nazwa uzyskana nazwy przestrzeni nazw jest w takim przypadku błędna, a jeżeli nazwa domyślna jest błędna, czyli {{Code|{{m|Pudełko|Nazwa przestrzeni nazw 3|Moja przestrzeń}}}}, wtedy funkcja zwraca stan błędu {{Code|(błąd)}}. * {{Code|i}} - numer zmiennej nazwy przestrzeni nazw. Funkcja wykorzystuje {{Code|{{sr|#p.Nazwa_przestrzeni_nazw_2(frame,...)|p=Pudełko/Pomocne}}}} do wyznaczania ogólnego nazwy przestrzeni nazw dla pozycji bazowej i numerkowej, tzn. dla pozycji: jeden, dwa, trzy,..., itd, i ich ogólnej. Parametr ramki tablicy transportu rodzica szablonu: * {{Code|nazwa przestrzeni nazw}}, {{Code|nazwa przestrzeni nazw 1}}, {{Code|Nazwa przestrzeni nazw 3}}, {{Code|nazwa przestrzeni nazw 3}},..., {{Code|nazwa przestrzeni nazw i}} - nazwy przestrzeni nazw dla pozycji bazowej oraz zwykłej i ogólnej numerkowej, * {{Code|nazwa jednostki}}, {{Code|nazwa jednostki 1}}, {{Code|nazwa jednostki 2}}, {{Code|nazwa jednostki 3}},... - nazwy jednostek dla pozycji bazowej i numerkowej, * {{Code|typ jednostki}}, {{Code|typ jednostki 1}}, {{Code|typ jednostki 2}}, {{Code|typ jednostki 3}},..., {{Code|typ jednostki i}} - typy jednostek, którym odpowiadają pewne przestrzenie przedmiotowe, dla pozycji bazowej, numerkowej i ogólnej, ** {{Code|dyskusja typu jednostki}}, {{Code|dyskusja typu jednostki 1}}, {{Code|dyskusja typ jednostki 2}}, {{Code|dyskusja typ jednostki 3}},..., {{Code|dyskusja typ jednostki i}} - czy dany typ jednostki ma przedstawiać, jeśli niepusta, przestrzeń dyskusji dla pozycji bazowej, numerkowej i ogólnej. Parametry ramki tablicy transportu dziecka: * Parametry dziecka są takie same jak rodzica dla funkcji pudełkowej plus tu wymienione, * {{Code|numer jednostki}} - jak parametr {{Code|i}} nie został ustawiony, to wtedy liczy się ta zmienna. Przykłady: <syntaxhighlight lang="mediawiki"> {{Nazwa szablonu|nazwa przestrzeni nazw=Wikibooks|nazwa przestrzeni nazw=|nazwa przestrzeni nazw i=|nazwajednostki=Szablon:Strona|nazwa jednostki 2=Wikibooks:Strona}} <hr /> {{Nazwa szablonu|nazwa przestrzeni nazw=Wikibooks|nazwa przestrzeni nazw 1=Szablon|nazwa przestrzeni nazw i=|nazwa jednostki 2=Wikibooks:Strona}} </syntaxhighlight> W dziecku powiedzmy jest wywołanie, i szukamy nazwy przestrzeni nazw o numerze dwa, która została podana, ale istnieje za to jej wersji ogólna {{Code|nazwa przestrzeni nazw i}} i domyślna {{Code|nazwa przestrzeni nazw}}, ale wtedy dla tego numerkowego liczy się to ogólne z {{Code| i}}, a ponieważ ta nazwa jest pusta, więc będziemy liczyli nazwę przestrzeni nazw z {{Code|nazwa jednostki 2}}: <syntaxhighlight lang="mediawiki"> {{#invoke:Pudełko|Nazwa przestrzeni nazw 3}} <hr /> {{#invoke:Pudełko|Nazwa przestrzeni nazw 3|numer jednostki=2}} </syntaxhighlight> Na podstawie powyższego przykładu otrzymamy wynik o schemacie, nie wyniku, bo tam nie ma zmiennej {{Code|nazwa przestrzeni nazw 1}}, ale jest {{Code|nazwa przestrzeni nazw i}}: <syntaxhighlight lang="mediawiki"> <!-- Ale nie "nazwa przestrzeni nazw""; --> <!-- nazwa przestrzeni nazw=""; --> <!-- Czyli wynik: --> <!-- wynik pusty --> <!-- Widzimy, że wygenerowała się nazwa przestrzeni nazw, którą jest przestrzeń nazw główna, jest ciągiem pustym: ""; --> <hr /> <!-- Ale nie "Nazwa przestrzeni nazw 2", bo jej nie ma, ale za to istnieje "nazwa przestrzeni nazw i"; --> <!-- nazwa przestrzeni nazw 2=nazwa przestrzeni nazw i="", a nazwa jednostki 2="Wikibooks:Strona"; --> <!-- Czyli wynik: --> Wikibooks <!-- Widzimy, że wygenerowała się nazwa przestrzeni nazw, którą jest przestrzeń nieprogramowa, ale projektu, wychodząca z nazwy jednostek w tym przypadku z "nazwa jednostki 2"; --> </syntaxhighlight> Dla parametrów bazowych nienumerkowych istnieje zmienna {{Code|nazwa przestrzeni nazw}}, której waartość jest pusta,którajest zwracana przez tą funkcję. {{Hr}} Dla parametrów numerkowych nie jest brana w tym powyższym przykładzie zmienna {{Code|nazwa przestrzeni nazw}}, bo jej nie ma, ale za to jest {{Code|nazwa przestrzeni nazw i}}, bo ona występuje jako parametr domyślny ogólny dla parametrów numerkowych. Tytaj jest używana jest zmienna {{Code|nazwa jednostki 2}} do wygenerowania ostatecznego wyniku, bo jak można zauważyć, parametry przestrzenne wskazują na przestrzeń główną, a nazwy jednostek już nie. Przykłady w wikikodzie: * {{Code|{{m|Pudełko|Nazwa przestrzeni nazw 3|nazwa przestrzeni nazw{{=}}|nazwa jednostki{{=}}Wikibooks:Strona}}}} → {{Tt|{{#invoke:Pudełko|Nazwa przestrzeni nazw 3|nazwa przestrzeni nazw=|nazwa jednostki=Wikibooks:Szablon}}}} * {{Code|{{m|Pudełko|Nazwa przestrzeni nazw 3|nazwa przestrzeni nazw 2{{=}}|nazwa jednostki 2{{=}}Wikibooks:Strona|numer jednostki{{=}}2}}}} → {{Tt|{{#invoke:Pudełko|Nazwa przestrzeni nazw 3|nazwa przestrzeni nazw 2=|nazwa jednostki 2=Wikibooks:Szablon|numer jednostki=2}}}} Powyżej dla przykładu podano parametry nie w rodzicu w szablonie, tylko w dziecku, jeśli chodzi o parametry nazw przestrzeni nazw i nazw jednostek, ale ich się za to nie powinno podawać w tych ramach, tylko w szablonach, w których wywoływane są te ramki pudełek {{Code|{{m|Pudełko}}}}, ale tak tutaj tak zrobiono by było najłatwiej sprawdzić działanie tego typu funkcji. Analogicznie możemy podawać parametry typu jednostki, np.: wywołaniu modułowym {{Code|{{m|Pudełko|Nazwa przestrzeni nazw 3|typ jednostki 2{{=}}Podręcznik|nazwa jednostki 2{{=}}Szablon:Strona|numer jednostki{{=}}2}}}} (ale wtedy jest brana przestrzeń nazw z nazwy jednostki), ale o tym więcej w rozdziałach {{Code|{{sr|#p["Typ jednostki 3"](frame,i)|p=Pudełko}}}} w „{{sr|#Funkcje typu jednostki|p=Pudełko}}”, on definiuje przestrzenie przedmiotowe, ale można użyć parametru dyskusji typu jednostki z wartością niepustą, wtedy wyświetli się nazwa przestrzeni nazw dyskusji. Jeżeli typ jednostki bazowy wskazuje na przestrzeń nazw główną, wtedy się nie liczą parametry nazw jednostek, a na numerkowy, wtedy się liczy. Również parametry typu jednostki nie powinno się podawać w dziecku w ramce, tylko w rodzicu w szablonie jako parametry, w którym ta ramka jest wywoływana, ale tutaj podano jedynie dla przykładu, jak najłatwiej sprawdzić działanie tych parametrów tej funkcji. Najpierw w funkcji nagłówku brane są parametry nazw przestrzeni nazw, a jeżeli ich nie ma, to parametry typu jednostki, a jeżeli nie ma lub parametry przestrzenne wskazują na przestrzeń główną, i nie ma nazwy jednostki, to generowane są nazwy tej funkcji na podstawie aktualnej strony. === {{Code|p["Nazwa przedmiotowej przestrzeni nazw 3"](frame,i)}} === === {{Code|p["Nazwa przestrzeni nazw dyskusji 3"](frame,i)}} === == Funkcje nazw jednostki trzeciej wersji == === {{Code|p["Nazwa jednostki 3"](frame,i)}} === === {{Code|p["Nazwa przedmiotowa jednostki 3"](frame,i)}} === === {{Code|p["Nazwa dyskusji jednostki 3"](frame,i)}} === == Funkcje typu jednostki == === {{Code|p["Typ jednostki"](frame,i)}} === === {{Code|p["Typ jednostki 2"](frame,i)}} === === {{Code|p["Typ jednostki 3"](frame,i)}} === === Funkcje typu jednostki przedmiotowe === ==== {{Code|p["Przedmiotowy typ jednostki"](frame,i)}} ==== ==== {{Code|p["Przedmiotowy typ jednostki 2"](frame,i)}} ==== ==== {{Code|p["Przedmiotowy typ jednostki 3"](frame,i)}} ==== === Fukcje typu jednostki dyskusji === ==== {{Code|p["Dyskusyjny typ jednostki"](frame,i)}} ==== ==== {{Code|p["Dyskusyjny typ jednostki 2"](frame,i)}} ==== ==== {{Code|p["Dyskusyjny typ jednostki 3"](frame,i)}} ==== == Funkcje chech pudełka == === {{Code|p["Cecha pudełka"](frame)}} === === {{Code|p["Przedmiotowa cecha pudełka"](frame)}} === === {{Code|p["Dyskusyjna cecha pudełka"](frame)}} === == Fukcje ogólnego pudełka == === {{Code|p["Ogólne pudełko"](frame)}} === == Funkcje ogólne == === {{Code|p["Tekst pudełka"](frame)}} === == Funkcje błędów pudełka == === {{Code|p["Błędy pudełka"](frame)}} === === {{Code|p["Przedmiotowe błędy pudełka"](frame)}} === === {{Code|p["Dyskusyjne błędy pudełka"](frame)}} === == Funkcje nazw stron == === {{Code|p["Nazwa strony głównej projektu"](frame,i)}} === === {{Code|p["Nazwa strony głównej dla dzieci projektu"](frame,i)}} === == Funkcje kodów == === {{Code|p["Kod języka"](frame,i)}} === === {{Code|p["Kod projektu"](frame,i)}} === === {{Code|p["Klucz projektu"](frame,i)}} === == Funkcje wiki == === {{Code|p["Inny niż język bieżący wiki"](frame)}} === === {{Code|p["Inne niż lokalne wiki"](frame)}} === === {{Code|p["Inne niż bieżące wiki"](frame)}} === == Funkcje typów parametrów, czy podane je == === {{Code|p["Podano parametry nienazwane"](frame)}} === === {{Code|p["Podano parametry numerowane"](frame)}} === === {{Code|p["Podano parametry nazwane"](frame)}} === == Funkcje kodów tego projektu == === {{Code|p["Kod projektu tego projektu"](frame)}} === === {{Code|p["Kod języka tego projektu"](frame)}} === === {{Code|p["Klucz projektu tego projektu"](frame)}} === == Funkcje stron == === {{Code|p["Strona główna tego projektu"](frame)}} === === {{Code|p["Strona główna dla dzieci tego projektu"](frame)}} === == Funkcje nazw stron drugiej wersji == === {{Code|p["Nazwa strony głównej dla dzieci projektu 2"](frame)}} === === {{Code| p["Nazwa strony głównej projektu 2"](frame)}} === {{BrClear}} <noinclude><!-- -->{{ProstaStronaKoniec}}<!-- -->{{Kategoria|Opisy funkcji, w Lua w Scribunto, w modułach}}<!-- --></noinclude> 7okcvq775b0c1exv8kabkaad1939srt 540411 540408 2026-04-23T19:25:18Z Persino 2851 /* {{Code|p["Nazwa przestrzeni nazw 3"](frame,i)}} */ 540411 wikitext text/x-wiki <noinclude>{{ProstaStronaStart | nagłówek = {{Podrozdział|{{ld2|Pudełko}}|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 pudelko_modul=require("Module:Pudełko"); </syntaxhighlight> dzięki, któremu można wypisywać funkcje należącego do niego. Posługuje się na parametrach pudełkowych {{Parametr|nazwa przestrzeni nazw}} (czy też bez numerka {{Parametr|nazwa przestrzeni nazw i}} dla tego numerowanego) lub te z numerkiem po jednej spacji w nich (ale nie dla tego z końcówką {{Code| i}}) mogą zostać użyte jako parametry szablonu. Moduł {{Code|{{ld2|Pudełko}}}} przedstawia funkcje nazw w oparciu o funkcje nazw {{Code|{{ld2|Nazwy}}}}, generuje on nazwy za pomocą parametrów pudełkowych podanych poniżej. Parametr {{Parametr|nazwa jednostki}} (lub parametr {{Parametr|cel}} dla numerka tego pierwszego, tego alternatywnego), lub te z numerkiem po jednej spacji w nazwie parametru, albo numerowane numerkami {{Code|1}}, {{Code|2}},..., mogą zostać użyte jako parametry szablonu. Parametry określające rodzaj jednostki {{Parametr|typ jednostki}} z {{Parametr|dyskusja typu jednostki}}, itp. w wersjach z numerkiem po jednej spacji w nich mogą zostać użyte jako parametry szablonu. A te tymi numerowanymi liczbami naturalnymi {{Tt|nazwy jednostki}} od jedynki wzwyż poprzez szablon, w którym są one użyte, one też mogą być użyte z dwukropkiem, te numerowane, na samym początku nazwy, wtedy one są traktowane jako pełne nazwy strony, i wtedy one nie zostaną z interpretowane, że do nich trzeba użyć parametr odpowiedni z nazwą przetrzeni nazw z tego numerowanego, czy ogólny, aby utworzyć znów inną pełną nazwę strony dla tego numerka. Zestawienie: * {{Code|nazwa przestrzeni nazw}} i {{Code|nazwa przestrzeni nazw i}} (ogólna nazwa przestrzeni nazw dla wszystkich numerków, i tych numerowanych jednostek) - i to pierwsze z numerkiem, tzn. {{Code|nazwa przestrzeni nazw 1}}, {{Code|nazwa przestrzeni nazw 2}}, ..., * {{Code|nazwa jednostki}} - i te z numerkiem: {{Code|nazwa jednostki 1}}, {{Code|nazwa jednostki 2}}, ..., lub gdy jest zamiast tego parametrem numerowany, {{Code|1}}, {{Code|2}},..., który dla tego pierwszego może być uznany jako: {{Code|cel}} {{=}} {{Code|1}}, * {{Code|typ jednostki}} (parametr bazowy) i {{Code|typ jednostki i}} (parametr domyślny numerkowy) - i te z numerkiem: {{Code|typ jednostki 1}}, {{Code|typ jednostki 2}}, ..., tzn. gdy chcemy określić z jakim typem jednostki mamy do czynienia w zależności do jakiej przestrzeni nazw należy, a w danej, czy jest on np. programowy, czy tylko jest opisem, jak to bywa w szablonach {{Np|Template|link=tak}}, podobnie jest w przypadku {{Np|Module|link=tak}}, czy jak jest w innych przestrzeniach nazw, ** {{Code|dyskusja typu jednostki}} (parametr bazowy) i {{Code|dyskusja typu jednostki i}} (parametr domyślny numerkowy) - i te z numerkiem: {{Code|dyskusja typu jednostki 1}}, {{Code|dyskusja typu jednostki 2}}, ..., gdy chcemy określić wartością niepustą,że chodzi tutaj o typ jednostki. == {{Code|p.CzyNiepoprawnaNazwa(nazwa_jednostki)}} == Funkcja sprawdzajaca, czy jest poprawnie podana nazwa jednostki, czy ma poprawną nazwę. Znakami tymi, z których nie powinna składać się nazwa jest {{Code|<nowiki>{}<>|[]#\n</nowiki>}} i dodatkowo znak {{Code|&#127;}} (kod {{Code|{{Nowiki|&#127;}}}}). Też nie może składać się z trzech znaków tyldy, tzn. {{Code|<nowiki>~~~</nowiki>}}. Również w swojej budowie nie może składać się ze kodów {{Strong|HTML}} literowych o wzorze {{Code|{{Nowiki|&(%a+);}}}}. Natomiast może składać się z {{Code|{{Nowiki|&#(%d+);}}}} i {{Code|{{Nowiki|&#x(%x+);}}}}, ale w pierw te kody muszą być zamienione na normalne znaki. Skrótowa definicja funkcji: <syntaxhighlight lang="lua"> function p.CzyNiepoprawnaNazwa(nazwa_jednostki)...end; </syntaxhighlight> Wtedy ciało funkcji tej, czyli jego definicja w środku, jest: <syntaxhighlight lang="lua"> -- Moduł: "Moduł:Html/dane", służy do ładowania znaku o kodzie HTML "&#127;"; local html_dane_modul=mw.loadData("Module:Html/dane"); return mw.ustring.match(nazwa_jednostki,"[{}<>|%[%]#\n"..html_dane_modul.znak_127.."]+") or mw.ustring.match(nazwa_jednostki,"~~~") or mw.ustring.match(nazwa_jednostki,"&(%a+);"); </syntaxhighlight> Parametry: * {{Code|nazwa_jednostki}} - nazwa jednostki do sprawdzenia. Przykłady: <syntaxhighlight lang="lua"> local pudelko_modul=require("Module:Pudełko"); -- Podana przykładowa niepoprawna nazwa jedostki local nazwa_jednostki="Nazwa pliku [[Nazwa linku w pliku]]"; -- Fukcja zwróci wartość: local czy_poprawna_nazwa=true; local czy_poprawna_nazwa=pudelko_modul.CzyNiepoprawnaNazwa(nazwa_jednostki); </syntaxhighlight> == Funkcje nazw przestrzeni nazw == === {{Code|p["Nazwa przestrzeni nazw"](frame,...)}} === Funkcja pisze nazwę przestrzeni nazw, niezależnie, czy to jest przedmiotowa, czy dyskusji, według podanej w zmiennej {{Code|nazwa przestrzeni nazw}} dla pozycja bazowej w podanych parametrach szablonu rodzicu ramki dziecka, lub dla innej pozycji należy parametr podawać w formie {{Code|nazwa przestrzeni nazw 1}}, {{Code|nazwa przestrzeni nazw 2}}, {{Code|nazwa przestrzeni nazw 3}},..., lub te parametry można podać w postaci ogólnej {{Code|nazwa przestrzeni nazw i}}. Parametry podaje się w parametrach rodzica wywołania tej funkcji {{Code|{{m|Pudełko|Nazwa przestrzeni nazw}}}} (ale ich nie trzeba podawać w dziecku, ale można) i w parametrach dziecka, jeśli chodzi o zmienną {{Code|numer jednostki}}, czyli np.: {{Code|{{m|Pudełko|Nazwa przestrzeni nazw|numer jednostki{{=}}<jakaś liczba całkowita dodatnia>}}}}. Te parametry przestrzenne zamiast w rodzicu w szablonie można podać w ramce dziecka, wtedy parametry dziecka mają pierwszeństwo. Przestrzeń nazw z parametrów nazw przestrzennych może odpowiadać wartości przestrzeni głównej, to wtedy odpowiednia przestrzeń nazw z parametru nazwy jednostki się nie liczy w tej funkcji, aby się liczyła należy użyć funkcji {{Code|{{sr|#p["Nazwa przestrzeni nazw 2"](frame,...)|p=Pudełko}}}}. Definicja skrótowa funkcji: <syntaxhighlight lang="lua"> p["Nazwa przestrzeni nazw"]=function(frame,czy_uwzglednic_alternatywna_nazwe,i)...end; </syntaxhighlight> Wtedy ciało funkcji tej, czyli jego definicja w środku, jest: <syntaxhighlight lang="lua"> -- Jest liczony numer parametru nazwy przestrzeni nazw, domyslnie chodzi tu o numer bazowy parametrów przestrzennych; local numer_jednostki=i or frame.args["numer jednostki"]; local liczba_numer_jednostki=((numer_jednostki)and(tonumber(numer_jednostki))or 0); local pudelko_pomocne_modul=require("Module:Pudełko/Pomocne"); -- Liczy nazwę przestrzeni nazw na podstawie podanych parametrów; return pudelko_pomocne_modul.Nazwa_przestrzeni_nazw(frame,0, czy_uwzglednic_alternatywna_nazwe,liczba_numer_jednostki); </syntaxhighlight> Parametry funkcji: * {{Code|frame}} - tablica ramki tablicy transportu, * {{Code|czy_uwzglednic_alternatywna_nazwe}} - czy ma uwzględniać nazwę przestrzeni nazw domyślną szablonu, dostępne wartości: {{Code|false}}, w której nazwa domyślna nie jest uwzględniana wtedy, oraz {{Code|nil}} i {{Code|true}}, które oznaczają to samo, w tym jeżeli ona jest uwzględniana, wtedy jest brany parametr pierwszy dziecka, który musi istnieć przy takiej wartości tego parametru, tzn. {{Code|{{m|Pudełko|Nazwa przestrzeni nazw|Szablon}}}}, a nazwa uzyskana nazwy przestrzeni nazw jest w takim przypadku błędna, a jeżeli nazwa domyślna jest błędna, czyli {{Code|{{m|Pudełko|Nazwa przestrzeni nazw|Moja przestrzeń}}}}, wtedy funkcja zwraca stan błędu {{Code|(błąd)}}. * {{Code|i}} - numer zmiennej nazwy przestrzeni nazw. Funkcja wykorzystuje {{Code|{{sr|#p.Nazwa_przestrzeni_nazw(frame,...)|p=Pudełko/Pomocne}}}} do wyznaczania ogólnego nazwy przestrzeni nazw dla pozycji bazowej i numerkowej, tzn. dla pozycji: jeden, dwa, trzy,..., itd, i ich ogólnej. Parametr ramki tablicy transportu rodzica szablonu: * {{Code|nazwa przestrzeni nazw}}, {{Code|nazwa przestrzeni nazw 1}}, {{Code|nazwa przestrzeni nazw 2}}, {{Code|nazwa przestrzeni nazw 3}},..., {{Code|nazwa przestrzeni nazw i}} - nazwy przestrzeni nazw dla pozycji bazowej oraz zwykłej i ogólnej numerkowej, * {{Code|typ jednostki}}, {{Code|typ jednostki 1}}, {{Code|typ jednostki 2}}, {{Code|typ jednostki 3}},..., {{Code|typ jednostki i}} - typy jednostek, którym odpowiadają pewne przestrzenie przedmiotowe, dla pozycji bazowej, numerkowej i ogólnej, ** {{Code|dyskusja typu jednostki}}, {{Code|dyskusja typu jednostki 1}}, {{Code|dyskusja typ jednostki 2}}, {{Code|dyskusja typ jednostki 3}},..., {{Code|dyskusja typ jednostki i}} - czy dany typ jednostki ma przedstawiać, jeśli niepusta, przestrzeń dyskusji dla pozycji bazowej, numerkowej i ogólnej. Parametry ramki tablicy transportu dziecka: * Parametry dziecka są takie same jak rodzica dla funkcji pudełkowej plus tu wymienione, * {{Code|numer jednostki}} - jak parametr {{Code|i}} nie został ustawiony, to wtedy liczy się ta zmienna. Przykłady: <syntaxhighlight lang="mediawiki"> {{Nazwa szablonu|nazwa przestrzeni nazw=Wikibooks|nazwa przestrzeni nazw 2=Szablon|nazwa przestrzeni nazw i=Moduł}} </syntaxhighlight> W dziecku powiedzmy jest wywołanie, i szukamy nazwy przestrzeni nazw o numerze dwa, która nie została podana, ale istnieje za to jej wersji ogólna {{Code|nazwa przestrzeni nazw i}} i domyślna {{Code|nazwa przestrzeni nazw}}: <syntaxhighlight lang="mediawiki"> {{#invoke:Pudełko|Nazwa przestrzeni nazw|numer jednostki=1}} </syntaxhighlight> Na podstawie powyższego przykładu otrzymamy wynik o schemacie, nie wyniku, bo tam nie ma zmiennej {{Code|nazwa przestrzeni nazw 1}}, ale jest {{Code|nazwa przestrzeni nazw i}}: <syntaxhighlight lang="mediawiki"> <!-- Ale nie "nazwa przestrzeni nazw", bo jej nie ma, ale za to istnieje "nazwa przestrzeni nazw i"; --> <!-- nazwa przestrzeni nazw 2=nazwa przestrzeni nazw i=Moduł; --> <!-- Czyli wynik: --> Moduł <!-- Widzimy, że wygenerowała się nazwa przestrzeni nazw, którą jest przestrzeń programowa, którą również jest "Szablon"; --> </syntaxhighlight> Nie jest brana w tym powyższym przykładzie zmienna {{Code|nazwa przestrzeni nazw}}, bo jej nie ma, ale za to jest {{Code|nazwa przestrzeni nazw i}}, bo ona występuje jako parametr domyślny ogólny dla parametrów numerkowych. Przykłady w wikikodzie: * {{Code|{{m|Pudełko|Nazwa przestrzeni nazw|numer jednostki{{=}}2}}}} → {{Tt|{{#invoke:Pudełko|Nazwa przestrzeni nazw|numer jednostki=2}}}} * {{Code|{{m|Pudełko|Nazwa przestrzeni nazw|Szablon|nazwa przestrzeni nazw i{{=}}Moja przestrzeń|numer jednostki{{=}}2}}}} → {{Tt|{{#invoke:Pudełko|Nazwa przestrzeni nazw|Szablon|nazwa przestrzeni nazw i=Moja przestrzeń|numer jednostki=2}}}} * {{Code|{{m|Pudełko|Nazwa przestrzeni nazw|nazwa przestrzeni nazw 2{{=}}Szablon|numer jednostki{{=}}2}}}} → {{Tt|{{#invoke:Pudełko|Nazwa przestrzeni nazw|nazwa przestrzeni nazw 2=Szablon|numer jednostki=2}}}} * {{Code|{{m|Pudełko|Nazwa przestrzeni nazw|nazwa przestrzeni nazw 2{{=}}Szablon|numer jednostki{{=}}2}}}} → {{Tt|{{#invoke:Pudełko|Nazwa przestrzeni nazw|nazwa przestrzeni nazw i=Szablon|numer jednostki=2}}}} * {{Code|{{m|Pudełko|Nazwa przestrzeni nazw|nazwa przestrzeni nazw{{=}}Szablon|numer jednostki{{=}}2}}}} → {{Tt|{{#invoke:Pudełko|Nazwa przestrzeni nazw|nazwa przestrzeni nazw=Szablon|numer jednostki=2}}}} Powyżej dla przykładu podano parametry nie w rodzicu w szablonie, tylko w dziecku, jeśli chodzi o parametry nazw przestrzeni nazw, ale ich się za to nie powinno podawać w tych ramach, tylko w szablonach, w których wywoływane są te ramki pudełek {{Code|{{m|Pudełko}}}}, ale tak tutaj tak zrobiono by było najłatwiej sprawdzić działanie tego typu funkcji. Analogicznie możemy podawać parametry typu jednostki, np.: wywołaniu modułowym {{Code|{{m|Pudełko|Nazwa przestrzeni nazw|typ jednostki 2{{=}}strona szablonu|numer jednostki{{=}}2}}}}, ale o tym więcej w rozdziałach {{Code|{{sr|# p["Typ jednostki"](frame,i)|p=Pudełko}}}} w „{{sr|#Funkcje typu jednostki|p=Pudełko}}”, on definiuje przestrzenie przedmiotowe, ale można użyć parametru dyskusji typu jednostki z wartością niepustą, wtedy wyświetli się nazwa przestrzeni nazw dyskusji. Również parametry typu jednostki nie powinno się podawać w dziecku w ramce, tylko w rodzicu w szablonie jako parametry, w którym ta ramka jest wywoływana, ale tutaj podano jedynie dla przykładu, jak najłatwiej sprawdzić działanie tych parametrów tej funkcji. Najpierw w funkcji nagłówku brane są parametry nazw przestrzeni nazw, a jeżeli ich nie ma, to parametry typu jednostki, a jeżeli nie ma, to generowane są nazwy na podstawie aktualnego modułu. === {{Code|p["Nazwa przedmiotowej przestrzeni nazw"](frame,...)}} === Funkcja pisze przedmiotową nazwę przestrzeni nazw jakikolwiek nazwy przestrzeni nazw (tzn. nazwę przedmiotową nazwy przestrzenie nazw, czyli nie dyskusji, zamieniana jest na nią samą, czyli identyfikator przestrzeni się nie zmienia, a dyskusji, nie przedmiotową, przekształca się na przedmiotową jej odpowiadającą, czyli w tym przypadku identyfikator przestrzeni zmniejsza się o numer mniej), według podanej w zmiennej {{Code|nazwa przestrzeni nazw}} dla pozycja bazowej w podanych parametrach szablonu rodzicu ramki dziecka, lub dla innej pozycji należy parametr podawać w formie {{Code|nazwa przestrzeni nazw 1}}, {{Code|nazwa przestrzeni nazw 2}}, {{Code|nazwa przestrzeni nazw 3}},..., lub te parametry można podać w postaci ogólnej {{Code|nazwa przestrzeni nazw i}}. Parametry podaje się w parametrach rodzica wywołania tej funkcji {{Code|{{m|Pudełko|Nazwa przedmiotowej przestrzeni nazw}}}} (ale ich nie trzeba podawać w dziecku, ale można) i w parametrach dziecka, jeśli chodzi o zmienną {{Code|numer jednostki}}, czyli np.: {{Code|{{m|Pudełko|Nazwa przedmiotowej przestrzeni nazw|numer jednostki{{=}}<jakaś liczba całkowita dodatnia>}}}}. Te parametry przestrzenne zamiast w rodzicu w szablonie można podać w ramce dziecka, wtedy parametry dziecka mają pierwszeństwo. Parametry przestrzenne mogą mogą być podane w postaci przestrzeni przedmiotowej lub dyskusji, ale ta funkcja zawsze ją zamienia na przedmiotową. Przestrzeń nazw z parametrów nazw przestrzennych może odpowiadać wartości przestrzeni głównej, to wtedy odpowiednia przestrzeń nazw z parametru nazwy jednostki się nie liczy w tej funkcji, aby się liczyła należy użyć funkcji {{Code|{{sr|#p["Nazwa przedmiotowej przestrzeni nazw 2"](frame,...)|p=Pudełko}}}}. Definicja skrótowa funkcji: <syntaxhighlight lang="lua"> p["Nazwa przedmiotowej przestrzeni nazw"]=function(frame,czy_uwzglednic_alternatywna_nazwe,i)...end; </syntaxhighlight> Wtedy ciało funkcji tej, czyli jego definicja w środku, jest: <syntaxhighlight lang="lua"> -- Jest liczony numer parametru nazwy przestrzeni nazw, domyslnie chodzi tu o numer bazowy parametrów przestrzennych; local numer_jednostki=i or frame.args["numer jednostki"]; local liczba_numer_jednostki=((numer_jednostki)and(tonumber(numer_jednostki))or 0); local pudelko_pomocne_modul=require("Module:Pudełko/Pomocne"); -- Liczy nazwę przestrzeni nazw przedmiotową na podstawie podanych parametrów; return pudelko_pomocne_modul.Nazwa_przestrzeni_nazw(frame,1, czy_uwzglednic_alternatywna_nazwe,liczba_numer_jednostki); </syntaxhighlight> Parametry funkcji: * {{Code|frame}} - tablica ramki tablicy transportu, * {{Code|czy_uwzglednic_alternatywna_nazwe}} - czy ma uwzględniać nazwę przestrzeni nazw domyślną szablonu, dostępne wartości: {{Code|false}}, w której nazwa domyślna nie jest uwzględniana wtedy, oraz {{Code|nil}} i {{Code|true}}, które oznaczają to samo, w tym jeżeli ona jest uwzględniana, wtedy jest brany parametr pierwszy dziecka, który musi istnieć przy takiej wartości tego parametru, tzn. {{Code|{{m|Pudełko|Nazwa przedmiotowej przestrzeni nazw|Dyskusja szablonu}}}} - ta nazwa domyślna zostanie zamieniona na przedmiotową, a jak ona by była przedmiotowa, to żadnej zamiany by nie było, a nazwa uzyskana z nazwy przestrzeni nazw z parametrów przestrzennych jest w takim przypadku błędna, to w takim razie brany jest ten parametr, a jeżeli ta nazwa domyślna jest błędna, czyli {{Code|{{m|Pudełko|Nazwa przedmiotowej przestrzeni nazw|Moja przestrzeń}}}}, wtedy funkcja zwraca stan błędu {{Code|(błąd)}}. * {{Code|i}} - numer zmiennej nazwy przestrzeni nazw. Funkcja wykorzystuje {{Code|{{sr|#p.Nazwa_przestrzeni_nazw(frame,...)|p=Pudełko/Pomocne}}}} do wyznaczania ogólnego nazwy przestrzeni nazw dla pozycji bazowej i numerkowej, tzn. dla pozycji: jeden, dwa, trzy,..., itd, i ich ogólnej. Parametr ramki tablicy transportu rodzica szablonu: * {{Code|nazwa przestrzeni nazw}}, {{Code|nazwa przestrzeni nazw 1}}, {{Code|nazwa przestrzeni nazw 2}}, {{Code|nazwa przestrzeni nazw 3}},..., {{Code|nazwa przestrzeni nazw i}} - nazwy przestrzeni nazw dla pozycji bazowej oraz zwykłej i ogólnej numerkowej, * {{Code|typ jednostki}}, {{Code|typ jednostki 1}}, {{Code|typ jednostki 2}}, {{Code|typ jednostki 3}},..., {{Code|typ jednostki i}} - typy jednostek, którym odpowiadają pewne przestrzenie przedmiotowe, dla pozycji bazowej, numerkowej i ogólnej. Parametry ramki tablicy transportu dziecka: * Parametry dziecka są takie same jak rodzica dla funkcji pudełkowej plus tu wymienione, * {{Code|numer jednostki}} - jak parametr {{Code|i}} nie został ustawiony, to wtedy liczy się ta zmienna. Przykłady: <syntaxhighlight lang="mediawiki"> {{Nazwa szablonu|nazwa przestrzeni nazw=Dyskusja Wikibooks|nazwa przestrzeni nazw 2=Dyskusja szablonu|nazwa przestrzeni nazw i=Dyskusja modułu}} </syntaxhighlight> W dziecku powiedzmy jest wywołanie, i szukamy nazwy przestrzeni nazw o numerze dwa, która nie została podana, ale istnieje za to jej wersji ogólna {{Code|nazwa przestrzeni nazw i}} i domyślna {{Code|nazwa przestrzeni nazw}}: <syntaxhighlight lang="mediawiki"> {{#invoke:Pudełko|Nazwa przedmiotowej przestrzeni nazw|numer jednostki=1}} </syntaxhighlight> Na podstawie powyższego przykładu otrzymamy wynik o schemacie, nie wyniku, bo tam nie ma zmiennej {{Code|nazwa przestrzeni nazw 1}}, ale jest {{Code|nazwa przestrzeni nazw i}}: <syntaxhighlight lang="mediawiki"> <!-- Ale nie "nazwa przestrzeni nazw", bo jej nie ma, ale za to istnieje "nazwa przestrzeni nazw i"; --> <!-- nazwa przestrzeni nazw 2=nazwa przestrzeni nazw i=Dyskusja modułu; --> <!-- Czyli wynik: --> Moduł <!-- Widzimy, że wygenerowała się nazwa przestrzeni nazw, którą jest przestrzeń przedmiotowa programowa przestrzeni dyskusji "Dyskusja modułu", którą również jest "Szablon" jego przestrzeni dyskusji "Dyskusja szablonu", a dla ich przestrzeni przedmiotowej, zamiast dyskusji, to samo przekształca się na to samo; --> </syntaxhighlight> Nie jest brana w tym powyższym przykładzie zmienna {{Code|nazwa przestrzeni nazw}}, bo jej nie ma, ale za to jest {{Code|nazwa przestrzeni nazw i}}, bo ona występuje jako parametr domyślny ogólny dla parametrów numerkowych. Przykłady w wikikodzie: * {{Code|{{m|Pudełko|Nazwa przedmiotowej przestrzeni nazw|numer jednostki{{=}}2}}}} → {{Tt|{{#invoke:Pudełko|Nazwa przedmiotowej przestrzeni nazw|numer jednostki=2}}}} * {{Code|{{m|Pudełko|Nazwa przedmiotowej przestrzeni nazw|Dyskusja szablonu|nazwa przestrzeni nazw i{{=}}Moja przestrzeń|numer jednostki{{=}}2}}}} → {{Tt|{{#invoke:Pudełko|Nazwa przedmiotowej przestrzeni nazw|Dyskusja szablonu|nazwa przestrzeni nazw i=Moja przestrzeń|numer jednostki=2}}}} * {{Code|{{m|Pudełko|Nazwa przedmiotowej przestrzeni nazw|nazwa przestrzeni nazw 2{{=}}Dyskusja szablonu|numer jednostki{{=}}2}}}} → {{Tt|{{#invoke:Pudełko|Nazwa przedmiotowej przestrzeni nazw|nazwa przestrzeni nazw 2=Dyskusja szablonu|numer jednostki=2}}}} * {{Code|{{m|Pudełko|Nazwa przedmiotowej przestrzeni nazw|nazwa przestrzeni nazw 2{{=}}Dyskusja szablonu|numer jednostki{{=}}2}}}} → {{Tt|{{#invoke:Pudełko|Nazwa przedmiotowej przestrzeni nazw|nazwa przestrzeni nazw i=Dyskusja szablonu|numer jednostki=2}}}} * {{Code|{{m|Pudełko|Nazwa przedmiotowej przestrzeni nazw|nazwa przestrzeni nazw{{=}}Dyskusja szablonu|numer jednostki{{=}}2}}}} → {{Tt|{{#invoke:Pudełko|Nazwa przedmiotowej przestrzeni nazw|nazwa przestrzeni nazw=Dyskusja szablonu|numer jednostki=2}}}} Powyżej dla przykładu podano parametry nie w rodzicu w szablonie, tylko w dziecku, jeśli chodzi o parametry nazw przestrzeni nazw, ale ich się za to nie powinno podawać w tych ramach, tylko w szablonach, w których wywoływane są te ramki pudełek {{Code|{{m|Pudełko}}}}, ale tak tutaj tak zrobiono by było najłatwiej sprawdzić działanie tego typu funkcji. Analogicznie możemy podawać parametry typu jednostki, np.: wywołaniu modułowym {{Code|{{m|Pudełko|Nazwa przedmiotowej przestrzeni nazw|typ jednostki 2{{=}}strona szablonu|numer jednostki{{=}}2}}}}, ale o tym więcej w rozdziałach {{Code|{{sr|# p["Przedmiotowy typ jednostki"](frame,i)|p=Pudełko}}}} w „{{sr|#Funkcje typu jednostki|p=Pudełko}}”, ale wtedy ta sama nazwa przestrzeni nazw reprezentowana przez {{Parametr|typ jednostki 2|strona szablonu}}, jest zamieniana na to samo, lepiej jest tutaj używać parametrów przestrzennych nazw niż typu jednostki, bo typ jednostki ma taką samą wartość dla przestrzeni przedmiotowej, co dyskusji. Tutaj parametr dyskusji typu jednostki bazowy i numerkowy ogólny, czy szczegółowy, nie gra roli, bo nawet, gdy wygenerujemy nazwę przestrzeni dyskusji za pomoca tego parametru, to i tak otrzymamy na samym końcu jego nazwę przedmiotową. Również parametry typu jednostki nie powinno się podawać w dziecku w ramce, tylko w rodzicu w szablonie jako parametry, w którym ta ramka jest wywoływana, ale tutaj podano jedynie dla przykładu, jak najłatwiej sprawdzić działanie tych parametrów tej funkcji. Najpierw w funkcji nagłówku brane są parametry nazw przestrzeni nazw, a jeżeli ich nie ma, to parametry typu jednostki, a jeżeli nie ma, to generowane są nazwy na podstawie aktualnego modułu. === {{Code|p["Nazwa przestrzeni nazw dyskusji"](frame,...)}} === Funkcja pisze nazwę przestrzeni nazw dyskusji jakikolwiek nazwy przestrzeni nazw (tzn. nazwę przedmiotową nazwy przestrzenie nazw, czyli nie dyskusji, zamieniana jest na dyskusji, czyli identyfikator przestrzeni się zmienia jeden wyżej, a dyskusji, nie przedmiotową, przekształca się na tą samą), według podanej w zmiennej {{Code|nazwa przestrzeni nazw}} dla pozycja bazowej w podanych parametrach szablonu rodzicu ramki dziecka, lub dla innej pozycji należy parametr podawać w formie {{Code|nazwa przestrzeni nazw 1}}, {{Code|nazwa przestrzeni nazw 2}}, {{Code|nazwa przestrzeni nazw 3}},..., lub te parametry można podać w postaci ogólnej {{Code|nazwa przestrzeni nazw i}}. Parametry podaje się w parametrach rodzica wywołania tej funkcji {{Code|{{m|Pudełko|Nazwa przestrzeni nazw dyskusji}}}} (ale ich nie trzeba podawać w dziecku, ale można) i w parametrach dziecka, jeśli chodzi o zmienną {{Code|numer jednostki}}, czyli np.: {{Code|{{m|Pudełko|Nazwa przestrzeni nazw dyskusji|numer jednostki{{=}}<jakaś liczba całkowita dodatnia>}}}}. Te parametry przestrzenne zamiast w rodzicu w szablonie można podać w ramce dziecka, wtedy parametry dziecka mają pierwszeństwo. Parametry przestrzenne mogą mogą być podane w postaci przestrzeni przedmiotowej lub dyskusji, ale ta funkcja zawsze ją zamienia na dyskusji. Przestrzeń nazw z parametrów nazw przestrzennych może odpowiadać wartości przestrzeni głównej, to wtedy odpowiednia przestrzeń nazw z parametru nazwy jednostki się nie liczy w tej funkcji, aby się liczyła należy użyć funkcji {{Code|{{sr|#p["Nazwa przestrzeni nazw dyskusji 2"](frame,...)|p=Pudełko}}}}. Definicja skrótowa funkcji: <syntaxhighlight lang="lua"> p["Nazwa przestrzeni nazw dyskusji"]=function(frame,czy_uwzglednic_alternatywna_nazwe,i)...end; </syntaxhighlight> Wtedy ciało funkcji tej, czyli jego definicja w środku, jest: <syntaxhighlight lang="lua"> -- Jest liczony numer parametru nazwy przestrzeni nazw, domyslnie chodzi tu o numer bazowy parametrów przestrzennych; local numer_jednostki=i or frame.args["numer jednostki"]; local liczba_numer_jednostki=((numer_jednostki)and(tonumber(numer_jednostki))or 0); local pudelko_pomocne_modul=require("Module:Pudełko/Pomocne"); -- Liczy nazwę przestrzeni nazw dyskusji na podstawie podanych parametrów; return pudelko_pomocne_modul.Nazwa_przestrzeni_nazw(frame,2, czy_uwzglednic_alternatywna_nazwe,liczba_numer_jednostki); </syntaxhighlight> Parametry funkcji: * {{Code|frame}} - tablica ramki tablicy transportu, * {{Code|czy_uwzglednic_alternatywna_nazwe}} - czy ma uwzględniać nazwę przestrzeni nazw domyślną szablonu, dostępne wartości: {{Code|false}}, w której nazwa domyślna nie jest uwzględniana wtedy, oraz {{Code|nil}} i {{Code|true}}, które oznaczają to samo, w tym jeżeli ona jest uwzględniana, wtedy jest brany parametr pierwszy dziecka, który musi istnieć przy takiej wartości tego parametru, tzn. {{Code|{{m|Pudełko|Nazwa przestrzeni nazw dyskusji|Szablon}}}} - ta nazwa domyślna zostanie przekształcona na dyskusji, a jeżeli ona by była dyskusji, to nie byłoby żadnego przekształcenia, a nazwa uzyskana nazwy przestrzeni nazw z parametrów przestrzennych jest w takim przypadku błędna, to w takim razie brany jest ten parametr, a jeżeli nazwa domyślna jest błędna, czyli {{Code|{{m|Pudełko|Nazwa przestrzeni nazw dyskusji|Moja przestrzeń}}}}, wtedy funkcja zwraca stan błędu {{Code|(błąd)}}. * {{Code|i}} - numer zmiennej nazwy przestrzeni nazw. Funkcja wykorzystuje {{Code|{{sr|#p.Nazwa_przestrzeni_nazw(frame,...)|p=Pudełko/Pomocne}}}} do wyznaczania ogólnego nazwy przestrzeni nazw dla pozycji bazowej i numerkowej, tzn. dla pozycji: jeden, dwa, trzy,..., itd, i ich ogólnej. Parametr ramki tablicy transportu rodzica szablonu: * {{Code|nazwa przestrzeni nazw}}, {{Code|nazwa przestrzeni nazw 1}}, {{Code|nazwa przestrzeni nazw 2}}, {{Code|nazwa przestrzeni nazw 3}},..., {{Code|nazwa przestrzeni nazw i}} - nazwy przestrzeni nazw dla pozycji bazowej oraz zwykłej i ogólnej numerkowej, * {{Code|typ jednostki}}, {{Code|typ jednostki 1}}, {{Code|typ jednostki 2}}, {{Code|typ jednostki 3}},..., {{Code|typ jednostki i}} - typy jednostek, którym odpowiadają pewne przestrzenie przedmiotowe, dla pozycji bazowej, numerkowej i ogólnej. Parametry ramki tablicy transportu dziecka: * Parametry dziecka są takie same jak rodzica dla funkcji pudełkowej plus tu wymienione, * {{Code|numer jednostki}} - jak parametr {{Code|i}} nie został ustawiony, to wtedy liczy się ta zmienna. Przykłady: <syntaxhighlight lang="mediawiki"> {{Nazwa szablonu|nazwa przestrzeni nazw=Wikibooks|nazwa przestrzeni nazw 2=Szablon|nazwa przestrzeni nazw i=Moduł}} </syntaxhighlight> W dziecku powiedzmy jest wywołanie, i szukamy nazwy przestrzeni nazw o numerze dwa, która nie została podana, ale istnieje za to jej wersji ogólna {{Code|nazwa przestrzeni nazw i}} i domyślna {{Code|nazwa przestrzeni nazw}}: <syntaxhighlight lang="mediawiki"> {{#invoke:Pudełko|Nazwa przestrzeni nazw dyskusji|numer jednostki=1}} </syntaxhighlight> Na podstawie powyższego przykładu otrzymamy wynik o schemacie, nie wyniku, bo tam nie ma zmiennej {{Code|nazwa przestrzeni nazw 1}}, ale jest {{Code|nazwa przestrzeni nazw i}}: <syntaxhighlight lang="mediawiki"> <!-- Ale nie "nazwa przestrzeni nazw", bo jej nie ma, ale za to istnieje "nazwa przestrzeni nazw i"; --> <!-- nazwa przestrzeni nazw 2=nazwa przestrzeni nazw i=Moduł; --> <!-- Czyli wynik: --> Dyskusja modułu <!-- Widzimy, że wygenerowała się nazwa przestrzeni nazw, którą jest przestrzeń dyskusji przestrzeni programowej przestrzeni przedmiotowej "Moduł", którą również jest "Szablon" jego przestrzeni dyskusji "Dyskusja szablonu", a dla ich przestrzeni przedmiotowej, zamiast dyskusji, to przekształca się na dyskusji jej odpowiadającą; --> </syntaxhighlight> Nie jest brana w tym powyższym przykładzie zmienna {{Code|nazwa przestrzeni nazw}}, bo jej nie ma, ale za to jest {{Code|nazwa przestrzeni nazw i}}, bo ona występuje jako parametr domyślny ogólny dla parametrów numerkowych. Przykłady w wikikodzie: * {{Code|{{m|Pudełko|Nazwa przestrzeni nazw dyskusji|numer jednostki{{=}}2}}}} → {{Tt|{{#invoke:Pudełko|Nazwa przestrzeni nazw dyskusji|numer jednostki=2}}}} * {{Code|{{m|Pudełko|Nazwa przestrzeni nazw dyskusji|Szablon|nazwa przestrzeni nazw i{{=}}Moja przestrzeń|numer jednostki{{=}}2}}}} → {{Tt|{{#invoke:Pudełko|Nazwa przestrzeni nazw dyskusji|Szablon|nazwa przestrzeni nazw i=Moja przestrzeń|numer jednostki=2}}}} * {{Code|{{m|Pudełko|Nazwa przestrzeni nazw dyskusji|nazwa przestrzeni nazw 2{{=}}Szablon|numer jednostki{{=}}2}}}} → {{Tt|{{#invoke:Pudełko|Nazwa przestrzeni nazw dyskusji|nazwa przestrzeni nazw 2=Szablon|numer jednostki=2}}}} * {{Code|{{m|Pudełko|Nazwa przestrzeni nazw dyskusji|nazwa przestrzeni nazw 2{{=}}Szablon|numer jednostki{{=}}2}}}} → {{Tt|{{#invoke:Pudełko|Nazwa przestrzeni nazw dyskusji|nazwa przestrzeni nazw i=Szablon|numer jednostki=2}}}} * {{Code|{{m|Pudełko|Nazwa przestrzeni nazw dyskusji|nazwa przestrzeni nazw{{=}}Szablon|numer jednostki{{=}}2}}}} → {{Tt|{{#invoke:Pudełko|Nazwa przestrzeni nazw dyskusji|nazwa przestrzeni nazw=Szablon|numer jednostki=2}}}} Powyżej dla przykładu podano parametry nie w rodzicu w szablonie, tylko w dziecku, jeśli chodzi o parametry nazw przestrzeni nazw, ale ich się za to nie powinno podawać w tych ramach, tylko w szablonach, w których wywoływane są te ramki pudełek {{Code|{{m|Pudełko}}}}, ale tak tutaj tak zrobiono by było najłatwiej sprawdzić działanie tego typu funkcji. Analogicznie możemy podawać parametry typu jednostki, np.: wywołaniu modułowym {{Code|{{m|Pudełko|Nazwa przestrzeni nazw dyskusji|typ jednostki 2{{=}}strona szablonu|numer jednostki{{=}}2}}}}, ale o tym więcej w rozdziałach {{Code|{{sr|# p["Dyskusyjny typ jednostki"](frame,i)|p=Pudełko}}}} w „{{sr|#Funkcje typu jednostki|p=Pudełko}}”, ale wtedy nazwa przestrzeni nazw reprezentowana przez {{Parametr|typ jednostki 2|strona szablonu}}, jest zamieniana na nazwę przestrzeni nazw dyskusji. Parametr dyskusji typu jednostki bazowy lub dla danego numerka ogólny, czy szczegółowy, nie gra roli. Również parametry typu jednostki nie powinno się podawać w dziecku w ramce, tylko w rodzicu w szablonie jako parametry, w którym ta ramka jest wywoływana, ale tutaj podano jedynie dla przykładu, jak najłatwiej sprawdzić działanie tych parametrów tej funkcji. Najpierw w funkcji nagłówku brane są parametry nazw przestrzeni nazw, a jeżeli ich nie ma, to parametry typu jednostki, a jeżeli nie ma, to generowane są nazwy na podstawie aktualnego modułu. == Funkcje nazw przestrzeni nazw drugiej wersji == === {{Code|p["Nazwa przestrzeni nazw 2"](frame,...)}} === Funkcja pisze nazwę przestrzeni nazw, niezależnie, czy to jest przedmiotowa, czy dyskusji, według, i nie zawsze tylko, podanej w zmiennej {{Code|nazwa przestrzeni nazw}} dla pozycja bazowej w podanych parametrach szablonu rodzicu ramki dziecka, lub dla innej pozycji należy parametr podawać w formie {{Code|nazwa przestrzeni nazw 1}}, {{Code|nazwa przestrzeni nazw 2}}, {{Code|nazwa przestrzeni nazw 3}},..., lub te parametry można podać w postaci ogólnej {{Code|nazwa przestrzeni nazw i}}. W tej funkcji trzeba też podawać parametry nazwy jednostek {{Code|nazwa jednostki}}, {{Code|nazwa jednostki 1}}, {{Code|nazwa jednostki 2}}, {{Code|nazwa jednostki 3}},... Parametry podaje się w parametrach rodzica wywołania tej funkcji {{Code|{{m|Pudełko|Nazwa przestrzeni nazw 2}}}} (ale ich nie trzeba podawać w dziecku, ale można) i w parametrach dziecka, jeśli chodzi o zmienną {{Code|numer jednostki}}, czyli np.: {{Code|{{m|Pudełko|Nazwa przestrzeni nazw 2|numer jednostki{{=}}<jakaś liczba całkowita dodatnia>}}}}. Te parametry przestrzenne zamiast w rodzicu w szablonie można podać w ramce dziecka, wtedy parametry dziecka mają pierwszeństwo. Przestrzeń nazw z parametrów nazw przestrzennych może odpowiadać wartości przestrzeni głównej, to wtedy odpowiednia przestrzeń nazw z parametru nazwy jednostki się liczy w tej funkcji, wtedy jest liczona nazwa przestrzeni nazw z tego parametru. Gdy parametry przestrzenne lub typ jednostki w drugim podejściu nie wskazują na przestrzeń główną, to wtedy działanie tej funkcji jest podobne do {{Code|{{sr|#p["Nazwa przestrzeni nazw"](frame,...)|p=Pudełko}}}}. Definicja skrótowa funkcji: <syntaxhighlight lang="lua"> p["Nazwa przestrzeni nazw 2"]=function(frame,czy_uwzglednic_alternatywna_nazwe,i)...end; </syntaxhighlight> Wtedy ciało funkcji tej, czyli jego definicja w środku, jest: <syntaxhighlight lang="lua"> local pudelko_pomocne_modul=require("Module:Pudełko/Pomocne"); -- Liczy nazwę przestrzeni nazw, jeżeli z parametrów przestrzennych przestrzeń wskazuje na główną, to wtedy jest liczona przestrzeń nazw z nazwy jednostki; return pudelko_pomocne_modul.Nazwa_przestrzeni_nazw_2(frame,czy_uwzglednic_alternatywna_nazwe,i) </syntaxhighlight> Parametry funkcji: * {{Code|frame}} - tablica ramki tablicy transportu, * {{Code|czy_uwzglednic_alternatywna_nazwe}} - czy ma uwzględniać nazwę przestrzeni nazw domyślną szablonu, dostępne wartości: {{Code|false}}, w której nazwa domyślna nie jest uwzględniana wtedy, oraz {{Code|nil}} i {{Code|true}}, które oznaczają to samo, w tym jeżeli ona jest uwzględniana, wtedy jest brany parametr pierwszy dziecka, który musi istnieć przy takiej wartości tego parametru, tzn. {{Code|{{m|Pudełko|Nazwa przestrzeni nazw 2|Szablon}}}}, a nazwa uzyskana nazwy przestrzeni nazw jest w takim przypadku błędna, a jeżeli nazwa domyślna jest błędna, czyli {{Code|{{m|Pudełko|Nazwa przestrzeni nazw 2|Moja przestrzeń}}}}, wtedy funkcja zwraca stan błędu {{Code|(błąd)}}. * {{Code|i}} - numer zmiennej nazwy przestrzeni nazw. Funkcja wykorzystuje {{Code|{{sr|#p.Nazwa_przestrzeni_nazw_2(frame,...)|p=Pudełko/Pomocne}}}} do wyznaczania ogólnego nazwy przestrzeni nazw dla pozycji bazowej i numerkowej, tzn. dla pozycji: jeden, dwa, trzy,..., itd, i ich ogólnej. Parametr ramki tablicy transportu rodzica szablonu: * {{Code|nazwa przestrzeni nazw}}, {{Code|nazwa przestrzeni nazw 1}}, {{Code|nazwa przestrzeni nazw 2}}, {{Code|nazwa przestrzeni nazw 3}},..., {{Code|nazwa przestrzeni nazw i}} - nazwy przestrzeni nazw dla pozycji bazowej oraz zwykłej i ogólnej numerkowej, * {{Code|nazwa jednostki}}, {{Code|nazwa jednostki 1}}, {{Code|nazwa jednostki 2}}, {{Code|nazwa jednostki 3}},... - nazwy jednostek dla pozycji bazowej i numerkowej, * {{Code|typ jednostki}}, {{Code|typ jednostki 1}}, {{Code|typ jednostki 2}}, {{Code|typ jednostki 3}},..., {{Code|typ jednostki i}} - typy jednostek, którym odpowiadają pewne przestrzenie przedmiotowe, dla pozycji bazowej, numerkowej i ogólnej, ** {{Code|dyskusja typu jednostki}}, {{Code|dyskusja typu jednostki 1}}, {{Code|dyskusja typ jednostki 2}}, {{Code|dyskusja typ jednostki 3}},..., {{Code|dyskusja typ jednostki i}} - czy dany typ jednostki ma przedstawiać, jeśli niepusta, przestrzeń dyskusji dla pozycji bazowej, numerkowej i ogólnej. Parametry ramki tablicy transportu dziecka: * Parametry dziecka są takie same jak rodzica dla funkcji pudełkowej plus tu wymienione, * {{Code|numer jednostki}} - jak parametr {{Code|i}} nie został ustawiony, to wtedy liczy się ta zmienna. Przykłady: <syntaxhighlight lang="mediawiki"> {{Nazwa szablonu|nazwa przestrzeni nazw=Wikibooks|nazwa przestrzeni nazw 1=Szablon|nazwa przestrzeni nazw i=|nazwa jednostki 2=Wikibooks:Strona}} </syntaxhighlight> W dziecku powiedzmy jest wywołanie, i szukamy nazwy przestrzeni nazw o numerze dwa, która została podana, ale istnieje za to jej wersji ogólna {{Code|nazwa przestrzeni nazw i}} i domyślna {{Code|nazwa przestrzeni nazw}}, ale wtedy dla tego numerkowego liczy się to ogólne z {{Code| i}}, a ponieważ ta nazwa jest pusta, więc będziemy liczyli nazwę przestrzeni nazw z {{Code|nazwa jednostki 2}}: <syntaxhighlight lang="mediawiki"> {{#invoke:Pudełko|Nazwa przestrzeni nazw 2|numer jednostki=2}} </syntaxhighlight> Na podstawie powyższego przykładu otrzymamy wynik o schemacie, nie wyniku, bo tam nie ma zmiennej {{Code|nazwa przestrzeni nazw 1}}, ale jest {{Code|nazwa przestrzeni nazw i}}: <syntaxhighlight lang="mediawiki"> <!-- Ale nie "nazwa przestrzeni nazw 2", bo jej nie ma, ale za to istnieje "nazwa przestrzeni nazw i"; --> <!-- nazwa przestrzeni nazw 2=nazwa przestrzeni nazw i="", a nazwa jednostki 2="Wikibooks:Strona"; --> <!-- Czyli wynik: --> Wikibooks <!-- Widzimy, że wygenerowała się nazwa przestrzeni nazw, którą jest przestrzeń nieprogramowa, ale projektu, wychodząca z nazwy jednostek w tym przypadku z "nazwa jednostki 2"; --> </syntaxhighlight> Nie jest brana w tym powyższym przykładzie zmienna {{Code|nazwa przestrzeni nazw}}, bo jej nie ma, ale za to jest {{Code|nazwa przestrzeni nazw i}}, bo ona występuje jako parametr domyślny ogólny dla parametrów numerkowych. Tytaj jest używana jest zmienna {{Code|nazwa jednostki 2}} do wygenerowania ostatecznego wyniku, bo jak można zauważyć, parametry przestrzenne wskazują na przestrzeń główną, a nazwy jednostek już nie. Przykłady w wikikodzie: * {{Code|{{m|Pudełko|Nazwa przestrzeni nazw 2|numer jednostki{{=}}2}}}} → {{Tt|{{#invoke:Pudełko|Nazwa przestrzeni nazw 2|numer jednostki=2}}}} * {{Code|{{m|Pudełko|Nazwa przestrzeni nazw 2|Szablon|nazwa przestrzeni nazw i{{=}}Moja przestrzeń|numer jednostki{{=}}2}}}} → {{Tt|{{#invoke:Pudełko|Nazwa przestrzeni nazw 2|Szablon|nazwa przestrzeni nazw i=Moja przestrzeń|numer jednostki=2}}}} * {{Code|{{m|Pudełko|Nazwa przestrzeni nazw 2|nazwa przestrzeni nazw 2{{=}}|nazwa jednostki 2{{=}}Szablon:Strona|numer jednostki{{=}}2}}}} → {{Tt|{{#invoke:Pudełko|Nazwa przestrzeni nazw 2|nazwa przestrzeni nazw 2=|nazwa jednostki 2=Szablon:Strona|numer jednostki=2}}}} * {{Code|{{m|Pudełko|Nazwa przestrzeni nazw 2|nazwa przestrzeni nazw i{{=}}|nazwa jednostki 2{{=}}Szablon:Strona|numer jednostki{{=}}2}}}} → {{Tt|{{#invoke:Pudełko|Nazwa przestrzeni nazw 2|nazwa przestrzeni nazw i=|nazwa jednostki 2=Szablon:Strona|numer jednostki=2}}}} * {{Code|{{m|Pudełko|Nazwa przestrzeni nazw 2|Szablon|nazwa przestrzeni nazw{{=}}|nazwa jednostki 2{{=}}Wikibooks:Strona|numer jednostki{{=}}2}}}} → {{Tt|{{#invoke:Pudełko|Nazwa przestrzeni nazw 2|Szablon|nazwa przestrzeni nazw=|nazwa jednostki 2=Wikibooks:Strona|numer jednostki=2}}}} Powyżej dla przykładu podano parametry nie w rodzicu w szablonie, tylko w dziecku, jeśli chodzi o parametry nazw przestrzeni nazw i nazw jednostek, ale ich się za to nie powinno podawać w tych ramach, tylko w szablonach, w których wywoływane są te ramki pudełek {{Code|{{m|Pudełko}}}}, ale tak tutaj tak zrobiono by było najłatwiej sprawdzić działanie tego typu funkcji. Analogicznie możemy podawać parametry typu jednostki, np.: wywołaniu modułowym {{Code|{{m|Pudełko|Nazwa przestrzeni nazw 2|typ jednostki 2{{=}}Podręcznik|nazwa jednostki 2{{=}}Szablon:Strona|numer jednostki{{=}}2}}}} (ale wtedy jest brana przestrzeń nazw z nazwy jednostki), ale o tym więcej w rozdziałach {{Code|{{sr|#p["Typ jednostki 2"](frame,i)|p=Pudełko}}}} w „{{sr|#Funkcje typu jednostki|p=Pudełko}}”, on definiuje przestrzenie przedmiotowe, ale można użyć parametru dyskusji typu jednostki z wartością niepustą, wtedy wyświetli się nazwa przestrzeni nazw dyskusji. Jeżeli typ jednostki wskazuje na przestrzeń nazw główną, wtedy się liczą parametry nazw jednostek. Również parametry typu jednostki nie powinno się podawać w dziecku w ramce, tylko w rodzicu w szablonie jako parametry, w którym ta ramka jest wywoływana, ale tutaj podano jedynie dla przykładu, jak najłatwiej sprawdzić działanie tych parametrów tej funkcji. Najpierw w funkcji nagłówku brane są parametry nazw przestrzeni nazw, a jeżeli ich nie ma, to parametry typu jednostki, a jeżeli nie ma lub parametry przestrzenne wskazują na przestrzeń główną, i nie ma nazwy jednostki, to generowane są nazwy tej funkcji na podstawie aktualnej strony. === {{Code|p["Nazwa przedmiotowej przestrzeni nazw 2"](frame,...)}} === Funkcja pisze przedmiotową nazwę przestrzeni nazw jakikolwiek nazwy przestrzeni nazw (tzn. nazwę przedmiotową nazwy przestrzenie nazw, czyli nie dyskusji, zamieniana jest na nią samą, czyli identyfikator przestrzeni się nie zmienia, a dyskusji, nie przedmiotową, przekształca się na przedmiotową jej odpowiadającą, czyli w tym przypadku identyfikator przestrzeni zmniejsza się o numer mniej), według, i nie zawsze tylko, podanej w zmiennej {{Code|nazwa przestrzeni nazw}} dla pozycja bazowej w podanych parametrach szablonu rodzicu ramki dziecka, lub dla innej pozycji należy parametr podawać w formie {{Code|nazwa przestrzeni nazw 1}}, {{Code|nazwa przestrzeni nazw 2}}, {{Code|nazwa przestrzeni nazw 3}},..., lub te parametry można podać w postaci ogólnej {{Code|nazwa przestrzeni nazw i}}. W tej funkcji trzeba też podawać parametry nazwy jednostek {{Code|nazwa jednostki}}, {{Code|nazwa jednostki 1}}, {{Code|nazwa jednostki 2}}, {{Code|nazwa jednostki 3}},... Parametry podaje się w parametrach rodzica wywołania tej funkcji {{Code|{{m|Pudełko|Nazwa przedmiotowej przestrzeni nazw 2}}}} (ale ich nie trzeba podawać w dziecku, ale można) i w parametrach dziecka, jeśli chodzi o zmienną {{Code|numer jednostki}}, czyli np.: {{Code|{{m|Pudełko|Nazwa przedmiotowej przestrzeni nazw 2|numer jednostki{{=}}<jakaś liczba całkowita dodatnia>}}}}. Te parametry przestrzenne zamiast w rodzicu w szablonie można podać w ramce dziecka, wtedy parametry dziecka mają pierwszeństwo. Przestrzeń nazw z parametrów nazw przestrzennych po przekształceniu na przedmiotową może odpowiadać wartości przestrzeni głównej, to wtedy odpowiednia przestrzeń nazw z parametru nazwy jednostki się liczy w tej funkcji, wtedy jest liczona nazwa przestrzeni nazw z tego parametru. Gdy parametry przestrzenne lub typ jednostki w drugim podejściu nie wskazują na przestrzeń główną, to wtedy działanie tej funkcji jest podobne do {{Code|{{sr|#p["Nazwa przedmiotowej przestrzeni nazw"](frame,...)|p=Pudełko}}}}. Definicja skrótowa funkcji: <syntaxhighlight lang="lua"> p["Nazwa przedmiotowej przestrzeni nazw 2"]=function(frame,czy_uwzglednic_alternatywna_nazwe,i)...end; </syntaxhighlight> Wtedy ciało funkcji tej, czyli jego definicja w środku, jest: <syntaxhighlight lang="lua"> local pudelko_pomocne_modul=require("Module:Pudełko/Pomocne"); return pudelko_pomocne_modul.Nazwa_przestrzeni_nazw_przedmiotowa_dyskusji_2(frame,czy_uwzglednic_alternatywna_nazwe,i,"przedmiotowa"); </syntaxhighlight> Parametry funkcji: * {{Code|frame}} - tablica ramki tablicy transportu, * {{Code|czy_uwzglednic_alternatywna_nazwe}} - czy ma uwzględniać nazwę przestrzeni nazw domyślną szablonu, dostępne wartości: {{Code|false}}, w której nazwa domyślna nie jest uwzględniana wtedy, oraz {{Code|nil}} i {{Code|true}}, które oznaczają to samo, w tym jeżeli ona jest uwzględniana, wtedy jest brany parametr pierwszy dziecka, który musi istnieć przy takiej wartości tego parametru, tzn. {{Code|{{m|Pudełko|Nazwa przedmiotowej przestrzeni nazw 2|Szablon}}}}, a nazwa uzyskana nazwy przestrzeni nazw jest w takim przypadku błędna, a jeżeli nazwa domyślna jest błędna, czyli {{Code|{{m|Pudełko|Nazwa przedmiotowej przestrzeni nazw 2|Moja przestrzeń}}}}, wtedy funkcja zwraca stan błędu {{Code|(błąd)}}. * {{Code|i}} - numer zmiennej nazwy przestrzeni nazw. Funkcja wykorzystuje {{Code|{{sr|#p.Nazwa_przestrzeni_nazw_przedmiotowa_dyskusji_2(frame,...)|p=Pudełko/Pomocne}}}} do wyznaczania ogólnego nazwy przestrzeni nazw dla pozycji bazowej i numerkowej, tzn. dla pozycji: jeden, dwa, trzy,..., itd, i ich ogólnej. Parametr ramki tablicy transportu rodzica szablonu: * {{Code|nazwa przestrzeni nazw}}, {{Code|nazwa przestrzeni nazw 1}}, {{Code|nazwa przestrzeni nazw 2}}, {{Code|nazwa przestrzeni nazw 3}},..., {{Code|nazwa przestrzeni nazw i}} - nazwy przestrzeni nazw dla pozycji bazowej oraz zwykłej i ogólnej numerkowej, * {{Code|nazwa jednostki}}, {{Code|nazwa jednostki 1}}, {{Code|nazwa jednostki 2}}, {{Code|nazwa jednostki 3}},... - nazwy jednostek dla pozycji bazowej i numerkowej, * {{Code|typ jednostki}}, {{Code|typ jednostki 1}}, {{Code|typ jednostki 2}}, {{Code|typ jednostki 3}},..., {{Code|typ jednostki i}} - typy jednostek, którym odpowiadają pewne przestrzenie przedmiotowe, dla pozycji bazowej, numerkowej i ogólnej. Parametry ramki tablicy transportu dziecka: * Parametry dziecka są takie same jak rodzica dla funkcji pudełkowej plus tu wymienione, * {{Code|numer jednostki}} - jak parametr {{Code|i}} nie został ustawiony, to wtedy liczy się ta zmienna. Przykłady: <syntaxhighlight lang="mediawiki"> {{Nazwa szablonu|nazwa przestrzeni nazw=Wikibooks|nazwa przestrzeni nazw 1=Szablon|nazwa przestrzeni nazw i=|nazwa jednostki 2=Dyskusja Wikibooks:Strona}} </syntaxhighlight> W dziecku powiedzmy jest wywołanie, i szukamy nazwy przestrzeni nazw o numerze dwa, która została podana, ale istnieje za to jej wersji ogólna {{Code|nazwa przestrzeni nazw i}} i domyślna {{Code|nazwa przestrzeni nazw}}, ale wtedy dla tego numerkowego liczy się to ogólne z {{Code| i}}, a ponieważ ta nazwa jest pusta, więc będziemy liczyli nazwę przestrzeni nazw z {{Code|nazwa jednostki 2}}: <syntaxhighlight lang="mediawiki"> {{#invoke:Pudełko|Nazwa przedmiotowej przestrzeni nazw 2|numer jednostki=2}} </syntaxhighlight> Na podstawie powyższego przykładu otrzymamy wynik o schemacie, nie wyniku, bo tam nie ma zmiennej {{Code|nazwa przestrzeni nazw 1}}, ale jest {{Code|nazwa przestrzeni nazw i}}: <syntaxhighlight lang="mediawiki"> <!-- Ale nie "nazwa przestrzeni nazw 2", bo jej nie ma, ale za to istnieje "nazwa przestrzeni nazw i"; --> <!-- nazwa przestrzeni nazw 2=nazwa przestrzeni nazw i="", a nazwa jednostki 2="Dyskusja Wikibooks:Strona"; --> <!-- Czyli wynik: --> Wikibooks <!-- Widzimy, że wygenerowała się nazwa przestrzeni nazw, którą jest przestrzeń nieprogramowa, ale projektu, wychodząca z nazwy jednostek w tym przypadku z "nazwa jednostki 2"; --> </syntaxhighlight> Nie jest brana w tym powyższym przykładzie zmienna {{Code|nazwa przestrzeni nazw}}, bo jej nie ma, ale za to jest {{Code|nazwa przestrzeni nazw i}}, bo ona występuje jako parametr domyślny ogólny dla parametrów numerkowych. Tytaj jest używana jest zmienna {{Code|nazwa jednostki 2}} do wygenerowania ostatecznego wyniku, bo jak można zauważyć, parametry przestrzenne wskazują na przestrzeń główną, a nazwy jednostek już nie. Przykłady w wikikodzie: * {{Code|{{m|Pudełko|Nazwa przedmiotowej przestrzeni nazw 2|numer jednostki{{=}}2}}}} → {{Tt|{{#invoke:Pudełko|Nazwa przedmiotowej przestrzeni nazw 2|numer jednostki=2}}}} * {{Code|{{m|Pudełko|Nazwa przedmiotowej przestrzeni nazw 2|Dyskusja szablonu|nazwa przestrzeni nazw i{{=}}Moja przestrzeń|numer jednostki{{=}}2}}}} → {{Tt|{{#invoke:Pudełko|Nazwa przedmiotowej przestrzeni nazw 2|Dyskusja szablonu|nazwa przestrzeni nazw i=Moja przestrzeń|numer jednostki=2}}}} * {{Code|{{m|Pudełko|Nazwa przedmiotowej przestrzeni nazw 2|nazwa przestrzeni nazw 2{{=}}Dyskusja|nazwa jednostki 2{{=}}Dyskusja szablonu:Strona|numer jednostki{{=}}2}}}} → {{Tt|{{#invoke:Pudełko|Nazwa przedmiotowej przestrzeni nazw 2|nazwa przestrzeni nazw 2=Dyskusja|nazwa jednostki 2=Dyskusja szablonu:Strona|numer jednostki=2}}}} * {{Code|{{m|Pudełko|Nazwa przedmiotowej przestrzeni nazw 2|nazwa przestrzeni nazw i{{=}}Dyskusja|nazwa jednostki 2{{=}}Dyskusja szablonu:Strona|numer jednostki{{=}}2}}}} → {{Tt|{{#invoke:Pudełko|Nazwa przedmiotowej przestrzeni nazw 2|nazwa przestrzeni nazw i=Dyskusja|nazwa jednostki 2=Dyskusja szablonu:Strona|numer jednostki=2}}}} * {{Code|{{m|Pudełko|Nazwa przedmiotowej przestrzeni nazw 2|Dyskusja szablonu|nazwa przestrzeni nazw{{=}}Dyskusja|nazwa jednostki 2{{=}}Wikibooks:Strona|numer jednostki{{=}}2}}}} → {{Tt|{{#invoke:Pudełko|Nazwa przedmiotowej przestrzeni nazw 2|Dyskusja szablonu|nazwa przestrzeni nazw=Dyskusja|nazwa jednostki 2=Dyskusja Wikibooks:Strona|numer jednostki=2}}}} Powyżej dla przykładu podano parametry nie w rodzicu w szablonie, tylko w dziecku, jeśli chodzi o parametry nazw przestrzeni nazw i nazw jednostek, ale ich się za to nie powinno podawać w tych ramach, tylko w szablonach, w których wywoływane są te ramki pudełek {{Code|{{m|Pudełko}}}}, ale tak tutaj tak zrobiono by było najłatwiej sprawdzić działanie tego typu funkcji. Analogicznie możemy podawać parametry typu jednostki, np.: wywołaniu modułowym {{Code|{{m|Pudełko|Nazwa przedmiotowej przestrzeni nazw 2|typ jednostki 2{{=}}Podręcznik|nazwa jednostki 2{{=}}Dyskusja szablonu:Strona|numer jednostki{{=}}2}}}} (ale wtedy jest brana przestrzeń nazw z nazwy jednostki), ale o tym więcej w rozdziałach {{Code|{{sr|# p["Przedmiotowy typ jednostki 2"](frame,i)|p=Pudełko}}}} w „{{sr|#Funkcje typu jednostki|p=Pudełko}}”, on definiuje przestrzenie przedmiotowe, ale można użyć parametru dyskusji typu jednostki z wartością niepustą, pustą, czy nawet jej nie podamy, wtedy wyświetli się nazwa przestrzeni nazw przedmiotowej. Jeżeli typ jednostki wskazuje na przestrzeń nazw główną, wtedy się liczą parametry nazw jednostek. Również parametry typu jednostki nie powinno się podawać w dziecku w ramce, tylko w rodzicu w szablonie jako parametry, w którym ta ramka jest wywoływana, ale tutaj podano jedynie dla przykładu, jak najłatwiej sprawdzić działanie tych parametrów tej funkcji. Najpierw w funkcji nagłówku brane są parametry nazw przestrzeni nazw, a jeżeli ich nie ma, to parametry typu jednostki, a jeżeli nie ma lub parametry przestrzenne wskazują na przestrzeń główną, i nie ma nazwy jednostki, to generowane są nazwy tej funkcji na podstawie aktualnej strony. === {{Code|p["Nazwa przestrzeni nazw dyskusji 2"](frame,...)}} === Funkcja pisze nazwę przestrzeni nazw dyskusji jakikolwiek nazwy przestrzeni nazw (tzn. nazwę dyskusji nazwy przestrzenie nazw, czyli nie przedmiotowej, zamieniana jest na nią samą, czyli identyfikator przestrzeni się nie zmienia, a przedmiotową, nie dyskusji, przekształca się na dyskusji jej odpowiadającą, czyli w tym przypadku identyfikator przestrzeni zwiększa się o numer więcej), według, i nie zawsze tylko, podanej w zmiennej {{Code|nazwa przestrzeni nazw}} dla pozycja bazowej w podanych parametrach szablonu rodzicu ramki dziecka, lub dla innej pozycji należy parametr podawać w formie {{Code|nazwa przestrzeni nazw 1}}, {{Code|nazwa przestrzeni nazw 2}}, {{Code|nazwa przestrzeni nazw 3}},..., lub te parametry można podać w postaci ogólnej {{Code|nazwa przestrzeni nazw i}}. W tej funkcji trzeba też podawać parametry nazwy jednostek {{Code|nazwa jednostki}}, {{Code|nazwa jednostki 1}}, {{Code|nazwa jednostki 2}}, {{Code|nazwa jednostki 3}},... Parametry podaje się w parametrach rodzica wywołania tej funkcji {{Code|{{m|Pudełko|Nazwa przestrzeni nazw dyskusji 2}}}} (ale ich nie trzeba podawać w dziecku, ale można) i w parametrach dziecka, jeśli chodzi o zmienną {{Code|numer jednostki}}, czyli np.: {{Code|{{m|Pudełko|Nazwa przestrzeni nazw dyskusji 2|numer jednostki{{=}}<jakaś liczba całkowita dodatnia>}}}}. Te parametry przestrzenne zamiast w rodzicu w szablonie można podać w ramce dziecka, wtedy parametry dziecka mają pierwszeństwo. Przestrzeń nazw z parametrów nazw przestrzennych po przekształceniu na przedmiotową może odpowiadać wartości przestrzeni głównej, to wtedy odpowiednia przestrzeń nazw z parametru nazwy jednostki się liczy w tej funkcji, wtedy jest liczona nazwa przestrzeni nazw z tego parametru. Gdy parametry przestrzenne lub typ jednostki w drugim podejściu nie wskazują na przestrzeń główną, to wtedy działanie tej funkcji jest podobne do {{Code|{{sr|#p["Nazwa dyskusji przestrzeni nazw"](frame,...)|p=Pudełko}}}}. Definicja skrótowa funkcji: <syntaxhighlight lang="lua"> p["Nazwa przestrzeni nazw dyskusji 2"]=function(frame,czy_uwzglednic_alternatywna_nazwe,i)...end; </syntaxhighlight> Wtedy ciało funkcji tej, czyli jego definicja w środku, jest: <syntaxhighlight lang="lua"> local pudelko_pomocne_modul=require("Module:Pudełko/Pomocne"); return pudelko_pomocne_modul.Nazwa_przestrzeni_nazw_przedmiotowa_dyskusji_2(frame,czy_uwzglednic_alternatywna_nazwe,i,"dyskusja"); </syntaxhighlight> Parametry funkcji: * {{Code|frame}} - tablica ramki tablicy transportu, * {{Code|czy_uwzglednic_alternatywna_nazwe}} - czy ma uwzględniać nazwę przestrzeni nazw domyślną szablonu, dostępne wartości: {{Code|false}}, w której nazwa domyślna nie jest uwzględniana wtedy, oraz {{Code|nil}} i {{Code|true}}, które oznaczają to samo, w tym jeżeli ona jest uwzględniana, wtedy jest brany parametr pierwszy dziecka, który musi istnieć przy takiej wartości tego parametru, tzn. {{Code|{{m|Pudełko|Nazwa przestrzeni nazw dyskusji 2|Szablon}}}}, a nazwa uzyskana nazwy przestrzeni nazw jest w takim przypadku błędna, a jeżeli nazwa domyślna jest błędna, czyli {{Code|{{m|Pudełko|Nazwa przestrzeni nazw dyskusji 2|Moja przestrzeń}}}}, wtedy funkcja zwraca stan błędu {{Code|(błąd)}}. * {{Code|i}} - numer zmiennej nazwy przestrzeni nazw. Funkcja wykorzystuje {{Code|{{sr|#p.Nazwa_przestrzeni_nazw_przedmiotowa_dyskusji_2(frame,...)|p=Pudełko/Pomocne}}}} do wyznaczania ogólnego nazwy przestrzeni nazw dla pozycji bazowej i numerkowej, tzn. dla pozycji: jeden, dwa, trzy,..., itd, i ich ogólnej. Parametr ramki tablicy transportu rodzica szablonu: * {{Code|nazwa przestrzeni nazw}}, {{Code|nazwa przestrzeni nazw 1}}, {{Code|nazwa przestrzeni nazw 2}}, {{Code|nazwa przestrzeni nazw 3}},..., {{Code|nazwa przestrzeni nazw i}} - nazwy przestrzeni nazw dla pozycji bazowej oraz zwykłej i ogólnej numerkowej, * {{Code|nazwa jednostki}}, {{Code|nazwa jednostki 1}}, {{Code|nazwa jednostki 2}}, {{Code|nazwa jednostki 3}},... - nazwy jednostek dla pozycji bazowej i numerkowej, * {{Code|typ jednostki}}, {{Code|typ jednostki 1}}, {{Code|typ jednostki 2}}, {{Code|typ jednostki 3}},..., {{Code|typ jednostki i}} - typy jednostek, którym odpowiadają pewne przestrzenie przedmiotowe, dla pozycji bazowej, numerkowej i ogólnej. Parametry ramki tablicy transportu dziecka: * Parametry dziecka są takie same jak rodzica dla funkcji pudełkowej plus tu wymienione, * {{Code|numer jednostki}} - jak parametr {{Code|i}} nie został ustawiony, to wtedy liczy się ta zmienna. Przykłady: <syntaxhighlight lang="mediawiki"> {{Nazwa szablonu|nazwa przestrzeni nazw=Wikibooks|nazwa przestrzeni nazw 1=Szablon|nazwa przestrzeni nazw i=|nazwa jednostki 2=Wikibooks:Strona}} </syntaxhighlight> W dziecku powiedzmy jest wywołanie, i szukamy nazwy przestrzeni nazw o numerze dwa, która została podana, ale istnieje za to jej wersji ogólna {{Code|nazwa przestrzeni nazw i}} i domyślna {{Code|nazwa przestrzeni nazw}}, ale wtedy dla tego numerkowego liczy się to ogólne z {{Code| i}}, a ponieważ ta nazwa jest pusta, więc będziemy liczyli nazwę przestrzeni nazw z {{Code|nazwa jednostki 2}}: <syntaxhighlight lang="mediawiki"> {{#invoke:Pudełko|Nazwa przestrzeni nazw dyskusji 2|numer jednostki=2}} </syntaxhighlight> Na podstawie powyższego przykładu otrzymamy wynik o schemacie, nie wyniku, bo tam nie ma zmiennej {{Code|nazwa przestrzeni nazw 1}}, ale jest {{Code|nazwa przestrzeni nazw i}}: <syntaxhighlight lang="mediawiki"> <!-- Ale nie "nazwa przestrzeni nazw 2", bo jej nie ma, ale za to istnieje "nazwa przestrzeni nazw i"; --> <!-- nazwa przestrzeni nazw 2=nazwa przestrzeni nazw i="", a nazwa jednostki 2="Wikibooks:Strona"; --> <!-- Czyli wynik: --> Dyskusja Wikibooks <!-- Widzimy, że wygenerowała się nazwa przestrzeni nazw, którą jest przestrzeń nieprogramowa, ale dyskusji projektu, wychodząca z nazwy jednostek w tym przypadku z "nazwa jednostki 2"; --> </syntaxhighlight> Nie jest brana w tym powyższym przykładzie zmienna {{Code|nazwa przestrzeni nazw}}, bo jej nie ma, ale za to jest {{Code|nazwa przestrzeni nazw i}}, bo ona występuje jako parametr domyślny ogólny dla parametrów numerkowych. Tytaj jest używana jest zmienna {{Code|nazwa jednostki 2}} do wygenerowania ostatecznego wyniku, bo jak można zauważyć, parametry przestrzenne wskazują na przestrzeń główną, a nazwy jednostek już nie. Przykłady w wikikodzie: * {{Code|{{m|Pudełko|Nazwa przestrzeni nazw dyskusji 2|numer jednostki{{=}}2}}}} → {{Tt|{{#invoke:Pudełko|Nazwa przestrzeni nazw dyskusji 2|numer jednostki=2}}}} * {{Code|{{m|Pudełko|Nazwa przestrzeni nazw dyskusji 2|Szablon|nazwa przestrzeni nazw i{{=}}Moja przestrzeń|numer jednostki{{=}}2}}}} → {{Tt|{{#invoke:Pudełko|Nazwa przestrzeni nazw dyskusji 2|Szablon|nazwa przestrzeni nazw i=Moja przestrzeń|numer jednostki=2}}}} * {{Code|{{m|Pudełko|Nazwa przestrzeni nazw dyskusji 2|nazwa przestrzeni nazw 2{{=}}|nazwa jednostki 2{{=}}Szablon:Strona|numer jednostki{{=}}2}}}} → {{Tt|{{#invoke:Pudełko|Nazwa przestrzeni nazw dyskusji 2|nazwa przestrzeni nazw 2=|nazwa jednostki 2=Szablon:Strona|numer jednostki=2}}}} * {{Code|{{m|Pudełko|Nazwa przestrzeni nazw dyskusji 2|nazwa przestrzeni nazw i{{=}}|nazwa jednostki 2{{=}}Szablon:Strona|numer jednostki{{=}}2}}}} → {{Tt|{{#invoke:Pudełko|Nazwa przestrzeni nazw dyskusji 2|nazwa przestrzeni nazw i=|nazwa jednostki 2=Szablon:Strona|numer jednostki=2}}}} * {{Code|{{m|Pudełko|Nazwa przestrzeni nazw dyskusji 2|Szablon|nazwa przestrzeni nazw{{=}}|nazwa jednostki 2{{=}}Wikibooks:Strona|numer jednostki{{=}}2}}}} → {{Tt|{{#invoke:Pudełko|Nazwa przestrzeni nazw dyskusji 2|Szablon|nazwa przestrzeni nazw=|nazwa jednostki 2=Dyskusja Wikibooks:Strona|numer jednostki=2}}}} Powyżej dla przykładu podano parametry nie w rodzicu w szablonie, tylko w dziecku, jeśli chodzi o parametry nazw przestrzeni nazw i nazw jednostek, ale ich się za to nie powinno podawać w tych ramach, tylko w szablonach, w których wywoływane są te ramki pudełek {{Code|{{m|Pudełko}}}}, ale tak tutaj tak zrobiono by było najłatwiej sprawdzić działanie tego typu funkcji. Analogicznie możemy podawać parametry typu jednostki, np.: wywołaniu modułowym {{Code|{{m|Pudełko|Nazwa przestrzeni nazw dyskusji 2|typ jednostki 2{{=}}Podręcznik|nazwa jednostki 2{{=}}Szablon:Strona|numer jednostki{{=}}2}}}} (ale wtedy jest brana przestrzeń nazw z nazwy jednostki), ale o tym więcej w rozdziałach {{Code|{{sr|# p["Dyskusyjny typ jednostki 2"](frame,i)|p=Pudełko}}}} w „{{sr|#Funkcje typu jednostki|p=Pudełko}}”, on definiuje przestrzenie dyskusji, ale można użyć parametru dyskusji typu jednostki z obojętnie jaką wartością niepustą, czy pustą, czy nawet jej nie podamy, wtedy wyświetli się nazwa przestrzeni nazw dyskusji. Jeżeli typ jednostki wskazuje na przestrzeń nazw główną, wtedy się liczą parametry nazw jednostek. Również parametry typu jednostki nie powinno się podawać w dziecku w ramce, tylko w rodzicu w szablonie jako parametry, w którym ta ramka jest wywoływana, ale tutaj podano jedynie dla przykładu, jak najłatwiej sprawdzić działanie tych parametrów tej funkcji. Najpierw w funkcji nagłówku brane są parametry nazw przestrzeni nazw, a jeżeli ich nie ma, to parametry typu jednostki, a jeżeli nie ma lub parametry przestrzenne wskazują na przestrzeń główną, i nie ma nazwy jednostki, to generowane są nazwy tej funkcji na podstawie aktualnej strony. == Funkcje pełnych nazw jednostki == === {{Code|p["Pełna nazwa dyskusji jednostki"](frame,i)}} === === {{Code|p["Pełna nazwa przedmiotowa jednostki"](frame,i)}} === === {{Code|p["Pełna nazwa jednostki"](frame,i)}} === == Funkcje pełnych nazw jednostki drugiej wersji == === {{Code|p["Pełna nazwa dyskusji jednostki 2"](frame,i)}} === === {{Code|p["Pełna nazwa przedmiotowa jednostki 2"](frame,i)}} === === {{Code|p["Pełna nazwa jednostki 2"](frame,i)}} === == Funkcje pełnych nazw jednostki trzeciej wersji == === {{Code|p["Pełna nazwa dyskusji jednostki 3"](frame,i)}} === === {{Code|p["Pełna nazwa przedmiotowa jednostki 3"](frame,i)}} === === {{Code|p["Pełna nazwa jednostki 3"](frame,i)}} === == Funkcje nazw jednostki == === {{Code|p["Nazwa jednostki"](frame,i)}} === == Funkcje nazw jednostki drugiej wersji == === {{Code|p["Nazwa jednostki 2"](frame,i)}} === === {{Code|p["Nazwa przedmiotowa jednostki 2"](frame,i)}} === === {{Code|p["Nazwa dyskusji jednostki 2"](frame,i)}} === == Funkcje nazw przestrzeni nazw trzeciej wersji == === {{Code|p["Nazwa przestrzeni nazw 3"](frame,i)}} === Funkcja pisze nazwę przestrzeni nazw, niezależnie, czy to jest przedmiotowa, czy dyskusji, według, i nie zawsze tylko, podanej w zmiennej {{Code|nazwa przestrzeni nazw}} dla pozycja bazowej w podanych parametrach szablonu rodzicu ramki dziecka, lub dla innej pozycji należy parametr podawać w formie {{Code|nazwa przestrzeni nazw 1}}, {{Code|Nazwa przestrzeni nazw 3}}, {{Code|nazwa przestrzeni nazw 3}},..., lub te parametry można podać w postaci ogólnej {{Code|nazwa przestrzeni nazw i}}. W tej funkcji trzeba też podawać parametry nazwy jednostek {{Code|nazwa jednostki}}, {{Code|nazwa jednostki 1}}, {{Code|nazwa jednostki 2}}, {{Code|nazwa jednostki 3}},... Parametry podaje się w parametrach rodzica wywołania tej funkcji {{Code|{{m|Pudełko|Nazwa przestrzeni nazw 3}}}} (ale ich nie trzeba podawać w dziecku, ale można) i w parametrach dziecka, jeśli chodzi o zmienną {{Code|numer jednostki}}, czyli np.: {{Code|{{m|Pudełko|Nazwa przestrzeni nazw 3|numer jednostki{{=}}<jakaś liczba całkowita dodatnia>}}}}. Te parametry przestrzenne zamiast w rodzicu w szablonie można podać w ramce dziecka, wtedy parametry dziecka mają pierwszeństwo. Przestrzeń nazw z parametrów nazw przestrzennych bazowych (bez numerka) może odpowiadać wartości przestrzeni głównej, to wtedy odpowiednia przestrzeń nazw z parametru nazwy jednostki się nie liczy w tej funkcji, aby się liczyła należy użyć funkcji {{Code|{{sr|#p["Nazwa przestrzeni nazw 2"](frame,...)|p=Pudełko}}}}. Przestrzeń nazw z parametrów nazw przestrzennych numerkowych może odpowiadać wartości przestrzeni głównej, to wtedy odpowiednia przestrzeń nazw z parametru nazwy jednostki się liczy w tej funkcji, wtedy jest liczona nazwa przestrzeni nazw z tego parametru. Gdy parametry przestrzenne lub typ jednostki w drugim podejściu nie wskazują na przestrzeń główną, to wtedy działanie tej funkcji jest podobne do {{Code|{{sr|#p["Nazwa przestrzeni nazw"](frame,...)|p=Pudełko}}}}. Definicja skrótowa funkcji: <syntaxhighlight lang="lua"> p["Nazwa przestrzeni nazw 3"]=function(frame,czy_uwzglednic_alternatywna_nazwe,i)...end; </syntaxhighlight> Wtedy ciało funkcji tej, czyli jego definicja w środku, jest: <syntaxhighlight lang="lua"> -- Jest liczony numer parametru nazwy przestrzeni nazw, domyslnie chodzi tu o numer bazowy parametrów przestrzennych; local numer_jednostki=i or frame.args["numer jednostki"]; local liczba_numeru_jednostki=((numer_jednostki)and(tonumber(numer_jednostki)) or 0); local pudelko_pomocne_modul=require("Module:Pudełko/Pomocne"); -- Liczy nazwę przestrzeni nazw dyskusji na podstawie podanych parametrów; return pudelko_pomocne_modul.Uzyskanie_nazw_jednostki(frame,0,liczba_numeru_jednostki,nil,2); </syntaxhighlight> Parametry funkcji: * {{Code|frame}} - tablica ramki tablicy transportu, * {{Code|czy_uwzglednic_alternatywna_nazwe}} - czy ma uwzględniać nazwę przestrzeni nazw domyślną szablonu, dostępne wartości: {{Code|false}}, w której nazwa domyślna nie jest uwzględniana wtedy, oraz {{Code|nil}} i {{Code|true}}, które oznaczają to samo, w tym jeżeli ona jest uwzględniana, wtedy jest brany parametr pierwszy dziecka, który musi istnieć przy takiej wartości tego parametru, tzn. {{Code|{{m|Pudełko|Nazwa przestrzeni nazw 3|Szablon}}}}, a nazwa uzyskana nazwy przestrzeni nazw jest w takim przypadku błędna, a jeżeli nazwa domyślna jest błędna, czyli {{Code|{{m|Pudełko|Nazwa przestrzeni nazw 3|Moja przestrzeń}}}}, wtedy funkcja zwraca stan błędu {{Code|(błąd)}}. * {{Code|i}} - numer zmiennej nazwy przestrzeni nazw. Funkcja wykorzystuje {{Code|{{sr|#p.Nazwa_przestrzeni_nazw_2(frame,...)|p=Pudełko/Pomocne}}}} do wyznaczania ogólnego nazwy przestrzeni nazw dla pozycji bazowej i numerkowej, tzn. dla pozycji: jeden, dwa, trzy,..., itd, i ich ogólnej. Parametr ramki tablicy transportu rodzica szablonu: * {{Code|nazwa przestrzeni nazw}}, {{Code|nazwa przestrzeni nazw 1}}, {{Code|Nazwa przestrzeni nazw 3}}, {{Code|nazwa przestrzeni nazw 3}},..., {{Code|nazwa przestrzeni nazw i}} - nazwy przestrzeni nazw dla pozycji bazowej oraz zwykłej i ogólnej numerkowej, * {{Code|nazwa jednostki}}, {{Code|nazwa jednostki 1}}, {{Code|nazwa jednostki 2}}, {{Code|nazwa jednostki 3}},... - nazwy jednostek dla pozycji bazowej i numerkowej, * {{Code|typ jednostki}}, {{Code|typ jednostki 1}}, {{Code|typ jednostki 2}}, {{Code|typ jednostki 3}},..., {{Code|typ jednostki i}} - typy jednostek, którym odpowiadają pewne przestrzenie przedmiotowe, dla pozycji bazowej, numerkowej i ogólnej, ** {{Code|dyskusja typu jednostki}}, {{Code|dyskusja typu jednostki 1}}, {{Code|dyskusja typ jednostki 2}}, {{Code|dyskusja typ jednostki 3}},..., {{Code|dyskusja typ jednostki i}} - czy dany typ jednostki ma przedstawiać, jeśli niepusta, przestrzeń dyskusji dla pozycji bazowej, numerkowej i ogólnej. Parametry ramki tablicy transportu dziecka: * Parametry dziecka są takie same jak rodzica dla funkcji pudełkowej plus tu wymienione, * {{Code|numer jednostki}} - jak parametr {{Code|i}} nie został ustawiony, to wtedy liczy się ta zmienna. Przykłady: <syntaxhighlight lang="mediawiki"> {{Nazwa szablonu|nazwa przestrzeni nazw=Wikibooks|nazwa przestrzeni nazw=|nazwa przestrzeni nazw i=|nazwajednostki=Szablon:Strona|nazwa jednostki 2=Wikibooks:Strona}} <hr /> {{Nazwa szablonu|nazwa przestrzeni nazw=Wikibooks|nazwa przestrzeni nazw 1=Szablon|nazwa przestrzeni nazw i=|nazwa jednostki 2=Wikibooks:Strona}} </syntaxhighlight> W dziecku powiedzmy jest wywołanie, i szukamy nazwy przestrzeni nazw o numerze dwa, która została podana, ale istnieje za to jej wersji ogólna {{Code|nazwa przestrzeni nazw i}} i domyślna {{Code|nazwa przestrzeni nazw}}, ale wtedy dla tego numerkowego liczy się to ogólne z {{Code| i}}, a ponieważ ta nazwa jest pusta, więc będziemy liczyli nazwę przestrzeni nazw z {{Code|nazwa jednostki 2}}: <syntaxhighlight lang="mediawiki"> {{#invoke:Pudełko|Nazwa przestrzeni nazw 3}} <hr /> {{#invoke:Pudełko|Nazwa przestrzeni nazw 3|numer jednostki=2}} </syntaxhighlight> Na podstawie powyższego przykładu otrzymamy wynik o schemacie, nie wyniku, bo tam nie ma zmiennej {{Code|nazwa przestrzeni nazw 1}}, ale jest {{Code|nazwa przestrzeni nazw i}}: <syntaxhighlight lang="mediawiki"> <!-- Ale nie "nazwa przestrzeni nazw""; --> <!-- nazwa przestrzeni nazw=""; --> <!-- Czyli wynik: --> <!-- wynik pusty --> <!-- Widzimy, że wygenerowała się nazwa przestrzeni nazw, którą jest przestrzeń nazw główna, jest ciągiem pustym: ""; --> <hr /> <!-- Ale nie "Nazwa przestrzeni nazw 2", bo jej nie ma, ale za to istnieje "nazwa przestrzeni nazw i"; --> <!-- nazwa przestrzeni nazw 2=nazwa przestrzeni nazw i="", a nazwa jednostki 2="Wikibooks:Strona"; --> <!-- Czyli wynik: --> Wikibooks <!-- Widzimy, że wygenerowała się nazwa przestrzeni nazw, którą jest przestrzeń nieprogramowa, ale projektu, wychodząca z nazwy jednostek w tym przypadku z "nazwa jednostki 2"; --> </syntaxhighlight> Dla parametrów bazowych nienumerkowych istnieje zmienna {{Code|nazwa przestrzeni nazw}}, której waartość jest pusta,którajest zwracana przez tą funkcję. {{Hr}} Dla parametrów numerkowych nie jest brana w tym powyższym przykładzie zmienna {{Code|nazwa przestrzeni nazw}}, bo jej nie ma, ale za to jest {{Code|nazwa przestrzeni nazw i}}, bo ona występuje jako parametr domyślny ogólny dla parametrów numerkowych. Tytaj jest używana jest zmienna {{Code|nazwa jednostki 2}} do wygenerowania ostatecznego wyniku, bo jak można zauważyć, parametry przestrzenne wskazują na przestrzeń główną, a nazwy jednostek już nie. Przykłady w wikikodzie: * {{Code|{{m|Pudełko|Nazwa przestrzeni nazw 3|nazwa przestrzeni nazw{{=}}|nazwa jednostki{{=}}Wikibooks:Strona}}}} → {{Tt|{{#invoke:Pudełko|Nazwa przestrzeni nazw 3|nazwa przestrzeni nazw=|nazwa jednostki=Wikibooks:Szablon}}}} * {{Code|{{m|Pudełko|Nazwa przestrzeni nazw 3|nazwa przestrzeni nazw 2{{=}}|nazwa jednostki 2{{=}}Wikibooks:Strona|numer jednostki{{=}}2}}}} → {{Tt|{{#invoke:Pudełko|Nazwa przestrzeni nazw 3|nazwa przestrzeni nazw 2=|nazwa jednostki 2=Wikibooks:Szablon|numer jednostki=2}}}} Powyżej dla przykładu podano parametry nie w rodzicu w szablonie, tylko w dziecku, jeśli chodzi o parametry nazw przestrzeni nazw i nazw jednostek, ale ich się za to nie powinno podawać w tych ramach, tylko w szablonach, w których wywoływane są te ramki pudełek {{Code|{{m|Pudełko}}}}, ale tak tutaj tak zrobiono by było najłatwiej sprawdzić działanie tego typu funkcji. Analogicznie możemy podawać parametry typu jednostki, np.: wywołaniu modułowym {{Code|{{m|Pudełko|Nazwa przestrzeni nazw 3|typ jednostki 2{{=}}Podręcznik|nazwa jednostki 2{{=}}Szablon:Strona|numer jednostki{{=}}2}}}} (ale wtedy jest brana przestrzeń nazw z nazwy jednostki), ale o tym więcej w rozdziałach {{Code|{{sr|#p["Typ jednostki 3"](frame,i)|p=Pudełko}}}} w „{{sr|#Funkcje typu jednostki|p=Pudełko}}”, on definiuje przestrzenie przedmiotowe, ale można użyć parametru dyskusji typu jednostki z wartością niepustą, wtedy wyświetli się nazwa przestrzeni nazw dyskusji. Jeżeli typ jednostki bazowy wskazuje na przestrzeń nazw główną, wtedy się nie liczą parametry nazw jednostek, a na numerkowy, wtedy się liczy. Również parametry typu jednostki nie powinno się podawać w dziecku w ramce, tylko w rodzicu w szablonie jako parametry, w którym ta ramka jest wywoływana, ale tutaj podano jedynie dla przykładu, jak najłatwiej sprawdzić działanie tych parametrów tej funkcji. Najpierw w funkcji nagłówku brane są parametry nazw przestrzeni nazw, a jeżeli ich nie ma, to parametry typu jednostki, a jeżeli nie ma lub parametry przestrzenne wskazują na przestrzeń główną, i nie ma nazwy jednostki, to generowane są nazwy tej funkcji na podstawie aktualnej strony. === {{Code|p["Nazwa przedmiotowej przestrzeni nazw 3"](frame,i)}} === === {{Code|p["Nazwa przestrzeni nazw dyskusji 3"](frame,i)}} === == Funkcje nazw jednostki trzeciej wersji == === {{Code|p["Nazwa jednostki 3"](frame,i)}} === === {{Code|p["Nazwa przedmiotowa jednostki 3"](frame,i)}} === === {{Code|p["Nazwa dyskusji jednostki 3"](frame,i)}} === == Funkcje typu jednostki == === {{Code|p["Typ jednostki"](frame,i)}} === === {{Code|p["Typ jednostki 2"](frame,i)}} === === {{Code|p["Typ jednostki 3"](frame,i)}} === === Funkcje typu jednostki przedmiotowe === ==== {{Code|p["Przedmiotowy typ jednostki"](frame,i)}} ==== ==== {{Code|p["Przedmiotowy typ jednostki 2"](frame,i)}} ==== ==== {{Code|p["Przedmiotowy typ jednostki 3"](frame,i)}} ==== === Fukcje typu jednostki dyskusji === ==== {{Code|p["Dyskusyjny typ jednostki"](frame,i)}} ==== ==== {{Code|p["Dyskusyjny typ jednostki 2"](frame,i)}} ==== ==== {{Code|p["Dyskusyjny typ jednostki 3"](frame,i)}} ==== == Funkcje chech pudełka == === {{Code|p["Cecha pudełka"](frame)}} === === {{Code|p["Przedmiotowa cecha pudełka"](frame)}} === === {{Code|p["Dyskusyjna cecha pudełka"](frame)}} === == Fukcje ogólnego pudełka == === {{Code|p["Ogólne pudełko"](frame)}} === == Funkcje ogólne == === {{Code|p["Tekst pudełka"](frame)}} === == Funkcje błędów pudełka == === {{Code|p["Błędy pudełka"](frame)}} === === {{Code|p["Przedmiotowe błędy pudełka"](frame)}} === === {{Code|p["Dyskusyjne błędy pudełka"](frame)}} === == Funkcje nazw stron == === {{Code|p["Nazwa strony głównej projektu"](frame,i)}} === === {{Code|p["Nazwa strony głównej dla dzieci projektu"](frame,i)}} === == Funkcje kodów == === {{Code|p["Kod języka"](frame,i)}} === === {{Code|p["Kod projektu"](frame,i)}} === === {{Code|p["Klucz projektu"](frame,i)}} === == Funkcje wiki == === {{Code|p["Inny niż język bieżący wiki"](frame)}} === === {{Code|p["Inne niż lokalne wiki"](frame)}} === === {{Code|p["Inne niż bieżące wiki"](frame)}} === == Funkcje typów parametrów, czy podane je == === {{Code|p["Podano parametry nienazwane"](frame)}} === === {{Code|p["Podano parametry numerowane"](frame)}} === === {{Code|p["Podano parametry nazwane"](frame)}} === == Funkcje kodów tego projektu == === {{Code|p["Kod projektu tego projektu"](frame)}} === === {{Code|p["Kod języka tego projektu"](frame)}} === === {{Code|p["Klucz projektu tego projektu"](frame)}} === == Funkcje stron == === {{Code|p["Strona główna tego projektu"](frame)}} === === {{Code|p["Strona główna dla dzieci tego projektu"](frame)}} === == Funkcje nazw stron drugiej wersji == === {{Code|p["Nazwa strony głównej dla dzieci projektu 2"](frame)}} === === {{Code| p["Nazwa strony głównej projektu 2"](frame)}} === {{BrClear}} <noinclude><!-- -->{{ProstaStronaKoniec}}<!-- -->{{Kategoria|Opisy funkcji, w Lua w Scribunto, w modułach}}<!-- --></noinclude> 3zjmcswl93yhjmo5ia4or4i0gg3aprn 540412 540411 2026-04-23T19:29:43Z Persino 2851 /* {{Code|p["Nazwa przedmiotowej przestrzeni nazw 3"](frame,i)}} */ 540412 wikitext text/x-wiki <noinclude>{{ProstaStronaStart | nagłówek = {{Podrozdział|{{ld2|Pudełko}}|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 pudelko_modul=require("Module:Pudełko"); </syntaxhighlight> dzięki, któremu można wypisywać funkcje należącego do niego. Posługuje się na parametrach pudełkowych {{Parametr|nazwa przestrzeni nazw}} (czy też bez numerka {{Parametr|nazwa przestrzeni nazw i}} dla tego numerowanego) lub te z numerkiem po jednej spacji w nich (ale nie dla tego z końcówką {{Code| i}}) mogą zostać użyte jako parametry szablonu. Moduł {{Code|{{ld2|Pudełko}}}} przedstawia funkcje nazw w oparciu o funkcje nazw {{Code|{{ld2|Nazwy}}}}, generuje on nazwy za pomocą parametrów pudełkowych podanych poniżej. Parametr {{Parametr|nazwa jednostki}} (lub parametr {{Parametr|cel}} dla numerka tego pierwszego, tego alternatywnego), lub te z numerkiem po jednej spacji w nazwie parametru, albo numerowane numerkami {{Code|1}}, {{Code|2}},..., mogą zostać użyte jako parametry szablonu. Parametry określające rodzaj jednostki {{Parametr|typ jednostki}} z {{Parametr|dyskusja typu jednostki}}, itp. w wersjach z numerkiem po jednej spacji w nich mogą zostać użyte jako parametry szablonu. A te tymi numerowanymi liczbami naturalnymi {{Tt|nazwy jednostki}} od jedynki wzwyż poprzez szablon, w którym są one użyte, one też mogą być użyte z dwukropkiem, te numerowane, na samym początku nazwy, wtedy one są traktowane jako pełne nazwy strony, i wtedy one nie zostaną z interpretowane, że do nich trzeba użyć parametr odpowiedni z nazwą przetrzeni nazw z tego numerowanego, czy ogólny, aby utworzyć znów inną pełną nazwę strony dla tego numerka. Zestawienie: * {{Code|nazwa przestrzeni nazw}} i {{Code|nazwa przestrzeni nazw i}} (ogólna nazwa przestrzeni nazw dla wszystkich numerków, i tych numerowanych jednostek) - i to pierwsze z numerkiem, tzn. {{Code|nazwa przestrzeni nazw 1}}, {{Code|nazwa przestrzeni nazw 2}}, ..., * {{Code|nazwa jednostki}} - i te z numerkiem: {{Code|nazwa jednostki 1}}, {{Code|nazwa jednostki 2}}, ..., lub gdy jest zamiast tego parametrem numerowany, {{Code|1}}, {{Code|2}},..., który dla tego pierwszego może być uznany jako: {{Code|cel}} {{=}} {{Code|1}}, * {{Code|typ jednostki}} (parametr bazowy) i {{Code|typ jednostki i}} (parametr domyślny numerkowy) - i te z numerkiem: {{Code|typ jednostki 1}}, {{Code|typ jednostki 2}}, ..., tzn. gdy chcemy określić z jakim typem jednostki mamy do czynienia w zależności do jakiej przestrzeni nazw należy, a w danej, czy jest on np. programowy, czy tylko jest opisem, jak to bywa w szablonach {{Np|Template|link=tak}}, podobnie jest w przypadku {{Np|Module|link=tak}}, czy jak jest w innych przestrzeniach nazw, ** {{Code|dyskusja typu jednostki}} (parametr bazowy) i {{Code|dyskusja typu jednostki i}} (parametr domyślny numerkowy) - i te z numerkiem: {{Code|dyskusja typu jednostki 1}}, {{Code|dyskusja typu jednostki 2}}, ..., gdy chcemy określić wartością niepustą,że chodzi tutaj o typ jednostki. == {{Code|p.CzyNiepoprawnaNazwa(nazwa_jednostki)}} == Funkcja sprawdzajaca, czy jest poprawnie podana nazwa jednostki, czy ma poprawną nazwę. Znakami tymi, z których nie powinna składać się nazwa jest {{Code|<nowiki>{}<>|[]#\n</nowiki>}} i dodatkowo znak {{Code|&#127;}} (kod {{Code|{{Nowiki|&#127;}}}}). Też nie może składać się z trzech znaków tyldy, tzn. {{Code|<nowiki>~~~</nowiki>}}. Również w swojej budowie nie może składać się ze kodów {{Strong|HTML}} literowych o wzorze {{Code|{{Nowiki|&(%a+);}}}}. Natomiast może składać się z {{Code|{{Nowiki|&#(%d+);}}}} i {{Code|{{Nowiki|&#x(%x+);}}}}, ale w pierw te kody muszą być zamienione na normalne znaki. Skrótowa definicja funkcji: <syntaxhighlight lang="lua"> function p.CzyNiepoprawnaNazwa(nazwa_jednostki)...end; </syntaxhighlight> Wtedy ciało funkcji tej, czyli jego definicja w środku, jest: <syntaxhighlight lang="lua"> -- Moduł: "Moduł:Html/dane", służy do ładowania znaku o kodzie HTML "&#127;"; local html_dane_modul=mw.loadData("Module:Html/dane"); return mw.ustring.match(nazwa_jednostki,"[{}<>|%[%]#\n"..html_dane_modul.znak_127.."]+") or mw.ustring.match(nazwa_jednostki,"~~~") or mw.ustring.match(nazwa_jednostki,"&(%a+);"); </syntaxhighlight> Parametry: * {{Code|nazwa_jednostki}} - nazwa jednostki do sprawdzenia. Przykłady: <syntaxhighlight lang="lua"> local pudelko_modul=require("Module:Pudełko"); -- Podana przykładowa niepoprawna nazwa jedostki local nazwa_jednostki="Nazwa pliku [[Nazwa linku w pliku]]"; -- Fukcja zwróci wartość: local czy_poprawna_nazwa=true; local czy_poprawna_nazwa=pudelko_modul.CzyNiepoprawnaNazwa(nazwa_jednostki); </syntaxhighlight> == Funkcje nazw przestrzeni nazw == === {{Code|p["Nazwa przestrzeni nazw"](frame,...)}} === Funkcja pisze nazwę przestrzeni nazw, niezależnie, czy to jest przedmiotowa, czy dyskusji, według podanej w zmiennej {{Code|nazwa przestrzeni nazw}} dla pozycja bazowej w podanych parametrach szablonu rodzicu ramki dziecka, lub dla innej pozycji należy parametr podawać w formie {{Code|nazwa przestrzeni nazw 1}}, {{Code|nazwa przestrzeni nazw 2}}, {{Code|nazwa przestrzeni nazw 3}},..., lub te parametry można podać w postaci ogólnej {{Code|nazwa przestrzeni nazw i}}. Parametry podaje się w parametrach rodzica wywołania tej funkcji {{Code|{{m|Pudełko|Nazwa przestrzeni nazw}}}} (ale ich nie trzeba podawać w dziecku, ale można) i w parametrach dziecka, jeśli chodzi o zmienną {{Code|numer jednostki}}, czyli np.: {{Code|{{m|Pudełko|Nazwa przestrzeni nazw|numer jednostki{{=}}<jakaś liczba całkowita dodatnia>}}}}. Te parametry przestrzenne zamiast w rodzicu w szablonie można podać w ramce dziecka, wtedy parametry dziecka mają pierwszeństwo. Przestrzeń nazw z parametrów nazw przestrzennych może odpowiadać wartości przestrzeni głównej, to wtedy odpowiednia przestrzeń nazw z parametru nazwy jednostki się nie liczy w tej funkcji, aby się liczyła należy użyć funkcji {{Code|{{sr|#p["Nazwa przestrzeni nazw 2"](frame,...)|p=Pudełko}}}}. Definicja skrótowa funkcji: <syntaxhighlight lang="lua"> p["Nazwa przestrzeni nazw"]=function(frame,czy_uwzglednic_alternatywna_nazwe,i)...end; </syntaxhighlight> Wtedy ciało funkcji tej, czyli jego definicja w środku, jest: <syntaxhighlight lang="lua"> -- Jest liczony numer parametru nazwy przestrzeni nazw, domyslnie chodzi tu o numer bazowy parametrów przestrzennych; local numer_jednostki=i or frame.args["numer jednostki"]; local liczba_numer_jednostki=((numer_jednostki)and(tonumber(numer_jednostki))or 0); local pudelko_pomocne_modul=require("Module:Pudełko/Pomocne"); -- Liczy nazwę przestrzeni nazw na podstawie podanych parametrów; return pudelko_pomocne_modul.Nazwa_przestrzeni_nazw(frame,0, czy_uwzglednic_alternatywna_nazwe,liczba_numer_jednostki); </syntaxhighlight> Parametry funkcji: * {{Code|frame}} - tablica ramki tablicy transportu, * {{Code|czy_uwzglednic_alternatywna_nazwe}} - czy ma uwzględniać nazwę przestrzeni nazw domyślną szablonu, dostępne wartości: {{Code|false}}, w której nazwa domyślna nie jest uwzględniana wtedy, oraz {{Code|nil}} i {{Code|true}}, które oznaczają to samo, w tym jeżeli ona jest uwzględniana, wtedy jest brany parametr pierwszy dziecka, który musi istnieć przy takiej wartości tego parametru, tzn. {{Code|{{m|Pudełko|Nazwa przestrzeni nazw|Szablon}}}}, a nazwa uzyskana nazwy przestrzeni nazw jest w takim przypadku błędna, a jeżeli nazwa domyślna jest błędna, czyli {{Code|{{m|Pudełko|Nazwa przestrzeni nazw|Moja przestrzeń}}}}, wtedy funkcja zwraca stan błędu {{Code|(błąd)}}. * {{Code|i}} - numer zmiennej nazwy przestrzeni nazw. Funkcja wykorzystuje {{Code|{{sr|#p.Nazwa_przestrzeni_nazw(frame,...)|p=Pudełko/Pomocne}}}} do wyznaczania ogólnego nazwy przestrzeni nazw dla pozycji bazowej i numerkowej, tzn. dla pozycji: jeden, dwa, trzy,..., itd, i ich ogólnej. Parametr ramki tablicy transportu rodzica szablonu: * {{Code|nazwa przestrzeni nazw}}, {{Code|nazwa przestrzeni nazw 1}}, {{Code|nazwa przestrzeni nazw 2}}, {{Code|nazwa przestrzeni nazw 3}},..., {{Code|nazwa przestrzeni nazw i}} - nazwy przestrzeni nazw dla pozycji bazowej oraz zwykłej i ogólnej numerkowej, * {{Code|typ jednostki}}, {{Code|typ jednostki 1}}, {{Code|typ jednostki 2}}, {{Code|typ jednostki 3}},..., {{Code|typ jednostki i}} - typy jednostek, którym odpowiadają pewne przestrzenie przedmiotowe, dla pozycji bazowej, numerkowej i ogólnej, ** {{Code|dyskusja typu jednostki}}, {{Code|dyskusja typu jednostki 1}}, {{Code|dyskusja typ jednostki 2}}, {{Code|dyskusja typ jednostki 3}},..., {{Code|dyskusja typ jednostki i}} - czy dany typ jednostki ma przedstawiać, jeśli niepusta, przestrzeń dyskusji dla pozycji bazowej, numerkowej i ogólnej. Parametry ramki tablicy transportu dziecka: * Parametry dziecka są takie same jak rodzica dla funkcji pudełkowej plus tu wymienione, * {{Code|numer jednostki}} - jak parametr {{Code|i}} nie został ustawiony, to wtedy liczy się ta zmienna. Przykłady: <syntaxhighlight lang="mediawiki"> {{Nazwa szablonu|nazwa przestrzeni nazw=Wikibooks|nazwa przestrzeni nazw 2=Szablon|nazwa przestrzeni nazw i=Moduł}} </syntaxhighlight> W dziecku powiedzmy jest wywołanie, i szukamy nazwy przestrzeni nazw o numerze dwa, która nie została podana, ale istnieje za to jej wersji ogólna {{Code|nazwa przestrzeni nazw i}} i domyślna {{Code|nazwa przestrzeni nazw}}: <syntaxhighlight lang="mediawiki"> {{#invoke:Pudełko|Nazwa przestrzeni nazw|numer jednostki=1}} </syntaxhighlight> Na podstawie powyższego przykładu otrzymamy wynik o schemacie, nie wyniku, bo tam nie ma zmiennej {{Code|nazwa przestrzeni nazw 1}}, ale jest {{Code|nazwa przestrzeni nazw i}}: <syntaxhighlight lang="mediawiki"> <!-- Ale nie "nazwa przestrzeni nazw", bo jej nie ma, ale za to istnieje "nazwa przestrzeni nazw i"; --> <!-- nazwa przestrzeni nazw 2=nazwa przestrzeni nazw i=Moduł; --> <!-- Czyli wynik: --> Moduł <!-- Widzimy, że wygenerowała się nazwa przestrzeni nazw, którą jest przestrzeń programowa, którą również jest "Szablon"; --> </syntaxhighlight> Nie jest brana w tym powyższym przykładzie zmienna {{Code|nazwa przestrzeni nazw}}, bo jej nie ma, ale za to jest {{Code|nazwa przestrzeni nazw i}}, bo ona występuje jako parametr domyślny ogólny dla parametrów numerkowych. Przykłady w wikikodzie: * {{Code|{{m|Pudełko|Nazwa przestrzeni nazw|numer jednostki{{=}}2}}}} → {{Tt|{{#invoke:Pudełko|Nazwa przestrzeni nazw|numer jednostki=2}}}} * {{Code|{{m|Pudełko|Nazwa przestrzeni nazw|Szablon|nazwa przestrzeni nazw i{{=}}Moja przestrzeń|numer jednostki{{=}}2}}}} → {{Tt|{{#invoke:Pudełko|Nazwa przestrzeni nazw|Szablon|nazwa przestrzeni nazw i=Moja przestrzeń|numer jednostki=2}}}} * {{Code|{{m|Pudełko|Nazwa przestrzeni nazw|nazwa przestrzeni nazw 2{{=}}Szablon|numer jednostki{{=}}2}}}} → {{Tt|{{#invoke:Pudełko|Nazwa przestrzeni nazw|nazwa przestrzeni nazw 2=Szablon|numer jednostki=2}}}} * {{Code|{{m|Pudełko|Nazwa przestrzeni nazw|nazwa przestrzeni nazw 2{{=}}Szablon|numer jednostki{{=}}2}}}} → {{Tt|{{#invoke:Pudełko|Nazwa przestrzeni nazw|nazwa przestrzeni nazw i=Szablon|numer jednostki=2}}}} * {{Code|{{m|Pudełko|Nazwa przestrzeni nazw|nazwa przestrzeni nazw{{=}}Szablon|numer jednostki{{=}}2}}}} → {{Tt|{{#invoke:Pudełko|Nazwa przestrzeni nazw|nazwa przestrzeni nazw=Szablon|numer jednostki=2}}}} Powyżej dla przykładu podano parametry nie w rodzicu w szablonie, tylko w dziecku, jeśli chodzi o parametry nazw przestrzeni nazw, ale ich się za to nie powinno podawać w tych ramach, tylko w szablonach, w których wywoływane są te ramki pudełek {{Code|{{m|Pudełko}}}}, ale tak tutaj tak zrobiono by było najłatwiej sprawdzić działanie tego typu funkcji. Analogicznie możemy podawać parametry typu jednostki, np.: wywołaniu modułowym {{Code|{{m|Pudełko|Nazwa przestrzeni nazw|typ jednostki 2{{=}}strona szablonu|numer jednostki{{=}}2}}}}, ale o tym więcej w rozdziałach {{Code|{{sr|# p["Typ jednostki"](frame,i)|p=Pudełko}}}} w „{{sr|#Funkcje typu jednostki|p=Pudełko}}”, on definiuje przestrzenie przedmiotowe, ale można użyć parametru dyskusji typu jednostki z wartością niepustą, wtedy wyświetli się nazwa przestrzeni nazw dyskusji. Również parametry typu jednostki nie powinno się podawać w dziecku w ramce, tylko w rodzicu w szablonie jako parametry, w którym ta ramka jest wywoływana, ale tutaj podano jedynie dla przykładu, jak najłatwiej sprawdzić działanie tych parametrów tej funkcji. Najpierw w funkcji nagłówku brane są parametry nazw przestrzeni nazw, a jeżeli ich nie ma, to parametry typu jednostki, a jeżeli nie ma, to generowane są nazwy na podstawie aktualnego modułu. === {{Code|p["Nazwa przedmiotowej przestrzeni nazw"](frame,...)}} === Funkcja pisze przedmiotową nazwę przestrzeni nazw jakikolwiek nazwy przestrzeni nazw (tzn. nazwę przedmiotową nazwy przestrzenie nazw, czyli nie dyskusji, zamieniana jest na nią samą, czyli identyfikator przestrzeni się nie zmienia, a dyskusji, nie przedmiotową, przekształca się na przedmiotową jej odpowiadającą, czyli w tym przypadku identyfikator przestrzeni zmniejsza się o numer mniej), według podanej w zmiennej {{Code|nazwa przestrzeni nazw}} dla pozycja bazowej w podanych parametrach szablonu rodzicu ramki dziecka, lub dla innej pozycji należy parametr podawać w formie {{Code|nazwa przestrzeni nazw 1}}, {{Code|nazwa przestrzeni nazw 2}}, {{Code|nazwa przestrzeni nazw 3}},..., lub te parametry można podać w postaci ogólnej {{Code|nazwa przestrzeni nazw i}}. Parametry podaje się w parametrach rodzica wywołania tej funkcji {{Code|{{m|Pudełko|Nazwa przedmiotowej przestrzeni nazw}}}} (ale ich nie trzeba podawać w dziecku, ale można) i w parametrach dziecka, jeśli chodzi o zmienną {{Code|numer jednostki}}, czyli np.: {{Code|{{m|Pudełko|Nazwa przedmiotowej przestrzeni nazw|numer jednostki{{=}}<jakaś liczba całkowita dodatnia>}}}}. Te parametry przestrzenne zamiast w rodzicu w szablonie można podać w ramce dziecka, wtedy parametry dziecka mają pierwszeństwo. Parametry przestrzenne mogą mogą być podane w postaci przestrzeni przedmiotowej lub dyskusji, ale ta funkcja zawsze ją zamienia na przedmiotową. Przestrzeń nazw z parametrów nazw przestrzennych może odpowiadać wartości przestrzeni głównej, to wtedy odpowiednia przestrzeń nazw z parametru nazwy jednostki się nie liczy w tej funkcji, aby się liczyła należy użyć funkcji {{Code|{{sr|#p["Nazwa przedmiotowej przestrzeni nazw 2"](frame,...)|p=Pudełko}}}}. Definicja skrótowa funkcji: <syntaxhighlight lang="lua"> p["Nazwa przedmiotowej przestrzeni nazw"]=function(frame,czy_uwzglednic_alternatywna_nazwe,i)...end; </syntaxhighlight> Wtedy ciało funkcji tej, czyli jego definicja w środku, jest: <syntaxhighlight lang="lua"> -- Jest liczony numer parametru nazwy przestrzeni nazw, domyslnie chodzi tu o numer bazowy parametrów przestrzennych; local numer_jednostki=i or frame.args["numer jednostki"]; local liczba_numer_jednostki=((numer_jednostki)and(tonumber(numer_jednostki))or 0); local pudelko_pomocne_modul=require("Module:Pudełko/Pomocne"); -- Liczy nazwę przestrzeni nazw przedmiotową na podstawie podanych parametrów; return pudelko_pomocne_modul.Nazwa_przestrzeni_nazw(frame,1, czy_uwzglednic_alternatywna_nazwe,liczba_numer_jednostki); </syntaxhighlight> Parametry funkcji: * {{Code|frame}} - tablica ramki tablicy transportu, * {{Code|czy_uwzglednic_alternatywna_nazwe}} - czy ma uwzględniać nazwę przestrzeni nazw domyślną szablonu, dostępne wartości: {{Code|false}}, w której nazwa domyślna nie jest uwzględniana wtedy, oraz {{Code|nil}} i {{Code|true}}, które oznaczają to samo, w tym jeżeli ona jest uwzględniana, wtedy jest brany parametr pierwszy dziecka, który musi istnieć przy takiej wartości tego parametru, tzn. {{Code|{{m|Pudełko|Nazwa przedmiotowej przestrzeni nazw|Dyskusja szablonu}}}} - ta nazwa domyślna zostanie zamieniona na przedmiotową, a jak ona by była przedmiotowa, to żadnej zamiany by nie było, a nazwa uzyskana z nazwy przestrzeni nazw z parametrów przestrzennych jest w takim przypadku błędna, to w takim razie brany jest ten parametr, a jeżeli ta nazwa domyślna jest błędna, czyli {{Code|{{m|Pudełko|Nazwa przedmiotowej przestrzeni nazw|Moja przestrzeń}}}}, wtedy funkcja zwraca stan błędu {{Code|(błąd)}}. * {{Code|i}} - numer zmiennej nazwy przestrzeni nazw. Funkcja wykorzystuje {{Code|{{sr|#p.Nazwa_przestrzeni_nazw(frame,...)|p=Pudełko/Pomocne}}}} do wyznaczania ogólnego nazwy przestrzeni nazw dla pozycji bazowej i numerkowej, tzn. dla pozycji: jeden, dwa, trzy,..., itd, i ich ogólnej. Parametr ramki tablicy transportu rodzica szablonu: * {{Code|nazwa przestrzeni nazw}}, {{Code|nazwa przestrzeni nazw 1}}, {{Code|nazwa przestrzeni nazw 2}}, {{Code|nazwa przestrzeni nazw 3}},..., {{Code|nazwa przestrzeni nazw i}} - nazwy przestrzeni nazw dla pozycji bazowej oraz zwykłej i ogólnej numerkowej, * {{Code|typ jednostki}}, {{Code|typ jednostki 1}}, {{Code|typ jednostki 2}}, {{Code|typ jednostki 3}},..., {{Code|typ jednostki i}} - typy jednostek, którym odpowiadają pewne przestrzenie przedmiotowe, dla pozycji bazowej, numerkowej i ogólnej. Parametry ramki tablicy transportu dziecka: * Parametry dziecka są takie same jak rodzica dla funkcji pudełkowej plus tu wymienione, * {{Code|numer jednostki}} - jak parametr {{Code|i}} nie został ustawiony, to wtedy liczy się ta zmienna. Przykłady: <syntaxhighlight lang="mediawiki"> {{Nazwa szablonu|nazwa przestrzeni nazw=Dyskusja Wikibooks|nazwa przestrzeni nazw 2=Dyskusja szablonu|nazwa przestrzeni nazw i=Dyskusja modułu}} </syntaxhighlight> W dziecku powiedzmy jest wywołanie, i szukamy nazwy przestrzeni nazw o numerze dwa, która nie została podana, ale istnieje za to jej wersji ogólna {{Code|nazwa przestrzeni nazw i}} i domyślna {{Code|nazwa przestrzeni nazw}}: <syntaxhighlight lang="mediawiki"> {{#invoke:Pudełko|Nazwa przedmiotowej przestrzeni nazw|numer jednostki=1}} </syntaxhighlight> Na podstawie powyższego przykładu otrzymamy wynik o schemacie, nie wyniku, bo tam nie ma zmiennej {{Code|nazwa przestrzeni nazw 1}}, ale jest {{Code|nazwa przestrzeni nazw i}}: <syntaxhighlight lang="mediawiki"> <!-- Ale nie "nazwa przestrzeni nazw", bo jej nie ma, ale za to istnieje "nazwa przestrzeni nazw i"; --> <!-- nazwa przestrzeni nazw 2=nazwa przestrzeni nazw i=Dyskusja modułu; --> <!-- Czyli wynik: --> Moduł <!-- Widzimy, że wygenerowała się nazwa przestrzeni nazw, którą jest przestrzeń przedmiotowa programowa przestrzeni dyskusji "Dyskusja modułu", którą również jest "Szablon" jego przestrzeni dyskusji "Dyskusja szablonu", a dla ich przestrzeni przedmiotowej, zamiast dyskusji, to samo przekształca się na to samo; --> </syntaxhighlight> Nie jest brana w tym powyższym przykładzie zmienna {{Code|nazwa przestrzeni nazw}}, bo jej nie ma, ale za to jest {{Code|nazwa przestrzeni nazw i}}, bo ona występuje jako parametr domyślny ogólny dla parametrów numerkowych. Przykłady w wikikodzie: * {{Code|{{m|Pudełko|Nazwa przedmiotowej przestrzeni nazw|numer jednostki{{=}}2}}}} → {{Tt|{{#invoke:Pudełko|Nazwa przedmiotowej przestrzeni nazw|numer jednostki=2}}}} * {{Code|{{m|Pudełko|Nazwa przedmiotowej przestrzeni nazw|Dyskusja szablonu|nazwa przestrzeni nazw i{{=}}Moja przestrzeń|numer jednostki{{=}}2}}}} → {{Tt|{{#invoke:Pudełko|Nazwa przedmiotowej przestrzeni nazw|Dyskusja szablonu|nazwa przestrzeni nazw i=Moja przestrzeń|numer jednostki=2}}}} * {{Code|{{m|Pudełko|Nazwa przedmiotowej przestrzeni nazw|nazwa przestrzeni nazw 2{{=}}Dyskusja szablonu|numer jednostki{{=}}2}}}} → {{Tt|{{#invoke:Pudełko|Nazwa przedmiotowej przestrzeni nazw|nazwa przestrzeni nazw 2=Dyskusja szablonu|numer jednostki=2}}}} * {{Code|{{m|Pudełko|Nazwa przedmiotowej przestrzeni nazw|nazwa przestrzeni nazw 2{{=}}Dyskusja szablonu|numer jednostki{{=}}2}}}} → {{Tt|{{#invoke:Pudełko|Nazwa przedmiotowej przestrzeni nazw|nazwa przestrzeni nazw i=Dyskusja szablonu|numer jednostki=2}}}} * {{Code|{{m|Pudełko|Nazwa przedmiotowej przestrzeni nazw|nazwa przestrzeni nazw{{=}}Dyskusja szablonu|numer jednostki{{=}}2}}}} → {{Tt|{{#invoke:Pudełko|Nazwa przedmiotowej przestrzeni nazw|nazwa przestrzeni nazw=Dyskusja szablonu|numer jednostki=2}}}} Powyżej dla przykładu podano parametry nie w rodzicu w szablonie, tylko w dziecku, jeśli chodzi o parametry nazw przestrzeni nazw, ale ich się za to nie powinno podawać w tych ramach, tylko w szablonach, w których wywoływane są te ramki pudełek {{Code|{{m|Pudełko}}}}, ale tak tutaj tak zrobiono by było najłatwiej sprawdzić działanie tego typu funkcji. Analogicznie możemy podawać parametry typu jednostki, np.: wywołaniu modułowym {{Code|{{m|Pudełko|Nazwa przedmiotowej przestrzeni nazw|typ jednostki 2{{=}}strona szablonu|numer jednostki{{=}}2}}}}, ale o tym więcej w rozdziałach {{Code|{{sr|# p["Przedmiotowy typ jednostki"](frame,i)|p=Pudełko}}}} w „{{sr|#Funkcje typu jednostki|p=Pudełko}}”, ale wtedy ta sama nazwa przestrzeni nazw reprezentowana przez {{Parametr|typ jednostki 2|strona szablonu}}, jest zamieniana na to samo, lepiej jest tutaj używać parametrów przestrzennych nazw niż typu jednostki, bo typ jednostki ma taką samą wartość dla przestrzeni przedmiotowej, co dyskusji. Tutaj parametr dyskusji typu jednostki bazowy i numerkowy ogólny, czy szczegółowy, nie gra roli, bo nawet, gdy wygenerujemy nazwę przestrzeni dyskusji za pomoca tego parametru, to i tak otrzymamy na samym końcu jego nazwę przedmiotową. Również parametry typu jednostki nie powinno się podawać w dziecku w ramce, tylko w rodzicu w szablonie jako parametry, w którym ta ramka jest wywoływana, ale tutaj podano jedynie dla przykładu, jak najłatwiej sprawdzić działanie tych parametrów tej funkcji. Najpierw w funkcji nagłówku brane są parametry nazw przestrzeni nazw, a jeżeli ich nie ma, to parametry typu jednostki, a jeżeli nie ma, to generowane są nazwy na podstawie aktualnego modułu. === {{Code|p["Nazwa przestrzeni nazw dyskusji"](frame,...)}} === Funkcja pisze nazwę przestrzeni nazw dyskusji jakikolwiek nazwy przestrzeni nazw (tzn. nazwę przedmiotową nazwy przestrzenie nazw, czyli nie dyskusji, zamieniana jest na dyskusji, czyli identyfikator przestrzeni się zmienia jeden wyżej, a dyskusji, nie przedmiotową, przekształca się na tą samą), według podanej w zmiennej {{Code|nazwa przestrzeni nazw}} dla pozycja bazowej w podanych parametrach szablonu rodzicu ramki dziecka, lub dla innej pozycji należy parametr podawać w formie {{Code|nazwa przestrzeni nazw 1}}, {{Code|nazwa przestrzeni nazw 2}}, {{Code|nazwa przestrzeni nazw 3}},..., lub te parametry można podać w postaci ogólnej {{Code|nazwa przestrzeni nazw i}}. Parametry podaje się w parametrach rodzica wywołania tej funkcji {{Code|{{m|Pudełko|Nazwa przestrzeni nazw dyskusji}}}} (ale ich nie trzeba podawać w dziecku, ale można) i w parametrach dziecka, jeśli chodzi o zmienną {{Code|numer jednostki}}, czyli np.: {{Code|{{m|Pudełko|Nazwa przestrzeni nazw dyskusji|numer jednostki{{=}}<jakaś liczba całkowita dodatnia>}}}}. Te parametry przestrzenne zamiast w rodzicu w szablonie można podać w ramce dziecka, wtedy parametry dziecka mają pierwszeństwo. Parametry przestrzenne mogą mogą być podane w postaci przestrzeni przedmiotowej lub dyskusji, ale ta funkcja zawsze ją zamienia na dyskusji. Przestrzeń nazw z parametrów nazw przestrzennych może odpowiadać wartości przestrzeni głównej, to wtedy odpowiednia przestrzeń nazw z parametru nazwy jednostki się nie liczy w tej funkcji, aby się liczyła należy użyć funkcji {{Code|{{sr|#p["Nazwa przestrzeni nazw dyskusji 2"](frame,...)|p=Pudełko}}}}. Definicja skrótowa funkcji: <syntaxhighlight lang="lua"> p["Nazwa przestrzeni nazw dyskusji"]=function(frame,czy_uwzglednic_alternatywna_nazwe,i)...end; </syntaxhighlight> Wtedy ciało funkcji tej, czyli jego definicja w środku, jest: <syntaxhighlight lang="lua"> -- Jest liczony numer parametru nazwy przestrzeni nazw, domyslnie chodzi tu o numer bazowy parametrów przestrzennych; local numer_jednostki=i or frame.args["numer jednostki"]; local liczba_numer_jednostki=((numer_jednostki)and(tonumber(numer_jednostki))or 0); local pudelko_pomocne_modul=require("Module:Pudełko/Pomocne"); -- Liczy nazwę przestrzeni nazw dyskusji na podstawie podanych parametrów; return pudelko_pomocne_modul.Nazwa_przestrzeni_nazw(frame,2, czy_uwzglednic_alternatywna_nazwe,liczba_numer_jednostki); </syntaxhighlight> Parametry funkcji: * {{Code|frame}} - tablica ramki tablicy transportu, * {{Code|czy_uwzglednic_alternatywna_nazwe}} - czy ma uwzględniać nazwę przestrzeni nazw domyślną szablonu, dostępne wartości: {{Code|false}}, w której nazwa domyślna nie jest uwzględniana wtedy, oraz {{Code|nil}} i {{Code|true}}, które oznaczają to samo, w tym jeżeli ona jest uwzględniana, wtedy jest brany parametr pierwszy dziecka, który musi istnieć przy takiej wartości tego parametru, tzn. {{Code|{{m|Pudełko|Nazwa przestrzeni nazw dyskusji|Szablon}}}} - ta nazwa domyślna zostanie przekształcona na dyskusji, a jeżeli ona by była dyskusji, to nie byłoby żadnego przekształcenia, a nazwa uzyskana nazwy przestrzeni nazw z parametrów przestrzennych jest w takim przypadku błędna, to w takim razie brany jest ten parametr, a jeżeli nazwa domyślna jest błędna, czyli {{Code|{{m|Pudełko|Nazwa przestrzeni nazw dyskusji|Moja przestrzeń}}}}, wtedy funkcja zwraca stan błędu {{Code|(błąd)}}. * {{Code|i}} - numer zmiennej nazwy przestrzeni nazw. Funkcja wykorzystuje {{Code|{{sr|#p.Nazwa_przestrzeni_nazw(frame,...)|p=Pudełko/Pomocne}}}} do wyznaczania ogólnego nazwy przestrzeni nazw dla pozycji bazowej i numerkowej, tzn. dla pozycji: jeden, dwa, trzy,..., itd, i ich ogólnej. Parametr ramki tablicy transportu rodzica szablonu: * {{Code|nazwa przestrzeni nazw}}, {{Code|nazwa przestrzeni nazw 1}}, {{Code|nazwa przestrzeni nazw 2}}, {{Code|nazwa przestrzeni nazw 3}},..., {{Code|nazwa przestrzeni nazw i}} - nazwy przestrzeni nazw dla pozycji bazowej oraz zwykłej i ogólnej numerkowej, * {{Code|typ jednostki}}, {{Code|typ jednostki 1}}, {{Code|typ jednostki 2}}, {{Code|typ jednostki 3}},..., {{Code|typ jednostki i}} - typy jednostek, którym odpowiadają pewne przestrzenie przedmiotowe, dla pozycji bazowej, numerkowej i ogólnej. Parametry ramki tablicy transportu dziecka: * Parametry dziecka są takie same jak rodzica dla funkcji pudełkowej plus tu wymienione, * {{Code|numer jednostki}} - jak parametr {{Code|i}} nie został ustawiony, to wtedy liczy się ta zmienna. Przykłady: <syntaxhighlight lang="mediawiki"> {{Nazwa szablonu|nazwa przestrzeni nazw=Wikibooks|nazwa przestrzeni nazw 2=Szablon|nazwa przestrzeni nazw i=Moduł}} </syntaxhighlight> W dziecku powiedzmy jest wywołanie, i szukamy nazwy przestrzeni nazw o numerze dwa, która nie została podana, ale istnieje za to jej wersji ogólna {{Code|nazwa przestrzeni nazw i}} i domyślna {{Code|nazwa przestrzeni nazw}}: <syntaxhighlight lang="mediawiki"> {{#invoke:Pudełko|Nazwa przestrzeni nazw dyskusji|numer jednostki=1}} </syntaxhighlight> Na podstawie powyższego przykładu otrzymamy wynik o schemacie, nie wyniku, bo tam nie ma zmiennej {{Code|nazwa przestrzeni nazw 1}}, ale jest {{Code|nazwa przestrzeni nazw i}}: <syntaxhighlight lang="mediawiki"> <!-- Ale nie "nazwa przestrzeni nazw", bo jej nie ma, ale za to istnieje "nazwa przestrzeni nazw i"; --> <!-- nazwa przestrzeni nazw 2=nazwa przestrzeni nazw i=Moduł; --> <!-- Czyli wynik: --> Dyskusja modułu <!-- Widzimy, że wygenerowała się nazwa przestrzeni nazw, którą jest przestrzeń dyskusji przestrzeni programowej przestrzeni przedmiotowej "Moduł", którą również jest "Szablon" jego przestrzeni dyskusji "Dyskusja szablonu", a dla ich przestrzeni przedmiotowej, zamiast dyskusji, to przekształca się na dyskusji jej odpowiadającą; --> </syntaxhighlight> Nie jest brana w tym powyższym przykładzie zmienna {{Code|nazwa przestrzeni nazw}}, bo jej nie ma, ale za to jest {{Code|nazwa przestrzeni nazw i}}, bo ona występuje jako parametr domyślny ogólny dla parametrów numerkowych. Przykłady w wikikodzie: * {{Code|{{m|Pudełko|Nazwa przestrzeni nazw dyskusji|numer jednostki{{=}}2}}}} → {{Tt|{{#invoke:Pudełko|Nazwa przestrzeni nazw dyskusji|numer jednostki=2}}}} * {{Code|{{m|Pudełko|Nazwa przestrzeni nazw dyskusji|Szablon|nazwa przestrzeni nazw i{{=}}Moja przestrzeń|numer jednostki{{=}}2}}}} → {{Tt|{{#invoke:Pudełko|Nazwa przestrzeni nazw dyskusji|Szablon|nazwa przestrzeni nazw i=Moja przestrzeń|numer jednostki=2}}}} * {{Code|{{m|Pudełko|Nazwa przestrzeni nazw dyskusji|nazwa przestrzeni nazw 2{{=}}Szablon|numer jednostki{{=}}2}}}} → {{Tt|{{#invoke:Pudełko|Nazwa przestrzeni nazw dyskusji|nazwa przestrzeni nazw 2=Szablon|numer jednostki=2}}}} * {{Code|{{m|Pudełko|Nazwa przestrzeni nazw dyskusji|nazwa przestrzeni nazw 2{{=}}Szablon|numer jednostki{{=}}2}}}} → {{Tt|{{#invoke:Pudełko|Nazwa przestrzeni nazw dyskusji|nazwa przestrzeni nazw i=Szablon|numer jednostki=2}}}} * {{Code|{{m|Pudełko|Nazwa przestrzeni nazw dyskusji|nazwa przestrzeni nazw{{=}}Szablon|numer jednostki{{=}}2}}}} → {{Tt|{{#invoke:Pudełko|Nazwa przestrzeni nazw dyskusji|nazwa przestrzeni nazw=Szablon|numer jednostki=2}}}} Powyżej dla przykładu podano parametry nie w rodzicu w szablonie, tylko w dziecku, jeśli chodzi o parametry nazw przestrzeni nazw, ale ich się za to nie powinno podawać w tych ramach, tylko w szablonach, w których wywoływane są te ramki pudełek {{Code|{{m|Pudełko}}}}, ale tak tutaj tak zrobiono by było najłatwiej sprawdzić działanie tego typu funkcji. Analogicznie możemy podawać parametry typu jednostki, np.: wywołaniu modułowym {{Code|{{m|Pudełko|Nazwa przestrzeni nazw dyskusji|typ jednostki 2{{=}}strona szablonu|numer jednostki{{=}}2}}}}, ale o tym więcej w rozdziałach {{Code|{{sr|# p["Dyskusyjny typ jednostki"](frame,i)|p=Pudełko}}}} w „{{sr|#Funkcje typu jednostki|p=Pudełko}}”, ale wtedy nazwa przestrzeni nazw reprezentowana przez {{Parametr|typ jednostki 2|strona szablonu}}, jest zamieniana na nazwę przestrzeni nazw dyskusji. Parametr dyskusji typu jednostki bazowy lub dla danego numerka ogólny, czy szczegółowy, nie gra roli. Również parametry typu jednostki nie powinno się podawać w dziecku w ramce, tylko w rodzicu w szablonie jako parametry, w którym ta ramka jest wywoływana, ale tutaj podano jedynie dla przykładu, jak najłatwiej sprawdzić działanie tych parametrów tej funkcji. Najpierw w funkcji nagłówku brane są parametry nazw przestrzeni nazw, a jeżeli ich nie ma, to parametry typu jednostki, a jeżeli nie ma, to generowane są nazwy na podstawie aktualnego modułu. == Funkcje nazw przestrzeni nazw drugiej wersji == === {{Code|p["Nazwa przestrzeni nazw 2"](frame,...)}} === Funkcja pisze nazwę przestrzeni nazw, niezależnie, czy to jest przedmiotowa, czy dyskusji, według, i nie zawsze tylko, podanej w zmiennej {{Code|nazwa przestrzeni nazw}} dla pozycja bazowej w podanych parametrach szablonu rodzicu ramki dziecka, lub dla innej pozycji należy parametr podawać w formie {{Code|nazwa przestrzeni nazw 1}}, {{Code|nazwa przestrzeni nazw 2}}, {{Code|nazwa przestrzeni nazw 3}},..., lub te parametry można podać w postaci ogólnej {{Code|nazwa przestrzeni nazw i}}. W tej funkcji trzeba też podawać parametry nazwy jednostek {{Code|nazwa jednostki}}, {{Code|nazwa jednostki 1}}, {{Code|nazwa jednostki 2}}, {{Code|nazwa jednostki 3}},... Parametry podaje się w parametrach rodzica wywołania tej funkcji {{Code|{{m|Pudełko|Nazwa przestrzeni nazw 2}}}} (ale ich nie trzeba podawać w dziecku, ale można) i w parametrach dziecka, jeśli chodzi o zmienną {{Code|numer jednostki}}, czyli np.: {{Code|{{m|Pudełko|Nazwa przestrzeni nazw 2|numer jednostki{{=}}<jakaś liczba całkowita dodatnia>}}}}. Te parametry przestrzenne zamiast w rodzicu w szablonie można podać w ramce dziecka, wtedy parametry dziecka mają pierwszeństwo. Przestrzeń nazw z parametrów nazw przestrzennych może odpowiadać wartości przestrzeni głównej, to wtedy odpowiednia przestrzeń nazw z parametru nazwy jednostki się liczy w tej funkcji, wtedy jest liczona nazwa przestrzeni nazw z tego parametru. Gdy parametry przestrzenne lub typ jednostki w drugim podejściu nie wskazują na przestrzeń główną, to wtedy działanie tej funkcji jest podobne do {{Code|{{sr|#p["Nazwa przestrzeni nazw"](frame,...)|p=Pudełko}}}}. Definicja skrótowa funkcji: <syntaxhighlight lang="lua"> p["Nazwa przestrzeni nazw 2"]=function(frame,czy_uwzglednic_alternatywna_nazwe,i)...end; </syntaxhighlight> Wtedy ciało funkcji tej, czyli jego definicja w środku, jest: <syntaxhighlight lang="lua"> local pudelko_pomocne_modul=require("Module:Pudełko/Pomocne"); -- Liczy nazwę przestrzeni nazw, jeżeli z parametrów przestrzennych przestrzeń wskazuje na główną, to wtedy jest liczona przestrzeń nazw z nazwy jednostki; return pudelko_pomocne_modul.Nazwa_przestrzeni_nazw_2(frame,czy_uwzglednic_alternatywna_nazwe,i) </syntaxhighlight> Parametry funkcji: * {{Code|frame}} - tablica ramki tablicy transportu, * {{Code|czy_uwzglednic_alternatywna_nazwe}} - czy ma uwzględniać nazwę przestrzeni nazw domyślną szablonu, dostępne wartości: {{Code|false}}, w której nazwa domyślna nie jest uwzględniana wtedy, oraz {{Code|nil}} i {{Code|true}}, które oznaczają to samo, w tym jeżeli ona jest uwzględniana, wtedy jest brany parametr pierwszy dziecka, który musi istnieć przy takiej wartości tego parametru, tzn. {{Code|{{m|Pudełko|Nazwa przestrzeni nazw 2|Szablon}}}}, a nazwa uzyskana nazwy przestrzeni nazw jest w takim przypadku błędna, a jeżeli nazwa domyślna jest błędna, czyli {{Code|{{m|Pudełko|Nazwa przestrzeni nazw 2|Moja przestrzeń}}}}, wtedy funkcja zwraca stan błędu {{Code|(błąd)}}. * {{Code|i}} - numer zmiennej nazwy przestrzeni nazw. Funkcja wykorzystuje {{Code|{{sr|#p.Nazwa_przestrzeni_nazw_2(frame,...)|p=Pudełko/Pomocne}}}} do wyznaczania ogólnego nazwy przestrzeni nazw dla pozycji bazowej i numerkowej, tzn. dla pozycji: jeden, dwa, trzy,..., itd, i ich ogólnej. Parametr ramki tablicy transportu rodzica szablonu: * {{Code|nazwa przestrzeni nazw}}, {{Code|nazwa przestrzeni nazw 1}}, {{Code|nazwa przestrzeni nazw 2}}, {{Code|nazwa przestrzeni nazw 3}},..., {{Code|nazwa przestrzeni nazw i}} - nazwy przestrzeni nazw dla pozycji bazowej oraz zwykłej i ogólnej numerkowej, * {{Code|nazwa jednostki}}, {{Code|nazwa jednostki 1}}, {{Code|nazwa jednostki 2}}, {{Code|nazwa jednostki 3}},... - nazwy jednostek dla pozycji bazowej i numerkowej, * {{Code|typ jednostki}}, {{Code|typ jednostki 1}}, {{Code|typ jednostki 2}}, {{Code|typ jednostki 3}},..., {{Code|typ jednostki i}} - typy jednostek, którym odpowiadają pewne przestrzenie przedmiotowe, dla pozycji bazowej, numerkowej i ogólnej, ** {{Code|dyskusja typu jednostki}}, {{Code|dyskusja typu jednostki 1}}, {{Code|dyskusja typ jednostki 2}}, {{Code|dyskusja typ jednostki 3}},..., {{Code|dyskusja typ jednostki i}} - czy dany typ jednostki ma przedstawiać, jeśli niepusta, przestrzeń dyskusji dla pozycji bazowej, numerkowej i ogólnej. Parametry ramki tablicy transportu dziecka: * Parametry dziecka są takie same jak rodzica dla funkcji pudełkowej plus tu wymienione, * {{Code|numer jednostki}} - jak parametr {{Code|i}} nie został ustawiony, to wtedy liczy się ta zmienna. Przykłady: <syntaxhighlight lang="mediawiki"> {{Nazwa szablonu|nazwa przestrzeni nazw=Wikibooks|nazwa przestrzeni nazw 1=Szablon|nazwa przestrzeni nazw i=|nazwa jednostki 2=Wikibooks:Strona}} </syntaxhighlight> W dziecku powiedzmy jest wywołanie, i szukamy nazwy przestrzeni nazw o numerze dwa, która została podana, ale istnieje za to jej wersji ogólna {{Code|nazwa przestrzeni nazw i}} i domyślna {{Code|nazwa przestrzeni nazw}}, ale wtedy dla tego numerkowego liczy się to ogólne z {{Code| i}}, a ponieważ ta nazwa jest pusta, więc będziemy liczyli nazwę przestrzeni nazw z {{Code|nazwa jednostki 2}}: <syntaxhighlight lang="mediawiki"> {{#invoke:Pudełko|Nazwa przestrzeni nazw 2|numer jednostki=2}} </syntaxhighlight> Na podstawie powyższego przykładu otrzymamy wynik o schemacie, nie wyniku, bo tam nie ma zmiennej {{Code|nazwa przestrzeni nazw 1}}, ale jest {{Code|nazwa przestrzeni nazw i}}: <syntaxhighlight lang="mediawiki"> <!-- Ale nie "nazwa przestrzeni nazw 2", bo jej nie ma, ale za to istnieje "nazwa przestrzeni nazw i"; --> <!-- nazwa przestrzeni nazw 2=nazwa przestrzeni nazw i="", a nazwa jednostki 2="Wikibooks:Strona"; --> <!-- Czyli wynik: --> Wikibooks <!-- Widzimy, że wygenerowała się nazwa przestrzeni nazw, którą jest przestrzeń nieprogramowa, ale projektu, wychodząca z nazwy jednostek w tym przypadku z "nazwa jednostki 2"; --> </syntaxhighlight> Nie jest brana w tym powyższym przykładzie zmienna {{Code|nazwa przestrzeni nazw}}, bo jej nie ma, ale za to jest {{Code|nazwa przestrzeni nazw i}}, bo ona występuje jako parametr domyślny ogólny dla parametrów numerkowych. Tytaj jest używana jest zmienna {{Code|nazwa jednostki 2}} do wygenerowania ostatecznego wyniku, bo jak można zauważyć, parametry przestrzenne wskazują na przestrzeń główną, a nazwy jednostek już nie. Przykłady w wikikodzie: * {{Code|{{m|Pudełko|Nazwa przestrzeni nazw 2|numer jednostki{{=}}2}}}} → {{Tt|{{#invoke:Pudełko|Nazwa przestrzeni nazw 2|numer jednostki=2}}}} * {{Code|{{m|Pudełko|Nazwa przestrzeni nazw 2|Szablon|nazwa przestrzeni nazw i{{=}}Moja przestrzeń|numer jednostki{{=}}2}}}} → {{Tt|{{#invoke:Pudełko|Nazwa przestrzeni nazw 2|Szablon|nazwa przestrzeni nazw i=Moja przestrzeń|numer jednostki=2}}}} * {{Code|{{m|Pudełko|Nazwa przestrzeni nazw 2|nazwa przestrzeni nazw 2{{=}}|nazwa jednostki 2{{=}}Szablon:Strona|numer jednostki{{=}}2}}}} → {{Tt|{{#invoke:Pudełko|Nazwa przestrzeni nazw 2|nazwa przestrzeni nazw 2=|nazwa jednostki 2=Szablon:Strona|numer jednostki=2}}}} * {{Code|{{m|Pudełko|Nazwa przestrzeni nazw 2|nazwa przestrzeni nazw i{{=}}|nazwa jednostki 2{{=}}Szablon:Strona|numer jednostki{{=}}2}}}} → {{Tt|{{#invoke:Pudełko|Nazwa przestrzeni nazw 2|nazwa przestrzeni nazw i=|nazwa jednostki 2=Szablon:Strona|numer jednostki=2}}}} * {{Code|{{m|Pudełko|Nazwa przestrzeni nazw 2|Szablon|nazwa przestrzeni nazw{{=}}|nazwa jednostki 2{{=}}Wikibooks:Strona|numer jednostki{{=}}2}}}} → {{Tt|{{#invoke:Pudełko|Nazwa przestrzeni nazw 2|Szablon|nazwa przestrzeni nazw=|nazwa jednostki 2=Wikibooks:Strona|numer jednostki=2}}}} Powyżej dla przykładu podano parametry nie w rodzicu w szablonie, tylko w dziecku, jeśli chodzi o parametry nazw przestrzeni nazw i nazw jednostek, ale ich się za to nie powinno podawać w tych ramach, tylko w szablonach, w których wywoływane są te ramki pudełek {{Code|{{m|Pudełko}}}}, ale tak tutaj tak zrobiono by było najłatwiej sprawdzić działanie tego typu funkcji. Analogicznie możemy podawać parametry typu jednostki, np.: wywołaniu modułowym {{Code|{{m|Pudełko|Nazwa przestrzeni nazw 2|typ jednostki 2{{=}}Podręcznik|nazwa jednostki 2{{=}}Szablon:Strona|numer jednostki{{=}}2}}}} (ale wtedy jest brana przestrzeń nazw z nazwy jednostki), ale o tym więcej w rozdziałach {{Code|{{sr|#p["Typ jednostki 2"](frame,i)|p=Pudełko}}}} w „{{sr|#Funkcje typu jednostki|p=Pudełko}}”, on definiuje przestrzenie przedmiotowe, ale można użyć parametru dyskusji typu jednostki z wartością niepustą, wtedy wyświetli się nazwa przestrzeni nazw dyskusji. Jeżeli typ jednostki wskazuje na przestrzeń nazw główną, wtedy się liczą parametry nazw jednostek. Również parametry typu jednostki nie powinno się podawać w dziecku w ramce, tylko w rodzicu w szablonie jako parametry, w którym ta ramka jest wywoływana, ale tutaj podano jedynie dla przykładu, jak najłatwiej sprawdzić działanie tych parametrów tej funkcji. Najpierw w funkcji nagłówku brane są parametry nazw przestrzeni nazw, a jeżeli ich nie ma, to parametry typu jednostki, a jeżeli nie ma lub parametry przestrzenne wskazują na przestrzeń główną, i nie ma nazwy jednostki, to generowane są nazwy tej funkcji na podstawie aktualnej strony. === {{Code|p["Nazwa przedmiotowej przestrzeni nazw 2"](frame,...)}} === Funkcja pisze przedmiotową nazwę przestrzeni nazw jakikolwiek nazwy przestrzeni nazw (tzn. nazwę przedmiotową nazwy przestrzenie nazw, czyli nie dyskusji, zamieniana jest na nią samą, czyli identyfikator przestrzeni się nie zmienia, a dyskusji, nie przedmiotową, przekształca się na przedmiotową jej odpowiadającą, czyli w tym przypadku identyfikator przestrzeni zmniejsza się o numer mniej), według, i nie zawsze tylko, podanej w zmiennej {{Code|nazwa przestrzeni nazw}} dla pozycja bazowej w podanych parametrach szablonu rodzicu ramki dziecka, lub dla innej pozycji należy parametr podawać w formie {{Code|nazwa przestrzeni nazw 1}}, {{Code|nazwa przestrzeni nazw 2}}, {{Code|nazwa przestrzeni nazw 3}},..., lub te parametry można podać w postaci ogólnej {{Code|nazwa przestrzeni nazw i}}. W tej funkcji trzeba też podawać parametry nazwy jednostek {{Code|nazwa jednostki}}, {{Code|nazwa jednostki 1}}, {{Code|nazwa jednostki 2}}, {{Code|nazwa jednostki 3}},... Parametry podaje się w parametrach rodzica wywołania tej funkcji {{Code|{{m|Pudełko|Nazwa przedmiotowej przestrzeni nazw 2}}}} (ale ich nie trzeba podawać w dziecku, ale można) i w parametrach dziecka, jeśli chodzi o zmienną {{Code|numer jednostki}}, czyli np.: {{Code|{{m|Pudełko|Nazwa przedmiotowej przestrzeni nazw 2|numer jednostki{{=}}<jakaś liczba całkowita dodatnia>}}}}. Te parametry przestrzenne zamiast w rodzicu w szablonie można podać w ramce dziecka, wtedy parametry dziecka mają pierwszeństwo. Przestrzeń nazw z parametrów nazw przestrzennych po przekształceniu na przedmiotową może odpowiadać wartości przestrzeni głównej, to wtedy odpowiednia przestrzeń nazw z parametru nazwy jednostki się liczy w tej funkcji, wtedy jest liczona nazwa przestrzeni nazw z tego parametru. Gdy parametry przestrzenne lub typ jednostki w drugim podejściu nie wskazują na przestrzeń główną, to wtedy działanie tej funkcji jest podobne do {{Code|{{sr|#p["Nazwa przedmiotowej przestrzeni nazw"](frame,...)|p=Pudełko}}}}. Definicja skrótowa funkcji: <syntaxhighlight lang="lua"> p["Nazwa przedmiotowej przestrzeni nazw 2"]=function(frame,czy_uwzglednic_alternatywna_nazwe,i)...end; </syntaxhighlight> Wtedy ciało funkcji tej, czyli jego definicja w środku, jest: <syntaxhighlight lang="lua"> local pudelko_pomocne_modul=require("Module:Pudełko/Pomocne"); return pudelko_pomocne_modul.Nazwa_przestrzeni_nazw_przedmiotowa_dyskusji_2(frame,czy_uwzglednic_alternatywna_nazwe,i,"przedmiotowa"); </syntaxhighlight> Parametry funkcji: * {{Code|frame}} - tablica ramki tablicy transportu, * {{Code|czy_uwzglednic_alternatywna_nazwe}} - czy ma uwzględniać nazwę przestrzeni nazw domyślną szablonu, dostępne wartości: {{Code|false}}, w której nazwa domyślna nie jest uwzględniana wtedy, oraz {{Code|nil}} i {{Code|true}}, które oznaczają to samo, w tym jeżeli ona jest uwzględniana, wtedy jest brany parametr pierwszy dziecka, który musi istnieć przy takiej wartości tego parametru, tzn. {{Code|{{m|Pudełko|Nazwa przedmiotowej przestrzeni nazw 2|Szablon}}}}, a nazwa uzyskana nazwy przestrzeni nazw jest w takim przypadku błędna, a jeżeli nazwa domyślna jest błędna, czyli {{Code|{{m|Pudełko|Nazwa przedmiotowej przestrzeni nazw 2|Moja przestrzeń}}}}, wtedy funkcja zwraca stan błędu {{Code|(błąd)}}. * {{Code|i}} - numer zmiennej nazwy przestrzeni nazw. Funkcja wykorzystuje {{Code|{{sr|#p.Nazwa_przestrzeni_nazw_przedmiotowa_dyskusji_2(frame,...)|p=Pudełko/Pomocne}}}} do wyznaczania ogólnego nazwy przestrzeni nazw dla pozycji bazowej i numerkowej, tzn. dla pozycji: jeden, dwa, trzy,..., itd, i ich ogólnej. Parametr ramki tablicy transportu rodzica szablonu: * {{Code|nazwa przestrzeni nazw}}, {{Code|nazwa przestrzeni nazw 1}}, {{Code|nazwa przestrzeni nazw 2}}, {{Code|nazwa przestrzeni nazw 3}},..., {{Code|nazwa przestrzeni nazw i}} - nazwy przestrzeni nazw dla pozycji bazowej oraz zwykłej i ogólnej numerkowej, * {{Code|nazwa jednostki}}, {{Code|nazwa jednostki 1}}, {{Code|nazwa jednostki 2}}, {{Code|nazwa jednostki 3}},... - nazwy jednostek dla pozycji bazowej i numerkowej, * {{Code|typ jednostki}}, {{Code|typ jednostki 1}}, {{Code|typ jednostki 2}}, {{Code|typ jednostki 3}},..., {{Code|typ jednostki i}} - typy jednostek, którym odpowiadają pewne przestrzenie przedmiotowe, dla pozycji bazowej, numerkowej i ogólnej. Parametry ramki tablicy transportu dziecka: * Parametry dziecka są takie same jak rodzica dla funkcji pudełkowej plus tu wymienione, * {{Code|numer jednostki}} - jak parametr {{Code|i}} nie został ustawiony, to wtedy liczy się ta zmienna. Przykłady: <syntaxhighlight lang="mediawiki"> {{Nazwa szablonu|nazwa przestrzeni nazw=Wikibooks|nazwa przestrzeni nazw 1=Szablon|nazwa przestrzeni nazw i=|nazwa jednostki 2=Dyskusja Wikibooks:Strona}} </syntaxhighlight> W dziecku powiedzmy jest wywołanie, i szukamy nazwy przestrzeni nazw o numerze dwa, która została podana, ale istnieje za to jej wersji ogólna {{Code|nazwa przestrzeni nazw i}} i domyślna {{Code|nazwa przestrzeni nazw}}, ale wtedy dla tego numerkowego liczy się to ogólne z {{Code| i}}, a ponieważ ta nazwa jest pusta, więc będziemy liczyli nazwę przestrzeni nazw z {{Code|nazwa jednostki 2}}: <syntaxhighlight lang="mediawiki"> {{#invoke:Pudełko|Nazwa przedmiotowej przestrzeni nazw 2|numer jednostki=2}} </syntaxhighlight> Na podstawie powyższego przykładu otrzymamy wynik o schemacie, nie wyniku, bo tam nie ma zmiennej {{Code|nazwa przestrzeni nazw 1}}, ale jest {{Code|nazwa przestrzeni nazw i}}: <syntaxhighlight lang="mediawiki"> <!-- Ale nie "nazwa przestrzeni nazw 2", bo jej nie ma, ale za to istnieje "nazwa przestrzeni nazw i"; --> <!-- nazwa przestrzeni nazw 2=nazwa przestrzeni nazw i="", a nazwa jednostki 2="Dyskusja Wikibooks:Strona"; --> <!-- Czyli wynik: --> Wikibooks <!-- Widzimy, że wygenerowała się nazwa przestrzeni nazw, którą jest przestrzeń nieprogramowa, ale projektu, wychodząca z nazwy jednostek w tym przypadku z "nazwa jednostki 2"; --> </syntaxhighlight> Nie jest brana w tym powyższym przykładzie zmienna {{Code|nazwa przestrzeni nazw}}, bo jej nie ma, ale za to jest {{Code|nazwa przestrzeni nazw i}}, bo ona występuje jako parametr domyślny ogólny dla parametrów numerkowych. Tytaj jest używana jest zmienna {{Code|nazwa jednostki 2}} do wygenerowania ostatecznego wyniku, bo jak można zauważyć, parametry przestrzenne wskazują na przestrzeń główną, a nazwy jednostek już nie. Przykłady w wikikodzie: * {{Code|{{m|Pudełko|Nazwa przedmiotowej przestrzeni nazw 2|numer jednostki{{=}}2}}}} → {{Tt|{{#invoke:Pudełko|Nazwa przedmiotowej przestrzeni nazw 2|numer jednostki=2}}}} * {{Code|{{m|Pudełko|Nazwa przedmiotowej przestrzeni nazw 2|Dyskusja szablonu|nazwa przestrzeni nazw i{{=}}Moja przestrzeń|numer jednostki{{=}}2}}}} → {{Tt|{{#invoke:Pudełko|Nazwa przedmiotowej przestrzeni nazw 2|Dyskusja szablonu|nazwa przestrzeni nazw i=Moja przestrzeń|numer jednostki=2}}}} * {{Code|{{m|Pudełko|Nazwa przedmiotowej przestrzeni nazw 2|nazwa przestrzeni nazw 2{{=}}Dyskusja|nazwa jednostki 2{{=}}Dyskusja szablonu:Strona|numer jednostki{{=}}2}}}} → {{Tt|{{#invoke:Pudełko|Nazwa przedmiotowej przestrzeni nazw 2|nazwa przestrzeni nazw 2=Dyskusja|nazwa jednostki 2=Dyskusja szablonu:Strona|numer jednostki=2}}}} * {{Code|{{m|Pudełko|Nazwa przedmiotowej przestrzeni nazw 2|nazwa przestrzeni nazw i{{=}}Dyskusja|nazwa jednostki 2{{=}}Dyskusja szablonu:Strona|numer jednostki{{=}}2}}}} → {{Tt|{{#invoke:Pudełko|Nazwa przedmiotowej przestrzeni nazw 2|nazwa przestrzeni nazw i=Dyskusja|nazwa jednostki 2=Dyskusja szablonu:Strona|numer jednostki=2}}}} * {{Code|{{m|Pudełko|Nazwa przedmiotowej przestrzeni nazw 2|Dyskusja szablonu|nazwa przestrzeni nazw{{=}}Dyskusja|nazwa jednostki 2{{=}}Wikibooks:Strona|numer jednostki{{=}}2}}}} → {{Tt|{{#invoke:Pudełko|Nazwa przedmiotowej przestrzeni nazw 2|Dyskusja szablonu|nazwa przestrzeni nazw=Dyskusja|nazwa jednostki 2=Dyskusja Wikibooks:Strona|numer jednostki=2}}}} Powyżej dla przykładu podano parametry nie w rodzicu w szablonie, tylko w dziecku, jeśli chodzi o parametry nazw przestrzeni nazw i nazw jednostek, ale ich się za to nie powinno podawać w tych ramach, tylko w szablonach, w których wywoływane są te ramki pudełek {{Code|{{m|Pudełko}}}}, ale tak tutaj tak zrobiono by było najłatwiej sprawdzić działanie tego typu funkcji. Analogicznie możemy podawać parametry typu jednostki, np.: wywołaniu modułowym {{Code|{{m|Pudełko|Nazwa przedmiotowej przestrzeni nazw 2|typ jednostki 2{{=}}Podręcznik|nazwa jednostki 2{{=}}Dyskusja szablonu:Strona|numer jednostki{{=}}2}}}} (ale wtedy jest brana przestrzeń nazw z nazwy jednostki), ale o tym więcej w rozdziałach {{Code|{{sr|# p["Przedmiotowy typ jednostki 2"](frame,i)|p=Pudełko}}}} w „{{sr|#Funkcje typu jednostki|p=Pudełko}}”, on definiuje przestrzenie przedmiotowe, ale można użyć parametru dyskusji typu jednostki z wartością niepustą, pustą, czy nawet jej nie podamy, wtedy wyświetli się nazwa przestrzeni nazw przedmiotowej. Jeżeli typ jednostki wskazuje na przestrzeń nazw główną, wtedy się liczą parametry nazw jednostek. Również parametry typu jednostki nie powinno się podawać w dziecku w ramce, tylko w rodzicu w szablonie jako parametry, w którym ta ramka jest wywoływana, ale tutaj podano jedynie dla przykładu, jak najłatwiej sprawdzić działanie tych parametrów tej funkcji. Najpierw w funkcji nagłówku brane są parametry nazw przestrzeni nazw, a jeżeli ich nie ma, to parametry typu jednostki, a jeżeli nie ma lub parametry przestrzenne wskazują na przestrzeń główną, i nie ma nazwy jednostki, to generowane są nazwy tej funkcji na podstawie aktualnej strony. === {{Code|p["Nazwa przestrzeni nazw dyskusji 2"](frame,...)}} === Funkcja pisze nazwę przestrzeni nazw dyskusji jakikolwiek nazwy przestrzeni nazw (tzn. nazwę dyskusji nazwy przestrzenie nazw, czyli nie przedmiotowej, zamieniana jest na nią samą, czyli identyfikator przestrzeni się nie zmienia, a przedmiotową, nie dyskusji, przekształca się na dyskusji jej odpowiadającą, czyli w tym przypadku identyfikator przestrzeni zwiększa się o numer więcej), według, i nie zawsze tylko, podanej w zmiennej {{Code|nazwa przestrzeni nazw}} dla pozycja bazowej w podanych parametrach szablonu rodzicu ramki dziecka, lub dla innej pozycji należy parametr podawać w formie {{Code|nazwa przestrzeni nazw 1}}, {{Code|nazwa przestrzeni nazw 2}}, {{Code|nazwa przestrzeni nazw 3}},..., lub te parametry można podać w postaci ogólnej {{Code|nazwa przestrzeni nazw i}}. W tej funkcji trzeba też podawać parametry nazwy jednostek {{Code|nazwa jednostki}}, {{Code|nazwa jednostki 1}}, {{Code|nazwa jednostki 2}}, {{Code|nazwa jednostki 3}},... Parametry podaje się w parametrach rodzica wywołania tej funkcji {{Code|{{m|Pudełko|Nazwa przestrzeni nazw dyskusji 2}}}} (ale ich nie trzeba podawać w dziecku, ale można) i w parametrach dziecka, jeśli chodzi o zmienną {{Code|numer jednostki}}, czyli np.: {{Code|{{m|Pudełko|Nazwa przestrzeni nazw dyskusji 2|numer jednostki{{=}}<jakaś liczba całkowita dodatnia>}}}}. Te parametry przestrzenne zamiast w rodzicu w szablonie można podać w ramce dziecka, wtedy parametry dziecka mają pierwszeństwo. Przestrzeń nazw z parametrów nazw przestrzennych po przekształceniu na przedmiotową może odpowiadać wartości przestrzeni głównej, to wtedy odpowiednia przestrzeń nazw z parametru nazwy jednostki się liczy w tej funkcji, wtedy jest liczona nazwa przestrzeni nazw z tego parametru. Gdy parametry przestrzenne lub typ jednostki w drugim podejściu nie wskazują na przestrzeń główną, to wtedy działanie tej funkcji jest podobne do {{Code|{{sr|#p["Nazwa dyskusji przestrzeni nazw"](frame,...)|p=Pudełko}}}}. Definicja skrótowa funkcji: <syntaxhighlight lang="lua"> p["Nazwa przestrzeni nazw dyskusji 2"]=function(frame,czy_uwzglednic_alternatywna_nazwe,i)...end; </syntaxhighlight> Wtedy ciało funkcji tej, czyli jego definicja w środku, jest: <syntaxhighlight lang="lua"> local pudelko_pomocne_modul=require("Module:Pudełko/Pomocne"); return pudelko_pomocne_modul.Nazwa_przestrzeni_nazw_przedmiotowa_dyskusji_2(frame,czy_uwzglednic_alternatywna_nazwe,i,"dyskusja"); </syntaxhighlight> Parametry funkcji: * {{Code|frame}} - tablica ramki tablicy transportu, * {{Code|czy_uwzglednic_alternatywna_nazwe}} - czy ma uwzględniać nazwę przestrzeni nazw domyślną szablonu, dostępne wartości: {{Code|false}}, w której nazwa domyślna nie jest uwzględniana wtedy, oraz {{Code|nil}} i {{Code|true}}, które oznaczają to samo, w tym jeżeli ona jest uwzględniana, wtedy jest brany parametr pierwszy dziecka, który musi istnieć przy takiej wartości tego parametru, tzn. {{Code|{{m|Pudełko|Nazwa przestrzeni nazw dyskusji 2|Szablon}}}}, a nazwa uzyskana nazwy przestrzeni nazw jest w takim przypadku błędna, a jeżeli nazwa domyślna jest błędna, czyli {{Code|{{m|Pudełko|Nazwa przestrzeni nazw dyskusji 2|Moja przestrzeń}}}}, wtedy funkcja zwraca stan błędu {{Code|(błąd)}}. * {{Code|i}} - numer zmiennej nazwy przestrzeni nazw. Funkcja wykorzystuje {{Code|{{sr|#p.Nazwa_przestrzeni_nazw_przedmiotowa_dyskusji_2(frame,...)|p=Pudełko/Pomocne}}}} do wyznaczania ogólnego nazwy przestrzeni nazw dla pozycji bazowej i numerkowej, tzn. dla pozycji: jeden, dwa, trzy,..., itd, i ich ogólnej. Parametr ramki tablicy transportu rodzica szablonu: * {{Code|nazwa przestrzeni nazw}}, {{Code|nazwa przestrzeni nazw 1}}, {{Code|nazwa przestrzeni nazw 2}}, {{Code|nazwa przestrzeni nazw 3}},..., {{Code|nazwa przestrzeni nazw i}} - nazwy przestrzeni nazw dla pozycji bazowej oraz zwykłej i ogólnej numerkowej, * {{Code|nazwa jednostki}}, {{Code|nazwa jednostki 1}}, {{Code|nazwa jednostki 2}}, {{Code|nazwa jednostki 3}},... - nazwy jednostek dla pozycji bazowej i numerkowej, * {{Code|typ jednostki}}, {{Code|typ jednostki 1}}, {{Code|typ jednostki 2}}, {{Code|typ jednostki 3}},..., {{Code|typ jednostki i}} - typy jednostek, którym odpowiadają pewne przestrzenie przedmiotowe, dla pozycji bazowej, numerkowej i ogólnej. Parametry ramki tablicy transportu dziecka: * Parametry dziecka są takie same jak rodzica dla funkcji pudełkowej plus tu wymienione, * {{Code|numer jednostki}} - jak parametr {{Code|i}} nie został ustawiony, to wtedy liczy się ta zmienna. Przykłady: <syntaxhighlight lang="mediawiki"> {{Nazwa szablonu|nazwa przestrzeni nazw=Wikibooks|nazwa przestrzeni nazw 1=Szablon|nazwa przestrzeni nazw i=|nazwa jednostki 2=Wikibooks:Strona}} </syntaxhighlight> W dziecku powiedzmy jest wywołanie, i szukamy nazwy przestrzeni nazw o numerze dwa, która została podana, ale istnieje za to jej wersji ogólna {{Code|nazwa przestrzeni nazw i}} i domyślna {{Code|nazwa przestrzeni nazw}}, ale wtedy dla tego numerkowego liczy się to ogólne z {{Code| i}}, a ponieważ ta nazwa jest pusta, więc będziemy liczyli nazwę przestrzeni nazw z {{Code|nazwa jednostki 2}}: <syntaxhighlight lang="mediawiki"> {{#invoke:Pudełko|Nazwa przestrzeni nazw dyskusji 2|numer jednostki=2}} </syntaxhighlight> Na podstawie powyższego przykładu otrzymamy wynik o schemacie, nie wyniku, bo tam nie ma zmiennej {{Code|nazwa przestrzeni nazw 1}}, ale jest {{Code|nazwa przestrzeni nazw i}}: <syntaxhighlight lang="mediawiki"> <!-- Ale nie "nazwa przestrzeni nazw 2", bo jej nie ma, ale za to istnieje "nazwa przestrzeni nazw i"; --> <!-- nazwa przestrzeni nazw 2=nazwa przestrzeni nazw i="", a nazwa jednostki 2="Wikibooks:Strona"; --> <!-- Czyli wynik: --> Dyskusja Wikibooks <!-- Widzimy, że wygenerowała się nazwa przestrzeni nazw, którą jest przestrzeń nieprogramowa, ale dyskusji projektu, wychodząca z nazwy jednostek w tym przypadku z "nazwa jednostki 2"; --> </syntaxhighlight> Nie jest brana w tym powyższym przykładzie zmienna {{Code|nazwa przestrzeni nazw}}, bo jej nie ma, ale za to jest {{Code|nazwa przestrzeni nazw i}}, bo ona występuje jako parametr domyślny ogólny dla parametrów numerkowych. Tytaj jest używana jest zmienna {{Code|nazwa jednostki 2}} do wygenerowania ostatecznego wyniku, bo jak można zauważyć, parametry przestrzenne wskazują na przestrzeń główną, a nazwy jednostek już nie. Przykłady w wikikodzie: * {{Code|{{m|Pudełko|Nazwa przestrzeni nazw dyskusji 2|numer jednostki{{=}}2}}}} → {{Tt|{{#invoke:Pudełko|Nazwa przestrzeni nazw dyskusji 2|numer jednostki=2}}}} * {{Code|{{m|Pudełko|Nazwa przestrzeni nazw dyskusji 2|Szablon|nazwa przestrzeni nazw i{{=}}Moja przestrzeń|numer jednostki{{=}}2}}}} → {{Tt|{{#invoke:Pudełko|Nazwa przestrzeni nazw dyskusji 2|Szablon|nazwa przestrzeni nazw i=Moja przestrzeń|numer jednostki=2}}}} * {{Code|{{m|Pudełko|Nazwa przestrzeni nazw dyskusji 2|nazwa przestrzeni nazw 2{{=}}|nazwa jednostki 2{{=}}Szablon:Strona|numer jednostki{{=}}2}}}} → {{Tt|{{#invoke:Pudełko|Nazwa przestrzeni nazw dyskusji 2|nazwa przestrzeni nazw 2=|nazwa jednostki 2=Szablon:Strona|numer jednostki=2}}}} * {{Code|{{m|Pudełko|Nazwa przestrzeni nazw dyskusji 2|nazwa przestrzeni nazw i{{=}}|nazwa jednostki 2{{=}}Szablon:Strona|numer jednostki{{=}}2}}}} → {{Tt|{{#invoke:Pudełko|Nazwa przestrzeni nazw dyskusji 2|nazwa przestrzeni nazw i=|nazwa jednostki 2=Szablon:Strona|numer jednostki=2}}}} * {{Code|{{m|Pudełko|Nazwa przestrzeni nazw dyskusji 2|Szablon|nazwa przestrzeni nazw{{=}}|nazwa jednostki 2{{=}}Wikibooks:Strona|numer jednostki{{=}}2}}}} → {{Tt|{{#invoke:Pudełko|Nazwa przestrzeni nazw dyskusji 2|Szablon|nazwa przestrzeni nazw=|nazwa jednostki 2=Dyskusja Wikibooks:Strona|numer jednostki=2}}}} Powyżej dla przykładu podano parametry nie w rodzicu w szablonie, tylko w dziecku, jeśli chodzi o parametry nazw przestrzeni nazw i nazw jednostek, ale ich się za to nie powinno podawać w tych ramach, tylko w szablonach, w których wywoływane są te ramki pudełek {{Code|{{m|Pudełko}}}}, ale tak tutaj tak zrobiono by było najłatwiej sprawdzić działanie tego typu funkcji. Analogicznie możemy podawać parametry typu jednostki, np.: wywołaniu modułowym {{Code|{{m|Pudełko|Nazwa przestrzeni nazw dyskusji 2|typ jednostki 2{{=}}Podręcznik|nazwa jednostki 2{{=}}Szablon:Strona|numer jednostki{{=}}2}}}} (ale wtedy jest brana przestrzeń nazw z nazwy jednostki), ale o tym więcej w rozdziałach {{Code|{{sr|# p["Dyskusyjny typ jednostki 2"](frame,i)|p=Pudełko}}}} w „{{sr|#Funkcje typu jednostki|p=Pudełko}}”, on definiuje przestrzenie dyskusji, ale można użyć parametru dyskusji typu jednostki z obojętnie jaką wartością niepustą, czy pustą, czy nawet jej nie podamy, wtedy wyświetli się nazwa przestrzeni nazw dyskusji. Jeżeli typ jednostki wskazuje na przestrzeń nazw główną, wtedy się liczą parametry nazw jednostek. Również parametry typu jednostki nie powinno się podawać w dziecku w ramce, tylko w rodzicu w szablonie jako parametry, w którym ta ramka jest wywoływana, ale tutaj podano jedynie dla przykładu, jak najłatwiej sprawdzić działanie tych parametrów tej funkcji. Najpierw w funkcji nagłówku brane są parametry nazw przestrzeni nazw, a jeżeli ich nie ma, to parametry typu jednostki, a jeżeli nie ma lub parametry przestrzenne wskazują na przestrzeń główną, i nie ma nazwy jednostki, to generowane są nazwy tej funkcji na podstawie aktualnej strony. == Funkcje pełnych nazw jednostki == === {{Code|p["Pełna nazwa dyskusji jednostki"](frame,i)}} === === {{Code|p["Pełna nazwa przedmiotowa jednostki"](frame,i)}} === === {{Code|p["Pełna nazwa jednostki"](frame,i)}} === == Funkcje pełnych nazw jednostki drugiej wersji == === {{Code|p["Pełna nazwa dyskusji jednostki 2"](frame,i)}} === === {{Code|p["Pełna nazwa przedmiotowa jednostki 2"](frame,i)}} === === {{Code|p["Pełna nazwa jednostki 2"](frame,i)}} === == Funkcje pełnych nazw jednostki trzeciej wersji == === {{Code|p["Pełna nazwa dyskusji jednostki 3"](frame,i)}} === === {{Code|p["Pełna nazwa przedmiotowa jednostki 3"](frame,i)}} === === {{Code|p["Pełna nazwa jednostki 3"](frame,i)}} === == Funkcje nazw jednostki == === {{Code|p["Nazwa jednostki"](frame,i)}} === == Funkcje nazw jednostki drugiej wersji == === {{Code|p["Nazwa jednostki 2"](frame,i)}} === === {{Code|p["Nazwa przedmiotowa jednostki 2"](frame,i)}} === === {{Code|p["Nazwa dyskusji jednostki 2"](frame,i)}} === == Funkcje nazw przestrzeni nazw trzeciej wersji == === {{Code|p["Nazwa przestrzeni nazw 3"](frame,i)}} === Funkcja pisze nazwę przestrzeni nazw, niezależnie, czy to jest przedmiotowa, czy dyskusji, według, i nie zawsze tylko, podanej w zmiennej {{Code|nazwa przestrzeni nazw}} dla pozycja bazowej w podanych parametrach szablonu rodzicu ramki dziecka, lub dla innej pozycji należy parametr podawać w formie {{Code|nazwa przestrzeni nazw 1}}, {{Code|Nazwa przestrzeni nazw 3}}, {{Code|nazwa przestrzeni nazw 3}},..., lub te parametry można podać w postaci ogólnej {{Code|nazwa przestrzeni nazw i}}. W tej funkcji trzeba też podawać parametry nazwy jednostek {{Code|nazwa jednostki}}, {{Code|nazwa jednostki 1}}, {{Code|nazwa jednostki 2}}, {{Code|nazwa jednostki 3}},... Parametry podaje się w parametrach rodzica wywołania tej funkcji {{Code|{{m|Pudełko|Nazwa przestrzeni nazw 3}}}} (ale ich nie trzeba podawać w dziecku, ale można) i w parametrach dziecka, jeśli chodzi o zmienną {{Code|numer jednostki}}, czyli np.: {{Code|{{m|Pudełko|Nazwa przestrzeni nazw 3|numer jednostki{{=}}<jakaś liczba całkowita dodatnia>}}}}. Te parametry przestrzenne zamiast w rodzicu w szablonie można podać w ramce dziecka, wtedy parametry dziecka mają pierwszeństwo. Przestrzeń nazw z parametrów nazw przestrzennych bazowych (bez numerka) może odpowiadać wartości przestrzeni głównej, to wtedy odpowiednia przestrzeń nazw z parametru nazwy jednostki się nie liczy w tej funkcji, aby się liczyła należy użyć funkcji {{Code|{{sr|#p["Nazwa przestrzeni nazw 2"](frame,...)|p=Pudełko}}}}. Przestrzeń nazw z parametrów nazw przestrzennych numerkowych może odpowiadać wartości przestrzeni głównej, to wtedy odpowiednia przestrzeń nazw z parametru nazwy jednostki się liczy w tej funkcji, wtedy jest liczona nazwa przestrzeni nazw z tego parametru. Gdy parametry przestrzenne lub typ jednostki w drugim podejściu nie wskazują na przestrzeń główną, to wtedy działanie tej funkcji jest podobne do {{Code|{{sr|#p["Nazwa przestrzeni nazw"](frame,...)|p=Pudełko}}}}. Definicja skrótowa funkcji: <syntaxhighlight lang="lua"> p["Nazwa przestrzeni nazw 3"]=function(frame,czy_uwzglednic_alternatywna_nazwe,i)...end; </syntaxhighlight> Wtedy ciało funkcji tej, czyli jego definicja w środku, jest: <syntaxhighlight lang="lua"> -- Jest liczony numer parametru nazwy przestrzeni nazw, domyslnie chodzi tu o numer bazowy parametrów przestrzennych; local numer_jednostki=i or frame.args["numer jednostki"]; local liczba_numeru_jednostki=((numer_jednostki)and(tonumber(numer_jednostki)) or 0); local pudelko_pomocne_modul=require("Module:Pudełko/Pomocne"); -- Liczy nazwę przestrzeni nazw dyskusji na podstawie podanych parametrów; return pudelko_pomocne_modul.Uzyskanie_nazw_jednostki(frame,0,liczba_numeru_jednostki,nil,2); </syntaxhighlight> Parametry funkcji: * {{Code|frame}} - tablica ramki tablicy transportu, * {{Code|czy_uwzglednic_alternatywna_nazwe}} - czy ma uwzględniać nazwę przestrzeni nazw domyślną szablonu, dostępne wartości: {{Code|false}}, w której nazwa domyślna nie jest uwzględniana wtedy, oraz {{Code|nil}} i {{Code|true}}, które oznaczają to samo, w tym jeżeli ona jest uwzględniana, wtedy jest brany parametr pierwszy dziecka, który musi istnieć przy takiej wartości tego parametru, tzn. {{Code|{{m|Pudełko|Nazwa przestrzeni nazw 3|Szablon}}}}, a nazwa uzyskana nazwy przestrzeni nazw jest w takim przypadku błędna, a jeżeli nazwa domyślna jest błędna, czyli {{Code|{{m|Pudełko|Nazwa przestrzeni nazw 3|Moja przestrzeń}}}}, wtedy funkcja zwraca stan błędu {{Code|(błąd)}}. * {{Code|i}} - numer zmiennej nazwy przestrzeni nazw. Funkcja wykorzystuje {{Code|{{sr|#p.Nazwa_przestrzeni_nazw_2(frame,...)|p=Pudełko/Pomocne}}}} do wyznaczania ogólnego nazwy przestrzeni nazw dla pozycji bazowej i numerkowej, tzn. dla pozycji: jeden, dwa, trzy,..., itd, i ich ogólnej. Parametr ramki tablicy transportu rodzica szablonu: * {{Code|nazwa przestrzeni nazw}}, {{Code|nazwa przestrzeni nazw 1}}, {{Code|Nazwa przestrzeni nazw 3}}, {{Code|nazwa przestrzeni nazw 3}},..., {{Code|nazwa przestrzeni nazw i}} - nazwy przestrzeni nazw dla pozycji bazowej oraz zwykłej i ogólnej numerkowej, * {{Code|nazwa jednostki}}, {{Code|nazwa jednostki 1}}, {{Code|nazwa jednostki 2}}, {{Code|nazwa jednostki 3}},... - nazwy jednostek dla pozycji bazowej i numerkowej, * {{Code|typ jednostki}}, {{Code|typ jednostki 1}}, {{Code|typ jednostki 2}}, {{Code|typ jednostki 3}},..., {{Code|typ jednostki i}} - typy jednostek, którym odpowiadają pewne przestrzenie przedmiotowe, dla pozycji bazowej, numerkowej i ogólnej, ** {{Code|dyskusja typu jednostki}}, {{Code|dyskusja typu jednostki 1}}, {{Code|dyskusja typ jednostki 2}}, {{Code|dyskusja typ jednostki 3}},..., {{Code|dyskusja typ jednostki i}} - czy dany typ jednostki ma przedstawiać, jeśli niepusta, przestrzeń dyskusji dla pozycji bazowej, numerkowej i ogólnej. Parametry ramki tablicy transportu dziecka: * Parametry dziecka są takie same jak rodzica dla funkcji pudełkowej plus tu wymienione, * {{Code|numer jednostki}} - jak parametr {{Code|i}} nie został ustawiony, to wtedy liczy się ta zmienna. Przykłady: <syntaxhighlight lang="mediawiki"> {{Nazwa szablonu|nazwa przestrzeni nazw=Wikibooks|nazwa przestrzeni nazw=|nazwa przestrzeni nazw i=|nazwajednostki=Szablon:Strona|nazwa jednostki 2=Wikibooks:Strona}} <hr /> {{Nazwa szablonu|nazwa przestrzeni nazw=Wikibooks|nazwa przestrzeni nazw 1=Szablon|nazwa przestrzeni nazw i=|nazwa jednostki 2=Wikibooks:Strona}} </syntaxhighlight> W dziecku powiedzmy jest wywołanie, i szukamy nazwy przestrzeni nazw o numerze dwa, która została podana, ale istnieje za to jej wersji ogólna {{Code|nazwa przestrzeni nazw i}} i domyślna {{Code|nazwa przestrzeni nazw}}, ale wtedy dla tego numerkowego liczy się to ogólne z {{Code| i}}, a ponieważ ta nazwa jest pusta, więc będziemy liczyli nazwę przestrzeni nazw z {{Code|nazwa jednostki 2}}: <syntaxhighlight lang="mediawiki"> {{#invoke:Pudełko|Nazwa przestrzeni nazw 3}} <hr /> {{#invoke:Pudełko|Nazwa przestrzeni nazw 3|numer jednostki=2}} </syntaxhighlight> Na podstawie powyższego przykładu otrzymamy wynik o schemacie, nie wyniku, bo tam nie ma zmiennej {{Code|nazwa przestrzeni nazw 1}}, ale jest {{Code|nazwa przestrzeni nazw i}}: <syntaxhighlight lang="mediawiki"> <!-- Ale nie "nazwa przestrzeni nazw""; --> <!-- nazwa przestrzeni nazw=""; --> <!-- Czyli wynik: --> <!-- wynik pusty --> <!-- Widzimy, że wygenerowała się nazwa przestrzeni nazw, którą jest przestrzeń nazw główna, jest ciągiem pustym: ""; --> <hr /> <!-- Ale nie "Nazwa przestrzeni nazw 2", bo jej nie ma, ale za to istnieje "nazwa przestrzeni nazw i"; --> <!-- nazwa przestrzeni nazw 2=nazwa przestrzeni nazw i="", a nazwa jednostki 2="Wikibooks:Strona"; --> <!-- Czyli wynik: --> Wikibooks <!-- Widzimy, że wygenerowała się nazwa przestrzeni nazw, którą jest przestrzeń nieprogramowa, ale projektu, wychodząca z nazwy jednostek w tym przypadku z "nazwa jednostki 2"; --> </syntaxhighlight> Dla parametrów bazowych nienumerkowych istnieje zmienna {{Code|nazwa przestrzeni nazw}}, której waartość jest pusta,którajest zwracana przez tą funkcję. {{Hr}} Dla parametrów numerkowych nie jest brana w tym powyższym przykładzie zmienna {{Code|nazwa przestrzeni nazw}}, bo jej nie ma, ale za to jest {{Code|nazwa przestrzeni nazw i}}, bo ona występuje jako parametr domyślny ogólny dla parametrów numerkowych. Tytaj jest używana jest zmienna {{Code|nazwa jednostki 2}} do wygenerowania ostatecznego wyniku, bo jak można zauważyć, parametry przestrzenne wskazują na przestrzeń główną, a nazwy jednostek już nie. Przykłady w wikikodzie: * {{Code|{{m|Pudełko|Nazwa przestrzeni nazw 3|nazwa przestrzeni nazw{{=}}|nazwa jednostki{{=}}Wikibooks:Strona}}}} → {{Tt|{{#invoke:Pudełko|Nazwa przestrzeni nazw 3|nazwa przestrzeni nazw=|nazwa jednostki=Wikibooks:Szablon}}}} * {{Code|{{m|Pudełko|Nazwa przestrzeni nazw 3|nazwa przestrzeni nazw 2{{=}}|nazwa jednostki 2{{=}}Wikibooks:Strona|numer jednostki{{=}}2}}}} → {{Tt|{{#invoke:Pudełko|Nazwa przestrzeni nazw 3|nazwa przestrzeni nazw 2=|nazwa jednostki 2=Wikibooks:Szablon|numer jednostki=2}}}} Powyżej dla przykładu podano parametry nie w rodzicu w szablonie, tylko w dziecku, jeśli chodzi o parametry nazw przestrzeni nazw i nazw jednostek, ale ich się za to nie powinno podawać w tych ramach, tylko w szablonach, w których wywoływane są te ramki pudełek {{Code|{{m|Pudełko}}}}, ale tak tutaj tak zrobiono by było najłatwiej sprawdzić działanie tego typu funkcji. Analogicznie możemy podawać parametry typu jednostki, np.: wywołaniu modułowym {{Code|{{m|Pudełko|Nazwa przestrzeni nazw 3|typ jednostki 2{{=}}Podręcznik|nazwa jednostki 2{{=}}Szablon:Strona|numer jednostki{{=}}2}}}} (ale wtedy jest brana przestrzeń nazw z nazwy jednostki), ale o tym więcej w rozdziałach {{Code|{{sr|#p["Typ jednostki 3"](frame,i)|p=Pudełko}}}} w „{{sr|#Funkcje typu jednostki|p=Pudełko}}”, on definiuje przestrzenie przedmiotowe, ale można użyć parametru dyskusji typu jednostki z wartością niepustą, wtedy wyświetli się nazwa przestrzeni nazw dyskusji. Jeżeli typ jednostki bazowy wskazuje na przestrzeń nazw główną, wtedy się nie liczą parametry nazw jednostek, a na numerkowy, wtedy się liczy. Również parametry typu jednostki nie powinno się podawać w dziecku w ramce, tylko w rodzicu w szablonie jako parametry, w którym ta ramka jest wywoływana, ale tutaj podano jedynie dla przykładu, jak najłatwiej sprawdzić działanie tych parametrów tej funkcji. Najpierw w funkcji nagłówku brane są parametry nazw przestrzeni nazw, a jeżeli ich nie ma, to parametry typu jednostki, a jeżeli nie ma lub parametry przestrzenne wskazują na przestrzeń główną, i nie ma nazwy jednostki, to generowane są nazwy tej funkcji na podstawie aktualnej strony. === {{Code|p["Nazwa przedmiotowej przestrzeni nazw 3"](frame,i)}} === Funkcja pisze przedmiotową nazwę przestrzeni nazw jakikolwiek nazwy przestrzeni nazw (tzn. nazwę przedmiotową nazwy przestrzenie nazw, czyli nie dyskusji, zamieniana jest na nią samą, czyli identyfikator przestrzeni się nie zmienia, a dyskusji, nie przedmiotową, przekształca się na przedmiotową jej odpowiadającą, czyli w tym przypadku identyfikator przestrzeni zmniejsza się o numer mniej), według podanej w zmiennej {{Code|nazwa przestrzeni nazw}} dla pozycja bazowej w podanych parametrach szablonu rodzicu ramki dziecka, lub dla innej pozycji należy parametr podawać w formie {{Code|nazwa przestrzeni nazw 1}}, {{Code|nazwa przestrzeni nazw 2}}, {{Code|nazwa przestrzeni nazw 3}},..., lub te parametry można podać w postaci ogólnej {{Code|nazwa przestrzeni nazw i}}. Parametry podaje się w parametrach rodzica wywołania tej funkcji {{Code|{{m|Pudełko|Nazwa przedmiotowej przestrzeni nazw 3}}}} (ale ich nie trzeba podawać w dziecku, ale można) i w parametrach dziecka, jeśli chodzi o zmienną {{Code|numer jednostki}}, czyli np.: {{Code|{{m|Pudełko|Nazwa przedmiotowej przestrzeni nazw 3|numer jednostki{{=}}<jakaś liczba całkowita dodatnia>}}}}. Te parametry przestrzenne zamiast w rodzicu w szablonie można podać w ramce dziecka, wtedy parametry dziecka mają pierwszeństwo. Parametry przestrzenne mogą mogą być podane w postaci przestrzeni przedmiotowej lub dyskusji, ale ta funkcja zawsze ją zamienia na przedmiotową. Przestrzeń nazw z parametrów nazw przestrzennych bazowych (bez numerka) może odpowiadać wartości przestrzeni głównej, to wtedy odpowiednia przestrzeń nazw z parametru nazwy jednostki się nie liczy w tej funkcji, aby się liczyła należy użyć funkcji {{Code|{{sr|#p["Nazwa przestrzeni nazw dyskusji 2"](frame,...)|p=Pudełko}}}}. Przestrzeń nazw z parametrów nazw przestrzennych numerkowych może odpowiadać wartości przestrzeni głównej, to wtedy odpowiednia przestrzeń nazw z parametru nazwy jednostki się liczy w tej funkcji, wtedy jest liczona nazwa przestrzeni nazw z tego parametru. Gdy parametry przestrzenne lub typ jednostki w drugim podejściu nie wskazują na przestrzeń główną, to wtedy działanie tej funkcji jest podobne do {{Code|{{sr|#p["Nazwa przestrzeni nazw"](frame,...)|p=Pudełko}}}}. Definicja skrótowa funkcji: <syntaxhighlight lang="lua"> p["Nazwa przedmiotowej przestrzeni nazw 3"]=function(frame,czy_uwzglednic_alternatywna_nazwe,i)...end; </syntaxhighlight> Wtedy ciało funkcji tej, czyli jego definicja w środku, jest: <syntaxhighlight lang="lua"> -- Jest liczony numer parametru nazwy przestrzeni nazw, domyslnie chodzi tu o numer bazowy parametrów przestrzennych; local numer_jednostki=i or frame.args["numer jednostki"]; local liczba_numer_jednostki=((numer_jednostki)and(tonumber(numer_jednostki))or 0); local pudelko_pomocne_modul=require("Module:Pudełko/Pomocne"); -- Liczy nazwę przestrzeni nazw przedmiotową na podstawie podanych parametrów; return pudelko_pomocne_modul.Nazwa_przestrzeni_nazw(frame,1, czy_uwzglednic_alternatywna_nazwe,liczba_numer_jednostki); </syntaxhighlight> Parametry funkcji: * {{Code|frame}} - tablica ramki tablicy transportu, * {{Code|czy_uwzglednic_alternatywna_nazwe}} - czy ma uwzględniać nazwę przestrzeni nazw domyślną szablonu, dostępne wartości: {{Code|false}}, w której nazwa domyślna nie jest uwzględniana wtedy, oraz {{Code|nil}} i {{Code|true}}, które oznaczają to samo, w tym jeżeli ona jest uwzględniana, wtedy jest brany parametr pierwszy dziecka, który musi istnieć przy takiej wartości tego parametru, tzn. {{Code|{{m|Pudełko|Nazwa przedmiotowej przestrzeni nazw 3|Dyskusja szablonu}}}} - ta nazwa domyślna zostanie zamieniona na przedmiotową, a jak ona by była przedmiotowa, to żadnej zamiany by nie było, a nazwa uzyskana z nazwy przestrzeni nazw z parametrów przestrzennych jest w takim przypadku błędna, to w takim razie brany jest ten parametr, a jeżeli ta nazwa domyślna jest błędna, czyli {{Code|{{m|Pudełko|Nazwa przedmiotowej przestrzeni nazw 3|Moja przestrzeń}}}}, wtedy funkcja zwraca stan błędu {{Code|(błąd)}}. * {{Code|i}} - numer zmiennej nazwy przestrzeni nazw. Funkcja wykorzystuje {{Code|{{sr|#p.Nazwa_przestrzeni_nazw(frame,...)|p=Pudełko/Pomocne}}}} do wyznaczania ogólnego nazwy przestrzeni nazw dla pozycji bazowej i numerkowej, tzn. dla pozycji: jeden, dwa, trzy,..., itd, i ich ogólnej. Parametr ramki tablicy transportu rodzica szablonu: * {{Code|nazwa przestrzeni nazw}}, {{Code|nazwa przestrzeni nazw 1}}, {{Code|nazwa przestrzeni nazw 2}}, {{Code|nazwa przestrzeni nazw 3}},..., {{Code|nazwa przestrzeni nazw i}} - nazwy przestrzeni nazw dla pozycji bazowej oraz zwykłej i ogólnej numerkowej, * {{Code|typ jednostki}}, {{Code|typ jednostki 1}}, {{Code|typ jednostki 2}}, {{Code|typ jednostki 3}},..., {{Code|typ jednostki i}} - typy jednostek, którym odpowiadają pewne przestrzenie przedmiotowe, dla pozycji bazowej, numerkowej i ogólnej. Parametry ramki tablicy transportu dziecka: * Parametry dziecka są takie same jak rodzica dla funkcji pudełkowej plus tu wymienione, * {{Code|numer jednostki}} - jak parametr {{Code|i}} nie został ustawiony, to wtedy liczy się ta zmienna. Przykłady: <syntaxhighlight lang="mediawiki"> {{Nazwa szablonu|nazwa przestrzeni nazw=Wikibooks|nazwa przestrzeni nazw=|nazwa przestrzeni nazw i=|nazwajednostki=Szablon:Strona|nazwa jednostki=Dyskusja Wikibooks:Strona}} <hr /> {{Nazwa szablonu|nazwa przestrzeni nazw=Wikibooks|nazwa przestrzeni nazw 1=Szablon|nazwa przestrzeni nazw i=|nazwa jednostki 2=Dyskusja Wikibooks:Strona}} </syntaxhighlight> W dziecku powiedzmy jest wywołanie, i szukamy nazwy przestrzeni nazw o numerze dwa, która nie została podana, ale istnieje za to jej wersji ogólna {{Code|nazwa przestrzeni nazw i}} i domyślna {{Code|nazwa przestrzeni nazw}}: <syntaxhighlight lang="mediawiki"> {{#invoke:Pudełko|Nazwa przedmiotowej przestrzeni nazw 3|numer jednostki=1}} </syntaxhighlight> Na podstawie powyższego przykładu otrzymamy wynik o schemacie, nie wyniku, bo tam nie ma zmiennej {{Code|nazwa przestrzeni nazw 1}}, ale jest {{Code|nazwa przestrzeni nazw i}}: <syntaxhighlight lang="mediawiki"> <!-- Ale nie "nazwa przestrzeni nazw""; --> <!-- nazwa przestrzeni nazw=""; --> <!-- Czyli wynik: --> <!-- wynik pusty --> <!-- Widzimy, że wygenerowała się nazwa przestrzeni nazw, którą jest przestrzeń nazw główna, jest ciągiem pustym: ""; --> <hr /> <!-- Ale nie "Nazwa przestrzeni nazw 2", bo jej nie ma, ale za to istnieje "nazwa przestrzeni nazw i"; --> <!-- nazwa przestrzeni nazw 2=nazwa przestrzeni nazw i="", a nazwa jednostki 2="Wikibooks:Strona"; --> <!-- Czyli wynik: --> Wikibooks <!-- Widzimy, że wygenerowała się nazwa przestrzeni nazw, którą jest przestrzeń nieprogramowa, ale projektu, wychodząca z nazwy jednostek w tym przypadku z "nazwa jednostki 2"; --> </syntaxhighlight> Nie jest brana w tym powyższym przykładzie zmienna {{Code|nazwa przestrzeni nazw}}, bo jej nie ma, ale za to jest {{Code|nazwa przestrzeni nazw i}}, bo ona występuje jako parametr domyślny ogólny dla parametrów numerkowych. Przykłady w wikikodzie: * {{Code|{{m|Pudełko|Nazwa przestrzeni nazw 3|nazwa przestrzeni nazw{{=}}|nazwa jednostki{{=}}Dyskusja Wikibooks:Strona}}}} → {{Tt|{{#invoke:Pudełko|Nazwa przestrzeni nazw 3|nazwa przestrzeni nazw=|nazwa jednostki=Dyskusja Wikibooks:Szablon}}}} * {{Code|{{m|Pudełko|Nazwa przestrzeni nazw 3|nazwa przestrzeni nazw 2{{=}}|nazwa jednostki 2{{=}}Dyskusja Wikibooks:Strona|numer jednostki{{=}}2}}}} → {{Tt|{{#invoke:Pudełko|Nazwa przestrzeni nazw 3|nazwa przestrzeni nazw 2=|nazwa jednostki 2=Dyskusja Wikibooks:Szablon|numer jednostki=2}}}} Powyżej dla przykładu podano parametry nie w rodzicu w szablonie, tylko w dziecku, jeśli chodzi o parametry nazw przestrzeni nazw, ale ich się za to nie powinno podawać w tych ramach, tylko w szablonach, w których wywoływane są te ramki pudełek {{Code|{{m|Pudełko}}}}, ale tak tutaj tak zrobiono by było najłatwiej sprawdzić działanie tego typu funkcji. Analogicznie możemy podawać parametry typu jednostki, np.: wywołaniu modułowym {{Code|{{m|Pudełko|Nazwa przedmiotowej przestrzeni nazw 3|typ jednostki 2{{=}}strona szablonu|numer jednostki{{=}}2}}}}, ale o tym więcej w rozdziałach {{Code|{{sr|# p["Przedmiotowy typ jednostki 3"](frame,i)|p=Pudełko}}}} w „{{sr|#Funkcje typu jednostki|p=Pudełko}}”, ale wtedy ta sama nazwa przestrzeni nazw reprezentowana przez {{Parametr|typ jednostki 2|strona szablonu}}, jest zamieniana na to samo, lepiej jest tutaj używać parametrów przestrzennych nazw niż typu jednostki, bo typ jednostki ma taką samą wartość dla przestrzeni przedmiotowej, co dyskusji. Tutaj parametr dyskusji typu jednostki bazowy i numerkowy ogólny, czy szczegółowy, nie gra roli, bo nawet, gdy wygenerujemy nazwę przestrzeni dyskusji za pomoca tego parametru, to i tak otrzymamy na samym końcu jego nazwę przedmiotową. Również parametry typu jednostki nie powinno się podawać w dziecku w ramce, tylko w rodzicu w szablonie jako parametry, w którym ta ramka jest wywoływana, ale tutaj podano jedynie dla przykładu, jak najłatwiej sprawdzić działanie tych parametrów tej funkcji. Najpierw w funkcji nagłówku brane są parametry nazw przestrzeni nazw, a jeżeli ich nie ma, to parametry typu jednostki, a jeżeli nie ma, to generowane są nazwy na podstawie aktualnego modułu. === {{Code|p["Nazwa przestrzeni nazw dyskusji 3"](frame,i)}} === == Funkcje nazw jednostki trzeciej wersji == === {{Code|p["Nazwa jednostki 3"](frame,i)}} === === {{Code|p["Nazwa przedmiotowa jednostki 3"](frame,i)}} === === {{Code|p["Nazwa dyskusji jednostki 3"](frame,i)}} === == Funkcje typu jednostki == === {{Code|p["Typ jednostki"](frame,i)}} === === {{Code|p["Typ jednostki 2"](frame,i)}} === === {{Code|p["Typ jednostki 3"](frame,i)}} === === Funkcje typu jednostki przedmiotowe === ==== {{Code|p["Przedmiotowy typ jednostki"](frame,i)}} ==== ==== {{Code|p["Przedmiotowy typ jednostki 2"](frame,i)}} ==== ==== {{Code|p["Przedmiotowy typ jednostki 3"](frame,i)}} ==== === Fukcje typu jednostki dyskusji === ==== {{Code|p["Dyskusyjny typ jednostki"](frame,i)}} ==== ==== {{Code|p["Dyskusyjny typ jednostki 2"](frame,i)}} ==== ==== {{Code|p["Dyskusyjny typ jednostki 3"](frame,i)}} ==== == Funkcje chech pudełka == === {{Code|p["Cecha pudełka"](frame)}} === === {{Code|p["Przedmiotowa cecha pudełka"](frame)}} === === {{Code|p["Dyskusyjna cecha pudełka"](frame)}} === == Fukcje ogólnego pudełka == === {{Code|p["Ogólne pudełko"](frame)}} === == Funkcje ogólne == === {{Code|p["Tekst pudełka"](frame)}} === == Funkcje błędów pudełka == === {{Code|p["Błędy pudełka"](frame)}} === === {{Code|p["Przedmiotowe błędy pudełka"](frame)}} === === {{Code|p["Dyskusyjne błędy pudełka"](frame)}} === == Funkcje nazw stron == === {{Code|p["Nazwa strony głównej projektu"](frame,i)}} === === {{Code|p["Nazwa strony głównej dla dzieci projektu"](frame,i)}} === == Funkcje kodów == === {{Code|p["Kod języka"](frame,i)}} === === {{Code|p["Kod projektu"](frame,i)}} === === {{Code|p["Klucz projektu"](frame,i)}} === == Funkcje wiki == === {{Code|p["Inny niż język bieżący wiki"](frame)}} === === {{Code|p["Inne niż lokalne wiki"](frame)}} === === {{Code|p["Inne niż bieżące wiki"](frame)}} === == Funkcje typów parametrów, czy podane je == === {{Code|p["Podano parametry nienazwane"](frame)}} === === {{Code|p["Podano parametry numerowane"](frame)}} === === {{Code|p["Podano parametry nazwane"](frame)}} === == Funkcje kodów tego projektu == === {{Code|p["Kod projektu tego projektu"](frame)}} === === {{Code|p["Kod języka tego projektu"](frame)}} === === {{Code|p["Klucz projektu tego projektu"](frame)}} === == Funkcje stron == === {{Code|p["Strona główna tego projektu"](frame)}} === === {{Code|p["Strona główna dla dzieci tego projektu"](frame)}} === == Funkcje nazw stron drugiej wersji == === {{Code|p["Nazwa strony głównej dla dzieci projektu 2"](frame)}} === === {{Code| p["Nazwa strony głównej projektu 2"](frame)}} === {{BrClear}} <noinclude><!-- -->{{ProstaStronaKoniec}}<!-- -->{{Kategoria|Opisy funkcji, w Lua w Scribunto, w modułach}}<!-- --></noinclude> pp59vmrg2iftfvsxd67mua7zro1f4cn 540413 540412 2026-04-23T19:31:22Z Persino 2851 /* {{Code|p["Nazwa przedmiotowej przestrzeni nazw 3"](frame,i)}} */ 540413 wikitext text/x-wiki <noinclude>{{ProstaStronaStart | nagłówek = {{Podrozdział|{{ld2|Pudełko}}|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 pudelko_modul=require("Module:Pudełko"); </syntaxhighlight> dzięki, któremu można wypisywać funkcje należącego do niego. Posługuje się na parametrach pudełkowych {{Parametr|nazwa przestrzeni nazw}} (czy też bez numerka {{Parametr|nazwa przestrzeni nazw i}} dla tego numerowanego) lub te z numerkiem po jednej spacji w nich (ale nie dla tego z końcówką {{Code| i}}) mogą zostać użyte jako parametry szablonu. Moduł {{Code|{{ld2|Pudełko}}}} przedstawia funkcje nazw w oparciu o funkcje nazw {{Code|{{ld2|Nazwy}}}}, generuje on nazwy za pomocą parametrów pudełkowych podanych poniżej. Parametr {{Parametr|nazwa jednostki}} (lub parametr {{Parametr|cel}} dla numerka tego pierwszego, tego alternatywnego), lub te z numerkiem po jednej spacji w nazwie parametru, albo numerowane numerkami {{Code|1}}, {{Code|2}},..., mogą zostać użyte jako parametry szablonu. Parametry określające rodzaj jednostki {{Parametr|typ jednostki}} z {{Parametr|dyskusja typu jednostki}}, itp. w wersjach z numerkiem po jednej spacji w nich mogą zostać użyte jako parametry szablonu. A te tymi numerowanymi liczbami naturalnymi {{Tt|nazwy jednostki}} od jedynki wzwyż poprzez szablon, w którym są one użyte, one też mogą być użyte z dwukropkiem, te numerowane, na samym początku nazwy, wtedy one są traktowane jako pełne nazwy strony, i wtedy one nie zostaną z interpretowane, że do nich trzeba użyć parametr odpowiedni z nazwą przetrzeni nazw z tego numerowanego, czy ogólny, aby utworzyć znów inną pełną nazwę strony dla tego numerka. Zestawienie: * {{Code|nazwa przestrzeni nazw}} i {{Code|nazwa przestrzeni nazw i}} (ogólna nazwa przestrzeni nazw dla wszystkich numerków, i tych numerowanych jednostek) - i to pierwsze z numerkiem, tzn. {{Code|nazwa przestrzeni nazw 1}}, {{Code|nazwa przestrzeni nazw 2}}, ..., * {{Code|nazwa jednostki}} - i te z numerkiem: {{Code|nazwa jednostki 1}}, {{Code|nazwa jednostki 2}}, ..., lub gdy jest zamiast tego parametrem numerowany, {{Code|1}}, {{Code|2}},..., który dla tego pierwszego może być uznany jako: {{Code|cel}} {{=}} {{Code|1}}, * {{Code|typ jednostki}} (parametr bazowy) i {{Code|typ jednostki i}} (parametr domyślny numerkowy) - i te z numerkiem: {{Code|typ jednostki 1}}, {{Code|typ jednostki 2}}, ..., tzn. gdy chcemy określić z jakim typem jednostki mamy do czynienia w zależności do jakiej przestrzeni nazw należy, a w danej, czy jest on np. programowy, czy tylko jest opisem, jak to bywa w szablonach {{Np|Template|link=tak}}, podobnie jest w przypadku {{Np|Module|link=tak}}, czy jak jest w innych przestrzeniach nazw, ** {{Code|dyskusja typu jednostki}} (parametr bazowy) i {{Code|dyskusja typu jednostki i}} (parametr domyślny numerkowy) - i te z numerkiem: {{Code|dyskusja typu jednostki 1}}, {{Code|dyskusja typu jednostki 2}}, ..., gdy chcemy określić wartością niepustą,że chodzi tutaj o typ jednostki. == {{Code|p.CzyNiepoprawnaNazwa(nazwa_jednostki)}} == Funkcja sprawdzajaca, czy jest poprawnie podana nazwa jednostki, czy ma poprawną nazwę. Znakami tymi, z których nie powinna składać się nazwa jest {{Code|<nowiki>{}<>|[]#\n</nowiki>}} i dodatkowo znak {{Code|&#127;}} (kod {{Code|{{Nowiki|&#127;}}}}). Też nie może składać się z trzech znaków tyldy, tzn. {{Code|<nowiki>~~~</nowiki>}}. Również w swojej budowie nie może składać się ze kodów {{Strong|HTML}} literowych o wzorze {{Code|{{Nowiki|&(%a+);}}}}. Natomiast może składać się z {{Code|{{Nowiki|&#(%d+);}}}} i {{Code|{{Nowiki|&#x(%x+);}}}}, ale w pierw te kody muszą być zamienione na normalne znaki. Skrótowa definicja funkcji: <syntaxhighlight lang="lua"> function p.CzyNiepoprawnaNazwa(nazwa_jednostki)...end; </syntaxhighlight> Wtedy ciało funkcji tej, czyli jego definicja w środku, jest: <syntaxhighlight lang="lua"> -- Moduł: "Moduł:Html/dane", służy do ładowania znaku o kodzie HTML "&#127;"; local html_dane_modul=mw.loadData("Module:Html/dane"); return mw.ustring.match(nazwa_jednostki,"[{}<>|%[%]#\n"..html_dane_modul.znak_127.."]+") or mw.ustring.match(nazwa_jednostki,"~~~") or mw.ustring.match(nazwa_jednostki,"&(%a+);"); </syntaxhighlight> Parametry: * {{Code|nazwa_jednostki}} - nazwa jednostki do sprawdzenia. Przykłady: <syntaxhighlight lang="lua"> local pudelko_modul=require("Module:Pudełko"); -- Podana przykładowa niepoprawna nazwa jedostki local nazwa_jednostki="Nazwa pliku [[Nazwa linku w pliku]]"; -- Fukcja zwróci wartość: local czy_poprawna_nazwa=true; local czy_poprawna_nazwa=pudelko_modul.CzyNiepoprawnaNazwa(nazwa_jednostki); </syntaxhighlight> == Funkcje nazw przestrzeni nazw == === {{Code|p["Nazwa przestrzeni nazw"](frame,...)}} === Funkcja pisze nazwę przestrzeni nazw, niezależnie, czy to jest przedmiotowa, czy dyskusji, według podanej w zmiennej {{Code|nazwa przestrzeni nazw}} dla pozycja bazowej w podanych parametrach szablonu rodzicu ramki dziecka, lub dla innej pozycji należy parametr podawać w formie {{Code|nazwa przestrzeni nazw 1}}, {{Code|nazwa przestrzeni nazw 2}}, {{Code|nazwa przestrzeni nazw 3}},..., lub te parametry można podać w postaci ogólnej {{Code|nazwa przestrzeni nazw i}}. Parametry podaje się w parametrach rodzica wywołania tej funkcji {{Code|{{m|Pudełko|Nazwa przestrzeni nazw}}}} (ale ich nie trzeba podawać w dziecku, ale można) i w parametrach dziecka, jeśli chodzi o zmienną {{Code|numer jednostki}}, czyli np.: {{Code|{{m|Pudełko|Nazwa przestrzeni nazw|numer jednostki{{=}}<jakaś liczba całkowita dodatnia>}}}}. Te parametry przestrzenne zamiast w rodzicu w szablonie można podać w ramce dziecka, wtedy parametry dziecka mają pierwszeństwo. Przestrzeń nazw z parametrów nazw przestrzennych może odpowiadać wartości przestrzeni głównej, to wtedy odpowiednia przestrzeń nazw z parametru nazwy jednostki się nie liczy w tej funkcji, aby się liczyła należy użyć funkcji {{Code|{{sr|#p["Nazwa przestrzeni nazw 2"](frame,...)|p=Pudełko}}}}. Definicja skrótowa funkcji: <syntaxhighlight lang="lua"> p["Nazwa przestrzeni nazw"]=function(frame,czy_uwzglednic_alternatywna_nazwe,i)...end; </syntaxhighlight> Wtedy ciało funkcji tej, czyli jego definicja w środku, jest: <syntaxhighlight lang="lua"> -- Jest liczony numer parametru nazwy przestrzeni nazw, domyslnie chodzi tu o numer bazowy parametrów przestrzennych; local numer_jednostki=i or frame.args["numer jednostki"]; local liczba_numer_jednostki=((numer_jednostki)and(tonumber(numer_jednostki))or 0); local pudelko_pomocne_modul=require("Module:Pudełko/Pomocne"); -- Liczy nazwę przestrzeni nazw na podstawie podanych parametrów; return pudelko_pomocne_modul.Nazwa_przestrzeni_nazw(frame,0, czy_uwzglednic_alternatywna_nazwe,liczba_numer_jednostki); </syntaxhighlight> Parametry funkcji: * {{Code|frame}} - tablica ramki tablicy transportu, * {{Code|czy_uwzglednic_alternatywna_nazwe}} - czy ma uwzględniać nazwę przestrzeni nazw domyślną szablonu, dostępne wartości: {{Code|false}}, w której nazwa domyślna nie jest uwzględniana wtedy, oraz {{Code|nil}} i {{Code|true}}, które oznaczają to samo, w tym jeżeli ona jest uwzględniana, wtedy jest brany parametr pierwszy dziecka, który musi istnieć przy takiej wartości tego parametru, tzn. {{Code|{{m|Pudełko|Nazwa przestrzeni nazw|Szablon}}}}, a nazwa uzyskana nazwy przestrzeni nazw jest w takim przypadku błędna, a jeżeli nazwa domyślna jest błędna, czyli {{Code|{{m|Pudełko|Nazwa przestrzeni nazw|Moja przestrzeń}}}}, wtedy funkcja zwraca stan błędu {{Code|(błąd)}}. * {{Code|i}} - numer zmiennej nazwy przestrzeni nazw. Funkcja wykorzystuje {{Code|{{sr|#p.Nazwa_przestrzeni_nazw(frame,...)|p=Pudełko/Pomocne}}}} do wyznaczania ogólnego nazwy przestrzeni nazw dla pozycji bazowej i numerkowej, tzn. dla pozycji: jeden, dwa, trzy,..., itd, i ich ogólnej. Parametr ramki tablicy transportu rodzica szablonu: * {{Code|nazwa przestrzeni nazw}}, {{Code|nazwa przestrzeni nazw 1}}, {{Code|nazwa przestrzeni nazw 2}}, {{Code|nazwa przestrzeni nazw 3}},..., {{Code|nazwa przestrzeni nazw i}} - nazwy przestrzeni nazw dla pozycji bazowej oraz zwykłej i ogólnej numerkowej, * {{Code|typ jednostki}}, {{Code|typ jednostki 1}}, {{Code|typ jednostki 2}}, {{Code|typ jednostki 3}},..., {{Code|typ jednostki i}} - typy jednostek, którym odpowiadają pewne przestrzenie przedmiotowe, dla pozycji bazowej, numerkowej i ogólnej, ** {{Code|dyskusja typu jednostki}}, {{Code|dyskusja typu jednostki 1}}, {{Code|dyskusja typ jednostki 2}}, {{Code|dyskusja typ jednostki 3}},..., {{Code|dyskusja typ jednostki i}} - czy dany typ jednostki ma przedstawiać, jeśli niepusta, przestrzeń dyskusji dla pozycji bazowej, numerkowej i ogólnej. Parametry ramki tablicy transportu dziecka: * Parametry dziecka są takie same jak rodzica dla funkcji pudełkowej plus tu wymienione, * {{Code|numer jednostki}} - jak parametr {{Code|i}} nie został ustawiony, to wtedy liczy się ta zmienna. Przykłady: <syntaxhighlight lang="mediawiki"> {{Nazwa szablonu|nazwa przestrzeni nazw=Wikibooks|nazwa przestrzeni nazw 2=Szablon|nazwa przestrzeni nazw i=Moduł}} </syntaxhighlight> W dziecku powiedzmy jest wywołanie, i szukamy nazwy przestrzeni nazw o numerze dwa, która nie została podana, ale istnieje za to jej wersji ogólna {{Code|nazwa przestrzeni nazw i}} i domyślna {{Code|nazwa przestrzeni nazw}}: <syntaxhighlight lang="mediawiki"> {{#invoke:Pudełko|Nazwa przestrzeni nazw|numer jednostki=1}} </syntaxhighlight> Na podstawie powyższego przykładu otrzymamy wynik o schemacie, nie wyniku, bo tam nie ma zmiennej {{Code|nazwa przestrzeni nazw 1}}, ale jest {{Code|nazwa przestrzeni nazw i}}: <syntaxhighlight lang="mediawiki"> <!-- Ale nie "nazwa przestrzeni nazw", bo jej nie ma, ale za to istnieje "nazwa przestrzeni nazw i"; --> <!-- nazwa przestrzeni nazw 2=nazwa przestrzeni nazw i=Moduł; --> <!-- Czyli wynik: --> Moduł <!-- Widzimy, że wygenerowała się nazwa przestrzeni nazw, którą jest przestrzeń programowa, którą również jest "Szablon"; --> </syntaxhighlight> Nie jest brana w tym powyższym przykładzie zmienna {{Code|nazwa przestrzeni nazw}}, bo jej nie ma, ale za to jest {{Code|nazwa przestrzeni nazw i}}, bo ona występuje jako parametr domyślny ogólny dla parametrów numerkowych. Przykłady w wikikodzie: * {{Code|{{m|Pudełko|Nazwa przestrzeni nazw|numer jednostki{{=}}2}}}} → {{Tt|{{#invoke:Pudełko|Nazwa przestrzeni nazw|numer jednostki=2}}}} * {{Code|{{m|Pudełko|Nazwa przestrzeni nazw|Szablon|nazwa przestrzeni nazw i{{=}}Moja przestrzeń|numer jednostki{{=}}2}}}} → {{Tt|{{#invoke:Pudełko|Nazwa przestrzeni nazw|Szablon|nazwa przestrzeni nazw i=Moja przestrzeń|numer jednostki=2}}}} * {{Code|{{m|Pudełko|Nazwa przestrzeni nazw|nazwa przestrzeni nazw 2{{=}}Szablon|numer jednostki{{=}}2}}}} → {{Tt|{{#invoke:Pudełko|Nazwa przestrzeni nazw|nazwa przestrzeni nazw 2=Szablon|numer jednostki=2}}}} * {{Code|{{m|Pudełko|Nazwa przestrzeni nazw|nazwa przestrzeni nazw 2{{=}}Szablon|numer jednostki{{=}}2}}}} → {{Tt|{{#invoke:Pudełko|Nazwa przestrzeni nazw|nazwa przestrzeni nazw i=Szablon|numer jednostki=2}}}} * {{Code|{{m|Pudełko|Nazwa przestrzeni nazw|nazwa przestrzeni nazw{{=}}Szablon|numer jednostki{{=}}2}}}} → {{Tt|{{#invoke:Pudełko|Nazwa przestrzeni nazw|nazwa przestrzeni nazw=Szablon|numer jednostki=2}}}} Powyżej dla przykładu podano parametry nie w rodzicu w szablonie, tylko w dziecku, jeśli chodzi o parametry nazw przestrzeni nazw, ale ich się za to nie powinno podawać w tych ramach, tylko w szablonach, w których wywoływane są te ramki pudełek {{Code|{{m|Pudełko}}}}, ale tak tutaj tak zrobiono by było najłatwiej sprawdzić działanie tego typu funkcji. Analogicznie możemy podawać parametry typu jednostki, np.: wywołaniu modułowym {{Code|{{m|Pudełko|Nazwa przestrzeni nazw|typ jednostki 2{{=}}strona szablonu|numer jednostki{{=}}2}}}}, ale o tym więcej w rozdziałach {{Code|{{sr|# p["Typ jednostki"](frame,i)|p=Pudełko}}}} w „{{sr|#Funkcje typu jednostki|p=Pudełko}}”, on definiuje przestrzenie przedmiotowe, ale można użyć parametru dyskusji typu jednostki z wartością niepustą, wtedy wyświetli się nazwa przestrzeni nazw dyskusji. Również parametry typu jednostki nie powinno się podawać w dziecku w ramce, tylko w rodzicu w szablonie jako parametry, w którym ta ramka jest wywoływana, ale tutaj podano jedynie dla przykładu, jak najłatwiej sprawdzić działanie tych parametrów tej funkcji. Najpierw w funkcji nagłówku brane są parametry nazw przestrzeni nazw, a jeżeli ich nie ma, to parametry typu jednostki, a jeżeli nie ma, to generowane są nazwy na podstawie aktualnego modułu. === {{Code|p["Nazwa przedmiotowej przestrzeni nazw"](frame,...)}} === Funkcja pisze przedmiotową nazwę przestrzeni nazw jakikolwiek nazwy przestrzeni nazw (tzn. nazwę przedmiotową nazwy przestrzenie nazw, czyli nie dyskusji, zamieniana jest na nią samą, czyli identyfikator przestrzeni się nie zmienia, a dyskusji, nie przedmiotową, przekształca się na przedmiotową jej odpowiadającą, czyli w tym przypadku identyfikator przestrzeni zmniejsza się o numer mniej), według podanej w zmiennej {{Code|nazwa przestrzeni nazw}} dla pozycja bazowej w podanych parametrach szablonu rodzicu ramki dziecka, lub dla innej pozycji należy parametr podawać w formie {{Code|nazwa przestrzeni nazw 1}}, {{Code|nazwa przestrzeni nazw 2}}, {{Code|nazwa przestrzeni nazw 3}},..., lub te parametry można podać w postaci ogólnej {{Code|nazwa przestrzeni nazw i}}. Parametry podaje się w parametrach rodzica wywołania tej funkcji {{Code|{{m|Pudełko|Nazwa przedmiotowej przestrzeni nazw}}}} (ale ich nie trzeba podawać w dziecku, ale można) i w parametrach dziecka, jeśli chodzi o zmienną {{Code|numer jednostki}}, czyli np.: {{Code|{{m|Pudełko|Nazwa przedmiotowej przestrzeni nazw|numer jednostki{{=}}<jakaś liczba całkowita dodatnia>}}}}. Te parametry przestrzenne zamiast w rodzicu w szablonie można podać w ramce dziecka, wtedy parametry dziecka mają pierwszeństwo. Parametry przestrzenne mogą mogą być podane w postaci przestrzeni przedmiotowej lub dyskusji, ale ta funkcja zawsze ją zamienia na przedmiotową. Przestrzeń nazw z parametrów nazw przestrzennych może odpowiadać wartości przestrzeni głównej, to wtedy odpowiednia przestrzeń nazw z parametru nazwy jednostki się nie liczy w tej funkcji, aby się liczyła należy użyć funkcji {{Code|{{sr|#p["Nazwa przedmiotowej przestrzeni nazw 2"](frame,...)|p=Pudełko}}}}. Definicja skrótowa funkcji: <syntaxhighlight lang="lua"> p["Nazwa przedmiotowej przestrzeni nazw"]=function(frame,czy_uwzglednic_alternatywna_nazwe,i)...end; </syntaxhighlight> Wtedy ciało funkcji tej, czyli jego definicja w środku, jest: <syntaxhighlight lang="lua"> -- Jest liczony numer parametru nazwy przestrzeni nazw, domyslnie chodzi tu o numer bazowy parametrów przestrzennych; local numer_jednostki=i or frame.args["numer jednostki"]; local liczba_numer_jednostki=((numer_jednostki)and(tonumber(numer_jednostki))or 0); local pudelko_pomocne_modul=require("Module:Pudełko/Pomocne"); -- Liczy nazwę przestrzeni nazw przedmiotową na podstawie podanych parametrów; return pudelko_pomocne_modul.Nazwa_przestrzeni_nazw(frame,1, czy_uwzglednic_alternatywna_nazwe,liczba_numer_jednostki); </syntaxhighlight> Parametry funkcji: * {{Code|frame}} - tablica ramki tablicy transportu, * {{Code|czy_uwzglednic_alternatywna_nazwe}} - czy ma uwzględniać nazwę przestrzeni nazw domyślną szablonu, dostępne wartości: {{Code|false}}, w której nazwa domyślna nie jest uwzględniana wtedy, oraz {{Code|nil}} i {{Code|true}}, które oznaczają to samo, w tym jeżeli ona jest uwzględniana, wtedy jest brany parametr pierwszy dziecka, który musi istnieć przy takiej wartości tego parametru, tzn. {{Code|{{m|Pudełko|Nazwa przedmiotowej przestrzeni nazw|Dyskusja szablonu}}}} - ta nazwa domyślna zostanie zamieniona na przedmiotową, a jak ona by była przedmiotowa, to żadnej zamiany by nie było, a nazwa uzyskana z nazwy przestrzeni nazw z parametrów przestrzennych jest w takim przypadku błędna, to w takim razie brany jest ten parametr, a jeżeli ta nazwa domyślna jest błędna, czyli {{Code|{{m|Pudełko|Nazwa przedmiotowej przestrzeni nazw|Moja przestrzeń}}}}, wtedy funkcja zwraca stan błędu {{Code|(błąd)}}. * {{Code|i}} - numer zmiennej nazwy przestrzeni nazw. Funkcja wykorzystuje {{Code|{{sr|#p.Nazwa_przestrzeni_nazw(frame,...)|p=Pudełko/Pomocne}}}} do wyznaczania ogólnego nazwy przestrzeni nazw dla pozycji bazowej i numerkowej, tzn. dla pozycji: jeden, dwa, trzy,..., itd, i ich ogólnej. Parametr ramki tablicy transportu rodzica szablonu: * {{Code|nazwa przestrzeni nazw}}, {{Code|nazwa przestrzeni nazw 1}}, {{Code|nazwa przestrzeni nazw 2}}, {{Code|nazwa przestrzeni nazw 3}},..., {{Code|nazwa przestrzeni nazw i}} - nazwy przestrzeni nazw dla pozycji bazowej oraz zwykłej i ogólnej numerkowej, * {{Code|typ jednostki}}, {{Code|typ jednostki 1}}, {{Code|typ jednostki 2}}, {{Code|typ jednostki 3}},..., {{Code|typ jednostki i}} - typy jednostek, którym odpowiadają pewne przestrzenie przedmiotowe, dla pozycji bazowej, numerkowej i ogólnej. Parametry ramki tablicy transportu dziecka: * Parametry dziecka są takie same jak rodzica dla funkcji pudełkowej plus tu wymienione, * {{Code|numer jednostki}} - jak parametr {{Code|i}} nie został ustawiony, to wtedy liczy się ta zmienna. Przykłady: <syntaxhighlight lang="mediawiki"> {{Nazwa szablonu|nazwa przestrzeni nazw=Dyskusja Wikibooks|nazwa przestrzeni nazw 2=Dyskusja szablonu|nazwa przestrzeni nazw i=Dyskusja modułu}} </syntaxhighlight> W dziecku powiedzmy jest wywołanie, i szukamy nazwy przestrzeni nazw o numerze dwa, która nie została podana, ale istnieje za to jej wersji ogólna {{Code|nazwa przestrzeni nazw i}} i domyślna {{Code|nazwa przestrzeni nazw}}: <syntaxhighlight lang="mediawiki"> {{#invoke:Pudełko|Nazwa przedmiotowej przestrzeni nazw|numer jednostki=1}} </syntaxhighlight> Na podstawie powyższego przykładu otrzymamy wynik o schemacie, nie wyniku, bo tam nie ma zmiennej {{Code|nazwa przestrzeni nazw 1}}, ale jest {{Code|nazwa przestrzeni nazw i}}: <syntaxhighlight lang="mediawiki"> <!-- Ale nie "nazwa przestrzeni nazw", bo jej nie ma, ale za to istnieje "nazwa przestrzeni nazw i"; --> <!-- nazwa przestrzeni nazw 2=nazwa przestrzeni nazw i=Dyskusja modułu; --> <!-- Czyli wynik: --> Moduł <!-- Widzimy, że wygenerowała się nazwa przestrzeni nazw, którą jest przestrzeń przedmiotowa programowa przestrzeni dyskusji "Dyskusja modułu", którą również jest "Szablon" jego przestrzeni dyskusji "Dyskusja szablonu", a dla ich przestrzeni przedmiotowej, zamiast dyskusji, to samo przekształca się na to samo; --> </syntaxhighlight> Nie jest brana w tym powyższym przykładzie zmienna {{Code|nazwa przestrzeni nazw}}, bo jej nie ma, ale za to jest {{Code|nazwa przestrzeni nazw i}}, bo ona występuje jako parametr domyślny ogólny dla parametrów numerkowych. Przykłady w wikikodzie: * {{Code|{{m|Pudełko|Nazwa przedmiotowej przestrzeni nazw|numer jednostki{{=}}2}}}} → {{Tt|{{#invoke:Pudełko|Nazwa przedmiotowej przestrzeni nazw|numer jednostki=2}}}} * {{Code|{{m|Pudełko|Nazwa przedmiotowej przestrzeni nazw|Dyskusja szablonu|nazwa przestrzeni nazw i{{=}}Moja przestrzeń|numer jednostki{{=}}2}}}} → {{Tt|{{#invoke:Pudełko|Nazwa przedmiotowej przestrzeni nazw|Dyskusja szablonu|nazwa przestrzeni nazw i=Moja przestrzeń|numer jednostki=2}}}} * {{Code|{{m|Pudełko|Nazwa przedmiotowej przestrzeni nazw|nazwa przestrzeni nazw 2{{=}}Dyskusja szablonu|numer jednostki{{=}}2}}}} → {{Tt|{{#invoke:Pudełko|Nazwa przedmiotowej przestrzeni nazw|nazwa przestrzeni nazw 2=Dyskusja szablonu|numer jednostki=2}}}} * {{Code|{{m|Pudełko|Nazwa przedmiotowej przestrzeni nazw|nazwa przestrzeni nazw 2{{=}}Dyskusja szablonu|numer jednostki{{=}}2}}}} → {{Tt|{{#invoke:Pudełko|Nazwa przedmiotowej przestrzeni nazw|nazwa przestrzeni nazw i=Dyskusja szablonu|numer jednostki=2}}}} * {{Code|{{m|Pudełko|Nazwa przedmiotowej przestrzeni nazw|nazwa przestrzeni nazw{{=}}Dyskusja szablonu|numer jednostki{{=}}2}}}} → {{Tt|{{#invoke:Pudełko|Nazwa przedmiotowej przestrzeni nazw|nazwa przestrzeni nazw=Dyskusja szablonu|numer jednostki=2}}}} Powyżej dla przykładu podano parametry nie w rodzicu w szablonie, tylko w dziecku, jeśli chodzi o parametry nazw przestrzeni nazw, ale ich się za to nie powinno podawać w tych ramach, tylko w szablonach, w których wywoływane są te ramki pudełek {{Code|{{m|Pudełko}}}}, ale tak tutaj tak zrobiono by było najłatwiej sprawdzić działanie tego typu funkcji. Analogicznie możemy podawać parametry typu jednostki, np.: wywołaniu modułowym {{Code|{{m|Pudełko|Nazwa przedmiotowej przestrzeni nazw|typ jednostki 2{{=}}strona szablonu|numer jednostki{{=}}2}}}}, ale o tym więcej w rozdziałach {{Code|{{sr|# p["Przedmiotowy typ jednostki"](frame,i)|p=Pudełko}}}} w „{{sr|#Funkcje typu jednostki|p=Pudełko}}”, ale wtedy ta sama nazwa przestrzeni nazw reprezentowana przez {{Parametr|typ jednostki 2|strona szablonu}}, jest zamieniana na to samo, lepiej jest tutaj używać parametrów przestrzennych nazw niż typu jednostki, bo typ jednostki ma taką samą wartość dla przestrzeni przedmiotowej, co dyskusji. Tutaj parametr dyskusji typu jednostki bazowy i numerkowy ogólny, czy szczegółowy, nie gra roli, bo nawet, gdy wygenerujemy nazwę przestrzeni dyskusji za pomoca tego parametru, to i tak otrzymamy na samym końcu jego nazwę przedmiotową. Również parametry typu jednostki nie powinno się podawać w dziecku w ramce, tylko w rodzicu w szablonie jako parametry, w którym ta ramka jest wywoływana, ale tutaj podano jedynie dla przykładu, jak najłatwiej sprawdzić działanie tych parametrów tej funkcji. Najpierw w funkcji nagłówku brane są parametry nazw przestrzeni nazw, a jeżeli ich nie ma, to parametry typu jednostki, a jeżeli nie ma, to generowane są nazwy na podstawie aktualnego modułu. === {{Code|p["Nazwa przestrzeni nazw dyskusji"](frame,...)}} === Funkcja pisze nazwę przestrzeni nazw dyskusji jakikolwiek nazwy przestrzeni nazw (tzn. nazwę przedmiotową nazwy przestrzenie nazw, czyli nie dyskusji, zamieniana jest na dyskusji, czyli identyfikator przestrzeni się zmienia jeden wyżej, a dyskusji, nie przedmiotową, przekształca się na tą samą), według podanej w zmiennej {{Code|nazwa przestrzeni nazw}} dla pozycja bazowej w podanych parametrach szablonu rodzicu ramki dziecka, lub dla innej pozycji należy parametr podawać w formie {{Code|nazwa przestrzeni nazw 1}}, {{Code|nazwa przestrzeni nazw 2}}, {{Code|nazwa przestrzeni nazw 3}},..., lub te parametry można podać w postaci ogólnej {{Code|nazwa przestrzeni nazw i}}. Parametry podaje się w parametrach rodzica wywołania tej funkcji {{Code|{{m|Pudełko|Nazwa przestrzeni nazw dyskusji}}}} (ale ich nie trzeba podawać w dziecku, ale można) i w parametrach dziecka, jeśli chodzi o zmienną {{Code|numer jednostki}}, czyli np.: {{Code|{{m|Pudełko|Nazwa przestrzeni nazw dyskusji|numer jednostki{{=}}<jakaś liczba całkowita dodatnia>}}}}. Te parametry przestrzenne zamiast w rodzicu w szablonie można podać w ramce dziecka, wtedy parametry dziecka mają pierwszeństwo. Parametry przestrzenne mogą mogą być podane w postaci przestrzeni przedmiotowej lub dyskusji, ale ta funkcja zawsze ją zamienia na dyskusji. Przestrzeń nazw z parametrów nazw przestrzennych może odpowiadać wartości przestrzeni głównej, to wtedy odpowiednia przestrzeń nazw z parametru nazwy jednostki się nie liczy w tej funkcji, aby się liczyła należy użyć funkcji {{Code|{{sr|#p["Nazwa przestrzeni nazw dyskusji 2"](frame,...)|p=Pudełko}}}}. Definicja skrótowa funkcji: <syntaxhighlight lang="lua"> p["Nazwa przestrzeni nazw dyskusji"]=function(frame,czy_uwzglednic_alternatywna_nazwe,i)...end; </syntaxhighlight> Wtedy ciało funkcji tej, czyli jego definicja w środku, jest: <syntaxhighlight lang="lua"> -- Jest liczony numer parametru nazwy przestrzeni nazw, domyslnie chodzi tu o numer bazowy parametrów przestrzennych; local numer_jednostki=i or frame.args["numer jednostki"]; local liczba_numer_jednostki=((numer_jednostki)and(tonumber(numer_jednostki))or 0); local pudelko_pomocne_modul=require("Module:Pudełko/Pomocne"); -- Liczy nazwę przestrzeni nazw dyskusji na podstawie podanych parametrów; return pudelko_pomocne_modul.Nazwa_przestrzeni_nazw(frame,2, czy_uwzglednic_alternatywna_nazwe,liczba_numer_jednostki); </syntaxhighlight> Parametry funkcji: * {{Code|frame}} - tablica ramki tablicy transportu, * {{Code|czy_uwzglednic_alternatywna_nazwe}} - czy ma uwzględniać nazwę przestrzeni nazw domyślną szablonu, dostępne wartości: {{Code|false}}, w której nazwa domyślna nie jest uwzględniana wtedy, oraz {{Code|nil}} i {{Code|true}}, które oznaczają to samo, w tym jeżeli ona jest uwzględniana, wtedy jest brany parametr pierwszy dziecka, który musi istnieć przy takiej wartości tego parametru, tzn. {{Code|{{m|Pudełko|Nazwa przestrzeni nazw dyskusji|Szablon}}}} - ta nazwa domyślna zostanie przekształcona na dyskusji, a jeżeli ona by była dyskusji, to nie byłoby żadnego przekształcenia, a nazwa uzyskana nazwy przestrzeni nazw z parametrów przestrzennych jest w takim przypadku błędna, to w takim razie brany jest ten parametr, a jeżeli nazwa domyślna jest błędna, czyli {{Code|{{m|Pudełko|Nazwa przestrzeni nazw dyskusji|Moja przestrzeń}}}}, wtedy funkcja zwraca stan błędu {{Code|(błąd)}}. * {{Code|i}} - numer zmiennej nazwy przestrzeni nazw. Funkcja wykorzystuje {{Code|{{sr|#p.Nazwa_przestrzeni_nazw(frame,...)|p=Pudełko/Pomocne}}}} do wyznaczania ogólnego nazwy przestrzeni nazw dla pozycji bazowej i numerkowej, tzn. dla pozycji: jeden, dwa, trzy,..., itd, i ich ogólnej. Parametr ramki tablicy transportu rodzica szablonu: * {{Code|nazwa przestrzeni nazw}}, {{Code|nazwa przestrzeni nazw 1}}, {{Code|nazwa przestrzeni nazw 2}}, {{Code|nazwa przestrzeni nazw 3}},..., {{Code|nazwa przestrzeni nazw i}} - nazwy przestrzeni nazw dla pozycji bazowej oraz zwykłej i ogólnej numerkowej, * {{Code|typ jednostki}}, {{Code|typ jednostki 1}}, {{Code|typ jednostki 2}}, {{Code|typ jednostki 3}},..., {{Code|typ jednostki i}} - typy jednostek, którym odpowiadają pewne przestrzenie przedmiotowe, dla pozycji bazowej, numerkowej i ogólnej. Parametry ramki tablicy transportu dziecka: * Parametry dziecka są takie same jak rodzica dla funkcji pudełkowej plus tu wymienione, * {{Code|numer jednostki}} - jak parametr {{Code|i}} nie został ustawiony, to wtedy liczy się ta zmienna. Przykłady: <syntaxhighlight lang="mediawiki"> {{Nazwa szablonu|nazwa przestrzeni nazw=Wikibooks|nazwa przestrzeni nazw 2=Szablon|nazwa przestrzeni nazw i=Moduł}} </syntaxhighlight> W dziecku powiedzmy jest wywołanie, i szukamy nazwy przestrzeni nazw o numerze dwa, która nie została podana, ale istnieje za to jej wersji ogólna {{Code|nazwa przestrzeni nazw i}} i domyślna {{Code|nazwa przestrzeni nazw}}: <syntaxhighlight lang="mediawiki"> {{#invoke:Pudełko|Nazwa przestrzeni nazw dyskusji|numer jednostki=1}} </syntaxhighlight> Na podstawie powyższego przykładu otrzymamy wynik o schemacie, nie wyniku, bo tam nie ma zmiennej {{Code|nazwa przestrzeni nazw 1}}, ale jest {{Code|nazwa przestrzeni nazw i}}: <syntaxhighlight lang="mediawiki"> <!-- Ale nie "nazwa przestrzeni nazw", bo jej nie ma, ale za to istnieje "nazwa przestrzeni nazw i"; --> <!-- nazwa przestrzeni nazw 2=nazwa przestrzeni nazw i=Moduł; --> <!-- Czyli wynik: --> Dyskusja modułu <!-- Widzimy, że wygenerowała się nazwa przestrzeni nazw, którą jest przestrzeń dyskusji przestrzeni programowej przestrzeni przedmiotowej "Moduł", którą również jest "Szablon" jego przestrzeni dyskusji "Dyskusja szablonu", a dla ich przestrzeni przedmiotowej, zamiast dyskusji, to przekształca się na dyskusji jej odpowiadającą; --> </syntaxhighlight> Nie jest brana w tym powyższym przykładzie zmienna {{Code|nazwa przestrzeni nazw}}, bo jej nie ma, ale za to jest {{Code|nazwa przestrzeni nazw i}}, bo ona występuje jako parametr domyślny ogólny dla parametrów numerkowych. Przykłady w wikikodzie: * {{Code|{{m|Pudełko|Nazwa przestrzeni nazw dyskusji|numer jednostki{{=}}2}}}} → {{Tt|{{#invoke:Pudełko|Nazwa przestrzeni nazw dyskusji|numer jednostki=2}}}} * {{Code|{{m|Pudełko|Nazwa przestrzeni nazw dyskusji|Szablon|nazwa przestrzeni nazw i{{=}}Moja przestrzeń|numer jednostki{{=}}2}}}} → {{Tt|{{#invoke:Pudełko|Nazwa przestrzeni nazw dyskusji|Szablon|nazwa przestrzeni nazw i=Moja przestrzeń|numer jednostki=2}}}} * {{Code|{{m|Pudełko|Nazwa przestrzeni nazw dyskusji|nazwa przestrzeni nazw 2{{=}}Szablon|numer jednostki{{=}}2}}}} → {{Tt|{{#invoke:Pudełko|Nazwa przestrzeni nazw dyskusji|nazwa przestrzeni nazw 2=Szablon|numer jednostki=2}}}} * {{Code|{{m|Pudełko|Nazwa przestrzeni nazw dyskusji|nazwa przestrzeni nazw 2{{=}}Szablon|numer jednostki{{=}}2}}}} → {{Tt|{{#invoke:Pudełko|Nazwa przestrzeni nazw dyskusji|nazwa przestrzeni nazw i=Szablon|numer jednostki=2}}}} * {{Code|{{m|Pudełko|Nazwa przestrzeni nazw dyskusji|nazwa przestrzeni nazw{{=}}Szablon|numer jednostki{{=}}2}}}} → {{Tt|{{#invoke:Pudełko|Nazwa przestrzeni nazw dyskusji|nazwa przestrzeni nazw=Szablon|numer jednostki=2}}}} Powyżej dla przykładu podano parametry nie w rodzicu w szablonie, tylko w dziecku, jeśli chodzi o parametry nazw przestrzeni nazw, ale ich się za to nie powinno podawać w tych ramach, tylko w szablonach, w których wywoływane są te ramki pudełek {{Code|{{m|Pudełko}}}}, ale tak tutaj tak zrobiono by było najłatwiej sprawdzić działanie tego typu funkcji. Analogicznie możemy podawać parametry typu jednostki, np.: wywołaniu modułowym {{Code|{{m|Pudełko|Nazwa przestrzeni nazw dyskusji|typ jednostki 2{{=}}strona szablonu|numer jednostki{{=}}2}}}}, ale o tym więcej w rozdziałach {{Code|{{sr|# p["Dyskusyjny typ jednostki"](frame,i)|p=Pudełko}}}} w „{{sr|#Funkcje typu jednostki|p=Pudełko}}”, ale wtedy nazwa przestrzeni nazw reprezentowana przez {{Parametr|typ jednostki 2|strona szablonu}}, jest zamieniana na nazwę przestrzeni nazw dyskusji. Parametr dyskusji typu jednostki bazowy lub dla danego numerka ogólny, czy szczegółowy, nie gra roli. Również parametry typu jednostki nie powinno się podawać w dziecku w ramce, tylko w rodzicu w szablonie jako parametry, w którym ta ramka jest wywoływana, ale tutaj podano jedynie dla przykładu, jak najłatwiej sprawdzić działanie tych parametrów tej funkcji. Najpierw w funkcji nagłówku brane są parametry nazw przestrzeni nazw, a jeżeli ich nie ma, to parametry typu jednostki, a jeżeli nie ma, to generowane są nazwy na podstawie aktualnego modułu. == Funkcje nazw przestrzeni nazw drugiej wersji == === {{Code|p["Nazwa przestrzeni nazw 2"](frame,...)}} === Funkcja pisze nazwę przestrzeni nazw, niezależnie, czy to jest przedmiotowa, czy dyskusji, według, i nie zawsze tylko, podanej w zmiennej {{Code|nazwa przestrzeni nazw}} dla pozycja bazowej w podanych parametrach szablonu rodzicu ramki dziecka, lub dla innej pozycji należy parametr podawać w formie {{Code|nazwa przestrzeni nazw 1}}, {{Code|nazwa przestrzeni nazw 2}}, {{Code|nazwa przestrzeni nazw 3}},..., lub te parametry można podać w postaci ogólnej {{Code|nazwa przestrzeni nazw i}}. W tej funkcji trzeba też podawać parametry nazwy jednostek {{Code|nazwa jednostki}}, {{Code|nazwa jednostki 1}}, {{Code|nazwa jednostki 2}}, {{Code|nazwa jednostki 3}},... Parametry podaje się w parametrach rodzica wywołania tej funkcji {{Code|{{m|Pudełko|Nazwa przestrzeni nazw 2}}}} (ale ich nie trzeba podawać w dziecku, ale można) i w parametrach dziecka, jeśli chodzi o zmienną {{Code|numer jednostki}}, czyli np.: {{Code|{{m|Pudełko|Nazwa przestrzeni nazw 2|numer jednostki{{=}}<jakaś liczba całkowita dodatnia>}}}}. Te parametry przestrzenne zamiast w rodzicu w szablonie można podać w ramce dziecka, wtedy parametry dziecka mają pierwszeństwo. Przestrzeń nazw z parametrów nazw przestrzennych może odpowiadać wartości przestrzeni głównej, to wtedy odpowiednia przestrzeń nazw z parametru nazwy jednostki się liczy w tej funkcji, wtedy jest liczona nazwa przestrzeni nazw z tego parametru. Gdy parametry przestrzenne lub typ jednostki w drugim podejściu nie wskazują na przestrzeń główną, to wtedy działanie tej funkcji jest podobne do {{Code|{{sr|#p["Nazwa przestrzeni nazw"](frame,...)|p=Pudełko}}}}. Definicja skrótowa funkcji: <syntaxhighlight lang="lua"> p["Nazwa przestrzeni nazw 2"]=function(frame,czy_uwzglednic_alternatywna_nazwe,i)...end; </syntaxhighlight> Wtedy ciało funkcji tej, czyli jego definicja w środku, jest: <syntaxhighlight lang="lua"> local pudelko_pomocne_modul=require("Module:Pudełko/Pomocne"); -- Liczy nazwę przestrzeni nazw, jeżeli z parametrów przestrzennych przestrzeń wskazuje na główną, to wtedy jest liczona przestrzeń nazw z nazwy jednostki; return pudelko_pomocne_modul.Nazwa_przestrzeni_nazw_2(frame,czy_uwzglednic_alternatywna_nazwe,i) </syntaxhighlight> Parametry funkcji: * {{Code|frame}} - tablica ramki tablicy transportu, * {{Code|czy_uwzglednic_alternatywna_nazwe}} - czy ma uwzględniać nazwę przestrzeni nazw domyślną szablonu, dostępne wartości: {{Code|false}}, w której nazwa domyślna nie jest uwzględniana wtedy, oraz {{Code|nil}} i {{Code|true}}, które oznaczają to samo, w tym jeżeli ona jest uwzględniana, wtedy jest brany parametr pierwszy dziecka, który musi istnieć przy takiej wartości tego parametru, tzn. {{Code|{{m|Pudełko|Nazwa przestrzeni nazw 2|Szablon}}}}, a nazwa uzyskana nazwy przestrzeni nazw jest w takim przypadku błędna, a jeżeli nazwa domyślna jest błędna, czyli {{Code|{{m|Pudełko|Nazwa przestrzeni nazw 2|Moja przestrzeń}}}}, wtedy funkcja zwraca stan błędu {{Code|(błąd)}}. * {{Code|i}} - numer zmiennej nazwy przestrzeni nazw. Funkcja wykorzystuje {{Code|{{sr|#p.Nazwa_przestrzeni_nazw_2(frame,...)|p=Pudełko/Pomocne}}}} do wyznaczania ogólnego nazwy przestrzeni nazw dla pozycji bazowej i numerkowej, tzn. dla pozycji: jeden, dwa, trzy,..., itd, i ich ogólnej. Parametr ramki tablicy transportu rodzica szablonu: * {{Code|nazwa przestrzeni nazw}}, {{Code|nazwa przestrzeni nazw 1}}, {{Code|nazwa przestrzeni nazw 2}}, {{Code|nazwa przestrzeni nazw 3}},..., {{Code|nazwa przestrzeni nazw i}} - nazwy przestrzeni nazw dla pozycji bazowej oraz zwykłej i ogólnej numerkowej, * {{Code|nazwa jednostki}}, {{Code|nazwa jednostki 1}}, {{Code|nazwa jednostki 2}}, {{Code|nazwa jednostki 3}},... - nazwy jednostek dla pozycji bazowej i numerkowej, * {{Code|typ jednostki}}, {{Code|typ jednostki 1}}, {{Code|typ jednostki 2}}, {{Code|typ jednostki 3}},..., {{Code|typ jednostki i}} - typy jednostek, którym odpowiadają pewne przestrzenie przedmiotowe, dla pozycji bazowej, numerkowej i ogólnej, ** {{Code|dyskusja typu jednostki}}, {{Code|dyskusja typu jednostki 1}}, {{Code|dyskusja typ jednostki 2}}, {{Code|dyskusja typ jednostki 3}},..., {{Code|dyskusja typ jednostki i}} - czy dany typ jednostki ma przedstawiać, jeśli niepusta, przestrzeń dyskusji dla pozycji bazowej, numerkowej i ogólnej. Parametry ramki tablicy transportu dziecka: * Parametry dziecka są takie same jak rodzica dla funkcji pudełkowej plus tu wymienione, * {{Code|numer jednostki}} - jak parametr {{Code|i}} nie został ustawiony, to wtedy liczy się ta zmienna. Przykłady: <syntaxhighlight lang="mediawiki"> {{Nazwa szablonu|nazwa przestrzeni nazw=Wikibooks|nazwa przestrzeni nazw 1=Szablon|nazwa przestrzeni nazw i=|nazwa jednostki 2=Wikibooks:Strona}} </syntaxhighlight> W dziecku powiedzmy jest wywołanie, i szukamy nazwy przestrzeni nazw o numerze dwa, która została podana, ale istnieje za to jej wersji ogólna {{Code|nazwa przestrzeni nazw i}} i domyślna {{Code|nazwa przestrzeni nazw}}, ale wtedy dla tego numerkowego liczy się to ogólne z {{Code| i}}, a ponieważ ta nazwa jest pusta, więc będziemy liczyli nazwę przestrzeni nazw z {{Code|nazwa jednostki 2}}: <syntaxhighlight lang="mediawiki"> {{#invoke:Pudełko|Nazwa przestrzeni nazw 2|numer jednostki=2}} </syntaxhighlight> Na podstawie powyższego przykładu otrzymamy wynik o schemacie, nie wyniku, bo tam nie ma zmiennej {{Code|nazwa przestrzeni nazw 1}}, ale jest {{Code|nazwa przestrzeni nazw i}}: <syntaxhighlight lang="mediawiki"> <!-- Ale nie "nazwa przestrzeni nazw 2", bo jej nie ma, ale za to istnieje "nazwa przestrzeni nazw i"; --> <!-- nazwa przestrzeni nazw 2=nazwa przestrzeni nazw i="", a nazwa jednostki 2="Wikibooks:Strona"; --> <!-- Czyli wynik: --> Wikibooks <!-- Widzimy, że wygenerowała się nazwa przestrzeni nazw, którą jest przestrzeń nieprogramowa, ale projektu, wychodząca z nazwy jednostek w tym przypadku z "nazwa jednostki 2"; --> </syntaxhighlight> Nie jest brana w tym powyższym przykładzie zmienna {{Code|nazwa przestrzeni nazw}}, bo jej nie ma, ale za to jest {{Code|nazwa przestrzeni nazw i}}, bo ona występuje jako parametr domyślny ogólny dla parametrów numerkowych. Tytaj jest używana jest zmienna {{Code|nazwa jednostki 2}} do wygenerowania ostatecznego wyniku, bo jak można zauważyć, parametry przestrzenne wskazują na przestrzeń główną, a nazwy jednostek już nie. Przykłady w wikikodzie: * {{Code|{{m|Pudełko|Nazwa przestrzeni nazw 2|numer jednostki{{=}}2}}}} → {{Tt|{{#invoke:Pudełko|Nazwa przestrzeni nazw 2|numer jednostki=2}}}} * {{Code|{{m|Pudełko|Nazwa przestrzeni nazw 2|Szablon|nazwa przestrzeni nazw i{{=}}Moja przestrzeń|numer jednostki{{=}}2}}}} → {{Tt|{{#invoke:Pudełko|Nazwa przestrzeni nazw 2|Szablon|nazwa przestrzeni nazw i=Moja przestrzeń|numer jednostki=2}}}} * {{Code|{{m|Pudełko|Nazwa przestrzeni nazw 2|nazwa przestrzeni nazw 2{{=}}|nazwa jednostki 2{{=}}Szablon:Strona|numer jednostki{{=}}2}}}} → {{Tt|{{#invoke:Pudełko|Nazwa przestrzeni nazw 2|nazwa przestrzeni nazw 2=|nazwa jednostki 2=Szablon:Strona|numer jednostki=2}}}} * {{Code|{{m|Pudełko|Nazwa przestrzeni nazw 2|nazwa przestrzeni nazw i{{=}}|nazwa jednostki 2{{=}}Szablon:Strona|numer jednostki{{=}}2}}}} → {{Tt|{{#invoke:Pudełko|Nazwa przestrzeni nazw 2|nazwa przestrzeni nazw i=|nazwa jednostki 2=Szablon:Strona|numer jednostki=2}}}} * {{Code|{{m|Pudełko|Nazwa przestrzeni nazw 2|Szablon|nazwa przestrzeni nazw{{=}}|nazwa jednostki 2{{=}}Wikibooks:Strona|numer jednostki{{=}}2}}}} → {{Tt|{{#invoke:Pudełko|Nazwa przestrzeni nazw 2|Szablon|nazwa przestrzeni nazw=|nazwa jednostki 2=Wikibooks:Strona|numer jednostki=2}}}} Powyżej dla przykładu podano parametry nie w rodzicu w szablonie, tylko w dziecku, jeśli chodzi o parametry nazw przestrzeni nazw i nazw jednostek, ale ich się za to nie powinno podawać w tych ramach, tylko w szablonach, w których wywoływane są te ramki pudełek {{Code|{{m|Pudełko}}}}, ale tak tutaj tak zrobiono by było najłatwiej sprawdzić działanie tego typu funkcji. Analogicznie możemy podawać parametry typu jednostki, np.: wywołaniu modułowym {{Code|{{m|Pudełko|Nazwa przestrzeni nazw 2|typ jednostki 2{{=}}Podręcznik|nazwa jednostki 2{{=}}Szablon:Strona|numer jednostki{{=}}2}}}} (ale wtedy jest brana przestrzeń nazw z nazwy jednostki), ale o tym więcej w rozdziałach {{Code|{{sr|#p["Typ jednostki 2"](frame,i)|p=Pudełko}}}} w „{{sr|#Funkcje typu jednostki|p=Pudełko}}”, on definiuje przestrzenie przedmiotowe, ale można użyć parametru dyskusji typu jednostki z wartością niepustą, wtedy wyświetli się nazwa przestrzeni nazw dyskusji. Jeżeli typ jednostki wskazuje na przestrzeń nazw główną, wtedy się liczą parametry nazw jednostek. Również parametry typu jednostki nie powinno się podawać w dziecku w ramce, tylko w rodzicu w szablonie jako parametry, w którym ta ramka jest wywoływana, ale tutaj podano jedynie dla przykładu, jak najłatwiej sprawdzić działanie tych parametrów tej funkcji. Najpierw w funkcji nagłówku brane są parametry nazw przestrzeni nazw, a jeżeli ich nie ma, to parametry typu jednostki, a jeżeli nie ma lub parametry przestrzenne wskazują na przestrzeń główną, i nie ma nazwy jednostki, to generowane są nazwy tej funkcji na podstawie aktualnej strony. === {{Code|p["Nazwa przedmiotowej przestrzeni nazw 2"](frame,...)}} === Funkcja pisze przedmiotową nazwę przestrzeni nazw jakikolwiek nazwy przestrzeni nazw (tzn. nazwę przedmiotową nazwy przestrzenie nazw, czyli nie dyskusji, zamieniana jest na nią samą, czyli identyfikator przestrzeni się nie zmienia, a dyskusji, nie przedmiotową, przekształca się na przedmiotową jej odpowiadającą, czyli w tym przypadku identyfikator przestrzeni zmniejsza się o numer mniej), według, i nie zawsze tylko, podanej w zmiennej {{Code|nazwa przestrzeni nazw}} dla pozycja bazowej w podanych parametrach szablonu rodzicu ramki dziecka, lub dla innej pozycji należy parametr podawać w formie {{Code|nazwa przestrzeni nazw 1}}, {{Code|nazwa przestrzeni nazw 2}}, {{Code|nazwa przestrzeni nazw 3}},..., lub te parametry można podać w postaci ogólnej {{Code|nazwa przestrzeni nazw i}}. W tej funkcji trzeba też podawać parametry nazwy jednostek {{Code|nazwa jednostki}}, {{Code|nazwa jednostki 1}}, {{Code|nazwa jednostki 2}}, {{Code|nazwa jednostki 3}},... Parametry podaje się w parametrach rodzica wywołania tej funkcji {{Code|{{m|Pudełko|Nazwa przedmiotowej przestrzeni nazw 2}}}} (ale ich nie trzeba podawać w dziecku, ale można) i w parametrach dziecka, jeśli chodzi o zmienną {{Code|numer jednostki}}, czyli np.: {{Code|{{m|Pudełko|Nazwa przedmiotowej przestrzeni nazw 2|numer jednostki{{=}}<jakaś liczba całkowita dodatnia>}}}}. Te parametry przestrzenne zamiast w rodzicu w szablonie można podać w ramce dziecka, wtedy parametry dziecka mają pierwszeństwo. Przestrzeń nazw z parametrów nazw przestrzennych po przekształceniu na przedmiotową może odpowiadać wartości przestrzeni głównej, to wtedy odpowiednia przestrzeń nazw z parametru nazwy jednostki się liczy w tej funkcji, wtedy jest liczona nazwa przestrzeni nazw z tego parametru. Gdy parametry przestrzenne lub typ jednostki w drugim podejściu nie wskazują na przestrzeń główną, to wtedy działanie tej funkcji jest podobne do {{Code|{{sr|#p["Nazwa przedmiotowej przestrzeni nazw"](frame,...)|p=Pudełko}}}}. Definicja skrótowa funkcji: <syntaxhighlight lang="lua"> p["Nazwa przedmiotowej przestrzeni nazw 2"]=function(frame,czy_uwzglednic_alternatywna_nazwe,i)...end; </syntaxhighlight> Wtedy ciało funkcji tej, czyli jego definicja w środku, jest: <syntaxhighlight lang="lua"> local pudelko_pomocne_modul=require("Module:Pudełko/Pomocne"); return pudelko_pomocne_modul.Nazwa_przestrzeni_nazw_przedmiotowa_dyskusji_2(frame,czy_uwzglednic_alternatywna_nazwe,i,"przedmiotowa"); </syntaxhighlight> Parametry funkcji: * {{Code|frame}} - tablica ramki tablicy transportu, * {{Code|czy_uwzglednic_alternatywna_nazwe}} - czy ma uwzględniać nazwę przestrzeni nazw domyślną szablonu, dostępne wartości: {{Code|false}}, w której nazwa domyślna nie jest uwzględniana wtedy, oraz {{Code|nil}} i {{Code|true}}, które oznaczają to samo, w tym jeżeli ona jest uwzględniana, wtedy jest brany parametr pierwszy dziecka, który musi istnieć przy takiej wartości tego parametru, tzn. {{Code|{{m|Pudełko|Nazwa przedmiotowej przestrzeni nazw 2|Szablon}}}}, a nazwa uzyskana nazwy przestrzeni nazw jest w takim przypadku błędna, a jeżeli nazwa domyślna jest błędna, czyli {{Code|{{m|Pudełko|Nazwa przedmiotowej przestrzeni nazw 2|Moja przestrzeń}}}}, wtedy funkcja zwraca stan błędu {{Code|(błąd)}}. * {{Code|i}} - numer zmiennej nazwy przestrzeni nazw. Funkcja wykorzystuje {{Code|{{sr|#p.Nazwa_przestrzeni_nazw_przedmiotowa_dyskusji_2(frame,...)|p=Pudełko/Pomocne}}}} do wyznaczania ogólnego nazwy przestrzeni nazw dla pozycji bazowej i numerkowej, tzn. dla pozycji: jeden, dwa, trzy,..., itd, i ich ogólnej. Parametr ramki tablicy transportu rodzica szablonu: * {{Code|nazwa przestrzeni nazw}}, {{Code|nazwa przestrzeni nazw 1}}, {{Code|nazwa przestrzeni nazw 2}}, {{Code|nazwa przestrzeni nazw 3}},..., {{Code|nazwa przestrzeni nazw i}} - nazwy przestrzeni nazw dla pozycji bazowej oraz zwykłej i ogólnej numerkowej, * {{Code|nazwa jednostki}}, {{Code|nazwa jednostki 1}}, {{Code|nazwa jednostki 2}}, {{Code|nazwa jednostki 3}},... - nazwy jednostek dla pozycji bazowej i numerkowej, * {{Code|typ jednostki}}, {{Code|typ jednostki 1}}, {{Code|typ jednostki 2}}, {{Code|typ jednostki 3}},..., {{Code|typ jednostki i}} - typy jednostek, którym odpowiadają pewne przestrzenie przedmiotowe, dla pozycji bazowej, numerkowej i ogólnej. Parametry ramki tablicy transportu dziecka: * Parametry dziecka są takie same jak rodzica dla funkcji pudełkowej plus tu wymienione, * {{Code|numer jednostki}} - jak parametr {{Code|i}} nie został ustawiony, to wtedy liczy się ta zmienna. Przykłady: <syntaxhighlight lang="mediawiki"> {{Nazwa szablonu|nazwa przestrzeni nazw=Wikibooks|nazwa przestrzeni nazw 1=Szablon|nazwa przestrzeni nazw i=|nazwa jednostki 2=Dyskusja Wikibooks:Strona}} </syntaxhighlight> W dziecku powiedzmy jest wywołanie, i szukamy nazwy przestrzeni nazw o numerze dwa, która została podana, ale istnieje za to jej wersji ogólna {{Code|nazwa przestrzeni nazw i}} i domyślna {{Code|nazwa przestrzeni nazw}}, ale wtedy dla tego numerkowego liczy się to ogólne z {{Code| i}}, a ponieważ ta nazwa jest pusta, więc będziemy liczyli nazwę przestrzeni nazw z {{Code|nazwa jednostki 2}}: <syntaxhighlight lang="mediawiki"> {{#invoke:Pudełko|Nazwa przedmiotowej przestrzeni nazw 2|numer jednostki=2}} </syntaxhighlight> Na podstawie powyższego przykładu otrzymamy wynik o schemacie, nie wyniku, bo tam nie ma zmiennej {{Code|nazwa przestrzeni nazw 1}}, ale jest {{Code|nazwa przestrzeni nazw i}}: <syntaxhighlight lang="mediawiki"> <!-- Ale nie "nazwa przestrzeni nazw 2", bo jej nie ma, ale za to istnieje "nazwa przestrzeni nazw i"; --> <!-- nazwa przestrzeni nazw 2=nazwa przestrzeni nazw i="", a nazwa jednostki 2="Dyskusja Wikibooks:Strona"; --> <!-- Czyli wynik: --> Wikibooks <!-- Widzimy, że wygenerowała się nazwa przestrzeni nazw, którą jest przestrzeń nieprogramowa, ale projektu, wychodząca z nazwy jednostek w tym przypadku z "nazwa jednostki 2"; --> </syntaxhighlight> Nie jest brana w tym powyższym przykładzie zmienna {{Code|nazwa przestrzeni nazw}}, bo jej nie ma, ale za to jest {{Code|nazwa przestrzeni nazw i}}, bo ona występuje jako parametr domyślny ogólny dla parametrów numerkowych. Tytaj jest używana jest zmienna {{Code|nazwa jednostki 2}} do wygenerowania ostatecznego wyniku, bo jak można zauważyć, parametry przestrzenne wskazują na przestrzeń główną, a nazwy jednostek już nie. Przykłady w wikikodzie: * {{Code|{{m|Pudełko|Nazwa przedmiotowej przestrzeni nazw 2|numer jednostki{{=}}2}}}} → {{Tt|{{#invoke:Pudełko|Nazwa przedmiotowej przestrzeni nazw 2|numer jednostki=2}}}} * {{Code|{{m|Pudełko|Nazwa przedmiotowej przestrzeni nazw 2|Dyskusja szablonu|nazwa przestrzeni nazw i{{=}}Moja przestrzeń|numer jednostki{{=}}2}}}} → {{Tt|{{#invoke:Pudełko|Nazwa przedmiotowej przestrzeni nazw 2|Dyskusja szablonu|nazwa przestrzeni nazw i=Moja przestrzeń|numer jednostki=2}}}} * {{Code|{{m|Pudełko|Nazwa przedmiotowej przestrzeni nazw 2|nazwa przestrzeni nazw 2{{=}}Dyskusja|nazwa jednostki 2{{=}}Dyskusja szablonu:Strona|numer jednostki{{=}}2}}}} → {{Tt|{{#invoke:Pudełko|Nazwa przedmiotowej przestrzeni nazw 2|nazwa przestrzeni nazw 2=Dyskusja|nazwa jednostki 2=Dyskusja szablonu:Strona|numer jednostki=2}}}} * {{Code|{{m|Pudełko|Nazwa przedmiotowej przestrzeni nazw 2|nazwa przestrzeni nazw i{{=}}Dyskusja|nazwa jednostki 2{{=}}Dyskusja szablonu:Strona|numer jednostki{{=}}2}}}} → {{Tt|{{#invoke:Pudełko|Nazwa przedmiotowej przestrzeni nazw 2|nazwa przestrzeni nazw i=Dyskusja|nazwa jednostki 2=Dyskusja szablonu:Strona|numer jednostki=2}}}} * {{Code|{{m|Pudełko|Nazwa przedmiotowej przestrzeni nazw 2|Dyskusja szablonu|nazwa przestrzeni nazw{{=}}Dyskusja|nazwa jednostki 2{{=}}Wikibooks:Strona|numer jednostki{{=}}2}}}} → {{Tt|{{#invoke:Pudełko|Nazwa przedmiotowej przestrzeni nazw 2|Dyskusja szablonu|nazwa przestrzeni nazw=Dyskusja|nazwa jednostki 2=Dyskusja Wikibooks:Strona|numer jednostki=2}}}} Powyżej dla przykładu podano parametry nie w rodzicu w szablonie, tylko w dziecku, jeśli chodzi o parametry nazw przestrzeni nazw i nazw jednostek, ale ich się za to nie powinno podawać w tych ramach, tylko w szablonach, w których wywoływane są te ramki pudełek {{Code|{{m|Pudełko}}}}, ale tak tutaj tak zrobiono by było najłatwiej sprawdzić działanie tego typu funkcji. Analogicznie możemy podawać parametry typu jednostki, np.: wywołaniu modułowym {{Code|{{m|Pudełko|Nazwa przedmiotowej przestrzeni nazw 2|typ jednostki 2{{=}}Podręcznik|nazwa jednostki 2{{=}}Dyskusja szablonu:Strona|numer jednostki{{=}}2}}}} (ale wtedy jest brana przestrzeń nazw z nazwy jednostki), ale o tym więcej w rozdziałach {{Code|{{sr|# p["Przedmiotowy typ jednostki 2"](frame,i)|p=Pudełko}}}} w „{{sr|#Funkcje typu jednostki|p=Pudełko}}”, on definiuje przestrzenie przedmiotowe, ale można użyć parametru dyskusji typu jednostki z wartością niepustą, pustą, czy nawet jej nie podamy, wtedy wyświetli się nazwa przestrzeni nazw przedmiotowej. Jeżeli typ jednostki wskazuje na przestrzeń nazw główną, wtedy się liczą parametry nazw jednostek. Również parametry typu jednostki nie powinno się podawać w dziecku w ramce, tylko w rodzicu w szablonie jako parametry, w którym ta ramka jest wywoływana, ale tutaj podano jedynie dla przykładu, jak najłatwiej sprawdzić działanie tych parametrów tej funkcji. Najpierw w funkcji nagłówku brane są parametry nazw przestrzeni nazw, a jeżeli ich nie ma, to parametry typu jednostki, a jeżeli nie ma lub parametry przestrzenne wskazują na przestrzeń główną, i nie ma nazwy jednostki, to generowane są nazwy tej funkcji na podstawie aktualnej strony. === {{Code|p["Nazwa przestrzeni nazw dyskusji 2"](frame,...)}} === Funkcja pisze nazwę przestrzeni nazw dyskusji jakikolwiek nazwy przestrzeni nazw (tzn. nazwę dyskusji nazwy przestrzenie nazw, czyli nie przedmiotowej, zamieniana jest na nią samą, czyli identyfikator przestrzeni się nie zmienia, a przedmiotową, nie dyskusji, przekształca się na dyskusji jej odpowiadającą, czyli w tym przypadku identyfikator przestrzeni zwiększa się o numer więcej), według, i nie zawsze tylko, podanej w zmiennej {{Code|nazwa przestrzeni nazw}} dla pozycja bazowej w podanych parametrach szablonu rodzicu ramki dziecka, lub dla innej pozycji należy parametr podawać w formie {{Code|nazwa przestrzeni nazw 1}}, {{Code|nazwa przestrzeni nazw 2}}, {{Code|nazwa przestrzeni nazw 3}},..., lub te parametry można podać w postaci ogólnej {{Code|nazwa przestrzeni nazw i}}. W tej funkcji trzeba też podawać parametry nazwy jednostek {{Code|nazwa jednostki}}, {{Code|nazwa jednostki 1}}, {{Code|nazwa jednostki 2}}, {{Code|nazwa jednostki 3}},... Parametry podaje się w parametrach rodzica wywołania tej funkcji {{Code|{{m|Pudełko|Nazwa przestrzeni nazw dyskusji 2}}}} (ale ich nie trzeba podawać w dziecku, ale można) i w parametrach dziecka, jeśli chodzi o zmienną {{Code|numer jednostki}}, czyli np.: {{Code|{{m|Pudełko|Nazwa przestrzeni nazw dyskusji 2|numer jednostki{{=}}<jakaś liczba całkowita dodatnia>}}}}. Te parametry przestrzenne zamiast w rodzicu w szablonie można podać w ramce dziecka, wtedy parametry dziecka mają pierwszeństwo. Przestrzeń nazw z parametrów nazw przestrzennych po przekształceniu na przedmiotową może odpowiadać wartości przestrzeni głównej, to wtedy odpowiednia przestrzeń nazw z parametru nazwy jednostki się liczy w tej funkcji, wtedy jest liczona nazwa przestrzeni nazw z tego parametru. Gdy parametry przestrzenne lub typ jednostki w drugim podejściu nie wskazują na przestrzeń główną, to wtedy działanie tej funkcji jest podobne do {{Code|{{sr|#p["Nazwa dyskusji przestrzeni nazw"](frame,...)|p=Pudełko}}}}. Definicja skrótowa funkcji: <syntaxhighlight lang="lua"> p["Nazwa przestrzeni nazw dyskusji 2"]=function(frame,czy_uwzglednic_alternatywna_nazwe,i)...end; </syntaxhighlight> Wtedy ciało funkcji tej, czyli jego definicja w środku, jest: <syntaxhighlight lang="lua"> local pudelko_pomocne_modul=require("Module:Pudełko/Pomocne"); return pudelko_pomocne_modul.Nazwa_przestrzeni_nazw_przedmiotowa_dyskusji_2(frame,czy_uwzglednic_alternatywna_nazwe,i,"dyskusja"); </syntaxhighlight> Parametry funkcji: * {{Code|frame}} - tablica ramki tablicy transportu, * {{Code|czy_uwzglednic_alternatywna_nazwe}} - czy ma uwzględniać nazwę przestrzeni nazw domyślną szablonu, dostępne wartości: {{Code|false}}, w której nazwa domyślna nie jest uwzględniana wtedy, oraz {{Code|nil}} i {{Code|true}}, które oznaczają to samo, w tym jeżeli ona jest uwzględniana, wtedy jest brany parametr pierwszy dziecka, który musi istnieć przy takiej wartości tego parametru, tzn. {{Code|{{m|Pudełko|Nazwa przestrzeni nazw dyskusji 2|Szablon}}}}, a nazwa uzyskana nazwy przestrzeni nazw jest w takim przypadku błędna, a jeżeli nazwa domyślna jest błędna, czyli {{Code|{{m|Pudełko|Nazwa przestrzeni nazw dyskusji 2|Moja przestrzeń}}}}, wtedy funkcja zwraca stan błędu {{Code|(błąd)}}. * {{Code|i}} - numer zmiennej nazwy przestrzeni nazw. Funkcja wykorzystuje {{Code|{{sr|#p.Nazwa_przestrzeni_nazw_przedmiotowa_dyskusji_2(frame,...)|p=Pudełko/Pomocne}}}} do wyznaczania ogólnego nazwy przestrzeni nazw dla pozycji bazowej i numerkowej, tzn. dla pozycji: jeden, dwa, trzy,..., itd, i ich ogólnej. Parametr ramki tablicy transportu rodzica szablonu: * {{Code|nazwa przestrzeni nazw}}, {{Code|nazwa przestrzeni nazw 1}}, {{Code|nazwa przestrzeni nazw 2}}, {{Code|nazwa przestrzeni nazw 3}},..., {{Code|nazwa przestrzeni nazw i}} - nazwy przestrzeni nazw dla pozycji bazowej oraz zwykłej i ogólnej numerkowej, * {{Code|nazwa jednostki}}, {{Code|nazwa jednostki 1}}, {{Code|nazwa jednostki 2}}, {{Code|nazwa jednostki 3}},... - nazwy jednostek dla pozycji bazowej i numerkowej, * {{Code|typ jednostki}}, {{Code|typ jednostki 1}}, {{Code|typ jednostki 2}}, {{Code|typ jednostki 3}},..., {{Code|typ jednostki i}} - typy jednostek, którym odpowiadają pewne przestrzenie przedmiotowe, dla pozycji bazowej, numerkowej i ogólnej. Parametry ramki tablicy transportu dziecka: * Parametry dziecka są takie same jak rodzica dla funkcji pudełkowej plus tu wymienione, * {{Code|numer jednostki}} - jak parametr {{Code|i}} nie został ustawiony, to wtedy liczy się ta zmienna. Przykłady: <syntaxhighlight lang="mediawiki"> {{Nazwa szablonu|nazwa przestrzeni nazw=Wikibooks|nazwa przestrzeni nazw 1=Szablon|nazwa przestrzeni nazw i=|nazwa jednostki 2=Wikibooks:Strona}} </syntaxhighlight> W dziecku powiedzmy jest wywołanie, i szukamy nazwy przestrzeni nazw o numerze dwa, która została podana, ale istnieje za to jej wersji ogólna {{Code|nazwa przestrzeni nazw i}} i domyślna {{Code|nazwa przestrzeni nazw}}, ale wtedy dla tego numerkowego liczy się to ogólne z {{Code| i}}, a ponieważ ta nazwa jest pusta, więc będziemy liczyli nazwę przestrzeni nazw z {{Code|nazwa jednostki 2}}: <syntaxhighlight lang="mediawiki"> {{#invoke:Pudełko|Nazwa przestrzeni nazw dyskusji 2|numer jednostki=2}} </syntaxhighlight> Na podstawie powyższego przykładu otrzymamy wynik o schemacie, nie wyniku, bo tam nie ma zmiennej {{Code|nazwa przestrzeni nazw 1}}, ale jest {{Code|nazwa przestrzeni nazw i}}: <syntaxhighlight lang="mediawiki"> <!-- Ale nie "nazwa przestrzeni nazw 2", bo jej nie ma, ale za to istnieje "nazwa przestrzeni nazw i"; --> <!-- nazwa przestrzeni nazw 2=nazwa przestrzeni nazw i="", a nazwa jednostki 2="Wikibooks:Strona"; --> <!-- Czyli wynik: --> Dyskusja Wikibooks <!-- Widzimy, że wygenerowała się nazwa przestrzeni nazw, którą jest przestrzeń nieprogramowa, ale dyskusji projektu, wychodząca z nazwy jednostek w tym przypadku z "nazwa jednostki 2"; --> </syntaxhighlight> Nie jest brana w tym powyższym przykładzie zmienna {{Code|nazwa przestrzeni nazw}}, bo jej nie ma, ale za to jest {{Code|nazwa przestrzeni nazw i}}, bo ona występuje jako parametr domyślny ogólny dla parametrów numerkowych. Tytaj jest używana jest zmienna {{Code|nazwa jednostki 2}} do wygenerowania ostatecznego wyniku, bo jak można zauważyć, parametry przestrzenne wskazują na przestrzeń główną, a nazwy jednostek już nie. Przykłady w wikikodzie: * {{Code|{{m|Pudełko|Nazwa przestrzeni nazw dyskusji 2|numer jednostki{{=}}2}}}} → {{Tt|{{#invoke:Pudełko|Nazwa przestrzeni nazw dyskusji 2|numer jednostki=2}}}} * {{Code|{{m|Pudełko|Nazwa przestrzeni nazw dyskusji 2|Szablon|nazwa przestrzeni nazw i{{=}}Moja przestrzeń|numer jednostki{{=}}2}}}} → {{Tt|{{#invoke:Pudełko|Nazwa przestrzeni nazw dyskusji 2|Szablon|nazwa przestrzeni nazw i=Moja przestrzeń|numer jednostki=2}}}} * {{Code|{{m|Pudełko|Nazwa przestrzeni nazw dyskusji 2|nazwa przestrzeni nazw 2{{=}}|nazwa jednostki 2{{=}}Szablon:Strona|numer jednostki{{=}}2}}}} → {{Tt|{{#invoke:Pudełko|Nazwa przestrzeni nazw dyskusji 2|nazwa przestrzeni nazw 2=|nazwa jednostki 2=Szablon:Strona|numer jednostki=2}}}} * {{Code|{{m|Pudełko|Nazwa przestrzeni nazw dyskusji 2|nazwa przestrzeni nazw i{{=}}|nazwa jednostki 2{{=}}Szablon:Strona|numer jednostki{{=}}2}}}} → {{Tt|{{#invoke:Pudełko|Nazwa przestrzeni nazw dyskusji 2|nazwa przestrzeni nazw i=|nazwa jednostki 2=Szablon:Strona|numer jednostki=2}}}} * {{Code|{{m|Pudełko|Nazwa przestrzeni nazw dyskusji 2|Szablon|nazwa przestrzeni nazw{{=}}|nazwa jednostki 2{{=}}Wikibooks:Strona|numer jednostki{{=}}2}}}} → {{Tt|{{#invoke:Pudełko|Nazwa przestrzeni nazw dyskusji 2|Szablon|nazwa przestrzeni nazw=|nazwa jednostki 2=Dyskusja Wikibooks:Strona|numer jednostki=2}}}} Powyżej dla przykładu podano parametry nie w rodzicu w szablonie, tylko w dziecku, jeśli chodzi o parametry nazw przestrzeni nazw i nazw jednostek, ale ich się za to nie powinno podawać w tych ramach, tylko w szablonach, w których wywoływane są te ramki pudełek {{Code|{{m|Pudełko}}}}, ale tak tutaj tak zrobiono by było najłatwiej sprawdzić działanie tego typu funkcji. Analogicznie możemy podawać parametry typu jednostki, np.: wywołaniu modułowym {{Code|{{m|Pudełko|Nazwa przestrzeni nazw dyskusji 2|typ jednostki 2{{=}}Podręcznik|nazwa jednostki 2{{=}}Szablon:Strona|numer jednostki{{=}}2}}}} (ale wtedy jest brana przestrzeń nazw z nazwy jednostki), ale o tym więcej w rozdziałach {{Code|{{sr|# p["Dyskusyjny typ jednostki 2"](frame,i)|p=Pudełko}}}} w „{{sr|#Funkcje typu jednostki|p=Pudełko}}”, on definiuje przestrzenie dyskusji, ale można użyć parametru dyskusji typu jednostki z obojętnie jaką wartością niepustą, czy pustą, czy nawet jej nie podamy, wtedy wyświetli się nazwa przestrzeni nazw dyskusji. Jeżeli typ jednostki wskazuje na przestrzeń nazw główną, wtedy się liczą parametry nazw jednostek. Również parametry typu jednostki nie powinno się podawać w dziecku w ramce, tylko w rodzicu w szablonie jako parametry, w którym ta ramka jest wywoływana, ale tutaj podano jedynie dla przykładu, jak najłatwiej sprawdzić działanie tych parametrów tej funkcji. Najpierw w funkcji nagłówku brane są parametry nazw przestrzeni nazw, a jeżeli ich nie ma, to parametry typu jednostki, a jeżeli nie ma lub parametry przestrzenne wskazują na przestrzeń główną, i nie ma nazwy jednostki, to generowane są nazwy tej funkcji na podstawie aktualnej strony. == Funkcje pełnych nazw jednostki == === {{Code|p["Pełna nazwa dyskusji jednostki"](frame,i)}} === === {{Code|p["Pełna nazwa przedmiotowa jednostki"](frame,i)}} === === {{Code|p["Pełna nazwa jednostki"](frame,i)}} === == Funkcje pełnych nazw jednostki drugiej wersji == === {{Code|p["Pełna nazwa dyskusji jednostki 2"](frame,i)}} === === {{Code|p["Pełna nazwa przedmiotowa jednostki 2"](frame,i)}} === === {{Code|p["Pełna nazwa jednostki 2"](frame,i)}} === == Funkcje pełnych nazw jednostki trzeciej wersji == === {{Code|p["Pełna nazwa dyskusji jednostki 3"](frame,i)}} === === {{Code|p["Pełna nazwa przedmiotowa jednostki 3"](frame,i)}} === === {{Code|p["Pełna nazwa jednostki 3"](frame,i)}} === == Funkcje nazw jednostki == === {{Code|p["Nazwa jednostki"](frame,i)}} === == Funkcje nazw jednostki drugiej wersji == === {{Code|p["Nazwa jednostki 2"](frame,i)}} === === {{Code|p["Nazwa przedmiotowa jednostki 2"](frame,i)}} === === {{Code|p["Nazwa dyskusji jednostki 2"](frame,i)}} === == Funkcje nazw przestrzeni nazw trzeciej wersji == === {{Code|p["Nazwa przestrzeni nazw 3"](frame,i)}} === Funkcja pisze nazwę przestrzeni nazw, niezależnie, czy to jest przedmiotowa, czy dyskusji, według, i nie zawsze tylko, podanej w zmiennej {{Code|nazwa przestrzeni nazw}} dla pozycja bazowej w podanych parametrach szablonu rodzicu ramki dziecka, lub dla innej pozycji należy parametr podawać w formie {{Code|nazwa przestrzeni nazw 1}}, {{Code|Nazwa przestrzeni nazw 3}}, {{Code|nazwa przestrzeni nazw 3}},..., lub te parametry można podać w postaci ogólnej {{Code|nazwa przestrzeni nazw i}}. W tej funkcji trzeba też podawać parametry nazwy jednostek {{Code|nazwa jednostki}}, {{Code|nazwa jednostki 1}}, {{Code|nazwa jednostki 2}}, {{Code|nazwa jednostki 3}},... Parametry podaje się w parametrach rodzica wywołania tej funkcji {{Code|{{m|Pudełko|Nazwa przestrzeni nazw 3}}}} (ale ich nie trzeba podawać w dziecku, ale można) i w parametrach dziecka, jeśli chodzi o zmienną {{Code|numer jednostki}}, czyli np.: {{Code|{{m|Pudełko|Nazwa przestrzeni nazw 3|numer jednostki{{=}}<jakaś liczba całkowita dodatnia>}}}}. Te parametry przestrzenne zamiast w rodzicu w szablonie można podać w ramce dziecka, wtedy parametry dziecka mają pierwszeństwo. Przestrzeń nazw z parametrów nazw przestrzennych bazowych (bez numerka) może odpowiadać wartości przestrzeni głównej, to wtedy odpowiednia przestrzeń nazw z parametru nazwy jednostki się nie liczy w tej funkcji, aby się liczyła należy użyć funkcji {{Code|{{sr|#p["Nazwa przestrzeni nazw 2"](frame,...)|p=Pudełko}}}}. Przestrzeń nazw z parametrów nazw przestrzennych numerkowych może odpowiadać wartości przestrzeni głównej, to wtedy odpowiednia przestrzeń nazw z parametru nazwy jednostki się liczy w tej funkcji, wtedy jest liczona nazwa przestrzeni nazw z tego parametru. Gdy parametry przestrzenne lub typ jednostki w drugim podejściu nie wskazują na przestrzeń główną, to wtedy działanie tej funkcji jest podobne do {{Code|{{sr|#p["Nazwa przestrzeni nazw"](frame,...)|p=Pudełko}}}}. Definicja skrótowa funkcji: <syntaxhighlight lang="lua"> p["Nazwa przestrzeni nazw 3"]=function(frame,czy_uwzglednic_alternatywna_nazwe,i)...end; </syntaxhighlight> Wtedy ciało funkcji tej, czyli jego definicja w środku, jest: <syntaxhighlight lang="lua"> -- Jest liczony numer parametru nazwy przestrzeni nazw, domyslnie chodzi tu o numer bazowy parametrów przestrzennych; local numer_jednostki=i or frame.args["numer jednostki"]; local liczba_numeru_jednostki=((numer_jednostki)and(tonumber(numer_jednostki)) or 0); local pudelko_pomocne_modul=require("Module:Pudełko/Pomocne"); -- Liczy nazwę przestrzeni nazw dyskusji na podstawie podanych parametrów; return pudelko_pomocne_modul.Uzyskanie_nazw_jednostki(frame,0,liczba_numeru_jednostki,nil,2); </syntaxhighlight> Parametry funkcji: * {{Code|frame}} - tablica ramki tablicy transportu, * {{Code|czy_uwzglednic_alternatywna_nazwe}} - czy ma uwzględniać nazwę przestrzeni nazw domyślną szablonu, dostępne wartości: {{Code|false}}, w której nazwa domyślna nie jest uwzględniana wtedy, oraz {{Code|nil}} i {{Code|true}}, które oznaczają to samo, w tym jeżeli ona jest uwzględniana, wtedy jest brany parametr pierwszy dziecka, który musi istnieć przy takiej wartości tego parametru, tzn. {{Code|{{m|Pudełko|Nazwa przestrzeni nazw 3|Szablon}}}}, a nazwa uzyskana nazwy przestrzeni nazw jest w takim przypadku błędna, a jeżeli nazwa domyślna jest błędna, czyli {{Code|{{m|Pudełko|Nazwa przestrzeni nazw 3|Moja przestrzeń}}}}, wtedy funkcja zwraca stan błędu {{Code|(błąd)}}. * {{Code|i}} - numer zmiennej nazwy przestrzeni nazw. Funkcja wykorzystuje {{Code|{{sr|#p.Nazwa_przestrzeni_nazw_2(frame,...)|p=Pudełko/Pomocne}}}} do wyznaczania ogólnego nazwy przestrzeni nazw dla pozycji bazowej i numerkowej, tzn. dla pozycji: jeden, dwa, trzy,..., itd, i ich ogólnej. Parametr ramki tablicy transportu rodzica szablonu: * {{Code|nazwa przestrzeni nazw}}, {{Code|nazwa przestrzeni nazw 1}}, {{Code|Nazwa przestrzeni nazw 3}}, {{Code|nazwa przestrzeni nazw 3}},..., {{Code|nazwa przestrzeni nazw i}} - nazwy przestrzeni nazw dla pozycji bazowej oraz zwykłej i ogólnej numerkowej, * {{Code|nazwa jednostki}}, {{Code|nazwa jednostki 1}}, {{Code|nazwa jednostki 2}}, {{Code|nazwa jednostki 3}},... - nazwy jednostek dla pozycji bazowej i numerkowej, * {{Code|typ jednostki}}, {{Code|typ jednostki 1}}, {{Code|typ jednostki 2}}, {{Code|typ jednostki 3}},..., {{Code|typ jednostki i}} - typy jednostek, którym odpowiadają pewne przestrzenie przedmiotowe, dla pozycji bazowej, numerkowej i ogólnej, ** {{Code|dyskusja typu jednostki}}, {{Code|dyskusja typu jednostki 1}}, {{Code|dyskusja typ jednostki 2}}, {{Code|dyskusja typ jednostki 3}},..., {{Code|dyskusja typ jednostki i}} - czy dany typ jednostki ma przedstawiać, jeśli niepusta, przestrzeń dyskusji dla pozycji bazowej, numerkowej i ogólnej. Parametry ramki tablicy transportu dziecka: * Parametry dziecka są takie same jak rodzica dla funkcji pudełkowej plus tu wymienione, * {{Code|numer jednostki}} - jak parametr {{Code|i}} nie został ustawiony, to wtedy liczy się ta zmienna. Przykłady: <syntaxhighlight lang="mediawiki"> {{Nazwa szablonu|nazwa przestrzeni nazw=Wikibooks|nazwa przestrzeni nazw=|nazwa przestrzeni nazw i=|nazwajednostki=Szablon:Strona|nazwa jednostki 2=Wikibooks:Strona}} <hr /> {{Nazwa szablonu|nazwa przestrzeni nazw=Wikibooks|nazwa przestrzeni nazw 1=Szablon|nazwa przestrzeni nazw i=|nazwa jednostki 2=Wikibooks:Strona}} </syntaxhighlight> W dziecku powiedzmy jest wywołanie, i szukamy nazwy przestrzeni nazw o numerze dwa, która została podana, ale istnieje za to jej wersji ogólna {{Code|nazwa przestrzeni nazw i}} i domyślna {{Code|nazwa przestrzeni nazw}}, ale wtedy dla tego numerkowego liczy się to ogólne z {{Code| i}}, a ponieważ ta nazwa jest pusta, więc będziemy liczyli nazwę przestrzeni nazw z {{Code|nazwa jednostki 2}}: <syntaxhighlight lang="mediawiki"> {{#invoke:Pudełko|Nazwa przestrzeni nazw 3}} <hr /> {{#invoke:Pudełko|Nazwa przestrzeni nazw 3|numer jednostki=2}} </syntaxhighlight> Na podstawie powyższego przykładu otrzymamy wynik o schemacie, nie wyniku, bo tam nie ma zmiennej {{Code|nazwa przestrzeni nazw 1}}, ale jest {{Code|nazwa przestrzeni nazw i}}: <syntaxhighlight lang="mediawiki"> <!-- Ale nie "nazwa przestrzeni nazw""; --> <!-- nazwa przestrzeni nazw=""; --> <!-- Czyli wynik: --> <!-- wynik pusty --> <!-- Widzimy, że wygenerowała się nazwa przestrzeni nazw, którą jest przestrzeń nazw główna, jest ciągiem pustym: ""; --> <hr /> <!-- Ale nie "Nazwa przestrzeni nazw 2", bo jej nie ma, ale za to istnieje "nazwa przestrzeni nazw i"; --> <!-- nazwa przestrzeni nazw 2=nazwa przestrzeni nazw i="", a nazwa jednostki 2="Wikibooks:Strona"; --> <!-- Czyli wynik: --> Wikibooks <!-- Widzimy, że wygenerowała się nazwa przestrzeni nazw, którą jest przestrzeń nieprogramowa, ale projektu, wychodząca z nazwy jednostek w tym przypadku z "nazwa jednostki 2"; --> </syntaxhighlight> Dla parametrów bazowych nienumerkowych istnieje zmienna {{Code|nazwa przestrzeni nazw}}, której waartość jest pusta,którajest zwracana przez tą funkcję. {{Hr}} Dla parametrów numerkowych nie jest brana w tym powyższym przykładzie zmienna {{Code|nazwa przestrzeni nazw}}, bo jej nie ma, ale za to jest {{Code|nazwa przestrzeni nazw i}}, bo ona występuje jako parametr domyślny ogólny dla parametrów numerkowych. Tytaj jest używana jest zmienna {{Code|nazwa jednostki 2}} do wygenerowania ostatecznego wyniku, bo jak można zauważyć, parametry przestrzenne wskazują na przestrzeń główną, a nazwy jednostek już nie. Przykłady w wikikodzie: * {{Code|{{m|Pudełko|Nazwa przestrzeni nazw 3|nazwa przestrzeni nazw{{=}}|nazwa jednostki{{=}}Wikibooks:Strona}}}} → {{Tt|{{#invoke:Pudełko|Nazwa przestrzeni nazw 3|nazwa przestrzeni nazw=|nazwa jednostki=Wikibooks:Szablon}}}} * {{Code|{{m|Pudełko|Nazwa przestrzeni nazw 3|nazwa przestrzeni nazw 2{{=}}|nazwa jednostki 2{{=}}Wikibooks:Strona|numer jednostki{{=}}2}}}} → {{Tt|{{#invoke:Pudełko|Nazwa przestrzeni nazw 3|nazwa przestrzeni nazw 2=|nazwa jednostki 2=Wikibooks:Szablon|numer jednostki=2}}}} Powyżej dla przykładu podano parametry nie w rodzicu w szablonie, tylko w dziecku, jeśli chodzi o parametry nazw przestrzeni nazw i nazw jednostek, ale ich się za to nie powinno podawać w tych ramach, tylko w szablonach, w których wywoływane są te ramki pudełek {{Code|{{m|Pudełko}}}}, ale tak tutaj tak zrobiono by było najłatwiej sprawdzić działanie tego typu funkcji. Analogicznie możemy podawać parametry typu jednostki, np.: wywołaniu modułowym {{Code|{{m|Pudełko|Nazwa przestrzeni nazw 3|typ jednostki 2{{=}}Podręcznik|nazwa jednostki 2{{=}}Szablon:Strona|numer jednostki{{=}}2}}}} (ale wtedy jest brana przestrzeń nazw z nazwy jednostki), ale o tym więcej w rozdziałach {{Code|{{sr|#p["Typ jednostki 3"](frame,i)|p=Pudełko}}}} w „{{sr|#Funkcje typu jednostki|p=Pudełko}}”, on definiuje przestrzenie przedmiotowe, ale można użyć parametru dyskusji typu jednostki z wartością niepustą, wtedy wyświetli się nazwa przestrzeni nazw dyskusji. Jeżeli typ jednostki bazowy wskazuje na przestrzeń nazw główną, wtedy się nie liczą parametry nazw jednostek, a na numerkowy, wtedy się liczy. Również parametry typu jednostki nie powinno się podawać w dziecku w ramce, tylko w rodzicu w szablonie jako parametry, w którym ta ramka jest wywoływana, ale tutaj podano jedynie dla przykładu, jak najłatwiej sprawdzić działanie tych parametrów tej funkcji. Najpierw w funkcji nagłówku brane są parametry nazw przestrzeni nazw, a jeżeli ich nie ma, to parametry typu jednostki, a jeżeli nie ma lub parametry przestrzenne wskazują na przestrzeń główną, i nie ma nazwy jednostki, to generowane są nazwy tej funkcji na podstawie aktualnej strony. === {{Code|p["Nazwa przedmiotowej przestrzeni nazw 3"](frame,i)}} === Funkcja pisze przedmiotową nazwę przestrzeni nazw jakikolwiek nazwy przestrzeni nazw (tzn. nazwę przedmiotową nazwy przestrzenie nazw, czyli nie dyskusji, zamieniana jest na nią samą, czyli identyfikator przestrzeni się nie zmienia, a dyskusji, nie przedmiotową, przekształca się na przedmiotową jej odpowiadającą, czyli w tym przypadku identyfikator przestrzeni zmniejsza się o numer mniej), według podanej w zmiennej {{Code|nazwa przestrzeni nazw}} dla pozycja bazowej w podanych parametrach szablonu rodzicu ramki dziecka, lub dla innej pozycji należy parametr podawać w formie {{Code|nazwa przestrzeni nazw 1}}, {{Code|nazwa przestrzeni nazw 2}}, {{Code|nazwa przestrzeni nazw 3}},..., lub te parametry można podać w postaci ogólnej {{Code|nazwa przestrzeni nazw i}}. Parametry podaje się w parametrach rodzica wywołania tej funkcji {{Code|{{m|Pudełko|Nazwa przedmiotowej przestrzeni nazw 3}}}} (ale ich nie trzeba podawać w dziecku, ale można) i w parametrach dziecka, jeśli chodzi o zmienną {{Code|numer jednostki}}, czyli np.: {{Code|{{m|Pudełko|Nazwa przedmiotowej przestrzeni nazw 3|numer jednostki{{=}}<jakaś liczba całkowita dodatnia>}}}}. Te parametry przestrzenne zamiast w rodzicu w szablonie można podać w ramce dziecka, wtedy parametry dziecka mają pierwszeństwo. Parametry przestrzenne mogą mogą być podane w postaci przestrzeni przedmiotowej lub dyskusji, ale ta funkcja zawsze ją zamienia na przedmiotową. Przestrzeń nazw z parametrów nazw przestrzennych bazowych (bez numerka) może odpowiadać wartości przestrzeni głównej, to wtedy odpowiednia przestrzeń nazw z parametru nazwy jednostki się nie liczy w tej funkcji, aby się liczyła należy użyć funkcji {{Code|{{sr|#p["Nazwa przestrzeni nazw dyskusji 2"](frame,...)|p=Pudełko}}}}. Przestrzeń nazw z parametrów nazw przestrzennych numerkowych może odpowiadać wartości przestrzeni głównej, to wtedy odpowiednia przestrzeń nazw z parametru nazwy jednostki się liczy w tej funkcji, wtedy jest liczona nazwa przestrzeni nazw z tego parametru. Gdy parametry przestrzenne lub typ jednostki w drugim podejściu nie wskazują na przestrzeń główną, to wtedy działanie tej funkcji jest podobne do {{Code|{{sr|#p["Nazwa przestrzeni nazw"](frame,...)|p=Pudełko}}}}. Definicja skrótowa funkcji: <syntaxhighlight lang="lua"> p["Nazwa przedmiotowej przestrzeni nazw 3"]=function(frame,czy_uwzglednic_alternatywna_nazwe,i)...end; </syntaxhighlight> Wtedy ciało funkcji tej, czyli jego definicja w środku, jest: <syntaxhighlight lang="lua"> -- Jest liczony numer parametru nazwy przestrzeni nazw, domyslnie chodzi tu o numer bazowy parametrów przestrzennych; local numer_jednostki=i or frame.args["numer jednostki"]; local liczba_numer_jednostki=((numer_jednostki)and(tonumber(numer_jednostki))or 0); local pudelko_pomocne_modul=require("Module:Pudełko/Pomocne"); -- Liczy nazwę przestrzeni nazw przedmiotową na podstawie podanych parametrów; return pudelko_pomocne_modul.Nazwa_przestrzeni_nazw(frame,1, czy_uwzglednic_alternatywna_nazwe,liczba_numer_jednostki); </syntaxhighlight> Parametry funkcji: * {{Code|frame}} - tablica ramki tablicy transportu, * {{Code|czy_uwzglednic_alternatywna_nazwe}} - czy ma uwzględniać nazwę przestrzeni nazw domyślną szablonu, dostępne wartości: {{Code|false}}, w której nazwa domyślna nie jest uwzględniana wtedy, oraz {{Code|nil}} i {{Code|true}}, które oznaczają to samo, w tym jeżeli ona jest uwzględniana, wtedy jest brany parametr pierwszy dziecka, który musi istnieć przy takiej wartości tego parametru, tzn. {{Code|{{m|Pudełko|Nazwa przedmiotowej przestrzeni nazw 3|Dyskusja szablonu}}}} - ta nazwa domyślna zostanie zamieniona na przedmiotową, a jak ona by była przedmiotowa, to żadnej zamiany by nie było, a nazwa uzyskana z nazwy przestrzeni nazw z parametrów przestrzennych jest w takim przypadku błędna, to w takim razie brany jest ten parametr, a jeżeli ta nazwa domyślna jest błędna, czyli {{Code|{{m|Pudełko|Nazwa przedmiotowej przestrzeni nazw 3|Moja przestrzeń}}}}, wtedy funkcja zwraca stan błędu {{Code|(błąd)}}. * {{Code|i}} - numer zmiennej nazwy przestrzeni nazw. Funkcja wykorzystuje {{Code|{{sr|#p.Nazwa_przestrzeni_nazw(frame,...)|p=Pudełko/Pomocne}}}} do wyznaczania ogólnego nazwy przestrzeni nazw dla pozycji bazowej i numerkowej, tzn. dla pozycji: jeden, dwa, trzy,..., itd, i ich ogólnej. Parametr ramki tablicy transportu rodzica szablonu: * {{Code|nazwa przestrzeni nazw}}, {{Code|nazwa przestrzeni nazw 1}}, {{Code|nazwa przestrzeni nazw 2}}, {{Code|nazwa przestrzeni nazw 3}},..., {{Code|nazwa przestrzeni nazw i}} - nazwy przestrzeni nazw dla pozycji bazowej oraz zwykłej i ogólnej numerkowej, * {{Code|typ jednostki}}, {{Code|typ jednostki 1}}, {{Code|typ jednostki 2}}, {{Code|typ jednostki 3}},..., {{Code|typ jednostki i}} - typy jednostek, którym odpowiadają pewne przestrzenie przedmiotowe, dla pozycji bazowej, numerkowej i ogólnej. Parametry ramki tablicy transportu dziecka: * Parametry dziecka są takie same jak rodzica dla funkcji pudełkowej plus tu wymienione, * {{Code|numer jednostki}} - jak parametr {{Code|i}} nie został ustawiony, to wtedy liczy się ta zmienna. Przykłady: <syntaxhighlight lang="mediawiki"> {{Nazwa szablonu|nazwa przestrzeni nazw=Wikibooks|nazwa przestrzeni nazw=|nazwa przestrzeni nazw i=|nazwajednostki=Szablon:Strona|nazwa jednostki=Dyskusja Wikibooks:Strona}} <hr /> {{Nazwa szablonu|nazwa przestrzeni nazw=Wikibooks|nazwa przestrzeni nazw 1=Szablon|nazwa przestrzeni nazw i=|nazwa jednostki 2=Dyskusja Wikibooks:Strona}} </syntaxhighlight> W dziecku powiedzmy jest wywołanie, i szukamy nazwy przestrzeni nazw o numerze dwa, która nie została podana, ale istnieje za to jej wersji ogólna {{Code|nazwa przestrzeni nazw i}} i domyślna {{Code|nazwa przestrzeni nazw}}: <syntaxhighlight lang="mediawiki"> {{#invoke:Pudełko|Nazwa przedmiotowej przestrzeni nazw 3|numer jednostki=1}} </syntaxhighlight> Na podstawie powyższego przykładu otrzymamy wynik o schemacie, nie wyniku, bo tam nie ma zmiennej {{Code|nazwa przestrzeni nazw 1}}, ale jest {{Code|nazwa przestrzeni nazw i}}: <syntaxhighlight lang="mediawiki"> <!-- Ale nie "nazwa przestrzeni nazw""; --> <!-- nazwa przestrzeni nazw=""; --> <!-- Czyli wynik: --> <!-- wynik pusty --> <!-- Widzimy, że wygenerowała się nazwa przestrzeni nazw, którą jest przestrzeń nazw główna, jest ciągiem pustym: ""; --> <hr /> <!-- Ale nie "Nazwa przestrzeni nazw 2", bo jej nie ma, ale za to istnieje "nazwa przestrzeni nazw i"; --> <!-- nazwa przestrzeni nazw 2=nazwa przestrzeni nazw i="", a nazwa jednostki 2="Dyskusja Wikibooks:Strona"; --> <!-- Czyli wynik: --> Wikibooks <!-- Widzimy, że wygenerowała się nazwa przestrzeni nazw, którą jest przestrzeń nieprogramowa, ale projektu, wychodząca z nazwy jednostek w tym przypadku z "nazwa jednostki 2"; --> </syntaxhighlight> Nie jest brana w tym powyższym przykładzie zmienna {{Code|nazwa przestrzeni nazw}}, bo jej nie ma, ale za to jest {{Code|nazwa przestrzeni nazw i}}, bo ona występuje jako parametr domyślny ogólny dla parametrów numerkowych. Przykłady w wikikodzie: * {{Code|{{m|Pudełko|Nazwa przestrzeni nazw 3|nazwa przestrzeni nazw{{=}}|nazwa jednostki{{=}}Dyskusja Wikibooks:Strona}}}} → {{Tt|{{#invoke:Pudełko|Nazwa przestrzeni nazw 3|nazwa przestrzeni nazw=|nazwa jednostki=Dyskusja Wikibooks:Szablon}}}} * {{Code|{{m|Pudełko|Nazwa przestrzeni nazw 3|nazwa przestrzeni nazw 2{{=}}|nazwa jednostki 2{{=}}Dyskusja Wikibooks:Strona|numer jednostki{{=}}2}}}} → {{Tt|{{#invoke:Pudełko|Nazwa przestrzeni nazw 3|nazwa przestrzeni nazw 2=|nazwa jednostki 2=Dyskusja Wikibooks:Szablon|numer jednostki=2}}}} Powyżej dla przykładu podano parametry nie w rodzicu w szablonie, tylko w dziecku, jeśli chodzi o parametry nazw przestrzeni nazw, ale ich się za to nie powinno podawać w tych ramach, tylko w szablonach, w których wywoływane są te ramki pudełek {{Code|{{m|Pudełko}}}}, ale tak tutaj tak zrobiono by było najłatwiej sprawdzić działanie tego typu funkcji. Analogicznie możemy podawać parametry typu jednostki, np.: wywołaniu modułowym {{Code|{{m|Pudełko|Nazwa przedmiotowej przestrzeni nazw 3|typ jednostki 2{{=}}strona szablonu|numer jednostki{{=}}2}}}}, ale o tym więcej w rozdziałach {{Code|{{sr|# p["Przedmiotowy typ jednostki 3"](frame,i)|p=Pudełko}}}} w „{{sr|#Funkcje typu jednostki|p=Pudełko}}”, ale wtedy ta sama nazwa przestrzeni nazw reprezentowana przez {{Parametr|typ jednostki 2|strona szablonu}}, jest zamieniana na to samo, lepiej jest tutaj używać parametrów przestrzennych nazw niż typu jednostki, bo typ jednostki ma taką samą wartość dla przestrzeni przedmiotowej, co dyskusji. Tutaj parametr dyskusji typu jednostki bazowy i numerkowy ogólny, czy szczegółowy, nie gra roli, bo nawet, gdy wygenerujemy nazwę przestrzeni dyskusji za pomoca tego parametru, to i tak otrzymamy na samym końcu jego nazwę przedmiotową. Również parametry typu jednostki nie powinno się podawać w dziecku w ramce, tylko w rodzicu w szablonie jako parametry, w którym ta ramka jest wywoływana, ale tutaj podano jedynie dla przykładu, jak najłatwiej sprawdzić działanie tych parametrów tej funkcji. Najpierw w funkcji nagłówku brane są parametry nazw przestrzeni nazw, a jeżeli ich nie ma, to parametry typu jednostki, a jeżeli nie ma, to generowane są nazwy na podstawie aktualnego modułu. === {{Code|p["Nazwa przestrzeni nazw dyskusji 3"](frame,i)}} === == Funkcje nazw jednostki trzeciej wersji == === {{Code|p["Nazwa jednostki 3"](frame,i)}} === === {{Code|p["Nazwa przedmiotowa jednostki 3"](frame,i)}} === === {{Code|p["Nazwa dyskusji jednostki 3"](frame,i)}} === == Funkcje typu jednostki == === {{Code|p["Typ jednostki"](frame,i)}} === === {{Code|p["Typ jednostki 2"](frame,i)}} === === {{Code|p["Typ jednostki 3"](frame,i)}} === === Funkcje typu jednostki przedmiotowe === ==== {{Code|p["Przedmiotowy typ jednostki"](frame,i)}} ==== ==== {{Code|p["Przedmiotowy typ jednostki 2"](frame,i)}} ==== ==== {{Code|p["Przedmiotowy typ jednostki 3"](frame,i)}} ==== === Fukcje typu jednostki dyskusji === ==== {{Code|p["Dyskusyjny typ jednostki"](frame,i)}} ==== ==== {{Code|p["Dyskusyjny typ jednostki 2"](frame,i)}} ==== ==== {{Code|p["Dyskusyjny typ jednostki 3"](frame,i)}} ==== == Funkcje chech pudełka == === {{Code|p["Cecha pudełka"](frame)}} === === {{Code|p["Przedmiotowa cecha pudełka"](frame)}} === === {{Code|p["Dyskusyjna cecha pudełka"](frame)}} === == Fukcje ogólnego pudełka == === {{Code|p["Ogólne pudełko"](frame)}} === == Funkcje ogólne == === {{Code|p["Tekst pudełka"](frame)}} === == Funkcje błędów pudełka == === {{Code|p["Błędy pudełka"](frame)}} === === {{Code|p["Przedmiotowe błędy pudełka"](frame)}} === === {{Code|p["Dyskusyjne błędy pudełka"](frame)}} === == Funkcje nazw stron == === {{Code|p["Nazwa strony głównej projektu"](frame,i)}} === === {{Code|p["Nazwa strony głównej dla dzieci projektu"](frame,i)}} === == Funkcje kodów == === {{Code|p["Kod języka"](frame,i)}} === === {{Code|p["Kod projektu"](frame,i)}} === === {{Code|p["Klucz projektu"](frame,i)}} === == Funkcje wiki == === {{Code|p["Inny niż język bieżący wiki"](frame)}} === === {{Code|p["Inne niż lokalne wiki"](frame)}} === === {{Code|p["Inne niż bieżące wiki"](frame)}} === == Funkcje typów parametrów, czy podane je == === {{Code|p["Podano parametry nienazwane"](frame)}} === === {{Code|p["Podano parametry numerowane"](frame)}} === === {{Code|p["Podano parametry nazwane"](frame)}} === == Funkcje kodów tego projektu == === {{Code|p["Kod projektu tego projektu"](frame)}} === === {{Code|p["Kod języka tego projektu"](frame)}} === === {{Code|p["Klucz projektu tego projektu"](frame)}} === == Funkcje stron == === {{Code|p["Strona główna tego projektu"](frame)}} === === {{Code|p["Strona główna dla dzieci tego projektu"](frame)}} === == Funkcje nazw stron drugiej wersji == === {{Code|p["Nazwa strony głównej dla dzieci projektu 2"](frame)}} === === {{Code| p["Nazwa strony głównej projektu 2"](frame)}} === {{BrClear}} <noinclude><!-- -->{{ProstaStronaKoniec}}<!-- -->{{Kategoria|Opisy funkcji, w Lua w Scribunto, w modułach}}<!-- --></noinclude> fmnm1sil5jt2jh9320ydv4b4jp6yzpc 540414 540413 2026-04-23T19:36:04Z Persino 2851 /* {{Code|p["Nazwa przedmiotowej przestrzeni nazw 3"](frame,i)}} */ 540414 wikitext text/x-wiki <noinclude>{{ProstaStronaStart | nagłówek = {{Podrozdział|{{ld2|Pudełko}}|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 pudelko_modul=require("Module:Pudełko"); </syntaxhighlight> dzięki, któremu można wypisywać funkcje należącego do niego. Posługuje się na parametrach pudełkowych {{Parametr|nazwa przestrzeni nazw}} (czy też bez numerka {{Parametr|nazwa przestrzeni nazw i}} dla tego numerowanego) lub te z numerkiem po jednej spacji w nich (ale nie dla tego z końcówką {{Code| i}}) mogą zostać użyte jako parametry szablonu. Moduł {{Code|{{ld2|Pudełko}}}} przedstawia funkcje nazw w oparciu o funkcje nazw {{Code|{{ld2|Nazwy}}}}, generuje on nazwy za pomocą parametrów pudełkowych podanych poniżej. Parametr {{Parametr|nazwa jednostki}} (lub parametr {{Parametr|cel}} dla numerka tego pierwszego, tego alternatywnego), lub te z numerkiem po jednej spacji w nazwie parametru, albo numerowane numerkami {{Code|1}}, {{Code|2}},..., mogą zostać użyte jako parametry szablonu. Parametry określające rodzaj jednostki {{Parametr|typ jednostki}} z {{Parametr|dyskusja typu jednostki}}, itp. w wersjach z numerkiem po jednej spacji w nich mogą zostać użyte jako parametry szablonu. A te tymi numerowanymi liczbami naturalnymi {{Tt|nazwy jednostki}} od jedynki wzwyż poprzez szablon, w którym są one użyte, one też mogą być użyte z dwukropkiem, te numerowane, na samym początku nazwy, wtedy one są traktowane jako pełne nazwy strony, i wtedy one nie zostaną z interpretowane, że do nich trzeba użyć parametr odpowiedni z nazwą przetrzeni nazw z tego numerowanego, czy ogólny, aby utworzyć znów inną pełną nazwę strony dla tego numerka. Zestawienie: * {{Code|nazwa przestrzeni nazw}} i {{Code|nazwa przestrzeni nazw i}} (ogólna nazwa przestrzeni nazw dla wszystkich numerków, i tych numerowanych jednostek) - i to pierwsze z numerkiem, tzn. {{Code|nazwa przestrzeni nazw 1}}, {{Code|nazwa przestrzeni nazw 2}}, ..., * {{Code|nazwa jednostki}} - i te z numerkiem: {{Code|nazwa jednostki 1}}, {{Code|nazwa jednostki 2}}, ..., lub gdy jest zamiast tego parametrem numerowany, {{Code|1}}, {{Code|2}},..., który dla tego pierwszego może być uznany jako: {{Code|cel}} {{=}} {{Code|1}}, * {{Code|typ jednostki}} (parametr bazowy) i {{Code|typ jednostki i}} (parametr domyślny numerkowy) - i te z numerkiem: {{Code|typ jednostki 1}}, {{Code|typ jednostki 2}}, ..., tzn. gdy chcemy określić z jakim typem jednostki mamy do czynienia w zależności do jakiej przestrzeni nazw należy, a w danej, czy jest on np. programowy, czy tylko jest opisem, jak to bywa w szablonach {{Np|Template|link=tak}}, podobnie jest w przypadku {{Np|Module|link=tak}}, czy jak jest w innych przestrzeniach nazw, ** {{Code|dyskusja typu jednostki}} (parametr bazowy) i {{Code|dyskusja typu jednostki i}} (parametr domyślny numerkowy) - i te z numerkiem: {{Code|dyskusja typu jednostki 1}}, {{Code|dyskusja typu jednostki 2}}, ..., gdy chcemy określić wartością niepustą,że chodzi tutaj o typ jednostki. == {{Code|p.CzyNiepoprawnaNazwa(nazwa_jednostki)}} == Funkcja sprawdzajaca, czy jest poprawnie podana nazwa jednostki, czy ma poprawną nazwę. Znakami tymi, z których nie powinna składać się nazwa jest {{Code|<nowiki>{}<>|[]#\n</nowiki>}} i dodatkowo znak {{Code|&#127;}} (kod {{Code|{{Nowiki|&#127;}}}}). Też nie może składać się z trzech znaków tyldy, tzn. {{Code|<nowiki>~~~</nowiki>}}. Również w swojej budowie nie może składać się ze kodów {{Strong|HTML}} literowych o wzorze {{Code|{{Nowiki|&(%a+);}}}}. Natomiast może składać się z {{Code|{{Nowiki|&#(%d+);}}}} i {{Code|{{Nowiki|&#x(%x+);}}}}, ale w pierw te kody muszą być zamienione na normalne znaki. Skrótowa definicja funkcji: <syntaxhighlight lang="lua"> function p.CzyNiepoprawnaNazwa(nazwa_jednostki)...end; </syntaxhighlight> Wtedy ciało funkcji tej, czyli jego definicja w środku, jest: <syntaxhighlight lang="lua"> -- Moduł: "Moduł:Html/dane", służy do ładowania znaku o kodzie HTML "&#127;"; local html_dane_modul=mw.loadData("Module:Html/dane"); return mw.ustring.match(nazwa_jednostki,"[{}<>|%[%]#\n"..html_dane_modul.znak_127.."]+") or mw.ustring.match(nazwa_jednostki,"~~~") or mw.ustring.match(nazwa_jednostki,"&(%a+);"); </syntaxhighlight> Parametry: * {{Code|nazwa_jednostki}} - nazwa jednostki do sprawdzenia. Przykłady: <syntaxhighlight lang="lua"> local pudelko_modul=require("Module:Pudełko"); -- Podana przykładowa niepoprawna nazwa jedostki local nazwa_jednostki="Nazwa pliku [[Nazwa linku w pliku]]"; -- Fukcja zwróci wartość: local czy_poprawna_nazwa=true; local czy_poprawna_nazwa=pudelko_modul.CzyNiepoprawnaNazwa(nazwa_jednostki); </syntaxhighlight> == Funkcje nazw przestrzeni nazw == === {{Code|p["Nazwa przestrzeni nazw"](frame,...)}} === Funkcja pisze nazwę przestrzeni nazw, niezależnie, czy to jest przedmiotowa, czy dyskusji, według podanej w zmiennej {{Code|nazwa przestrzeni nazw}} dla pozycja bazowej w podanych parametrach szablonu rodzicu ramki dziecka, lub dla innej pozycji należy parametr podawać w formie {{Code|nazwa przestrzeni nazw 1}}, {{Code|nazwa przestrzeni nazw 2}}, {{Code|nazwa przestrzeni nazw 3}},..., lub te parametry można podać w postaci ogólnej {{Code|nazwa przestrzeni nazw i}}. Parametry podaje się w parametrach rodzica wywołania tej funkcji {{Code|{{m|Pudełko|Nazwa przestrzeni nazw}}}} (ale ich nie trzeba podawać w dziecku, ale można) i w parametrach dziecka, jeśli chodzi o zmienną {{Code|numer jednostki}}, czyli np.: {{Code|{{m|Pudełko|Nazwa przestrzeni nazw|numer jednostki{{=}}<jakaś liczba całkowita dodatnia>}}}}. Te parametry przestrzenne zamiast w rodzicu w szablonie można podać w ramce dziecka, wtedy parametry dziecka mają pierwszeństwo. Przestrzeń nazw z parametrów nazw przestrzennych może odpowiadać wartości przestrzeni głównej, to wtedy odpowiednia przestrzeń nazw z parametru nazwy jednostki się nie liczy w tej funkcji, aby się liczyła należy użyć funkcji {{Code|{{sr|#p["Nazwa przestrzeni nazw 2"](frame,...)|p=Pudełko}}}}. Definicja skrótowa funkcji: <syntaxhighlight lang="lua"> p["Nazwa przestrzeni nazw"]=function(frame,czy_uwzglednic_alternatywna_nazwe,i)...end; </syntaxhighlight> Wtedy ciało funkcji tej, czyli jego definicja w środku, jest: <syntaxhighlight lang="lua"> -- Jest liczony numer parametru nazwy przestrzeni nazw, domyslnie chodzi tu o numer bazowy parametrów przestrzennych; local numer_jednostki=i or frame.args["numer jednostki"]; local liczba_numer_jednostki=((numer_jednostki)and(tonumber(numer_jednostki))or 0); local pudelko_pomocne_modul=require("Module:Pudełko/Pomocne"); -- Liczy nazwę przestrzeni nazw na podstawie podanych parametrów; return pudelko_pomocne_modul.Nazwa_przestrzeni_nazw(frame,0, czy_uwzglednic_alternatywna_nazwe,liczba_numer_jednostki); </syntaxhighlight> Parametry funkcji: * {{Code|frame}} - tablica ramki tablicy transportu, * {{Code|czy_uwzglednic_alternatywna_nazwe}} - czy ma uwzględniać nazwę przestrzeni nazw domyślną szablonu, dostępne wartości: {{Code|false}}, w której nazwa domyślna nie jest uwzględniana wtedy, oraz {{Code|nil}} i {{Code|true}}, które oznaczają to samo, w tym jeżeli ona jest uwzględniana, wtedy jest brany parametr pierwszy dziecka, który musi istnieć przy takiej wartości tego parametru, tzn. {{Code|{{m|Pudełko|Nazwa przestrzeni nazw|Szablon}}}}, a nazwa uzyskana nazwy przestrzeni nazw jest w takim przypadku błędna, a jeżeli nazwa domyślna jest błędna, czyli {{Code|{{m|Pudełko|Nazwa przestrzeni nazw|Moja przestrzeń}}}}, wtedy funkcja zwraca stan błędu {{Code|(błąd)}}. * {{Code|i}} - numer zmiennej nazwy przestrzeni nazw. Funkcja wykorzystuje {{Code|{{sr|#p.Nazwa_przestrzeni_nazw(frame,...)|p=Pudełko/Pomocne}}}} do wyznaczania ogólnego nazwy przestrzeni nazw dla pozycji bazowej i numerkowej, tzn. dla pozycji: jeden, dwa, trzy,..., itd, i ich ogólnej. Parametr ramki tablicy transportu rodzica szablonu: * {{Code|nazwa przestrzeni nazw}}, {{Code|nazwa przestrzeni nazw 1}}, {{Code|nazwa przestrzeni nazw 2}}, {{Code|nazwa przestrzeni nazw 3}},..., {{Code|nazwa przestrzeni nazw i}} - nazwy przestrzeni nazw dla pozycji bazowej oraz zwykłej i ogólnej numerkowej, * {{Code|typ jednostki}}, {{Code|typ jednostki 1}}, {{Code|typ jednostki 2}}, {{Code|typ jednostki 3}},..., {{Code|typ jednostki i}} - typy jednostek, którym odpowiadają pewne przestrzenie przedmiotowe, dla pozycji bazowej, numerkowej i ogólnej, ** {{Code|dyskusja typu jednostki}}, {{Code|dyskusja typu jednostki 1}}, {{Code|dyskusja typ jednostki 2}}, {{Code|dyskusja typ jednostki 3}},..., {{Code|dyskusja typ jednostki i}} - czy dany typ jednostki ma przedstawiać, jeśli niepusta, przestrzeń dyskusji dla pozycji bazowej, numerkowej i ogólnej. Parametry ramki tablicy transportu dziecka: * Parametry dziecka są takie same jak rodzica dla funkcji pudełkowej plus tu wymienione, * {{Code|numer jednostki}} - jak parametr {{Code|i}} nie został ustawiony, to wtedy liczy się ta zmienna. Przykłady: <syntaxhighlight lang="mediawiki"> {{Nazwa szablonu|nazwa przestrzeni nazw=Wikibooks|nazwa przestrzeni nazw 2=Szablon|nazwa przestrzeni nazw i=Moduł}} </syntaxhighlight> W dziecku powiedzmy jest wywołanie, i szukamy nazwy przestrzeni nazw o numerze dwa, która nie została podana, ale istnieje za to jej wersji ogólna {{Code|nazwa przestrzeni nazw i}} i domyślna {{Code|nazwa przestrzeni nazw}}: <syntaxhighlight lang="mediawiki"> {{#invoke:Pudełko|Nazwa przestrzeni nazw|numer jednostki=1}} </syntaxhighlight> Na podstawie powyższego przykładu otrzymamy wynik o schemacie, nie wyniku, bo tam nie ma zmiennej {{Code|nazwa przestrzeni nazw 1}}, ale jest {{Code|nazwa przestrzeni nazw i}}: <syntaxhighlight lang="mediawiki"> <!-- Ale nie "nazwa przestrzeni nazw", bo jej nie ma, ale za to istnieje "nazwa przestrzeni nazw i"; --> <!-- nazwa przestrzeni nazw 2=nazwa przestrzeni nazw i=Moduł; --> <!-- Czyli wynik: --> Moduł <!-- Widzimy, że wygenerowała się nazwa przestrzeni nazw, którą jest przestrzeń programowa, którą również jest "Szablon"; --> </syntaxhighlight> Nie jest brana w tym powyższym przykładzie zmienna {{Code|nazwa przestrzeni nazw}}, bo jej nie ma, ale za to jest {{Code|nazwa przestrzeni nazw i}}, bo ona występuje jako parametr domyślny ogólny dla parametrów numerkowych. Przykłady w wikikodzie: * {{Code|{{m|Pudełko|Nazwa przestrzeni nazw|numer jednostki{{=}}2}}}} → {{Tt|{{#invoke:Pudełko|Nazwa przestrzeni nazw|numer jednostki=2}}}} * {{Code|{{m|Pudełko|Nazwa przestrzeni nazw|Szablon|nazwa przestrzeni nazw i{{=}}Moja przestrzeń|numer jednostki{{=}}2}}}} → {{Tt|{{#invoke:Pudełko|Nazwa przestrzeni nazw|Szablon|nazwa przestrzeni nazw i=Moja przestrzeń|numer jednostki=2}}}} * {{Code|{{m|Pudełko|Nazwa przestrzeni nazw|nazwa przestrzeni nazw 2{{=}}Szablon|numer jednostki{{=}}2}}}} → {{Tt|{{#invoke:Pudełko|Nazwa przestrzeni nazw|nazwa przestrzeni nazw 2=Szablon|numer jednostki=2}}}} * {{Code|{{m|Pudełko|Nazwa przestrzeni nazw|nazwa przestrzeni nazw 2{{=}}Szablon|numer jednostki{{=}}2}}}} → {{Tt|{{#invoke:Pudełko|Nazwa przestrzeni nazw|nazwa przestrzeni nazw i=Szablon|numer jednostki=2}}}} * {{Code|{{m|Pudełko|Nazwa przestrzeni nazw|nazwa przestrzeni nazw{{=}}Szablon|numer jednostki{{=}}2}}}} → {{Tt|{{#invoke:Pudełko|Nazwa przestrzeni nazw|nazwa przestrzeni nazw=Szablon|numer jednostki=2}}}} Powyżej dla przykładu podano parametry nie w rodzicu w szablonie, tylko w dziecku, jeśli chodzi o parametry nazw przestrzeni nazw, ale ich się za to nie powinno podawać w tych ramach, tylko w szablonach, w których wywoływane są te ramki pudełek {{Code|{{m|Pudełko}}}}, ale tak tutaj tak zrobiono by było najłatwiej sprawdzić działanie tego typu funkcji. Analogicznie możemy podawać parametry typu jednostki, np.: wywołaniu modułowym {{Code|{{m|Pudełko|Nazwa przestrzeni nazw|typ jednostki 2{{=}}strona szablonu|numer jednostki{{=}}2}}}}, ale o tym więcej w rozdziałach {{Code|{{sr|# p["Typ jednostki"](frame,i)|p=Pudełko}}}} w „{{sr|#Funkcje typu jednostki|p=Pudełko}}”, on definiuje przestrzenie przedmiotowe, ale można użyć parametru dyskusji typu jednostki z wartością niepustą, wtedy wyświetli się nazwa przestrzeni nazw dyskusji. Również parametry typu jednostki nie powinno się podawać w dziecku w ramce, tylko w rodzicu w szablonie jako parametry, w którym ta ramka jest wywoływana, ale tutaj podano jedynie dla przykładu, jak najłatwiej sprawdzić działanie tych parametrów tej funkcji. Najpierw w funkcji nagłówku brane są parametry nazw przestrzeni nazw, a jeżeli ich nie ma, to parametry typu jednostki, a jeżeli nie ma, to generowane są nazwy na podstawie aktualnego modułu. === {{Code|p["Nazwa przedmiotowej przestrzeni nazw"](frame,...)}} === Funkcja pisze przedmiotową nazwę przestrzeni nazw jakikolwiek nazwy przestrzeni nazw (tzn. nazwę przedmiotową nazwy przestrzenie nazw, czyli nie dyskusji, zamieniana jest na nią samą, czyli identyfikator przestrzeni się nie zmienia, a dyskusji, nie przedmiotową, przekształca się na przedmiotową jej odpowiadającą, czyli w tym przypadku identyfikator przestrzeni zmniejsza się o numer mniej), według podanej w zmiennej {{Code|nazwa przestrzeni nazw}} dla pozycja bazowej w podanych parametrach szablonu rodzicu ramki dziecka, lub dla innej pozycji należy parametr podawać w formie {{Code|nazwa przestrzeni nazw 1}}, {{Code|nazwa przestrzeni nazw 2}}, {{Code|nazwa przestrzeni nazw 3}},..., lub te parametry można podać w postaci ogólnej {{Code|nazwa przestrzeni nazw i}}. Parametry podaje się w parametrach rodzica wywołania tej funkcji {{Code|{{m|Pudełko|Nazwa przedmiotowej przestrzeni nazw}}}} (ale ich nie trzeba podawać w dziecku, ale można) i w parametrach dziecka, jeśli chodzi o zmienną {{Code|numer jednostki}}, czyli np.: {{Code|{{m|Pudełko|Nazwa przedmiotowej przestrzeni nazw|numer jednostki{{=}}<jakaś liczba całkowita dodatnia>}}}}. Te parametry przestrzenne zamiast w rodzicu w szablonie można podać w ramce dziecka, wtedy parametry dziecka mają pierwszeństwo. Parametry przestrzenne mogą mogą być podane w postaci przestrzeni przedmiotowej lub dyskusji, ale ta funkcja zawsze ją zamienia na przedmiotową. Przestrzeń nazw z parametrów nazw przestrzennych może odpowiadać wartości przestrzeni głównej, to wtedy odpowiednia przestrzeń nazw z parametru nazwy jednostki się nie liczy w tej funkcji, aby się liczyła należy użyć funkcji {{Code|{{sr|#p["Nazwa przedmiotowej przestrzeni nazw 2"](frame,...)|p=Pudełko}}}}. Definicja skrótowa funkcji: <syntaxhighlight lang="lua"> p["Nazwa przedmiotowej przestrzeni nazw"]=function(frame,czy_uwzglednic_alternatywna_nazwe,i)...end; </syntaxhighlight> Wtedy ciało funkcji tej, czyli jego definicja w środku, jest: <syntaxhighlight lang="lua"> -- Jest liczony numer parametru nazwy przestrzeni nazw, domyslnie chodzi tu o numer bazowy parametrów przestrzennych; local numer_jednostki=i or frame.args["numer jednostki"]; local liczba_numer_jednostki=((numer_jednostki)and(tonumber(numer_jednostki))or 0); local pudelko_pomocne_modul=require("Module:Pudełko/Pomocne"); -- Liczy nazwę przestrzeni nazw przedmiotową na podstawie podanych parametrów; return pudelko_pomocne_modul.Nazwa_przestrzeni_nazw(frame,1, czy_uwzglednic_alternatywna_nazwe,liczba_numer_jednostki); </syntaxhighlight> Parametry funkcji: * {{Code|frame}} - tablica ramki tablicy transportu, * {{Code|czy_uwzglednic_alternatywna_nazwe}} - czy ma uwzględniać nazwę przestrzeni nazw domyślną szablonu, dostępne wartości: {{Code|false}}, w której nazwa domyślna nie jest uwzględniana wtedy, oraz {{Code|nil}} i {{Code|true}}, które oznaczają to samo, w tym jeżeli ona jest uwzględniana, wtedy jest brany parametr pierwszy dziecka, który musi istnieć przy takiej wartości tego parametru, tzn. {{Code|{{m|Pudełko|Nazwa przedmiotowej przestrzeni nazw|Dyskusja szablonu}}}} - ta nazwa domyślna zostanie zamieniona na przedmiotową, a jak ona by była przedmiotowa, to żadnej zamiany by nie było, a nazwa uzyskana z nazwy przestrzeni nazw z parametrów przestrzennych jest w takim przypadku błędna, to w takim razie brany jest ten parametr, a jeżeli ta nazwa domyślna jest błędna, czyli {{Code|{{m|Pudełko|Nazwa przedmiotowej przestrzeni nazw|Moja przestrzeń}}}}, wtedy funkcja zwraca stan błędu {{Code|(błąd)}}. * {{Code|i}} - numer zmiennej nazwy przestrzeni nazw. Funkcja wykorzystuje {{Code|{{sr|#p.Nazwa_przestrzeni_nazw(frame,...)|p=Pudełko/Pomocne}}}} do wyznaczania ogólnego nazwy przestrzeni nazw dla pozycji bazowej i numerkowej, tzn. dla pozycji: jeden, dwa, trzy,..., itd, i ich ogólnej. Parametr ramki tablicy transportu rodzica szablonu: * {{Code|nazwa przestrzeni nazw}}, {{Code|nazwa przestrzeni nazw 1}}, {{Code|nazwa przestrzeni nazw 2}}, {{Code|nazwa przestrzeni nazw 3}},..., {{Code|nazwa przestrzeni nazw i}} - nazwy przestrzeni nazw dla pozycji bazowej oraz zwykłej i ogólnej numerkowej, * {{Code|typ jednostki}}, {{Code|typ jednostki 1}}, {{Code|typ jednostki 2}}, {{Code|typ jednostki 3}},..., {{Code|typ jednostki i}} - typy jednostek, którym odpowiadają pewne przestrzenie przedmiotowe, dla pozycji bazowej, numerkowej i ogólnej. Parametry ramki tablicy transportu dziecka: * Parametry dziecka są takie same jak rodzica dla funkcji pudełkowej plus tu wymienione, * {{Code|numer jednostki}} - jak parametr {{Code|i}} nie został ustawiony, to wtedy liczy się ta zmienna. Przykłady: <syntaxhighlight lang="mediawiki"> {{Nazwa szablonu|nazwa przestrzeni nazw=Dyskusja Wikibooks|nazwa przestrzeni nazw 2=Dyskusja szablonu|nazwa przestrzeni nazw i=Dyskusja modułu}} </syntaxhighlight> W dziecku powiedzmy jest wywołanie, i szukamy nazwy przestrzeni nazw o numerze dwa, która nie została podana, ale istnieje za to jej wersji ogólna {{Code|nazwa przestrzeni nazw i}} i domyślna {{Code|nazwa przestrzeni nazw}}: <syntaxhighlight lang="mediawiki"> {{#invoke:Pudełko|Nazwa przedmiotowej przestrzeni nazw|numer jednostki=1}} </syntaxhighlight> Na podstawie powyższego przykładu otrzymamy wynik o schemacie, nie wyniku, bo tam nie ma zmiennej {{Code|nazwa przestrzeni nazw 1}}, ale jest {{Code|nazwa przestrzeni nazw i}}: <syntaxhighlight lang="mediawiki"> <!-- Ale nie "nazwa przestrzeni nazw", bo jej nie ma, ale za to istnieje "nazwa przestrzeni nazw i"; --> <!-- nazwa przestrzeni nazw 2=nazwa przestrzeni nazw i=Dyskusja modułu; --> <!-- Czyli wynik: --> Moduł <!-- Widzimy, że wygenerowała się nazwa przestrzeni nazw, którą jest przestrzeń przedmiotowa programowa przestrzeni dyskusji "Dyskusja modułu", którą również jest "Szablon" jego przestrzeni dyskusji "Dyskusja szablonu", a dla ich przestrzeni przedmiotowej, zamiast dyskusji, to samo przekształca się na to samo; --> </syntaxhighlight> Nie jest brana w tym powyższym przykładzie zmienna {{Code|nazwa przestrzeni nazw}}, bo jej nie ma, ale za to jest {{Code|nazwa przestrzeni nazw i}}, bo ona występuje jako parametr domyślny ogólny dla parametrów numerkowych. Przykłady w wikikodzie: * {{Code|{{m|Pudełko|Nazwa przedmiotowej przestrzeni nazw|numer jednostki{{=}}2}}}} → {{Tt|{{#invoke:Pudełko|Nazwa przedmiotowej przestrzeni nazw|numer jednostki=2}}}} * {{Code|{{m|Pudełko|Nazwa przedmiotowej przestrzeni nazw|Dyskusja szablonu|nazwa przestrzeni nazw i{{=}}Moja przestrzeń|numer jednostki{{=}}2}}}} → {{Tt|{{#invoke:Pudełko|Nazwa przedmiotowej przestrzeni nazw|Dyskusja szablonu|nazwa przestrzeni nazw i=Moja przestrzeń|numer jednostki=2}}}} * {{Code|{{m|Pudełko|Nazwa przedmiotowej przestrzeni nazw|nazwa przestrzeni nazw 2{{=}}Dyskusja szablonu|numer jednostki{{=}}2}}}} → {{Tt|{{#invoke:Pudełko|Nazwa przedmiotowej przestrzeni nazw|nazwa przestrzeni nazw 2=Dyskusja szablonu|numer jednostki=2}}}} * {{Code|{{m|Pudełko|Nazwa przedmiotowej przestrzeni nazw|nazwa przestrzeni nazw 2{{=}}Dyskusja szablonu|numer jednostki{{=}}2}}}} → {{Tt|{{#invoke:Pudełko|Nazwa przedmiotowej przestrzeni nazw|nazwa przestrzeni nazw i=Dyskusja szablonu|numer jednostki=2}}}} * {{Code|{{m|Pudełko|Nazwa przedmiotowej przestrzeni nazw|nazwa przestrzeni nazw{{=}}Dyskusja szablonu|numer jednostki{{=}}2}}}} → {{Tt|{{#invoke:Pudełko|Nazwa przedmiotowej przestrzeni nazw|nazwa przestrzeni nazw=Dyskusja szablonu|numer jednostki=2}}}} Powyżej dla przykładu podano parametry nie w rodzicu w szablonie, tylko w dziecku, jeśli chodzi o parametry nazw przestrzeni nazw, ale ich się za to nie powinno podawać w tych ramach, tylko w szablonach, w których wywoływane są te ramki pudełek {{Code|{{m|Pudełko}}}}, ale tak tutaj tak zrobiono by było najłatwiej sprawdzić działanie tego typu funkcji. Analogicznie możemy podawać parametry typu jednostki, np.: wywołaniu modułowym {{Code|{{m|Pudełko|Nazwa przedmiotowej przestrzeni nazw|typ jednostki 2{{=}}strona szablonu|numer jednostki{{=}}2}}}}, ale o tym więcej w rozdziałach {{Code|{{sr|# p["Przedmiotowy typ jednostki"](frame,i)|p=Pudełko}}}} w „{{sr|#Funkcje typu jednostki|p=Pudełko}}”, ale wtedy ta sama nazwa przestrzeni nazw reprezentowana przez {{Parametr|typ jednostki 2|strona szablonu}}, jest zamieniana na to samo, lepiej jest tutaj używać parametrów przestrzennych nazw niż typu jednostki, bo typ jednostki ma taką samą wartość dla przestrzeni przedmiotowej, co dyskusji. Tutaj parametr dyskusji typu jednostki bazowy i numerkowy ogólny, czy szczegółowy, nie gra roli, bo nawet, gdy wygenerujemy nazwę przestrzeni dyskusji za pomoca tego parametru, to i tak otrzymamy na samym końcu jego nazwę przedmiotową. Również parametry typu jednostki nie powinno się podawać w dziecku w ramce, tylko w rodzicu w szablonie jako parametry, w którym ta ramka jest wywoływana, ale tutaj podano jedynie dla przykładu, jak najłatwiej sprawdzić działanie tych parametrów tej funkcji. Najpierw w funkcji nagłówku brane są parametry nazw przestrzeni nazw, a jeżeli ich nie ma, to parametry typu jednostki, a jeżeli nie ma, to generowane są nazwy na podstawie aktualnego modułu. === {{Code|p["Nazwa przestrzeni nazw dyskusji"](frame,...)}} === Funkcja pisze nazwę przestrzeni nazw dyskusji jakikolwiek nazwy przestrzeni nazw (tzn. nazwę przedmiotową nazwy przestrzenie nazw, czyli nie dyskusji, zamieniana jest na dyskusji, czyli identyfikator przestrzeni się zmienia jeden wyżej, a dyskusji, nie przedmiotową, przekształca się na tą samą), według podanej w zmiennej {{Code|nazwa przestrzeni nazw}} dla pozycja bazowej w podanych parametrach szablonu rodzicu ramki dziecka, lub dla innej pozycji należy parametr podawać w formie {{Code|nazwa przestrzeni nazw 1}}, {{Code|nazwa przestrzeni nazw 2}}, {{Code|nazwa przestrzeni nazw 3}},..., lub te parametry można podać w postaci ogólnej {{Code|nazwa przestrzeni nazw i}}. Parametry podaje się w parametrach rodzica wywołania tej funkcji {{Code|{{m|Pudełko|Nazwa przestrzeni nazw dyskusji}}}} (ale ich nie trzeba podawać w dziecku, ale można) i w parametrach dziecka, jeśli chodzi o zmienną {{Code|numer jednostki}}, czyli np.: {{Code|{{m|Pudełko|Nazwa przestrzeni nazw dyskusji|numer jednostki{{=}}<jakaś liczba całkowita dodatnia>}}}}. Te parametry przestrzenne zamiast w rodzicu w szablonie można podać w ramce dziecka, wtedy parametry dziecka mają pierwszeństwo. Parametry przestrzenne mogą mogą być podane w postaci przestrzeni przedmiotowej lub dyskusji, ale ta funkcja zawsze ją zamienia na dyskusji. Przestrzeń nazw z parametrów nazw przestrzennych może odpowiadać wartości przestrzeni głównej, to wtedy odpowiednia przestrzeń nazw z parametru nazwy jednostki się nie liczy w tej funkcji, aby się liczyła należy użyć funkcji {{Code|{{sr|#p["Nazwa przestrzeni nazw dyskusji 2"](frame,...)|p=Pudełko}}}}. Definicja skrótowa funkcji: <syntaxhighlight lang="lua"> p["Nazwa przestrzeni nazw dyskusji"]=function(frame,czy_uwzglednic_alternatywna_nazwe,i)...end; </syntaxhighlight> Wtedy ciało funkcji tej, czyli jego definicja w środku, jest: <syntaxhighlight lang="lua"> -- Jest liczony numer parametru nazwy przestrzeni nazw, domyslnie chodzi tu o numer bazowy parametrów przestrzennych; local numer_jednostki=i or frame.args["numer jednostki"]; local liczba_numer_jednostki=((numer_jednostki)and(tonumber(numer_jednostki))or 0); local pudelko_pomocne_modul=require("Module:Pudełko/Pomocne"); -- Liczy nazwę przestrzeni nazw dyskusji na podstawie podanych parametrów; return pudelko_pomocne_modul.Nazwa_przestrzeni_nazw(frame,2, czy_uwzglednic_alternatywna_nazwe,liczba_numer_jednostki); </syntaxhighlight> Parametry funkcji: * {{Code|frame}} - tablica ramki tablicy transportu, * {{Code|czy_uwzglednic_alternatywna_nazwe}} - czy ma uwzględniać nazwę przestrzeni nazw domyślną szablonu, dostępne wartości: {{Code|false}}, w której nazwa domyślna nie jest uwzględniana wtedy, oraz {{Code|nil}} i {{Code|true}}, które oznaczają to samo, w tym jeżeli ona jest uwzględniana, wtedy jest brany parametr pierwszy dziecka, który musi istnieć przy takiej wartości tego parametru, tzn. {{Code|{{m|Pudełko|Nazwa przestrzeni nazw dyskusji|Szablon}}}} - ta nazwa domyślna zostanie przekształcona na dyskusji, a jeżeli ona by była dyskusji, to nie byłoby żadnego przekształcenia, a nazwa uzyskana nazwy przestrzeni nazw z parametrów przestrzennych jest w takim przypadku błędna, to w takim razie brany jest ten parametr, a jeżeli nazwa domyślna jest błędna, czyli {{Code|{{m|Pudełko|Nazwa przestrzeni nazw dyskusji|Moja przestrzeń}}}}, wtedy funkcja zwraca stan błędu {{Code|(błąd)}}. * {{Code|i}} - numer zmiennej nazwy przestrzeni nazw. Funkcja wykorzystuje {{Code|{{sr|#p.Nazwa_przestrzeni_nazw(frame,...)|p=Pudełko/Pomocne}}}} do wyznaczania ogólnego nazwy przestrzeni nazw dla pozycji bazowej i numerkowej, tzn. dla pozycji: jeden, dwa, trzy,..., itd, i ich ogólnej. Parametr ramki tablicy transportu rodzica szablonu: * {{Code|nazwa przestrzeni nazw}}, {{Code|nazwa przestrzeni nazw 1}}, {{Code|nazwa przestrzeni nazw 2}}, {{Code|nazwa przestrzeni nazw 3}},..., {{Code|nazwa przestrzeni nazw i}} - nazwy przestrzeni nazw dla pozycji bazowej oraz zwykłej i ogólnej numerkowej, * {{Code|typ jednostki}}, {{Code|typ jednostki 1}}, {{Code|typ jednostki 2}}, {{Code|typ jednostki 3}},..., {{Code|typ jednostki i}} - typy jednostek, którym odpowiadają pewne przestrzenie przedmiotowe, dla pozycji bazowej, numerkowej i ogólnej. Parametry ramki tablicy transportu dziecka: * Parametry dziecka są takie same jak rodzica dla funkcji pudełkowej plus tu wymienione, * {{Code|numer jednostki}} - jak parametr {{Code|i}} nie został ustawiony, to wtedy liczy się ta zmienna. Przykłady: <syntaxhighlight lang="mediawiki"> {{Nazwa szablonu|nazwa przestrzeni nazw=Wikibooks|nazwa przestrzeni nazw 2=Szablon|nazwa przestrzeni nazw i=Moduł}} </syntaxhighlight> W dziecku powiedzmy jest wywołanie, i szukamy nazwy przestrzeni nazw o numerze dwa, która nie została podana, ale istnieje za to jej wersji ogólna {{Code|nazwa przestrzeni nazw i}} i domyślna {{Code|nazwa przestrzeni nazw}}: <syntaxhighlight lang="mediawiki"> {{#invoke:Pudełko|Nazwa przestrzeni nazw dyskusji|numer jednostki=1}} </syntaxhighlight> Na podstawie powyższego przykładu otrzymamy wynik o schemacie, nie wyniku, bo tam nie ma zmiennej {{Code|nazwa przestrzeni nazw 1}}, ale jest {{Code|nazwa przestrzeni nazw i}}: <syntaxhighlight lang="mediawiki"> <!-- Ale nie "nazwa przestrzeni nazw", bo jej nie ma, ale za to istnieje "nazwa przestrzeni nazw i"; --> <!-- nazwa przestrzeni nazw 2=nazwa przestrzeni nazw i=Moduł; --> <!-- Czyli wynik: --> Dyskusja modułu <!-- Widzimy, że wygenerowała się nazwa przestrzeni nazw, którą jest przestrzeń dyskusji przestrzeni programowej przestrzeni przedmiotowej "Moduł", którą również jest "Szablon" jego przestrzeni dyskusji "Dyskusja szablonu", a dla ich przestrzeni przedmiotowej, zamiast dyskusji, to przekształca się na dyskusji jej odpowiadającą; --> </syntaxhighlight> Nie jest brana w tym powyższym przykładzie zmienna {{Code|nazwa przestrzeni nazw}}, bo jej nie ma, ale za to jest {{Code|nazwa przestrzeni nazw i}}, bo ona występuje jako parametr domyślny ogólny dla parametrów numerkowych. Przykłady w wikikodzie: * {{Code|{{m|Pudełko|Nazwa przestrzeni nazw dyskusji|numer jednostki{{=}}2}}}} → {{Tt|{{#invoke:Pudełko|Nazwa przestrzeni nazw dyskusji|numer jednostki=2}}}} * {{Code|{{m|Pudełko|Nazwa przestrzeni nazw dyskusji|Szablon|nazwa przestrzeni nazw i{{=}}Moja przestrzeń|numer jednostki{{=}}2}}}} → {{Tt|{{#invoke:Pudełko|Nazwa przestrzeni nazw dyskusji|Szablon|nazwa przestrzeni nazw i=Moja przestrzeń|numer jednostki=2}}}} * {{Code|{{m|Pudełko|Nazwa przestrzeni nazw dyskusji|nazwa przestrzeni nazw 2{{=}}Szablon|numer jednostki{{=}}2}}}} → {{Tt|{{#invoke:Pudełko|Nazwa przestrzeni nazw dyskusji|nazwa przestrzeni nazw 2=Szablon|numer jednostki=2}}}} * {{Code|{{m|Pudełko|Nazwa przestrzeni nazw dyskusji|nazwa przestrzeni nazw 2{{=}}Szablon|numer jednostki{{=}}2}}}} → {{Tt|{{#invoke:Pudełko|Nazwa przestrzeni nazw dyskusji|nazwa przestrzeni nazw i=Szablon|numer jednostki=2}}}} * {{Code|{{m|Pudełko|Nazwa przestrzeni nazw dyskusji|nazwa przestrzeni nazw{{=}}Szablon|numer jednostki{{=}}2}}}} → {{Tt|{{#invoke:Pudełko|Nazwa przestrzeni nazw dyskusji|nazwa przestrzeni nazw=Szablon|numer jednostki=2}}}} Powyżej dla przykładu podano parametry nie w rodzicu w szablonie, tylko w dziecku, jeśli chodzi o parametry nazw przestrzeni nazw, ale ich się za to nie powinno podawać w tych ramach, tylko w szablonach, w których wywoływane są te ramki pudełek {{Code|{{m|Pudełko}}}}, ale tak tutaj tak zrobiono by było najłatwiej sprawdzić działanie tego typu funkcji. Analogicznie możemy podawać parametry typu jednostki, np.: wywołaniu modułowym {{Code|{{m|Pudełko|Nazwa przestrzeni nazw dyskusji|typ jednostki 2{{=}}strona szablonu|numer jednostki{{=}}2}}}}, ale o tym więcej w rozdziałach {{Code|{{sr|# p["Dyskusyjny typ jednostki"](frame,i)|p=Pudełko}}}} w „{{sr|#Funkcje typu jednostki|p=Pudełko}}”, ale wtedy nazwa przestrzeni nazw reprezentowana przez {{Parametr|typ jednostki 2|strona szablonu}}, jest zamieniana na nazwę przestrzeni nazw dyskusji. Parametr dyskusji typu jednostki bazowy lub dla danego numerka ogólny, czy szczegółowy, nie gra roli. Również parametry typu jednostki nie powinno się podawać w dziecku w ramce, tylko w rodzicu w szablonie jako parametry, w którym ta ramka jest wywoływana, ale tutaj podano jedynie dla przykładu, jak najłatwiej sprawdzić działanie tych parametrów tej funkcji. Najpierw w funkcji nagłówku brane są parametry nazw przestrzeni nazw, a jeżeli ich nie ma, to parametry typu jednostki, a jeżeli nie ma, to generowane są nazwy na podstawie aktualnego modułu. == Funkcje nazw przestrzeni nazw drugiej wersji == === {{Code|p["Nazwa przestrzeni nazw 2"](frame,...)}} === Funkcja pisze nazwę przestrzeni nazw, niezależnie, czy to jest przedmiotowa, czy dyskusji, według, i nie zawsze tylko, podanej w zmiennej {{Code|nazwa przestrzeni nazw}} dla pozycja bazowej w podanych parametrach szablonu rodzicu ramki dziecka, lub dla innej pozycji należy parametr podawać w formie {{Code|nazwa przestrzeni nazw 1}}, {{Code|nazwa przestrzeni nazw 2}}, {{Code|nazwa przestrzeni nazw 3}},..., lub te parametry można podać w postaci ogólnej {{Code|nazwa przestrzeni nazw i}}. W tej funkcji trzeba też podawać parametry nazwy jednostek {{Code|nazwa jednostki}}, {{Code|nazwa jednostki 1}}, {{Code|nazwa jednostki 2}}, {{Code|nazwa jednostki 3}},... Parametry podaje się w parametrach rodzica wywołania tej funkcji {{Code|{{m|Pudełko|Nazwa przestrzeni nazw 2}}}} (ale ich nie trzeba podawać w dziecku, ale można) i w parametrach dziecka, jeśli chodzi o zmienną {{Code|numer jednostki}}, czyli np.: {{Code|{{m|Pudełko|Nazwa przestrzeni nazw 2|numer jednostki{{=}}<jakaś liczba całkowita dodatnia>}}}}. Te parametry przestrzenne zamiast w rodzicu w szablonie można podać w ramce dziecka, wtedy parametry dziecka mają pierwszeństwo. Przestrzeń nazw z parametrów nazw przestrzennych może odpowiadać wartości przestrzeni głównej, to wtedy odpowiednia przestrzeń nazw z parametru nazwy jednostki się liczy w tej funkcji, wtedy jest liczona nazwa przestrzeni nazw z tego parametru. Gdy parametry przestrzenne lub typ jednostki w drugim podejściu nie wskazują na przestrzeń główną, to wtedy działanie tej funkcji jest podobne do {{Code|{{sr|#p["Nazwa przestrzeni nazw"](frame,...)|p=Pudełko}}}}. Definicja skrótowa funkcji: <syntaxhighlight lang="lua"> p["Nazwa przestrzeni nazw 2"]=function(frame,czy_uwzglednic_alternatywna_nazwe,i)...end; </syntaxhighlight> Wtedy ciało funkcji tej, czyli jego definicja w środku, jest: <syntaxhighlight lang="lua"> local pudelko_pomocne_modul=require("Module:Pudełko/Pomocne"); -- Liczy nazwę przestrzeni nazw, jeżeli z parametrów przestrzennych przestrzeń wskazuje na główną, to wtedy jest liczona przestrzeń nazw z nazwy jednostki; return pudelko_pomocne_modul.Nazwa_przestrzeni_nazw_2(frame,czy_uwzglednic_alternatywna_nazwe,i) </syntaxhighlight> Parametry funkcji: * {{Code|frame}} - tablica ramki tablicy transportu, * {{Code|czy_uwzglednic_alternatywna_nazwe}} - czy ma uwzględniać nazwę przestrzeni nazw domyślną szablonu, dostępne wartości: {{Code|false}}, w której nazwa domyślna nie jest uwzględniana wtedy, oraz {{Code|nil}} i {{Code|true}}, które oznaczają to samo, w tym jeżeli ona jest uwzględniana, wtedy jest brany parametr pierwszy dziecka, który musi istnieć przy takiej wartości tego parametru, tzn. {{Code|{{m|Pudełko|Nazwa przestrzeni nazw 2|Szablon}}}}, a nazwa uzyskana nazwy przestrzeni nazw jest w takim przypadku błędna, a jeżeli nazwa domyślna jest błędna, czyli {{Code|{{m|Pudełko|Nazwa przestrzeni nazw 2|Moja przestrzeń}}}}, wtedy funkcja zwraca stan błędu {{Code|(błąd)}}. * {{Code|i}} - numer zmiennej nazwy przestrzeni nazw. Funkcja wykorzystuje {{Code|{{sr|#p.Nazwa_przestrzeni_nazw_2(frame,...)|p=Pudełko/Pomocne}}}} do wyznaczania ogólnego nazwy przestrzeni nazw dla pozycji bazowej i numerkowej, tzn. dla pozycji: jeden, dwa, trzy,..., itd, i ich ogólnej. Parametr ramki tablicy transportu rodzica szablonu: * {{Code|nazwa przestrzeni nazw}}, {{Code|nazwa przestrzeni nazw 1}}, {{Code|nazwa przestrzeni nazw 2}}, {{Code|nazwa przestrzeni nazw 3}},..., {{Code|nazwa przestrzeni nazw i}} - nazwy przestrzeni nazw dla pozycji bazowej oraz zwykłej i ogólnej numerkowej, * {{Code|nazwa jednostki}}, {{Code|nazwa jednostki 1}}, {{Code|nazwa jednostki 2}}, {{Code|nazwa jednostki 3}},... - nazwy jednostek dla pozycji bazowej i numerkowej, * {{Code|typ jednostki}}, {{Code|typ jednostki 1}}, {{Code|typ jednostki 2}}, {{Code|typ jednostki 3}},..., {{Code|typ jednostki i}} - typy jednostek, którym odpowiadają pewne przestrzenie przedmiotowe, dla pozycji bazowej, numerkowej i ogólnej, ** {{Code|dyskusja typu jednostki}}, {{Code|dyskusja typu jednostki 1}}, {{Code|dyskusja typ jednostki 2}}, {{Code|dyskusja typ jednostki 3}},..., {{Code|dyskusja typ jednostki i}} - czy dany typ jednostki ma przedstawiać, jeśli niepusta, przestrzeń dyskusji dla pozycji bazowej, numerkowej i ogólnej. Parametry ramki tablicy transportu dziecka: * Parametry dziecka są takie same jak rodzica dla funkcji pudełkowej plus tu wymienione, * {{Code|numer jednostki}} - jak parametr {{Code|i}} nie został ustawiony, to wtedy liczy się ta zmienna. Przykłady: <syntaxhighlight lang="mediawiki"> {{Nazwa szablonu|nazwa przestrzeni nazw=Wikibooks|nazwa przestrzeni nazw 1=Szablon|nazwa przestrzeni nazw i=|nazwa jednostki 2=Wikibooks:Strona}} </syntaxhighlight> W dziecku powiedzmy jest wywołanie, i szukamy nazwy przestrzeni nazw o numerze dwa, która została podana, ale istnieje za to jej wersji ogólna {{Code|nazwa przestrzeni nazw i}} i domyślna {{Code|nazwa przestrzeni nazw}}, ale wtedy dla tego numerkowego liczy się to ogólne z {{Code| i}}, a ponieważ ta nazwa jest pusta, więc będziemy liczyli nazwę przestrzeni nazw z {{Code|nazwa jednostki 2}}: <syntaxhighlight lang="mediawiki"> {{#invoke:Pudełko|Nazwa przestrzeni nazw 2|numer jednostki=2}} </syntaxhighlight> Na podstawie powyższego przykładu otrzymamy wynik o schemacie, nie wyniku, bo tam nie ma zmiennej {{Code|nazwa przestrzeni nazw 1}}, ale jest {{Code|nazwa przestrzeni nazw i}}: <syntaxhighlight lang="mediawiki"> <!-- Ale nie "nazwa przestrzeni nazw 2", bo jej nie ma, ale za to istnieje "nazwa przestrzeni nazw i"; --> <!-- nazwa przestrzeni nazw 2=nazwa przestrzeni nazw i="", a nazwa jednostki 2="Wikibooks:Strona"; --> <!-- Czyli wynik: --> Wikibooks <!-- Widzimy, że wygenerowała się nazwa przestrzeni nazw, którą jest przestrzeń nieprogramowa, ale projektu, wychodząca z nazwy jednostek w tym przypadku z "nazwa jednostki 2"; --> </syntaxhighlight> Nie jest brana w tym powyższym przykładzie zmienna {{Code|nazwa przestrzeni nazw}}, bo jej nie ma, ale za to jest {{Code|nazwa przestrzeni nazw i}}, bo ona występuje jako parametr domyślny ogólny dla parametrów numerkowych. Tytaj jest używana jest zmienna {{Code|nazwa jednostki 2}} do wygenerowania ostatecznego wyniku, bo jak można zauważyć, parametry przestrzenne wskazują na przestrzeń główną, a nazwy jednostek już nie. Przykłady w wikikodzie: * {{Code|{{m|Pudełko|Nazwa przestrzeni nazw 2|numer jednostki{{=}}2}}}} → {{Tt|{{#invoke:Pudełko|Nazwa przestrzeni nazw 2|numer jednostki=2}}}} * {{Code|{{m|Pudełko|Nazwa przestrzeni nazw 2|Szablon|nazwa przestrzeni nazw i{{=}}Moja przestrzeń|numer jednostki{{=}}2}}}} → {{Tt|{{#invoke:Pudełko|Nazwa przestrzeni nazw 2|Szablon|nazwa przestrzeni nazw i=Moja przestrzeń|numer jednostki=2}}}} * {{Code|{{m|Pudełko|Nazwa przestrzeni nazw 2|nazwa przestrzeni nazw 2{{=}}|nazwa jednostki 2{{=}}Szablon:Strona|numer jednostki{{=}}2}}}} → {{Tt|{{#invoke:Pudełko|Nazwa przestrzeni nazw 2|nazwa przestrzeni nazw 2=|nazwa jednostki 2=Szablon:Strona|numer jednostki=2}}}} * {{Code|{{m|Pudełko|Nazwa przestrzeni nazw 2|nazwa przestrzeni nazw i{{=}}|nazwa jednostki 2{{=}}Szablon:Strona|numer jednostki{{=}}2}}}} → {{Tt|{{#invoke:Pudełko|Nazwa przestrzeni nazw 2|nazwa przestrzeni nazw i=|nazwa jednostki 2=Szablon:Strona|numer jednostki=2}}}} * {{Code|{{m|Pudełko|Nazwa przestrzeni nazw 2|Szablon|nazwa przestrzeni nazw{{=}}|nazwa jednostki 2{{=}}Wikibooks:Strona|numer jednostki{{=}}2}}}} → {{Tt|{{#invoke:Pudełko|Nazwa przestrzeni nazw 2|Szablon|nazwa przestrzeni nazw=|nazwa jednostki 2=Wikibooks:Strona|numer jednostki=2}}}} Powyżej dla przykładu podano parametry nie w rodzicu w szablonie, tylko w dziecku, jeśli chodzi o parametry nazw przestrzeni nazw i nazw jednostek, ale ich się za to nie powinno podawać w tych ramach, tylko w szablonach, w których wywoływane są te ramki pudełek {{Code|{{m|Pudełko}}}}, ale tak tutaj tak zrobiono by było najłatwiej sprawdzić działanie tego typu funkcji. Analogicznie możemy podawać parametry typu jednostki, np.: wywołaniu modułowym {{Code|{{m|Pudełko|Nazwa przestrzeni nazw 2|typ jednostki 2{{=}}Podręcznik|nazwa jednostki 2{{=}}Szablon:Strona|numer jednostki{{=}}2}}}} (ale wtedy jest brana przestrzeń nazw z nazwy jednostki), ale o tym więcej w rozdziałach {{Code|{{sr|#p["Typ jednostki 2"](frame,i)|p=Pudełko}}}} w „{{sr|#Funkcje typu jednostki|p=Pudełko}}”, on definiuje przestrzenie przedmiotowe, ale można użyć parametru dyskusji typu jednostki z wartością niepustą, wtedy wyświetli się nazwa przestrzeni nazw dyskusji. Jeżeli typ jednostki wskazuje na przestrzeń nazw główną, wtedy się liczą parametry nazw jednostek. Również parametry typu jednostki nie powinno się podawać w dziecku w ramce, tylko w rodzicu w szablonie jako parametry, w którym ta ramka jest wywoływana, ale tutaj podano jedynie dla przykładu, jak najłatwiej sprawdzić działanie tych parametrów tej funkcji. Najpierw w funkcji nagłówku brane są parametry nazw przestrzeni nazw, a jeżeli ich nie ma, to parametry typu jednostki, a jeżeli nie ma lub parametry przestrzenne wskazują na przestrzeń główną, i nie ma nazwy jednostki, to generowane są nazwy tej funkcji na podstawie aktualnej strony. === {{Code|p["Nazwa przedmiotowej przestrzeni nazw 2"](frame,...)}} === Funkcja pisze przedmiotową nazwę przestrzeni nazw jakikolwiek nazwy przestrzeni nazw (tzn. nazwę przedmiotową nazwy przestrzenie nazw, czyli nie dyskusji, zamieniana jest na nią samą, czyli identyfikator przestrzeni się nie zmienia, a dyskusji, nie przedmiotową, przekształca się na przedmiotową jej odpowiadającą, czyli w tym przypadku identyfikator przestrzeni zmniejsza się o numer mniej), według, i nie zawsze tylko, podanej w zmiennej {{Code|nazwa przestrzeni nazw}} dla pozycja bazowej w podanych parametrach szablonu rodzicu ramki dziecka, lub dla innej pozycji należy parametr podawać w formie {{Code|nazwa przestrzeni nazw 1}}, {{Code|nazwa przestrzeni nazw 2}}, {{Code|nazwa przestrzeni nazw 3}},..., lub te parametry można podać w postaci ogólnej {{Code|nazwa przestrzeni nazw i}}. W tej funkcji trzeba też podawać parametry nazwy jednostek {{Code|nazwa jednostki}}, {{Code|nazwa jednostki 1}}, {{Code|nazwa jednostki 2}}, {{Code|nazwa jednostki 3}},... Parametry podaje się w parametrach rodzica wywołania tej funkcji {{Code|{{m|Pudełko|Nazwa przedmiotowej przestrzeni nazw 2}}}} (ale ich nie trzeba podawać w dziecku, ale można) i w parametrach dziecka, jeśli chodzi o zmienną {{Code|numer jednostki}}, czyli np.: {{Code|{{m|Pudełko|Nazwa przedmiotowej przestrzeni nazw 2|numer jednostki{{=}}<jakaś liczba całkowita dodatnia>}}}}. Te parametry przestrzenne zamiast w rodzicu w szablonie można podać w ramce dziecka, wtedy parametry dziecka mają pierwszeństwo. Przestrzeń nazw z parametrów nazw przestrzennych po przekształceniu na przedmiotową może odpowiadać wartości przestrzeni głównej, to wtedy odpowiednia przestrzeń nazw z parametru nazwy jednostki się liczy w tej funkcji, wtedy jest liczona nazwa przestrzeni nazw z tego parametru. Gdy parametry przestrzenne lub typ jednostki w drugim podejściu nie wskazują na przestrzeń główną, to wtedy działanie tej funkcji jest podobne do {{Code|{{sr|#p["Nazwa przedmiotowej przestrzeni nazw"](frame,...)|p=Pudełko}}}}. Definicja skrótowa funkcji: <syntaxhighlight lang="lua"> p["Nazwa przedmiotowej przestrzeni nazw 2"]=function(frame,czy_uwzglednic_alternatywna_nazwe,i)...end; </syntaxhighlight> Wtedy ciało funkcji tej, czyli jego definicja w środku, jest: <syntaxhighlight lang="lua"> local pudelko_pomocne_modul=require("Module:Pudełko/Pomocne"); return pudelko_pomocne_modul.Nazwa_przestrzeni_nazw_przedmiotowa_dyskusji_2(frame,czy_uwzglednic_alternatywna_nazwe,i,"przedmiotowa"); </syntaxhighlight> Parametry funkcji: * {{Code|frame}} - tablica ramki tablicy transportu, * {{Code|czy_uwzglednic_alternatywna_nazwe}} - czy ma uwzględniać nazwę przestrzeni nazw domyślną szablonu, dostępne wartości: {{Code|false}}, w której nazwa domyślna nie jest uwzględniana wtedy, oraz {{Code|nil}} i {{Code|true}}, które oznaczają to samo, w tym jeżeli ona jest uwzględniana, wtedy jest brany parametr pierwszy dziecka, który musi istnieć przy takiej wartości tego parametru, tzn. {{Code|{{m|Pudełko|Nazwa przedmiotowej przestrzeni nazw 2|Szablon}}}}, a nazwa uzyskana nazwy przestrzeni nazw jest w takim przypadku błędna, a jeżeli nazwa domyślna jest błędna, czyli {{Code|{{m|Pudełko|Nazwa przedmiotowej przestrzeni nazw 2|Moja przestrzeń}}}}, wtedy funkcja zwraca stan błędu {{Code|(błąd)}}. * {{Code|i}} - numer zmiennej nazwy przestrzeni nazw. Funkcja wykorzystuje {{Code|{{sr|#p.Nazwa_przestrzeni_nazw_przedmiotowa_dyskusji_2(frame,...)|p=Pudełko/Pomocne}}}} do wyznaczania ogólnego nazwy przestrzeni nazw dla pozycji bazowej i numerkowej, tzn. dla pozycji: jeden, dwa, trzy,..., itd, i ich ogólnej. Parametr ramki tablicy transportu rodzica szablonu: * {{Code|nazwa przestrzeni nazw}}, {{Code|nazwa przestrzeni nazw 1}}, {{Code|nazwa przestrzeni nazw 2}}, {{Code|nazwa przestrzeni nazw 3}},..., {{Code|nazwa przestrzeni nazw i}} - nazwy przestrzeni nazw dla pozycji bazowej oraz zwykłej i ogólnej numerkowej, * {{Code|nazwa jednostki}}, {{Code|nazwa jednostki 1}}, {{Code|nazwa jednostki 2}}, {{Code|nazwa jednostki 3}},... - nazwy jednostek dla pozycji bazowej i numerkowej, * {{Code|typ jednostki}}, {{Code|typ jednostki 1}}, {{Code|typ jednostki 2}}, {{Code|typ jednostki 3}},..., {{Code|typ jednostki i}} - typy jednostek, którym odpowiadają pewne przestrzenie przedmiotowe, dla pozycji bazowej, numerkowej i ogólnej. Parametry ramki tablicy transportu dziecka: * Parametry dziecka są takie same jak rodzica dla funkcji pudełkowej plus tu wymienione, * {{Code|numer jednostki}} - jak parametr {{Code|i}} nie został ustawiony, to wtedy liczy się ta zmienna. Przykłady: <syntaxhighlight lang="mediawiki"> {{Nazwa szablonu|nazwa przestrzeni nazw=Wikibooks|nazwa przestrzeni nazw 1=Szablon|nazwa przestrzeni nazw i=|nazwa jednostki 2=Dyskusja Wikibooks:Strona}} </syntaxhighlight> W dziecku powiedzmy jest wywołanie, i szukamy nazwy przestrzeni nazw o numerze dwa, która została podana, ale istnieje za to jej wersji ogólna {{Code|nazwa przestrzeni nazw i}} i domyślna {{Code|nazwa przestrzeni nazw}}, ale wtedy dla tego numerkowego liczy się to ogólne z {{Code| i}}, a ponieważ ta nazwa jest pusta, więc będziemy liczyli nazwę przestrzeni nazw z {{Code|nazwa jednostki 2}}: <syntaxhighlight lang="mediawiki"> {{#invoke:Pudełko|Nazwa przedmiotowej przestrzeni nazw 2|numer jednostki=2}} </syntaxhighlight> Na podstawie powyższego przykładu otrzymamy wynik o schemacie, nie wyniku, bo tam nie ma zmiennej {{Code|nazwa przestrzeni nazw 1}}, ale jest {{Code|nazwa przestrzeni nazw i}}: <syntaxhighlight lang="mediawiki"> <!-- Ale nie "nazwa przestrzeni nazw 2", bo jej nie ma, ale za to istnieje "nazwa przestrzeni nazw i"; --> <!-- nazwa przestrzeni nazw 2=nazwa przestrzeni nazw i="", a nazwa jednostki 2="Dyskusja Wikibooks:Strona"; --> <!-- Czyli wynik: --> Wikibooks <!-- Widzimy, że wygenerowała się nazwa przestrzeni nazw, którą jest przestrzeń nieprogramowa, ale projektu, wychodząca z nazwy jednostek w tym przypadku z "nazwa jednostki 2"; --> </syntaxhighlight> Nie jest brana w tym powyższym przykładzie zmienna {{Code|nazwa przestrzeni nazw}}, bo jej nie ma, ale za to jest {{Code|nazwa przestrzeni nazw i}}, bo ona występuje jako parametr domyślny ogólny dla parametrów numerkowych. Tytaj jest używana jest zmienna {{Code|nazwa jednostki 2}} do wygenerowania ostatecznego wyniku, bo jak można zauważyć, parametry przestrzenne wskazują na przestrzeń główną, a nazwy jednostek już nie. Przykłady w wikikodzie: * {{Code|{{m|Pudełko|Nazwa przedmiotowej przestrzeni nazw 2|numer jednostki{{=}}2}}}} → {{Tt|{{#invoke:Pudełko|Nazwa przedmiotowej przestrzeni nazw 2|numer jednostki=2}}}} * {{Code|{{m|Pudełko|Nazwa przedmiotowej przestrzeni nazw 2|Dyskusja szablonu|nazwa przestrzeni nazw i{{=}}Moja przestrzeń|numer jednostki{{=}}2}}}} → {{Tt|{{#invoke:Pudełko|Nazwa przedmiotowej przestrzeni nazw 2|Dyskusja szablonu|nazwa przestrzeni nazw i=Moja przestrzeń|numer jednostki=2}}}} * {{Code|{{m|Pudełko|Nazwa przedmiotowej przestrzeni nazw 2|nazwa przestrzeni nazw 2{{=}}Dyskusja|nazwa jednostki 2{{=}}Dyskusja szablonu:Strona|numer jednostki{{=}}2}}}} → {{Tt|{{#invoke:Pudełko|Nazwa przedmiotowej przestrzeni nazw 2|nazwa przestrzeni nazw 2=Dyskusja|nazwa jednostki 2=Dyskusja szablonu:Strona|numer jednostki=2}}}} * {{Code|{{m|Pudełko|Nazwa przedmiotowej przestrzeni nazw 2|nazwa przestrzeni nazw i{{=}}Dyskusja|nazwa jednostki 2{{=}}Dyskusja szablonu:Strona|numer jednostki{{=}}2}}}} → {{Tt|{{#invoke:Pudełko|Nazwa przedmiotowej przestrzeni nazw 2|nazwa przestrzeni nazw i=Dyskusja|nazwa jednostki 2=Dyskusja szablonu:Strona|numer jednostki=2}}}} * {{Code|{{m|Pudełko|Nazwa przedmiotowej przestrzeni nazw 2|Dyskusja szablonu|nazwa przestrzeni nazw{{=}}Dyskusja|nazwa jednostki 2{{=}}Wikibooks:Strona|numer jednostki{{=}}2}}}} → {{Tt|{{#invoke:Pudełko|Nazwa przedmiotowej przestrzeni nazw 2|Dyskusja szablonu|nazwa przestrzeni nazw=Dyskusja|nazwa jednostki 2=Dyskusja Wikibooks:Strona|numer jednostki=2}}}} Powyżej dla przykładu podano parametry nie w rodzicu w szablonie, tylko w dziecku, jeśli chodzi o parametry nazw przestrzeni nazw i nazw jednostek, ale ich się za to nie powinno podawać w tych ramach, tylko w szablonach, w których wywoływane są te ramki pudełek {{Code|{{m|Pudełko}}}}, ale tak tutaj tak zrobiono by było najłatwiej sprawdzić działanie tego typu funkcji. Analogicznie możemy podawać parametry typu jednostki, np.: wywołaniu modułowym {{Code|{{m|Pudełko|Nazwa przedmiotowej przestrzeni nazw 2|typ jednostki 2{{=}}Podręcznik|nazwa jednostki 2{{=}}Dyskusja szablonu:Strona|numer jednostki{{=}}2}}}} (ale wtedy jest brana przestrzeń nazw z nazwy jednostki), ale o tym więcej w rozdziałach {{Code|{{sr|# p["Przedmiotowy typ jednostki 2"](frame,i)|p=Pudełko}}}} w „{{sr|#Funkcje typu jednostki|p=Pudełko}}”, on definiuje przestrzenie przedmiotowe, ale można użyć parametru dyskusji typu jednostki z wartością niepustą, pustą, czy nawet jej nie podamy, wtedy wyświetli się nazwa przestrzeni nazw przedmiotowej. Jeżeli typ jednostki wskazuje na przestrzeń nazw główną, wtedy się liczą parametry nazw jednostek. Również parametry typu jednostki nie powinno się podawać w dziecku w ramce, tylko w rodzicu w szablonie jako parametry, w którym ta ramka jest wywoływana, ale tutaj podano jedynie dla przykładu, jak najłatwiej sprawdzić działanie tych parametrów tej funkcji. Najpierw w funkcji nagłówku brane są parametry nazw przestrzeni nazw, a jeżeli ich nie ma, to parametry typu jednostki, a jeżeli nie ma lub parametry przestrzenne wskazują na przestrzeń główną, i nie ma nazwy jednostki, to generowane są nazwy tej funkcji na podstawie aktualnej strony. === {{Code|p["Nazwa przestrzeni nazw dyskusji 2"](frame,...)}} === Funkcja pisze nazwę przestrzeni nazw dyskusji jakikolwiek nazwy przestrzeni nazw (tzn. nazwę dyskusji nazwy przestrzenie nazw, czyli nie przedmiotowej, zamieniana jest na nią samą, czyli identyfikator przestrzeni się nie zmienia, a przedmiotową, nie dyskusji, przekształca się na dyskusji jej odpowiadającą, czyli w tym przypadku identyfikator przestrzeni zwiększa się o numer więcej), według, i nie zawsze tylko, podanej w zmiennej {{Code|nazwa przestrzeni nazw}} dla pozycja bazowej w podanych parametrach szablonu rodzicu ramki dziecka, lub dla innej pozycji należy parametr podawać w formie {{Code|nazwa przestrzeni nazw 1}}, {{Code|nazwa przestrzeni nazw 2}}, {{Code|nazwa przestrzeni nazw 3}},..., lub te parametry można podać w postaci ogólnej {{Code|nazwa przestrzeni nazw i}}. W tej funkcji trzeba też podawać parametry nazwy jednostek {{Code|nazwa jednostki}}, {{Code|nazwa jednostki 1}}, {{Code|nazwa jednostki 2}}, {{Code|nazwa jednostki 3}},... Parametry podaje się w parametrach rodzica wywołania tej funkcji {{Code|{{m|Pudełko|Nazwa przestrzeni nazw dyskusji 2}}}} (ale ich nie trzeba podawać w dziecku, ale można) i w parametrach dziecka, jeśli chodzi o zmienną {{Code|numer jednostki}}, czyli np.: {{Code|{{m|Pudełko|Nazwa przestrzeni nazw dyskusji 2|numer jednostki{{=}}<jakaś liczba całkowita dodatnia>}}}}. Te parametry przestrzenne zamiast w rodzicu w szablonie można podać w ramce dziecka, wtedy parametry dziecka mają pierwszeństwo. Przestrzeń nazw z parametrów nazw przestrzennych po przekształceniu na przedmiotową może odpowiadać wartości przestrzeni głównej, to wtedy odpowiednia przestrzeń nazw z parametru nazwy jednostki się liczy w tej funkcji, wtedy jest liczona nazwa przestrzeni nazw z tego parametru. Gdy parametry przestrzenne lub typ jednostki w drugim podejściu nie wskazują na przestrzeń główną, to wtedy działanie tej funkcji jest podobne do {{Code|{{sr|#p["Nazwa dyskusji przestrzeni nazw"](frame,...)|p=Pudełko}}}}. Definicja skrótowa funkcji: <syntaxhighlight lang="lua"> p["Nazwa przestrzeni nazw dyskusji 2"]=function(frame,czy_uwzglednic_alternatywna_nazwe,i)...end; </syntaxhighlight> Wtedy ciało funkcji tej, czyli jego definicja w środku, jest: <syntaxhighlight lang="lua"> local pudelko_pomocne_modul=require("Module:Pudełko/Pomocne"); return pudelko_pomocne_modul.Nazwa_przestrzeni_nazw_przedmiotowa_dyskusji_2(frame,czy_uwzglednic_alternatywna_nazwe,i,"dyskusja"); </syntaxhighlight> Parametry funkcji: * {{Code|frame}} - tablica ramki tablicy transportu, * {{Code|czy_uwzglednic_alternatywna_nazwe}} - czy ma uwzględniać nazwę przestrzeni nazw domyślną szablonu, dostępne wartości: {{Code|false}}, w której nazwa domyślna nie jest uwzględniana wtedy, oraz {{Code|nil}} i {{Code|true}}, które oznaczają to samo, w tym jeżeli ona jest uwzględniana, wtedy jest brany parametr pierwszy dziecka, który musi istnieć przy takiej wartości tego parametru, tzn. {{Code|{{m|Pudełko|Nazwa przestrzeni nazw dyskusji 2|Szablon}}}}, a nazwa uzyskana nazwy przestrzeni nazw jest w takim przypadku błędna, a jeżeli nazwa domyślna jest błędna, czyli {{Code|{{m|Pudełko|Nazwa przestrzeni nazw dyskusji 2|Moja przestrzeń}}}}, wtedy funkcja zwraca stan błędu {{Code|(błąd)}}. * {{Code|i}} - numer zmiennej nazwy przestrzeni nazw. Funkcja wykorzystuje {{Code|{{sr|#p.Nazwa_przestrzeni_nazw_przedmiotowa_dyskusji_2(frame,...)|p=Pudełko/Pomocne}}}} do wyznaczania ogólnego nazwy przestrzeni nazw dla pozycji bazowej i numerkowej, tzn. dla pozycji: jeden, dwa, trzy,..., itd, i ich ogólnej. Parametr ramki tablicy transportu rodzica szablonu: * {{Code|nazwa przestrzeni nazw}}, {{Code|nazwa przestrzeni nazw 1}}, {{Code|nazwa przestrzeni nazw 2}}, {{Code|nazwa przestrzeni nazw 3}},..., {{Code|nazwa przestrzeni nazw i}} - nazwy przestrzeni nazw dla pozycji bazowej oraz zwykłej i ogólnej numerkowej, * {{Code|nazwa jednostki}}, {{Code|nazwa jednostki 1}}, {{Code|nazwa jednostki 2}}, {{Code|nazwa jednostki 3}},... - nazwy jednostek dla pozycji bazowej i numerkowej, * {{Code|typ jednostki}}, {{Code|typ jednostki 1}}, {{Code|typ jednostki 2}}, {{Code|typ jednostki 3}},..., {{Code|typ jednostki i}} - typy jednostek, którym odpowiadają pewne przestrzenie przedmiotowe, dla pozycji bazowej, numerkowej i ogólnej. Parametry ramki tablicy transportu dziecka: * Parametry dziecka są takie same jak rodzica dla funkcji pudełkowej plus tu wymienione, * {{Code|numer jednostki}} - jak parametr {{Code|i}} nie został ustawiony, to wtedy liczy się ta zmienna. Przykłady: <syntaxhighlight lang="mediawiki"> {{Nazwa szablonu|nazwa przestrzeni nazw=Wikibooks|nazwa przestrzeni nazw 1=Szablon|nazwa przestrzeni nazw i=|nazwa jednostki 2=Wikibooks:Strona}} </syntaxhighlight> W dziecku powiedzmy jest wywołanie, i szukamy nazwy przestrzeni nazw o numerze dwa, która została podana, ale istnieje za to jej wersji ogólna {{Code|nazwa przestrzeni nazw i}} i domyślna {{Code|nazwa przestrzeni nazw}}, ale wtedy dla tego numerkowego liczy się to ogólne z {{Code| i}}, a ponieważ ta nazwa jest pusta, więc będziemy liczyli nazwę przestrzeni nazw z {{Code|nazwa jednostki 2}}: <syntaxhighlight lang="mediawiki"> {{#invoke:Pudełko|Nazwa przestrzeni nazw dyskusji 2|numer jednostki=2}} </syntaxhighlight> Na podstawie powyższego przykładu otrzymamy wynik o schemacie, nie wyniku, bo tam nie ma zmiennej {{Code|nazwa przestrzeni nazw 1}}, ale jest {{Code|nazwa przestrzeni nazw i}}: <syntaxhighlight lang="mediawiki"> <!-- Ale nie "nazwa przestrzeni nazw 2", bo jej nie ma, ale za to istnieje "nazwa przestrzeni nazw i"; --> <!-- nazwa przestrzeni nazw 2=nazwa przestrzeni nazw i="", a nazwa jednostki 2="Wikibooks:Strona"; --> <!-- Czyli wynik: --> Dyskusja Wikibooks <!-- Widzimy, że wygenerowała się nazwa przestrzeni nazw, którą jest przestrzeń nieprogramowa, ale dyskusji projektu, wychodząca z nazwy jednostek w tym przypadku z "nazwa jednostki 2"; --> </syntaxhighlight> Nie jest brana w tym powyższym przykładzie zmienna {{Code|nazwa przestrzeni nazw}}, bo jej nie ma, ale za to jest {{Code|nazwa przestrzeni nazw i}}, bo ona występuje jako parametr domyślny ogólny dla parametrów numerkowych. Tytaj jest używana jest zmienna {{Code|nazwa jednostki 2}} do wygenerowania ostatecznego wyniku, bo jak można zauważyć, parametry przestrzenne wskazują na przestrzeń główną, a nazwy jednostek już nie. Przykłady w wikikodzie: * {{Code|{{m|Pudełko|Nazwa przestrzeni nazw dyskusji 2|numer jednostki{{=}}2}}}} → {{Tt|{{#invoke:Pudełko|Nazwa przestrzeni nazw dyskusji 2|numer jednostki=2}}}} * {{Code|{{m|Pudełko|Nazwa przestrzeni nazw dyskusji 2|Szablon|nazwa przestrzeni nazw i{{=}}Moja przestrzeń|numer jednostki{{=}}2}}}} → {{Tt|{{#invoke:Pudełko|Nazwa przestrzeni nazw dyskusji 2|Szablon|nazwa przestrzeni nazw i=Moja przestrzeń|numer jednostki=2}}}} * {{Code|{{m|Pudełko|Nazwa przestrzeni nazw dyskusji 2|nazwa przestrzeni nazw 2{{=}}|nazwa jednostki 2{{=}}Szablon:Strona|numer jednostki{{=}}2}}}} → {{Tt|{{#invoke:Pudełko|Nazwa przestrzeni nazw dyskusji 2|nazwa przestrzeni nazw 2=|nazwa jednostki 2=Szablon:Strona|numer jednostki=2}}}} * {{Code|{{m|Pudełko|Nazwa przestrzeni nazw dyskusji 2|nazwa przestrzeni nazw i{{=}}|nazwa jednostki 2{{=}}Szablon:Strona|numer jednostki{{=}}2}}}} → {{Tt|{{#invoke:Pudełko|Nazwa przestrzeni nazw dyskusji 2|nazwa przestrzeni nazw i=|nazwa jednostki 2=Szablon:Strona|numer jednostki=2}}}} * {{Code|{{m|Pudełko|Nazwa przestrzeni nazw dyskusji 2|Szablon|nazwa przestrzeni nazw{{=}}|nazwa jednostki 2{{=}}Wikibooks:Strona|numer jednostki{{=}}2}}}} → {{Tt|{{#invoke:Pudełko|Nazwa przestrzeni nazw dyskusji 2|Szablon|nazwa przestrzeni nazw=|nazwa jednostki 2=Dyskusja Wikibooks:Strona|numer jednostki=2}}}} Powyżej dla przykładu podano parametry nie w rodzicu w szablonie, tylko w dziecku, jeśli chodzi o parametry nazw przestrzeni nazw i nazw jednostek, ale ich się za to nie powinno podawać w tych ramach, tylko w szablonach, w których wywoływane są te ramki pudełek {{Code|{{m|Pudełko}}}}, ale tak tutaj tak zrobiono by było najłatwiej sprawdzić działanie tego typu funkcji. Analogicznie możemy podawać parametry typu jednostki, np.: wywołaniu modułowym {{Code|{{m|Pudełko|Nazwa przestrzeni nazw dyskusji 2|typ jednostki 2{{=}}Podręcznik|nazwa jednostki 2{{=}}Szablon:Strona|numer jednostki{{=}}2}}}} (ale wtedy jest brana przestrzeń nazw z nazwy jednostki), ale o tym więcej w rozdziałach {{Code|{{sr|# p["Dyskusyjny typ jednostki 2"](frame,i)|p=Pudełko}}}} w „{{sr|#Funkcje typu jednostki|p=Pudełko}}”, on definiuje przestrzenie dyskusji, ale można użyć parametru dyskusji typu jednostki z obojętnie jaką wartością niepustą, czy pustą, czy nawet jej nie podamy, wtedy wyświetli się nazwa przestrzeni nazw dyskusji. Jeżeli typ jednostki wskazuje na przestrzeń nazw główną, wtedy się liczą parametry nazw jednostek. Również parametry typu jednostki nie powinno się podawać w dziecku w ramce, tylko w rodzicu w szablonie jako parametry, w którym ta ramka jest wywoływana, ale tutaj podano jedynie dla przykładu, jak najłatwiej sprawdzić działanie tych parametrów tej funkcji. Najpierw w funkcji nagłówku brane są parametry nazw przestrzeni nazw, a jeżeli ich nie ma, to parametry typu jednostki, a jeżeli nie ma lub parametry przestrzenne wskazują na przestrzeń główną, i nie ma nazwy jednostki, to generowane są nazwy tej funkcji na podstawie aktualnej strony. == Funkcje pełnych nazw jednostki == === {{Code|p["Pełna nazwa dyskusji jednostki"](frame,i)}} === === {{Code|p["Pełna nazwa przedmiotowa jednostki"](frame,i)}} === === {{Code|p["Pełna nazwa jednostki"](frame,i)}} === == Funkcje pełnych nazw jednostki drugiej wersji == === {{Code|p["Pełna nazwa dyskusji jednostki 2"](frame,i)}} === === {{Code|p["Pełna nazwa przedmiotowa jednostki 2"](frame,i)}} === === {{Code|p["Pełna nazwa jednostki 2"](frame,i)}} === == Funkcje pełnych nazw jednostki trzeciej wersji == === {{Code|p["Pełna nazwa dyskusji jednostki 3"](frame,i)}} === === {{Code|p["Pełna nazwa przedmiotowa jednostki 3"](frame,i)}} === === {{Code|p["Pełna nazwa jednostki 3"](frame,i)}} === == Funkcje nazw jednostki == === {{Code|p["Nazwa jednostki"](frame,i)}} === == Funkcje nazw jednostki drugiej wersji == === {{Code|p["Nazwa jednostki 2"](frame,i)}} === === {{Code|p["Nazwa przedmiotowa jednostki 2"](frame,i)}} === === {{Code|p["Nazwa dyskusji jednostki 2"](frame,i)}} === == Funkcje nazw przestrzeni nazw trzeciej wersji == === {{Code|p["Nazwa przestrzeni nazw 3"](frame,i)}} === Funkcja pisze nazwę przestrzeni nazw, niezależnie, czy to jest przedmiotowa, czy dyskusji, według, i nie zawsze tylko, podanej w zmiennej {{Code|nazwa przestrzeni nazw}} dla pozycja bazowej w podanych parametrach szablonu rodzicu ramki dziecka, lub dla innej pozycji należy parametr podawać w formie {{Code|nazwa przestrzeni nazw 1}}, {{Code|Nazwa przestrzeni nazw 3}}, {{Code|nazwa przestrzeni nazw 3}},..., lub te parametry można podać w postaci ogólnej {{Code|nazwa przestrzeni nazw i}}. W tej funkcji trzeba też podawać parametry nazwy jednostek {{Code|nazwa jednostki}}, {{Code|nazwa jednostki 1}}, {{Code|nazwa jednostki 2}}, {{Code|nazwa jednostki 3}},... Parametry podaje się w parametrach rodzica wywołania tej funkcji {{Code|{{m|Pudełko|Nazwa przestrzeni nazw 3}}}} (ale ich nie trzeba podawać w dziecku, ale można) i w parametrach dziecka, jeśli chodzi o zmienną {{Code|numer jednostki}}, czyli np.: {{Code|{{m|Pudełko|Nazwa przestrzeni nazw 3|numer jednostki{{=}}<jakaś liczba całkowita dodatnia>}}}}. Te parametry przestrzenne zamiast w rodzicu w szablonie można podać w ramce dziecka, wtedy parametry dziecka mają pierwszeństwo. Przestrzeń nazw z parametrów nazw przestrzennych bazowych (bez numerka) może odpowiadać wartości przestrzeni głównej, to wtedy odpowiednia przestrzeń nazw z parametru nazwy jednostki się nie liczy w tej funkcji, aby się liczyła należy użyć funkcji {{Code|{{sr|#p["Nazwa przestrzeni nazw 2"](frame,...)|p=Pudełko}}}}. Przestrzeń nazw z parametrów nazw przestrzennych numerkowych może odpowiadać wartości przestrzeni głównej, to wtedy odpowiednia przestrzeń nazw z parametru nazwy jednostki się liczy w tej funkcji, wtedy jest liczona nazwa przestrzeni nazw z tego parametru. Gdy parametry przestrzenne lub typ jednostki w drugim podejściu nie wskazują na przestrzeń główną, to wtedy działanie tej funkcji jest podobne do {{Code|{{sr|#p["Nazwa przestrzeni nazw"](frame,...)|p=Pudełko}}}}. Definicja skrótowa funkcji: <syntaxhighlight lang="lua"> p["Nazwa przestrzeni nazw 3"]=function(frame,czy_uwzglednic_alternatywna_nazwe,i)...end; </syntaxhighlight> Wtedy ciało funkcji tej, czyli jego definicja w środku, jest: <syntaxhighlight lang="lua"> -- Jest liczony numer parametru nazwy przestrzeni nazw, domyslnie chodzi tu o numer bazowy parametrów przestrzennych; local numer_jednostki=i or frame.args["numer jednostki"]; local liczba_numeru_jednostki=((numer_jednostki)and(tonumber(numer_jednostki)) or 0); local pudelko_pomocne_modul=require("Module:Pudełko/Pomocne"); -- Liczy nazwę przestrzeni nazw dyskusji na podstawie podanych parametrów; return pudelko_pomocne_modul.Uzyskanie_nazw_jednostki(frame,0,liczba_numeru_jednostki,nil,2); </syntaxhighlight> Parametry funkcji: * {{Code|frame}} - tablica ramki tablicy transportu, * {{Code|czy_uwzglednic_alternatywna_nazwe}} - czy ma uwzględniać nazwę przestrzeni nazw domyślną szablonu, dostępne wartości: {{Code|false}}, w której nazwa domyślna nie jest uwzględniana wtedy, oraz {{Code|nil}} i {{Code|true}}, które oznaczają to samo, w tym jeżeli ona jest uwzględniana, wtedy jest brany parametr pierwszy dziecka, który musi istnieć przy takiej wartości tego parametru, tzn. {{Code|{{m|Pudełko|Nazwa przestrzeni nazw 3|Szablon}}}}, a nazwa uzyskana nazwy przestrzeni nazw jest w takim przypadku błędna, a jeżeli nazwa domyślna jest błędna, czyli {{Code|{{m|Pudełko|Nazwa przestrzeni nazw 3|Moja przestrzeń}}}}, wtedy funkcja zwraca stan błędu {{Code|(błąd)}}. * {{Code|i}} - numer zmiennej nazwy przestrzeni nazw. Funkcja wykorzystuje {{Code|{{sr|#p.Nazwa_przestrzeni_nazw_2(frame,...)|p=Pudełko/Pomocne}}}} do wyznaczania ogólnego nazwy przestrzeni nazw dla pozycji bazowej i numerkowej, tzn. dla pozycji: jeden, dwa, trzy,..., itd, i ich ogólnej. Parametr ramki tablicy transportu rodzica szablonu: * {{Code|nazwa przestrzeni nazw}}, {{Code|nazwa przestrzeni nazw 1}}, {{Code|Nazwa przestrzeni nazw 3}}, {{Code|nazwa przestrzeni nazw 3}},..., {{Code|nazwa przestrzeni nazw i}} - nazwy przestrzeni nazw dla pozycji bazowej oraz zwykłej i ogólnej numerkowej, * {{Code|nazwa jednostki}}, {{Code|nazwa jednostki 1}}, {{Code|nazwa jednostki 2}}, {{Code|nazwa jednostki 3}},... - nazwy jednostek dla pozycji bazowej i numerkowej, * {{Code|typ jednostki}}, {{Code|typ jednostki 1}}, {{Code|typ jednostki 2}}, {{Code|typ jednostki 3}},..., {{Code|typ jednostki i}} - typy jednostek, którym odpowiadają pewne przestrzenie przedmiotowe, dla pozycji bazowej, numerkowej i ogólnej, ** {{Code|dyskusja typu jednostki}}, {{Code|dyskusja typu jednostki 1}}, {{Code|dyskusja typ jednostki 2}}, {{Code|dyskusja typ jednostki 3}},..., {{Code|dyskusja typ jednostki i}} - czy dany typ jednostki ma przedstawiać, jeśli niepusta, przestrzeń dyskusji dla pozycji bazowej, numerkowej i ogólnej. Parametry ramki tablicy transportu dziecka: * Parametry dziecka są takie same jak rodzica dla funkcji pudełkowej plus tu wymienione, * {{Code|numer jednostki}} - jak parametr {{Code|i}} nie został ustawiony, to wtedy liczy się ta zmienna. Przykłady: <syntaxhighlight lang="mediawiki"> {{Nazwa szablonu|nazwa przestrzeni nazw=Wikibooks|nazwa przestrzeni nazw=|nazwa przestrzeni nazw i=|nazwajednostki=Szablon:Strona|nazwa jednostki 2=Wikibooks:Strona}} <hr /> {{Nazwa szablonu|nazwa przestrzeni nazw=Wikibooks|nazwa przestrzeni nazw 1=Szablon|nazwa przestrzeni nazw i=|nazwa jednostki 2=Wikibooks:Strona}} </syntaxhighlight> W dziecku powiedzmy jest wywołanie, i szukamy nazwy przestrzeni nazw o numerze dwa, która została podana, ale istnieje za to jej wersji ogólna {{Code|nazwa przestrzeni nazw i}} i domyślna {{Code|nazwa przestrzeni nazw}}, ale wtedy dla tego numerkowego liczy się to ogólne z {{Code| i}}, a ponieważ ta nazwa jest pusta, więc będziemy liczyli nazwę przestrzeni nazw z {{Code|nazwa jednostki 2}}: <syntaxhighlight lang="mediawiki"> {{#invoke:Pudełko|Nazwa przestrzeni nazw 3}} <hr /> {{#invoke:Pudełko|Nazwa przestrzeni nazw 3|numer jednostki=2}} </syntaxhighlight> Na podstawie powyższego przykładu otrzymamy wynik o schemacie, nie wyniku, bo tam nie ma zmiennej {{Code|nazwa przestrzeni nazw 1}}, ale jest {{Code|nazwa przestrzeni nazw i}}: <syntaxhighlight lang="mediawiki"> <!-- Ale nie "nazwa przestrzeni nazw""; --> <!-- nazwa przestrzeni nazw=""; --> <!-- Czyli wynik: --> <!-- wynik pusty --> <!-- Widzimy, że wygenerowała się nazwa przestrzeni nazw, którą jest przestrzeń nazw główna, jest ciągiem pustym: ""; --> <hr /> <!-- Ale nie "Nazwa przestrzeni nazw 2", bo jej nie ma, ale za to istnieje "nazwa przestrzeni nazw i"; --> <!-- nazwa przestrzeni nazw 2=nazwa przestrzeni nazw i="", a nazwa jednostki 2="Wikibooks:Strona"; --> <!-- Czyli wynik: --> Wikibooks <!-- Widzimy, że wygenerowała się nazwa przestrzeni nazw, którą jest przestrzeń nieprogramowa, ale projektu, wychodząca z nazwy jednostek w tym przypadku z "nazwa jednostki 2"; --> </syntaxhighlight> Dla parametrów bazowych nienumerkowych istnieje zmienna {{Code|nazwa przestrzeni nazw}}, której waartość jest pusta,którajest zwracana przez tą funkcję. {{Hr}} Dla parametrów numerkowych nie jest brana w tym powyższym przykładzie zmienna {{Code|nazwa przestrzeni nazw}}, bo jej nie ma, ale za to jest {{Code|nazwa przestrzeni nazw i}}, bo ona występuje jako parametr domyślny ogólny dla parametrów numerkowych. Tytaj jest używana jest zmienna {{Code|nazwa jednostki 2}} do wygenerowania ostatecznego wyniku, bo jak można zauważyć, parametry przestrzenne wskazują na przestrzeń główną, a nazwy jednostek już nie. Przykłady w wikikodzie: * {{Code|{{m|Pudełko|Nazwa przestrzeni nazw 3|nazwa przestrzeni nazw{{=}}|nazwa jednostki{{=}}Wikibooks:Strona}}}} → {{Tt|{{#invoke:Pudełko|Nazwa przestrzeni nazw 3|nazwa przestrzeni nazw=|nazwa jednostki=Wikibooks:Szablon}}}} * {{Code|{{m|Pudełko|Nazwa przestrzeni nazw 3|nazwa przestrzeni nazw 2{{=}}|nazwa jednostki 2{{=}}Wikibooks:Strona|numer jednostki{{=}}2}}}} → {{Tt|{{#invoke:Pudełko|Nazwa przestrzeni nazw 3|nazwa przestrzeni nazw 2=|nazwa jednostki 2=Wikibooks:Szablon|numer jednostki=2}}}} Powyżej dla przykładu podano parametry nie w rodzicu w szablonie, tylko w dziecku, jeśli chodzi o parametry nazw przestrzeni nazw i nazw jednostek, ale ich się za to nie powinno podawać w tych ramach, tylko w szablonach, w których wywoływane są te ramki pudełek {{Code|{{m|Pudełko}}}}, ale tak tutaj tak zrobiono by było najłatwiej sprawdzić działanie tego typu funkcji. Analogicznie możemy podawać parametry typu jednostki, np.: wywołaniu modułowym {{Code|{{m|Pudełko|Nazwa przestrzeni nazw 3|typ jednostki 2{{=}}Podręcznik|nazwa jednostki 2{{=}}Szablon:Strona|numer jednostki{{=}}2}}}} (ale wtedy jest brana przestrzeń nazw z nazwy jednostki), ale o tym więcej w rozdziałach {{Code|{{sr|#p["Typ jednostki 3"](frame,i)|p=Pudełko}}}} w „{{sr|#Funkcje typu jednostki|p=Pudełko}}”, on definiuje przestrzenie przedmiotowe, ale można użyć parametru dyskusji typu jednostki z wartością niepustą, wtedy wyświetli się nazwa przestrzeni nazw dyskusji. Jeżeli typ jednostki bazowy wskazuje na przestrzeń nazw główną, wtedy się nie liczą parametry nazw jednostek, a na numerkowy, wtedy się liczy. Również parametry typu jednostki nie powinno się podawać w dziecku w ramce, tylko w rodzicu w szablonie jako parametry, w którym ta ramka jest wywoływana, ale tutaj podano jedynie dla przykładu, jak najłatwiej sprawdzić działanie tych parametrów tej funkcji. Najpierw w funkcji nagłówku brane są parametry nazw przestrzeni nazw, a jeżeli ich nie ma, to parametry typu jednostki, a jeżeli nie ma lub parametry przestrzenne wskazują na przestrzeń główną, i nie ma nazwy jednostki, to generowane są nazwy tej funkcji na podstawie aktualnej strony. === {{Code|p["Nazwa przedmiotowej przestrzeni nazw 3"](frame,i)}} === Funkcja pisze przedmiotową nazwę przestrzeni nazw jakikolwiek nazwy przestrzeni nazw (tzn. nazwę przedmiotową nazwy przestrzenie nazw, czyli nie dyskusji, zamieniana jest na nią samą, czyli identyfikator przestrzeni się nie zmienia, a dyskusji, nie przedmiotową, przekształca się na przedmiotową jej odpowiadającą, czyli w tym przypadku identyfikator przestrzeni zmniejsza się o numer mniej), według podanej w zmiennej {{Code|nazwa przestrzeni nazw}} dla pozycja bazowej w podanych parametrach szablonu rodzicu ramki dziecka, lub dla innej pozycji należy parametr podawać w formie {{Code|nazwa przestrzeni nazw 1}}, {{Code|nazwa przestrzeni nazw 2}}, {{Code|nazwa przestrzeni nazw 3}},..., lub te parametry można podać w postaci ogólnej {{Code|nazwa przestrzeni nazw i}}. Parametry podaje się w parametrach rodzica wywołania tej funkcji {{Code|{{m|Pudełko|Nazwa przedmiotowej przestrzeni nazw 3}}}} (ale ich nie trzeba podawać w dziecku, ale można) i w parametrach dziecka, jeśli chodzi o zmienną {{Code|numer jednostki}}, czyli np.: {{Code|{{m|Pudełko|Nazwa przedmiotowej przestrzeni nazw 3|numer jednostki{{=}}<jakaś liczba całkowita dodatnia>}}}}. Te parametry przestrzenne zamiast w rodzicu w szablonie można podać w ramce dziecka, wtedy parametry dziecka mają pierwszeństwo. Parametry przestrzenne mogą mogą być podane w postaci przestrzeni przedmiotowej lub dyskusji, ale ta funkcja zawsze ją zamienia na przedmiotową. Przestrzeń nazw z parametrów nazw przestrzennych bazowych (bez numerka) może odpowiadać wartości przestrzeni głównej, to wtedy odpowiednia przestrzeń nazw z parametru nazwy jednostki się nie liczy w tej funkcji, aby się liczyła należy użyć funkcji {{Code|{{sr|#p["Nazwa przestrzeni nazw dyskusji 2"](frame,...)|p=Pudełko}}}}. Przestrzeń nazw z parametrów nazw przestrzennych numerkowych może odpowiadać wartości przestrzeni głównej, to wtedy odpowiednia przestrzeń nazw z parametru nazwy jednostki się liczy w tej funkcji, wtedy jest liczona nazwa przestrzeni nazw z tego parametru. Gdy parametry przestrzenne lub typ jednostki w drugim podejściu nie wskazują na przestrzeń główną, to wtedy działanie tej funkcji jest podobne do {{Code|{{sr|#p["Nazwa przestrzeni nazw"](frame,...)|p=Pudełko}}}}. Definicja skrótowa funkcji: <syntaxhighlight lang="lua"> p["Nazwa przedmiotowej przestrzeni nazw 3"]=function(frame,czy_uwzglednic_alternatywna_nazwe,i)...end; </syntaxhighlight> Wtedy ciało funkcji tej, czyli jego definicja w środku, jest: <syntaxhighlight lang="lua"> -- Jest liczony numer parametru nazwy przestrzeni nazw, domyslnie chodzi tu o numer bazowy parametrów przestrzennych; local numer_jednostki=i or frame.args["numer jednostki"]; local liczba_numeru_jednostki=((numer_jednostki)and(tonumber(numer_jednostki)) or 0); local pudelko_pomocne_modul=require("Module:Pudełko/Pomocne"); -- Liczy nazwę przestrzeni nazw przedmiotową na podstawie podanych parametrów; return pudelko_pomocne_modul.Uzyskanie_nazw_jednostki(frame,1,liczba_numeru_jednostki,nil,1); </syntaxhighlight> Parametry funkcji: * {{Code|frame}} - tablica ramki tablicy transportu, * {{Code|czy_uwzglednic_alternatywna_nazwe}} - czy ma uwzględniać nazwę przestrzeni nazw domyślną szablonu, dostępne wartości: {{Code|false}}, w której nazwa domyślna nie jest uwzględniana wtedy, oraz {{Code|nil}} i {{Code|true}}, które oznaczają to samo, w tym jeżeli ona jest uwzględniana, wtedy jest brany parametr pierwszy dziecka, który musi istnieć przy takiej wartości tego parametru, tzn. {{Code|{{m|Pudełko|Nazwa przedmiotowej przestrzeni nazw 3|Dyskusja szablonu}}}} - ta nazwa domyślna zostanie zamieniona na przedmiotową, a jak ona by była przedmiotowa, to żadnej zamiany by nie było, a nazwa uzyskana z nazwy przestrzeni nazw z parametrów przestrzennych jest w takim przypadku błędna, to w takim razie brany jest ten parametr, a jeżeli ta nazwa domyślna jest błędna, czyli {{Code|{{m|Pudełko|Nazwa przedmiotowej przestrzeni nazw 3|Moja przestrzeń}}}}, wtedy funkcja zwraca stan błędu {{Code|(błąd)}}. * {{Code|i}} - numer zmiennej nazwy przestrzeni nazw. Funkcja wykorzystuje {{Code|{{sr|#p.Nazwa_przestrzeni_nazw(frame,...)|p=Pudełko/Pomocne}}}} do wyznaczania ogólnego nazwy przestrzeni nazw dla pozycji bazowej i numerkowej, tzn. dla pozycji: jeden, dwa, trzy,..., itd, i ich ogólnej. Parametr ramki tablicy transportu rodzica szablonu: * {{Code|nazwa przestrzeni nazw}}, {{Code|nazwa przestrzeni nazw 1}}, {{Code|nazwa przestrzeni nazw 2}}, {{Code|nazwa przestrzeni nazw 3}},..., {{Code|nazwa przestrzeni nazw i}} - nazwy przestrzeni nazw dla pozycji bazowej oraz zwykłej i ogólnej numerkowej, * {{Code|typ jednostki}}, {{Code|typ jednostki 1}}, {{Code|typ jednostki 2}}, {{Code|typ jednostki 3}},..., {{Code|typ jednostki i}} - typy jednostek, którym odpowiadają pewne przestrzenie przedmiotowe, dla pozycji bazowej, numerkowej i ogólnej. Parametry ramki tablicy transportu dziecka: * Parametry dziecka są takie same jak rodzica dla funkcji pudełkowej plus tu wymienione, * {{Code|numer jednostki}} - jak parametr {{Code|i}} nie został ustawiony, to wtedy liczy się ta zmienna. Przykłady: <syntaxhighlight lang="mediawiki"> {{Nazwa szablonu|nazwa przestrzeni nazw=Wikibooks|nazwa przestrzeni nazw=|nazwa przestrzeni nazw i=|nazwajednostki=Szablon:Strona|nazwa jednostki=Dyskusja Wikibooks:Strona}} <hr /> {{Nazwa szablonu|nazwa przestrzeni nazw=Wikibooks|nazwa przestrzeni nazw 1=Szablon|nazwa przestrzeni nazw i=|nazwa jednostki 2=Dyskusja Wikibooks:Strona}} </syntaxhighlight> W dziecku powiedzmy jest wywołanie, i szukamy nazwy przestrzeni nazw o numerze dwa, która nie została podana, ale istnieje za to jej wersji ogólna {{Code|nazwa przestrzeni nazw i}} i domyślna {{Code|nazwa przestrzeni nazw}}: <syntaxhighlight lang="mediawiki"> {{#invoke:Pudełko|Nazwa przedmiotowej przestrzeni nazw 3|numer jednostki=1}} </syntaxhighlight> Na podstawie powyższego przykładu otrzymamy wynik o schemacie, nie wyniku, bo tam nie ma zmiennej {{Code|nazwa przestrzeni nazw 1}}, ale jest {{Code|nazwa przestrzeni nazw i}}: <syntaxhighlight lang="mediawiki"> <!-- Ale nie "nazwa przestrzeni nazw""; --> <!-- nazwa przestrzeni nazw=""; --> <!-- Czyli wynik: --> <!-- wynik pusty --> <!-- Widzimy, że wygenerowała się nazwa przestrzeni nazw, którą jest przestrzeń nazw główna, jest ciągiem pustym: ""; --> <hr /> <!-- Ale nie "Nazwa przestrzeni nazw 2", bo jej nie ma, ale za to istnieje "nazwa przestrzeni nazw i"; --> <!-- nazwa przestrzeni nazw 2=nazwa przestrzeni nazw i="", a nazwa jednostki 2="Dyskusja Wikibooks:Strona"; --> <!-- Czyli wynik: --> Wikibooks <!-- Widzimy, że wygenerowała się nazwa przestrzeni nazw, którą jest przestrzeń nieprogramowa, ale projektu, wychodząca z nazwy jednostek w tym przypadku z "nazwa jednostki 2"; --> </syntaxhighlight> Nie jest brana w tym powyższym przykładzie zmienna {{Code|nazwa przestrzeni nazw}}, bo jej nie ma, ale za to jest {{Code|nazwa przestrzeni nazw i}}, bo ona występuje jako parametr domyślny ogólny dla parametrów numerkowych. Przykłady w wikikodzie: * {{Code|{{m|Pudełko|Nazwa przestrzeni nazw 3|nazwa przestrzeni nazw{{=}}|nazwa jednostki{{=}}Dyskusja Wikibooks:Strona}}}} → {{Tt|{{#invoke:Pudełko|Nazwa przestrzeni nazw 3|nazwa przestrzeni nazw=|nazwa jednostki=Dyskusja Wikibooks:Szablon}}}} * {{Code|{{m|Pudełko|Nazwa przestrzeni nazw 3|nazwa przestrzeni nazw 2{{=}}|nazwa jednostki 2{{=}}Dyskusja Wikibooks:Strona|numer jednostki{{=}}2}}}} → {{Tt|{{#invoke:Pudełko|Nazwa przestrzeni nazw 3|nazwa przestrzeni nazw 2=|nazwa jednostki 2=Dyskusja Wikibooks:Szablon|numer jednostki=2}}}} Powyżej dla przykładu podano parametry nie w rodzicu w szablonie, tylko w dziecku, jeśli chodzi o parametry nazw przestrzeni nazw, ale ich się za to nie powinno podawać w tych ramach, tylko w szablonach, w których wywoływane są te ramki pudełek {{Code|{{m|Pudełko}}}}, ale tak tutaj tak zrobiono by było najłatwiej sprawdzić działanie tego typu funkcji. Analogicznie możemy podawać parametry typu jednostki, np.: wywołaniu modułowym {{Code|{{m|Pudełko|Nazwa przedmiotowej przestrzeni nazw 3|typ jednostki 2{{=}}strona szablonu|numer jednostki{{=}}2}}}}, ale o tym więcej w rozdziałach {{Code|{{sr|# p["Przedmiotowy typ jednostki 3"](frame,i)|p=Pudełko}}}} w „{{sr|#Funkcje typu jednostki|p=Pudełko}}”, ale wtedy ta sama nazwa przestrzeni nazw reprezentowana przez {{Parametr|typ jednostki 2|strona szablonu}}, jest zamieniana na to samo, lepiej jest tutaj używać parametrów przestrzennych nazw niż typu jednostki, bo typ jednostki ma taką samą wartość dla przestrzeni przedmiotowej, co dyskusji. Tutaj parametr dyskusji typu jednostki bazowy i numerkowy ogólny, czy szczegółowy, nie gra roli, bo nawet, gdy wygenerujemy nazwę przestrzeni dyskusji za pomoca tego parametru, to i tak otrzymamy na samym końcu jego nazwę przedmiotową. Również parametry typu jednostki nie powinno się podawać w dziecku w ramce, tylko w rodzicu w szablonie jako parametry, w którym ta ramka jest wywoływana, ale tutaj podano jedynie dla przykładu, jak najłatwiej sprawdzić działanie tych parametrów tej funkcji. Najpierw w funkcji nagłówku brane są parametry nazw przestrzeni nazw, a jeżeli ich nie ma, to parametry typu jednostki, a jeżeli nie ma, to generowane są nazwy na podstawie aktualnego modułu. === {{Code|p["Nazwa przestrzeni nazw dyskusji 3"](frame,i)}} === == Funkcje nazw jednostki trzeciej wersji == === {{Code|p["Nazwa jednostki 3"](frame,i)}} === === {{Code|p["Nazwa przedmiotowa jednostki 3"](frame,i)}} === === {{Code|p["Nazwa dyskusji jednostki 3"](frame,i)}} === == Funkcje typu jednostki == === {{Code|p["Typ jednostki"](frame,i)}} === === {{Code|p["Typ jednostki 2"](frame,i)}} === === {{Code|p["Typ jednostki 3"](frame,i)}} === === Funkcje typu jednostki przedmiotowe === ==== {{Code|p["Przedmiotowy typ jednostki"](frame,i)}} ==== ==== {{Code|p["Przedmiotowy typ jednostki 2"](frame,i)}} ==== ==== {{Code|p["Przedmiotowy typ jednostki 3"](frame,i)}} ==== === Fukcje typu jednostki dyskusji === ==== {{Code|p["Dyskusyjny typ jednostki"](frame,i)}} ==== ==== {{Code|p["Dyskusyjny typ jednostki 2"](frame,i)}} ==== ==== {{Code|p["Dyskusyjny typ jednostki 3"](frame,i)}} ==== == Funkcje chech pudełka == === {{Code|p["Cecha pudełka"](frame)}} === === {{Code|p["Przedmiotowa cecha pudełka"](frame)}} === === {{Code|p["Dyskusyjna cecha pudełka"](frame)}} === == Fukcje ogólnego pudełka == === {{Code|p["Ogólne pudełko"](frame)}} === == Funkcje ogólne == === {{Code|p["Tekst pudełka"](frame)}} === == Funkcje błędów pudełka == === {{Code|p["Błędy pudełka"](frame)}} === === {{Code|p["Przedmiotowe błędy pudełka"](frame)}} === === {{Code|p["Dyskusyjne błędy pudełka"](frame)}} === == Funkcje nazw stron == === {{Code|p["Nazwa strony głównej projektu"](frame,i)}} === === {{Code|p["Nazwa strony głównej dla dzieci projektu"](frame,i)}} === == Funkcje kodów == === {{Code|p["Kod języka"](frame,i)}} === === {{Code|p["Kod projektu"](frame,i)}} === === {{Code|p["Klucz projektu"](frame,i)}} === == Funkcje wiki == === {{Code|p["Inny niż język bieżący wiki"](frame)}} === === {{Code|p["Inne niż lokalne wiki"](frame)}} === === {{Code|p["Inne niż bieżące wiki"](frame)}} === == Funkcje typów parametrów, czy podane je == === {{Code|p["Podano parametry nienazwane"](frame)}} === === {{Code|p["Podano parametry numerowane"](frame)}} === === {{Code|p["Podano parametry nazwane"](frame)}} === == Funkcje kodów tego projektu == === {{Code|p["Kod projektu tego projektu"](frame)}} === === {{Code|p["Kod języka tego projektu"](frame)}} === === {{Code|p["Klucz projektu tego projektu"](frame)}} === == Funkcje stron == === {{Code|p["Strona główna tego projektu"](frame)}} === === {{Code|p["Strona główna dla dzieci tego projektu"](frame)}} === == Funkcje nazw stron drugiej wersji == === {{Code|p["Nazwa strony głównej dla dzieci projektu 2"](frame)}} === === {{Code| p["Nazwa strony głównej projektu 2"](frame)}} === {{BrClear}} <noinclude><!-- -->{{ProstaStronaKoniec}}<!-- -->{{Kategoria|Opisy funkcji, w Lua w Scribunto, w modułach}}<!-- --></noinclude> jmh0nlpaqx2snpj1iq5atuut3lk59sz 540415 540414 2026-04-23T19:37:31Z Persino 2851 /* Funkcje nazw przestrzeni nazw trzeciej wersji */ 540415 wikitext text/x-wiki <noinclude>{{ProstaStronaStart | nagłówek = {{Podrozdział|{{ld2|Pudełko}}|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 pudelko_modul=require("Module:Pudełko"); </syntaxhighlight> dzięki, któremu można wypisywać funkcje należącego do niego. Posługuje się na parametrach pudełkowych {{Parametr|nazwa przestrzeni nazw}} (czy też bez numerka {{Parametr|nazwa przestrzeni nazw i}} dla tego numerowanego) lub te z numerkiem po jednej spacji w nich (ale nie dla tego z końcówką {{Code| i}}) mogą zostać użyte jako parametry szablonu. Moduł {{Code|{{ld2|Pudełko}}}} przedstawia funkcje nazw w oparciu o funkcje nazw {{Code|{{ld2|Nazwy}}}}, generuje on nazwy za pomocą parametrów pudełkowych podanych poniżej. Parametr {{Parametr|nazwa jednostki}} (lub parametr {{Parametr|cel}} dla numerka tego pierwszego, tego alternatywnego), lub te z numerkiem po jednej spacji w nazwie parametru, albo numerowane numerkami {{Code|1}}, {{Code|2}},..., mogą zostać użyte jako parametry szablonu. Parametry określające rodzaj jednostki {{Parametr|typ jednostki}} z {{Parametr|dyskusja typu jednostki}}, itp. w wersjach z numerkiem po jednej spacji w nich mogą zostać użyte jako parametry szablonu. A te tymi numerowanymi liczbami naturalnymi {{Tt|nazwy jednostki}} od jedynki wzwyż poprzez szablon, w którym są one użyte, one też mogą być użyte z dwukropkiem, te numerowane, na samym początku nazwy, wtedy one są traktowane jako pełne nazwy strony, i wtedy one nie zostaną z interpretowane, że do nich trzeba użyć parametr odpowiedni z nazwą przetrzeni nazw z tego numerowanego, czy ogólny, aby utworzyć znów inną pełną nazwę strony dla tego numerka. Zestawienie: * {{Code|nazwa przestrzeni nazw}} i {{Code|nazwa przestrzeni nazw i}} (ogólna nazwa przestrzeni nazw dla wszystkich numerków, i tych numerowanych jednostek) - i to pierwsze z numerkiem, tzn. {{Code|nazwa przestrzeni nazw 1}}, {{Code|nazwa przestrzeni nazw 2}}, ..., * {{Code|nazwa jednostki}} - i te z numerkiem: {{Code|nazwa jednostki 1}}, {{Code|nazwa jednostki 2}}, ..., lub gdy jest zamiast tego parametrem numerowany, {{Code|1}}, {{Code|2}},..., który dla tego pierwszego może być uznany jako: {{Code|cel}} {{=}} {{Code|1}}, * {{Code|typ jednostki}} (parametr bazowy) i {{Code|typ jednostki i}} (parametr domyślny numerkowy) - i te z numerkiem: {{Code|typ jednostki 1}}, {{Code|typ jednostki 2}}, ..., tzn. gdy chcemy określić z jakim typem jednostki mamy do czynienia w zależności do jakiej przestrzeni nazw należy, a w danej, czy jest on np. programowy, czy tylko jest opisem, jak to bywa w szablonach {{Np|Template|link=tak}}, podobnie jest w przypadku {{Np|Module|link=tak}}, czy jak jest w innych przestrzeniach nazw, ** {{Code|dyskusja typu jednostki}} (parametr bazowy) i {{Code|dyskusja typu jednostki i}} (parametr domyślny numerkowy) - i te z numerkiem: {{Code|dyskusja typu jednostki 1}}, {{Code|dyskusja typu jednostki 2}}, ..., gdy chcemy określić wartością niepustą,że chodzi tutaj o typ jednostki. == {{Code|p.CzyNiepoprawnaNazwa(nazwa_jednostki)}} == Funkcja sprawdzajaca, czy jest poprawnie podana nazwa jednostki, czy ma poprawną nazwę. Znakami tymi, z których nie powinna składać się nazwa jest {{Code|<nowiki>{}<>|[]#\n</nowiki>}} i dodatkowo znak {{Code|&#127;}} (kod {{Code|{{Nowiki|&#127;}}}}). Też nie może składać się z trzech znaków tyldy, tzn. {{Code|<nowiki>~~~</nowiki>}}. Również w swojej budowie nie może składać się ze kodów {{Strong|HTML}} literowych o wzorze {{Code|{{Nowiki|&(%a+);}}}}. Natomiast może składać się z {{Code|{{Nowiki|&#(%d+);}}}} i {{Code|{{Nowiki|&#x(%x+);}}}}, ale w pierw te kody muszą być zamienione na normalne znaki. Skrótowa definicja funkcji: <syntaxhighlight lang="lua"> function p.CzyNiepoprawnaNazwa(nazwa_jednostki)...end; </syntaxhighlight> Wtedy ciało funkcji tej, czyli jego definicja w środku, jest: <syntaxhighlight lang="lua"> -- Moduł: "Moduł:Html/dane", służy do ładowania znaku o kodzie HTML "&#127;"; local html_dane_modul=mw.loadData("Module:Html/dane"); return mw.ustring.match(nazwa_jednostki,"[{}<>|%[%]#\n"..html_dane_modul.znak_127.."]+") or mw.ustring.match(nazwa_jednostki,"~~~") or mw.ustring.match(nazwa_jednostki,"&(%a+);"); </syntaxhighlight> Parametry: * {{Code|nazwa_jednostki}} - nazwa jednostki do sprawdzenia. Przykłady: <syntaxhighlight lang="lua"> local pudelko_modul=require("Module:Pudełko"); -- Podana przykładowa niepoprawna nazwa jedostki local nazwa_jednostki="Nazwa pliku [[Nazwa linku w pliku]]"; -- Fukcja zwróci wartość: local czy_poprawna_nazwa=true; local czy_poprawna_nazwa=pudelko_modul.CzyNiepoprawnaNazwa(nazwa_jednostki); </syntaxhighlight> == Funkcje nazw przestrzeni nazw == === {{Code|p["Nazwa przestrzeni nazw"](frame,...)}} === Funkcja pisze nazwę przestrzeni nazw, niezależnie, czy to jest przedmiotowa, czy dyskusji, według podanej w zmiennej {{Code|nazwa przestrzeni nazw}} dla pozycja bazowej w podanych parametrach szablonu rodzicu ramki dziecka, lub dla innej pozycji należy parametr podawać w formie {{Code|nazwa przestrzeni nazw 1}}, {{Code|nazwa przestrzeni nazw 2}}, {{Code|nazwa przestrzeni nazw 3}},..., lub te parametry można podać w postaci ogólnej {{Code|nazwa przestrzeni nazw i}}. Parametry podaje się w parametrach rodzica wywołania tej funkcji {{Code|{{m|Pudełko|Nazwa przestrzeni nazw}}}} (ale ich nie trzeba podawać w dziecku, ale można) i w parametrach dziecka, jeśli chodzi o zmienną {{Code|numer jednostki}}, czyli np.: {{Code|{{m|Pudełko|Nazwa przestrzeni nazw|numer jednostki{{=}}<jakaś liczba całkowita dodatnia>}}}}. Te parametry przestrzenne zamiast w rodzicu w szablonie można podać w ramce dziecka, wtedy parametry dziecka mają pierwszeństwo. Przestrzeń nazw z parametrów nazw przestrzennych może odpowiadać wartości przestrzeni głównej, to wtedy odpowiednia przestrzeń nazw z parametru nazwy jednostki się nie liczy w tej funkcji, aby się liczyła należy użyć funkcji {{Code|{{sr|#p["Nazwa przestrzeni nazw 2"](frame,...)|p=Pudełko}}}}. Definicja skrótowa funkcji: <syntaxhighlight lang="lua"> p["Nazwa przestrzeni nazw"]=function(frame,czy_uwzglednic_alternatywna_nazwe,i)...end; </syntaxhighlight> Wtedy ciało funkcji tej, czyli jego definicja w środku, jest: <syntaxhighlight lang="lua"> -- Jest liczony numer parametru nazwy przestrzeni nazw, domyslnie chodzi tu o numer bazowy parametrów przestrzennych; local numer_jednostki=i or frame.args["numer jednostki"]; local liczba_numer_jednostki=((numer_jednostki)and(tonumber(numer_jednostki))or 0); local pudelko_pomocne_modul=require("Module:Pudełko/Pomocne"); -- Liczy nazwę przestrzeni nazw na podstawie podanych parametrów; return pudelko_pomocne_modul.Nazwa_przestrzeni_nazw(frame,0, czy_uwzglednic_alternatywna_nazwe,liczba_numer_jednostki); </syntaxhighlight> Parametry funkcji: * {{Code|frame}} - tablica ramki tablicy transportu, * {{Code|czy_uwzglednic_alternatywna_nazwe}} - czy ma uwzględniać nazwę przestrzeni nazw domyślną szablonu, dostępne wartości: {{Code|false}}, w której nazwa domyślna nie jest uwzględniana wtedy, oraz {{Code|nil}} i {{Code|true}}, które oznaczają to samo, w tym jeżeli ona jest uwzględniana, wtedy jest brany parametr pierwszy dziecka, który musi istnieć przy takiej wartości tego parametru, tzn. {{Code|{{m|Pudełko|Nazwa przestrzeni nazw|Szablon}}}}, a nazwa uzyskana nazwy przestrzeni nazw jest w takim przypadku błędna, a jeżeli nazwa domyślna jest błędna, czyli {{Code|{{m|Pudełko|Nazwa przestrzeni nazw|Moja przestrzeń}}}}, wtedy funkcja zwraca stan błędu {{Code|(błąd)}}. * {{Code|i}} - numer zmiennej nazwy przestrzeni nazw. Funkcja wykorzystuje {{Code|{{sr|#p.Nazwa_przestrzeni_nazw(frame,...)|p=Pudełko/Pomocne}}}} do wyznaczania ogólnego nazwy przestrzeni nazw dla pozycji bazowej i numerkowej, tzn. dla pozycji: jeden, dwa, trzy,..., itd, i ich ogólnej. Parametr ramki tablicy transportu rodzica szablonu: * {{Code|nazwa przestrzeni nazw}}, {{Code|nazwa przestrzeni nazw 1}}, {{Code|nazwa przestrzeni nazw 2}}, {{Code|nazwa przestrzeni nazw 3}},..., {{Code|nazwa przestrzeni nazw i}} - nazwy przestrzeni nazw dla pozycji bazowej oraz zwykłej i ogólnej numerkowej, * {{Code|typ jednostki}}, {{Code|typ jednostki 1}}, {{Code|typ jednostki 2}}, {{Code|typ jednostki 3}},..., {{Code|typ jednostki i}} - typy jednostek, którym odpowiadają pewne przestrzenie przedmiotowe, dla pozycji bazowej, numerkowej i ogólnej, ** {{Code|dyskusja typu jednostki}}, {{Code|dyskusja typu jednostki 1}}, {{Code|dyskusja typ jednostki 2}}, {{Code|dyskusja typ jednostki 3}},..., {{Code|dyskusja typ jednostki i}} - czy dany typ jednostki ma przedstawiać, jeśli niepusta, przestrzeń dyskusji dla pozycji bazowej, numerkowej i ogólnej. Parametry ramki tablicy transportu dziecka: * Parametry dziecka są takie same jak rodzica dla funkcji pudełkowej plus tu wymienione, * {{Code|numer jednostki}} - jak parametr {{Code|i}} nie został ustawiony, to wtedy liczy się ta zmienna. Przykłady: <syntaxhighlight lang="mediawiki"> {{Nazwa szablonu|nazwa przestrzeni nazw=Wikibooks|nazwa przestrzeni nazw 2=Szablon|nazwa przestrzeni nazw i=Moduł}} </syntaxhighlight> W dziecku powiedzmy jest wywołanie, i szukamy nazwy przestrzeni nazw o numerze dwa, która nie została podana, ale istnieje za to jej wersji ogólna {{Code|nazwa przestrzeni nazw i}} i domyślna {{Code|nazwa przestrzeni nazw}}: <syntaxhighlight lang="mediawiki"> {{#invoke:Pudełko|Nazwa przestrzeni nazw|numer jednostki=1}} </syntaxhighlight> Na podstawie powyższego przykładu otrzymamy wynik o schemacie, nie wyniku, bo tam nie ma zmiennej {{Code|nazwa przestrzeni nazw 1}}, ale jest {{Code|nazwa przestrzeni nazw i}}: <syntaxhighlight lang="mediawiki"> <!-- Ale nie "nazwa przestrzeni nazw", bo jej nie ma, ale za to istnieje "nazwa przestrzeni nazw i"; --> <!-- nazwa przestrzeni nazw 2=nazwa przestrzeni nazw i=Moduł; --> <!-- Czyli wynik: --> Moduł <!-- Widzimy, że wygenerowała się nazwa przestrzeni nazw, którą jest przestrzeń programowa, którą również jest "Szablon"; --> </syntaxhighlight> Nie jest brana w tym powyższym przykładzie zmienna {{Code|nazwa przestrzeni nazw}}, bo jej nie ma, ale za to jest {{Code|nazwa przestrzeni nazw i}}, bo ona występuje jako parametr domyślny ogólny dla parametrów numerkowych. Przykłady w wikikodzie: * {{Code|{{m|Pudełko|Nazwa przestrzeni nazw|numer jednostki{{=}}2}}}} → {{Tt|{{#invoke:Pudełko|Nazwa przestrzeni nazw|numer jednostki=2}}}} * {{Code|{{m|Pudełko|Nazwa przestrzeni nazw|Szablon|nazwa przestrzeni nazw i{{=}}Moja przestrzeń|numer jednostki{{=}}2}}}} → {{Tt|{{#invoke:Pudełko|Nazwa przestrzeni nazw|Szablon|nazwa przestrzeni nazw i=Moja przestrzeń|numer jednostki=2}}}} * {{Code|{{m|Pudełko|Nazwa przestrzeni nazw|nazwa przestrzeni nazw 2{{=}}Szablon|numer jednostki{{=}}2}}}} → {{Tt|{{#invoke:Pudełko|Nazwa przestrzeni nazw|nazwa przestrzeni nazw 2=Szablon|numer jednostki=2}}}} * {{Code|{{m|Pudełko|Nazwa przestrzeni nazw|nazwa przestrzeni nazw 2{{=}}Szablon|numer jednostki{{=}}2}}}} → {{Tt|{{#invoke:Pudełko|Nazwa przestrzeni nazw|nazwa przestrzeni nazw i=Szablon|numer jednostki=2}}}} * {{Code|{{m|Pudełko|Nazwa przestrzeni nazw|nazwa przestrzeni nazw{{=}}Szablon|numer jednostki{{=}}2}}}} → {{Tt|{{#invoke:Pudełko|Nazwa przestrzeni nazw|nazwa przestrzeni nazw=Szablon|numer jednostki=2}}}} Powyżej dla przykładu podano parametry nie w rodzicu w szablonie, tylko w dziecku, jeśli chodzi o parametry nazw przestrzeni nazw, ale ich się za to nie powinno podawać w tych ramach, tylko w szablonach, w których wywoływane są te ramki pudełek {{Code|{{m|Pudełko}}}}, ale tak tutaj tak zrobiono by było najłatwiej sprawdzić działanie tego typu funkcji. Analogicznie możemy podawać parametry typu jednostki, np.: wywołaniu modułowym {{Code|{{m|Pudełko|Nazwa przestrzeni nazw|typ jednostki 2{{=}}strona szablonu|numer jednostki{{=}}2}}}}, ale o tym więcej w rozdziałach {{Code|{{sr|# p["Typ jednostki"](frame,i)|p=Pudełko}}}} w „{{sr|#Funkcje typu jednostki|p=Pudełko}}”, on definiuje przestrzenie przedmiotowe, ale można użyć parametru dyskusji typu jednostki z wartością niepustą, wtedy wyświetli się nazwa przestrzeni nazw dyskusji. Również parametry typu jednostki nie powinno się podawać w dziecku w ramce, tylko w rodzicu w szablonie jako parametry, w którym ta ramka jest wywoływana, ale tutaj podano jedynie dla przykładu, jak najłatwiej sprawdzić działanie tych parametrów tej funkcji. Najpierw w funkcji nagłówku brane są parametry nazw przestrzeni nazw, a jeżeli ich nie ma, to parametry typu jednostki, a jeżeli nie ma, to generowane są nazwy na podstawie aktualnego modułu. === {{Code|p["Nazwa przedmiotowej przestrzeni nazw"](frame,...)}} === Funkcja pisze przedmiotową nazwę przestrzeni nazw jakikolwiek nazwy przestrzeni nazw (tzn. nazwę przedmiotową nazwy przestrzenie nazw, czyli nie dyskusji, zamieniana jest na nią samą, czyli identyfikator przestrzeni się nie zmienia, a dyskusji, nie przedmiotową, przekształca się na przedmiotową jej odpowiadającą, czyli w tym przypadku identyfikator przestrzeni zmniejsza się o numer mniej), według podanej w zmiennej {{Code|nazwa przestrzeni nazw}} dla pozycja bazowej w podanych parametrach szablonu rodzicu ramki dziecka, lub dla innej pozycji należy parametr podawać w formie {{Code|nazwa przestrzeni nazw 1}}, {{Code|nazwa przestrzeni nazw 2}}, {{Code|nazwa przestrzeni nazw 3}},..., lub te parametry można podać w postaci ogólnej {{Code|nazwa przestrzeni nazw i}}. Parametry podaje się w parametrach rodzica wywołania tej funkcji {{Code|{{m|Pudełko|Nazwa przedmiotowej przestrzeni nazw}}}} (ale ich nie trzeba podawać w dziecku, ale można) i w parametrach dziecka, jeśli chodzi o zmienną {{Code|numer jednostki}}, czyli np.: {{Code|{{m|Pudełko|Nazwa przedmiotowej przestrzeni nazw|numer jednostki{{=}}<jakaś liczba całkowita dodatnia>}}}}. Te parametry przestrzenne zamiast w rodzicu w szablonie można podać w ramce dziecka, wtedy parametry dziecka mają pierwszeństwo. Parametry przestrzenne mogą mogą być podane w postaci przestrzeni przedmiotowej lub dyskusji, ale ta funkcja zawsze ją zamienia na przedmiotową. Przestrzeń nazw z parametrów nazw przestrzennych może odpowiadać wartości przestrzeni głównej, to wtedy odpowiednia przestrzeń nazw z parametru nazwy jednostki się nie liczy w tej funkcji, aby się liczyła należy użyć funkcji {{Code|{{sr|#p["Nazwa przedmiotowej przestrzeni nazw 2"](frame,...)|p=Pudełko}}}}. Definicja skrótowa funkcji: <syntaxhighlight lang="lua"> p["Nazwa przedmiotowej przestrzeni nazw"]=function(frame,czy_uwzglednic_alternatywna_nazwe,i)...end; </syntaxhighlight> Wtedy ciało funkcji tej, czyli jego definicja w środku, jest: <syntaxhighlight lang="lua"> -- Jest liczony numer parametru nazwy przestrzeni nazw, domyslnie chodzi tu o numer bazowy parametrów przestrzennych; local numer_jednostki=i or frame.args["numer jednostki"]; local liczba_numer_jednostki=((numer_jednostki)and(tonumber(numer_jednostki))or 0); local pudelko_pomocne_modul=require("Module:Pudełko/Pomocne"); -- Liczy nazwę przestrzeni nazw przedmiotową na podstawie podanych parametrów; return pudelko_pomocne_modul.Nazwa_przestrzeni_nazw(frame,1, czy_uwzglednic_alternatywna_nazwe,liczba_numer_jednostki); </syntaxhighlight> Parametry funkcji: * {{Code|frame}} - tablica ramki tablicy transportu, * {{Code|czy_uwzglednic_alternatywna_nazwe}} - czy ma uwzględniać nazwę przestrzeni nazw domyślną szablonu, dostępne wartości: {{Code|false}}, w której nazwa domyślna nie jest uwzględniana wtedy, oraz {{Code|nil}} i {{Code|true}}, które oznaczają to samo, w tym jeżeli ona jest uwzględniana, wtedy jest brany parametr pierwszy dziecka, który musi istnieć przy takiej wartości tego parametru, tzn. {{Code|{{m|Pudełko|Nazwa przedmiotowej przestrzeni nazw|Dyskusja szablonu}}}} - ta nazwa domyślna zostanie zamieniona na przedmiotową, a jak ona by była przedmiotowa, to żadnej zamiany by nie było, a nazwa uzyskana z nazwy przestrzeni nazw z parametrów przestrzennych jest w takim przypadku błędna, to w takim razie brany jest ten parametr, a jeżeli ta nazwa domyślna jest błędna, czyli {{Code|{{m|Pudełko|Nazwa przedmiotowej przestrzeni nazw|Moja przestrzeń}}}}, wtedy funkcja zwraca stan błędu {{Code|(błąd)}}. * {{Code|i}} - numer zmiennej nazwy przestrzeni nazw. Funkcja wykorzystuje {{Code|{{sr|#p.Nazwa_przestrzeni_nazw(frame,...)|p=Pudełko/Pomocne}}}} do wyznaczania ogólnego nazwy przestrzeni nazw dla pozycji bazowej i numerkowej, tzn. dla pozycji: jeden, dwa, trzy,..., itd, i ich ogólnej. Parametr ramki tablicy transportu rodzica szablonu: * {{Code|nazwa przestrzeni nazw}}, {{Code|nazwa przestrzeni nazw 1}}, {{Code|nazwa przestrzeni nazw 2}}, {{Code|nazwa przestrzeni nazw 3}},..., {{Code|nazwa przestrzeni nazw i}} - nazwy przestrzeni nazw dla pozycji bazowej oraz zwykłej i ogólnej numerkowej, * {{Code|typ jednostki}}, {{Code|typ jednostki 1}}, {{Code|typ jednostki 2}}, {{Code|typ jednostki 3}},..., {{Code|typ jednostki i}} - typy jednostek, którym odpowiadają pewne przestrzenie przedmiotowe, dla pozycji bazowej, numerkowej i ogólnej. Parametry ramki tablicy transportu dziecka: * Parametry dziecka są takie same jak rodzica dla funkcji pudełkowej plus tu wymienione, * {{Code|numer jednostki}} - jak parametr {{Code|i}} nie został ustawiony, to wtedy liczy się ta zmienna. Przykłady: <syntaxhighlight lang="mediawiki"> {{Nazwa szablonu|nazwa przestrzeni nazw=Dyskusja Wikibooks|nazwa przestrzeni nazw 2=Dyskusja szablonu|nazwa przestrzeni nazw i=Dyskusja modułu}} </syntaxhighlight> W dziecku powiedzmy jest wywołanie, i szukamy nazwy przestrzeni nazw o numerze dwa, która nie została podana, ale istnieje za to jej wersji ogólna {{Code|nazwa przestrzeni nazw i}} i domyślna {{Code|nazwa przestrzeni nazw}}: <syntaxhighlight lang="mediawiki"> {{#invoke:Pudełko|Nazwa przedmiotowej przestrzeni nazw|numer jednostki=1}} </syntaxhighlight> Na podstawie powyższego przykładu otrzymamy wynik o schemacie, nie wyniku, bo tam nie ma zmiennej {{Code|nazwa przestrzeni nazw 1}}, ale jest {{Code|nazwa przestrzeni nazw i}}: <syntaxhighlight lang="mediawiki"> <!-- Ale nie "nazwa przestrzeni nazw", bo jej nie ma, ale za to istnieje "nazwa przestrzeni nazw i"; --> <!-- nazwa przestrzeni nazw 2=nazwa przestrzeni nazw i=Dyskusja modułu; --> <!-- Czyli wynik: --> Moduł <!-- Widzimy, że wygenerowała się nazwa przestrzeni nazw, którą jest przestrzeń przedmiotowa programowa przestrzeni dyskusji "Dyskusja modułu", którą również jest "Szablon" jego przestrzeni dyskusji "Dyskusja szablonu", a dla ich przestrzeni przedmiotowej, zamiast dyskusji, to samo przekształca się na to samo; --> </syntaxhighlight> Nie jest brana w tym powyższym przykładzie zmienna {{Code|nazwa przestrzeni nazw}}, bo jej nie ma, ale za to jest {{Code|nazwa przestrzeni nazw i}}, bo ona występuje jako parametr domyślny ogólny dla parametrów numerkowych. Przykłady w wikikodzie: * {{Code|{{m|Pudełko|Nazwa przedmiotowej przestrzeni nazw|numer jednostki{{=}}2}}}} → {{Tt|{{#invoke:Pudełko|Nazwa przedmiotowej przestrzeni nazw|numer jednostki=2}}}} * {{Code|{{m|Pudełko|Nazwa przedmiotowej przestrzeni nazw|Dyskusja szablonu|nazwa przestrzeni nazw i{{=}}Moja przestrzeń|numer jednostki{{=}}2}}}} → {{Tt|{{#invoke:Pudełko|Nazwa przedmiotowej przestrzeni nazw|Dyskusja szablonu|nazwa przestrzeni nazw i=Moja przestrzeń|numer jednostki=2}}}} * {{Code|{{m|Pudełko|Nazwa przedmiotowej przestrzeni nazw|nazwa przestrzeni nazw 2{{=}}Dyskusja szablonu|numer jednostki{{=}}2}}}} → {{Tt|{{#invoke:Pudełko|Nazwa przedmiotowej przestrzeni nazw|nazwa przestrzeni nazw 2=Dyskusja szablonu|numer jednostki=2}}}} * {{Code|{{m|Pudełko|Nazwa przedmiotowej przestrzeni nazw|nazwa przestrzeni nazw 2{{=}}Dyskusja szablonu|numer jednostki{{=}}2}}}} → {{Tt|{{#invoke:Pudełko|Nazwa przedmiotowej przestrzeni nazw|nazwa przestrzeni nazw i=Dyskusja szablonu|numer jednostki=2}}}} * {{Code|{{m|Pudełko|Nazwa przedmiotowej przestrzeni nazw|nazwa przestrzeni nazw{{=}}Dyskusja szablonu|numer jednostki{{=}}2}}}} → {{Tt|{{#invoke:Pudełko|Nazwa przedmiotowej przestrzeni nazw|nazwa przestrzeni nazw=Dyskusja szablonu|numer jednostki=2}}}} Powyżej dla przykładu podano parametry nie w rodzicu w szablonie, tylko w dziecku, jeśli chodzi o parametry nazw przestrzeni nazw, ale ich się za to nie powinno podawać w tych ramach, tylko w szablonach, w których wywoływane są te ramki pudełek {{Code|{{m|Pudełko}}}}, ale tak tutaj tak zrobiono by było najłatwiej sprawdzić działanie tego typu funkcji. Analogicznie możemy podawać parametry typu jednostki, np.: wywołaniu modułowym {{Code|{{m|Pudełko|Nazwa przedmiotowej przestrzeni nazw|typ jednostki 2{{=}}strona szablonu|numer jednostki{{=}}2}}}}, ale o tym więcej w rozdziałach {{Code|{{sr|# p["Przedmiotowy typ jednostki"](frame,i)|p=Pudełko}}}} w „{{sr|#Funkcje typu jednostki|p=Pudełko}}”, ale wtedy ta sama nazwa przestrzeni nazw reprezentowana przez {{Parametr|typ jednostki 2|strona szablonu}}, jest zamieniana na to samo, lepiej jest tutaj używać parametrów przestrzennych nazw niż typu jednostki, bo typ jednostki ma taką samą wartość dla przestrzeni przedmiotowej, co dyskusji. Tutaj parametr dyskusji typu jednostki bazowy i numerkowy ogólny, czy szczegółowy, nie gra roli, bo nawet, gdy wygenerujemy nazwę przestrzeni dyskusji za pomoca tego parametru, to i tak otrzymamy na samym końcu jego nazwę przedmiotową. Również parametry typu jednostki nie powinno się podawać w dziecku w ramce, tylko w rodzicu w szablonie jako parametry, w którym ta ramka jest wywoływana, ale tutaj podano jedynie dla przykładu, jak najłatwiej sprawdzić działanie tych parametrów tej funkcji. Najpierw w funkcji nagłówku brane są parametry nazw przestrzeni nazw, a jeżeli ich nie ma, to parametry typu jednostki, a jeżeli nie ma, to generowane są nazwy na podstawie aktualnego modułu. === {{Code|p["Nazwa przestrzeni nazw dyskusji"](frame,...)}} === Funkcja pisze nazwę przestrzeni nazw dyskusji jakikolwiek nazwy przestrzeni nazw (tzn. nazwę przedmiotową nazwy przestrzenie nazw, czyli nie dyskusji, zamieniana jest na dyskusji, czyli identyfikator przestrzeni się zmienia jeden wyżej, a dyskusji, nie przedmiotową, przekształca się na tą samą), według podanej w zmiennej {{Code|nazwa przestrzeni nazw}} dla pozycja bazowej w podanych parametrach szablonu rodzicu ramki dziecka, lub dla innej pozycji należy parametr podawać w formie {{Code|nazwa przestrzeni nazw 1}}, {{Code|nazwa przestrzeni nazw 2}}, {{Code|nazwa przestrzeni nazw 3}},..., lub te parametry można podać w postaci ogólnej {{Code|nazwa przestrzeni nazw i}}. Parametry podaje się w parametrach rodzica wywołania tej funkcji {{Code|{{m|Pudełko|Nazwa przestrzeni nazw dyskusji}}}} (ale ich nie trzeba podawać w dziecku, ale można) i w parametrach dziecka, jeśli chodzi o zmienną {{Code|numer jednostki}}, czyli np.: {{Code|{{m|Pudełko|Nazwa przestrzeni nazw dyskusji|numer jednostki{{=}}<jakaś liczba całkowita dodatnia>}}}}. Te parametry przestrzenne zamiast w rodzicu w szablonie można podać w ramce dziecka, wtedy parametry dziecka mają pierwszeństwo. Parametry przestrzenne mogą mogą być podane w postaci przestrzeni przedmiotowej lub dyskusji, ale ta funkcja zawsze ją zamienia na dyskusji. Przestrzeń nazw z parametrów nazw przestrzennych może odpowiadać wartości przestrzeni głównej, to wtedy odpowiednia przestrzeń nazw z parametru nazwy jednostki się nie liczy w tej funkcji, aby się liczyła należy użyć funkcji {{Code|{{sr|#p["Nazwa przestrzeni nazw dyskusji 2"](frame,...)|p=Pudełko}}}}. Definicja skrótowa funkcji: <syntaxhighlight lang="lua"> p["Nazwa przestrzeni nazw dyskusji"]=function(frame,czy_uwzglednic_alternatywna_nazwe,i)...end; </syntaxhighlight> Wtedy ciało funkcji tej, czyli jego definicja w środku, jest: <syntaxhighlight lang="lua"> -- Jest liczony numer parametru nazwy przestrzeni nazw, domyslnie chodzi tu o numer bazowy parametrów przestrzennych; local numer_jednostki=i or frame.args["numer jednostki"]; local liczba_numer_jednostki=((numer_jednostki)and(tonumber(numer_jednostki))or 0); local pudelko_pomocne_modul=require("Module:Pudełko/Pomocne"); -- Liczy nazwę przestrzeni nazw dyskusji na podstawie podanych parametrów; return pudelko_pomocne_modul.Nazwa_przestrzeni_nazw(frame,2, czy_uwzglednic_alternatywna_nazwe,liczba_numer_jednostki); </syntaxhighlight> Parametry funkcji: * {{Code|frame}} - tablica ramki tablicy transportu, * {{Code|czy_uwzglednic_alternatywna_nazwe}} - czy ma uwzględniać nazwę przestrzeni nazw domyślną szablonu, dostępne wartości: {{Code|false}}, w której nazwa domyślna nie jest uwzględniana wtedy, oraz {{Code|nil}} i {{Code|true}}, które oznaczają to samo, w tym jeżeli ona jest uwzględniana, wtedy jest brany parametr pierwszy dziecka, który musi istnieć przy takiej wartości tego parametru, tzn. {{Code|{{m|Pudełko|Nazwa przestrzeni nazw dyskusji|Szablon}}}} - ta nazwa domyślna zostanie przekształcona na dyskusji, a jeżeli ona by była dyskusji, to nie byłoby żadnego przekształcenia, a nazwa uzyskana nazwy przestrzeni nazw z parametrów przestrzennych jest w takim przypadku błędna, to w takim razie brany jest ten parametr, a jeżeli nazwa domyślna jest błędna, czyli {{Code|{{m|Pudełko|Nazwa przestrzeni nazw dyskusji|Moja przestrzeń}}}}, wtedy funkcja zwraca stan błędu {{Code|(błąd)}}. * {{Code|i}} - numer zmiennej nazwy przestrzeni nazw. Funkcja wykorzystuje {{Code|{{sr|#p.Nazwa_przestrzeni_nazw(frame,...)|p=Pudełko/Pomocne}}}} do wyznaczania ogólnego nazwy przestrzeni nazw dla pozycji bazowej i numerkowej, tzn. dla pozycji: jeden, dwa, trzy,..., itd, i ich ogólnej. Parametr ramki tablicy transportu rodzica szablonu: * {{Code|nazwa przestrzeni nazw}}, {{Code|nazwa przestrzeni nazw 1}}, {{Code|nazwa przestrzeni nazw 2}}, {{Code|nazwa przestrzeni nazw 3}},..., {{Code|nazwa przestrzeni nazw i}} - nazwy przestrzeni nazw dla pozycji bazowej oraz zwykłej i ogólnej numerkowej, * {{Code|typ jednostki}}, {{Code|typ jednostki 1}}, {{Code|typ jednostki 2}}, {{Code|typ jednostki 3}},..., {{Code|typ jednostki i}} - typy jednostek, którym odpowiadają pewne przestrzenie przedmiotowe, dla pozycji bazowej, numerkowej i ogólnej. Parametry ramki tablicy transportu dziecka: * Parametry dziecka są takie same jak rodzica dla funkcji pudełkowej plus tu wymienione, * {{Code|numer jednostki}} - jak parametr {{Code|i}} nie został ustawiony, to wtedy liczy się ta zmienna. Przykłady: <syntaxhighlight lang="mediawiki"> {{Nazwa szablonu|nazwa przestrzeni nazw=Wikibooks|nazwa przestrzeni nazw 2=Szablon|nazwa przestrzeni nazw i=Moduł}} </syntaxhighlight> W dziecku powiedzmy jest wywołanie, i szukamy nazwy przestrzeni nazw o numerze dwa, która nie została podana, ale istnieje za to jej wersji ogólna {{Code|nazwa przestrzeni nazw i}} i domyślna {{Code|nazwa przestrzeni nazw}}: <syntaxhighlight lang="mediawiki"> {{#invoke:Pudełko|Nazwa przestrzeni nazw dyskusji|numer jednostki=1}} </syntaxhighlight> Na podstawie powyższego przykładu otrzymamy wynik o schemacie, nie wyniku, bo tam nie ma zmiennej {{Code|nazwa przestrzeni nazw 1}}, ale jest {{Code|nazwa przestrzeni nazw i}}: <syntaxhighlight lang="mediawiki"> <!-- Ale nie "nazwa przestrzeni nazw", bo jej nie ma, ale za to istnieje "nazwa przestrzeni nazw i"; --> <!-- nazwa przestrzeni nazw 2=nazwa przestrzeni nazw i=Moduł; --> <!-- Czyli wynik: --> Dyskusja modułu <!-- Widzimy, że wygenerowała się nazwa przestrzeni nazw, którą jest przestrzeń dyskusji przestrzeni programowej przestrzeni przedmiotowej "Moduł", którą również jest "Szablon" jego przestrzeni dyskusji "Dyskusja szablonu", a dla ich przestrzeni przedmiotowej, zamiast dyskusji, to przekształca się na dyskusji jej odpowiadającą; --> </syntaxhighlight> Nie jest brana w tym powyższym przykładzie zmienna {{Code|nazwa przestrzeni nazw}}, bo jej nie ma, ale za to jest {{Code|nazwa przestrzeni nazw i}}, bo ona występuje jako parametr domyślny ogólny dla parametrów numerkowych. Przykłady w wikikodzie: * {{Code|{{m|Pudełko|Nazwa przestrzeni nazw dyskusji|numer jednostki{{=}}2}}}} → {{Tt|{{#invoke:Pudełko|Nazwa przestrzeni nazw dyskusji|numer jednostki=2}}}} * {{Code|{{m|Pudełko|Nazwa przestrzeni nazw dyskusji|Szablon|nazwa przestrzeni nazw i{{=}}Moja przestrzeń|numer jednostki{{=}}2}}}} → {{Tt|{{#invoke:Pudełko|Nazwa przestrzeni nazw dyskusji|Szablon|nazwa przestrzeni nazw i=Moja przestrzeń|numer jednostki=2}}}} * {{Code|{{m|Pudełko|Nazwa przestrzeni nazw dyskusji|nazwa przestrzeni nazw 2{{=}}Szablon|numer jednostki{{=}}2}}}} → {{Tt|{{#invoke:Pudełko|Nazwa przestrzeni nazw dyskusji|nazwa przestrzeni nazw 2=Szablon|numer jednostki=2}}}} * {{Code|{{m|Pudełko|Nazwa przestrzeni nazw dyskusji|nazwa przestrzeni nazw 2{{=}}Szablon|numer jednostki{{=}}2}}}} → {{Tt|{{#invoke:Pudełko|Nazwa przestrzeni nazw dyskusji|nazwa przestrzeni nazw i=Szablon|numer jednostki=2}}}} * {{Code|{{m|Pudełko|Nazwa przestrzeni nazw dyskusji|nazwa przestrzeni nazw{{=}}Szablon|numer jednostki{{=}}2}}}} → {{Tt|{{#invoke:Pudełko|Nazwa przestrzeni nazw dyskusji|nazwa przestrzeni nazw=Szablon|numer jednostki=2}}}} Powyżej dla przykładu podano parametry nie w rodzicu w szablonie, tylko w dziecku, jeśli chodzi o parametry nazw przestrzeni nazw, ale ich się za to nie powinno podawać w tych ramach, tylko w szablonach, w których wywoływane są te ramki pudełek {{Code|{{m|Pudełko}}}}, ale tak tutaj tak zrobiono by było najłatwiej sprawdzić działanie tego typu funkcji. Analogicznie możemy podawać parametry typu jednostki, np.: wywołaniu modułowym {{Code|{{m|Pudełko|Nazwa przestrzeni nazw dyskusji|typ jednostki 2{{=}}strona szablonu|numer jednostki{{=}}2}}}}, ale o tym więcej w rozdziałach {{Code|{{sr|# p["Dyskusyjny typ jednostki"](frame,i)|p=Pudełko}}}} w „{{sr|#Funkcje typu jednostki|p=Pudełko}}”, ale wtedy nazwa przestrzeni nazw reprezentowana przez {{Parametr|typ jednostki 2|strona szablonu}}, jest zamieniana na nazwę przestrzeni nazw dyskusji. Parametr dyskusji typu jednostki bazowy lub dla danego numerka ogólny, czy szczegółowy, nie gra roli. Również parametry typu jednostki nie powinno się podawać w dziecku w ramce, tylko w rodzicu w szablonie jako parametry, w którym ta ramka jest wywoływana, ale tutaj podano jedynie dla przykładu, jak najłatwiej sprawdzić działanie tych parametrów tej funkcji. Najpierw w funkcji nagłówku brane są parametry nazw przestrzeni nazw, a jeżeli ich nie ma, to parametry typu jednostki, a jeżeli nie ma, to generowane są nazwy na podstawie aktualnego modułu. == Funkcje nazw przestrzeni nazw drugiej wersji == === {{Code|p["Nazwa przestrzeni nazw 2"](frame,...)}} === Funkcja pisze nazwę przestrzeni nazw, niezależnie, czy to jest przedmiotowa, czy dyskusji, według, i nie zawsze tylko, podanej w zmiennej {{Code|nazwa przestrzeni nazw}} dla pozycja bazowej w podanych parametrach szablonu rodzicu ramki dziecka, lub dla innej pozycji należy parametr podawać w formie {{Code|nazwa przestrzeni nazw 1}}, {{Code|nazwa przestrzeni nazw 2}}, {{Code|nazwa przestrzeni nazw 3}},..., lub te parametry można podać w postaci ogólnej {{Code|nazwa przestrzeni nazw i}}. W tej funkcji trzeba też podawać parametry nazwy jednostek {{Code|nazwa jednostki}}, {{Code|nazwa jednostki 1}}, {{Code|nazwa jednostki 2}}, {{Code|nazwa jednostki 3}},... Parametry podaje się w parametrach rodzica wywołania tej funkcji {{Code|{{m|Pudełko|Nazwa przestrzeni nazw 2}}}} (ale ich nie trzeba podawać w dziecku, ale można) i w parametrach dziecka, jeśli chodzi o zmienną {{Code|numer jednostki}}, czyli np.: {{Code|{{m|Pudełko|Nazwa przestrzeni nazw 2|numer jednostki{{=}}<jakaś liczba całkowita dodatnia>}}}}. Te parametry przestrzenne zamiast w rodzicu w szablonie można podać w ramce dziecka, wtedy parametry dziecka mają pierwszeństwo. Przestrzeń nazw z parametrów nazw przestrzennych może odpowiadać wartości przestrzeni głównej, to wtedy odpowiednia przestrzeń nazw z parametru nazwy jednostki się liczy w tej funkcji, wtedy jest liczona nazwa przestrzeni nazw z tego parametru. Gdy parametry przestrzenne lub typ jednostki w drugim podejściu nie wskazują na przestrzeń główną, to wtedy działanie tej funkcji jest podobne do {{Code|{{sr|#p["Nazwa przestrzeni nazw"](frame,...)|p=Pudełko}}}}. Definicja skrótowa funkcji: <syntaxhighlight lang="lua"> p["Nazwa przestrzeni nazw 2"]=function(frame,czy_uwzglednic_alternatywna_nazwe,i)...end; </syntaxhighlight> Wtedy ciało funkcji tej, czyli jego definicja w środku, jest: <syntaxhighlight lang="lua"> local pudelko_pomocne_modul=require("Module:Pudełko/Pomocne"); -- Liczy nazwę przestrzeni nazw, jeżeli z parametrów przestrzennych przestrzeń wskazuje na główną, to wtedy jest liczona przestrzeń nazw z nazwy jednostki; return pudelko_pomocne_modul.Nazwa_przestrzeni_nazw_2(frame,czy_uwzglednic_alternatywna_nazwe,i) </syntaxhighlight> Parametry funkcji: * {{Code|frame}} - tablica ramki tablicy transportu, * {{Code|czy_uwzglednic_alternatywna_nazwe}} - czy ma uwzględniać nazwę przestrzeni nazw domyślną szablonu, dostępne wartości: {{Code|false}}, w której nazwa domyślna nie jest uwzględniana wtedy, oraz {{Code|nil}} i {{Code|true}}, które oznaczają to samo, w tym jeżeli ona jest uwzględniana, wtedy jest brany parametr pierwszy dziecka, który musi istnieć przy takiej wartości tego parametru, tzn. {{Code|{{m|Pudełko|Nazwa przestrzeni nazw 2|Szablon}}}}, a nazwa uzyskana nazwy przestrzeni nazw jest w takim przypadku błędna, a jeżeli nazwa domyślna jest błędna, czyli {{Code|{{m|Pudełko|Nazwa przestrzeni nazw 2|Moja przestrzeń}}}}, wtedy funkcja zwraca stan błędu {{Code|(błąd)}}. * {{Code|i}} - numer zmiennej nazwy przestrzeni nazw. Funkcja wykorzystuje {{Code|{{sr|#p.Nazwa_przestrzeni_nazw_2(frame,...)|p=Pudełko/Pomocne}}}} do wyznaczania ogólnego nazwy przestrzeni nazw dla pozycji bazowej i numerkowej, tzn. dla pozycji: jeden, dwa, trzy,..., itd, i ich ogólnej. Parametr ramki tablicy transportu rodzica szablonu: * {{Code|nazwa przestrzeni nazw}}, {{Code|nazwa przestrzeni nazw 1}}, {{Code|nazwa przestrzeni nazw 2}}, {{Code|nazwa przestrzeni nazw 3}},..., {{Code|nazwa przestrzeni nazw i}} - nazwy przestrzeni nazw dla pozycji bazowej oraz zwykłej i ogólnej numerkowej, * {{Code|nazwa jednostki}}, {{Code|nazwa jednostki 1}}, {{Code|nazwa jednostki 2}}, {{Code|nazwa jednostki 3}},... - nazwy jednostek dla pozycji bazowej i numerkowej, * {{Code|typ jednostki}}, {{Code|typ jednostki 1}}, {{Code|typ jednostki 2}}, {{Code|typ jednostki 3}},..., {{Code|typ jednostki i}} - typy jednostek, którym odpowiadają pewne przestrzenie przedmiotowe, dla pozycji bazowej, numerkowej i ogólnej, ** {{Code|dyskusja typu jednostki}}, {{Code|dyskusja typu jednostki 1}}, {{Code|dyskusja typ jednostki 2}}, {{Code|dyskusja typ jednostki 3}},..., {{Code|dyskusja typ jednostki i}} - czy dany typ jednostki ma przedstawiać, jeśli niepusta, przestrzeń dyskusji dla pozycji bazowej, numerkowej i ogólnej. Parametry ramki tablicy transportu dziecka: * Parametry dziecka są takie same jak rodzica dla funkcji pudełkowej plus tu wymienione, * {{Code|numer jednostki}} - jak parametr {{Code|i}} nie został ustawiony, to wtedy liczy się ta zmienna. Przykłady: <syntaxhighlight lang="mediawiki"> {{Nazwa szablonu|nazwa przestrzeni nazw=Wikibooks|nazwa przestrzeni nazw 1=Szablon|nazwa przestrzeni nazw i=|nazwa jednostki 2=Wikibooks:Strona}} </syntaxhighlight> W dziecku powiedzmy jest wywołanie, i szukamy nazwy przestrzeni nazw o numerze dwa, która została podana, ale istnieje za to jej wersji ogólna {{Code|nazwa przestrzeni nazw i}} i domyślna {{Code|nazwa przestrzeni nazw}}, ale wtedy dla tego numerkowego liczy się to ogólne z {{Code| i}}, a ponieważ ta nazwa jest pusta, więc będziemy liczyli nazwę przestrzeni nazw z {{Code|nazwa jednostki 2}}: <syntaxhighlight lang="mediawiki"> {{#invoke:Pudełko|Nazwa przestrzeni nazw 2|numer jednostki=2}} </syntaxhighlight> Na podstawie powyższego przykładu otrzymamy wynik o schemacie, nie wyniku, bo tam nie ma zmiennej {{Code|nazwa przestrzeni nazw 1}}, ale jest {{Code|nazwa przestrzeni nazw i}}: <syntaxhighlight lang="mediawiki"> <!-- Ale nie "nazwa przestrzeni nazw 2", bo jej nie ma, ale za to istnieje "nazwa przestrzeni nazw i"; --> <!-- nazwa przestrzeni nazw 2=nazwa przestrzeni nazw i="", a nazwa jednostki 2="Wikibooks:Strona"; --> <!-- Czyli wynik: --> Wikibooks <!-- Widzimy, że wygenerowała się nazwa przestrzeni nazw, którą jest przestrzeń nieprogramowa, ale projektu, wychodząca z nazwy jednostek w tym przypadku z "nazwa jednostki 2"; --> </syntaxhighlight> Nie jest brana w tym powyższym przykładzie zmienna {{Code|nazwa przestrzeni nazw}}, bo jej nie ma, ale za to jest {{Code|nazwa przestrzeni nazw i}}, bo ona występuje jako parametr domyślny ogólny dla parametrów numerkowych. Tytaj jest używana jest zmienna {{Code|nazwa jednostki 2}} do wygenerowania ostatecznego wyniku, bo jak można zauważyć, parametry przestrzenne wskazują na przestrzeń główną, a nazwy jednostek już nie. Przykłady w wikikodzie: * {{Code|{{m|Pudełko|Nazwa przestrzeni nazw 2|numer jednostki{{=}}2}}}} → {{Tt|{{#invoke:Pudełko|Nazwa przestrzeni nazw 2|numer jednostki=2}}}} * {{Code|{{m|Pudełko|Nazwa przestrzeni nazw 2|Szablon|nazwa przestrzeni nazw i{{=}}Moja przestrzeń|numer jednostki{{=}}2}}}} → {{Tt|{{#invoke:Pudełko|Nazwa przestrzeni nazw 2|Szablon|nazwa przestrzeni nazw i=Moja przestrzeń|numer jednostki=2}}}} * {{Code|{{m|Pudełko|Nazwa przestrzeni nazw 2|nazwa przestrzeni nazw 2{{=}}|nazwa jednostki 2{{=}}Szablon:Strona|numer jednostki{{=}}2}}}} → {{Tt|{{#invoke:Pudełko|Nazwa przestrzeni nazw 2|nazwa przestrzeni nazw 2=|nazwa jednostki 2=Szablon:Strona|numer jednostki=2}}}} * {{Code|{{m|Pudełko|Nazwa przestrzeni nazw 2|nazwa przestrzeni nazw i{{=}}|nazwa jednostki 2{{=}}Szablon:Strona|numer jednostki{{=}}2}}}} → {{Tt|{{#invoke:Pudełko|Nazwa przestrzeni nazw 2|nazwa przestrzeni nazw i=|nazwa jednostki 2=Szablon:Strona|numer jednostki=2}}}} * {{Code|{{m|Pudełko|Nazwa przestrzeni nazw 2|Szablon|nazwa przestrzeni nazw{{=}}|nazwa jednostki 2{{=}}Wikibooks:Strona|numer jednostki{{=}}2}}}} → {{Tt|{{#invoke:Pudełko|Nazwa przestrzeni nazw 2|Szablon|nazwa przestrzeni nazw=|nazwa jednostki 2=Wikibooks:Strona|numer jednostki=2}}}} Powyżej dla przykładu podano parametry nie w rodzicu w szablonie, tylko w dziecku, jeśli chodzi o parametry nazw przestrzeni nazw i nazw jednostek, ale ich się za to nie powinno podawać w tych ramach, tylko w szablonach, w których wywoływane są te ramki pudełek {{Code|{{m|Pudełko}}}}, ale tak tutaj tak zrobiono by było najłatwiej sprawdzić działanie tego typu funkcji. Analogicznie możemy podawać parametry typu jednostki, np.: wywołaniu modułowym {{Code|{{m|Pudełko|Nazwa przestrzeni nazw 2|typ jednostki 2{{=}}Podręcznik|nazwa jednostki 2{{=}}Szablon:Strona|numer jednostki{{=}}2}}}} (ale wtedy jest brana przestrzeń nazw z nazwy jednostki), ale o tym więcej w rozdziałach {{Code|{{sr|#p["Typ jednostki 2"](frame,i)|p=Pudełko}}}} w „{{sr|#Funkcje typu jednostki|p=Pudełko}}”, on definiuje przestrzenie przedmiotowe, ale można użyć parametru dyskusji typu jednostki z wartością niepustą, wtedy wyświetli się nazwa przestrzeni nazw dyskusji. Jeżeli typ jednostki wskazuje na przestrzeń nazw główną, wtedy się liczą parametry nazw jednostek. Również parametry typu jednostki nie powinno się podawać w dziecku w ramce, tylko w rodzicu w szablonie jako parametry, w którym ta ramka jest wywoływana, ale tutaj podano jedynie dla przykładu, jak najłatwiej sprawdzić działanie tych parametrów tej funkcji. Najpierw w funkcji nagłówku brane są parametry nazw przestrzeni nazw, a jeżeli ich nie ma, to parametry typu jednostki, a jeżeli nie ma lub parametry przestrzenne wskazują na przestrzeń główną, i nie ma nazwy jednostki, to generowane są nazwy tej funkcji na podstawie aktualnej strony. === {{Code|p["Nazwa przedmiotowej przestrzeni nazw 2"](frame,...)}} === Funkcja pisze przedmiotową nazwę przestrzeni nazw jakikolwiek nazwy przestrzeni nazw (tzn. nazwę przedmiotową nazwy przestrzenie nazw, czyli nie dyskusji, zamieniana jest na nią samą, czyli identyfikator przestrzeni się nie zmienia, a dyskusji, nie przedmiotową, przekształca się na przedmiotową jej odpowiadającą, czyli w tym przypadku identyfikator przestrzeni zmniejsza się o numer mniej), według, i nie zawsze tylko, podanej w zmiennej {{Code|nazwa przestrzeni nazw}} dla pozycja bazowej w podanych parametrach szablonu rodzicu ramki dziecka, lub dla innej pozycji należy parametr podawać w formie {{Code|nazwa przestrzeni nazw 1}}, {{Code|nazwa przestrzeni nazw 2}}, {{Code|nazwa przestrzeni nazw 3}},..., lub te parametry można podać w postaci ogólnej {{Code|nazwa przestrzeni nazw i}}. W tej funkcji trzeba też podawać parametry nazwy jednostek {{Code|nazwa jednostki}}, {{Code|nazwa jednostki 1}}, {{Code|nazwa jednostki 2}}, {{Code|nazwa jednostki 3}},... Parametry podaje się w parametrach rodzica wywołania tej funkcji {{Code|{{m|Pudełko|Nazwa przedmiotowej przestrzeni nazw 2}}}} (ale ich nie trzeba podawać w dziecku, ale można) i w parametrach dziecka, jeśli chodzi o zmienną {{Code|numer jednostki}}, czyli np.: {{Code|{{m|Pudełko|Nazwa przedmiotowej przestrzeni nazw 2|numer jednostki{{=}}<jakaś liczba całkowita dodatnia>}}}}. Te parametry przestrzenne zamiast w rodzicu w szablonie można podać w ramce dziecka, wtedy parametry dziecka mają pierwszeństwo. Przestrzeń nazw z parametrów nazw przestrzennych po przekształceniu na przedmiotową może odpowiadać wartości przestrzeni głównej, to wtedy odpowiednia przestrzeń nazw z parametru nazwy jednostki się liczy w tej funkcji, wtedy jest liczona nazwa przestrzeni nazw z tego parametru. Gdy parametry przestrzenne lub typ jednostki w drugim podejściu nie wskazują na przestrzeń główną, to wtedy działanie tej funkcji jest podobne do {{Code|{{sr|#p["Nazwa przedmiotowej przestrzeni nazw"](frame,...)|p=Pudełko}}}}. Definicja skrótowa funkcji: <syntaxhighlight lang="lua"> p["Nazwa przedmiotowej przestrzeni nazw 2"]=function(frame,czy_uwzglednic_alternatywna_nazwe,i)...end; </syntaxhighlight> Wtedy ciało funkcji tej, czyli jego definicja w środku, jest: <syntaxhighlight lang="lua"> local pudelko_pomocne_modul=require("Module:Pudełko/Pomocne"); return pudelko_pomocne_modul.Nazwa_przestrzeni_nazw_przedmiotowa_dyskusji_2(frame,czy_uwzglednic_alternatywna_nazwe,i,"przedmiotowa"); </syntaxhighlight> Parametry funkcji: * {{Code|frame}} - tablica ramki tablicy transportu, * {{Code|czy_uwzglednic_alternatywna_nazwe}} - czy ma uwzględniać nazwę przestrzeni nazw domyślną szablonu, dostępne wartości: {{Code|false}}, w której nazwa domyślna nie jest uwzględniana wtedy, oraz {{Code|nil}} i {{Code|true}}, które oznaczają to samo, w tym jeżeli ona jest uwzględniana, wtedy jest brany parametr pierwszy dziecka, który musi istnieć przy takiej wartości tego parametru, tzn. {{Code|{{m|Pudełko|Nazwa przedmiotowej przestrzeni nazw 2|Szablon}}}}, a nazwa uzyskana nazwy przestrzeni nazw jest w takim przypadku błędna, a jeżeli nazwa domyślna jest błędna, czyli {{Code|{{m|Pudełko|Nazwa przedmiotowej przestrzeni nazw 2|Moja przestrzeń}}}}, wtedy funkcja zwraca stan błędu {{Code|(błąd)}}. * {{Code|i}} - numer zmiennej nazwy przestrzeni nazw. Funkcja wykorzystuje {{Code|{{sr|#p.Nazwa_przestrzeni_nazw_przedmiotowa_dyskusji_2(frame,...)|p=Pudełko/Pomocne}}}} do wyznaczania ogólnego nazwy przestrzeni nazw dla pozycji bazowej i numerkowej, tzn. dla pozycji: jeden, dwa, trzy,..., itd, i ich ogólnej. Parametr ramki tablicy transportu rodzica szablonu: * {{Code|nazwa przestrzeni nazw}}, {{Code|nazwa przestrzeni nazw 1}}, {{Code|nazwa przestrzeni nazw 2}}, {{Code|nazwa przestrzeni nazw 3}},..., {{Code|nazwa przestrzeni nazw i}} - nazwy przestrzeni nazw dla pozycji bazowej oraz zwykłej i ogólnej numerkowej, * {{Code|nazwa jednostki}}, {{Code|nazwa jednostki 1}}, {{Code|nazwa jednostki 2}}, {{Code|nazwa jednostki 3}},... - nazwy jednostek dla pozycji bazowej i numerkowej, * {{Code|typ jednostki}}, {{Code|typ jednostki 1}}, {{Code|typ jednostki 2}}, {{Code|typ jednostki 3}},..., {{Code|typ jednostki i}} - typy jednostek, którym odpowiadają pewne przestrzenie przedmiotowe, dla pozycji bazowej, numerkowej i ogólnej. Parametry ramki tablicy transportu dziecka: * Parametry dziecka są takie same jak rodzica dla funkcji pudełkowej plus tu wymienione, * {{Code|numer jednostki}} - jak parametr {{Code|i}} nie został ustawiony, to wtedy liczy się ta zmienna. Przykłady: <syntaxhighlight lang="mediawiki"> {{Nazwa szablonu|nazwa przestrzeni nazw=Wikibooks|nazwa przestrzeni nazw 1=Szablon|nazwa przestrzeni nazw i=|nazwa jednostki 2=Dyskusja Wikibooks:Strona}} </syntaxhighlight> W dziecku powiedzmy jest wywołanie, i szukamy nazwy przestrzeni nazw o numerze dwa, która została podana, ale istnieje za to jej wersji ogólna {{Code|nazwa przestrzeni nazw i}} i domyślna {{Code|nazwa przestrzeni nazw}}, ale wtedy dla tego numerkowego liczy się to ogólne z {{Code| i}}, a ponieważ ta nazwa jest pusta, więc będziemy liczyli nazwę przestrzeni nazw z {{Code|nazwa jednostki 2}}: <syntaxhighlight lang="mediawiki"> {{#invoke:Pudełko|Nazwa przedmiotowej przestrzeni nazw 2|numer jednostki=2}} </syntaxhighlight> Na podstawie powyższego przykładu otrzymamy wynik o schemacie, nie wyniku, bo tam nie ma zmiennej {{Code|nazwa przestrzeni nazw 1}}, ale jest {{Code|nazwa przestrzeni nazw i}}: <syntaxhighlight lang="mediawiki"> <!-- Ale nie "nazwa przestrzeni nazw 2", bo jej nie ma, ale za to istnieje "nazwa przestrzeni nazw i"; --> <!-- nazwa przestrzeni nazw 2=nazwa przestrzeni nazw i="", a nazwa jednostki 2="Dyskusja Wikibooks:Strona"; --> <!-- Czyli wynik: --> Wikibooks <!-- Widzimy, że wygenerowała się nazwa przestrzeni nazw, którą jest przestrzeń nieprogramowa, ale projektu, wychodząca z nazwy jednostek w tym przypadku z "nazwa jednostki 2"; --> </syntaxhighlight> Nie jest brana w tym powyższym przykładzie zmienna {{Code|nazwa przestrzeni nazw}}, bo jej nie ma, ale za to jest {{Code|nazwa przestrzeni nazw i}}, bo ona występuje jako parametr domyślny ogólny dla parametrów numerkowych. Tytaj jest używana jest zmienna {{Code|nazwa jednostki 2}} do wygenerowania ostatecznego wyniku, bo jak można zauważyć, parametry przestrzenne wskazują na przestrzeń główną, a nazwy jednostek już nie. Przykłady w wikikodzie: * {{Code|{{m|Pudełko|Nazwa przedmiotowej przestrzeni nazw 2|numer jednostki{{=}}2}}}} → {{Tt|{{#invoke:Pudełko|Nazwa przedmiotowej przestrzeni nazw 2|numer jednostki=2}}}} * {{Code|{{m|Pudełko|Nazwa przedmiotowej przestrzeni nazw 2|Dyskusja szablonu|nazwa przestrzeni nazw i{{=}}Moja przestrzeń|numer jednostki{{=}}2}}}} → {{Tt|{{#invoke:Pudełko|Nazwa przedmiotowej przestrzeni nazw 2|Dyskusja szablonu|nazwa przestrzeni nazw i=Moja przestrzeń|numer jednostki=2}}}} * {{Code|{{m|Pudełko|Nazwa przedmiotowej przestrzeni nazw 2|nazwa przestrzeni nazw 2{{=}}Dyskusja|nazwa jednostki 2{{=}}Dyskusja szablonu:Strona|numer jednostki{{=}}2}}}} → {{Tt|{{#invoke:Pudełko|Nazwa przedmiotowej przestrzeni nazw 2|nazwa przestrzeni nazw 2=Dyskusja|nazwa jednostki 2=Dyskusja szablonu:Strona|numer jednostki=2}}}} * {{Code|{{m|Pudełko|Nazwa przedmiotowej przestrzeni nazw 2|nazwa przestrzeni nazw i{{=}}Dyskusja|nazwa jednostki 2{{=}}Dyskusja szablonu:Strona|numer jednostki{{=}}2}}}} → {{Tt|{{#invoke:Pudełko|Nazwa przedmiotowej przestrzeni nazw 2|nazwa przestrzeni nazw i=Dyskusja|nazwa jednostki 2=Dyskusja szablonu:Strona|numer jednostki=2}}}} * {{Code|{{m|Pudełko|Nazwa przedmiotowej przestrzeni nazw 2|Dyskusja szablonu|nazwa przestrzeni nazw{{=}}Dyskusja|nazwa jednostki 2{{=}}Wikibooks:Strona|numer jednostki{{=}}2}}}} → {{Tt|{{#invoke:Pudełko|Nazwa przedmiotowej przestrzeni nazw 2|Dyskusja szablonu|nazwa przestrzeni nazw=Dyskusja|nazwa jednostki 2=Dyskusja Wikibooks:Strona|numer jednostki=2}}}} Powyżej dla przykładu podano parametry nie w rodzicu w szablonie, tylko w dziecku, jeśli chodzi o parametry nazw przestrzeni nazw i nazw jednostek, ale ich się za to nie powinno podawać w tych ramach, tylko w szablonach, w których wywoływane są te ramki pudełek {{Code|{{m|Pudełko}}}}, ale tak tutaj tak zrobiono by było najłatwiej sprawdzić działanie tego typu funkcji. Analogicznie możemy podawać parametry typu jednostki, np.: wywołaniu modułowym {{Code|{{m|Pudełko|Nazwa przedmiotowej przestrzeni nazw 2|typ jednostki 2{{=}}Podręcznik|nazwa jednostki 2{{=}}Dyskusja szablonu:Strona|numer jednostki{{=}}2}}}} (ale wtedy jest brana przestrzeń nazw z nazwy jednostki), ale o tym więcej w rozdziałach {{Code|{{sr|# p["Przedmiotowy typ jednostki 2"](frame,i)|p=Pudełko}}}} w „{{sr|#Funkcje typu jednostki|p=Pudełko}}”, on definiuje przestrzenie przedmiotowe, ale można użyć parametru dyskusji typu jednostki z wartością niepustą, pustą, czy nawet jej nie podamy, wtedy wyświetli się nazwa przestrzeni nazw przedmiotowej. Jeżeli typ jednostki wskazuje na przestrzeń nazw główną, wtedy się liczą parametry nazw jednostek. Również parametry typu jednostki nie powinno się podawać w dziecku w ramce, tylko w rodzicu w szablonie jako parametry, w którym ta ramka jest wywoływana, ale tutaj podano jedynie dla przykładu, jak najłatwiej sprawdzić działanie tych parametrów tej funkcji. Najpierw w funkcji nagłówku brane są parametry nazw przestrzeni nazw, a jeżeli ich nie ma, to parametry typu jednostki, a jeżeli nie ma lub parametry przestrzenne wskazują na przestrzeń główną, i nie ma nazwy jednostki, to generowane są nazwy tej funkcji na podstawie aktualnej strony. === {{Code|p["Nazwa przestrzeni nazw dyskusji 2"](frame,...)}} === Funkcja pisze nazwę przestrzeni nazw dyskusji jakikolwiek nazwy przestrzeni nazw (tzn. nazwę dyskusji nazwy przestrzenie nazw, czyli nie przedmiotowej, zamieniana jest na nią samą, czyli identyfikator przestrzeni się nie zmienia, a przedmiotową, nie dyskusji, przekształca się na dyskusji jej odpowiadającą, czyli w tym przypadku identyfikator przestrzeni zwiększa się o numer więcej), według, i nie zawsze tylko, podanej w zmiennej {{Code|nazwa przestrzeni nazw}} dla pozycja bazowej w podanych parametrach szablonu rodzicu ramki dziecka, lub dla innej pozycji należy parametr podawać w formie {{Code|nazwa przestrzeni nazw 1}}, {{Code|nazwa przestrzeni nazw 2}}, {{Code|nazwa przestrzeni nazw 3}},..., lub te parametry można podać w postaci ogólnej {{Code|nazwa przestrzeni nazw i}}. W tej funkcji trzeba też podawać parametry nazwy jednostek {{Code|nazwa jednostki}}, {{Code|nazwa jednostki 1}}, {{Code|nazwa jednostki 2}}, {{Code|nazwa jednostki 3}},... Parametry podaje się w parametrach rodzica wywołania tej funkcji {{Code|{{m|Pudełko|Nazwa przestrzeni nazw dyskusji 2}}}} (ale ich nie trzeba podawać w dziecku, ale można) i w parametrach dziecka, jeśli chodzi o zmienną {{Code|numer jednostki}}, czyli np.: {{Code|{{m|Pudełko|Nazwa przestrzeni nazw dyskusji 2|numer jednostki{{=}}<jakaś liczba całkowita dodatnia>}}}}. Te parametry przestrzenne zamiast w rodzicu w szablonie można podać w ramce dziecka, wtedy parametry dziecka mają pierwszeństwo. Przestrzeń nazw z parametrów nazw przestrzennych po przekształceniu na przedmiotową może odpowiadać wartości przestrzeni głównej, to wtedy odpowiednia przestrzeń nazw z parametru nazwy jednostki się liczy w tej funkcji, wtedy jest liczona nazwa przestrzeni nazw z tego parametru. Gdy parametry przestrzenne lub typ jednostki w drugim podejściu nie wskazują na przestrzeń główną, to wtedy działanie tej funkcji jest podobne do {{Code|{{sr|#p["Nazwa dyskusji przestrzeni nazw"](frame,...)|p=Pudełko}}}}. Definicja skrótowa funkcji: <syntaxhighlight lang="lua"> p["Nazwa przestrzeni nazw dyskusji 2"]=function(frame,czy_uwzglednic_alternatywna_nazwe,i)...end; </syntaxhighlight> Wtedy ciało funkcji tej, czyli jego definicja w środku, jest: <syntaxhighlight lang="lua"> local pudelko_pomocne_modul=require("Module:Pudełko/Pomocne"); return pudelko_pomocne_modul.Nazwa_przestrzeni_nazw_przedmiotowa_dyskusji_2(frame,czy_uwzglednic_alternatywna_nazwe,i,"dyskusja"); </syntaxhighlight> Parametry funkcji: * {{Code|frame}} - tablica ramki tablicy transportu, * {{Code|czy_uwzglednic_alternatywna_nazwe}} - czy ma uwzględniać nazwę przestrzeni nazw domyślną szablonu, dostępne wartości: {{Code|false}}, w której nazwa domyślna nie jest uwzględniana wtedy, oraz {{Code|nil}} i {{Code|true}}, które oznaczają to samo, w tym jeżeli ona jest uwzględniana, wtedy jest brany parametr pierwszy dziecka, który musi istnieć przy takiej wartości tego parametru, tzn. {{Code|{{m|Pudełko|Nazwa przestrzeni nazw dyskusji 2|Szablon}}}}, a nazwa uzyskana nazwy przestrzeni nazw jest w takim przypadku błędna, a jeżeli nazwa domyślna jest błędna, czyli {{Code|{{m|Pudełko|Nazwa przestrzeni nazw dyskusji 2|Moja przestrzeń}}}}, wtedy funkcja zwraca stan błędu {{Code|(błąd)}}. * {{Code|i}} - numer zmiennej nazwy przestrzeni nazw. Funkcja wykorzystuje {{Code|{{sr|#p.Nazwa_przestrzeni_nazw_przedmiotowa_dyskusji_2(frame,...)|p=Pudełko/Pomocne}}}} do wyznaczania ogólnego nazwy przestrzeni nazw dla pozycji bazowej i numerkowej, tzn. dla pozycji: jeden, dwa, trzy,..., itd, i ich ogólnej. Parametr ramki tablicy transportu rodzica szablonu: * {{Code|nazwa przestrzeni nazw}}, {{Code|nazwa przestrzeni nazw 1}}, {{Code|nazwa przestrzeni nazw 2}}, {{Code|nazwa przestrzeni nazw 3}},..., {{Code|nazwa przestrzeni nazw i}} - nazwy przestrzeni nazw dla pozycji bazowej oraz zwykłej i ogólnej numerkowej, * {{Code|nazwa jednostki}}, {{Code|nazwa jednostki 1}}, {{Code|nazwa jednostki 2}}, {{Code|nazwa jednostki 3}},... - nazwy jednostek dla pozycji bazowej i numerkowej, * {{Code|typ jednostki}}, {{Code|typ jednostki 1}}, {{Code|typ jednostki 2}}, {{Code|typ jednostki 3}},..., {{Code|typ jednostki i}} - typy jednostek, którym odpowiadają pewne przestrzenie przedmiotowe, dla pozycji bazowej, numerkowej i ogólnej. Parametry ramki tablicy transportu dziecka: * Parametry dziecka są takie same jak rodzica dla funkcji pudełkowej plus tu wymienione, * {{Code|numer jednostki}} - jak parametr {{Code|i}} nie został ustawiony, to wtedy liczy się ta zmienna. Przykłady: <syntaxhighlight lang="mediawiki"> {{Nazwa szablonu|nazwa przestrzeni nazw=Wikibooks|nazwa przestrzeni nazw 1=Szablon|nazwa przestrzeni nazw i=|nazwa jednostki 2=Wikibooks:Strona}} </syntaxhighlight> W dziecku powiedzmy jest wywołanie, i szukamy nazwy przestrzeni nazw o numerze dwa, która została podana, ale istnieje za to jej wersji ogólna {{Code|nazwa przestrzeni nazw i}} i domyślna {{Code|nazwa przestrzeni nazw}}, ale wtedy dla tego numerkowego liczy się to ogólne z {{Code| i}}, a ponieważ ta nazwa jest pusta, więc będziemy liczyli nazwę przestrzeni nazw z {{Code|nazwa jednostki 2}}: <syntaxhighlight lang="mediawiki"> {{#invoke:Pudełko|Nazwa przestrzeni nazw dyskusji 2|numer jednostki=2}} </syntaxhighlight> Na podstawie powyższego przykładu otrzymamy wynik o schemacie, nie wyniku, bo tam nie ma zmiennej {{Code|nazwa przestrzeni nazw 1}}, ale jest {{Code|nazwa przestrzeni nazw i}}: <syntaxhighlight lang="mediawiki"> <!-- Ale nie "nazwa przestrzeni nazw 2", bo jej nie ma, ale za to istnieje "nazwa przestrzeni nazw i"; --> <!-- nazwa przestrzeni nazw 2=nazwa przestrzeni nazw i="", a nazwa jednostki 2="Wikibooks:Strona"; --> <!-- Czyli wynik: --> Dyskusja Wikibooks <!-- Widzimy, że wygenerowała się nazwa przestrzeni nazw, którą jest przestrzeń nieprogramowa, ale dyskusji projektu, wychodząca z nazwy jednostek w tym przypadku z "nazwa jednostki 2"; --> </syntaxhighlight> Nie jest brana w tym powyższym przykładzie zmienna {{Code|nazwa przestrzeni nazw}}, bo jej nie ma, ale za to jest {{Code|nazwa przestrzeni nazw i}}, bo ona występuje jako parametr domyślny ogólny dla parametrów numerkowych. Tytaj jest używana jest zmienna {{Code|nazwa jednostki 2}} do wygenerowania ostatecznego wyniku, bo jak można zauważyć, parametry przestrzenne wskazują na przestrzeń główną, a nazwy jednostek już nie. Przykłady w wikikodzie: * {{Code|{{m|Pudełko|Nazwa przestrzeni nazw dyskusji 2|numer jednostki{{=}}2}}}} → {{Tt|{{#invoke:Pudełko|Nazwa przestrzeni nazw dyskusji 2|numer jednostki=2}}}} * {{Code|{{m|Pudełko|Nazwa przestrzeni nazw dyskusji 2|Szablon|nazwa przestrzeni nazw i{{=}}Moja przestrzeń|numer jednostki{{=}}2}}}} → {{Tt|{{#invoke:Pudełko|Nazwa przestrzeni nazw dyskusji 2|Szablon|nazwa przestrzeni nazw i=Moja przestrzeń|numer jednostki=2}}}} * {{Code|{{m|Pudełko|Nazwa przestrzeni nazw dyskusji 2|nazwa przestrzeni nazw 2{{=}}|nazwa jednostki 2{{=}}Szablon:Strona|numer jednostki{{=}}2}}}} → {{Tt|{{#invoke:Pudełko|Nazwa przestrzeni nazw dyskusji 2|nazwa przestrzeni nazw 2=|nazwa jednostki 2=Szablon:Strona|numer jednostki=2}}}} * {{Code|{{m|Pudełko|Nazwa przestrzeni nazw dyskusji 2|nazwa przestrzeni nazw i{{=}}|nazwa jednostki 2{{=}}Szablon:Strona|numer jednostki{{=}}2}}}} → {{Tt|{{#invoke:Pudełko|Nazwa przestrzeni nazw dyskusji 2|nazwa przestrzeni nazw i=|nazwa jednostki 2=Szablon:Strona|numer jednostki=2}}}} * {{Code|{{m|Pudełko|Nazwa przestrzeni nazw dyskusji 2|Szablon|nazwa przestrzeni nazw{{=}}|nazwa jednostki 2{{=}}Wikibooks:Strona|numer jednostki{{=}}2}}}} → {{Tt|{{#invoke:Pudełko|Nazwa przestrzeni nazw dyskusji 2|Szablon|nazwa przestrzeni nazw=|nazwa jednostki 2=Dyskusja Wikibooks:Strona|numer jednostki=2}}}} Powyżej dla przykładu podano parametry nie w rodzicu w szablonie, tylko w dziecku, jeśli chodzi o parametry nazw przestrzeni nazw i nazw jednostek, ale ich się za to nie powinno podawać w tych ramach, tylko w szablonach, w których wywoływane są te ramki pudełek {{Code|{{m|Pudełko}}}}, ale tak tutaj tak zrobiono by było najłatwiej sprawdzić działanie tego typu funkcji. Analogicznie możemy podawać parametry typu jednostki, np.: wywołaniu modułowym {{Code|{{m|Pudełko|Nazwa przestrzeni nazw dyskusji 2|typ jednostki 2{{=}}Podręcznik|nazwa jednostki 2{{=}}Szablon:Strona|numer jednostki{{=}}2}}}} (ale wtedy jest brana przestrzeń nazw z nazwy jednostki), ale o tym więcej w rozdziałach {{Code|{{sr|# p["Dyskusyjny typ jednostki 2"](frame,i)|p=Pudełko}}}} w „{{sr|#Funkcje typu jednostki|p=Pudełko}}”, on definiuje przestrzenie dyskusji, ale można użyć parametru dyskusji typu jednostki z obojętnie jaką wartością niepustą, czy pustą, czy nawet jej nie podamy, wtedy wyświetli się nazwa przestrzeni nazw dyskusji. Jeżeli typ jednostki wskazuje na przestrzeń nazw główną, wtedy się liczą parametry nazw jednostek. Również parametry typu jednostki nie powinno się podawać w dziecku w ramce, tylko w rodzicu w szablonie jako parametry, w którym ta ramka jest wywoływana, ale tutaj podano jedynie dla przykładu, jak najłatwiej sprawdzić działanie tych parametrów tej funkcji. Najpierw w funkcji nagłówku brane są parametry nazw przestrzeni nazw, a jeżeli ich nie ma, to parametry typu jednostki, a jeżeli nie ma lub parametry przestrzenne wskazują na przestrzeń główną, i nie ma nazwy jednostki, to generowane są nazwy tej funkcji na podstawie aktualnej strony. == Funkcje pełnych nazw jednostki == === {{Code|p["Pełna nazwa dyskusji jednostki"](frame,i)}} === === {{Code|p["Pełna nazwa przedmiotowa jednostki"](frame,i)}} === === {{Code|p["Pełna nazwa jednostki"](frame,i)}} === == Funkcje pełnych nazw jednostki drugiej wersji == === {{Code|p["Pełna nazwa dyskusji jednostki 2"](frame,i)}} === === {{Code|p["Pełna nazwa przedmiotowa jednostki 2"](frame,i)}} === === {{Code|p["Pełna nazwa jednostki 2"](frame,i)}} === == Funkcje pełnych nazw jednostki trzeciej wersji == === {{Code|p["Pełna nazwa dyskusji jednostki 3"](frame,i)}} === === {{Code|p["Pełna nazwa przedmiotowa jednostki 3"](frame,i)}} === === {{Code|p["Pełna nazwa jednostki 3"](frame,i)}} === == Funkcje nazw jednostki == === {{Code|p["Nazwa jednostki"](frame,i)}} === == Funkcje nazw jednostki drugiej wersji == === {{Code|p["Nazwa jednostki 2"](frame,i)}} === === {{Code|p["Nazwa przedmiotowa jednostki 2"](frame,i)}} === === {{Code|p["Nazwa dyskusji jednostki 2"](frame,i)}} === == Funkcje nazw przestrzeni nazw trzeciej wersji == === {{Code|p["Nazwa przestrzeni nazw 3"](frame,i)}} === Funkcja pisze nazwę przestrzeni nazw, niezależnie, czy to jest przedmiotowa, czy dyskusji, według, i nie zawsze tylko, podanej w zmiennej {{Code|nazwa przestrzeni nazw}} dla pozycja bazowej w podanych parametrach szablonu rodzicu ramki dziecka, lub dla innej pozycji należy parametr podawać w formie {{Code|nazwa przestrzeni nazw 1}}, {{Code|Nazwa przestrzeni nazw 3}}, {{Code|nazwa przestrzeni nazw 3}},..., lub te parametry można podać w postaci ogólnej {{Code|nazwa przestrzeni nazw i}}. W tej funkcji trzeba też podawać parametry nazwy jednostek {{Code|nazwa jednostki}}, {{Code|nazwa jednostki 1}}, {{Code|nazwa jednostki 2}}, {{Code|nazwa jednostki 3}},... Parametry podaje się w parametrach rodzica wywołania tej funkcji {{Code|{{m|Pudełko|Nazwa przestrzeni nazw 3}}}} (ale ich nie trzeba podawać w dziecku, ale można) i w parametrach dziecka, jeśli chodzi o zmienną {{Code|numer jednostki}}, czyli np.: {{Code|{{m|Pudełko|Nazwa przestrzeni nazw 3|numer jednostki{{=}}<jakaś liczba całkowita dodatnia>}}}}. Te parametry przestrzenne zamiast w rodzicu w szablonie można podać w ramce dziecka, wtedy parametry dziecka mają pierwszeństwo. Przestrzeń nazw z parametrów nazw przestrzennych bazowych (bez numerka) może odpowiadać wartości przestrzeni głównej, to wtedy odpowiednia przestrzeń nazw z parametru nazwy jednostki się nie liczy w tej funkcji, aby się liczyła należy użyć funkcji {{Code|{{sr|#p["Nazwa przestrzeni nazw 2"](frame,...)|p=Pudełko}}}}. Przestrzeń nazw z parametrów nazw przestrzennych numerkowych może odpowiadać wartości przestrzeni głównej, to wtedy odpowiednia przestrzeń nazw z parametru nazwy jednostki się liczy w tej funkcji, wtedy jest liczona nazwa przestrzeni nazw z tego parametru. Gdy parametry przestrzenne lub typ jednostki w drugim podejściu nie wskazują na przestrzeń główną, to wtedy działanie tej funkcji jest podobne do {{Code|{{sr|#p["Nazwa przestrzeni nazw"](frame,...)|p=Pudełko}}}}. Definicja skrótowa funkcji: <syntaxhighlight lang="lua"> p["Nazwa przestrzeni nazw 3"]=function(frame,czy_uwzglednic_alternatywna_nazwe,i)...end; </syntaxhighlight> Wtedy ciało funkcji tej, czyli jego definicja w środku, jest: <syntaxhighlight lang="lua"> -- Jest liczony numer parametru nazwy przestrzeni nazw, domyslnie chodzi tu o numer bazowy parametrów przestrzennych; local numer_jednostki=i or frame.args["numer jednostki"]; local liczba_numeru_jednostki=((numer_jednostki)and(tonumber(numer_jednostki)) or 0); local pudelko_pomocne_modul=require("Module:Pudełko/Pomocne"); -- Liczy nazwę przestrzeni nazw dyskusji na podstawie podanych parametrów; return pudelko_pomocne_modul.Uzyskanie_nazw_jednostki(frame,0,liczba_numeru_jednostki,nil,2); </syntaxhighlight> Parametry funkcji: * {{Code|frame}} - tablica ramki tablicy transportu, * {{Code|czy_uwzglednic_alternatywna_nazwe}} - czy ma uwzględniać nazwę przestrzeni nazw domyślną szablonu, dostępne wartości: {{Code|false}}, w której nazwa domyślna nie jest uwzględniana wtedy, oraz {{Code|nil}} i {{Code|true}}, które oznaczają to samo, w tym jeżeli ona jest uwzględniana, wtedy jest brany parametr pierwszy dziecka, który musi istnieć przy takiej wartości tego parametru, tzn. {{Code|{{m|Pudełko|Nazwa przestrzeni nazw 3|Szablon}}}}, a nazwa uzyskana nazwy przestrzeni nazw jest w takim przypadku błędna, a jeżeli nazwa domyślna jest błędna, czyli {{Code|{{m|Pudełko|Nazwa przestrzeni nazw 3|Moja przestrzeń}}}}, wtedy funkcja zwraca stan błędu {{Code|(błąd)}}. * {{Code|i}} - numer zmiennej nazwy przestrzeni nazw. Funkcja wykorzystuje {{Code|{{sr|#p.Uzyskanie_nazw_jednostki(frame,...)|p=Pudełko/Pomocne}}}} do wyznaczania ogólnego nazwy przestrzeni nazw dla pozycji bazowej i numerkowej, tzn. dla pozycji: jeden, dwa, trzy,..., itd, i ich ogólnej. Parametr ramki tablicy transportu rodzica szablonu: * {{Code|nazwa przestrzeni nazw}}, {{Code|nazwa przestrzeni nazw 1}}, {{Code|Nazwa przestrzeni nazw 3}}, {{Code|nazwa przestrzeni nazw 3}},..., {{Code|nazwa przestrzeni nazw i}} - nazwy przestrzeni nazw dla pozycji bazowej oraz zwykłej i ogólnej numerkowej, * {{Code|nazwa jednostki}}, {{Code|nazwa jednostki 1}}, {{Code|nazwa jednostki 2}}, {{Code|nazwa jednostki 3}},... - nazwy jednostek dla pozycji bazowej i numerkowej, * {{Code|typ jednostki}}, {{Code|typ jednostki 1}}, {{Code|typ jednostki 2}}, {{Code|typ jednostki 3}},..., {{Code|typ jednostki i}} - typy jednostek, którym odpowiadają pewne przestrzenie przedmiotowe, dla pozycji bazowej, numerkowej i ogólnej, ** {{Code|dyskusja typu jednostki}}, {{Code|dyskusja typu jednostki 1}}, {{Code|dyskusja typ jednostki 2}}, {{Code|dyskusja typ jednostki 3}},..., {{Code|dyskusja typ jednostki i}} - czy dany typ jednostki ma przedstawiać, jeśli niepusta, przestrzeń dyskusji dla pozycji bazowej, numerkowej i ogólnej. Parametry ramki tablicy transportu dziecka: * Parametry dziecka są takie same jak rodzica dla funkcji pudełkowej plus tu wymienione, * {{Code|numer jednostki}} - jak parametr {{Code|i}} nie został ustawiony, to wtedy liczy się ta zmienna. Przykłady: <syntaxhighlight lang="mediawiki"> {{Nazwa szablonu|nazwa przestrzeni nazw=Wikibooks|nazwa przestrzeni nazw=|nazwa przestrzeni nazw i=|nazwajednostki=Szablon:Strona|nazwa jednostki 2=Wikibooks:Strona}} <hr /> {{Nazwa szablonu|nazwa przestrzeni nazw=Wikibooks|nazwa przestrzeni nazw 1=Szablon|nazwa przestrzeni nazw i=|nazwa jednostki 2=Wikibooks:Strona}} </syntaxhighlight> W dziecku powiedzmy jest wywołanie, i szukamy nazwy przestrzeni nazw o numerze dwa, która została podana, ale istnieje za to jej wersji ogólna {{Code|nazwa przestrzeni nazw i}} i domyślna {{Code|nazwa przestrzeni nazw}}, ale wtedy dla tego numerkowego liczy się to ogólne z {{Code| i}}, a ponieważ ta nazwa jest pusta, więc będziemy liczyli nazwę przestrzeni nazw z {{Code|nazwa jednostki 2}}: <syntaxhighlight lang="mediawiki"> {{#invoke:Pudełko|Nazwa przestrzeni nazw 3}} <hr /> {{#invoke:Pudełko|Nazwa przestrzeni nazw 3|numer jednostki=2}} </syntaxhighlight> Na podstawie powyższego przykładu otrzymamy wynik o schemacie, nie wyniku, bo tam nie ma zmiennej {{Code|nazwa przestrzeni nazw 1}}, ale jest {{Code|nazwa przestrzeni nazw i}}: <syntaxhighlight lang="mediawiki"> <!-- Ale nie "nazwa przestrzeni nazw""; --> <!-- nazwa przestrzeni nazw=""; --> <!-- Czyli wynik: --> <!-- wynik pusty --> <!-- Widzimy, że wygenerowała się nazwa przestrzeni nazw, którą jest przestrzeń nazw główna, jest ciągiem pustym: ""; --> <hr /> <!-- Ale nie "Nazwa przestrzeni nazw 2", bo jej nie ma, ale za to istnieje "nazwa przestrzeni nazw i"; --> <!-- nazwa przestrzeni nazw 2=nazwa przestrzeni nazw i="", a nazwa jednostki 2="Wikibooks:Strona"; --> <!-- Czyli wynik: --> Wikibooks <!-- Widzimy, że wygenerowała się nazwa przestrzeni nazw, którą jest przestrzeń nieprogramowa, ale projektu, wychodząca z nazwy jednostek w tym przypadku z "nazwa jednostki 2"; --> </syntaxhighlight> Dla parametrów bazowych nienumerkowych istnieje zmienna {{Code|nazwa przestrzeni nazw}}, której waartość jest pusta,którajest zwracana przez tą funkcję. {{Hr}} Dla parametrów numerkowych nie jest brana w tym powyższym przykładzie zmienna {{Code|nazwa przestrzeni nazw}}, bo jej nie ma, ale za to jest {{Code|nazwa przestrzeni nazw i}}, bo ona występuje jako parametr domyślny ogólny dla parametrów numerkowych. Tytaj jest używana jest zmienna {{Code|nazwa jednostki 2}} do wygenerowania ostatecznego wyniku, bo jak można zauważyć, parametry przestrzenne wskazują na przestrzeń główną, a nazwy jednostek już nie. Przykłady w wikikodzie: * {{Code|{{m|Pudełko|Nazwa przestrzeni nazw 3|nazwa przestrzeni nazw{{=}}|nazwa jednostki{{=}}Wikibooks:Strona}}}} → {{Tt|{{#invoke:Pudełko|Nazwa przestrzeni nazw 3|nazwa przestrzeni nazw=|nazwa jednostki=Wikibooks:Szablon}}}} * {{Code|{{m|Pudełko|Nazwa przestrzeni nazw 3|nazwa przestrzeni nazw 2{{=}}|nazwa jednostki 2{{=}}Wikibooks:Strona|numer jednostki{{=}}2}}}} → {{Tt|{{#invoke:Pudełko|Nazwa przestrzeni nazw 3|nazwa przestrzeni nazw 2=|nazwa jednostki 2=Wikibooks:Szablon|numer jednostki=2}}}} Powyżej dla przykładu podano parametry nie w rodzicu w szablonie, tylko w dziecku, jeśli chodzi o parametry nazw przestrzeni nazw i nazw jednostek, ale ich się za to nie powinno podawać w tych ramach, tylko w szablonach, w których wywoływane są te ramki pudełek {{Code|{{m|Pudełko}}}}, ale tak tutaj tak zrobiono by było najłatwiej sprawdzić działanie tego typu funkcji. Analogicznie możemy podawać parametry typu jednostki, np.: wywołaniu modułowym {{Code|{{m|Pudełko|Nazwa przestrzeni nazw 3|typ jednostki 2{{=}}Podręcznik|nazwa jednostki 2{{=}}Szablon:Strona|numer jednostki{{=}}2}}}} (ale wtedy jest brana przestrzeń nazw z nazwy jednostki), ale o tym więcej w rozdziałach {{Code|{{sr|#p["Typ jednostki 3"](frame,i)|p=Pudełko}}}} w „{{sr|#Funkcje typu jednostki|p=Pudełko}}”, on definiuje przestrzenie przedmiotowe, ale można użyć parametru dyskusji typu jednostki z wartością niepustą, wtedy wyświetli się nazwa przestrzeni nazw dyskusji. Jeżeli typ jednostki bazowy wskazuje na przestrzeń nazw główną, wtedy się nie liczą parametry nazw jednostek, a na numerkowy, wtedy się liczy. Również parametry typu jednostki nie powinno się podawać w dziecku w ramce, tylko w rodzicu w szablonie jako parametry, w którym ta ramka jest wywoływana, ale tutaj podano jedynie dla przykładu, jak najłatwiej sprawdzić działanie tych parametrów tej funkcji. Najpierw w funkcji nagłówku brane są parametry nazw przestrzeni nazw, a jeżeli ich nie ma, to parametry typu jednostki, a jeżeli nie ma lub parametry przestrzenne wskazują na przestrzeń główną, i nie ma nazwy jednostki, to generowane są nazwy tej funkcji na podstawie aktualnej strony. === {{Code|p["Nazwa przedmiotowej przestrzeni nazw 3"](frame,i)}} === Funkcja pisze przedmiotową nazwę przestrzeni nazw jakikolwiek nazwy przestrzeni nazw (tzn. nazwę przedmiotową nazwy przestrzenie nazw, czyli nie dyskusji, zamieniana jest na nią samą, czyli identyfikator przestrzeni się nie zmienia, a dyskusji, nie przedmiotową, przekształca się na przedmiotową jej odpowiadającą, czyli w tym przypadku identyfikator przestrzeni zmniejsza się o numer mniej), według podanej w zmiennej {{Code|nazwa przestrzeni nazw}} dla pozycja bazowej w podanych parametrach szablonu rodzicu ramki dziecka, lub dla innej pozycji należy parametr podawać w formie {{Code|nazwa przestrzeni nazw 1}}, {{Code|nazwa przestrzeni nazw 2}}, {{Code|nazwa przestrzeni nazw 3}},..., lub te parametry można podać w postaci ogólnej {{Code|nazwa przestrzeni nazw i}}. Parametry podaje się w parametrach rodzica wywołania tej funkcji {{Code|{{m|Pudełko|Nazwa przedmiotowej przestrzeni nazw 3}}}} (ale ich nie trzeba podawać w dziecku, ale można) i w parametrach dziecka, jeśli chodzi o zmienną {{Code|numer jednostki}}, czyli np.: {{Code|{{m|Pudełko|Nazwa przedmiotowej przestrzeni nazw 3|numer jednostki{{=}}<jakaś liczba całkowita dodatnia>}}}}. Te parametry przestrzenne zamiast w rodzicu w szablonie można podać w ramce dziecka, wtedy parametry dziecka mają pierwszeństwo. Parametry przestrzenne mogą mogą być podane w postaci przestrzeni przedmiotowej lub dyskusji, ale ta funkcja zawsze ją zamienia na przedmiotową. Przestrzeń nazw z parametrów nazw przestrzennych bazowych (bez numerka) może odpowiadać wartości przestrzeni głównej, to wtedy odpowiednia przestrzeń nazw z parametru nazwy jednostki się nie liczy w tej funkcji, aby się liczyła należy użyć funkcji {{Code|{{sr|#p["Nazwa przestrzeni nazw dyskusji 2"](frame,...)|p=Pudełko}}}}. Przestrzeń nazw z parametrów nazw przestrzennych numerkowych może odpowiadać wartości przestrzeni głównej, to wtedy odpowiednia przestrzeń nazw z parametru nazwy jednostki się liczy w tej funkcji, wtedy jest liczona nazwa przestrzeni nazw z tego parametru. Gdy parametry przestrzenne lub typ jednostki w drugim podejściu nie wskazują na przestrzeń główną, to wtedy działanie tej funkcji jest podobne do {{Code|{{sr|#p["Nazwa przestrzeni nazw"](frame,...)|p=Pudełko}}}}. Definicja skrótowa funkcji: <syntaxhighlight lang="lua"> p["Nazwa przedmiotowej przestrzeni nazw 3"]=function(frame,czy_uwzglednic_alternatywna_nazwe,i)...end; </syntaxhighlight> Wtedy ciało funkcji tej, czyli jego definicja w środku, jest: <syntaxhighlight lang="lua"> -- Jest liczony numer parametru nazwy przestrzeni nazw, domyslnie chodzi tu o numer bazowy parametrów przestrzennych; local numer_jednostki=i or frame.args["numer jednostki"]; local liczba_numeru_jednostki=((numer_jednostki)and(tonumber(numer_jednostki)) or 0); local pudelko_pomocne_modul=require("Module:Pudełko/Pomocne"); -- Liczy nazwę przestrzeni nazw przedmiotową na podstawie podanych parametrów; return pudelko_pomocne_modul.Uzyskanie_nazw_jednostki(frame,1,liczba_numeru_jednostki,nil,1); </syntaxhighlight> Parametry funkcji: * {{Code|frame}} - tablica ramki tablicy transportu, * {{Code|czy_uwzglednic_alternatywna_nazwe}} - czy ma uwzględniać nazwę przestrzeni nazw domyślną szablonu, dostępne wartości: {{Code|false}}, w której nazwa domyślna nie jest uwzględniana wtedy, oraz {{Code|nil}} i {{Code|true}}, które oznaczają to samo, w tym jeżeli ona jest uwzględniana, wtedy jest brany parametr pierwszy dziecka, który musi istnieć przy takiej wartości tego parametru, tzn. {{Code|{{m|Pudełko|Nazwa przedmiotowej przestrzeni nazw 3|Dyskusja szablonu}}}} - ta nazwa domyślna zostanie zamieniona na przedmiotową, a jak ona by była przedmiotowa, to żadnej zamiany by nie było, a nazwa uzyskana z nazwy przestrzeni nazw z parametrów przestrzennych jest w takim przypadku błędna, to w takim razie brany jest ten parametr, a jeżeli ta nazwa domyślna jest błędna, czyli {{Code|{{m|Pudełko|Nazwa przedmiotowej przestrzeni nazw 3|Moja przestrzeń}}}}, wtedy funkcja zwraca stan błędu {{Code|(błąd)}}. * {{Code|i}} - numer zmiennej nazwy przestrzeni nazw. Funkcja wykorzystuje {{Code|{{sr|#p.Uzyskanie_nazw_jednostki(frame,...)|p=Pudełko/Pomocne}}}} do wyznaczania ogólnego nazwy przestrzeni nazw dla pozycji bazowej i numerkowej, tzn. dla pozycji: jeden, dwa, trzy,..., itd, i ich ogólnej. Parametr ramki tablicy transportu rodzica szablonu: * {{Code|nazwa przestrzeni nazw}}, {{Code|nazwa przestrzeni nazw 1}}, {{Code|nazwa przestrzeni nazw 2}}, {{Code|nazwa przestrzeni nazw 3}},..., {{Code|nazwa przestrzeni nazw i}} - nazwy przestrzeni nazw dla pozycji bazowej oraz zwykłej i ogólnej numerkowej, * {{Code|typ jednostki}}, {{Code|typ jednostki 1}}, {{Code|typ jednostki 2}}, {{Code|typ jednostki 3}},..., {{Code|typ jednostki i}} - typy jednostek, którym odpowiadają pewne przestrzenie przedmiotowe, dla pozycji bazowej, numerkowej i ogólnej. Parametry ramki tablicy transportu dziecka: * Parametry dziecka są takie same jak rodzica dla funkcji pudełkowej plus tu wymienione, * {{Code|numer jednostki}} - jak parametr {{Code|i}} nie został ustawiony, to wtedy liczy się ta zmienna. Przykłady: <syntaxhighlight lang="mediawiki"> {{Nazwa szablonu|nazwa przestrzeni nazw=Wikibooks|nazwa przestrzeni nazw=|nazwa przestrzeni nazw i=|nazwajednostki=Szablon:Strona|nazwa jednostki=Dyskusja Wikibooks:Strona}} <hr /> {{Nazwa szablonu|nazwa przestrzeni nazw=Wikibooks|nazwa przestrzeni nazw 1=Szablon|nazwa przestrzeni nazw i=|nazwa jednostki 2=Dyskusja Wikibooks:Strona}} </syntaxhighlight> W dziecku powiedzmy jest wywołanie, i szukamy nazwy przestrzeni nazw o numerze dwa, która nie została podana, ale istnieje za to jej wersji ogólna {{Code|nazwa przestrzeni nazw i}} i domyślna {{Code|nazwa przestrzeni nazw}}: <syntaxhighlight lang="mediawiki"> {{#invoke:Pudełko|Nazwa przedmiotowej przestrzeni nazw 3|numer jednostki=1}} </syntaxhighlight> Na podstawie powyższego przykładu otrzymamy wynik o schemacie, nie wyniku, bo tam nie ma zmiennej {{Code|nazwa przestrzeni nazw 1}}, ale jest {{Code|nazwa przestrzeni nazw i}}: <syntaxhighlight lang="mediawiki"> <!-- Ale nie "nazwa przestrzeni nazw""; --> <!-- nazwa przestrzeni nazw=""; --> <!-- Czyli wynik: --> <!-- wynik pusty --> <!-- Widzimy, że wygenerowała się nazwa przestrzeni nazw, którą jest przestrzeń nazw główna, jest ciągiem pustym: ""; --> <hr /> <!-- Ale nie "Nazwa przestrzeni nazw 2", bo jej nie ma, ale za to istnieje "nazwa przestrzeni nazw i"; --> <!-- nazwa przestrzeni nazw 2=nazwa przestrzeni nazw i="", a nazwa jednostki 2="Dyskusja Wikibooks:Strona"; --> <!-- Czyli wynik: --> Wikibooks <!-- Widzimy, że wygenerowała się nazwa przestrzeni nazw, którą jest przestrzeń nieprogramowa, ale projektu, wychodząca z nazwy jednostek w tym przypadku z "nazwa jednostki 2"; --> </syntaxhighlight> Nie jest brana w tym powyższym przykładzie zmienna {{Code|nazwa przestrzeni nazw}}, bo jej nie ma, ale za to jest {{Code|nazwa przestrzeni nazw i}}, bo ona występuje jako parametr domyślny ogólny dla parametrów numerkowych. Przykłady w wikikodzie: * {{Code|{{m|Pudełko|Nazwa przestrzeni nazw 3|nazwa przestrzeni nazw{{=}}|nazwa jednostki{{=}}Dyskusja Wikibooks:Strona}}}} → {{Tt|{{#invoke:Pudełko|Nazwa przestrzeni nazw 3|nazwa przestrzeni nazw=|nazwa jednostki=Dyskusja Wikibooks:Szablon}}}} * {{Code|{{m|Pudełko|Nazwa przestrzeni nazw 3|nazwa przestrzeni nazw 2{{=}}|nazwa jednostki 2{{=}}Dyskusja Wikibooks:Strona|numer jednostki{{=}}2}}}} → {{Tt|{{#invoke:Pudełko|Nazwa przestrzeni nazw 3|nazwa przestrzeni nazw 2=|nazwa jednostki 2=Dyskusja Wikibooks:Szablon|numer jednostki=2}}}} Powyżej dla przykładu podano parametry nie w rodzicu w szablonie, tylko w dziecku, jeśli chodzi o parametry nazw przestrzeni nazw, ale ich się za to nie powinno podawać w tych ramach, tylko w szablonach, w których wywoływane są te ramki pudełek {{Code|{{m|Pudełko}}}}, ale tak tutaj tak zrobiono by było najłatwiej sprawdzić działanie tego typu funkcji. Analogicznie możemy podawać parametry typu jednostki, np.: wywołaniu modułowym {{Code|{{m|Pudełko|Nazwa przedmiotowej przestrzeni nazw 3|typ jednostki 2{{=}}strona szablonu|numer jednostki{{=}}2}}}}, ale o tym więcej w rozdziałach {{Code|{{sr|# p["Przedmiotowy typ jednostki 3"](frame,i)|p=Pudełko}}}} w „{{sr|#Funkcje typu jednostki|p=Pudełko}}”, ale wtedy ta sama nazwa przestrzeni nazw reprezentowana przez {{Parametr|typ jednostki 2|strona szablonu}}, jest zamieniana na to samo, lepiej jest tutaj używać parametrów przestrzennych nazw niż typu jednostki, bo typ jednostki ma taką samą wartość dla przestrzeni przedmiotowej, co dyskusji. Tutaj parametr dyskusji typu jednostki bazowy i numerkowy ogólny, czy szczegółowy, nie gra roli, bo nawet, gdy wygenerujemy nazwę przestrzeni dyskusji za pomoca tego parametru, to i tak otrzymamy na samym końcu jego nazwę przedmiotową. Również parametry typu jednostki nie powinno się podawać w dziecku w ramce, tylko w rodzicu w szablonie jako parametry, w którym ta ramka jest wywoływana, ale tutaj podano jedynie dla przykładu, jak najłatwiej sprawdzić działanie tych parametrów tej funkcji. Najpierw w funkcji nagłówku brane są parametry nazw przestrzeni nazw, a jeżeli ich nie ma, to parametry typu jednostki, a jeżeli nie ma, to generowane są nazwy na podstawie aktualnego modułu. === {{Code|p["Nazwa przestrzeni nazw dyskusji 3"](frame,i)}} === == Funkcje nazw jednostki trzeciej wersji == === {{Code|p["Nazwa jednostki 3"](frame,i)}} === === {{Code|p["Nazwa przedmiotowa jednostki 3"](frame,i)}} === === {{Code|p["Nazwa dyskusji jednostki 3"](frame,i)}} === == Funkcje typu jednostki == === {{Code|p["Typ jednostki"](frame,i)}} === === {{Code|p["Typ jednostki 2"](frame,i)}} === === {{Code|p["Typ jednostki 3"](frame,i)}} === === Funkcje typu jednostki przedmiotowe === ==== {{Code|p["Przedmiotowy typ jednostki"](frame,i)}} ==== ==== {{Code|p["Przedmiotowy typ jednostki 2"](frame,i)}} ==== ==== {{Code|p["Przedmiotowy typ jednostki 3"](frame,i)}} ==== === Fukcje typu jednostki dyskusji === ==== {{Code|p["Dyskusyjny typ jednostki"](frame,i)}} ==== ==== {{Code|p["Dyskusyjny typ jednostki 2"](frame,i)}} ==== ==== {{Code|p["Dyskusyjny typ jednostki 3"](frame,i)}} ==== == Funkcje chech pudełka == === {{Code|p["Cecha pudełka"](frame)}} === === {{Code|p["Przedmiotowa cecha pudełka"](frame)}} === === {{Code|p["Dyskusyjna cecha pudełka"](frame)}} === == Fukcje ogólnego pudełka == === {{Code|p["Ogólne pudełko"](frame)}} === == Funkcje ogólne == === {{Code|p["Tekst pudełka"](frame)}} === == Funkcje błędów pudełka == === {{Code|p["Błędy pudełka"](frame)}} === === {{Code|p["Przedmiotowe błędy pudełka"](frame)}} === === {{Code|p["Dyskusyjne błędy pudełka"](frame)}} === == Funkcje nazw stron == === {{Code|p["Nazwa strony głównej projektu"](frame,i)}} === === {{Code|p["Nazwa strony głównej dla dzieci projektu"](frame,i)}} === == Funkcje kodów == === {{Code|p["Kod języka"](frame,i)}} === === {{Code|p["Kod projektu"](frame,i)}} === === {{Code|p["Klucz projektu"](frame,i)}} === == Funkcje wiki == === {{Code|p["Inny niż język bieżący wiki"](frame)}} === === {{Code|p["Inne niż lokalne wiki"](frame)}} === === {{Code|p["Inne niż bieżące wiki"](frame)}} === == Funkcje typów parametrów, czy podane je == === {{Code|p["Podano parametry nienazwane"](frame)}} === === {{Code|p["Podano parametry numerowane"](frame)}} === === {{Code|p["Podano parametry nazwane"](frame)}} === == Funkcje kodów tego projektu == === {{Code|p["Kod projektu tego projektu"](frame)}} === === {{Code|p["Kod języka tego projektu"](frame)}} === === {{Code|p["Klucz projektu tego projektu"](frame)}} === == Funkcje stron == === {{Code|p["Strona główna tego projektu"](frame)}} === === {{Code|p["Strona główna dla dzieci tego projektu"](frame)}} === == Funkcje nazw stron drugiej wersji == === {{Code|p["Nazwa strony głównej dla dzieci projektu 2"](frame)}} === === {{Code| p["Nazwa strony głównej projektu 2"](frame)}} === {{BrClear}} <noinclude><!-- -->{{ProstaStronaKoniec}}<!-- -->{{Kategoria|Opisy funkcji, w Lua w Scribunto, w modułach}}<!-- --></noinclude> ms8lsevbg6be8ji2q9hlxilxjil2294 540416 540415 2026-04-23T19:39:27Z Persino 2851 /* {{Code|p["Nazwa przedmiotowej przestrzeni nazw 3"](frame,i)}} */ 540416 wikitext text/x-wiki <noinclude>{{ProstaStronaStart | nagłówek = {{Podrozdział|{{ld2|Pudełko}}|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 pudelko_modul=require("Module:Pudełko"); </syntaxhighlight> dzięki, któremu można wypisywać funkcje należącego do niego. Posługuje się na parametrach pudełkowych {{Parametr|nazwa przestrzeni nazw}} (czy też bez numerka {{Parametr|nazwa przestrzeni nazw i}} dla tego numerowanego) lub te z numerkiem po jednej spacji w nich (ale nie dla tego z końcówką {{Code| i}}) mogą zostać użyte jako parametry szablonu. Moduł {{Code|{{ld2|Pudełko}}}} przedstawia funkcje nazw w oparciu o funkcje nazw {{Code|{{ld2|Nazwy}}}}, generuje on nazwy za pomocą parametrów pudełkowych podanych poniżej. Parametr {{Parametr|nazwa jednostki}} (lub parametr {{Parametr|cel}} dla numerka tego pierwszego, tego alternatywnego), lub te z numerkiem po jednej spacji w nazwie parametru, albo numerowane numerkami {{Code|1}}, {{Code|2}},..., mogą zostać użyte jako parametry szablonu. Parametry określające rodzaj jednostki {{Parametr|typ jednostki}} z {{Parametr|dyskusja typu jednostki}}, itp. w wersjach z numerkiem po jednej spacji w nich mogą zostać użyte jako parametry szablonu. A te tymi numerowanymi liczbami naturalnymi {{Tt|nazwy jednostki}} od jedynki wzwyż poprzez szablon, w którym są one użyte, one też mogą być użyte z dwukropkiem, te numerowane, na samym początku nazwy, wtedy one są traktowane jako pełne nazwy strony, i wtedy one nie zostaną z interpretowane, że do nich trzeba użyć parametr odpowiedni z nazwą przetrzeni nazw z tego numerowanego, czy ogólny, aby utworzyć znów inną pełną nazwę strony dla tego numerka. Zestawienie: * {{Code|nazwa przestrzeni nazw}} i {{Code|nazwa przestrzeni nazw i}} (ogólna nazwa przestrzeni nazw dla wszystkich numerków, i tych numerowanych jednostek) - i to pierwsze z numerkiem, tzn. {{Code|nazwa przestrzeni nazw 1}}, {{Code|nazwa przestrzeni nazw 2}}, ..., * {{Code|nazwa jednostki}} - i te z numerkiem: {{Code|nazwa jednostki 1}}, {{Code|nazwa jednostki 2}}, ..., lub gdy jest zamiast tego parametrem numerowany, {{Code|1}}, {{Code|2}},..., który dla tego pierwszego może być uznany jako: {{Code|cel}} {{=}} {{Code|1}}, * {{Code|typ jednostki}} (parametr bazowy) i {{Code|typ jednostki i}} (parametr domyślny numerkowy) - i te z numerkiem: {{Code|typ jednostki 1}}, {{Code|typ jednostki 2}}, ..., tzn. gdy chcemy określić z jakim typem jednostki mamy do czynienia w zależności do jakiej przestrzeni nazw należy, a w danej, czy jest on np. programowy, czy tylko jest opisem, jak to bywa w szablonach {{Np|Template|link=tak}}, podobnie jest w przypadku {{Np|Module|link=tak}}, czy jak jest w innych przestrzeniach nazw, ** {{Code|dyskusja typu jednostki}} (parametr bazowy) i {{Code|dyskusja typu jednostki i}} (parametr domyślny numerkowy) - i te z numerkiem: {{Code|dyskusja typu jednostki 1}}, {{Code|dyskusja typu jednostki 2}}, ..., gdy chcemy określić wartością niepustą,że chodzi tutaj o typ jednostki. == {{Code|p.CzyNiepoprawnaNazwa(nazwa_jednostki)}} == Funkcja sprawdzajaca, czy jest poprawnie podana nazwa jednostki, czy ma poprawną nazwę. Znakami tymi, z których nie powinna składać się nazwa jest {{Code|<nowiki>{}<>|[]#\n</nowiki>}} i dodatkowo znak {{Code|&#127;}} (kod {{Code|{{Nowiki|&#127;}}}}). Też nie może składać się z trzech znaków tyldy, tzn. {{Code|<nowiki>~~~</nowiki>}}. Również w swojej budowie nie może składać się ze kodów {{Strong|HTML}} literowych o wzorze {{Code|{{Nowiki|&(%a+);}}}}. Natomiast może składać się z {{Code|{{Nowiki|&#(%d+);}}}} i {{Code|{{Nowiki|&#x(%x+);}}}}, ale w pierw te kody muszą być zamienione na normalne znaki. Skrótowa definicja funkcji: <syntaxhighlight lang="lua"> function p.CzyNiepoprawnaNazwa(nazwa_jednostki)...end; </syntaxhighlight> Wtedy ciało funkcji tej, czyli jego definicja w środku, jest: <syntaxhighlight lang="lua"> -- Moduł: "Moduł:Html/dane", służy do ładowania znaku o kodzie HTML "&#127;"; local html_dane_modul=mw.loadData("Module:Html/dane"); return mw.ustring.match(nazwa_jednostki,"[{}<>|%[%]#\n"..html_dane_modul.znak_127.."]+") or mw.ustring.match(nazwa_jednostki,"~~~") or mw.ustring.match(nazwa_jednostki,"&(%a+);"); </syntaxhighlight> Parametry: * {{Code|nazwa_jednostki}} - nazwa jednostki do sprawdzenia. Przykłady: <syntaxhighlight lang="lua"> local pudelko_modul=require("Module:Pudełko"); -- Podana przykładowa niepoprawna nazwa jedostki local nazwa_jednostki="Nazwa pliku [[Nazwa linku w pliku]]"; -- Fukcja zwróci wartość: local czy_poprawna_nazwa=true; local czy_poprawna_nazwa=pudelko_modul.CzyNiepoprawnaNazwa(nazwa_jednostki); </syntaxhighlight> == Funkcje nazw przestrzeni nazw == === {{Code|p["Nazwa przestrzeni nazw"](frame,...)}} === Funkcja pisze nazwę przestrzeni nazw, niezależnie, czy to jest przedmiotowa, czy dyskusji, według podanej w zmiennej {{Code|nazwa przestrzeni nazw}} dla pozycja bazowej w podanych parametrach szablonu rodzicu ramki dziecka, lub dla innej pozycji należy parametr podawać w formie {{Code|nazwa przestrzeni nazw 1}}, {{Code|nazwa przestrzeni nazw 2}}, {{Code|nazwa przestrzeni nazw 3}},..., lub te parametry można podać w postaci ogólnej {{Code|nazwa przestrzeni nazw i}}. Parametry podaje się w parametrach rodzica wywołania tej funkcji {{Code|{{m|Pudełko|Nazwa przestrzeni nazw}}}} (ale ich nie trzeba podawać w dziecku, ale można) i w parametrach dziecka, jeśli chodzi o zmienną {{Code|numer jednostki}}, czyli np.: {{Code|{{m|Pudełko|Nazwa przestrzeni nazw|numer jednostki{{=}}<jakaś liczba całkowita dodatnia>}}}}. Te parametry przestrzenne zamiast w rodzicu w szablonie można podać w ramce dziecka, wtedy parametry dziecka mają pierwszeństwo. Przestrzeń nazw z parametrów nazw przestrzennych może odpowiadać wartości przestrzeni głównej, to wtedy odpowiednia przestrzeń nazw z parametru nazwy jednostki się nie liczy w tej funkcji, aby się liczyła należy użyć funkcji {{Code|{{sr|#p["Nazwa przestrzeni nazw 2"](frame,...)|p=Pudełko}}}}. Definicja skrótowa funkcji: <syntaxhighlight lang="lua"> p["Nazwa przestrzeni nazw"]=function(frame,czy_uwzglednic_alternatywna_nazwe,i)...end; </syntaxhighlight> Wtedy ciało funkcji tej, czyli jego definicja w środku, jest: <syntaxhighlight lang="lua"> -- Jest liczony numer parametru nazwy przestrzeni nazw, domyslnie chodzi tu o numer bazowy parametrów przestrzennych; local numer_jednostki=i or frame.args["numer jednostki"]; local liczba_numer_jednostki=((numer_jednostki)and(tonumber(numer_jednostki))or 0); local pudelko_pomocne_modul=require("Module:Pudełko/Pomocne"); -- Liczy nazwę przestrzeni nazw na podstawie podanych parametrów; return pudelko_pomocne_modul.Nazwa_przestrzeni_nazw(frame,0, czy_uwzglednic_alternatywna_nazwe,liczba_numer_jednostki); </syntaxhighlight> Parametry funkcji: * {{Code|frame}} - tablica ramki tablicy transportu, * {{Code|czy_uwzglednic_alternatywna_nazwe}} - czy ma uwzględniać nazwę przestrzeni nazw domyślną szablonu, dostępne wartości: {{Code|false}}, w której nazwa domyślna nie jest uwzględniana wtedy, oraz {{Code|nil}} i {{Code|true}}, które oznaczają to samo, w tym jeżeli ona jest uwzględniana, wtedy jest brany parametr pierwszy dziecka, który musi istnieć przy takiej wartości tego parametru, tzn. {{Code|{{m|Pudełko|Nazwa przestrzeni nazw|Szablon}}}}, a nazwa uzyskana nazwy przestrzeni nazw jest w takim przypadku błędna, a jeżeli nazwa domyślna jest błędna, czyli {{Code|{{m|Pudełko|Nazwa przestrzeni nazw|Moja przestrzeń}}}}, wtedy funkcja zwraca stan błędu {{Code|(błąd)}}. * {{Code|i}} - numer zmiennej nazwy przestrzeni nazw. Funkcja wykorzystuje {{Code|{{sr|#p.Nazwa_przestrzeni_nazw(frame,...)|p=Pudełko/Pomocne}}}} do wyznaczania ogólnego nazwy przestrzeni nazw dla pozycji bazowej i numerkowej, tzn. dla pozycji: jeden, dwa, trzy,..., itd, i ich ogólnej. Parametr ramki tablicy transportu rodzica szablonu: * {{Code|nazwa przestrzeni nazw}}, {{Code|nazwa przestrzeni nazw 1}}, {{Code|nazwa przestrzeni nazw 2}}, {{Code|nazwa przestrzeni nazw 3}},..., {{Code|nazwa przestrzeni nazw i}} - nazwy przestrzeni nazw dla pozycji bazowej oraz zwykłej i ogólnej numerkowej, * {{Code|typ jednostki}}, {{Code|typ jednostki 1}}, {{Code|typ jednostki 2}}, {{Code|typ jednostki 3}},..., {{Code|typ jednostki i}} - typy jednostek, którym odpowiadają pewne przestrzenie przedmiotowe, dla pozycji bazowej, numerkowej i ogólnej, ** {{Code|dyskusja typu jednostki}}, {{Code|dyskusja typu jednostki 1}}, {{Code|dyskusja typ jednostki 2}}, {{Code|dyskusja typ jednostki 3}},..., {{Code|dyskusja typ jednostki i}} - czy dany typ jednostki ma przedstawiać, jeśli niepusta, przestrzeń dyskusji dla pozycji bazowej, numerkowej i ogólnej. Parametry ramki tablicy transportu dziecka: * Parametry dziecka są takie same jak rodzica dla funkcji pudełkowej plus tu wymienione, * {{Code|numer jednostki}} - jak parametr {{Code|i}} nie został ustawiony, to wtedy liczy się ta zmienna. Przykłady: <syntaxhighlight lang="mediawiki"> {{Nazwa szablonu|nazwa przestrzeni nazw=Wikibooks|nazwa przestrzeni nazw 2=Szablon|nazwa przestrzeni nazw i=Moduł}} </syntaxhighlight> W dziecku powiedzmy jest wywołanie, i szukamy nazwy przestrzeni nazw o numerze dwa, która nie została podana, ale istnieje za to jej wersji ogólna {{Code|nazwa przestrzeni nazw i}} i domyślna {{Code|nazwa przestrzeni nazw}}: <syntaxhighlight lang="mediawiki"> {{#invoke:Pudełko|Nazwa przestrzeni nazw|numer jednostki=1}} </syntaxhighlight> Na podstawie powyższego przykładu otrzymamy wynik o schemacie, nie wyniku, bo tam nie ma zmiennej {{Code|nazwa przestrzeni nazw 1}}, ale jest {{Code|nazwa przestrzeni nazw i}}: <syntaxhighlight lang="mediawiki"> <!-- Ale nie "nazwa przestrzeni nazw", bo jej nie ma, ale za to istnieje "nazwa przestrzeni nazw i"; --> <!-- nazwa przestrzeni nazw 2=nazwa przestrzeni nazw i=Moduł; --> <!-- Czyli wynik: --> Moduł <!-- Widzimy, że wygenerowała się nazwa przestrzeni nazw, którą jest przestrzeń programowa, którą również jest "Szablon"; --> </syntaxhighlight> Nie jest brana w tym powyższym przykładzie zmienna {{Code|nazwa przestrzeni nazw}}, bo jej nie ma, ale za to jest {{Code|nazwa przestrzeni nazw i}}, bo ona występuje jako parametr domyślny ogólny dla parametrów numerkowych. Przykłady w wikikodzie: * {{Code|{{m|Pudełko|Nazwa przestrzeni nazw|numer jednostki{{=}}2}}}} → {{Tt|{{#invoke:Pudełko|Nazwa przestrzeni nazw|numer jednostki=2}}}} * {{Code|{{m|Pudełko|Nazwa przestrzeni nazw|Szablon|nazwa przestrzeni nazw i{{=}}Moja przestrzeń|numer jednostki{{=}}2}}}} → {{Tt|{{#invoke:Pudełko|Nazwa przestrzeni nazw|Szablon|nazwa przestrzeni nazw i=Moja przestrzeń|numer jednostki=2}}}} * {{Code|{{m|Pudełko|Nazwa przestrzeni nazw|nazwa przestrzeni nazw 2{{=}}Szablon|numer jednostki{{=}}2}}}} → {{Tt|{{#invoke:Pudełko|Nazwa przestrzeni nazw|nazwa przestrzeni nazw 2=Szablon|numer jednostki=2}}}} * {{Code|{{m|Pudełko|Nazwa przestrzeni nazw|nazwa przestrzeni nazw 2{{=}}Szablon|numer jednostki{{=}}2}}}} → {{Tt|{{#invoke:Pudełko|Nazwa przestrzeni nazw|nazwa przestrzeni nazw i=Szablon|numer jednostki=2}}}} * {{Code|{{m|Pudełko|Nazwa przestrzeni nazw|nazwa przestrzeni nazw{{=}}Szablon|numer jednostki{{=}}2}}}} → {{Tt|{{#invoke:Pudełko|Nazwa przestrzeni nazw|nazwa przestrzeni nazw=Szablon|numer jednostki=2}}}} Powyżej dla przykładu podano parametry nie w rodzicu w szablonie, tylko w dziecku, jeśli chodzi o parametry nazw przestrzeni nazw, ale ich się za to nie powinno podawać w tych ramach, tylko w szablonach, w których wywoływane są te ramki pudełek {{Code|{{m|Pudełko}}}}, ale tak tutaj tak zrobiono by było najłatwiej sprawdzić działanie tego typu funkcji. Analogicznie możemy podawać parametry typu jednostki, np.: wywołaniu modułowym {{Code|{{m|Pudełko|Nazwa przestrzeni nazw|typ jednostki 2{{=}}strona szablonu|numer jednostki{{=}}2}}}}, ale o tym więcej w rozdziałach {{Code|{{sr|# p["Typ jednostki"](frame,i)|p=Pudełko}}}} w „{{sr|#Funkcje typu jednostki|p=Pudełko}}”, on definiuje przestrzenie przedmiotowe, ale można użyć parametru dyskusji typu jednostki z wartością niepustą, wtedy wyświetli się nazwa przestrzeni nazw dyskusji. Również parametry typu jednostki nie powinno się podawać w dziecku w ramce, tylko w rodzicu w szablonie jako parametry, w którym ta ramka jest wywoływana, ale tutaj podano jedynie dla przykładu, jak najłatwiej sprawdzić działanie tych parametrów tej funkcji. Najpierw w funkcji nagłówku brane są parametry nazw przestrzeni nazw, a jeżeli ich nie ma, to parametry typu jednostki, a jeżeli nie ma, to generowane są nazwy na podstawie aktualnego modułu. === {{Code|p["Nazwa przedmiotowej przestrzeni nazw"](frame,...)}} === Funkcja pisze przedmiotową nazwę przestrzeni nazw jakikolwiek nazwy przestrzeni nazw (tzn. nazwę przedmiotową nazwy przestrzenie nazw, czyli nie dyskusji, zamieniana jest na nią samą, czyli identyfikator przestrzeni się nie zmienia, a dyskusji, nie przedmiotową, przekształca się na przedmiotową jej odpowiadającą, czyli w tym przypadku identyfikator przestrzeni zmniejsza się o numer mniej), według podanej w zmiennej {{Code|nazwa przestrzeni nazw}} dla pozycja bazowej w podanych parametrach szablonu rodzicu ramki dziecka, lub dla innej pozycji należy parametr podawać w formie {{Code|nazwa przestrzeni nazw 1}}, {{Code|nazwa przestrzeni nazw 2}}, {{Code|nazwa przestrzeni nazw 3}},..., lub te parametry można podać w postaci ogólnej {{Code|nazwa przestrzeni nazw i}}. Parametry podaje się w parametrach rodzica wywołania tej funkcji {{Code|{{m|Pudełko|Nazwa przedmiotowej przestrzeni nazw}}}} (ale ich nie trzeba podawać w dziecku, ale można) i w parametrach dziecka, jeśli chodzi o zmienną {{Code|numer jednostki}}, czyli np.: {{Code|{{m|Pudełko|Nazwa przedmiotowej przestrzeni nazw|numer jednostki{{=}}<jakaś liczba całkowita dodatnia>}}}}. Te parametry przestrzenne zamiast w rodzicu w szablonie można podać w ramce dziecka, wtedy parametry dziecka mają pierwszeństwo. Parametry przestrzenne mogą mogą być podane w postaci przestrzeni przedmiotowej lub dyskusji, ale ta funkcja zawsze ją zamienia na przedmiotową. Przestrzeń nazw z parametrów nazw przestrzennych może odpowiadać wartości przestrzeni głównej, to wtedy odpowiednia przestrzeń nazw z parametru nazwy jednostki się nie liczy w tej funkcji, aby się liczyła należy użyć funkcji {{Code|{{sr|#p["Nazwa przedmiotowej przestrzeni nazw 2"](frame,...)|p=Pudełko}}}}. Definicja skrótowa funkcji: <syntaxhighlight lang="lua"> p["Nazwa przedmiotowej przestrzeni nazw"]=function(frame,czy_uwzglednic_alternatywna_nazwe,i)...end; </syntaxhighlight> Wtedy ciało funkcji tej, czyli jego definicja w środku, jest: <syntaxhighlight lang="lua"> -- Jest liczony numer parametru nazwy przestrzeni nazw, domyslnie chodzi tu o numer bazowy parametrów przestrzennych; local numer_jednostki=i or frame.args["numer jednostki"]; local liczba_numer_jednostki=((numer_jednostki)and(tonumber(numer_jednostki))or 0); local pudelko_pomocne_modul=require("Module:Pudełko/Pomocne"); -- Liczy nazwę przestrzeni nazw przedmiotową na podstawie podanych parametrów; return pudelko_pomocne_modul.Nazwa_przestrzeni_nazw(frame,1, czy_uwzglednic_alternatywna_nazwe,liczba_numer_jednostki); </syntaxhighlight> Parametry funkcji: * {{Code|frame}} - tablica ramki tablicy transportu, * {{Code|czy_uwzglednic_alternatywna_nazwe}} - czy ma uwzględniać nazwę przestrzeni nazw domyślną szablonu, dostępne wartości: {{Code|false}}, w której nazwa domyślna nie jest uwzględniana wtedy, oraz {{Code|nil}} i {{Code|true}}, które oznaczają to samo, w tym jeżeli ona jest uwzględniana, wtedy jest brany parametr pierwszy dziecka, który musi istnieć przy takiej wartości tego parametru, tzn. {{Code|{{m|Pudełko|Nazwa przedmiotowej przestrzeni nazw|Dyskusja szablonu}}}} - ta nazwa domyślna zostanie zamieniona na przedmiotową, a jak ona by była przedmiotowa, to żadnej zamiany by nie było, a nazwa uzyskana z nazwy przestrzeni nazw z parametrów przestrzennych jest w takim przypadku błędna, to w takim razie brany jest ten parametr, a jeżeli ta nazwa domyślna jest błędna, czyli {{Code|{{m|Pudełko|Nazwa przedmiotowej przestrzeni nazw|Moja przestrzeń}}}}, wtedy funkcja zwraca stan błędu {{Code|(błąd)}}. * {{Code|i}} - numer zmiennej nazwy przestrzeni nazw. Funkcja wykorzystuje {{Code|{{sr|#p.Nazwa_przestrzeni_nazw(frame,...)|p=Pudełko/Pomocne}}}} do wyznaczania ogólnego nazwy przestrzeni nazw dla pozycji bazowej i numerkowej, tzn. dla pozycji: jeden, dwa, trzy,..., itd, i ich ogólnej. Parametr ramki tablicy transportu rodzica szablonu: * {{Code|nazwa przestrzeni nazw}}, {{Code|nazwa przestrzeni nazw 1}}, {{Code|nazwa przestrzeni nazw 2}}, {{Code|nazwa przestrzeni nazw 3}},..., {{Code|nazwa przestrzeni nazw i}} - nazwy przestrzeni nazw dla pozycji bazowej oraz zwykłej i ogólnej numerkowej, * {{Code|typ jednostki}}, {{Code|typ jednostki 1}}, {{Code|typ jednostki 2}}, {{Code|typ jednostki 3}},..., {{Code|typ jednostki i}} - typy jednostek, którym odpowiadają pewne przestrzenie przedmiotowe, dla pozycji bazowej, numerkowej i ogólnej. Parametry ramki tablicy transportu dziecka: * Parametry dziecka są takie same jak rodzica dla funkcji pudełkowej plus tu wymienione, * {{Code|numer jednostki}} - jak parametr {{Code|i}} nie został ustawiony, to wtedy liczy się ta zmienna. Przykłady: <syntaxhighlight lang="mediawiki"> {{Nazwa szablonu|nazwa przestrzeni nazw=Dyskusja Wikibooks|nazwa przestrzeni nazw 2=Dyskusja szablonu|nazwa przestrzeni nazw i=Dyskusja modułu}} </syntaxhighlight> W dziecku powiedzmy jest wywołanie, i szukamy nazwy przestrzeni nazw o numerze dwa, która nie została podana, ale istnieje za to jej wersji ogólna {{Code|nazwa przestrzeni nazw i}} i domyślna {{Code|nazwa przestrzeni nazw}}: <syntaxhighlight lang="mediawiki"> {{#invoke:Pudełko|Nazwa przedmiotowej przestrzeni nazw|numer jednostki=1}} </syntaxhighlight> Na podstawie powyższego przykładu otrzymamy wynik o schemacie, nie wyniku, bo tam nie ma zmiennej {{Code|nazwa przestrzeni nazw 1}}, ale jest {{Code|nazwa przestrzeni nazw i}}: <syntaxhighlight lang="mediawiki"> <!-- Ale nie "nazwa przestrzeni nazw", bo jej nie ma, ale za to istnieje "nazwa przestrzeni nazw i"; --> <!-- nazwa przestrzeni nazw 2=nazwa przestrzeni nazw i=Dyskusja modułu; --> <!-- Czyli wynik: --> Moduł <!-- Widzimy, że wygenerowała się nazwa przestrzeni nazw, którą jest przestrzeń przedmiotowa programowa przestrzeni dyskusji "Dyskusja modułu", którą również jest "Szablon" jego przestrzeni dyskusji "Dyskusja szablonu", a dla ich przestrzeni przedmiotowej, zamiast dyskusji, to samo przekształca się na to samo; --> </syntaxhighlight> Nie jest brana w tym powyższym przykładzie zmienna {{Code|nazwa przestrzeni nazw}}, bo jej nie ma, ale za to jest {{Code|nazwa przestrzeni nazw i}}, bo ona występuje jako parametr domyślny ogólny dla parametrów numerkowych. Przykłady w wikikodzie: * {{Code|{{m|Pudełko|Nazwa przedmiotowej przestrzeni nazw|numer jednostki{{=}}2}}}} → {{Tt|{{#invoke:Pudełko|Nazwa przedmiotowej przestrzeni nazw|numer jednostki=2}}}} * {{Code|{{m|Pudełko|Nazwa przedmiotowej przestrzeni nazw|Dyskusja szablonu|nazwa przestrzeni nazw i{{=}}Moja przestrzeń|numer jednostki{{=}}2}}}} → {{Tt|{{#invoke:Pudełko|Nazwa przedmiotowej przestrzeni nazw|Dyskusja szablonu|nazwa przestrzeni nazw i=Moja przestrzeń|numer jednostki=2}}}} * {{Code|{{m|Pudełko|Nazwa przedmiotowej przestrzeni nazw|nazwa przestrzeni nazw 2{{=}}Dyskusja szablonu|numer jednostki{{=}}2}}}} → {{Tt|{{#invoke:Pudełko|Nazwa przedmiotowej przestrzeni nazw|nazwa przestrzeni nazw 2=Dyskusja szablonu|numer jednostki=2}}}} * {{Code|{{m|Pudełko|Nazwa przedmiotowej przestrzeni nazw|nazwa przestrzeni nazw 2{{=}}Dyskusja szablonu|numer jednostki{{=}}2}}}} → {{Tt|{{#invoke:Pudełko|Nazwa przedmiotowej przestrzeni nazw|nazwa przestrzeni nazw i=Dyskusja szablonu|numer jednostki=2}}}} * {{Code|{{m|Pudełko|Nazwa przedmiotowej przestrzeni nazw|nazwa przestrzeni nazw{{=}}Dyskusja szablonu|numer jednostki{{=}}2}}}} → {{Tt|{{#invoke:Pudełko|Nazwa przedmiotowej przestrzeni nazw|nazwa przestrzeni nazw=Dyskusja szablonu|numer jednostki=2}}}} Powyżej dla przykładu podano parametry nie w rodzicu w szablonie, tylko w dziecku, jeśli chodzi o parametry nazw przestrzeni nazw, ale ich się za to nie powinno podawać w tych ramach, tylko w szablonach, w których wywoływane są te ramki pudełek {{Code|{{m|Pudełko}}}}, ale tak tutaj tak zrobiono by było najłatwiej sprawdzić działanie tego typu funkcji. Analogicznie możemy podawać parametry typu jednostki, np.: wywołaniu modułowym {{Code|{{m|Pudełko|Nazwa przedmiotowej przestrzeni nazw|typ jednostki 2{{=}}strona szablonu|numer jednostki{{=}}2}}}}, ale o tym więcej w rozdziałach {{Code|{{sr|# p["Przedmiotowy typ jednostki"](frame,i)|p=Pudełko}}}} w „{{sr|#Funkcje typu jednostki|p=Pudełko}}”, ale wtedy ta sama nazwa przestrzeni nazw reprezentowana przez {{Parametr|typ jednostki 2|strona szablonu}}, jest zamieniana na to samo, lepiej jest tutaj używać parametrów przestrzennych nazw niż typu jednostki, bo typ jednostki ma taką samą wartość dla przestrzeni przedmiotowej, co dyskusji. Tutaj parametr dyskusji typu jednostki bazowy i numerkowy ogólny, czy szczegółowy, nie gra roli, bo nawet, gdy wygenerujemy nazwę przestrzeni dyskusji za pomoca tego parametru, to i tak otrzymamy na samym końcu jego nazwę przedmiotową. Również parametry typu jednostki nie powinno się podawać w dziecku w ramce, tylko w rodzicu w szablonie jako parametry, w którym ta ramka jest wywoływana, ale tutaj podano jedynie dla przykładu, jak najłatwiej sprawdzić działanie tych parametrów tej funkcji. Najpierw w funkcji nagłówku brane są parametry nazw przestrzeni nazw, a jeżeli ich nie ma, to parametry typu jednostki, a jeżeli nie ma, to generowane są nazwy na podstawie aktualnego modułu. === {{Code|p["Nazwa przestrzeni nazw dyskusji"](frame,...)}} === Funkcja pisze nazwę przestrzeni nazw dyskusji jakikolwiek nazwy przestrzeni nazw (tzn. nazwę przedmiotową nazwy przestrzenie nazw, czyli nie dyskusji, zamieniana jest na dyskusji, czyli identyfikator przestrzeni się zmienia jeden wyżej, a dyskusji, nie przedmiotową, przekształca się na tą samą), według podanej w zmiennej {{Code|nazwa przestrzeni nazw}} dla pozycja bazowej w podanych parametrach szablonu rodzicu ramki dziecka, lub dla innej pozycji należy parametr podawać w formie {{Code|nazwa przestrzeni nazw 1}}, {{Code|nazwa przestrzeni nazw 2}}, {{Code|nazwa przestrzeni nazw 3}},..., lub te parametry można podać w postaci ogólnej {{Code|nazwa przestrzeni nazw i}}. Parametry podaje się w parametrach rodzica wywołania tej funkcji {{Code|{{m|Pudełko|Nazwa przestrzeni nazw dyskusji}}}} (ale ich nie trzeba podawać w dziecku, ale można) i w parametrach dziecka, jeśli chodzi o zmienną {{Code|numer jednostki}}, czyli np.: {{Code|{{m|Pudełko|Nazwa przestrzeni nazw dyskusji|numer jednostki{{=}}<jakaś liczba całkowita dodatnia>}}}}. Te parametry przestrzenne zamiast w rodzicu w szablonie można podać w ramce dziecka, wtedy parametry dziecka mają pierwszeństwo. Parametry przestrzenne mogą mogą być podane w postaci przestrzeni przedmiotowej lub dyskusji, ale ta funkcja zawsze ją zamienia na dyskusji. Przestrzeń nazw z parametrów nazw przestrzennych może odpowiadać wartości przestrzeni głównej, to wtedy odpowiednia przestrzeń nazw z parametru nazwy jednostki się nie liczy w tej funkcji, aby się liczyła należy użyć funkcji {{Code|{{sr|#p["Nazwa przestrzeni nazw dyskusji 2"](frame,...)|p=Pudełko}}}}. Definicja skrótowa funkcji: <syntaxhighlight lang="lua"> p["Nazwa przestrzeni nazw dyskusji"]=function(frame,czy_uwzglednic_alternatywna_nazwe,i)...end; </syntaxhighlight> Wtedy ciało funkcji tej, czyli jego definicja w środku, jest: <syntaxhighlight lang="lua"> -- Jest liczony numer parametru nazwy przestrzeni nazw, domyslnie chodzi tu o numer bazowy parametrów przestrzennych; local numer_jednostki=i or frame.args["numer jednostki"]; local liczba_numer_jednostki=((numer_jednostki)and(tonumber(numer_jednostki))or 0); local pudelko_pomocne_modul=require("Module:Pudełko/Pomocne"); -- Liczy nazwę przestrzeni nazw dyskusji na podstawie podanych parametrów; return pudelko_pomocne_modul.Nazwa_przestrzeni_nazw(frame,2, czy_uwzglednic_alternatywna_nazwe,liczba_numer_jednostki); </syntaxhighlight> Parametry funkcji: * {{Code|frame}} - tablica ramki tablicy transportu, * {{Code|czy_uwzglednic_alternatywna_nazwe}} - czy ma uwzględniać nazwę przestrzeni nazw domyślną szablonu, dostępne wartości: {{Code|false}}, w której nazwa domyślna nie jest uwzględniana wtedy, oraz {{Code|nil}} i {{Code|true}}, które oznaczają to samo, w tym jeżeli ona jest uwzględniana, wtedy jest brany parametr pierwszy dziecka, który musi istnieć przy takiej wartości tego parametru, tzn. {{Code|{{m|Pudełko|Nazwa przestrzeni nazw dyskusji|Szablon}}}} - ta nazwa domyślna zostanie przekształcona na dyskusji, a jeżeli ona by była dyskusji, to nie byłoby żadnego przekształcenia, a nazwa uzyskana nazwy przestrzeni nazw z parametrów przestrzennych jest w takim przypadku błędna, to w takim razie brany jest ten parametr, a jeżeli nazwa domyślna jest błędna, czyli {{Code|{{m|Pudełko|Nazwa przestrzeni nazw dyskusji|Moja przestrzeń}}}}, wtedy funkcja zwraca stan błędu {{Code|(błąd)}}. * {{Code|i}} - numer zmiennej nazwy przestrzeni nazw. Funkcja wykorzystuje {{Code|{{sr|#p.Nazwa_przestrzeni_nazw(frame,...)|p=Pudełko/Pomocne}}}} do wyznaczania ogólnego nazwy przestrzeni nazw dla pozycji bazowej i numerkowej, tzn. dla pozycji: jeden, dwa, trzy,..., itd, i ich ogólnej. Parametr ramki tablicy transportu rodzica szablonu: * {{Code|nazwa przestrzeni nazw}}, {{Code|nazwa przestrzeni nazw 1}}, {{Code|nazwa przestrzeni nazw 2}}, {{Code|nazwa przestrzeni nazw 3}},..., {{Code|nazwa przestrzeni nazw i}} - nazwy przestrzeni nazw dla pozycji bazowej oraz zwykłej i ogólnej numerkowej, * {{Code|typ jednostki}}, {{Code|typ jednostki 1}}, {{Code|typ jednostki 2}}, {{Code|typ jednostki 3}},..., {{Code|typ jednostki i}} - typy jednostek, którym odpowiadają pewne przestrzenie przedmiotowe, dla pozycji bazowej, numerkowej i ogólnej. Parametry ramki tablicy transportu dziecka: * Parametry dziecka są takie same jak rodzica dla funkcji pudełkowej plus tu wymienione, * {{Code|numer jednostki}} - jak parametr {{Code|i}} nie został ustawiony, to wtedy liczy się ta zmienna. Przykłady: <syntaxhighlight lang="mediawiki"> {{Nazwa szablonu|nazwa przestrzeni nazw=Wikibooks|nazwa przestrzeni nazw 2=Szablon|nazwa przestrzeni nazw i=Moduł}} </syntaxhighlight> W dziecku powiedzmy jest wywołanie, i szukamy nazwy przestrzeni nazw o numerze dwa, która nie została podana, ale istnieje za to jej wersji ogólna {{Code|nazwa przestrzeni nazw i}} i domyślna {{Code|nazwa przestrzeni nazw}}: <syntaxhighlight lang="mediawiki"> {{#invoke:Pudełko|Nazwa przestrzeni nazw dyskusji|numer jednostki=1}} </syntaxhighlight> Na podstawie powyższego przykładu otrzymamy wynik o schemacie, nie wyniku, bo tam nie ma zmiennej {{Code|nazwa przestrzeni nazw 1}}, ale jest {{Code|nazwa przestrzeni nazw i}}: <syntaxhighlight lang="mediawiki"> <!-- Ale nie "nazwa przestrzeni nazw", bo jej nie ma, ale za to istnieje "nazwa przestrzeni nazw i"; --> <!-- nazwa przestrzeni nazw 2=nazwa przestrzeni nazw i=Moduł; --> <!-- Czyli wynik: --> Dyskusja modułu <!-- Widzimy, że wygenerowała się nazwa przestrzeni nazw, którą jest przestrzeń dyskusji przestrzeni programowej przestrzeni przedmiotowej "Moduł", którą również jest "Szablon" jego przestrzeni dyskusji "Dyskusja szablonu", a dla ich przestrzeni przedmiotowej, zamiast dyskusji, to przekształca się na dyskusji jej odpowiadającą; --> </syntaxhighlight> Nie jest brana w tym powyższym przykładzie zmienna {{Code|nazwa przestrzeni nazw}}, bo jej nie ma, ale za to jest {{Code|nazwa przestrzeni nazw i}}, bo ona występuje jako parametr domyślny ogólny dla parametrów numerkowych. Przykłady w wikikodzie: * {{Code|{{m|Pudełko|Nazwa przestrzeni nazw dyskusji|numer jednostki{{=}}2}}}} → {{Tt|{{#invoke:Pudełko|Nazwa przestrzeni nazw dyskusji|numer jednostki=2}}}} * {{Code|{{m|Pudełko|Nazwa przestrzeni nazw dyskusji|Szablon|nazwa przestrzeni nazw i{{=}}Moja przestrzeń|numer jednostki{{=}}2}}}} → {{Tt|{{#invoke:Pudełko|Nazwa przestrzeni nazw dyskusji|Szablon|nazwa przestrzeni nazw i=Moja przestrzeń|numer jednostki=2}}}} * {{Code|{{m|Pudełko|Nazwa przestrzeni nazw dyskusji|nazwa przestrzeni nazw 2{{=}}Szablon|numer jednostki{{=}}2}}}} → {{Tt|{{#invoke:Pudełko|Nazwa przestrzeni nazw dyskusji|nazwa przestrzeni nazw 2=Szablon|numer jednostki=2}}}} * {{Code|{{m|Pudełko|Nazwa przestrzeni nazw dyskusji|nazwa przestrzeni nazw 2{{=}}Szablon|numer jednostki{{=}}2}}}} → {{Tt|{{#invoke:Pudełko|Nazwa przestrzeni nazw dyskusji|nazwa przestrzeni nazw i=Szablon|numer jednostki=2}}}} * {{Code|{{m|Pudełko|Nazwa przestrzeni nazw dyskusji|nazwa przestrzeni nazw{{=}}Szablon|numer jednostki{{=}}2}}}} → {{Tt|{{#invoke:Pudełko|Nazwa przestrzeni nazw dyskusji|nazwa przestrzeni nazw=Szablon|numer jednostki=2}}}} Powyżej dla przykładu podano parametry nie w rodzicu w szablonie, tylko w dziecku, jeśli chodzi o parametry nazw przestrzeni nazw, ale ich się za to nie powinno podawać w tych ramach, tylko w szablonach, w których wywoływane są te ramki pudełek {{Code|{{m|Pudełko}}}}, ale tak tutaj tak zrobiono by było najłatwiej sprawdzić działanie tego typu funkcji. Analogicznie możemy podawać parametry typu jednostki, np.: wywołaniu modułowym {{Code|{{m|Pudełko|Nazwa przestrzeni nazw dyskusji|typ jednostki 2{{=}}strona szablonu|numer jednostki{{=}}2}}}}, ale o tym więcej w rozdziałach {{Code|{{sr|# p["Dyskusyjny typ jednostki"](frame,i)|p=Pudełko}}}} w „{{sr|#Funkcje typu jednostki|p=Pudełko}}”, ale wtedy nazwa przestrzeni nazw reprezentowana przez {{Parametr|typ jednostki 2|strona szablonu}}, jest zamieniana na nazwę przestrzeni nazw dyskusji. Parametr dyskusji typu jednostki bazowy lub dla danego numerka ogólny, czy szczegółowy, nie gra roli. Również parametry typu jednostki nie powinno się podawać w dziecku w ramce, tylko w rodzicu w szablonie jako parametry, w którym ta ramka jest wywoływana, ale tutaj podano jedynie dla przykładu, jak najłatwiej sprawdzić działanie tych parametrów tej funkcji. Najpierw w funkcji nagłówku brane są parametry nazw przestrzeni nazw, a jeżeli ich nie ma, to parametry typu jednostki, a jeżeli nie ma, to generowane są nazwy na podstawie aktualnego modułu. == Funkcje nazw przestrzeni nazw drugiej wersji == === {{Code|p["Nazwa przestrzeni nazw 2"](frame,...)}} === Funkcja pisze nazwę przestrzeni nazw, niezależnie, czy to jest przedmiotowa, czy dyskusji, według, i nie zawsze tylko, podanej w zmiennej {{Code|nazwa przestrzeni nazw}} dla pozycja bazowej w podanych parametrach szablonu rodzicu ramki dziecka, lub dla innej pozycji należy parametr podawać w formie {{Code|nazwa przestrzeni nazw 1}}, {{Code|nazwa przestrzeni nazw 2}}, {{Code|nazwa przestrzeni nazw 3}},..., lub te parametry można podać w postaci ogólnej {{Code|nazwa przestrzeni nazw i}}. W tej funkcji trzeba też podawać parametry nazwy jednostek {{Code|nazwa jednostki}}, {{Code|nazwa jednostki 1}}, {{Code|nazwa jednostki 2}}, {{Code|nazwa jednostki 3}},... Parametry podaje się w parametrach rodzica wywołania tej funkcji {{Code|{{m|Pudełko|Nazwa przestrzeni nazw 2}}}} (ale ich nie trzeba podawać w dziecku, ale można) i w parametrach dziecka, jeśli chodzi o zmienną {{Code|numer jednostki}}, czyli np.: {{Code|{{m|Pudełko|Nazwa przestrzeni nazw 2|numer jednostki{{=}}<jakaś liczba całkowita dodatnia>}}}}. Te parametry przestrzenne zamiast w rodzicu w szablonie można podać w ramce dziecka, wtedy parametry dziecka mają pierwszeństwo. Przestrzeń nazw z parametrów nazw przestrzennych może odpowiadać wartości przestrzeni głównej, to wtedy odpowiednia przestrzeń nazw z parametru nazwy jednostki się liczy w tej funkcji, wtedy jest liczona nazwa przestrzeni nazw z tego parametru. Gdy parametry przestrzenne lub typ jednostki w drugim podejściu nie wskazują na przestrzeń główną, to wtedy działanie tej funkcji jest podobne do {{Code|{{sr|#p["Nazwa przestrzeni nazw"](frame,...)|p=Pudełko}}}}. Definicja skrótowa funkcji: <syntaxhighlight lang="lua"> p["Nazwa przestrzeni nazw 2"]=function(frame,czy_uwzglednic_alternatywna_nazwe,i)...end; </syntaxhighlight> Wtedy ciało funkcji tej, czyli jego definicja w środku, jest: <syntaxhighlight lang="lua"> local pudelko_pomocne_modul=require("Module:Pudełko/Pomocne"); -- Liczy nazwę przestrzeni nazw, jeżeli z parametrów przestrzennych przestrzeń wskazuje na główną, to wtedy jest liczona przestrzeń nazw z nazwy jednostki; return pudelko_pomocne_modul.Nazwa_przestrzeni_nazw_2(frame,czy_uwzglednic_alternatywna_nazwe,i) </syntaxhighlight> Parametry funkcji: * {{Code|frame}} - tablica ramki tablicy transportu, * {{Code|czy_uwzglednic_alternatywna_nazwe}} - czy ma uwzględniać nazwę przestrzeni nazw domyślną szablonu, dostępne wartości: {{Code|false}}, w której nazwa domyślna nie jest uwzględniana wtedy, oraz {{Code|nil}} i {{Code|true}}, które oznaczają to samo, w tym jeżeli ona jest uwzględniana, wtedy jest brany parametr pierwszy dziecka, który musi istnieć przy takiej wartości tego parametru, tzn. {{Code|{{m|Pudełko|Nazwa przestrzeni nazw 2|Szablon}}}}, a nazwa uzyskana nazwy przestrzeni nazw jest w takim przypadku błędna, a jeżeli nazwa domyślna jest błędna, czyli {{Code|{{m|Pudełko|Nazwa przestrzeni nazw 2|Moja przestrzeń}}}}, wtedy funkcja zwraca stan błędu {{Code|(błąd)}}. * {{Code|i}} - numer zmiennej nazwy przestrzeni nazw. Funkcja wykorzystuje {{Code|{{sr|#p.Nazwa_przestrzeni_nazw_2(frame,...)|p=Pudełko/Pomocne}}}} do wyznaczania ogólnego nazwy przestrzeni nazw dla pozycji bazowej i numerkowej, tzn. dla pozycji: jeden, dwa, trzy,..., itd, i ich ogólnej. Parametr ramki tablicy transportu rodzica szablonu: * {{Code|nazwa przestrzeni nazw}}, {{Code|nazwa przestrzeni nazw 1}}, {{Code|nazwa przestrzeni nazw 2}}, {{Code|nazwa przestrzeni nazw 3}},..., {{Code|nazwa przestrzeni nazw i}} - nazwy przestrzeni nazw dla pozycji bazowej oraz zwykłej i ogólnej numerkowej, * {{Code|nazwa jednostki}}, {{Code|nazwa jednostki 1}}, {{Code|nazwa jednostki 2}}, {{Code|nazwa jednostki 3}},... - nazwy jednostek dla pozycji bazowej i numerkowej, * {{Code|typ jednostki}}, {{Code|typ jednostki 1}}, {{Code|typ jednostki 2}}, {{Code|typ jednostki 3}},..., {{Code|typ jednostki i}} - typy jednostek, którym odpowiadają pewne przestrzenie przedmiotowe, dla pozycji bazowej, numerkowej i ogólnej, ** {{Code|dyskusja typu jednostki}}, {{Code|dyskusja typu jednostki 1}}, {{Code|dyskusja typ jednostki 2}}, {{Code|dyskusja typ jednostki 3}},..., {{Code|dyskusja typ jednostki i}} - czy dany typ jednostki ma przedstawiać, jeśli niepusta, przestrzeń dyskusji dla pozycji bazowej, numerkowej i ogólnej. Parametry ramki tablicy transportu dziecka: * Parametry dziecka są takie same jak rodzica dla funkcji pudełkowej plus tu wymienione, * {{Code|numer jednostki}} - jak parametr {{Code|i}} nie został ustawiony, to wtedy liczy się ta zmienna. Przykłady: <syntaxhighlight lang="mediawiki"> {{Nazwa szablonu|nazwa przestrzeni nazw=Wikibooks|nazwa przestrzeni nazw 1=Szablon|nazwa przestrzeni nazw i=|nazwa jednostki 2=Wikibooks:Strona}} </syntaxhighlight> W dziecku powiedzmy jest wywołanie, i szukamy nazwy przestrzeni nazw o numerze dwa, która została podana, ale istnieje za to jej wersji ogólna {{Code|nazwa przestrzeni nazw i}} i domyślna {{Code|nazwa przestrzeni nazw}}, ale wtedy dla tego numerkowego liczy się to ogólne z {{Code| i}}, a ponieważ ta nazwa jest pusta, więc będziemy liczyli nazwę przestrzeni nazw z {{Code|nazwa jednostki 2}}: <syntaxhighlight lang="mediawiki"> {{#invoke:Pudełko|Nazwa przestrzeni nazw 2|numer jednostki=2}} </syntaxhighlight> Na podstawie powyższego przykładu otrzymamy wynik o schemacie, nie wyniku, bo tam nie ma zmiennej {{Code|nazwa przestrzeni nazw 1}}, ale jest {{Code|nazwa przestrzeni nazw i}}: <syntaxhighlight lang="mediawiki"> <!-- Ale nie "nazwa przestrzeni nazw 2", bo jej nie ma, ale za to istnieje "nazwa przestrzeni nazw i"; --> <!-- nazwa przestrzeni nazw 2=nazwa przestrzeni nazw i="", a nazwa jednostki 2="Wikibooks:Strona"; --> <!-- Czyli wynik: --> Wikibooks <!-- Widzimy, że wygenerowała się nazwa przestrzeni nazw, którą jest przestrzeń nieprogramowa, ale projektu, wychodząca z nazwy jednostek w tym przypadku z "nazwa jednostki 2"; --> </syntaxhighlight> Nie jest brana w tym powyższym przykładzie zmienna {{Code|nazwa przestrzeni nazw}}, bo jej nie ma, ale za to jest {{Code|nazwa przestrzeni nazw i}}, bo ona występuje jako parametr domyślny ogólny dla parametrów numerkowych. Tytaj jest używana jest zmienna {{Code|nazwa jednostki 2}} do wygenerowania ostatecznego wyniku, bo jak można zauważyć, parametry przestrzenne wskazują na przestrzeń główną, a nazwy jednostek już nie. Przykłady w wikikodzie: * {{Code|{{m|Pudełko|Nazwa przestrzeni nazw 2|numer jednostki{{=}}2}}}} → {{Tt|{{#invoke:Pudełko|Nazwa przestrzeni nazw 2|numer jednostki=2}}}} * {{Code|{{m|Pudełko|Nazwa przestrzeni nazw 2|Szablon|nazwa przestrzeni nazw i{{=}}Moja przestrzeń|numer jednostki{{=}}2}}}} → {{Tt|{{#invoke:Pudełko|Nazwa przestrzeni nazw 2|Szablon|nazwa przestrzeni nazw i=Moja przestrzeń|numer jednostki=2}}}} * {{Code|{{m|Pudełko|Nazwa przestrzeni nazw 2|nazwa przestrzeni nazw 2{{=}}|nazwa jednostki 2{{=}}Szablon:Strona|numer jednostki{{=}}2}}}} → {{Tt|{{#invoke:Pudełko|Nazwa przestrzeni nazw 2|nazwa przestrzeni nazw 2=|nazwa jednostki 2=Szablon:Strona|numer jednostki=2}}}} * {{Code|{{m|Pudełko|Nazwa przestrzeni nazw 2|nazwa przestrzeni nazw i{{=}}|nazwa jednostki 2{{=}}Szablon:Strona|numer jednostki{{=}}2}}}} → {{Tt|{{#invoke:Pudełko|Nazwa przestrzeni nazw 2|nazwa przestrzeni nazw i=|nazwa jednostki 2=Szablon:Strona|numer jednostki=2}}}} * {{Code|{{m|Pudełko|Nazwa przestrzeni nazw 2|Szablon|nazwa przestrzeni nazw{{=}}|nazwa jednostki 2{{=}}Wikibooks:Strona|numer jednostki{{=}}2}}}} → {{Tt|{{#invoke:Pudełko|Nazwa przestrzeni nazw 2|Szablon|nazwa przestrzeni nazw=|nazwa jednostki 2=Wikibooks:Strona|numer jednostki=2}}}} Powyżej dla przykładu podano parametry nie w rodzicu w szablonie, tylko w dziecku, jeśli chodzi o parametry nazw przestrzeni nazw i nazw jednostek, ale ich się za to nie powinno podawać w tych ramach, tylko w szablonach, w których wywoływane są te ramki pudełek {{Code|{{m|Pudełko}}}}, ale tak tutaj tak zrobiono by było najłatwiej sprawdzić działanie tego typu funkcji. Analogicznie możemy podawać parametry typu jednostki, np.: wywołaniu modułowym {{Code|{{m|Pudełko|Nazwa przestrzeni nazw 2|typ jednostki 2{{=}}Podręcznik|nazwa jednostki 2{{=}}Szablon:Strona|numer jednostki{{=}}2}}}} (ale wtedy jest brana przestrzeń nazw z nazwy jednostki), ale o tym więcej w rozdziałach {{Code|{{sr|#p["Typ jednostki 2"](frame,i)|p=Pudełko}}}} w „{{sr|#Funkcje typu jednostki|p=Pudełko}}”, on definiuje przestrzenie przedmiotowe, ale można użyć parametru dyskusji typu jednostki z wartością niepustą, wtedy wyświetli się nazwa przestrzeni nazw dyskusji. Jeżeli typ jednostki wskazuje na przestrzeń nazw główną, wtedy się liczą parametry nazw jednostek. Również parametry typu jednostki nie powinno się podawać w dziecku w ramce, tylko w rodzicu w szablonie jako parametry, w którym ta ramka jest wywoływana, ale tutaj podano jedynie dla przykładu, jak najłatwiej sprawdzić działanie tych parametrów tej funkcji. Najpierw w funkcji nagłówku brane są parametry nazw przestrzeni nazw, a jeżeli ich nie ma, to parametry typu jednostki, a jeżeli nie ma lub parametry przestrzenne wskazują na przestrzeń główną, i nie ma nazwy jednostki, to generowane są nazwy tej funkcji na podstawie aktualnej strony. === {{Code|p["Nazwa przedmiotowej przestrzeni nazw 2"](frame,...)}} === Funkcja pisze przedmiotową nazwę przestrzeni nazw jakikolwiek nazwy przestrzeni nazw (tzn. nazwę przedmiotową nazwy przestrzenie nazw, czyli nie dyskusji, zamieniana jest na nią samą, czyli identyfikator przestrzeni się nie zmienia, a dyskusji, nie przedmiotową, przekształca się na przedmiotową jej odpowiadającą, czyli w tym przypadku identyfikator przestrzeni zmniejsza się o numer mniej), według, i nie zawsze tylko, podanej w zmiennej {{Code|nazwa przestrzeni nazw}} dla pozycja bazowej w podanych parametrach szablonu rodzicu ramki dziecka, lub dla innej pozycji należy parametr podawać w formie {{Code|nazwa przestrzeni nazw 1}}, {{Code|nazwa przestrzeni nazw 2}}, {{Code|nazwa przestrzeni nazw 3}},..., lub te parametry można podać w postaci ogólnej {{Code|nazwa przestrzeni nazw i}}. W tej funkcji trzeba też podawać parametry nazwy jednostek {{Code|nazwa jednostki}}, {{Code|nazwa jednostki 1}}, {{Code|nazwa jednostki 2}}, {{Code|nazwa jednostki 3}},... Parametry podaje się w parametrach rodzica wywołania tej funkcji {{Code|{{m|Pudełko|Nazwa przedmiotowej przestrzeni nazw 2}}}} (ale ich nie trzeba podawać w dziecku, ale można) i w parametrach dziecka, jeśli chodzi o zmienną {{Code|numer jednostki}}, czyli np.: {{Code|{{m|Pudełko|Nazwa przedmiotowej przestrzeni nazw 2|numer jednostki{{=}}<jakaś liczba całkowita dodatnia>}}}}. Te parametry przestrzenne zamiast w rodzicu w szablonie można podać w ramce dziecka, wtedy parametry dziecka mają pierwszeństwo. Przestrzeń nazw z parametrów nazw przestrzennych po przekształceniu na przedmiotową może odpowiadać wartości przestrzeni głównej, to wtedy odpowiednia przestrzeń nazw z parametru nazwy jednostki się liczy w tej funkcji, wtedy jest liczona nazwa przestrzeni nazw z tego parametru. Gdy parametry przestrzenne lub typ jednostki w drugim podejściu nie wskazują na przestrzeń główną, to wtedy działanie tej funkcji jest podobne do {{Code|{{sr|#p["Nazwa przedmiotowej przestrzeni nazw"](frame,...)|p=Pudełko}}}}. Definicja skrótowa funkcji: <syntaxhighlight lang="lua"> p["Nazwa przedmiotowej przestrzeni nazw 2"]=function(frame,czy_uwzglednic_alternatywna_nazwe,i)...end; </syntaxhighlight> Wtedy ciało funkcji tej, czyli jego definicja w środku, jest: <syntaxhighlight lang="lua"> local pudelko_pomocne_modul=require("Module:Pudełko/Pomocne"); return pudelko_pomocne_modul.Nazwa_przestrzeni_nazw_przedmiotowa_dyskusji_2(frame,czy_uwzglednic_alternatywna_nazwe,i,"przedmiotowa"); </syntaxhighlight> Parametry funkcji: * {{Code|frame}} - tablica ramki tablicy transportu, * {{Code|czy_uwzglednic_alternatywna_nazwe}} - czy ma uwzględniać nazwę przestrzeni nazw domyślną szablonu, dostępne wartości: {{Code|false}}, w której nazwa domyślna nie jest uwzględniana wtedy, oraz {{Code|nil}} i {{Code|true}}, które oznaczają to samo, w tym jeżeli ona jest uwzględniana, wtedy jest brany parametr pierwszy dziecka, który musi istnieć przy takiej wartości tego parametru, tzn. {{Code|{{m|Pudełko|Nazwa przedmiotowej przestrzeni nazw 2|Szablon}}}}, a nazwa uzyskana nazwy przestrzeni nazw jest w takim przypadku błędna, a jeżeli nazwa domyślna jest błędna, czyli {{Code|{{m|Pudełko|Nazwa przedmiotowej przestrzeni nazw 2|Moja przestrzeń}}}}, wtedy funkcja zwraca stan błędu {{Code|(błąd)}}. * {{Code|i}} - numer zmiennej nazwy przestrzeni nazw. Funkcja wykorzystuje {{Code|{{sr|#p.Nazwa_przestrzeni_nazw_przedmiotowa_dyskusji_2(frame,...)|p=Pudełko/Pomocne}}}} do wyznaczania ogólnego nazwy przestrzeni nazw dla pozycji bazowej i numerkowej, tzn. dla pozycji: jeden, dwa, trzy,..., itd, i ich ogólnej. Parametr ramki tablicy transportu rodzica szablonu: * {{Code|nazwa przestrzeni nazw}}, {{Code|nazwa przestrzeni nazw 1}}, {{Code|nazwa przestrzeni nazw 2}}, {{Code|nazwa przestrzeni nazw 3}},..., {{Code|nazwa przestrzeni nazw i}} - nazwy przestrzeni nazw dla pozycji bazowej oraz zwykłej i ogólnej numerkowej, * {{Code|nazwa jednostki}}, {{Code|nazwa jednostki 1}}, {{Code|nazwa jednostki 2}}, {{Code|nazwa jednostki 3}},... - nazwy jednostek dla pozycji bazowej i numerkowej, * {{Code|typ jednostki}}, {{Code|typ jednostki 1}}, {{Code|typ jednostki 2}}, {{Code|typ jednostki 3}},..., {{Code|typ jednostki i}} - typy jednostek, którym odpowiadają pewne przestrzenie przedmiotowe, dla pozycji bazowej, numerkowej i ogólnej. Parametry ramki tablicy transportu dziecka: * Parametry dziecka są takie same jak rodzica dla funkcji pudełkowej plus tu wymienione, * {{Code|numer jednostki}} - jak parametr {{Code|i}} nie został ustawiony, to wtedy liczy się ta zmienna. Przykłady: <syntaxhighlight lang="mediawiki"> {{Nazwa szablonu|nazwa przestrzeni nazw=Wikibooks|nazwa przestrzeni nazw 1=Szablon|nazwa przestrzeni nazw i=|nazwa jednostki 2=Dyskusja Wikibooks:Strona}} </syntaxhighlight> W dziecku powiedzmy jest wywołanie, i szukamy nazwy przestrzeni nazw o numerze dwa, która została podana, ale istnieje za to jej wersji ogólna {{Code|nazwa przestrzeni nazw i}} i domyślna {{Code|nazwa przestrzeni nazw}}, ale wtedy dla tego numerkowego liczy się to ogólne z {{Code| i}}, a ponieważ ta nazwa jest pusta, więc będziemy liczyli nazwę przestrzeni nazw z {{Code|nazwa jednostki 2}}: <syntaxhighlight lang="mediawiki"> {{#invoke:Pudełko|Nazwa przedmiotowej przestrzeni nazw 2|numer jednostki=2}} </syntaxhighlight> Na podstawie powyższego przykładu otrzymamy wynik o schemacie, nie wyniku, bo tam nie ma zmiennej {{Code|nazwa przestrzeni nazw 1}}, ale jest {{Code|nazwa przestrzeni nazw i}}: <syntaxhighlight lang="mediawiki"> <!-- Ale nie "nazwa przestrzeni nazw 2", bo jej nie ma, ale za to istnieje "nazwa przestrzeni nazw i"; --> <!-- nazwa przestrzeni nazw 2=nazwa przestrzeni nazw i="", a nazwa jednostki 2="Dyskusja Wikibooks:Strona"; --> <!-- Czyli wynik: --> Wikibooks <!-- Widzimy, że wygenerowała się nazwa przestrzeni nazw, którą jest przestrzeń nieprogramowa, ale projektu, wychodząca z nazwy jednostek w tym przypadku z "nazwa jednostki 2"; --> </syntaxhighlight> Nie jest brana w tym powyższym przykładzie zmienna {{Code|nazwa przestrzeni nazw}}, bo jej nie ma, ale za to jest {{Code|nazwa przestrzeni nazw i}}, bo ona występuje jako parametr domyślny ogólny dla parametrów numerkowych. Tytaj jest używana jest zmienna {{Code|nazwa jednostki 2}} do wygenerowania ostatecznego wyniku, bo jak można zauważyć, parametry przestrzenne wskazują na przestrzeń główną, a nazwy jednostek już nie. Przykłady w wikikodzie: * {{Code|{{m|Pudełko|Nazwa przedmiotowej przestrzeni nazw 2|numer jednostki{{=}}2}}}} → {{Tt|{{#invoke:Pudełko|Nazwa przedmiotowej przestrzeni nazw 2|numer jednostki=2}}}} * {{Code|{{m|Pudełko|Nazwa przedmiotowej przestrzeni nazw 2|Dyskusja szablonu|nazwa przestrzeni nazw i{{=}}Moja przestrzeń|numer jednostki{{=}}2}}}} → {{Tt|{{#invoke:Pudełko|Nazwa przedmiotowej przestrzeni nazw 2|Dyskusja szablonu|nazwa przestrzeni nazw i=Moja przestrzeń|numer jednostki=2}}}} * {{Code|{{m|Pudełko|Nazwa przedmiotowej przestrzeni nazw 2|nazwa przestrzeni nazw 2{{=}}Dyskusja|nazwa jednostki 2{{=}}Dyskusja szablonu:Strona|numer jednostki{{=}}2}}}} → {{Tt|{{#invoke:Pudełko|Nazwa przedmiotowej przestrzeni nazw 2|nazwa przestrzeni nazw 2=Dyskusja|nazwa jednostki 2=Dyskusja szablonu:Strona|numer jednostki=2}}}} * {{Code|{{m|Pudełko|Nazwa przedmiotowej przestrzeni nazw 2|nazwa przestrzeni nazw i{{=}}Dyskusja|nazwa jednostki 2{{=}}Dyskusja szablonu:Strona|numer jednostki{{=}}2}}}} → {{Tt|{{#invoke:Pudełko|Nazwa przedmiotowej przestrzeni nazw 2|nazwa przestrzeni nazw i=Dyskusja|nazwa jednostki 2=Dyskusja szablonu:Strona|numer jednostki=2}}}} * {{Code|{{m|Pudełko|Nazwa przedmiotowej przestrzeni nazw 2|Dyskusja szablonu|nazwa przestrzeni nazw{{=}}Dyskusja|nazwa jednostki 2{{=}}Wikibooks:Strona|numer jednostki{{=}}2}}}} → {{Tt|{{#invoke:Pudełko|Nazwa przedmiotowej przestrzeni nazw 2|Dyskusja szablonu|nazwa przestrzeni nazw=Dyskusja|nazwa jednostki 2=Dyskusja Wikibooks:Strona|numer jednostki=2}}}} Powyżej dla przykładu podano parametry nie w rodzicu w szablonie, tylko w dziecku, jeśli chodzi o parametry nazw przestrzeni nazw i nazw jednostek, ale ich się za to nie powinno podawać w tych ramach, tylko w szablonach, w których wywoływane są te ramki pudełek {{Code|{{m|Pudełko}}}}, ale tak tutaj tak zrobiono by było najłatwiej sprawdzić działanie tego typu funkcji. Analogicznie możemy podawać parametry typu jednostki, np.: wywołaniu modułowym {{Code|{{m|Pudełko|Nazwa przedmiotowej przestrzeni nazw 2|typ jednostki 2{{=}}Podręcznik|nazwa jednostki 2{{=}}Dyskusja szablonu:Strona|numer jednostki{{=}}2}}}} (ale wtedy jest brana przestrzeń nazw z nazwy jednostki), ale o tym więcej w rozdziałach {{Code|{{sr|# p["Przedmiotowy typ jednostki 2"](frame,i)|p=Pudełko}}}} w „{{sr|#Funkcje typu jednostki|p=Pudełko}}”, on definiuje przestrzenie przedmiotowe, ale można użyć parametru dyskusji typu jednostki z wartością niepustą, pustą, czy nawet jej nie podamy, wtedy wyświetli się nazwa przestrzeni nazw przedmiotowej. Jeżeli typ jednostki wskazuje na przestrzeń nazw główną, wtedy się liczą parametry nazw jednostek. Również parametry typu jednostki nie powinno się podawać w dziecku w ramce, tylko w rodzicu w szablonie jako parametry, w którym ta ramka jest wywoływana, ale tutaj podano jedynie dla przykładu, jak najłatwiej sprawdzić działanie tych parametrów tej funkcji. Najpierw w funkcji nagłówku brane są parametry nazw przestrzeni nazw, a jeżeli ich nie ma, to parametry typu jednostki, a jeżeli nie ma lub parametry przestrzenne wskazują na przestrzeń główną, i nie ma nazwy jednostki, to generowane są nazwy tej funkcji na podstawie aktualnej strony. === {{Code|p["Nazwa przestrzeni nazw dyskusji 2"](frame,...)}} === Funkcja pisze nazwę przestrzeni nazw dyskusji jakikolwiek nazwy przestrzeni nazw (tzn. nazwę dyskusji nazwy przestrzenie nazw, czyli nie przedmiotowej, zamieniana jest na nią samą, czyli identyfikator przestrzeni się nie zmienia, a przedmiotową, nie dyskusji, przekształca się na dyskusji jej odpowiadającą, czyli w tym przypadku identyfikator przestrzeni zwiększa się o numer więcej), według, i nie zawsze tylko, podanej w zmiennej {{Code|nazwa przestrzeni nazw}} dla pozycja bazowej w podanych parametrach szablonu rodzicu ramki dziecka, lub dla innej pozycji należy parametr podawać w formie {{Code|nazwa przestrzeni nazw 1}}, {{Code|nazwa przestrzeni nazw 2}}, {{Code|nazwa przestrzeni nazw 3}},..., lub te parametry można podać w postaci ogólnej {{Code|nazwa przestrzeni nazw i}}. W tej funkcji trzeba też podawać parametry nazwy jednostek {{Code|nazwa jednostki}}, {{Code|nazwa jednostki 1}}, {{Code|nazwa jednostki 2}}, {{Code|nazwa jednostki 3}},... Parametry podaje się w parametrach rodzica wywołania tej funkcji {{Code|{{m|Pudełko|Nazwa przestrzeni nazw dyskusji 2}}}} (ale ich nie trzeba podawać w dziecku, ale można) i w parametrach dziecka, jeśli chodzi o zmienną {{Code|numer jednostki}}, czyli np.: {{Code|{{m|Pudełko|Nazwa przestrzeni nazw dyskusji 2|numer jednostki{{=}}<jakaś liczba całkowita dodatnia>}}}}. Te parametry przestrzenne zamiast w rodzicu w szablonie można podać w ramce dziecka, wtedy parametry dziecka mają pierwszeństwo. Przestrzeń nazw z parametrów nazw przestrzennych po przekształceniu na przedmiotową może odpowiadać wartości przestrzeni głównej, to wtedy odpowiednia przestrzeń nazw z parametru nazwy jednostki się liczy w tej funkcji, wtedy jest liczona nazwa przestrzeni nazw z tego parametru. Gdy parametry przestrzenne lub typ jednostki w drugim podejściu nie wskazują na przestrzeń główną, to wtedy działanie tej funkcji jest podobne do {{Code|{{sr|#p["Nazwa dyskusji przestrzeni nazw"](frame,...)|p=Pudełko}}}}. Definicja skrótowa funkcji: <syntaxhighlight lang="lua"> p["Nazwa przestrzeni nazw dyskusji 2"]=function(frame,czy_uwzglednic_alternatywna_nazwe,i)...end; </syntaxhighlight> Wtedy ciało funkcji tej, czyli jego definicja w środku, jest: <syntaxhighlight lang="lua"> local pudelko_pomocne_modul=require("Module:Pudełko/Pomocne"); return pudelko_pomocne_modul.Nazwa_przestrzeni_nazw_przedmiotowa_dyskusji_2(frame,czy_uwzglednic_alternatywna_nazwe,i,"dyskusja"); </syntaxhighlight> Parametry funkcji: * {{Code|frame}} - tablica ramki tablicy transportu, * {{Code|czy_uwzglednic_alternatywna_nazwe}} - czy ma uwzględniać nazwę przestrzeni nazw domyślną szablonu, dostępne wartości: {{Code|false}}, w której nazwa domyślna nie jest uwzględniana wtedy, oraz {{Code|nil}} i {{Code|true}}, które oznaczają to samo, w tym jeżeli ona jest uwzględniana, wtedy jest brany parametr pierwszy dziecka, który musi istnieć przy takiej wartości tego parametru, tzn. {{Code|{{m|Pudełko|Nazwa przestrzeni nazw dyskusji 2|Szablon}}}}, a nazwa uzyskana nazwy przestrzeni nazw jest w takim przypadku błędna, a jeżeli nazwa domyślna jest błędna, czyli {{Code|{{m|Pudełko|Nazwa przestrzeni nazw dyskusji 2|Moja przestrzeń}}}}, wtedy funkcja zwraca stan błędu {{Code|(błąd)}}. * {{Code|i}} - numer zmiennej nazwy przestrzeni nazw. Funkcja wykorzystuje {{Code|{{sr|#p.Nazwa_przestrzeni_nazw_przedmiotowa_dyskusji_2(frame,...)|p=Pudełko/Pomocne}}}} do wyznaczania ogólnego nazwy przestrzeni nazw dla pozycji bazowej i numerkowej, tzn. dla pozycji: jeden, dwa, trzy,..., itd, i ich ogólnej. Parametr ramki tablicy transportu rodzica szablonu: * {{Code|nazwa przestrzeni nazw}}, {{Code|nazwa przestrzeni nazw 1}}, {{Code|nazwa przestrzeni nazw 2}}, {{Code|nazwa przestrzeni nazw 3}},..., {{Code|nazwa przestrzeni nazw i}} - nazwy przestrzeni nazw dla pozycji bazowej oraz zwykłej i ogólnej numerkowej, * {{Code|nazwa jednostki}}, {{Code|nazwa jednostki 1}}, {{Code|nazwa jednostki 2}}, {{Code|nazwa jednostki 3}},... - nazwy jednostek dla pozycji bazowej i numerkowej, * {{Code|typ jednostki}}, {{Code|typ jednostki 1}}, {{Code|typ jednostki 2}}, {{Code|typ jednostki 3}},..., {{Code|typ jednostki i}} - typy jednostek, którym odpowiadają pewne przestrzenie przedmiotowe, dla pozycji bazowej, numerkowej i ogólnej. Parametry ramki tablicy transportu dziecka: * Parametry dziecka są takie same jak rodzica dla funkcji pudełkowej plus tu wymienione, * {{Code|numer jednostki}} - jak parametr {{Code|i}} nie został ustawiony, to wtedy liczy się ta zmienna. Przykłady: <syntaxhighlight lang="mediawiki"> {{Nazwa szablonu|nazwa przestrzeni nazw=Wikibooks|nazwa przestrzeni nazw 1=Szablon|nazwa przestrzeni nazw i=|nazwa jednostki 2=Wikibooks:Strona}} </syntaxhighlight> W dziecku powiedzmy jest wywołanie, i szukamy nazwy przestrzeni nazw o numerze dwa, która została podana, ale istnieje za to jej wersji ogólna {{Code|nazwa przestrzeni nazw i}} i domyślna {{Code|nazwa przestrzeni nazw}}, ale wtedy dla tego numerkowego liczy się to ogólne z {{Code| i}}, a ponieważ ta nazwa jest pusta, więc będziemy liczyli nazwę przestrzeni nazw z {{Code|nazwa jednostki 2}}: <syntaxhighlight lang="mediawiki"> {{#invoke:Pudełko|Nazwa przestrzeni nazw dyskusji 2|numer jednostki=2}} </syntaxhighlight> Na podstawie powyższego przykładu otrzymamy wynik o schemacie, nie wyniku, bo tam nie ma zmiennej {{Code|nazwa przestrzeni nazw 1}}, ale jest {{Code|nazwa przestrzeni nazw i}}: <syntaxhighlight lang="mediawiki"> <!-- Ale nie "nazwa przestrzeni nazw 2", bo jej nie ma, ale za to istnieje "nazwa przestrzeni nazw i"; --> <!-- nazwa przestrzeni nazw 2=nazwa przestrzeni nazw i="", a nazwa jednostki 2="Wikibooks:Strona"; --> <!-- Czyli wynik: --> Dyskusja Wikibooks <!-- Widzimy, że wygenerowała się nazwa przestrzeni nazw, którą jest przestrzeń nieprogramowa, ale dyskusji projektu, wychodząca z nazwy jednostek w tym przypadku z "nazwa jednostki 2"; --> </syntaxhighlight> Nie jest brana w tym powyższym przykładzie zmienna {{Code|nazwa przestrzeni nazw}}, bo jej nie ma, ale za to jest {{Code|nazwa przestrzeni nazw i}}, bo ona występuje jako parametr domyślny ogólny dla parametrów numerkowych. Tytaj jest używana jest zmienna {{Code|nazwa jednostki 2}} do wygenerowania ostatecznego wyniku, bo jak można zauważyć, parametry przestrzenne wskazują na przestrzeń główną, a nazwy jednostek już nie. Przykłady w wikikodzie: * {{Code|{{m|Pudełko|Nazwa przestrzeni nazw dyskusji 2|numer jednostki{{=}}2}}}} → {{Tt|{{#invoke:Pudełko|Nazwa przestrzeni nazw dyskusji 2|numer jednostki=2}}}} * {{Code|{{m|Pudełko|Nazwa przestrzeni nazw dyskusji 2|Szablon|nazwa przestrzeni nazw i{{=}}Moja przestrzeń|numer jednostki{{=}}2}}}} → {{Tt|{{#invoke:Pudełko|Nazwa przestrzeni nazw dyskusji 2|Szablon|nazwa przestrzeni nazw i=Moja przestrzeń|numer jednostki=2}}}} * {{Code|{{m|Pudełko|Nazwa przestrzeni nazw dyskusji 2|nazwa przestrzeni nazw 2{{=}}|nazwa jednostki 2{{=}}Szablon:Strona|numer jednostki{{=}}2}}}} → {{Tt|{{#invoke:Pudełko|Nazwa przestrzeni nazw dyskusji 2|nazwa przestrzeni nazw 2=|nazwa jednostki 2=Szablon:Strona|numer jednostki=2}}}} * {{Code|{{m|Pudełko|Nazwa przestrzeni nazw dyskusji 2|nazwa przestrzeni nazw i{{=}}|nazwa jednostki 2{{=}}Szablon:Strona|numer jednostki{{=}}2}}}} → {{Tt|{{#invoke:Pudełko|Nazwa przestrzeni nazw dyskusji 2|nazwa przestrzeni nazw i=|nazwa jednostki 2=Szablon:Strona|numer jednostki=2}}}} * {{Code|{{m|Pudełko|Nazwa przestrzeni nazw dyskusji 2|Szablon|nazwa przestrzeni nazw{{=}}|nazwa jednostki 2{{=}}Wikibooks:Strona|numer jednostki{{=}}2}}}} → {{Tt|{{#invoke:Pudełko|Nazwa przestrzeni nazw dyskusji 2|Szablon|nazwa przestrzeni nazw=|nazwa jednostki 2=Dyskusja Wikibooks:Strona|numer jednostki=2}}}} Powyżej dla przykładu podano parametry nie w rodzicu w szablonie, tylko w dziecku, jeśli chodzi o parametry nazw przestrzeni nazw i nazw jednostek, ale ich się za to nie powinno podawać w tych ramach, tylko w szablonach, w których wywoływane są te ramki pudełek {{Code|{{m|Pudełko}}}}, ale tak tutaj tak zrobiono by było najłatwiej sprawdzić działanie tego typu funkcji. Analogicznie możemy podawać parametry typu jednostki, np.: wywołaniu modułowym {{Code|{{m|Pudełko|Nazwa przestrzeni nazw dyskusji 2|typ jednostki 2{{=}}Podręcznik|nazwa jednostki 2{{=}}Szablon:Strona|numer jednostki{{=}}2}}}} (ale wtedy jest brana przestrzeń nazw z nazwy jednostki), ale o tym więcej w rozdziałach {{Code|{{sr|# p["Dyskusyjny typ jednostki 2"](frame,i)|p=Pudełko}}}} w „{{sr|#Funkcje typu jednostki|p=Pudełko}}”, on definiuje przestrzenie dyskusji, ale można użyć parametru dyskusji typu jednostki z obojętnie jaką wartością niepustą, czy pustą, czy nawet jej nie podamy, wtedy wyświetli się nazwa przestrzeni nazw dyskusji. Jeżeli typ jednostki wskazuje na przestrzeń nazw główną, wtedy się liczą parametry nazw jednostek. Również parametry typu jednostki nie powinno się podawać w dziecku w ramce, tylko w rodzicu w szablonie jako parametry, w którym ta ramka jest wywoływana, ale tutaj podano jedynie dla przykładu, jak najłatwiej sprawdzić działanie tych parametrów tej funkcji. Najpierw w funkcji nagłówku brane są parametry nazw przestrzeni nazw, a jeżeli ich nie ma, to parametry typu jednostki, a jeżeli nie ma lub parametry przestrzenne wskazują na przestrzeń główną, i nie ma nazwy jednostki, to generowane są nazwy tej funkcji na podstawie aktualnej strony. == Funkcje pełnych nazw jednostki == === {{Code|p["Pełna nazwa dyskusji jednostki"](frame,i)}} === === {{Code|p["Pełna nazwa przedmiotowa jednostki"](frame,i)}} === === {{Code|p["Pełna nazwa jednostki"](frame,i)}} === == Funkcje pełnych nazw jednostki drugiej wersji == === {{Code|p["Pełna nazwa dyskusji jednostki 2"](frame,i)}} === === {{Code|p["Pełna nazwa przedmiotowa jednostki 2"](frame,i)}} === === {{Code|p["Pełna nazwa jednostki 2"](frame,i)}} === == Funkcje pełnych nazw jednostki trzeciej wersji == === {{Code|p["Pełna nazwa dyskusji jednostki 3"](frame,i)}} === === {{Code|p["Pełna nazwa przedmiotowa jednostki 3"](frame,i)}} === === {{Code|p["Pełna nazwa jednostki 3"](frame,i)}} === == Funkcje nazw jednostki == === {{Code|p["Nazwa jednostki"](frame,i)}} === == Funkcje nazw jednostki drugiej wersji == === {{Code|p["Nazwa jednostki 2"](frame,i)}} === === {{Code|p["Nazwa przedmiotowa jednostki 2"](frame,i)}} === === {{Code|p["Nazwa dyskusji jednostki 2"](frame,i)}} === == Funkcje nazw przestrzeni nazw trzeciej wersji == === {{Code|p["Nazwa przestrzeni nazw 3"](frame,i)}} === Funkcja pisze nazwę przestrzeni nazw, niezależnie, czy to jest przedmiotowa, czy dyskusji, według, i nie zawsze tylko, podanej w zmiennej {{Code|nazwa przestrzeni nazw}} dla pozycja bazowej w podanych parametrach szablonu rodzicu ramki dziecka, lub dla innej pozycji należy parametr podawać w formie {{Code|nazwa przestrzeni nazw 1}}, {{Code|Nazwa przestrzeni nazw 3}}, {{Code|nazwa przestrzeni nazw 3}},..., lub te parametry można podać w postaci ogólnej {{Code|nazwa przestrzeni nazw i}}. W tej funkcji trzeba też podawać parametry nazwy jednostek {{Code|nazwa jednostki}}, {{Code|nazwa jednostki 1}}, {{Code|nazwa jednostki 2}}, {{Code|nazwa jednostki 3}},... Parametry podaje się w parametrach rodzica wywołania tej funkcji {{Code|{{m|Pudełko|Nazwa przestrzeni nazw 3}}}} (ale ich nie trzeba podawać w dziecku, ale można) i w parametrach dziecka, jeśli chodzi o zmienną {{Code|numer jednostki}}, czyli np.: {{Code|{{m|Pudełko|Nazwa przestrzeni nazw 3|numer jednostki{{=}}<jakaś liczba całkowita dodatnia>}}}}. Te parametry przestrzenne zamiast w rodzicu w szablonie można podać w ramce dziecka, wtedy parametry dziecka mają pierwszeństwo. Przestrzeń nazw z parametrów nazw przestrzennych bazowych (bez numerka) może odpowiadać wartości przestrzeni głównej, to wtedy odpowiednia przestrzeń nazw z parametru nazwy jednostki się nie liczy w tej funkcji, aby się liczyła należy użyć funkcji {{Code|{{sr|#p["Nazwa przestrzeni nazw 2"](frame,...)|p=Pudełko}}}}. Przestrzeń nazw z parametrów nazw przestrzennych numerkowych może odpowiadać wartości przestrzeni głównej, to wtedy odpowiednia przestrzeń nazw z parametru nazwy jednostki się liczy w tej funkcji, wtedy jest liczona nazwa przestrzeni nazw z tego parametru. Gdy parametry przestrzenne lub typ jednostki w drugim podejściu nie wskazują na przestrzeń główną, to wtedy działanie tej funkcji jest podobne do {{Code|{{sr|#p["Nazwa przestrzeni nazw"](frame,...)|p=Pudełko}}}}. Definicja skrótowa funkcji: <syntaxhighlight lang="lua"> p["Nazwa przestrzeni nazw 3"]=function(frame,czy_uwzglednic_alternatywna_nazwe,i)...end; </syntaxhighlight> Wtedy ciało funkcji tej, czyli jego definicja w środku, jest: <syntaxhighlight lang="lua"> -- Jest liczony numer parametru nazwy przestrzeni nazw, domyslnie chodzi tu o numer bazowy parametrów przestrzennych; local numer_jednostki=i or frame.args["numer jednostki"]; local liczba_numeru_jednostki=((numer_jednostki)and(tonumber(numer_jednostki)) or 0); local pudelko_pomocne_modul=require("Module:Pudełko/Pomocne"); -- Liczy nazwę przestrzeni nazw dyskusji na podstawie podanych parametrów; return pudelko_pomocne_modul.Uzyskanie_nazw_jednostki(frame,0,liczba_numeru_jednostki,nil,2); </syntaxhighlight> Parametry funkcji: * {{Code|frame}} - tablica ramki tablicy transportu, * {{Code|czy_uwzglednic_alternatywna_nazwe}} - czy ma uwzględniać nazwę przestrzeni nazw domyślną szablonu, dostępne wartości: {{Code|false}}, w której nazwa domyślna nie jest uwzględniana wtedy, oraz {{Code|nil}} i {{Code|true}}, które oznaczają to samo, w tym jeżeli ona jest uwzględniana, wtedy jest brany parametr pierwszy dziecka, który musi istnieć przy takiej wartości tego parametru, tzn. {{Code|{{m|Pudełko|Nazwa przestrzeni nazw 3|Szablon}}}}, a nazwa uzyskana nazwy przestrzeni nazw jest w takim przypadku błędna, a jeżeli nazwa domyślna jest błędna, czyli {{Code|{{m|Pudełko|Nazwa przestrzeni nazw 3|Moja przestrzeń}}}}, wtedy funkcja zwraca stan błędu {{Code|(błąd)}}. * {{Code|i}} - numer zmiennej nazwy przestrzeni nazw. Funkcja wykorzystuje {{Code|{{sr|#p.Uzyskanie_nazw_jednostki(frame,...)|p=Pudełko/Pomocne}}}} do wyznaczania ogólnego nazwy przestrzeni nazw dla pozycji bazowej i numerkowej, tzn. dla pozycji: jeden, dwa, trzy,..., itd, i ich ogólnej. Parametr ramki tablicy transportu rodzica szablonu: * {{Code|nazwa przestrzeni nazw}}, {{Code|nazwa przestrzeni nazw 1}}, {{Code|Nazwa przestrzeni nazw 3}}, {{Code|nazwa przestrzeni nazw 3}},..., {{Code|nazwa przestrzeni nazw i}} - nazwy przestrzeni nazw dla pozycji bazowej oraz zwykłej i ogólnej numerkowej, * {{Code|nazwa jednostki}}, {{Code|nazwa jednostki 1}}, {{Code|nazwa jednostki 2}}, {{Code|nazwa jednostki 3}},... - nazwy jednostek dla pozycji bazowej i numerkowej, * {{Code|typ jednostki}}, {{Code|typ jednostki 1}}, {{Code|typ jednostki 2}}, {{Code|typ jednostki 3}},..., {{Code|typ jednostki i}} - typy jednostek, którym odpowiadają pewne przestrzenie przedmiotowe, dla pozycji bazowej, numerkowej i ogólnej, ** {{Code|dyskusja typu jednostki}}, {{Code|dyskusja typu jednostki 1}}, {{Code|dyskusja typ jednostki 2}}, {{Code|dyskusja typ jednostki 3}},..., {{Code|dyskusja typ jednostki i}} - czy dany typ jednostki ma przedstawiać, jeśli niepusta, przestrzeń dyskusji dla pozycji bazowej, numerkowej i ogólnej. Parametry ramki tablicy transportu dziecka: * Parametry dziecka są takie same jak rodzica dla funkcji pudełkowej plus tu wymienione, * {{Code|numer jednostki}} - jak parametr {{Code|i}} nie został ustawiony, to wtedy liczy się ta zmienna. Przykłady: <syntaxhighlight lang="mediawiki"> {{Nazwa szablonu|nazwa przestrzeni nazw=Wikibooks|nazwa przestrzeni nazw=|nazwa przestrzeni nazw i=|nazwajednostki=Szablon:Strona|nazwa jednostki 2=Wikibooks:Strona}} <hr /> {{Nazwa szablonu|nazwa przestrzeni nazw=Wikibooks|nazwa przestrzeni nazw 1=Szablon|nazwa przestrzeni nazw i=|nazwa jednostki 2=Wikibooks:Strona}} </syntaxhighlight> W dziecku powiedzmy jest wywołanie, i szukamy nazwy przestrzeni nazw o numerze dwa, która została podana, ale istnieje za to jej wersji ogólna {{Code|nazwa przestrzeni nazw i}} i domyślna {{Code|nazwa przestrzeni nazw}}, ale wtedy dla tego numerkowego liczy się to ogólne z {{Code| i}}, a ponieważ ta nazwa jest pusta, więc będziemy liczyli nazwę przestrzeni nazw z {{Code|nazwa jednostki 2}}: <syntaxhighlight lang="mediawiki"> {{#invoke:Pudełko|Nazwa przestrzeni nazw 3}} <hr /> {{#invoke:Pudełko|Nazwa przestrzeni nazw 3|numer jednostki=2}} </syntaxhighlight> Na podstawie powyższego przykładu otrzymamy wynik o schemacie, nie wyniku, bo tam nie ma zmiennej {{Code|nazwa przestrzeni nazw 1}}, ale jest {{Code|nazwa przestrzeni nazw i}}: <syntaxhighlight lang="mediawiki"> <!-- Ale nie "nazwa przestrzeni nazw""; --> <!-- nazwa przestrzeni nazw=""; --> <!-- Czyli wynik: --> <!-- wynik pusty --> <!-- Widzimy, że wygenerowała się nazwa przestrzeni nazw, którą jest przestrzeń nazw główna, jest ciągiem pustym: ""; --> <hr /> <!-- Ale nie "Nazwa przestrzeni nazw 2", bo jej nie ma, ale za to istnieje "nazwa przestrzeni nazw i"; --> <!-- nazwa przestrzeni nazw 2=nazwa przestrzeni nazw i="", a nazwa jednostki 2="Wikibooks:Strona"; --> <!-- Czyli wynik: --> Wikibooks <!-- Widzimy, że wygenerowała się nazwa przestrzeni nazw, którą jest przestrzeń nieprogramowa, ale projektu, wychodząca z nazwy jednostek w tym przypadku z "nazwa jednostki 2"; --> </syntaxhighlight> Dla parametrów bazowych nienumerkowych istnieje zmienna {{Code|nazwa przestrzeni nazw}}, której waartość jest pusta,którajest zwracana przez tą funkcję. {{Hr}} Dla parametrów numerkowych nie jest brana w tym powyższym przykładzie zmienna {{Code|nazwa przestrzeni nazw}}, bo jej nie ma, ale za to jest {{Code|nazwa przestrzeni nazw i}}, bo ona występuje jako parametr domyślny ogólny dla parametrów numerkowych. Tytaj jest używana jest zmienna {{Code|nazwa jednostki 2}} do wygenerowania ostatecznego wyniku, bo jak można zauważyć, parametry przestrzenne wskazują na przestrzeń główną, a nazwy jednostek już nie. Przykłady w wikikodzie: * {{Code|{{m|Pudełko|Nazwa przestrzeni nazw 3|nazwa przestrzeni nazw{{=}}|nazwa jednostki{{=}}Wikibooks:Strona}}}} → {{Tt|{{#invoke:Pudełko|Nazwa przestrzeni nazw 3|nazwa przestrzeni nazw=|nazwa jednostki=Wikibooks:Szablon}}}} * {{Code|{{m|Pudełko|Nazwa przestrzeni nazw 3|nazwa przestrzeni nazw 2{{=}}|nazwa jednostki 2{{=}}Wikibooks:Strona|numer jednostki{{=}}2}}}} → {{Tt|{{#invoke:Pudełko|Nazwa przestrzeni nazw 3|nazwa przestrzeni nazw 2=|nazwa jednostki 2=Wikibooks:Szablon|numer jednostki=2}}}} Powyżej dla przykładu podano parametry nie w rodzicu w szablonie, tylko w dziecku, jeśli chodzi o parametry nazw przestrzeni nazw i nazw jednostek, ale ich się za to nie powinno podawać w tych ramach, tylko w szablonach, w których wywoływane są te ramki pudełek {{Code|{{m|Pudełko}}}}, ale tak tutaj tak zrobiono by było najłatwiej sprawdzić działanie tego typu funkcji. Analogicznie możemy podawać parametry typu jednostki, np.: wywołaniu modułowym {{Code|{{m|Pudełko|Nazwa przestrzeni nazw 3|typ jednostki 2{{=}}Podręcznik|nazwa jednostki 2{{=}}Szablon:Strona|numer jednostki{{=}}2}}}} (ale wtedy jest brana przestrzeń nazw z nazwy jednostki), ale o tym więcej w rozdziałach {{Code|{{sr|#p["Typ jednostki 3"](frame,i)|p=Pudełko}}}} w „{{sr|#Funkcje typu jednostki|p=Pudełko}}”, on definiuje przestrzenie przedmiotowe, ale można użyć parametru dyskusji typu jednostki z wartością niepustą, wtedy wyświetli się nazwa przestrzeni nazw dyskusji. Jeżeli typ jednostki bazowy wskazuje na przestrzeń nazw główną, wtedy się nie liczą parametry nazw jednostek, a na numerkowy, wtedy się liczy. Również parametry typu jednostki nie powinno się podawać w dziecku w ramce, tylko w rodzicu w szablonie jako parametry, w którym ta ramka jest wywoływana, ale tutaj podano jedynie dla przykładu, jak najłatwiej sprawdzić działanie tych parametrów tej funkcji. Najpierw w funkcji nagłówku brane są parametry nazw przestrzeni nazw, a jeżeli ich nie ma, to parametry typu jednostki, a jeżeli nie ma lub parametry przestrzenne wskazują na przestrzeń główną, i nie ma nazwy jednostki, to generowane są nazwy tej funkcji na podstawie aktualnej strony. === {{Code|p["Nazwa przedmiotowej przestrzeni nazw 3"](frame,i)}} === Funkcja pisze przedmiotową nazwę przestrzeni nazw jakikolwiek nazwy przestrzeni nazw (tzn. nazwę przedmiotową nazwy przestrzenie nazw, czyli nie dyskusji, zamieniana jest na nią samą, czyli identyfikator przestrzeni się nie zmienia, a dyskusji, nie przedmiotową, przekształca się na przedmiotową jej odpowiadającą, czyli w tym przypadku identyfikator przestrzeni zmniejsza się o numer mniej), według podanej w zmiennej {{Code|nazwa przestrzeni nazw}} dla pozycja bazowej w podanych parametrach szablonu rodzicu ramki dziecka, lub dla innej pozycji należy parametr podawać w formie {{Code|nazwa przestrzeni nazw 1}}, {{Code|nazwa przestrzeni nazw 2}}, {{Code|nazwa przestrzeni nazw 3}},..., lub te parametry można podać w postaci ogólnej {{Code|nazwa przestrzeni nazw i}}. Parametry podaje się w parametrach rodzica wywołania tej funkcji {{Code|{{m|Pudełko|Nazwa przedmiotowej przestrzeni nazw 3}}}} (ale ich nie trzeba podawać w dziecku, ale można) i w parametrach dziecka, jeśli chodzi o zmienną {{Code|numer jednostki}}, czyli np.: {{Code|{{m|Pudełko|Nazwa przedmiotowej przestrzeni nazw 3|numer jednostki{{=}}<jakaś liczba całkowita dodatnia>}}}}. Te parametry przestrzenne zamiast w rodzicu w szablonie można podać w ramce dziecka, wtedy parametry dziecka mają pierwszeństwo. Parametry przestrzenne mogą mogą być podane w postaci przestrzeni przedmiotowej lub dyskusji, ale ta funkcja zawsze ją zamienia na przedmiotową. Przestrzeń nazw z parametrów nazw przestrzennych bazowych (bez numerka) może odpowiadać wartości przestrzeni głównej, to wtedy odpowiednia przestrzeń nazw z parametru nazwy jednostki się nie liczy w tej funkcji, aby się liczyła należy użyć funkcji {{Code|{{sr|#p["Nazwa przedmiotowej przestrzeni nazw"](frame,...)|p=Pudełko}}}}. Przestrzeń nazw z parametrów nazw przestrzennych numerkowych może odpowiadać wartości przestrzeni głównej, to wtedy odpowiednia przestrzeń nazw z parametru nazwy jednostki się liczy w tej funkcji, wtedy jest liczona nazwa przestrzeni nazw z tego parametru. Gdy parametry przestrzenne lub typ jednostki w drugim podejściu nie wskazują na przestrzeń główną, to wtedy działanie tej funkcji jest podobne do {{Code|{{sr|#p["Nazwa przedmiotowej przestrzeni nazw 2"](frame,...)|p=Pudełko}}}}. Definicja skrótowa funkcji: <syntaxhighlight lang="lua"> p["Nazwa przedmiotowej przestrzeni nazw 3"]=function(frame,czy_uwzglednic_alternatywna_nazwe,i)...end; </syntaxhighlight> Wtedy ciało funkcji tej, czyli jego definicja w środku, jest: <syntaxhighlight lang="lua"> -- Jest liczony numer parametru nazwy przestrzeni nazw, domyslnie chodzi tu o numer bazowy parametrów przestrzennych; local numer_jednostki=i or frame.args["numer jednostki"]; local liczba_numeru_jednostki=((numer_jednostki)and(tonumber(numer_jednostki)) or 0); local pudelko_pomocne_modul=require("Module:Pudełko/Pomocne"); -- Liczy nazwę przestrzeni nazw przedmiotową na podstawie podanych parametrów; return pudelko_pomocne_modul.Uzyskanie_nazw_jednostki(frame,1,liczba_numeru_jednostki,nil,1); </syntaxhighlight> Parametry funkcji: * {{Code|frame}} - tablica ramki tablicy transportu, * {{Code|czy_uwzglednic_alternatywna_nazwe}} - czy ma uwzględniać nazwę przestrzeni nazw domyślną szablonu, dostępne wartości: {{Code|false}}, w której nazwa domyślna nie jest uwzględniana wtedy, oraz {{Code|nil}} i {{Code|true}}, które oznaczają to samo, w tym jeżeli ona jest uwzględniana, wtedy jest brany parametr pierwszy dziecka, który musi istnieć przy takiej wartości tego parametru, tzn. {{Code|{{m|Pudełko|Nazwa przedmiotowej przestrzeni nazw 3|Dyskusja szablonu}}}} - ta nazwa domyślna zostanie zamieniona na przedmiotową, a jak ona by była przedmiotowa, to żadnej zamiany by nie było, a nazwa uzyskana z nazwy przestrzeni nazw z parametrów przestrzennych jest w takim przypadku błędna, to w takim razie brany jest ten parametr, a jeżeli ta nazwa domyślna jest błędna, czyli {{Code|{{m|Pudełko|Nazwa przedmiotowej przestrzeni nazw 3|Moja przestrzeń}}}}, wtedy funkcja zwraca stan błędu {{Code|(błąd)}}. * {{Code|i}} - numer zmiennej nazwy przestrzeni nazw. Funkcja wykorzystuje {{Code|{{sr|#p.Uzyskanie_nazw_jednostki(frame,...)|p=Pudełko/Pomocne}}}} do wyznaczania ogólnego nazwy przestrzeni nazw dla pozycji bazowej i numerkowej, tzn. dla pozycji: jeden, dwa, trzy,..., itd, i ich ogólnej. Parametr ramki tablicy transportu rodzica szablonu: * {{Code|nazwa przestrzeni nazw}}, {{Code|nazwa przestrzeni nazw 1}}, {{Code|nazwa przestrzeni nazw 2}}, {{Code|nazwa przestrzeni nazw 3}},..., {{Code|nazwa przestrzeni nazw i}} - nazwy przestrzeni nazw dla pozycji bazowej oraz zwykłej i ogólnej numerkowej, * {{Code|typ jednostki}}, {{Code|typ jednostki 1}}, {{Code|typ jednostki 2}}, {{Code|typ jednostki 3}},..., {{Code|typ jednostki i}} - typy jednostek, którym odpowiadają pewne przestrzenie przedmiotowe, dla pozycji bazowej, numerkowej i ogólnej. Parametry ramki tablicy transportu dziecka: * Parametry dziecka są takie same jak rodzica dla funkcji pudełkowej plus tu wymienione, * {{Code|numer jednostki}} - jak parametr {{Code|i}} nie został ustawiony, to wtedy liczy się ta zmienna. Przykłady: <syntaxhighlight lang="mediawiki"> {{Nazwa szablonu|nazwa przestrzeni nazw=Wikibooks|nazwa przestrzeni nazw=|nazwa przestrzeni nazw i=|nazwajednostki=Szablon:Strona|nazwa jednostki=Dyskusja Wikibooks:Strona}} <hr /> {{Nazwa szablonu|nazwa przestrzeni nazw=Wikibooks|nazwa przestrzeni nazw 1=Szablon|nazwa przestrzeni nazw i=|nazwa jednostki 2=Dyskusja Wikibooks:Strona}} </syntaxhighlight> W dziecku powiedzmy jest wywołanie, i szukamy nazwy przestrzeni nazw o numerze dwa, która nie została podana, ale istnieje za to jej wersji ogólna {{Code|nazwa przestrzeni nazw i}} i domyślna {{Code|nazwa przestrzeni nazw}}: <syntaxhighlight lang="mediawiki"> {{#invoke:Pudełko|Nazwa przedmiotowej przestrzeni nazw 3|numer jednostki=1}} </syntaxhighlight> Na podstawie powyższego przykładu otrzymamy wynik o schemacie, nie wyniku, bo tam nie ma zmiennej {{Code|nazwa przestrzeni nazw 1}}, ale jest {{Code|nazwa przestrzeni nazw i}}: <syntaxhighlight lang="mediawiki"> <!-- Ale nie "nazwa przestrzeni nazw""; --> <!-- nazwa przestrzeni nazw=""; --> <!-- Czyli wynik: --> <!-- wynik pusty --> <!-- Widzimy, że wygenerowała się nazwa przestrzeni nazw, którą jest przestrzeń nazw główna, jest ciągiem pustym: ""; --> <hr /> <!-- Ale nie "Nazwa przestrzeni nazw 2", bo jej nie ma, ale za to istnieje "nazwa przestrzeni nazw i"; --> <!-- nazwa przestrzeni nazw 2=nazwa przestrzeni nazw i="", a nazwa jednostki 2="Dyskusja Wikibooks:Strona"; --> <!-- Czyli wynik: --> Wikibooks <!-- Widzimy, że wygenerowała się nazwa przestrzeni nazw, którą jest przestrzeń nieprogramowa, ale projektu, wychodząca z nazwy jednostek w tym przypadku z "nazwa jednostki 2"; --> </syntaxhighlight> Nie jest brana w tym powyższym przykładzie zmienna {{Code|nazwa przestrzeni nazw}}, bo jej nie ma, ale za to jest {{Code|nazwa przestrzeni nazw i}}, bo ona występuje jako parametr domyślny ogólny dla parametrów numerkowych. Przykłady w wikikodzie: * {{Code|{{m|Pudełko|Nazwa przestrzeni nazw 3|nazwa przestrzeni nazw{{=}}|nazwa jednostki{{=}}Dyskusja Wikibooks:Strona}}}} → {{Tt|{{#invoke:Pudełko|Nazwa przestrzeni nazw 3|nazwa przestrzeni nazw=|nazwa jednostki=Dyskusja Wikibooks:Szablon}}}} * {{Code|{{m|Pudełko|Nazwa przestrzeni nazw 3|nazwa przestrzeni nazw 2{{=}}|nazwa jednostki 2{{=}}Dyskusja Wikibooks:Strona|numer jednostki{{=}}2}}}} → {{Tt|{{#invoke:Pudełko|Nazwa przestrzeni nazw 3|nazwa przestrzeni nazw 2=|nazwa jednostki 2=Dyskusja Wikibooks:Szablon|numer jednostki=2}}}} Powyżej dla przykładu podano parametry nie w rodzicu w szablonie, tylko w dziecku, jeśli chodzi o parametry nazw przestrzeni nazw, ale ich się za to nie powinno podawać w tych ramach, tylko w szablonach, w których wywoływane są te ramki pudełek {{Code|{{m|Pudełko}}}}, ale tak tutaj tak zrobiono by było najłatwiej sprawdzić działanie tego typu funkcji. Analogicznie możemy podawać parametry typu jednostki, np.: wywołaniu modułowym {{Code|{{m|Pudełko|Nazwa przedmiotowej przestrzeni nazw 3|typ jednostki 2{{=}}strona szablonu|numer jednostki{{=}}2}}}}, ale o tym więcej w rozdziałach {{Code|{{sr|# p["Przedmiotowy typ jednostki 3"](frame,i)|p=Pudełko}}}} w „{{sr|#Funkcje typu jednostki|p=Pudełko}}”, ale wtedy ta sama nazwa przestrzeni nazw reprezentowana przez {{Parametr|typ jednostki 2|strona szablonu}}, jest zamieniana na to samo, lepiej jest tutaj używać parametrów przestrzennych nazw niż typu jednostki, bo typ jednostki ma taką samą wartość dla przestrzeni przedmiotowej, co dyskusji. Tutaj parametr dyskusji typu jednostki bazowy i numerkowy ogólny, czy szczegółowy, nie gra roli, bo nawet, gdy wygenerujemy nazwę przestrzeni dyskusji za pomoca tego parametru, to i tak otrzymamy na samym końcu jego nazwę przedmiotową. Również parametry typu jednostki nie powinno się podawać w dziecku w ramce, tylko w rodzicu w szablonie jako parametry, w którym ta ramka jest wywoływana, ale tutaj podano jedynie dla przykładu, jak najłatwiej sprawdzić działanie tych parametrów tej funkcji. Najpierw w funkcji nagłówku brane są parametry nazw przestrzeni nazw, a jeżeli ich nie ma, to parametry typu jednostki, a jeżeli nie ma, to generowane są nazwy na podstawie aktualnego modułu. === {{Code|p["Nazwa przestrzeni nazw dyskusji 3"](frame,i)}} === == Funkcje nazw jednostki trzeciej wersji == === {{Code|p["Nazwa jednostki 3"](frame,i)}} === === {{Code|p["Nazwa przedmiotowa jednostki 3"](frame,i)}} === === {{Code|p["Nazwa dyskusji jednostki 3"](frame,i)}} === == Funkcje typu jednostki == === {{Code|p["Typ jednostki"](frame,i)}} === === {{Code|p["Typ jednostki 2"](frame,i)}} === === {{Code|p["Typ jednostki 3"](frame,i)}} === === Funkcje typu jednostki przedmiotowe === ==== {{Code|p["Przedmiotowy typ jednostki"](frame,i)}} ==== ==== {{Code|p["Przedmiotowy typ jednostki 2"](frame,i)}} ==== ==== {{Code|p["Przedmiotowy typ jednostki 3"](frame,i)}} ==== === Fukcje typu jednostki dyskusji === ==== {{Code|p["Dyskusyjny typ jednostki"](frame,i)}} ==== ==== {{Code|p["Dyskusyjny typ jednostki 2"](frame,i)}} ==== ==== {{Code|p["Dyskusyjny typ jednostki 3"](frame,i)}} ==== == Funkcje chech pudełka == === {{Code|p["Cecha pudełka"](frame)}} === === {{Code|p["Przedmiotowa cecha pudełka"](frame)}} === === {{Code|p["Dyskusyjna cecha pudełka"](frame)}} === == Fukcje ogólnego pudełka == === {{Code|p["Ogólne pudełko"](frame)}} === == Funkcje ogólne == === {{Code|p["Tekst pudełka"](frame)}} === == Funkcje błędów pudełka == === {{Code|p["Błędy pudełka"](frame)}} === === {{Code|p["Przedmiotowe błędy pudełka"](frame)}} === === {{Code|p["Dyskusyjne błędy pudełka"](frame)}} === == Funkcje nazw stron == === {{Code|p["Nazwa strony głównej projektu"](frame,i)}} === === {{Code|p["Nazwa strony głównej dla dzieci projektu"](frame,i)}} === == Funkcje kodów == === {{Code|p["Kod języka"](frame,i)}} === === {{Code|p["Kod projektu"](frame,i)}} === === {{Code|p["Klucz projektu"](frame,i)}} === == Funkcje wiki == === {{Code|p["Inny niż język bieżący wiki"](frame)}} === === {{Code|p["Inne niż lokalne wiki"](frame)}} === === {{Code|p["Inne niż bieżące wiki"](frame)}} === == Funkcje typów parametrów, czy podane je == === {{Code|p["Podano parametry nienazwane"](frame)}} === === {{Code|p["Podano parametry numerowane"](frame)}} === === {{Code|p["Podano parametry nazwane"](frame)}} === == Funkcje kodów tego projektu == === {{Code|p["Kod projektu tego projektu"](frame)}} === === {{Code|p["Kod języka tego projektu"](frame)}} === === {{Code|p["Klucz projektu tego projektu"](frame)}} === == Funkcje stron == === {{Code|p["Strona główna tego projektu"](frame)}} === === {{Code|p["Strona główna dla dzieci tego projektu"](frame)}} === == Funkcje nazw stron drugiej wersji == === {{Code|p["Nazwa strony głównej dla dzieci projektu 2"](frame)}} === === {{Code| p["Nazwa strony głównej projektu 2"](frame)}} === {{BrClear}} <noinclude><!-- -->{{ProstaStronaKoniec}}<!-- -->{{Kategoria|Opisy funkcji, w Lua w Scribunto, w modułach}}<!-- --></noinclude> pht695oj5aoo8e89lp1uzfakokq75pz 540417 540416 2026-04-23T19:40:08Z Persino 2851 /* {{Code|p["Nazwa przestrzeni nazw 3"](frame,i)}} */ 540417 wikitext text/x-wiki <noinclude>{{ProstaStronaStart | nagłówek = {{Podrozdział|{{ld2|Pudełko}}|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 pudelko_modul=require("Module:Pudełko"); </syntaxhighlight> dzięki, któremu można wypisywać funkcje należącego do niego. Posługuje się na parametrach pudełkowych {{Parametr|nazwa przestrzeni nazw}} (czy też bez numerka {{Parametr|nazwa przestrzeni nazw i}} dla tego numerowanego) lub te z numerkiem po jednej spacji w nich (ale nie dla tego z końcówką {{Code| i}}) mogą zostać użyte jako parametry szablonu. Moduł {{Code|{{ld2|Pudełko}}}} przedstawia funkcje nazw w oparciu o funkcje nazw {{Code|{{ld2|Nazwy}}}}, generuje on nazwy za pomocą parametrów pudełkowych podanych poniżej. Parametr {{Parametr|nazwa jednostki}} (lub parametr {{Parametr|cel}} dla numerka tego pierwszego, tego alternatywnego), lub te z numerkiem po jednej spacji w nazwie parametru, albo numerowane numerkami {{Code|1}}, {{Code|2}},..., mogą zostać użyte jako parametry szablonu. Parametry określające rodzaj jednostki {{Parametr|typ jednostki}} z {{Parametr|dyskusja typu jednostki}}, itp. w wersjach z numerkiem po jednej spacji w nich mogą zostać użyte jako parametry szablonu. A te tymi numerowanymi liczbami naturalnymi {{Tt|nazwy jednostki}} od jedynki wzwyż poprzez szablon, w którym są one użyte, one też mogą być użyte z dwukropkiem, te numerowane, na samym początku nazwy, wtedy one są traktowane jako pełne nazwy strony, i wtedy one nie zostaną z interpretowane, że do nich trzeba użyć parametr odpowiedni z nazwą przetrzeni nazw z tego numerowanego, czy ogólny, aby utworzyć znów inną pełną nazwę strony dla tego numerka. Zestawienie: * {{Code|nazwa przestrzeni nazw}} i {{Code|nazwa przestrzeni nazw i}} (ogólna nazwa przestrzeni nazw dla wszystkich numerków, i tych numerowanych jednostek) - i to pierwsze z numerkiem, tzn. {{Code|nazwa przestrzeni nazw 1}}, {{Code|nazwa przestrzeni nazw 2}}, ..., * {{Code|nazwa jednostki}} - i te z numerkiem: {{Code|nazwa jednostki 1}}, {{Code|nazwa jednostki 2}}, ..., lub gdy jest zamiast tego parametrem numerowany, {{Code|1}}, {{Code|2}},..., który dla tego pierwszego może być uznany jako: {{Code|cel}} {{=}} {{Code|1}}, * {{Code|typ jednostki}} (parametr bazowy) i {{Code|typ jednostki i}} (parametr domyślny numerkowy) - i te z numerkiem: {{Code|typ jednostki 1}}, {{Code|typ jednostki 2}}, ..., tzn. gdy chcemy określić z jakim typem jednostki mamy do czynienia w zależności do jakiej przestrzeni nazw należy, a w danej, czy jest on np. programowy, czy tylko jest opisem, jak to bywa w szablonach {{Np|Template|link=tak}}, podobnie jest w przypadku {{Np|Module|link=tak}}, czy jak jest w innych przestrzeniach nazw, ** {{Code|dyskusja typu jednostki}} (parametr bazowy) i {{Code|dyskusja typu jednostki i}} (parametr domyślny numerkowy) - i te z numerkiem: {{Code|dyskusja typu jednostki 1}}, {{Code|dyskusja typu jednostki 2}}, ..., gdy chcemy określić wartością niepustą,że chodzi tutaj o typ jednostki. == {{Code|p.CzyNiepoprawnaNazwa(nazwa_jednostki)}} == Funkcja sprawdzajaca, czy jest poprawnie podana nazwa jednostki, czy ma poprawną nazwę. Znakami tymi, z których nie powinna składać się nazwa jest {{Code|<nowiki>{}<>|[]#\n</nowiki>}} i dodatkowo znak {{Code|&#127;}} (kod {{Code|{{Nowiki|&#127;}}}}). Też nie może składać się z trzech znaków tyldy, tzn. {{Code|<nowiki>~~~</nowiki>}}. Również w swojej budowie nie może składać się ze kodów {{Strong|HTML}} literowych o wzorze {{Code|{{Nowiki|&(%a+);}}}}. Natomiast może składać się z {{Code|{{Nowiki|&#(%d+);}}}} i {{Code|{{Nowiki|&#x(%x+);}}}}, ale w pierw te kody muszą być zamienione na normalne znaki. Skrótowa definicja funkcji: <syntaxhighlight lang="lua"> function p.CzyNiepoprawnaNazwa(nazwa_jednostki)...end; </syntaxhighlight> Wtedy ciało funkcji tej, czyli jego definicja w środku, jest: <syntaxhighlight lang="lua"> -- Moduł: "Moduł:Html/dane", służy do ładowania znaku o kodzie HTML "&#127;"; local html_dane_modul=mw.loadData("Module:Html/dane"); return mw.ustring.match(nazwa_jednostki,"[{}<>|%[%]#\n"..html_dane_modul.znak_127.."]+") or mw.ustring.match(nazwa_jednostki,"~~~") or mw.ustring.match(nazwa_jednostki,"&(%a+);"); </syntaxhighlight> Parametry: * {{Code|nazwa_jednostki}} - nazwa jednostki do sprawdzenia. Przykłady: <syntaxhighlight lang="lua"> local pudelko_modul=require("Module:Pudełko"); -- Podana przykładowa niepoprawna nazwa jedostki local nazwa_jednostki="Nazwa pliku [[Nazwa linku w pliku]]"; -- Fukcja zwróci wartość: local czy_poprawna_nazwa=true; local czy_poprawna_nazwa=pudelko_modul.CzyNiepoprawnaNazwa(nazwa_jednostki); </syntaxhighlight> == Funkcje nazw przestrzeni nazw == === {{Code|p["Nazwa przestrzeni nazw"](frame,...)}} === Funkcja pisze nazwę przestrzeni nazw, niezależnie, czy to jest przedmiotowa, czy dyskusji, według podanej w zmiennej {{Code|nazwa przestrzeni nazw}} dla pozycja bazowej w podanych parametrach szablonu rodzicu ramki dziecka, lub dla innej pozycji należy parametr podawać w formie {{Code|nazwa przestrzeni nazw 1}}, {{Code|nazwa przestrzeni nazw 2}}, {{Code|nazwa przestrzeni nazw 3}},..., lub te parametry można podać w postaci ogólnej {{Code|nazwa przestrzeni nazw i}}. Parametry podaje się w parametrach rodzica wywołania tej funkcji {{Code|{{m|Pudełko|Nazwa przestrzeni nazw}}}} (ale ich nie trzeba podawać w dziecku, ale można) i w parametrach dziecka, jeśli chodzi o zmienną {{Code|numer jednostki}}, czyli np.: {{Code|{{m|Pudełko|Nazwa przestrzeni nazw|numer jednostki{{=}}<jakaś liczba całkowita dodatnia>}}}}. Te parametry przestrzenne zamiast w rodzicu w szablonie można podać w ramce dziecka, wtedy parametry dziecka mają pierwszeństwo. Przestrzeń nazw z parametrów nazw przestrzennych może odpowiadać wartości przestrzeni głównej, to wtedy odpowiednia przestrzeń nazw z parametru nazwy jednostki się nie liczy w tej funkcji, aby się liczyła należy użyć funkcji {{Code|{{sr|#p["Nazwa przestrzeni nazw 2"](frame,...)|p=Pudełko}}}}. Definicja skrótowa funkcji: <syntaxhighlight lang="lua"> p["Nazwa przestrzeni nazw"]=function(frame,czy_uwzglednic_alternatywna_nazwe,i)...end; </syntaxhighlight> Wtedy ciało funkcji tej, czyli jego definicja w środku, jest: <syntaxhighlight lang="lua"> -- Jest liczony numer parametru nazwy przestrzeni nazw, domyslnie chodzi tu o numer bazowy parametrów przestrzennych; local numer_jednostki=i or frame.args["numer jednostki"]; local liczba_numer_jednostki=((numer_jednostki)and(tonumber(numer_jednostki))or 0); local pudelko_pomocne_modul=require("Module:Pudełko/Pomocne"); -- Liczy nazwę przestrzeni nazw na podstawie podanych parametrów; return pudelko_pomocne_modul.Nazwa_przestrzeni_nazw(frame,0, czy_uwzglednic_alternatywna_nazwe,liczba_numer_jednostki); </syntaxhighlight> Parametry funkcji: * {{Code|frame}} - tablica ramki tablicy transportu, * {{Code|czy_uwzglednic_alternatywna_nazwe}} - czy ma uwzględniać nazwę przestrzeni nazw domyślną szablonu, dostępne wartości: {{Code|false}}, w której nazwa domyślna nie jest uwzględniana wtedy, oraz {{Code|nil}} i {{Code|true}}, które oznaczają to samo, w tym jeżeli ona jest uwzględniana, wtedy jest brany parametr pierwszy dziecka, który musi istnieć przy takiej wartości tego parametru, tzn. {{Code|{{m|Pudełko|Nazwa przestrzeni nazw|Szablon}}}}, a nazwa uzyskana nazwy przestrzeni nazw jest w takim przypadku błędna, a jeżeli nazwa domyślna jest błędna, czyli {{Code|{{m|Pudełko|Nazwa przestrzeni nazw|Moja przestrzeń}}}}, wtedy funkcja zwraca stan błędu {{Code|(błąd)}}. * {{Code|i}} - numer zmiennej nazwy przestrzeni nazw. Funkcja wykorzystuje {{Code|{{sr|#p.Nazwa_przestrzeni_nazw(frame,...)|p=Pudełko/Pomocne}}}} do wyznaczania ogólnego nazwy przestrzeni nazw dla pozycji bazowej i numerkowej, tzn. dla pozycji: jeden, dwa, trzy,..., itd, i ich ogólnej. Parametr ramki tablicy transportu rodzica szablonu: * {{Code|nazwa przestrzeni nazw}}, {{Code|nazwa przestrzeni nazw 1}}, {{Code|nazwa przestrzeni nazw 2}}, {{Code|nazwa przestrzeni nazw 3}},..., {{Code|nazwa przestrzeni nazw i}} - nazwy przestrzeni nazw dla pozycji bazowej oraz zwykłej i ogólnej numerkowej, * {{Code|typ jednostki}}, {{Code|typ jednostki 1}}, {{Code|typ jednostki 2}}, {{Code|typ jednostki 3}},..., {{Code|typ jednostki i}} - typy jednostek, którym odpowiadają pewne przestrzenie przedmiotowe, dla pozycji bazowej, numerkowej i ogólnej, ** {{Code|dyskusja typu jednostki}}, {{Code|dyskusja typu jednostki 1}}, {{Code|dyskusja typ jednostki 2}}, {{Code|dyskusja typ jednostki 3}},..., {{Code|dyskusja typ jednostki i}} - czy dany typ jednostki ma przedstawiać, jeśli niepusta, przestrzeń dyskusji dla pozycji bazowej, numerkowej i ogólnej. Parametry ramki tablicy transportu dziecka: * Parametry dziecka są takie same jak rodzica dla funkcji pudełkowej plus tu wymienione, * {{Code|numer jednostki}} - jak parametr {{Code|i}} nie został ustawiony, to wtedy liczy się ta zmienna. Przykłady: <syntaxhighlight lang="mediawiki"> {{Nazwa szablonu|nazwa przestrzeni nazw=Wikibooks|nazwa przestrzeni nazw 2=Szablon|nazwa przestrzeni nazw i=Moduł}} </syntaxhighlight> W dziecku powiedzmy jest wywołanie, i szukamy nazwy przestrzeni nazw o numerze dwa, która nie została podana, ale istnieje za to jej wersji ogólna {{Code|nazwa przestrzeni nazw i}} i domyślna {{Code|nazwa przestrzeni nazw}}: <syntaxhighlight lang="mediawiki"> {{#invoke:Pudełko|Nazwa przestrzeni nazw|numer jednostki=1}} </syntaxhighlight> Na podstawie powyższego przykładu otrzymamy wynik o schemacie, nie wyniku, bo tam nie ma zmiennej {{Code|nazwa przestrzeni nazw 1}}, ale jest {{Code|nazwa przestrzeni nazw i}}: <syntaxhighlight lang="mediawiki"> <!-- Ale nie "nazwa przestrzeni nazw", bo jej nie ma, ale za to istnieje "nazwa przestrzeni nazw i"; --> <!-- nazwa przestrzeni nazw 2=nazwa przestrzeni nazw i=Moduł; --> <!-- Czyli wynik: --> Moduł <!-- Widzimy, że wygenerowała się nazwa przestrzeni nazw, którą jest przestrzeń programowa, którą również jest "Szablon"; --> </syntaxhighlight> Nie jest brana w tym powyższym przykładzie zmienna {{Code|nazwa przestrzeni nazw}}, bo jej nie ma, ale za to jest {{Code|nazwa przestrzeni nazw i}}, bo ona występuje jako parametr domyślny ogólny dla parametrów numerkowych. Przykłady w wikikodzie: * {{Code|{{m|Pudełko|Nazwa przestrzeni nazw|numer jednostki{{=}}2}}}} → {{Tt|{{#invoke:Pudełko|Nazwa przestrzeni nazw|numer jednostki=2}}}} * {{Code|{{m|Pudełko|Nazwa przestrzeni nazw|Szablon|nazwa przestrzeni nazw i{{=}}Moja przestrzeń|numer jednostki{{=}}2}}}} → {{Tt|{{#invoke:Pudełko|Nazwa przestrzeni nazw|Szablon|nazwa przestrzeni nazw i=Moja przestrzeń|numer jednostki=2}}}} * {{Code|{{m|Pudełko|Nazwa przestrzeni nazw|nazwa przestrzeni nazw 2{{=}}Szablon|numer jednostki{{=}}2}}}} → {{Tt|{{#invoke:Pudełko|Nazwa przestrzeni nazw|nazwa przestrzeni nazw 2=Szablon|numer jednostki=2}}}} * {{Code|{{m|Pudełko|Nazwa przestrzeni nazw|nazwa przestrzeni nazw 2{{=}}Szablon|numer jednostki{{=}}2}}}} → {{Tt|{{#invoke:Pudełko|Nazwa przestrzeni nazw|nazwa przestrzeni nazw i=Szablon|numer jednostki=2}}}} * {{Code|{{m|Pudełko|Nazwa przestrzeni nazw|nazwa przestrzeni nazw{{=}}Szablon|numer jednostki{{=}}2}}}} → {{Tt|{{#invoke:Pudełko|Nazwa przestrzeni nazw|nazwa przestrzeni nazw=Szablon|numer jednostki=2}}}} Powyżej dla przykładu podano parametry nie w rodzicu w szablonie, tylko w dziecku, jeśli chodzi o parametry nazw przestrzeni nazw, ale ich się za to nie powinno podawać w tych ramach, tylko w szablonach, w których wywoływane są te ramki pudełek {{Code|{{m|Pudełko}}}}, ale tak tutaj tak zrobiono by było najłatwiej sprawdzić działanie tego typu funkcji. Analogicznie możemy podawać parametry typu jednostki, np.: wywołaniu modułowym {{Code|{{m|Pudełko|Nazwa przestrzeni nazw|typ jednostki 2{{=}}strona szablonu|numer jednostki{{=}}2}}}}, ale o tym więcej w rozdziałach {{Code|{{sr|# p["Typ jednostki"](frame,i)|p=Pudełko}}}} w „{{sr|#Funkcje typu jednostki|p=Pudełko}}”, on definiuje przestrzenie przedmiotowe, ale można użyć parametru dyskusji typu jednostki z wartością niepustą, wtedy wyświetli się nazwa przestrzeni nazw dyskusji. Również parametry typu jednostki nie powinno się podawać w dziecku w ramce, tylko w rodzicu w szablonie jako parametry, w którym ta ramka jest wywoływana, ale tutaj podano jedynie dla przykładu, jak najłatwiej sprawdzić działanie tych parametrów tej funkcji. Najpierw w funkcji nagłówku brane są parametry nazw przestrzeni nazw, a jeżeli ich nie ma, to parametry typu jednostki, a jeżeli nie ma, to generowane są nazwy na podstawie aktualnego modułu. === {{Code|p["Nazwa przedmiotowej przestrzeni nazw"](frame,...)}} === Funkcja pisze przedmiotową nazwę przestrzeni nazw jakikolwiek nazwy przestrzeni nazw (tzn. nazwę przedmiotową nazwy przestrzenie nazw, czyli nie dyskusji, zamieniana jest na nią samą, czyli identyfikator przestrzeni się nie zmienia, a dyskusji, nie przedmiotową, przekształca się na przedmiotową jej odpowiadającą, czyli w tym przypadku identyfikator przestrzeni zmniejsza się o numer mniej), według podanej w zmiennej {{Code|nazwa przestrzeni nazw}} dla pozycja bazowej w podanych parametrach szablonu rodzicu ramki dziecka, lub dla innej pozycji należy parametr podawać w formie {{Code|nazwa przestrzeni nazw 1}}, {{Code|nazwa przestrzeni nazw 2}}, {{Code|nazwa przestrzeni nazw 3}},..., lub te parametry można podać w postaci ogólnej {{Code|nazwa przestrzeni nazw i}}. Parametry podaje się w parametrach rodzica wywołania tej funkcji {{Code|{{m|Pudełko|Nazwa przedmiotowej przestrzeni nazw}}}} (ale ich nie trzeba podawać w dziecku, ale można) i w parametrach dziecka, jeśli chodzi o zmienną {{Code|numer jednostki}}, czyli np.: {{Code|{{m|Pudełko|Nazwa przedmiotowej przestrzeni nazw|numer jednostki{{=}}<jakaś liczba całkowita dodatnia>}}}}. Te parametry przestrzenne zamiast w rodzicu w szablonie można podać w ramce dziecka, wtedy parametry dziecka mają pierwszeństwo. Parametry przestrzenne mogą mogą być podane w postaci przestrzeni przedmiotowej lub dyskusji, ale ta funkcja zawsze ją zamienia na przedmiotową. Przestrzeń nazw z parametrów nazw przestrzennych może odpowiadać wartości przestrzeni głównej, to wtedy odpowiednia przestrzeń nazw z parametru nazwy jednostki się nie liczy w tej funkcji, aby się liczyła należy użyć funkcji {{Code|{{sr|#p["Nazwa przedmiotowej przestrzeni nazw 2"](frame,...)|p=Pudełko}}}}. Definicja skrótowa funkcji: <syntaxhighlight lang="lua"> p["Nazwa przedmiotowej przestrzeni nazw"]=function(frame,czy_uwzglednic_alternatywna_nazwe,i)...end; </syntaxhighlight> Wtedy ciało funkcji tej, czyli jego definicja w środku, jest: <syntaxhighlight lang="lua"> -- Jest liczony numer parametru nazwy przestrzeni nazw, domyslnie chodzi tu o numer bazowy parametrów przestrzennych; local numer_jednostki=i or frame.args["numer jednostki"]; local liczba_numer_jednostki=((numer_jednostki)and(tonumber(numer_jednostki))or 0); local pudelko_pomocne_modul=require("Module:Pudełko/Pomocne"); -- Liczy nazwę przestrzeni nazw przedmiotową na podstawie podanych parametrów; return pudelko_pomocne_modul.Nazwa_przestrzeni_nazw(frame,1, czy_uwzglednic_alternatywna_nazwe,liczba_numer_jednostki); </syntaxhighlight> Parametry funkcji: * {{Code|frame}} - tablica ramki tablicy transportu, * {{Code|czy_uwzglednic_alternatywna_nazwe}} - czy ma uwzględniać nazwę przestrzeni nazw domyślną szablonu, dostępne wartości: {{Code|false}}, w której nazwa domyślna nie jest uwzględniana wtedy, oraz {{Code|nil}} i {{Code|true}}, które oznaczają to samo, w tym jeżeli ona jest uwzględniana, wtedy jest brany parametr pierwszy dziecka, który musi istnieć przy takiej wartości tego parametru, tzn. {{Code|{{m|Pudełko|Nazwa przedmiotowej przestrzeni nazw|Dyskusja szablonu}}}} - ta nazwa domyślna zostanie zamieniona na przedmiotową, a jak ona by była przedmiotowa, to żadnej zamiany by nie było, a nazwa uzyskana z nazwy przestrzeni nazw z parametrów przestrzennych jest w takim przypadku błędna, to w takim razie brany jest ten parametr, a jeżeli ta nazwa domyślna jest błędna, czyli {{Code|{{m|Pudełko|Nazwa przedmiotowej przestrzeni nazw|Moja przestrzeń}}}}, wtedy funkcja zwraca stan błędu {{Code|(błąd)}}. * {{Code|i}} - numer zmiennej nazwy przestrzeni nazw. Funkcja wykorzystuje {{Code|{{sr|#p.Nazwa_przestrzeni_nazw(frame,...)|p=Pudełko/Pomocne}}}} do wyznaczania ogólnego nazwy przestrzeni nazw dla pozycji bazowej i numerkowej, tzn. dla pozycji: jeden, dwa, trzy,..., itd, i ich ogólnej. Parametr ramki tablicy transportu rodzica szablonu: * {{Code|nazwa przestrzeni nazw}}, {{Code|nazwa przestrzeni nazw 1}}, {{Code|nazwa przestrzeni nazw 2}}, {{Code|nazwa przestrzeni nazw 3}},..., {{Code|nazwa przestrzeni nazw i}} - nazwy przestrzeni nazw dla pozycji bazowej oraz zwykłej i ogólnej numerkowej, * {{Code|typ jednostki}}, {{Code|typ jednostki 1}}, {{Code|typ jednostki 2}}, {{Code|typ jednostki 3}},..., {{Code|typ jednostki i}} - typy jednostek, którym odpowiadają pewne przestrzenie przedmiotowe, dla pozycji bazowej, numerkowej i ogólnej. Parametry ramki tablicy transportu dziecka: * Parametry dziecka są takie same jak rodzica dla funkcji pudełkowej plus tu wymienione, * {{Code|numer jednostki}} - jak parametr {{Code|i}} nie został ustawiony, to wtedy liczy się ta zmienna. Przykłady: <syntaxhighlight lang="mediawiki"> {{Nazwa szablonu|nazwa przestrzeni nazw=Dyskusja Wikibooks|nazwa przestrzeni nazw 2=Dyskusja szablonu|nazwa przestrzeni nazw i=Dyskusja modułu}} </syntaxhighlight> W dziecku powiedzmy jest wywołanie, i szukamy nazwy przestrzeni nazw o numerze dwa, która nie została podana, ale istnieje za to jej wersji ogólna {{Code|nazwa przestrzeni nazw i}} i domyślna {{Code|nazwa przestrzeni nazw}}: <syntaxhighlight lang="mediawiki"> {{#invoke:Pudełko|Nazwa przedmiotowej przestrzeni nazw|numer jednostki=1}} </syntaxhighlight> Na podstawie powyższego przykładu otrzymamy wynik o schemacie, nie wyniku, bo tam nie ma zmiennej {{Code|nazwa przestrzeni nazw 1}}, ale jest {{Code|nazwa przestrzeni nazw i}}: <syntaxhighlight lang="mediawiki"> <!-- Ale nie "nazwa przestrzeni nazw", bo jej nie ma, ale za to istnieje "nazwa przestrzeni nazw i"; --> <!-- nazwa przestrzeni nazw 2=nazwa przestrzeni nazw i=Dyskusja modułu; --> <!-- Czyli wynik: --> Moduł <!-- Widzimy, że wygenerowała się nazwa przestrzeni nazw, którą jest przestrzeń przedmiotowa programowa przestrzeni dyskusji "Dyskusja modułu", którą również jest "Szablon" jego przestrzeni dyskusji "Dyskusja szablonu", a dla ich przestrzeni przedmiotowej, zamiast dyskusji, to samo przekształca się na to samo; --> </syntaxhighlight> Nie jest brana w tym powyższym przykładzie zmienna {{Code|nazwa przestrzeni nazw}}, bo jej nie ma, ale za to jest {{Code|nazwa przestrzeni nazw i}}, bo ona występuje jako parametr domyślny ogólny dla parametrów numerkowych. Przykłady w wikikodzie: * {{Code|{{m|Pudełko|Nazwa przedmiotowej przestrzeni nazw|numer jednostki{{=}}2}}}} → {{Tt|{{#invoke:Pudełko|Nazwa przedmiotowej przestrzeni nazw|numer jednostki=2}}}} * {{Code|{{m|Pudełko|Nazwa przedmiotowej przestrzeni nazw|Dyskusja szablonu|nazwa przestrzeni nazw i{{=}}Moja przestrzeń|numer jednostki{{=}}2}}}} → {{Tt|{{#invoke:Pudełko|Nazwa przedmiotowej przestrzeni nazw|Dyskusja szablonu|nazwa przestrzeni nazw i=Moja przestrzeń|numer jednostki=2}}}} * {{Code|{{m|Pudełko|Nazwa przedmiotowej przestrzeni nazw|nazwa przestrzeni nazw 2{{=}}Dyskusja szablonu|numer jednostki{{=}}2}}}} → {{Tt|{{#invoke:Pudełko|Nazwa przedmiotowej przestrzeni nazw|nazwa przestrzeni nazw 2=Dyskusja szablonu|numer jednostki=2}}}} * {{Code|{{m|Pudełko|Nazwa przedmiotowej przestrzeni nazw|nazwa przestrzeni nazw 2{{=}}Dyskusja szablonu|numer jednostki{{=}}2}}}} → {{Tt|{{#invoke:Pudełko|Nazwa przedmiotowej przestrzeni nazw|nazwa przestrzeni nazw i=Dyskusja szablonu|numer jednostki=2}}}} * {{Code|{{m|Pudełko|Nazwa przedmiotowej przestrzeni nazw|nazwa przestrzeni nazw{{=}}Dyskusja szablonu|numer jednostki{{=}}2}}}} → {{Tt|{{#invoke:Pudełko|Nazwa przedmiotowej przestrzeni nazw|nazwa przestrzeni nazw=Dyskusja szablonu|numer jednostki=2}}}} Powyżej dla przykładu podano parametry nie w rodzicu w szablonie, tylko w dziecku, jeśli chodzi o parametry nazw przestrzeni nazw, ale ich się za to nie powinno podawać w tych ramach, tylko w szablonach, w których wywoływane są te ramki pudełek {{Code|{{m|Pudełko}}}}, ale tak tutaj tak zrobiono by było najłatwiej sprawdzić działanie tego typu funkcji. Analogicznie możemy podawać parametry typu jednostki, np.: wywołaniu modułowym {{Code|{{m|Pudełko|Nazwa przedmiotowej przestrzeni nazw|typ jednostki 2{{=}}strona szablonu|numer jednostki{{=}}2}}}}, ale o tym więcej w rozdziałach {{Code|{{sr|# p["Przedmiotowy typ jednostki"](frame,i)|p=Pudełko}}}} w „{{sr|#Funkcje typu jednostki|p=Pudełko}}”, ale wtedy ta sama nazwa przestrzeni nazw reprezentowana przez {{Parametr|typ jednostki 2|strona szablonu}}, jest zamieniana na to samo, lepiej jest tutaj używać parametrów przestrzennych nazw niż typu jednostki, bo typ jednostki ma taką samą wartość dla przestrzeni przedmiotowej, co dyskusji. Tutaj parametr dyskusji typu jednostki bazowy i numerkowy ogólny, czy szczegółowy, nie gra roli, bo nawet, gdy wygenerujemy nazwę przestrzeni dyskusji za pomoca tego parametru, to i tak otrzymamy na samym końcu jego nazwę przedmiotową. Również parametry typu jednostki nie powinno się podawać w dziecku w ramce, tylko w rodzicu w szablonie jako parametry, w którym ta ramka jest wywoływana, ale tutaj podano jedynie dla przykładu, jak najłatwiej sprawdzić działanie tych parametrów tej funkcji. Najpierw w funkcji nagłówku brane są parametry nazw przestrzeni nazw, a jeżeli ich nie ma, to parametry typu jednostki, a jeżeli nie ma, to generowane są nazwy na podstawie aktualnego modułu. === {{Code|p["Nazwa przestrzeni nazw dyskusji"](frame,...)}} === Funkcja pisze nazwę przestrzeni nazw dyskusji jakikolwiek nazwy przestrzeni nazw (tzn. nazwę przedmiotową nazwy przestrzenie nazw, czyli nie dyskusji, zamieniana jest na dyskusji, czyli identyfikator przestrzeni się zmienia jeden wyżej, a dyskusji, nie przedmiotową, przekształca się na tą samą), według podanej w zmiennej {{Code|nazwa przestrzeni nazw}} dla pozycja bazowej w podanych parametrach szablonu rodzicu ramki dziecka, lub dla innej pozycji należy parametr podawać w formie {{Code|nazwa przestrzeni nazw 1}}, {{Code|nazwa przestrzeni nazw 2}}, {{Code|nazwa przestrzeni nazw 3}},..., lub te parametry można podać w postaci ogólnej {{Code|nazwa przestrzeni nazw i}}. Parametry podaje się w parametrach rodzica wywołania tej funkcji {{Code|{{m|Pudełko|Nazwa przestrzeni nazw dyskusji}}}} (ale ich nie trzeba podawać w dziecku, ale można) i w parametrach dziecka, jeśli chodzi o zmienną {{Code|numer jednostki}}, czyli np.: {{Code|{{m|Pudełko|Nazwa przestrzeni nazw dyskusji|numer jednostki{{=}}<jakaś liczba całkowita dodatnia>}}}}. Te parametry przestrzenne zamiast w rodzicu w szablonie można podać w ramce dziecka, wtedy parametry dziecka mają pierwszeństwo. Parametry przestrzenne mogą mogą być podane w postaci przestrzeni przedmiotowej lub dyskusji, ale ta funkcja zawsze ją zamienia na dyskusji. Przestrzeń nazw z parametrów nazw przestrzennych może odpowiadać wartości przestrzeni głównej, to wtedy odpowiednia przestrzeń nazw z parametru nazwy jednostki się nie liczy w tej funkcji, aby się liczyła należy użyć funkcji {{Code|{{sr|#p["Nazwa przestrzeni nazw dyskusji 2"](frame,...)|p=Pudełko}}}}. Definicja skrótowa funkcji: <syntaxhighlight lang="lua"> p["Nazwa przestrzeni nazw dyskusji"]=function(frame,czy_uwzglednic_alternatywna_nazwe,i)...end; </syntaxhighlight> Wtedy ciało funkcji tej, czyli jego definicja w środku, jest: <syntaxhighlight lang="lua"> -- Jest liczony numer parametru nazwy przestrzeni nazw, domyslnie chodzi tu o numer bazowy parametrów przestrzennych; local numer_jednostki=i or frame.args["numer jednostki"]; local liczba_numer_jednostki=((numer_jednostki)and(tonumber(numer_jednostki))or 0); local pudelko_pomocne_modul=require("Module:Pudełko/Pomocne"); -- Liczy nazwę przestrzeni nazw dyskusji na podstawie podanych parametrów; return pudelko_pomocne_modul.Nazwa_przestrzeni_nazw(frame,2, czy_uwzglednic_alternatywna_nazwe,liczba_numer_jednostki); </syntaxhighlight> Parametry funkcji: * {{Code|frame}} - tablica ramki tablicy transportu, * {{Code|czy_uwzglednic_alternatywna_nazwe}} - czy ma uwzględniać nazwę przestrzeni nazw domyślną szablonu, dostępne wartości: {{Code|false}}, w której nazwa domyślna nie jest uwzględniana wtedy, oraz {{Code|nil}} i {{Code|true}}, które oznaczają to samo, w tym jeżeli ona jest uwzględniana, wtedy jest brany parametr pierwszy dziecka, który musi istnieć przy takiej wartości tego parametru, tzn. {{Code|{{m|Pudełko|Nazwa przestrzeni nazw dyskusji|Szablon}}}} - ta nazwa domyślna zostanie przekształcona na dyskusji, a jeżeli ona by była dyskusji, to nie byłoby żadnego przekształcenia, a nazwa uzyskana nazwy przestrzeni nazw z parametrów przestrzennych jest w takim przypadku błędna, to w takim razie brany jest ten parametr, a jeżeli nazwa domyślna jest błędna, czyli {{Code|{{m|Pudełko|Nazwa przestrzeni nazw dyskusji|Moja przestrzeń}}}}, wtedy funkcja zwraca stan błędu {{Code|(błąd)}}. * {{Code|i}} - numer zmiennej nazwy przestrzeni nazw. Funkcja wykorzystuje {{Code|{{sr|#p.Nazwa_przestrzeni_nazw(frame,...)|p=Pudełko/Pomocne}}}} do wyznaczania ogólnego nazwy przestrzeni nazw dla pozycji bazowej i numerkowej, tzn. dla pozycji: jeden, dwa, trzy,..., itd, i ich ogólnej. Parametr ramki tablicy transportu rodzica szablonu: * {{Code|nazwa przestrzeni nazw}}, {{Code|nazwa przestrzeni nazw 1}}, {{Code|nazwa przestrzeni nazw 2}}, {{Code|nazwa przestrzeni nazw 3}},..., {{Code|nazwa przestrzeni nazw i}} - nazwy przestrzeni nazw dla pozycji bazowej oraz zwykłej i ogólnej numerkowej, * {{Code|typ jednostki}}, {{Code|typ jednostki 1}}, {{Code|typ jednostki 2}}, {{Code|typ jednostki 3}},..., {{Code|typ jednostki i}} - typy jednostek, którym odpowiadają pewne przestrzenie przedmiotowe, dla pozycji bazowej, numerkowej i ogólnej. Parametry ramki tablicy transportu dziecka: * Parametry dziecka są takie same jak rodzica dla funkcji pudełkowej plus tu wymienione, * {{Code|numer jednostki}} - jak parametr {{Code|i}} nie został ustawiony, to wtedy liczy się ta zmienna. Przykłady: <syntaxhighlight lang="mediawiki"> {{Nazwa szablonu|nazwa przestrzeni nazw=Wikibooks|nazwa przestrzeni nazw 2=Szablon|nazwa przestrzeni nazw i=Moduł}} </syntaxhighlight> W dziecku powiedzmy jest wywołanie, i szukamy nazwy przestrzeni nazw o numerze dwa, która nie została podana, ale istnieje za to jej wersji ogólna {{Code|nazwa przestrzeni nazw i}} i domyślna {{Code|nazwa przestrzeni nazw}}: <syntaxhighlight lang="mediawiki"> {{#invoke:Pudełko|Nazwa przestrzeni nazw dyskusji|numer jednostki=1}} </syntaxhighlight> Na podstawie powyższego przykładu otrzymamy wynik o schemacie, nie wyniku, bo tam nie ma zmiennej {{Code|nazwa przestrzeni nazw 1}}, ale jest {{Code|nazwa przestrzeni nazw i}}: <syntaxhighlight lang="mediawiki"> <!-- Ale nie "nazwa przestrzeni nazw", bo jej nie ma, ale za to istnieje "nazwa przestrzeni nazw i"; --> <!-- nazwa przestrzeni nazw 2=nazwa przestrzeni nazw i=Moduł; --> <!-- Czyli wynik: --> Dyskusja modułu <!-- Widzimy, że wygenerowała się nazwa przestrzeni nazw, którą jest przestrzeń dyskusji przestrzeni programowej przestrzeni przedmiotowej "Moduł", którą również jest "Szablon" jego przestrzeni dyskusji "Dyskusja szablonu", a dla ich przestrzeni przedmiotowej, zamiast dyskusji, to przekształca się na dyskusji jej odpowiadającą; --> </syntaxhighlight> Nie jest brana w tym powyższym przykładzie zmienna {{Code|nazwa przestrzeni nazw}}, bo jej nie ma, ale za to jest {{Code|nazwa przestrzeni nazw i}}, bo ona występuje jako parametr domyślny ogólny dla parametrów numerkowych. Przykłady w wikikodzie: * {{Code|{{m|Pudełko|Nazwa przestrzeni nazw dyskusji|numer jednostki{{=}}2}}}} → {{Tt|{{#invoke:Pudełko|Nazwa przestrzeni nazw dyskusji|numer jednostki=2}}}} * {{Code|{{m|Pudełko|Nazwa przestrzeni nazw dyskusji|Szablon|nazwa przestrzeni nazw i{{=}}Moja przestrzeń|numer jednostki{{=}}2}}}} → {{Tt|{{#invoke:Pudełko|Nazwa przestrzeni nazw dyskusji|Szablon|nazwa przestrzeni nazw i=Moja przestrzeń|numer jednostki=2}}}} * {{Code|{{m|Pudełko|Nazwa przestrzeni nazw dyskusji|nazwa przestrzeni nazw 2{{=}}Szablon|numer jednostki{{=}}2}}}} → {{Tt|{{#invoke:Pudełko|Nazwa przestrzeni nazw dyskusji|nazwa przestrzeni nazw 2=Szablon|numer jednostki=2}}}} * {{Code|{{m|Pudełko|Nazwa przestrzeni nazw dyskusji|nazwa przestrzeni nazw 2{{=}}Szablon|numer jednostki{{=}}2}}}} → {{Tt|{{#invoke:Pudełko|Nazwa przestrzeni nazw dyskusji|nazwa przestrzeni nazw i=Szablon|numer jednostki=2}}}} * {{Code|{{m|Pudełko|Nazwa przestrzeni nazw dyskusji|nazwa przestrzeni nazw{{=}}Szablon|numer jednostki{{=}}2}}}} → {{Tt|{{#invoke:Pudełko|Nazwa przestrzeni nazw dyskusji|nazwa przestrzeni nazw=Szablon|numer jednostki=2}}}} Powyżej dla przykładu podano parametry nie w rodzicu w szablonie, tylko w dziecku, jeśli chodzi o parametry nazw przestrzeni nazw, ale ich się za to nie powinno podawać w tych ramach, tylko w szablonach, w których wywoływane są te ramki pudełek {{Code|{{m|Pudełko}}}}, ale tak tutaj tak zrobiono by było najłatwiej sprawdzić działanie tego typu funkcji. Analogicznie możemy podawać parametry typu jednostki, np.: wywołaniu modułowym {{Code|{{m|Pudełko|Nazwa przestrzeni nazw dyskusji|typ jednostki 2{{=}}strona szablonu|numer jednostki{{=}}2}}}}, ale o tym więcej w rozdziałach {{Code|{{sr|# p["Dyskusyjny typ jednostki"](frame,i)|p=Pudełko}}}} w „{{sr|#Funkcje typu jednostki|p=Pudełko}}”, ale wtedy nazwa przestrzeni nazw reprezentowana przez {{Parametr|typ jednostki 2|strona szablonu}}, jest zamieniana na nazwę przestrzeni nazw dyskusji. Parametr dyskusji typu jednostki bazowy lub dla danego numerka ogólny, czy szczegółowy, nie gra roli. Również parametry typu jednostki nie powinno się podawać w dziecku w ramce, tylko w rodzicu w szablonie jako parametry, w którym ta ramka jest wywoływana, ale tutaj podano jedynie dla przykładu, jak najłatwiej sprawdzić działanie tych parametrów tej funkcji. Najpierw w funkcji nagłówku brane są parametry nazw przestrzeni nazw, a jeżeli ich nie ma, to parametry typu jednostki, a jeżeli nie ma, to generowane są nazwy na podstawie aktualnego modułu. == Funkcje nazw przestrzeni nazw drugiej wersji == === {{Code|p["Nazwa przestrzeni nazw 2"](frame,...)}} === Funkcja pisze nazwę przestrzeni nazw, niezależnie, czy to jest przedmiotowa, czy dyskusji, według, i nie zawsze tylko, podanej w zmiennej {{Code|nazwa przestrzeni nazw}} dla pozycja bazowej w podanych parametrach szablonu rodzicu ramki dziecka, lub dla innej pozycji należy parametr podawać w formie {{Code|nazwa przestrzeni nazw 1}}, {{Code|nazwa przestrzeni nazw 2}}, {{Code|nazwa przestrzeni nazw 3}},..., lub te parametry można podać w postaci ogólnej {{Code|nazwa przestrzeni nazw i}}. W tej funkcji trzeba też podawać parametry nazwy jednostek {{Code|nazwa jednostki}}, {{Code|nazwa jednostki 1}}, {{Code|nazwa jednostki 2}}, {{Code|nazwa jednostki 3}},... Parametry podaje się w parametrach rodzica wywołania tej funkcji {{Code|{{m|Pudełko|Nazwa przestrzeni nazw 2}}}} (ale ich nie trzeba podawać w dziecku, ale można) i w parametrach dziecka, jeśli chodzi o zmienną {{Code|numer jednostki}}, czyli np.: {{Code|{{m|Pudełko|Nazwa przestrzeni nazw 2|numer jednostki{{=}}<jakaś liczba całkowita dodatnia>}}}}. Te parametry przestrzenne zamiast w rodzicu w szablonie można podać w ramce dziecka, wtedy parametry dziecka mają pierwszeństwo. Przestrzeń nazw z parametrów nazw przestrzennych może odpowiadać wartości przestrzeni głównej, to wtedy odpowiednia przestrzeń nazw z parametru nazwy jednostki się liczy w tej funkcji, wtedy jest liczona nazwa przestrzeni nazw z tego parametru. Gdy parametry przestrzenne lub typ jednostki w drugim podejściu nie wskazują na przestrzeń główną, to wtedy działanie tej funkcji jest podobne do {{Code|{{sr|#p["Nazwa przestrzeni nazw"](frame,...)|p=Pudełko}}}}. Definicja skrótowa funkcji: <syntaxhighlight lang="lua"> p["Nazwa przestrzeni nazw 2"]=function(frame,czy_uwzglednic_alternatywna_nazwe,i)...end; </syntaxhighlight> Wtedy ciało funkcji tej, czyli jego definicja w środku, jest: <syntaxhighlight lang="lua"> local pudelko_pomocne_modul=require("Module:Pudełko/Pomocne"); -- Liczy nazwę przestrzeni nazw, jeżeli z parametrów przestrzennych przestrzeń wskazuje na główną, to wtedy jest liczona przestrzeń nazw z nazwy jednostki; return pudelko_pomocne_modul.Nazwa_przestrzeni_nazw_2(frame,czy_uwzglednic_alternatywna_nazwe,i) </syntaxhighlight> Parametry funkcji: * {{Code|frame}} - tablica ramki tablicy transportu, * {{Code|czy_uwzglednic_alternatywna_nazwe}} - czy ma uwzględniać nazwę przestrzeni nazw domyślną szablonu, dostępne wartości: {{Code|false}}, w której nazwa domyślna nie jest uwzględniana wtedy, oraz {{Code|nil}} i {{Code|true}}, które oznaczają to samo, w tym jeżeli ona jest uwzględniana, wtedy jest brany parametr pierwszy dziecka, który musi istnieć przy takiej wartości tego parametru, tzn. {{Code|{{m|Pudełko|Nazwa przestrzeni nazw 2|Szablon}}}}, a nazwa uzyskana nazwy przestrzeni nazw jest w takim przypadku błędna, a jeżeli nazwa domyślna jest błędna, czyli {{Code|{{m|Pudełko|Nazwa przestrzeni nazw 2|Moja przestrzeń}}}}, wtedy funkcja zwraca stan błędu {{Code|(błąd)}}. * {{Code|i}} - numer zmiennej nazwy przestrzeni nazw. Funkcja wykorzystuje {{Code|{{sr|#p.Nazwa_przestrzeni_nazw_2(frame,...)|p=Pudełko/Pomocne}}}} do wyznaczania ogólnego nazwy przestrzeni nazw dla pozycji bazowej i numerkowej, tzn. dla pozycji: jeden, dwa, trzy,..., itd, i ich ogólnej. Parametr ramki tablicy transportu rodzica szablonu: * {{Code|nazwa przestrzeni nazw}}, {{Code|nazwa przestrzeni nazw 1}}, {{Code|nazwa przestrzeni nazw 2}}, {{Code|nazwa przestrzeni nazw 3}},..., {{Code|nazwa przestrzeni nazw i}} - nazwy przestrzeni nazw dla pozycji bazowej oraz zwykłej i ogólnej numerkowej, * {{Code|nazwa jednostki}}, {{Code|nazwa jednostki 1}}, {{Code|nazwa jednostki 2}}, {{Code|nazwa jednostki 3}},... - nazwy jednostek dla pozycji bazowej i numerkowej, * {{Code|typ jednostki}}, {{Code|typ jednostki 1}}, {{Code|typ jednostki 2}}, {{Code|typ jednostki 3}},..., {{Code|typ jednostki i}} - typy jednostek, którym odpowiadają pewne przestrzenie przedmiotowe, dla pozycji bazowej, numerkowej i ogólnej, ** {{Code|dyskusja typu jednostki}}, {{Code|dyskusja typu jednostki 1}}, {{Code|dyskusja typ jednostki 2}}, {{Code|dyskusja typ jednostki 3}},..., {{Code|dyskusja typ jednostki i}} - czy dany typ jednostki ma przedstawiać, jeśli niepusta, przestrzeń dyskusji dla pozycji bazowej, numerkowej i ogólnej. Parametry ramki tablicy transportu dziecka: * Parametry dziecka są takie same jak rodzica dla funkcji pudełkowej plus tu wymienione, * {{Code|numer jednostki}} - jak parametr {{Code|i}} nie został ustawiony, to wtedy liczy się ta zmienna. Przykłady: <syntaxhighlight lang="mediawiki"> {{Nazwa szablonu|nazwa przestrzeni nazw=Wikibooks|nazwa przestrzeni nazw 1=Szablon|nazwa przestrzeni nazw i=|nazwa jednostki 2=Wikibooks:Strona}} </syntaxhighlight> W dziecku powiedzmy jest wywołanie, i szukamy nazwy przestrzeni nazw o numerze dwa, która została podana, ale istnieje za to jej wersji ogólna {{Code|nazwa przestrzeni nazw i}} i domyślna {{Code|nazwa przestrzeni nazw}}, ale wtedy dla tego numerkowego liczy się to ogólne z {{Code| i}}, a ponieważ ta nazwa jest pusta, więc będziemy liczyli nazwę przestrzeni nazw z {{Code|nazwa jednostki 2}}: <syntaxhighlight lang="mediawiki"> {{#invoke:Pudełko|Nazwa przestrzeni nazw 2|numer jednostki=2}} </syntaxhighlight> Na podstawie powyższego przykładu otrzymamy wynik o schemacie, nie wyniku, bo tam nie ma zmiennej {{Code|nazwa przestrzeni nazw 1}}, ale jest {{Code|nazwa przestrzeni nazw i}}: <syntaxhighlight lang="mediawiki"> <!-- Ale nie "nazwa przestrzeni nazw 2", bo jej nie ma, ale za to istnieje "nazwa przestrzeni nazw i"; --> <!-- nazwa przestrzeni nazw 2=nazwa przestrzeni nazw i="", a nazwa jednostki 2="Wikibooks:Strona"; --> <!-- Czyli wynik: --> Wikibooks <!-- Widzimy, że wygenerowała się nazwa przestrzeni nazw, którą jest przestrzeń nieprogramowa, ale projektu, wychodząca z nazwy jednostek w tym przypadku z "nazwa jednostki 2"; --> </syntaxhighlight> Nie jest brana w tym powyższym przykładzie zmienna {{Code|nazwa przestrzeni nazw}}, bo jej nie ma, ale za to jest {{Code|nazwa przestrzeni nazw i}}, bo ona występuje jako parametr domyślny ogólny dla parametrów numerkowych. Tytaj jest używana jest zmienna {{Code|nazwa jednostki 2}} do wygenerowania ostatecznego wyniku, bo jak można zauważyć, parametry przestrzenne wskazują na przestrzeń główną, a nazwy jednostek już nie. Przykłady w wikikodzie: * {{Code|{{m|Pudełko|Nazwa przestrzeni nazw 2|numer jednostki{{=}}2}}}} → {{Tt|{{#invoke:Pudełko|Nazwa przestrzeni nazw 2|numer jednostki=2}}}} * {{Code|{{m|Pudełko|Nazwa przestrzeni nazw 2|Szablon|nazwa przestrzeni nazw i{{=}}Moja przestrzeń|numer jednostki{{=}}2}}}} → {{Tt|{{#invoke:Pudełko|Nazwa przestrzeni nazw 2|Szablon|nazwa przestrzeni nazw i=Moja przestrzeń|numer jednostki=2}}}} * {{Code|{{m|Pudełko|Nazwa przestrzeni nazw 2|nazwa przestrzeni nazw 2{{=}}|nazwa jednostki 2{{=}}Szablon:Strona|numer jednostki{{=}}2}}}} → {{Tt|{{#invoke:Pudełko|Nazwa przestrzeni nazw 2|nazwa przestrzeni nazw 2=|nazwa jednostki 2=Szablon:Strona|numer jednostki=2}}}} * {{Code|{{m|Pudełko|Nazwa przestrzeni nazw 2|nazwa przestrzeni nazw i{{=}}|nazwa jednostki 2{{=}}Szablon:Strona|numer jednostki{{=}}2}}}} → {{Tt|{{#invoke:Pudełko|Nazwa przestrzeni nazw 2|nazwa przestrzeni nazw i=|nazwa jednostki 2=Szablon:Strona|numer jednostki=2}}}} * {{Code|{{m|Pudełko|Nazwa przestrzeni nazw 2|Szablon|nazwa przestrzeni nazw{{=}}|nazwa jednostki 2{{=}}Wikibooks:Strona|numer jednostki{{=}}2}}}} → {{Tt|{{#invoke:Pudełko|Nazwa przestrzeni nazw 2|Szablon|nazwa przestrzeni nazw=|nazwa jednostki 2=Wikibooks:Strona|numer jednostki=2}}}} Powyżej dla przykładu podano parametry nie w rodzicu w szablonie, tylko w dziecku, jeśli chodzi o parametry nazw przestrzeni nazw i nazw jednostek, ale ich się za to nie powinno podawać w tych ramach, tylko w szablonach, w których wywoływane są te ramki pudełek {{Code|{{m|Pudełko}}}}, ale tak tutaj tak zrobiono by było najłatwiej sprawdzić działanie tego typu funkcji. Analogicznie możemy podawać parametry typu jednostki, np.: wywołaniu modułowym {{Code|{{m|Pudełko|Nazwa przestrzeni nazw 2|typ jednostki 2{{=}}Podręcznik|nazwa jednostki 2{{=}}Szablon:Strona|numer jednostki{{=}}2}}}} (ale wtedy jest brana przestrzeń nazw z nazwy jednostki), ale o tym więcej w rozdziałach {{Code|{{sr|#p["Typ jednostki 2"](frame,i)|p=Pudełko}}}} w „{{sr|#Funkcje typu jednostki|p=Pudełko}}”, on definiuje przestrzenie przedmiotowe, ale można użyć parametru dyskusji typu jednostki z wartością niepustą, wtedy wyświetli się nazwa przestrzeni nazw dyskusji. Jeżeli typ jednostki wskazuje na przestrzeń nazw główną, wtedy się liczą parametry nazw jednostek. Również parametry typu jednostki nie powinno się podawać w dziecku w ramce, tylko w rodzicu w szablonie jako parametry, w którym ta ramka jest wywoływana, ale tutaj podano jedynie dla przykładu, jak najłatwiej sprawdzić działanie tych parametrów tej funkcji. Najpierw w funkcji nagłówku brane są parametry nazw przestrzeni nazw, a jeżeli ich nie ma, to parametry typu jednostki, a jeżeli nie ma lub parametry przestrzenne wskazują na przestrzeń główną, i nie ma nazwy jednostki, to generowane są nazwy tej funkcji na podstawie aktualnej strony. === {{Code|p["Nazwa przedmiotowej przestrzeni nazw 2"](frame,...)}} === Funkcja pisze przedmiotową nazwę przestrzeni nazw jakikolwiek nazwy przestrzeni nazw (tzn. nazwę przedmiotową nazwy przestrzenie nazw, czyli nie dyskusji, zamieniana jest na nią samą, czyli identyfikator przestrzeni się nie zmienia, a dyskusji, nie przedmiotową, przekształca się na przedmiotową jej odpowiadającą, czyli w tym przypadku identyfikator przestrzeni zmniejsza się o numer mniej), według, i nie zawsze tylko, podanej w zmiennej {{Code|nazwa przestrzeni nazw}} dla pozycja bazowej w podanych parametrach szablonu rodzicu ramki dziecka, lub dla innej pozycji należy parametr podawać w formie {{Code|nazwa przestrzeni nazw 1}}, {{Code|nazwa przestrzeni nazw 2}}, {{Code|nazwa przestrzeni nazw 3}},..., lub te parametry można podać w postaci ogólnej {{Code|nazwa przestrzeni nazw i}}. W tej funkcji trzeba też podawać parametry nazwy jednostek {{Code|nazwa jednostki}}, {{Code|nazwa jednostki 1}}, {{Code|nazwa jednostki 2}}, {{Code|nazwa jednostki 3}},... Parametry podaje się w parametrach rodzica wywołania tej funkcji {{Code|{{m|Pudełko|Nazwa przedmiotowej przestrzeni nazw 2}}}} (ale ich nie trzeba podawać w dziecku, ale można) i w parametrach dziecka, jeśli chodzi o zmienną {{Code|numer jednostki}}, czyli np.: {{Code|{{m|Pudełko|Nazwa przedmiotowej przestrzeni nazw 2|numer jednostki{{=}}<jakaś liczba całkowita dodatnia>}}}}. Te parametry przestrzenne zamiast w rodzicu w szablonie można podać w ramce dziecka, wtedy parametry dziecka mają pierwszeństwo. Przestrzeń nazw z parametrów nazw przestrzennych po przekształceniu na przedmiotową może odpowiadać wartości przestrzeni głównej, to wtedy odpowiednia przestrzeń nazw z parametru nazwy jednostki się liczy w tej funkcji, wtedy jest liczona nazwa przestrzeni nazw z tego parametru. Gdy parametry przestrzenne lub typ jednostki w drugim podejściu nie wskazują na przestrzeń główną, to wtedy działanie tej funkcji jest podobne do {{Code|{{sr|#p["Nazwa przedmiotowej przestrzeni nazw"](frame,...)|p=Pudełko}}}}. Definicja skrótowa funkcji: <syntaxhighlight lang="lua"> p["Nazwa przedmiotowej przestrzeni nazw 2"]=function(frame,czy_uwzglednic_alternatywna_nazwe,i)...end; </syntaxhighlight> Wtedy ciało funkcji tej, czyli jego definicja w środku, jest: <syntaxhighlight lang="lua"> local pudelko_pomocne_modul=require("Module:Pudełko/Pomocne"); return pudelko_pomocne_modul.Nazwa_przestrzeni_nazw_przedmiotowa_dyskusji_2(frame,czy_uwzglednic_alternatywna_nazwe,i,"przedmiotowa"); </syntaxhighlight> Parametry funkcji: * {{Code|frame}} - tablica ramki tablicy transportu, * {{Code|czy_uwzglednic_alternatywna_nazwe}} - czy ma uwzględniać nazwę przestrzeni nazw domyślną szablonu, dostępne wartości: {{Code|false}}, w której nazwa domyślna nie jest uwzględniana wtedy, oraz {{Code|nil}} i {{Code|true}}, które oznaczają to samo, w tym jeżeli ona jest uwzględniana, wtedy jest brany parametr pierwszy dziecka, który musi istnieć przy takiej wartości tego parametru, tzn. {{Code|{{m|Pudełko|Nazwa przedmiotowej przestrzeni nazw 2|Szablon}}}}, a nazwa uzyskana nazwy przestrzeni nazw jest w takim przypadku błędna, a jeżeli nazwa domyślna jest błędna, czyli {{Code|{{m|Pudełko|Nazwa przedmiotowej przestrzeni nazw 2|Moja przestrzeń}}}}, wtedy funkcja zwraca stan błędu {{Code|(błąd)}}. * {{Code|i}} - numer zmiennej nazwy przestrzeni nazw. Funkcja wykorzystuje {{Code|{{sr|#p.Nazwa_przestrzeni_nazw_przedmiotowa_dyskusji_2(frame,...)|p=Pudełko/Pomocne}}}} do wyznaczania ogólnego nazwy przestrzeni nazw dla pozycji bazowej i numerkowej, tzn. dla pozycji: jeden, dwa, trzy,..., itd, i ich ogólnej. Parametr ramki tablicy transportu rodzica szablonu: * {{Code|nazwa przestrzeni nazw}}, {{Code|nazwa przestrzeni nazw 1}}, {{Code|nazwa przestrzeni nazw 2}}, {{Code|nazwa przestrzeni nazw 3}},..., {{Code|nazwa przestrzeni nazw i}} - nazwy przestrzeni nazw dla pozycji bazowej oraz zwykłej i ogólnej numerkowej, * {{Code|nazwa jednostki}}, {{Code|nazwa jednostki 1}}, {{Code|nazwa jednostki 2}}, {{Code|nazwa jednostki 3}},... - nazwy jednostek dla pozycji bazowej i numerkowej, * {{Code|typ jednostki}}, {{Code|typ jednostki 1}}, {{Code|typ jednostki 2}}, {{Code|typ jednostki 3}},..., {{Code|typ jednostki i}} - typy jednostek, którym odpowiadają pewne przestrzenie przedmiotowe, dla pozycji bazowej, numerkowej i ogólnej. Parametry ramki tablicy transportu dziecka: * Parametry dziecka są takie same jak rodzica dla funkcji pudełkowej plus tu wymienione, * {{Code|numer jednostki}} - jak parametr {{Code|i}} nie został ustawiony, to wtedy liczy się ta zmienna. Przykłady: <syntaxhighlight lang="mediawiki"> {{Nazwa szablonu|nazwa przestrzeni nazw=Wikibooks|nazwa przestrzeni nazw 1=Szablon|nazwa przestrzeni nazw i=|nazwa jednostki 2=Dyskusja Wikibooks:Strona}} </syntaxhighlight> W dziecku powiedzmy jest wywołanie, i szukamy nazwy przestrzeni nazw o numerze dwa, która została podana, ale istnieje za to jej wersji ogólna {{Code|nazwa przestrzeni nazw i}} i domyślna {{Code|nazwa przestrzeni nazw}}, ale wtedy dla tego numerkowego liczy się to ogólne z {{Code| i}}, a ponieważ ta nazwa jest pusta, więc będziemy liczyli nazwę przestrzeni nazw z {{Code|nazwa jednostki 2}}: <syntaxhighlight lang="mediawiki"> {{#invoke:Pudełko|Nazwa przedmiotowej przestrzeni nazw 2|numer jednostki=2}} </syntaxhighlight> Na podstawie powyższego przykładu otrzymamy wynik o schemacie, nie wyniku, bo tam nie ma zmiennej {{Code|nazwa przestrzeni nazw 1}}, ale jest {{Code|nazwa przestrzeni nazw i}}: <syntaxhighlight lang="mediawiki"> <!-- Ale nie "nazwa przestrzeni nazw 2", bo jej nie ma, ale za to istnieje "nazwa przestrzeni nazw i"; --> <!-- nazwa przestrzeni nazw 2=nazwa przestrzeni nazw i="", a nazwa jednostki 2="Dyskusja Wikibooks:Strona"; --> <!-- Czyli wynik: --> Wikibooks <!-- Widzimy, że wygenerowała się nazwa przestrzeni nazw, którą jest przestrzeń nieprogramowa, ale projektu, wychodząca z nazwy jednostek w tym przypadku z "nazwa jednostki 2"; --> </syntaxhighlight> Nie jest brana w tym powyższym przykładzie zmienna {{Code|nazwa przestrzeni nazw}}, bo jej nie ma, ale za to jest {{Code|nazwa przestrzeni nazw i}}, bo ona występuje jako parametr domyślny ogólny dla parametrów numerkowych. Tytaj jest używana jest zmienna {{Code|nazwa jednostki 2}} do wygenerowania ostatecznego wyniku, bo jak można zauważyć, parametry przestrzenne wskazują na przestrzeń główną, a nazwy jednostek już nie. Przykłady w wikikodzie: * {{Code|{{m|Pudełko|Nazwa przedmiotowej przestrzeni nazw 2|numer jednostki{{=}}2}}}} → {{Tt|{{#invoke:Pudełko|Nazwa przedmiotowej przestrzeni nazw 2|numer jednostki=2}}}} * {{Code|{{m|Pudełko|Nazwa przedmiotowej przestrzeni nazw 2|Dyskusja szablonu|nazwa przestrzeni nazw i{{=}}Moja przestrzeń|numer jednostki{{=}}2}}}} → {{Tt|{{#invoke:Pudełko|Nazwa przedmiotowej przestrzeni nazw 2|Dyskusja szablonu|nazwa przestrzeni nazw i=Moja przestrzeń|numer jednostki=2}}}} * {{Code|{{m|Pudełko|Nazwa przedmiotowej przestrzeni nazw 2|nazwa przestrzeni nazw 2{{=}}Dyskusja|nazwa jednostki 2{{=}}Dyskusja szablonu:Strona|numer jednostki{{=}}2}}}} → {{Tt|{{#invoke:Pudełko|Nazwa przedmiotowej przestrzeni nazw 2|nazwa przestrzeni nazw 2=Dyskusja|nazwa jednostki 2=Dyskusja szablonu:Strona|numer jednostki=2}}}} * {{Code|{{m|Pudełko|Nazwa przedmiotowej przestrzeni nazw 2|nazwa przestrzeni nazw i{{=}}Dyskusja|nazwa jednostki 2{{=}}Dyskusja szablonu:Strona|numer jednostki{{=}}2}}}} → {{Tt|{{#invoke:Pudełko|Nazwa przedmiotowej przestrzeni nazw 2|nazwa przestrzeni nazw i=Dyskusja|nazwa jednostki 2=Dyskusja szablonu:Strona|numer jednostki=2}}}} * {{Code|{{m|Pudełko|Nazwa przedmiotowej przestrzeni nazw 2|Dyskusja szablonu|nazwa przestrzeni nazw{{=}}Dyskusja|nazwa jednostki 2{{=}}Wikibooks:Strona|numer jednostki{{=}}2}}}} → {{Tt|{{#invoke:Pudełko|Nazwa przedmiotowej przestrzeni nazw 2|Dyskusja szablonu|nazwa przestrzeni nazw=Dyskusja|nazwa jednostki 2=Dyskusja Wikibooks:Strona|numer jednostki=2}}}} Powyżej dla przykładu podano parametry nie w rodzicu w szablonie, tylko w dziecku, jeśli chodzi o parametry nazw przestrzeni nazw i nazw jednostek, ale ich się za to nie powinno podawać w tych ramach, tylko w szablonach, w których wywoływane są te ramki pudełek {{Code|{{m|Pudełko}}}}, ale tak tutaj tak zrobiono by było najłatwiej sprawdzić działanie tego typu funkcji. Analogicznie możemy podawać parametry typu jednostki, np.: wywołaniu modułowym {{Code|{{m|Pudełko|Nazwa przedmiotowej przestrzeni nazw 2|typ jednostki 2{{=}}Podręcznik|nazwa jednostki 2{{=}}Dyskusja szablonu:Strona|numer jednostki{{=}}2}}}} (ale wtedy jest brana przestrzeń nazw z nazwy jednostki), ale o tym więcej w rozdziałach {{Code|{{sr|# p["Przedmiotowy typ jednostki 2"](frame,i)|p=Pudełko}}}} w „{{sr|#Funkcje typu jednostki|p=Pudełko}}”, on definiuje przestrzenie przedmiotowe, ale można użyć parametru dyskusji typu jednostki z wartością niepustą, pustą, czy nawet jej nie podamy, wtedy wyświetli się nazwa przestrzeni nazw przedmiotowej. Jeżeli typ jednostki wskazuje na przestrzeń nazw główną, wtedy się liczą parametry nazw jednostek. Również parametry typu jednostki nie powinno się podawać w dziecku w ramce, tylko w rodzicu w szablonie jako parametry, w którym ta ramka jest wywoływana, ale tutaj podano jedynie dla przykładu, jak najłatwiej sprawdzić działanie tych parametrów tej funkcji. Najpierw w funkcji nagłówku brane są parametry nazw przestrzeni nazw, a jeżeli ich nie ma, to parametry typu jednostki, a jeżeli nie ma lub parametry przestrzenne wskazują na przestrzeń główną, i nie ma nazwy jednostki, to generowane są nazwy tej funkcji na podstawie aktualnej strony. === {{Code|p["Nazwa przestrzeni nazw dyskusji 2"](frame,...)}} === Funkcja pisze nazwę przestrzeni nazw dyskusji jakikolwiek nazwy przestrzeni nazw (tzn. nazwę dyskusji nazwy przestrzenie nazw, czyli nie przedmiotowej, zamieniana jest na nią samą, czyli identyfikator przestrzeni się nie zmienia, a przedmiotową, nie dyskusji, przekształca się na dyskusji jej odpowiadającą, czyli w tym przypadku identyfikator przestrzeni zwiększa się o numer więcej), według, i nie zawsze tylko, podanej w zmiennej {{Code|nazwa przestrzeni nazw}} dla pozycja bazowej w podanych parametrach szablonu rodzicu ramki dziecka, lub dla innej pozycji należy parametr podawać w formie {{Code|nazwa przestrzeni nazw 1}}, {{Code|nazwa przestrzeni nazw 2}}, {{Code|nazwa przestrzeni nazw 3}},..., lub te parametry można podać w postaci ogólnej {{Code|nazwa przestrzeni nazw i}}. W tej funkcji trzeba też podawać parametry nazwy jednostek {{Code|nazwa jednostki}}, {{Code|nazwa jednostki 1}}, {{Code|nazwa jednostki 2}}, {{Code|nazwa jednostki 3}},... Parametry podaje się w parametrach rodzica wywołania tej funkcji {{Code|{{m|Pudełko|Nazwa przestrzeni nazw dyskusji 2}}}} (ale ich nie trzeba podawać w dziecku, ale można) i w parametrach dziecka, jeśli chodzi o zmienną {{Code|numer jednostki}}, czyli np.: {{Code|{{m|Pudełko|Nazwa przestrzeni nazw dyskusji 2|numer jednostki{{=}}<jakaś liczba całkowita dodatnia>}}}}. Te parametry przestrzenne zamiast w rodzicu w szablonie można podać w ramce dziecka, wtedy parametry dziecka mają pierwszeństwo. Przestrzeń nazw z parametrów nazw przestrzennych po przekształceniu na przedmiotową może odpowiadać wartości przestrzeni głównej, to wtedy odpowiednia przestrzeń nazw z parametru nazwy jednostki się liczy w tej funkcji, wtedy jest liczona nazwa przestrzeni nazw z tego parametru. Gdy parametry przestrzenne lub typ jednostki w drugim podejściu nie wskazują na przestrzeń główną, to wtedy działanie tej funkcji jest podobne do {{Code|{{sr|#p["Nazwa dyskusji przestrzeni nazw"](frame,...)|p=Pudełko}}}}. Definicja skrótowa funkcji: <syntaxhighlight lang="lua"> p["Nazwa przestrzeni nazw dyskusji 2"]=function(frame,czy_uwzglednic_alternatywna_nazwe,i)...end; </syntaxhighlight> Wtedy ciało funkcji tej, czyli jego definicja w środku, jest: <syntaxhighlight lang="lua"> local pudelko_pomocne_modul=require("Module:Pudełko/Pomocne"); return pudelko_pomocne_modul.Nazwa_przestrzeni_nazw_przedmiotowa_dyskusji_2(frame,czy_uwzglednic_alternatywna_nazwe,i,"dyskusja"); </syntaxhighlight> Parametry funkcji: * {{Code|frame}} - tablica ramki tablicy transportu, * {{Code|czy_uwzglednic_alternatywna_nazwe}} - czy ma uwzględniać nazwę przestrzeni nazw domyślną szablonu, dostępne wartości: {{Code|false}}, w której nazwa domyślna nie jest uwzględniana wtedy, oraz {{Code|nil}} i {{Code|true}}, które oznaczają to samo, w tym jeżeli ona jest uwzględniana, wtedy jest brany parametr pierwszy dziecka, który musi istnieć przy takiej wartości tego parametru, tzn. {{Code|{{m|Pudełko|Nazwa przestrzeni nazw dyskusji 2|Szablon}}}}, a nazwa uzyskana nazwy przestrzeni nazw jest w takim przypadku błędna, a jeżeli nazwa domyślna jest błędna, czyli {{Code|{{m|Pudełko|Nazwa przestrzeni nazw dyskusji 2|Moja przestrzeń}}}}, wtedy funkcja zwraca stan błędu {{Code|(błąd)}}. * {{Code|i}} - numer zmiennej nazwy przestrzeni nazw. Funkcja wykorzystuje {{Code|{{sr|#p.Nazwa_przestrzeni_nazw_przedmiotowa_dyskusji_2(frame,...)|p=Pudełko/Pomocne}}}} do wyznaczania ogólnego nazwy przestrzeni nazw dla pozycji bazowej i numerkowej, tzn. dla pozycji: jeden, dwa, trzy,..., itd, i ich ogólnej. Parametr ramki tablicy transportu rodzica szablonu: * {{Code|nazwa przestrzeni nazw}}, {{Code|nazwa przestrzeni nazw 1}}, {{Code|nazwa przestrzeni nazw 2}}, {{Code|nazwa przestrzeni nazw 3}},..., {{Code|nazwa przestrzeni nazw i}} - nazwy przestrzeni nazw dla pozycji bazowej oraz zwykłej i ogólnej numerkowej, * {{Code|nazwa jednostki}}, {{Code|nazwa jednostki 1}}, {{Code|nazwa jednostki 2}}, {{Code|nazwa jednostki 3}},... - nazwy jednostek dla pozycji bazowej i numerkowej, * {{Code|typ jednostki}}, {{Code|typ jednostki 1}}, {{Code|typ jednostki 2}}, {{Code|typ jednostki 3}},..., {{Code|typ jednostki i}} - typy jednostek, którym odpowiadają pewne przestrzenie przedmiotowe, dla pozycji bazowej, numerkowej i ogólnej. Parametry ramki tablicy transportu dziecka: * Parametry dziecka są takie same jak rodzica dla funkcji pudełkowej plus tu wymienione, * {{Code|numer jednostki}} - jak parametr {{Code|i}} nie został ustawiony, to wtedy liczy się ta zmienna. Przykłady: <syntaxhighlight lang="mediawiki"> {{Nazwa szablonu|nazwa przestrzeni nazw=Wikibooks|nazwa przestrzeni nazw 1=Szablon|nazwa przestrzeni nazw i=|nazwa jednostki 2=Wikibooks:Strona}} </syntaxhighlight> W dziecku powiedzmy jest wywołanie, i szukamy nazwy przestrzeni nazw o numerze dwa, która została podana, ale istnieje za to jej wersji ogólna {{Code|nazwa przestrzeni nazw i}} i domyślna {{Code|nazwa przestrzeni nazw}}, ale wtedy dla tego numerkowego liczy się to ogólne z {{Code| i}}, a ponieważ ta nazwa jest pusta, więc będziemy liczyli nazwę przestrzeni nazw z {{Code|nazwa jednostki 2}}: <syntaxhighlight lang="mediawiki"> {{#invoke:Pudełko|Nazwa przestrzeni nazw dyskusji 2|numer jednostki=2}} </syntaxhighlight> Na podstawie powyższego przykładu otrzymamy wynik o schemacie, nie wyniku, bo tam nie ma zmiennej {{Code|nazwa przestrzeni nazw 1}}, ale jest {{Code|nazwa przestrzeni nazw i}}: <syntaxhighlight lang="mediawiki"> <!-- Ale nie "nazwa przestrzeni nazw 2", bo jej nie ma, ale za to istnieje "nazwa przestrzeni nazw i"; --> <!-- nazwa przestrzeni nazw 2=nazwa przestrzeni nazw i="", a nazwa jednostki 2="Wikibooks:Strona"; --> <!-- Czyli wynik: --> Dyskusja Wikibooks <!-- Widzimy, że wygenerowała się nazwa przestrzeni nazw, którą jest przestrzeń nieprogramowa, ale dyskusji projektu, wychodząca z nazwy jednostek w tym przypadku z "nazwa jednostki 2"; --> </syntaxhighlight> Nie jest brana w tym powyższym przykładzie zmienna {{Code|nazwa przestrzeni nazw}}, bo jej nie ma, ale za to jest {{Code|nazwa przestrzeni nazw i}}, bo ona występuje jako parametr domyślny ogólny dla parametrów numerkowych. Tytaj jest używana jest zmienna {{Code|nazwa jednostki 2}} do wygenerowania ostatecznego wyniku, bo jak można zauważyć, parametry przestrzenne wskazują na przestrzeń główną, a nazwy jednostek już nie. Przykłady w wikikodzie: * {{Code|{{m|Pudełko|Nazwa przestrzeni nazw dyskusji 2|numer jednostki{{=}}2}}}} → {{Tt|{{#invoke:Pudełko|Nazwa przestrzeni nazw dyskusji 2|numer jednostki=2}}}} * {{Code|{{m|Pudełko|Nazwa przestrzeni nazw dyskusji 2|Szablon|nazwa przestrzeni nazw i{{=}}Moja przestrzeń|numer jednostki{{=}}2}}}} → {{Tt|{{#invoke:Pudełko|Nazwa przestrzeni nazw dyskusji 2|Szablon|nazwa przestrzeni nazw i=Moja przestrzeń|numer jednostki=2}}}} * {{Code|{{m|Pudełko|Nazwa przestrzeni nazw dyskusji 2|nazwa przestrzeni nazw 2{{=}}|nazwa jednostki 2{{=}}Szablon:Strona|numer jednostki{{=}}2}}}} → {{Tt|{{#invoke:Pudełko|Nazwa przestrzeni nazw dyskusji 2|nazwa przestrzeni nazw 2=|nazwa jednostki 2=Szablon:Strona|numer jednostki=2}}}} * {{Code|{{m|Pudełko|Nazwa przestrzeni nazw dyskusji 2|nazwa przestrzeni nazw i{{=}}|nazwa jednostki 2{{=}}Szablon:Strona|numer jednostki{{=}}2}}}} → {{Tt|{{#invoke:Pudełko|Nazwa przestrzeni nazw dyskusji 2|nazwa przestrzeni nazw i=|nazwa jednostki 2=Szablon:Strona|numer jednostki=2}}}} * {{Code|{{m|Pudełko|Nazwa przestrzeni nazw dyskusji 2|Szablon|nazwa przestrzeni nazw{{=}}|nazwa jednostki 2{{=}}Wikibooks:Strona|numer jednostki{{=}}2}}}} → {{Tt|{{#invoke:Pudełko|Nazwa przestrzeni nazw dyskusji 2|Szablon|nazwa przestrzeni nazw=|nazwa jednostki 2=Dyskusja Wikibooks:Strona|numer jednostki=2}}}} Powyżej dla przykładu podano parametry nie w rodzicu w szablonie, tylko w dziecku, jeśli chodzi o parametry nazw przestrzeni nazw i nazw jednostek, ale ich się za to nie powinno podawać w tych ramach, tylko w szablonach, w których wywoływane są te ramki pudełek {{Code|{{m|Pudełko}}}}, ale tak tutaj tak zrobiono by było najłatwiej sprawdzić działanie tego typu funkcji. Analogicznie możemy podawać parametry typu jednostki, np.: wywołaniu modułowym {{Code|{{m|Pudełko|Nazwa przestrzeni nazw dyskusji 2|typ jednostki 2{{=}}Podręcznik|nazwa jednostki 2{{=}}Szablon:Strona|numer jednostki{{=}}2}}}} (ale wtedy jest brana przestrzeń nazw z nazwy jednostki), ale o tym więcej w rozdziałach {{Code|{{sr|# p["Dyskusyjny typ jednostki 2"](frame,i)|p=Pudełko}}}} w „{{sr|#Funkcje typu jednostki|p=Pudełko}}”, on definiuje przestrzenie dyskusji, ale można użyć parametru dyskusji typu jednostki z obojętnie jaką wartością niepustą, czy pustą, czy nawet jej nie podamy, wtedy wyświetli się nazwa przestrzeni nazw dyskusji. Jeżeli typ jednostki wskazuje na przestrzeń nazw główną, wtedy się liczą parametry nazw jednostek. Również parametry typu jednostki nie powinno się podawać w dziecku w ramce, tylko w rodzicu w szablonie jako parametry, w którym ta ramka jest wywoływana, ale tutaj podano jedynie dla przykładu, jak najłatwiej sprawdzić działanie tych parametrów tej funkcji. Najpierw w funkcji nagłówku brane są parametry nazw przestrzeni nazw, a jeżeli ich nie ma, to parametry typu jednostki, a jeżeli nie ma lub parametry przestrzenne wskazują na przestrzeń główną, i nie ma nazwy jednostki, to generowane są nazwy tej funkcji na podstawie aktualnej strony. == Funkcje pełnych nazw jednostki == === {{Code|p["Pełna nazwa dyskusji jednostki"](frame,i)}} === === {{Code|p["Pełna nazwa przedmiotowa jednostki"](frame,i)}} === === {{Code|p["Pełna nazwa jednostki"](frame,i)}} === == Funkcje pełnych nazw jednostki drugiej wersji == === {{Code|p["Pełna nazwa dyskusji jednostki 2"](frame,i)}} === === {{Code|p["Pełna nazwa przedmiotowa jednostki 2"](frame,i)}} === === {{Code|p["Pełna nazwa jednostki 2"](frame,i)}} === == Funkcje pełnych nazw jednostki trzeciej wersji == === {{Code|p["Pełna nazwa dyskusji jednostki 3"](frame,i)}} === === {{Code|p["Pełna nazwa przedmiotowa jednostki 3"](frame,i)}} === === {{Code|p["Pełna nazwa jednostki 3"](frame,i)}} === == Funkcje nazw jednostki == === {{Code|p["Nazwa jednostki"](frame,i)}} === == Funkcje nazw jednostki drugiej wersji == === {{Code|p["Nazwa jednostki 2"](frame,i)}} === === {{Code|p["Nazwa przedmiotowa jednostki 2"](frame,i)}} === === {{Code|p["Nazwa dyskusji jednostki 2"](frame,i)}} === == Funkcje nazw przestrzeni nazw trzeciej wersji == === {{Code|p["Nazwa przestrzeni nazw 3"](frame,i)}} === Funkcja pisze nazwę przestrzeni nazw, niezależnie, czy to jest przedmiotowa, czy dyskusji, według, i nie zawsze tylko, podanej w zmiennej {{Code|nazwa przestrzeni nazw}} dla pozycja bazowej w podanych parametrach szablonu rodzicu ramki dziecka, lub dla innej pozycji należy parametr podawać w formie {{Code|nazwa przestrzeni nazw 1}}, {{Code|Nazwa przestrzeni nazw 3}}, {{Code|nazwa przestrzeni nazw 3}},..., lub te parametry można podać w postaci ogólnej {{Code|nazwa przestrzeni nazw i}}. W tej funkcji trzeba też podawać parametry nazwy jednostek {{Code|nazwa jednostki}}, {{Code|nazwa jednostki 1}}, {{Code|nazwa jednostki 2}}, {{Code|nazwa jednostki 3}},... Parametry podaje się w parametrach rodzica wywołania tej funkcji {{Code|{{m|Pudełko|Nazwa przestrzeni nazw 3}}}} (ale ich nie trzeba podawać w dziecku, ale można) i w parametrach dziecka, jeśli chodzi o zmienną {{Code|numer jednostki}}, czyli np.: {{Code|{{m|Pudełko|Nazwa przestrzeni nazw 3|numer jednostki{{=}}<jakaś liczba całkowita dodatnia>}}}}. Te parametry przestrzenne zamiast w rodzicu w szablonie można podać w ramce dziecka, wtedy parametry dziecka mają pierwszeństwo. Przestrzeń nazw z parametrów nazw przestrzennych bazowych (bez numerka) może odpowiadać wartości przestrzeni głównej, to wtedy odpowiednia przestrzeń nazw z parametru nazwy jednostki się nie liczy w tej funkcji, aby się liczyła należy użyć funkcji {{Code|{{sr|#p["Nazwa przestrzeni nazw"](frame,...)|p=Pudełko}}}}. Przestrzeń nazw z parametrów nazw przestrzennych numerkowych może odpowiadać wartości przestrzeni głównej, to wtedy odpowiednia przestrzeń nazw z parametru nazwy jednostki się liczy w tej funkcji, wtedy jest liczona nazwa przestrzeni nazw z tego parametru. Gdy parametry przestrzenne lub typ jednostki w drugim podejściu nie wskazują na przestrzeń główną, to wtedy działanie tej funkcji jest podobne do {{Code|{{sr|#p["Nazwa przestrzeni nazw 2"](frame,...)|p=Pudełko}}}}. Definicja skrótowa funkcji: <syntaxhighlight lang="lua"> p["Nazwa przestrzeni nazw 3"]=function(frame,czy_uwzglednic_alternatywna_nazwe,i)...end; </syntaxhighlight> Wtedy ciało funkcji tej, czyli jego definicja w środku, jest: <syntaxhighlight lang="lua"> -- Jest liczony numer parametru nazwy przestrzeni nazw, domyslnie chodzi tu o numer bazowy parametrów przestrzennych; local numer_jednostki=i or frame.args["numer jednostki"]; local liczba_numeru_jednostki=((numer_jednostki)and(tonumber(numer_jednostki)) or 0); local pudelko_pomocne_modul=require("Module:Pudełko/Pomocne"); -- Liczy nazwę przestrzeni nazw dyskusji na podstawie podanych parametrów; return pudelko_pomocne_modul.Uzyskanie_nazw_jednostki(frame,0,liczba_numeru_jednostki,nil,2); </syntaxhighlight> Parametry funkcji: * {{Code|frame}} - tablica ramki tablicy transportu, * {{Code|czy_uwzglednic_alternatywna_nazwe}} - czy ma uwzględniać nazwę przestrzeni nazw domyślną szablonu, dostępne wartości: {{Code|false}}, w której nazwa domyślna nie jest uwzględniana wtedy, oraz {{Code|nil}} i {{Code|true}}, które oznaczają to samo, w tym jeżeli ona jest uwzględniana, wtedy jest brany parametr pierwszy dziecka, który musi istnieć przy takiej wartości tego parametru, tzn. {{Code|{{m|Pudełko|Nazwa przestrzeni nazw 3|Szablon}}}}, a nazwa uzyskana nazwy przestrzeni nazw jest w takim przypadku błędna, a jeżeli nazwa domyślna jest błędna, czyli {{Code|{{m|Pudełko|Nazwa przestrzeni nazw 3|Moja przestrzeń}}}}, wtedy funkcja zwraca stan błędu {{Code|(błąd)}}. * {{Code|i}} - numer zmiennej nazwy przestrzeni nazw. Funkcja wykorzystuje {{Code|{{sr|#p.Uzyskanie_nazw_jednostki(frame,...)|p=Pudełko/Pomocne}}}} do wyznaczania ogólnego nazwy przestrzeni nazw dla pozycji bazowej i numerkowej, tzn. dla pozycji: jeden, dwa, trzy,..., itd, i ich ogólnej. Parametr ramki tablicy transportu rodzica szablonu: * {{Code|nazwa przestrzeni nazw}}, {{Code|nazwa przestrzeni nazw 1}}, {{Code|Nazwa przestrzeni nazw 3}}, {{Code|nazwa przestrzeni nazw 3}},..., {{Code|nazwa przestrzeni nazw i}} - nazwy przestrzeni nazw dla pozycji bazowej oraz zwykłej i ogólnej numerkowej, * {{Code|nazwa jednostki}}, {{Code|nazwa jednostki 1}}, {{Code|nazwa jednostki 2}}, {{Code|nazwa jednostki 3}},... - nazwy jednostek dla pozycji bazowej i numerkowej, * {{Code|typ jednostki}}, {{Code|typ jednostki 1}}, {{Code|typ jednostki 2}}, {{Code|typ jednostki 3}},..., {{Code|typ jednostki i}} - typy jednostek, którym odpowiadają pewne przestrzenie przedmiotowe, dla pozycji bazowej, numerkowej i ogólnej, ** {{Code|dyskusja typu jednostki}}, {{Code|dyskusja typu jednostki 1}}, {{Code|dyskusja typ jednostki 2}}, {{Code|dyskusja typ jednostki 3}},..., {{Code|dyskusja typ jednostki i}} - czy dany typ jednostki ma przedstawiać, jeśli niepusta, przestrzeń dyskusji dla pozycji bazowej, numerkowej i ogólnej. Parametry ramki tablicy transportu dziecka: * Parametry dziecka są takie same jak rodzica dla funkcji pudełkowej plus tu wymienione, * {{Code|numer jednostki}} - jak parametr {{Code|i}} nie został ustawiony, to wtedy liczy się ta zmienna. Przykłady: <syntaxhighlight lang="mediawiki"> {{Nazwa szablonu|nazwa przestrzeni nazw=Wikibooks|nazwa przestrzeni nazw=|nazwa przestrzeni nazw i=|nazwajednostki=Szablon:Strona|nazwa jednostki 2=Wikibooks:Strona}} <hr /> {{Nazwa szablonu|nazwa przestrzeni nazw=Wikibooks|nazwa przestrzeni nazw 1=Szablon|nazwa przestrzeni nazw i=|nazwa jednostki 2=Wikibooks:Strona}} </syntaxhighlight> W dziecku powiedzmy jest wywołanie, i szukamy nazwy przestrzeni nazw o numerze dwa, która została podana, ale istnieje za to jej wersji ogólna {{Code|nazwa przestrzeni nazw i}} i domyślna {{Code|nazwa przestrzeni nazw}}, ale wtedy dla tego numerkowego liczy się to ogólne z {{Code| i}}, a ponieważ ta nazwa jest pusta, więc będziemy liczyli nazwę przestrzeni nazw z {{Code|nazwa jednostki 2}}: <syntaxhighlight lang="mediawiki"> {{#invoke:Pudełko|Nazwa przestrzeni nazw 3}} <hr /> {{#invoke:Pudełko|Nazwa przestrzeni nazw 3|numer jednostki=2}} </syntaxhighlight> Na podstawie powyższego przykładu otrzymamy wynik o schemacie, nie wyniku, bo tam nie ma zmiennej {{Code|nazwa przestrzeni nazw 1}}, ale jest {{Code|nazwa przestrzeni nazw i}}: <syntaxhighlight lang="mediawiki"> <!-- Ale nie "nazwa przestrzeni nazw""; --> <!-- nazwa przestrzeni nazw=""; --> <!-- Czyli wynik: --> <!-- wynik pusty --> <!-- Widzimy, że wygenerowała się nazwa przestrzeni nazw, którą jest przestrzeń nazw główna, jest ciągiem pustym: ""; --> <hr /> <!-- Ale nie "Nazwa przestrzeni nazw 2", bo jej nie ma, ale za to istnieje "nazwa przestrzeni nazw i"; --> <!-- nazwa przestrzeni nazw 2=nazwa przestrzeni nazw i="", a nazwa jednostki 2="Wikibooks:Strona"; --> <!-- Czyli wynik: --> Wikibooks <!-- Widzimy, że wygenerowała się nazwa przestrzeni nazw, którą jest przestrzeń nieprogramowa, ale projektu, wychodząca z nazwy jednostek w tym przypadku z "nazwa jednostki 2"; --> </syntaxhighlight> Dla parametrów bazowych nienumerkowych istnieje zmienna {{Code|nazwa przestrzeni nazw}}, której waartość jest pusta,którajest zwracana przez tą funkcję. {{Hr}} Dla parametrów numerkowych nie jest brana w tym powyższym przykładzie zmienna {{Code|nazwa przestrzeni nazw}}, bo jej nie ma, ale za to jest {{Code|nazwa przestrzeni nazw i}}, bo ona występuje jako parametr domyślny ogólny dla parametrów numerkowych. Tytaj jest używana jest zmienna {{Code|nazwa jednostki 2}} do wygenerowania ostatecznego wyniku, bo jak można zauważyć, parametry przestrzenne wskazują na przestrzeń główną, a nazwy jednostek już nie. Przykłady w wikikodzie: * {{Code|{{m|Pudełko|Nazwa przestrzeni nazw 3|nazwa przestrzeni nazw{{=}}|nazwa jednostki{{=}}Wikibooks:Strona}}}} → {{Tt|{{#invoke:Pudełko|Nazwa przestrzeni nazw 3|nazwa przestrzeni nazw=|nazwa jednostki=Wikibooks:Szablon}}}} * {{Code|{{m|Pudełko|Nazwa przestrzeni nazw 3|nazwa przestrzeni nazw 2{{=}}|nazwa jednostki 2{{=}}Wikibooks:Strona|numer jednostki{{=}}2}}}} → {{Tt|{{#invoke:Pudełko|Nazwa przestrzeni nazw 3|nazwa przestrzeni nazw 2=|nazwa jednostki 2=Wikibooks:Szablon|numer jednostki=2}}}} Powyżej dla przykładu podano parametry nie w rodzicu w szablonie, tylko w dziecku, jeśli chodzi o parametry nazw przestrzeni nazw i nazw jednostek, ale ich się za to nie powinno podawać w tych ramach, tylko w szablonach, w których wywoływane są te ramki pudełek {{Code|{{m|Pudełko}}}}, ale tak tutaj tak zrobiono by było najłatwiej sprawdzić działanie tego typu funkcji. Analogicznie możemy podawać parametry typu jednostki, np.: wywołaniu modułowym {{Code|{{m|Pudełko|Nazwa przestrzeni nazw 3|typ jednostki 2{{=}}Podręcznik|nazwa jednostki 2{{=}}Szablon:Strona|numer jednostki{{=}}2}}}} (ale wtedy jest brana przestrzeń nazw z nazwy jednostki), ale o tym więcej w rozdziałach {{Code|{{sr|#p["Typ jednostki 3"](frame,i)|p=Pudełko}}}} w „{{sr|#Funkcje typu jednostki|p=Pudełko}}”, on definiuje przestrzenie przedmiotowe, ale można użyć parametru dyskusji typu jednostki z wartością niepustą, wtedy wyświetli się nazwa przestrzeni nazw dyskusji. Jeżeli typ jednostki bazowy wskazuje na przestrzeń nazw główną, wtedy się nie liczą parametry nazw jednostek, a na numerkowy, wtedy się liczy. Również parametry typu jednostki nie powinno się podawać w dziecku w ramce, tylko w rodzicu w szablonie jako parametry, w którym ta ramka jest wywoływana, ale tutaj podano jedynie dla przykładu, jak najłatwiej sprawdzić działanie tych parametrów tej funkcji. Najpierw w funkcji nagłówku brane są parametry nazw przestrzeni nazw, a jeżeli ich nie ma, to parametry typu jednostki, a jeżeli nie ma lub parametry przestrzenne wskazują na przestrzeń główną, i nie ma nazwy jednostki, to generowane są nazwy tej funkcji na podstawie aktualnej strony. === {{Code|p["Nazwa przedmiotowej przestrzeni nazw 3"](frame,i)}} === Funkcja pisze przedmiotową nazwę przestrzeni nazw jakikolwiek nazwy przestrzeni nazw (tzn. nazwę przedmiotową nazwy przestrzenie nazw, czyli nie dyskusji, zamieniana jest na nią samą, czyli identyfikator przestrzeni się nie zmienia, a dyskusji, nie przedmiotową, przekształca się na przedmiotową jej odpowiadającą, czyli w tym przypadku identyfikator przestrzeni zmniejsza się o numer mniej), według podanej w zmiennej {{Code|nazwa przestrzeni nazw}} dla pozycja bazowej w podanych parametrach szablonu rodzicu ramki dziecka, lub dla innej pozycji należy parametr podawać w formie {{Code|nazwa przestrzeni nazw 1}}, {{Code|nazwa przestrzeni nazw 2}}, {{Code|nazwa przestrzeni nazw 3}},..., lub te parametry można podać w postaci ogólnej {{Code|nazwa przestrzeni nazw i}}. Parametry podaje się w parametrach rodzica wywołania tej funkcji {{Code|{{m|Pudełko|Nazwa przedmiotowej przestrzeni nazw 3}}}} (ale ich nie trzeba podawać w dziecku, ale można) i w parametrach dziecka, jeśli chodzi o zmienną {{Code|numer jednostki}}, czyli np.: {{Code|{{m|Pudełko|Nazwa przedmiotowej przestrzeni nazw 3|numer jednostki{{=}}<jakaś liczba całkowita dodatnia>}}}}. Te parametry przestrzenne zamiast w rodzicu w szablonie można podać w ramce dziecka, wtedy parametry dziecka mają pierwszeństwo. Parametry przestrzenne mogą mogą być podane w postaci przestrzeni przedmiotowej lub dyskusji, ale ta funkcja zawsze ją zamienia na przedmiotową. Przestrzeń nazw z parametrów nazw przestrzennych bazowych (bez numerka) może odpowiadać wartości przestrzeni głównej, to wtedy odpowiednia przestrzeń nazw z parametru nazwy jednostki się nie liczy w tej funkcji, aby się liczyła należy użyć funkcji {{Code|{{sr|#p["Nazwa przedmiotowej przestrzeni nazw"](frame,...)|p=Pudełko}}}}. Przestrzeń nazw z parametrów nazw przestrzennych numerkowych może odpowiadać wartości przestrzeni głównej, to wtedy odpowiednia przestrzeń nazw z parametru nazwy jednostki się liczy w tej funkcji, wtedy jest liczona nazwa przestrzeni nazw z tego parametru. Gdy parametry przestrzenne lub typ jednostki w drugim podejściu nie wskazują na przestrzeń główną, to wtedy działanie tej funkcji jest podobne do {{Code|{{sr|#p["Nazwa przedmiotowej przestrzeni nazw 2"](frame,...)|p=Pudełko}}}}. Definicja skrótowa funkcji: <syntaxhighlight lang="lua"> p["Nazwa przedmiotowej przestrzeni nazw 3"]=function(frame,czy_uwzglednic_alternatywna_nazwe,i)...end; </syntaxhighlight> Wtedy ciało funkcji tej, czyli jego definicja w środku, jest: <syntaxhighlight lang="lua"> -- Jest liczony numer parametru nazwy przestrzeni nazw, domyslnie chodzi tu o numer bazowy parametrów przestrzennych; local numer_jednostki=i or frame.args["numer jednostki"]; local liczba_numeru_jednostki=((numer_jednostki)and(tonumber(numer_jednostki)) or 0); local pudelko_pomocne_modul=require("Module:Pudełko/Pomocne"); -- Liczy nazwę przestrzeni nazw przedmiotową na podstawie podanych parametrów; return pudelko_pomocne_modul.Uzyskanie_nazw_jednostki(frame,1,liczba_numeru_jednostki,nil,1); </syntaxhighlight> Parametry funkcji: * {{Code|frame}} - tablica ramki tablicy transportu, * {{Code|czy_uwzglednic_alternatywna_nazwe}} - czy ma uwzględniać nazwę przestrzeni nazw domyślną szablonu, dostępne wartości: {{Code|false}}, w której nazwa domyślna nie jest uwzględniana wtedy, oraz {{Code|nil}} i {{Code|true}}, które oznaczają to samo, w tym jeżeli ona jest uwzględniana, wtedy jest brany parametr pierwszy dziecka, który musi istnieć przy takiej wartości tego parametru, tzn. {{Code|{{m|Pudełko|Nazwa przedmiotowej przestrzeni nazw 3|Dyskusja szablonu}}}} - ta nazwa domyślna zostanie zamieniona na przedmiotową, a jak ona by była przedmiotowa, to żadnej zamiany by nie było, a nazwa uzyskana z nazwy przestrzeni nazw z parametrów przestrzennych jest w takim przypadku błędna, to w takim razie brany jest ten parametr, a jeżeli ta nazwa domyślna jest błędna, czyli {{Code|{{m|Pudełko|Nazwa przedmiotowej przestrzeni nazw 3|Moja przestrzeń}}}}, wtedy funkcja zwraca stan błędu {{Code|(błąd)}}. * {{Code|i}} - numer zmiennej nazwy przestrzeni nazw. Funkcja wykorzystuje {{Code|{{sr|#p.Uzyskanie_nazw_jednostki(frame,...)|p=Pudełko/Pomocne}}}} do wyznaczania ogólnego nazwy przestrzeni nazw dla pozycji bazowej i numerkowej, tzn. dla pozycji: jeden, dwa, trzy,..., itd, i ich ogólnej. Parametr ramki tablicy transportu rodzica szablonu: * {{Code|nazwa przestrzeni nazw}}, {{Code|nazwa przestrzeni nazw 1}}, {{Code|nazwa przestrzeni nazw 2}}, {{Code|nazwa przestrzeni nazw 3}},..., {{Code|nazwa przestrzeni nazw i}} - nazwy przestrzeni nazw dla pozycji bazowej oraz zwykłej i ogólnej numerkowej, * {{Code|typ jednostki}}, {{Code|typ jednostki 1}}, {{Code|typ jednostki 2}}, {{Code|typ jednostki 3}},..., {{Code|typ jednostki i}} - typy jednostek, którym odpowiadają pewne przestrzenie przedmiotowe, dla pozycji bazowej, numerkowej i ogólnej. Parametry ramki tablicy transportu dziecka: * Parametry dziecka są takie same jak rodzica dla funkcji pudełkowej plus tu wymienione, * {{Code|numer jednostki}} - jak parametr {{Code|i}} nie został ustawiony, to wtedy liczy się ta zmienna. Przykłady: <syntaxhighlight lang="mediawiki"> {{Nazwa szablonu|nazwa przestrzeni nazw=Wikibooks|nazwa przestrzeni nazw=|nazwa przestrzeni nazw i=|nazwajednostki=Szablon:Strona|nazwa jednostki=Dyskusja Wikibooks:Strona}} <hr /> {{Nazwa szablonu|nazwa przestrzeni nazw=Wikibooks|nazwa przestrzeni nazw 1=Szablon|nazwa przestrzeni nazw i=|nazwa jednostki 2=Dyskusja Wikibooks:Strona}} </syntaxhighlight> W dziecku powiedzmy jest wywołanie, i szukamy nazwy przestrzeni nazw o numerze dwa, która nie została podana, ale istnieje za to jej wersji ogólna {{Code|nazwa przestrzeni nazw i}} i domyślna {{Code|nazwa przestrzeni nazw}}: <syntaxhighlight lang="mediawiki"> {{#invoke:Pudełko|Nazwa przedmiotowej przestrzeni nazw 3|numer jednostki=1}} </syntaxhighlight> Na podstawie powyższego przykładu otrzymamy wynik o schemacie, nie wyniku, bo tam nie ma zmiennej {{Code|nazwa przestrzeni nazw 1}}, ale jest {{Code|nazwa przestrzeni nazw i}}: <syntaxhighlight lang="mediawiki"> <!-- Ale nie "nazwa przestrzeni nazw""; --> <!-- nazwa przestrzeni nazw=""; --> <!-- Czyli wynik: --> <!-- wynik pusty --> <!-- Widzimy, że wygenerowała się nazwa przestrzeni nazw, którą jest przestrzeń nazw główna, jest ciągiem pustym: ""; --> <hr /> <!-- Ale nie "Nazwa przestrzeni nazw 2", bo jej nie ma, ale za to istnieje "nazwa przestrzeni nazw i"; --> <!-- nazwa przestrzeni nazw 2=nazwa przestrzeni nazw i="", a nazwa jednostki 2="Dyskusja Wikibooks:Strona"; --> <!-- Czyli wynik: --> Wikibooks <!-- Widzimy, że wygenerowała się nazwa przestrzeni nazw, którą jest przestrzeń nieprogramowa, ale projektu, wychodząca z nazwy jednostek w tym przypadku z "nazwa jednostki 2"; --> </syntaxhighlight> Nie jest brana w tym powyższym przykładzie zmienna {{Code|nazwa przestrzeni nazw}}, bo jej nie ma, ale za to jest {{Code|nazwa przestrzeni nazw i}}, bo ona występuje jako parametr domyślny ogólny dla parametrów numerkowych. Przykłady w wikikodzie: * {{Code|{{m|Pudełko|Nazwa przestrzeni nazw 3|nazwa przestrzeni nazw{{=}}|nazwa jednostki{{=}}Dyskusja Wikibooks:Strona}}}} → {{Tt|{{#invoke:Pudełko|Nazwa przestrzeni nazw 3|nazwa przestrzeni nazw=|nazwa jednostki=Dyskusja Wikibooks:Szablon}}}} * {{Code|{{m|Pudełko|Nazwa przestrzeni nazw 3|nazwa przestrzeni nazw 2{{=}}|nazwa jednostki 2{{=}}Dyskusja Wikibooks:Strona|numer jednostki{{=}}2}}}} → {{Tt|{{#invoke:Pudełko|Nazwa przestrzeni nazw 3|nazwa przestrzeni nazw 2=|nazwa jednostki 2=Dyskusja Wikibooks:Szablon|numer jednostki=2}}}} Powyżej dla przykładu podano parametry nie w rodzicu w szablonie, tylko w dziecku, jeśli chodzi o parametry nazw przestrzeni nazw, ale ich się za to nie powinno podawać w tych ramach, tylko w szablonach, w których wywoływane są te ramki pudełek {{Code|{{m|Pudełko}}}}, ale tak tutaj tak zrobiono by było najłatwiej sprawdzić działanie tego typu funkcji. Analogicznie możemy podawać parametry typu jednostki, np.: wywołaniu modułowym {{Code|{{m|Pudełko|Nazwa przedmiotowej przestrzeni nazw 3|typ jednostki 2{{=}}strona szablonu|numer jednostki{{=}}2}}}}, ale o tym więcej w rozdziałach {{Code|{{sr|# p["Przedmiotowy typ jednostki 3"](frame,i)|p=Pudełko}}}} w „{{sr|#Funkcje typu jednostki|p=Pudełko}}”, ale wtedy ta sama nazwa przestrzeni nazw reprezentowana przez {{Parametr|typ jednostki 2|strona szablonu}}, jest zamieniana na to samo, lepiej jest tutaj używać parametrów przestrzennych nazw niż typu jednostki, bo typ jednostki ma taką samą wartość dla przestrzeni przedmiotowej, co dyskusji. Tutaj parametr dyskusji typu jednostki bazowy i numerkowy ogólny, czy szczegółowy, nie gra roli, bo nawet, gdy wygenerujemy nazwę przestrzeni dyskusji za pomoca tego parametru, to i tak otrzymamy na samym końcu jego nazwę przedmiotową. Również parametry typu jednostki nie powinno się podawać w dziecku w ramce, tylko w rodzicu w szablonie jako parametry, w którym ta ramka jest wywoływana, ale tutaj podano jedynie dla przykładu, jak najłatwiej sprawdzić działanie tych parametrów tej funkcji. Najpierw w funkcji nagłówku brane są parametry nazw przestrzeni nazw, a jeżeli ich nie ma, to parametry typu jednostki, a jeżeli nie ma, to generowane są nazwy na podstawie aktualnego modułu. === {{Code|p["Nazwa przestrzeni nazw dyskusji 3"](frame,i)}} === == Funkcje nazw jednostki trzeciej wersji == === {{Code|p["Nazwa jednostki 3"](frame,i)}} === === {{Code|p["Nazwa przedmiotowa jednostki 3"](frame,i)}} === === {{Code|p["Nazwa dyskusji jednostki 3"](frame,i)}} === == Funkcje typu jednostki == === {{Code|p["Typ jednostki"](frame,i)}} === === {{Code|p["Typ jednostki 2"](frame,i)}} === === {{Code|p["Typ jednostki 3"](frame,i)}} === === Funkcje typu jednostki przedmiotowe === ==== {{Code|p["Przedmiotowy typ jednostki"](frame,i)}} ==== ==== {{Code|p["Przedmiotowy typ jednostki 2"](frame,i)}} ==== ==== {{Code|p["Przedmiotowy typ jednostki 3"](frame,i)}} ==== === Fukcje typu jednostki dyskusji === ==== {{Code|p["Dyskusyjny typ jednostki"](frame,i)}} ==== ==== {{Code|p["Dyskusyjny typ jednostki 2"](frame,i)}} ==== ==== {{Code|p["Dyskusyjny typ jednostki 3"](frame,i)}} ==== == Funkcje chech pudełka == === {{Code|p["Cecha pudełka"](frame)}} === === {{Code|p["Przedmiotowa cecha pudełka"](frame)}} === === {{Code|p["Dyskusyjna cecha pudełka"](frame)}} === == Fukcje ogólnego pudełka == === {{Code|p["Ogólne pudełko"](frame)}} === == Funkcje ogólne == === {{Code|p["Tekst pudełka"](frame)}} === == Funkcje błędów pudełka == === {{Code|p["Błędy pudełka"](frame)}} === === {{Code|p["Przedmiotowe błędy pudełka"](frame)}} === === {{Code|p["Dyskusyjne błędy pudełka"](frame)}} === == Funkcje nazw stron == === {{Code|p["Nazwa strony głównej projektu"](frame,i)}} === === {{Code|p["Nazwa strony głównej dla dzieci projektu"](frame,i)}} === == Funkcje kodów == === {{Code|p["Kod języka"](frame,i)}} === === {{Code|p["Kod projektu"](frame,i)}} === === {{Code|p["Klucz projektu"](frame,i)}} === == Funkcje wiki == === {{Code|p["Inny niż język bieżący wiki"](frame)}} === === {{Code|p["Inne niż lokalne wiki"](frame)}} === === {{Code|p["Inne niż bieżące wiki"](frame)}} === == Funkcje typów parametrów, czy podane je == === {{Code|p["Podano parametry nienazwane"](frame)}} === === {{Code|p["Podano parametry numerowane"](frame)}} === === {{Code|p["Podano parametry nazwane"](frame)}} === == Funkcje kodów tego projektu == === {{Code|p["Kod projektu tego projektu"](frame)}} === === {{Code|p["Kod języka tego projektu"](frame)}} === === {{Code|p["Klucz projektu tego projektu"](frame)}} === == Funkcje stron == === {{Code|p["Strona główna tego projektu"](frame)}} === === {{Code|p["Strona główna dla dzieci tego projektu"](frame)}} === == Funkcje nazw stron drugiej wersji == === {{Code|p["Nazwa strony głównej dla dzieci projektu 2"](frame)}} === === {{Code| p["Nazwa strony głównej projektu 2"](frame)}} === {{BrClear}} <noinclude><!-- -->{{ProstaStronaKoniec}}<!-- -->{{Kategoria|Opisy funkcji, w Lua w Scribunto, w modułach}}<!-- --></noinclude> gyztfewgx1iis110pq7ltpjaechk6l7 540418 540417 2026-04-23T19:48:50Z Persino 2851 /* {{Code|p["Nazwa przedmiotowej przestrzeni nazw 3"](frame,i)}} */ 540418 wikitext text/x-wiki <noinclude>{{ProstaStronaStart | nagłówek = {{Podrozdział|{{ld2|Pudełko}}|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 pudelko_modul=require("Module:Pudełko"); </syntaxhighlight> dzięki, któremu można wypisywać funkcje należącego do niego. Posługuje się na parametrach pudełkowych {{Parametr|nazwa przestrzeni nazw}} (czy też bez numerka {{Parametr|nazwa przestrzeni nazw i}} dla tego numerowanego) lub te z numerkiem po jednej spacji w nich (ale nie dla tego z końcówką {{Code| i}}) mogą zostać użyte jako parametry szablonu. Moduł {{Code|{{ld2|Pudełko}}}} przedstawia funkcje nazw w oparciu o funkcje nazw {{Code|{{ld2|Nazwy}}}}, generuje on nazwy za pomocą parametrów pudełkowych podanych poniżej. Parametr {{Parametr|nazwa jednostki}} (lub parametr {{Parametr|cel}} dla numerka tego pierwszego, tego alternatywnego), lub te z numerkiem po jednej spacji w nazwie parametru, albo numerowane numerkami {{Code|1}}, {{Code|2}},..., mogą zostać użyte jako parametry szablonu. Parametry określające rodzaj jednostki {{Parametr|typ jednostki}} z {{Parametr|dyskusja typu jednostki}}, itp. w wersjach z numerkiem po jednej spacji w nich mogą zostać użyte jako parametry szablonu. A te tymi numerowanymi liczbami naturalnymi {{Tt|nazwy jednostki}} od jedynki wzwyż poprzez szablon, w którym są one użyte, one też mogą być użyte z dwukropkiem, te numerowane, na samym początku nazwy, wtedy one są traktowane jako pełne nazwy strony, i wtedy one nie zostaną z interpretowane, że do nich trzeba użyć parametr odpowiedni z nazwą przetrzeni nazw z tego numerowanego, czy ogólny, aby utworzyć znów inną pełną nazwę strony dla tego numerka. Zestawienie: * {{Code|nazwa przestrzeni nazw}} i {{Code|nazwa przestrzeni nazw i}} (ogólna nazwa przestrzeni nazw dla wszystkich numerków, i tych numerowanych jednostek) - i to pierwsze z numerkiem, tzn. {{Code|nazwa przestrzeni nazw 1}}, {{Code|nazwa przestrzeni nazw 2}}, ..., * {{Code|nazwa jednostki}} - i te z numerkiem: {{Code|nazwa jednostki 1}}, {{Code|nazwa jednostki 2}}, ..., lub gdy jest zamiast tego parametrem numerowany, {{Code|1}}, {{Code|2}},..., który dla tego pierwszego może być uznany jako: {{Code|cel}} {{=}} {{Code|1}}, * {{Code|typ jednostki}} (parametr bazowy) i {{Code|typ jednostki i}} (parametr domyślny numerkowy) - i te z numerkiem: {{Code|typ jednostki 1}}, {{Code|typ jednostki 2}}, ..., tzn. gdy chcemy określić z jakim typem jednostki mamy do czynienia w zależności do jakiej przestrzeni nazw należy, a w danej, czy jest on np. programowy, czy tylko jest opisem, jak to bywa w szablonach {{Np|Template|link=tak}}, podobnie jest w przypadku {{Np|Module|link=tak}}, czy jak jest w innych przestrzeniach nazw, ** {{Code|dyskusja typu jednostki}} (parametr bazowy) i {{Code|dyskusja typu jednostki i}} (parametr domyślny numerkowy) - i te z numerkiem: {{Code|dyskusja typu jednostki 1}}, {{Code|dyskusja typu jednostki 2}}, ..., gdy chcemy określić wartością niepustą,że chodzi tutaj o typ jednostki. == {{Code|p.CzyNiepoprawnaNazwa(nazwa_jednostki)}} == Funkcja sprawdzajaca, czy jest poprawnie podana nazwa jednostki, czy ma poprawną nazwę. Znakami tymi, z których nie powinna składać się nazwa jest {{Code|<nowiki>{}<>|[]#\n</nowiki>}} i dodatkowo znak {{Code|&#127;}} (kod {{Code|{{Nowiki|&#127;}}}}). Też nie może składać się z trzech znaków tyldy, tzn. {{Code|<nowiki>~~~</nowiki>}}. Również w swojej budowie nie może składać się ze kodów {{Strong|HTML}} literowych o wzorze {{Code|{{Nowiki|&(%a+);}}}}. Natomiast może składać się z {{Code|{{Nowiki|&#(%d+);}}}} i {{Code|{{Nowiki|&#x(%x+);}}}}, ale w pierw te kody muszą być zamienione na normalne znaki. Skrótowa definicja funkcji: <syntaxhighlight lang="lua"> function p.CzyNiepoprawnaNazwa(nazwa_jednostki)...end; </syntaxhighlight> Wtedy ciało funkcji tej, czyli jego definicja w środku, jest: <syntaxhighlight lang="lua"> -- Moduł: "Moduł:Html/dane", służy do ładowania znaku o kodzie HTML "&#127;"; local html_dane_modul=mw.loadData("Module:Html/dane"); return mw.ustring.match(nazwa_jednostki,"[{}<>|%[%]#\n"..html_dane_modul.znak_127.."]+") or mw.ustring.match(nazwa_jednostki,"~~~") or mw.ustring.match(nazwa_jednostki,"&(%a+);"); </syntaxhighlight> Parametry: * {{Code|nazwa_jednostki}} - nazwa jednostki do sprawdzenia. Przykłady: <syntaxhighlight lang="lua"> local pudelko_modul=require("Module:Pudełko"); -- Podana przykładowa niepoprawna nazwa jedostki local nazwa_jednostki="Nazwa pliku [[Nazwa linku w pliku]]"; -- Fukcja zwróci wartość: local czy_poprawna_nazwa=true; local czy_poprawna_nazwa=pudelko_modul.CzyNiepoprawnaNazwa(nazwa_jednostki); </syntaxhighlight> == Funkcje nazw przestrzeni nazw == === {{Code|p["Nazwa przestrzeni nazw"](frame,...)}} === Funkcja pisze nazwę przestrzeni nazw, niezależnie, czy to jest przedmiotowa, czy dyskusji, według podanej w zmiennej {{Code|nazwa przestrzeni nazw}} dla pozycja bazowej w podanych parametrach szablonu rodzicu ramki dziecka, lub dla innej pozycji należy parametr podawać w formie {{Code|nazwa przestrzeni nazw 1}}, {{Code|nazwa przestrzeni nazw 2}}, {{Code|nazwa przestrzeni nazw 3}},..., lub te parametry można podać w postaci ogólnej {{Code|nazwa przestrzeni nazw i}}. Parametry podaje się w parametrach rodzica wywołania tej funkcji {{Code|{{m|Pudełko|Nazwa przestrzeni nazw}}}} (ale ich nie trzeba podawać w dziecku, ale można) i w parametrach dziecka, jeśli chodzi o zmienną {{Code|numer jednostki}}, czyli np.: {{Code|{{m|Pudełko|Nazwa przestrzeni nazw|numer jednostki{{=}}<jakaś liczba całkowita dodatnia>}}}}. Te parametry przestrzenne zamiast w rodzicu w szablonie można podać w ramce dziecka, wtedy parametry dziecka mają pierwszeństwo. Przestrzeń nazw z parametrów nazw przestrzennych może odpowiadać wartości przestrzeni głównej, to wtedy odpowiednia przestrzeń nazw z parametru nazwy jednostki się nie liczy w tej funkcji, aby się liczyła należy użyć funkcji {{Code|{{sr|#p["Nazwa przestrzeni nazw 2"](frame,...)|p=Pudełko}}}}. Definicja skrótowa funkcji: <syntaxhighlight lang="lua"> p["Nazwa przestrzeni nazw"]=function(frame,czy_uwzglednic_alternatywna_nazwe,i)...end; </syntaxhighlight> Wtedy ciało funkcji tej, czyli jego definicja w środku, jest: <syntaxhighlight lang="lua"> -- Jest liczony numer parametru nazwy przestrzeni nazw, domyslnie chodzi tu o numer bazowy parametrów przestrzennych; local numer_jednostki=i or frame.args["numer jednostki"]; local liczba_numer_jednostki=((numer_jednostki)and(tonumber(numer_jednostki))or 0); local pudelko_pomocne_modul=require("Module:Pudełko/Pomocne"); -- Liczy nazwę przestrzeni nazw na podstawie podanych parametrów; return pudelko_pomocne_modul.Nazwa_przestrzeni_nazw(frame,0, czy_uwzglednic_alternatywna_nazwe,liczba_numer_jednostki); </syntaxhighlight> Parametry funkcji: * {{Code|frame}} - tablica ramki tablicy transportu, * {{Code|czy_uwzglednic_alternatywna_nazwe}} - czy ma uwzględniać nazwę przestrzeni nazw domyślną szablonu, dostępne wartości: {{Code|false}}, w której nazwa domyślna nie jest uwzględniana wtedy, oraz {{Code|nil}} i {{Code|true}}, które oznaczają to samo, w tym jeżeli ona jest uwzględniana, wtedy jest brany parametr pierwszy dziecka, który musi istnieć przy takiej wartości tego parametru, tzn. {{Code|{{m|Pudełko|Nazwa przestrzeni nazw|Szablon}}}}, a nazwa uzyskana nazwy przestrzeni nazw jest w takim przypadku błędna, a jeżeli nazwa domyślna jest błędna, czyli {{Code|{{m|Pudełko|Nazwa przestrzeni nazw|Moja przestrzeń}}}}, wtedy funkcja zwraca stan błędu {{Code|(błąd)}}. * {{Code|i}} - numer zmiennej nazwy przestrzeni nazw. Funkcja wykorzystuje {{Code|{{sr|#p.Nazwa_przestrzeni_nazw(frame,...)|p=Pudełko/Pomocne}}}} do wyznaczania ogólnego nazwy przestrzeni nazw dla pozycji bazowej i numerkowej, tzn. dla pozycji: jeden, dwa, trzy,..., itd, i ich ogólnej. Parametr ramki tablicy transportu rodzica szablonu: * {{Code|nazwa przestrzeni nazw}}, {{Code|nazwa przestrzeni nazw 1}}, {{Code|nazwa przestrzeni nazw 2}}, {{Code|nazwa przestrzeni nazw 3}},..., {{Code|nazwa przestrzeni nazw i}} - nazwy przestrzeni nazw dla pozycji bazowej oraz zwykłej i ogólnej numerkowej, * {{Code|typ jednostki}}, {{Code|typ jednostki 1}}, {{Code|typ jednostki 2}}, {{Code|typ jednostki 3}},..., {{Code|typ jednostki i}} - typy jednostek, którym odpowiadają pewne przestrzenie przedmiotowe, dla pozycji bazowej, numerkowej i ogólnej, ** {{Code|dyskusja typu jednostki}}, {{Code|dyskusja typu jednostki 1}}, {{Code|dyskusja typ jednostki 2}}, {{Code|dyskusja typ jednostki 3}},..., {{Code|dyskusja typ jednostki i}} - czy dany typ jednostki ma przedstawiać, jeśli niepusta, przestrzeń dyskusji dla pozycji bazowej, numerkowej i ogólnej. Parametry ramki tablicy transportu dziecka: * Parametry dziecka są takie same jak rodzica dla funkcji pudełkowej plus tu wymienione, * {{Code|numer jednostki}} - jak parametr {{Code|i}} nie został ustawiony, to wtedy liczy się ta zmienna. Przykłady: <syntaxhighlight lang="mediawiki"> {{Nazwa szablonu|nazwa przestrzeni nazw=Wikibooks|nazwa przestrzeni nazw 2=Szablon|nazwa przestrzeni nazw i=Moduł}} </syntaxhighlight> W dziecku powiedzmy jest wywołanie, i szukamy nazwy przestrzeni nazw o numerze dwa, która nie została podana, ale istnieje za to jej wersji ogólna {{Code|nazwa przestrzeni nazw i}} i domyślna {{Code|nazwa przestrzeni nazw}}: <syntaxhighlight lang="mediawiki"> {{#invoke:Pudełko|Nazwa przestrzeni nazw|numer jednostki=1}} </syntaxhighlight> Na podstawie powyższego przykładu otrzymamy wynik o schemacie, nie wyniku, bo tam nie ma zmiennej {{Code|nazwa przestrzeni nazw 1}}, ale jest {{Code|nazwa przestrzeni nazw i}}: <syntaxhighlight lang="mediawiki"> <!-- Ale nie "nazwa przestrzeni nazw", bo jej nie ma, ale za to istnieje "nazwa przestrzeni nazw i"; --> <!-- nazwa przestrzeni nazw 2=nazwa przestrzeni nazw i=Moduł; --> <!-- Czyli wynik: --> Moduł <!-- Widzimy, że wygenerowała się nazwa przestrzeni nazw, którą jest przestrzeń programowa, którą również jest "Szablon"; --> </syntaxhighlight> Nie jest brana w tym powyższym przykładzie zmienna {{Code|nazwa przestrzeni nazw}}, bo jej nie ma, ale za to jest {{Code|nazwa przestrzeni nazw i}}, bo ona występuje jako parametr domyślny ogólny dla parametrów numerkowych. Przykłady w wikikodzie: * {{Code|{{m|Pudełko|Nazwa przestrzeni nazw|numer jednostki{{=}}2}}}} → {{Tt|{{#invoke:Pudełko|Nazwa przestrzeni nazw|numer jednostki=2}}}} * {{Code|{{m|Pudełko|Nazwa przestrzeni nazw|Szablon|nazwa przestrzeni nazw i{{=}}Moja przestrzeń|numer jednostki{{=}}2}}}} → {{Tt|{{#invoke:Pudełko|Nazwa przestrzeni nazw|Szablon|nazwa przestrzeni nazw i=Moja przestrzeń|numer jednostki=2}}}} * {{Code|{{m|Pudełko|Nazwa przestrzeni nazw|nazwa przestrzeni nazw 2{{=}}Szablon|numer jednostki{{=}}2}}}} → {{Tt|{{#invoke:Pudełko|Nazwa przestrzeni nazw|nazwa przestrzeni nazw 2=Szablon|numer jednostki=2}}}} * {{Code|{{m|Pudełko|Nazwa przestrzeni nazw|nazwa przestrzeni nazw 2{{=}}Szablon|numer jednostki{{=}}2}}}} → {{Tt|{{#invoke:Pudełko|Nazwa przestrzeni nazw|nazwa przestrzeni nazw i=Szablon|numer jednostki=2}}}} * {{Code|{{m|Pudełko|Nazwa przestrzeni nazw|nazwa przestrzeni nazw{{=}}Szablon|numer jednostki{{=}}2}}}} → {{Tt|{{#invoke:Pudełko|Nazwa przestrzeni nazw|nazwa przestrzeni nazw=Szablon|numer jednostki=2}}}} Powyżej dla przykładu podano parametry nie w rodzicu w szablonie, tylko w dziecku, jeśli chodzi o parametry nazw przestrzeni nazw, ale ich się za to nie powinno podawać w tych ramach, tylko w szablonach, w których wywoływane są te ramki pudełek {{Code|{{m|Pudełko}}}}, ale tak tutaj tak zrobiono by było najłatwiej sprawdzić działanie tego typu funkcji. Analogicznie możemy podawać parametry typu jednostki, np.: wywołaniu modułowym {{Code|{{m|Pudełko|Nazwa przestrzeni nazw|typ jednostki 2{{=}}strona szablonu|numer jednostki{{=}}2}}}}, ale o tym więcej w rozdziałach {{Code|{{sr|# p["Typ jednostki"](frame,i)|p=Pudełko}}}} w „{{sr|#Funkcje typu jednostki|p=Pudełko}}”, on definiuje przestrzenie przedmiotowe, ale można użyć parametru dyskusji typu jednostki z wartością niepustą, wtedy wyświetli się nazwa przestrzeni nazw dyskusji. Również parametry typu jednostki nie powinno się podawać w dziecku w ramce, tylko w rodzicu w szablonie jako parametry, w którym ta ramka jest wywoływana, ale tutaj podano jedynie dla przykładu, jak najłatwiej sprawdzić działanie tych parametrów tej funkcji. Najpierw w funkcji nagłówku brane są parametry nazw przestrzeni nazw, a jeżeli ich nie ma, to parametry typu jednostki, a jeżeli nie ma, to generowane są nazwy na podstawie aktualnego modułu. === {{Code|p["Nazwa przedmiotowej przestrzeni nazw"](frame,...)}} === Funkcja pisze przedmiotową nazwę przestrzeni nazw jakikolwiek nazwy przestrzeni nazw (tzn. nazwę przedmiotową nazwy przestrzenie nazw, czyli nie dyskusji, zamieniana jest na nią samą, czyli identyfikator przestrzeni się nie zmienia, a dyskusji, nie przedmiotową, przekształca się na przedmiotową jej odpowiadającą, czyli w tym przypadku identyfikator przestrzeni zmniejsza się o numer mniej), według podanej w zmiennej {{Code|nazwa przestrzeni nazw}} dla pozycja bazowej w podanych parametrach szablonu rodzicu ramki dziecka, lub dla innej pozycji należy parametr podawać w formie {{Code|nazwa przestrzeni nazw 1}}, {{Code|nazwa przestrzeni nazw 2}}, {{Code|nazwa przestrzeni nazw 3}},..., lub te parametry można podać w postaci ogólnej {{Code|nazwa przestrzeni nazw i}}. Parametry podaje się w parametrach rodzica wywołania tej funkcji {{Code|{{m|Pudełko|Nazwa przedmiotowej przestrzeni nazw}}}} (ale ich nie trzeba podawać w dziecku, ale można) i w parametrach dziecka, jeśli chodzi o zmienną {{Code|numer jednostki}}, czyli np.: {{Code|{{m|Pudełko|Nazwa przedmiotowej przestrzeni nazw|numer jednostki{{=}}<jakaś liczba całkowita dodatnia>}}}}. Te parametry przestrzenne zamiast w rodzicu w szablonie można podać w ramce dziecka, wtedy parametry dziecka mają pierwszeństwo. Parametry przestrzenne mogą mogą być podane w postaci przestrzeni przedmiotowej lub dyskusji, ale ta funkcja zawsze ją zamienia na przedmiotową. Przestrzeń nazw z parametrów nazw przestrzennych może odpowiadać wartości przestrzeni głównej, to wtedy odpowiednia przestrzeń nazw z parametru nazwy jednostki się nie liczy w tej funkcji, aby się liczyła należy użyć funkcji {{Code|{{sr|#p["Nazwa przedmiotowej przestrzeni nazw 2"](frame,...)|p=Pudełko}}}}. Definicja skrótowa funkcji: <syntaxhighlight lang="lua"> p["Nazwa przedmiotowej przestrzeni nazw"]=function(frame,czy_uwzglednic_alternatywna_nazwe,i)...end; </syntaxhighlight> Wtedy ciało funkcji tej, czyli jego definicja w środku, jest: <syntaxhighlight lang="lua"> -- Jest liczony numer parametru nazwy przestrzeni nazw, domyslnie chodzi tu o numer bazowy parametrów przestrzennych; local numer_jednostki=i or frame.args["numer jednostki"]; local liczba_numer_jednostki=((numer_jednostki)and(tonumber(numer_jednostki))or 0); local pudelko_pomocne_modul=require("Module:Pudełko/Pomocne"); -- Liczy nazwę przestrzeni nazw przedmiotową na podstawie podanych parametrów; return pudelko_pomocne_modul.Nazwa_przestrzeni_nazw(frame,1, czy_uwzglednic_alternatywna_nazwe,liczba_numer_jednostki); </syntaxhighlight> Parametry funkcji: * {{Code|frame}} - tablica ramki tablicy transportu, * {{Code|czy_uwzglednic_alternatywna_nazwe}} - czy ma uwzględniać nazwę przestrzeni nazw domyślną szablonu, dostępne wartości: {{Code|false}}, w której nazwa domyślna nie jest uwzględniana wtedy, oraz {{Code|nil}} i {{Code|true}}, które oznaczają to samo, w tym jeżeli ona jest uwzględniana, wtedy jest brany parametr pierwszy dziecka, który musi istnieć przy takiej wartości tego parametru, tzn. {{Code|{{m|Pudełko|Nazwa przedmiotowej przestrzeni nazw|Dyskusja szablonu}}}} - ta nazwa domyślna zostanie zamieniona na przedmiotową, a jak ona by była przedmiotowa, to żadnej zamiany by nie było, a nazwa uzyskana z nazwy przestrzeni nazw z parametrów przestrzennych jest w takim przypadku błędna, to w takim razie brany jest ten parametr, a jeżeli ta nazwa domyślna jest błędna, czyli {{Code|{{m|Pudełko|Nazwa przedmiotowej przestrzeni nazw|Moja przestrzeń}}}}, wtedy funkcja zwraca stan błędu {{Code|(błąd)}}. * {{Code|i}} - numer zmiennej nazwy przestrzeni nazw. Funkcja wykorzystuje {{Code|{{sr|#p.Nazwa_przestrzeni_nazw(frame,...)|p=Pudełko/Pomocne}}}} do wyznaczania ogólnego nazwy przestrzeni nazw dla pozycji bazowej i numerkowej, tzn. dla pozycji: jeden, dwa, trzy,..., itd, i ich ogólnej. Parametr ramki tablicy transportu rodzica szablonu: * {{Code|nazwa przestrzeni nazw}}, {{Code|nazwa przestrzeni nazw 1}}, {{Code|nazwa przestrzeni nazw 2}}, {{Code|nazwa przestrzeni nazw 3}},..., {{Code|nazwa przestrzeni nazw i}} - nazwy przestrzeni nazw dla pozycji bazowej oraz zwykłej i ogólnej numerkowej, * {{Code|typ jednostki}}, {{Code|typ jednostki 1}}, {{Code|typ jednostki 2}}, {{Code|typ jednostki 3}},..., {{Code|typ jednostki i}} - typy jednostek, którym odpowiadają pewne przestrzenie przedmiotowe, dla pozycji bazowej, numerkowej i ogólnej. Parametry ramki tablicy transportu dziecka: * Parametry dziecka są takie same jak rodzica dla funkcji pudełkowej plus tu wymienione, * {{Code|numer jednostki}} - jak parametr {{Code|i}} nie został ustawiony, to wtedy liczy się ta zmienna. Przykłady: <syntaxhighlight lang="mediawiki"> {{Nazwa szablonu|nazwa przestrzeni nazw=Dyskusja Wikibooks|nazwa przestrzeni nazw 2=Dyskusja szablonu|nazwa przestrzeni nazw i=Dyskusja modułu}} </syntaxhighlight> W dziecku powiedzmy jest wywołanie, i szukamy nazwy przestrzeni nazw o numerze dwa, która nie została podana, ale istnieje za to jej wersji ogólna {{Code|nazwa przestrzeni nazw i}} i domyślna {{Code|nazwa przestrzeni nazw}}: <syntaxhighlight lang="mediawiki"> {{#invoke:Pudełko|Nazwa przedmiotowej przestrzeni nazw|numer jednostki=1}} </syntaxhighlight> Na podstawie powyższego przykładu otrzymamy wynik o schemacie, nie wyniku, bo tam nie ma zmiennej {{Code|nazwa przestrzeni nazw 1}}, ale jest {{Code|nazwa przestrzeni nazw i}}: <syntaxhighlight lang="mediawiki"> <!-- Ale nie "nazwa przestrzeni nazw", bo jej nie ma, ale za to istnieje "nazwa przestrzeni nazw i"; --> <!-- nazwa przestrzeni nazw 2=nazwa przestrzeni nazw i=Dyskusja modułu; --> <!-- Czyli wynik: --> Moduł <!-- Widzimy, że wygenerowała się nazwa przestrzeni nazw, którą jest przestrzeń przedmiotowa programowa przestrzeni dyskusji "Dyskusja modułu", którą również jest "Szablon" jego przestrzeni dyskusji "Dyskusja szablonu", a dla ich przestrzeni przedmiotowej, zamiast dyskusji, to samo przekształca się na to samo; --> </syntaxhighlight> Nie jest brana w tym powyższym przykładzie zmienna {{Code|nazwa przestrzeni nazw}}, bo jej nie ma, ale za to jest {{Code|nazwa przestrzeni nazw i}}, bo ona występuje jako parametr domyślny ogólny dla parametrów numerkowych. Przykłady w wikikodzie: * {{Code|{{m|Pudełko|Nazwa przedmiotowej przestrzeni nazw|numer jednostki{{=}}2}}}} → {{Tt|{{#invoke:Pudełko|Nazwa przedmiotowej przestrzeni nazw|numer jednostki=2}}}} * {{Code|{{m|Pudełko|Nazwa przedmiotowej przestrzeni nazw|Dyskusja szablonu|nazwa przestrzeni nazw i{{=}}Moja przestrzeń|numer jednostki{{=}}2}}}} → {{Tt|{{#invoke:Pudełko|Nazwa przedmiotowej przestrzeni nazw|Dyskusja szablonu|nazwa przestrzeni nazw i=Moja przestrzeń|numer jednostki=2}}}} * {{Code|{{m|Pudełko|Nazwa przedmiotowej przestrzeni nazw|nazwa przestrzeni nazw 2{{=}}Dyskusja szablonu|numer jednostki{{=}}2}}}} → {{Tt|{{#invoke:Pudełko|Nazwa przedmiotowej przestrzeni nazw|nazwa przestrzeni nazw 2=Dyskusja szablonu|numer jednostki=2}}}} * {{Code|{{m|Pudełko|Nazwa przedmiotowej przestrzeni nazw|nazwa przestrzeni nazw 2{{=}}Dyskusja szablonu|numer jednostki{{=}}2}}}} → {{Tt|{{#invoke:Pudełko|Nazwa przedmiotowej przestrzeni nazw|nazwa przestrzeni nazw i=Dyskusja szablonu|numer jednostki=2}}}} * {{Code|{{m|Pudełko|Nazwa przedmiotowej przestrzeni nazw|nazwa przestrzeni nazw{{=}}Dyskusja szablonu|numer jednostki{{=}}2}}}} → {{Tt|{{#invoke:Pudełko|Nazwa przedmiotowej przestrzeni nazw|nazwa przestrzeni nazw=Dyskusja szablonu|numer jednostki=2}}}} Powyżej dla przykładu podano parametry nie w rodzicu w szablonie, tylko w dziecku, jeśli chodzi o parametry nazw przestrzeni nazw, ale ich się za to nie powinno podawać w tych ramach, tylko w szablonach, w których wywoływane są te ramki pudełek {{Code|{{m|Pudełko}}}}, ale tak tutaj tak zrobiono by było najłatwiej sprawdzić działanie tego typu funkcji. Analogicznie możemy podawać parametry typu jednostki, np.: wywołaniu modułowym {{Code|{{m|Pudełko|Nazwa przedmiotowej przestrzeni nazw|typ jednostki 2{{=}}strona szablonu|numer jednostki{{=}}2}}}}, ale o tym więcej w rozdziałach {{Code|{{sr|# p["Przedmiotowy typ jednostki"](frame,i)|p=Pudełko}}}} w „{{sr|#Funkcje typu jednostki|p=Pudełko}}”, ale wtedy ta sama nazwa przestrzeni nazw reprezentowana przez {{Parametr|typ jednostki 2|strona szablonu}}, jest zamieniana na to samo, lepiej jest tutaj używać parametrów przestrzennych nazw niż typu jednostki, bo typ jednostki ma taką samą wartość dla przestrzeni przedmiotowej, co dyskusji. Tutaj parametr dyskusji typu jednostki bazowy i numerkowy ogólny, czy szczegółowy, nie gra roli, bo nawet, gdy wygenerujemy nazwę przestrzeni dyskusji za pomoca tego parametru, to i tak otrzymamy na samym końcu jego nazwę przedmiotową. Również parametry typu jednostki nie powinno się podawać w dziecku w ramce, tylko w rodzicu w szablonie jako parametry, w którym ta ramka jest wywoływana, ale tutaj podano jedynie dla przykładu, jak najłatwiej sprawdzić działanie tych parametrów tej funkcji. Najpierw w funkcji nagłówku brane są parametry nazw przestrzeni nazw, a jeżeli ich nie ma, to parametry typu jednostki, a jeżeli nie ma, to generowane są nazwy na podstawie aktualnego modułu. === {{Code|p["Nazwa przestrzeni nazw dyskusji"](frame,...)}} === Funkcja pisze nazwę przestrzeni nazw dyskusji jakikolwiek nazwy przestrzeni nazw (tzn. nazwę przedmiotową nazwy przestrzenie nazw, czyli nie dyskusji, zamieniana jest na dyskusji, czyli identyfikator przestrzeni się zmienia jeden wyżej, a dyskusji, nie przedmiotową, przekształca się na tą samą), według podanej w zmiennej {{Code|nazwa przestrzeni nazw}} dla pozycja bazowej w podanych parametrach szablonu rodzicu ramki dziecka, lub dla innej pozycji należy parametr podawać w formie {{Code|nazwa przestrzeni nazw 1}}, {{Code|nazwa przestrzeni nazw 2}}, {{Code|nazwa przestrzeni nazw 3}},..., lub te parametry można podać w postaci ogólnej {{Code|nazwa przestrzeni nazw i}}. Parametry podaje się w parametrach rodzica wywołania tej funkcji {{Code|{{m|Pudełko|Nazwa przestrzeni nazw dyskusji}}}} (ale ich nie trzeba podawać w dziecku, ale można) i w parametrach dziecka, jeśli chodzi o zmienną {{Code|numer jednostki}}, czyli np.: {{Code|{{m|Pudełko|Nazwa przestrzeni nazw dyskusji|numer jednostki{{=}}<jakaś liczba całkowita dodatnia>}}}}. Te parametry przestrzenne zamiast w rodzicu w szablonie można podać w ramce dziecka, wtedy parametry dziecka mają pierwszeństwo. Parametry przestrzenne mogą mogą być podane w postaci przestrzeni przedmiotowej lub dyskusji, ale ta funkcja zawsze ją zamienia na dyskusji. Przestrzeń nazw z parametrów nazw przestrzennych może odpowiadać wartości przestrzeni głównej, to wtedy odpowiednia przestrzeń nazw z parametru nazwy jednostki się nie liczy w tej funkcji, aby się liczyła należy użyć funkcji {{Code|{{sr|#p["Nazwa przestrzeni nazw dyskusji 2"](frame,...)|p=Pudełko}}}}. Definicja skrótowa funkcji: <syntaxhighlight lang="lua"> p["Nazwa przestrzeni nazw dyskusji"]=function(frame,czy_uwzglednic_alternatywna_nazwe,i)...end; </syntaxhighlight> Wtedy ciało funkcji tej, czyli jego definicja w środku, jest: <syntaxhighlight lang="lua"> -- Jest liczony numer parametru nazwy przestrzeni nazw, domyslnie chodzi tu o numer bazowy parametrów przestrzennych; local numer_jednostki=i or frame.args["numer jednostki"]; local liczba_numer_jednostki=((numer_jednostki)and(tonumber(numer_jednostki))or 0); local pudelko_pomocne_modul=require("Module:Pudełko/Pomocne"); -- Liczy nazwę przestrzeni nazw dyskusji na podstawie podanych parametrów; return pudelko_pomocne_modul.Nazwa_przestrzeni_nazw(frame,2, czy_uwzglednic_alternatywna_nazwe,liczba_numer_jednostki); </syntaxhighlight> Parametry funkcji: * {{Code|frame}} - tablica ramki tablicy transportu, * {{Code|czy_uwzglednic_alternatywna_nazwe}} - czy ma uwzględniać nazwę przestrzeni nazw domyślną szablonu, dostępne wartości: {{Code|false}}, w której nazwa domyślna nie jest uwzględniana wtedy, oraz {{Code|nil}} i {{Code|true}}, które oznaczają to samo, w tym jeżeli ona jest uwzględniana, wtedy jest brany parametr pierwszy dziecka, który musi istnieć przy takiej wartości tego parametru, tzn. {{Code|{{m|Pudełko|Nazwa przestrzeni nazw dyskusji|Szablon}}}} - ta nazwa domyślna zostanie przekształcona na dyskusji, a jeżeli ona by była dyskusji, to nie byłoby żadnego przekształcenia, a nazwa uzyskana nazwy przestrzeni nazw z parametrów przestrzennych jest w takim przypadku błędna, to w takim razie brany jest ten parametr, a jeżeli nazwa domyślna jest błędna, czyli {{Code|{{m|Pudełko|Nazwa przestrzeni nazw dyskusji|Moja przestrzeń}}}}, wtedy funkcja zwraca stan błędu {{Code|(błąd)}}. * {{Code|i}} - numer zmiennej nazwy przestrzeni nazw. Funkcja wykorzystuje {{Code|{{sr|#p.Nazwa_przestrzeni_nazw(frame,...)|p=Pudełko/Pomocne}}}} do wyznaczania ogólnego nazwy przestrzeni nazw dla pozycji bazowej i numerkowej, tzn. dla pozycji: jeden, dwa, trzy,..., itd, i ich ogólnej. Parametr ramki tablicy transportu rodzica szablonu: * {{Code|nazwa przestrzeni nazw}}, {{Code|nazwa przestrzeni nazw 1}}, {{Code|nazwa przestrzeni nazw 2}}, {{Code|nazwa przestrzeni nazw 3}},..., {{Code|nazwa przestrzeni nazw i}} - nazwy przestrzeni nazw dla pozycji bazowej oraz zwykłej i ogólnej numerkowej, * {{Code|typ jednostki}}, {{Code|typ jednostki 1}}, {{Code|typ jednostki 2}}, {{Code|typ jednostki 3}},..., {{Code|typ jednostki i}} - typy jednostek, którym odpowiadają pewne przestrzenie przedmiotowe, dla pozycji bazowej, numerkowej i ogólnej. Parametry ramki tablicy transportu dziecka: * Parametry dziecka są takie same jak rodzica dla funkcji pudełkowej plus tu wymienione, * {{Code|numer jednostki}} - jak parametr {{Code|i}} nie został ustawiony, to wtedy liczy się ta zmienna. Przykłady: <syntaxhighlight lang="mediawiki"> {{Nazwa szablonu|nazwa przestrzeni nazw=Wikibooks|nazwa przestrzeni nazw 2=Szablon|nazwa przestrzeni nazw i=Moduł}} </syntaxhighlight> W dziecku powiedzmy jest wywołanie, i szukamy nazwy przestrzeni nazw o numerze dwa, która nie została podana, ale istnieje za to jej wersji ogólna {{Code|nazwa przestrzeni nazw i}} i domyślna {{Code|nazwa przestrzeni nazw}}: <syntaxhighlight lang="mediawiki"> {{#invoke:Pudełko|Nazwa przestrzeni nazw dyskusji|numer jednostki=1}} </syntaxhighlight> Na podstawie powyższego przykładu otrzymamy wynik o schemacie, nie wyniku, bo tam nie ma zmiennej {{Code|nazwa przestrzeni nazw 1}}, ale jest {{Code|nazwa przestrzeni nazw i}}: <syntaxhighlight lang="mediawiki"> <!-- Ale nie "nazwa przestrzeni nazw", bo jej nie ma, ale za to istnieje "nazwa przestrzeni nazw i"; --> <!-- nazwa przestrzeni nazw 2=nazwa przestrzeni nazw i=Moduł; --> <!-- Czyli wynik: --> Dyskusja modułu <!-- Widzimy, że wygenerowała się nazwa przestrzeni nazw, którą jest przestrzeń dyskusji przestrzeni programowej przestrzeni przedmiotowej "Moduł", którą również jest "Szablon" jego przestrzeni dyskusji "Dyskusja szablonu", a dla ich przestrzeni przedmiotowej, zamiast dyskusji, to przekształca się na dyskusji jej odpowiadającą; --> </syntaxhighlight> Nie jest brana w tym powyższym przykładzie zmienna {{Code|nazwa przestrzeni nazw}}, bo jej nie ma, ale za to jest {{Code|nazwa przestrzeni nazw i}}, bo ona występuje jako parametr domyślny ogólny dla parametrów numerkowych. Przykłady w wikikodzie: * {{Code|{{m|Pudełko|Nazwa przestrzeni nazw dyskusji|numer jednostki{{=}}2}}}} → {{Tt|{{#invoke:Pudełko|Nazwa przestrzeni nazw dyskusji|numer jednostki=2}}}} * {{Code|{{m|Pudełko|Nazwa przestrzeni nazw dyskusji|Szablon|nazwa przestrzeni nazw i{{=}}Moja przestrzeń|numer jednostki{{=}}2}}}} → {{Tt|{{#invoke:Pudełko|Nazwa przestrzeni nazw dyskusji|Szablon|nazwa przestrzeni nazw i=Moja przestrzeń|numer jednostki=2}}}} * {{Code|{{m|Pudełko|Nazwa przestrzeni nazw dyskusji|nazwa przestrzeni nazw 2{{=}}Szablon|numer jednostki{{=}}2}}}} → {{Tt|{{#invoke:Pudełko|Nazwa przestrzeni nazw dyskusji|nazwa przestrzeni nazw 2=Szablon|numer jednostki=2}}}} * {{Code|{{m|Pudełko|Nazwa przestrzeni nazw dyskusji|nazwa przestrzeni nazw 2{{=}}Szablon|numer jednostki{{=}}2}}}} → {{Tt|{{#invoke:Pudełko|Nazwa przestrzeni nazw dyskusji|nazwa przestrzeni nazw i=Szablon|numer jednostki=2}}}} * {{Code|{{m|Pudełko|Nazwa przestrzeni nazw dyskusji|nazwa przestrzeni nazw{{=}}Szablon|numer jednostki{{=}}2}}}} → {{Tt|{{#invoke:Pudełko|Nazwa przestrzeni nazw dyskusji|nazwa przestrzeni nazw=Szablon|numer jednostki=2}}}} Powyżej dla przykładu podano parametry nie w rodzicu w szablonie, tylko w dziecku, jeśli chodzi o parametry nazw przestrzeni nazw, ale ich się za to nie powinno podawać w tych ramach, tylko w szablonach, w których wywoływane są te ramki pudełek {{Code|{{m|Pudełko}}}}, ale tak tutaj tak zrobiono by było najłatwiej sprawdzić działanie tego typu funkcji. Analogicznie możemy podawać parametry typu jednostki, np.: wywołaniu modułowym {{Code|{{m|Pudełko|Nazwa przestrzeni nazw dyskusji|typ jednostki 2{{=}}strona szablonu|numer jednostki{{=}}2}}}}, ale o tym więcej w rozdziałach {{Code|{{sr|# p["Dyskusyjny typ jednostki"](frame,i)|p=Pudełko}}}} w „{{sr|#Funkcje typu jednostki|p=Pudełko}}”, ale wtedy nazwa przestrzeni nazw reprezentowana przez {{Parametr|typ jednostki 2|strona szablonu}}, jest zamieniana na nazwę przestrzeni nazw dyskusji. Parametr dyskusji typu jednostki bazowy lub dla danego numerka ogólny, czy szczegółowy, nie gra roli. Również parametry typu jednostki nie powinno się podawać w dziecku w ramce, tylko w rodzicu w szablonie jako parametry, w którym ta ramka jest wywoływana, ale tutaj podano jedynie dla przykładu, jak najłatwiej sprawdzić działanie tych parametrów tej funkcji. Najpierw w funkcji nagłówku brane są parametry nazw przestrzeni nazw, a jeżeli ich nie ma, to parametry typu jednostki, a jeżeli nie ma, to generowane są nazwy na podstawie aktualnego modułu. == Funkcje nazw przestrzeni nazw drugiej wersji == === {{Code|p["Nazwa przestrzeni nazw 2"](frame,...)}} === Funkcja pisze nazwę przestrzeni nazw, niezależnie, czy to jest przedmiotowa, czy dyskusji, według, i nie zawsze tylko, podanej w zmiennej {{Code|nazwa przestrzeni nazw}} dla pozycja bazowej w podanych parametrach szablonu rodzicu ramki dziecka, lub dla innej pozycji należy parametr podawać w formie {{Code|nazwa przestrzeni nazw 1}}, {{Code|nazwa przestrzeni nazw 2}}, {{Code|nazwa przestrzeni nazw 3}},..., lub te parametry można podać w postaci ogólnej {{Code|nazwa przestrzeni nazw i}}. W tej funkcji trzeba też podawać parametry nazwy jednostek {{Code|nazwa jednostki}}, {{Code|nazwa jednostki 1}}, {{Code|nazwa jednostki 2}}, {{Code|nazwa jednostki 3}},... Parametry podaje się w parametrach rodzica wywołania tej funkcji {{Code|{{m|Pudełko|Nazwa przestrzeni nazw 2}}}} (ale ich nie trzeba podawać w dziecku, ale można) i w parametrach dziecka, jeśli chodzi o zmienną {{Code|numer jednostki}}, czyli np.: {{Code|{{m|Pudełko|Nazwa przestrzeni nazw 2|numer jednostki{{=}}<jakaś liczba całkowita dodatnia>}}}}. Te parametry przestrzenne zamiast w rodzicu w szablonie można podać w ramce dziecka, wtedy parametry dziecka mają pierwszeństwo. Przestrzeń nazw z parametrów nazw przestrzennych może odpowiadać wartości przestrzeni głównej, to wtedy odpowiednia przestrzeń nazw z parametru nazwy jednostki się liczy w tej funkcji, wtedy jest liczona nazwa przestrzeni nazw z tego parametru. Gdy parametry przestrzenne lub typ jednostki w drugim podejściu nie wskazują na przestrzeń główną, to wtedy działanie tej funkcji jest podobne do {{Code|{{sr|#p["Nazwa przestrzeni nazw"](frame,...)|p=Pudełko}}}}. Definicja skrótowa funkcji: <syntaxhighlight lang="lua"> p["Nazwa przestrzeni nazw 2"]=function(frame,czy_uwzglednic_alternatywna_nazwe,i)...end; </syntaxhighlight> Wtedy ciało funkcji tej, czyli jego definicja w środku, jest: <syntaxhighlight lang="lua"> local pudelko_pomocne_modul=require("Module:Pudełko/Pomocne"); -- Liczy nazwę przestrzeni nazw, jeżeli z parametrów przestrzennych przestrzeń wskazuje na główną, to wtedy jest liczona przestrzeń nazw z nazwy jednostki; return pudelko_pomocne_modul.Nazwa_przestrzeni_nazw_2(frame,czy_uwzglednic_alternatywna_nazwe,i) </syntaxhighlight> Parametry funkcji: * {{Code|frame}} - tablica ramki tablicy transportu, * {{Code|czy_uwzglednic_alternatywna_nazwe}} - czy ma uwzględniać nazwę przestrzeni nazw domyślną szablonu, dostępne wartości: {{Code|false}}, w której nazwa domyślna nie jest uwzględniana wtedy, oraz {{Code|nil}} i {{Code|true}}, które oznaczają to samo, w tym jeżeli ona jest uwzględniana, wtedy jest brany parametr pierwszy dziecka, który musi istnieć przy takiej wartości tego parametru, tzn. {{Code|{{m|Pudełko|Nazwa przestrzeni nazw 2|Szablon}}}}, a nazwa uzyskana nazwy przestrzeni nazw jest w takim przypadku błędna, a jeżeli nazwa domyślna jest błędna, czyli {{Code|{{m|Pudełko|Nazwa przestrzeni nazw 2|Moja przestrzeń}}}}, wtedy funkcja zwraca stan błędu {{Code|(błąd)}}. * {{Code|i}} - numer zmiennej nazwy przestrzeni nazw. Funkcja wykorzystuje {{Code|{{sr|#p.Nazwa_przestrzeni_nazw_2(frame,...)|p=Pudełko/Pomocne}}}} do wyznaczania ogólnego nazwy przestrzeni nazw dla pozycji bazowej i numerkowej, tzn. dla pozycji: jeden, dwa, trzy,..., itd, i ich ogólnej. Parametr ramki tablicy transportu rodzica szablonu: * {{Code|nazwa przestrzeni nazw}}, {{Code|nazwa przestrzeni nazw 1}}, {{Code|nazwa przestrzeni nazw 2}}, {{Code|nazwa przestrzeni nazw 3}},..., {{Code|nazwa przestrzeni nazw i}} - nazwy przestrzeni nazw dla pozycji bazowej oraz zwykłej i ogólnej numerkowej, * {{Code|nazwa jednostki}}, {{Code|nazwa jednostki 1}}, {{Code|nazwa jednostki 2}}, {{Code|nazwa jednostki 3}},... - nazwy jednostek dla pozycji bazowej i numerkowej, * {{Code|typ jednostki}}, {{Code|typ jednostki 1}}, {{Code|typ jednostki 2}}, {{Code|typ jednostki 3}},..., {{Code|typ jednostki i}} - typy jednostek, którym odpowiadają pewne przestrzenie przedmiotowe, dla pozycji bazowej, numerkowej i ogólnej, ** {{Code|dyskusja typu jednostki}}, {{Code|dyskusja typu jednostki 1}}, {{Code|dyskusja typ jednostki 2}}, {{Code|dyskusja typ jednostki 3}},..., {{Code|dyskusja typ jednostki i}} - czy dany typ jednostki ma przedstawiać, jeśli niepusta, przestrzeń dyskusji dla pozycji bazowej, numerkowej i ogólnej. Parametry ramki tablicy transportu dziecka: * Parametry dziecka są takie same jak rodzica dla funkcji pudełkowej plus tu wymienione, * {{Code|numer jednostki}} - jak parametr {{Code|i}} nie został ustawiony, to wtedy liczy się ta zmienna. Przykłady: <syntaxhighlight lang="mediawiki"> {{Nazwa szablonu|nazwa przestrzeni nazw=Wikibooks|nazwa przestrzeni nazw 1=Szablon|nazwa przestrzeni nazw i=|nazwa jednostki 2=Wikibooks:Strona}} </syntaxhighlight> W dziecku powiedzmy jest wywołanie, i szukamy nazwy przestrzeni nazw o numerze dwa, która została podana, ale istnieje za to jej wersji ogólna {{Code|nazwa przestrzeni nazw i}} i domyślna {{Code|nazwa przestrzeni nazw}}, ale wtedy dla tego numerkowego liczy się to ogólne z {{Code| i}}, a ponieważ ta nazwa jest pusta, więc będziemy liczyli nazwę przestrzeni nazw z {{Code|nazwa jednostki 2}}: <syntaxhighlight lang="mediawiki"> {{#invoke:Pudełko|Nazwa przestrzeni nazw 2|numer jednostki=2}} </syntaxhighlight> Na podstawie powyższego przykładu otrzymamy wynik o schemacie, nie wyniku, bo tam nie ma zmiennej {{Code|nazwa przestrzeni nazw 1}}, ale jest {{Code|nazwa przestrzeni nazw i}}: <syntaxhighlight lang="mediawiki"> <!-- Ale nie "nazwa przestrzeni nazw 2", bo jej nie ma, ale za to istnieje "nazwa przestrzeni nazw i"; --> <!-- nazwa przestrzeni nazw 2=nazwa przestrzeni nazw i="", a nazwa jednostki 2="Wikibooks:Strona"; --> <!-- Czyli wynik: --> Wikibooks <!-- Widzimy, że wygenerowała się nazwa przestrzeni nazw, którą jest przestrzeń nieprogramowa, ale projektu, wychodząca z nazwy jednostek w tym przypadku z "nazwa jednostki 2"; --> </syntaxhighlight> Nie jest brana w tym powyższym przykładzie zmienna {{Code|nazwa przestrzeni nazw}}, bo jej nie ma, ale za to jest {{Code|nazwa przestrzeni nazw i}}, bo ona występuje jako parametr domyślny ogólny dla parametrów numerkowych. Tytaj jest używana jest zmienna {{Code|nazwa jednostki 2}} do wygenerowania ostatecznego wyniku, bo jak można zauważyć, parametry przestrzenne wskazują na przestrzeń główną, a nazwy jednostek już nie. Przykłady w wikikodzie: * {{Code|{{m|Pudełko|Nazwa przestrzeni nazw 2|numer jednostki{{=}}2}}}} → {{Tt|{{#invoke:Pudełko|Nazwa przestrzeni nazw 2|numer jednostki=2}}}} * {{Code|{{m|Pudełko|Nazwa przestrzeni nazw 2|Szablon|nazwa przestrzeni nazw i{{=}}Moja przestrzeń|numer jednostki{{=}}2}}}} → {{Tt|{{#invoke:Pudełko|Nazwa przestrzeni nazw 2|Szablon|nazwa przestrzeni nazw i=Moja przestrzeń|numer jednostki=2}}}} * {{Code|{{m|Pudełko|Nazwa przestrzeni nazw 2|nazwa przestrzeni nazw 2{{=}}|nazwa jednostki 2{{=}}Szablon:Strona|numer jednostki{{=}}2}}}} → {{Tt|{{#invoke:Pudełko|Nazwa przestrzeni nazw 2|nazwa przestrzeni nazw 2=|nazwa jednostki 2=Szablon:Strona|numer jednostki=2}}}} * {{Code|{{m|Pudełko|Nazwa przestrzeni nazw 2|nazwa przestrzeni nazw i{{=}}|nazwa jednostki 2{{=}}Szablon:Strona|numer jednostki{{=}}2}}}} → {{Tt|{{#invoke:Pudełko|Nazwa przestrzeni nazw 2|nazwa przestrzeni nazw i=|nazwa jednostki 2=Szablon:Strona|numer jednostki=2}}}} * {{Code|{{m|Pudełko|Nazwa przestrzeni nazw 2|Szablon|nazwa przestrzeni nazw{{=}}|nazwa jednostki 2{{=}}Wikibooks:Strona|numer jednostki{{=}}2}}}} → {{Tt|{{#invoke:Pudełko|Nazwa przestrzeni nazw 2|Szablon|nazwa przestrzeni nazw=|nazwa jednostki 2=Wikibooks:Strona|numer jednostki=2}}}} Powyżej dla przykładu podano parametry nie w rodzicu w szablonie, tylko w dziecku, jeśli chodzi o parametry nazw przestrzeni nazw i nazw jednostek, ale ich się za to nie powinno podawać w tych ramach, tylko w szablonach, w których wywoływane są te ramki pudełek {{Code|{{m|Pudełko}}}}, ale tak tutaj tak zrobiono by było najłatwiej sprawdzić działanie tego typu funkcji. Analogicznie możemy podawać parametry typu jednostki, np.: wywołaniu modułowym {{Code|{{m|Pudełko|Nazwa przestrzeni nazw 2|typ jednostki 2{{=}}Podręcznik|nazwa jednostki 2{{=}}Szablon:Strona|numer jednostki{{=}}2}}}} (ale wtedy jest brana przestrzeń nazw z nazwy jednostki), ale o tym więcej w rozdziałach {{Code|{{sr|#p["Typ jednostki 2"](frame,i)|p=Pudełko}}}} w „{{sr|#Funkcje typu jednostki|p=Pudełko}}”, on definiuje przestrzenie przedmiotowe, ale można użyć parametru dyskusji typu jednostki z wartością niepustą, wtedy wyświetli się nazwa przestrzeni nazw dyskusji. Jeżeli typ jednostki wskazuje na przestrzeń nazw główną, wtedy się liczą parametry nazw jednostek. Również parametry typu jednostki nie powinno się podawać w dziecku w ramce, tylko w rodzicu w szablonie jako parametry, w którym ta ramka jest wywoływana, ale tutaj podano jedynie dla przykładu, jak najłatwiej sprawdzić działanie tych parametrów tej funkcji. Najpierw w funkcji nagłówku brane są parametry nazw przestrzeni nazw, a jeżeli ich nie ma, to parametry typu jednostki, a jeżeli nie ma lub parametry przestrzenne wskazują na przestrzeń główną, i nie ma nazwy jednostki, to generowane są nazwy tej funkcji na podstawie aktualnej strony. === {{Code|p["Nazwa przedmiotowej przestrzeni nazw 2"](frame,...)}} === Funkcja pisze przedmiotową nazwę przestrzeni nazw jakikolwiek nazwy przestrzeni nazw (tzn. nazwę przedmiotową nazwy przestrzenie nazw, czyli nie dyskusji, zamieniana jest na nią samą, czyli identyfikator przestrzeni się nie zmienia, a dyskusji, nie przedmiotową, przekształca się na przedmiotową jej odpowiadającą, czyli w tym przypadku identyfikator przestrzeni zmniejsza się o numer mniej), według, i nie zawsze tylko, podanej w zmiennej {{Code|nazwa przestrzeni nazw}} dla pozycja bazowej w podanych parametrach szablonu rodzicu ramki dziecka, lub dla innej pozycji należy parametr podawać w formie {{Code|nazwa przestrzeni nazw 1}}, {{Code|nazwa przestrzeni nazw 2}}, {{Code|nazwa przestrzeni nazw 3}},..., lub te parametry można podać w postaci ogólnej {{Code|nazwa przestrzeni nazw i}}. W tej funkcji trzeba też podawać parametry nazwy jednostek {{Code|nazwa jednostki}}, {{Code|nazwa jednostki 1}}, {{Code|nazwa jednostki 2}}, {{Code|nazwa jednostki 3}},... Parametry podaje się w parametrach rodzica wywołania tej funkcji {{Code|{{m|Pudełko|Nazwa przedmiotowej przestrzeni nazw 2}}}} (ale ich nie trzeba podawać w dziecku, ale można) i w parametrach dziecka, jeśli chodzi o zmienną {{Code|numer jednostki}}, czyli np.: {{Code|{{m|Pudełko|Nazwa przedmiotowej przestrzeni nazw 2|numer jednostki{{=}}<jakaś liczba całkowita dodatnia>}}}}. Te parametry przestrzenne zamiast w rodzicu w szablonie można podać w ramce dziecka, wtedy parametry dziecka mają pierwszeństwo. Przestrzeń nazw z parametrów nazw przestrzennych po przekształceniu na przedmiotową może odpowiadać wartości przestrzeni głównej, to wtedy odpowiednia przestrzeń nazw z parametru nazwy jednostki się liczy w tej funkcji, wtedy jest liczona nazwa przestrzeni nazw z tego parametru. Gdy parametry przestrzenne lub typ jednostki w drugim podejściu nie wskazują na przestrzeń główną, to wtedy działanie tej funkcji jest podobne do {{Code|{{sr|#p["Nazwa przedmiotowej przestrzeni nazw"](frame,...)|p=Pudełko}}}}. Definicja skrótowa funkcji: <syntaxhighlight lang="lua"> p["Nazwa przedmiotowej przestrzeni nazw 2"]=function(frame,czy_uwzglednic_alternatywna_nazwe,i)...end; </syntaxhighlight> Wtedy ciało funkcji tej, czyli jego definicja w środku, jest: <syntaxhighlight lang="lua"> local pudelko_pomocne_modul=require("Module:Pudełko/Pomocne"); return pudelko_pomocne_modul.Nazwa_przestrzeni_nazw_przedmiotowa_dyskusji_2(frame,czy_uwzglednic_alternatywna_nazwe,i,"przedmiotowa"); </syntaxhighlight> Parametry funkcji: * {{Code|frame}} - tablica ramki tablicy transportu, * {{Code|czy_uwzglednic_alternatywna_nazwe}} - czy ma uwzględniać nazwę przestrzeni nazw domyślną szablonu, dostępne wartości: {{Code|false}}, w której nazwa domyślna nie jest uwzględniana wtedy, oraz {{Code|nil}} i {{Code|true}}, które oznaczają to samo, w tym jeżeli ona jest uwzględniana, wtedy jest brany parametr pierwszy dziecka, który musi istnieć przy takiej wartości tego parametru, tzn. {{Code|{{m|Pudełko|Nazwa przedmiotowej przestrzeni nazw 2|Szablon}}}}, a nazwa uzyskana nazwy przestrzeni nazw jest w takim przypadku błędna, a jeżeli nazwa domyślna jest błędna, czyli {{Code|{{m|Pudełko|Nazwa przedmiotowej przestrzeni nazw 2|Moja przestrzeń}}}}, wtedy funkcja zwraca stan błędu {{Code|(błąd)}}. * {{Code|i}} - numer zmiennej nazwy przestrzeni nazw. Funkcja wykorzystuje {{Code|{{sr|#p.Nazwa_przestrzeni_nazw_przedmiotowa_dyskusji_2(frame,...)|p=Pudełko/Pomocne}}}} do wyznaczania ogólnego nazwy przestrzeni nazw dla pozycji bazowej i numerkowej, tzn. dla pozycji: jeden, dwa, trzy,..., itd, i ich ogólnej. Parametr ramki tablicy transportu rodzica szablonu: * {{Code|nazwa przestrzeni nazw}}, {{Code|nazwa przestrzeni nazw 1}}, {{Code|nazwa przestrzeni nazw 2}}, {{Code|nazwa przestrzeni nazw 3}},..., {{Code|nazwa przestrzeni nazw i}} - nazwy przestrzeni nazw dla pozycji bazowej oraz zwykłej i ogólnej numerkowej, * {{Code|nazwa jednostki}}, {{Code|nazwa jednostki 1}}, {{Code|nazwa jednostki 2}}, {{Code|nazwa jednostki 3}},... - nazwy jednostek dla pozycji bazowej i numerkowej, * {{Code|typ jednostki}}, {{Code|typ jednostki 1}}, {{Code|typ jednostki 2}}, {{Code|typ jednostki 3}},..., {{Code|typ jednostki i}} - typy jednostek, którym odpowiadają pewne przestrzenie przedmiotowe, dla pozycji bazowej, numerkowej i ogólnej. Parametry ramki tablicy transportu dziecka: * Parametry dziecka są takie same jak rodzica dla funkcji pudełkowej plus tu wymienione, * {{Code|numer jednostki}} - jak parametr {{Code|i}} nie został ustawiony, to wtedy liczy się ta zmienna. Przykłady: <syntaxhighlight lang="mediawiki"> {{Nazwa szablonu|nazwa przestrzeni nazw=Wikibooks|nazwa przestrzeni nazw 1=Szablon|nazwa przestrzeni nazw i=|nazwa jednostki 2=Dyskusja Wikibooks:Strona}} </syntaxhighlight> W dziecku powiedzmy jest wywołanie, i szukamy nazwy przestrzeni nazw o numerze dwa, która została podana, ale istnieje za to jej wersji ogólna {{Code|nazwa przestrzeni nazw i}} i domyślna {{Code|nazwa przestrzeni nazw}}, ale wtedy dla tego numerkowego liczy się to ogólne z {{Code| i}}, a ponieważ ta nazwa jest pusta, więc będziemy liczyli nazwę przestrzeni nazw z {{Code|nazwa jednostki 2}}: <syntaxhighlight lang="mediawiki"> {{#invoke:Pudełko|Nazwa przedmiotowej przestrzeni nazw 2|numer jednostki=2}} </syntaxhighlight> Na podstawie powyższego przykładu otrzymamy wynik o schemacie, nie wyniku, bo tam nie ma zmiennej {{Code|nazwa przestrzeni nazw 1}}, ale jest {{Code|nazwa przestrzeni nazw i}}: <syntaxhighlight lang="mediawiki"> <!-- Ale nie "nazwa przestrzeni nazw 2", bo jej nie ma, ale za to istnieje "nazwa przestrzeni nazw i"; --> <!-- nazwa przestrzeni nazw 2=nazwa przestrzeni nazw i="", a nazwa jednostki 2="Dyskusja Wikibooks:Strona"; --> <!-- Czyli wynik: --> Wikibooks <!-- Widzimy, że wygenerowała się nazwa przestrzeni nazw, którą jest przestrzeń nieprogramowa, ale projektu, wychodząca z nazwy jednostek w tym przypadku z "nazwa jednostki 2"; --> </syntaxhighlight> Nie jest brana w tym powyższym przykładzie zmienna {{Code|nazwa przestrzeni nazw}}, bo jej nie ma, ale za to jest {{Code|nazwa przestrzeni nazw i}}, bo ona występuje jako parametr domyślny ogólny dla parametrów numerkowych. Tytaj jest używana jest zmienna {{Code|nazwa jednostki 2}} do wygenerowania ostatecznego wyniku, bo jak można zauważyć, parametry przestrzenne wskazują na przestrzeń główną, a nazwy jednostek już nie. Przykłady w wikikodzie: * {{Code|{{m|Pudełko|Nazwa przedmiotowej przestrzeni nazw 2|numer jednostki{{=}}2}}}} → {{Tt|{{#invoke:Pudełko|Nazwa przedmiotowej przestrzeni nazw 2|numer jednostki=2}}}} * {{Code|{{m|Pudełko|Nazwa przedmiotowej przestrzeni nazw 2|Dyskusja szablonu|nazwa przestrzeni nazw i{{=}}Moja przestrzeń|numer jednostki{{=}}2}}}} → {{Tt|{{#invoke:Pudełko|Nazwa przedmiotowej przestrzeni nazw 2|Dyskusja szablonu|nazwa przestrzeni nazw i=Moja przestrzeń|numer jednostki=2}}}} * {{Code|{{m|Pudełko|Nazwa przedmiotowej przestrzeni nazw 2|nazwa przestrzeni nazw 2{{=}}Dyskusja|nazwa jednostki 2{{=}}Dyskusja szablonu:Strona|numer jednostki{{=}}2}}}} → {{Tt|{{#invoke:Pudełko|Nazwa przedmiotowej przestrzeni nazw 2|nazwa przestrzeni nazw 2=Dyskusja|nazwa jednostki 2=Dyskusja szablonu:Strona|numer jednostki=2}}}} * {{Code|{{m|Pudełko|Nazwa przedmiotowej przestrzeni nazw 2|nazwa przestrzeni nazw i{{=}}Dyskusja|nazwa jednostki 2{{=}}Dyskusja szablonu:Strona|numer jednostki{{=}}2}}}} → {{Tt|{{#invoke:Pudełko|Nazwa przedmiotowej przestrzeni nazw 2|nazwa przestrzeni nazw i=Dyskusja|nazwa jednostki 2=Dyskusja szablonu:Strona|numer jednostki=2}}}} * {{Code|{{m|Pudełko|Nazwa przedmiotowej przestrzeni nazw 2|Dyskusja szablonu|nazwa przestrzeni nazw{{=}}Dyskusja|nazwa jednostki 2{{=}}Wikibooks:Strona|numer jednostki{{=}}2}}}} → {{Tt|{{#invoke:Pudełko|Nazwa przedmiotowej przestrzeni nazw 2|Dyskusja szablonu|nazwa przestrzeni nazw=Dyskusja|nazwa jednostki 2=Dyskusja Wikibooks:Strona|numer jednostki=2}}}} Powyżej dla przykładu podano parametry nie w rodzicu w szablonie, tylko w dziecku, jeśli chodzi o parametry nazw przestrzeni nazw i nazw jednostek, ale ich się za to nie powinno podawać w tych ramach, tylko w szablonach, w których wywoływane są te ramki pudełek {{Code|{{m|Pudełko}}}}, ale tak tutaj tak zrobiono by było najłatwiej sprawdzić działanie tego typu funkcji. Analogicznie możemy podawać parametry typu jednostki, np.: wywołaniu modułowym {{Code|{{m|Pudełko|Nazwa przedmiotowej przestrzeni nazw 2|typ jednostki 2{{=}}Podręcznik|nazwa jednostki 2{{=}}Dyskusja szablonu:Strona|numer jednostki{{=}}2}}}} (ale wtedy jest brana przestrzeń nazw z nazwy jednostki), ale o tym więcej w rozdziałach {{Code|{{sr|# p["Przedmiotowy typ jednostki 2"](frame,i)|p=Pudełko}}}} w „{{sr|#Funkcje typu jednostki|p=Pudełko}}”, on definiuje przestrzenie przedmiotowe, ale można użyć parametru dyskusji typu jednostki z wartością niepustą, pustą, czy nawet jej nie podamy, wtedy wyświetli się nazwa przestrzeni nazw przedmiotowej. Jeżeli typ jednostki wskazuje na przestrzeń nazw główną, wtedy się liczą parametry nazw jednostek. Również parametry typu jednostki nie powinno się podawać w dziecku w ramce, tylko w rodzicu w szablonie jako parametry, w którym ta ramka jest wywoływana, ale tutaj podano jedynie dla przykładu, jak najłatwiej sprawdzić działanie tych parametrów tej funkcji. Najpierw w funkcji nagłówku brane są parametry nazw przestrzeni nazw, a jeżeli ich nie ma, to parametry typu jednostki, a jeżeli nie ma lub parametry przestrzenne wskazują na przestrzeń główną, i nie ma nazwy jednostki, to generowane są nazwy tej funkcji na podstawie aktualnej strony. === {{Code|p["Nazwa przestrzeni nazw dyskusji 2"](frame,...)}} === Funkcja pisze nazwę przestrzeni nazw dyskusji jakikolwiek nazwy przestrzeni nazw (tzn. nazwę dyskusji nazwy przestrzenie nazw, czyli nie przedmiotowej, zamieniana jest na nią samą, czyli identyfikator przestrzeni się nie zmienia, a przedmiotową, nie dyskusji, przekształca się na dyskusji jej odpowiadającą, czyli w tym przypadku identyfikator przestrzeni zwiększa się o numer więcej), według, i nie zawsze tylko, podanej w zmiennej {{Code|nazwa przestrzeni nazw}} dla pozycja bazowej w podanych parametrach szablonu rodzicu ramki dziecka, lub dla innej pozycji należy parametr podawać w formie {{Code|nazwa przestrzeni nazw 1}}, {{Code|nazwa przestrzeni nazw 2}}, {{Code|nazwa przestrzeni nazw 3}},..., lub te parametry można podać w postaci ogólnej {{Code|nazwa przestrzeni nazw i}}. W tej funkcji trzeba też podawać parametry nazwy jednostek {{Code|nazwa jednostki}}, {{Code|nazwa jednostki 1}}, {{Code|nazwa jednostki 2}}, {{Code|nazwa jednostki 3}},... Parametry podaje się w parametrach rodzica wywołania tej funkcji {{Code|{{m|Pudełko|Nazwa przestrzeni nazw dyskusji 2}}}} (ale ich nie trzeba podawać w dziecku, ale można) i w parametrach dziecka, jeśli chodzi o zmienną {{Code|numer jednostki}}, czyli np.: {{Code|{{m|Pudełko|Nazwa przestrzeni nazw dyskusji 2|numer jednostki{{=}}<jakaś liczba całkowita dodatnia>}}}}. Te parametry przestrzenne zamiast w rodzicu w szablonie można podać w ramce dziecka, wtedy parametry dziecka mają pierwszeństwo. Przestrzeń nazw z parametrów nazw przestrzennych po przekształceniu na przedmiotową może odpowiadać wartości przestrzeni głównej, to wtedy odpowiednia przestrzeń nazw z parametru nazwy jednostki się liczy w tej funkcji, wtedy jest liczona nazwa przestrzeni nazw z tego parametru. Gdy parametry przestrzenne lub typ jednostki w drugim podejściu nie wskazują na przestrzeń główną, to wtedy działanie tej funkcji jest podobne do {{Code|{{sr|#p["Nazwa dyskusji przestrzeni nazw"](frame,...)|p=Pudełko}}}}. Definicja skrótowa funkcji: <syntaxhighlight lang="lua"> p["Nazwa przestrzeni nazw dyskusji 2"]=function(frame,czy_uwzglednic_alternatywna_nazwe,i)...end; </syntaxhighlight> Wtedy ciało funkcji tej, czyli jego definicja w środku, jest: <syntaxhighlight lang="lua"> local pudelko_pomocne_modul=require("Module:Pudełko/Pomocne"); return pudelko_pomocne_modul.Nazwa_przestrzeni_nazw_przedmiotowa_dyskusji_2(frame,czy_uwzglednic_alternatywna_nazwe,i,"dyskusja"); </syntaxhighlight> Parametry funkcji: * {{Code|frame}} - tablica ramki tablicy transportu, * {{Code|czy_uwzglednic_alternatywna_nazwe}} - czy ma uwzględniać nazwę przestrzeni nazw domyślną szablonu, dostępne wartości: {{Code|false}}, w której nazwa domyślna nie jest uwzględniana wtedy, oraz {{Code|nil}} i {{Code|true}}, które oznaczają to samo, w tym jeżeli ona jest uwzględniana, wtedy jest brany parametr pierwszy dziecka, który musi istnieć przy takiej wartości tego parametru, tzn. {{Code|{{m|Pudełko|Nazwa przestrzeni nazw dyskusji 2|Szablon}}}}, a nazwa uzyskana nazwy przestrzeni nazw jest w takim przypadku błędna, a jeżeli nazwa domyślna jest błędna, czyli {{Code|{{m|Pudełko|Nazwa przestrzeni nazw dyskusji 2|Moja przestrzeń}}}}, wtedy funkcja zwraca stan błędu {{Code|(błąd)}}. * {{Code|i}} - numer zmiennej nazwy przestrzeni nazw. Funkcja wykorzystuje {{Code|{{sr|#p.Nazwa_przestrzeni_nazw_przedmiotowa_dyskusji_2(frame,...)|p=Pudełko/Pomocne}}}} do wyznaczania ogólnego nazwy przestrzeni nazw dla pozycji bazowej i numerkowej, tzn. dla pozycji: jeden, dwa, trzy,..., itd, i ich ogólnej. Parametr ramki tablicy transportu rodzica szablonu: * {{Code|nazwa przestrzeni nazw}}, {{Code|nazwa przestrzeni nazw 1}}, {{Code|nazwa przestrzeni nazw 2}}, {{Code|nazwa przestrzeni nazw 3}},..., {{Code|nazwa przestrzeni nazw i}} - nazwy przestrzeni nazw dla pozycji bazowej oraz zwykłej i ogólnej numerkowej, * {{Code|nazwa jednostki}}, {{Code|nazwa jednostki 1}}, {{Code|nazwa jednostki 2}}, {{Code|nazwa jednostki 3}},... - nazwy jednostek dla pozycji bazowej i numerkowej, * {{Code|typ jednostki}}, {{Code|typ jednostki 1}}, {{Code|typ jednostki 2}}, {{Code|typ jednostki 3}},..., {{Code|typ jednostki i}} - typy jednostek, którym odpowiadają pewne przestrzenie przedmiotowe, dla pozycji bazowej, numerkowej i ogólnej. Parametry ramki tablicy transportu dziecka: * Parametry dziecka są takie same jak rodzica dla funkcji pudełkowej plus tu wymienione, * {{Code|numer jednostki}} - jak parametr {{Code|i}} nie został ustawiony, to wtedy liczy się ta zmienna. Przykłady: <syntaxhighlight lang="mediawiki"> {{Nazwa szablonu|nazwa przestrzeni nazw=Wikibooks|nazwa przestrzeni nazw 1=Szablon|nazwa przestrzeni nazw i=|nazwa jednostki 2=Wikibooks:Strona}} </syntaxhighlight> W dziecku powiedzmy jest wywołanie, i szukamy nazwy przestrzeni nazw o numerze dwa, która została podana, ale istnieje za to jej wersji ogólna {{Code|nazwa przestrzeni nazw i}} i domyślna {{Code|nazwa przestrzeni nazw}}, ale wtedy dla tego numerkowego liczy się to ogólne z {{Code| i}}, a ponieważ ta nazwa jest pusta, więc będziemy liczyli nazwę przestrzeni nazw z {{Code|nazwa jednostki 2}}: <syntaxhighlight lang="mediawiki"> {{#invoke:Pudełko|Nazwa przestrzeni nazw dyskusji 2|numer jednostki=2}} </syntaxhighlight> Na podstawie powyższego przykładu otrzymamy wynik o schemacie, nie wyniku, bo tam nie ma zmiennej {{Code|nazwa przestrzeni nazw 1}}, ale jest {{Code|nazwa przestrzeni nazw i}}: <syntaxhighlight lang="mediawiki"> <!-- Ale nie "nazwa przestrzeni nazw 2", bo jej nie ma, ale za to istnieje "nazwa przestrzeni nazw i"; --> <!-- nazwa przestrzeni nazw 2=nazwa przestrzeni nazw i="", a nazwa jednostki 2="Wikibooks:Strona"; --> <!-- Czyli wynik: --> Dyskusja Wikibooks <!-- Widzimy, że wygenerowała się nazwa przestrzeni nazw, którą jest przestrzeń nieprogramowa, ale dyskusji projektu, wychodząca z nazwy jednostek w tym przypadku z "nazwa jednostki 2"; --> </syntaxhighlight> Nie jest brana w tym powyższym przykładzie zmienna {{Code|nazwa przestrzeni nazw}}, bo jej nie ma, ale za to jest {{Code|nazwa przestrzeni nazw i}}, bo ona występuje jako parametr domyślny ogólny dla parametrów numerkowych. Tytaj jest używana jest zmienna {{Code|nazwa jednostki 2}} do wygenerowania ostatecznego wyniku, bo jak można zauważyć, parametry przestrzenne wskazują na przestrzeń główną, a nazwy jednostek już nie. Przykłady w wikikodzie: * {{Code|{{m|Pudełko|Nazwa przestrzeni nazw dyskusji 2|numer jednostki{{=}}2}}}} → {{Tt|{{#invoke:Pudełko|Nazwa przestrzeni nazw dyskusji 2|numer jednostki=2}}}} * {{Code|{{m|Pudełko|Nazwa przestrzeni nazw dyskusji 2|Szablon|nazwa przestrzeni nazw i{{=}}Moja przestrzeń|numer jednostki{{=}}2}}}} → {{Tt|{{#invoke:Pudełko|Nazwa przestrzeni nazw dyskusji 2|Szablon|nazwa przestrzeni nazw i=Moja przestrzeń|numer jednostki=2}}}} * {{Code|{{m|Pudełko|Nazwa przestrzeni nazw dyskusji 2|nazwa przestrzeni nazw 2{{=}}|nazwa jednostki 2{{=}}Szablon:Strona|numer jednostki{{=}}2}}}} → {{Tt|{{#invoke:Pudełko|Nazwa przestrzeni nazw dyskusji 2|nazwa przestrzeni nazw 2=|nazwa jednostki 2=Szablon:Strona|numer jednostki=2}}}} * {{Code|{{m|Pudełko|Nazwa przestrzeni nazw dyskusji 2|nazwa przestrzeni nazw i{{=}}|nazwa jednostki 2{{=}}Szablon:Strona|numer jednostki{{=}}2}}}} → {{Tt|{{#invoke:Pudełko|Nazwa przestrzeni nazw dyskusji 2|nazwa przestrzeni nazw i=|nazwa jednostki 2=Szablon:Strona|numer jednostki=2}}}} * {{Code|{{m|Pudełko|Nazwa przestrzeni nazw dyskusji 2|Szablon|nazwa przestrzeni nazw{{=}}|nazwa jednostki 2{{=}}Wikibooks:Strona|numer jednostki{{=}}2}}}} → {{Tt|{{#invoke:Pudełko|Nazwa przestrzeni nazw dyskusji 2|Szablon|nazwa przestrzeni nazw=|nazwa jednostki 2=Dyskusja Wikibooks:Strona|numer jednostki=2}}}} Powyżej dla przykładu podano parametry nie w rodzicu w szablonie, tylko w dziecku, jeśli chodzi o parametry nazw przestrzeni nazw i nazw jednostek, ale ich się za to nie powinno podawać w tych ramach, tylko w szablonach, w których wywoływane są te ramki pudełek {{Code|{{m|Pudełko}}}}, ale tak tutaj tak zrobiono by było najłatwiej sprawdzić działanie tego typu funkcji. Analogicznie możemy podawać parametry typu jednostki, np.: wywołaniu modułowym {{Code|{{m|Pudełko|Nazwa przestrzeni nazw dyskusji 2|typ jednostki 2{{=}}Podręcznik|nazwa jednostki 2{{=}}Szablon:Strona|numer jednostki{{=}}2}}}} (ale wtedy jest brana przestrzeń nazw z nazwy jednostki), ale o tym więcej w rozdziałach {{Code|{{sr|# p["Dyskusyjny typ jednostki 2"](frame,i)|p=Pudełko}}}} w „{{sr|#Funkcje typu jednostki|p=Pudełko}}”, on definiuje przestrzenie dyskusji, ale można użyć parametru dyskusji typu jednostki z obojętnie jaką wartością niepustą, czy pustą, czy nawet jej nie podamy, wtedy wyświetli się nazwa przestrzeni nazw dyskusji. Jeżeli typ jednostki wskazuje na przestrzeń nazw główną, wtedy się liczą parametry nazw jednostek. Również parametry typu jednostki nie powinno się podawać w dziecku w ramce, tylko w rodzicu w szablonie jako parametry, w którym ta ramka jest wywoływana, ale tutaj podano jedynie dla przykładu, jak najłatwiej sprawdzić działanie tych parametrów tej funkcji. Najpierw w funkcji nagłówku brane są parametry nazw przestrzeni nazw, a jeżeli ich nie ma, to parametry typu jednostki, a jeżeli nie ma lub parametry przestrzenne wskazują na przestrzeń główną, i nie ma nazwy jednostki, to generowane są nazwy tej funkcji na podstawie aktualnej strony. == Funkcje pełnych nazw jednostki == === {{Code|p["Pełna nazwa dyskusji jednostki"](frame,i)}} === === {{Code|p["Pełna nazwa przedmiotowa jednostki"](frame,i)}} === === {{Code|p["Pełna nazwa jednostki"](frame,i)}} === == Funkcje pełnych nazw jednostki drugiej wersji == === {{Code|p["Pełna nazwa dyskusji jednostki 2"](frame,i)}} === === {{Code|p["Pełna nazwa przedmiotowa jednostki 2"](frame,i)}} === === {{Code|p["Pełna nazwa jednostki 2"](frame,i)}} === == Funkcje pełnych nazw jednostki trzeciej wersji == === {{Code|p["Pełna nazwa dyskusji jednostki 3"](frame,i)}} === === {{Code|p["Pełna nazwa przedmiotowa jednostki 3"](frame,i)}} === === {{Code|p["Pełna nazwa jednostki 3"](frame,i)}} === == Funkcje nazw jednostki == === {{Code|p["Nazwa jednostki"](frame,i)}} === == Funkcje nazw jednostki drugiej wersji == === {{Code|p["Nazwa jednostki 2"](frame,i)}} === === {{Code|p["Nazwa przedmiotowa jednostki 2"](frame,i)}} === === {{Code|p["Nazwa dyskusji jednostki 2"](frame,i)}} === == Funkcje nazw przestrzeni nazw trzeciej wersji == === {{Code|p["Nazwa przestrzeni nazw 3"](frame,i)}} === Funkcja pisze nazwę przestrzeni nazw, niezależnie, czy to jest przedmiotowa, czy dyskusji, według, i nie zawsze tylko, podanej w zmiennej {{Code|nazwa przestrzeni nazw}} dla pozycja bazowej w podanych parametrach szablonu rodzicu ramki dziecka, lub dla innej pozycji należy parametr podawać w formie {{Code|nazwa przestrzeni nazw 1}}, {{Code|Nazwa przestrzeni nazw 3}}, {{Code|nazwa przestrzeni nazw 3}},..., lub te parametry można podać w postaci ogólnej {{Code|nazwa przestrzeni nazw i}}. W tej funkcji trzeba też podawać parametry nazwy jednostek {{Code|nazwa jednostki}}, {{Code|nazwa jednostki 1}}, {{Code|nazwa jednostki 2}}, {{Code|nazwa jednostki 3}},... Parametry podaje się w parametrach rodzica wywołania tej funkcji {{Code|{{m|Pudełko|Nazwa przestrzeni nazw 3}}}} (ale ich nie trzeba podawać w dziecku, ale można) i w parametrach dziecka, jeśli chodzi o zmienną {{Code|numer jednostki}}, czyli np.: {{Code|{{m|Pudełko|Nazwa przestrzeni nazw 3|numer jednostki{{=}}<jakaś liczba całkowita dodatnia>}}}}. Te parametry przestrzenne zamiast w rodzicu w szablonie można podać w ramce dziecka, wtedy parametry dziecka mają pierwszeństwo. Przestrzeń nazw z parametrów nazw przestrzennych bazowych (bez numerka) może odpowiadać wartości przestrzeni głównej, to wtedy odpowiednia przestrzeń nazw z parametru nazwy jednostki się nie liczy w tej funkcji, aby się liczyła należy użyć funkcji {{Code|{{sr|#p["Nazwa przestrzeni nazw"](frame,...)|p=Pudełko}}}}. Przestrzeń nazw z parametrów nazw przestrzennych numerkowych może odpowiadać wartości przestrzeni głównej, to wtedy odpowiednia przestrzeń nazw z parametru nazwy jednostki się liczy w tej funkcji, wtedy jest liczona nazwa przestrzeni nazw z tego parametru. Gdy parametry przestrzenne lub typ jednostki w drugim podejściu nie wskazują na przestrzeń główną, to wtedy działanie tej funkcji jest podobne do {{Code|{{sr|#p["Nazwa przestrzeni nazw 2"](frame,...)|p=Pudełko}}}}. Definicja skrótowa funkcji: <syntaxhighlight lang="lua"> p["Nazwa przestrzeni nazw 3"]=function(frame,czy_uwzglednic_alternatywna_nazwe,i)...end; </syntaxhighlight> Wtedy ciało funkcji tej, czyli jego definicja w środku, jest: <syntaxhighlight lang="lua"> -- Jest liczony numer parametru nazwy przestrzeni nazw, domyslnie chodzi tu o numer bazowy parametrów przestrzennych; local numer_jednostki=i or frame.args["numer jednostki"]; local liczba_numeru_jednostki=((numer_jednostki)and(tonumber(numer_jednostki)) or 0); local pudelko_pomocne_modul=require("Module:Pudełko/Pomocne"); -- Liczy nazwę przestrzeni nazw dyskusji na podstawie podanych parametrów; return pudelko_pomocne_modul.Uzyskanie_nazw_jednostki(frame,0,liczba_numeru_jednostki,nil,2); </syntaxhighlight> Parametry funkcji: * {{Code|frame}} - tablica ramki tablicy transportu, * {{Code|czy_uwzglednic_alternatywna_nazwe}} - czy ma uwzględniać nazwę przestrzeni nazw domyślną szablonu, dostępne wartości: {{Code|false}}, w której nazwa domyślna nie jest uwzględniana wtedy, oraz {{Code|nil}} i {{Code|true}}, które oznaczają to samo, w tym jeżeli ona jest uwzględniana, wtedy jest brany parametr pierwszy dziecka, który musi istnieć przy takiej wartości tego parametru, tzn. {{Code|{{m|Pudełko|Nazwa przestrzeni nazw 3|Szablon}}}}, a nazwa uzyskana nazwy przestrzeni nazw jest w takim przypadku błędna, a jeżeli nazwa domyślna jest błędna, czyli {{Code|{{m|Pudełko|Nazwa przestrzeni nazw 3|Moja przestrzeń}}}}, wtedy funkcja zwraca stan błędu {{Code|(błąd)}}. * {{Code|i}} - numer zmiennej nazwy przestrzeni nazw. Funkcja wykorzystuje {{Code|{{sr|#p.Uzyskanie_nazw_jednostki(frame,...)|p=Pudełko/Pomocne}}}} do wyznaczania ogólnego nazwy przestrzeni nazw dla pozycji bazowej i numerkowej, tzn. dla pozycji: jeden, dwa, trzy,..., itd, i ich ogólnej. Parametr ramki tablicy transportu rodzica szablonu: * {{Code|nazwa przestrzeni nazw}}, {{Code|nazwa przestrzeni nazw 1}}, {{Code|Nazwa przestrzeni nazw 3}}, {{Code|nazwa przestrzeni nazw 3}},..., {{Code|nazwa przestrzeni nazw i}} - nazwy przestrzeni nazw dla pozycji bazowej oraz zwykłej i ogólnej numerkowej, * {{Code|nazwa jednostki}}, {{Code|nazwa jednostki 1}}, {{Code|nazwa jednostki 2}}, {{Code|nazwa jednostki 3}},... - nazwy jednostek dla pozycji bazowej i numerkowej, * {{Code|typ jednostki}}, {{Code|typ jednostki 1}}, {{Code|typ jednostki 2}}, {{Code|typ jednostki 3}},..., {{Code|typ jednostki i}} - typy jednostek, którym odpowiadają pewne przestrzenie przedmiotowe, dla pozycji bazowej, numerkowej i ogólnej, ** {{Code|dyskusja typu jednostki}}, {{Code|dyskusja typu jednostki 1}}, {{Code|dyskusja typ jednostki 2}}, {{Code|dyskusja typ jednostki 3}},..., {{Code|dyskusja typ jednostki i}} - czy dany typ jednostki ma przedstawiać, jeśli niepusta, przestrzeń dyskusji dla pozycji bazowej, numerkowej i ogólnej. Parametry ramki tablicy transportu dziecka: * Parametry dziecka są takie same jak rodzica dla funkcji pudełkowej plus tu wymienione, * {{Code|numer jednostki}} - jak parametr {{Code|i}} nie został ustawiony, to wtedy liczy się ta zmienna. Przykłady: <syntaxhighlight lang="mediawiki"> {{Nazwa szablonu|nazwa przestrzeni nazw=Wikibooks|nazwa przestrzeni nazw=|nazwa przestrzeni nazw i=|nazwajednostki=Szablon:Strona|nazwa jednostki 2=Wikibooks:Strona}} <hr /> {{Nazwa szablonu|nazwa przestrzeni nazw=Wikibooks|nazwa przestrzeni nazw 1=Szablon|nazwa przestrzeni nazw i=|nazwa jednostki 2=Wikibooks:Strona}} </syntaxhighlight> W dziecku powiedzmy jest wywołanie, i szukamy nazwy przestrzeni nazw o numerze dwa, która została podana, ale istnieje za to jej wersji ogólna {{Code|nazwa przestrzeni nazw i}} i domyślna {{Code|nazwa przestrzeni nazw}}, ale wtedy dla tego numerkowego liczy się to ogólne z {{Code| i}}, a ponieważ ta nazwa jest pusta, więc będziemy liczyli nazwę przestrzeni nazw z {{Code|nazwa jednostki 2}}: <syntaxhighlight lang="mediawiki"> {{#invoke:Pudełko|Nazwa przestrzeni nazw 3}} <hr /> {{#invoke:Pudełko|Nazwa przestrzeni nazw 3|numer jednostki=2}} </syntaxhighlight> Na podstawie powyższego przykładu otrzymamy wynik o schemacie, nie wyniku, bo tam nie ma zmiennej {{Code|nazwa przestrzeni nazw 1}}, ale jest {{Code|nazwa przestrzeni nazw i}}: <syntaxhighlight lang="mediawiki"> <!-- Ale nie "nazwa przestrzeni nazw""; --> <!-- nazwa przestrzeni nazw=""; --> <!-- Czyli wynik: --> <!-- wynik pusty --> <!-- Widzimy, że wygenerowała się nazwa przestrzeni nazw, którą jest przestrzeń nazw główna, jest ciągiem pustym: ""; --> <hr /> <!-- Ale nie "Nazwa przestrzeni nazw 2", bo jej nie ma, ale za to istnieje "nazwa przestrzeni nazw i"; --> <!-- nazwa przestrzeni nazw 2=nazwa przestrzeni nazw i="", a nazwa jednostki 2="Wikibooks:Strona"; --> <!-- Czyli wynik: --> Wikibooks <!-- Widzimy, że wygenerowała się nazwa przestrzeni nazw, którą jest przestrzeń nieprogramowa, ale projektu, wychodząca z nazwy jednostek w tym przypadku z "nazwa jednostki 2"; --> </syntaxhighlight> Dla parametrów bazowych nienumerkowych istnieje zmienna {{Code|nazwa przestrzeni nazw}}, której waartość jest pusta,którajest zwracana przez tą funkcję. {{Hr}} Dla parametrów numerkowych nie jest brana w tym powyższym przykładzie zmienna {{Code|nazwa przestrzeni nazw}}, bo jej nie ma, ale za to jest {{Code|nazwa przestrzeni nazw i}}, bo ona występuje jako parametr domyślny ogólny dla parametrów numerkowych. Tytaj jest używana jest zmienna {{Code|nazwa jednostki 2}} do wygenerowania ostatecznego wyniku, bo jak można zauważyć, parametry przestrzenne wskazują na przestrzeń główną, a nazwy jednostek już nie. Przykłady w wikikodzie: * {{Code|{{m|Pudełko|Nazwa przestrzeni nazw 3|nazwa przestrzeni nazw{{=}}|nazwa jednostki{{=}}Wikibooks:Strona}}}} → {{Tt|{{#invoke:Pudełko|Nazwa przestrzeni nazw 3|nazwa przestrzeni nazw=|nazwa jednostki=Wikibooks:Szablon}}}} * {{Code|{{m|Pudełko|Nazwa przestrzeni nazw 3|nazwa przestrzeni nazw 2{{=}}|nazwa jednostki 2{{=}}Wikibooks:Strona|numer jednostki{{=}}2}}}} → {{Tt|{{#invoke:Pudełko|Nazwa przestrzeni nazw 3|nazwa przestrzeni nazw 2=|nazwa jednostki 2=Wikibooks:Szablon|numer jednostki=2}}}} Powyżej dla przykładu podano parametry nie w rodzicu w szablonie, tylko w dziecku, jeśli chodzi o parametry nazw przestrzeni nazw i nazw jednostek, ale ich się za to nie powinno podawać w tych ramach, tylko w szablonach, w których wywoływane są te ramki pudełek {{Code|{{m|Pudełko}}}}, ale tak tutaj tak zrobiono by było najłatwiej sprawdzić działanie tego typu funkcji. Analogicznie możemy podawać parametry typu jednostki, np.: wywołaniu modułowym {{Code|{{m|Pudełko|Nazwa przestrzeni nazw 3|typ jednostki 2{{=}}Podręcznik|nazwa jednostki 2{{=}}Szablon:Strona|numer jednostki{{=}}2}}}} (ale wtedy jest brana przestrzeń nazw z nazwy jednostki), ale o tym więcej w rozdziałach {{Code|{{sr|#p["Typ jednostki 3"](frame,i)|p=Pudełko}}}} w „{{sr|#Funkcje typu jednostki|p=Pudełko}}”, on definiuje przestrzenie przedmiotowe, ale można użyć parametru dyskusji typu jednostki z wartością niepustą, wtedy wyświetli się nazwa przestrzeni nazw dyskusji. Jeżeli typ jednostki bazowy wskazuje na przestrzeń nazw główną, wtedy się nie liczą parametry nazw jednostek, a na numerkowy, wtedy się liczy. Również parametry typu jednostki nie powinno się podawać w dziecku w ramce, tylko w rodzicu w szablonie jako parametry, w którym ta ramka jest wywoływana, ale tutaj podano jedynie dla przykładu, jak najłatwiej sprawdzić działanie tych parametrów tej funkcji. Najpierw w funkcji nagłówku brane są parametry nazw przestrzeni nazw, a jeżeli ich nie ma, to parametry typu jednostki, a jeżeli nie ma lub parametry przestrzenne wskazują na przestrzeń główną, i nie ma nazwy jednostki, to generowane są nazwy tej funkcji na podstawie aktualnej strony. === {{Code|p["Nazwa przedmiotowej przestrzeni nazw 3"](frame,i)}} === Funkcja pisze przedmiotową nazwę przestrzeni nazw jakikolwiek nazwy przestrzeni nazw (tzn. nazwę przedmiotową nazwy przestrzenie nazw, czyli nie dyskusji, zamieniana jest na nią samą, czyli identyfikator przestrzeni się nie zmienia, a dyskusji, nie przedmiotową, przekształca się na przedmiotową jej odpowiadającą, czyli w tym przypadku identyfikator przestrzeni zmniejsza się o numer mniej), według podanej w zmiennej {{Code|nazwa przestrzeni nazw}} dla pozycja bazowej w podanych parametrach szablonu rodzicu ramki dziecka, lub dla innej pozycji należy parametr podawać w formie {{Code|nazwa przestrzeni nazw 1}}, {{Code|nazwa przestrzeni nazw 2}}, {{Code|nazwa przestrzeni nazw 3}},..., lub te parametry można podać w postaci ogólnej {{Code|nazwa przestrzeni nazw i}}. Parametry podaje się w parametrach rodzica wywołania tej funkcji {{Code|{{m|Pudełko|Nazwa przedmiotowej przestrzeni nazw 3}}}} (ale ich nie trzeba podawać w dziecku, ale można) i w parametrach dziecka, jeśli chodzi o zmienną {{Code|numer jednostki}}, czyli np.: {{Code|{{m|Pudełko|Nazwa przedmiotowej przestrzeni nazw 3|numer jednostki{{=}}<jakaś liczba całkowita dodatnia>}}}}. Te parametry przestrzenne zamiast w rodzicu w szablonie można podać w ramce dziecka, wtedy parametry dziecka mają pierwszeństwo. Parametry przestrzenne mogą mogą być podane w postaci przestrzeni przedmiotowej lub dyskusji, ale ta funkcja zawsze ją zamienia na przedmiotową. Przestrzeń nazw z parametrów nazw przestrzennych bazowych (bez numerka) może odpowiadać wartości przestrzeni głównej, to wtedy odpowiednia przestrzeń nazw z parametru nazwy jednostki się nie liczy w tej funkcji, aby się liczyła należy użyć funkcji {{Code|{{sr|#p["Nazwa przedmiotowej przestrzeni nazw"](frame,...)|p=Pudełko}}}}. Przestrzeń nazw z parametrów nazw przestrzennych numerkowych może odpowiadać wartości przestrzeni głównej, to wtedy odpowiednia przestrzeń nazw z parametru nazwy jednostki się liczy w tej funkcji, wtedy jest liczona nazwa przestrzeni nazw z tego parametru. Gdy parametry przestrzenne lub typ jednostki w drugim podejściu nie wskazują na przestrzeń główną, to wtedy działanie tej funkcji jest podobne do {{Code|{{sr|#p["Nazwa przedmiotowej przestrzeni nazw 2"](frame,...)|p=Pudełko}}}}. Definicja skrótowa funkcji: <syntaxhighlight lang="lua"> p["Nazwa przedmiotowej przestrzeni nazw 3"]=function(frame,czy_uwzglednic_alternatywna_nazwe,i)...end; </syntaxhighlight> Wtedy ciało funkcji tej, czyli jego definicja w środku, jest: <syntaxhighlight lang="lua"> -- Jest liczony numer parametru nazwy przestrzeni nazw, domyslnie chodzi tu o numer bazowy parametrów przestrzennych; local numer_jednostki=i or frame.args["numer jednostki"]; local liczba_numeru_jednostki=((numer_jednostki)and(tonumber(numer_jednostki)) or 0); local pudelko_pomocne_modul=require("Module:Pudełko/Pomocne"); -- Liczy nazwę przestrzeni nazw przedmiotową na podstawie podanych parametrów; return pudelko_pomocne_modul.Uzyskanie_nazw_jednostki(frame,1,liczba_numeru_jednostki,nil,1); </syntaxhighlight> Parametry funkcji: * {{Code|frame}} - tablica ramki tablicy transportu, * {{Code|czy_uwzglednic_alternatywna_nazwe}} - czy ma uwzględniać nazwę przestrzeni nazw domyślną szablonu, dostępne wartości: {{Code|false}}, w której nazwa domyślna nie jest uwzględniana wtedy, oraz {{Code|nil}} i {{Code|true}}, które oznaczają to samo, w tym jeżeli ona jest uwzględniana, wtedy jest brany parametr pierwszy dziecka, który musi istnieć przy takiej wartości tego parametru, tzn. {{Code|{{m|Pudełko|Nazwa przedmiotowej przestrzeni nazw 3|Dyskusja szablonu}}}} - ta nazwa domyślna zostanie zamieniona na przedmiotową, a jak ona by była przedmiotowa, to żadnej zamiany by nie było, a nazwa uzyskana z nazwy przestrzeni nazw z parametrów przestrzennych jest w takim przypadku błędna, to w takim razie brany jest ten parametr, a jeżeli ta nazwa domyślna jest błędna, czyli {{Code|{{m|Pudełko|Nazwa przedmiotowej przestrzeni nazw 3|Moja przestrzeń}}}}, wtedy funkcja zwraca stan błędu {{Code|(błąd)}}. * {{Code|i}} - numer zmiennej nazwy przestrzeni nazw. Funkcja wykorzystuje {{Code|{{sr|#p.Uzyskanie_nazw_jednostki(frame,...)|p=Pudełko/Pomocne}}}} do wyznaczania ogólnego nazwy przestrzeni nazw dla pozycji bazowej i numerkowej, tzn. dla pozycji: jeden, dwa, trzy,..., itd, i ich ogólnej. Parametr ramki tablicy transportu rodzica szablonu: * {{Code|nazwa przestrzeni nazw}}, {{Code|nazwa przestrzeni nazw 1}}, {{Code|nazwa przestrzeni nazw 2}}, {{Code|nazwa przestrzeni nazw 3}},..., {{Code|nazwa przestrzeni nazw i}} - nazwy przestrzeni nazw dla pozycji bazowej oraz zwykłej i ogólnej numerkowej, * {{Code|typ jednostki}}, {{Code|typ jednostki 1}}, {{Code|typ jednostki 2}}, {{Code|typ jednostki 3}},..., {{Code|typ jednostki i}} - typy jednostek, którym odpowiadają pewne przestrzenie przedmiotowe, dla pozycji bazowej, numerkowej i ogólnej. Parametry ramki tablicy transportu dziecka: * Parametry dziecka są takie same jak rodzica dla funkcji pudełkowej plus tu wymienione, * {{Code|numer jednostki}} - jak parametr {{Code|i}} nie został ustawiony, to wtedy liczy się ta zmienna. Przykłady: <syntaxhighlight lang="mediawiki"> {{Nazwa szablonu|nazwa przestrzeni nazw=Wikibooks|nazwa przestrzeni nazw=|nazwa przestrzeni nazw i=|nazwajednostki=Szablon:Strona|nazwa jednostki=Dyskusja Wikibooks:Strona}} <hr /> {{Nazwa szablonu|nazwa przestrzeni nazw=Wikibooks|nazwa przestrzeni nazw 1=Szablon|nazwa przestrzeni nazw i=|nazwa jednostki 2=Dyskusja Wikibooks:Strona}} </syntaxhighlight> W dziecku powiedzmy jest wywołanie, i szukamy nazwy przestrzeni nazw o numerze dwa, która nie została podana, ale istnieje za to jej wersji ogólna {{Code|nazwa przestrzeni nazw i}} i domyślna {{Code|nazwa przestrzeni nazw}}: <syntaxhighlight lang="mediawiki"> {{#invoke:Pudełko|Nazwa przedmiotowej przestrzeni nazw 3|numer jednostki=1}} </syntaxhighlight> Na podstawie powyższego przykładu otrzymamy wynik o schemacie, nie wyniku, bo tam nie ma zmiennej {{Code|nazwa przestrzeni nazw 1}}, ale jest {{Code|nazwa przestrzeni nazw i}}: <syntaxhighlight lang="mediawiki"> <!-- Ale nie "nazwa przestrzeni nazw""; --> <!-- nazwa przestrzeni nazw=""; --> <!-- Czyli wynik: --> <!-- wynik pusty --> <!-- Widzimy, że wygenerowała się nazwa przestrzeni nazw, którą jest przestrzeń nazw główna, jest ciągiem pustym: ""; --> <hr /> <!-- Ale nie "Nazwa przestrzeni nazw 2", bo jej nie ma, ale za to istnieje "nazwa przestrzeni nazw i"; --> <!-- nazwa przestrzeni nazw 2=nazwa przestrzeni nazw i="", a nazwa jednostki 2="Dyskusja Wikibooks:Strona"; --> <!-- Czyli wynik: --> Wikibooks <!-- Widzimy, że wygenerowała się nazwa przestrzeni nazw, którą jest przestrzeń nieprogramowa, ale projektu, wychodząca z nazwy jednostek w tym przypadku z "nazwa jednostki 2"; --> </syntaxhighlight> Nie jest brana w tym powyższym przykładzie zmienna {{Code|nazwa przestrzeni nazw}}, bo jej nie ma, ale za to jest {{Code|nazwa przestrzeni nazw i}}, bo ona występuje jako parametr domyślny ogólny dla parametrów numerkowych. Przykłady w wikikodzie: * {{Code|{{m|Pudełko|Nazwa przestrzeni nazw 3|nazwa przestrzeni nazw{{=}}|nazwa jednostki{{=}}Dyskusja Wikibooks:Strona}}}} → {{Tt|{{#invoke:Pudełko|Nazwa przestrzeni nazw 3|nazwa przestrzeni nazw=|nazwa jednostki=Dyskusja Wikibooks:Szablon}}}} * {{Code|{{m|Pudełko|Nazwa przestrzeni nazw 3|nazwa przestrzeni nazw 2{{=}}|nazwa jednostki 2{{=}}Dyskusja Wikibooks:Strona|numer jednostki{{=}}2}}}} → {{Tt|{{#invoke:Pudełko|Nazwa przestrzeni nazw 3|nazwa przestrzeni nazw 2=|nazwa jednostki 2=Dyskusja Wikibooks:Szablon|numer jednostki=2}}}} Powyżej dla przykładu podano parametry nie w rodzicu w szablonie, tylko w dziecku, jeśli chodzi o parametry nazw przestrzeni nazw, ale ich się za to nie powinno podawać w tych ramach, tylko w szablonach, w których wywoływane są te ramki pudełek {{Code|{{m|Pudełko}}}}, ale tak tutaj tak zrobiono by było najłatwiej sprawdzić działanie tego typu funkcji. Analogicznie możemy podawać parametry typu jednostki, np.: wywołaniu modułowym {{Code|{{m|Pudełko|Nazwa przedmiotowej przestrzeni nazw 3|typ jednostki 2{{=}}strona szablonu|numer jednostki{{=}}2}}}}, ale o tym więcej w rozdziałach {{Code|{{sr|# p["Przedmiotowy typ jednostki 3"](frame,i)|p=Pudełko}}}} w „{{sr|#Funkcje typu jednostki|p=Pudełko}}”, ale wtedy ta sama nazwa przestrzeni nazw reprezentowana przez {{Parametr|typ jednostki 2|strona szablonu}}, jest zamieniana na to samo, lepiej jest tutaj używać parametrów przestrzennych nazw niż typu jednostki, bo typ jednostki ma taką samą wartość dla przestrzeni przedmiotowej, co dyskusji. Tutaj parametr dyskusji typu jednostki bazowy i numerkowy ogólny, czy szczegółowy, nie gra roli, bo nawet, gdy wygenerujemy nazwę przestrzeni dyskusji za pomoca tego parametru, to i tak otrzymamy na samym końcu jego nazwę przedmiotową. Jeżeli typ jednostki bazowy wskazuje na przestrzeń nazw główną, wtedy się nie liczą parametry nazw jednostek, a na numerkowy, wtedy się liczy. Również parametry typu jednostki nie powinno się podawać w dziecku w ramce, tylko w rodzicu w szablonie jako parametry, w którym ta ramka jest wywoływana, ale tutaj podano jedynie dla przykładu, jak najłatwiej sprawdzić działanie tych parametrów tej funkcji. Najpierw w funkcji nagłówku brane są parametry nazw przestrzeni nazw, a jeżeli ich nie ma, to parametry typu jednostki, a jeżeli nie ma, to generowane są nazwy na podstawie aktualnego modułu. === {{Code|p["Nazwa przestrzeni nazw dyskusji 3"](frame,i)}} === == Funkcje nazw jednostki trzeciej wersji == === {{Code|p["Nazwa jednostki 3"](frame,i)}} === === {{Code|p["Nazwa przedmiotowa jednostki 3"](frame,i)}} === === {{Code|p["Nazwa dyskusji jednostki 3"](frame,i)}} === == Funkcje typu jednostki == === {{Code|p["Typ jednostki"](frame,i)}} === === {{Code|p["Typ jednostki 2"](frame,i)}} === === {{Code|p["Typ jednostki 3"](frame,i)}} === === Funkcje typu jednostki przedmiotowe === ==== {{Code|p["Przedmiotowy typ jednostki"](frame,i)}} ==== ==== {{Code|p["Przedmiotowy typ jednostki 2"](frame,i)}} ==== ==== {{Code|p["Przedmiotowy typ jednostki 3"](frame,i)}} ==== === Fukcje typu jednostki dyskusji === ==== {{Code|p["Dyskusyjny typ jednostki"](frame,i)}} ==== ==== {{Code|p["Dyskusyjny typ jednostki 2"](frame,i)}} ==== ==== {{Code|p["Dyskusyjny typ jednostki 3"](frame,i)}} ==== == Funkcje chech pudełka == === {{Code|p["Cecha pudełka"](frame)}} === === {{Code|p["Przedmiotowa cecha pudełka"](frame)}} === === {{Code|p["Dyskusyjna cecha pudełka"](frame)}} === == Fukcje ogólnego pudełka == === {{Code|p["Ogólne pudełko"](frame)}} === == Funkcje ogólne == === {{Code|p["Tekst pudełka"](frame)}} === == Funkcje błędów pudełka == === {{Code|p["Błędy pudełka"](frame)}} === === {{Code|p["Przedmiotowe błędy pudełka"](frame)}} === === {{Code|p["Dyskusyjne błędy pudełka"](frame)}} === == Funkcje nazw stron == === {{Code|p["Nazwa strony głównej projektu"](frame,i)}} === === {{Code|p["Nazwa strony głównej dla dzieci projektu"](frame,i)}} === == Funkcje kodów == === {{Code|p["Kod języka"](frame,i)}} === === {{Code|p["Kod projektu"](frame,i)}} === === {{Code|p["Klucz projektu"](frame,i)}} === == Funkcje wiki == === {{Code|p["Inny niż język bieżący wiki"](frame)}} === === {{Code|p["Inne niż lokalne wiki"](frame)}} === === {{Code|p["Inne niż bieżące wiki"](frame)}} === == Funkcje typów parametrów, czy podane je == === {{Code|p["Podano parametry nienazwane"](frame)}} === === {{Code|p["Podano parametry numerowane"](frame)}} === === {{Code|p["Podano parametry nazwane"](frame)}} === == Funkcje kodów tego projektu == === {{Code|p["Kod projektu tego projektu"](frame)}} === === {{Code|p["Kod języka tego projektu"](frame)}} === === {{Code|p["Klucz projektu tego projektu"](frame)}} === == Funkcje stron == === {{Code|p["Strona główna tego projektu"](frame)}} === === {{Code|p["Strona główna dla dzieci tego projektu"](frame)}} === == Funkcje nazw stron drugiej wersji == === {{Code|p["Nazwa strony głównej dla dzieci projektu 2"](frame)}} === === {{Code| p["Nazwa strony głównej projektu 2"](frame)}} === {{BrClear}} <noinclude><!-- -->{{ProstaStronaKoniec}}<!-- -->{{Kategoria|Opisy funkcji, w Lua w Scribunto, w modułach}}<!-- --></noinclude> 2xy5wuqi8fnh1ngwbdky68kt8p1gynu 540419 540418 2026-04-23T19:48:59Z Persino 2851 /* {{Code|p["Nazwa przestrzeni nazw dyskusji 3"](frame,i)}} */ 540419 wikitext text/x-wiki <noinclude>{{ProstaStronaStart | nagłówek = {{Podrozdział|{{ld2|Pudełko}}|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 pudelko_modul=require("Module:Pudełko"); </syntaxhighlight> dzięki, któremu można wypisywać funkcje należącego do niego. Posługuje się na parametrach pudełkowych {{Parametr|nazwa przestrzeni nazw}} (czy też bez numerka {{Parametr|nazwa przestrzeni nazw i}} dla tego numerowanego) lub te z numerkiem po jednej spacji w nich (ale nie dla tego z końcówką {{Code| i}}) mogą zostać użyte jako parametry szablonu. Moduł {{Code|{{ld2|Pudełko}}}} przedstawia funkcje nazw w oparciu o funkcje nazw {{Code|{{ld2|Nazwy}}}}, generuje on nazwy za pomocą parametrów pudełkowych podanych poniżej. Parametr {{Parametr|nazwa jednostki}} (lub parametr {{Parametr|cel}} dla numerka tego pierwszego, tego alternatywnego), lub te z numerkiem po jednej spacji w nazwie parametru, albo numerowane numerkami {{Code|1}}, {{Code|2}},..., mogą zostać użyte jako parametry szablonu. Parametry określające rodzaj jednostki {{Parametr|typ jednostki}} z {{Parametr|dyskusja typu jednostki}}, itp. w wersjach z numerkiem po jednej spacji w nich mogą zostać użyte jako parametry szablonu. A te tymi numerowanymi liczbami naturalnymi {{Tt|nazwy jednostki}} od jedynki wzwyż poprzez szablon, w którym są one użyte, one też mogą być użyte z dwukropkiem, te numerowane, na samym początku nazwy, wtedy one są traktowane jako pełne nazwy strony, i wtedy one nie zostaną z interpretowane, że do nich trzeba użyć parametr odpowiedni z nazwą przetrzeni nazw z tego numerowanego, czy ogólny, aby utworzyć znów inną pełną nazwę strony dla tego numerka. Zestawienie: * {{Code|nazwa przestrzeni nazw}} i {{Code|nazwa przestrzeni nazw i}} (ogólna nazwa przestrzeni nazw dla wszystkich numerków, i tych numerowanych jednostek) - i to pierwsze z numerkiem, tzn. {{Code|nazwa przestrzeni nazw 1}}, {{Code|nazwa przestrzeni nazw 2}}, ..., * {{Code|nazwa jednostki}} - i te z numerkiem: {{Code|nazwa jednostki 1}}, {{Code|nazwa jednostki 2}}, ..., lub gdy jest zamiast tego parametrem numerowany, {{Code|1}}, {{Code|2}},..., który dla tego pierwszego może być uznany jako: {{Code|cel}} {{=}} {{Code|1}}, * {{Code|typ jednostki}} (parametr bazowy) i {{Code|typ jednostki i}} (parametr domyślny numerkowy) - i te z numerkiem: {{Code|typ jednostki 1}}, {{Code|typ jednostki 2}}, ..., tzn. gdy chcemy określić z jakim typem jednostki mamy do czynienia w zależności do jakiej przestrzeni nazw należy, a w danej, czy jest on np. programowy, czy tylko jest opisem, jak to bywa w szablonach {{Np|Template|link=tak}}, podobnie jest w przypadku {{Np|Module|link=tak}}, czy jak jest w innych przestrzeniach nazw, ** {{Code|dyskusja typu jednostki}} (parametr bazowy) i {{Code|dyskusja typu jednostki i}} (parametr domyślny numerkowy) - i te z numerkiem: {{Code|dyskusja typu jednostki 1}}, {{Code|dyskusja typu jednostki 2}}, ..., gdy chcemy określić wartością niepustą,że chodzi tutaj o typ jednostki. == {{Code|p.CzyNiepoprawnaNazwa(nazwa_jednostki)}} == Funkcja sprawdzajaca, czy jest poprawnie podana nazwa jednostki, czy ma poprawną nazwę. Znakami tymi, z których nie powinna składać się nazwa jest {{Code|<nowiki>{}<>|[]#\n</nowiki>}} i dodatkowo znak {{Code|&#127;}} (kod {{Code|{{Nowiki|&#127;}}}}). Też nie może składać się z trzech znaków tyldy, tzn. {{Code|<nowiki>~~~</nowiki>}}. Również w swojej budowie nie może składać się ze kodów {{Strong|HTML}} literowych o wzorze {{Code|{{Nowiki|&(%a+);}}}}. Natomiast może składać się z {{Code|{{Nowiki|&#(%d+);}}}} i {{Code|{{Nowiki|&#x(%x+);}}}}, ale w pierw te kody muszą być zamienione na normalne znaki. Skrótowa definicja funkcji: <syntaxhighlight lang="lua"> function p.CzyNiepoprawnaNazwa(nazwa_jednostki)...end; </syntaxhighlight> Wtedy ciało funkcji tej, czyli jego definicja w środku, jest: <syntaxhighlight lang="lua"> -- Moduł: "Moduł:Html/dane", służy do ładowania znaku o kodzie HTML "&#127;"; local html_dane_modul=mw.loadData("Module:Html/dane"); return mw.ustring.match(nazwa_jednostki,"[{}<>|%[%]#\n"..html_dane_modul.znak_127.."]+") or mw.ustring.match(nazwa_jednostki,"~~~") or mw.ustring.match(nazwa_jednostki,"&(%a+);"); </syntaxhighlight> Parametry: * {{Code|nazwa_jednostki}} - nazwa jednostki do sprawdzenia. Przykłady: <syntaxhighlight lang="lua"> local pudelko_modul=require("Module:Pudełko"); -- Podana przykładowa niepoprawna nazwa jedostki local nazwa_jednostki="Nazwa pliku [[Nazwa linku w pliku]]"; -- Fukcja zwróci wartość: local czy_poprawna_nazwa=true; local czy_poprawna_nazwa=pudelko_modul.CzyNiepoprawnaNazwa(nazwa_jednostki); </syntaxhighlight> == Funkcje nazw przestrzeni nazw == === {{Code|p["Nazwa przestrzeni nazw"](frame,...)}} === Funkcja pisze nazwę przestrzeni nazw, niezależnie, czy to jest przedmiotowa, czy dyskusji, według podanej w zmiennej {{Code|nazwa przestrzeni nazw}} dla pozycja bazowej w podanych parametrach szablonu rodzicu ramki dziecka, lub dla innej pozycji należy parametr podawać w formie {{Code|nazwa przestrzeni nazw 1}}, {{Code|nazwa przestrzeni nazw 2}}, {{Code|nazwa przestrzeni nazw 3}},..., lub te parametry można podać w postaci ogólnej {{Code|nazwa przestrzeni nazw i}}. Parametry podaje się w parametrach rodzica wywołania tej funkcji {{Code|{{m|Pudełko|Nazwa przestrzeni nazw}}}} (ale ich nie trzeba podawać w dziecku, ale można) i w parametrach dziecka, jeśli chodzi o zmienną {{Code|numer jednostki}}, czyli np.: {{Code|{{m|Pudełko|Nazwa przestrzeni nazw|numer jednostki{{=}}<jakaś liczba całkowita dodatnia>}}}}. Te parametry przestrzenne zamiast w rodzicu w szablonie można podać w ramce dziecka, wtedy parametry dziecka mają pierwszeństwo. Przestrzeń nazw z parametrów nazw przestrzennych może odpowiadać wartości przestrzeni głównej, to wtedy odpowiednia przestrzeń nazw z parametru nazwy jednostki się nie liczy w tej funkcji, aby się liczyła należy użyć funkcji {{Code|{{sr|#p["Nazwa przestrzeni nazw 2"](frame,...)|p=Pudełko}}}}. Definicja skrótowa funkcji: <syntaxhighlight lang="lua"> p["Nazwa przestrzeni nazw"]=function(frame,czy_uwzglednic_alternatywna_nazwe,i)...end; </syntaxhighlight> Wtedy ciało funkcji tej, czyli jego definicja w środku, jest: <syntaxhighlight lang="lua"> -- Jest liczony numer parametru nazwy przestrzeni nazw, domyslnie chodzi tu o numer bazowy parametrów przestrzennych; local numer_jednostki=i or frame.args["numer jednostki"]; local liczba_numer_jednostki=((numer_jednostki)and(tonumber(numer_jednostki))or 0); local pudelko_pomocne_modul=require("Module:Pudełko/Pomocne"); -- Liczy nazwę przestrzeni nazw na podstawie podanych parametrów; return pudelko_pomocne_modul.Nazwa_przestrzeni_nazw(frame,0, czy_uwzglednic_alternatywna_nazwe,liczba_numer_jednostki); </syntaxhighlight> Parametry funkcji: * {{Code|frame}} - tablica ramki tablicy transportu, * {{Code|czy_uwzglednic_alternatywna_nazwe}} - czy ma uwzględniać nazwę przestrzeni nazw domyślną szablonu, dostępne wartości: {{Code|false}}, w której nazwa domyślna nie jest uwzględniana wtedy, oraz {{Code|nil}} i {{Code|true}}, które oznaczają to samo, w tym jeżeli ona jest uwzględniana, wtedy jest brany parametr pierwszy dziecka, który musi istnieć przy takiej wartości tego parametru, tzn. {{Code|{{m|Pudełko|Nazwa przestrzeni nazw|Szablon}}}}, a nazwa uzyskana nazwy przestrzeni nazw jest w takim przypadku błędna, a jeżeli nazwa domyślna jest błędna, czyli {{Code|{{m|Pudełko|Nazwa przestrzeni nazw|Moja przestrzeń}}}}, wtedy funkcja zwraca stan błędu {{Code|(błąd)}}. * {{Code|i}} - numer zmiennej nazwy przestrzeni nazw. Funkcja wykorzystuje {{Code|{{sr|#p.Nazwa_przestrzeni_nazw(frame,...)|p=Pudełko/Pomocne}}}} do wyznaczania ogólnego nazwy przestrzeni nazw dla pozycji bazowej i numerkowej, tzn. dla pozycji: jeden, dwa, trzy,..., itd, i ich ogólnej. Parametr ramki tablicy transportu rodzica szablonu: * {{Code|nazwa przestrzeni nazw}}, {{Code|nazwa przestrzeni nazw 1}}, {{Code|nazwa przestrzeni nazw 2}}, {{Code|nazwa przestrzeni nazw 3}},..., {{Code|nazwa przestrzeni nazw i}} - nazwy przestrzeni nazw dla pozycji bazowej oraz zwykłej i ogólnej numerkowej, * {{Code|typ jednostki}}, {{Code|typ jednostki 1}}, {{Code|typ jednostki 2}}, {{Code|typ jednostki 3}},..., {{Code|typ jednostki i}} - typy jednostek, którym odpowiadają pewne przestrzenie przedmiotowe, dla pozycji bazowej, numerkowej i ogólnej, ** {{Code|dyskusja typu jednostki}}, {{Code|dyskusja typu jednostki 1}}, {{Code|dyskusja typ jednostki 2}}, {{Code|dyskusja typ jednostki 3}},..., {{Code|dyskusja typ jednostki i}} - czy dany typ jednostki ma przedstawiać, jeśli niepusta, przestrzeń dyskusji dla pozycji bazowej, numerkowej i ogólnej. Parametry ramki tablicy transportu dziecka: * Parametry dziecka są takie same jak rodzica dla funkcji pudełkowej plus tu wymienione, * {{Code|numer jednostki}} - jak parametr {{Code|i}} nie został ustawiony, to wtedy liczy się ta zmienna. Przykłady: <syntaxhighlight lang="mediawiki"> {{Nazwa szablonu|nazwa przestrzeni nazw=Wikibooks|nazwa przestrzeni nazw 2=Szablon|nazwa przestrzeni nazw i=Moduł}} </syntaxhighlight> W dziecku powiedzmy jest wywołanie, i szukamy nazwy przestrzeni nazw o numerze dwa, która nie została podana, ale istnieje za to jej wersji ogólna {{Code|nazwa przestrzeni nazw i}} i domyślna {{Code|nazwa przestrzeni nazw}}: <syntaxhighlight lang="mediawiki"> {{#invoke:Pudełko|Nazwa przestrzeni nazw|numer jednostki=1}} </syntaxhighlight> Na podstawie powyższego przykładu otrzymamy wynik o schemacie, nie wyniku, bo tam nie ma zmiennej {{Code|nazwa przestrzeni nazw 1}}, ale jest {{Code|nazwa przestrzeni nazw i}}: <syntaxhighlight lang="mediawiki"> <!-- Ale nie "nazwa przestrzeni nazw", bo jej nie ma, ale za to istnieje "nazwa przestrzeni nazw i"; --> <!-- nazwa przestrzeni nazw 2=nazwa przestrzeni nazw i=Moduł; --> <!-- Czyli wynik: --> Moduł <!-- Widzimy, że wygenerowała się nazwa przestrzeni nazw, którą jest przestrzeń programowa, którą również jest "Szablon"; --> </syntaxhighlight> Nie jest brana w tym powyższym przykładzie zmienna {{Code|nazwa przestrzeni nazw}}, bo jej nie ma, ale za to jest {{Code|nazwa przestrzeni nazw i}}, bo ona występuje jako parametr domyślny ogólny dla parametrów numerkowych. Przykłady w wikikodzie: * {{Code|{{m|Pudełko|Nazwa przestrzeni nazw|numer jednostki{{=}}2}}}} → {{Tt|{{#invoke:Pudełko|Nazwa przestrzeni nazw|numer jednostki=2}}}} * {{Code|{{m|Pudełko|Nazwa przestrzeni nazw|Szablon|nazwa przestrzeni nazw i{{=}}Moja przestrzeń|numer jednostki{{=}}2}}}} → {{Tt|{{#invoke:Pudełko|Nazwa przestrzeni nazw|Szablon|nazwa przestrzeni nazw i=Moja przestrzeń|numer jednostki=2}}}} * {{Code|{{m|Pudełko|Nazwa przestrzeni nazw|nazwa przestrzeni nazw 2{{=}}Szablon|numer jednostki{{=}}2}}}} → {{Tt|{{#invoke:Pudełko|Nazwa przestrzeni nazw|nazwa przestrzeni nazw 2=Szablon|numer jednostki=2}}}} * {{Code|{{m|Pudełko|Nazwa przestrzeni nazw|nazwa przestrzeni nazw 2{{=}}Szablon|numer jednostki{{=}}2}}}} → {{Tt|{{#invoke:Pudełko|Nazwa przestrzeni nazw|nazwa przestrzeni nazw i=Szablon|numer jednostki=2}}}} * {{Code|{{m|Pudełko|Nazwa przestrzeni nazw|nazwa przestrzeni nazw{{=}}Szablon|numer jednostki{{=}}2}}}} → {{Tt|{{#invoke:Pudełko|Nazwa przestrzeni nazw|nazwa przestrzeni nazw=Szablon|numer jednostki=2}}}} Powyżej dla przykładu podano parametry nie w rodzicu w szablonie, tylko w dziecku, jeśli chodzi o parametry nazw przestrzeni nazw, ale ich się za to nie powinno podawać w tych ramach, tylko w szablonach, w których wywoływane są te ramki pudełek {{Code|{{m|Pudełko}}}}, ale tak tutaj tak zrobiono by było najłatwiej sprawdzić działanie tego typu funkcji. Analogicznie możemy podawać parametry typu jednostki, np.: wywołaniu modułowym {{Code|{{m|Pudełko|Nazwa przestrzeni nazw|typ jednostki 2{{=}}strona szablonu|numer jednostki{{=}}2}}}}, ale o tym więcej w rozdziałach {{Code|{{sr|# p["Typ jednostki"](frame,i)|p=Pudełko}}}} w „{{sr|#Funkcje typu jednostki|p=Pudełko}}”, on definiuje przestrzenie przedmiotowe, ale można użyć parametru dyskusji typu jednostki z wartością niepustą, wtedy wyświetli się nazwa przestrzeni nazw dyskusji. Również parametry typu jednostki nie powinno się podawać w dziecku w ramce, tylko w rodzicu w szablonie jako parametry, w którym ta ramka jest wywoływana, ale tutaj podano jedynie dla przykładu, jak najłatwiej sprawdzić działanie tych parametrów tej funkcji. Najpierw w funkcji nagłówku brane są parametry nazw przestrzeni nazw, a jeżeli ich nie ma, to parametry typu jednostki, a jeżeli nie ma, to generowane są nazwy na podstawie aktualnego modułu. === {{Code|p["Nazwa przedmiotowej przestrzeni nazw"](frame,...)}} === Funkcja pisze przedmiotową nazwę przestrzeni nazw jakikolwiek nazwy przestrzeni nazw (tzn. nazwę przedmiotową nazwy przestrzenie nazw, czyli nie dyskusji, zamieniana jest na nią samą, czyli identyfikator przestrzeni się nie zmienia, a dyskusji, nie przedmiotową, przekształca się na przedmiotową jej odpowiadającą, czyli w tym przypadku identyfikator przestrzeni zmniejsza się o numer mniej), według podanej w zmiennej {{Code|nazwa przestrzeni nazw}} dla pozycja bazowej w podanych parametrach szablonu rodzicu ramki dziecka, lub dla innej pozycji należy parametr podawać w formie {{Code|nazwa przestrzeni nazw 1}}, {{Code|nazwa przestrzeni nazw 2}}, {{Code|nazwa przestrzeni nazw 3}},..., lub te parametry można podać w postaci ogólnej {{Code|nazwa przestrzeni nazw i}}. Parametry podaje się w parametrach rodzica wywołania tej funkcji {{Code|{{m|Pudełko|Nazwa przedmiotowej przestrzeni nazw}}}} (ale ich nie trzeba podawać w dziecku, ale można) i w parametrach dziecka, jeśli chodzi o zmienną {{Code|numer jednostki}}, czyli np.: {{Code|{{m|Pudełko|Nazwa przedmiotowej przestrzeni nazw|numer jednostki{{=}}<jakaś liczba całkowita dodatnia>}}}}. Te parametry przestrzenne zamiast w rodzicu w szablonie można podać w ramce dziecka, wtedy parametry dziecka mają pierwszeństwo. Parametry przestrzenne mogą mogą być podane w postaci przestrzeni przedmiotowej lub dyskusji, ale ta funkcja zawsze ją zamienia na przedmiotową. Przestrzeń nazw z parametrów nazw przestrzennych może odpowiadać wartości przestrzeni głównej, to wtedy odpowiednia przestrzeń nazw z parametru nazwy jednostki się nie liczy w tej funkcji, aby się liczyła należy użyć funkcji {{Code|{{sr|#p["Nazwa przedmiotowej przestrzeni nazw 2"](frame,...)|p=Pudełko}}}}. Definicja skrótowa funkcji: <syntaxhighlight lang="lua"> p["Nazwa przedmiotowej przestrzeni nazw"]=function(frame,czy_uwzglednic_alternatywna_nazwe,i)...end; </syntaxhighlight> Wtedy ciało funkcji tej, czyli jego definicja w środku, jest: <syntaxhighlight lang="lua"> -- Jest liczony numer parametru nazwy przestrzeni nazw, domyslnie chodzi tu o numer bazowy parametrów przestrzennych; local numer_jednostki=i or frame.args["numer jednostki"]; local liczba_numer_jednostki=((numer_jednostki)and(tonumber(numer_jednostki))or 0); local pudelko_pomocne_modul=require("Module:Pudełko/Pomocne"); -- Liczy nazwę przestrzeni nazw przedmiotową na podstawie podanych parametrów; return pudelko_pomocne_modul.Nazwa_przestrzeni_nazw(frame,1, czy_uwzglednic_alternatywna_nazwe,liczba_numer_jednostki); </syntaxhighlight> Parametry funkcji: * {{Code|frame}} - tablica ramki tablicy transportu, * {{Code|czy_uwzglednic_alternatywna_nazwe}} - czy ma uwzględniać nazwę przestrzeni nazw domyślną szablonu, dostępne wartości: {{Code|false}}, w której nazwa domyślna nie jest uwzględniana wtedy, oraz {{Code|nil}} i {{Code|true}}, które oznaczają to samo, w tym jeżeli ona jest uwzględniana, wtedy jest brany parametr pierwszy dziecka, który musi istnieć przy takiej wartości tego parametru, tzn. {{Code|{{m|Pudełko|Nazwa przedmiotowej przestrzeni nazw|Dyskusja szablonu}}}} - ta nazwa domyślna zostanie zamieniona na przedmiotową, a jak ona by była przedmiotowa, to żadnej zamiany by nie było, a nazwa uzyskana z nazwy przestrzeni nazw z parametrów przestrzennych jest w takim przypadku błędna, to w takim razie brany jest ten parametr, a jeżeli ta nazwa domyślna jest błędna, czyli {{Code|{{m|Pudełko|Nazwa przedmiotowej przestrzeni nazw|Moja przestrzeń}}}}, wtedy funkcja zwraca stan błędu {{Code|(błąd)}}. * {{Code|i}} - numer zmiennej nazwy przestrzeni nazw. Funkcja wykorzystuje {{Code|{{sr|#p.Nazwa_przestrzeni_nazw(frame,...)|p=Pudełko/Pomocne}}}} do wyznaczania ogólnego nazwy przestrzeni nazw dla pozycji bazowej i numerkowej, tzn. dla pozycji: jeden, dwa, trzy,..., itd, i ich ogólnej. Parametr ramki tablicy transportu rodzica szablonu: * {{Code|nazwa przestrzeni nazw}}, {{Code|nazwa przestrzeni nazw 1}}, {{Code|nazwa przestrzeni nazw 2}}, {{Code|nazwa przestrzeni nazw 3}},..., {{Code|nazwa przestrzeni nazw i}} - nazwy przestrzeni nazw dla pozycji bazowej oraz zwykłej i ogólnej numerkowej, * {{Code|typ jednostki}}, {{Code|typ jednostki 1}}, {{Code|typ jednostki 2}}, {{Code|typ jednostki 3}},..., {{Code|typ jednostki i}} - typy jednostek, którym odpowiadają pewne przestrzenie przedmiotowe, dla pozycji bazowej, numerkowej i ogólnej. Parametry ramki tablicy transportu dziecka: * Parametry dziecka są takie same jak rodzica dla funkcji pudełkowej plus tu wymienione, * {{Code|numer jednostki}} - jak parametr {{Code|i}} nie został ustawiony, to wtedy liczy się ta zmienna. Przykłady: <syntaxhighlight lang="mediawiki"> {{Nazwa szablonu|nazwa przestrzeni nazw=Dyskusja Wikibooks|nazwa przestrzeni nazw 2=Dyskusja szablonu|nazwa przestrzeni nazw i=Dyskusja modułu}} </syntaxhighlight> W dziecku powiedzmy jest wywołanie, i szukamy nazwy przestrzeni nazw o numerze dwa, która nie została podana, ale istnieje za to jej wersji ogólna {{Code|nazwa przestrzeni nazw i}} i domyślna {{Code|nazwa przestrzeni nazw}}: <syntaxhighlight lang="mediawiki"> {{#invoke:Pudełko|Nazwa przedmiotowej przestrzeni nazw|numer jednostki=1}} </syntaxhighlight> Na podstawie powyższego przykładu otrzymamy wynik o schemacie, nie wyniku, bo tam nie ma zmiennej {{Code|nazwa przestrzeni nazw 1}}, ale jest {{Code|nazwa przestrzeni nazw i}}: <syntaxhighlight lang="mediawiki"> <!-- Ale nie "nazwa przestrzeni nazw", bo jej nie ma, ale za to istnieje "nazwa przestrzeni nazw i"; --> <!-- nazwa przestrzeni nazw 2=nazwa przestrzeni nazw i=Dyskusja modułu; --> <!-- Czyli wynik: --> Moduł <!-- Widzimy, że wygenerowała się nazwa przestrzeni nazw, którą jest przestrzeń przedmiotowa programowa przestrzeni dyskusji "Dyskusja modułu", którą również jest "Szablon" jego przestrzeni dyskusji "Dyskusja szablonu", a dla ich przestrzeni przedmiotowej, zamiast dyskusji, to samo przekształca się na to samo; --> </syntaxhighlight> Nie jest brana w tym powyższym przykładzie zmienna {{Code|nazwa przestrzeni nazw}}, bo jej nie ma, ale za to jest {{Code|nazwa przestrzeni nazw i}}, bo ona występuje jako parametr domyślny ogólny dla parametrów numerkowych. Przykłady w wikikodzie: * {{Code|{{m|Pudełko|Nazwa przedmiotowej przestrzeni nazw|numer jednostki{{=}}2}}}} → {{Tt|{{#invoke:Pudełko|Nazwa przedmiotowej przestrzeni nazw|numer jednostki=2}}}} * {{Code|{{m|Pudełko|Nazwa przedmiotowej przestrzeni nazw|Dyskusja szablonu|nazwa przestrzeni nazw i{{=}}Moja przestrzeń|numer jednostki{{=}}2}}}} → {{Tt|{{#invoke:Pudełko|Nazwa przedmiotowej przestrzeni nazw|Dyskusja szablonu|nazwa przestrzeni nazw i=Moja przestrzeń|numer jednostki=2}}}} * {{Code|{{m|Pudełko|Nazwa przedmiotowej przestrzeni nazw|nazwa przestrzeni nazw 2{{=}}Dyskusja szablonu|numer jednostki{{=}}2}}}} → {{Tt|{{#invoke:Pudełko|Nazwa przedmiotowej przestrzeni nazw|nazwa przestrzeni nazw 2=Dyskusja szablonu|numer jednostki=2}}}} * {{Code|{{m|Pudełko|Nazwa przedmiotowej przestrzeni nazw|nazwa przestrzeni nazw 2{{=}}Dyskusja szablonu|numer jednostki{{=}}2}}}} → {{Tt|{{#invoke:Pudełko|Nazwa przedmiotowej przestrzeni nazw|nazwa przestrzeni nazw i=Dyskusja szablonu|numer jednostki=2}}}} * {{Code|{{m|Pudełko|Nazwa przedmiotowej przestrzeni nazw|nazwa przestrzeni nazw{{=}}Dyskusja szablonu|numer jednostki{{=}}2}}}} → {{Tt|{{#invoke:Pudełko|Nazwa przedmiotowej przestrzeni nazw|nazwa przestrzeni nazw=Dyskusja szablonu|numer jednostki=2}}}} Powyżej dla przykładu podano parametry nie w rodzicu w szablonie, tylko w dziecku, jeśli chodzi o parametry nazw przestrzeni nazw, ale ich się za to nie powinno podawać w tych ramach, tylko w szablonach, w których wywoływane są te ramki pudełek {{Code|{{m|Pudełko}}}}, ale tak tutaj tak zrobiono by było najłatwiej sprawdzić działanie tego typu funkcji. Analogicznie możemy podawać parametry typu jednostki, np.: wywołaniu modułowym {{Code|{{m|Pudełko|Nazwa przedmiotowej przestrzeni nazw|typ jednostki 2{{=}}strona szablonu|numer jednostki{{=}}2}}}}, ale o tym więcej w rozdziałach {{Code|{{sr|# p["Przedmiotowy typ jednostki"](frame,i)|p=Pudełko}}}} w „{{sr|#Funkcje typu jednostki|p=Pudełko}}”, ale wtedy ta sama nazwa przestrzeni nazw reprezentowana przez {{Parametr|typ jednostki 2|strona szablonu}}, jest zamieniana na to samo, lepiej jest tutaj używać parametrów przestrzennych nazw niż typu jednostki, bo typ jednostki ma taką samą wartość dla przestrzeni przedmiotowej, co dyskusji. Tutaj parametr dyskusji typu jednostki bazowy i numerkowy ogólny, czy szczegółowy, nie gra roli, bo nawet, gdy wygenerujemy nazwę przestrzeni dyskusji za pomoca tego parametru, to i tak otrzymamy na samym końcu jego nazwę przedmiotową. Również parametry typu jednostki nie powinno się podawać w dziecku w ramce, tylko w rodzicu w szablonie jako parametry, w którym ta ramka jest wywoływana, ale tutaj podano jedynie dla przykładu, jak najłatwiej sprawdzić działanie tych parametrów tej funkcji. Najpierw w funkcji nagłówku brane są parametry nazw przestrzeni nazw, a jeżeli ich nie ma, to parametry typu jednostki, a jeżeli nie ma, to generowane są nazwy na podstawie aktualnego modułu. === {{Code|p["Nazwa przestrzeni nazw dyskusji"](frame,...)}} === Funkcja pisze nazwę przestrzeni nazw dyskusji jakikolwiek nazwy przestrzeni nazw (tzn. nazwę przedmiotową nazwy przestrzenie nazw, czyli nie dyskusji, zamieniana jest na dyskusji, czyli identyfikator przestrzeni się zmienia jeden wyżej, a dyskusji, nie przedmiotową, przekształca się na tą samą), według podanej w zmiennej {{Code|nazwa przestrzeni nazw}} dla pozycja bazowej w podanych parametrach szablonu rodzicu ramki dziecka, lub dla innej pozycji należy parametr podawać w formie {{Code|nazwa przestrzeni nazw 1}}, {{Code|nazwa przestrzeni nazw 2}}, {{Code|nazwa przestrzeni nazw 3}},..., lub te parametry można podać w postaci ogólnej {{Code|nazwa przestrzeni nazw i}}. Parametry podaje się w parametrach rodzica wywołania tej funkcji {{Code|{{m|Pudełko|Nazwa przestrzeni nazw dyskusji}}}} (ale ich nie trzeba podawać w dziecku, ale można) i w parametrach dziecka, jeśli chodzi o zmienną {{Code|numer jednostki}}, czyli np.: {{Code|{{m|Pudełko|Nazwa przestrzeni nazw dyskusji|numer jednostki{{=}}<jakaś liczba całkowita dodatnia>}}}}. Te parametry przestrzenne zamiast w rodzicu w szablonie można podać w ramce dziecka, wtedy parametry dziecka mają pierwszeństwo. Parametry przestrzenne mogą mogą być podane w postaci przestrzeni przedmiotowej lub dyskusji, ale ta funkcja zawsze ją zamienia na dyskusji. Przestrzeń nazw z parametrów nazw przestrzennych może odpowiadać wartości przestrzeni głównej, to wtedy odpowiednia przestrzeń nazw z parametru nazwy jednostki się nie liczy w tej funkcji, aby się liczyła należy użyć funkcji {{Code|{{sr|#p["Nazwa przestrzeni nazw dyskusji 2"](frame,...)|p=Pudełko}}}}. Definicja skrótowa funkcji: <syntaxhighlight lang="lua"> p["Nazwa przestrzeni nazw dyskusji"]=function(frame,czy_uwzglednic_alternatywna_nazwe,i)...end; </syntaxhighlight> Wtedy ciało funkcji tej, czyli jego definicja w środku, jest: <syntaxhighlight lang="lua"> -- Jest liczony numer parametru nazwy przestrzeni nazw, domyslnie chodzi tu o numer bazowy parametrów przestrzennych; local numer_jednostki=i or frame.args["numer jednostki"]; local liczba_numer_jednostki=((numer_jednostki)and(tonumber(numer_jednostki))or 0); local pudelko_pomocne_modul=require("Module:Pudełko/Pomocne"); -- Liczy nazwę przestrzeni nazw dyskusji na podstawie podanych parametrów; return pudelko_pomocne_modul.Nazwa_przestrzeni_nazw(frame,2, czy_uwzglednic_alternatywna_nazwe,liczba_numer_jednostki); </syntaxhighlight> Parametry funkcji: * {{Code|frame}} - tablica ramki tablicy transportu, * {{Code|czy_uwzglednic_alternatywna_nazwe}} - czy ma uwzględniać nazwę przestrzeni nazw domyślną szablonu, dostępne wartości: {{Code|false}}, w której nazwa domyślna nie jest uwzględniana wtedy, oraz {{Code|nil}} i {{Code|true}}, które oznaczają to samo, w tym jeżeli ona jest uwzględniana, wtedy jest brany parametr pierwszy dziecka, który musi istnieć przy takiej wartości tego parametru, tzn. {{Code|{{m|Pudełko|Nazwa przestrzeni nazw dyskusji|Szablon}}}} - ta nazwa domyślna zostanie przekształcona na dyskusji, a jeżeli ona by była dyskusji, to nie byłoby żadnego przekształcenia, a nazwa uzyskana nazwy przestrzeni nazw z parametrów przestrzennych jest w takim przypadku błędna, to w takim razie brany jest ten parametr, a jeżeli nazwa domyślna jest błędna, czyli {{Code|{{m|Pudełko|Nazwa przestrzeni nazw dyskusji|Moja przestrzeń}}}}, wtedy funkcja zwraca stan błędu {{Code|(błąd)}}. * {{Code|i}} - numer zmiennej nazwy przestrzeni nazw. Funkcja wykorzystuje {{Code|{{sr|#p.Nazwa_przestrzeni_nazw(frame,...)|p=Pudełko/Pomocne}}}} do wyznaczania ogólnego nazwy przestrzeni nazw dla pozycji bazowej i numerkowej, tzn. dla pozycji: jeden, dwa, trzy,..., itd, i ich ogólnej. Parametr ramki tablicy transportu rodzica szablonu: * {{Code|nazwa przestrzeni nazw}}, {{Code|nazwa przestrzeni nazw 1}}, {{Code|nazwa przestrzeni nazw 2}}, {{Code|nazwa przestrzeni nazw 3}},..., {{Code|nazwa przestrzeni nazw i}} - nazwy przestrzeni nazw dla pozycji bazowej oraz zwykłej i ogólnej numerkowej, * {{Code|typ jednostki}}, {{Code|typ jednostki 1}}, {{Code|typ jednostki 2}}, {{Code|typ jednostki 3}},..., {{Code|typ jednostki i}} - typy jednostek, którym odpowiadają pewne przestrzenie przedmiotowe, dla pozycji bazowej, numerkowej i ogólnej. Parametry ramki tablicy transportu dziecka: * Parametry dziecka są takie same jak rodzica dla funkcji pudełkowej plus tu wymienione, * {{Code|numer jednostki}} - jak parametr {{Code|i}} nie został ustawiony, to wtedy liczy się ta zmienna. Przykłady: <syntaxhighlight lang="mediawiki"> {{Nazwa szablonu|nazwa przestrzeni nazw=Wikibooks|nazwa przestrzeni nazw 2=Szablon|nazwa przestrzeni nazw i=Moduł}} </syntaxhighlight> W dziecku powiedzmy jest wywołanie, i szukamy nazwy przestrzeni nazw o numerze dwa, która nie została podana, ale istnieje za to jej wersji ogólna {{Code|nazwa przestrzeni nazw i}} i domyślna {{Code|nazwa przestrzeni nazw}}: <syntaxhighlight lang="mediawiki"> {{#invoke:Pudełko|Nazwa przestrzeni nazw dyskusji|numer jednostki=1}} </syntaxhighlight> Na podstawie powyższego przykładu otrzymamy wynik o schemacie, nie wyniku, bo tam nie ma zmiennej {{Code|nazwa przestrzeni nazw 1}}, ale jest {{Code|nazwa przestrzeni nazw i}}: <syntaxhighlight lang="mediawiki"> <!-- Ale nie "nazwa przestrzeni nazw", bo jej nie ma, ale za to istnieje "nazwa przestrzeni nazw i"; --> <!-- nazwa przestrzeni nazw 2=nazwa przestrzeni nazw i=Moduł; --> <!-- Czyli wynik: --> Dyskusja modułu <!-- Widzimy, że wygenerowała się nazwa przestrzeni nazw, którą jest przestrzeń dyskusji przestrzeni programowej przestrzeni przedmiotowej "Moduł", którą również jest "Szablon" jego przestrzeni dyskusji "Dyskusja szablonu", a dla ich przestrzeni przedmiotowej, zamiast dyskusji, to przekształca się na dyskusji jej odpowiadającą; --> </syntaxhighlight> Nie jest brana w tym powyższym przykładzie zmienna {{Code|nazwa przestrzeni nazw}}, bo jej nie ma, ale za to jest {{Code|nazwa przestrzeni nazw i}}, bo ona występuje jako parametr domyślny ogólny dla parametrów numerkowych. Przykłady w wikikodzie: * {{Code|{{m|Pudełko|Nazwa przestrzeni nazw dyskusji|numer jednostki{{=}}2}}}} → {{Tt|{{#invoke:Pudełko|Nazwa przestrzeni nazw dyskusji|numer jednostki=2}}}} * {{Code|{{m|Pudełko|Nazwa przestrzeni nazw dyskusji|Szablon|nazwa przestrzeni nazw i{{=}}Moja przestrzeń|numer jednostki{{=}}2}}}} → {{Tt|{{#invoke:Pudełko|Nazwa przestrzeni nazw dyskusji|Szablon|nazwa przestrzeni nazw i=Moja przestrzeń|numer jednostki=2}}}} * {{Code|{{m|Pudełko|Nazwa przestrzeni nazw dyskusji|nazwa przestrzeni nazw 2{{=}}Szablon|numer jednostki{{=}}2}}}} → {{Tt|{{#invoke:Pudełko|Nazwa przestrzeni nazw dyskusji|nazwa przestrzeni nazw 2=Szablon|numer jednostki=2}}}} * {{Code|{{m|Pudełko|Nazwa przestrzeni nazw dyskusji|nazwa przestrzeni nazw 2{{=}}Szablon|numer jednostki{{=}}2}}}} → {{Tt|{{#invoke:Pudełko|Nazwa przestrzeni nazw dyskusji|nazwa przestrzeni nazw i=Szablon|numer jednostki=2}}}} * {{Code|{{m|Pudełko|Nazwa przestrzeni nazw dyskusji|nazwa przestrzeni nazw{{=}}Szablon|numer jednostki{{=}}2}}}} → {{Tt|{{#invoke:Pudełko|Nazwa przestrzeni nazw dyskusji|nazwa przestrzeni nazw=Szablon|numer jednostki=2}}}} Powyżej dla przykładu podano parametry nie w rodzicu w szablonie, tylko w dziecku, jeśli chodzi o parametry nazw przestrzeni nazw, ale ich się za to nie powinno podawać w tych ramach, tylko w szablonach, w których wywoływane są te ramki pudełek {{Code|{{m|Pudełko}}}}, ale tak tutaj tak zrobiono by było najłatwiej sprawdzić działanie tego typu funkcji. Analogicznie możemy podawać parametry typu jednostki, np.: wywołaniu modułowym {{Code|{{m|Pudełko|Nazwa przestrzeni nazw dyskusji|typ jednostki 2{{=}}strona szablonu|numer jednostki{{=}}2}}}}, ale o tym więcej w rozdziałach {{Code|{{sr|# p["Dyskusyjny typ jednostki"](frame,i)|p=Pudełko}}}} w „{{sr|#Funkcje typu jednostki|p=Pudełko}}”, ale wtedy nazwa przestrzeni nazw reprezentowana przez {{Parametr|typ jednostki 2|strona szablonu}}, jest zamieniana na nazwę przestrzeni nazw dyskusji. Parametr dyskusji typu jednostki bazowy lub dla danego numerka ogólny, czy szczegółowy, nie gra roli. Również parametry typu jednostki nie powinno się podawać w dziecku w ramce, tylko w rodzicu w szablonie jako parametry, w którym ta ramka jest wywoływana, ale tutaj podano jedynie dla przykładu, jak najłatwiej sprawdzić działanie tych parametrów tej funkcji. Najpierw w funkcji nagłówku brane są parametry nazw przestrzeni nazw, a jeżeli ich nie ma, to parametry typu jednostki, a jeżeli nie ma, to generowane są nazwy na podstawie aktualnego modułu. == Funkcje nazw przestrzeni nazw drugiej wersji == === {{Code|p["Nazwa przestrzeni nazw 2"](frame,...)}} === Funkcja pisze nazwę przestrzeni nazw, niezależnie, czy to jest przedmiotowa, czy dyskusji, według, i nie zawsze tylko, podanej w zmiennej {{Code|nazwa przestrzeni nazw}} dla pozycja bazowej w podanych parametrach szablonu rodzicu ramki dziecka, lub dla innej pozycji należy parametr podawać w formie {{Code|nazwa przestrzeni nazw 1}}, {{Code|nazwa przestrzeni nazw 2}}, {{Code|nazwa przestrzeni nazw 3}},..., lub te parametry można podać w postaci ogólnej {{Code|nazwa przestrzeni nazw i}}. W tej funkcji trzeba też podawać parametry nazwy jednostek {{Code|nazwa jednostki}}, {{Code|nazwa jednostki 1}}, {{Code|nazwa jednostki 2}}, {{Code|nazwa jednostki 3}},... Parametry podaje się w parametrach rodzica wywołania tej funkcji {{Code|{{m|Pudełko|Nazwa przestrzeni nazw 2}}}} (ale ich nie trzeba podawać w dziecku, ale można) i w parametrach dziecka, jeśli chodzi o zmienną {{Code|numer jednostki}}, czyli np.: {{Code|{{m|Pudełko|Nazwa przestrzeni nazw 2|numer jednostki{{=}}<jakaś liczba całkowita dodatnia>}}}}. Te parametry przestrzenne zamiast w rodzicu w szablonie można podać w ramce dziecka, wtedy parametry dziecka mają pierwszeństwo. Przestrzeń nazw z parametrów nazw przestrzennych może odpowiadać wartości przestrzeni głównej, to wtedy odpowiednia przestrzeń nazw z parametru nazwy jednostki się liczy w tej funkcji, wtedy jest liczona nazwa przestrzeni nazw z tego parametru. Gdy parametry przestrzenne lub typ jednostki w drugim podejściu nie wskazują na przestrzeń główną, to wtedy działanie tej funkcji jest podobne do {{Code|{{sr|#p["Nazwa przestrzeni nazw"](frame,...)|p=Pudełko}}}}. Definicja skrótowa funkcji: <syntaxhighlight lang="lua"> p["Nazwa przestrzeni nazw 2"]=function(frame,czy_uwzglednic_alternatywna_nazwe,i)...end; </syntaxhighlight> Wtedy ciało funkcji tej, czyli jego definicja w środku, jest: <syntaxhighlight lang="lua"> local pudelko_pomocne_modul=require("Module:Pudełko/Pomocne"); -- Liczy nazwę przestrzeni nazw, jeżeli z parametrów przestrzennych przestrzeń wskazuje na główną, to wtedy jest liczona przestrzeń nazw z nazwy jednostki; return pudelko_pomocne_modul.Nazwa_przestrzeni_nazw_2(frame,czy_uwzglednic_alternatywna_nazwe,i) </syntaxhighlight> Parametry funkcji: * {{Code|frame}} - tablica ramki tablicy transportu, * {{Code|czy_uwzglednic_alternatywna_nazwe}} - czy ma uwzględniać nazwę przestrzeni nazw domyślną szablonu, dostępne wartości: {{Code|false}}, w której nazwa domyślna nie jest uwzględniana wtedy, oraz {{Code|nil}} i {{Code|true}}, które oznaczają to samo, w tym jeżeli ona jest uwzględniana, wtedy jest brany parametr pierwszy dziecka, który musi istnieć przy takiej wartości tego parametru, tzn. {{Code|{{m|Pudełko|Nazwa przestrzeni nazw 2|Szablon}}}}, a nazwa uzyskana nazwy przestrzeni nazw jest w takim przypadku błędna, a jeżeli nazwa domyślna jest błędna, czyli {{Code|{{m|Pudełko|Nazwa przestrzeni nazw 2|Moja przestrzeń}}}}, wtedy funkcja zwraca stan błędu {{Code|(błąd)}}. * {{Code|i}} - numer zmiennej nazwy przestrzeni nazw. Funkcja wykorzystuje {{Code|{{sr|#p.Nazwa_przestrzeni_nazw_2(frame,...)|p=Pudełko/Pomocne}}}} do wyznaczania ogólnego nazwy przestrzeni nazw dla pozycji bazowej i numerkowej, tzn. dla pozycji: jeden, dwa, trzy,..., itd, i ich ogólnej. Parametr ramki tablicy transportu rodzica szablonu: * {{Code|nazwa przestrzeni nazw}}, {{Code|nazwa przestrzeni nazw 1}}, {{Code|nazwa przestrzeni nazw 2}}, {{Code|nazwa przestrzeni nazw 3}},..., {{Code|nazwa przestrzeni nazw i}} - nazwy przestrzeni nazw dla pozycji bazowej oraz zwykłej i ogólnej numerkowej, * {{Code|nazwa jednostki}}, {{Code|nazwa jednostki 1}}, {{Code|nazwa jednostki 2}}, {{Code|nazwa jednostki 3}},... - nazwy jednostek dla pozycji bazowej i numerkowej, * {{Code|typ jednostki}}, {{Code|typ jednostki 1}}, {{Code|typ jednostki 2}}, {{Code|typ jednostki 3}},..., {{Code|typ jednostki i}} - typy jednostek, którym odpowiadają pewne przestrzenie przedmiotowe, dla pozycji bazowej, numerkowej i ogólnej, ** {{Code|dyskusja typu jednostki}}, {{Code|dyskusja typu jednostki 1}}, {{Code|dyskusja typ jednostki 2}}, {{Code|dyskusja typ jednostki 3}},..., {{Code|dyskusja typ jednostki i}} - czy dany typ jednostki ma przedstawiać, jeśli niepusta, przestrzeń dyskusji dla pozycji bazowej, numerkowej i ogólnej. Parametry ramki tablicy transportu dziecka: * Parametry dziecka są takie same jak rodzica dla funkcji pudełkowej plus tu wymienione, * {{Code|numer jednostki}} - jak parametr {{Code|i}} nie został ustawiony, to wtedy liczy się ta zmienna. Przykłady: <syntaxhighlight lang="mediawiki"> {{Nazwa szablonu|nazwa przestrzeni nazw=Wikibooks|nazwa przestrzeni nazw 1=Szablon|nazwa przestrzeni nazw i=|nazwa jednostki 2=Wikibooks:Strona}} </syntaxhighlight> W dziecku powiedzmy jest wywołanie, i szukamy nazwy przestrzeni nazw o numerze dwa, która została podana, ale istnieje za to jej wersji ogólna {{Code|nazwa przestrzeni nazw i}} i domyślna {{Code|nazwa przestrzeni nazw}}, ale wtedy dla tego numerkowego liczy się to ogólne z {{Code| i}}, a ponieważ ta nazwa jest pusta, więc będziemy liczyli nazwę przestrzeni nazw z {{Code|nazwa jednostki 2}}: <syntaxhighlight lang="mediawiki"> {{#invoke:Pudełko|Nazwa przestrzeni nazw 2|numer jednostki=2}} </syntaxhighlight> Na podstawie powyższego przykładu otrzymamy wynik o schemacie, nie wyniku, bo tam nie ma zmiennej {{Code|nazwa przestrzeni nazw 1}}, ale jest {{Code|nazwa przestrzeni nazw i}}: <syntaxhighlight lang="mediawiki"> <!-- Ale nie "nazwa przestrzeni nazw 2", bo jej nie ma, ale za to istnieje "nazwa przestrzeni nazw i"; --> <!-- nazwa przestrzeni nazw 2=nazwa przestrzeni nazw i="", a nazwa jednostki 2="Wikibooks:Strona"; --> <!-- Czyli wynik: --> Wikibooks <!-- Widzimy, że wygenerowała się nazwa przestrzeni nazw, którą jest przestrzeń nieprogramowa, ale projektu, wychodząca z nazwy jednostek w tym przypadku z "nazwa jednostki 2"; --> </syntaxhighlight> Nie jest brana w tym powyższym przykładzie zmienna {{Code|nazwa przestrzeni nazw}}, bo jej nie ma, ale za to jest {{Code|nazwa przestrzeni nazw i}}, bo ona występuje jako parametr domyślny ogólny dla parametrów numerkowych. Tytaj jest używana jest zmienna {{Code|nazwa jednostki 2}} do wygenerowania ostatecznego wyniku, bo jak można zauważyć, parametry przestrzenne wskazują na przestrzeń główną, a nazwy jednostek już nie. Przykłady w wikikodzie: * {{Code|{{m|Pudełko|Nazwa przestrzeni nazw 2|numer jednostki{{=}}2}}}} → {{Tt|{{#invoke:Pudełko|Nazwa przestrzeni nazw 2|numer jednostki=2}}}} * {{Code|{{m|Pudełko|Nazwa przestrzeni nazw 2|Szablon|nazwa przestrzeni nazw i{{=}}Moja przestrzeń|numer jednostki{{=}}2}}}} → {{Tt|{{#invoke:Pudełko|Nazwa przestrzeni nazw 2|Szablon|nazwa przestrzeni nazw i=Moja przestrzeń|numer jednostki=2}}}} * {{Code|{{m|Pudełko|Nazwa przestrzeni nazw 2|nazwa przestrzeni nazw 2{{=}}|nazwa jednostki 2{{=}}Szablon:Strona|numer jednostki{{=}}2}}}} → {{Tt|{{#invoke:Pudełko|Nazwa przestrzeni nazw 2|nazwa przestrzeni nazw 2=|nazwa jednostki 2=Szablon:Strona|numer jednostki=2}}}} * {{Code|{{m|Pudełko|Nazwa przestrzeni nazw 2|nazwa przestrzeni nazw i{{=}}|nazwa jednostki 2{{=}}Szablon:Strona|numer jednostki{{=}}2}}}} → {{Tt|{{#invoke:Pudełko|Nazwa przestrzeni nazw 2|nazwa przestrzeni nazw i=|nazwa jednostki 2=Szablon:Strona|numer jednostki=2}}}} * {{Code|{{m|Pudełko|Nazwa przestrzeni nazw 2|Szablon|nazwa przestrzeni nazw{{=}}|nazwa jednostki 2{{=}}Wikibooks:Strona|numer jednostki{{=}}2}}}} → {{Tt|{{#invoke:Pudełko|Nazwa przestrzeni nazw 2|Szablon|nazwa przestrzeni nazw=|nazwa jednostki 2=Wikibooks:Strona|numer jednostki=2}}}} Powyżej dla przykładu podano parametry nie w rodzicu w szablonie, tylko w dziecku, jeśli chodzi o parametry nazw przestrzeni nazw i nazw jednostek, ale ich się za to nie powinno podawać w tych ramach, tylko w szablonach, w których wywoływane są te ramki pudełek {{Code|{{m|Pudełko}}}}, ale tak tutaj tak zrobiono by było najłatwiej sprawdzić działanie tego typu funkcji. Analogicznie możemy podawać parametry typu jednostki, np.: wywołaniu modułowym {{Code|{{m|Pudełko|Nazwa przestrzeni nazw 2|typ jednostki 2{{=}}Podręcznik|nazwa jednostki 2{{=}}Szablon:Strona|numer jednostki{{=}}2}}}} (ale wtedy jest brana przestrzeń nazw z nazwy jednostki), ale o tym więcej w rozdziałach {{Code|{{sr|#p["Typ jednostki 2"](frame,i)|p=Pudełko}}}} w „{{sr|#Funkcje typu jednostki|p=Pudełko}}”, on definiuje przestrzenie przedmiotowe, ale można użyć parametru dyskusji typu jednostki z wartością niepustą, wtedy wyświetli się nazwa przestrzeni nazw dyskusji. Jeżeli typ jednostki wskazuje na przestrzeń nazw główną, wtedy się liczą parametry nazw jednostek. Również parametry typu jednostki nie powinno się podawać w dziecku w ramce, tylko w rodzicu w szablonie jako parametry, w którym ta ramka jest wywoływana, ale tutaj podano jedynie dla przykładu, jak najłatwiej sprawdzić działanie tych parametrów tej funkcji. Najpierw w funkcji nagłówku brane są parametry nazw przestrzeni nazw, a jeżeli ich nie ma, to parametry typu jednostki, a jeżeli nie ma lub parametry przestrzenne wskazują na przestrzeń główną, i nie ma nazwy jednostki, to generowane są nazwy tej funkcji na podstawie aktualnej strony. === {{Code|p["Nazwa przedmiotowej przestrzeni nazw 2"](frame,...)}} === Funkcja pisze przedmiotową nazwę przestrzeni nazw jakikolwiek nazwy przestrzeni nazw (tzn. nazwę przedmiotową nazwy przestrzenie nazw, czyli nie dyskusji, zamieniana jest na nią samą, czyli identyfikator przestrzeni się nie zmienia, a dyskusji, nie przedmiotową, przekształca się na przedmiotową jej odpowiadającą, czyli w tym przypadku identyfikator przestrzeni zmniejsza się o numer mniej), według, i nie zawsze tylko, podanej w zmiennej {{Code|nazwa przestrzeni nazw}} dla pozycja bazowej w podanych parametrach szablonu rodzicu ramki dziecka, lub dla innej pozycji należy parametr podawać w formie {{Code|nazwa przestrzeni nazw 1}}, {{Code|nazwa przestrzeni nazw 2}}, {{Code|nazwa przestrzeni nazw 3}},..., lub te parametry można podać w postaci ogólnej {{Code|nazwa przestrzeni nazw i}}. W tej funkcji trzeba też podawać parametry nazwy jednostek {{Code|nazwa jednostki}}, {{Code|nazwa jednostki 1}}, {{Code|nazwa jednostki 2}}, {{Code|nazwa jednostki 3}},... Parametry podaje się w parametrach rodzica wywołania tej funkcji {{Code|{{m|Pudełko|Nazwa przedmiotowej przestrzeni nazw 2}}}} (ale ich nie trzeba podawać w dziecku, ale można) i w parametrach dziecka, jeśli chodzi o zmienną {{Code|numer jednostki}}, czyli np.: {{Code|{{m|Pudełko|Nazwa przedmiotowej przestrzeni nazw 2|numer jednostki{{=}}<jakaś liczba całkowita dodatnia>}}}}. Te parametry przestrzenne zamiast w rodzicu w szablonie można podać w ramce dziecka, wtedy parametry dziecka mają pierwszeństwo. Przestrzeń nazw z parametrów nazw przestrzennych po przekształceniu na przedmiotową może odpowiadać wartości przestrzeni głównej, to wtedy odpowiednia przestrzeń nazw z parametru nazwy jednostki się liczy w tej funkcji, wtedy jest liczona nazwa przestrzeni nazw z tego parametru. Gdy parametry przestrzenne lub typ jednostki w drugim podejściu nie wskazują na przestrzeń główną, to wtedy działanie tej funkcji jest podobne do {{Code|{{sr|#p["Nazwa przedmiotowej przestrzeni nazw"](frame,...)|p=Pudełko}}}}. Definicja skrótowa funkcji: <syntaxhighlight lang="lua"> p["Nazwa przedmiotowej przestrzeni nazw 2"]=function(frame,czy_uwzglednic_alternatywna_nazwe,i)...end; </syntaxhighlight> Wtedy ciało funkcji tej, czyli jego definicja w środku, jest: <syntaxhighlight lang="lua"> local pudelko_pomocne_modul=require("Module:Pudełko/Pomocne"); return pudelko_pomocne_modul.Nazwa_przestrzeni_nazw_przedmiotowa_dyskusji_2(frame,czy_uwzglednic_alternatywna_nazwe,i,"przedmiotowa"); </syntaxhighlight> Parametry funkcji: * {{Code|frame}} - tablica ramki tablicy transportu, * {{Code|czy_uwzglednic_alternatywna_nazwe}} - czy ma uwzględniać nazwę przestrzeni nazw domyślną szablonu, dostępne wartości: {{Code|false}}, w której nazwa domyślna nie jest uwzględniana wtedy, oraz {{Code|nil}} i {{Code|true}}, które oznaczają to samo, w tym jeżeli ona jest uwzględniana, wtedy jest brany parametr pierwszy dziecka, który musi istnieć przy takiej wartości tego parametru, tzn. {{Code|{{m|Pudełko|Nazwa przedmiotowej przestrzeni nazw 2|Szablon}}}}, a nazwa uzyskana nazwy przestrzeni nazw jest w takim przypadku błędna, a jeżeli nazwa domyślna jest błędna, czyli {{Code|{{m|Pudełko|Nazwa przedmiotowej przestrzeni nazw 2|Moja przestrzeń}}}}, wtedy funkcja zwraca stan błędu {{Code|(błąd)}}. * {{Code|i}} - numer zmiennej nazwy przestrzeni nazw. Funkcja wykorzystuje {{Code|{{sr|#p.Nazwa_przestrzeni_nazw_przedmiotowa_dyskusji_2(frame,...)|p=Pudełko/Pomocne}}}} do wyznaczania ogólnego nazwy przestrzeni nazw dla pozycji bazowej i numerkowej, tzn. dla pozycji: jeden, dwa, trzy,..., itd, i ich ogólnej. Parametr ramki tablicy transportu rodzica szablonu: * {{Code|nazwa przestrzeni nazw}}, {{Code|nazwa przestrzeni nazw 1}}, {{Code|nazwa przestrzeni nazw 2}}, {{Code|nazwa przestrzeni nazw 3}},..., {{Code|nazwa przestrzeni nazw i}} - nazwy przestrzeni nazw dla pozycji bazowej oraz zwykłej i ogólnej numerkowej, * {{Code|nazwa jednostki}}, {{Code|nazwa jednostki 1}}, {{Code|nazwa jednostki 2}}, {{Code|nazwa jednostki 3}},... - nazwy jednostek dla pozycji bazowej i numerkowej, * {{Code|typ jednostki}}, {{Code|typ jednostki 1}}, {{Code|typ jednostki 2}}, {{Code|typ jednostki 3}},..., {{Code|typ jednostki i}} - typy jednostek, którym odpowiadają pewne przestrzenie przedmiotowe, dla pozycji bazowej, numerkowej i ogólnej. Parametry ramki tablicy transportu dziecka: * Parametry dziecka są takie same jak rodzica dla funkcji pudełkowej plus tu wymienione, * {{Code|numer jednostki}} - jak parametr {{Code|i}} nie został ustawiony, to wtedy liczy się ta zmienna. Przykłady: <syntaxhighlight lang="mediawiki"> {{Nazwa szablonu|nazwa przestrzeni nazw=Wikibooks|nazwa przestrzeni nazw 1=Szablon|nazwa przestrzeni nazw i=|nazwa jednostki 2=Dyskusja Wikibooks:Strona}} </syntaxhighlight> W dziecku powiedzmy jest wywołanie, i szukamy nazwy przestrzeni nazw o numerze dwa, która została podana, ale istnieje za to jej wersji ogólna {{Code|nazwa przestrzeni nazw i}} i domyślna {{Code|nazwa przestrzeni nazw}}, ale wtedy dla tego numerkowego liczy się to ogólne z {{Code| i}}, a ponieważ ta nazwa jest pusta, więc będziemy liczyli nazwę przestrzeni nazw z {{Code|nazwa jednostki 2}}: <syntaxhighlight lang="mediawiki"> {{#invoke:Pudełko|Nazwa przedmiotowej przestrzeni nazw 2|numer jednostki=2}} </syntaxhighlight> Na podstawie powyższego przykładu otrzymamy wynik o schemacie, nie wyniku, bo tam nie ma zmiennej {{Code|nazwa przestrzeni nazw 1}}, ale jest {{Code|nazwa przestrzeni nazw i}}: <syntaxhighlight lang="mediawiki"> <!-- Ale nie "nazwa przestrzeni nazw 2", bo jej nie ma, ale za to istnieje "nazwa przestrzeni nazw i"; --> <!-- nazwa przestrzeni nazw 2=nazwa przestrzeni nazw i="", a nazwa jednostki 2="Dyskusja Wikibooks:Strona"; --> <!-- Czyli wynik: --> Wikibooks <!-- Widzimy, że wygenerowała się nazwa przestrzeni nazw, którą jest przestrzeń nieprogramowa, ale projektu, wychodząca z nazwy jednostek w tym przypadku z "nazwa jednostki 2"; --> </syntaxhighlight> Nie jest brana w tym powyższym przykładzie zmienna {{Code|nazwa przestrzeni nazw}}, bo jej nie ma, ale za to jest {{Code|nazwa przestrzeni nazw i}}, bo ona występuje jako parametr domyślny ogólny dla parametrów numerkowych. Tytaj jest używana jest zmienna {{Code|nazwa jednostki 2}} do wygenerowania ostatecznego wyniku, bo jak można zauważyć, parametry przestrzenne wskazują na przestrzeń główną, a nazwy jednostek już nie. Przykłady w wikikodzie: * {{Code|{{m|Pudełko|Nazwa przedmiotowej przestrzeni nazw 2|numer jednostki{{=}}2}}}} → {{Tt|{{#invoke:Pudełko|Nazwa przedmiotowej przestrzeni nazw 2|numer jednostki=2}}}} * {{Code|{{m|Pudełko|Nazwa przedmiotowej przestrzeni nazw 2|Dyskusja szablonu|nazwa przestrzeni nazw i{{=}}Moja przestrzeń|numer jednostki{{=}}2}}}} → {{Tt|{{#invoke:Pudełko|Nazwa przedmiotowej przestrzeni nazw 2|Dyskusja szablonu|nazwa przestrzeni nazw i=Moja przestrzeń|numer jednostki=2}}}} * {{Code|{{m|Pudełko|Nazwa przedmiotowej przestrzeni nazw 2|nazwa przestrzeni nazw 2{{=}}Dyskusja|nazwa jednostki 2{{=}}Dyskusja szablonu:Strona|numer jednostki{{=}}2}}}} → {{Tt|{{#invoke:Pudełko|Nazwa przedmiotowej przestrzeni nazw 2|nazwa przestrzeni nazw 2=Dyskusja|nazwa jednostki 2=Dyskusja szablonu:Strona|numer jednostki=2}}}} * {{Code|{{m|Pudełko|Nazwa przedmiotowej przestrzeni nazw 2|nazwa przestrzeni nazw i{{=}}Dyskusja|nazwa jednostki 2{{=}}Dyskusja szablonu:Strona|numer jednostki{{=}}2}}}} → {{Tt|{{#invoke:Pudełko|Nazwa przedmiotowej przestrzeni nazw 2|nazwa przestrzeni nazw i=Dyskusja|nazwa jednostki 2=Dyskusja szablonu:Strona|numer jednostki=2}}}} * {{Code|{{m|Pudełko|Nazwa przedmiotowej przestrzeni nazw 2|Dyskusja szablonu|nazwa przestrzeni nazw{{=}}Dyskusja|nazwa jednostki 2{{=}}Wikibooks:Strona|numer jednostki{{=}}2}}}} → {{Tt|{{#invoke:Pudełko|Nazwa przedmiotowej przestrzeni nazw 2|Dyskusja szablonu|nazwa przestrzeni nazw=Dyskusja|nazwa jednostki 2=Dyskusja Wikibooks:Strona|numer jednostki=2}}}} Powyżej dla przykładu podano parametry nie w rodzicu w szablonie, tylko w dziecku, jeśli chodzi o parametry nazw przestrzeni nazw i nazw jednostek, ale ich się za to nie powinno podawać w tych ramach, tylko w szablonach, w których wywoływane są te ramki pudełek {{Code|{{m|Pudełko}}}}, ale tak tutaj tak zrobiono by było najłatwiej sprawdzić działanie tego typu funkcji. Analogicznie możemy podawać parametry typu jednostki, np.: wywołaniu modułowym {{Code|{{m|Pudełko|Nazwa przedmiotowej przestrzeni nazw 2|typ jednostki 2{{=}}Podręcznik|nazwa jednostki 2{{=}}Dyskusja szablonu:Strona|numer jednostki{{=}}2}}}} (ale wtedy jest brana przestrzeń nazw z nazwy jednostki), ale o tym więcej w rozdziałach {{Code|{{sr|# p["Przedmiotowy typ jednostki 2"](frame,i)|p=Pudełko}}}} w „{{sr|#Funkcje typu jednostki|p=Pudełko}}”, on definiuje przestrzenie przedmiotowe, ale można użyć parametru dyskusji typu jednostki z wartością niepustą, pustą, czy nawet jej nie podamy, wtedy wyświetli się nazwa przestrzeni nazw przedmiotowej. Jeżeli typ jednostki wskazuje na przestrzeń nazw główną, wtedy się liczą parametry nazw jednostek. Również parametry typu jednostki nie powinno się podawać w dziecku w ramce, tylko w rodzicu w szablonie jako parametry, w którym ta ramka jest wywoływana, ale tutaj podano jedynie dla przykładu, jak najłatwiej sprawdzić działanie tych parametrów tej funkcji. Najpierw w funkcji nagłówku brane są parametry nazw przestrzeni nazw, a jeżeli ich nie ma, to parametry typu jednostki, a jeżeli nie ma lub parametry przestrzenne wskazują na przestrzeń główną, i nie ma nazwy jednostki, to generowane są nazwy tej funkcji na podstawie aktualnej strony. === {{Code|p["Nazwa przestrzeni nazw dyskusji 2"](frame,...)}} === Funkcja pisze nazwę przestrzeni nazw dyskusji jakikolwiek nazwy przestrzeni nazw (tzn. nazwę dyskusji nazwy przestrzenie nazw, czyli nie przedmiotowej, zamieniana jest na nią samą, czyli identyfikator przestrzeni się nie zmienia, a przedmiotową, nie dyskusji, przekształca się na dyskusji jej odpowiadającą, czyli w tym przypadku identyfikator przestrzeni zwiększa się o numer więcej), według, i nie zawsze tylko, podanej w zmiennej {{Code|nazwa przestrzeni nazw}} dla pozycja bazowej w podanych parametrach szablonu rodzicu ramki dziecka, lub dla innej pozycji należy parametr podawać w formie {{Code|nazwa przestrzeni nazw 1}}, {{Code|nazwa przestrzeni nazw 2}}, {{Code|nazwa przestrzeni nazw 3}},..., lub te parametry można podać w postaci ogólnej {{Code|nazwa przestrzeni nazw i}}. W tej funkcji trzeba też podawać parametry nazwy jednostek {{Code|nazwa jednostki}}, {{Code|nazwa jednostki 1}}, {{Code|nazwa jednostki 2}}, {{Code|nazwa jednostki 3}},... Parametry podaje się w parametrach rodzica wywołania tej funkcji {{Code|{{m|Pudełko|Nazwa przestrzeni nazw dyskusji 2}}}} (ale ich nie trzeba podawać w dziecku, ale można) i w parametrach dziecka, jeśli chodzi o zmienną {{Code|numer jednostki}}, czyli np.: {{Code|{{m|Pudełko|Nazwa przestrzeni nazw dyskusji 2|numer jednostki{{=}}<jakaś liczba całkowita dodatnia>}}}}. Te parametry przestrzenne zamiast w rodzicu w szablonie można podać w ramce dziecka, wtedy parametry dziecka mają pierwszeństwo. Przestrzeń nazw z parametrów nazw przestrzennych po przekształceniu na przedmiotową może odpowiadać wartości przestrzeni głównej, to wtedy odpowiednia przestrzeń nazw z parametru nazwy jednostki się liczy w tej funkcji, wtedy jest liczona nazwa przestrzeni nazw z tego parametru. Gdy parametry przestrzenne lub typ jednostki w drugim podejściu nie wskazują na przestrzeń główną, to wtedy działanie tej funkcji jest podobne do {{Code|{{sr|#p["Nazwa dyskusji przestrzeni nazw"](frame,...)|p=Pudełko}}}}. Definicja skrótowa funkcji: <syntaxhighlight lang="lua"> p["Nazwa przestrzeni nazw dyskusji 2"]=function(frame,czy_uwzglednic_alternatywna_nazwe,i)...end; </syntaxhighlight> Wtedy ciało funkcji tej, czyli jego definicja w środku, jest: <syntaxhighlight lang="lua"> local pudelko_pomocne_modul=require("Module:Pudełko/Pomocne"); return pudelko_pomocne_modul.Nazwa_przestrzeni_nazw_przedmiotowa_dyskusji_2(frame,czy_uwzglednic_alternatywna_nazwe,i,"dyskusja"); </syntaxhighlight> Parametry funkcji: * {{Code|frame}} - tablica ramki tablicy transportu, * {{Code|czy_uwzglednic_alternatywna_nazwe}} - czy ma uwzględniać nazwę przestrzeni nazw domyślną szablonu, dostępne wartości: {{Code|false}}, w której nazwa domyślna nie jest uwzględniana wtedy, oraz {{Code|nil}} i {{Code|true}}, które oznaczają to samo, w tym jeżeli ona jest uwzględniana, wtedy jest brany parametr pierwszy dziecka, który musi istnieć przy takiej wartości tego parametru, tzn. {{Code|{{m|Pudełko|Nazwa przestrzeni nazw dyskusji 2|Szablon}}}}, a nazwa uzyskana nazwy przestrzeni nazw jest w takim przypadku błędna, a jeżeli nazwa domyślna jest błędna, czyli {{Code|{{m|Pudełko|Nazwa przestrzeni nazw dyskusji 2|Moja przestrzeń}}}}, wtedy funkcja zwraca stan błędu {{Code|(błąd)}}. * {{Code|i}} - numer zmiennej nazwy przestrzeni nazw. Funkcja wykorzystuje {{Code|{{sr|#p.Nazwa_przestrzeni_nazw_przedmiotowa_dyskusji_2(frame,...)|p=Pudełko/Pomocne}}}} do wyznaczania ogólnego nazwy przestrzeni nazw dla pozycji bazowej i numerkowej, tzn. dla pozycji: jeden, dwa, trzy,..., itd, i ich ogólnej. Parametr ramki tablicy transportu rodzica szablonu: * {{Code|nazwa przestrzeni nazw}}, {{Code|nazwa przestrzeni nazw 1}}, {{Code|nazwa przestrzeni nazw 2}}, {{Code|nazwa przestrzeni nazw 3}},..., {{Code|nazwa przestrzeni nazw i}} - nazwy przestrzeni nazw dla pozycji bazowej oraz zwykłej i ogólnej numerkowej, * {{Code|nazwa jednostki}}, {{Code|nazwa jednostki 1}}, {{Code|nazwa jednostki 2}}, {{Code|nazwa jednostki 3}},... - nazwy jednostek dla pozycji bazowej i numerkowej, * {{Code|typ jednostki}}, {{Code|typ jednostki 1}}, {{Code|typ jednostki 2}}, {{Code|typ jednostki 3}},..., {{Code|typ jednostki i}} - typy jednostek, którym odpowiadają pewne przestrzenie przedmiotowe, dla pozycji bazowej, numerkowej i ogólnej. Parametry ramki tablicy transportu dziecka: * Parametry dziecka są takie same jak rodzica dla funkcji pudełkowej plus tu wymienione, * {{Code|numer jednostki}} - jak parametr {{Code|i}} nie został ustawiony, to wtedy liczy się ta zmienna. Przykłady: <syntaxhighlight lang="mediawiki"> {{Nazwa szablonu|nazwa przestrzeni nazw=Wikibooks|nazwa przestrzeni nazw 1=Szablon|nazwa przestrzeni nazw i=|nazwa jednostki 2=Wikibooks:Strona}} </syntaxhighlight> W dziecku powiedzmy jest wywołanie, i szukamy nazwy przestrzeni nazw o numerze dwa, która została podana, ale istnieje za to jej wersji ogólna {{Code|nazwa przestrzeni nazw i}} i domyślna {{Code|nazwa przestrzeni nazw}}, ale wtedy dla tego numerkowego liczy się to ogólne z {{Code| i}}, a ponieważ ta nazwa jest pusta, więc będziemy liczyli nazwę przestrzeni nazw z {{Code|nazwa jednostki 2}}: <syntaxhighlight lang="mediawiki"> {{#invoke:Pudełko|Nazwa przestrzeni nazw dyskusji 2|numer jednostki=2}} </syntaxhighlight> Na podstawie powyższego przykładu otrzymamy wynik o schemacie, nie wyniku, bo tam nie ma zmiennej {{Code|nazwa przestrzeni nazw 1}}, ale jest {{Code|nazwa przestrzeni nazw i}}: <syntaxhighlight lang="mediawiki"> <!-- Ale nie "nazwa przestrzeni nazw 2", bo jej nie ma, ale za to istnieje "nazwa przestrzeni nazw i"; --> <!-- nazwa przestrzeni nazw 2=nazwa przestrzeni nazw i="", a nazwa jednostki 2="Wikibooks:Strona"; --> <!-- Czyli wynik: --> Dyskusja Wikibooks <!-- Widzimy, że wygenerowała się nazwa przestrzeni nazw, którą jest przestrzeń nieprogramowa, ale dyskusji projektu, wychodząca z nazwy jednostek w tym przypadku z "nazwa jednostki 2"; --> </syntaxhighlight> Nie jest brana w tym powyższym przykładzie zmienna {{Code|nazwa przestrzeni nazw}}, bo jej nie ma, ale za to jest {{Code|nazwa przestrzeni nazw i}}, bo ona występuje jako parametr domyślny ogólny dla parametrów numerkowych. Tytaj jest używana jest zmienna {{Code|nazwa jednostki 2}} do wygenerowania ostatecznego wyniku, bo jak można zauważyć, parametry przestrzenne wskazują na przestrzeń główną, a nazwy jednostek już nie. Przykłady w wikikodzie: * {{Code|{{m|Pudełko|Nazwa przestrzeni nazw dyskusji 2|numer jednostki{{=}}2}}}} → {{Tt|{{#invoke:Pudełko|Nazwa przestrzeni nazw dyskusji 2|numer jednostki=2}}}} * {{Code|{{m|Pudełko|Nazwa przestrzeni nazw dyskusji 2|Szablon|nazwa przestrzeni nazw i{{=}}Moja przestrzeń|numer jednostki{{=}}2}}}} → {{Tt|{{#invoke:Pudełko|Nazwa przestrzeni nazw dyskusji 2|Szablon|nazwa przestrzeni nazw i=Moja przestrzeń|numer jednostki=2}}}} * {{Code|{{m|Pudełko|Nazwa przestrzeni nazw dyskusji 2|nazwa przestrzeni nazw 2{{=}}|nazwa jednostki 2{{=}}Szablon:Strona|numer jednostki{{=}}2}}}} → {{Tt|{{#invoke:Pudełko|Nazwa przestrzeni nazw dyskusji 2|nazwa przestrzeni nazw 2=|nazwa jednostki 2=Szablon:Strona|numer jednostki=2}}}} * {{Code|{{m|Pudełko|Nazwa przestrzeni nazw dyskusji 2|nazwa przestrzeni nazw i{{=}}|nazwa jednostki 2{{=}}Szablon:Strona|numer jednostki{{=}}2}}}} → {{Tt|{{#invoke:Pudełko|Nazwa przestrzeni nazw dyskusji 2|nazwa przestrzeni nazw i=|nazwa jednostki 2=Szablon:Strona|numer jednostki=2}}}} * {{Code|{{m|Pudełko|Nazwa przestrzeni nazw dyskusji 2|Szablon|nazwa przestrzeni nazw{{=}}|nazwa jednostki 2{{=}}Wikibooks:Strona|numer jednostki{{=}}2}}}} → {{Tt|{{#invoke:Pudełko|Nazwa przestrzeni nazw dyskusji 2|Szablon|nazwa przestrzeni nazw=|nazwa jednostki 2=Dyskusja Wikibooks:Strona|numer jednostki=2}}}} Powyżej dla przykładu podano parametry nie w rodzicu w szablonie, tylko w dziecku, jeśli chodzi o parametry nazw przestrzeni nazw i nazw jednostek, ale ich się za to nie powinno podawać w tych ramach, tylko w szablonach, w których wywoływane są te ramki pudełek {{Code|{{m|Pudełko}}}}, ale tak tutaj tak zrobiono by było najłatwiej sprawdzić działanie tego typu funkcji. Analogicznie możemy podawać parametry typu jednostki, np.: wywołaniu modułowym {{Code|{{m|Pudełko|Nazwa przestrzeni nazw dyskusji 2|typ jednostki 2{{=}}Podręcznik|nazwa jednostki 2{{=}}Szablon:Strona|numer jednostki{{=}}2}}}} (ale wtedy jest brana przestrzeń nazw z nazwy jednostki), ale o tym więcej w rozdziałach {{Code|{{sr|# p["Dyskusyjny typ jednostki 2"](frame,i)|p=Pudełko}}}} w „{{sr|#Funkcje typu jednostki|p=Pudełko}}”, on definiuje przestrzenie dyskusji, ale można użyć parametru dyskusji typu jednostki z obojętnie jaką wartością niepustą, czy pustą, czy nawet jej nie podamy, wtedy wyświetli się nazwa przestrzeni nazw dyskusji. Jeżeli typ jednostki wskazuje na przestrzeń nazw główną, wtedy się liczą parametry nazw jednostek. Również parametry typu jednostki nie powinno się podawać w dziecku w ramce, tylko w rodzicu w szablonie jako parametry, w którym ta ramka jest wywoływana, ale tutaj podano jedynie dla przykładu, jak najłatwiej sprawdzić działanie tych parametrów tej funkcji. Najpierw w funkcji nagłówku brane są parametry nazw przestrzeni nazw, a jeżeli ich nie ma, to parametry typu jednostki, a jeżeli nie ma lub parametry przestrzenne wskazują na przestrzeń główną, i nie ma nazwy jednostki, to generowane są nazwy tej funkcji na podstawie aktualnej strony. == Funkcje pełnych nazw jednostki == === {{Code|p["Pełna nazwa dyskusji jednostki"](frame,i)}} === === {{Code|p["Pełna nazwa przedmiotowa jednostki"](frame,i)}} === === {{Code|p["Pełna nazwa jednostki"](frame,i)}} === == Funkcje pełnych nazw jednostki drugiej wersji == === {{Code|p["Pełna nazwa dyskusji jednostki 2"](frame,i)}} === === {{Code|p["Pełna nazwa przedmiotowa jednostki 2"](frame,i)}} === === {{Code|p["Pełna nazwa jednostki 2"](frame,i)}} === == Funkcje pełnych nazw jednostki trzeciej wersji == === {{Code|p["Pełna nazwa dyskusji jednostki 3"](frame,i)}} === === {{Code|p["Pełna nazwa przedmiotowa jednostki 3"](frame,i)}} === === {{Code|p["Pełna nazwa jednostki 3"](frame,i)}} === == Funkcje nazw jednostki == === {{Code|p["Nazwa jednostki"](frame,i)}} === == Funkcje nazw jednostki drugiej wersji == === {{Code|p["Nazwa jednostki 2"](frame,i)}} === === {{Code|p["Nazwa przedmiotowa jednostki 2"](frame,i)}} === === {{Code|p["Nazwa dyskusji jednostki 2"](frame,i)}} === == Funkcje nazw przestrzeni nazw trzeciej wersji == === {{Code|p["Nazwa przestrzeni nazw 3"](frame,i)}} === Funkcja pisze nazwę przestrzeni nazw, niezależnie, czy to jest przedmiotowa, czy dyskusji, według, i nie zawsze tylko, podanej w zmiennej {{Code|nazwa przestrzeni nazw}} dla pozycja bazowej w podanych parametrach szablonu rodzicu ramki dziecka, lub dla innej pozycji należy parametr podawać w formie {{Code|nazwa przestrzeni nazw 1}}, {{Code|Nazwa przestrzeni nazw 3}}, {{Code|nazwa przestrzeni nazw 3}},..., lub te parametry można podać w postaci ogólnej {{Code|nazwa przestrzeni nazw i}}. W tej funkcji trzeba też podawać parametry nazwy jednostek {{Code|nazwa jednostki}}, {{Code|nazwa jednostki 1}}, {{Code|nazwa jednostki 2}}, {{Code|nazwa jednostki 3}},... Parametry podaje się w parametrach rodzica wywołania tej funkcji {{Code|{{m|Pudełko|Nazwa przestrzeni nazw 3}}}} (ale ich nie trzeba podawać w dziecku, ale można) i w parametrach dziecka, jeśli chodzi o zmienną {{Code|numer jednostki}}, czyli np.: {{Code|{{m|Pudełko|Nazwa przestrzeni nazw 3|numer jednostki{{=}}<jakaś liczba całkowita dodatnia>}}}}. Te parametry przestrzenne zamiast w rodzicu w szablonie można podać w ramce dziecka, wtedy parametry dziecka mają pierwszeństwo. Przestrzeń nazw z parametrów nazw przestrzennych bazowych (bez numerka) może odpowiadać wartości przestrzeni głównej, to wtedy odpowiednia przestrzeń nazw z parametru nazwy jednostki się nie liczy w tej funkcji, aby się liczyła należy użyć funkcji {{Code|{{sr|#p["Nazwa przestrzeni nazw"](frame,...)|p=Pudełko}}}}. Przestrzeń nazw z parametrów nazw przestrzennych numerkowych może odpowiadać wartości przestrzeni głównej, to wtedy odpowiednia przestrzeń nazw z parametru nazwy jednostki się liczy w tej funkcji, wtedy jest liczona nazwa przestrzeni nazw z tego parametru. Gdy parametry przestrzenne lub typ jednostki w drugim podejściu nie wskazują na przestrzeń główną, to wtedy działanie tej funkcji jest podobne do {{Code|{{sr|#p["Nazwa przestrzeni nazw 2"](frame,...)|p=Pudełko}}}}. Definicja skrótowa funkcji: <syntaxhighlight lang="lua"> p["Nazwa przestrzeni nazw 3"]=function(frame,czy_uwzglednic_alternatywna_nazwe,i)...end; </syntaxhighlight> Wtedy ciało funkcji tej, czyli jego definicja w środku, jest: <syntaxhighlight lang="lua"> -- Jest liczony numer parametru nazwy przestrzeni nazw, domyslnie chodzi tu o numer bazowy parametrów przestrzennych; local numer_jednostki=i or frame.args["numer jednostki"]; local liczba_numeru_jednostki=((numer_jednostki)and(tonumber(numer_jednostki)) or 0); local pudelko_pomocne_modul=require("Module:Pudełko/Pomocne"); -- Liczy nazwę przestrzeni nazw dyskusji na podstawie podanych parametrów; return pudelko_pomocne_modul.Uzyskanie_nazw_jednostki(frame,0,liczba_numeru_jednostki,nil,2); </syntaxhighlight> Parametry funkcji: * {{Code|frame}} - tablica ramki tablicy transportu, * {{Code|czy_uwzglednic_alternatywna_nazwe}} - czy ma uwzględniać nazwę przestrzeni nazw domyślną szablonu, dostępne wartości: {{Code|false}}, w której nazwa domyślna nie jest uwzględniana wtedy, oraz {{Code|nil}} i {{Code|true}}, które oznaczają to samo, w tym jeżeli ona jest uwzględniana, wtedy jest brany parametr pierwszy dziecka, który musi istnieć przy takiej wartości tego parametru, tzn. {{Code|{{m|Pudełko|Nazwa przestrzeni nazw 3|Szablon}}}}, a nazwa uzyskana nazwy przestrzeni nazw jest w takim przypadku błędna, a jeżeli nazwa domyślna jest błędna, czyli {{Code|{{m|Pudełko|Nazwa przestrzeni nazw 3|Moja przestrzeń}}}}, wtedy funkcja zwraca stan błędu {{Code|(błąd)}}. * {{Code|i}} - numer zmiennej nazwy przestrzeni nazw. Funkcja wykorzystuje {{Code|{{sr|#p.Uzyskanie_nazw_jednostki(frame,...)|p=Pudełko/Pomocne}}}} do wyznaczania ogólnego nazwy przestrzeni nazw dla pozycji bazowej i numerkowej, tzn. dla pozycji: jeden, dwa, trzy,..., itd, i ich ogólnej. Parametr ramki tablicy transportu rodzica szablonu: * {{Code|nazwa przestrzeni nazw}}, {{Code|nazwa przestrzeni nazw 1}}, {{Code|Nazwa przestrzeni nazw 3}}, {{Code|nazwa przestrzeni nazw 3}},..., {{Code|nazwa przestrzeni nazw i}} - nazwy przestrzeni nazw dla pozycji bazowej oraz zwykłej i ogólnej numerkowej, * {{Code|nazwa jednostki}}, {{Code|nazwa jednostki 1}}, {{Code|nazwa jednostki 2}}, {{Code|nazwa jednostki 3}},... - nazwy jednostek dla pozycji bazowej i numerkowej, * {{Code|typ jednostki}}, {{Code|typ jednostki 1}}, {{Code|typ jednostki 2}}, {{Code|typ jednostki 3}},..., {{Code|typ jednostki i}} - typy jednostek, którym odpowiadają pewne przestrzenie przedmiotowe, dla pozycji bazowej, numerkowej i ogólnej, ** {{Code|dyskusja typu jednostki}}, {{Code|dyskusja typu jednostki 1}}, {{Code|dyskusja typ jednostki 2}}, {{Code|dyskusja typ jednostki 3}},..., {{Code|dyskusja typ jednostki i}} - czy dany typ jednostki ma przedstawiać, jeśli niepusta, przestrzeń dyskusji dla pozycji bazowej, numerkowej i ogólnej. Parametry ramki tablicy transportu dziecka: * Parametry dziecka są takie same jak rodzica dla funkcji pudełkowej plus tu wymienione, * {{Code|numer jednostki}} - jak parametr {{Code|i}} nie został ustawiony, to wtedy liczy się ta zmienna. Przykłady: <syntaxhighlight lang="mediawiki"> {{Nazwa szablonu|nazwa przestrzeni nazw=Wikibooks|nazwa przestrzeni nazw=|nazwa przestrzeni nazw i=|nazwajednostki=Szablon:Strona|nazwa jednostki 2=Wikibooks:Strona}} <hr /> {{Nazwa szablonu|nazwa przestrzeni nazw=Wikibooks|nazwa przestrzeni nazw 1=Szablon|nazwa przestrzeni nazw i=|nazwa jednostki 2=Wikibooks:Strona}} </syntaxhighlight> W dziecku powiedzmy jest wywołanie, i szukamy nazwy przestrzeni nazw o numerze dwa, która została podana, ale istnieje za to jej wersji ogólna {{Code|nazwa przestrzeni nazw i}} i domyślna {{Code|nazwa przestrzeni nazw}}, ale wtedy dla tego numerkowego liczy się to ogólne z {{Code| i}}, a ponieważ ta nazwa jest pusta, więc będziemy liczyli nazwę przestrzeni nazw z {{Code|nazwa jednostki 2}}: <syntaxhighlight lang="mediawiki"> {{#invoke:Pudełko|Nazwa przestrzeni nazw 3}} <hr /> {{#invoke:Pudełko|Nazwa przestrzeni nazw 3|numer jednostki=2}} </syntaxhighlight> Na podstawie powyższego przykładu otrzymamy wynik o schemacie, nie wyniku, bo tam nie ma zmiennej {{Code|nazwa przestrzeni nazw 1}}, ale jest {{Code|nazwa przestrzeni nazw i}}: <syntaxhighlight lang="mediawiki"> <!-- Ale nie "nazwa przestrzeni nazw""; --> <!-- nazwa przestrzeni nazw=""; --> <!-- Czyli wynik: --> <!-- wynik pusty --> <!-- Widzimy, że wygenerowała się nazwa przestrzeni nazw, którą jest przestrzeń nazw główna, jest ciągiem pustym: ""; --> <hr /> <!-- Ale nie "Nazwa przestrzeni nazw 2", bo jej nie ma, ale za to istnieje "nazwa przestrzeni nazw i"; --> <!-- nazwa przestrzeni nazw 2=nazwa przestrzeni nazw i="", a nazwa jednostki 2="Wikibooks:Strona"; --> <!-- Czyli wynik: --> Wikibooks <!-- Widzimy, że wygenerowała się nazwa przestrzeni nazw, którą jest przestrzeń nieprogramowa, ale projektu, wychodząca z nazwy jednostek w tym przypadku z "nazwa jednostki 2"; --> </syntaxhighlight> Dla parametrów bazowych nienumerkowych istnieje zmienna {{Code|nazwa przestrzeni nazw}}, której waartość jest pusta,którajest zwracana przez tą funkcję. {{Hr}} Dla parametrów numerkowych nie jest brana w tym powyższym przykładzie zmienna {{Code|nazwa przestrzeni nazw}}, bo jej nie ma, ale za to jest {{Code|nazwa przestrzeni nazw i}}, bo ona występuje jako parametr domyślny ogólny dla parametrów numerkowych. Tytaj jest używana jest zmienna {{Code|nazwa jednostki 2}} do wygenerowania ostatecznego wyniku, bo jak można zauważyć, parametry przestrzenne wskazują na przestrzeń główną, a nazwy jednostek już nie. Przykłady w wikikodzie: * {{Code|{{m|Pudełko|Nazwa przestrzeni nazw 3|nazwa przestrzeni nazw{{=}}|nazwa jednostki{{=}}Wikibooks:Strona}}}} → {{Tt|{{#invoke:Pudełko|Nazwa przestrzeni nazw 3|nazwa przestrzeni nazw=|nazwa jednostki=Wikibooks:Szablon}}}} * {{Code|{{m|Pudełko|Nazwa przestrzeni nazw 3|nazwa przestrzeni nazw 2{{=}}|nazwa jednostki 2{{=}}Wikibooks:Strona|numer jednostki{{=}}2}}}} → {{Tt|{{#invoke:Pudełko|Nazwa przestrzeni nazw 3|nazwa przestrzeni nazw 2=|nazwa jednostki 2=Wikibooks:Szablon|numer jednostki=2}}}} Powyżej dla przykładu podano parametry nie w rodzicu w szablonie, tylko w dziecku, jeśli chodzi o parametry nazw przestrzeni nazw i nazw jednostek, ale ich się za to nie powinno podawać w tych ramach, tylko w szablonach, w których wywoływane są te ramki pudełek {{Code|{{m|Pudełko}}}}, ale tak tutaj tak zrobiono by było najłatwiej sprawdzić działanie tego typu funkcji. Analogicznie możemy podawać parametry typu jednostki, np.: wywołaniu modułowym {{Code|{{m|Pudełko|Nazwa przestrzeni nazw 3|typ jednostki 2{{=}}Podręcznik|nazwa jednostki 2{{=}}Szablon:Strona|numer jednostki{{=}}2}}}} (ale wtedy jest brana przestrzeń nazw z nazwy jednostki), ale o tym więcej w rozdziałach {{Code|{{sr|#p["Typ jednostki 3"](frame,i)|p=Pudełko}}}} w „{{sr|#Funkcje typu jednostki|p=Pudełko}}”, on definiuje przestrzenie przedmiotowe, ale można użyć parametru dyskusji typu jednostki z wartością niepustą, wtedy wyświetli się nazwa przestrzeni nazw dyskusji. Jeżeli typ jednostki bazowy wskazuje na przestrzeń nazw główną, wtedy się nie liczą parametry nazw jednostek, a na numerkowy, wtedy się liczy. Również parametry typu jednostki nie powinno się podawać w dziecku w ramce, tylko w rodzicu w szablonie jako parametry, w którym ta ramka jest wywoływana, ale tutaj podano jedynie dla przykładu, jak najłatwiej sprawdzić działanie tych parametrów tej funkcji. Najpierw w funkcji nagłówku brane są parametry nazw przestrzeni nazw, a jeżeli ich nie ma, to parametry typu jednostki, a jeżeli nie ma lub parametry przestrzenne wskazują na przestrzeń główną, i nie ma nazwy jednostki, to generowane są nazwy tej funkcji na podstawie aktualnej strony. === {{Code|p["Nazwa przedmiotowej przestrzeni nazw 3"](frame,i)}} === Funkcja pisze przedmiotową nazwę przestrzeni nazw jakikolwiek nazwy przestrzeni nazw (tzn. nazwę przedmiotową nazwy przestrzenie nazw, czyli nie dyskusji, zamieniana jest na nią samą, czyli identyfikator przestrzeni się nie zmienia, a dyskusji, nie przedmiotową, przekształca się na przedmiotową jej odpowiadającą, czyli w tym przypadku identyfikator przestrzeni zmniejsza się o numer mniej), według podanej w zmiennej {{Code|nazwa przestrzeni nazw}} dla pozycja bazowej w podanych parametrach szablonu rodzicu ramki dziecka, lub dla innej pozycji należy parametr podawać w formie {{Code|nazwa przestrzeni nazw 1}}, {{Code|nazwa przestrzeni nazw 2}}, {{Code|nazwa przestrzeni nazw 3}},..., lub te parametry można podać w postaci ogólnej {{Code|nazwa przestrzeni nazw i}}. Parametry podaje się w parametrach rodzica wywołania tej funkcji {{Code|{{m|Pudełko|Nazwa przedmiotowej przestrzeni nazw 3}}}} (ale ich nie trzeba podawać w dziecku, ale można) i w parametrach dziecka, jeśli chodzi o zmienną {{Code|numer jednostki}}, czyli np.: {{Code|{{m|Pudełko|Nazwa przedmiotowej przestrzeni nazw 3|numer jednostki{{=}}<jakaś liczba całkowita dodatnia>}}}}. Te parametry przestrzenne zamiast w rodzicu w szablonie można podać w ramce dziecka, wtedy parametry dziecka mają pierwszeństwo. Parametry przestrzenne mogą mogą być podane w postaci przestrzeni przedmiotowej lub dyskusji, ale ta funkcja zawsze ją zamienia na przedmiotową. Przestrzeń nazw z parametrów nazw przestrzennych bazowych (bez numerka) może odpowiadać wartości przestrzeni głównej, to wtedy odpowiednia przestrzeń nazw z parametru nazwy jednostki się nie liczy w tej funkcji, aby się liczyła należy użyć funkcji {{Code|{{sr|#p["Nazwa przedmiotowej przestrzeni nazw"](frame,...)|p=Pudełko}}}}. Przestrzeń nazw z parametrów nazw przestrzennych numerkowych może odpowiadać wartości przestrzeni głównej, to wtedy odpowiednia przestrzeń nazw z parametru nazwy jednostki się liczy w tej funkcji, wtedy jest liczona nazwa przestrzeni nazw z tego parametru. Gdy parametry przestrzenne lub typ jednostki w drugim podejściu nie wskazują na przestrzeń główną, to wtedy działanie tej funkcji jest podobne do {{Code|{{sr|#p["Nazwa przedmiotowej przestrzeni nazw 2"](frame,...)|p=Pudełko}}}}. Definicja skrótowa funkcji: <syntaxhighlight lang="lua"> p["Nazwa przedmiotowej przestrzeni nazw 3"]=function(frame,czy_uwzglednic_alternatywna_nazwe,i)...end; </syntaxhighlight> Wtedy ciało funkcji tej, czyli jego definicja w środku, jest: <syntaxhighlight lang="lua"> -- Jest liczony numer parametru nazwy przestrzeni nazw, domyslnie chodzi tu o numer bazowy parametrów przestrzennych; local numer_jednostki=i or frame.args["numer jednostki"]; local liczba_numeru_jednostki=((numer_jednostki)and(tonumber(numer_jednostki)) or 0); local pudelko_pomocne_modul=require("Module:Pudełko/Pomocne"); -- Liczy nazwę przestrzeni nazw przedmiotową na podstawie podanych parametrów; return pudelko_pomocne_modul.Uzyskanie_nazw_jednostki(frame,1,liczba_numeru_jednostki,nil,1); </syntaxhighlight> Parametry funkcji: * {{Code|frame}} - tablica ramki tablicy transportu, * {{Code|czy_uwzglednic_alternatywna_nazwe}} - czy ma uwzględniać nazwę przestrzeni nazw domyślną szablonu, dostępne wartości: {{Code|false}}, w której nazwa domyślna nie jest uwzględniana wtedy, oraz {{Code|nil}} i {{Code|true}}, które oznaczają to samo, w tym jeżeli ona jest uwzględniana, wtedy jest brany parametr pierwszy dziecka, który musi istnieć przy takiej wartości tego parametru, tzn. {{Code|{{m|Pudełko|Nazwa przedmiotowej przestrzeni nazw 3|Dyskusja szablonu}}}} - ta nazwa domyślna zostanie zamieniona na przedmiotową, a jak ona by była przedmiotowa, to żadnej zamiany by nie było, a nazwa uzyskana z nazwy przestrzeni nazw z parametrów przestrzennych jest w takim przypadku błędna, to w takim razie brany jest ten parametr, a jeżeli ta nazwa domyślna jest błędna, czyli {{Code|{{m|Pudełko|Nazwa przedmiotowej przestrzeni nazw 3|Moja przestrzeń}}}}, wtedy funkcja zwraca stan błędu {{Code|(błąd)}}. * {{Code|i}} - numer zmiennej nazwy przestrzeni nazw. Funkcja wykorzystuje {{Code|{{sr|#p.Uzyskanie_nazw_jednostki(frame,...)|p=Pudełko/Pomocne}}}} do wyznaczania ogólnego nazwy przestrzeni nazw dla pozycji bazowej i numerkowej, tzn. dla pozycji: jeden, dwa, trzy,..., itd, i ich ogólnej. Parametr ramki tablicy transportu rodzica szablonu: * {{Code|nazwa przestrzeni nazw}}, {{Code|nazwa przestrzeni nazw 1}}, {{Code|nazwa przestrzeni nazw 2}}, {{Code|nazwa przestrzeni nazw 3}},..., {{Code|nazwa przestrzeni nazw i}} - nazwy przestrzeni nazw dla pozycji bazowej oraz zwykłej i ogólnej numerkowej, * {{Code|typ jednostki}}, {{Code|typ jednostki 1}}, {{Code|typ jednostki 2}}, {{Code|typ jednostki 3}},..., {{Code|typ jednostki i}} - typy jednostek, którym odpowiadają pewne przestrzenie przedmiotowe, dla pozycji bazowej, numerkowej i ogólnej. Parametry ramki tablicy transportu dziecka: * Parametry dziecka są takie same jak rodzica dla funkcji pudełkowej plus tu wymienione, * {{Code|numer jednostki}} - jak parametr {{Code|i}} nie został ustawiony, to wtedy liczy się ta zmienna. Przykłady: <syntaxhighlight lang="mediawiki"> {{Nazwa szablonu|nazwa przestrzeni nazw=Wikibooks|nazwa przestrzeni nazw=|nazwa przestrzeni nazw i=|nazwajednostki=Szablon:Strona|nazwa jednostki=Dyskusja Wikibooks:Strona}} <hr /> {{Nazwa szablonu|nazwa przestrzeni nazw=Wikibooks|nazwa przestrzeni nazw 1=Szablon|nazwa przestrzeni nazw i=|nazwa jednostki 2=Dyskusja Wikibooks:Strona}} </syntaxhighlight> W dziecku powiedzmy jest wywołanie, i szukamy nazwy przestrzeni nazw o numerze dwa, która nie została podana, ale istnieje za to jej wersji ogólna {{Code|nazwa przestrzeni nazw i}} i domyślna {{Code|nazwa przestrzeni nazw}}: <syntaxhighlight lang="mediawiki"> {{#invoke:Pudełko|Nazwa przedmiotowej przestrzeni nazw 3|numer jednostki=1}} </syntaxhighlight> Na podstawie powyższego przykładu otrzymamy wynik o schemacie, nie wyniku, bo tam nie ma zmiennej {{Code|nazwa przestrzeni nazw 1}}, ale jest {{Code|nazwa przestrzeni nazw i}}: <syntaxhighlight lang="mediawiki"> <!-- Ale nie "nazwa przestrzeni nazw""; --> <!-- nazwa przestrzeni nazw=""; --> <!-- Czyli wynik: --> <!-- wynik pusty --> <!-- Widzimy, że wygenerowała się nazwa przestrzeni nazw, którą jest przestrzeń nazw główna, jest ciągiem pustym: ""; --> <hr /> <!-- Ale nie "Nazwa przestrzeni nazw 2", bo jej nie ma, ale za to istnieje "nazwa przestrzeni nazw i"; --> <!-- nazwa przestrzeni nazw 2=nazwa przestrzeni nazw i="", a nazwa jednostki 2="Dyskusja Wikibooks:Strona"; --> <!-- Czyli wynik: --> Wikibooks <!-- Widzimy, że wygenerowała się nazwa przestrzeni nazw, którą jest przestrzeń nieprogramowa, ale projektu, wychodząca z nazwy jednostek w tym przypadku z "nazwa jednostki 2"; --> </syntaxhighlight> Nie jest brana w tym powyższym przykładzie zmienna {{Code|nazwa przestrzeni nazw}}, bo jej nie ma, ale za to jest {{Code|nazwa przestrzeni nazw i}}, bo ona występuje jako parametr domyślny ogólny dla parametrów numerkowych. Przykłady w wikikodzie: * {{Code|{{m|Pudełko|Nazwa przestrzeni nazw 3|nazwa przestrzeni nazw{{=}}|nazwa jednostki{{=}}Dyskusja Wikibooks:Strona}}}} → {{Tt|{{#invoke:Pudełko|Nazwa przestrzeni nazw 3|nazwa przestrzeni nazw=|nazwa jednostki=Dyskusja Wikibooks:Szablon}}}} * {{Code|{{m|Pudełko|Nazwa przestrzeni nazw 3|nazwa przestrzeni nazw 2{{=}}|nazwa jednostki 2{{=}}Dyskusja Wikibooks:Strona|numer jednostki{{=}}2}}}} → {{Tt|{{#invoke:Pudełko|Nazwa przestrzeni nazw 3|nazwa przestrzeni nazw 2=|nazwa jednostki 2=Dyskusja Wikibooks:Szablon|numer jednostki=2}}}} Powyżej dla przykładu podano parametry nie w rodzicu w szablonie, tylko w dziecku, jeśli chodzi o parametry nazw przestrzeni nazw, ale ich się za to nie powinno podawać w tych ramach, tylko w szablonach, w których wywoływane są te ramki pudełek {{Code|{{m|Pudełko}}}}, ale tak tutaj tak zrobiono by było najłatwiej sprawdzić działanie tego typu funkcji. Analogicznie możemy podawać parametry typu jednostki, np.: wywołaniu modułowym {{Code|{{m|Pudełko|Nazwa przedmiotowej przestrzeni nazw 3|typ jednostki 2{{=}}strona szablonu|numer jednostki{{=}}2}}}}, ale o tym więcej w rozdziałach {{Code|{{sr|# p["Przedmiotowy typ jednostki 3"](frame,i)|p=Pudełko}}}} w „{{sr|#Funkcje typu jednostki|p=Pudełko}}”, ale wtedy ta sama nazwa przestrzeni nazw reprezentowana przez {{Parametr|typ jednostki 2|strona szablonu}}, jest zamieniana na to samo, lepiej jest tutaj używać parametrów przestrzennych nazw niż typu jednostki, bo typ jednostki ma taką samą wartość dla przestrzeni przedmiotowej, co dyskusji. Tutaj parametr dyskusji typu jednostki bazowy i numerkowy ogólny, czy szczegółowy, nie gra roli, bo nawet, gdy wygenerujemy nazwę przestrzeni dyskusji za pomoca tego parametru, to i tak otrzymamy na samym końcu jego nazwę przedmiotową. Jeżeli typ jednostki bazowy wskazuje na przestrzeń nazw główną, wtedy się nie liczą parametry nazw jednostek, a na numerkowy, wtedy się liczy. Również parametry typu jednostki nie powinno się podawać w dziecku w ramce, tylko w rodzicu w szablonie jako parametry, w którym ta ramka jest wywoływana, ale tutaj podano jedynie dla przykładu, jak najłatwiej sprawdzić działanie tych parametrów tej funkcji. Najpierw w funkcji nagłówku brane są parametry nazw przestrzeni nazw, a jeżeli ich nie ma, to parametry typu jednostki, a jeżeli nie ma, to generowane są nazwy na podstawie aktualnego modułu. === {{Code|p["Nazwa przestrzeni nazw dyskusji 3"](frame,i)}} === Funkcja pisze nazwę przestrzeni nazw dyskusji jakikolwiek nazwy przestrzeni nazw (tzn. nazwę dyskusji nazwy przestrzenie nazw, czyli nie przedmiotowej, zamieniana jest na nią samą, czyli identyfikator przestrzeni się nie zmienia, a przedmiotową, nie dyskusji, przekształca się na dyskusji jej odpowiadającą, czyli w tym przypadku identyfikator przestrzeni zwiększa się o numer więcej), według, i nie zawsze tylko, podanej w zmiennej {{Code|nazwa przestrzeni nazw}} dla pozycja bazowej w podanych parametrach szablonu rodzicu ramki dziecka, lub dla innej pozycji należy parametr podawać w formie {{Code|nazwa przestrzeni nazw 1}}, {{Code|nazwa przestrzeni nazw 2}}, {{Code|nazwa przestrzeni nazw 3}},..., lub te parametry można podać w postaci ogólnej {{Code|nazwa przestrzeni nazw i}}. W tej funkcji trzeba też podawać parametry nazwy jednostek {{Code|nazwa jednostki}}, {{Code|nazwa jednostki 1}}, {{Code|nazwa jednostki 2}}, {{Code|nazwa jednostki 3}},... Parametry podaje się w parametrach rodzica wywołania tej funkcji {{Code|{{m|Pudełko|Nazwa przestrzeni nazw dyskusji 3}}}} (ale ich nie trzeba podawać w dziecku, ale można) i w parametrach dziecka, jeśli chodzi o zmienną {{Code|numer jednostki}}, czyli np.: {{Code|{{m|Pudełko|Nazwa przestrzeni nazw dyskusji 3|numer jednostki{{=}}<jakaś liczba całkowita dodatnia>}}}}. Te parametry przestrzenne zamiast w rodzicu w szablonie można podać w ramce dziecka, wtedy parametry dziecka mają pierwszeństwo. Przestrzeń nazw z parametrów nazw przestrzennych bazowych (bez numerka) może odpowiadać wartości przestrzeni głównej, to wtedy odpowiednia przestrzeń nazw z parametru nazwy jednostki się nie liczy w tej funkcji, aby się liczyła należy użyć funkcji {{Code|{{sr|#p["Nazwa przestrzeni nazw dyskusji"](frame,...)|p=Pudełko}}}}. Przestrzeń nazw z parametrów nazw przestrzennych numerkowych może odpowiadać wartości przestrzeni głównej, to wtedy odpowiednia przestrzeń nazw z parametru nazwy jednostki się liczy w tej funkcji, wtedy jest liczona nazwa przestrzeni nazw z tego parametru. Gdy parametry przestrzenne lub typ jednostki w drugim podejściu nie wskazują na przestrzeń główną, to wtedy działanie tej funkcji jest podobne do {{Code|{{sr|#p["Nazwa przestrzeni nazw dysskusji 2"](frame,...)|p=Pudełko}}}}. Definicja skrótowa funkcji: <syntaxhighlight lang="lua"> p["Nazwa przestrzeni nazw dyskusji 3"]=function(frame,czy_uwzglednic_alternatywna_nazwe,i)...end; </syntaxhighlight> Wtedy ciało funkcji tej, czyli jego definicja w środku, jest: <syntaxhighlight lang="lua"> local pudelko_pomocne_modul=require("Module:Pudełko/Pomocne"); return pudelko_pomocne_modul.Nazwa_przestrzeni_nazw_przedmiotowa_dyskusji_2(frame,czy_uwzglednic_alternatywna_nazwe,i,"dyskusja"); </syntaxhighlight> Parametry funkcji: * {{Code|frame}} - tablica ramki tablicy transportu, * {{Code|czy_uwzglednic_alternatywna_nazwe}} - czy ma uwzględniać nazwę przestrzeni nazw domyślną szablonu, dostępne wartości: {{Code|false}}, w której nazwa domyślna nie jest uwzględniana wtedy, oraz {{Code|nil}} i {{Code|true}}, które oznaczają to samo, w tym jeżeli ona jest uwzględniana, wtedy jest brany parametr pierwszy dziecka, który musi istnieć przy takiej wartości tego parametru, tzn. {{Code|{{m|Pudełko|Nazwa przestrzeni nazw dyskusji 3|Szablon}}}}, a nazwa uzyskana nazwy przestrzeni nazw jest w takim przypadku błędna, a jeżeli nazwa domyślna jest błędna, czyli {{Code|{{m|Pudełko|Nazwa przestrzeni nazw dyskusji 3|Moja przestrzeń}}}}, wtedy funkcja zwraca stan błędu {{Code|(błąd)}}. * {{Code|i}} - numer zmiennej nazwy przestrzeni nazw. Funkcja wykorzystuje {{Code|{{sr|#p.Nazwa_przestrzeni_nazw_przedmiotowa_dyskusji_2(frame,...)|p=Pudełko/Pomocne}}}} do wyznaczania ogólnego nazwy przestrzeni nazw dla pozycji bazowej i numerkowej, tzn. dla pozycji: jeden, dwa, trzy,..., itd, i ich ogólnej. Parametr ramki tablicy transportu rodzica szablonu: * {{Code|nazwa przestrzeni nazw}}, {{Code|nazwa przestrzeni nazw 1}}, {{Code|nazwa przestrzeni nazw 2}}, {{Code|nazwa przestrzeni nazw 3}},..., {{Code|nazwa przestrzeni nazw i}} - nazwy przestrzeni nazw dla pozycji bazowej oraz zwykłej i ogólnej numerkowej, * {{Code|nazwa jednostki}}, {{Code|nazwa jednostki 1}}, {{Code|nazwa jednostki 2}}, {{Code|nazwa jednostki 3}},... - nazwy jednostek dla pozycji bazowej i numerkowej, * {{Code|typ jednostki}}, {{Code|typ jednostki 1}}, {{Code|typ jednostki 2}}, {{Code|typ jednostki 3}},..., {{Code|typ jednostki i}} - typy jednostek, którym odpowiadają pewne przestrzenie przedmiotowe, dla pozycji bazowej, numerkowej i ogólnej. Parametry ramki tablicy transportu dziecka: * Parametry dziecka są takie same jak rodzica dla funkcji pudełkowej plus tu wymienione, * {{Code|numer jednostki}} - jak parametr {{Code|i}} nie został ustawiony, to wtedy liczy się ta zmienna. Przykłady: <syntaxhighlight lang="mediawiki"> {{Nazwa szablonu|nazwa przestrzeni nazw=Wikibooks|nazwa przestrzeni nazw 1=Szablon|nazwa przestrzeni nazw i=|nazwa jednostki 2=Wikibooks:Strona}} </syntaxhighlight> W dziecku powiedzmy jest wywołanie, i szukamy nazwy przestrzeni nazw o numerze dwa, która została podana, ale istnieje za to jej wersji ogólna {{Code|nazwa przestrzeni nazw i}} i domyślna {{Code|nazwa przestrzeni nazw}}, ale wtedy dla tego numerkowego liczy się to ogólne z {{Code| i}}, a ponieważ ta nazwa jest pusta, więc będziemy liczyli nazwę przestrzeni nazw z {{Code|nazwa jednostki 2}}: <syntaxhighlight lang="mediawiki"> {{#invoke:Pudełko|Nazwa przestrzeni nazw dyskusji 3|numer jednostki=2}} </syntaxhighlight> Na podstawie powyższego przykładu otrzymamy wynik o schemacie, nie wyniku, bo tam nie ma zmiennej {{Code|nazwa przestrzeni nazw 1}}, ale jest {{Code|nazwa przestrzeni nazw i}}: <syntaxhighlight lang="mediawiki"> <!-- Ale nie "nazwa przestrzeni nazw 2", bo jej nie ma, ale za to istnieje "nazwa przestrzeni nazw i"; --> <!-- nazwa przestrzeni nazw 2=nazwa przestrzeni nazw i="", a nazwa jednostki 2="Wikibooks:Strona"; --> <!-- Czyli wynik: --> Dyskusja Wikibooks <!-- Widzimy, że wygenerowała się nazwa przestrzeni nazw, którą jest przestrzeń nieprogramowa, ale dyskusji projektu, wychodząca z nazwy jednostek w tym przypadku z "nazwa jednostki 2"; --> </syntaxhighlight> Nie jest brana w tym powyższym przykładzie zmienna {{Code|nazwa przestrzeni nazw}}, bo jej nie ma, ale za to jest {{Code|nazwa przestrzeni nazw i}}, bo ona występuje jako parametr domyślny ogólny dla parametrów numerkowych. Tytaj jest używana jest zmienna {{Code|nazwa jednostki 2}} do wygenerowania ostatecznego wyniku, bo jak można zauważyć, parametry przestrzenne wskazują na przestrzeń główną, a nazwy jednostek już nie. Przykłady w wikikodzie: * {{Code|{{m|Pudełko|Nazwa przestrzeni nazw dyskusji 3|nazwa przestrzeni nazw{{=}}|nazwa jednostki{{=}}Wikibooks:Strona}}}} → {{Tt|{{#invoke:Pudełko|Nazwa przestrzeni nazw dyskusji 3|nazwa przestrzeni nazw=|nazwa jednostki=Wikibooks:Szablon}}}} * {{Code|{{m|Pudełko|Nazwa przestrzeni nazw dyskusji 3|nazwa przestrzeni nazw 2{{=}}|nazwa jednostki 2{{=}}Wikibooks:Strona|numer jednostki{{=}}2}}}} → {{Tt|{{#invoke:Pudełko|Nazwa przestrzeni nazw dyskusji 3|nazwa przestrzeni nazw 2=|nazwa jednostki 2=Wikibooks:Szablon|numer jednostki=2}}}} Powyżej dla przykładu podano parametry nie w rodzicu w szablonie, tylko w dziecku, jeśli chodzi o parametry nazw przestrzeni nazw i nazw jednostek, ale ich się za to nie powinno podawać w tych ramach, tylko w szablonach, w których wywoływane są te ramki pudełek {{Code|{{m|Pudełko}}}}, ale tak tutaj tak zrobiono by było najłatwiej sprawdzić działanie tego typu funkcji. Analogicznie możemy podawać parametry typu jednostki, np.: wywołaniu modułowym {{Code|{{m|Pudełko|Nazwa przestrzeni nazw dyskusji 3|typ jednostki 2{{=}}Podręcznik|nazwa jednostki 2{{=}}Szablon:Strona|numer jednostki{{=}}2}}}} (ale wtedy jest brana przestrzeń nazw z nazwy jednostki), ale o tym więcej w rozdziałach {{Code|{{sr|# p["Dyskusyjny typ jednostki 3"](frame,i)|p=Pudełko}}}} w „{{sr|#Funkcje typu jednostki|p=Pudełko}}”, on definiuje przestrzenie dyskusji, ale można użyć parametru dyskusji typu jednostki z obojętnie jaką wartością niepustą, czy pustą, czy nawet jej nie podamy, wtedy wyświetli się nazwa przestrzeni nazw dyskusji. Jeżeli typ jednostki bazowy wskazuje na przestrzeń nazw główną, wtedy się nie liczą parametry nazw jednostek, a na numerkowy, wtedy się liczy. Również parametry typu jednostki nie powinno się podawać w dziecku w ramce, tylko w rodzicu w szablonie jako parametry, w którym ta ramka jest wywoływana, ale tutaj podano jedynie dla przykładu, jak najłatwiej sprawdzić działanie tych parametrów tej funkcji. Najpierw w funkcji nagłówku brane są parametry nazw przestrzeni nazw, a jeżeli ich nie ma, to parametry typu jednostki, a jeżeli nie ma lub parametry przestrzenne wskazują na przestrzeń główną, i nie ma nazwy jednostki, to generowane są nazwy tej funkcji na podstawie aktualnej strony. == Funkcje nazw jednostki trzeciej wersji == === {{Code|p["Nazwa jednostki 3"](frame,i)}} === === {{Code|p["Nazwa przedmiotowa jednostki 3"](frame,i)}} === === {{Code|p["Nazwa dyskusji jednostki 3"](frame,i)}} === == Funkcje typu jednostki == === {{Code|p["Typ jednostki"](frame,i)}} === === {{Code|p["Typ jednostki 2"](frame,i)}} === === {{Code|p["Typ jednostki 3"](frame,i)}} === === Funkcje typu jednostki przedmiotowe === ==== {{Code|p["Przedmiotowy typ jednostki"](frame,i)}} ==== ==== {{Code|p["Przedmiotowy typ jednostki 2"](frame,i)}} ==== ==== {{Code|p["Przedmiotowy typ jednostki 3"](frame,i)}} ==== === Fukcje typu jednostki dyskusji === ==== {{Code|p["Dyskusyjny typ jednostki"](frame,i)}} ==== ==== {{Code|p["Dyskusyjny typ jednostki 2"](frame,i)}} ==== ==== {{Code|p["Dyskusyjny typ jednostki 3"](frame,i)}} ==== == Funkcje chech pudełka == === {{Code|p["Cecha pudełka"](frame)}} === === {{Code|p["Przedmiotowa cecha pudełka"](frame)}} === === {{Code|p["Dyskusyjna cecha pudełka"](frame)}} === == Fukcje ogólnego pudełka == === {{Code|p["Ogólne pudełko"](frame)}} === == Funkcje ogólne == === {{Code|p["Tekst pudełka"](frame)}} === == Funkcje błędów pudełka == === {{Code|p["Błędy pudełka"](frame)}} === === {{Code|p["Przedmiotowe błędy pudełka"](frame)}} === === {{Code|p["Dyskusyjne błędy pudełka"](frame)}} === == Funkcje nazw stron == === {{Code|p["Nazwa strony głównej projektu"](frame,i)}} === === {{Code|p["Nazwa strony głównej dla dzieci projektu"](frame,i)}} === == Funkcje kodów == === {{Code|p["Kod języka"](frame,i)}} === === {{Code|p["Kod projektu"](frame,i)}} === === {{Code|p["Klucz projektu"](frame,i)}} === == Funkcje wiki == === {{Code|p["Inny niż język bieżący wiki"](frame)}} === === {{Code|p["Inne niż lokalne wiki"](frame)}} === === {{Code|p["Inne niż bieżące wiki"](frame)}} === == Funkcje typów parametrów, czy podane je == === {{Code|p["Podano parametry nienazwane"](frame)}} === === {{Code|p["Podano parametry numerowane"](frame)}} === === {{Code|p["Podano parametry nazwane"](frame)}} === == Funkcje kodów tego projektu == === {{Code|p["Kod projektu tego projektu"](frame)}} === === {{Code|p["Kod języka tego projektu"](frame)}} === === {{Code|p["Klucz projektu tego projektu"](frame)}} === == Funkcje stron == === {{Code|p["Strona główna tego projektu"](frame)}} === === {{Code|p["Strona główna dla dzieci tego projektu"](frame)}} === == Funkcje nazw stron drugiej wersji == === {{Code|p["Nazwa strony głównej dla dzieci projektu 2"](frame)}} === === {{Code| p["Nazwa strony głównej projektu 2"](frame)}} === {{BrClear}} <noinclude><!-- -->{{ProstaStronaKoniec}}<!-- -->{{Kategoria|Opisy funkcji, w Lua w Scribunto, w modułach}}<!-- --></noinclude> 4a9ph6v072fhp2wip6bqnx36h77jfoi 540420 540419 2026-04-23T19:52:04Z Persino 2851 /* {{Code|p["Nazwa przestrzeni nazw dyskusji 3"](frame,i)}} */ 540420 wikitext text/x-wiki <noinclude>{{ProstaStronaStart | nagłówek = {{Podrozdział|{{ld2|Pudełko}}|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 pudelko_modul=require("Module:Pudełko"); </syntaxhighlight> dzięki, któremu można wypisywać funkcje należącego do niego. Posługuje się na parametrach pudełkowych {{Parametr|nazwa przestrzeni nazw}} (czy też bez numerka {{Parametr|nazwa przestrzeni nazw i}} dla tego numerowanego) lub te z numerkiem po jednej spacji w nich (ale nie dla tego z końcówką {{Code| i}}) mogą zostać użyte jako parametry szablonu. Moduł {{Code|{{ld2|Pudełko}}}} przedstawia funkcje nazw w oparciu o funkcje nazw {{Code|{{ld2|Nazwy}}}}, generuje on nazwy za pomocą parametrów pudełkowych podanych poniżej. Parametr {{Parametr|nazwa jednostki}} (lub parametr {{Parametr|cel}} dla numerka tego pierwszego, tego alternatywnego), lub te z numerkiem po jednej spacji w nazwie parametru, albo numerowane numerkami {{Code|1}}, {{Code|2}},..., mogą zostać użyte jako parametry szablonu. Parametry określające rodzaj jednostki {{Parametr|typ jednostki}} z {{Parametr|dyskusja typu jednostki}}, itp. w wersjach z numerkiem po jednej spacji w nich mogą zostać użyte jako parametry szablonu. A te tymi numerowanymi liczbami naturalnymi {{Tt|nazwy jednostki}} od jedynki wzwyż poprzez szablon, w którym są one użyte, one też mogą być użyte z dwukropkiem, te numerowane, na samym początku nazwy, wtedy one są traktowane jako pełne nazwy strony, i wtedy one nie zostaną z interpretowane, że do nich trzeba użyć parametr odpowiedni z nazwą przetrzeni nazw z tego numerowanego, czy ogólny, aby utworzyć znów inną pełną nazwę strony dla tego numerka. Zestawienie: * {{Code|nazwa przestrzeni nazw}} i {{Code|nazwa przestrzeni nazw i}} (ogólna nazwa przestrzeni nazw dla wszystkich numerków, i tych numerowanych jednostek) - i to pierwsze z numerkiem, tzn. {{Code|nazwa przestrzeni nazw 1}}, {{Code|nazwa przestrzeni nazw 2}}, ..., * {{Code|nazwa jednostki}} - i te z numerkiem: {{Code|nazwa jednostki 1}}, {{Code|nazwa jednostki 2}}, ..., lub gdy jest zamiast tego parametrem numerowany, {{Code|1}}, {{Code|2}},..., który dla tego pierwszego może być uznany jako: {{Code|cel}} {{=}} {{Code|1}}, * {{Code|typ jednostki}} (parametr bazowy) i {{Code|typ jednostki i}} (parametr domyślny numerkowy) - i te z numerkiem: {{Code|typ jednostki 1}}, {{Code|typ jednostki 2}}, ..., tzn. gdy chcemy określić z jakim typem jednostki mamy do czynienia w zależności do jakiej przestrzeni nazw należy, a w danej, czy jest on np. programowy, czy tylko jest opisem, jak to bywa w szablonach {{Np|Template|link=tak}}, podobnie jest w przypadku {{Np|Module|link=tak}}, czy jak jest w innych przestrzeniach nazw, ** {{Code|dyskusja typu jednostki}} (parametr bazowy) i {{Code|dyskusja typu jednostki i}} (parametr domyślny numerkowy) - i te z numerkiem: {{Code|dyskusja typu jednostki 1}}, {{Code|dyskusja typu jednostki 2}}, ..., gdy chcemy określić wartością niepustą,że chodzi tutaj o typ jednostki. == {{Code|p.CzyNiepoprawnaNazwa(nazwa_jednostki)}} == Funkcja sprawdzajaca, czy jest poprawnie podana nazwa jednostki, czy ma poprawną nazwę. Znakami tymi, z których nie powinna składać się nazwa jest {{Code|<nowiki>{}<>|[]#\n</nowiki>}} i dodatkowo znak {{Code|&#127;}} (kod {{Code|{{Nowiki|&#127;}}}}). Też nie może składać się z trzech znaków tyldy, tzn. {{Code|<nowiki>~~~</nowiki>}}. Również w swojej budowie nie może składać się ze kodów {{Strong|HTML}} literowych o wzorze {{Code|{{Nowiki|&(%a+);}}}}. Natomiast może składać się z {{Code|{{Nowiki|&#(%d+);}}}} i {{Code|{{Nowiki|&#x(%x+);}}}}, ale w pierw te kody muszą być zamienione na normalne znaki. Skrótowa definicja funkcji: <syntaxhighlight lang="lua"> function p.CzyNiepoprawnaNazwa(nazwa_jednostki)...end; </syntaxhighlight> Wtedy ciało funkcji tej, czyli jego definicja w środku, jest: <syntaxhighlight lang="lua"> -- Moduł: "Moduł:Html/dane", służy do ładowania znaku o kodzie HTML "&#127;"; local html_dane_modul=mw.loadData("Module:Html/dane"); return mw.ustring.match(nazwa_jednostki,"[{}<>|%[%]#\n"..html_dane_modul.znak_127.."]+") or mw.ustring.match(nazwa_jednostki,"~~~") or mw.ustring.match(nazwa_jednostki,"&(%a+);"); </syntaxhighlight> Parametry: * {{Code|nazwa_jednostki}} - nazwa jednostki do sprawdzenia. Przykłady: <syntaxhighlight lang="lua"> local pudelko_modul=require("Module:Pudełko"); -- Podana przykładowa niepoprawna nazwa jedostki local nazwa_jednostki="Nazwa pliku [[Nazwa linku w pliku]]"; -- Fukcja zwróci wartość: local czy_poprawna_nazwa=true; local czy_poprawna_nazwa=pudelko_modul.CzyNiepoprawnaNazwa(nazwa_jednostki); </syntaxhighlight> == Funkcje nazw przestrzeni nazw == === {{Code|p["Nazwa przestrzeni nazw"](frame,...)}} === Funkcja pisze nazwę przestrzeni nazw, niezależnie, czy to jest przedmiotowa, czy dyskusji, według podanej w zmiennej {{Code|nazwa przestrzeni nazw}} dla pozycja bazowej w podanych parametrach szablonu rodzicu ramki dziecka, lub dla innej pozycji należy parametr podawać w formie {{Code|nazwa przestrzeni nazw 1}}, {{Code|nazwa przestrzeni nazw 2}}, {{Code|nazwa przestrzeni nazw 3}},..., lub te parametry można podać w postaci ogólnej {{Code|nazwa przestrzeni nazw i}}. Parametry podaje się w parametrach rodzica wywołania tej funkcji {{Code|{{m|Pudełko|Nazwa przestrzeni nazw}}}} (ale ich nie trzeba podawać w dziecku, ale można) i w parametrach dziecka, jeśli chodzi o zmienną {{Code|numer jednostki}}, czyli np.: {{Code|{{m|Pudełko|Nazwa przestrzeni nazw|numer jednostki{{=}}<jakaś liczba całkowita dodatnia>}}}}. Te parametry przestrzenne zamiast w rodzicu w szablonie można podać w ramce dziecka, wtedy parametry dziecka mają pierwszeństwo. Przestrzeń nazw z parametrów nazw przestrzennych może odpowiadać wartości przestrzeni głównej, to wtedy odpowiednia przestrzeń nazw z parametru nazwy jednostki się nie liczy w tej funkcji, aby się liczyła należy użyć funkcji {{Code|{{sr|#p["Nazwa przestrzeni nazw 2"](frame,...)|p=Pudełko}}}}. Definicja skrótowa funkcji: <syntaxhighlight lang="lua"> p["Nazwa przestrzeni nazw"]=function(frame,czy_uwzglednic_alternatywna_nazwe,i)...end; </syntaxhighlight> Wtedy ciało funkcji tej, czyli jego definicja w środku, jest: <syntaxhighlight lang="lua"> -- Jest liczony numer parametru nazwy przestrzeni nazw, domyslnie chodzi tu o numer bazowy parametrów przestrzennych; local numer_jednostki=i or frame.args["numer jednostki"]; local liczba_numer_jednostki=((numer_jednostki)and(tonumber(numer_jednostki))or 0); local pudelko_pomocne_modul=require("Module:Pudełko/Pomocne"); -- Liczy nazwę przestrzeni nazw na podstawie podanych parametrów; return pudelko_pomocne_modul.Nazwa_przestrzeni_nazw(frame,0, czy_uwzglednic_alternatywna_nazwe,liczba_numer_jednostki); </syntaxhighlight> Parametry funkcji: * {{Code|frame}} - tablica ramki tablicy transportu, * {{Code|czy_uwzglednic_alternatywna_nazwe}} - czy ma uwzględniać nazwę przestrzeni nazw domyślną szablonu, dostępne wartości: {{Code|false}}, w której nazwa domyślna nie jest uwzględniana wtedy, oraz {{Code|nil}} i {{Code|true}}, które oznaczają to samo, w tym jeżeli ona jest uwzględniana, wtedy jest brany parametr pierwszy dziecka, który musi istnieć przy takiej wartości tego parametru, tzn. {{Code|{{m|Pudełko|Nazwa przestrzeni nazw|Szablon}}}}, a nazwa uzyskana nazwy przestrzeni nazw jest w takim przypadku błędna, a jeżeli nazwa domyślna jest błędna, czyli {{Code|{{m|Pudełko|Nazwa przestrzeni nazw|Moja przestrzeń}}}}, wtedy funkcja zwraca stan błędu {{Code|(błąd)}}. * {{Code|i}} - numer zmiennej nazwy przestrzeni nazw. Funkcja wykorzystuje {{Code|{{sr|#p.Nazwa_przestrzeni_nazw(frame,...)|p=Pudełko/Pomocne}}}} do wyznaczania ogólnego nazwy przestrzeni nazw dla pozycji bazowej i numerkowej, tzn. dla pozycji: jeden, dwa, trzy,..., itd, i ich ogólnej. Parametr ramki tablicy transportu rodzica szablonu: * {{Code|nazwa przestrzeni nazw}}, {{Code|nazwa przestrzeni nazw 1}}, {{Code|nazwa przestrzeni nazw 2}}, {{Code|nazwa przestrzeni nazw 3}},..., {{Code|nazwa przestrzeni nazw i}} - nazwy przestrzeni nazw dla pozycji bazowej oraz zwykłej i ogólnej numerkowej, * {{Code|typ jednostki}}, {{Code|typ jednostki 1}}, {{Code|typ jednostki 2}}, {{Code|typ jednostki 3}},..., {{Code|typ jednostki i}} - typy jednostek, którym odpowiadają pewne przestrzenie przedmiotowe, dla pozycji bazowej, numerkowej i ogólnej, ** {{Code|dyskusja typu jednostki}}, {{Code|dyskusja typu jednostki 1}}, {{Code|dyskusja typ jednostki 2}}, {{Code|dyskusja typ jednostki 3}},..., {{Code|dyskusja typ jednostki i}} - czy dany typ jednostki ma przedstawiać, jeśli niepusta, przestrzeń dyskusji dla pozycji bazowej, numerkowej i ogólnej. Parametry ramki tablicy transportu dziecka: * Parametry dziecka są takie same jak rodzica dla funkcji pudełkowej plus tu wymienione, * {{Code|numer jednostki}} - jak parametr {{Code|i}} nie został ustawiony, to wtedy liczy się ta zmienna. Przykłady: <syntaxhighlight lang="mediawiki"> {{Nazwa szablonu|nazwa przestrzeni nazw=Wikibooks|nazwa przestrzeni nazw 2=Szablon|nazwa przestrzeni nazw i=Moduł}} </syntaxhighlight> W dziecku powiedzmy jest wywołanie, i szukamy nazwy przestrzeni nazw o numerze dwa, która nie została podana, ale istnieje za to jej wersji ogólna {{Code|nazwa przestrzeni nazw i}} i domyślna {{Code|nazwa przestrzeni nazw}}: <syntaxhighlight lang="mediawiki"> {{#invoke:Pudełko|Nazwa przestrzeni nazw|numer jednostki=1}} </syntaxhighlight> Na podstawie powyższego przykładu otrzymamy wynik o schemacie, nie wyniku, bo tam nie ma zmiennej {{Code|nazwa przestrzeni nazw 1}}, ale jest {{Code|nazwa przestrzeni nazw i}}: <syntaxhighlight lang="mediawiki"> <!-- Ale nie "nazwa przestrzeni nazw", bo jej nie ma, ale za to istnieje "nazwa przestrzeni nazw i"; --> <!-- nazwa przestrzeni nazw 2=nazwa przestrzeni nazw i=Moduł; --> <!-- Czyli wynik: --> Moduł <!-- Widzimy, że wygenerowała się nazwa przestrzeni nazw, którą jest przestrzeń programowa, którą również jest "Szablon"; --> </syntaxhighlight> Nie jest brana w tym powyższym przykładzie zmienna {{Code|nazwa przestrzeni nazw}}, bo jej nie ma, ale za to jest {{Code|nazwa przestrzeni nazw i}}, bo ona występuje jako parametr domyślny ogólny dla parametrów numerkowych. Przykłady w wikikodzie: * {{Code|{{m|Pudełko|Nazwa przestrzeni nazw|numer jednostki{{=}}2}}}} → {{Tt|{{#invoke:Pudełko|Nazwa przestrzeni nazw|numer jednostki=2}}}} * {{Code|{{m|Pudełko|Nazwa przestrzeni nazw|Szablon|nazwa przestrzeni nazw i{{=}}Moja przestrzeń|numer jednostki{{=}}2}}}} → {{Tt|{{#invoke:Pudełko|Nazwa przestrzeni nazw|Szablon|nazwa przestrzeni nazw i=Moja przestrzeń|numer jednostki=2}}}} * {{Code|{{m|Pudełko|Nazwa przestrzeni nazw|nazwa przestrzeni nazw 2{{=}}Szablon|numer jednostki{{=}}2}}}} → {{Tt|{{#invoke:Pudełko|Nazwa przestrzeni nazw|nazwa przestrzeni nazw 2=Szablon|numer jednostki=2}}}} * {{Code|{{m|Pudełko|Nazwa przestrzeni nazw|nazwa przestrzeni nazw 2{{=}}Szablon|numer jednostki{{=}}2}}}} → {{Tt|{{#invoke:Pudełko|Nazwa przestrzeni nazw|nazwa przestrzeni nazw i=Szablon|numer jednostki=2}}}} * {{Code|{{m|Pudełko|Nazwa przestrzeni nazw|nazwa przestrzeni nazw{{=}}Szablon|numer jednostki{{=}}2}}}} → {{Tt|{{#invoke:Pudełko|Nazwa przestrzeni nazw|nazwa przestrzeni nazw=Szablon|numer jednostki=2}}}} Powyżej dla przykładu podano parametry nie w rodzicu w szablonie, tylko w dziecku, jeśli chodzi o parametry nazw przestrzeni nazw, ale ich się za to nie powinno podawać w tych ramach, tylko w szablonach, w których wywoływane są te ramki pudełek {{Code|{{m|Pudełko}}}}, ale tak tutaj tak zrobiono by było najłatwiej sprawdzić działanie tego typu funkcji. Analogicznie możemy podawać parametry typu jednostki, np.: wywołaniu modułowym {{Code|{{m|Pudełko|Nazwa przestrzeni nazw|typ jednostki 2{{=}}strona szablonu|numer jednostki{{=}}2}}}}, ale o tym więcej w rozdziałach {{Code|{{sr|# p["Typ jednostki"](frame,i)|p=Pudełko}}}} w „{{sr|#Funkcje typu jednostki|p=Pudełko}}”, on definiuje przestrzenie przedmiotowe, ale można użyć parametru dyskusji typu jednostki z wartością niepustą, wtedy wyświetli się nazwa przestrzeni nazw dyskusji. Również parametry typu jednostki nie powinno się podawać w dziecku w ramce, tylko w rodzicu w szablonie jako parametry, w którym ta ramka jest wywoływana, ale tutaj podano jedynie dla przykładu, jak najłatwiej sprawdzić działanie tych parametrów tej funkcji. Najpierw w funkcji nagłówku brane są parametry nazw przestrzeni nazw, a jeżeli ich nie ma, to parametry typu jednostki, a jeżeli nie ma, to generowane są nazwy na podstawie aktualnego modułu. === {{Code|p["Nazwa przedmiotowej przestrzeni nazw"](frame,...)}} === Funkcja pisze przedmiotową nazwę przestrzeni nazw jakikolwiek nazwy przestrzeni nazw (tzn. nazwę przedmiotową nazwy przestrzenie nazw, czyli nie dyskusji, zamieniana jest na nią samą, czyli identyfikator przestrzeni się nie zmienia, a dyskusji, nie przedmiotową, przekształca się na przedmiotową jej odpowiadającą, czyli w tym przypadku identyfikator przestrzeni zmniejsza się o numer mniej), według podanej w zmiennej {{Code|nazwa przestrzeni nazw}} dla pozycja bazowej w podanych parametrach szablonu rodzicu ramki dziecka, lub dla innej pozycji należy parametr podawać w formie {{Code|nazwa przestrzeni nazw 1}}, {{Code|nazwa przestrzeni nazw 2}}, {{Code|nazwa przestrzeni nazw 3}},..., lub te parametry można podać w postaci ogólnej {{Code|nazwa przestrzeni nazw i}}. Parametry podaje się w parametrach rodzica wywołania tej funkcji {{Code|{{m|Pudełko|Nazwa przedmiotowej przestrzeni nazw}}}} (ale ich nie trzeba podawać w dziecku, ale można) i w parametrach dziecka, jeśli chodzi o zmienną {{Code|numer jednostki}}, czyli np.: {{Code|{{m|Pudełko|Nazwa przedmiotowej przestrzeni nazw|numer jednostki{{=}}<jakaś liczba całkowita dodatnia>}}}}. Te parametry przestrzenne zamiast w rodzicu w szablonie można podać w ramce dziecka, wtedy parametry dziecka mają pierwszeństwo. Parametry przestrzenne mogą mogą być podane w postaci przestrzeni przedmiotowej lub dyskusji, ale ta funkcja zawsze ją zamienia na przedmiotową. Przestrzeń nazw z parametrów nazw przestrzennych może odpowiadać wartości przestrzeni głównej, to wtedy odpowiednia przestrzeń nazw z parametru nazwy jednostki się nie liczy w tej funkcji, aby się liczyła należy użyć funkcji {{Code|{{sr|#p["Nazwa przedmiotowej przestrzeni nazw 2"](frame,...)|p=Pudełko}}}}. Definicja skrótowa funkcji: <syntaxhighlight lang="lua"> p["Nazwa przedmiotowej przestrzeni nazw"]=function(frame,czy_uwzglednic_alternatywna_nazwe,i)...end; </syntaxhighlight> Wtedy ciało funkcji tej, czyli jego definicja w środku, jest: <syntaxhighlight lang="lua"> -- Jest liczony numer parametru nazwy przestrzeni nazw, domyslnie chodzi tu o numer bazowy parametrów przestrzennych; local numer_jednostki=i or frame.args["numer jednostki"]; local liczba_numer_jednostki=((numer_jednostki)and(tonumber(numer_jednostki))or 0); local pudelko_pomocne_modul=require("Module:Pudełko/Pomocne"); -- Liczy nazwę przestrzeni nazw przedmiotową na podstawie podanych parametrów; return pudelko_pomocne_modul.Nazwa_przestrzeni_nazw(frame,1, czy_uwzglednic_alternatywna_nazwe,liczba_numer_jednostki); </syntaxhighlight> Parametry funkcji: * {{Code|frame}} - tablica ramki tablicy transportu, * {{Code|czy_uwzglednic_alternatywna_nazwe}} - czy ma uwzględniać nazwę przestrzeni nazw domyślną szablonu, dostępne wartości: {{Code|false}}, w której nazwa domyślna nie jest uwzględniana wtedy, oraz {{Code|nil}} i {{Code|true}}, które oznaczają to samo, w tym jeżeli ona jest uwzględniana, wtedy jest brany parametr pierwszy dziecka, który musi istnieć przy takiej wartości tego parametru, tzn. {{Code|{{m|Pudełko|Nazwa przedmiotowej przestrzeni nazw|Dyskusja szablonu}}}} - ta nazwa domyślna zostanie zamieniona na przedmiotową, a jak ona by była przedmiotowa, to żadnej zamiany by nie było, a nazwa uzyskana z nazwy przestrzeni nazw z parametrów przestrzennych jest w takim przypadku błędna, to w takim razie brany jest ten parametr, a jeżeli ta nazwa domyślna jest błędna, czyli {{Code|{{m|Pudełko|Nazwa przedmiotowej przestrzeni nazw|Moja przestrzeń}}}}, wtedy funkcja zwraca stan błędu {{Code|(błąd)}}. * {{Code|i}} - numer zmiennej nazwy przestrzeni nazw. Funkcja wykorzystuje {{Code|{{sr|#p.Nazwa_przestrzeni_nazw(frame,...)|p=Pudełko/Pomocne}}}} do wyznaczania ogólnego nazwy przestrzeni nazw dla pozycji bazowej i numerkowej, tzn. dla pozycji: jeden, dwa, trzy,..., itd, i ich ogólnej. Parametr ramki tablicy transportu rodzica szablonu: * {{Code|nazwa przestrzeni nazw}}, {{Code|nazwa przestrzeni nazw 1}}, {{Code|nazwa przestrzeni nazw 2}}, {{Code|nazwa przestrzeni nazw 3}},..., {{Code|nazwa przestrzeni nazw i}} - nazwy przestrzeni nazw dla pozycji bazowej oraz zwykłej i ogólnej numerkowej, * {{Code|typ jednostki}}, {{Code|typ jednostki 1}}, {{Code|typ jednostki 2}}, {{Code|typ jednostki 3}},..., {{Code|typ jednostki i}} - typy jednostek, którym odpowiadają pewne przestrzenie przedmiotowe, dla pozycji bazowej, numerkowej i ogólnej. Parametry ramki tablicy transportu dziecka: * Parametry dziecka są takie same jak rodzica dla funkcji pudełkowej plus tu wymienione, * {{Code|numer jednostki}} - jak parametr {{Code|i}} nie został ustawiony, to wtedy liczy się ta zmienna. Przykłady: <syntaxhighlight lang="mediawiki"> {{Nazwa szablonu|nazwa przestrzeni nazw=Dyskusja Wikibooks|nazwa przestrzeni nazw 2=Dyskusja szablonu|nazwa przestrzeni nazw i=Dyskusja modułu}} </syntaxhighlight> W dziecku powiedzmy jest wywołanie, i szukamy nazwy przestrzeni nazw o numerze dwa, która nie została podana, ale istnieje za to jej wersji ogólna {{Code|nazwa przestrzeni nazw i}} i domyślna {{Code|nazwa przestrzeni nazw}}: <syntaxhighlight lang="mediawiki"> {{#invoke:Pudełko|Nazwa przedmiotowej przestrzeni nazw|numer jednostki=1}} </syntaxhighlight> Na podstawie powyższego przykładu otrzymamy wynik o schemacie, nie wyniku, bo tam nie ma zmiennej {{Code|nazwa przestrzeni nazw 1}}, ale jest {{Code|nazwa przestrzeni nazw i}}: <syntaxhighlight lang="mediawiki"> <!-- Ale nie "nazwa przestrzeni nazw", bo jej nie ma, ale za to istnieje "nazwa przestrzeni nazw i"; --> <!-- nazwa przestrzeni nazw 2=nazwa przestrzeni nazw i=Dyskusja modułu; --> <!-- Czyli wynik: --> Moduł <!-- Widzimy, że wygenerowała się nazwa przestrzeni nazw, którą jest przestrzeń przedmiotowa programowa przestrzeni dyskusji "Dyskusja modułu", którą również jest "Szablon" jego przestrzeni dyskusji "Dyskusja szablonu", a dla ich przestrzeni przedmiotowej, zamiast dyskusji, to samo przekształca się na to samo; --> </syntaxhighlight> Nie jest brana w tym powyższym przykładzie zmienna {{Code|nazwa przestrzeni nazw}}, bo jej nie ma, ale za to jest {{Code|nazwa przestrzeni nazw i}}, bo ona występuje jako parametr domyślny ogólny dla parametrów numerkowych. Przykłady w wikikodzie: * {{Code|{{m|Pudełko|Nazwa przedmiotowej przestrzeni nazw|numer jednostki{{=}}2}}}} → {{Tt|{{#invoke:Pudełko|Nazwa przedmiotowej przestrzeni nazw|numer jednostki=2}}}} * {{Code|{{m|Pudełko|Nazwa przedmiotowej przestrzeni nazw|Dyskusja szablonu|nazwa przestrzeni nazw i{{=}}Moja przestrzeń|numer jednostki{{=}}2}}}} → {{Tt|{{#invoke:Pudełko|Nazwa przedmiotowej przestrzeni nazw|Dyskusja szablonu|nazwa przestrzeni nazw i=Moja przestrzeń|numer jednostki=2}}}} * {{Code|{{m|Pudełko|Nazwa przedmiotowej przestrzeni nazw|nazwa przestrzeni nazw 2{{=}}Dyskusja szablonu|numer jednostki{{=}}2}}}} → {{Tt|{{#invoke:Pudełko|Nazwa przedmiotowej przestrzeni nazw|nazwa przestrzeni nazw 2=Dyskusja szablonu|numer jednostki=2}}}} * {{Code|{{m|Pudełko|Nazwa przedmiotowej przestrzeni nazw|nazwa przestrzeni nazw 2{{=}}Dyskusja szablonu|numer jednostki{{=}}2}}}} → {{Tt|{{#invoke:Pudełko|Nazwa przedmiotowej przestrzeni nazw|nazwa przestrzeni nazw i=Dyskusja szablonu|numer jednostki=2}}}} * {{Code|{{m|Pudełko|Nazwa przedmiotowej przestrzeni nazw|nazwa przestrzeni nazw{{=}}Dyskusja szablonu|numer jednostki{{=}}2}}}} → {{Tt|{{#invoke:Pudełko|Nazwa przedmiotowej przestrzeni nazw|nazwa przestrzeni nazw=Dyskusja szablonu|numer jednostki=2}}}} Powyżej dla przykładu podano parametry nie w rodzicu w szablonie, tylko w dziecku, jeśli chodzi o parametry nazw przestrzeni nazw, ale ich się za to nie powinno podawać w tych ramach, tylko w szablonach, w których wywoływane są te ramki pudełek {{Code|{{m|Pudełko}}}}, ale tak tutaj tak zrobiono by było najłatwiej sprawdzić działanie tego typu funkcji. Analogicznie możemy podawać parametry typu jednostki, np.: wywołaniu modułowym {{Code|{{m|Pudełko|Nazwa przedmiotowej przestrzeni nazw|typ jednostki 2{{=}}strona szablonu|numer jednostki{{=}}2}}}}, ale o tym więcej w rozdziałach {{Code|{{sr|# p["Przedmiotowy typ jednostki"](frame,i)|p=Pudełko}}}} w „{{sr|#Funkcje typu jednostki|p=Pudełko}}”, ale wtedy ta sama nazwa przestrzeni nazw reprezentowana przez {{Parametr|typ jednostki 2|strona szablonu}}, jest zamieniana na to samo, lepiej jest tutaj używać parametrów przestrzennych nazw niż typu jednostki, bo typ jednostki ma taką samą wartość dla przestrzeni przedmiotowej, co dyskusji. Tutaj parametr dyskusji typu jednostki bazowy i numerkowy ogólny, czy szczegółowy, nie gra roli, bo nawet, gdy wygenerujemy nazwę przestrzeni dyskusji za pomoca tego parametru, to i tak otrzymamy na samym końcu jego nazwę przedmiotową. Również parametry typu jednostki nie powinno się podawać w dziecku w ramce, tylko w rodzicu w szablonie jako parametry, w którym ta ramka jest wywoływana, ale tutaj podano jedynie dla przykładu, jak najłatwiej sprawdzić działanie tych parametrów tej funkcji. Najpierw w funkcji nagłówku brane są parametry nazw przestrzeni nazw, a jeżeli ich nie ma, to parametry typu jednostki, a jeżeli nie ma, to generowane są nazwy na podstawie aktualnego modułu. === {{Code|p["Nazwa przestrzeni nazw dyskusji"](frame,...)}} === Funkcja pisze nazwę przestrzeni nazw dyskusji jakikolwiek nazwy przestrzeni nazw (tzn. nazwę przedmiotową nazwy przestrzenie nazw, czyli nie dyskusji, zamieniana jest na dyskusji, czyli identyfikator przestrzeni się zmienia jeden wyżej, a dyskusji, nie przedmiotową, przekształca się na tą samą), według podanej w zmiennej {{Code|nazwa przestrzeni nazw}} dla pozycja bazowej w podanych parametrach szablonu rodzicu ramki dziecka, lub dla innej pozycji należy parametr podawać w formie {{Code|nazwa przestrzeni nazw 1}}, {{Code|nazwa przestrzeni nazw 2}}, {{Code|nazwa przestrzeni nazw 3}},..., lub te parametry można podać w postaci ogólnej {{Code|nazwa przestrzeni nazw i}}. Parametry podaje się w parametrach rodzica wywołania tej funkcji {{Code|{{m|Pudełko|Nazwa przestrzeni nazw dyskusji}}}} (ale ich nie trzeba podawać w dziecku, ale można) i w parametrach dziecka, jeśli chodzi o zmienną {{Code|numer jednostki}}, czyli np.: {{Code|{{m|Pudełko|Nazwa przestrzeni nazw dyskusji|numer jednostki{{=}}<jakaś liczba całkowita dodatnia>}}}}. Te parametry przestrzenne zamiast w rodzicu w szablonie można podać w ramce dziecka, wtedy parametry dziecka mają pierwszeństwo. Parametry przestrzenne mogą mogą być podane w postaci przestrzeni przedmiotowej lub dyskusji, ale ta funkcja zawsze ją zamienia na dyskusji. Przestrzeń nazw z parametrów nazw przestrzennych może odpowiadać wartości przestrzeni głównej, to wtedy odpowiednia przestrzeń nazw z parametru nazwy jednostki się nie liczy w tej funkcji, aby się liczyła należy użyć funkcji {{Code|{{sr|#p["Nazwa przestrzeni nazw dyskusji 2"](frame,...)|p=Pudełko}}}}. Definicja skrótowa funkcji: <syntaxhighlight lang="lua"> p["Nazwa przestrzeni nazw dyskusji"]=function(frame,czy_uwzglednic_alternatywna_nazwe,i)...end; </syntaxhighlight> Wtedy ciało funkcji tej, czyli jego definicja w środku, jest: <syntaxhighlight lang="lua"> -- Jest liczony numer parametru nazwy przestrzeni nazw, domyslnie chodzi tu o numer bazowy parametrów przestrzennych; local numer_jednostki=i or frame.args["numer jednostki"]; local liczba_numer_jednostki=((numer_jednostki)and(tonumber(numer_jednostki))or 0); local pudelko_pomocne_modul=require("Module:Pudełko/Pomocne"); -- Liczy nazwę przestrzeni nazw dyskusji na podstawie podanych parametrów; return pudelko_pomocne_modul.Nazwa_przestrzeni_nazw(frame,2, czy_uwzglednic_alternatywna_nazwe,liczba_numer_jednostki); </syntaxhighlight> Parametry funkcji: * {{Code|frame}} - tablica ramki tablicy transportu, * {{Code|czy_uwzglednic_alternatywna_nazwe}} - czy ma uwzględniać nazwę przestrzeni nazw domyślną szablonu, dostępne wartości: {{Code|false}}, w której nazwa domyślna nie jest uwzględniana wtedy, oraz {{Code|nil}} i {{Code|true}}, które oznaczają to samo, w tym jeżeli ona jest uwzględniana, wtedy jest brany parametr pierwszy dziecka, który musi istnieć przy takiej wartości tego parametru, tzn. {{Code|{{m|Pudełko|Nazwa przestrzeni nazw dyskusji|Szablon}}}} - ta nazwa domyślna zostanie przekształcona na dyskusji, a jeżeli ona by była dyskusji, to nie byłoby żadnego przekształcenia, a nazwa uzyskana nazwy przestrzeni nazw z parametrów przestrzennych jest w takim przypadku błędna, to w takim razie brany jest ten parametr, a jeżeli nazwa domyślna jest błędna, czyli {{Code|{{m|Pudełko|Nazwa przestrzeni nazw dyskusji|Moja przestrzeń}}}}, wtedy funkcja zwraca stan błędu {{Code|(błąd)}}. * {{Code|i}} - numer zmiennej nazwy przestrzeni nazw. Funkcja wykorzystuje {{Code|{{sr|#p.Nazwa_przestrzeni_nazw(frame,...)|p=Pudełko/Pomocne}}}} do wyznaczania ogólnego nazwy przestrzeni nazw dla pozycji bazowej i numerkowej, tzn. dla pozycji: jeden, dwa, trzy,..., itd, i ich ogólnej. Parametr ramki tablicy transportu rodzica szablonu: * {{Code|nazwa przestrzeni nazw}}, {{Code|nazwa przestrzeni nazw 1}}, {{Code|nazwa przestrzeni nazw 2}}, {{Code|nazwa przestrzeni nazw 3}},..., {{Code|nazwa przestrzeni nazw i}} - nazwy przestrzeni nazw dla pozycji bazowej oraz zwykłej i ogólnej numerkowej, * {{Code|typ jednostki}}, {{Code|typ jednostki 1}}, {{Code|typ jednostki 2}}, {{Code|typ jednostki 3}},..., {{Code|typ jednostki i}} - typy jednostek, którym odpowiadają pewne przestrzenie przedmiotowe, dla pozycji bazowej, numerkowej i ogólnej. Parametry ramki tablicy transportu dziecka: * Parametry dziecka są takie same jak rodzica dla funkcji pudełkowej plus tu wymienione, * {{Code|numer jednostki}} - jak parametr {{Code|i}} nie został ustawiony, to wtedy liczy się ta zmienna. Przykłady: <syntaxhighlight lang="mediawiki"> {{Nazwa szablonu|nazwa przestrzeni nazw=Wikibooks|nazwa przestrzeni nazw 2=Szablon|nazwa przestrzeni nazw i=Moduł}} </syntaxhighlight> W dziecku powiedzmy jest wywołanie, i szukamy nazwy przestrzeni nazw o numerze dwa, która nie została podana, ale istnieje za to jej wersji ogólna {{Code|nazwa przestrzeni nazw i}} i domyślna {{Code|nazwa przestrzeni nazw}}: <syntaxhighlight lang="mediawiki"> {{#invoke:Pudełko|Nazwa przestrzeni nazw dyskusji|numer jednostki=1}} </syntaxhighlight> Na podstawie powyższego przykładu otrzymamy wynik o schemacie, nie wyniku, bo tam nie ma zmiennej {{Code|nazwa przestrzeni nazw 1}}, ale jest {{Code|nazwa przestrzeni nazw i}}: <syntaxhighlight lang="mediawiki"> <!-- Ale nie "nazwa przestrzeni nazw", bo jej nie ma, ale za to istnieje "nazwa przestrzeni nazw i"; --> <!-- nazwa przestrzeni nazw 2=nazwa przestrzeni nazw i=Moduł; --> <!-- Czyli wynik: --> Dyskusja modułu <!-- Widzimy, że wygenerowała się nazwa przestrzeni nazw, którą jest przestrzeń dyskusji przestrzeni programowej przestrzeni przedmiotowej "Moduł", którą również jest "Szablon" jego przestrzeni dyskusji "Dyskusja szablonu", a dla ich przestrzeni przedmiotowej, zamiast dyskusji, to przekształca się na dyskusji jej odpowiadającą; --> </syntaxhighlight> Nie jest brana w tym powyższym przykładzie zmienna {{Code|nazwa przestrzeni nazw}}, bo jej nie ma, ale za to jest {{Code|nazwa przestrzeni nazw i}}, bo ona występuje jako parametr domyślny ogólny dla parametrów numerkowych. Przykłady w wikikodzie: * {{Code|{{m|Pudełko|Nazwa przestrzeni nazw dyskusji|numer jednostki{{=}}2}}}} → {{Tt|{{#invoke:Pudełko|Nazwa przestrzeni nazw dyskusji|numer jednostki=2}}}} * {{Code|{{m|Pudełko|Nazwa przestrzeni nazw dyskusji|Szablon|nazwa przestrzeni nazw i{{=}}Moja przestrzeń|numer jednostki{{=}}2}}}} → {{Tt|{{#invoke:Pudełko|Nazwa przestrzeni nazw dyskusji|Szablon|nazwa przestrzeni nazw i=Moja przestrzeń|numer jednostki=2}}}} * {{Code|{{m|Pudełko|Nazwa przestrzeni nazw dyskusji|nazwa przestrzeni nazw 2{{=}}Szablon|numer jednostki{{=}}2}}}} → {{Tt|{{#invoke:Pudełko|Nazwa przestrzeni nazw dyskusji|nazwa przestrzeni nazw 2=Szablon|numer jednostki=2}}}} * {{Code|{{m|Pudełko|Nazwa przestrzeni nazw dyskusji|nazwa przestrzeni nazw 2{{=}}Szablon|numer jednostki{{=}}2}}}} → {{Tt|{{#invoke:Pudełko|Nazwa przestrzeni nazw dyskusji|nazwa przestrzeni nazw i=Szablon|numer jednostki=2}}}} * {{Code|{{m|Pudełko|Nazwa przestrzeni nazw dyskusji|nazwa przestrzeni nazw{{=}}Szablon|numer jednostki{{=}}2}}}} → {{Tt|{{#invoke:Pudełko|Nazwa przestrzeni nazw dyskusji|nazwa przestrzeni nazw=Szablon|numer jednostki=2}}}} Powyżej dla przykładu podano parametry nie w rodzicu w szablonie, tylko w dziecku, jeśli chodzi o parametry nazw przestrzeni nazw, ale ich się za to nie powinno podawać w tych ramach, tylko w szablonach, w których wywoływane są te ramki pudełek {{Code|{{m|Pudełko}}}}, ale tak tutaj tak zrobiono by było najłatwiej sprawdzić działanie tego typu funkcji. Analogicznie możemy podawać parametry typu jednostki, np.: wywołaniu modułowym {{Code|{{m|Pudełko|Nazwa przestrzeni nazw dyskusji|typ jednostki 2{{=}}strona szablonu|numer jednostki{{=}}2}}}}, ale o tym więcej w rozdziałach {{Code|{{sr|# p["Dyskusyjny typ jednostki"](frame,i)|p=Pudełko}}}} w „{{sr|#Funkcje typu jednostki|p=Pudełko}}”, ale wtedy nazwa przestrzeni nazw reprezentowana przez {{Parametr|typ jednostki 2|strona szablonu}}, jest zamieniana na nazwę przestrzeni nazw dyskusji. Parametr dyskusji typu jednostki bazowy lub dla danego numerka ogólny, czy szczegółowy, nie gra roli. Również parametry typu jednostki nie powinno się podawać w dziecku w ramce, tylko w rodzicu w szablonie jako parametry, w którym ta ramka jest wywoływana, ale tutaj podano jedynie dla przykładu, jak najłatwiej sprawdzić działanie tych parametrów tej funkcji. Najpierw w funkcji nagłówku brane są parametry nazw przestrzeni nazw, a jeżeli ich nie ma, to parametry typu jednostki, a jeżeli nie ma, to generowane są nazwy na podstawie aktualnego modułu. == Funkcje nazw przestrzeni nazw drugiej wersji == === {{Code|p["Nazwa przestrzeni nazw 2"](frame,...)}} === Funkcja pisze nazwę przestrzeni nazw, niezależnie, czy to jest przedmiotowa, czy dyskusji, według, i nie zawsze tylko, podanej w zmiennej {{Code|nazwa przestrzeni nazw}} dla pozycja bazowej w podanych parametrach szablonu rodzicu ramki dziecka, lub dla innej pozycji należy parametr podawać w formie {{Code|nazwa przestrzeni nazw 1}}, {{Code|nazwa przestrzeni nazw 2}}, {{Code|nazwa przestrzeni nazw 3}},..., lub te parametry można podać w postaci ogólnej {{Code|nazwa przestrzeni nazw i}}. W tej funkcji trzeba też podawać parametry nazwy jednostek {{Code|nazwa jednostki}}, {{Code|nazwa jednostki 1}}, {{Code|nazwa jednostki 2}}, {{Code|nazwa jednostki 3}},... Parametry podaje się w parametrach rodzica wywołania tej funkcji {{Code|{{m|Pudełko|Nazwa przestrzeni nazw 2}}}} (ale ich nie trzeba podawać w dziecku, ale można) i w parametrach dziecka, jeśli chodzi o zmienną {{Code|numer jednostki}}, czyli np.: {{Code|{{m|Pudełko|Nazwa przestrzeni nazw 2|numer jednostki{{=}}<jakaś liczba całkowita dodatnia>}}}}. Te parametry przestrzenne zamiast w rodzicu w szablonie można podać w ramce dziecka, wtedy parametry dziecka mają pierwszeństwo. Przestrzeń nazw z parametrów nazw przestrzennych może odpowiadać wartości przestrzeni głównej, to wtedy odpowiednia przestrzeń nazw z parametru nazwy jednostki się liczy w tej funkcji, wtedy jest liczona nazwa przestrzeni nazw z tego parametru. Gdy parametry przestrzenne lub typ jednostki w drugim podejściu nie wskazują na przestrzeń główną, to wtedy działanie tej funkcji jest podobne do {{Code|{{sr|#p["Nazwa przestrzeni nazw"](frame,...)|p=Pudełko}}}}. Definicja skrótowa funkcji: <syntaxhighlight lang="lua"> p["Nazwa przestrzeni nazw 2"]=function(frame,czy_uwzglednic_alternatywna_nazwe,i)...end; </syntaxhighlight> Wtedy ciało funkcji tej, czyli jego definicja w środku, jest: <syntaxhighlight lang="lua"> local pudelko_pomocne_modul=require("Module:Pudełko/Pomocne"); -- Liczy nazwę przestrzeni nazw, jeżeli z parametrów przestrzennych przestrzeń wskazuje na główną, to wtedy jest liczona przestrzeń nazw z nazwy jednostki; return pudelko_pomocne_modul.Nazwa_przestrzeni_nazw_2(frame,czy_uwzglednic_alternatywna_nazwe,i) </syntaxhighlight> Parametry funkcji: * {{Code|frame}} - tablica ramki tablicy transportu, * {{Code|czy_uwzglednic_alternatywna_nazwe}} - czy ma uwzględniać nazwę przestrzeni nazw domyślną szablonu, dostępne wartości: {{Code|false}}, w której nazwa domyślna nie jest uwzględniana wtedy, oraz {{Code|nil}} i {{Code|true}}, które oznaczają to samo, w tym jeżeli ona jest uwzględniana, wtedy jest brany parametr pierwszy dziecka, który musi istnieć przy takiej wartości tego parametru, tzn. {{Code|{{m|Pudełko|Nazwa przestrzeni nazw 2|Szablon}}}}, a nazwa uzyskana nazwy przestrzeni nazw jest w takim przypadku błędna, a jeżeli nazwa domyślna jest błędna, czyli {{Code|{{m|Pudełko|Nazwa przestrzeni nazw 2|Moja przestrzeń}}}}, wtedy funkcja zwraca stan błędu {{Code|(błąd)}}. * {{Code|i}} - numer zmiennej nazwy przestrzeni nazw. Funkcja wykorzystuje {{Code|{{sr|#p.Nazwa_przestrzeni_nazw_2(frame,...)|p=Pudełko/Pomocne}}}} do wyznaczania ogólnego nazwy przestrzeni nazw dla pozycji bazowej i numerkowej, tzn. dla pozycji: jeden, dwa, trzy,..., itd, i ich ogólnej. Parametr ramki tablicy transportu rodzica szablonu: * {{Code|nazwa przestrzeni nazw}}, {{Code|nazwa przestrzeni nazw 1}}, {{Code|nazwa przestrzeni nazw 2}}, {{Code|nazwa przestrzeni nazw 3}},..., {{Code|nazwa przestrzeni nazw i}} - nazwy przestrzeni nazw dla pozycji bazowej oraz zwykłej i ogólnej numerkowej, * {{Code|nazwa jednostki}}, {{Code|nazwa jednostki 1}}, {{Code|nazwa jednostki 2}}, {{Code|nazwa jednostki 3}},... - nazwy jednostek dla pozycji bazowej i numerkowej, * {{Code|typ jednostki}}, {{Code|typ jednostki 1}}, {{Code|typ jednostki 2}}, {{Code|typ jednostki 3}},..., {{Code|typ jednostki i}} - typy jednostek, którym odpowiadają pewne przestrzenie przedmiotowe, dla pozycji bazowej, numerkowej i ogólnej, ** {{Code|dyskusja typu jednostki}}, {{Code|dyskusja typu jednostki 1}}, {{Code|dyskusja typ jednostki 2}}, {{Code|dyskusja typ jednostki 3}},..., {{Code|dyskusja typ jednostki i}} - czy dany typ jednostki ma przedstawiać, jeśli niepusta, przestrzeń dyskusji dla pozycji bazowej, numerkowej i ogólnej. Parametry ramki tablicy transportu dziecka: * Parametry dziecka są takie same jak rodzica dla funkcji pudełkowej plus tu wymienione, * {{Code|numer jednostki}} - jak parametr {{Code|i}} nie został ustawiony, to wtedy liczy się ta zmienna. Przykłady: <syntaxhighlight lang="mediawiki"> {{Nazwa szablonu|nazwa przestrzeni nazw=Wikibooks|nazwa przestrzeni nazw 1=Szablon|nazwa przestrzeni nazw i=|nazwa jednostki 2=Wikibooks:Strona}} </syntaxhighlight> W dziecku powiedzmy jest wywołanie, i szukamy nazwy przestrzeni nazw o numerze dwa, która została podana, ale istnieje za to jej wersji ogólna {{Code|nazwa przestrzeni nazw i}} i domyślna {{Code|nazwa przestrzeni nazw}}, ale wtedy dla tego numerkowego liczy się to ogólne z {{Code| i}}, a ponieważ ta nazwa jest pusta, więc będziemy liczyli nazwę przestrzeni nazw z {{Code|nazwa jednostki 2}}: <syntaxhighlight lang="mediawiki"> {{#invoke:Pudełko|Nazwa przestrzeni nazw 2|numer jednostki=2}} </syntaxhighlight> Na podstawie powyższego przykładu otrzymamy wynik o schemacie, nie wyniku, bo tam nie ma zmiennej {{Code|nazwa przestrzeni nazw 1}}, ale jest {{Code|nazwa przestrzeni nazw i}}: <syntaxhighlight lang="mediawiki"> <!-- Ale nie "nazwa przestrzeni nazw 2", bo jej nie ma, ale za to istnieje "nazwa przestrzeni nazw i"; --> <!-- nazwa przestrzeni nazw 2=nazwa przestrzeni nazw i="", a nazwa jednostki 2="Wikibooks:Strona"; --> <!-- Czyli wynik: --> Wikibooks <!-- Widzimy, że wygenerowała się nazwa przestrzeni nazw, którą jest przestrzeń nieprogramowa, ale projektu, wychodząca z nazwy jednostek w tym przypadku z "nazwa jednostki 2"; --> </syntaxhighlight> Nie jest brana w tym powyższym przykładzie zmienna {{Code|nazwa przestrzeni nazw}}, bo jej nie ma, ale za to jest {{Code|nazwa przestrzeni nazw i}}, bo ona występuje jako parametr domyślny ogólny dla parametrów numerkowych. Tytaj jest używana jest zmienna {{Code|nazwa jednostki 2}} do wygenerowania ostatecznego wyniku, bo jak można zauważyć, parametry przestrzenne wskazują na przestrzeń główną, a nazwy jednostek już nie. Przykłady w wikikodzie: * {{Code|{{m|Pudełko|Nazwa przestrzeni nazw 2|numer jednostki{{=}}2}}}} → {{Tt|{{#invoke:Pudełko|Nazwa przestrzeni nazw 2|numer jednostki=2}}}} * {{Code|{{m|Pudełko|Nazwa przestrzeni nazw 2|Szablon|nazwa przestrzeni nazw i{{=}}Moja przestrzeń|numer jednostki{{=}}2}}}} → {{Tt|{{#invoke:Pudełko|Nazwa przestrzeni nazw 2|Szablon|nazwa przestrzeni nazw i=Moja przestrzeń|numer jednostki=2}}}} * {{Code|{{m|Pudełko|Nazwa przestrzeni nazw 2|nazwa przestrzeni nazw 2{{=}}|nazwa jednostki 2{{=}}Szablon:Strona|numer jednostki{{=}}2}}}} → {{Tt|{{#invoke:Pudełko|Nazwa przestrzeni nazw 2|nazwa przestrzeni nazw 2=|nazwa jednostki 2=Szablon:Strona|numer jednostki=2}}}} * {{Code|{{m|Pudełko|Nazwa przestrzeni nazw 2|nazwa przestrzeni nazw i{{=}}|nazwa jednostki 2{{=}}Szablon:Strona|numer jednostki{{=}}2}}}} → {{Tt|{{#invoke:Pudełko|Nazwa przestrzeni nazw 2|nazwa przestrzeni nazw i=|nazwa jednostki 2=Szablon:Strona|numer jednostki=2}}}} * {{Code|{{m|Pudełko|Nazwa przestrzeni nazw 2|Szablon|nazwa przestrzeni nazw{{=}}|nazwa jednostki 2{{=}}Wikibooks:Strona|numer jednostki{{=}}2}}}} → {{Tt|{{#invoke:Pudełko|Nazwa przestrzeni nazw 2|Szablon|nazwa przestrzeni nazw=|nazwa jednostki 2=Wikibooks:Strona|numer jednostki=2}}}} Powyżej dla przykładu podano parametry nie w rodzicu w szablonie, tylko w dziecku, jeśli chodzi o parametry nazw przestrzeni nazw i nazw jednostek, ale ich się za to nie powinno podawać w tych ramach, tylko w szablonach, w których wywoływane są te ramki pudełek {{Code|{{m|Pudełko}}}}, ale tak tutaj tak zrobiono by było najłatwiej sprawdzić działanie tego typu funkcji. Analogicznie możemy podawać parametry typu jednostki, np.: wywołaniu modułowym {{Code|{{m|Pudełko|Nazwa przestrzeni nazw 2|typ jednostki 2{{=}}Podręcznik|nazwa jednostki 2{{=}}Szablon:Strona|numer jednostki{{=}}2}}}} (ale wtedy jest brana przestrzeń nazw z nazwy jednostki), ale o tym więcej w rozdziałach {{Code|{{sr|#p["Typ jednostki 2"](frame,i)|p=Pudełko}}}} w „{{sr|#Funkcje typu jednostki|p=Pudełko}}”, on definiuje przestrzenie przedmiotowe, ale można użyć parametru dyskusji typu jednostki z wartością niepustą, wtedy wyświetli się nazwa przestrzeni nazw dyskusji. Jeżeli typ jednostki wskazuje na przestrzeń nazw główną, wtedy się liczą parametry nazw jednostek. Również parametry typu jednostki nie powinno się podawać w dziecku w ramce, tylko w rodzicu w szablonie jako parametry, w którym ta ramka jest wywoływana, ale tutaj podano jedynie dla przykładu, jak najłatwiej sprawdzić działanie tych parametrów tej funkcji. Najpierw w funkcji nagłówku brane są parametry nazw przestrzeni nazw, a jeżeli ich nie ma, to parametry typu jednostki, a jeżeli nie ma lub parametry przestrzenne wskazują na przestrzeń główną, i nie ma nazwy jednostki, to generowane są nazwy tej funkcji na podstawie aktualnej strony. === {{Code|p["Nazwa przedmiotowej przestrzeni nazw 2"](frame,...)}} === Funkcja pisze przedmiotową nazwę przestrzeni nazw jakikolwiek nazwy przestrzeni nazw (tzn. nazwę przedmiotową nazwy przestrzenie nazw, czyli nie dyskusji, zamieniana jest na nią samą, czyli identyfikator przestrzeni się nie zmienia, a dyskusji, nie przedmiotową, przekształca się na przedmiotową jej odpowiadającą, czyli w tym przypadku identyfikator przestrzeni zmniejsza się o numer mniej), według, i nie zawsze tylko, podanej w zmiennej {{Code|nazwa przestrzeni nazw}} dla pozycja bazowej w podanych parametrach szablonu rodzicu ramki dziecka, lub dla innej pozycji należy parametr podawać w formie {{Code|nazwa przestrzeni nazw 1}}, {{Code|nazwa przestrzeni nazw 2}}, {{Code|nazwa przestrzeni nazw 3}},..., lub te parametry można podać w postaci ogólnej {{Code|nazwa przestrzeni nazw i}}. W tej funkcji trzeba też podawać parametry nazwy jednostek {{Code|nazwa jednostki}}, {{Code|nazwa jednostki 1}}, {{Code|nazwa jednostki 2}}, {{Code|nazwa jednostki 3}},... Parametry podaje się w parametrach rodzica wywołania tej funkcji {{Code|{{m|Pudełko|Nazwa przedmiotowej przestrzeni nazw 2}}}} (ale ich nie trzeba podawać w dziecku, ale można) i w parametrach dziecka, jeśli chodzi o zmienną {{Code|numer jednostki}}, czyli np.: {{Code|{{m|Pudełko|Nazwa przedmiotowej przestrzeni nazw 2|numer jednostki{{=}}<jakaś liczba całkowita dodatnia>}}}}. Te parametry przestrzenne zamiast w rodzicu w szablonie można podać w ramce dziecka, wtedy parametry dziecka mają pierwszeństwo. Przestrzeń nazw z parametrów nazw przestrzennych po przekształceniu na przedmiotową może odpowiadać wartości przestrzeni głównej, to wtedy odpowiednia przestrzeń nazw z parametru nazwy jednostki się liczy w tej funkcji, wtedy jest liczona nazwa przestrzeni nazw z tego parametru. Gdy parametry przestrzenne lub typ jednostki w drugim podejściu nie wskazują na przestrzeń główną, to wtedy działanie tej funkcji jest podobne do {{Code|{{sr|#p["Nazwa przedmiotowej przestrzeni nazw"](frame,...)|p=Pudełko}}}}. Definicja skrótowa funkcji: <syntaxhighlight lang="lua"> p["Nazwa przedmiotowej przestrzeni nazw 2"]=function(frame,czy_uwzglednic_alternatywna_nazwe,i)...end; </syntaxhighlight> Wtedy ciało funkcji tej, czyli jego definicja w środku, jest: <syntaxhighlight lang="lua"> local pudelko_pomocne_modul=require("Module:Pudełko/Pomocne"); return pudelko_pomocne_modul.Nazwa_przestrzeni_nazw_przedmiotowa_dyskusji_2(frame,czy_uwzglednic_alternatywna_nazwe,i,"przedmiotowa"); </syntaxhighlight> Parametry funkcji: * {{Code|frame}} - tablica ramki tablicy transportu, * {{Code|czy_uwzglednic_alternatywna_nazwe}} - czy ma uwzględniać nazwę przestrzeni nazw domyślną szablonu, dostępne wartości: {{Code|false}}, w której nazwa domyślna nie jest uwzględniana wtedy, oraz {{Code|nil}} i {{Code|true}}, które oznaczają to samo, w tym jeżeli ona jest uwzględniana, wtedy jest brany parametr pierwszy dziecka, który musi istnieć przy takiej wartości tego parametru, tzn. {{Code|{{m|Pudełko|Nazwa przedmiotowej przestrzeni nazw 2|Szablon}}}}, a nazwa uzyskana nazwy przestrzeni nazw jest w takim przypadku błędna, a jeżeli nazwa domyślna jest błędna, czyli {{Code|{{m|Pudełko|Nazwa przedmiotowej przestrzeni nazw 2|Moja przestrzeń}}}}, wtedy funkcja zwraca stan błędu {{Code|(błąd)}}. * {{Code|i}} - numer zmiennej nazwy przestrzeni nazw. Funkcja wykorzystuje {{Code|{{sr|#p.Nazwa_przestrzeni_nazw_przedmiotowa_dyskusji_2(frame,...)|p=Pudełko/Pomocne}}}} do wyznaczania ogólnego nazwy przestrzeni nazw dla pozycji bazowej i numerkowej, tzn. dla pozycji: jeden, dwa, trzy,..., itd, i ich ogólnej. Parametr ramki tablicy transportu rodzica szablonu: * {{Code|nazwa przestrzeni nazw}}, {{Code|nazwa przestrzeni nazw 1}}, {{Code|nazwa przestrzeni nazw 2}}, {{Code|nazwa przestrzeni nazw 3}},..., {{Code|nazwa przestrzeni nazw i}} - nazwy przestrzeni nazw dla pozycji bazowej oraz zwykłej i ogólnej numerkowej, * {{Code|nazwa jednostki}}, {{Code|nazwa jednostki 1}}, {{Code|nazwa jednostki 2}}, {{Code|nazwa jednostki 3}},... - nazwy jednostek dla pozycji bazowej i numerkowej, * {{Code|typ jednostki}}, {{Code|typ jednostki 1}}, {{Code|typ jednostki 2}}, {{Code|typ jednostki 3}},..., {{Code|typ jednostki i}} - typy jednostek, którym odpowiadają pewne przestrzenie przedmiotowe, dla pozycji bazowej, numerkowej i ogólnej. Parametry ramki tablicy transportu dziecka: * Parametry dziecka są takie same jak rodzica dla funkcji pudełkowej plus tu wymienione, * {{Code|numer jednostki}} - jak parametr {{Code|i}} nie został ustawiony, to wtedy liczy się ta zmienna. Przykłady: <syntaxhighlight lang="mediawiki"> {{Nazwa szablonu|nazwa przestrzeni nazw=Wikibooks|nazwa przestrzeni nazw 1=Szablon|nazwa przestrzeni nazw i=|nazwa jednostki 2=Dyskusja Wikibooks:Strona}} </syntaxhighlight> W dziecku powiedzmy jest wywołanie, i szukamy nazwy przestrzeni nazw o numerze dwa, która została podana, ale istnieje za to jej wersji ogólna {{Code|nazwa przestrzeni nazw i}} i domyślna {{Code|nazwa przestrzeni nazw}}, ale wtedy dla tego numerkowego liczy się to ogólne z {{Code| i}}, a ponieważ ta nazwa jest pusta, więc będziemy liczyli nazwę przestrzeni nazw z {{Code|nazwa jednostki 2}}: <syntaxhighlight lang="mediawiki"> {{#invoke:Pudełko|Nazwa przedmiotowej przestrzeni nazw 2|numer jednostki=2}} </syntaxhighlight> Na podstawie powyższego przykładu otrzymamy wynik o schemacie, nie wyniku, bo tam nie ma zmiennej {{Code|nazwa przestrzeni nazw 1}}, ale jest {{Code|nazwa przestrzeni nazw i}}: <syntaxhighlight lang="mediawiki"> <!-- Ale nie "nazwa przestrzeni nazw 2", bo jej nie ma, ale za to istnieje "nazwa przestrzeni nazw i"; --> <!-- nazwa przestrzeni nazw 2=nazwa przestrzeni nazw i="", a nazwa jednostki 2="Dyskusja Wikibooks:Strona"; --> <!-- Czyli wynik: --> Wikibooks <!-- Widzimy, że wygenerowała się nazwa przestrzeni nazw, którą jest przestrzeń nieprogramowa, ale projektu, wychodząca z nazwy jednostek w tym przypadku z "nazwa jednostki 2"; --> </syntaxhighlight> Nie jest brana w tym powyższym przykładzie zmienna {{Code|nazwa przestrzeni nazw}}, bo jej nie ma, ale za to jest {{Code|nazwa przestrzeni nazw i}}, bo ona występuje jako parametr domyślny ogólny dla parametrów numerkowych. Tytaj jest używana jest zmienna {{Code|nazwa jednostki 2}} do wygenerowania ostatecznego wyniku, bo jak można zauważyć, parametry przestrzenne wskazują na przestrzeń główną, a nazwy jednostek już nie. Przykłady w wikikodzie: * {{Code|{{m|Pudełko|Nazwa przedmiotowej przestrzeni nazw 2|numer jednostki{{=}}2}}}} → {{Tt|{{#invoke:Pudełko|Nazwa przedmiotowej przestrzeni nazw 2|numer jednostki=2}}}} * {{Code|{{m|Pudełko|Nazwa przedmiotowej przestrzeni nazw 2|Dyskusja szablonu|nazwa przestrzeni nazw i{{=}}Moja przestrzeń|numer jednostki{{=}}2}}}} → {{Tt|{{#invoke:Pudełko|Nazwa przedmiotowej przestrzeni nazw 2|Dyskusja szablonu|nazwa przestrzeni nazw i=Moja przestrzeń|numer jednostki=2}}}} * {{Code|{{m|Pudełko|Nazwa przedmiotowej przestrzeni nazw 2|nazwa przestrzeni nazw 2{{=}}Dyskusja|nazwa jednostki 2{{=}}Dyskusja szablonu:Strona|numer jednostki{{=}}2}}}} → {{Tt|{{#invoke:Pudełko|Nazwa przedmiotowej przestrzeni nazw 2|nazwa przestrzeni nazw 2=Dyskusja|nazwa jednostki 2=Dyskusja szablonu:Strona|numer jednostki=2}}}} * {{Code|{{m|Pudełko|Nazwa przedmiotowej przestrzeni nazw 2|nazwa przestrzeni nazw i{{=}}Dyskusja|nazwa jednostki 2{{=}}Dyskusja szablonu:Strona|numer jednostki{{=}}2}}}} → {{Tt|{{#invoke:Pudełko|Nazwa przedmiotowej przestrzeni nazw 2|nazwa przestrzeni nazw i=Dyskusja|nazwa jednostki 2=Dyskusja szablonu:Strona|numer jednostki=2}}}} * {{Code|{{m|Pudełko|Nazwa przedmiotowej przestrzeni nazw 2|Dyskusja szablonu|nazwa przestrzeni nazw{{=}}Dyskusja|nazwa jednostki 2{{=}}Wikibooks:Strona|numer jednostki{{=}}2}}}} → {{Tt|{{#invoke:Pudełko|Nazwa przedmiotowej przestrzeni nazw 2|Dyskusja szablonu|nazwa przestrzeni nazw=Dyskusja|nazwa jednostki 2=Dyskusja Wikibooks:Strona|numer jednostki=2}}}} Powyżej dla przykładu podano parametry nie w rodzicu w szablonie, tylko w dziecku, jeśli chodzi o parametry nazw przestrzeni nazw i nazw jednostek, ale ich się za to nie powinno podawać w tych ramach, tylko w szablonach, w których wywoływane są te ramki pudełek {{Code|{{m|Pudełko}}}}, ale tak tutaj tak zrobiono by było najłatwiej sprawdzić działanie tego typu funkcji. Analogicznie możemy podawać parametry typu jednostki, np.: wywołaniu modułowym {{Code|{{m|Pudełko|Nazwa przedmiotowej przestrzeni nazw 2|typ jednostki 2{{=}}Podręcznik|nazwa jednostki 2{{=}}Dyskusja szablonu:Strona|numer jednostki{{=}}2}}}} (ale wtedy jest brana przestrzeń nazw z nazwy jednostki), ale o tym więcej w rozdziałach {{Code|{{sr|# p["Przedmiotowy typ jednostki 2"](frame,i)|p=Pudełko}}}} w „{{sr|#Funkcje typu jednostki|p=Pudełko}}”, on definiuje przestrzenie przedmiotowe, ale można użyć parametru dyskusji typu jednostki z wartością niepustą, pustą, czy nawet jej nie podamy, wtedy wyświetli się nazwa przestrzeni nazw przedmiotowej. Jeżeli typ jednostki wskazuje na przestrzeń nazw główną, wtedy się liczą parametry nazw jednostek. Również parametry typu jednostki nie powinno się podawać w dziecku w ramce, tylko w rodzicu w szablonie jako parametry, w którym ta ramka jest wywoływana, ale tutaj podano jedynie dla przykładu, jak najłatwiej sprawdzić działanie tych parametrów tej funkcji. Najpierw w funkcji nagłówku brane są parametry nazw przestrzeni nazw, a jeżeli ich nie ma, to parametry typu jednostki, a jeżeli nie ma lub parametry przestrzenne wskazują na przestrzeń główną, i nie ma nazwy jednostki, to generowane są nazwy tej funkcji na podstawie aktualnej strony. === {{Code|p["Nazwa przestrzeni nazw dyskusji 2"](frame,...)}} === Funkcja pisze nazwę przestrzeni nazw dyskusji jakikolwiek nazwy przestrzeni nazw (tzn. nazwę dyskusji nazwy przestrzenie nazw, czyli nie przedmiotowej, zamieniana jest na nią samą, czyli identyfikator przestrzeni się nie zmienia, a przedmiotową, nie dyskusji, przekształca się na dyskusji jej odpowiadającą, czyli w tym przypadku identyfikator przestrzeni zwiększa się o numer więcej), według, i nie zawsze tylko, podanej w zmiennej {{Code|nazwa przestrzeni nazw}} dla pozycja bazowej w podanych parametrach szablonu rodzicu ramki dziecka, lub dla innej pozycji należy parametr podawać w formie {{Code|nazwa przestrzeni nazw 1}}, {{Code|nazwa przestrzeni nazw 2}}, {{Code|nazwa przestrzeni nazw 3}},..., lub te parametry można podać w postaci ogólnej {{Code|nazwa przestrzeni nazw i}}. W tej funkcji trzeba też podawać parametry nazwy jednostek {{Code|nazwa jednostki}}, {{Code|nazwa jednostki 1}}, {{Code|nazwa jednostki 2}}, {{Code|nazwa jednostki 3}},... Parametry podaje się w parametrach rodzica wywołania tej funkcji {{Code|{{m|Pudełko|Nazwa przestrzeni nazw dyskusji 2}}}} (ale ich nie trzeba podawać w dziecku, ale można) i w parametrach dziecka, jeśli chodzi o zmienną {{Code|numer jednostki}}, czyli np.: {{Code|{{m|Pudełko|Nazwa przestrzeni nazw dyskusji 2|numer jednostki{{=}}<jakaś liczba całkowita dodatnia>}}}}. Te parametry przestrzenne zamiast w rodzicu w szablonie można podać w ramce dziecka, wtedy parametry dziecka mają pierwszeństwo. Przestrzeń nazw z parametrów nazw przestrzennych po przekształceniu na przedmiotową może odpowiadać wartości przestrzeni głównej, to wtedy odpowiednia przestrzeń nazw z parametru nazwy jednostki się liczy w tej funkcji, wtedy jest liczona nazwa przestrzeni nazw z tego parametru. Gdy parametry przestrzenne lub typ jednostki w drugim podejściu nie wskazują na przestrzeń główną, to wtedy działanie tej funkcji jest podobne do {{Code|{{sr|#p["Nazwa dyskusji przestrzeni nazw"](frame,...)|p=Pudełko}}}}. Definicja skrótowa funkcji: <syntaxhighlight lang="lua"> p["Nazwa przestrzeni nazw dyskusji 2"]=function(frame,czy_uwzglednic_alternatywna_nazwe,i)...end; </syntaxhighlight> Wtedy ciało funkcji tej, czyli jego definicja w środku, jest: <syntaxhighlight lang="lua"> local pudelko_pomocne_modul=require("Module:Pudełko/Pomocne"); return pudelko_pomocne_modul.Nazwa_przestrzeni_nazw_przedmiotowa_dyskusji_2(frame,czy_uwzglednic_alternatywna_nazwe,i,"dyskusja"); </syntaxhighlight> Parametry funkcji: * {{Code|frame}} - tablica ramki tablicy transportu, * {{Code|czy_uwzglednic_alternatywna_nazwe}} - czy ma uwzględniać nazwę przestrzeni nazw domyślną szablonu, dostępne wartości: {{Code|false}}, w której nazwa domyślna nie jest uwzględniana wtedy, oraz {{Code|nil}} i {{Code|true}}, które oznaczają to samo, w tym jeżeli ona jest uwzględniana, wtedy jest brany parametr pierwszy dziecka, który musi istnieć przy takiej wartości tego parametru, tzn. {{Code|{{m|Pudełko|Nazwa przestrzeni nazw dyskusji 2|Szablon}}}}, a nazwa uzyskana nazwy przestrzeni nazw jest w takim przypadku błędna, a jeżeli nazwa domyślna jest błędna, czyli {{Code|{{m|Pudełko|Nazwa przestrzeni nazw dyskusji 2|Moja przestrzeń}}}}, wtedy funkcja zwraca stan błędu {{Code|(błąd)}}. * {{Code|i}} - numer zmiennej nazwy przestrzeni nazw. Funkcja wykorzystuje {{Code|{{sr|#p.Nazwa_przestrzeni_nazw_przedmiotowa_dyskusji_2(frame,...)|p=Pudełko/Pomocne}}}} do wyznaczania ogólnego nazwy przestrzeni nazw dla pozycji bazowej i numerkowej, tzn. dla pozycji: jeden, dwa, trzy,..., itd, i ich ogólnej. Parametr ramki tablicy transportu rodzica szablonu: * {{Code|nazwa przestrzeni nazw}}, {{Code|nazwa przestrzeni nazw 1}}, {{Code|nazwa przestrzeni nazw 2}}, {{Code|nazwa przestrzeni nazw 3}},..., {{Code|nazwa przestrzeni nazw i}} - nazwy przestrzeni nazw dla pozycji bazowej oraz zwykłej i ogólnej numerkowej, * {{Code|nazwa jednostki}}, {{Code|nazwa jednostki 1}}, {{Code|nazwa jednostki 2}}, {{Code|nazwa jednostki 3}},... - nazwy jednostek dla pozycji bazowej i numerkowej, * {{Code|typ jednostki}}, {{Code|typ jednostki 1}}, {{Code|typ jednostki 2}}, {{Code|typ jednostki 3}},..., {{Code|typ jednostki i}} - typy jednostek, którym odpowiadają pewne przestrzenie przedmiotowe, dla pozycji bazowej, numerkowej i ogólnej. Parametry ramki tablicy transportu dziecka: * Parametry dziecka są takie same jak rodzica dla funkcji pudełkowej plus tu wymienione, * {{Code|numer jednostki}} - jak parametr {{Code|i}} nie został ustawiony, to wtedy liczy się ta zmienna. Przykłady: <syntaxhighlight lang="mediawiki"> {{Nazwa szablonu|nazwa przestrzeni nazw=Wikibooks|nazwa przestrzeni nazw 1=Szablon|nazwa przestrzeni nazw i=|nazwa jednostki 2=Wikibooks:Strona}} </syntaxhighlight> W dziecku powiedzmy jest wywołanie, i szukamy nazwy przestrzeni nazw o numerze dwa, która została podana, ale istnieje za to jej wersji ogólna {{Code|nazwa przestrzeni nazw i}} i domyślna {{Code|nazwa przestrzeni nazw}}, ale wtedy dla tego numerkowego liczy się to ogólne z {{Code| i}}, a ponieważ ta nazwa jest pusta, więc będziemy liczyli nazwę przestrzeni nazw z {{Code|nazwa jednostki 2}}: <syntaxhighlight lang="mediawiki"> {{#invoke:Pudełko|Nazwa przestrzeni nazw dyskusji 2|numer jednostki=2}} </syntaxhighlight> Na podstawie powyższego przykładu otrzymamy wynik o schemacie, nie wyniku, bo tam nie ma zmiennej {{Code|nazwa przestrzeni nazw 1}}, ale jest {{Code|nazwa przestrzeni nazw i}}: <syntaxhighlight lang="mediawiki"> <!-- Ale nie "nazwa przestrzeni nazw 2", bo jej nie ma, ale za to istnieje "nazwa przestrzeni nazw i"; --> <!-- nazwa przestrzeni nazw 2=nazwa przestrzeni nazw i="", a nazwa jednostki 2="Wikibooks:Strona"; --> <!-- Czyli wynik: --> Dyskusja Wikibooks <!-- Widzimy, że wygenerowała się nazwa przestrzeni nazw, którą jest przestrzeń nieprogramowa, ale dyskusji projektu, wychodząca z nazwy jednostek w tym przypadku z "nazwa jednostki 2"; --> </syntaxhighlight> Nie jest brana w tym powyższym przykładzie zmienna {{Code|nazwa przestrzeni nazw}}, bo jej nie ma, ale za to jest {{Code|nazwa przestrzeni nazw i}}, bo ona występuje jako parametr domyślny ogólny dla parametrów numerkowych. Tytaj jest używana jest zmienna {{Code|nazwa jednostki 2}} do wygenerowania ostatecznego wyniku, bo jak można zauważyć, parametry przestrzenne wskazują na przestrzeń główną, a nazwy jednostek już nie. Przykłady w wikikodzie: * {{Code|{{m|Pudełko|Nazwa przestrzeni nazw dyskusji 2|numer jednostki{{=}}2}}}} → {{Tt|{{#invoke:Pudełko|Nazwa przestrzeni nazw dyskusji 2|numer jednostki=2}}}} * {{Code|{{m|Pudełko|Nazwa przestrzeni nazw dyskusji 2|Szablon|nazwa przestrzeni nazw i{{=}}Moja przestrzeń|numer jednostki{{=}}2}}}} → {{Tt|{{#invoke:Pudełko|Nazwa przestrzeni nazw dyskusji 2|Szablon|nazwa przestrzeni nazw i=Moja przestrzeń|numer jednostki=2}}}} * {{Code|{{m|Pudełko|Nazwa przestrzeni nazw dyskusji 2|nazwa przestrzeni nazw 2{{=}}|nazwa jednostki 2{{=}}Szablon:Strona|numer jednostki{{=}}2}}}} → {{Tt|{{#invoke:Pudełko|Nazwa przestrzeni nazw dyskusji 2|nazwa przestrzeni nazw 2=|nazwa jednostki 2=Szablon:Strona|numer jednostki=2}}}} * {{Code|{{m|Pudełko|Nazwa przestrzeni nazw dyskusji 2|nazwa przestrzeni nazw i{{=}}|nazwa jednostki 2{{=}}Szablon:Strona|numer jednostki{{=}}2}}}} → {{Tt|{{#invoke:Pudełko|Nazwa przestrzeni nazw dyskusji 2|nazwa przestrzeni nazw i=|nazwa jednostki 2=Szablon:Strona|numer jednostki=2}}}} * {{Code|{{m|Pudełko|Nazwa przestrzeni nazw dyskusji 2|Szablon|nazwa przestrzeni nazw{{=}}|nazwa jednostki 2{{=}}Wikibooks:Strona|numer jednostki{{=}}2}}}} → {{Tt|{{#invoke:Pudełko|Nazwa przestrzeni nazw dyskusji 2|Szablon|nazwa przestrzeni nazw=|nazwa jednostki 2=Dyskusja Wikibooks:Strona|numer jednostki=2}}}} Powyżej dla przykładu podano parametry nie w rodzicu w szablonie, tylko w dziecku, jeśli chodzi o parametry nazw przestrzeni nazw i nazw jednostek, ale ich się za to nie powinno podawać w tych ramach, tylko w szablonach, w których wywoływane są te ramki pudełek {{Code|{{m|Pudełko}}}}, ale tak tutaj tak zrobiono by było najłatwiej sprawdzić działanie tego typu funkcji. Analogicznie możemy podawać parametry typu jednostki, np.: wywołaniu modułowym {{Code|{{m|Pudełko|Nazwa przestrzeni nazw dyskusji 2|typ jednostki 2{{=}}Podręcznik|nazwa jednostki 2{{=}}Szablon:Strona|numer jednostki{{=}}2}}}} (ale wtedy jest brana przestrzeń nazw z nazwy jednostki), ale o tym więcej w rozdziałach {{Code|{{sr|# p["Dyskusyjny typ jednostki 2"](frame,i)|p=Pudełko}}}} w „{{sr|#Funkcje typu jednostki|p=Pudełko}}”, on definiuje przestrzenie dyskusji, ale można użyć parametru dyskusji typu jednostki z obojętnie jaką wartością niepustą, czy pustą, czy nawet jej nie podamy, wtedy wyświetli się nazwa przestrzeni nazw dyskusji. Jeżeli typ jednostki wskazuje na przestrzeń nazw główną, wtedy się liczą parametry nazw jednostek. Również parametry typu jednostki nie powinno się podawać w dziecku w ramce, tylko w rodzicu w szablonie jako parametry, w którym ta ramka jest wywoływana, ale tutaj podano jedynie dla przykładu, jak najłatwiej sprawdzić działanie tych parametrów tej funkcji. Najpierw w funkcji nagłówku brane są parametry nazw przestrzeni nazw, a jeżeli ich nie ma, to parametry typu jednostki, a jeżeli nie ma lub parametry przestrzenne wskazują na przestrzeń główną, i nie ma nazwy jednostki, to generowane są nazwy tej funkcji na podstawie aktualnej strony. == Funkcje pełnych nazw jednostki == === {{Code|p["Pełna nazwa dyskusji jednostki"](frame,i)}} === === {{Code|p["Pełna nazwa przedmiotowa jednostki"](frame,i)}} === === {{Code|p["Pełna nazwa jednostki"](frame,i)}} === == Funkcje pełnych nazw jednostki drugiej wersji == === {{Code|p["Pełna nazwa dyskusji jednostki 2"](frame,i)}} === === {{Code|p["Pełna nazwa przedmiotowa jednostki 2"](frame,i)}} === === {{Code|p["Pełna nazwa jednostki 2"](frame,i)}} === == Funkcje pełnych nazw jednostki trzeciej wersji == === {{Code|p["Pełna nazwa dyskusji jednostki 3"](frame,i)}} === === {{Code|p["Pełna nazwa przedmiotowa jednostki 3"](frame,i)}} === === {{Code|p["Pełna nazwa jednostki 3"](frame,i)}} === == Funkcje nazw jednostki == === {{Code|p["Nazwa jednostki"](frame,i)}} === == Funkcje nazw jednostki drugiej wersji == === {{Code|p["Nazwa jednostki 2"](frame,i)}} === === {{Code|p["Nazwa przedmiotowa jednostki 2"](frame,i)}} === === {{Code|p["Nazwa dyskusji jednostki 2"](frame,i)}} === == Funkcje nazw przestrzeni nazw trzeciej wersji == === {{Code|p["Nazwa przestrzeni nazw 3"](frame,i)}} === Funkcja pisze nazwę przestrzeni nazw, niezależnie, czy to jest przedmiotowa, czy dyskusji, według, i nie zawsze tylko, podanej w zmiennej {{Code|nazwa przestrzeni nazw}} dla pozycja bazowej w podanych parametrach szablonu rodzicu ramki dziecka, lub dla innej pozycji należy parametr podawać w formie {{Code|nazwa przestrzeni nazw 1}}, {{Code|Nazwa przestrzeni nazw 3}}, {{Code|nazwa przestrzeni nazw 3}},..., lub te parametry można podać w postaci ogólnej {{Code|nazwa przestrzeni nazw i}}. W tej funkcji trzeba też podawać parametry nazwy jednostek {{Code|nazwa jednostki}}, {{Code|nazwa jednostki 1}}, {{Code|nazwa jednostki 2}}, {{Code|nazwa jednostki 3}},... Parametry podaje się w parametrach rodzica wywołania tej funkcji {{Code|{{m|Pudełko|Nazwa przestrzeni nazw 3}}}} (ale ich nie trzeba podawać w dziecku, ale można) i w parametrach dziecka, jeśli chodzi o zmienną {{Code|numer jednostki}}, czyli np.: {{Code|{{m|Pudełko|Nazwa przestrzeni nazw 3|numer jednostki{{=}}<jakaś liczba całkowita dodatnia>}}}}. Te parametry przestrzenne zamiast w rodzicu w szablonie można podać w ramce dziecka, wtedy parametry dziecka mają pierwszeństwo. Przestrzeń nazw z parametrów nazw przestrzennych bazowych (bez numerka) może odpowiadać wartości przestrzeni głównej, to wtedy odpowiednia przestrzeń nazw z parametru nazwy jednostki się nie liczy w tej funkcji, aby się liczyła należy użyć funkcji {{Code|{{sr|#p["Nazwa przestrzeni nazw"](frame,...)|p=Pudełko}}}}. Przestrzeń nazw z parametrów nazw przestrzennych numerkowych może odpowiadać wartości przestrzeni głównej, to wtedy odpowiednia przestrzeń nazw z parametru nazwy jednostki się liczy w tej funkcji, wtedy jest liczona nazwa przestrzeni nazw z tego parametru. Gdy parametry przestrzenne lub typ jednostki w drugim podejściu nie wskazują na przestrzeń główną, to wtedy działanie tej funkcji jest podobne do {{Code|{{sr|#p["Nazwa przestrzeni nazw 2"](frame,...)|p=Pudełko}}}}. Definicja skrótowa funkcji: <syntaxhighlight lang="lua"> p["Nazwa przestrzeni nazw 3"]=function(frame,czy_uwzglednic_alternatywna_nazwe,i)...end; </syntaxhighlight> Wtedy ciało funkcji tej, czyli jego definicja w środku, jest: <syntaxhighlight lang="lua"> -- Jest liczony numer parametru nazwy przestrzeni nazw, domyslnie chodzi tu o numer bazowy parametrów przestrzennych; local numer_jednostki=i or frame.args["numer jednostki"]; local liczba_numeru_jednostki=((numer_jednostki)and(tonumber(numer_jednostki)) or 0); local pudelko_pomocne_modul=require("Module:Pudełko/Pomocne"); -- Liczy nazwę przestrzeni nazw dyskusji na podstawie podanych parametrów; return pudelko_pomocne_modul.Uzyskanie_nazw_jednostki(frame,0,liczba_numeru_jednostki,nil,2); </syntaxhighlight> Parametry funkcji: * {{Code|frame}} - tablica ramki tablicy transportu, * {{Code|czy_uwzglednic_alternatywna_nazwe}} - czy ma uwzględniać nazwę przestrzeni nazw domyślną szablonu, dostępne wartości: {{Code|false}}, w której nazwa domyślna nie jest uwzględniana wtedy, oraz {{Code|nil}} i {{Code|true}}, które oznaczają to samo, w tym jeżeli ona jest uwzględniana, wtedy jest brany parametr pierwszy dziecka, który musi istnieć przy takiej wartości tego parametru, tzn. {{Code|{{m|Pudełko|Nazwa przestrzeni nazw 3|Szablon}}}}, a nazwa uzyskana nazwy przestrzeni nazw jest w takim przypadku błędna, a jeżeli nazwa domyślna jest błędna, czyli {{Code|{{m|Pudełko|Nazwa przestrzeni nazw 3|Moja przestrzeń}}}}, wtedy funkcja zwraca stan błędu {{Code|(błąd)}}. * {{Code|i}} - numer zmiennej nazwy przestrzeni nazw. Funkcja wykorzystuje {{Code|{{sr|#p.Uzyskanie_nazw_jednostki(frame,...)|p=Pudełko/Pomocne}}}} do wyznaczania ogólnego nazwy przestrzeni nazw dla pozycji bazowej i numerkowej, tzn. dla pozycji: jeden, dwa, trzy,..., itd, i ich ogólnej. Parametr ramki tablicy transportu rodzica szablonu: * {{Code|nazwa przestrzeni nazw}}, {{Code|nazwa przestrzeni nazw 1}}, {{Code|Nazwa przestrzeni nazw 3}}, {{Code|nazwa przestrzeni nazw 3}},..., {{Code|nazwa przestrzeni nazw i}} - nazwy przestrzeni nazw dla pozycji bazowej oraz zwykłej i ogólnej numerkowej, * {{Code|nazwa jednostki}}, {{Code|nazwa jednostki 1}}, {{Code|nazwa jednostki 2}}, {{Code|nazwa jednostki 3}},... - nazwy jednostek dla pozycji bazowej i numerkowej, * {{Code|typ jednostki}}, {{Code|typ jednostki 1}}, {{Code|typ jednostki 2}}, {{Code|typ jednostki 3}},..., {{Code|typ jednostki i}} - typy jednostek, którym odpowiadają pewne przestrzenie przedmiotowe, dla pozycji bazowej, numerkowej i ogólnej, ** {{Code|dyskusja typu jednostki}}, {{Code|dyskusja typu jednostki 1}}, {{Code|dyskusja typ jednostki 2}}, {{Code|dyskusja typ jednostki 3}},..., {{Code|dyskusja typ jednostki i}} - czy dany typ jednostki ma przedstawiać, jeśli niepusta, przestrzeń dyskusji dla pozycji bazowej, numerkowej i ogólnej. Parametry ramki tablicy transportu dziecka: * Parametry dziecka są takie same jak rodzica dla funkcji pudełkowej plus tu wymienione, * {{Code|numer jednostki}} - jak parametr {{Code|i}} nie został ustawiony, to wtedy liczy się ta zmienna. Przykłady: <syntaxhighlight lang="mediawiki"> {{Nazwa szablonu|nazwa przestrzeni nazw=Wikibooks|nazwa przestrzeni nazw=|nazwa przestrzeni nazw i=|nazwajednostki=Szablon:Strona|nazwa jednostki 2=Wikibooks:Strona}} <hr /> {{Nazwa szablonu|nazwa przestrzeni nazw=Wikibooks|nazwa przestrzeni nazw 1=Szablon|nazwa przestrzeni nazw i=|nazwa jednostki 2=Wikibooks:Strona}} </syntaxhighlight> W dziecku powiedzmy jest wywołanie, i szukamy nazwy przestrzeni nazw o numerze dwa, która została podana, ale istnieje za to jej wersji ogólna {{Code|nazwa przestrzeni nazw i}} i domyślna {{Code|nazwa przestrzeni nazw}}, ale wtedy dla tego numerkowego liczy się to ogólne z {{Code| i}}, a ponieważ ta nazwa jest pusta, więc będziemy liczyli nazwę przestrzeni nazw z {{Code|nazwa jednostki 2}}: <syntaxhighlight lang="mediawiki"> {{#invoke:Pudełko|Nazwa przestrzeni nazw 3}} <hr /> {{#invoke:Pudełko|Nazwa przestrzeni nazw 3|numer jednostki=2}} </syntaxhighlight> Na podstawie powyższego przykładu otrzymamy wynik o schemacie, nie wyniku, bo tam nie ma zmiennej {{Code|nazwa przestrzeni nazw 1}}, ale jest {{Code|nazwa przestrzeni nazw i}}: <syntaxhighlight lang="mediawiki"> <!-- Ale nie "nazwa przestrzeni nazw""; --> <!-- nazwa przestrzeni nazw=""; --> <!-- Czyli wynik: --> <!-- wynik pusty --> <!-- Widzimy, że wygenerowała się nazwa przestrzeni nazw, którą jest przestrzeń nazw główna, jest ciągiem pustym: ""; --> <hr /> <!-- Ale nie "Nazwa przestrzeni nazw 2", bo jej nie ma, ale za to istnieje "nazwa przestrzeni nazw i"; --> <!-- nazwa przestrzeni nazw 2=nazwa przestrzeni nazw i="", a nazwa jednostki 2="Wikibooks:Strona"; --> <!-- Czyli wynik: --> Wikibooks <!-- Widzimy, że wygenerowała się nazwa przestrzeni nazw, którą jest przestrzeń nieprogramowa, ale projektu, wychodząca z nazwy jednostek w tym przypadku z "nazwa jednostki 2"; --> </syntaxhighlight> Dla parametrów bazowych nienumerkowych istnieje zmienna {{Code|nazwa przestrzeni nazw}}, której waartość jest pusta,którajest zwracana przez tą funkcję. {{Hr}} Dla parametrów numerkowych nie jest brana w tym powyższym przykładzie zmienna {{Code|nazwa przestrzeni nazw}}, bo jej nie ma, ale za to jest {{Code|nazwa przestrzeni nazw i}}, bo ona występuje jako parametr domyślny ogólny dla parametrów numerkowych. Tytaj jest używana jest zmienna {{Code|nazwa jednostki 2}} do wygenerowania ostatecznego wyniku, bo jak można zauważyć, parametry przestrzenne wskazują na przestrzeń główną, a nazwy jednostek już nie. Przykłady w wikikodzie: * {{Code|{{m|Pudełko|Nazwa przestrzeni nazw 3|nazwa przestrzeni nazw{{=}}|nazwa jednostki{{=}}Wikibooks:Strona}}}} → {{Tt|{{#invoke:Pudełko|Nazwa przestrzeni nazw 3|nazwa przestrzeni nazw=|nazwa jednostki=Wikibooks:Szablon}}}} * {{Code|{{m|Pudełko|Nazwa przestrzeni nazw 3|nazwa przestrzeni nazw 2{{=}}|nazwa jednostki 2{{=}}Wikibooks:Strona|numer jednostki{{=}}2}}}} → {{Tt|{{#invoke:Pudełko|Nazwa przestrzeni nazw 3|nazwa przestrzeni nazw 2=|nazwa jednostki 2=Wikibooks:Szablon|numer jednostki=2}}}} Powyżej dla przykładu podano parametry nie w rodzicu w szablonie, tylko w dziecku, jeśli chodzi o parametry nazw przestrzeni nazw i nazw jednostek, ale ich się za to nie powinno podawać w tych ramach, tylko w szablonach, w których wywoływane są te ramki pudełek {{Code|{{m|Pudełko}}}}, ale tak tutaj tak zrobiono by było najłatwiej sprawdzić działanie tego typu funkcji. Analogicznie możemy podawać parametry typu jednostki, np.: wywołaniu modułowym {{Code|{{m|Pudełko|Nazwa przestrzeni nazw 3|typ jednostki 2{{=}}Podręcznik|nazwa jednostki 2{{=}}Szablon:Strona|numer jednostki{{=}}2}}}} (ale wtedy jest brana przestrzeń nazw z nazwy jednostki), ale o tym więcej w rozdziałach {{Code|{{sr|#p["Typ jednostki 3"](frame,i)|p=Pudełko}}}} w „{{sr|#Funkcje typu jednostki|p=Pudełko}}”, on definiuje przestrzenie przedmiotowe, ale można użyć parametru dyskusji typu jednostki z wartością niepustą, wtedy wyświetli się nazwa przestrzeni nazw dyskusji. Jeżeli typ jednostki bazowy wskazuje na przestrzeń nazw główną, wtedy się nie liczą parametry nazw jednostek, a na numerkowy, wtedy się liczy. Również parametry typu jednostki nie powinno się podawać w dziecku w ramce, tylko w rodzicu w szablonie jako parametry, w którym ta ramka jest wywoływana, ale tutaj podano jedynie dla przykładu, jak najłatwiej sprawdzić działanie tych parametrów tej funkcji. Najpierw w funkcji nagłówku brane są parametry nazw przestrzeni nazw, a jeżeli ich nie ma, to parametry typu jednostki, a jeżeli nie ma lub parametry przestrzenne wskazują na przestrzeń główną, i nie ma nazwy jednostki, to generowane są nazwy tej funkcji na podstawie aktualnej strony. === {{Code|p["Nazwa przedmiotowej przestrzeni nazw 3"](frame,i)}} === Funkcja pisze przedmiotową nazwę przestrzeni nazw jakikolwiek nazwy przestrzeni nazw (tzn. nazwę przedmiotową nazwy przestrzenie nazw, czyli nie dyskusji, zamieniana jest na nią samą, czyli identyfikator przestrzeni się nie zmienia, a dyskusji, nie przedmiotową, przekształca się na przedmiotową jej odpowiadającą, czyli w tym przypadku identyfikator przestrzeni zmniejsza się o numer mniej), według podanej w zmiennej {{Code|nazwa przestrzeni nazw}} dla pozycja bazowej w podanych parametrach szablonu rodzicu ramki dziecka, lub dla innej pozycji należy parametr podawać w formie {{Code|nazwa przestrzeni nazw 1}}, {{Code|nazwa przestrzeni nazw 2}}, {{Code|nazwa przestrzeni nazw 3}},..., lub te parametry można podać w postaci ogólnej {{Code|nazwa przestrzeni nazw i}}. Parametry podaje się w parametrach rodzica wywołania tej funkcji {{Code|{{m|Pudełko|Nazwa przedmiotowej przestrzeni nazw 3}}}} (ale ich nie trzeba podawać w dziecku, ale można) i w parametrach dziecka, jeśli chodzi o zmienną {{Code|numer jednostki}}, czyli np.: {{Code|{{m|Pudełko|Nazwa przedmiotowej przestrzeni nazw 3|numer jednostki{{=}}<jakaś liczba całkowita dodatnia>}}}}. Te parametry przestrzenne zamiast w rodzicu w szablonie można podać w ramce dziecka, wtedy parametry dziecka mają pierwszeństwo. Parametry przestrzenne mogą mogą być podane w postaci przestrzeni przedmiotowej lub dyskusji, ale ta funkcja zawsze ją zamienia na przedmiotową. Przestrzeń nazw z parametrów nazw przestrzennych bazowych (bez numerka) może odpowiadać wartości przestrzeni głównej, to wtedy odpowiednia przestrzeń nazw z parametru nazwy jednostki się nie liczy w tej funkcji, aby się liczyła należy użyć funkcji {{Code|{{sr|#p["Nazwa przedmiotowej przestrzeni nazw"](frame,...)|p=Pudełko}}}}. Przestrzeń nazw z parametrów nazw przestrzennych numerkowych może odpowiadać wartości przestrzeni głównej, to wtedy odpowiednia przestrzeń nazw z parametru nazwy jednostki się liczy w tej funkcji, wtedy jest liczona nazwa przestrzeni nazw z tego parametru. Gdy parametry przestrzenne lub typ jednostki w drugim podejściu nie wskazują na przestrzeń główną, to wtedy działanie tej funkcji jest podobne do {{Code|{{sr|#p["Nazwa przedmiotowej przestrzeni nazw 2"](frame,...)|p=Pudełko}}}}. Definicja skrótowa funkcji: <syntaxhighlight lang="lua"> p["Nazwa przedmiotowej przestrzeni nazw 3"]=function(frame,czy_uwzglednic_alternatywna_nazwe,i)...end; </syntaxhighlight> Wtedy ciało funkcji tej, czyli jego definicja w środku, jest: <syntaxhighlight lang="lua"> -- Jest liczony numer parametru nazwy przestrzeni nazw, domyslnie chodzi tu o numer bazowy parametrów przestrzennych; local numer_jednostki=i or frame.args["numer jednostki"]; local liczba_numeru_jednostki=((numer_jednostki)and(tonumber(numer_jednostki)) or 0); local pudelko_pomocne_modul=require("Module:Pudełko/Pomocne"); -- Liczy nazwę przestrzeni nazw przedmiotową na podstawie podanych parametrów; return pudelko_pomocne_modul.Uzyskanie_nazw_jednostki(frame,1,liczba_numeru_jednostki,nil,1); </syntaxhighlight> Parametry funkcji: * {{Code|frame}} - tablica ramki tablicy transportu, * {{Code|czy_uwzglednic_alternatywna_nazwe}} - czy ma uwzględniać nazwę przestrzeni nazw domyślną szablonu, dostępne wartości: {{Code|false}}, w której nazwa domyślna nie jest uwzględniana wtedy, oraz {{Code|nil}} i {{Code|true}}, które oznaczają to samo, w tym jeżeli ona jest uwzględniana, wtedy jest brany parametr pierwszy dziecka, który musi istnieć przy takiej wartości tego parametru, tzn. {{Code|{{m|Pudełko|Nazwa przedmiotowej przestrzeni nazw 3|Dyskusja szablonu}}}} - ta nazwa domyślna zostanie zamieniona na przedmiotową, a jak ona by była przedmiotowa, to żadnej zamiany by nie było, a nazwa uzyskana z nazwy przestrzeni nazw z parametrów przestrzennych jest w takim przypadku błędna, to w takim razie brany jest ten parametr, a jeżeli ta nazwa domyślna jest błędna, czyli {{Code|{{m|Pudełko|Nazwa przedmiotowej przestrzeni nazw 3|Moja przestrzeń}}}}, wtedy funkcja zwraca stan błędu {{Code|(błąd)}}. * {{Code|i}} - numer zmiennej nazwy przestrzeni nazw. Funkcja wykorzystuje {{Code|{{sr|#p.Uzyskanie_nazw_jednostki(frame,...)|p=Pudełko/Pomocne}}}} do wyznaczania ogólnego nazwy przestrzeni nazw dla pozycji bazowej i numerkowej, tzn. dla pozycji: jeden, dwa, trzy,..., itd, i ich ogólnej. Parametr ramki tablicy transportu rodzica szablonu: * {{Code|nazwa przestrzeni nazw}}, {{Code|nazwa przestrzeni nazw 1}}, {{Code|nazwa przestrzeni nazw 2}}, {{Code|nazwa przestrzeni nazw 3}},..., {{Code|nazwa przestrzeni nazw i}} - nazwy przestrzeni nazw dla pozycji bazowej oraz zwykłej i ogólnej numerkowej, * {{Code|typ jednostki}}, {{Code|typ jednostki 1}}, {{Code|typ jednostki 2}}, {{Code|typ jednostki 3}},..., {{Code|typ jednostki i}} - typy jednostek, którym odpowiadają pewne przestrzenie przedmiotowe, dla pozycji bazowej, numerkowej i ogólnej. Parametry ramki tablicy transportu dziecka: * Parametry dziecka są takie same jak rodzica dla funkcji pudełkowej plus tu wymienione, * {{Code|numer jednostki}} - jak parametr {{Code|i}} nie został ustawiony, to wtedy liczy się ta zmienna. Przykłady: <syntaxhighlight lang="mediawiki"> {{Nazwa szablonu|nazwa przestrzeni nazw=Wikibooks|nazwa przestrzeni nazw=|nazwa przestrzeni nazw i=|nazwajednostki=Szablon:Strona|nazwa jednostki=Dyskusja Wikibooks:Strona}} <hr /> {{Nazwa szablonu|nazwa przestrzeni nazw=Wikibooks|nazwa przestrzeni nazw 1=Szablon|nazwa przestrzeni nazw i=|nazwa jednostki 2=Dyskusja Wikibooks:Strona}} </syntaxhighlight> W dziecku powiedzmy jest wywołanie, i szukamy nazwy przestrzeni nazw o numerze dwa, która nie została podana, ale istnieje za to jej wersji ogólna {{Code|nazwa przestrzeni nazw i}} i domyślna {{Code|nazwa przestrzeni nazw}}: <syntaxhighlight lang="mediawiki"> {{#invoke:Pudełko|Nazwa przedmiotowej przestrzeni nazw 3|numer jednostki=1}} </syntaxhighlight> Na podstawie powyższego przykładu otrzymamy wynik o schemacie, nie wyniku, bo tam nie ma zmiennej {{Code|nazwa przestrzeni nazw 1}}, ale jest {{Code|nazwa przestrzeni nazw i}}: <syntaxhighlight lang="mediawiki"> <!-- Ale nie "nazwa przestrzeni nazw""; --> <!-- nazwa przestrzeni nazw=""; --> <!-- Czyli wynik: --> <!-- wynik pusty --> <!-- Widzimy, że wygenerowała się nazwa przestrzeni nazw, którą jest przestrzeń nazw główna, jest ciągiem pustym: ""; --> <hr /> <!-- Ale nie "Nazwa przestrzeni nazw 2", bo jej nie ma, ale za to istnieje "nazwa przestrzeni nazw i"; --> <!-- nazwa przestrzeni nazw 2=nazwa przestrzeni nazw i="", a nazwa jednostki 2="Dyskusja Wikibooks:Strona"; --> <!-- Czyli wynik: --> Wikibooks <!-- Widzimy, że wygenerowała się nazwa przestrzeni nazw, którą jest przestrzeń nieprogramowa, ale projektu, wychodząca z nazwy jednostek w tym przypadku z "nazwa jednostki 2"; --> </syntaxhighlight> Nie jest brana w tym powyższym przykładzie zmienna {{Code|nazwa przestrzeni nazw}}, bo jej nie ma, ale za to jest {{Code|nazwa przestrzeni nazw i}}, bo ona występuje jako parametr domyślny ogólny dla parametrów numerkowych. Przykłady w wikikodzie: * {{Code|{{m|Pudełko|Nazwa przestrzeni nazw 3|nazwa przestrzeni nazw{{=}}|nazwa jednostki{{=}}Dyskusja Wikibooks:Strona}}}} → {{Tt|{{#invoke:Pudełko|Nazwa przestrzeni nazw 3|nazwa przestrzeni nazw=|nazwa jednostki=Dyskusja Wikibooks:Szablon}}}} * {{Code|{{m|Pudełko|Nazwa przestrzeni nazw 3|nazwa przestrzeni nazw 2{{=}}|nazwa jednostki 2{{=}}Dyskusja Wikibooks:Strona|numer jednostki{{=}}2}}}} → {{Tt|{{#invoke:Pudełko|Nazwa przestrzeni nazw 3|nazwa przestrzeni nazw 2=|nazwa jednostki 2=Dyskusja Wikibooks:Szablon|numer jednostki=2}}}} Powyżej dla przykładu podano parametry nie w rodzicu w szablonie, tylko w dziecku, jeśli chodzi o parametry nazw przestrzeni nazw, ale ich się za to nie powinno podawać w tych ramach, tylko w szablonach, w których wywoływane są te ramki pudełek {{Code|{{m|Pudełko}}}}, ale tak tutaj tak zrobiono by było najłatwiej sprawdzić działanie tego typu funkcji. Analogicznie możemy podawać parametry typu jednostki, np.: wywołaniu modułowym {{Code|{{m|Pudełko|Nazwa przedmiotowej przestrzeni nazw 3|typ jednostki 2{{=}}strona szablonu|numer jednostki{{=}}2}}}}, ale o tym więcej w rozdziałach {{Code|{{sr|# p["Przedmiotowy typ jednostki 3"](frame,i)|p=Pudełko}}}} w „{{sr|#Funkcje typu jednostki|p=Pudełko}}”, ale wtedy ta sama nazwa przestrzeni nazw reprezentowana przez {{Parametr|typ jednostki 2|strona szablonu}}, jest zamieniana na to samo, lepiej jest tutaj używać parametrów przestrzennych nazw niż typu jednostki, bo typ jednostki ma taką samą wartość dla przestrzeni przedmiotowej, co dyskusji. Tutaj parametr dyskusji typu jednostki bazowy i numerkowy ogólny, czy szczegółowy, nie gra roli, bo nawet, gdy wygenerujemy nazwę przestrzeni dyskusji za pomoca tego parametru, to i tak otrzymamy na samym końcu jego nazwę przedmiotową. Jeżeli typ jednostki bazowy wskazuje na przestrzeń nazw główną, wtedy się nie liczą parametry nazw jednostek, a na numerkowy, wtedy się liczy. Również parametry typu jednostki nie powinno się podawać w dziecku w ramce, tylko w rodzicu w szablonie jako parametry, w którym ta ramka jest wywoływana, ale tutaj podano jedynie dla przykładu, jak najłatwiej sprawdzić działanie tych parametrów tej funkcji. Najpierw w funkcji nagłówku brane są parametry nazw przestrzeni nazw, a jeżeli ich nie ma, to parametry typu jednostki, a jeżeli nie ma, to generowane są nazwy na podstawie aktualnego modułu. === {{Code|p["Nazwa przestrzeni nazw dyskusji 3"](frame,i)}} === Funkcja pisze nazwę przestrzeni nazw dyskusji jakikolwiek nazwy przestrzeni nazw (tzn. nazwę dyskusji nazwy przestrzenie nazw, czyli nie przedmiotowej, zamieniana jest na nią samą, czyli identyfikator przestrzeni się nie zmienia, a przedmiotową, nie dyskusji, przekształca się na dyskusji jej odpowiadającą, czyli w tym przypadku identyfikator przestrzeni zwiększa się o numer więcej), według, i nie zawsze tylko, podanej w zmiennej {{Code|nazwa przestrzeni nazw}} dla pozycja bazowej w podanych parametrach szablonu rodzicu ramki dziecka, lub dla innej pozycji należy parametr podawać w formie {{Code|nazwa przestrzeni nazw 1}}, {{Code|nazwa przestrzeni nazw 2}}, {{Code|nazwa przestrzeni nazw 3}},..., lub te parametry można podać w postaci ogólnej {{Code|nazwa przestrzeni nazw i}}. W tej funkcji trzeba też podawać parametry nazwy jednostek {{Code|nazwa jednostki}}, {{Code|nazwa jednostki 1}}, {{Code|nazwa jednostki 2}}, {{Code|nazwa jednostki 3}},... Parametry podaje się w parametrach rodzica wywołania tej funkcji {{Code|{{m|Pudełko|Nazwa przestrzeni nazw dyskusji 3}}}} (ale ich nie trzeba podawać w dziecku, ale można) i w parametrach dziecka, jeśli chodzi o zmienną {{Code|numer jednostki}}, czyli np.: {{Code|{{m|Pudełko|Nazwa przestrzeni nazw dyskusji 3|numer jednostki{{=}}<jakaś liczba całkowita dodatnia>}}}}. Te parametry przestrzenne zamiast w rodzicu w szablonie można podać w ramce dziecka, wtedy parametry dziecka mają pierwszeństwo. Przestrzeń nazw z parametrów nazw przestrzennych bazowych (bez numerka) może odpowiadać wartości przestrzeni głównej, to wtedy odpowiednia przestrzeń nazw z parametru nazwy jednostki się nie liczy w tej funkcji, aby się liczyła należy użyć funkcji {{Code|{{sr|#p["Nazwa przestrzeni nazw dyskusji"](frame,...)|p=Pudełko}}}}. Przestrzeń nazw z parametrów nazw przestrzennych numerkowych może odpowiadać wartości przestrzeni głównej, to wtedy odpowiednia przestrzeń nazw z parametru nazwy jednostki się liczy w tej funkcji, wtedy jest liczona nazwa przestrzeni nazw z tego parametru. Gdy parametry przestrzenne lub typ jednostki w drugim podejściu nie wskazują na przestrzeń główną, to wtedy działanie tej funkcji jest podobne do {{Code|{{sr|#p["Nazwa przestrzeni nazw dysskusji 2"](frame,...)|p=Pudełko}}}}. Definicja skrótowa funkcji: <syntaxhighlight lang="lua"> p["Nazwa przestrzeni nazw dyskusji 3"]=function(frame,czy_uwzglednic_alternatywna_nazwe,i)...end; </syntaxhighlight> Wtedy ciało funkcji tej, czyli jego definicja w środku, jest: <syntaxhighlight lang="lua"> -- Jest liczony numer parametru nazwy przestrzeni nazw, domyslnie chodzi tu o numer bazowy parametrów przestrzennych; local numer_jednostki=i or frame.args["numer jednostki"]; local liczba_numeru_jednostki=((numer_jednostki)and(tonumber(numer_jednostki)) or 0); local pudelko_pomocne_modul=require("Module:Pudełko/Pomocne"); -- Liczy nazwę przestrzeni nazw dyskusji na podstawie podanych parametrów; return pudelko_pomocne_modul.Uzyskanie_nazw_jednostki(frame,2,liczba_numeru_jednostki,nil,1); </syntaxhighlight> Parametry funkcji: * {{Code|frame}} - tablica ramki tablicy transportu, * {{Code|czy_uwzglednic_alternatywna_nazwe}} - czy ma uwzględniać nazwę przestrzeni nazw domyślną szablonu, dostępne wartości: {{Code|false}}, w której nazwa domyślna nie jest uwzględniana wtedy, oraz {{Code|nil}} i {{Code|true}}, które oznaczają to samo, w tym jeżeli ona jest uwzględniana, wtedy jest brany parametr pierwszy dziecka, który musi istnieć przy takiej wartości tego parametru, tzn. {{Code|{{m|Pudełko|Nazwa przestrzeni nazw dyskusji 3|Szablon}}}}, a nazwa uzyskana nazwy przestrzeni nazw jest w takim przypadku błędna, a jeżeli nazwa domyślna jest błędna, czyli {{Code|{{m|Pudełko|Nazwa przestrzeni nazw dyskusji 3|Moja przestrzeń}}}}, wtedy funkcja zwraca stan błędu {{Code|(błąd)}}. * {{Code|i}} - numer zmiennej nazwy przestrzeni nazw. Funkcja wykorzystuje {{Code|{{sr|#p.Uzyskanie_nazw_jednostki(frame,...)|p=Pudełko/Pomocne}}}} do wyznaczania ogólnego nazwy przestrzeni nazw dla pozycji bazowej i numerkowej, tzn. dla pozycji: jeden, dwa, trzy,..., itd, i ich ogólnej. Parametr ramki tablicy transportu rodzica szablonu: * {{Code|nazwa przestrzeni nazw}}, {{Code|nazwa przestrzeni nazw 1}}, {{Code|nazwa przestrzeni nazw 2}}, {{Code|nazwa przestrzeni nazw 3}},..., {{Code|nazwa przestrzeni nazw i}} - nazwy przestrzeni nazw dla pozycji bazowej oraz zwykłej i ogólnej numerkowej, * {{Code|nazwa jednostki}}, {{Code|nazwa jednostki 1}}, {{Code|nazwa jednostki 2}}, {{Code|nazwa jednostki 3}},... - nazwy jednostek dla pozycji bazowej i numerkowej, * {{Code|typ jednostki}}, {{Code|typ jednostki 1}}, {{Code|typ jednostki 2}}, {{Code|typ jednostki 3}},..., {{Code|typ jednostki i}} - typy jednostek, którym odpowiadają pewne przestrzenie przedmiotowe, dla pozycji bazowej, numerkowej i ogólnej. Parametry ramki tablicy transportu dziecka: * Parametry dziecka są takie same jak rodzica dla funkcji pudełkowej plus tu wymienione, * {{Code|numer jednostki}} - jak parametr {{Code|i}} nie został ustawiony, to wtedy liczy się ta zmienna. Przykłady: <syntaxhighlight lang="mediawiki"> {{Nazwa szablonu|nazwa przestrzeni nazw=Wikibooks|nazwa przestrzeni nazw 1=Szablon|nazwa przestrzeni nazw i=|nazwa jednostki 2=Wikibooks:Strona}} </syntaxhighlight> W dziecku powiedzmy jest wywołanie, i szukamy nazwy przestrzeni nazw o numerze dwa, która została podana, ale istnieje za to jej wersji ogólna {{Code|nazwa przestrzeni nazw i}} i domyślna {{Code|nazwa przestrzeni nazw}}, ale wtedy dla tego numerkowego liczy się to ogólne z {{Code| i}}, a ponieważ ta nazwa jest pusta, więc będziemy liczyli nazwę przestrzeni nazw z {{Code|nazwa jednostki 2}}: <syntaxhighlight lang="mediawiki"> {{#invoke:Pudełko|Nazwa przestrzeni nazw dyskusji 3|numer jednostki=2}} </syntaxhighlight> Na podstawie powyższego przykładu otrzymamy wynik o schemacie, nie wyniku, bo tam nie ma zmiennej {{Code|nazwa przestrzeni nazw 1}}, ale jest {{Code|nazwa przestrzeni nazw i}}: <syntaxhighlight lang="mediawiki"> <!-- Ale nie "nazwa przestrzeni nazw 2", bo jej nie ma, ale za to istnieje "nazwa przestrzeni nazw i"; --> <!-- nazwa przestrzeni nazw 2=nazwa przestrzeni nazw i="", a nazwa jednostki 2="Wikibooks:Strona"; --> <!-- Czyli wynik: --> Dyskusja Wikibooks <!-- Widzimy, że wygenerowała się nazwa przestrzeni nazw, którą jest przestrzeń nieprogramowa, ale dyskusji projektu, wychodząca z nazwy jednostek w tym przypadku z "nazwa jednostki 2"; --> </syntaxhighlight> Nie jest brana w tym powyższym przykładzie zmienna {{Code|nazwa przestrzeni nazw}}, bo jej nie ma, ale za to jest {{Code|nazwa przestrzeni nazw i}}, bo ona występuje jako parametr domyślny ogólny dla parametrów numerkowych. Tytaj jest używana jest zmienna {{Code|nazwa jednostki 2}} do wygenerowania ostatecznego wyniku, bo jak można zauważyć, parametry przestrzenne wskazują na przestrzeń główną, a nazwy jednostek już nie. Przykłady w wikikodzie: * {{Code|{{m|Pudełko|Nazwa przestrzeni nazw dyskusji 3|nazwa przestrzeni nazw{{=}}|nazwa jednostki{{=}}Wikibooks:Strona}}}} → {{Tt|{{#invoke:Pudełko|Nazwa przestrzeni nazw dyskusji 3|nazwa przestrzeni nazw=|nazwa jednostki=Wikibooks:Szablon}}}} * {{Code|{{m|Pudełko|Nazwa przestrzeni nazw dyskusji 3|nazwa przestrzeni nazw 2{{=}}|nazwa jednostki 2{{=}}Wikibooks:Strona|numer jednostki{{=}}2}}}} → {{Tt|{{#invoke:Pudełko|Nazwa przestrzeni nazw dyskusji 3|nazwa przestrzeni nazw 2=|nazwa jednostki 2=Wikibooks:Szablon|numer jednostki=2}}}} Powyżej dla przykładu podano parametry nie w rodzicu w szablonie, tylko w dziecku, jeśli chodzi o parametry nazw przestrzeni nazw i nazw jednostek, ale ich się za to nie powinno podawać w tych ramach, tylko w szablonach, w których wywoływane są te ramki pudełek {{Code|{{m|Pudełko}}}}, ale tak tutaj tak zrobiono by było najłatwiej sprawdzić działanie tego typu funkcji. Analogicznie możemy podawać parametry typu jednostki, np.: wywołaniu modułowym {{Code|{{m|Pudełko|Nazwa przestrzeni nazw dyskusji 3|typ jednostki 2{{=}}Podręcznik|nazwa jednostki 2{{=}}Szablon:Strona|numer jednostki{{=}}2}}}} (ale wtedy jest brana przestrzeń nazw z nazwy jednostki), ale o tym więcej w rozdziałach {{Code|{{sr|# p["Dyskusyjny typ jednostki 3"](frame,i)|p=Pudełko}}}} w „{{sr|#Funkcje typu jednostki|p=Pudełko}}”, on definiuje przestrzenie dyskusji, ale można użyć parametru dyskusji typu jednostki z obojętnie jaką wartością niepustą, czy pustą, czy nawet jej nie podamy, wtedy wyświetli się nazwa przestrzeni nazw dyskusji. Jeżeli typ jednostki bazowy wskazuje na przestrzeń nazw główną, wtedy się nie liczą parametry nazw jednostek, a na numerkowy, wtedy się liczy. Również parametry typu jednostki nie powinno się podawać w dziecku w ramce, tylko w rodzicu w szablonie jako parametry, w którym ta ramka jest wywoływana, ale tutaj podano jedynie dla przykładu, jak najłatwiej sprawdzić działanie tych parametrów tej funkcji. Najpierw w funkcji nagłówku brane są parametry nazw przestrzeni nazw, a jeżeli ich nie ma, to parametry typu jednostki, a jeżeli nie ma lub parametry przestrzenne wskazują na przestrzeń główną, i nie ma nazwy jednostki, to generowane są nazwy tej funkcji na podstawie aktualnej strony. == Funkcje nazw jednostki trzeciej wersji == === {{Code|p["Nazwa jednostki 3"](frame,i)}} === === {{Code|p["Nazwa przedmiotowa jednostki 3"](frame,i)}} === === {{Code|p["Nazwa dyskusji jednostki 3"](frame,i)}} === == Funkcje typu jednostki == === {{Code|p["Typ jednostki"](frame,i)}} === === {{Code|p["Typ jednostki 2"](frame,i)}} === === {{Code|p["Typ jednostki 3"](frame,i)}} === === Funkcje typu jednostki przedmiotowe === ==== {{Code|p["Przedmiotowy typ jednostki"](frame,i)}} ==== ==== {{Code|p["Przedmiotowy typ jednostki 2"](frame,i)}} ==== ==== {{Code|p["Przedmiotowy typ jednostki 3"](frame,i)}} ==== === Fukcje typu jednostki dyskusji === ==== {{Code|p["Dyskusyjny typ jednostki"](frame,i)}} ==== ==== {{Code|p["Dyskusyjny typ jednostki 2"](frame,i)}} ==== ==== {{Code|p["Dyskusyjny typ jednostki 3"](frame,i)}} ==== == Funkcje chech pudełka == === {{Code|p["Cecha pudełka"](frame)}} === === {{Code|p["Przedmiotowa cecha pudełka"](frame)}} === === {{Code|p["Dyskusyjna cecha pudełka"](frame)}} === == Fukcje ogólnego pudełka == === {{Code|p["Ogólne pudełko"](frame)}} === == Funkcje ogólne == === {{Code|p["Tekst pudełka"](frame)}} === == Funkcje błędów pudełka == === {{Code|p["Błędy pudełka"](frame)}} === === {{Code|p["Przedmiotowe błędy pudełka"](frame)}} === === {{Code|p["Dyskusyjne błędy pudełka"](frame)}} === == Funkcje nazw stron == === {{Code|p["Nazwa strony głównej projektu"](frame,i)}} === === {{Code|p["Nazwa strony głównej dla dzieci projektu"](frame,i)}} === == Funkcje kodów == === {{Code|p["Kod języka"](frame,i)}} === === {{Code|p["Kod projektu"](frame,i)}} === === {{Code|p["Klucz projektu"](frame,i)}} === == Funkcje wiki == === {{Code|p["Inny niż język bieżący wiki"](frame)}} === === {{Code|p["Inne niż lokalne wiki"](frame)}} === === {{Code|p["Inne niż bieżące wiki"](frame)}} === == Funkcje typów parametrów, czy podane je == === {{Code|p["Podano parametry nienazwane"](frame)}} === === {{Code|p["Podano parametry numerowane"](frame)}} === === {{Code|p["Podano parametry nazwane"](frame)}} === == Funkcje kodów tego projektu == === {{Code|p["Kod projektu tego projektu"](frame)}} === === {{Code|p["Kod języka tego projektu"](frame)}} === === {{Code|p["Klucz projektu tego projektu"](frame)}} === == Funkcje stron == === {{Code|p["Strona główna tego projektu"](frame)}} === === {{Code|p["Strona główna dla dzieci tego projektu"](frame)}} === == Funkcje nazw stron drugiej wersji == === {{Code|p["Nazwa strony głównej dla dzieci projektu 2"](frame)}} === === {{Code| p["Nazwa strony głównej projektu 2"](frame)}} === {{BrClear}} <noinclude><!-- -->{{ProstaStronaKoniec}}<!-- -->{{Kategoria|Opisy funkcji, w Lua w Scribunto, w modułach}}<!-- --></noinclude> q6j0et09b7ecbj7hemtujawnbvf18qe 540421 540420 2026-04-23T19:57:01Z Persino 2851 /* {{Code|p["Nazwa przestrzeni nazw dyskusji 3"](frame,i)}} */ 540421 wikitext text/x-wiki <noinclude>{{ProstaStronaStart | nagłówek = {{Podrozdział|{{ld2|Pudełko}}|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 pudelko_modul=require("Module:Pudełko"); </syntaxhighlight> dzięki, któremu można wypisywać funkcje należącego do niego. Posługuje się na parametrach pudełkowych {{Parametr|nazwa przestrzeni nazw}} (czy też bez numerka {{Parametr|nazwa przestrzeni nazw i}} dla tego numerowanego) lub te z numerkiem po jednej spacji w nich (ale nie dla tego z końcówką {{Code| i}}) mogą zostać użyte jako parametry szablonu. Moduł {{Code|{{ld2|Pudełko}}}} przedstawia funkcje nazw w oparciu o funkcje nazw {{Code|{{ld2|Nazwy}}}}, generuje on nazwy za pomocą parametrów pudełkowych podanych poniżej. Parametr {{Parametr|nazwa jednostki}} (lub parametr {{Parametr|cel}} dla numerka tego pierwszego, tego alternatywnego), lub te z numerkiem po jednej spacji w nazwie parametru, albo numerowane numerkami {{Code|1}}, {{Code|2}},..., mogą zostać użyte jako parametry szablonu. Parametry określające rodzaj jednostki {{Parametr|typ jednostki}} z {{Parametr|dyskusja typu jednostki}}, itp. w wersjach z numerkiem po jednej spacji w nich mogą zostać użyte jako parametry szablonu. A te tymi numerowanymi liczbami naturalnymi {{Tt|nazwy jednostki}} od jedynki wzwyż poprzez szablon, w którym są one użyte, one też mogą być użyte z dwukropkiem, te numerowane, na samym początku nazwy, wtedy one są traktowane jako pełne nazwy strony, i wtedy one nie zostaną z interpretowane, że do nich trzeba użyć parametr odpowiedni z nazwą przetrzeni nazw z tego numerowanego, czy ogólny, aby utworzyć znów inną pełną nazwę strony dla tego numerka. Zestawienie: * {{Code|nazwa przestrzeni nazw}} i {{Code|nazwa przestrzeni nazw i}} (ogólna nazwa przestrzeni nazw dla wszystkich numerków, i tych numerowanych jednostek) - i to pierwsze z numerkiem, tzn. {{Code|nazwa przestrzeni nazw 1}}, {{Code|nazwa przestrzeni nazw 2}}, ..., * {{Code|nazwa jednostki}} - i te z numerkiem: {{Code|nazwa jednostki 1}}, {{Code|nazwa jednostki 2}}, ..., lub gdy jest zamiast tego parametrem numerowany, {{Code|1}}, {{Code|2}},..., który dla tego pierwszego może być uznany jako: {{Code|cel}} {{=}} {{Code|1}}, * {{Code|typ jednostki}} (parametr bazowy) i {{Code|typ jednostki i}} (parametr domyślny numerkowy) - i te z numerkiem: {{Code|typ jednostki 1}}, {{Code|typ jednostki 2}}, ..., tzn. gdy chcemy określić z jakim typem jednostki mamy do czynienia w zależności do jakiej przestrzeni nazw należy, a w danej, czy jest on np. programowy, czy tylko jest opisem, jak to bywa w szablonach {{Np|Template|link=tak}}, podobnie jest w przypadku {{Np|Module|link=tak}}, czy jak jest w innych przestrzeniach nazw, ** {{Code|dyskusja typu jednostki}} (parametr bazowy) i {{Code|dyskusja typu jednostki i}} (parametr domyślny numerkowy) - i te z numerkiem: {{Code|dyskusja typu jednostki 1}}, {{Code|dyskusja typu jednostki 2}}, ..., gdy chcemy określić wartością niepustą,że chodzi tutaj o typ jednostki. == {{Code|p.CzyNiepoprawnaNazwa(nazwa_jednostki)}} == Funkcja sprawdzajaca, czy jest poprawnie podana nazwa jednostki, czy ma poprawną nazwę. Znakami tymi, z których nie powinna składać się nazwa jest {{Code|<nowiki>{}<>|[]#\n</nowiki>}} i dodatkowo znak {{Code|&#127;}} (kod {{Code|{{Nowiki|&#127;}}}}). Też nie może składać się z trzech znaków tyldy, tzn. {{Code|<nowiki>~~~</nowiki>}}. Również w swojej budowie nie może składać się ze kodów {{Strong|HTML}} literowych o wzorze {{Code|{{Nowiki|&(%a+);}}}}. Natomiast może składać się z {{Code|{{Nowiki|&#(%d+);}}}} i {{Code|{{Nowiki|&#x(%x+);}}}}, ale w pierw te kody muszą być zamienione na normalne znaki. Skrótowa definicja funkcji: <syntaxhighlight lang="lua"> function p.CzyNiepoprawnaNazwa(nazwa_jednostki)...end; </syntaxhighlight> Wtedy ciało funkcji tej, czyli jego definicja w środku, jest: <syntaxhighlight lang="lua"> -- Moduł: "Moduł:Html/dane", służy do ładowania znaku o kodzie HTML "&#127;"; local html_dane_modul=mw.loadData("Module:Html/dane"); return mw.ustring.match(nazwa_jednostki,"[{}<>|%[%]#\n"..html_dane_modul.znak_127.."]+") or mw.ustring.match(nazwa_jednostki,"~~~") or mw.ustring.match(nazwa_jednostki,"&(%a+);"); </syntaxhighlight> Parametry: * {{Code|nazwa_jednostki}} - nazwa jednostki do sprawdzenia. Przykłady: <syntaxhighlight lang="lua"> local pudelko_modul=require("Module:Pudełko"); -- Podana przykładowa niepoprawna nazwa jedostki local nazwa_jednostki="Nazwa pliku [[Nazwa linku w pliku]]"; -- Fukcja zwróci wartość: local czy_poprawna_nazwa=true; local czy_poprawna_nazwa=pudelko_modul.CzyNiepoprawnaNazwa(nazwa_jednostki); </syntaxhighlight> == Funkcje nazw przestrzeni nazw == === {{Code|p["Nazwa przestrzeni nazw"](frame,...)}} === Funkcja pisze nazwę przestrzeni nazw, niezależnie, czy to jest przedmiotowa, czy dyskusji, według podanej w zmiennej {{Code|nazwa przestrzeni nazw}} dla pozycja bazowej w podanych parametrach szablonu rodzicu ramki dziecka, lub dla innej pozycji należy parametr podawać w formie {{Code|nazwa przestrzeni nazw 1}}, {{Code|nazwa przestrzeni nazw 2}}, {{Code|nazwa przestrzeni nazw 3}},..., lub te parametry można podać w postaci ogólnej {{Code|nazwa przestrzeni nazw i}}. Parametry podaje się w parametrach rodzica wywołania tej funkcji {{Code|{{m|Pudełko|Nazwa przestrzeni nazw}}}} (ale ich nie trzeba podawać w dziecku, ale można) i w parametrach dziecka, jeśli chodzi o zmienną {{Code|numer jednostki}}, czyli np.: {{Code|{{m|Pudełko|Nazwa przestrzeni nazw|numer jednostki{{=}}<jakaś liczba całkowita dodatnia>}}}}. Te parametry przestrzenne zamiast w rodzicu w szablonie można podać w ramce dziecka, wtedy parametry dziecka mają pierwszeństwo. Przestrzeń nazw z parametrów nazw przestrzennych może odpowiadać wartości przestrzeni głównej, to wtedy odpowiednia przestrzeń nazw z parametru nazwy jednostki się nie liczy w tej funkcji, aby się liczyła należy użyć funkcji {{Code|{{sr|#p["Nazwa przestrzeni nazw 2"](frame,...)|p=Pudełko}}}}. Definicja skrótowa funkcji: <syntaxhighlight lang="lua"> p["Nazwa przestrzeni nazw"]=function(frame,czy_uwzglednic_alternatywna_nazwe,i)...end; </syntaxhighlight> Wtedy ciało funkcji tej, czyli jego definicja w środku, jest: <syntaxhighlight lang="lua"> -- Jest liczony numer parametru nazwy przestrzeni nazw, domyslnie chodzi tu o numer bazowy parametrów przestrzennych; local numer_jednostki=i or frame.args["numer jednostki"]; local liczba_numer_jednostki=((numer_jednostki)and(tonumber(numer_jednostki))or 0); local pudelko_pomocne_modul=require("Module:Pudełko/Pomocne"); -- Liczy nazwę przestrzeni nazw na podstawie podanych parametrów; return pudelko_pomocne_modul.Nazwa_przestrzeni_nazw(frame,0, czy_uwzglednic_alternatywna_nazwe,liczba_numer_jednostki); </syntaxhighlight> Parametry funkcji: * {{Code|frame}} - tablica ramki tablicy transportu, * {{Code|czy_uwzglednic_alternatywna_nazwe}} - czy ma uwzględniać nazwę przestrzeni nazw domyślną szablonu, dostępne wartości: {{Code|false}}, w której nazwa domyślna nie jest uwzględniana wtedy, oraz {{Code|nil}} i {{Code|true}}, które oznaczają to samo, w tym jeżeli ona jest uwzględniana, wtedy jest brany parametr pierwszy dziecka, który musi istnieć przy takiej wartości tego parametru, tzn. {{Code|{{m|Pudełko|Nazwa przestrzeni nazw|Szablon}}}}, a nazwa uzyskana nazwy przestrzeni nazw jest w takim przypadku błędna, a jeżeli nazwa domyślna jest błędna, czyli {{Code|{{m|Pudełko|Nazwa przestrzeni nazw|Moja przestrzeń}}}}, wtedy funkcja zwraca stan błędu {{Code|(błąd)}}. * {{Code|i}} - numer zmiennej nazwy przestrzeni nazw. Funkcja wykorzystuje {{Code|{{sr|#p.Nazwa_przestrzeni_nazw(frame,...)|p=Pudełko/Pomocne}}}} do wyznaczania ogólnego nazwy przestrzeni nazw dla pozycji bazowej i numerkowej, tzn. dla pozycji: jeden, dwa, trzy,..., itd, i ich ogólnej. Parametr ramki tablicy transportu rodzica szablonu: * {{Code|nazwa przestrzeni nazw}}, {{Code|nazwa przestrzeni nazw 1}}, {{Code|nazwa przestrzeni nazw 2}}, {{Code|nazwa przestrzeni nazw 3}},..., {{Code|nazwa przestrzeni nazw i}} - nazwy przestrzeni nazw dla pozycji bazowej oraz zwykłej i ogólnej numerkowej, * {{Code|typ jednostki}}, {{Code|typ jednostki 1}}, {{Code|typ jednostki 2}}, {{Code|typ jednostki 3}},..., {{Code|typ jednostki i}} - typy jednostek, którym odpowiadają pewne przestrzenie przedmiotowe, dla pozycji bazowej, numerkowej i ogólnej, ** {{Code|dyskusja typu jednostki}}, {{Code|dyskusja typu jednostki 1}}, {{Code|dyskusja typ jednostki 2}}, {{Code|dyskusja typ jednostki 3}},..., {{Code|dyskusja typ jednostki i}} - czy dany typ jednostki ma przedstawiać, jeśli niepusta, przestrzeń dyskusji dla pozycji bazowej, numerkowej i ogólnej. Parametry ramki tablicy transportu dziecka: * Parametry dziecka są takie same jak rodzica dla funkcji pudełkowej plus tu wymienione, * {{Code|numer jednostki}} - jak parametr {{Code|i}} nie został ustawiony, to wtedy liczy się ta zmienna. Przykłady: <syntaxhighlight lang="mediawiki"> {{Nazwa szablonu|nazwa przestrzeni nazw=Wikibooks|nazwa przestrzeni nazw 2=Szablon|nazwa przestrzeni nazw i=Moduł}} </syntaxhighlight> W dziecku powiedzmy jest wywołanie, i szukamy nazwy przestrzeni nazw o numerze dwa, która nie została podana, ale istnieje za to jej wersji ogólna {{Code|nazwa przestrzeni nazw i}} i domyślna {{Code|nazwa przestrzeni nazw}}: <syntaxhighlight lang="mediawiki"> {{#invoke:Pudełko|Nazwa przestrzeni nazw|numer jednostki=1}} </syntaxhighlight> Na podstawie powyższego przykładu otrzymamy wynik o schemacie, nie wyniku, bo tam nie ma zmiennej {{Code|nazwa przestrzeni nazw 1}}, ale jest {{Code|nazwa przestrzeni nazw i}}: <syntaxhighlight lang="mediawiki"> <!-- Ale nie "nazwa przestrzeni nazw", bo jej nie ma, ale za to istnieje "nazwa przestrzeni nazw i"; --> <!-- nazwa przestrzeni nazw 2=nazwa przestrzeni nazw i=Moduł; --> <!-- Czyli wynik: --> Moduł <!-- Widzimy, że wygenerowała się nazwa przestrzeni nazw, którą jest przestrzeń programowa, którą również jest "Szablon"; --> </syntaxhighlight> Nie jest brana w tym powyższym przykładzie zmienna {{Code|nazwa przestrzeni nazw}}, bo jej nie ma, ale za to jest {{Code|nazwa przestrzeni nazw i}}, bo ona występuje jako parametr domyślny ogólny dla parametrów numerkowych. Przykłady w wikikodzie: * {{Code|{{m|Pudełko|Nazwa przestrzeni nazw|numer jednostki{{=}}2}}}} → {{Tt|{{#invoke:Pudełko|Nazwa przestrzeni nazw|numer jednostki=2}}}} * {{Code|{{m|Pudełko|Nazwa przestrzeni nazw|Szablon|nazwa przestrzeni nazw i{{=}}Moja przestrzeń|numer jednostki{{=}}2}}}} → {{Tt|{{#invoke:Pudełko|Nazwa przestrzeni nazw|Szablon|nazwa przestrzeni nazw i=Moja przestrzeń|numer jednostki=2}}}} * {{Code|{{m|Pudełko|Nazwa przestrzeni nazw|nazwa przestrzeni nazw 2{{=}}Szablon|numer jednostki{{=}}2}}}} → {{Tt|{{#invoke:Pudełko|Nazwa przestrzeni nazw|nazwa przestrzeni nazw 2=Szablon|numer jednostki=2}}}} * {{Code|{{m|Pudełko|Nazwa przestrzeni nazw|nazwa przestrzeni nazw 2{{=}}Szablon|numer jednostki{{=}}2}}}} → {{Tt|{{#invoke:Pudełko|Nazwa przestrzeni nazw|nazwa przestrzeni nazw i=Szablon|numer jednostki=2}}}} * {{Code|{{m|Pudełko|Nazwa przestrzeni nazw|nazwa przestrzeni nazw{{=}}Szablon|numer jednostki{{=}}2}}}} → {{Tt|{{#invoke:Pudełko|Nazwa przestrzeni nazw|nazwa przestrzeni nazw=Szablon|numer jednostki=2}}}} Powyżej dla przykładu podano parametry nie w rodzicu w szablonie, tylko w dziecku, jeśli chodzi o parametry nazw przestrzeni nazw, ale ich się za to nie powinno podawać w tych ramach, tylko w szablonach, w których wywoływane są te ramki pudełek {{Code|{{m|Pudełko}}}}, ale tak tutaj tak zrobiono by było najłatwiej sprawdzić działanie tego typu funkcji. Analogicznie możemy podawać parametry typu jednostki, np.: wywołaniu modułowym {{Code|{{m|Pudełko|Nazwa przestrzeni nazw|typ jednostki 2{{=}}strona szablonu|numer jednostki{{=}}2}}}}, ale o tym więcej w rozdziałach {{Code|{{sr|# p["Typ jednostki"](frame,i)|p=Pudełko}}}} w „{{sr|#Funkcje typu jednostki|p=Pudełko}}”, on definiuje przestrzenie przedmiotowe, ale można użyć parametru dyskusji typu jednostki z wartością niepustą, wtedy wyświetli się nazwa przestrzeni nazw dyskusji. Również parametry typu jednostki nie powinno się podawać w dziecku w ramce, tylko w rodzicu w szablonie jako parametry, w którym ta ramka jest wywoływana, ale tutaj podano jedynie dla przykładu, jak najłatwiej sprawdzić działanie tych parametrów tej funkcji. Najpierw w funkcji nagłówku brane są parametry nazw przestrzeni nazw, a jeżeli ich nie ma, to parametry typu jednostki, a jeżeli nie ma, to generowane są nazwy na podstawie aktualnego modułu. === {{Code|p["Nazwa przedmiotowej przestrzeni nazw"](frame,...)}} === Funkcja pisze przedmiotową nazwę przestrzeni nazw jakikolwiek nazwy przestrzeni nazw (tzn. nazwę przedmiotową nazwy przestrzenie nazw, czyli nie dyskusji, zamieniana jest na nią samą, czyli identyfikator przestrzeni się nie zmienia, a dyskusji, nie przedmiotową, przekształca się na przedmiotową jej odpowiadającą, czyli w tym przypadku identyfikator przestrzeni zmniejsza się o numer mniej), według podanej w zmiennej {{Code|nazwa przestrzeni nazw}} dla pozycja bazowej w podanych parametrach szablonu rodzicu ramki dziecka, lub dla innej pozycji należy parametr podawać w formie {{Code|nazwa przestrzeni nazw 1}}, {{Code|nazwa przestrzeni nazw 2}}, {{Code|nazwa przestrzeni nazw 3}},..., lub te parametry można podać w postaci ogólnej {{Code|nazwa przestrzeni nazw i}}. Parametry podaje się w parametrach rodzica wywołania tej funkcji {{Code|{{m|Pudełko|Nazwa przedmiotowej przestrzeni nazw}}}} (ale ich nie trzeba podawać w dziecku, ale można) i w parametrach dziecka, jeśli chodzi o zmienną {{Code|numer jednostki}}, czyli np.: {{Code|{{m|Pudełko|Nazwa przedmiotowej przestrzeni nazw|numer jednostki{{=}}<jakaś liczba całkowita dodatnia>}}}}. Te parametry przestrzenne zamiast w rodzicu w szablonie można podać w ramce dziecka, wtedy parametry dziecka mają pierwszeństwo. Parametry przestrzenne mogą mogą być podane w postaci przestrzeni przedmiotowej lub dyskusji, ale ta funkcja zawsze ją zamienia na przedmiotową. Przestrzeń nazw z parametrów nazw przestrzennych może odpowiadać wartości przestrzeni głównej, to wtedy odpowiednia przestrzeń nazw z parametru nazwy jednostki się nie liczy w tej funkcji, aby się liczyła należy użyć funkcji {{Code|{{sr|#p["Nazwa przedmiotowej przestrzeni nazw 2"](frame,...)|p=Pudełko}}}}. Definicja skrótowa funkcji: <syntaxhighlight lang="lua"> p["Nazwa przedmiotowej przestrzeni nazw"]=function(frame,czy_uwzglednic_alternatywna_nazwe,i)...end; </syntaxhighlight> Wtedy ciało funkcji tej, czyli jego definicja w środku, jest: <syntaxhighlight lang="lua"> -- Jest liczony numer parametru nazwy przestrzeni nazw, domyslnie chodzi tu o numer bazowy parametrów przestrzennych; local numer_jednostki=i or frame.args["numer jednostki"]; local liczba_numer_jednostki=((numer_jednostki)and(tonumber(numer_jednostki))or 0); local pudelko_pomocne_modul=require("Module:Pudełko/Pomocne"); -- Liczy nazwę przestrzeni nazw przedmiotową na podstawie podanych parametrów; return pudelko_pomocne_modul.Nazwa_przestrzeni_nazw(frame,1, czy_uwzglednic_alternatywna_nazwe,liczba_numer_jednostki); </syntaxhighlight> Parametry funkcji: * {{Code|frame}} - tablica ramki tablicy transportu, * {{Code|czy_uwzglednic_alternatywna_nazwe}} - czy ma uwzględniać nazwę przestrzeni nazw domyślną szablonu, dostępne wartości: {{Code|false}}, w której nazwa domyślna nie jest uwzględniana wtedy, oraz {{Code|nil}} i {{Code|true}}, które oznaczają to samo, w tym jeżeli ona jest uwzględniana, wtedy jest brany parametr pierwszy dziecka, który musi istnieć przy takiej wartości tego parametru, tzn. {{Code|{{m|Pudełko|Nazwa przedmiotowej przestrzeni nazw|Dyskusja szablonu}}}} - ta nazwa domyślna zostanie zamieniona na przedmiotową, a jak ona by była przedmiotowa, to żadnej zamiany by nie było, a nazwa uzyskana z nazwy przestrzeni nazw z parametrów przestrzennych jest w takim przypadku błędna, to w takim razie brany jest ten parametr, a jeżeli ta nazwa domyślna jest błędna, czyli {{Code|{{m|Pudełko|Nazwa przedmiotowej przestrzeni nazw|Moja przestrzeń}}}}, wtedy funkcja zwraca stan błędu {{Code|(błąd)}}. * {{Code|i}} - numer zmiennej nazwy przestrzeni nazw. Funkcja wykorzystuje {{Code|{{sr|#p.Nazwa_przestrzeni_nazw(frame,...)|p=Pudełko/Pomocne}}}} do wyznaczania ogólnego nazwy przestrzeni nazw dla pozycji bazowej i numerkowej, tzn. dla pozycji: jeden, dwa, trzy,..., itd, i ich ogólnej. Parametr ramki tablicy transportu rodzica szablonu: * {{Code|nazwa przestrzeni nazw}}, {{Code|nazwa przestrzeni nazw 1}}, {{Code|nazwa przestrzeni nazw 2}}, {{Code|nazwa przestrzeni nazw 3}},..., {{Code|nazwa przestrzeni nazw i}} - nazwy przestrzeni nazw dla pozycji bazowej oraz zwykłej i ogólnej numerkowej, * {{Code|typ jednostki}}, {{Code|typ jednostki 1}}, {{Code|typ jednostki 2}}, {{Code|typ jednostki 3}},..., {{Code|typ jednostki i}} - typy jednostek, którym odpowiadają pewne przestrzenie przedmiotowe, dla pozycji bazowej, numerkowej i ogólnej. Parametry ramki tablicy transportu dziecka: * Parametry dziecka są takie same jak rodzica dla funkcji pudełkowej plus tu wymienione, * {{Code|numer jednostki}} - jak parametr {{Code|i}} nie został ustawiony, to wtedy liczy się ta zmienna. Przykłady: <syntaxhighlight lang="mediawiki"> {{Nazwa szablonu|nazwa przestrzeni nazw=Dyskusja Wikibooks|nazwa przestrzeni nazw 2=Dyskusja szablonu|nazwa przestrzeni nazw i=Dyskusja modułu}} </syntaxhighlight> W dziecku powiedzmy jest wywołanie, i szukamy nazwy przestrzeni nazw o numerze dwa, która nie została podana, ale istnieje za to jej wersji ogólna {{Code|nazwa przestrzeni nazw i}} i domyślna {{Code|nazwa przestrzeni nazw}}: <syntaxhighlight lang="mediawiki"> {{#invoke:Pudełko|Nazwa przedmiotowej przestrzeni nazw|numer jednostki=1}} </syntaxhighlight> Na podstawie powyższego przykładu otrzymamy wynik o schemacie, nie wyniku, bo tam nie ma zmiennej {{Code|nazwa przestrzeni nazw 1}}, ale jest {{Code|nazwa przestrzeni nazw i}}: <syntaxhighlight lang="mediawiki"> <!-- Ale nie "nazwa przestrzeni nazw", bo jej nie ma, ale za to istnieje "nazwa przestrzeni nazw i"; --> <!-- nazwa przestrzeni nazw 2=nazwa przestrzeni nazw i=Dyskusja modułu; --> <!-- Czyli wynik: --> Moduł <!-- Widzimy, że wygenerowała się nazwa przestrzeni nazw, którą jest przestrzeń przedmiotowa programowa przestrzeni dyskusji "Dyskusja modułu", którą również jest "Szablon" jego przestrzeni dyskusji "Dyskusja szablonu", a dla ich przestrzeni przedmiotowej, zamiast dyskusji, to samo przekształca się na to samo; --> </syntaxhighlight> Nie jest brana w tym powyższym przykładzie zmienna {{Code|nazwa przestrzeni nazw}}, bo jej nie ma, ale za to jest {{Code|nazwa przestrzeni nazw i}}, bo ona występuje jako parametr domyślny ogólny dla parametrów numerkowych. Przykłady w wikikodzie: * {{Code|{{m|Pudełko|Nazwa przedmiotowej przestrzeni nazw|numer jednostki{{=}}2}}}} → {{Tt|{{#invoke:Pudełko|Nazwa przedmiotowej przestrzeni nazw|numer jednostki=2}}}} * {{Code|{{m|Pudełko|Nazwa przedmiotowej przestrzeni nazw|Dyskusja szablonu|nazwa przestrzeni nazw i{{=}}Moja przestrzeń|numer jednostki{{=}}2}}}} → {{Tt|{{#invoke:Pudełko|Nazwa przedmiotowej przestrzeni nazw|Dyskusja szablonu|nazwa przestrzeni nazw i=Moja przestrzeń|numer jednostki=2}}}} * {{Code|{{m|Pudełko|Nazwa przedmiotowej przestrzeni nazw|nazwa przestrzeni nazw 2{{=}}Dyskusja szablonu|numer jednostki{{=}}2}}}} → {{Tt|{{#invoke:Pudełko|Nazwa przedmiotowej przestrzeni nazw|nazwa przestrzeni nazw 2=Dyskusja szablonu|numer jednostki=2}}}} * {{Code|{{m|Pudełko|Nazwa przedmiotowej przestrzeni nazw|nazwa przestrzeni nazw 2{{=}}Dyskusja szablonu|numer jednostki{{=}}2}}}} → {{Tt|{{#invoke:Pudełko|Nazwa przedmiotowej przestrzeni nazw|nazwa przestrzeni nazw i=Dyskusja szablonu|numer jednostki=2}}}} * {{Code|{{m|Pudełko|Nazwa przedmiotowej przestrzeni nazw|nazwa przestrzeni nazw{{=}}Dyskusja szablonu|numer jednostki{{=}}2}}}} → {{Tt|{{#invoke:Pudełko|Nazwa przedmiotowej przestrzeni nazw|nazwa przestrzeni nazw=Dyskusja szablonu|numer jednostki=2}}}} Powyżej dla przykładu podano parametry nie w rodzicu w szablonie, tylko w dziecku, jeśli chodzi o parametry nazw przestrzeni nazw, ale ich się za to nie powinno podawać w tych ramach, tylko w szablonach, w których wywoływane są te ramki pudełek {{Code|{{m|Pudełko}}}}, ale tak tutaj tak zrobiono by było najłatwiej sprawdzić działanie tego typu funkcji. Analogicznie możemy podawać parametry typu jednostki, np.: wywołaniu modułowym {{Code|{{m|Pudełko|Nazwa przedmiotowej przestrzeni nazw|typ jednostki 2{{=}}strona szablonu|numer jednostki{{=}}2}}}}, ale o tym więcej w rozdziałach {{Code|{{sr|# p["Przedmiotowy typ jednostki"](frame,i)|p=Pudełko}}}} w „{{sr|#Funkcje typu jednostki|p=Pudełko}}”, ale wtedy ta sama nazwa przestrzeni nazw reprezentowana przez {{Parametr|typ jednostki 2|strona szablonu}}, jest zamieniana na to samo, lepiej jest tutaj używać parametrów przestrzennych nazw niż typu jednostki, bo typ jednostki ma taką samą wartość dla przestrzeni przedmiotowej, co dyskusji. Tutaj parametr dyskusji typu jednostki bazowy i numerkowy ogólny, czy szczegółowy, nie gra roli, bo nawet, gdy wygenerujemy nazwę przestrzeni dyskusji za pomoca tego parametru, to i tak otrzymamy na samym końcu jego nazwę przedmiotową. Również parametry typu jednostki nie powinno się podawać w dziecku w ramce, tylko w rodzicu w szablonie jako parametry, w którym ta ramka jest wywoływana, ale tutaj podano jedynie dla przykładu, jak najłatwiej sprawdzić działanie tych parametrów tej funkcji. Najpierw w funkcji nagłówku brane są parametry nazw przestrzeni nazw, a jeżeli ich nie ma, to parametry typu jednostki, a jeżeli nie ma, to generowane są nazwy na podstawie aktualnego modułu. === {{Code|p["Nazwa przestrzeni nazw dyskusji"](frame,...)}} === Funkcja pisze nazwę przestrzeni nazw dyskusji jakikolwiek nazwy przestrzeni nazw (tzn. nazwę przedmiotową nazwy przestrzenie nazw, czyli nie dyskusji, zamieniana jest na dyskusji, czyli identyfikator przestrzeni się zmienia jeden wyżej, a dyskusji, nie przedmiotową, przekształca się na tą samą), według podanej w zmiennej {{Code|nazwa przestrzeni nazw}} dla pozycja bazowej w podanych parametrach szablonu rodzicu ramki dziecka, lub dla innej pozycji należy parametr podawać w formie {{Code|nazwa przestrzeni nazw 1}}, {{Code|nazwa przestrzeni nazw 2}}, {{Code|nazwa przestrzeni nazw 3}},..., lub te parametry można podać w postaci ogólnej {{Code|nazwa przestrzeni nazw i}}. Parametry podaje się w parametrach rodzica wywołania tej funkcji {{Code|{{m|Pudełko|Nazwa przestrzeni nazw dyskusji}}}} (ale ich nie trzeba podawać w dziecku, ale można) i w parametrach dziecka, jeśli chodzi o zmienną {{Code|numer jednostki}}, czyli np.: {{Code|{{m|Pudełko|Nazwa przestrzeni nazw dyskusji|numer jednostki{{=}}<jakaś liczba całkowita dodatnia>}}}}. Te parametry przestrzenne zamiast w rodzicu w szablonie można podać w ramce dziecka, wtedy parametry dziecka mają pierwszeństwo. Parametry przestrzenne mogą mogą być podane w postaci przestrzeni przedmiotowej lub dyskusji, ale ta funkcja zawsze ją zamienia na dyskusji. Przestrzeń nazw z parametrów nazw przestrzennych może odpowiadać wartości przestrzeni głównej, to wtedy odpowiednia przestrzeń nazw z parametru nazwy jednostki się nie liczy w tej funkcji, aby się liczyła należy użyć funkcji {{Code|{{sr|#p["Nazwa przestrzeni nazw dyskusji 2"](frame,...)|p=Pudełko}}}}. Definicja skrótowa funkcji: <syntaxhighlight lang="lua"> p["Nazwa przestrzeni nazw dyskusji"]=function(frame,czy_uwzglednic_alternatywna_nazwe,i)...end; </syntaxhighlight> Wtedy ciało funkcji tej, czyli jego definicja w środku, jest: <syntaxhighlight lang="lua"> -- Jest liczony numer parametru nazwy przestrzeni nazw, domyslnie chodzi tu o numer bazowy parametrów przestrzennych; local numer_jednostki=i or frame.args["numer jednostki"]; local liczba_numer_jednostki=((numer_jednostki)and(tonumber(numer_jednostki))or 0); local pudelko_pomocne_modul=require("Module:Pudełko/Pomocne"); -- Liczy nazwę przestrzeni nazw dyskusji na podstawie podanych parametrów; return pudelko_pomocne_modul.Nazwa_przestrzeni_nazw(frame,2, czy_uwzglednic_alternatywna_nazwe,liczba_numer_jednostki); </syntaxhighlight> Parametry funkcji: * {{Code|frame}} - tablica ramki tablicy transportu, * {{Code|czy_uwzglednic_alternatywna_nazwe}} - czy ma uwzględniać nazwę przestrzeni nazw domyślną szablonu, dostępne wartości: {{Code|false}}, w której nazwa domyślna nie jest uwzględniana wtedy, oraz {{Code|nil}} i {{Code|true}}, które oznaczają to samo, w tym jeżeli ona jest uwzględniana, wtedy jest brany parametr pierwszy dziecka, który musi istnieć przy takiej wartości tego parametru, tzn. {{Code|{{m|Pudełko|Nazwa przestrzeni nazw dyskusji|Szablon}}}} - ta nazwa domyślna zostanie przekształcona na dyskusji, a jeżeli ona by była dyskusji, to nie byłoby żadnego przekształcenia, a nazwa uzyskana nazwy przestrzeni nazw z parametrów przestrzennych jest w takim przypadku błędna, to w takim razie brany jest ten parametr, a jeżeli nazwa domyślna jest błędna, czyli {{Code|{{m|Pudełko|Nazwa przestrzeni nazw dyskusji|Moja przestrzeń}}}}, wtedy funkcja zwraca stan błędu {{Code|(błąd)}}. * {{Code|i}} - numer zmiennej nazwy przestrzeni nazw. Funkcja wykorzystuje {{Code|{{sr|#p.Nazwa_przestrzeni_nazw(frame,...)|p=Pudełko/Pomocne}}}} do wyznaczania ogólnego nazwy przestrzeni nazw dla pozycji bazowej i numerkowej, tzn. dla pozycji: jeden, dwa, trzy,..., itd, i ich ogólnej. Parametr ramki tablicy transportu rodzica szablonu: * {{Code|nazwa przestrzeni nazw}}, {{Code|nazwa przestrzeni nazw 1}}, {{Code|nazwa przestrzeni nazw 2}}, {{Code|nazwa przestrzeni nazw 3}},..., {{Code|nazwa przestrzeni nazw i}} - nazwy przestrzeni nazw dla pozycji bazowej oraz zwykłej i ogólnej numerkowej, * {{Code|typ jednostki}}, {{Code|typ jednostki 1}}, {{Code|typ jednostki 2}}, {{Code|typ jednostki 3}},..., {{Code|typ jednostki i}} - typy jednostek, którym odpowiadają pewne przestrzenie przedmiotowe, dla pozycji bazowej, numerkowej i ogólnej. Parametry ramki tablicy transportu dziecka: * Parametry dziecka są takie same jak rodzica dla funkcji pudełkowej plus tu wymienione, * {{Code|numer jednostki}} - jak parametr {{Code|i}} nie został ustawiony, to wtedy liczy się ta zmienna. Przykłady: <syntaxhighlight lang="mediawiki"> {{Nazwa szablonu|nazwa przestrzeni nazw=Wikibooks|nazwa przestrzeni nazw 2=Szablon|nazwa przestrzeni nazw i=Moduł}} </syntaxhighlight> W dziecku powiedzmy jest wywołanie, i szukamy nazwy przestrzeni nazw o numerze dwa, która nie została podana, ale istnieje za to jej wersji ogólna {{Code|nazwa przestrzeni nazw i}} i domyślna {{Code|nazwa przestrzeni nazw}}: <syntaxhighlight lang="mediawiki"> {{#invoke:Pudełko|Nazwa przestrzeni nazw dyskusji|numer jednostki=1}} </syntaxhighlight> Na podstawie powyższego przykładu otrzymamy wynik o schemacie, nie wyniku, bo tam nie ma zmiennej {{Code|nazwa przestrzeni nazw 1}}, ale jest {{Code|nazwa przestrzeni nazw i}}: <syntaxhighlight lang="mediawiki"> <!-- Ale nie "nazwa przestrzeni nazw", bo jej nie ma, ale za to istnieje "nazwa przestrzeni nazw i"; --> <!-- nazwa przestrzeni nazw 2=nazwa przestrzeni nazw i=Moduł; --> <!-- Czyli wynik: --> Dyskusja modułu <!-- Widzimy, że wygenerowała się nazwa przestrzeni nazw, którą jest przestrzeń dyskusji przestrzeni programowej przestrzeni przedmiotowej "Moduł", którą również jest "Szablon" jego przestrzeni dyskusji "Dyskusja szablonu", a dla ich przestrzeni przedmiotowej, zamiast dyskusji, to przekształca się na dyskusji jej odpowiadającą; --> </syntaxhighlight> Nie jest brana w tym powyższym przykładzie zmienna {{Code|nazwa przestrzeni nazw}}, bo jej nie ma, ale za to jest {{Code|nazwa przestrzeni nazw i}}, bo ona występuje jako parametr domyślny ogólny dla parametrów numerkowych. Przykłady w wikikodzie: * {{Code|{{m|Pudełko|Nazwa przestrzeni nazw dyskusji|numer jednostki{{=}}2}}}} → {{Tt|{{#invoke:Pudełko|Nazwa przestrzeni nazw dyskusji|numer jednostki=2}}}} * {{Code|{{m|Pudełko|Nazwa przestrzeni nazw dyskusji|Szablon|nazwa przestrzeni nazw i{{=}}Moja przestrzeń|numer jednostki{{=}}2}}}} → {{Tt|{{#invoke:Pudełko|Nazwa przestrzeni nazw dyskusji|Szablon|nazwa przestrzeni nazw i=Moja przestrzeń|numer jednostki=2}}}} * {{Code|{{m|Pudełko|Nazwa przestrzeni nazw dyskusji|nazwa przestrzeni nazw 2{{=}}Szablon|numer jednostki{{=}}2}}}} → {{Tt|{{#invoke:Pudełko|Nazwa przestrzeni nazw dyskusji|nazwa przestrzeni nazw 2=Szablon|numer jednostki=2}}}} * {{Code|{{m|Pudełko|Nazwa przestrzeni nazw dyskusji|nazwa przestrzeni nazw 2{{=}}Szablon|numer jednostki{{=}}2}}}} → {{Tt|{{#invoke:Pudełko|Nazwa przestrzeni nazw dyskusji|nazwa przestrzeni nazw i=Szablon|numer jednostki=2}}}} * {{Code|{{m|Pudełko|Nazwa przestrzeni nazw dyskusji|nazwa przestrzeni nazw{{=}}Szablon|numer jednostki{{=}}2}}}} → {{Tt|{{#invoke:Pudełko|Nazwa przestrzeni nazw dyskusji|nazwa przestrzeni nazw=Szablon|numer jednostki=2}}}} Powyżej dla przykładu podano parametry nie w rodzicu w szablonie, tylko w dziecku, jeśli chodzi o parametry nazw przestrzeni nazw, ale ich się za to nie powinno podawać w tych ramach, tylko w szablonach, w których wywoływane są te ramki pudełek {{Code|{{m|Pudełko}}}}, ale tak tutaj tak zrobiono by było najłatwiej sprawdzić działanie tego typu funkcji. Analogicznie możemy podawać parametry typu jednostki, np.: wywołaniu modułowym {{Code|{{m|Pudełko|Nazwa przestrzeni nazw dyskusji|typ jednostki 2{{=}}strona szablonu|numer jednostki{{=}}2}}}}, ale o tym więcej w rozdziałach {{Code|{{sr|# p["Dyskusyjny typ jednostki"](frame,i)|p=Pudełko}}}} w „{{sr|#Funkcje typu jednostki|p=Pudełko}}”, ale wtedy nazwa przestrzeni nazw reprezentowana przez {{Parametr|typ jednostki 2|strona szablonu}}, jest zamieniana na nazwę przestrzeni nazw dyskusji. Parametr dyskusji typu jednostki bazowy lub dla danego numerka ogólny, czy szczegółowy, nie gra roli. Również parametry typu jednostki nie powinno się podawać w dziecku w ramce, tylko w rodzicu w szablonie jako parametry, w którym ta ramka jest wywoływana, ale tutaj podano jedynie dla przykładu, jak najłatwiej sprawdzić działanie tych parametrów tej funkcji. Najpierw w funkcji nagłówku brane są parametry nazw przestrzeni nazw, a jeżeli ich nie ma, to parametry typu jednostki, a jeżeli nie ma, to generowane są nazwy na podstawie aktualnego modułu. == Funkcje nazw przestrzeni nazw drugiej wersji == === {{Code|p["Nazwa przestrzeni nazw 2"](frame,...)}} === Funkcja pisze nazwę przestrzeni nazw, niezależnie, czy to jest przedmiotowa, czy dyskusji, według, i nie zawsze tylko, podanej w zmiennej {{Code|nazwa przestrzeni nazw}} dla pozycja bazowej w podanych parametrach szablonu rodzicu ramki dziecka, lub dla innej pozycji należy parametr podawać w formie {{Code|nazwa przestrzeni nazw 1}}, {{Code|nazwa przestrzeni nazw 2}}, {{Code|nazwa przestrzeni nazw 3}},..., lub te parametry można podać w postaci ogólnej {{Code|nazwa przestrzeni nazw i}}. W tej funkcji trzeba też podawać parametry nazwy jednostek {{Code|nazwa jednostki}}, {{Code|nazwa jednostki 1}}, {{Code|nazwa jednostki 2}}, {{Code|nazwa jednostki 3}},... Parametry podaje się w parametrach rodzica wywołania tej funkcji {{Code|{{m|Pudełko|Nazwa przestrzeni nazw 2}}}} (ale ich nie trzeba podawać w dziecku, ale można) i w parametrach dziecka, jeśli chodzi o zmienną {{Code|numer jednostki}}, czyli np.: {{Code|{{m|Pudełko|Nazwa przestrzeni nazw 2|numer jednostki{{=}}<jakaś liczba całkowita dodatnia>}}}}. Te parametry przestrzenne zamiast w rodzicu w szablonie można podać w ramce dziecka, wtedy parametry dziecka mają pierwszeństwo. Przestrzeń nazw z parametrów nazw przestrzennych może odpowiadać wartości przestrzeni głównej, to wtedy odpowiednia przestrzeń nazw z parametru nazwy jednostki się liczy w tej funkcji, wtedy jest liczona nazwa przestrzeni nazw z tego parametru. Gdy parametry przestrzenne lub typ jednostki w drugim podejściu nie wskazują na przestrzeń główną, to wtedy działanie tej funkcji jest podobne do {{Code|{{sr|#p["Nazwa przestrzeni nazw"](frame,...)|p=Pudełko}}}}. Definicja skrótowa funkcji: <syntaxhighlight lang="lua"> p["Nazwa przestrzeni nazw 2"]=function(frame,czy_uwzglednic_alternatywna_nazwe,i)...end; </syntaxhighlight> Wtedy ciało funkcji tej, czyli jego definicja w środku, jest: <syntaxhighlight lang="lua"> local pudelko_pomocne_modul=require("Module:Pudełko/Pomocne"); -- Liczy nazwę przestrzeni nazw, jeżeli z parametrów przestrzennych przestrzeń wskazuje na główną, to wtedy jest liczona przestrzeń nazw z nazwy jednostki; return pudelko_pomocne_modul.Nazwa_przestrzeni_nazw_2(frame,czy_uwzglednic_alternatywna_nazwe,i) </syntaxhighlight> Parametry funkcji: * {{Code|frame}} - tablica ramki tablicy transportu, * {{Code|czy_uwzglednic_alternatywna_nazwe}} - czy ma uwzględniać nazwę przestrzeni nazw domyślną szablonu, dostępne wartości: {{Code|false}}, w której nazwa domyślna nie jest uwzględniana wtedy, oraz {{Code|nil}} i {{Code|true}}, które oznaczają to samo, w tym jeżeli ona jest uwzględniana, wtedy jest brany parametr pierwszy dziecka, który musi istnieć przy takiej wartości tego parametru, tzn. {{Code|{{m|Pudełko|Nazwa przestrzeni nazw 2|Szablon}}}}, a nazwa uzyskana nazwy przestrzeni nazw jest w takim przypadku błędna, a jeżeli nazwa domyślna jest błędna, czyli {{Code|{{m|Pudełko|Nazwa przestrzeni nazw 2|Moja przestrzeń}}}}, wtedy funkcja zwraca stan błędu {{Code|(błąd)}}. * {{Code|i}} - numer zmiennej nazwy przestrzeni nazw. Funkcja wykorzystuje {{Code|{{sr|#p.Nazwa_przestrzeni_nazw_2(frame,...)|p=Pudełko/Pomocne}}}} do wyznaczania ogólnego nazwy przestrzeni nazw dla pozycji bazowej i numerkowej, tzn. dla pozycji: jeden, dwa, trzy,..., itd, i ich ogólnej. Parametr ramki tablicy transportu rodzica szablonu: * {{Code|nazwa przestrzeni nazw}}, {{Code|nazwa przestrzeni nazw 1}}, {{Code|nazwa przestrzeni nazw 2}}, {{Code|nazwa przestrzeni nazw 3}},..., {{Code|nazwa przestrzeni nazw i}} - nazwy przestrzeni nazw dla pozycji bazowej oraz zwykłej i ogólnej numerkowej, * {{Code|nazwa jednostki}}, {{Code|nazwa jednostki 1}}, {{Code|nazwa jednostki 2}}, {{Code|nazwa jednostki 3}},... - nazwy jednostek dla pozycji bazowej i numerkowej, * {{Code|typ jednostki}}, {{Code|typ jednostki 1}}, {{Code|typ jednostki 2}}, {{Code|typ jednostki 3}},..., {{Code|typ jednostki i}} - typy jednostek, którym odpowiadają pewne przestrzenie przedmiotowe, dla pozycji bazowej, numerkowej i ogólnej, ** {{Code|dyskusja typu jednostki}}, {{Code|dyskusja typu jednostki 1}}, {{Code|dyskusja typ jednostki 2}}, {{Code|dyskusja typ jednostki 3}},..., {{Code|dyskusja typ jednostki i}} - czy dany typ jednostki ma przedstawiać, jeśli niepusta, przestrzeń dyskusji dla pozycji bazowej, numerkowej i ogólnej. Parametry ramki tablicy transportu dziecka: * Parametry dziecka są takie same jak rodzica dla funkcji pudełkowej plus tu wymienione, * {{Code|numer jednostki}} - jak parametr {{Code|i}} nie został ustawiony, to wtedy liczy się ta zmienna. Przykłady: <syntaxhighlight lang="mediawiki"> {{Nazwa szablonu|nazwa przestrzeni nazw=Wikibooks|nazwa przestrzeni nazw 1=Szablon|nazwa przestrzeni nazw i=|nazwa jednostki 2=Wikibooks:Strona}} </syntaxhighlight> W dziecku powiedzmy jest wywołanie, i szukamy nazwy przestrzeni nazw o numerze dwa, która została podana, ale istnieje za to jej wersji ogólna {{Code|nazwa przestrzeni nazw i}} i domyślna {{Code|nazwa przestrzeni nazw}}, ale wtedy dla tego numerkowego liczy się to ogólne z {{Code| i}}, a ponieważ ta nazwa jest pusta, więc będziemy liczyli nazwę przestrzeni nazw z {{Code|nazwa jednostki 2}}: <syntaxhighlight lang="mediawiki"> {{#invoke:Pudełko|Nazwa przestrzeni nazw 2|numer jednostki=2}} </syntaxhighlight> Na podstawie powyższego przykładu otrzymamy wynik o schemacie, nie wyniku, bo tam nie ma zmiennej {{Code|nazwa przestrzeni nazw 1}}, ale jest {{Code|nazwa przestrzeni nazw i}}: <syntaxhighlight lang="mediawiki"> <!-- Ale nie "nazwa przestrzeni nazw 2", bo jej nie ma, ale za to istnieje "nazwa przestrzeni nazw i"; --> <!-- nazwa przestrzeni nazw 2=nazwa przestrzeni nazw i="", a nazwa jednostki 2="Wikibooks:Strona"; --> <!-- Czyli wynik: --> Wikibooks <!-- Widzimy, że wygenerowała się nazwa przestrzeni nazw, którą jest przestrzeń nieprogramowa, ale projektu, wychodząca z nazwy jednostek w tym przypadku z "nazwa jednostki 2"; --> </syntaxhighlight> Nie jest brana w tym powyższym przykładzie zmienna {{Code|nazwa przestrzeni nazw}}, bo jej nie ma, ale za to jest {{Code|nazwa przestrzeni nazw i}}, bo ona występuje jako parametr domyślny ogólny dla parametrów numerkowych. Tytaj jest używana jest zmienna {{Code|nazwa jednostki 2}} do wygenerowania ostatecznego wyniku, bo jak można zauważyć, parametry przestrzenne wskazują na przestrzeń główną, a nazwy jednostek już nie. Przykłady w wikikodzie: * {{Code|{{m|Pudełko|Nazwa przestrzeni nazw 2|numer jednostki{{=}}2}}}} → {{Tt|{{#invoke:Pudełko|Nazwa przestrzeni nazw 2|numer jednostki=2}}}} * {{Code|{{m|Pudełko|Nazwa przestrzeni nazw 2|Szablon|nazwa przestrzeni nazw i{{=}}Moja przestrzeń|numer jednostki{{=}}2}}}} → {{Tt|{{#invoke:Pudełko|Nazwa przestrzeni nazw 2|Szablon|nazwa przestrzeni nazw i=Moja przestrzeń|numer jednostki=2}}}} * {{Code|{{m|Pudełko|Nazwa przestrzeni nazw 2|nazwa przestrzeni nazw 2{{=}}|nazwa jednostki 2{{=}}Szablon:Strona|numer jednostki{{=}}2}}}} → {{Tt|{{#invoke:Pudełko|Nazwa przestrzeni nazw 2|nazwa przestrzeni nazw 2=|nazwa jednostki 2=Szablon:Strona|numer jednostki=2}}}} * {{Code|{{m|Pudełko|Nazwa przestrzeni nazw 2|nazwa przestrzeni nazw i{{=}}|nazwa jednostki 2{{=}}Szablon:Strona|numer jednostki{{=}}2}}}} → {{Tt|{{#invoke:Pudełko|Nazwa przestrzeni nazw 2|nazwa przestrzeni nazw i=|nazwa jednostki 2=Szablon:Strona|numer jednostki=2}}}} * {{Code|{{m|Pudełko|Nazwa przestrzeni nazw 2|Szablon|nazwa przestrzeni nazw{{=}}|nazwa jednostki 2{{=}}Wikibooks:Strona|numer jednostki{{=}}2}}}} → {{Tt|{{#invoke:Pudełko|Nazwa przestrzeni nazw 2|Szablon|nazwa przestrzeni nazw=|nazwa jednostki 2=Wikibooks:Strona|numer jednostki=2}}}} Powyżej dla przykładu podano parametry nie w rodzicu w szablonie, tylko w dziecku, jeśli chodzi o parametry nazw przestrzeni nazw i nazw jednostek, ale ich się za to nie powinno podawać w tych ramach, tylko w szablonach, w których wywoływane są te ramki pudełek {{Code|{{m|Pudełko}}}}, ale tak tutaj tak zrobiono by było najłatwiej sprawdzić działanie tego typu funkcji. Analogicznie możemy podawać parametry typu jednostki, np.: wywołaniu modułowym {{Code|{{m|Pudełko|Nazwa przestrzeni nazw 2|typ jednostki 2{{=}}Podręcznik|nazwa jednostki 2{{=}}Szablon:Strona|numer jednostki{{=}}2}}}} (ale wtedy jest brana przestrzeń nazw z nazwy jednostki), ale o tym więcej w rozdziałach {{Code|{{sr|#p["Typ jednostki 2"](frame,i)|p=Pudełko}}}} w „{{sr|#Funkcje typu jednostki|p=Pudełko}}”, on definiuje przestrzenie przedmiotowe, ale można użyć parametru dyskusji typu jednostki z wartością niepustą, wtedy wyświetli się nazwa przestrzeni nazw dyskusji. Jeżeli typ jednostki wskazuje na przestrzeń nazw główną, wtedy się liczą parametry nazw jednostek. Również parametry typu jednostki nie powinno się podawać w dziecku w ramce, tylko w rodzicu w szablonie jako parametry, w którym ta ramka jest wywoływana, ale tutaj podano jedynie dla przykładu, jak najłatwiej sprawdzić działanie tych parametrów tej funkcji. Najpierw w funkcji nagłówku brane są parametry nazw przestrzeni nazw, a jeżeli ich nie ma, to parametry typu jednostki, a jeżeli nie ma lub parametry przestrzenne wskazują na przestrzeń główną, i nie ma nazwy jednostki, to generowane są nazwy tej funkcji na podstawie aktualnej strony. === {{Code|p["Nazwa przedmiotowej przestrzeni nazw 2"](frame,...)}} === Funkcja pisze przedmiotową nazwę przestrzeni nazw jakikolwiek nazwy przestrzeni nazw (tzn. nazwę przedmiotową nazwy przestrzenie nazw, czyli nie dyskusji, zamieniana jest na nią samą, czyli identyfikator przestrzeni się nie zmienia, a dyskusji, nie przedmiotową, przekształca się na przedmiotową jej odpowiadającą, czyli w tym przypadku identyfikator przestrzeni zmniejsza się o numer mniej), według, i nie zawsze tylko, podanej w zmiennej {{Code|nazwa przestrzeni nazw}} dla pozycja bazowej w podanych parametrach szablonu rodzicu ramki dziecka, lub dla innej pozycji należy parametr podawać w formie {{Code|nazwa przestrzeni nazw 1}}, {{Code|nazwa przestrzeni nazw 2}}, {{Code|nazwa przestrzeni nazw 3}},..., lub te parametry można podać w postaci ogólnej {{Code|nazwa przestrzeni nazw i}}. W tej funkcji trzeba też podawać parametry nazwy jednostek {{Code|nazwa jednostki}}, {{Code|nazwa jednostki 1}}, {{Code|nazwa jednostki 2}}, {{Code|nazwa jednostki 3}},... Parametry podaje się w parametrach rodzica wywołania tej funkcji {{Code|{{m|Pudełko|Nazwa przedmiotowej przestrzeni nazw 2}}}} (ale ich nie trzeba podawać w dziecku, ale można) i w parametrach dziecka, jeśli chodzi o zmienną {{Code|numer jednostki}}, czyli np.: {{Code|{{m|Pudełko|Nazwa przedmiotowej przestrzeni nazw 2|numer jednostki{{=}}<jakaś liczba całkowita dodatnia>}}}}. Te parametry przestrzenne zamiast w rodzicu w szablonie można podać w ramce dziecka, wtedy parametry dziecka mają pierwszeństwo. Przestrzeń nazw z parametrów nazw przestrzennych po przekształceniu na przedmiotową może odpowiadać wartości przestrzeni głównej, to wtedy odpowiednia przestrzeń nazw z parametru nazwy jednostki się liczy w tej funkcji, wtedy jest liczona nazwa przestrzeni nazw z tego parametru. Gdy parametry przestrzenne lub typ jednostki w drugim podejściu nie wskazują na przestrzeń główną, to wtedy działanie tej funkcji jest podobne do {{Code|{{sr|#p["Nazwa przedmiotowej przestrzeni nazw"](frame,...)|p=Pudełko}}}}. Definicja skrótowa funkcji: <syntaxhighlight lang="lua"> p["Nazwa przedmiotowej przestrzeni nazw 2"]=function(frame,czy_uwzglednic_alternatywna_nazwe,i)...end; </syntaxhighlight> Wtedy ciało funkcji tej, czyli jego definicja w środku, jest: <syntaxhighlight lang="lua"> local pudelko_pomocne_modul=require("Module:Pudełko/Pomocne"); return pudelko_pomocne_modul.Nazwa_przestrzeni_nazw_przedmiotowa_dyskusji_2(frame,czy_uwzglednic_alternatywna_nazwe,i,"przedmiotowa"); </syntaxhighlight> Parametry funkcji: * {{Code|frame}} - tablica ramki tablicy transportu, * {{Code|czy_uwzglednic_alternatywna_nazwe}} - czy ma uwzględniać nazwę przestrzeni nazw domyślną szablonu, dostępne wartości: {{Code|false}}, w której nazwa domyślna nie jest uwzględniana wtedy, oraz {{Code|nil}} i {{Code|true}}, które oznaczają to samo, w tym jeżeli ona jest uwzględniana, wtedy jest brany parametr pierwszy dziecka, który musi istnieć przy takiej wartości tego parametru, tzn. {{Code|{{m|Pudełko|Nazwa przedmiotowej przestrzeni nazw 2|Szablon}}}}, a nazwa uzyskana nazwy przestrzeni nazw jest w takim przypadku błędna, a jeżeli nazwa domyślna jest błędna, czyli {{Code|{{m|Pudełko|Nazwa przedmiotowej przestrzeni nazw 2|Moja przestrzeń}}}}, wtedy funkcja zwraca stan błędu {{Code|(błąd)}}. * {{Code|i}} - numer zmiennej nazwy przestrzeni nazw. Funkcja wykorzystuje {{Code|{{sr|#p.Nazwa_przestrzeni_nazw_przedmiotowa_dyskusji_2(frame,...)|p=Pudełko/Pomocne}}}} do wyznaczania ogólnego nazwy przestrzeni nazw dla pozycji bazowej i numerkowej, tzn. dla pozycji: jeden, dwa, trzy,..., itd, i ich ogólnej. Parametr ramki tablicy transportu rodzica szablonu: * {{Code|nazwa przestrzeni nazw}}, {{Code|nazwa przestrzeni nazw 1}}, {{Code|nazwa przestrzeni nazw 2}}, {{Code|nazwa przestrzeni nazw 3}},..., {{Code|nazwa przestrzeni nazw i}} - nazwy przestrzeni nazw dla pozycji bazowej oraz zwykłej i ogólnej numerkowej, * {{Code|nazwa jednostki}}, {{Code|nazwa jednostki 1}}, {{Code|nazwa jednostki 2}}, {{Code|nazwa jednostki 3}},... - nazwy jednostek dla pozycji bazowej i numerkowej, * {{Code|typ jednostki}}, {{Code|typ jednostki 1}}, {{Code|typ jednostki 2}}, {{Code|typ jednostki 3}},..., {{Code|typ jednostki i}} - typy jednostek, którym odpowiadają pewne przestrzenie przedmiotowe, dla pozycji bazowej, numerkowej i ogólnej. Parametry ramki tablicy transportu dziecka: * Parametry dziecka są takie same jak rodzica dla funkcji pudełkowej plus tu wymienione, * {{Code|numer jednostki}} - jak parametr {{Code|i}} nie został ustawiony, to wtedy liczy się ta zmienna. Przykłady: <syntaxhighlight lang="mediawiki"> {{Nazwa szablonu|nazwa przestrzeni nazw=Wikibooks|nazwa przestrzeni nazw 1=Szablon|nazwa przestrzeni nazw i=|nazwa jednostki 2=Dyskusja Wikibooks:Strona}} </syntaxhighlight> W dziecku powiedzmy jest wywołanie, i szukamy nazwy przestrzeni nazw o numerze dwa, która została podana, ale istnieje za to jej wersji ogólna {{Code|nazwa przestrzeni nazw i}} i domyślna {{Code|nazwa przestrzeni nazw}}, ale wtedy dla tego numerkowego liczy się to ogólne z {{Code| i}}, a ponieważ ta nazwa jest pusta, więc będziemy liczyli nazwę przestrzeni nazw z {{Code|nazwa jednostki 2}}: <syntaxhighlight lang="mediawiki"> {{#invoke:Pudełko|Nazwa przedmiotowej przestrzeni nazw 2|numer jednostki=2}} </syntaxhighlight> Na podstawie powyższego przykładu otrzymamy wynik o schemacie, nie wyniku, bo tam nie ma zmiennej {{Code|nazwa przestrzeni nazw 1}}, ale jest {{Code|nazwa przestrzeni nazw i}}: <syntaxhighlight lang="mediawiki"> <!-- Ale nie "nazwa przestrzeni nazw 2", bo jej nie ma, ale za to istnieje "nazwa przestrzeni nazw i"; --> <!-- nazwa przestrzeni nazw 2=nazwa przestrzeni nazw i="", a nazwa jednostki 2="Dyskusja Wikibooks:Strona"; --> <!-- Czyli wynik: --> Wikibooks <!-- Widzimy, że wygenerowała się nazwa przestrzeni nazw, którą jest przestrzeń nieprogramowa, ale projektu, wychodząca z nazwy jednostek w tym przypadku z "nazwa jednostki 2"; --> </syntaxhighlight> Nie jest brana w tym powyższym przykładzie zmienna {{Code|nazwa przestrzeni nazw}}, bo jej nie ma, ale za to jest {{Code|nazwa przestrzeni nazw i}}, bo ona występuje jako parametr domyślny ogólny dla parametrów numerkowych. Tytaj jest używana jest zmienna {{Code|nazwa jednostki 2}} do wygenerowania ostatecznego wyniku, bo jak można zauważyć, parametry przestrzenne wskazują na przestrzeń główną, a nazwy jednostek już nie. Przykłady w wikikodzie: * {{Code|{{m|Pudełko|Nazwa przedmiotowej przestrzeni nazw 2|numer jednostki{{=}}2}}}} → {{Tt|{{#invoke:Pudełko|Nazwa przedmiotowej przestrzeni nazw 2|numer jednostki=2}}}} * {{Code|{{m|Pudełko|Nazwa przedmiotowej przestrzeni nazw 2|Dyskusja szablonu|nazwa przestrzeni nazw i{{=}}Moja przestrzeń|numer jednostki{{=}}2}}}} → {{Tt|{{#invoke:Pudełko|Nazwa przedmiotowej przestrzeni nazw 2|Dyskusja szablonu|nazwa przestrzeni nazw i=Moja przestrzeń|numer jednostki=2}}}} * {{Code|{{m|Pudełko|Nazwa przedmiotowej przestrzeni nazw 2|nazwa przestrzeni nazw 2{{=}}Dyskusja|nazwa jednostki 2{{=}}Dyskusja szablonu:Strona|numer jednostki{{=}}2}}}} → {{Tt|{{#invoke:Pudełko|Nazwa przedmiotowej przestrzeni nazw 2|nazwa przestrzeni nazw 2=Dyskusja|nazwa jednostki 2=Dyskusja szablonu:Strona|numer jednostki=2}}}} * {{Code|{{m|Pudełko|Nazwa przedmiotowej przestrzeni nazw 2|nazwa przestrzeni nazw i{{=}}Dyskusja|nazwa jednostki 2{{=}}Dyskusja szablonu:Strona|numer jednostki{{=}}2}}}} → {{Tt|{{#invoke:Pudełko|Nazwa przedmiotowej przestrzeni nazw 2|nazwa przestrzeni nazw i=Dyskusja|nazwa jednostki 2=Dyskusja szablonu:Strona|numer jednostki=2}}}} * {{Code|{{m|Pudełko|Nazwa przedmiotowej przestrzeni nazw 2|Dyskusja szablonu|nazwa przestrzeni nazw{{=}}Dyskusja|nazwa jednostki 2{{=}}Wikibooks:Strona|numer jednostki{{=}}2}}}} → {{Tt|{{#invoke:Pudełko|Nazwa przedmiotowej przestrzeni nazw 2|Dyskusja szablonu|nazwa przestrzeni nazw=Dyskusja|nazwa jednostki 2=Dyskusja Wikibooks:Strona|numer jednostki=2}}}} Powyżej dla przykładu podano parametry nie w rodzicu w szablonie, tylko w dziecku, jeśli chodzi o parametry nazw przestrzeni nazw i nazw jednostek, ale ich się za to nie powinno podawać w tych ramach, tylko w szablonach, w których wywoływane są te ramki pudełek {{Code|{{m|Pudełko}}}}, ale tak tutaj tak zrobiono by było najłatwiej sprawdzić działanie tego typu funkcji. Analogicznie możemy podawać parametry typu jednostki, np.: wywołaniu modułowym {{Code|{{m|Pudełko|Nazwa przedmiotowej przestrzeni nazw 2|typ jednostki 2{{=}}Podręcznik|nazwa jednostki 2{{=}}Dyskusja szablonu:Strona|numer jednostki{{=}}2}}}} (ale wtedy jest brana przestrzeń nazw z nazwy jednostki), ale o tym więcej w rozdziałach {{Code|{{sr|# p["Przedmiotowy typ jednostki 2"](frame,i)|p=Pudełko}}}} w „{{sr|#Funkcje typu jednostki|p=Pudełko}}”, on definiuje przestrzenie przedmiotowe, ale można użyć parametru dyskusji typu jednostki z wartością niepustą, pustą, czy nawet jej nie podamy, wtedy wyświetli się nazwa przestrzeni nazw przedmiotowej. Jeżeli typ jednostki wskazuje na przestrzeń nazw główną, wtedy się liczą parametry nazw jednostek. Również parametry typu jednostki nie powinno się podawać w dziecku w ramce, tylko w rodzicu w szablonie jako parametry, w którym ta ramka jest wywoływana, ale tutaj podano jedynie dla przykładu, jak najłatwiej sprawdzić działanie tych parametrów tej funkcji. Najpierw w funkcji nagłówku brane są parametry nazw przestrzeni nazw, a jeżeli ich nie ma, to parametry typu jednostki, a jeżeli nie ma lub parametry przestrzenne wskazują na przestrzeń główną, i nie ma nazwy jednostki, to generowane są nazwy tej funkcji na podstawie aktualnej strony. === {{Code|p["Nazwa przestrzeni nazw dyskusji 2"](frame,...)}} === Funkcja pisze nazwę przestrzeni nazw dyskusji jakikolwiek nazwy przestrzeni nazw (tzn. nazwę dyskusji nazwy przestrzenie nazw, czyli nie przedmiotowej, zamieniana jest na nią samą, czyli identyfikator przestrzeni się nie zmienia, a przedmiotową, nie dyskusji, przekształca się na dyskusji jej odpowiadającą, czyli w tym przypadku identyfikator przestrzeni zwiększa się o numer więcej), według, i nie zawsze tylko, podanej w zmiennej {{Code|nazwa przestrzeni nazw}} dla pozycja bazowej w podanych parametrach szablonu rodzicu ramki dziecka, lub dla innej pozycji należy parametr podawać w formie {{Code|nazwa przestrzeni nazw 1}}, {{Code|nazwa przestrzeni nazw 2}}, {{Code|nazwa przestrzeni nazw 3}},..., lub te parametry można podać w postaci ogólnej {{Code|nazwa przestrzeni nazw i}}. W tej funkcji trzeba też podawać parametry nazwy jednostek {{Code|nazwa jednostki}}, {{Code|nazwa jednostki 1}}, {{Code|nazwa jednostki 2}}, {{Code|nazwa jednostki 3}},... Parametry podaje się w parametrach rodzica wywołania tej funkcji {{Code|{{m|Pudełko|Nazwa przestrzeni nazw dyskusji 2}}}} (ale ich nie trzeba podawać w dziecku, ale można) i w parametrach dziecka, jeśli chodzi o zmienną {{Code|numer jednostki}}, czyli np.: {{Code|{{m|Pudełko|Nazwa przestrzeni nazw dyskusji 2|numer jednostki{{=}}<jakaś liczba całkowita dodatnia>}}}}. Te parametry przestrzenne zamiast w rodzicu w szablonie można podać w ramce dziecka, wtedy parametry dziecka mają pierwszeństwo. Przestrzeń nazw z parametrów nazw przestrzennych po przekształceniu na przedmiotową może odpowiadać wartości przestrzeni głównej, to wtedy odpowiednia przestrzeń nazw z parametru nazwy jednostki się liczy w tej funkcji, wtedy jest liczona nazwa przestrzeni nazw z tego parametru. Gdy parametry przestrzenne lub typ jednostki w drugim podejściu nie wskazują na przestrzeń główną, to wtedy działanie tej funkcji jest podobne do {{Code|{{sr|#p["Nazwa dyskusji przestrzeni nazw"](frame,...)|p=Pudełko}}}}. Definicja skrótowa funkcji: <syntaxhighlight lang="lua"> p["Nazwa przestrzeni nazw dyskusji 2"]=function(frame,czy_uwzglednic_alternatywna_nazwe,i)...end; </syntaxhighlight> Wtedy ciało funkcji tej, czyli jego definicja w środku, jest: <syntaxhighlight lang="lua"> local pudelko_pomocne_modul=require("Module:Pudełko/Pomocne"); return pudelko_pomocne_modul.Nazwa_przestrzeni_nazw_przedmiotowa_dyskusji_2(frame,czy_uwzglednic_alternatywna_nazwe,i,"dyskusja"); </syntaxhighlight> Parametry funkcji: * {{Code|frame}} - tablica ramki tablicy transportu, * {{Code|czy_uwzglednic_alternatywna_nazwe}} - czy ma uwzględniać nazwę przestrzeni nazw domyślną szablonu, dostępne wartości: {{Code|false}}, w której nazwa domyślna nie jest uwzględniana wtedy, oraz {{Code|nil}} i {{Code|true}}, które oznaczają to samo, w tym jeżeli ona jest uwzględniana, wtedy jest brany parametr pierwszy dziecka, który musi istnieć przy takiej wartości tego parametru, tzn. {{Code|{{m|Pudełko|Nazwa przestrzeni nazw dyskusji 2|Szablon}}}}, a nazwa uzyskana nazwy przestrzeni nazw jest w takim przypadku błędna, a jeżeli nazwa domyślna jest błędna, czyli {{Code|{{m|Pudełko|Nazwa przestrzeni nazw dyskusji 2|Moja przestrzeń}}}}, wtedy funkcja zwraca stan błędu {{Code|(błąd)}}. * {{Code|i}} - numer zmiennej nazwy przestrzeni nazw. Funkcja wykorzystuje {{Code|{{sr|#p.Nazwa_przestrzeni_nazw_przedmiotowa_dyskusji_2(frame,...)|p=Pudełko/Pomocne}}}} do wyznaczania ogólnego nazwy przestrzeni nazw dla pozycji bazowej i numerkowej, tzn. dla pozycji: jeden, dwa, trzy,..., itd, i ich ogólnej. Parametr ramki tablicy transportu rodzica szablonu: * {{Code|nazwa przestrzeni nazw}}, {{Code|nazwa przestrzeni nazw 1}}, {{Code|nazwa przestrzeni nazw 2}}, {{Code|nazwa przestrzeni nazw 3}},..., {{Code|nazwa przestrzeni nazw i}} - nazwy przestrzeni nazw dla pozycji bazowej oraz zwykłej i ogólnej numerkowej, * {{Code|nazwa jednostki}}, {{Code|nazwa jednostki 1}}, {{Code|nazwa jednostki 2}}, {{Code|nazwa jednostki 3}},... - nazwy jednostek dla pozycji bazowej i numerkowej, * {{Code|typ jednostki}}, {{Code|typ jednostki 1}}, {{Code|typ jednostki 2}}, {{Code|typ jednostki 3}},..., {{Code|typ jednostki i}} - typy jednostek, którym odpowiadają pewne przestrzenie przedmiotowe, dla pozycji bazowej, numerkowej i ogólnej. Parametry ramki tablicy transportu dziecka: * Parametry dziecka są takie same jak rodzica dla funkcji pudełkowej plus tu wymienione, * {{Code|numer jednostki}} - jak parametr {{Code|i}} nie został ustawiony, to wtedy liczy się ta zmienna. Przykłady: <syntaxhighlight lang="mediawiki"> {{Nazwa szablonu|nazwa przestrzeni nazw=Wikibooks|nazwa przestrzeni nazw 1=Szablon|nazwa przestrzeni nazw i=|nazwa jednostki 2=Wikibooks:Strona}} </syntaxhighlight> W dziecku powiedzmy jest wywołanie, i szukamy nazwy przestrzeni nazw o numerze dwa, która została podana, ale istnieje za to jej wersji ogólna {{Code|nazwa przestrzeni nazw i}} i domyślna {{Code|nazwa przestrzeni nazw}}, ale wtedy dla tego numerkowego liczy się to ogólne z {{Code| i}}, a ponieważ ta nazwa jest pusta, więc będziemy liczyli nazwę przestrzeni nazw z {{Code|nazwa jednostki 2}}: <syntaxhighlight lang="mediawiki"> {{#invoke:Pudełko|Nazwa przestrzeni nazw dyskusji 2|numer jednostki=2}} </syntaxhighlight> Na podstawie powyższego przykładu otrzymamy wynik o schemacie, nie wyniku, bo tam nie ma zmiennej {{Code|nazwa przestrzeni nazw 1}}, ale jest {{Code|nazwa przestrzeni nazw i}}: <syntaxhighlight lang="mediawiki"> <!-- Ale nie "nazwa przestrzeni nazw 2", bo jej nie ma, ale za to istnieje "nazwa przestrzeni nazw i"; --> <!-- nazwa przestrzeni nazw 2=nazwa przestrzeni nazw i="", a nazwa jednostki 2="Wikibooks:Strona"; --> <!-- Czyli wynik: --> Dyskusja Wikibooks <!-- Widzimy, że wygenerowała się nazwa przestrzeni nazw, którą jest przestrzeń nieprogramowa, ale dyskusji projektu, wychodząca z nazwy jednostek w tym przypadku z "nazwa jednostki 2"; --> </syntaxhighlight> Nie jest brana w tym powyższym przykładzie zmienna {{Code|nazwa przestrzeni nazw}}, bo jej nie ma, ale za to jest {{Code|nazwa przestrzeni nazw i}}, bo ona występuje jako parametr domyślny ogólny dla parametrów numerkowych. Tytaj jest używana jest zmienna {{Code|nazwa jednostki 2}} do wygenerowania ostatecznego wyniku, bo jak można zauważyć, parametry przestrzenne wskazują na przestrzeń główną, a nazwy jednostek już nie. Przykłady w wikikodzie: * {{Code|{{m|Pudełko|Nazwa przestrzeni nazw dyskusji 2|numer jednostki{{=}}2}}}} → {{Tt|{{#invoke:Pudełko|Nazwa przestrzeni nazw dyskusji 2|numer jednostki=2}}}} * {{Code|{{m|Pudełko|Nazwa przestrzeni nazw dyskusji 2|Szablon|nazwa przestrzeni nazw i{{=}}Moja przestrzeń|numer jednostki{{=}}2}}}} → {{Tt|{{#invoke:Pudełko|Nazwa przestrzeni nazw dyskusji 2|Szablon|nazwa przestrzeni nazw i=Moja przestrzeń|numer jednostki=2}}}} * {{Code|{{m|Pudełko|Nazwa przestrzeni nazw dyskusji 2|nazwa przestrzeni nazw 2{{=}}|nazwa jednostki 2{{=}}Szablon:Strona|numer jednostki{{=}}2}}}} → {{Tt|{{#invoke:Pudełko|Nazwa przestrzeni nazw dyskusji 2|nazwa przestrzeni nazw 2=|nazwa jednostki 2=Szablon:Strona|numer jednostki=2}}}} * {{Code|{{m|Pudełko|Nazwa przestrzeni nazw dyskusji 2|nazwa przestrzeni nazw i{{=}}|nazwa jednostki 2{{=}}Szablon:Strona|numer jednostki{{=}}2}}}} → {{Tt|{{#invoke:Pudełko|Nazwa przestrzeni nazw dyskusji 2|nazwa przestrzeni nazw i=|nazwa jednostki 2=Szablon:Strona|numer jednostki=2}}}} * {{Code|{{m|Pudełko|Nazwa przestrzeni nazw dyskusji 2|Szablon|nazwa przestrzeni nazw{{=}}|nazwa jednostki 2{{=}}Wikibooks:Strona|numer jednostki{{=}}2}}}} → {{Tt|{{#invoke:Pudełko|Nazwa przestrzeni nazw dyskusji 2|Szablon|nazwa przestrzeni nazw=|nazwa jednostki 2=Dyskusja Wikibooks:Strona|numer jednostki=2}}}} Powyżej dla przykładu podano parametry nie w rodzicu w szablonie, tylko w dziecku, jeśli chodzi o parametry nazw przestrzeni nazw i nazw jednostek, ale ich się za to nie powinno podawać w tych ramach, tylko w szablonach, w których wywoływane są te ramki pudełek {{Code|{{m|Pudełko}}}}, ale tak tutaj tak zrobiono by było najłatwiej sprawdzić działanie tego typu funkcji. Analogicznie możemy podawać parametry typu jednostki, np.: wywołaniu modułowym {{Code|{{m|Pudełko|Nazwa przestrzeni nazw dyskusji 2|typ jednostki 2{{=}}Podręcznik|nazwa jednostki 2{{=}}Szablon:Strona|numer jednostki{{=}}2}}}} (ale wtedy jest brana przestrzeń nazw z nazwy jednostki), ale o tym więcej w rozdziałach {{Code|{{sr|# p["Dyskusyjny typ jednostki 2"](frame,i)|p=Pudełko}}}} w „{{sr|#Funkcje typu jednostki|p=Pudełko}}”, on definiuje przestrzenie dyskusji, ale można użyć parametru dyskusji typu jednostki z obojętnie jaką wartością niepustą, czy pustą, czy nawet jej nie podamy, wtedy wyświetli się nazwa przestrzeni nazw dyskusji. Jeżeli typ jednostki wskazuje na przestrzeń nazw główną, wtedy się liczą parametry nazw jednostek. Również parametry typu jednostki nie powinno się podawać w dziecku w ramce, tylko w rodzicu w szablonie jako parametry, w którym ta ramka jest wywoływana, ale tutaj podano jedynie dla przykładu, jak najłatwiej sprawdzić działanie tych parametrów tej funkcji. Najpierw w funkcji nagłówku brane są parametry nazw przestrzeni nazw, a jeżeli ich nie ma, to parametry typu jednostki, a jeżeli nie ma lub parametry przestrzenne wskazują na przestrzeń główną, i nie ma nazwy jednostki, to generowane są nazwy tej funkcji na podstawie aktualnej strony. == Funkcje pełnych nazw jednostki == === {{Code|p["Pełna nazwa dyskusji jednostki"](frame,i)}} === === {{Code|p["Pełna nazwa przedmiotowa jednostki"](frame,i)}} === === {{Code|p["Pełna nazwa jednostki"](frame,i)}} === == Funkcje pełnych nazw jednostki drugiej wersji == === {{Code|p["Pełna nazwa dyskusji jednostki 2"](frame,i)}} === === {{Code|p["Pełna nazwa przedmiotowa jednostki 2"](frame,i)}} === === {{Code|p["Pełna nazwa jednostki 2"](frame,i)}} === == Funkcje pełnych nazw jednostki trzeciej wersji == === {{Code|p["Pełna nazwa dyskusji jednostki 3"](frame,i)}} === === {{Code|p["Pełna nazwa przedmiotowa jednostki 3"](frame,i)}} === === {{Code|p["Pełna nazwa jednostki 3"](frame,i)}} === == Funkcje nazw jednostki == === {{Code|p["Nazwa jednostki"](frame,i)}} === == Funkcje nazw jednostki drugiej wersji == === {{Code|p["Nazwa jednostki 2"](frame,i)}} === === {{Code|p["Nazwa przedmiotowa jednostki 2"](frame,i)}} === === {{Code|p["Nazwa dyskusji jednostki 2"](frame,i)}} === == Funkcje nazw przestrzeni nazw trzeciej wersji == === {{Code|p["Nazwa przestrzeni nazw 3"](frame,i)}} === Funkcja pisze nazwę przestrzeni nazw, niezależnie, czy to jest przedmiotowa, czy dyskusji, według, i nie zawsze tylko, podanej w zmiennej {{Code|nazwa przestrzeni nazw}} dla pozycja bazowej w podanych parametrach szablonu rodzicu ramki dziecka, lub dla innej pozycji należy parametr podawać w formie {{Code|nazwa przestrzeni nazw 1}}, {{Code|Nazwa przestrzeni nazw 3}}, {{Code|nazwa przestrzeni nazw 3}},..., lub te parametry można podać w postaci ogólnej {{Code|nazwa przestrzeni nazw i}}. W tej funkcji trzeba też podawać parametry nazwy jednostek {{Code|nazwa jednostki}}, {{Code|nazwa jednostki 1}}, {{Code|nazwa jednostki 2}}, {{Code|nazwa jednostki 3}},... Parametry podaje się w parametrach rodzica wywołania tej funkcji {{Code|{{m|Pudełko|Nazwa przestrzeni nazw 3}}}} (ale ich nie trzeba podawać w dziecku, ale można) i w parametrach dziecka, jeśli chodzi o zmienną {{Code|numer jednostki}}, czyli np.: {{Code|{{m|Pudełko|Nazwa przestrzeni nazw 3|numer jednostki{{=}}<jakaś liczba całkowita dodatnia>}}}}. Te parametry przestrzenne zamiast w rodzicu w szablonie można podać w ramce dziecka, wtedy parametry dziecka mają pierwszeństwo. Przestrzeń nazw z parametrów nazw przestrzennych bazowych (bez numerka) może odpowiadać wartości przestrzeni głównej, to wtedy odpowiednia przestrzeń nazw z parametru nazwy jednostki się nie liczy w tej funkcji, aby się liczyła należy użyć funkcji {{Code|{{sr|#p["Nazwa przestrzeni nazw"](frame,...)|p=Pudełko}}}}. Przestrzeń nazw z parametrów nazw przestrzennych numerkowych może odpowiadać wartości przestrzeni głównej, to wtedy odpowiednia przestrzeń nazw z parametru nazwy jednostki się liczy w tej funkcji, wtedy jest liczona nazwa przestrzeni nazw z tego parametru. Gdy parametry przestrzenne lub typ jednostki w drugim podejściu nie wskazują na przestrzeń główną, to wtedy działanie tej funkcji jest podobne do {{Code|{{sr|#p["Nazwa przestrzeni nazw 2"](frame,...)|p=Pudełko}}}}. Definicja skrótowa funkcji: <syntaxhighlight lang="lua"> p["Nazwa przestrzeni nazw 3"]=function(frame,czy_uwzglednic_alternatywna_nazwe,i)...end; </syntaxhighlight> Wtedy ciało funkcji tej, czyli jego definicja w środku, jest: <syntaxhighlight lang="lua"> -- Jest liczony numer parametru nazwy przestrzeni nazw, domyslnie chodzi tu o numer bazowy parametrów przestrzennych; local numer_jednostki=i or frame.args["numer jednostki"]; local liczba_numeru_jednostki=((numer_jednostki)and(tonumber(numer_jednostki)) or 0); local pudelko_pomocne_modul=require("Module:Pudełko/Pomocne"); -- Liczy nazwę przestrzeni nazw dyskusji na podstawie podanych parametrów; return pudelko_pomocne_modul.Uzyskanie_nazw_jednostki(frame,0,liczba_numeru_jednostki,nil,2); </syntaxhighlight> Parametry funkcji: * {{Code|frame}} - tablica ramki tablicy transportu, * {{Code|czy_uwzglednic_alternatywna_nazwe}} - czy ma uwzględniać nazwę przestrzeni nazw domyślną szablonu, dostępne wartości: {{Code|false}}, w której nazwa domyślna nie jest uwzględniana wtedy, oraz {{Code|nil}} i {{Code|true}}, które oznaczają to samo, w tym jeżeli ona jest uwzględniana, wtedy jest brany parametr pierwszy dziecka, który musi istnieć przy takiej wartości tego parametru, tzn. {{Code|{{m|Pudełko|Nazwa przestrzeni nazw 3|Szablon}}}}, a nazwa uzyskana nazwy przestrzeni nazw jest w takim przypadku błędna, a jeżeli nazwa domyślna jest błędna, czyli {{Code|{{m|Pudełko|Nazwa przestrzeni nazw 3|Moja przestrzeń}}}}, wtedy funkcja zwraca stan błędu {{Code|(błąd)}}. * {{Code|i}} - numer zmiennej nazwy przestrzeni nazw. Funkcja wykorzystuje {{Code|{{sr|#p.Uzyskanie_nazw_jednostki(frame,...)|p=Pudełko/Pomocne}}}} do wyznaczania ogólnego nazwy przestrzeni nazw dla pozycji bazowej i numerkowej, tzn. dla pozycji: jeden, dwa, trzy,..., itd, i ich ogólnej. Parametr ramki tablicy transportu rodzica szablonu: * {{Code|nazwa przestrzeni nazw}}, {{Code|nazwa przestrzeni nazw 1}}, {{Code|Nazwa przestrzeni nazw 3}}, {{Code|nazwa przestrzeni nazw 3}},..., {{Code|nazwa przestrzeni nazw i}} - nazwy przestrzeni nazw dla pozycji bazowej oraz zwykłej i ogólnej numerkowej, * {{Code|nazwa jednostki}}, {{Code|nazwa jednostki 1}}, {{Code|nazwa jednostki 2}}, {{Code|nazwa jednostki 3}},... - nazwy jednostek dla pozycji bazowej i numerkowej, * {{Code|typ jednostki}}, {{Code|typ jednostki 1}}, {{Code|typ jednostki 2}}, {{Code|typ jednostki 3}},..., {{Code|typ jednostki i}} - typy jednostek, którym odpowiadają pewne przestrzenie przedmiotowe, dla pozycji bazowej, numerkowej i ogólnej, ** {{Code|dyskusja typu jednostki}}, {{Code|dyskusja typu jednostki 1}}, {{Code|dyskusja typ jednostki 2}}, {{Code|dyskusja typ jednostki 3}},..., {{Code|dyskusja typ jednostki i}} - czy dany typ jednostki ma przedstawiać, jeśli niepusta, przestrzeń dyskusji dla pozycji bazowej, numerkowej i ogólnej. Parametry ramki tablicy transportu dziecka: * Parametry dziecka są takie same jak rodzica dla funkcji pudełkowej plus tu wymienione, * {{Code|numer jednostki}} - jak parametr {{Code|i}} nie został ustawiony, to wtedy liczy się ta zmienna. Przykłady: <syntaxhighlight lang="mediawiki"> {{Nazwa szablonu|nazwa przestrzeni nazw=Wikibooks|nazwa przestrzeni nazw=|nazwa przestrzeni nazw i=|nazwajednostki=Szablon:Strona|nazwa jednostki 2=Wikibooks:Strona}} <hr /> {{Nazwa szablonu|nazwa przestrzeni nazw=Wikibooks|nazwa przestrzeni nazw 1=Szablon|nazwa przestrzeni nazw i=|nazwa jednostki 2=Wikibooks:Strona}} </syntaxhighlight> W dziecku powiedzmy jest wywołanie, i szukamy nazwy przestrzeni nazw o numerze dwa, która została podana, ale istnieje za to jej wersji ogólna {{Code|nazwa przestrzeni nazw i}} i domyślna {{Code|nazwa przestrzeni nazw}}, ale wtedy dla tego numerkowego liczy się to ogólne z {{Code| i}}, a ponieważ ta nazwa jest pusta, więc będziemy liczyli nazwę przestrzeni nazw z {{Code|nazwa jednostki 2}}: <syntaxhighlight lang="mediawiki"> {{#invoke:Pudełko|Nazwa przestrzeni nazw 3}} <hr /> {{#invoke:Pudełko|Nazwa przestrzeni nazw 3|numer jednostki=2}} </syntaxhighlight> Na podstawie powyższego przykładu otrzymamy wynik o schemacie, nie wyniku, bo tam nie ma zmiennej {{Code|nazwa przestrzeni nazw 1}}, ale jest {{Code|nazwa przestrzeni nazw i}}: <syntaxhighlight lang="mediawiki"> <!-- Ale nie "nazwa przestrzeni nazw""; --> <!-- nazwa przestrzeni nazw=""; --> <!-- Czyli wynik: --> <!-- wynik pusty --> <!-- Widzimy, że wygenerowała się nazwa przestrzeni nazw, którą jest przestrzeń nazw główna, jest ciągiem pustym: ""; --> <hr /> <!-- Ale nie "Nazwa przestrzeni nazw 2", bo jej nie ma, ale za to istnieje "nazwa przestrzeni nazw i"; --> <!-- nazwa przestrzeni nazw 2=nazwa przestrzeni nazw i="", a nazwa jednostki 2="Wikibooks:Strona"; --> <!-- Czyli wynik: --> Wikibooks <!-- Widzimy, że wygenerowała się nazwa przestrzeni nazw, którą jest przestrzeń nieprogramowa, ale projektu, wychodząca z nazwy jednostek w tym przypadku z "nazwa jednostki 2"; --> </syntaxhighlight> Dla parametrów bazowych nienumerkowych istnieje zmienna {{Code|nazwa przestrzeni nazw}}, której waartość jest pusta,którajest zwracana przez tą funkcję. {{Hr}} Dla parametrów numerkowych nie jest brana w tym powyższym przykładzie zmienna {{Code|nazwa przestrzeni nazw}}, bo jej nie ma, ale za to jest {{Code|nazwa przestrzeni nazw i}}, bo ona występuje jako parametr domyślny ogólny dla parametrów numerkowych. Tytaj jest używana jest zmienna {{Code|nazwa jednostki 2}} do wygenerowania ostatecznego wyniku, bo jak można zauważyć, parametry przestrzenne wskazują na przestrzeń główną, a nazwy jednostek już nie. Przykłady w wikikodzie: * {{Code|{{m|Pudełko|Nazwa przestrzeni nazw 3|nazwa przestrzeni nazw{{=}}|nazwa jednostki{{=}}Wikibooks:Strona}}}} → {{Tt|{{#invoke:Pudełko|Nazwa przestrzeni nazw 3|nazwa przestrzeni nazw=|nazwa jednostki=Wikibooks:Szablon}}}} * {{Code|{{m|Pudełko|Nazwa przestrzeni nazw 3|nazwa przestrzeni nazw 2{{=}}|nazwa jednostki 2{{=}}Wikibooks:Strona|numer jednostki{{=}}2}}}} → {{Tt|{{#invoke:Pudełko|Nazwa przestrzeni nazw 3|nazwa przestrzeni nazw 2=|nazwa jednostki 2=Wikibooks:Szablon|numer jednostki=2}}}} Powyżej dla przykładu podano parametry nie w rodzicu w szablonie, tylko w dziecku, jeśli chodzi o parametry nazw przestrzeni nazw i nazw jednostek, ale ich się za to nie powinno podawać w tych ramach, tylko w szablonach, w których wywoływane są te ramki pudełek {{Code|{{m|Pudełko}}}}, ale tak tutaj tak zrobiono by było najłatwiej sprawdzić działanie tego typu funkcji. Analogicznie możemy podawać parametry typu jednostki, np.: wywołaniu modułowym {{Code|{{m|Pudełko|Nazwa przestrzeni nazw 3|typ jednostki 2{{=}}Podręcznik|nazwa jednostki 2{{=}}Szablon:Strona|numer jednostki{{=}}2}}}} (ale wtedy jest brana przestrzeń nazw z nazwy jednostki), ale o tym więcej w rozdziałach {{Code|{{sr|#p["Typ jednostki 3"](frame,i)|p=Pudełko}}}} w „{{sr|#Funkcje typu jednostki|p=Pudełko}}”, on definiuje przestrzenie przedmiotowe, ale można użyć parametru dyskusji typu jednostki z wartością niepustą, wtedy wyświetli się nazwa przestrzeni nazw dyskusji. Jeżeli typ jednostki bazowy wskazuje na przestrzeń nazw główną, wtedy się nie liczą parametry nazw jednostek, a na numerkowy, wtedy się liczy. Również parametry typu jednostki nie powinno się podawać w dziecku w ramce, tylko w rodzicu w szablonie jako parametry, w którym ta ramka jest wywoływana, ale tutaj podano jedynie dla przykładu, jak najłatwiej sprawdzić działanie tych parametrów tej funkcji. Najpierw w funkcji nagłówku brane są parametry nazw przestrzeni nazw, a jeżeli ich nie ma, to parametry typu jednostki, a jeżeli nie ma lub parametry przestrzenne wskazują na przestrzeń główną, i nie ma nazwy jednostki, to generowane są nazwy tej funkcji na podstawie aktualnej strony. === {{Code|p["Nazwa przedmiotowej przestrzeni nazw 3"](frame,i)}} === Funkcja pisze przedmiotową nazwę przestrzeni nazw jakikolwiek nazwy przestrzeni nazw (tzn. nazwę przedmiotową nazwy przestrzenie nazw, czyli nie dyskusji, zamieniana jest na nią samą, czyli identyfikator przestrzeni się nie zmienia, a dyskusji, nie przedmiotową, przekształca się na przedmiotową jej odpowiadającą, czyli w tym przypadku identyfikator przestrzeni zmniejsza się o numer mniej), według podanej w zmiennej {{Code|nazwa przestrzeni nazw}} dla pozycja bazowej w podanych parametrach szablonu rodzicu ramki dziecka, lub dla innej pozycji należy parametr podawać w formie {{Code|nazwa przestrzeni nazw 1}}, {{Code|nazwa przestrzeni nazw 2}}, {{Code|nazwa przestrzeni nazw 3}},..., lub te parametry można podać w postaci ogólnej {{Code|nazwa przestrzeni nazw i}}. Parametry podaje się w parametrach rodzica wywołania tej funkcji {{Code|{{m|Pudełko|Nazwa przedmiotowej przestrzeni nazw 3}}}} (ale ich nie trzeba podawać w dziecku, ale można) i w parametrach dziecka, jeśli chodzi o zmienną {{Code|numer jednostki}}, czyli np.: {{Code|{{m|Pudełko|Nazwa przedmiotowej przestrzeni nazw 3|numer jednostki{{=}}<jakaś liczba całkowita dodatnia>}}}}. Te parametry przestrzenne zamiast w rodzicu w szablonie można podać w ramce dziecka, wtedy parametry dziecka mają pierwszeństwo. Parametry przestrzenne mogą mogą być podane w postaci przestrzeni przedmiotowej lub dyskusji, ale ta funkcja zawsze ją zamienia na przedmiotową. Przestrzeń nazw z parametrów nazw przestrzennych bazowych (bez numerka) może odpowiadać wartości przestrzeni głównej, to wtedy odpowiednia przestrzeń nazw z parametru nazwy jednostki się nie liczy w tej funkcji, aby się liczyła należy użyć funkcji {{Code|{{sr|#p["Nazwa przedmiotowej przestrzeni nazw"](frame,...)|p=Pudełko}}}}. Przestrzeń nazw z parametrów nazw przestrzennych numerkowych może odpowiadać wartości przestrzeni głównej, to wtedy odpowiednia przestrzeń nazw z parametru nazwy jednostki się liczy w tej funkcji, wtedy jest liczona nazwa przestrzeni nazw z tego parametru. Gdy parametry przestrzenne lub typ jednostki w drugim podejściu nie wskazują na przestrzeń główną, to wtedy działanie tej funkcji jest podobne do {{Code|{{sr|#p["Nazwa przedmiotowej przestrzeni nazw 2"](frame,...)|p=Pudełko}}}}. Definicja skrótowa funkcji: <syntaxhighlight lang="lua"> p["Nazwa przedmiotowej przestrzeni nazw 3"]=function(frame,czy_uwzglednic_alternatywna_nazwe,i)...end; </syntaxhighlight> Wtedy ciało funkcji tej, czyli jego definicja w środku, jest: <syntaxhighlight lang="lua"> -- Jest liczony numer parametru nazwy przestrzeni nazw, domyslnie chodzi tu o numer bazowy parametrów przestrzennych; local numer_jednostki=i or frame.args["numer jednostki"]; local liczba_numeru_jednostki=((numer_jednostki)and(tonumber(numer_jednostki)) or 0); local pudelko_pomocne_modul=require("Module:Pudełko/Pomocne"); -- Liczy nazwę przestrzeni nazw przedmiotową na podstawie podanych parametrów; return pudelko_pomocne_modul.Uzyskanie_nazw_jednostki(frame,1,liczba_numeru_jednostki,nil,1); </syntaxhighlight> Parametry funkcji: * {{Code|frame}} - tablica ramki tablicy transportu, * {{Code|czy_uwzglednic_alternatywna_nazwe}} - czy ma uwzględniać nazwę przestrzeni nazw domyślną szablonu, dostępne wartości: {{Code|false}}, w której nazwa domyślna nie jest uwzględniana wtedy, oraz {{Code|nil}} i {{Code|true}}, które oznaczają to samo, w tym jeżeli ona jest uwzględniana, wtedy jest brany parametr pierwszy dziecka, który musi istnieć przy takiej wartości tego parametru, tzn. {{Code|{{m|Pudełko|Nazwa przedmiotowej przestrzeni nazw 3|Dyskusja szablonu}}}} - ta nazwa domyślna zostanie zamieniona na przedmiotową, a jak ona by była przedmiotowa, to żadnej zamiany by nie było, a nazwa uzyskana z nazwy przestrzeni nazw z parametrów przestrzennych jest w takim przypadku błędna, to w takim razie brany jest ten parametr, a jeżeli ta nazwa domyślna jest błędna, czyli {{Code|{{m|Pudełko|Nazwa przedmiotowej przestrzeni nazw 3|Moja przestrzeń}}}}, wtedy funkcja zwraca stan błędu {{Code|(błąd)}}. * {{Code|i}} - numer zmiennej nazwy przestrzeni nazw. Funkcja wykorzystuje {{Code|{{sr|#p.Uzyskanie_nazw_jednostki(frame,...)|p=Pudełko/Pomocne}}}} do wyznaczania ogólnego nazwy przestrzeni nazw dla pozycji bazowej i numerkowej, tzn. dla pozycji: jeden, dwa, trzy,..., itd, i ich ogólnej. Parametr ramki tablicy transportu rodzica szablonu: * {{Code|nazwa przestrzeni nazw}}, {{Code|nazwa przestrzeni nazw 1}}, {{Code|nazwa przestrzeni nazw 2}}, {{Code|nazwa przestrzeni nazw 3}},..., {{Code|nazwa przestrzeni nazw i}} - nazwy przestrzeni nazw dla pozycji bazowej oraz zwykłej i ogólnej numerkowej, * {{Code|typ jednostki}}, {{Code|typ jednostki 1}}, {{Code|typ jednostki 2}}, {{Code|typ jednostki 3}},..., {{Code|typ jednostki i}} - typy jednostek, którym odpowiadają pewne przestrzenie przedmiotowe, dla pozycji bazowej, numerkowej i ogólnej. Parametry ramki tablicy transportu dziecka: * Parametry dziecka są takie same jak rodzica dla funkcji pudełkowej plus tu wymienione, * {{Code|numer jednostki}} - jak parametr {{Code|i}} nie został ustawiony, to wtedy liczy się ta zmienna. Przykłady: <syntaxhighlight lang="mediawiki"> {{Nazwa szablonu|nazwa przestrzeni nazw=Wikibooks|nazwa przestrzeni nazw=|nazwa przestrzeni nazw i=|nazwajednostki=Szablon:Strona|nazwa jednostki=Dyskusja Wikibooks:Strona}} <hr /> {{Nazwa szablonu|nazwa przestrzeni nazw=Wikibooks|nazwa przestrzeni nazw 1=Szablon|nazwa przestrzeni nazw i=|nazwa jednostki 2=Dyskusja Wikibooks:Strona}} </syntaxhighlight> W dziecku powiedzmy jest wywołanie, i szukamy nazwy przestrzeni nazw o numerze dwa, która nie została podana, ale istnieje za to jej wersji ogólna {{Code|nazwa przestrzeni nazw i}} i domyślna {{Code|nazwa przestrzeni nazw}}: <syntaxhighlight lang="mediawiki"> {{#invoke:Pudełko|Nazwa przedmiotowej przestrzeni nazw 3|numer jednostki=1}} </syntaxhighlight> Na podstawie powyższego przykładu otrzymamy wynik o schemacie, nie wyniku, bo tam nie ma zmiennej {{Code|nazwa przestrzeni nazw 1}}, ale jest {{Code|nazwa przestrzeni nazw i}}: <syntaxhighlight lang="mediawiki"> <!-- Ale nie "nazwa przestrzeni nazw""; --> <!-- nazwa przestrzeni nazw=""; --> <!-- Czyli wynik: --> <!-- wynik pusty --> <!-- Widzimy, że wygenerowała się nazwa przestrzeni nazw, którą jest przestrzeń nazw główna, jest ciągiem pustym: ""; --> <hr /> <!-- Ale nie "Nazwa przestrzeni nazw 2", bo jej nie ma, ale za to istnieje "nazwa przestrzeni nazw i"; --> <!-- nazwa przestrzeni nazw 2=nazwa przestrzeni nazw i="", a nazwa jednostki 2="Dyskusja Wikibooks:Strona"; --> <!-- Czyli wynik: --> Wikibooks <!-- Widzimy, że wygenerowała się nazwa przestrzeni nazw, którą jest przestrzeń nieprogramowa, ale projektu, wychodząca z nazwy jednostek w tym przypadku z "nazwa jednostki 2"; --> </syntaxhighlight> Nie jest brana w tym powyższym przykładzie zmienna {{Code|nazwa przestrzeni nazw}}, bo jej nie ma, ale za to jest {{Code|nazwa przestrzeni nazw i}}, bo ona występuje jako parametr domyślny ogólny dla parametrów numerkowych. Przykłady w wikikodzie: * {{Code|{{m|Pudełko|Nazwa przestrzeni nazw 3|nazwa przestrzeni nazw{{=}}|nazwa jednostki{{=}}Dyskusja Wikibooks:Strona}}}} → {{Tt|{{#invoke:Pudełko|Nazwa przestrzeni nazw 3|nazwa przestrzeni nazw=|nazwa jednostki=Dyskusja Wikibooks:Szablon}}}} * {{Code|{{m|Pudełko|Nazwa przestrzeni nazw 3|nazwa przestrzeni nazw 2{{=}}|nazwa jednostki 2{{=}}Dyskusja Wikibooks:Strona|numer jednostki{{=}}2}}}} → {{Tt|{{#invoke:Pudełko|Nazwa przestrzeni nazw 3|nazwa przestrzeni nazw 2=|nazwa jednostki 2=Dyskusja Wikibooks:Szablon|numer jednostki=2}}}} Powyżej dla przykładu podano parametry nie w rodzicu w szablonie, tylko w dziecku, jeśli chodzi o parametry nazw przestrzeni nazw, ale ich się za to nie powinno podawać w tych ramach, tylko w szablonach, w których wywoływane są te ramki pudełek {{Code|{{m|Pudełko}}}}, ale tak tutaj tak zrobiono by było najłatwiej sprawdzić działanie tego typu funkcji. Analogicznie możemy podawać parametry typu jednostki, np.: wywołaniu modułowym {{Code|{{m|Pudełko|Nazwa przedmiotowej przestrzeni nazw 3|typ jednostki 2{{=}}strona szablonu|numer jednostki{{=}}2}}}}, ale o tym więcej w rozdziałach {{Code|{{sr|# p["Przedmiotowy typ jednostki 3"](frame,i)|p=Pudełko}}}} w „{{sr|#Funkcje typu jednostki|p=Pudełko}}”, ale wtedy ta sama nazwa przestrzeni nazw reprezentowana przez {{Parametr|typ jednostki 2|strona szablonu}}, jest zamieniana na to samo, lepiej jest tutaj używać parametrów przestrzennych nazw niż typu jednostki, bo typ jednostki ma taką samą wartość dla przestrzeni przedmiotowej, co dyskusji. Tutaj parametr dyskusji typu jednostki bazowy i numerkowy ogólny, czy szczegółowy, nie gra roli, bo nawet, gdy wygenerujemy nazwę przestrzeni dyskusji za pomoca tego parametru, to i tak otrzymamy na samym końcu jego nazwę przedmiotową. Jeżeli typ jednostki bazowy wskazuje na przestrzeń nazw główną, wtedy się nie liczą parametry nazw jednostek, a na numerkowy, wtedy się liczy. Również parametry typu jednostki nie powinno się podawać w dziecku w ramce, tylko w rodzicu w szablonie jako parametry, w którym ta ramka jest wywoływana, ale tutaj podano jedynie dla przykładu, jak najłatwiej sprawdzić działanie tych parametrów tej funkcji. Najpierw w funkcji nagłówku brane są parametry nazw przestrzeni nazw, a jeżeli ich nie ma, to parametry typu jednostki, a jeżeli nie ma, to generowane są nazwy na podstawie aktualnego modułu. === {{Code|p["Nazwa przestrzeni nazw dyskusji 3"](frame,i)}} === Funkcja pisze nazwę przestrzeni nazw dyskusji jakikolwiek nazwy przestrzeni nazw (tzn. nazwę dyskusji nazwy przestrzenie nazw, czyli nie przedmiotowej, zamieniana jest na nią samą, czyli identyfikator przestrzeni się nie zmienia, a przedmiotową, nie dyskusji, przekształca się na dyskusji jej odpowiadającą, czyli w tym przypadku identyfikator przestrzeni zwiększa się o numer więcej), według, i nie zawsze tylko, podanej w zmiennej {{Code|nazwa przestrzeni nazw}} dla pozycja bazowej w podanych parametrach szablonu rodzicu ramki dziecka, lub dla innej pozycji należy parametr podawać w formie {{Code|nazwa przestrzeni nazw 1}}, {{Code|nazwa przestrzeni nazw 2}}, {{Code|nazwa przestrzeni nazw 3}},..., lub te parametry można podać w postaci ogólnej {{Code|nazwa przestrzeni nazw i}}. W tej funkcji trzeba też podawać parametry nazwy jednostek {{Code|nazwa jednostki}}, {{Code|nazwa jednostki 1}}, {{Code|nazwa jednostki 2}}, {{Code|nazwa jednostki 3}},... Parametry podaje się w parametrach rodzica wywołania tej funkcji {{Code|{{m|Pudełko|Nazwa przestrzeni nazw dyskusji 3}}}} (ale ich nie trzeba podawać w dziecku, ale można) i w parametrach dziecka, jeśli chodzi o zmienną {{Code|numer jednostki}}, czyli np.: {{Code|{{m|Pudełko|Nazwa przestrzeni nazw dyskusji 3|numer jednostki{{=}}<jakaś liczba całkowita dodatnia>}}}}. Te parametry przestrzenne zamiast w rodzicu w szablonie można podać w ramce dziecka, wtedy parametry dziecka mają pierwszeństwo. Przestrzeń nazw z parametrów nazw przestrzennych bazowych (bez numerka) może odpowiadać wartości przestrzeni głównej, to wtedy odpowiednia przestrzeń nazw z parametru nazwy jednostki się nie liczy w tej funkcji, aby się liczyła należy użyć funkcji {{Code|{{sr|#p["Nazwa przestrzeni nazw dyskusji"](frame,...)|p=Pudełko}}}}. Przestrzeń nazw z parametrów nazw przestrzennych numerkowych może odpowiadać wartości przestrzeni głównej, to wtedy odpowiednia przestrzeń nazw z parametru nazwy jednostki się liczy w tej funkcji, wtedy jest liczona nazwa przestrzeni nazw z tego parametru. Gdy parametry przestrzenne lub typ jednostki w drugim podejściu nie wskazują na przestrzeń główną, to wtedy działanie tej funkcji jest podobne do {{Code|{{sr|#p["Nazwa przestrzeni nazw dysskusji 2"](frame,...)|p=Pudełko}}}}. Definicja skrótowa funkcji: <syntaxhighlight lang="lua"> p["Nazwa przestrzeni nazw dyskusji 3"]=function(frame,czy_uwzglednic_alternatywna_nazwe,i)...end; </syntaxhighlight> Wtedy ciało funkcji tej, czyli jego definicja w środku, jest: <syntaxhighlight lang="lua"> -- Jest liczony numer parametru nazwy przestrzeni nazw, domyslnie chodzi tu o numer bazowy parametrów przestrzennych; local numer_jednostki=i or frame.args["numer jednostki"]; local liczba_numeru_jednostki=((numer_jednostki)and(tonumber(numer_jednostki)) or 0); local pudelko_pomocne_modul=require("Module:Pudełko/Pomocne"); -- Liczy nazwę przestrzeni nazw dyskusji na podstawie podanych parametrów; return pudelko_pomocne_modul.Uzyskanie_nazw_jednostki(frame,2,liczba_numeru_jednostki,nil,1); </syntaxhighlight> Parametry funkcji: * {{Code|frame}} - tablica ramki tablicy transportu, * {{Code|czy_uwzglednic_alternatywna_nazwe}} - czy ma uwzględniać nazwę przestrzeni nazw domyślną szablonu, dostępne wartości: {{Code|false}}, w której nazwa domyślna nie jest uwzględniana wtedy, oraz {{Code|nil}} i {{Code|true}}, które oznaczają to samo, w tym jeżeli ona jest uwzględniana, wtedy jest brany parametr pierwszy dziecka, który musi istnieć przy takiej wartości tego parametru, tzn. {{Code|{{m|Pudełko|Nazwa przestrzeni nazw dyskusji 3|Szablon}}}}, a nazwa uzyskana nazwy przestrzeni nazw jest w takim przypadku błędna, a jeżeli nazwa domyślna jest błędna, czyli {{Code|{{m|Pudełko|Nazwa przestrzeni nazw dyskusji 3|Moja przestrzeń}}}}, wtedy funkcja zwraca stan błędu {{Code|(błąd)}}. * {{Code|i}} - numer zmiennej nazwy przestrzeni nazw. Funkcja wykorzystuje {{Code|{{sr|#p.Uzyskanie_nazw_jednostki(frame,...)|p=Pudełko/Pomocne}}}} do wyznaczania ogólnego nazwy przestrzeni nazw dla pozycji bazowej i numerkowej, tzn. dla pozycji: jeden, dwa, trzy,..., itd, i ich ogólnej. Parametr ramki tablicy transportu rodzica szablonu: * {{Code|nazwa przestrzeni nazw}}, {{Code|nazwa przestrzeni nazw 1}}, {{Code|nazwa przestrzeni nazw 2}}, {{Code|nazwa przestrzeni nazw 3}},..., {{Code|nazwa przestrzeni nazw i}} - nazwy przestrzeni nazw dla pozycji bazowej oraz zwykłej i ogólnej numerkowej, * {{Code|nazwa jednostki}}, {{Code|nazwa jednostki 1}}, {{Code|nazwa jednostki 2}}, {{Code|nazwa jednostki 3}},... - nazwy jednostek dla pozycji bazowej i numerkowej, * {{Code|typ jednostki}}, {{Code|typ jednostki 1}}, {{Code|typ jednostki 2}}, {{Code|typ jednostki 3}},..., {{Code|typ jednostki i}} - typy jednostek, którym odpowiadają pewne przestrzenie przedmiotowe, dla pozycji bazowej, numerkowej i ogólnej. Parametry ramki tablicy transportu dziecka: * Parametry dziecka są takie same jak rodzica dla funkcji pudełkowej plus tu wymienione, * {{Code|numer jednostki}} - jak parametr {{Code|i}} nie został ustawiony, to wtedy liczy się ta zmienna. Przykłady: <syntaxhighlight lang="mediawiki"> {{Nazwa szablonu|nazwa przestrzeni nazw=Wikibooks|nazwa przestrzeni nazw=|nazwa przestrzeni nazw i=|nazwajednostki=Szablon:Strona|nazwa jednostki 2=Wikibooks:Strona}} <hr /> {{Nazwa szablonu|nazwa przestrzeni nazw=Wikibooks|nazwa przestrzeni nazw 1=Szablon|nazwa przestrzeni nazw i=|nazwa jednostki 2=Wikibooks:Strona}} </syntaxhighlight> W dziecku powiedzmy jest wywołanie, i szukamy nazwy przestrzeni nazw o numerze dwa, która została podana, ale istnieje za to jej wersji ogólna {{Code|nazwa przestrzeni nazw i}} i domyślna {{Code|nazwa przestrzeni nazw}}, ale wtedy dla tego numerkowego liczy się to ogólne z {{Code| i}}, a ponieważ ta nazwa jest pusta, więc będziemy liczyli nazwę przestrzeni nazw z {{Code|nazwa jednostki 2}}: <syntaxhighlight lang="mediawiki"> {{#invoke:Pudełko|Nazwa przestrzeni nazw 3}} <hr /> {{#invoke:Pudełko|Nazwa przestrzeni nazw 3|numer jednostki=2}} </syntaxhighlight> Na podstawie powyższego przykładu otrzymamy wynik o schemacie, nie wyniku, bo tam nie ma zmiennej {{Code|nazwa przestrzeni nazw 1}}, ale jest {{Code|nazwa przestrzeni nazw i}}: <syntaxhighlight lang="mediawiki"> <!-- Ale nie "nazwa przestrzeni nazw""; --> <!-- nazwa przestrzeni nazw=""; --> <!-- Czyli wynik: --> Dyskusja <!-- Widzimy, że wygenerowała się nazwa przestrzeni nazw, którą jest przestrzeń nazw główna, jest ciągiem pustym: ""; --> <hr /> <!-- Ale nie "Nazwa przestrzeni nazw 2", bo jej nie ma, ale za to istnieje "nazwa przestrzeni nazw i"; --> <!-- nazwa przestrzeni nazw 2=nazwa przestrzeni nazw i="", a nazwa jednostki 2="Wikibooks:Strona"; --> <!-- Czyli wynik: --> Dyskusja Wikibooks <!-- Widzimy, że wygenerowała się nazwa przestrzeni nazw, którą jest przestrzeń nieprogramowa, ale projektu, wychodząca z nazwy jednostek w tym przypadku z "nazwa jednostki 2"; --> </syntaxhighlight> Nie jest brana w tym powyższym przykładzie zmienna {{Code|nazwa przestrzeni nazw}}, bo jej nie ma, ale za to jest {{Code|nazwa przestrzeni nazw i}}, bo ona występuje jako parametr domyślny ogólny dla parametrów numerkowych. Tytaj jest używana jest zmienna {{Code|nazwa jednostki 2}} do wygenerowania ostatecznego wyniku, bo jak można zauważyć, parametry przestrzenne wskazują na przestrzeń główną, a nazwy jednostek już nie. Przykłady w wikikodzie: * {{Code|{{m|Pudełko|Nazwa przestrzeni nazw dyskusji 3|nazwa przestrzeni nazw{{=}}|nazwa jednostki{{=}}Wikibooks:Strona}}}} → {{Tt|{{#invoke:Pudełko|Nazwa przestrzeni nazw dyskusji 3|nazwa przestrzeni nazw=|nazwa jednostki=Wikibooks:Szablon}}}} * {{Code|{{m|Pudełko|Nazwa przestrzeni nazw dyskusji 3|nazwa przestrzeni nazw 2{{=}}|nazwa jednostki 2{{=}}Wikibooks:Strona|numer jednostki{{=}}2}}}} → {{Tt|{{#invoke:Pudełko|Nazwa przestrzeni nazw dyskusji 3|nazwa przestrzeni nazw 2=|nazwa jednostki 2=Wikibooks:Szablon|numer jednostki=2}}}} Powyżej dla przykładu podano parametry nie w rodzicu w szablonie, tylko w dziecku, jeśli chodzi o parametry nazw przestrzeni nazw i nazw jednostek, ale ich się za to nie powinno podawać w tych ramach, tylko w szablonach, w których wywoływane są te ramki pudełek {{Code|{{m|Pudełko}}}}, ale tak tutaj tak zrobiono by było najłatwiej sprawdzić działanie tego typu funkcji. Analogicznie możemy podawać parametry typu jednostki, np.: wywołaniu modułowym {{Code|{{m|Pudełko|Nazwa przestrzeni nazw dyskusji 3|typ jednostki 2{{=}}Podręcznik|nazwa jednostki 2{{=}}Szablon:Strona|numer jednostki{{=}}2}}}} (ale wtedy jest brana przestrzeń nazw z nazwy jednostki), ale o tym więcej w rozdziałach {{Code|{{sr|# p["Dyskusyjny typ jednostki 3"](frame,i)|p=Pudełko}}}} w „{{sr|#Funkcje typu jednostki|p=Pudełko}}”, on definiuje przestrzenie dyskusji, ale można użyć parametru dyskusji typu jednostki z obojętnie jaką wartością niepustą, czy pustą, czy nawet jej nie podamy, wtedy wyświetli się nazwa przestrzeni nazw dyskusji. Jeżeli typ jednostki bazowy wskazuje na przestrzeń nazw główną, wtedy się nie liczą parametry nazw jednostek, a na numerkowy, wtedy się liczy. Również parametry typu jednostki nie powinno się podawać w dziecku w ramce, tylko w rodzicu w szablonie jako parametry, w którym ta ramka jest wywoływana, ale tutaj podano jedynie dla przykładu, jak najłatwiej sprawdzić działanie tych parametrów tej funkcji. Najpierw w funkcji nagłówku brane są parametry nazw przestrzeni nazw, a jeżeli ich nie ma, to parametry typu jednostki, a jeżeli nie ma lub parametry przestrzenne wskazują na przestrzeń główną, i nie ma nazwy jednostki, to generowane są nazwy tej funkcji na podstawie aktualnej strony. == Funkcje nazw jednostki trzeciej wersji == === {{Code|p["Nazwa jednostki 3"](frame,i)}} === === {{Code|p["Nazwa przedmiotowa jednostki 3"](frame,i)}} === === {{Code|p["Nazwa dyskusji jednostki 3"](frame,i)}} === == Funkcje typu jednostki == === {{Code|p["Typ jednostki"](frame,i)}} === === {{Code|p["Typ jednostki 2"](frame,i)}} === === {{Code|p["Typ jednostki 3"](frame,i)}} === === Funkcje typu jednostki przedmiotowe === ==== {{Code|p["Przedmiotowy typ jednostki"](frame,i)}} ==== ==== {{Code|p["Przedmiotowy typ jednostki 2"](frame,i)}} ==== ==== {{Code|p["Przedmiotowy typ jednostki 3"](frame,i)}} ==== === Fukcje typu jednostki dyskusji === ==== {{Code|p["Dyskusyjny typ jednostki"](frame,i)}} ==== ==== {{Code|p["Dyskusyjny typ jednostki 2"](frame,i)}} ==== ==== {{Code|p["Dyskusyjny typ jednostki 3"](frame,i)}} ==== == Funkcje chech pudełka == === {{Code|p["Cecha pudełka"](frame)}} === === {{Code|p["Przedmiotowa cecha pudełka"](frame)}} === === {{Code|p["Dyskusyjna cecha pudełka"](frame)}} === == Fukcje ogólnego pudełka == === {{Code|p["Ogólne pudełko"](frame)}} === == Funkcje ogólne == === {{Code|p["Tekst pudełka"](frame)}} === == Funkcje błędów pudełka == === {{Code|p["Błędy pudełka"](frame)}} === === {{Code|p["Przedmiotowe błędy pudełka"](frame)}} === === {{Code|p["Dyskusyjne błędy pudełka"](frame)}} === == Funkcje nazw stron == === {{Code|p["Nazwa strony głównej projektu"](frame,i)}} === === {{Code|p["Nazwa strony głównej dla dzieci projektu"](frame,i)}} === == Funkcje kodów == === {{Code|p["Kod języka"](frame,i)}} === === {{Code|p["Kod projektu"](frame,i)}} === === {{Code|p["Klucz projektu"](frame,i)}} === == Funkcje wiki == === {{Code|p["Inny niż język bieżący wiki"](frame)}} === === {{Code|p["Inne niż lokalne wiki"](frame)}} === === {{Code|p["Inne niż bieżące wiki"](frame)}} === == Funkcje typów parametrów, czy podane je == === {{Code|p["Podano parametry nienazwane"](frame)}} === === {{Code|p["Podano parametry numerowane"](frame)}} === === {{Code|p["Podano parametry nazwane"](frame)}} === == Funkcje kodów tego projektu == === {{Code|p["Kod projektu tego projektu"](frame)}} === === {{Code|p["Kod języka tego projektu"](frame)}} === === {{Code|p["Klucz projektu tego projektu"](frame)}} === == Funkcje stron == === {{Code|p["Strona główna tego projektu"](frame)}} === === {{Code|p["Strona główna dla dzieci tego projektu"](frame)}} === == Funkcje nazw stron drugiej wersji == === {{Code|p["Nazwa strony głównej dla dzieci projektu 2"](frame)}} === === {{Code| p["Nazwa strony głównej projektu 2"](frame)}} === {{BrClear}} <noinclude><!-- -->{{ProstaStronaKoniec}}<!-- -->{{Kategoria|Opisy funkcji, w Lua w Scribunto, w modułach}}<!-- --></noinclude> 1dz3tdx6sifyez70rd0r4qw2e8vxb60 540422 540421 2026-04-23T20:01:51Z Persino 2851 /* Funkcje nazw przestrzeni nazw trzeciej wersji */ 540422 wikitext text/x-wiki <noinclude>{{ProstaStronaStart | nagłówek = {{Podrozdział|{{ld2|Pudełko}}|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 pudelko_modul=require("Module:Pudełko"); </syntaxhighlight> dzięki, któremu można wypisywać funkcje należącego do niego. Posługuje się na parametrach pudełkowych {{Parametr|nazwa przestrzeni nazw}} (czy też bez numerka {{Parametr|nazwa przestrzeni nazw i}} dla tego numerowanego) lub te z numerkiem po jednej spacji w nich (ale nie dla tego z końcówką {{Code| i}}) mogą zostać użyte jako parametry szablonu. Moduł {{Code|{{ld2|Pudełko}}}} przedstawia funkcje nazw w oparciu o funkcje nazw {{Code|{{ld2|Nazwy}}}}, generuje on nazwy za pomocą parametrów pudełkowych podanych poniżej. Parametr {{Parametr|nazwa jednostki}} (lub parametr {{Parametr|cel}} dla numerka tego pierwszego, tego alternatywnego), lub te z numerkiem po jednej spacji w nazwie parametru, albo numerowane numerkami {{Code|1}}, {{Code|2}},..., mogą zostać użyte jako parametry szablonu. Parametry określające rodzaj jednostki {{Parametr|typ jednostki}} z {{Parametr|dyskusja typu jednostki}}, itp. w wersjach z numerkiem po jednej spacji w nich mogą zostać użyte jako parametry szablonu. A te tymi numerowanymi liczbami naturalnymi {{Tt|nazwy jednostki}} od jedynki wzwyż poprzez szablon, w którym są one użyte, one też mogą być użyte z dwukropkiem, te numerowane, na samym początku nazwy, wtedy one są traktowane jako pełne nazwy strony, i wtedy one nie zostaną z interpretowane, że do nich trzeba użyć parametr odpowiedni z nazwą przetrzeni nazw z tego numerowanego, czy ogólny, aby utworzyć znów inną pełną nazwę strony dla tego numerka. Zestawienie: * {{Code|nazwa przestrzeni nazw}} i {{Code|nazwa przestrzeni nazw i}} (ogólna nazwa przestrzeni nazw dla wszystkich numerków, i tych numerowanych jednostek) - i to pierwsze z numerkiem, tzn. {{Code|nazwa przestrzeni nazw 1}}, {{Code|nazwa przestrzeni nazw 2}}, ..., * {{Code|nazwa jednostki}} - i te z numerkiem: {{Code|nazwa jednostki 1}}, {{Code|nazwa jednostki 2}}, ..., lub gdy jest zamiast tego parametrem numerowany, {{Code|1}}, {{Code|2}},..., który dla tego pierwszego może być uznany jako: {{Code|cel}} {{=}} {{Code|1}}, * {{Code|typ jednostki}} (parametr bazowy) i {{Code|typ jednostki i}} (parametr domyślny numerkowy) - i te z numerkiem: {{Code|typ jednostki 1}}, {{Code|typ jednostki 2}}, ..., tzn. gdy chcemy określić z jakim typem jednostki mamy do czynienia w zależności do jakiej przestrzeni nazw należy, a w danej, czy jest on np. programowy, czy tylko jest opisem, jak to bywa w szablonach {{Np|Template|link=tak}}, podobnie jest w przypadku {{Np|Module|link=tak}}, czy jak jest w innych przestrzeniach nazw, ** {{Code|dyskusja typu jednostki}} (parametr bazowy) i {{Code|dyskusja typu jednostki i}} (parametr domyślny numerkowy) - i te z numerkiem: {{Code|dyskusja typu jednostki 1}}, {{Code|dyskusja typu jednostki 2}}, ..., gdy chcemy określić wartością niepustą,że chodzi tutaj o typ jednostki. == {{Code|p.CzyNiepoprawnaNazwa(nazwa_jednostki)}} == Funkcja sprawdzajaca, czy jest poprawnie podana nazwa jednostki, czy ma poprawną nazwę. Znakami tymi, z których nie powinna składać się nazwa jest {{Code|<nowiki>{}<>|[]#\n</nowiki>}} i dodatkowo znak {{Code|&#127;}} (kod {{Code|{{Nowiki|&#127;}}}}). Też nie może składać się z trzech znaków tyldy, tzn. {{Code|<nowiki>~~~</nowiki>}}. Również w swojej budowie nie może składać się ze kodów {{Strong|HTML}} literowych o wzorze {{Code|{{Nowiki|&(%a+);}}}}. Natomiast może składać się z {{Code|{{Nowiki|&#(%d+);}}}} i {{Code|{{Nowiki|&#x(%x+);}}}}, ale w pierw te kody muszą być zamienione na normalne znaki. Skrótowa definicja funkcji: <syntaxhighlight lang="lua"> function p.CzyNiepoprawnaNazwa(nazwa_jednostki)...end; </syntaxhighlight> Wtedy ciało funkcji tej, czyli jego definicja w środku, jest: <syntaxhighlight lang="lua"> -- Moduł: "Moduł:Html/dane", służy do ładowania znaku o kodzie HTML "&#127;"; local html_dane_modul=mw.loadData("Module:Html/dane"); return mw.ustring.match(nazwa_jednostki,"[{}<>|%[%]#\n"..html_dane_modul.znak_127.."]+") or mw.ustring.match(nazwa_jednostki,"~~~") or mw.ustring.match(nazwa_jednostki,"&(%a+);"); </syntaxhighlight> Parametry: * {{Code|nazwa_jednostki}} - nazwa jednostki do sprawdzenia. Przykłady: <syntaxhighlight lang="lua"> local pudelko_modul=require("Module:Pudełko"); -- Podana przykładowa niepoprawna nazwa jedostki local nazwa_jednostki="Nazwa pliku [[Nazwa linku w pliku]]"; -- Fukcja zwróci wartość: local czy_poprawna_nazwa=true; local czy_poprawna_nazwa=pudelko_modul.CzyNiepoprawnaNazwa(nazwa_jednostki); </syntaxhighlight> == Funkcje nazw przestrzeni nazw == === {{Code|p["Nazwa przestrzeni nazw"](frame,...)}} === Funkcja pisze nazwę przestrzeni nazw, niezależnie, czy to jest przedmiotowa, czy dyskusji, według podanej w zmiennej {{Code|nazwa przestrzeni nazw}} dla pozycja bazowej w podanych parametrach szablonu rodzicu ramki dziecka, lub dla innej pozycji należy parametr podawać w formie {{Code|nazwa przestrzeni nazw 1}}, {{Code|nazwa przestrzeni nazw 2}}, {{Code|nazwa przestrzeni nazw 3}},..., lub te parametry można podać w postaci ogólnej {{Code|nazwa przestrzeni nazw i}}. Parametry podaje się w parametrach rodzica wywołania tej funkcji {{Code|{{m|Pudełko|Nazwa przestrzeni nazw}}}} (ale ich nie trzeba podawać w dziecku, ale można) i w parametrach dziecka, jeśli chodzi o zmienną {{Code|numer jednostki}}, czyli np.: {{Code|{{m|Pudełko|Nazwa przestrzeni nazw|numer jednostki{{=}}<jakaś liczba całkowita dodatnia>}}}}. Te parametry przestrzenne zamiast w rodzicu w szablonie można podać w ramce dziecka, wtedy parametry dziecka mają pierwszeństwo. Przestrzeń nazw z parametrów nazw przestrzennych może odpowiadać wartości przestrzeni głównej, to wtedy odpowiednia przestrzeń nazw z parametru nazwy jednostki się nie liczy w tej funkcji, aby się liczyła należy użyć funkcji {{Code|{{sr|#p["Nazwa przestrzeni nazw 2"](frame,...)|p=Pudełko}}}}. Definicja skrótowa funkcji: <syntaxhighlight lang="lua"> p["Nazwa przestrzeni nazw"]=function(frame,czy_uwzglednic_alternatywna_nazwe,i)...end; </syntaxhighlight> Wtedy ciało funkcji tej, czyli jego definicja w środku, jest: <syntaxhighlight lang="lua"> -- Jest liczony numer parametru nazwy przestrzeni nazw, domyslnie chodzi tu o numer bazowy parametrów przestrzennych; local numer_jednostki=i or frame.args["numer jednostki"]; local liczba_numer_jednostki=((numer_jednostki)and(tonumber(numer_jednostki))or 0); local pudelko_pomocne_modul=require("Module:Pudełko/Pomocne"); -- Liczy nazwę przestrzeni nazw na podstawie podanych parametrów; return pudelko_pomocne_modul.Nazwa_przestrzeni_nazw(frame,0, czy_uwzglednic_alternatywna_nazwe,liczba_numer_jednostki); </syntaxhighlight> Parametry funkcji: * {{Code|frame}} - tablica ramki tablicy transportu, * {{Code|czy_uwzglednic_alternatywna_nazwe}} - czy ma uwzględniać nazwę przestrzeni nazw domyślną szablonu, dostępne wartości: {{Code|false}}, w której nazwa domyślna nie jest uwzględniana wtedy, oraz {{Code|nil}} i {{Code|true}}, które oznaczają to samo, w tym jeżeli ona jest uwzględniana, wtedy jest brany parametr pierwszy dziecka, który musi istnieć przy takiej wartości tego parametru, tzn. {{Code|{{m|Pudełko|Nazwa przestrzeni nazw|Szablon}}}}, a nazwa uzyskana nazwy przestrzeni nazw jest w takim przypadku błędna, a jeżeli nazwa domyślna jest błędna, czyli {{Code|{{m|Pudełko|Nazwa przestrzeni nazw|Moja przestrzeń}}}}, wtedy funkcja zwraca stan błędu {{Code|(błąd)}}. * {{Code|i}} - numer zmiennej nazwy przestrzeni nazw. Funkcja wykorzystuje {{Code|{{sr|#p.Nazwa_przestrzeni_nazw(frame,...)|p=Pudełko/Pomocne}}}} do wyznaczania ogólnego nazwy przestrzeni nazw dla pozycji bazowej i numerkowej, tzn. dla pozycji: jeden, dwa, trzy,..., itd, i ich ogólnej. Parametr ramki tablicy transportu rodzica szablonu: * {{Code|nazwa przestrzeni nazw}}, {{Code|nazwa przestrzeni nazw 1}}, {{Code|nazwa przestrzeni nazw 2}}, {{Code|nazwa przestrzeni nazw 3}},..., {{Code|nazwa przestrzeni nazw i}} - nazwy przestrzeni nazw dla pozycji bazowej oraz zwykłej i ogólnej numerkowej, * {{Code|typ jednostki}}, {{Code|typ jednostki 1}}, {{Code|typ jednostki 2}}, {{Code|typ jednostki 3}},..., {{Code|typ jednostki i}} - typy jednostek, którym odpowiadają pewne przestrzenie przedmiotowe, dla pozycji bazowej, numerkowej i ogólnej, ** {{Code|dyskusja typu jednostki}}, {{Code|dyskusja typu jednostki 1}}, {{Code|dyskusja typ jednostki 2}}, {{Code|dyskusja typ jednostki 3}},..., {{Code|dyskusja typ jednostki i}} - czy dany typ jednostki ma przedstawiać, jeśli niepusta, przestrzeń dyskusji dla pozycji bazowej, numerkowej i ogólnej. Parametry ramki tablicy transportu dziecka: * Parametry dziecka są takie same jak rodzica dla funkcji pudełkowej plus tu wymienione, * {{Code|numer jednostki}} - jak parametr {{Code|i}} nie został ustawiony, to wtedy liczy się ta zmienna. Przykłady: <syntaxhighlight lang="mediawiki"> {{Nazwa szablonu|nazwa przestrzeni nazw=Wikibooks|nazwa przestrzeni nazw 2=Szablon|nazwa przestrzeni nazw i=Moduł}} </syntaxhighlight> W dziecku powiedzmy jest wywołanie, i szukamy nazwy przestrzeni nazw o numerze dwa, która nie została podana, ale istnieje za to jej wersji ogólna {{Code|nazwa przestrzeni nazw i}} i domyślna {{Code|nazwa przestrzeni nazw}}: <syntaxhighlight lang="mediawiki"> {{#invoke:Pudełko|Nazwa przestrzeni nazw|numer jednostki=1}} </syntaxhighlight> Na podstawie powyższego przykładu otrzymamy wynik o schemacie, nie wyniku, bo tam nie ma zmiennej {{Code|nazwa przestrzeni nazw 1}}, ale jest {{Code|nazwa przestrzeni nazw i}}: <syntaxhighlight lang="mediawiki"> <!-- Ale nie "nazwa przestrzeni nazw", bo jej nie ma, ale za to istnieje "nazwa przestrzeni nazw i"; --> <!-- nazwa przestrzeni nazw 2=nazwa przestrzeni nazw i=Moduł; --> <!-- Czyli wynik: --> Moduł <!-- Widzimy, że wygenerowała się nazwa przestrzeni nazw, którą jest przestrzeń programowa, którą również jest "Szablon"; --> </syntaxhighlight> Nie jest brana w tym powyższym przykładzie zmienna {{Code|nazwa przestrzeni nazw}}, bo jej nie ma, ale za to jest {{Code|nazwa przestrzeni nazw i}}, bo ona występuje jako parametr domyślny ogólny dla parametrów numerkowych. Przykłady w wikikodzie: * {{Code|{{m|Pudełko|Nazwa przestrzeni nazw|numer jednostki{{=}}2}}}} → {{Tt|{{#invoke:Pudełko|Nazwa przestrzeni nazw|numer jednostki=2}}}} * {{Code|{{m|Pudełko|Nazwa przestrzeni nazw|Szablon|nazwa przestrzeni nazw i{{=}}Moja przestrzeń|numer jednostki{{=}}2}}}} → {{Tt|{{#invoke:Pudełko|Nazwa przestrzeni nazw|Szablon|nazwa przestrzeni nazw i=Moja przestrzeń|numer jednostki=2}}}} * {{Code|{{m|Pudełko|Nazwa przestrzeni nazw|nazwa przestrzeni nazw 2{{=}}Szablon|numer jednostki{{=}}2}}}} → {{Tt|{{#invoke:Pudełko|Nazwa przestrzeni nazw|nazwa przestrzeni nazw 2=Szablon|numer jednostki=2}}}} * {{Code|{{m|Pudełko|Nazwa przestrzeni nazw|nazwa przestrzeni nazw 2{{=}}Szablon|numer jednostki{{=}}2}}}} → {{Tt|{{#invoke:Pudełko|Nazwa przestrzeni nazw|nazwa przestrzeni nazw i=Szablon|numer jednostki=2}}}} * {{Code|{{m|Pudełko|Nazwa przestrzeni nazw|nazwa przestrzeni nazw{{=}}Szablon|numer jednostki{{=}}2}}}} → {{Tt|{{#invoke:Pudełko|Nazwa przestrzeni nazw|nazwa przestrzeni nazw=Szablon|numer jednostki=2}}}} Powyżej dla przykładu podano parametry nie w rodzicu w szablonie, tylko w dziecku, jeśli chodzi o parametry nazw przestrzeni nazw, ale ich się za to nie powinno podawać w tych ramach, tylko w szablonach, w których wywoływane są te ramki pudełek {{Code|{{m|Pudełko}}}}, ale tak tutaj tak zrobiono by było najłatwiej sprawdzić działanie tego typu funkcji. Analogicznie możemy podawać parametry typu jednostki, np.: wywołaniu modułowym {{Code|{{m|Pudełko|Nazwa przestrzeni nazw|typ jednostki 2{{=}}strona szablonu|numer jednostki{{=}}2}}}}, ale o tym więcej w rozdziałach {{Code|{{sr|# p["Typ jednostki"](frame,i)|p=Pudełko}}}} w „{{sr|#Funkcje typu jednostki|p=Pudełko}}”, on definiuje przestrzenie przedmiotowe, ale można użyć parametru dyskusji typu jednostki z wartością niepustą, wtedy wyświetli się nazwa przestrzeni nazw dyskusji. Również parametry typu jednostki nie powinno się podawać w dziecku w ramce, tylko w rodzicu w szablonie jako parametry, w którym ta ramka jest wywoływana, ale tutaj podano jedynie dla przykładu, jak najłatwiej sprawdzić działanie tych parametrów tej funkcji. Najpierw w funkcji nagłówku brane są parametry nazw przestrzeni nazw, a jeżeli ich nie ma, to parametry typu jednostki, a jeżeli nie ma, to generowane są nazwy na podstawie aktualnego modułu. === {{Code|p["Nazwa przedmiotowej przestrzeni nazw"](frame,...)}} === Funkcja pisze przedmiotową nazwę przestrzeni nazw jakikolwiek nazwy przestrzeni nazw (tzn. nazwę przedmiotową nazwy przestrzenie nazw, czyli nie dyskusji, zamieniana jest na nią samą, czyli identyfikator przestrzeni się nie zmienia, a dyskusji, nie przedmiotową, przekształca się na przedmiotową jej odpowiadającą, czyli w tym przypadku identyfikator przestrzeni zmniejsza się o numer mniej), według podanej w zmiennej {{Code|nazwa przestrzeni nazw}} dla pozycja bazowej w podanych parametrach szablonu rodzicu ramki dziecka, lub dla innej pozycji należy parametr podawać w formie {{Code|nazwa przestrzeni nazw 1}}, {{Code|nazwa przestrzeni nazw 2}}, {{Code|nazwa przestrzeni nazw 3}},..., lub te parametry można podać w postaci ogólnej {{Code|nazwa przestrzeni nazw i}}. Parametry podaje się w parametrach rodzica wywołania tej funkcji {{Code|{{m|Pudełko|Nazwa przedmiotowej przestrzeni nazw}}}} (ale ich nie trzeba podawać w dziecku, ale można) i w parametrach dziecka, jeśli chodzi o zmienną {{Code|numer jednostki}}, czyli np.: {{Code|{{m|Pudełko|Nazwa przedmiotowej przestrzeni nazw|numer jednostki{{=}}<jakaś liczba całkowita dodatnia>}}}}. Te parametry przestrzenne zamiast w rodzicu w szablonie można podać w ramce dziecka, wtedy parametry dziecka mają pierwszeństwo. Parametry przestrzenne mogą mogą być podane w postaci przestrzeni przedmiotowej lub dyskusji, ale ta funkcja zawsze ją zamienia na przedmiotową. Przestrzeń nazw z parametrów nazw przestrzennych może odpowiadać wartości przestrzeni głównej, to wtedy odpowiednia przestrzeń nazw z parametru nazwy jednostki się nie liczy w tej funkcji, aby się liczyła należy użyć funkcji {{Code|{{sr|#p["Nazwa przedmiotowej przestrzeni nazw 2"](frame,...)|p=Pudełko}}}}. Definicja skrótowa funkcji: <syntaxhighlight lang="lua"> p["Nazwa przedmiotowej przestrzeni nazw"]=function(frame,czy_uwzglednic_alternatywna_nazwe,i)...end; </syntaxhighlight> Wtedy ciało funkcji tej, czyli jego definicja w środku, jest: <syntaxhighlight lang="lua"> -- Jest liczony numer parametru nazwy przestrzeni nazw, domyslnie chodzi tu o numer bazowy parametrów przestrzennych; local numer_jednostki=i or frame.args["numer jednostki"]; local liczba_numer_jednostki=((numer_jednostki)and(tonumber(numer_jednostki))or 0); local pudelko_pomocne_modul=require("Module:Pudełko/Pomocne"); -- Liczy nazwę przestrzeni nazw przedmiotową na podstawie podanych parametrów; return pudelko_pomocne_modul.Nazwa_przestrzeni_nazw(frame,1, czy_uwzglednic_alternatywna_nazwe,liczba_numer_jednostki); </syntaxhighlight> Parametry funkcji: * {{Code|frame}} - tablica ramki tablicy transportu, * {{Code|czy_uwzglednic_alternatywna_nazwe}} - czy ma uwzględniać nazwę przestrzeni nazw domyślną szablonu, dostępne wartości: {{Code|false}}, w której nazwa domyślna nie jest uwzględniana wtedy, oraz {{Code|nil}} i {{Code|true}}, które oznaczają to samo, w tym jeżeli ona jest uwzględniana, wtedy jest brany parametr pierwszy dziecka, który musi istnieć przy takiej wartości tego parametru, tzn. {{Code|{{m|Pudełko|Nazwa przedmiotowej przestrzeni nazw|Dyskusja szablonu}}}} - ta nazwa domyślna zostanie zamieniona na przedmiotową, a jak ona by była przedmiotowa, to żadnej zamiany by nie było, a nazwa uzyskana z nazwy przestrzeni nazw z parametrów przestrzennych jest w takim przypadku błędna, to w takim razie brany jest ten parametr, a jeżeli ta nazwa domyślna jest błędna, czyli {{Code|{{m|Pudełko|Nazwa przedmiotowej przestrzeni nazw|Moja przestrzeń}}}}, wtedy funkcja zwraca stan błędu {{Code|(błąd)}}. * {{Code|i}} - numer zmiennej nazwy przestrzeni nazw. Funkcja wykorzystuje {{Code|{{sr|#p.Nazwa_przestrzeni_nazw(frame,...)|p=Pudełko/Pomocne}}}} do wyznaczania ogólnego nazwy przestrzeni nazw dla pozycji bazowej i numerkowej, tzn. dla pozycji: jeden, dwa, trzy,..., itd, i ich ogólnej. Parametr ramki tablicy transportu rodzica szablonu: * {{Code|nazwa przestrzeni nazw}}, {{Code|nazwa przestrzeni nazw 1}}, {{Code|nazwa przestrzeni nazw 2}}, {{Code|nazwa przestrzeni nazw 3}},..., {{Code|nazwa przestrzeni nazw i}} - nazwy przestrzeni nazw dla pozycji bazowej oraz zwykłej i ogólnej numerkowej, * {{Code|typ jednostki}}, {{Code|typ jednostki 1}}, {{Code|typ jednostki 2}}, {{Code|typ jednostki 3}},..., {{Code|typ jednostki i}} - typy jednostek, którym odpowiadają pewne przestrzenie przedmiotowe, dla pozycji bazowej, numerkowej i ogólnej. Parametry ramki tablicy transportu dziecka: * Parametry dziecka są takie same jak rodzica dla funkcji pudełkowej plus tu wymienione, * {{Code|numer jednostki}} - jak parametr {{Code|i}} nie został ustawiony, to wtedy liczy się ta zmienna. Przykłady: <syntaxhighlight lang="mediawiki"> {{Nazwa szablonu|nazwa przestrzeni nazw=Dyskusja Wikibooks|nazwa przestrzeni nazw 2=Dyskusja szablonu|nazwa przestrzeni nazw i=Dyskusja modułu}} </syntaxhighlight> W dziecku powiedzmy jest wywołanie, i szukamy nazwy przestrzeni nazw o numerze dwa, która nie została podana, ale istnieje za to jej wersji ogólna {{Code|nazwa przestrzeni nazw i}} i domyślna {{Code|nazwa przestrzeni nazw}}: <syntaxhighlight lang="mediawiki"> {{#invoke:Pudełko|Nazwa przedmiotowej przestrzeni nazw|numer jednostki=1}} </syntaxhighlight> Na podstawie powyższego przykładu otrzymamy wynik o schemacie, nie wyniku, bo tam nie ma zmiennej {{Code|nazwa przestrzeni nazw 1}}, ale jest {{Code|nazwa przestrzeni nazw i}}: <syntaxhighlight lang="mediawiki"> <!-- Ale nie "nazwa przestrzeni nazw", bo jej nie ma, ale za to istnieje "nazwa przestrzeni nazw i"; --> <!-- nazwa przestrzeni nazw 2=nazwa przestrzeni nazw i=Dyskusja modułu; --> <!-- Czyli wynik: --> Moduł <!-- Widzimy, że wygenerowała się nazwa przestrzeni nazw, którą jest przestrzeń przedmiotowa programowa przestrzeni dyskusji "Dyskusja modułu", którą również jest "Szablon" jego przestrzeni dyskusji "Dyskusja szablonu", a dla ich przestrzeni przedmiotowej, zamiast dyskusji, to samo przekształca się na to samo; --> </syntaxhighlight> Nie jest brana w tym powyższym przykładzie zmienna {{Code|nazwa przestrzeni nazw}}, bo jej nie ma, ale za to jest {{Code|nazwa przestrzeni nazw i}}, bo ona występuje jako parametr domyślny ogólny dla parametrów numerkowych. Przykłady w wikikodzie: * {{Code|{{m|Pudełko|Nazwa przedmiotowej przestrzeni nazw|numer jednostki{{=}}2}}}} → {{Tt|{{#invoke:Pudełko|Nazwa przedmiotowej przestrzeni nazw|numer jednostki=2}}}} * {{Code|{{m|Pudełko|Nazwa przedmiotowej przestrzeni nazw|Dyskusja szablonu|nazwa przestrzeni nazw i{{=}}Moja przestrzeń|numer jednostki{{=}}2}}}} → {{Tt|{{#invoke:Pudełko|Nazwa przedmiotowej przestrzeni nazw|Dyskusja szablonu|nazwa przestrzeni nazw i=Moja przestrzeń|numer jednostki=2}}}} * {{Code|{{m|Pudełko|Nazwa przedmiotowej przestrzeni nazw|nazwa przestrzeni nazw 2{{=}}Dyskusja szablonu|numer jednostki{{=}}2}}}} → {{Tt|{{#invoke:Pudełko|Nazwa przedmiotowej przestrzeni nazw|nazwa przestrzeni nazw 2=Dyskusja szablonu|numer jednostki=2}}}} * {{Code|{{m|Pudełko|Nazwa przedmiotowej przestrzeni nazw|nazwa przestrzeni nazw 2{{=}}Dyskusja szablonu|numer jednostki{{=}}2}}}} → {{Tt|{{#invoke:Pudełko|Nazwa przedmiotowej przestrzeni nazw|nazwa przestrzeni nazw i=Dyskusja szablonu|numer jednostki=2}}}} * {{Code|{{m|Pudełko|Nazwa przedmiotowej przestrzeni nazw|nazwa przestrzeni nazw{{=}}Dyskusja szablonu|numer jednostki{{=}}2}}}} → {{Tt|{{#invoke:Pudełko|Nazwa przedmiotowej przestrzeni nazw|nazwa przestrzeni nazw=Dyskusja szablonu|numer jednostki=2}}}} Powyżej dla przykładu podano parametry nie w rodzicu w szablonie, tylko w dziecku, jeśli chodzi o parametry nazw przestrzeni nazw, ale ich się za to nie powinno podawać w tych ramach, tylko w szablonach, w których wywoływane są te ramki pudełek {{Code|{{m|Pudełko}}}}, ale tak tutaj tak zrobiono by było najłatwiej sprawdzić działanie tego typu funkcji. Analogicznie możemy podawać parametry typu jednostki, np.: wywołaniu modułowym {{Code|{{m|Pudełko|Nazwa przedmiotowej przestrzeni nazw|typ jednostki 2{{=}}strona szablonu|numer jednostki{{=}}2}}}}, ale o tym więcej w rozdziałach {{Code|{{sr|# p["Przedmiotowy typ jednostki"](frame,i)|p=Pudełko}}}} w „{{sr|#Funkcje typu jednostki|p=Pudełko}}”, ale wtedy ta sama nazwa przestrzeni nazw reprezentowana przez {{Parametr|typ jednostki 2|strona szablonu}}, jest zamieniana na to samo, lepiej jest tutaj używać parametrów przestrzennych nazw niż typu jednostki, bo typ jednostki ma taką samą wartość dla przestrzeni przedmiotowej, co dyskusji. Tutaj parametr dyskusji typu jednostki bazowy i numerkowy ogólny, czy szczegółowy, nie gra roli, bo nawet, gdy wygenerujemy nazwę przestrzeni dyskusji za pomoca tego parametru, to i tak otrzymamy na samym końcu jego nazwę przedmiotową. Również parametry typu jednostki nie powinno się podawać w dziecku w ramce, tylko w rodzicu w szablonie jako parametry, w którym ta ramka jest wywoływana, ale tutaj podano jedynie dla przykładu, jak najłatwiej sprawdzić działanie tych parametrów tej funkcji. Najpierw w funkcji nagłówku brane są parametry nazw przestrzeni nazw, a jeżeli ich nie ma, to parametry typu jednostki, a jeżeli nie ma, to generowane są nazwy na podstawie aktualnego modułu. === {{Code|p["Nazwa przestrzeni nazw dyskusji"](frame,...)}} === Funkcja pisze nazwę przestrzeni nazw dyskusji jakikolwiek nazwy przestrzeni nazw (tzn. nazwę przedmiotową nazwy przestrzenie nazw, czyli nie dyskusji, zamieniana jest na dyskusji, czyli identyfikator przestrzeni się zmienia jeden wyżej, a dyskusji, nie przedmiotową, przekształca się na tą samą), według podanej w zmiennej {{Code|nazwa przestrzeni nazw}} dla pozycja bazowej w podanych parametrach szablonu rodzicu ramki dziecka, lub dla innej pozycji należy parametr podawać w formie {{Code|nazwa przestrzeni nazw 1}}, {{Code|nazwa przestrzeni nazw 2}}, {{Code|nazwa przestrzeni nazw 3}},..., lub te parametry można podać w postaci ogólnej {{Code|nazwa przestrzeni nazw i}}. Parametry podaje się w parametrach rodzica wywołania tej funkcji {{Code|{{m|Pudełko|Nazwa przestrzeni nazw dyskusji}}}} (ale ich nie trzeba podawać w dziecku, ale można) i w parametrach dziecka, jeśli chodzi o zmienną {{Code|numer jednostki}}, czyli np.: {{Code|{{m|Pudełko|Nazwa przestrzeni nazw dyskusji|numer jednostki{{=}}<jakaś liczba całkowita dodatnia>}}}}. Te parametry przestrzenne zamiast w rodzicu w szablonie można podać w ramce dziecka, wtedy parametry dziecka mają pierwszeństwo. Parametry przestrzenne mogą mogą być podane w postaci przestrzeni przedmiotowej lub dyskusji, ale ta funkcja zawsze ją zamienia na dyskusji. Przestrzeń nazw z parametrów nazw przestrzennych może odpowiadać wartości przestrzeni głównej, to wtedy odpowiednia przestrzeń nazw z parametru nazwy jednostki się nie liczy w tej funkcji, aby się liczyła należy użyć funkcji {{Code|{{sr|#p["Nazwa przestrzeni nazw dyskusji 2"](frame,...)|p=Pudełko}}}}. Definicja skrótowa funkcji: <syntaxhighlight lang="lua"> p["Nazwa przestrzeni nazw dyskusji"]=function(frame,czy_uwzglednic_alternatywna_nazwe,i)...end; </syntaxhighlight> Wtedy ciało funkcji tej, czyli jego definicja w środku, jest: <syntaxhighlight lang="lua"> -- Jest liczony numer parametru nazwy przestrzeni nazw, domyslnie chodzi tu o numer bazowy parametrów przestrzennych; local numer_jednostki=i or frame.args["numer jednostki"]; local liczba_numer_jednostki=((numer_jednostki)and(tonumber(numer_jednostki))or 0); local pudelko_pomocne_modul=require("Module:Pudełko/Pomocne"); -- Liczy nazwę przestrzeni nazw dyskusji na podstawie podanych parametrów; return pudelko_pomocne_modul.Nazwa_przestrzeni_nazw(frame,2, czy_uwzglednic_alternatywna_nazwe,liczba_numer_jednostki); </syntaxhighlight> Parametry funkcji: * {{Code|frame}} - tablica ramki tablicy transportu, * {{Code|czy_uwzglednic_alternatywna_nazwe}} - czy ma uwzględniać nazwę przestrzeni nazw domyślną szablonu, dostępne wartości: {{Code|false}}, w której nazwa domyślna nie jest uwzględniana wtedy, oraz {{Code|nil}} i {{Code|true}}, które oznaczają to samo, w tym jeżeli ona jest uwzględniana, wtedy jest brany parametr pierwszy dziecka, który musi istnieć przy takiej wartości tego parametru, tzn. {{Code|{{m|Pudełko|Nazwa przestrzeni nazw dyskusji|Szablon}}}} - ta nazwa domyślna zostanie przekształcona na dyskusji, a jeżeli ona by była dyskusji, to nie byłoby żadnego przekształcenia, a nazwa uzyskana nazwy przestrzeni nazw z parametrów przestrzennych jest w takim przypadku błędna, to w takim razie brany jest ten parametr, a jeżeli nazwa domyślna jest błędna, czyli {{Code|{{m|Pudełko|Nazwa przestrzeni nazw dyskusji|Moja przestrzeń}}}}, wtedy funkcja zwraca stan błędu {{Code|(błąd)}}. * {{Code|i}} - numer zmiennej nazwy przestrzeni nazw. Funkcja wykorzystuje {{Code|{{sr|#p.Nazwa_przestrzeni_nazw(frame,...)|p=Pudełko/Pomocne}}}} do wyznaczania ogólnego nazwy przestrzeni nazw dla pozycji bazowej i numerkowej, tzn. dla pozycji: jeden, dwa, trzy,..., itd, i ich ogólnej. Parametr ramki tablicy transportu rodzica szablonu: * {{Code|nazwa przestrzeni nazw}}, {{Code|nazwa przestrzeni nazw 1}}, {{Code|nazwa przestrzeni nazw 2}}, {{Code|nazwa przestrzeni nazw 3}},..., {{Code|nazwa przestrzeni nazw i}} - nazwy przestrzeni nazw dla pozycji bazowej oraz zwykłej i ogólnej numerkowej, * {{Code|typ jednostki}}, {{Code|typ jednostki 1}}, {{Code|typ jednostki 2}}, {{Code|typ jednostki 3}},..., {{Code|typ jednostki i}} - typy jednostek, którym odpowiadają pewne przestrzenie przedmiotowe, dla pozycji bazowej, numerkowej i ogólnej. Parametry ramki tablicy transportu dziecka: * Parametry dziecka są takie same jak rodzica dla funkcji pudełkowej plus tu wymienione, * {{Code|numer jednostki}} - jak parametr {{Code|i}} nie został ustawiony, to wtedy liczy się ta zmienna. Przykłady: <syntaxhighlight lang="mediawiki"> {{Nazwa szablonu|nazwa przestrzeni nazw=Wikibooks|nazwa przestrzeni nazw 2=Szablon|nazwa przestrzeni nazw i=Moduł}} </syntaxhighlight> W dziecku powiedzmy jest wywołanie, i szukamy nazwy przestrzeni nazw o numerze dwa, która nie została podana, ale istnieje za to jej wersji ogólna {{Code|nazwa przestrzeni nazw i}} i domyślna {{Code|nazwa przestrzeni nazw}}: <syntaxhighlight lang="mediawiki"> {{#invoke:Pudełko|Nazwa przestrzeni nazw dyskusji|numer jednostki=1}} </syntaxhighlight> Na podstawie powyższego przykładu otrzymamy wynik o schemacie, nie wyniku, bo tam nie ma zmiennej {{Code|nazwa przestrzeni nazw 1}}, ale jest {{Code|nazwa przestrzeni nazw i}}: <syntaxhighlight lang="mediawiki"> <!-- Ale nie "nazwa przestrzeni nazw", bo jej nie ma, ale za to istnieje "nazwa przestrzeni nazw i"; --> <!-- nazwa przestrzeni nazw 2=nazwa przestrzeni nazw i=Moduł; --> <!-- Czyli wynik: --> Dyskusja modułu <!-- Widzimy, że wygenerowała się nazwa przestrzeni nazw, którą jest przestrzeń dyskusji przestrzeni programowej przestrzeni przedmiotowej "Moduł", którą również jest "Szablon" jego przestrzeni dyskusji "Dyskusja szablonu", a dla ich przestrzeni przedmiotowej, zamiast dyskusji, to przekształca się na dyskusji jej odpowiadającą; --> </syntaxhighlight> Nie jest brana w tym powyższym przykładzie zmienna {{Code|nazwa przestrzeni nazw}}, bo jej nie ma, ale za to jest {{Code|nazwa przestrzeni nazw i}}, bo ona występuje jako parametr domyślny ogólny dla parametrów numerkowych. Przykłady w wikikodzie: * {{Code|{{m|Pudełko|Nazwa przestrzeni nazw dyskusji|numer jednostki{{=}}2}}}} → {{Tt|{{#invoke:Pudełko|Nazwa przestrzeni nazw dyskusji|numer jednostki=2}}}} * {{Code|{{m|Pudełko|Nazwa przestrzeni nazw dyskusji|Szablon|nazwa przestrzeni nazw i{{=}}Moja przestrzeń|numer jednostki{{=}}2}}}} → {{Tt|{{#invoke:Pudełko|Nazwa przestrzeni nazw dyskusji|Szablon|nazwa przestrzeni nazw i=Moja przestrzeń|numer jednostki=2}}}} * {{Code|{{m|Pudełko|Nazwa przestrzeni nazw dyskusji|nazwa przestrzeni nazw 2{{=}}Szablon|numer jednostki{{=}}2}}}} → {{Tt|{{#invoke:Pudełko|Nazwa przestrzeni nazw dyskusji|nazwa przestrzeni nazw 2=Szablon|numer jednostki=2}}}} * {{Code|{{m|Pudełko|Nazwa przestrzeni nazw dyskusji|nazwa przestrzeni nazw 2{{=}}Szablon|numer jednostki{{=}}2}}}} → {{Tt|{{#invoke:Pudełko|Nazwa przestrzeni nazw dyskusji|nazwa przestrzeni nazw i=Szablon|numer jednostki=2}}}} * {{Code|{{m|Pudełko|Nazwa przestrzeni nazw dyskusji|nazwa przestrzeni nazw{{=}}Szablon|numer jednostki{{=}}2}}}} → {{Tt|{{#invoke:Pudełko|Nazwa przestrzeni nazw dyskusji|nazwa przestrzeni nazw=Szablon|numer jednostki=2}}}} Powyżej dla przykładu podano parametry nie w rodzicu w szablonie, tylko w dziecku, jeśli chodzi o parametry nazw przestrzeni nazw, ale ich się za to nie powinno podawać w tych ramach, tylko w szablonach, w których wywoływane są te ramki pudełek {{Code|{{m|Pudełko}}}}, ale tak tutaj tak zrobiono by było najłatwiej sprawdzić działanie tego typu funkcji. Analogicznie możemy podawać parametry typu jednostki, np.: wywołaniu modułowym {{Code|{{m|Pudełko|Nazwa przestrzeni nazw dyskusji|typ jednostki 2{{=}}strona szablonu|numer jednostki{{=}}2}}}}, ale o tym więcej w rozdziałach {{Code|{{sr|# p["Dyskusyjny typ jednostki"](frame,i)|p=Pudełko}}}} w „{{sr|#Funkcje typu jednostki|p=Pudełko}}”, ale wtedy nazwa przestrzeni nazw reprezentowana przez {{Parametr|typ jednostki 2|strona szablonu}}, jest zamieniana na nazwę przestrzeni nazw dyskusji. Parametr dyskusji typu jednostki bazowy lub dla danego numerka ogólny, czy szczegółowy, nie gra roli. Również parametry typu jednostki nie powinno się podawać w dziecku w ramce, tylko w rodzicu w szablonie jako parametry, w którym ta ramka jest wywoływana, ale tutaj podano jedynie dla przykładu, jak najłatwiej sprawdzić działanie tych parametrów tej funkcji. Najpierw w funkcji nagłówku brane są parametry nazw przestrzeni nazw, a jeżeli ich nie ma, to parametry typu jednostki, a jeżeli nie ma, to generowane są nazwy na podstawie aktualnego modułu. == Funkcje nazw przestrzeni nazw drugiej wersji == === {{Code|p["Nazwa przestrzeni nazw 2"](frame,...)}} === Funkcja pisze nazwę przestrzeni nazw, niezależnie, czy to jest przedmiotowa, czy dyskusji, według, i nie zawsze tylko, podanej w zmiennej {{Code|nazwa przestrzeni nazw}} dla pozycja bazowej w podanych parametrach szablonu rodzicu ramki dziecka, lub dla innej pozycji należy parametr podawać w formie {{Code|nazwa przestrzeni nazw 1}}, {{Code|nazwa przestrzeni nazw 2}}, {{Code|nazwa przestrzeni nazw 3}},..., lub te parametry można podać w postaci ogólnej {{Code|nazwa przestrzeni nazw i}}. W tej funkcji trzeba też podawać parametry nazwy jednostek {{Code|nazwa jednostki}}, {{Code|nazwa jednostki 1}}, {{Code|nazwa jednostki 2}}, {{Code|nazwa jednostki 3}},... Parametry podaje się w parametrach rodzica wywołania tej funkcji {{Code|{{m|Pudełko|Nazwa przestrzeni nazw 2}}}} (ale ich nie trzeba podawać w dziecku, ale można) i w parametrach dziecka, jeśli chodzi o zmienną {{Code|numer jednostki}}, czyli np.: {{Code|{{m|Pudełko|Nazwa przestrzeni nazw 2|numer jednostki{{=}}<jakaś liczba całkowita dodatnia>}}}}. Te parametry przestrzenne zamiast w rodzicu w szablonie można podać w ramce dziecka, wtedy parametry dziecka mają pierwszeństwo. Przestrzeń nazw z parametrów nazw przestrzennych może odpowiadać wartości przestrzeni głównej, to wtedy odpowiednia przestrzeń nazw z parametru nazwy jednostki się liczy w tej funkcji, wtedy jest liczona nazwa przestrzeni nazw z tego parametru. Gdy parametry przestrzenne lub typ jednostki w drugim podejściu nie wskazują na przestrzeń główną, to wtedy działanie tej funkcji jest podobne do {{Code|{{sr|#p["Nazwa przestrzeni nazw"](frame,...)|p=Pudełko}}}}. Definicja skrótowa funkcji: <syntaxhighlight lang="lua"> p["Nazwa przestrzeni nazw 2"]=function(frame,czy_uwzglednic_alternatywna_nazwe,i)...end; </syntaxhighlight> Wtedy ciało funkcji tej, czyli jego definicja w środku, jest: <syntaxhighlight lang="lua"> local pudelko_pomocne_modul=require("Module:Pudełko/Pomocne"); -- Liczy nazwę przestrzeni nazw, jeżeli z parametrów przestrzennych przestrzeń wskazuje na główną, to wtedy jest liczona przestrzeń nazw z nazwy jednostki; return pudelko_pomocne_modul.Nazwa_przestrzeni_nazw_2(frame,czy_uwzglednic_alternatywna_nazwe,i) </syntaxhighlight> Parametry funkcji: * {{Code|frame}} - tablica ramki tablicy transportu, * {{Code|czy_uwzglednic_alternatywna_nazwe}} - czy ma uwzględniać nazwę przestrzeni nazw domyślną szablonu, dostępne wartości: {{Code|false}}, w której nazwa domyślna nie jest uwzględniana wtedy, oraz {{Code|nil}} i {{Code|true}}, które oznaczają to samo, w tym jeżeli ona jest uwzględniana, wtedy jest brany parametr pierwszy dziecka, który musi istnieć przy takiej wartości tego parametru, tzn. {{Code|{{m|Pudełko|Nazwa przestrzeni nazw 2|Szablon}}}}, a nazwa uzyskana nazwy przestrzeni nazw jest w takim przypadku błędna, a jeżeli nazwa domyślna jest błędna, czyli {{Code|{{m|Pudełko|Nazwa przestrzeni nazw 2|Moja przestrzeń}}}}, wtedy funkcja zwraca stan błędu {{Code|(błąd)}}. * {{Code|i}} - numer zmiennej nazwy przestrzeni nazw. Funkcja wykorzystuje {{Code|{{sr|#p.Nazwa_przestrzeni_nazw_2(frame,...)|p=Pudełko/Pomocne}}}} do wyznaczania ogólnego nazwy przestrzeni nazw dla pozycji bazowej i numerkowej, tzn. dla pozycji: jeden, dwa, trzy,..., itd, i ich ogólnej. Parametr ramki tablicy transportu rodzica szablonu: * {{Code|nazwa przestrzeni nazw}}, {{Code|nazwa przestrzeni nazw 1}}, {{Code|nazwa przestrzeni nazw 2}}, {{Code|nazwa przestrzeni nazw 3}},..., {{Code|nazwa przestrzeni nazw i}} - nazwy przestrzeni nazw dla pozycji bazowej oraz zwykłej i ogólnej numerkowej, * {{Code|nazwa jednostki}}, {{Code|nazwa jednostki 1}}, {{Code|nazwa jednostki 2}}, {{Code|nazwa jednostki 3}},... - nazwy jednostek dla pozycji bazowej i numerkowej, * {{Code|typ jednostki}}, {{Code|typ jednostki 1}}, {{Code|typ jednostki 2}}, {{Code|typ jednostki 3}},..., {{Code|typ jednostki i}} - typy jednostek, którym odpowiadają pewne przestrzenie przedmiotowe, dla pozycji bazowej, numerkowej i ogólnej, ** {{Code|dyskusja typu jednostki}}, {{Code|dyskusja typu jednostki 1}}, {{Code|dyskusja typ jednostki 2}}, {{Code|dyskusja typ jednostki 3}},..., {{Code|dyskusja typ jednostki i}} - czy dany typ jednostki ma przedstawiać, jeśli niepusta, przestrzeń dyskusji dla pozycji bazowej, numerkowej i ogólnej. Parametry ramki tablicy transportu dziecka: * Parametry dziecka są takie same jak rodzica dla funkcji pudełkowej plus tu wymienione, * {{Code|numer jednostki}} - jak parametr {{Code|i}} nie został ustawiony, to wtedy liczy się ta zmienna. Przykłady: <syntaxhighlight lang="mediawiki"> {{Nazwa szablonu|nazwa przestrzeni nazw=Wikibooks|nazwa przestrzeni nazw 1=Szablon|nazwa przestrzeni nazw i=|nazwa jednostki 2=Wikibooks:Strona}} </syntaxhighlight> W dziecku powiedzmy jest wywołanie, i szukamy nazwy przestrzeni nazw o numerze dwa, która została podana, ale istnieje za to jej wersji ogólna {{Code|nazwa przestrzeni nazw i}} i domyślna {{Code|nazwa przestrzeni nazw}}, ale wtedy dla tego numerkowego liczy się to ogólne z {{Code| i}}, a ponieważ ta nazwa jest pusta, więc będziemy liczyli nazwę przestrzeni nazw z {{Code|nazwa jednostki 2}}: <syntaxhighlight lang="mediawiki"> {{#invoke:Pudełko|Nazwa przestrzeni nazw 2|numer jednostki=2}} </syntaxhighlight> Na podstawie powyższego przykładu otrzymamy wynik o schemacie, nie wyniku, bo tam nie ma zmiennej {{Code|nazwa przestrzeni nazw 1}}, ale jest {{Code|nazwa przestrzeni nazw i}}: <syntaxhighlight lang="mediawiki"> <!-- Ale nie "nazwa przestrzeni nazw 2", bo jej nie ma, ale za to istnieje "nazwa przestrzeni nazw i"; --> <!-- nazwa przestrzeni nazw 2=nazwa przestrzeni nazw i="", a nazwa jednostki 2="Wikibooks:Strona"; --> <!-- Czyli wynik: --> Wikibooks <!-- Widzimy, że wygenerowała się nazwa przestrzeni nazw, którą jest przestrzeń nieprogramowa, ale projektu, wychodząca z nazwy jednostek w tym przypadku z "nazwa jednostki 2"; --> </syntaxhighlight> Nie jest brana w tym powyższym przykładzie zmienna {{Code|nazwa przestrzeni nazw}}, bo jej nie ma, ale za to jest {{Code|nazwa przestrzeni nazw i}}, bo ona występuje jako parametr domyślny ogólny dla parametrów numerkowych. Tytaj jest używana jest zmienna {{Code|nazwa jednostki 2}} do wygenerowania ostatecznego wyniku, bo jak można zauważyć, parametry przestrzenne wskazują na przestrzeń główną, a nazwy jednostek już nie. Przykłady w wikikodzie: * {{Code|{{m|Pudełko|Nazwa przestrzeni nazw 2|numer jednostki{{=}}2}}}} → {{Tt|{{#invoke:Pudełko|Nazwa przestrzeni nazw 2|numer jednostki=2}}}} * {{Code|{{m|Pudełko|Nazwa przestrzeni nazw 2|Szablon|nazwa przestrzeni nazw i{{=}}Moja przestrzeń|numer jednostki{{=}}2}}}} → {{Tt|{{#invoke:Pudełko|Nazwa przestrzeni nazw 2|Szablon|nazwa przestrzeni nazw i=Moja przestrzeń|numer jednostki=2}}}} * {{Code|{{m|Pudełko|Nazwa przestrzeni nazw 2|nazwa przestrzeni nazw 2{{=}}|nazwa jednostki 2{{=}}Szablon:Strona|numer jednostki{{=}}2}}}} → {{Tt|{{#invoke:Pudełko|Nazwa przestrzeni nazw 2|nazwa przestrzeni nazw 2=|nazwa jednostki 2=Szablon:Strona|numer jednostki=2}}}} * {{Code|{{m|Pudełko|Nazwa przestrzeni nazw 2|nazwa przestrzeni nazw i{{=}}|nazwa jednostki 2{{=}}Szablon:Strona|numer jednostki{{=}}2}}}} → {{Tt|{{#invoke:Pudełko|Nazwa przestrzeni nazw 2|nazwa przestrzeni nazw i=|nazwa jednostki 2=Szablon:Strona|numer jednostki=2}}}} * {{Code|{{m|Pudełko|Nazwa przestrzeni nazw 2|Szablon|nazwa przestrzeni nazw{{=}}|nazwa jednostki 2{{=}}Wikibooks:Strona|numer jednostki{{=}}2}}}} → {{Tt|{{#invoke:Pudełko|Nazwa przestrzeni nazw 2|Szablon|nazwa przestrzeni nazw=|nazwa jednostki 2=Wikibooks:Strona|numer jednostki=2}}}} Powyżej dla przykładu podano parametry nie w rodzicu w szablonie, tylko w dziecku, jeśli chodzi o parametry nazw przestrzeni nazw i nazw jednostek, ale ich się za to nie powinno podawać w tych ramach, tylko w szablonach, w których wywoływane są te ramki pudełek {{Code|{{m|Pudełko}}}}, ale tak tutaj tak zrobiono by było najłatwiej sprawdzić działanie tego typu funkcji. Analogicznie możemy podawać parametry typu jednostki, np.: wywołaniu modułowym {{Code|{{m|Pudełko|Nazwa przestrzeni nazw 2|typ jednostki 2{{=}}Podręcznik|nazwa jednostki 2{{=}}Szablon:Strona|numer jednostki{{=}}2}}}} (ale wtedy jest brana przestrzeń nazw z nazwy jednostki), ale o tym więcej w rozdziałach {{Code|{{sr|#p["Typ jednostki 2"](frame,i)|p=Pudełko}}}} w „{{sr|#Funkcje typu jednostki|p=Pudełko}}”, on definiuje przestrzenie przedmiotowe, ale można użyć parametru dyskusji typu jednostki z wartością niepustą, wtedy wyświetli się nazwa przestrzeni nazw dyskusji. Jeżeli typ jednostki wskazuje na przestrzeń nazw główną, wtedy się liczą parametry nazw jednostek. Również parametry typu jednostki nie powinno się podawać w dziecku w ramce, tylko w rodzicu w szablonie jako parametry, w którym ta ramka jest wywoływana, ale tutaj podano jedynie dla przykładu, jak najłatwiej sprawdzić działanie tych parametrów tej funkcji. Najpierw w funkcji nagłówku brane są parametry nazw przestrzeni nazw, a jeżeli ich nie ma, to parametry typu jednostki, a jeżeli nie ma lub parametry przestrzenne wskazują na przestrzeń główną, i nie ma nazwy jednostki, to generowane są nazwy tej funkcji na podstawie aktualnej strony. === {{Code|p["Nazwa przedmiotowej przestrzeni nazw 2"](frame,...)}} === Funkcja pisze przedmiotową nazwę przestrzeni nazw jakikolwiek nazwy przestrzeni nazw (tzn. nazwę przedmiotową nazwy przestrzenie nazw, czyli nie dyskusji, zamieniana jest na nią samą, czyli identyfikator przestrzeni się nie zmienia, a dyskusji, nie przedmiotową, przekształca się na przedmiotową jej odpowiadającą, czyli w tym przypadku identyfikator przestrzeni zmniejsza się o numer mniej), według, i nie zawsze tylko, podanej w zmiennej {{Code|nazwa przestrzeni nazw}} dla pozycja bazowej w podanych parametrach szablonu rodzicu ramki dziecka, lub dla innej pozycji należy parametr podawać w formie {{Code|nazwa przestrzeni nazw 1}}, {{Code|nazwa przestrzeni nazw 2}}, {{Code|nazwa przestrzeni nazw 3}},..., lub te parametry można podać w postaci ogólnej {{Code|nazwa przestrzeni nazw i}}. W tej funkcji trzeba też podawać parametry nazwy jednostek {{Code|nazwa jednostki}}, {{Code|nazwa jednostki 1}}, {{Code|nazwa jednostki 2}}, {{Code|nazwa jednostki 3}},... Parametry podaje się w parametrach rodzica wywołania tej funkcji {{Code|{{m|Pudełko|Nazwa przedmiotowej przestrzeni nazw 2}}}} (ale ich nie trzeba podawać w dziecku, ale można) i w parametrach dziecka, jeśli chodzi o zmienną {{Code|numer jednostki}}, czyli np.: {{Code|{{m|Pudełko|Nazwa przedmiotowej przestrzeni nazw 2|numer jednostki{{=}}<jakaś liczba całkowita dodatnia>}}}}. Te parametry przestrzenne zamiast w rodzicu w szablonie można podać w ramce dziecka, wtedy parametry dziecka mają pierwszeństwo. Przestrzeń nazw z parametrów nazw przestrzennych po przekształceniu na przedmiotową może odpowiadać wartości przestrzeni głównej, to wtedy odpowiednia przestrzeń nazw z parametru nazwy jednostki się liczy w tej funkcji, wtedy jest liczona nazwa przestrzeni nazw z tego parametru. Gdy parametry przestrzenne lub typ jednostki w drugim podejściu nie wskazują na przestrzeń główną, to wtedy działanie tej funkcji jest podobne do {{Code|{{sr|#p["Nazwa przedmiotowej przestrzeni nazw"](frame,...)|p=Pudełko}}}}. Definicja skrótowa funkcji: <syntaxhighlight lang="lua"> p["Nazwa przedmiotowej przestrzeni nazw 2"]=function(frame,czy_uwzglednic_alternatywna_nazwe,i)...end; </syntaxhighlight> Wtedy ciało funkcji tej, czyli jego definicja w środku, jest: <syntaxhighlight lang="lua"> local pudelko_pomocne_modul=require("Module:Pudełko/Pomocne"); return pudelko_pomocne_modul.Nazwa_przestrzeni_nazw_przedmiotowa_dyskusji_2(frame,czy_uwzglednic_alternatywna_nazwe,i,"przedmiotowa"); </syntaxhighlight> Parametry funkcji: * {{Code|frame}} - tablica ramki tablicy transportu, * {{Code|czy_uwzglednic_alternatywna_nazwe}} - czy ma uwzględniać nazwę przestrzeni nazw domyślną szablonu, dostępne wartości: {{Code|false}}, w której nazwa domyślna nie jest uwzględniana wtedy, oraz {{Code|nil}} i {{Code|true}}, które oznaczają to samo, w tym jeżeli ona jest uwzględniana, wtedy jest brany parametr pierwszy dziecka, który musi istnieć przy takiej wartości tego parametru, tzn. {{Code|{{m|Pudełko|Nazwa przedmiotowej przestrzeni nazw 2|Szablon}}}}, a nazwa uzyskana nazwy przestrzeni nazw jest w takim przypadku błędna, a jeżeli nazwa domyślna jest błędna, czyli {{Code|{{m|Pudełko|Nazwa przedmiotowej przestrzeni nazw 2|Moja przestrzeń}}}}, wtedy funkcja zwraca stan błędu {{Code|(błąd)}}. * {{Code|i}} - numer zmiennej nazwy przestrzeni nazw. Funkcja wykorzystuje {{Code|{{sr|#p.Nazwa_przestrzeni_nazw_przedmiotowa_dyskusji_2(frame,...)|p=Pudełko/Pomocne}}}} do wyznaczania ogólnego nazwy przestrzeni nazw dla pozycji bazowej i numerkowej, tzn. dla pozycji: jeden, dwa, trzy,..., itd, i ich ogólnej. Parametr ramki tablicy transportu rodzica szablonu: * {{Code|nazwa przestrzeni nazw}}, {{Code|nazwa przestrzeni nazw 1}}, {{Code|nazwa przestrzeni nazw 2}}, {{Code|nazwa przestrzeni nazw 3}},..., {{Code|nazwa przestrzeni nazw i}} - nazwy przestrzeni nazw dla pozycji bazowej oraz zwykłej i ogólnej numerkowej, * {{Code|nazwa jednostki}}, {{Code|nazwa jednostki 1}}, {{Code|nazwa jednostki 2}}, {{Code|nazwa jednostki 3}},... - nazwy jednostek dla pozycji bazowej i numerkowej, * {{Code|typ jednostki}}, {{Code|typ jednostki 1}}, {{Code|typ jednostki 2}}, {{Code|typ jednostki 3}},..., {{Code|typ jednostki i}} - typy jednostek, którym odpowiadają pewne przestrzenie przedmiotowe, dla pozycji bazowej, numerkowej i ogólnej. Parametry ramki tablicy transportu dziecka: * Parametry dziecka są takie same jak rodzica dla funkcji pudełkowej plus tu wymienione, * {{Code|numer jednostki}} - jak parametr {{Code|i}} nie został ustawiony, to wtedy liczy się ta zmienna. Przykłady: <syntaxhighlight lang="mediawiki"> {{Nazwa szablonu|nazwa przestrzeni nazw=Wikibooks|nazwa przestrzeni nazw 1=Szablon|nazwa przestrzeni nazw i=|nazwa jednostki 2=Dyskusja Wikibooks:Strona}} </syntaxhighlight> W dziecku powiedzmy jest wywołanie, i szukamy nazwy przestrzeni nazw o numerze dwa, która została podana, ale istnieje za to jej wersji ogólna {{Code|nazwa przestrzeni nazw i}} i domyślna {{Code|nazwa przestrzeni nazw}}, ale wtedy dla tego numerkowego liczy się to ogólne z {{Code| i}}, a ponieważ ta nazwa jest pusta, więc będziemy liczyli nazwę przestrzeni nazw z {{Code|nazwa jednostki 2}}: <syntaxhighlight lang="mediawiki"> {{#invoke:Pudełko|Nazwa przedmiotowej przestrzeni nazw 2|numer jednostki=2}} </syntaxhighlight> Na podstawie powyższego przykładu otrzymamy wynik o schemacie, nie wyniku, bo tam nie ma zmiennej {{Code|nazwa przestrzeni nazw 1}}, ale jest {{Code|nazwa przestrzeni nazw i}}: <syntaxhighlight lang="mediawiki"> <!-- Ale nie "nazwa przestrzeni nazw 2", bo jej nie ma, ale za to istnieje "nazwa przestrzeni nazw i"; --> <!-- nazwa przestrzeni nazw 2=nazwa przestrzeni nazw i="", a nazwa jednostki 2="Dyskusja Wikibooks:Strona"; --> <!-- Czyli wynik: --> Wikibooks <!-- Widzimy, że wygenerowała się nazwa przestrzeni nazw, którą jest przestrzeń nieprogramowa, ale projektu, wychodząca z nazwy jednostek w tym przypadku z "nazwa jednostki 2"; --> </syntaxhighlight> Nie jest brana w tym powyższym przykładzie zmienna {{Code|nazwa przestrzeni nazw}}, bo jej nie ma, ale za to jest {{Code|nazwa przestrzeni nazw i}}, bo ona występuje jako parametr domyślny ogólny dla parametrów numerkowych. Tytaj jest używana jest zmienna {{Code|nazwa jednostki 2}} do wygenerowania ostatecznego wyniku, bo jak można zauważyć, parametry przestrzenne wskazują na przestrzeń główną, a nazwy jednostek już nie. Przykłady w wikikodzie: * {{Code|{{m|Pudełko|Nazwa przedmiotowej przestrzeni nazw 2|numer jednostki{{=}}2}}}} → {{Tt|{{#invoke:Pudełko|Nazwa przedmiotowej przestrzeni nazw 2|numer jednostki=2}}}} * {{Code|{{m|Pudełko|Nazwa przedmiotowej przestrzeni nazw 2|Dyskusja szablonu|nazwa przestrzeni nazw i{{=}}Moja przestrzeń|numer jednostki{{=}}2}}}} → {{Tt|{{#invoke:Pudełko|Nazwa przedmiotowej przestrzeni nazw 2|Dyskusja szablonu|nazwa przestrzeni nazw i=Moja przestrzeń|numer jednostki=2}}}} * {{Code|{{m|Pudełko|Nazwa przedmiotowej przestrzeni nazw 2|nazwa przestrzeni nazw 2{{=}}Dyskusja|nazwa jednostki 2{{=}}Dyskusja szablonu:Strona|numer jednostki{{=}}2}}}} → {{Tt|{{#invoke:Pudełko|Nazwa przedmiotowej przestrzeni nazw 2|nazwa przestrzeni nazw 2=Dyskusja|nazwa jednostki 2=Dyskusja szablonu:Strona|numer jednostki=2}}}} * {{Code|{{m|Pudełko|Nazwa przedmiotowej przestrzeni nazw 2|nazwa przestrzeni nazw i{{=}}Dyskusja|nazwa jednostki 2{{=}}Dyskusja szablonu:Strona|numer jednostki{{=}}2}}}} → {{Tt|{{#invoke:Pudełko|Nazwa przedmiotowej przestrzeni nazw 2|nazwa przestrzeni nazw i=Dyskusja|nazwa jednostki 2=Dyskusja szablonu:Strona|numer jednostki=2}}}} * {{Code|{{m|Pudełko|Nazwa przedmiotowej przestrzeni nazw 2|Dyskusja szablonu|nazwa przestrzeni nazw{{=}}Dyskusja|nazwa jednostki 2{{=}}Wikibooks:Strona|numer jednostki{{=}}2}}}} → {{Tt|{{#invoke:Pudełko|Nazwa przedmiotowej przestrzeni nazw 2|Dyskusja szablonu|nazwa przestrzeni nazw=Dyskusja|nazwa jednostki 2=Dyskusja Wikibooks:Strona|numer jednostki=2}}}} Powyżej dla przykładu podano parametry nie w rodzicu w szablonie, tylko w dziecku, jeśli chodzi o parametry nazw przestrzeni nazw i nazw jednostek, ale ich się za to nie powinno podawać w tych ramach, tylko w szablonach, w których wywoływane są te ramki pudełek {{Code|{{m|Pudełko}}}}, ale tak tutaj tak zrobiono by było najłatwiej sprawdzić działanie tego typu funkcji. Analogicznie możemy podawać parametry typu jednostki, np.: wywołaniu modułowym {{Code|{{m|Pudełko|Nazwa przedmiotowej przestrzeni nazw 2|typ jednostki 2{{=}}Podręcznik|nazwa jednostki 2{{=}}Dyskusja szablonu:Strona|numer jednostki{{=}}2}}}} (ale wtedy jest brana przestrzeń nazw z nazwy jednostki), ale o tym więcej w rozdziałach {{Code|{{sr|# p["Przedmiotowy typ jednostki 2"](frame,i)|p=Pudełko}}}} w „{{sr|#Funkcje typu jednostki|p=Pudełko}}”, on definiuje przestrzenie przedmiotowe, ale można użyć parametru dyskusji typu jednostki z wartością niepustą, pustą, czy nawet jej nie podamy, wtedy wyświetli się nazwa przestrzeni nazw przedmiotowej. Jeżeli typ jednostki wskazuje na przestrzeń nazw główną, wtedy się liczą parametry nazw jednostek. Również parametry typu jednostki nie powinno się podawać w dziecku w ramce, tylko w rodzicu w szablonie jako parametry, w którym ta ramka jest wywoływana, ale tutaj podano jedynie dla przykładu, jak najłatwiej sprawdzić działanie tych parametrów tej funkcji. Najpierw w funkcji nagłówku brane są parametry nazw przestrzeni nazw, a jeżeli ich nie ma, to parametry typu jednostki, a jeżeli nie ma lub parametry przestrzenne wskazują na przestrzeń główną, i nie ma nazwy jednostki, to generowane są nazwy tej funkcji na podstawie aktualnej strony. === {{Code|p["Nazwa przestrzeni nazw dyskusji 2"](frame,...)}} === Funkcja pisze nazwę przestrzeni nazw dyskusji jakikolwiek nazwy przestrzeni nazw (tzn. nazwę dyskusji nazwy przestrzenie nazw, czyli nie przedmiotowej, zamieniana jest na nią samą, czyli identyfikator przestrzeni się nie zmienia, a przedmiotową, nie dyskusji, przekształca się na dyskusji jej odpowiadającą, czyli w tym przypadku identyfikator przestrzeni zwiększa się o numer więcej), według, i nie zawsze tylko, podanej w zmiennej {{Code|nazwa przestrzeni nazw}} dla pozycja bazowej w podanych parametrach szablonu rodzicu ramki dziecka, lub dla innej pozycji należy parametr podawać w formie {{Code|nazwa przestrzeni nazw 1}}, {{Code|nazwa przestrzeni nazw 2}}, {{Code|nazwa przestrzeni nazw 3}},..., lub te parametry można podać w postaci ogólnej {{Code|nazwa przestrzeni nazw i}}. W tej funkcji trzeba też podawać parametry nazwy jednostek {{Code|nazwa jednostki}}, {{Code|nazwa jednostki 1}}, {{Code|nazwa jednostki 2}}, {{Code|nazwa jednostki 3}},... Parametry podaje się w parametrach rodzica wywołania tej funkcji {{Code|{{m|Pudełko|Nazwa przestrzeni nazw dyskusji 2}}}} (ale ich nie trzeba podawać w dziecku, ale można) i w parametrach dziecka, jeśli chodzi o zmienną {{Code|numer jednostki}}, czyli np.: {{Code|{{m|Pudełko|Nazwa przestrzeni nazw dyskusji 2|numer jednostki{{=}}<jakaś liczba całkowita dodatnia>}}}}. Te parametry przestrzenne zamiast w rodzicu w szablonie można podać w ramce dziecka, wtedy parametry dziecka mają pierwszeństwo. Przestrzeń nazw z parametrów nazw przestrzennych po przekształceniu na przedmiotową może odpowiadać wartości przestrzeni głównej, to wtedy odpowiednia przestrzeń nazw z parametru nazwy jednostki się liczy w tej funkcji, wtedy jest liczona nazwa przestrzeni nazw z tego parametru. Gdy parametry przestrzenne lub typ jednostki w drugim podejściu nie wskazują na przestrzeń główną, to wtedy działanie tej funkcji jest podobne do {{Code|{{sr|#p["Nazwa dyskusji przestrzeni nazw"](frame,...)|p=Pudełko}}}}. Definicja skrótowa funkcji: <syntaxhighlight lang="lua"> p["Nazwa przestrzeni nazw dyskusji 2"]=function(frame,czy_uwzglednic_alternatywna_nazwe,i)...end; </syntaxhighlight> Wtedy ciało funkcji tej, czyli jego definicja w środku, jest: <syntaxhighlight lang="lua"> local pudelko_pomocne_modul=require("Module:Pudełko/Pomocne"); return pudelko_pomocne_modul.Nazwa_przestrzeni_nazw_przedmiotowa_dyskusji_2(frame,czy_uwzglednic_alternatywna_nazwe,i,"dyskusja"); </syntaxhighlight> Parametry funkcji: * {{Code|frame}} - tablica ramki tablicy transportu, * {{Code|czy_uwzglednic_alternatywna_nazwe}} - czy ma uwzględniać nazwę przestrzeni nazw domyślną szablonu, dostępne wartości: {{Code|false}}, w której nazwa domyślna nie jest uwzględniana wtedy, oraz {{Code|nil}} i {{Code|true}}, które oznaczają to samo, w tym jeżeli ona jest uwzględniana, wtedy jest brany parametr pierwszy dziecka, który musi istnieć przy takiej wartości tego parametru, tzn. {{Code|{{m|Pudełko|Nazwa przestrzeni nazw dyskusji 2|Szablon}}}}, a nazwa uzyskana nazwy przestrzeni nazw jest w takim przypadku błędna, a jeżeli nazwa domyślna jest błędna, czyli {{Code|{{m|Pudełko|Nazwa przestrzeni nazw dyskusji 2|Moja przestrzeń}}}}, wtedy funkcja zwraca stan błędu {{Code|(błąd)}}. * {{Code|i}} - numer zmiennej nazwy przestrzeni nazw. Funkcja wykorzystuje {{Code|{{sr|#p.Nazwa_przestrzeni_nazw_przedmiotowa_dyskusji_2(frame,...)|p=Pudełko/Pomocne}}}} do wyznaczania ogólnego nazwy przestrzeni nazw dla pozycji bazowej i numerkowej, tzn. dla pozycji: jeden, dwa, trzy,..., itd, i ich ogólnej. Parametr ramki tablicy transportu rodzica szablonu: * {{Code|nazwa przestrzeni nazw}}, {{Code|nazwa przestrzeni nazw 1}}, {{Code|nazwa przestrzeni nazw 2}}, {{Code|nazwa przestrzeni nazw 3}},..., {{Code|nazwa przestrzeni nazw i}} - nazwy przestrzeni nazw dla pozycji bazowej oraz zwykłej i ogólnej numerkowej, * {{Code|nazwa jednostki}}, {{Code|nazwa jednostki 1}}, {{Code|nazwa jednostki 2}}, {{Code|nazwa jednostki 3}},... - nazwy jednostek dla pozycji bazowej i numerkowej, * {{Code|typ jednostki}}, {{Code|typ jednostki 1}}, {{Code|typ jednostki 2}}, {{Code|typ jednostki 3}},..., {{Code|typ jednostki i}} - typy jednostek, którym odpowiadają pewne przestrzenie przedmiotowe, dla pozycji bazowej, numerkowej i ogólnej. Parametry ramki tablicy transportu dziecka: * Parametry dziecka są takie same jak rodzica dla funkcji pudełkowej plus tu wymienione, * {{Code|numer jednostki}} - jak parametr {{Code|i}} nie został ustawiony, to wtedy liczy się ta zmienna. Przykłady: <syntaxhighlight lang="mediawiki"> {{Nazwa szablonu|nazwa przestrzeni nazw=Wikibooks|nazwa przestrzeni nazw 1=Szablon|nazwa przestrzeni nazw i=|nazwa jednostki 2=Wikibooks:Strona}} </syntaxhighlight> W dziecku powiedzmy jest wywołanie, i szukamy nazwy przestrzeni nazw o numerze dwa, która została podana, ale istnieje za to jej wersji ogólna {{Code|nazwa przestrzeni nazw i}} i domyślna {{Code|nazwa przestrzeni nazw}}, ale wtedy dla tego numerkowego liczy się to ogólne z {{Code| i}}, a ponieważ ta nazwa jest pusta, więc będziemy liczyli nazwę przestrzeni nazw z {{Code|nazwa jednostki 2}}: <syntaxhighlight lang="mediawiki"> {{#invoke:Pudełko|Nazwa przestrzeni nazw dyskusji 2|numer jednostki=2}} </syntaxhighlight> Na podstawie powyższego przykładu otrzymamy wynik o schemacie, nie wyniku, bo tam nie ma zmiennej {{Code|nazwa przestrzeni nazw 1}}, ale jest {{Code|nazwa przestrzeni nazw i}}: <syntaxhighlight lang="mediawiki"> <!-- Ale nie "nazwa przestrzeni nazw 2", bo jej nie ma, ale za to istnieje "nazwa przestrzeni nazw i"; --> <!-- nazwa przestrzeni nazw 2=nazwa przestrzeni nazw i="", a nazwa jednostki 2="Wikibooks:Strona"; --> <!-- Czyli wynik: --> Dyskusja Wikibooks <!-- Widzimy, że wygenerowała się nazwa przestrzeni nazw, którą jest przestrzeń nieprogramowa, ale dyskusji projektu, wychodząca z nazwy jednostek w tym przypadku z "nazwa jednostki 2"; --> </syntaxhighlight> Nie jest brana w tym powyższym przykładzie zmienna {{Code|nazwa przestrzeni nazw}}, bo jej nie ma, ale za to jest {{Code|nazwa przestrzeni nazw i}}, bo ona występuje jako parametr domyślny ogólny dla parametrów numerkowych. Tytaj jest używana jest zmienna {{Code|nazwa jednostki 2}} do wygenerowania ostatecznego wyniku, bo jak można zauważyć, parametry przestrzenne wskazują na przestrzeń główną, a nazwy jednostek już nie. Przykłady w wikikodzie: * {{Code|{{m|Pudełko|Nazwa przestrzeni nazw dyskusji 2|numer jednostki{{=}}2}}}} → {{Tt|{{#invoke:Pudełko|Nazwa przestrzeni nazw dyskusji 2|numer jednostki=2}}}} * {{Code|{{m|Pudełko|Nazwa przestrzeni nazw dyskusji 2|Szablon|nazwa przestrzeni nazw i{{=}}Moja przestrzeń|numer jednostki{{=}}2}}}} → {{Tt|{{#invoke:Pudełko|Nazwa przestrzeni nazw dyskusji 2|Szablon|nazwa przestrzeni nazw i=Moja przestrzeń|numer jednostki=2}}}} * {{Code|{{m|Pudełko|Nazwa przestrzeni nazw dyskusji 2|nazwa przestrzeni nazw 2{{=}}|nazwa jednostki 2{{=}}Szablon:Strona|numer jednostki{{=}}2}}}} → {{Tt|{{#invoke:Pudełko|Nazwa przestrzeni nazw dyskusji 2|nazwa przestrzeni nazw 2=|nazwa jednostki 2=Szablon:Strona|numer jednostki=2}}}} * {{Code|{{m|Pudełko|Nazwa przestrzeni nazw dyskusji 2|nazwa przestrzeni nazw i{{=}}|nazwa jednostki 2{{=}}Szablon:Strona|numer jednostki{{=}}2}}}} → {{Tt|{{#invoke:Pudełko|Nazwa przestrzeni nazw dyskusji 2|nazwa przestrzeni nazw i=|nazwa jednostki 2=Szablon:Strona|numer jednostki=2}}}} * {{Code|{{m|Pudełko|Nazwa przestrzeni nazw dyskusji 2|Szablon|nazwa przestrzeni nazw{{=}}|nazwa jednostki 2{{=}}Wikibooks:Strona|numer jednostki{{=}}2}}}} → {{Tt|{{#invoke:Pudełko|Nazwa przestrzeni nazw dyskusji 2|Szablon|nazwa przestrzeni nazw=|nazwa jednostki 2=Dyskusja Wikibooks:Strona|numer jednostki=2}}}} Powyżej dla przykładu podano parametry nie w rodzicu w szablonie, tylko w dziecku, jeśli chodzi o parametry nazw przestrzeni nazw i nazw jednostek, ale ich się za to nie powinno podawać w tych ramach, tylko w szablonach, w których wywoływane są te ramki pudełek {{Code|{{m|Pudełko}}}}, ale tak tutaj tak zrobiono by było najłatwiej sprawdzić działanie tego typu funkcji. Analogicznie możemy podawać parametry typu jednostki, np.: wywołaniu modułowym {{Code|{{m|Pudełko|Nazwa przestrzeni nazw dyskusji 2|typ jednostki 2{{=}}Podręcznik|nazwa jednostki 2{{=}}Szablon:Strona|numer jednostki{{=}}2}}}} (ale wtedy jest brana przestrzeń nazw z nazwy jednostki), ale o tym więcej w rozdziałach {{Code|{{sr|# p["Dyskusyjny typ jednostki 2"](frame,i)|p=Pudełko}}}} w „{{sr|#Funkcje typu jednostki|p=Pudełko}}”, on definiuje przestrzenie dyskusji, ale można użyć parametru dyskusji typu jednostki z obojętnie jaką wartością niepustą, czy pustą, czy nawet jej nie podamy, wtedy wyświetli się nazwa przestrzeni nazw dyskusji. Jeżeli typ jednostki wskazuje na przestrzeń nazw główną, wtedy się liczą parametry nazw jednostek. Również parametry typu jednostki nie powinno się podawać w dziecku w ramce, tylko w rodzicu w szablonie jako parametry, w którym ta ramka jest wywoływana, ale tutaj podano jedynie dla przykładu, jak najłatwiej sprawdzić działanie tych parametrów tej funkcji. Najpierw w funkcji nagłówku brane są parametry nazw przestrzeni nazw, a jeżeli ich nie ma, to parametry typu jednostki, a jeżeli nie ma lub parametry przestrzenne wskazują na przestrzeń główną, i nie ma nazwy jednostki, to generowane są nazwy tej funkcji na podstawie aktualnej strony. == Funkcje pełnych nazw jednostki == === {{Code|p["Pełna nazwa dyskusji jednostki"](frame,i)}} === === {{Code|p["Pełna nazwa przedmiotowa jednostki"](frame,i)}} === === {{Code|p["Pełna nazwa jednostki"](frame,i)}} === == Funkcje pełnych nazw jednostki drugiej wersji == === {{Code|p["Pełna nazwa dyskusji jednostki 2"](frame,i)}} === === {{Code|p["Pełna nazwa przedmiotowa jednostki 2"](frame,i)}} === === {{Code|p["Pełna nazwa jednostki 2"](frame,i)}} === == Funkcje pełnych nazw jednostki trzeciej wersji == === {{Code|p["Pełna nazwa dyskusji jednostki 3"](frame,i)}} === === {{Code|p["Pełna nazwa przedmiotowa jednostki 3"](frame,i)}} === === {{Code|p["Pełna nazwa jednostki 3"](frame,i)}} === == Funkcje nazw jednostki == === {{Code|p["Nazwa jednostki"](frame,i)}} === == Funkcje nazw jednostki drugiej wersji == === {{Code|p["Nazwa jednostki 2"](frame,i)}} === === {{Code|p["Nazwa przedmiotowa jednostki 2"](frame,i)}} === === {{Code|p["Nazwa dyskusji jednostki 2"](frame,i)}} === == Funkcje nazw przestrzeni nazw trzeciej wersji == === {{Code|p["Nazwa przestrzeni nazw 3"](frame,i)}} === Funkcja pisze nazwę przestrzeni nazw, niezależnie, czy to jest przedmiotowa, czy dyskusji, według, i nie zawsze tylko, podanej w zmiennej {{Code|nazwa przestrzeni nazw}} dla pozycja bazowej w podanych parametrach szablonu rodzicu ramki dziecka, lub dla innej pozycji należy parametr podawać w formie {{Code|nazwa przestrzeni nazw 1}}, {{Code|Nazwa przestrzeni nazw 3}}, {{Code|nazwa przestrzeni nazw 3}},..., lub te parametry można podać w postaci ogólnej {{Code|nazwa przestrzeni nazw i}}. W tej funkcji trzeba też podawać parametry nazwy jednostek {{Code|nazwa jednostki}}, {{Code|nazwa jednostki 1}}, {{Code|nazwa jednostki 2}}, {{Code|nazwa jednostki 3}},... Parametry podaje się w parametrach rodzica wywołania tej funkcji {{Code|{{m|Pudełko|Nazwa przestrzeni nazw 3}}}} (ale ich nie trzeba podawać w dziecku, ale można) i w parametrach dziecka, jeśli chodzi o zmienną {{Code|numer jednostki}}, czyli np.: {{Code|{{m|Pudełko|Nazwa przestrzeni nazw 3|numer jednostki{{=}}<jakaś liczba całkowita dodatnia>}}}}. Te parametry przestrzenne zamiast w rodzicu w szablonie można podać w ramce dziecka, wtedy parametry dziecka mają pierwszeństwo. Przestrzeń nazw z parametrów nazw przestrzennych bazowych (bez numerka) może odpowiadać wartości przestrzeni głównej, to wtedy odpowiednia przestrzeń nazw z parametru nazwy jednostki się nie liczy w tej funkcji, aby się liczyła należy użyć funkcji {{Code|{{sr|#p["Nazwa przestrzeni nazw"](frame,...)|p=Pudełko}}}}. Przestrzeń nazw z parametrów nazw przestrzennych numerkowych może odpowiadać wartości przestrzeni głównej, to wtedy odpowiednia przestrzeń nazw z parametru nazwy jednostki się liczy w tej funkcji, wtedy jest liczona nazwa przestrzeni nazw z tego parametru. Gdy parametry przestrzenne lub typ jednostki w drugim podejściu nie wskazują na przestrzeń główną, to wtedy działanie tej funkcji jest podobne do {{Code|{{sr|#p["Nazwa przestrzeni nazw 2"](frame,...)|p=Pudełko}}}}. Definicja skrótowa funkcji: <syntaxhighlight lang="lua"> p["Nazwa przestrzeni nazw 3"]=function(frame,czy_uwzglednic_alternatywna_nazwe,i)...end; </syntaxhighlight> Wtedy ciało funkcji tej, czyli jego definicja w środku, jest: <syntaxhighlight lang="lua"> -- Jest liczony numer parametru nazwy przestrzeni nazw, domyslnie chodzi tu o numer bazowy parametrów przestrzennych; local numer_jednostki=i or frame.args["numer jednostki"]; local liczba_numeru_jednostki=((numer_jednostki)and(tonumber(numer_jednostki)) or 0); local pudelko_pomocne_modul=require("Module:Pudełko/Pomocne"); -- Liczy nazwę przestrzeni nazw dyskusji na podstawie podanych parametrów; return pudelko_pomocne_modul.Uzyskanie_nazw_jednostki(frame,0,liczba_numeru_jednostki,nil,2); </syntaxhighlight> Parametry funkcji: * {{Code|frame}} - tablica ramki tablicy transportu, * {{Code|czy_uwzglednic_alternatywna_nazwe}} - czy ma uwzględniać nazwę przestrzeni nazw domyślną szablonu, dostępne wartości: {{Code|false}}, w której nazwa domyślna nie jest uwzględniana wtedy, oraz {{Code|nil}} i {{Code|true}}, które oznaczają to samo, w tym jeżeli ona jest uwzględniana, wtedy jest brany parametr pierwszy dziecka, który musi istnieć przy takiej wartości tego parametru, tzn. {{Code|{{m|Pudełko|Nazwa przestrzeni nazw 3|Szablon}}}}, a nazwa uzyskana nazwy przestrzeni nazw jest w takim przypadku błędna, a jeżeli nazwa domyślna jest błędna, czyli {{Code|{{m|Pudełko|Nazwa przestrzeni nazw 3|Moja przestrzeń}}}}, wtedy funkcja zwraca stan błędu {{Code|(błąd)}}. * {{Code|i}} - numer zmiennej nazwy przestrzeni nazw. Funkcja wykorzystuje {{Code|{{sr|#p.Uzyskanie_nazw_jednostki(frame,...)|p=Pudełko/Pomocne}}}} do wyznaczania ogólnego nazwy przestrzeni nazw dla pozycji bazowej i numerkowej, tzn. dla pozycji: jeden, dwa, trzy,..., itd, i ich ogólnej. Parametr ramki tablicy transportu rodzica szablonu: * {{Code|nazwa przestrzeni nazw}}, {{Code|nazwa przestrzeni nazw 1}}, {{Code|Nazwa przestrzeni nazw 3}}, {{Code|nazwa przestrzeni nazw 3}},..., {{Code|nazwa przestrzeni nazw i}} - nazwy przestrzeni nazw dla pozycji bazowej oraz zwykłej i ogólnej numerkowej, * {{Code|nazwa jednostki}}, {{Code|nazwa jednostki 1}}, {{Code|nazwa jednostki 2}}, {{Code|nazwa jednostki 3}},... - nazwy jednostek dla pozycji bazowej i numerkowej, * {{Code|typ jednostki}}, {{Code|typ jednostki 1}}, {{Code|typ jednostki 2}}, {{Code|typ jednostki 3}},..., {{Code|typ jednostki i}} - typy jednostek, którym odpowiadają pewne przestrzenie przedmiotowe, dla pozycji bazowej, numerkowej i ogólnej, ** {{Code|dyskusja typu jednostki}}, {{Code|dyskusja typu jednostki 1}}, {{Code|dyskusja typ jednostki 2}}, {{Code|dyskusja typ jednostki 3}},..., {{Code|dyskusja typ jednostki i}} - czy dany typ jednostki ma przedstawiać, jeśli niepusta, przestrzeń dyskusji dla pozycji bazowej, numerkowej i ogólnej. Parametry ramki tablicy transportu dziecka: * Parametry dziecka są takie same jak rodzica dla funkcji pudełkowej plus tu wymienione, * {{Code|numer jednostki}} - jak parametr {{Code|i}} nie został ustawiony, to wtedy liczy się ta zmienna. Przykłady: <syntaxhighlight lang="mediawiki"> {{Nazwa szablonu|nazwa przestrzeni nazw=Wikibooks|nazwa przestrzeni nazw=|nazwa przestrzeni nazw i=|nazwajednostki=Szablon:Strona|nazwa jednostki 2=Wikibooks:Strona}} <hr /> {{Nazwa szablonu|nazwa przestrzeni nazw=Wikibooks|nazwa przestrzeni nazw 1=Szablon|nazwa przestrzeni nazw i=|nazwa jednostki 2=Wikibooks:Strona}} </syntaxhighlight> W dziecku powiedzmy jest wywołanie, i szukamy nazwy przestrzeni nazw o numerze dwa, która została podana, ale istnieje za to jej wersji ogólna {{Code|nazwa przestrzeni nazw i}} i domyślna {{Code|nazwa przestrzeni nazw}}, ale wtedy dla tego numerkowego liczy się to ogólne z {{Code| i}}, a ponieważ ta nazwa jest pusta, więc będziemy liczyli nazwę przestrzeni nazw z {{Code|nazwa jednostki 2}}: <syntaxhighlight lang="mediawiki"> {{#invoke:Pudełko|Nazwa przestrzeni nazw 3}} <hr /> {{#invoke:Pudełko|Nazwa przestrzeni nazw 3|numer jednostki=2}} </syntaxhighlight> Na podstawie powyższego przykładu otrzymamy wynik o schemacie, nie wyniku, bo tam nie ma zmiennej {{Code|nazwa przestrzeni nazw 1}}, ale jest {{Code|nazwa przestrzeni nazw i}}: <syntaxhighlight lang="mediawiki"> <!-- Ale nie "nazwa przestrzeni nazw""; --> <!-- nazwa przestrzeni nazw=""; --> <!-- Czyli wynik: --> <!-- wynik pusty --> <!-- Widzimy, że wygenerowała się nazwa przestrzeni nazw, którą jest przestrzeń nazw główna, jest ciągiem pustym: ""; --> <hr /> <!-- Ale nie "Nazwa przestrzeni nazw 2", bo jej nie ma, ale za to istnieje "nazwa przestrzeni nazw i"; --> <!-- nazwa przestrzeni nazw 2=nazwa przestrzeni nazw i="", a nazwa jednostki 2="Wikibooks:Strona"; --> <!-- Czyli wynik: --> Wikibooks <!-- Widzimy, że wygenerowała się nazwa przestrzeni nazw, którą jest przestrzeń nieprogramowa, ale projektu, wychodząca z nazwy jednostek w tym przypadku z "nazwa jednostki 2"; --> </syntaxhighlight> Dla parametrów numerkowych nie jest brana w tym powyższym przykładzie zmienna {{Code|nazwa przestrzeni nazw 2}}, bo jej nie ma, ale za to jest {{Code|nazwa przestrzeni nazw i}}, bo ona występuje jako parametr domyślny ogólny dla parametrów numerkowych. Tytaj jest używana jest zmienna {{Code|nazwa jednostki 2}} do wygenerowania ostatecznego wyniku, bo jak można zauważyć, parametry przestrzenne wskazują na przestrzeń główną, a nazwy jednostek już nie. Dla parametrów bazowych mamy zmienna {{Code|nazwa przestrzeni nazw}}, ona jest pusta, więc to zostanie wziete do ostatecznego wyniku. Przykłady w wikikodzie: * {{Code|{{m|Pudełko|Nazwa przestrzeni nazw 3|nazwa przestrzeni nazw{{=}}|nazwa jednostki{{=}}Wikibooks:Strona}}}} → {{Tt|{{#invoke:Pudełko|Nazwa przestrzeni nazw 3|nazwa przestrzeni nazw=|nazwa jednostki=Wikibooks:Szablon}}}} * {{Code|{{m|Pudełko|Nazwa przestrzeni nazw 3|nazwa przestrzeni nazw 2{{=}}|nazwa jednostki 2{{=}}Wikibooks:Strona|numer jednostki{{=}}2}}}} → {{Tt|{{#invoke:Pudełko|Nazwa przestrzeni nazw 3|nazwa przestrzeni nazw 2=|nazwa jednostki 2=Wikibooks:Szablon|numer jednostki=2}}}} Powyżej dla przykładu podano parametry nie w rodzicu w szablonie, tylko w dziecku, jeśli chodzi o parametry nazw przestrzeni nazw i nazw jednostek, ale ich się za to nie powinno podawać w tych ramach, tylko w szablonach, w których wywoływane są te ramki pudełek {{Code|{{m|Pudełko}}}}, ale tak tutaj tak zrobiono by było najłatwiej sprawdzić działanie tego typu funkcji. Analogicznie możemy podawać parametry typu jednostki, np.: wywołaniu modułowym {{Code|{{m|Pudełko|Nazwa przestrzeni nazw 3|typ jednostki 2{{=}}Podręcznik|nazwa jednostki 2{{=}}Szablon:Strona|numer jednostki{{=}}2}}}} (ale wtedy jest brana przestrzeń nazw z nazwy jednostki), ale o tym więcej w rozdziałach {{Code|{{sr|#p["Typ jednostki 3"](frame,i)|p=Pudełko}}}} w „{{sr|#Funkcje typu jednostki|p=Pudełko}}”, on definiuje przestrzenie przedmiotowe, ale można użyć parametru dyskusji typu jednostki z wartością niepustą, wtedy wyświetli się nazwa przestrzeni nazw dyskusji. Jeżeli typ jednostki bazowy wskazuje na przestrzeń nazw główną, wtedy się nie liczą parametry nazw jednostek, a na numerkowy, wtedy się liczy. Również parametry typu jednostki nie powinno się podawać w dziecku w ramce, tylko w rodzicu w szablonie jako parametry, w którym ta ramka jest wywoływana, ale tutaj podano jedynie dla przykładu, jak najłatwiej sprawdzić działanie tych parametrów tej funkcji. Najpierw w funkcji nagłówku brane są parametry nazw przestrzeni nazw, a jeżeli ich nie ma, to parametry typu jednostki, a jeżeli nie ma lub parametry przestrzenne wskazują na przestrzeń główną, i nie ma nazwy jednostki, to generowane są nazwy tej funkcji na podstawie aktualnej strony. === {{Code|p["Nazwa przedmiotowej przestrzeni nazw 3"](frame,i)}} === Funkcja pisze przedmiotową nazwę przestrzeni nazw jakikolwiek nazwy przestrzeni nazw (tzn. nazwę przedmiotową nazwy przestrzenie nazw, czyli nie dyskusji, zamieniana jest na nią samą, czyli identyfikator przestrzeni się nie zmienia, a dyskusji, nie przedmiotową, przekształca się na przedmiotową jej odpowiadającą, czyli w tym przypadku identyfikator przestrzeni zmniejsza się o numer mniej), według podanej w zmiennej {{Code|nazwa przestrzeni nazw}} dla pozycja bazowej w podanych parametrach szablonu rodzicu ramki dziecka, lub dla innej pozycji należy parametr podawać w formie {{Code|nazwa przestrzeni nazw 1}}, {{Code|nazwa przestrzeni nazw 2}}, {{Code|nazwa przestrzeni nazw 3}},..., lub te parametry można podać w postaci ogólnej {{Code|nazwa przestrzeni nazw i}}. Parametry podaje się w parametrach rodzica wywołania tej funkcji {{Code|{{m|Pudełko|Nazwa przedmiotowej przestrzeni nazw 3}}}} (ale ich nie trzeba podawać w dziecku, ale można) i w parametrach dziecka, jeśli chodzi o zmienną {{Code|numer jednostki}}, czyli np.: {{Code|{{m|Pudełko|Nazwa przedmiotowej przestrzeni nazw 3|numer jednostki{{=}}<jakaś liczba całkowita dodatnia>}}}}. Te parametry przestrzenne zamiast w rodzicu w szablonie można podać w ramce dziecka, wtedy parametry dziecka mają pierwszeństwo. Parametry przestrzenne mogą mogą być podane w postaci przestrzeni przedmiotowej lub dyskusji, ale ta funkcja zawsze ją zamienia na przedmiotową. Przestrzeń nazw z parametrów nazw przestrzennych bazowych (bez numerka) może odpowiadać wartości przestrzeni głównej, to wtedy odpowiednia przestrzeń nazw z parametru nazwy jednostki się nie liczy w tej funkcji, aby się liczyła należy użyć funkcji {{Code|{{sr|#p["Nazwa przedmiotowej przestrzeni nazw"](frame,...)|p=Pudełko}}}}. Przestrzeń nazw z parametrów nazw przestrzennych numerkowych może odpowiadać wartości przestrzeni głównej, to wtedy odpowiednia przestrzeń nazw z parametru nazwy jednostki się liczy w tej funkcji, wtedy jest liczona nazwa przestrzeni nazw z tego parametru. Gdy parametry przestrzenne lub typ jednostki w drugim podejściu nie wskazują na przestrzeń główną, to wtedy działanie tej funkcji jest podobne do {{Code|{{sr|#p["Nazwa przedmiotowej przestrzeni nazw 2"](frame,...)|p=Pudełko}}}}. Definicja skrótowa funkcji: <syntaxhighlight lang="lua"> p["Nazwa przedmiotowej przestrzeni nazw 3"]=function(frame,czy_uwzglednic_alternatywna_nazwe,i)...end; </syntaxhighlight> Wtedy ciało funkcji tej, czyli jego definicja w środku, jest: <syntaxhighlight lang="lua"> -- Jest liczony numer parametru nazwy przestrzeni nazw, domyslnie chodzi tu o numer bazowy parametrów przestrzennych; local numer_jednostki=i or frame.args["numer jednostki"]; local liczba_numeru_jednostki=((numer_jednostki)and(tonumber(numer_jednostki)) or 0); local pudelko_pomocne_modul=require("Module:Pudełko/Pomocne"); -- Liczy nazwę przestrzeni nazw przedmiotową na podstawie podanych parametrów; return pudelko_pomocne_modul.Uzyskanie_nazw_jednostki(frame,1,liczba_numeru_jednostki,nil,1); </syntaxhighlight> Parametry funkcji: * {{Code|frame}} - tablica ramki tablicy transportu, * {{Code|czy_uwzglednic_alternatywna_nazwe}} - czy ma uwzględniać nazwę przestrzeni nazw domyślną szablonu, dostępne wartości: {{Code|false}}, w której nazwa domyślna nie jest uwzględniana wtedy, oraz {{Code|nil}} i {{Code|true}}, które oznaczają to samo, w tym jeżeli ona jest uwzględniana, wtedy jest brany parametr pierwszy dziecka, który musi istnieć przy takiej wartości tego parametru, tzn. {{Code|{{m|Pudełko|Nazwa przedmiotowej przestrzeni nazw 3|Dyskusja szablonu}}}} - ta nazwa domyślna zostanie zamieniona na przedmiotową, a jak ona by była przedmiotowa, to żadnej zamiany by nie było, a nazwa uzyskana z nazwy przestrzeni nazw z parametrów przestrzennych jest w takim przypadku błędna, to w takim razie brany jest ten parametr, a jeżeli ta nazwa domyślna jest błędna, czyli {{Code|{{m|Pudełko|Nazwa przedmiotowej przestrzeni nazw 3|Moja przestrzeń}}}}, wtedy funkcja zwraca stan błędu {{Code|(błąd)}}. * {{Code|i}} - numer zmiennej nazwy przestrzeni nazw. Funkcja wykorzystuje {{Code|{{sr|#p.Uzyskanie_nazw_jednostki(frame,...)|p=Pudełko/Pomocne}}}} do wyznaczania ogólnego nazwy przestrzeni nazw dla pozycji bazowej i numerkowej, tzn. dla pozycji: jeden, dwa, trzy,..., itd, i ich ogólnej. Parametr ramki tablicy transportu rodzica szablonu: * {{Code|nazwa przestrzeni nazw}}, {{Code|nazwa przestrzeni nazw 1}}, {{Code|nazwa przestrzeni nazw 2}}, {{Code|nazwa przestrzeni nazw 3}},..., {{Code|nazwa przestrzeni nazw i}} - nazwy przestrzeni nazw dla pozycji bazowej oraz zwykłej i ogólnej numerkowej, * {{Code|typ jednostki}}, {{Code|typ jednostki 1}}, {{Code|typ jednostki 2}}, {{Code|typ jednostki 3}},..., {{Code|typ jednostki i}} - typy jednostek, którym odpowiadają pewne przestrzenie przedmiotowe, dla pozycji bazowej, numerkowej i ogólnej. Parametry ramki tablicy transportu dziecka: * Parametry dziecka są takie same jak rodzica dla funkcji pudełkowej plus tu wymienione, * {{Code|numer jednostki}} - jak parametr {{Code|i}} nie został ustawiony, to wtedy liczy się ta zmienna. Przykłady: <syntaxhighlight lang="mediawiki"> {{Nazwa szablonu|nazwa przestrzeni nazw=Wikibooks|nazwa przestrzeni nazw=|nazwa przestrzeni nazw i=|nazwa jednostki=Dyskusja Wikibooks:Strona}} <hr /> {{Nazwa szablonu|nazwa przestrzeni nazw=Wikibooks|nazwa przestrzeni nazw 1=Szablon|nazwa przestrzeni nazw i=|nazwa jednostki 2=Dyskusja Wikibooks:Strona}} </syntaxhighlight> W dziecku powiedzmy jest wywołanie, i szukamy nazwy przestrzeni nazw o numerze dwa, która nie została podana, ale istnieje za to jej wersji ogólna {{Code|nazwa przestrzeni nazw i}} i domyślna {{Code|nazwa przestrzeni nazw}}: <syntaxhighlight lang="mediawiki"> {{#invoke:Pudełko|Nazwa przedmiotowej przestrzeni nazw 3|numer jednostki=1}} </syntaxhighlight> Na podstawie powyższego przykładu otrzymamy wynik o schemacie, nie wyniku, bo tam nie ma zmiennej {{Code|nazwa przestrzeni nazw 1}}, ale jest {{Code|nazwa przestrzeni nazw i}}: <syntaxhighlight lang="mediawiki"> <!-- Ale nie "nazwa przestrzeni nazw""; --> <!-- nazwa przestrzeni nazw=""; --> <!-- Czyli wynik: --> <!-- wynik pusty --> <!-- Widzimy, że wygenerowała się nazwa przestrzeni nazw, którą jest przestrzeń nazw główna, jest ciągiem pustym: ""; --> <hr /> <!-- Ale nie "Nazwa przestrzeni nazw 2", bo jej nie ma, ale za to istnieje "nazwa przestrzeni nazw i"; --> <!-- nazwa przestrzeni nazw 2=nazwa przestrzeni nazw i="", a nazwa jednostki 2="Dyskusja Wikibooks:Strona"; --> <!-- Czyli wynik: --> Wikibooks <!-- Widzimy, że wygenerowała się nazwa przestrzeni nazw, którą jest przestrzeń nieprogramowa, ale projektu, wychodząca z nazwy jednostek w tym przypadku z "nazwa jednostki 2"; --> </syntaxhighlight> Dla parametrów numerkowych nie jest brana w tym powyższym przykładzie zmienna {{Code|nazwa przestrzeni nazw 2}}, bo jej nie ma, ale za to jest {{Code|nazwa przestrzeni nazw i}}, bo ona występuje jako parametr domyślny ogólny dla parametrów numerkowych. Tytaj jest używana jest zmienna {{Code|nazwa jednostki 2}} do wygenerowania ostatecznego wyniku, bo jak można zauważyć, parametry przestrzenne wskazują na przestrzeń główną, a nazwy jednostek już nie. Dla parametrów bazowych mamy zmienna {{Code|nazwa przestrzeni nazw}}, ona jest pusta, więc to zostanie wziete do ostatecznego wyniku. Przykłady w wikikodzie: * {{Code|{{m|Pudełko|Nazwa przestrzeni nazw 3|nazwa przestrzeni nazw{{=}}|nazwa jednostki{{=}}Dyskusja Wikibooks:Strona}}}} → {{Tt|{{#invoke:Pudełko|Nazwa przestrzeni nazw 3|nazwa przestrzeni nazw=|nazwa jednostki=Dyskusja Wikibooks:Szablon}}}} * {{Code|{{m|Pudełko|Nazwa przestrzeni nazw 3|nazwa przestrzeni nazw 2{{=}}|nazwa jednostki 2{{=}}Dyskusja Wikibooks:Strona|numer jednostki{{=}}2}}}} → {{Tt|{{#invoke:Pudełko|Nazwa przestrzeni nazw 3|nazwa przestrzeni nazw 2=|nazwa jednostki 2=Dyskusja Wikibooks:Szablon|numer jednostki=2}}}} Powyżej dla przykładu podano parametry nie w rodzicu w szablonie, tylko w dziecku, jeśli chodzi o parametry nazw przestrzeni nazw, ale ich się za to nie powinno podawać w tych ramach, tylko w szablonach, w których wywoływane są te ramki pudełek {{Code|{{m|Pudełko}}}}, ale tak tutaj tak zrobiono by było najłatwiej sprawdzić działanie tego typu funkcji. Analogicznie możemy podawać parametry typu jednostki, np.: wywołaniu modułowym {{Code|{{m|Pudełko|Nazwa przedmiotowej przestrzeni nazw 3|typ jednostki 2{{=}}strona szablonu|numer jednostki{{=}}2}}}}, ale o tym więcej w rozdziałach {{Code|{{sr|# p["Przedmiotowy typ jednostki 3"](frame,i)|p=Pudełko}}}} w „{{sr|#Funkcje typu jednostki|p=Pudełko}}”, ale wtedy ta sama nazwa przestrzeni nazw reprezentowana przez {{Parametr|typ jednostki 2|strona szablonu}}, jest zamieniana na to samo, lepiej jest tutaj używać parametrów przestrzennych nazw niż typu jednostki, bo typ jednostki ma taką samą wartość dla przestrzeni przedmiotowej, co dyskusji. Tutaj parametr dyskusji typu jednostki bazowy i numerkowy ogólny, czy szczegółowy, nie gra roli, bo nawet, gdy wygenerujemy nazwę przestrzeni dyskusji za pomoca tego parametru, to i tak otrzymamy na samym końcu jego nazwę przedmiotową. Jeżeli typ jednostki bazowy wskazuje na przestrzeń nazw główną, wtedy się nie liczą parametry nazw jednostek, a na numerkowy, wtedy się liczy. Również parametry typu jednostki nie powinno się podawać w dziecku w ramce, tylko w rodzicu w szablonie jako parametry, w którym ta ramka jest wywoływana, ale tutaj podano jedynie dla przykładu, jak najłatwiej sprawdzić działanie tych parametrów tej funkcji. Najpierw w funkcji nagłówku brane są parametry nazw przestrzeni nazw, a jeżeli ich nie ma, to parametry typu jednostki, a jeżeli nie ma, to generowane są nazwy na podstawie aktualnego modułu. === {{Code|p["Nazwa przestrzeni nazw dyskusji 3"](frame,i)}} === Funkcja pisze nazwę przestrzeni nazw dyskusji jakikolwiek nazwy przestrzeni nazw (tzn. nazwę dyskusji nazwy przestrzenie nazw, czyli nie przedmiotowej, zamieniana jest na nią samą, czyli identyfikator przestrzeni się nie zmienia, a przedmiotową, nie dyskusji, przekształca się na dyskusji jej odpowiadającą, czyli w tym przypadku identyfikator przestrzeni zwiększa się o numer więcej), według, i nie zawsze tylko, podanej w zmiennej {{Code|nazwa przestrzeni nazw}} dla pozycja bazowej w podanych parametrach szablonu rodzicu ramki dziecka, lub dla innej pozycji należy parametr podawać w formie {{Code|nazwa przestrzeni nazw 1}}, {{Code|nazwa przestrzeni nazw 2}}, {{Code|nazwa przestrzeni nazw 3}},..., lub te parametry można podać w postaci ogólnej {{Code|nazwa przestrzeni nazw i}}. W tej funkcji trzeba też podawać parametry nazwy jednostek {{Code|nazwa jednostki}}, {{Code|nazwa jednostki 1}}, {{Code|nazwa jednostki 2}}, {{Code|nazwa jednostki 3}},... Parametry podaje się w parametrach rodzica wywołania tej funkcji {{Code|{{m|Pudełko|Nazwa przestrzeni nazw dyskusji 3}}}} (ale ich nie trzeba podawać w dziecku, ale można) i w parametrach dziecka, jeśli chodzi o zmienną {{Code|numer jednostki}}, czyli np.: {{Code|{{m|Pudełko|Nazwa przestrzeni nazw dyskusji 3|numer jednostki{{=}}<jakaś liczba całkowita dodatnia>}}}}. Te parametry przestrzenne zamiast w rodzicu w szablonie można podać w ramce dziecka, wtedy parametry dziecka mają pierwszeństwo. Przestrzeń nazw z parametrów nazw przestrzennych bazowych (bez numerka) może odpowiadać wartości przestrzeni głównej, to wtedy odpowiednia przestrzeń nazw z parametru nazwy jednostki się nie liczy w tej funkcji, aby się liczyła należy użyć funkcji {{Code|{{sr|#p["Nazwa przestrzeni nazw dyskusji"](frame,...)|p=Pudełko}}}}. Przestrzeń nazw z parametrów nazw przestrzennych numerkowych może odpowiadać wartości przestrzeni głównej, to wtedy odpowiednia przestrzeń nazw z parametru nazwy jednostki się liczy w tej funkcji, wtedy jest liczona nazwa przestrzeni nazw z tego parametru. Gdy parametry przestrzenne lub typ jednostki w drugim podejściu nie wskazują na przestrzeń główną, to wtedy działanie tej funkcji jest podobne do {{Code|{{sr|#p["Nazwa przestrzeni nazw dysskusji 2"](frame,...)|p=Pudełko}}}}. Definicja skrótowa funkcji: <syntaxhighlight lang="lua"> p["Nazwa przestrzeni nazw dyskusji 3"]=function(frame,czy_uwzglednic_alternatywna_nazwe,i)...end; </syntaxhighlight> Wtedy ciało funkcji tej, czyli jego definicja w środku, jest: <syntaxhighlight lang="lua"> -- Jest liczony numer parametru nazwy przestrzeni nazw, domyslnie chodzi tu o numer bazowy parametrów przestrzennych; local numer_jednostki=i or frame.args["numer jednostki"]; local liczba_numeru_jednostki=((numer_jednostki)and(tonumber(numer_jednostki)) or 0); local pudelko_pomocne_modul=require("Module:Pudełko/Pomocne"); -- Liczy nazwę przestrzeni nazw dyskusji na podstawie podanych parametrów; return pudelko_pomocne_modul.Uzyskanie_nazw_jednostki(frame,2,liczba_numeru_jednostki,nil,1); </syntaxhighlight> Parametry funkcji: * {{Code|frame}} - tablica ramki tablicy transportu, * {{Code|czy_uwzglednic_alternatywna_nazwe}} - czy ma uwzględniać nazwę przestrzeni nazw domyślną szablonu, dostępne wartości: {{Code|false}}, w której nazwa domyślna nie jest uwzględniana wtedy, oraz {{Code|nil}} i {{Code|true}}, które oznaczają to samo, w tym jeżeli ona jest uwzględniana, wtedy jest brany parametr pierwszy dziecka, który musi istnieć przy takiej wartości tego parametru, tzn. {{Code|{{m|Pudełko|Nazwa przestrzeni nazw dyskusji 3|Szablon}}}}, a nazwa uzyskana nazwy przestrzeni nazw jest w takim przypadku błędna, a jeżeli nazwa domyślna jest błędna, czyli {{Code|{{m|Pudełko|Nazwa przestrzeni nazw dyskusji 3|Moja przestrzeń}}}}, wtedy funkcja zwraca stan błędu {{Code|(błąd)}}. * {{Code|i}} - numer zmiennej nazwy przestrzeni nazw. Funkcja wykorzystuje {{Code|{{sr|#p.Uzyskanie_nazw_jednostki(frame,...)|p=Pudełko/Pomocne}}}} do wyznaczania ogólnego nazwy przestrzeni nazw dla pozycji bazowej i numerkowej, tzn. dla pozycji: jeden, dwa, trzy,..., itd, i ich ogólnej. Parametr ramki tablicy transportu rodzica szablonu: * {{Code|nazwa przestrzeni nazw}}, {{Code|nazwa przestrzeni nazw 1}}, {{Code|nazwa przestrzeni nazw 2}}, {{Code|nazwa przestrzeni nazw 3}},..., {{Code|nazwa przestrzeni nazw i}} - nazwy przestrzeni nazw dla pozycji bazowej oraz zwykłej i ogólnej numerkowej, * {{Code|nazwa jednostki}}, {{Code|nazwa jednostki 1}}, {{Code|nazwa jednostki 2}}, {{Code|nazwa jednostki 3}},... - nazwy jednostek dla pozycji bazowej i numerkowej, * {{Code|typ jednostki}}, {{Code|typ jednostki 1}}, {{Code|typ jednostki 2}}, {{Code|typ jednostki 3}},..., {{Code|typ jednostki i}} - typy jednostek, którym odpowiadają pewne przestrzenie przedmiotowe, dla pozycji bazowej, numerkowej i ogólnej. Parametry ramki tablicy transportu dziecka: * Parametry dziecka są takie same jak rodzica dla funkcji pudełkowej plus tu wymienione, * {{Code|numer jednostki}} - jak parametr {{Code|i}} nie został ustawiony, to wtedy liczy się ta zmienna. Przykłady: <syntaxhighlight lang="mediawiki"> {{Nazwa szablonu|nazwa przestrzeni nazw=Wikibooks|nazwa przestrzeni nazw=|nazwa przestrzeni nazw i=|nazwajednostki=Szablon:Strona|nazwa jednostki 2=Wikibooks:Strona}} <hr /> {{Nazwa szablonu|nazwa przestrzeni nazw=Wikibooks|nazwa przestrzeni nazw 1=Szablon|nazwa przestrzeni nazw i=|nazwa jednostki 2=Wikibooks:Strona}} </syntaxhighlight> W dziecku powiedzmy jest wywołanie, i szukamy nazwy przestrzeni nazw o numerze dwa, która została podana, ale istnieje za to jej wersji ogólna {{Code|nazwa przestrzeni nazw i}} i domyślna {{Code|nazwa przestrzeni nazw}}, ale wtedy dla tego numerkowego liczy się to ogólne z {{Code| i}}, a ponieważ ta nazwa jest pusta, więc będziemy liczyli nazwę przestrzeni nazw z {{Code|nazwa jednostki 2}}: <syntaxhighlight lang="mediawiki"> {{#invoke:Pudełko|Nazwa przestrzeni nazw 3}} <hr /> {{#invoke:Pudełko|Nazwa przestrzeni nazw 3|numer jednostki=2}} </syntaxhighlight> Na podstawie powyższego przykładu otrzymamy wynik o schemacie, nie wyniku, bo tam nie ma zmiennej {{Code|nazwa przestrzeni nazw 1}}, ale jest {{Code|nazwa przestrzeni nazw i}}: <syntaxhighlight lang="mediawiki"> <!-- Ale nie "nazwa przestrzeni nazw""; --> <!-- nazwa przestrzeni nazw=""; --> <!-- Czyli wynik: --> Dyskusja <!-- Widzimy, że wygenerowała się nazwa przestrzeni nazw, którą jest przestrzeń nazw główna, jest ciągiem pustym: ""; --> <hr /> <!-- Ale nie "Nazwa przestrzeni nazw 2", bo jej nie ma, ale za to istnieje "nazwa przestrzeni nazw i"; --> <!-- nazwa przestrzeni nazw 2=nazwa przestrzeni nazw i="", a nazwa jednostki 2="Wikibooks:Strona"; --> <!-- Czyli wynik: --> Dyskusja Wikibooks <!-- Widzimy, że wygenerowała się nazwa przestrzeni nazw, którą jest przestrzeń nieprogramowa, ale projektu, wychodząca z nazwy jednostek w tym przypadku z "nazwa jednostki 2"; --> </syntaxhighlight> Dla parametrów numerkowych nie jest brana w tym powyższym przykładzie zmienna {{Code|nazwa przestrzeni nazw 2}}, bo jej nie ma, ale za to jest {{Code|nazwa przestrzeni nazw i}}, bo ona występuje jako parametr domyślny ogólny dla parametrów numerkowych. Tytaj jest używana jest zmienna {{Code|nazwa jednostki 2}} do wygenerowania ostatecznego wyniku, bo jak można zauważyć, parametry przestrzenne wskazują na przestrzeń główną, a nazwy jednostek już nie. Dla parametrów bazowych mamy zmienna {{Code|nazwa przestrzeni nazw}}, ona jest pusta, więc to zostanie wziete do ostatecznego wyniku. Przykłady w wikikodzie: * {{Code|{{m|Pudełko|Nazwa przestrzeni nazw dyskusji 3|nazwa przestrzeni nazw{{=}}|nazwa jednostki{{=}}Wikibooks:Strona}}}} → {{Tt|{{#invoke:Pudełko|Nazwa przestrzeni nazw dyskusji 3|nazwa przestrzeni nazw=|nazwa jednostki=Wikibooks:Szablon}}}} * {{Code|{{m|Pudełko|Nazwa przestrzeni nazw dyskusji 3|nazwa przestrzeni nazw 2{{=}}|nazwa jednostki 2{{=}}Wikibooks:Strona|numer jednostki{{=}}2}}}} → {{Tt|{{#invoke:Pudełko|Nazwa przestrzeni nazw dyskusji 3|nazwa przestrzeni nazw 2=|nazwa jednostki 2=Wikibooks:Szablon|numer jednostki=2}}}} Powyżej dla przykładu podano parametry nie w rodzicu w szablonie, tylko w dziecku, jeśli chodzi o parametry nazw przestrzeni nazw i nazw jednostek, ale ich się za to nie powinno podawać w tych ramach, tylko w szablonach, w których wywoływane są te ramki pudełek {{Code|{{m|Pudełko}}}}, ale tak tutaj tak zrobiono by było najłatwiej sprawdzić działanie tego typu funkcji. Analogicznie możemy podawać parametry typu jednostki, np.: wywołaniu modułowym {{Code|{{m|Pudełko|Nazwa przestrzeni nazw dyskusji 3|typ jednostki 2{{=}}Podręcznik|nazwa jednostki 2{{=}}Szablon:Strona|numer jednostki{{=}}2}}}} (ale wtedy jest brana przestrzeń nazw z nazwy jednostki), ale o tym więcej w rozdziałach {{Code|{{sr|# p["Dyskusyjny typ jednostki 3"](frame,i)|p=Pudełko}}}} w „{{sr|#Funkcje typu jednostki|p=Pudełko}}”, on definiuje przestrzenie dyskusji, ale można użyć parametru dyskusji typu jednostki z obojętnie jaką wartością niepustą, czy pustą, czy nawet jej nie podamy, wtedy wyświetli się nazwa przestrzeni nazw dyskusji. Jeżeli typ jednostki bazowy wskazuje na przestrzeń nazw główną, wtedy się nie liczą parametry nazw jednostek, a na numerkowy, wtedy się liczy. Również parametry typu jednostki nie powinno się podawać w dziecku w ramce, tylko w rodzicu w szablonie jako parametry, w którym ta ramka jest wywoływana, ale tutaj podano jedynie dla przykładu, jak najłatwiej sprawdzić działanie tych parametrów tej funkcji. Najpierw w funkcji nagłówku brane są parametry nazw przestrzeni nazw, a jeżeli ich nie ma, to parametry typu jednostki, a jeżeli nie ma lub parametry przestrzenne wskazują na przestrzeń główną, i nie ma nazwy jednostki, to generowane są nazwy tej funkcji na podstawie aktualnej strony. == Funkcje nazw jednostki trzeciej wersji == === {{Code|p["Nazwa jednostki 3"](frame,i)}} === === {{Code|p["Nazwa przedmiotowa jednostki 3"](frame,i)}} === === {{Code|p["Nazwa dyskusji jednostki 3"](frame,i)}} === == Funkcje typu jednostki == === {{Code|p["Typ jednostki"](frame,i)}} === === {{Code|p["Typ jednostki 2"](frame,i)}} === === {{Code|p["Typ jednostki 3"](frame,i)}} === === Funkcje typu jednostki przedmiotowe === ==== {{Code|p["Przedmiotowy typ jednostki"](frame,i)}} ==== ==== {{Code|p["Przedmiotowy typ jednostki 2"](frame,i)}} ==== ==== {{Code|p["Przedmiotowy typ jednostki 3"](frame,i)}} ==== === Fukcje typu jednostki dyskusji === ==== {{Code|p["Dyskusyjny typ jednostki"](frame,i)}} ==== ==== {{Code|p["Dyskusyjny typ jednostki 2"](frame,i)}} ==== ==== {{Code|p["Dyskusyjny typ jednostki 3"](frame,i)}} ==== == Funkcje chech pudełka == === {{Code|p["Cecha pudełka"](frame)}} === === {{Code|p["Przedmiotowa cecha pudełka"](frame)}} === === {{Code|p["Dyskusyjna cecha pudełka"](frame)}} === == Fukcje ogólnego pudełka == === {{Code|p["Ogólne pudełko"](frame)}} === == Funkcje ogólne == === {{Code|p["Tekst pudełka"](frame)}} === == Funkcje błędów pudełka == === {{Code|p["Błędy pudełka"](frame)}} === === {{Code|p["Przedmiotowe błędy pudełka"](frame)}} === === {{Code|p["Dyskusyjne błędy pudełka"](frame)}} === == Funkcje nazw stron == === {{Code|p["Nazwa strony głównej projektu"](frame,i)}} === === {{Code|p["Nazwa strony głównej dla dzieci projektu"](frame,i)}} === == Funkcje kodów == === {{Code|p["Kod języka"](frame,i)}} === === {{Code|p["Kod projektu"](frame,i)}} === === {{Code|p["Klucz projektu"](frame,i)}} === == Funkcje wiki == === {{Code|p["Inny niż język bieżący wiki"](frame)}} === === {{Code|p["Inne niż lokalne wiki"](frame)}} === === {{Code|p["Inne niż bieżące wiki"](frame)}} === == Funkcje typów parametrów, czy podane je == === {{Code|p["Podano parametry nienazwane"](frame)}} === === {{Code|p["Podano parametry numerowane"](frame)}} === === {{Code|p["Podano parametry nazwane"](frame)}} === == Funkcje kodów tego projektu == === {{Code|p["Kod projektu tego projektu"](frame)}} === === {{Code|p["Kod języka tego projektu"](frame)}} === === {{Code|p["Klucz projektu tego projektu"](frame)}} === == Funkcje stron == === {{Code|p["Strona główna tego projektu"](frame)}} === === {{Code|p["Strona główna dla dzieci tego projektu"](frame)}} === == Funkcje nazw stron drugiej wersji == === {{Code|p["Nazwa strony głównej dla dzieci projektu 2"](frame)}} === === {{Code| p["Nazwa strony głównej projektu 2"](frame)}} === {{BrClear}} <noinclude><!-- -->{{ProstaStronaKoniec}}<!-- -->{{Kategoria|Opisy funkcji, w Lua w Scribunto, w modułach}}<!-- --></noinclude> afev1qaheax5437i12y4emusdblux0x 540423 540422 2026-04-23T20:05:17Z Persino 2851 /* {{Code|p["Nazwa przedmiotowej przestrzeni nazw 3"](frame,i)}} */ 540423 wikitext text/x-wiki <noinclude>{{ProstaStronaStart | nagłówek = {{Podrozdział|{{ld2|Pudełko}}|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 pudelko_modul=require("Module:Pudełko"); </syntaxhighlight> dzięki, któremu można wypisywać funkcje należącego do niego. Posługuje się na parametrach pudełkowych {{Parametr|nazwa przestrzeni nazw}} (czy też bez numerka {{Parametr|nazwa przestrzeni nazw i}} dla tego numerowanego) lub te z numerkiem po jednej spacji w nich (ale nie dla tego z końcówką {{Code| i}}) mogą zostać użyte jako parametry szablonu. Moduł {{Code|{{ld2|Pudełko}}}} przedstawia funkcje nazw w oparciu o funkcje nazw {{Code|{{ld2|Nazwy}}}}, generuje on nazwy za pomocą parametrów pudełkowych podanych poniżej. Parametr {{Parametr|nazwa jednostki}} (lub parametr {{Parametr|cel}} dla numerka tego pierwszego, tego alternatywnego), lub te z numerkiem po jednej spacji w nazwie parametru, albo numerowane numerkami {{Code|1}}, {{Code|2}},..., mogą zostać użyte jako parametry szablonu. Parametry określające rodzaj jednostki {{Parametr|typ jednostki}} z {{Parametr|dyskusja typu jednostki}}, itp. w wersjach z numerkiem po jednej spacji w nich mogą zostać użyte jako parametry szablonu. A te tymi numerowanymi liczbami naturalnymi {{Tt|nazwy jednostki}} od jedynki wzwyż poprzez szablon, w którym są one użyte, one też mogą być użyte z dwukropkiem, te numerowane, na samym początku nazwy, wtedy one są traktowane jako pełne nazwy strony, i wtedy one nie zostaną z interpretowane, że do nich trzeba użyć parametr odpowiedni z nazwą przetrzeni nazw z tego numerowanego, czy ogólny, aby utworzyć znów inną pełną nazwę strony dla tego numerka. Zestawienie: * {{Code|nazwa przestrzeni nazw}} i {{Code|nazwa przestrzeni nazw i}} (ogólna nazwa przestrzeni nazw dla wszystkich numerków, i tych numerowanych jednostek) - i to pierwsze z numerkiem, tzn. {{Code|nazwa przestrzeni nazw 1}}, {{Code|nazwa przestrzeni nazw 2}}, ..., * {{Code|nazwa jednostki}} - i te z numerkiem: {{Code|nazwa jednostki 1}}, {{Code|nazwa jednostki 2}}, ..., lub gdy jest zamiast tego parametrem numerowany, {{Code|1}}, {{Code|2}},..., który dla tego pierwszego może być uznany jako: {{Code|cel}} {{=}} {{Code|1}}, * {{Code|typ jednostki}} (parametr bazowy) i {{Code|typ jednostki i}} (parametr domyślny numerkowy) - i te z numerkiem: {{Code|typ jednostki 1}}, {{Code|typ jednostki 2}}, ..., tzn. gdy chcemy określić z jakim typem jednostki mamy do czynienia w zależności do jakiej przestrzeni nazw należy, a w danej, czy jest on np. programowy, czy tylko jest opisem, jak to bywa w szablonach {{Np|Template|link=tak}}, podobnie jest w przypadku {{Np|Module|link=tak}}, czy jak jest w innych przestrzeniach nazw, ** {{Code|dyskusja typu jednostki}} (parametr bazowy) i {{Code|dyskusja typu jednostki i}} (parametr domyślny numerkowy) - i te z numerkiem: {{Code|dyskusja typu jednostki 1}}, {{Code|dyskusja typu jednostki 2}}, ..., gdy chcemy określić wartością niepustą,że chodzi tutaj o typ jednostki. == {{Code|p.CzyNiepoprawnaNazwa(nazwa_jednostki)}} == Funkcja sprawdzajaca, czy jest poprawnie podana nazwa jednostki, czy ma poprawną nazwę. Znakami tymi, z których nie powinna składać się nazwa jest {{Code|<nowiki>{}<>|[]#\n</nowiki>}} i dodatkowo znak {{Code|&#127;}} (kod {{Code|{{Nowiki|&#127;}}}}). Też nie może składać się z trzech znaków tyldy, tzn. {{Code|<nowiki>~~~</nowiki>}}. Również w swojej budowie nie może składać się ze kodów {{Strong|HTML}} literowych o wzorze {{Code|{{Nowiki|&(%a+);}}}}. Natomiast może składać się z {{Code|{{Nowiki|&#(%d+);}}}} i {{Code|{{Nowiki|&#x(%x+);}}}}, ale w pierw te kody muszą być zamienione na normalne znaki. Skrótowa definicja funkcji: <syntaxhighlight lang="lua"> function p.CzyNiepoprawnaNazwa(nazwa_jednostki)...end; </syntaxhighlight> Wtedy ciało funkcji tej, czyli jego definicja w środku, jest: <syntaxhighlight lang="lua"> -- Moduł: "Moduł:Html/dane", służy do ładowania znaku o kodzie HTML "&#127;"; local html_dane_modul=mw.loadData("Module:Html/dane"); return mw.ustring.match(nazwa_jednostki,"[{}<>|%[%]#\n"..html_dane_modul.znak_127.."]+") or mw.ustring.match(nazwa_jednostki,"~~~") or mw.ustring.match(nazwa_jednostki,"&(%a+);"); </syntaxhighlight> Parametry: * {{Code|nazwa_jednostki}} - nazwa jednostki do sprawdzenia. Przykłady: <syntaxhighlight lang="lua"> local pudelko_modul=require("Module:Pudełko"); -- Podana przykładowa niepoprawna nazwa jedostki local nazwa_jednostki="Nazwa pliku [[Nazwa linku w pliku]]"; -- Fukcja zwróci wartość: local czy_poprawna_nazwa=true; local czy_poprawna_nazwa=pudelko_modul.CzyNiepoprawnaNazwa(nazwa_jednostki); </syntaxhighlight> == Funkcje nazw przestrzeni nazw == === {{Code|p["Nazwa przestrzeni nazw"](frame,...)}} === Funkcja pisze nazwę przestrzeni nazw, niezależnie, czy to jest przedmiotowa, czy dyskusji, według podanej w zmiennej {{Code|nazwa przestrzeni nazw}} dla pozycja bazowej w podanych parametrach szablonu rodzicu ramki dziecka, lub dla innej pozycji należy parametr podawać w formie {{Code|nazwa przestrzeni nazw 1}}, {{Code|nazwa przestrzeni nazw 2}}, {{Code|nazwa przestrzeni nazw 3}},..., lub te parametry można podać w postaci ogólnej {{Code|nazwa przestrzeni nazw i}}. Parametry podaje się w parametrach rodzica wywołania tej funkcji {{Code|{{m|Pudełko|Nazwa przestrzeni nazw}}}} (ale ich nie trzeba podawać w dziecku, ale można) i w parametrach dziecka, jeśli chodzi o zmienną {{Code|numer jednostki}}, czyli np.: {{Code|{{m|Pudełko|Nazwa przestrzeni nazw|numer jednostki{{=}}<jakaś liczba całkowita dodatnia>}}}}. Te parametry przestrzenne zamiast w rodzicu w szablonie można podać w ramce dziecka, wtedy parametry dziecka mają pierwszeństwo. Przestrzeń nazw z parametrów nazw przestrzennych może odpowiadać wartości przestrzeni głównej, to wtedy odpowiednia przestrzeń nazw z parametru nazwy jednostki się nie liczy w tej funkcji, aby się liczyła należy użyć funkcji {{Code|{{sr|#p["Nazwa przestrzeni nazw 2"](frame,...)|p=Pudełko}}}}. Definicja skrótowa funkcji: <syntaxhighlight lang="lua"> p["Nazwa przestrzeni nazw"]=function(frame,czy_uwzglednic_alternatywna_nazwe,i)...end; </syntaxhighlight> Wtedy ciało funkcji tej, czyli jego definicja w środku, jest: <syntaxhighlight lang="lua"> -- Jest liczony numer parametru nazwy przestrzeni nazw, domyslnie chodzi tu o numer bazowy parametrów przestrzennych; local numer_jednostki=i or frame.args["numer jednostki"]; local liczba_numer_jednostki=((numer_jednostki)and(tonumber(numer_jednostki))or 0); local pudelko_pomocne_modul=require("Module:Pudełko/Pomocne"); -- Liczy nazwę przestrzeni nazw na podstawie podanych parametrów; return pudelko_pomocne_modul.Nazwa_przestrzeni_nazw(frame,0, czy_uwzglednic_alternatywna_nazwe,liczba_numer_jednostki); </syntaxhighlight> Parametry funkcji: * {{Code|frame}} - tablica ramki tablicy transportu, * {{Code|czy_uwzglednic_alternatywna_nazwe}} - czy ma uwzględniać nazwę przestrzeni nazw domyślną szablonu, dostępne wartości: {{Code|false}}, w której nazwa domyślna nie jest uwzględniana wtedy, oraz {{Code|nil}} i {{Code|true}}, które oznaczają to samo, w tym jeżeli ona jest uwzględniana, wtedy jest brany parametr pierwszy dziecka, który musi istnieć przy takiej wartości tego parametru, tzn. {{Code|{{m|Pudełko|Nazwa przestrzeni nazw|Szablon}}}}, a nazwa uzyskana nazwy przestrzeni nazw jest w takim przypadku błędna, a jeżeli nazwa domyślna jest błędna, czyli {{Code|{{m|Pudełko|Nazwa przestrzeni nazw|Moja przestrzeń}}}}, wtedy funkcja zwraca stan błędu {{Code|(błąd)}}. * {{Code|i}} - numer zmiennej nazwy przestrzeni nazw. Funkcja wykorzystuje {{Code|{{sr|#p.Nazwa_przestrzeni_nazw(frame,...)|p=Pudełko/Pomocne}}}} do wyznaczania ogólnego nazwy przestrzeni nazw dla pozycji bazowej i numerkowej, tzn. dla pozycji: jeden, dwa, trzy,..., itd, i ich ogólnej. Parametr ramki tablicy transportu rodzica szablonu: * {{Code|nazwa przestrzeni nazw}}, {{Code|nazwa przestrzeni nazw 1}}, {{Code|nazwa przestrzeni nazw 2}}, {{Code|nazwa przestrzeni nazw 3}},..., {{Code|nazwa przestrzeni nazw i}} - nazwy przestrzeni nazw dla pozycji bazowej oraz zwykłej i ogólnej numerkowej, * {{Code|typ jednostki}}, {{Code|typ jednostki 1}}, {{Code|typ jednostki 2}}, {{Code|typ jednostki 3}},..., {{Code|typ jednostki i}} - typy jednostek, którym odpowiadają pewne przestrzenie przedmiotowe, dla pozycji bazowej, numerkowej i ogólnej, ** {{Code|dyskusja typu jednostki}}, {{Code|dyskusja typu jednostki 1}}, {{Code|dyskusja typ jednostki 2}}, {{Code|dyskusja typ jednostki 3}},..., {{Code|dyskusja typ jednostki i}} - czy dany typ jednostki ma przedstawiać, jeśli niepusta, przestrzeń dyskusji dla pozycji bazowej, numerkowej i ogólnej. Parametry ramki tablicy transportu dziecka: * Parametry dziecka są takie same jak rodzica dla funkcji pudełkowej plus tu wymienione, * {{Code|numer jednostki}} - jak parametr {{Code|i}} nie został ustawiony, to wtedy liczy się ta zmienna. Przykłady: <syntaxhighlight lang="mediawiki"> {{Nazwa szablonu|nazwa przestrzeni nazw=Wikibooks|nazwa przestrzeni nazw 2=Szablon|nazwa przestrzeni nazw i=Moduł}} </syntaxhighlight> W dziecku powiedzmy jest wywołanie, i szukamy nazwy przestrzeni nazw o numerze dwa, która nie została podana, ale istnieje za to jej wersji ogólna {{Code|nazwa przestrzeni nazw i}} i domyślna {{Code|nazwa przestrzeni nazw}}: <syntaxhighlight lang="mediawiki"> {{#invoke:Pudełko|Nazwa przestrzeni nazw|numer jednostki=1}} </syntaxhighlight> Na podstawie powyższego przykładu otrzymamy wynik o schemacie, nie wyniku, bo tam nie ma zmiennej {{Code|nazwa przestrzeni nazw 1}}, ale jest {{Code|nazwa przestrzeni nazw i}}: <syntaxhighlight lang="mediawiki"> <!-- Ale nie "nazwa przestrzeni nazw", bo jej nie ma, ale za to istnieje "nazwa przestrzeni nazw i"; --> <!-- nazwa przestrzeni nazw 2=nazwa przestrzeni nazw i=Moduł; --> <!-- Czyli wynik: --> Moduł <!-- Widzimy, że wygenerowała się nazwa przestrzeni nazw, którą jest przestrzeń programowa, którą również jest "Szablon"; --> </syntaxhighlight> Nie jest brana w tym powyższym przykładzie zmienna {{Code|nazwa przestrzeni nazw}}, bo jej nie ma, ale za to jest {{Code|nazwa przestrzeni nazw i}}, bo ona występuje jako parametr domyślny ogólny dla parametrów numerkowych. Przykłady w wikikodzie: * {{Code|{{m|Pudełko|Nazwa przestrzeni nazw|numer jednostki{{=}}2}}}} → {{Tt|{{#invoke:Pudełko|Nazwa przestrzeni nazw|numer jednostki=2}}}} * {{Code|{{m|Pudełko|Nazwa przestrzeni nazw|Szablon|nazwa przestrzeni nazw i{{=}}Moja przestrzeń|numer jednostki{{=}}2}}}} → {{Tt|{{#invoke:Pudełko|Nazwa przestrzeni nazw|Szablon|nazwa przestrzeni nazw i=Moja przestrzeń|numer jednostki=2}}}} * {{Code|{{m|Pudełko|Nazwa przestrzeni nazw|nazwa przestrzeni nazw 2{{=}}Szablon|numer jednostki{{=}}2}}}} → {{Tt|{{#invoke:Pudełko|Nazwa przestrzeni nazw|nazwa przestrzeni nazw 2=Szablon|numer jednostki=2}}}} * {{Code|{{m|Pudełko|Nazwa przestrzeni nazw|nazwa przestrzeni nazw 2{{=}}Szablon|numer jednostki{{=}}2}}}} → {{Tt|{{#invoke:Pudełko|Nazwa przestrzeni nazw|nazwa przestrzeni nazw i=Szablon|numer jednostki=2}}}} * {{Code|{{m|Pudełko|Nazwa przestrzeni nazw|nazwa przestrzeni nazw{{=}}Szablon|numer jednostki{{=}}2}}}} → {{Tt|{{#invoke:Pudełko|Nazwa przestrzeni nazw|nazwa przestrzeni nazw=Szablon|numer jednostki=2}}}} Powyżej dla przykładu podano parametry nie w rodzicu w szablonie, tylko w dziecku, jeśli chodzi o parametry nazw przestrzeni nazw, ale ich się za to nie powinno podawać w tych ramach, tylko w szablonach, w których wywoływane są te ramki pudełek {{Code|{{m|Pudełko}}}}, ale tak tutaj tak zrobiono by było najłatwiej sprawdzić działanie tego typu funkcji. Analogicznie możemy podawać parametry typu jednostki, np.: wywołaniu modułowym {{Code|{{m|Pudełko|Nazwa przestrzeni nazw|typ jednostki 2{{=}}strona szablonu|numer jednostki{{=}}2}}}}, ale o tym więcej w rozdziałach {{Code|{{sr|# p["Typ jednostki"](frame,i)|p=Pudełko}}}} w „{{sr|#Funkcje typu jednostki|p=Pudełko}}”, on definiuje przestrzenie przedmiotowe, ale można użyć parametru dyskusji typu jednostki z wartością niepustą, wtedy wyświetli się nazwa przestrzeni nazw dyskusji. Również parametry typu jednostki nie powinno się podawać w dziecku w ramce, tylko w rodzicu w szablonie jako parametry, w którym ta ramka jest wywoływana, ale tutaj podano jedynie dla przykładu, jak najłatwiej sprawdzić działanie tych parametrów tej funkcji. Najpierw w funkcji nagłówku brane są parametry nazw przestrzeni nazw, a jeżeli ich nie ma, to parametry typu jednostki, a jeżeli nie ma, to generowane są nazwy na podstawie aktualnego modułu. === {{Code|p["Nazwa przedmiotowej przestrzeni nazw"](frame,...)}} === Funkcja pisze przedmiotową nazwę przestrzeni nazw jakikolwiek nazwy przestrzeni nazw (tzn. nazwę przedmiotową nazwy przestrzenie nazw, czyli nie dyskusji, zamieniana jest na nią samą, czyli identyfikator przestrzeni się nie zmienia, a dyskusji, nie przedmiotową, przekształca się na przedmiotową jej odpowiadającą, czyli w tym przypadku identyfikator przestrzeni zmniejsza się o numer mniej), według podanej w zmiennej {{Code|nazwa przestrzeni nazw}} dla pozycja bazowej w podanych parametrach szablonu rodzicu ramki dziecka, lub dla innej pozycji należy parametr podawać w formie {{Code|nazwa przestrzeni nazw 1}}, {{Code|nazwa przestrzeni nazw 2}}, {{Code|nazwa przestrzeni nazw 3}},..., lub te parametry można podać w postaci ogólnej {{Code|nazwa przestrzeni nazw i}}. Parametry podaje się w parametrach rodzica wywołania tej funkcji {{Code|{{m|Pudełko|Nazwa przedmiotowej przestrzeni nazw}}}} (ale ich nie trzeba podawać w dziecku, ale można) i w parametrach dziecka, jeśli chodzi o zmienną {{Code|numer jednostki}}, czyli np.: {{Code|{{m|Pudełko|Nazwa przedmiotowej przestrzeni nazw|numer jednostki{{=}}<jakaś liczba całkowita dodatnia>}}}}. Te parametry przestrzenne zamiast w rodzicu w szablonie można podać w ramce dziecka, wtedy parametry dziecka mają pierwszeństwo. Parametry przestrzenne mogą mogą być podane w postaci przestrzeni przedmiotowej lub dyskusji, ale ta funkcja zawsze ją zamienia na przedmiotową. Przestrzeń nazw z parametrów nazw przestrzennych może odpowiadać wartości przestrzeni głównej, to wtedy odpowiednia przestrzeń nazw z parametru nazwy jednostki się nie liczy w tej funkcji, aby się liczyła należy użyć funkcji {{Code|{{sr|#p["Nazwa przedmiotowej przestrzeni nazw 2"](frame,...)|p=Pudełko}}}}. Definicja skrótowa funkcji: <syntaxhighlight lang="lua"> p["Nazwa przedmiotowej przestrzeni nazw"]=function(frame,czy_uwzglednic_alternatywna_nazwe,i)...end; </syntaxhighlight> Wtedy ciało funkcji tej, czyli jego definicja w środku, jest: <syntaxhighlight lang="lua"> -- Jest liczony numer parametru nazwy przestrzeni nazw, domyslnie chodzi tu o numer bazowy parametrów przestrzennych; local numer_jednostki=i or frame.args["numer jednostki"]; local liczba_numer_jednostki=((numer_jednostki)and(tonumber(numer_jednostki))or 0); local pudelko_pomocne_modul=require("Module:Pudełko/Pomocne"); -- Liczy nazwę przestrzeni nazw przedmiotową na podstawie podanych parametrów; return pudelko_pomocne_modul.Nazwa_przestrzeni_nazw(frame,1, czy_uwzglednic_alternatywna_nazwe,liczba_numer_jednostki); </syntaxhighlight> Parametry funkcji: * {{Code|frame}} - tablica ramki tablicy transportu, * {{Code|czy_uwzglednic_alternatywna_nazwe}} - czy ma uwzględniać nazwę przestrzeni nazw domyślną szablonu, dostępne wartości: {{Code|false}}, w której nazwa domyślna nie jest uwzględniana wtedy, oraz {{Code|nil}} i {{Code|true}}, które oznaczają to samo, w tym jeżeli ona jest uwzględniana, wtedy jest brany parametr pierwszy dziecka, który musi istnieć przy takiej wartości tego parametru, tzn. {{Code|{{m|Pudełko|Nazwa przedmiotowej przestrzeni nazw|Dyskusja szablonu}}}} - ta nazwa domyślna zostanie zamieniona na przedmiotową, a jak ona by była przedmiotowa, to żadnej zamiany by nie było, a nazwa uzyskana z nazwy przestrzeni nazw z parametrów przestrzennych jest w takim przypadku błędna, to w takim razie brany jest ten parametr, a jeżeli ta nazwa domyślna jest błędna, czyli {{Code|{{m|Pudełko|Nazwa przedmiotowej przestrzeni nazw|Moja przestrzeń}}}}, wtedy funkcja zwraca stan błędu {{Code|(błąd)}}. * {{Code|i}} - numer zmiennej nazwy przestrzeni nazw. Funkcja wykorzystuje {{Code|{{sr|#p.Nazwa_przestrzeni_nazw(frame,...)|p=Pudełko/Pomocne}}}} do wyznaczania ogólnego nazwy przestrzeni nazw dla pozycji bazowej i numerkowej, tzn. dla pozycji: jeden, dwa, trzy,..., itd, i ich ogólnej. Parametr ramki tablicy transportu rodzica szablonu: * {{Code|nazwa przestrzeni nazw}}, {{Code|nazwa przestrzeni nazw 1}}, {{Code|nazwa przestrzeni nazw 2}}, {{Code|nazwa przestrzeni nazw 3}},..., {{Code|nazwa przestrzeni nazw i}} - nazwy przestrzeni nazw dla pozycji bazowej oraz zwykłej i ogólnej numerkowej, * {{Code|typ jednostki}}, {{Code|typ jednostki 1}}, {{Code|typ jednostki 2}}, {{Code|typ jednostki 3}},..., {{Code|typ jednostki i}} - typy jednostek, którym odpowiadają pewne przestrzenie przedmiotowe, dla pozycji bazowej, numerkowej i ogólnej. Parametry ramki tablicy transportu dziecka: * Parametry dziecka są takie same jak rodzica dla funkcji pudełkowej plus tu wymienione, * {{Code|numer jednostki}} - jak parametr {{Code|i}} nie został ustawiony, to wtedy liczy się ta zmienna. Przykłady: <syntaxhighlight lang="mediawiki"> {{Nazwa szablonu|nazwa przestrzeni nazw=Dyskusja Wikibooks|nazwa przestrzeni nazw 2=Dyskusja szablonu|nazwa przestrzeni nazw i=Dyskusja modułu}} </syntaxhighlight> W dziecku powiedzmy jest wywołanie, i szukamy nazwy przestrzeni nazw o numerze dwa, która nie została podana, ale istnieje za to jej wersji ogólna {{Code|nazwa przestrzeni nazw i}} i domyślna {{Code|nazwa przestrzeni nazw}}: <syntaxhighlight lang="mediawiki"> {{#invoke:Pudełko|Nazwa przedmiotowej przestrzeni nazw|numer jednostki=1}} </syntaxhighlight> Na podstawie powyższego przykładu otrzymamy wynik o schemacie, nie wyniku, bo tam nie ma zmiennej {{Code|nazwa przestrzeni nazw 1}}, ale jest {{Code|nazwa przestrzeni nazw i}}: <syntaxhighlight lang="mediawiki"> <!-- Ale nie "nazwa przestrzeni nazw", bo jej nie ma, ale za to istnieje "nazwa przestrzeni nazw i"; --> <!-- nazwa przestrzeni nazw 2=nazwa przestrzeni nazw i=Dyskusja modułu; --> <!-- Czyli wynik: --> Moduł <!-- Widzimy, że wygenerowała się nazwa przestrzeni nazw, którą jest przestrzeń przedmiotowa programowa przestrzeni dyskusji "Dyskusja modułu", którą również jest "Szablon" jego przestrzeni dyskusji "Dyskusja szablonu", a dla ich przestrzeni przedmiotowej, zamiast dyskusji, to samo przekształca się na to samo; --> </syntaxhighlight> Nie jest brana w tym powyższym przykładzie zmienna {{Code|nazwa przestrzeni nazw}}, bo jej nie ma, ale za to jest {{Code|nazwa przestrzeni nazw i}}, bo ona występuje jako parametr domyślny ogólny dla parametrów numerkowych. Przykłady w wikikodzie: * {{Code|{{m|Pudełko|Nazwa przedmiotowej przestrzeni nazw|numer jednostki{{=}}2}}}} → {{Tt|{{#invoke:Pudełko|Nazwa przedmiotowej przestrzeni nazw|numer jednostki=2}}}} * {{Code|{{m|Pudełko|Nazwa przedmiotowej przestrzeni nazw|Dyskusja szablonu|nazwa przestrzeni nazw i{{=}}Moja przestrzeń|numer jednostki{{=}}2}}}} → {{Tt|{{#invoke:Pudełko|Nazwa przedmiotowej przestrzeni nazw|Dyskusja szablonu|nazwa przestrzeni nazw i=Moja przestrzeń|numer jednostki=2}}}} * {{Code|{{m|Pudełko|Nazwa przedmiotowej przestrzeni nazw|nazwa przestrzeni nazw 2{{=}}Dyskusja szablonu|numer jednostki{{=}}2}}}} → {{Tt|{{#invoke:Pudełko|Nazwa przedmiotowej przestrzeni nazw|nazwa przestrzeni nazw 2=Dyskusja szablonu|numer jednostki=2}}}} * {{Code|{{m|Pudełko|Nazwa przedmiotowej przestrzeni nazw|nazwa przestrzeni nazw 2{{=}}Dyskusja szablonu|numer jednostki{{=}}2}}}} → {{Tt|{{#invoke:Pudełko|Nazwa przedmiotowej przestrzeni nazw|nazwa przestrzeni nazw i=Dyskusja szablonu|numer jednostki=2}}}} * {{Code|{{m|Pudełko|Nazwa przedmiotowej przestrzeni nazw|nazwa przestrzeni nazw{{=}}Dyskusja szablonu|numer jednostki{{=}}2}}}} → {{Tt|{{#invoke:Pudełko|Nazwa przedmiotowej przestrzeni nazw|nazwa przestrzeni nazw=Dyskusja szablonu|numer jednostki=2}}}} Powyżej dla przykładu podano parametry nie w rodzicu w szablonie, tylko w dziecku, jeśli chodzi o parametry nazw przestrzeni nazw, ale ich się za to nie powinno podawać w tych ramach, tylko w szablonach, w których wywoływane są te ramki pudełek {{Code|{{m|Pudełko}}}}, ale tak tutaj tak zrobiono by było najłatwiej sprawdzić działanie tego typu funkcji. Analogicznie możemy podawać parametry typu jednostki, np.: wywołaniu modułowym {{Code|{{m|Pudełko|Nazwa przedmiotowej przestrzeni nazw|typ jednostki 2{{=}}strona szablonu|numer jednostki{{=}}2}}}}, ale o tym więcej w rozdziałach {{Code|{{sr|# p["Przedmiotowy typ jednostki"](frame,i)|p=Pudełko}}}} w „{{sr|#Funkcje typu jednostki|p=Pudełko}}”, ale wtedy ta sama nazwa przestrzeni nazw reprezentowana przez {{Parametr|typ jednostki 2|strona szablonu}}, jest zamieniana na to samo, lepiej jest tutaj używać parametrów przestrzennych nazw niż typu jednostki, bo typ jednostki ma taką samą wartość dla przestrzeni przedmiotowej, co dyskusji. Tutaj parametr dyskusji typu jednostki bazowy i numerkowy ogólny, czy szczegółowy, nie gra roli, bo nawet, gdy wygenerujemy nazwę przestrzeni dyskusji za pomoca tego parametru, to i tak otrzymamy na samym końcu jego nazwę przedmiotową. Również parametry typu jednostki nie powinno się podawać w dziecku w ramce, tylko w rodzicu w szablonie jako parametry, w którym ta ramka jest wywoływana, ale tutaj podano jedynie dla przykładu, jak najłatwiej sprawdzić działanie tych parametrów tej funkcji. Najpierw w funkcji nagłówku brane są parametry nazw przestrzeni nazw, a jeżeli ich nie ma, to parametry typu jednostki, a jeżeli nie ma, to generowane są nazwy na podstawie aktualnego modułu. === {{Code|p["Nazwa przestrzeni nazw dyskusji"](frame,...)}} === Funkcja pisze nazwę przestrzeni nazw dyskusji jakikolwiek nazwy przestrzeni nazw (tzn. nazwę przedmiotową nazwy przestrzenie nazw, czyli nie dyskusji, zamieniana jest na dyskusji, czyli identyfikator przestrzeni się zmienia jeden wyżej, a dyskusji, nie przedmiotową, przekształca się na tą samą), według podanej w zmiennej {{Code|nazwa przestrzeni nazw}} dla pozycja bazowej w podanych parametrach szablonu rodzicu ramki dziecka, lub dla innej pozycji należy parametr podawać w formie {{Code|nazwa przestrzeni nazw 1}}, {{Code|nazwa przestrzeni nazw 2}}, {{Code|nazwa przestrzeni nazw 3}},..., lub te parametry można podać w postaci ogólnej {{Code|nazwa przestrzeni nazw i}}. Parametry podaje się w parametrach rodzica wywołania tej funkcji {{Code|{{m|Pudełko|Nazwa przestrzeni nazw dyskusji}}}} (ale ich nie trzeba podawać w dziecku, ale można) i w parametrach dziecka, jeśli chodzi o zmienną {{Code|numer jednostki}}, czyli np.: {{Code|{{m|Pudełko|Nazwa przestrzeni nazw dyskusji|numer jednostki{{=}}<jakaś liczba całkowita dodatnia>}}}}. Te parametry przestrzenne zamiast w rodzicu w szablonie można podać w ramce dziecka, wtedy parametry dziecka mają pierwszeństwo. Parametry przestrzenne mogą mogą być podane w postaci przestrzeni przedmiotowej lub dyskusji, ale ta funkcja zawsze ją zamienia na dyskusji. Przestrzeń nazw z parametrów nazw przestrzennych może odpowiadać wartości przestrzeni głównej, to wtedy odpowiednia przestrzeń nazw z parametru nazwy jednostki się nie liczy w tej funkcji, aby się liczyła należy użyć funkcji {{Code|{{sr|#p["Nazwa przestrzeni nazw dyskusji 2"](frame,...)|p=Pudełko}}}}. Definicja skrótowa funkcji: <syntaxhighlight lang="lua"> p["Nazwa przestrzeni nazw dyskusji"]=function(frame,czy_uwzglednic_alternatywna_nazwe,i)...end; </syntaxhighlight> Wtedy ciało funkcji tej, czyli jego definicja w środku, jest: <syntaxhighlight lang="lua"> -- Jest liczony numer parametru nazwy przestrzeni nazw, domyslnie chodzi tu o numer bazowy parametrów przestrzennych; local numer_jednostki=i or frame.args["numer jednostki"]; local liczba_numer_jednostki=((numer_jednostki)and(tonumber(numer_jednostki))or 0); local pudelko_pomocne_modul=require("Module:Pudełko/Pomocne"); -- Liczy nazwę przestrzeni nazw dyskusji na podstawie podanych parametrów; return pudelko_pomocne_modul.Nazwa_przestrzeni_nazw(frame,2, czy_uwzglednic_alternatywna_nazwe,liczba_numer_jednostki); </syntaxhighlight> Parametry funkcji: * {{Code|frame}} - tablica ramki tablicy transportu, * {{Code|czy_uwzglednic_alternatywna_nazwe}} - czy ma uwzględniać nazwę przestrzeni nazw domyślną szablonu, dostępne wartości: {{Code|false}}, w której nazwa domyślna nie jest uwzględniana wtedy, oraz {{Code|nil}} i {{Code|true}}, które oznaczają to samo, w tym jeżeli ona jest uwzględniana, wtedy jest brany parametr pierwszy dziecka, który musi istnieć przy takiej wartości tego parametru, tzn. {{Code|{{m|Pudełko|Nazwa przestrzeni nazw dyskusji|Szablon}}}} - ta nazwa domyślna zostanie przekształcona na dyskusji, a jeżeli ona by była dyskusji, to nie byłoby żadnego przekształcenia, a nazwa uzyskana nazwy przestrzeni nazw z parametrów przestrzennych jest w takim przypadku błędna, to w takim razie brany jest ten parametr, a jeżeli nazwa domyślna jest błędna, czyli {{Code|{{m|Pudełko|Nazwa przestrzeni nazw dyskusji|Moja przestrzeń}}}}, wtedy funkcja zwraca stan błędu {{Code|(błąd)}}. * {{Code|i}} - numer zmiennej nazwy przestrzeni nazw. Funkcja wykorzystuje {{Code|{{sr|#p.Nazwa_przestrzeni_nazw(frame,...)|p=Pudełko/Pomocne}}}} do wyznaczania ogólnego nazwy przestrzeni nazw dla pozycji bazowej i numerkowej, tzn. dla pozycji: jeden, dwa, trzy,..., itd, i ich ogólnej. Parametr ramki tablicy transportu rodzica szablonu: * {{Code|nazwa przestrzeni nazw}}, {{Code|nazwa przestrzeni nazw 1}}, {{Code|nazwa przestrzeni nazw 2}}, {{Code|nazwa przestrzeni nazw 3}},..., {{Code|nazwa przestrzeni nazw i}} - nazwy przestrzeni nazw dla pozycji bazowej oraz zwykłej i ogólnej numerkowej, * {{Code|typ jednostki}}, {{Code|typ jednostki 1}}, {{Code|typ jednostki 2}}, {{Code|typ jednostki 3}},..., {{Code|typ jednostki i}} - typy jednostek, którym odpowiadają pewne przestrzenie przedmiotowe, dla pozycji bazowej, numerkowej i ogólnej. Parametry ramki tablicy transportu dziecka: * Parametry dziecka są takie same jak rodzica dla funkcji pudełkowej plus tu wymienione, * {{Code|numer jednostki}} - jak parametr {{Code|i}} nie został ustawiony, to wtedy liczy się ta zmienna. Przykłady: <syntaxhighlight lang="mediawiki"> {{Nazwa szablonu|nazwa przestrzeni nazw=Wikibooks|nazwa przestrzeni nazw 2=Szablon|nazwa przestrzeni nazw i=Moduł}} </syntaxhighlight> W dziecku powiedzmy jest wywołanie, i szukamy nazwy przestrzeni nazw o numerze dwa, która nie została podana, ale istnieje za to jej wersji ogólna {{Code|nazwa przestrzeni nazw i}} i domyślna {{Code|nazwa przestrzeni nazw}}: <syntaxhighlight lang="mediawiki"> {{#invoke:Pudełko|Nazwa przestrzeni nazw dyskusji|numer jednostki=1}} </syntaxhighlight> Na podstawie powyższego przykładu otrzymamy wynik o schemacie, nie wyniku, bo tam nie ma zmiennej {{Code|nazwa przestrzeni nazw 1}}, ale jest {{Code|nazwa przestrzeni nazw i}}: <syntaxhighlight lang="mediawiki"> <!-- Ale nie "nazwa przestrzeni nazw", bo jej nie ma, ale za to istnieje "nazwa przestrzeni nazw i"; --> <!-- nazwa przestrzeni nazw 2=nazwa przestrzeni nazw i=Moduł; --> <!-- Czyli wynik: --> Dyskusja modułu <!-- Widzimy, że wygenerowała się nazwa przestrzeni nazw, którą jest przestrzeń dyskusji przestrzeni programowej przestrzeni przedmiotowej "Moduł", którą również jest "Szablon" jego przestrzeni dyskusji "Dyskusja szablonu", a dla ich przestrzeni przedmiotowej, zamiast dyskusji, to przekształca się na dyskusji jej odpowiadającą; --> </syntaxhighlight> Nie jest brana w tym powyższym przykładzie zmienna {{Code|nazwa przestrzeni nazw}}, bo jej nie ma, ale za to jest {{Code|nazwa przestrzeni nazw i}}, bo ona występuje jako parametr domyślny ogólny dla parametrów numerkowych. Przykłady w wikikodzie: * {{Code|{{m|Pudełko|Nazwa przestrzeni nazw dyskusji|numer jednostki{{=}}2}}}} → {{Tt|{{#invoke:Pudełko|Nazwa przestrzeni nazw dyskusji|numer jednostki=2}}}} * {{Code|{{m|Pudełko|Nazwa przestrzeni nazw dyskusji|Szablon|nazwa przestrzeni nazw i{{=}}Moja przestrzeń|numer jednostki{{=}}2}}}} → {{Tt|{{#invoke:Pudełko|Nazwa przestrzeni nazw dyskusji|Szablon|nazwa przestrzeni nazw i=Moja przestrzeń|numer jednostki=2}}}} * {{Code|{{m|Pudełko|Nazwa przestrzeni nazw dyskusji|nazwa przestrzeni nazw 2{{=}}Szablon|numer jednostki{{=}}2}}}} → {{Tt|{{#invoke:Pudełko|Nazwa przestrzeni nazw dyskusji|nazwa przestrzeni nazw 2=Szablon|numer jednostki=2}}}} * {{Code|{{m|Pudełko|Nazwa przestrzeni nazw dyskusji|nazwa przestrzeni nazw 2{{=}}Szablon|numer jednostki{{=}}2}}}} → {{Tt|{{#invoke:Pudełko|Nazwa przestrzeni nazw dyskusji|nazwa przestrzeni nazw i=Szablon|numer jednostki=2}}}} * {{Code|{{m|Pudełko|Nazwa przestrzeni nazw dyskusji|nazwa przestrzeni nazw{{=}}Szablon|numer jednostki{{=}}2}}}} → {{Tt|{{#invoke:Pudełko|Nazwa przestrzeni nazw dyskusji|nazwa przestrzeni nazw=Szablon|numer jednostki=2}}}} Powyżej dla przykładu podano parametry nie w rodzicu w szablonie, tylko w dziecku, jeśli chodzi o parametry nazw przestrzeni nazw, ale ich się za to nie powinno podawać w tych ramach, tylko w szablonach, w których wywoływane są te ramki pudełek {{Code|{{m|Pudełko}}}}, ale tak tutaj tak zrobiono by było najłatwiej sprawdzić działanie tego typu funkcji. Analogicznie możemy podawać parametry typu jednostki, np.: wywołaniu modułowym {{Code|{{m|Pudełko|Nazwa przestrzeni nazw dyskusji|typ jednostki 2{{=}}strona szablonu|numer jednostki{{=}}2}}}}, ale o tym więcej w rozdziałach {{Code|{{sr|# p["Dyskusyjny typ jednostki"](frame,i)|p=Pudełko}}}} w „{{sr|#Funkcje typu jednostki|p=Pudełko}}”, ale wtedy nazwa przestrzeni nazw reprezentowana przez {{Parametr|typ jednostki 2|strona szablonu}}, jest zamieniana na nazwę przestrzeni nazw dyskusji. Parametr dyskusji typu jednostki bazowy lub dla danego numerka ogólny, czy szczegółowy, nie gra roli. Również parametry typu jednostki nie powinno się podawać w dziecku w ramce, tylko w rodzicu w szablonie jako parametry, w którym ta ramka jest wywoływana, ale tutaj podano jedynie dla przykładu, jak najłatwiej sprawdzić działanie tych parametrów tej funkcji. Najpierw w funkcji nagłówku brane są parametry nazw przestrzeni nazw, a jeżeli ich nie ma, to parametry typu jednostki, a jeżeli nie ma, to generowane są nazwy na podstawie aktualnego modułu. == Funkcje nazw przestrzeni nazw drugiej wersji == === {{Code|p["Nazwa przestrzeni nazw 2"](frame,...)}} === Funkcja pisze nazwę przestrzeni nazw, niezależnie, czy to jest przedmiotowa, czy dyskusji, według, i nie zawsze tylko, podanej w zmiennej {{Code|nazwa przestrzeni nazw}} dla pozycja bazowej w podanych parametrach szablonu rodzicu ramki dziecka, lub dla innej pozycji należy parametr podawać w formie {{Code|nazwa przestrzeni nazw 1}}, {{Code|nazwa przestrzeni nazw 2}}, {{Code|nazwa przestrzeni nazw 3}},..., lub te parametry można podać w postaci ogólnej {{Code|nazwa przestrzeni nazw i}}. W tej funkcji trzeba też podawać parametry nazwy jednostek {{Code|nazwa jednostki}}, {{Code|nazwa jednostki 1}}, {{Code|nazwa jednostki 2}}, {{Code|nazwa jednostki 3}},... Parametry podaje się w parametrach rodzica wywołania tej funkcji {{Code|{{m|Pudełko|Nazwa przestrzeni nazw 2}}}} (ale ich nie trzeba podawać w dziecku, ale można) i w parametrach dziecka, jeśli chodzi o zmienną {{Code|numer jednostki}}, czyli np.: {{Code|{{m|Pudełko|Nazwa przestrzeni nazw 2|numer jednostki{{=}}<jakaś liczba całkowita dodatnia>}}}}. Te parametry przestrzenne zamiast w rodzicu w szablonie można podać w ramce dziecka, wtedy parametry dziecka mają pierwszeństwo. Przestrzeń nazw z parametrów nazw przestrzennych może odpowiadać wartości przestrzeni głównej, to wtedy odpowiednia przestrzeń nazw z parametru nazwy jednostki się liczy w tej funkcji, wtedy jest liczona nazwa przestrzeni nazw z tego parametru. Gdy parametry przestrzenne lub typ jednostki w drugim podejściu nie wskazują na przestrzeń główną, to wtedy działanie tej funkcji jest podobne do {{Code|{{sr|#p["Nazwa przestrzeni nazw"](frame,...)|p=Pudełko}}}}. Definicja skrótowa funkcji: <syntaxhighlight lang="lua"> p["Nazwa przestrzeni nazw 2"]=function(frame,czy_uwzglednic_alternatywna_nazwe,i)...end; </syntaxhighlight> Wtedy ciało funkcji tej, czyli jego definicja w środku, jest: <syntaxhighlight lang="lua"> local pudelko_pomocne_modul=require("Module:Pudełko/Pomocne"); -- Liczy nazwę przestrzeni nazw, jeżeli z parametrów przestrzennych przestrzeń wskazuje na główną, to wtedy jest liczona przestrzeń nazw z nazwy jednostki; return pudelko_pomocne_modul.Nazwa_przestrzeni_nazw_2(frame,czy_uwzglednic_alternatywna_nazwe,i) </syntaxhighlight> Parametry funkcji: * {{Code|frame}} - tablica ramki tablicy transportu, * {{Code|czy_uwzglednic_alternatywna_nazwe}} - czy ma uwzględniać nazwę przestrzeni nazw domyślną szablonu, dostępne wartości: {{Code|false}}, w której nazwa domyślna nie jest uwzględniana wtedy, oraz {{Code|nil}} i {{Code|true}}, które oznaczają to samo, w tym jeżeli ona jest uwzględniana, wtedy jest brany parametr pierwszy dziecka, który musi istnieć przy takiej wartości tego parametru, tzn. {{Code|{{m|Pudełko|Nazwa przestrzeni nazw 2|Szablon}}}}, a nazwa uzyskana nazwy przestrzeni nazw jest w takim przypadku błędna, a jeżeli nazwa domyślna jest błędna, czyli {{Code|{{m|Pudełko|Nazwa przestrzeni nazw 2|Moja przestrzeń}}}}, wtedy funkcja zwraca stan błędu {{Code|(błąd)}}. * {{Code|i}} - numer zmiennej nazwy przestrzeni nazw. Funkcja wykorzystuje {{Code|{{sr|#p.Nazwa_przestrzeni_nazw_2(frame,...)|p=Pudełko/Pomocne}}}} do wyznaczania ogólnego nazwy przestrzeni nazw dla pozycji bazowej i numerkowej, tzn. dla pozycji: jeden, dwa, trzy,..., itd, i ich ogólnej. Parametr ramki tablicy transportu rodzica szablonu: * {{Code|nazwa przestrzeni nazw}}, {{Code|nazwa przestrzeni nazw 1}}, {{Code|nazwa przestrzeni nazw 2}}, {{Code|nazwa przestrzeni nazw 3}},..., {{Code|nazwa przestrzeni nazw i}} - nazwy przestrzeni nazw dla pozycji bazowej oraz zwykłej i ogólnej numerkowej, * {{Code|nazwa jednostki}}, {{Code|nazwa jednostki 1}}, {{Code|nazwa jednostki 2}}, {{Code|nazwa jednostki 3}},... - nazwy jednostek dla pozycji bazowej i numerkowej, * {{Code|typ jednostki}}, {{Code|typ jednostki 1}}, {{Code|typ jednostki 2}}, {{Code|typ jednostki 3}},..., {{Code|typ jednostki i}} - typy jednostek, którym odpowiadają pewne przestrzenie przedmiotowe, dla pozycji bazowej, numerkowej i ogólnej, ** {{Code|dyskusja typu jednostki}}, {{Code|dyskusja typu jednostki 1}}, {{Code|dyskusja typ jednostki 2}}, {{Code|dyskusja typ jednostki 3}},..., {{Code|dyskusja typ jednostki i}} - czy dany typ jednostki ma przedstawiać, jeśli niepusta, przestrzeń dyskusji dla pozycji bazowej, numerkowej i ogólnej. Parametry ramki tablicy transportu dziecka: * Parametry dziecka są takie same jak rodzica dla funkcji pudełkowej plus tu wymienione, * {{Code|numer jednostki}} - jak parametr {{Code|i}} nie został ustawiony, to wtedy liczy się ta zmienna. Przykłady: <syntaxhighlight lang="mediawiki"> {{Nazwa szablonu|nazwa przestrzeni nazw=Wikibooks|nazwa przestrzeni nazw 1=Szablon|nazwa przestrzeni nazw i=|nazwa jednostki 2=Wikibooks:Strona}} </syntaxhighlight> W dziecku powiedzmy jest wywołanie, i szukamy nazwy przestrzeni nazw o numerze dwa, która została podana, ale istnieje za to jej wersji ogólna {{Code|nazwa przestrzeni nazw i}} i domyślna {{Code|nazwa przestrzeni nazw}}, ale wtedy dla tego numerkowego liczy się to ogólne z {{Code| i}}, a ponieważ ta nazwa jest pusta, więc będziemy liczyli nazwę przestrzeni nazw z {{Code|nazwa jednostki 2}}: <syntaxhighlight lang="mediawiki"> {{#invoke:Pudełko|Nazwa przestrzeni nazw 2|numer jednostki=2}} </syntaxhighlight> Na podstawie powyższego przykładu otrzymamy wynik o schemacie, nie wyniku, bo tam nie ma zmiennej {{Code|nazwa przestrzeni nazw 1}}, ale jest {{Code|nazwa przestrzeni nazw i}}: <syntaxhighlight lang="mediawiki"> <!-- Ale nie "nazwa przestrzeni nazw 2", bo jej nie ma, ale za to istnieje "nazwa przestrzeni nazw i"; --> <!-- nazwa przestrzeni nazw 2=nazwa przestrzeni nazw i="", a nazwa jednostki 2="Wikibooks:Strona"; --> <!-- Czyli wynik: --> Wikibooks <!-- Widzimy, że wygenerowała się nazwa przestrzeni nazw, którą jest przestrzeń nieprogramowa, ale projektu, wychodząca z nazwy jednostek w tym przypadku z "nazwa jednostki 2"; --> </syntaxhighlight> Nie jest brana w tym powyższym przykładzie zmienna {{Code|nazwa przestrzeni nazw}}, bo jej nie ma, ale za to jest {{Code|nazwa przestrzeni nazw i}}, bo ona występuje jako parametr domyślny ogólny dla parametrów numerkowych. Tytaj jest używana jest zmienna {{Code|nazwa jednostki 2}} do wygenerowania ostatecznego wyniku, bo jak można zauważyć, parametry przestrzenne wskazują na przestrzeń główną, a nazwy jednostek już nie. Przykłady w wikikodzie: * {{Code|{{m|Pudełko|Nazwa przestrzeni nazw 2|numer jednostki{{=}}2}}}} → {{Tt|{{#invoke:Pudełko|Nazwa przestrzeni nazw 2|numer jednostki=2}}}} * {{Code|{{m|Pudełko|Nazwa przestrzeni nazw 2|Szablon|nazwa przestrzeni nazw i{{=}}Moja przestrzeń|numer jednostki{{=}}2}}}} → {{Tt|{{#invoke:Pudełko|Nazwa przestrzeni nazw 2|Szablon|nazwa przestrzeni nazw i=Moja przestrzeń|numer jednostki=2}}}} * {{Code|{{m|Pudełko|Nazwa przestrzeni nazw 2|nazwa przestrzeni nazw 2{{=}}|nazwa jednostki 2{{=}}Szablon:Strona|numer jednostki{{=}}2}}}} → {{Tt|{{#invoke:Pudełko|Nazwa przestrzeni nazw 2|nazwa przestrzeni nazw 2=|nazwa jednostki 2=Szablon:Strona|numer jednostki=2}}}} * {{Code|{{m|Pudełko|Nazwa przestrzeni nazw 2|nazwa przestrzeni nazw i{{=}}|nazwa jednostki 2{{=}}Szablon:Strona|numer jednostki{{=}}2}}}} → {{Tt|{{#invoke:Pudełko|Nazwa przestrzeni nazw 2|nazwa przestrzeni nazw i=|nazwa jednostki 2=Szablon:Strona|numer jednostki=2}}}} * {{Code|{{m|Pudełko|Nazwa przestrzeni nazw 2|Szablon|nazwa przestrzeni nazw{{=}}|nazwa jednostki 2{{=}}Wikibooks:Strona|numer jednostki{{=}}2}}}} → {{Tt|{{#invoke:Pudełko|Nazwa przestrzeni nazw 2|Szablon|nazwa przestrzeni nazw=|nazwa jednostki 2=Wikibooks:Strona|numer jednostki=2}}}} Powyżej dla przykładu podano parametry nie w rodzicu w szablonie, tylko w dziecku, jeśli chodzi o parametry nazw przestrzeni nazw i nazw jednostek, ale ich się za to nie powinno podawać w tych ramach, tylko w szablonach, w których wywoływane są te ramki pudełek {{Code|{{m|Pudełko}}}}, ale tak tutaj tak zrobiono by było najłatwiej sprawdzić działanie tego typu funkcji. Analogicznie możemy podawać parametry typu jednostki, np.: wywołaniu modułowym {{Code|{{m|Pudełko|Nazwa przestrzeni nazw 2|typ jednostki 2{{=}}Podręcznik|nazwa jednostki 2{{=}}Szablon:Strona|numer jednostki{{=}}2}}}} (ale wtedy jest brana przestrzeń nazw z nazwy jednostki), ale o tym więcej w rozdziałach {{Code|{{sr|#p["Typ jednostki 2"](frame,i)|p=Pudełko}}}} w „{{sr|#Funkcje typu jednostki|p=Pudełko}}”, on definiuje przestrzenie przedmiotowe, ale można użyć parametru dyskusji typu jednostki z wartością niepustą, wtedy wyświetli się nazwa przestrzeni nazw dyskusji. Jeżeli typ jednostki wskazuje na przestrzeń nazw główną, wtedy się liczą parametry nazw jednostek. Również parametry typu jednostki nie powinno się podawać w dziecku w ramce, tylko w rodzicu w szablonie jako parametry, w którym ta ramka jest wywoływana, ale tutaj podano jedynie dla przykładu, jak najłatwiej sprawdzić działanie tych parametrów tej funkcji. Najpierw w funkcji nagłówku brane są parametry nazw przestrzeni nazw, a jeżeli ich nie ma, to parametry typu jednostki, a jeżeli nie ma lub parametry przestrzenne wskazują na przestrzeń główną, i nie ma nazwy jednostki, to generowane są nazwy tej funkcji na podstawie aktualnej strony. === {{Code|p["Nazwa przedmiotowej przestrzeni nazw 2"](frame,...)}} === Funkcja pisze przedmiotową nazwę przestrzeni nazw jakikolwiek nazwy przestrzeni nazw (tzn. nazwę przedmiotową nazwy przestrzenie nazw, czyli nie dyskusji, zamieniana jest na nią samą, czyli identyfikator przestrzeni się nie zmienia, a dyskusji, nie przedmiotową, przekształca się na przedmiotową jej odpowiadającą, czyli w tym przypadku identyfikator przestrzeni zmniejsza się o numer mniej), według, i nie zawsze tylko, podanej w zmiennej {{Code|nazwa przestrzeni nazw}} dla pozycja bazowej w podanych parametrach szablonu rodzicu ramki dziecka, lub dla innej pozycji należy parametr podawać w formie {{Code|nazwa przestrzeni nazw 1}}, {{Code|nazwa przestrzeni nazw 2}}, {{Code|nazwa przestrzeni nazw 3}},..., lub te parametry można podać w postaci ogólnej {{Code|nazwa przestrzeni nazw i}}. W tej funkcji trzeba też podawać parametry nazwy jednostek {{Code|nazwa jednostki}}, {{Code|nazwa jednostki 1}}, {{Code|nazwa jednostki 2}}, {{Code|nazwa jednostki 3}},... Parametry podaje się w parametrach rodzica wywołania tej funkcji {{Code|{{m|Pudełko|Nazwa przedmiotowej przestrzeni nazw 2}}}} (ale ich nie trzeba podawać w dziecku, ale można) i w parametrach dziecka, jeśli chodzi o zmienną {{Code|numer jednostki}}, czyli np.: {{Code|{{m|Pudełko|Nazwa przedmiotowej przestrzeni nazw 2|numer jednostki{{=}}<jakaś liczba całkowita dodatnia>}}}}. Te parametry przestrzenne zamiast w rodzicu w szablonie można podać w ramce dziecka, wtedy parametry dziecka mają pierwszeństwo. Przestrzeń nazw z parametrów nazw przestrzennych po przekształceniu na przedmiotową może odpowiadać wartości przestrzeni głównej, to wtedy odpowiednia przestrzeń nazw z parametru nazwy jednostki się liczy w tej funkcji, wtedy jest liczona nazwa przestrzeni nazw z tego parametru. Gdy parametry przestrzenne lub typ jednostki w drugim podejściu nie wskazują na przestrzeń główną, to wtedy działanie tej funkcji jest podobne do {{Code|{{sr|#p["Nazwa przedmiotowej przestrzeni nazw"](frame,...)|p=Pudełko}}}}. Definicja skrótowa funkcji: <syntaxhighlight lang="lua"> p["Nazwa przedmiotowej przestrzeni nazw 2"]=function(frame,czy_uwzglednic_alternatywna_nazwe,i)...end; </syntaxhighlight> Wtedy ciało funkcji tej, czyli jego definicja w środku, jest: <syntaxhighlight lang="lua"> local pudelko_pomocne_modul=require("Module:Pudełko/Pomocne"); return pudelko_pomocne_modul.Nazwa_przestrzeni_nazw_przedmiotowa_dyskusji_2(frame,czy_uwzglednic_alternatywna_nazwe,i,"przedmiotowa"); </syntaxhighlight> Parametry funkcji: * {{Code|frame}} - tablica ramki tablicy transportu, * {{Code|czy_uwzglednic_alternatywna_nazwe}} - czy ma uwzględniać nazwę przestrzeni nazw domyślną szablonu, dostępne wartości: {{Code|false}}, w której nazwa domyślna nie jest uwzględniana wtedy, oraz {{Code|nil}} i {{Code|true}}, które oznaczają to samo, w tym jeżeli ona jest uwzględniana, wtedy jest brany parametr pierwszy dziecka, który musi istnieć przy takiej wartości tego parametru, tzn. {{Code|{{m|Pudełko|Nazwa przedmiotowej przestrzeni nazw 2|Szablon}}}}, a nazwa uzyskana nazwy przestrzeni nazw jest w takim przypadku błędna, a jeżeli nazwa domyślna jest błędna, czyli {{Code|{{m|Pudełko|Nazwa przedmiotowej przestrzeni nazw 2|Moja przestrzeń}}}}, wtedy funkcja zwraca stan błędu {{Code|(błąd)}}. * {{Code|i}} - numer zmiennej nazwy przestrzeni nazw. Funkcja wykorzystuje {{Code|{{sr|#p.Nazwa_przestrzeni_nazw_przedmiotowa_dyskusji_2(frame,...)|p=Pudełko/Pomocne}}}} do wyznaczania ogólnego nazwy przestrzeni nazw dla pozycji bazowej i numerkowej, tzn. dla pozycji: jeden, dwa, trzy,..., itd, i ich ogólnej. Parametr ramki tablicy transportu rodzica szablonu: * {{Code|nazwa przestrzeni nazw}}, {{Code|nazwa przestrzeni nazw 1}}, {{Code|nazwa przestrzeni nazw 2}}, {{Code|nazwa przestrzeni nazw 3}},..., {{Code|nazwa przestrzeni nazw i}} - nazwy przestrzeni nazw dla pozycji bazowej oraz zwykłej i ogólnej numerkowej, * {{Code|nazwa jednostki}}, {{Code|nazwa jednostki 1}}, {{Code|nazwa jednostki 2}}, {{Code|nazwa jednostki 3}},... - nazwy jednostek dla pozycji bazowej i numerkowej, * {{Code|typ jednostki}}, {{Code|typ jednostki 1}}, {{Code|typ jednostki 2}}, {{Code|typ jednostki 3}},..., {{Code|typ jednostki i}} - typy jednostek, którym odpowiadają pewne przestrzenie przedmiotowe, dla pozycji bazowej, numerkowej i ogólnej. Parametry ramki tablicy transportu dziecka: * Parametry dziecka są takie same jak rodzica dla funkcji pudełkowej plus tu wymienione, * {{Code|numer jednostki}} - jak parametr {{Code|i}} nie został ustawiony, to wtedy liczy się ta zmienna. Przykłady: <syntaxhighlight lang="mediawiki"> {{Nazwa szablonu|nazwa przestrzeni nazw=Wikibooks|nazwa przestrzeni nazw 1=Szablon|nazwa przestrzeni nazw i=|nazwa jednostki 2=Dyskusja Wikibooks:Strona}} </syntaxhighlight> W dziecku powiedzmy jest wywołanie, i szukamy nazwy przestrzeni nazw o numerze dwa, która została podana, ale istnieje za to jej wersji ogólna {{Code|nazwa przestrzeni nazw i}} i domyślna {{Code|nazwa przestrzeni nazw}}, ale wtedy dla tego numerkowego liczy się to ogólne z {{Code| i}}, a ponieważ ta nazwa jest pusta, więc będziemy liczyli nazwę przestrzeni nazw z {{Code|nazwa jednostki 2}}: <syntaxhighlight lang="mediawiki"> {{#invoke:Pudełko|Nazwa przedmiotowej przestrzeni nazw 2|numer jednostki=2}} </syntaxhighlight> Na podstawie powyższego przykładu otrzymamy wynik o schemacie, nie wyniku, bo tam nie ma zmiennej {{Code|nazwa przestrzeni nazw 1}}, ale jest {{Code|nazwa przestrzeni nazw i}}: <syntaxhighlight lang="mediawiki"> <!-- Ale nie "nazwa przestrzeni nazw 2", bo jej nie ma, ale za to istnieje "nazwa przestrzeni nazw i"; --> <!-- nazwa przestrzeni nazw 2=nazwa przestrzeni nazw i="", a nazwa jednostki 2="Dyskusja Wikibooks:Strona"; --> <!-- Czyli wynik: --> Wikibooks <!-- Widzimy, że wygenerowała się nazwa przestrzeni nazw, którą jest przestrzeń nieprogramowa, ale projektu, wychodząca z nazwy jednostek w tym przypadku z "nazwa jednostki 2"; --> </syntaxhighlight> Nie jest brana w tym powyższym przykładzie zmienna {{Code|nazwa przestrzeni nazw}}, bo jej nie ma, ale za to jest {{Code|nazwa przestrzeni nazw i}}, bo ona występuje jako parametr domyślny ogólny dla parametrów numerkowych. Tytaj jest używana jest zmienna {{Code|nazwa jednostki 2}} do wygenerowania ostatecznego wyniku, bo jak można zauważyć, parametry przestrzenne wskazują na przestrzeń główną, a nazwy jednostek już nie. Przykłady w wikikodzie: * {{Code|{{m|Pudełko|Nazwa przedmiotowej przestrzeni nazw 2|numer jednostki{{=}}2}}}} → {{Tt|{{#invoke:Pudełko|Nazwa przedmiotowej przestrzeni nazw 2|numer jednostki=2}}}} * {{Code|{{m|Pudełko|Nazwa przedmiotowej przestrzeni nazw 2|Dyskusja szablonu|nazwa przestrzeni nazw i{{=}}Moja przestrzeń|numer jednostki{{=}}2}}}} → {{Tt|{{#invoke:Pudełko|Nazwa przedmiotowej przestrzeni nazw 2|Dyskusja szablonu|nazwa przestrzeni nazw i=Moja przestrzeń|numer jednostki=2}}}} * {{Code|{{m|Pudełko|Nazwa przedmiotowej przestrzeni nazw 2|nazwa przestrzeni nazw 2{{=}}Dyskusja|nazwa jednostki 2{{=}}Dyskusja szablonu:Strona|numer jednostki{{=}}2}}}} → {{Tt|{{#invoke:Pudełko|Nazwa przedmiotowej przestrzeni nazw 2|nazwa przestrzeni nazw 2=Dyskusja|nazwa jednostki 2=Dyskusja szablonu:Strona|numer jednostki=2}}}} * {{Code|{{m|Pudełko|Nazwa przedmiotowej przestrzeni nazw 2|nazwa przestrzeni nazw i{{=}}Dyskusja|nazwa jednostki 2{{=}}Dyskusja szablonu:Strona|numer jednostki{{=}}2}}}} → {{Tt|{{#invoke:Pudełko|Nazwa przedmiotowej przestrzeni nazw 2|nazwa przestrzeni nazw i=Dyskusja|nazwa jednostki 2=Dyskusja szablonu:Strona|numer jednostki=2}}}} * {{Code|{{m|Pudełko|Nazwa przedmiotowej przestrzeni nazw 2|Dyskusja szablonu|nazwa przestrzeni nazw{{=}}Dyskusja|nazwa jednostki 2{{=}}Wikibooks:Strona|numer jednostki{{=}}2}}}} → {{Tt|{{#invoke:Pudełko|Nazwa przedmiotowej przestrzeni nazw 2|Dyskusja szablonu|nazwa przestrzeni nazw=Dyskusja|nazwa jednostki 2=Dyskusja Wikibooks:Strona|numer jednostki=2}}}} Powyżej dla przykładu podano parametry nie w rodzicu w szablonie, tylko w dziecku, jeśli chodzi o parametry nazw przestrzeni nazw i nazw jednostek, ale ich się za to nie powinno podawać w tych ramach, tylko w szablonach, w których wywoływane są te ramki pudełek {{Code|{{m|Pudełko}}}}, ale tak tutaj tak zrobiono by było najłatwiej sprawdzić działanie tego typu funkcji. Analogicznie możemy podawać parametry typu jednostki, np.: wywołaniu modułowym {{Code|{{m|Pudełko|Nazwa przedmiotowej przestrzeni nazw 2|typ jednostki 2{{=}}Podręcznik|nazwa jednostki 2{{=}}Dyskusja szablonu:Strona|numer jednostki{{=}}2}}}} (ale wtedy jest brana przestrzeń nazw z nazwy jednostki), ale o tym więcej w rozdziałach {{Code|{{sr|# p["Przedmiotowy typ jednostki 2"](frame,i)|p=Pudełko}}}} w „{{sr|#Funkcje typu jednostki|p=Pudełko}}”, on definiuje przestrzenie przedmiotowe, ale można użyć parametru dyskusji typu jednostki z wartością niepustą, pustą, czy nawet jej nie podamy, wtedy wyświetli się nazwa przestrzeni nazw przedmiotowej. Jeżeli typ jednostki wskazuje na przestrzeń nazw główną, wtedy się liczą parametry nazw jednostek. Również parametry typu jednostki nie powinno się podawać w dziecku w ramce, tylko w rodzicu w szablonie jako parametry, w którym ta ramka jest wywoływana, ale tutaj podano jedynie dla przykładu, jak najłatwiej sprawdzić działanie tych parametrów tej funkcji. Najpierw w funkcji nagłówku brane są parametry nazw przestrzeni nazw, a jeżeli ich nie ma, to parametry typu jednostki, a jeżeli nie ma lub parametry przestrzenne wskazują na przestrzeń główną, i nie ma nazwy jednostki, to generowane są nazwy tej funkcji na podstawie aktualnej strony. === {{Code|p["Nazwa przestrzeni nazw dyskusji 2"](frame,...)}} === Funkcja pisze nazwę przestrzeni nazw dyskusji jakikolwiek nazwy przestrzeni nazw (tzn. nazwę dyskusji nazwy przestrzenie nazw, czyli nie przedmiotowej, zamieniana jest na nią samą, czyli identyfikator przestrzeni się nie zmienia, a przedmiotową, nie dyskusji, przekształca się na dyskusji jej odpowiadającą, czyli w tym przypadku identyfikator przestrzeni zwiększa się o numer więcej), według, i nie zawsze tylko, podanej w zmiennej {{Code|nazwa przestrzeni nazw}} dla pozycja bazowej w podanych parametrach szablonu rodzicu ramki dziecka, lub dla innej pozycji należy parametr podawać w formie {{Code|nazwa przestrzeni nazw 1}}, {{Code|nazwa przestrzeni nazw 2}}, {{Code|nazwa przestrzeni nazw 3}},..., lub te parametry można podać w postaci ogólnej {{Code|nazwa przestrzeni nazw i}}. W tej funkcji trzeba też podawać parametry nazwy jednostek {{Code|nazwa jednostki}}, {{Code|nazwa jednostki 1}}, {{Code|nazwa jednostki 2}}, {{Code|nazwa jednostki 3}},... Parametry podaje się w parametrach rodzica wywołania tej funkcji {{Code|{{m|Pudełko|Nazwa przestrzeni nazw dyskusji 2}}}} (ale ich nie trzeba podawać w dziecku, ale można) i w parametrach dziecka, jeśli chodzi o zmienną {{Code|numer jednostki}}, czyli np.: {{Code|{{m|Pudełko|Nazwa przestrzeni nazw dyskusji 2|numer jednostki{{=}}<jakaś liczba całkowita dodatnia>}}}}. Te parametry przestrzenne zamiast w rodzicu w szablonie można podać w ramce dziecka, wtedy parametry dziecka mają pierwszeństwo. Przestrzeń nazw z parametrów nazw przestrzennych po przekształceniu na przedmiotową może odpowiadać wartości przestrzeni głównej, to wtedy odpowiednia przestrzeń nazw z parametru nazwy jednostki się liczy w tej funkcji, wtedy jest liczona nazwa przestrzeni nazw z tego parametru. Gdy parametry przestrzenne lub typ jednostki w drugim podejściu nie wskazują na przestrzeń główną, to wtedy działanie tej funkcji jest podobne do {{Code|{{sr|#p["Nazwa dyskusji przestrzeni nazw"](frame,...)|p=Pudełko}}}}. Definicja skrótowa funkcji: <syntaxhighlight lang="lua"> p["Nazwa przestrzeni nazw dyskusji 2"]=function(frame,czy_uwzglednic_alternatywna_nazwe,i)...end; </syntaxhighlight> Wtedy ciało funkcji tej, czyli jego definicja w środku, jest: <syntaxhighlight lang="lua"> local pudelko_pomocne_modul=require("Module:Pudełko/Pomocne"); return pudelko_pomocne_modul.Nazwa_przestrzeni_nazw_przedmiotowa_dyskusji_2(frame,czy_uwzglednic_alternatywna_nazwe,i,"dyskusja"); </syntaxhighlight> Parametry funkcji: * {{Code|frame}} - tablica ramki tablicy transportu, * {{Code|czy_uwzglednic_alternatywna_nazwe}} - czy ma uwzględniać nazwę przestrzeni nazw domyślną szablonu, dostępne wartości: {{Code|false}}, w której nazwa domyślna nie jest uwzględniana wtedy, oraz {{Code|nil}} i {{Code|true}}, które oznaczają to samo, w tym jeżeli ona jest uwzględniana, wtedy jest brany parametr pierwszy dziecka, który musi istnieć przy takiej wartości tego parametru, tzn. {{Code|{{m|Pudełko|Nazwa przestrzeni nazw dyskusji 2|Szablon}}}}, a nazwa uzyskana nazwy przestrzeni nazw jest w takim przypadku błędna, a jeżeli nazwa domyślna jest błędna, czyli {{Code|{{m|Pudełko|Nazwa przestrzeni nazw dyskusji 2|Moja przestrzeń}}}}, wtedy funkcja zwraca stan błędu {{Code|(błąd)}}. * {{Code|i}} - numer zmiennej nazwy przestrzeni nazw. Funkcja wykorzystuje {{Code|{{sr|#p.Nazwa_przestrzeni_nazw_przedmiotowa_dyskusji_2(frame,...)|p=Pudełko/Pomocne}}}} do wyznaczania ogólnego nazwy przestrzeni nazw dla pozycji bazowej i numerkowej, tzn. dla pozycji: jeden, dwa, trzy,..., itd, i ich ogólnej. Parametr ramki tablicy transportu rodzica szablonu: * {{Code|nazwa przestrzeni nazw}}, {{Code|nazwa przestrzeni nazw 1}}, {{Code|nazwa przestrzeni nazw 2}}, {{Code|nazwa przestrzeni nazw 3}},..., {{Code|nazwa przestrzeni nazw i}} - nazwy przestrzeni nazw dla pozycji bazowej oraz zwykłej i ogólnej numerkowej, * {{Code|nazwa jednostki}}, {{Code|nazwa jednostki 1}}, {{Code|nazwa jednostki 2}}, {{Code|nazwa jednostki 3}},... - nazwy jednostek dla pozycji bazowej i numerkowej, * {{Code|typ jednostki}}, {{Code|typ jednostki 1}}, {{Code|typ jednostki 2}}, {{Code|typ jednostki 3}},..., {{Code|typ jednostki i}} - typy jednostek, którym odpowiadają pewne przestrzenie przedmiotowe, dla pozycji bazowej, numerkowej i ogólnej. Parametry ramki tablicy transportu dziecka: * Parametry dziecka są takie same jak rodzica dla funkcji pudełkowej plus tu wymienione, * {{Code|numer jednostki}} - jak parametr {{Code|i}} nie został ustawiony, to wtedy liczy się ta zmienna. Przykłady: <syntaxhighlight lang="mediawiki"> {{Nazwa szablonu|nazwa przestrzeni nazw=Wikibooks|nazwa przestrzeni nazw 1=Szablon|nazwa przestrzeni nazw i=|nazwa jednostki 2=Wikibooks:Strona}} </syntaxhighlight> W dziecku powiedzmy jest wywołanie, i szukamy nazwy przestrzeni nazw o numerze dwa, która została podana, ale istnieje za to jej wersji ogólna {{Code|nazwa przestrzeni nazw i}} i domyślna {{Code|nazwa przestrzeni nazw}}, ale wtedy dla tego numerkowego liczy się to ogólne z {{Code| i}}, a ponieważ ta nazwa jest pusta, więc będziemy liczyli nazwę przestrzeni nazw z {{Code|nazwa jednostki 2}}: <syntaxhighlight lang="mediawiki"> {{#invoke:Pudełko|Nazwa przestrzeni nazw dyskusji 2|numer jednostki=2}} </syntaxhighlight> Na podstawie powyższego przykładu otrzymamy wynik o schemacie, nie wyniku, bo tam nie ma zmiennej {{Code|nazwa przestrzeni nazw 1}}, ale jest {{Code|nazwa przestrzeni nazw i}}: <syntaxhighlight lang="mediawiki"> <!-- Ale nie "nazwa przestrzeni nazw 2", bo jej nie ma, ale za to istnieje "nazwa przestrzeni nazw i"; --> <!-- nazwa przestrzeni nazw 2=nazwa przestrzeni nazw i="", a nazwa jednostki 2="Wikibooks:Strona"; --> <!-- Czyli wynik: --> Dyskusja Wikibooks <!-- Widzimy, że wygenerowała się nazwa przestrzeni nazw, którą jest przestrzeń nieprogramowa, ale dyskusji projektu, wychodząca z nazwy jednostek w tym przypadku z "nazwa jednostki 2"; --> </syntaxhighlight> Nie jest brana w tym powyższym przykładzie zmienna {{Code|nazwa przestrzeni nazw}}, bo jej nie ma, ale za to jest {{Code|nazwa przestrzeni nazw i}}, bo ona występuje jako parametr domyślny ogólny dla parametrów numerkowych. Tytaj jest używana jest zmienna {{Code|nazwa jednostki 2}} do wygenerowania ostatecznego wyniku, bo jak można zauważyć, parametry przestrzenne wskazują na przestrzeń główną, a nazwy jednostek już nie. Przykłady w wikikodzie: * {{Code|{{m|Pudełko|Nazwa przestrzeni nazw dyskusji 2|numer jednostki{{=}}2}}}} → {{Tt|{{#invoke:Pudełko|Nazwa przestrzeni nazw dyskusji 2|numer jednostki=2}}}} * {{Code|{{m|Pudełko|Nazwa przestrzeni nazw dyskusji 2|Szablon|nazwa przestrzeni nazw i{{=}}Moja przestrzeń|numer jednostki{{=}}2}}}} → {{Tt|{{#invoke:Pudełko|Nazwa przestrzeni nazw dyskusji 2|Szablon|nazwa przestrzeni nazw i=Moja przestrzeń|numer jednostki=2}}}} * {{Code|{{m|Pudełko|Nazwa przestrzeni nazw dyskusji 2|nazwa przestrzeni nazw 2{{=}}|nazwa jednostki 2{{=}}Szablon:Strona|numer jednostki{{=}}2}}}} → {{Tt|{{#invoke:Pudełko|Nazwa przestrzeni nazw dyskusji 2|nazwa przestrzeni nazw 2=|nazwa jednostki 2=Szablon:Strona|numer jednostki=2}}}} * {{Code|{{m|Pudełko|Nazwa przestrzeni nazw dyskusji 2|nazwa przestrzeni nazw i{{=}}|nazwa jednostki 2{{=}}Szablon:Strona|numer jednostki{{=}}2}}}} → {{Tt|{{#invoke:Pudełko|Nazwa przestrzeni nazw dyskusji 2|nazwa przestrzeni nazw i=|nazwa jednostki 2=Szablon:Strona|numer jednostki=2}}}} * {{Code|{{m|Pudełko|Nazwa przestrzeni nazw dyskusji 2|Szablon|nazwa przestrzeni nazw{{=}}|nazwa jednostki 2{{=}}Wikibooks:Strona|numer jednostki{{=}}2}}}} → {{Tt|{{#invoke:Pudełko|Nazwa przestrzeni nazw dyskusji 2|Szablon|nazwa przestrzeni nazw=|nazwa jednostki 2=Dyskusja Wikibooks:Strona|numer jednostki=2}}}} Powyżej dla przykładu podano parametry nie w rodzicu w szablonie, tylko w dziecku, jeśli chodzi o parametry nazw przestrzeni nazw i nazw jednostek, ale ich się za to nie powinno podawać w tych ramach, tylko w szablonach, w których wywoływane są te ramki pudełek {{Code|{{m|Pudełko}}}}, ale tak tutaj tak zrobiono by było najłatwiej sprawdzić działanie tego typu funkcji. Analogicznie możemy podawać parametry typu jednostki, np.: wywołaniu modułowym {{Code|{{m|Pudełko|Nazwa przestrzeni nazw dyskusji 2|typ jednostki 2{{=}}Podręcznik|nazwa jednostki 2{{=}}Szablon:Strona|numer jednostki{{=}}2}}}} (ale wtedy jest brana przestrzeń nazw z nazwy jednostki), ale o tym więcej w rozdziałach {{Code|{{sr|# p["Dyskusyjny typ jednostki 2"](frame,i)|p=Pudełko}}}} w „{{sr|#Funkcje typu jednostki|p=Pudełko}}”, on definiuje przestrzenie dyskusji, ale można użyć parametru dyskusji typu jednostki z obojętnie jaką wartością niepustą, czy pustą, czy nawet jej nie podamy, wtedy wyświetli się nazwa przestrzeni nazw dyskusji. Jeżeli typ jednostki wskazuje na przestrzeń nazw główną, wtedy się liczą parametry nazw jednostek. Również parametry typu jednostki nie powinno się podawać w dziecku w ramce, tylko w rodzicu w szablonie jako parametry, w którym ta ramka jest wywoływana, ale tutaj podano jedynie dla przykładu, jak najłatwiej sprawdzić działanie tych parametrów tej funkcji. Najpierw w funkcji nagłówku brane są parametry nazw przestrzeni nazw, a jeżeli ich nie ma, to parametry typu jednostki, a jeżeli nie ma lub parametry przestrzenne wskazują na przestrzeń główną, i nie ma nazwy jednostki, to generowane są nazwy tej funkcji na podstawie aktualnej strony. == Funkcje pełnych nazw jednostki == === {{Code|p["Pełna nazwa dyskusji jednostki"](frame,i)}} === === {{Code|p["Pełna nazwa przedmiotowa jednostki"](frame,i)}} === === {{Code|p["Pełna nazwa jednostki"](frame,i)}} === == Funkcje pełnych nazw jednostki drugiej wersji == === {{Code|p["Pełna nazwa dyskusji jednostki 2"](frame,i)}} === === {{Code|p["Pełna nazwa przedmiotowa jednostki 2"](frame,i)}} === === {{Code|p["Pełna nazwa jednostki 2"](frame,i)}} === == Funkcje pełnych nazw jednostki trzeciej wersji == === {{Code|p["Pełna nazwa dyskusji jednostki 3"](frame,i)}} === === {{Code|p["Pełna nazwa przedmiotowa jednostki 3"](frame,i)}} === === {{Code|p["Pełna nazwa jednostki 3"](frame,i)}} === == Funkcje nazw jednostki == === {{Code|p["Nazwa jednostki"](frame,i)}} === == Funkcje nazw jednostki drugiej wersji == === {{Code|p["Nazwa jednostki 2"](frame,i)}} === === {{Code|p["Nazwa przedmiotowa jednostki 2"](frame,i)}} === === {{Code|p["Nazwa dyskusji jednostki 2"](frame,i)}} === == Funkcje nazw przestrzeni nazw trzeciej wersji == === {{Code|p["Nazwa przestrzeni nazw 3"](frame,i)}} === Funkcja pisze nazwę przestrzeni nazw, niezależnie, czy to jest przedmiotowa, czy dyskusji, według, i nie zawsze tylko, podanej w zmiennej {{Code|nazwa przestrzeni nazw}} dla pozycja bazowej w podanych parametrach szablonu rodzicu ramki dziecka, lub dla innej pozycji należy parametr podawać w formie {{Code|nazwa przestrzeni nazw 1}}, {{Code|Nazwa przestrzeni nazw 3}}, {{Code|nazwa przestrzeni nazw 3}},..., lub te parametry można podać w postaci ogólnej {{Code|nazwa przestrzeni nazw i}}. W tej funkcji trzeba też podawać parametry nazwy jednostek {{Code|nazwa jednostki}}, {{Code|nazwa jednostki 1}}, {{Code|nazwa jednostki 2}}, {{Code|nazwa jednostki 3}},... Parametry podaje się w parametrach rodzica wywołania tej funkcji {{Code|{{m|Pudełko|Nazwa przestrzeni nazw 3}}}} (ale ich nie trzeba podawać w dziecku, ale można) i w parametrach dziecka, jeśli chodzi o zmienną {{Code|numer jednostki}}, czyli np.: {{Code|{{m|Pudełko|Nazwa przestrzeni nazw 3|numer jednostki{{=}}<jakaś liczba całkowita dodatnia>}}}}. Te parametry przestrzenne zamiast w rodzicu w szablonie można podać w ramce dziecka, wtedy parametry dziecka mają pierwszeństwo. Przestrzeń nazw z parametrów nazw przestrzennych bazowych (bez numerka) może odpowiadać wartości przestrzeni głównej, to wtedy odpowiednia przestrzeń nazw z parametru nazwy jednostki się nie liczy w tej funkcji, aby się liczyła należy użyć funkcji {{Code|{{sr|#p["Nazwa przestrzeni nazw"](frame,...)|p=Pudełko}}}}. Przestrzeń nazw z parametrów nazw przestrzennych numerkowych może odpowiadać wartości przestrzeni głównej, to wtedy odpowiednia przestrzeń nazw z parametru nazwy jednostki się liczy w tej funkcji, wtedy jest liczona nazwa przestrzeni nazw z tego parametru. Gdy parametry przestrzenne lub typ jednostki w drugim podejściu nie wskazują na przestrzeń główną, to wtedy działanie tej funkcji jest podobne do {{Code|{{sr|#p["Nazwa przestrzeni nazw 2"](frame,...)|p=Pudełko}}}}. Definicja skrótowa funkcji: <syntaxhighlight lang="lua"> p["Nazwa przestrzeni nazw 3"]=function(frame,czy_uwzglednic_alternatywna_nazwe,i)...end; </syntaxhighlight> Wtedy ciało funkcji tej, czyli jego definicja w środku, jest: <syntaxhighlight lang="lua"> -- Jest liczony numer parametru nazwy przestrzeni nazw, domyslnie chodzi tu o numer bazowy parametrów przestrzennych; local numer_jednostki=i or frame.args["numer jednostki"]; local liczba_numeru_jednostki=((numer_jednostki)and(tonumber(numer_jednostki)) or 0); local pudelko_pomocne_modul=require("Module:Pudełko/Pomocne"); -- Liczy nazwę przestrzeni nazw dyskusji na podstawie podanych parametrów; return pudelko_pomocne_modul.Uzyskanie_nazw_jednostki(frame,0,liczba_numeru_jednostki,nil,2); </syntaxhighlight> Parametry funkcji: * {{Code|frame}} - tablica ramki tablicy transportu, * {{Code|czy_uwzglednic_alternatywna_nazwe}} - czy ma uwzględniać nazwę przestrzeni nazw domyślną szablonu, dostępne wartości: {{Code|false}}, w której nazwa domyślna nie jest uwzględniana wtedy, oraz {{Code|nil}} i {{Code|true}}, które oznaczają to samo, w tym jeżeli ona jest uwzględniana, wtedy jest brany parametr pierwszy dziecka, który musi istnieć przy takiej wartości tego parametru, tzn. {{Code|{{m|Pudełko|Nazwa przestrzeni nazw 3|Szablon}}}}, a nazwa uzyskana nazwy przestrzeni nazw jest w takim przypadku błędna, a jeżeli nazwa domyślna jest błędna, czyli {{Code|{{m|Pudełko|Nazwa przestrzeni nazw 3|Moja przestrzeń}}}}, wtedy funkcja zwraca stan błędu {{Code|(błąd)}}. * {{Code|i}} - numer zmiennej nazwy przestrzeni nazw. Funkcja wykorzystuje {{Code|{{sr|#p.Uzyskanie_nazw_jednostki(frame,...)|p=Pudełko/Pomocne}}}} do wyznaczania ogólnego nazwy przestrzeni nazw dla pozycji bazowej i numerkowej, tzn. dla pozycji: jeden, dwa, trzy,..., itd, i ich ogólnej. Parametr ramki tablicy transportu rodzica szablonu: * {{Code|nazwa przestrzeni nazw}}, {{Code|nazwa przestrzeni nazw 1}}, {{Code|Nazwa przestrzeni nazw 3}}, {{Code|nazwa przestrzeni nazw 3}},..., {{Code|nazwa przestrzeni nazw i}} - nazwy przestrzeni nazw dla pozycji bazowej oraz zwykłej i ogólnej numerkowej, * {{Code|nazwa jednostki}}, {{Code|nazwa jednostki 1}}, {{Code|nazwa jednostki 2}}, {{Code|nazwa jednostki 3}},... - nazwy jednostek dla pozycji bazowej i numerkowej, * {{Code|typ jednostki}}, {{Code|typ jednostki 1}}, {{Code|typ jednostki 2}}, {{Code|typ jednostki 3}},..., {{Code|typ jednostki i}} - typy jednostek, którym odpowiadają pewne przestrzenie przedmiotowe, dla pozycji bazowej, numerkowej i ogólnej, ** {{Code|dyskusja typu jednostki}}, {{Code|dyskusja typu jednostki 1}}, {{Code|dyskusja typ jednostki 2}}, {{Code|dyskusja typ jednostki 3}},..., {{Code|dyskusja typ jednostki i}} - czy dany typ jednostki ma przedstawiać, jeśli niepusta, przestrzeń dyskusji dla pozycji bazowej, numerkowej i ogólnej. Parametry ramki tablicy transportu dziecka: * Parametry dziecka są takie same jak rodzica dla funkcji pudełkowej plus tu wymienione, * {{Code|numer jednostki}} - jak parametr {{Code|i}} nie został ustawiony, to wtedy liczy się ta zmienna. Przykłady: <syntaxhighlight lang="mediawiki"> {{Nazwa szablonu|nazwa przestrzeni nazw=Wikibooks|nazwa przestrzeni nazw=|nazwa przestrzeni nazw i=|nazwajednostki=Szablon:Strona|nazwa jednostki 2=Wikibooks:Strona}} <hr /> {{Nazwa szablonu|nazwa przestrzeni nazw=Wikibooks|nazwa przestrzeni nazw 1=Szablon|nazwa przestrzeni nazw i=|nazwa jednostki 2=Wikibooks:Strona}} </syntaxhighlight> W dziecku powiedzmy jest wywołanie, i szukamy nazwy przestrzeni nazw o numerze dwa, która została podana, ale istnieje za to jej wersji ogólna {{Code|nazwa przestrzeni nazw i}} i domyślna {{Code|nazwa przestrzeni nazw}}, ale wtedy dla tego numerkowego liczy się to ogólne z {{Code| i}}, a ponieważ ta nazwa jest pusta, więc będziemy liczyli nazwę przestrzeni nazw z {{Code|nazwa jednostki 2}}: <syntaxhighlight lang="mediawiki"> {{#invoke:Pudełko|Nazwa przestrzeni nazw 3}} <hr /> {{#invoke:Pudełko|Nazwa przestrzeni nazw 3|numer jednostki=2}} </syntaxhighlight> Na podstawie powyższego przykładu otrzymamy wynik o schemacie, nie wyniku, bo tam nie ma zmiennej {{Code|nazwa przestrzeni nazw 1}}, ale jest {{Code|nazwa przestrzeni nazw i}}: <syntaxhighlight lang="mediawiki"> <!-- Ale nie "nazwa przestrzeni nazw""; --> <!-- nazwa przestrzeni nazw=""; --> <!-- Czyli wynik: --> <!-- wynik pusty --> <!-- Widzimy, że wygenerowała się nazwa przestrzeni nazw, którą jest przestrzeń nazw główna, jest ciągiem pustym: ""; --> <hr /> <!-- Ale nie "Nazwa przestrzeni nazw 2", bo jej nie ma, ale za to istnieje "nazwa przestrzeni nazw i"; --> <!-- nazwa przestrzeni nazw 2=nazwa przestrzeni nazw i="", a nazwa jednostki 2="Wikibooks:Strona"; --> <!-- Czyli wynik: --> Wikibooks <!-- Widzimy, że wygenerowała się nazwa przestrzeni nazw, którą jest przestrzeń nieprogramowa, ale projektu, wychodząca z nazwy jednostek w tym przypadku z "nazwa jednostki 2"; --> </syntaxhighlight> Dla parametrów numerkowych nie jest brana w tym powyższym przykładzie zmienna {{Code|nazwa przestrzeni nazw 2}}, bo jej nie ma, ale za to jest {{Code|nazwa przestrzeni nazw i}}, bo ona występuje jako parametr domyślny ogólny dla parametrów numerkowych. Tytaj jest używana jest zmienna {{Code|nazwa jednostki 2}} do wygenerowania ostatecznego wyniku, bo jak można zauważyć, parametry przestrzenne wskazują na przestrzeń główną, a nazwy jednostek już nie. Dla parametrów bazowych mamy zmienna {{Code|nazwa przestrzeni nazw}}, ona jest pusta, więc to zostanie wziete do ostatecznego wyniku. Przykłady w wikikodzie: * {{Code|{{m|Pudełko|Nazwa przestrzeni nazw 3|nazwa przestrzeni nazw{{=}}|nazwa jednostki{{=}}Wikibooks:Strona}}}} → {{Tt|{{#invoke:Pudełko|Nazwa przestrzeni nazw 3|nazwa przestrzeni nazw=|nazwa jednostki=Wikibooks:Szablon}}}} * {{Code|{{m|Pudełko|Nazwa przestrzeni nazw 3|nazwa przestrzeni nazw 2{{=}}|nazwa jednostki 2{{=}}Wikibooks:Strona|numer jednostki{{=}}2}}}} → {{Tt|{{#invoke:Pudełko|Nazwa przestrzeni nazw 3|nazwa przestrzeni nazw 2=|nazwa jednostki 2=Wikibooks:Szablon|numer jednostki=2}}}} Powyżej dla przykładu podano parametry nie w rodzicu w szablonie, tylko w dziecku, jeśli chodzi o parametry nazw przestrzeni nazw i nazw jednostek, ale ich się za to nie powinno podawać w tych ramach, tylko w szablonach, w których wywoływane są te ramki pudełek {{Code|{{m|Pudełko}}}}, ale tak tutaj tak zrobiono by było najłatwiej sprawdzić działanie tego typu funkcji. Analogicznie możemy podawać parametry typu jednostki, np.: wywołaniu modułowym {{Code|{{m|Pudełko|Nazwa przestrzeni nazw 3|typ jednostki 2{{=}}Podręcznik|nazwa jednostki 2{{=}}Szablon:Strona|numer jednostki{{=}}2}}}} (ale wtedy jest brana przestrzeń nazw z nazwy jednostki), ale o tym więcej w rozdziałach {{Code|{{sr|#p["Typ jednostki 3"](frame,i)|p=Pudełko}}}} w „{{sr|#Funkcje typu jednostki|p=Pudełko}}”, on definiuje przestrzenie przedmiotowe, ale można użyć parametru dyskusji typu jednostki z wartością niepustą, wtedy wyświetli się nazwa przestrzeni nazw dyskusji. Jeżeli typ jednostki bazowy wskazuje na przestrzeń nazw główną, wtedy się nie liczą parametry nazw jednostek, a na numerkowy, wtedy się liczy. Również parametry typu jednostki nie powinno się podawać w dziecku w ramce, tylko w rodzicu w szablonie jako parametry, w którym ta ramka jest wywoływana, ale tutaj podano jedynie dla przykładu, jak najłatwiej sprawdzić działanie tych parametrów tej funkcji. Najpierw w funkcji nagłówku brane są parametry nazw przestrzeni nazw, a jeżeli ich nie ma, to parametry typu jednostki, a jeżeli nie ma lub parametry przestrzenne wskazują na przestrzeń główną, i nie ma nazwy jednostki, to generowane są nazwy tej funkcji na podstawie aktualnej strony. === {{Code|p["Nazwa przedmiotowej przestrzeni nazw 3"](frame,i)}} === Funkcja pisze przedmiotową nazwę przestrzeni nazw jakikolwiek nazwy przestrzeni nazw (tzn. nazwę przedmiotową nazwy przestrzenie nazw, czyli nie dyskusji, zamieniana jest na nią samą, czyli identyfikator przestrzeni się nie zmienia, a dyskusji, nie przedmiotową, przekształca się na przedmiotową jej odpowiadającą, czyli w tym przypadku identyfikator przestrzeni zmniejsza się o numer mniej), według podanej w zmiennej {{Code|nazwa przestrzeni nazw}} dla pozycja bazowej w podanych parametrach szablonu rodzicu ramki dziecka, lub dla innej pozycji należy parametr podawać w formie {{Code|nazwa przestrzeni nazw 1}}, {{Code|nazwa przestrzeni nazw 2}}, {{Code|nazwa przestrzeni nazw 3}},..., lub te parametry można podać w postaci ogólnej {{Code|nazwa przestrzeni nazw i}}. Parametry podaje się w parametrach rodzica wywołania tej funkcji {{Code|{{m|Pudełko|Nazwa przedmiotowej przestrzeni nazw 3}}}} (ale ich nie trzeba podawać w dziecku, ale można) i w parametrach dziecka, jeśli chodzi o zmienną {{Code|numer jednostki}}, czyli np.: {{Code|{{m|Pudełko|Nazwa przedmiotowej przestrzeni nazw 3|numer jednostki{{=}}<jakaś liczba całkowita dodatnia>}}}}. Te parametry przestrzenne zamiast w rodzicu w szablonie można podać w ramce dziecka, wtedy parametry dziecka mają pierwszeństwo. Parametry przestrzenne mogą mogą być podane w postaci przestrzeni przedmiotowej lub dyskusji, ale ta funkcja zawsze ją zamienia na przedmiotową. Przestrzeń nazw z parametrów nazw przestrzennych bazowych (bez numerka) może odpowiadać wartości przestrzeni głównej, to wtedy odpowiednia przestrzeń nazw z parametru nazwy jednostki się nie liczy w tej funkcji, aby się liczyła należy użyć funkcji {{Code|{{sr|#p["Nazwa przedmiotowej przestrzeni nazw"](frame,...)|p=Pudełko}}}}. Przestrzeń nazw z parametrów nazw przestrzennych numerkowych może odpowiadać wartości przestrzeni głównej, to wtedy odpowiednia przestrzeń nazw z parametru nazwy jednostki się liczy w tej funkcji, wtedy jest liczona nazwa przestrzeni nazw z tego parametru. Gdy parametry przestrzenne lub typ jednostki w drugim podejściu nie wskazują na przestrzeń główną, to wtedy działanie tej funkcji jest podobne do {{Code|{{sr|#p["Nazwa przedmiotowej przestrzeni nazw 2"](frame,...)|p=Pudełko}}}}. Definicja skrótowa funkcji: <syntaxhighlight lang="lua"> p["Nazwa przedmiotowej przestrzeni nazw 3"]=function(frame,czy_uwzglednic_alternatywna_nazwe,i)...end; </syntaxhighlight> Wtedy ciało funkcji tej, czyli jego definicja w środku, jest: <syntaxhighlight lang="lua"> -- Jest liczony numer parametru nazwy przestrzeni nazw, domyslnie chodzi tu o numer bazowy parametrów przestrzennych; local numer_jednostki=i or frame.args["numer jednostki"]; local liczba_numeru_jednostki=((numer_jednostki)and(tonumber(numer_jednostki)) or 0); local pudelko_pomocne_modul=require("Module:Pudełko/Pomocne"); -- Liczy nazwę przestrzeni nazw przedmiotową na podstawie podanych parametrów; return pudelko_pomocne_modul.Uzyskanie_nazw_jednostki(frame,1,liczba_numeru_jednostki,nil,1); </syntaxhighlight> Parametry funkcji: * {{Code|frame}} - tablica ramki tablicy transportu, * {{Code|czy_uwzglednic_alternatywna_nazwe}} - czy ma uwzględniać nazwę przestrzeni nazw domyślną szablonu, dostępne wartości: {{Code|false}}, w której nazwa domyślna nie jest uwzględniana wtedy, oraz {{Code|nil}} i {{Code|true}}, które oznaczają to samo, w tym jeżeli ona jest uwzględniana, wtedy jest brany parametr pierwszy dziecka, który musi istnieć przy takiej wartości tego parametru, tzn. {{Code|{{m|Pudełko|Nazwa przedmiotowej przestrzeni nazw 3|Dyskusja szablonu}}}} - ta nazwa domyślna zostanie zamieniona na przedmiotową, a jak ona by była przedmiotowa, to żadnej zamiany by nie było, a nazwa uzyskana z nazwy przestrzeni nazw z parametrów przestrzennych jest w takim przypadku błędna, to w takim razie brany jest ten parametr, a jeżeli ta nazwa domyślna jest błędna, czyli {{Code|{{m|Pudełko|Nazwa przedmiotowej przestrzeni nazw 3|Moja przestrzeń}}}}, wtedy funkcja zwraca stan błędu {{Code|(błąd)}}. * {{Code|i}} - numer zmiennej nazwy przestrzeni nazw. Funkcja wykorzystuje {{Code|{{sr|#p.Uzyskanie_nazw_jednostki(frame,...)|p=Pudełko/Pomocne}}}} do wyznaczania ogólnego nazwy przestrzeni nazw dla pozycji bazowej i numerkowej, tzn. dla pozycji: jeden, dwa, trzy,..., itd, i ich ogólnej. Parametr ramki tablicy transportu rodzica szablonu: * {{Code|nazwa przestrzeni nazw}}, {{Code|nazwa przestrzeni nazw 1}}, {{Code|nazwa przestrzeni nazw 2}}, {{Code|nazwa przestrzeni nazw 3}},..., {{Code|nazwa przestrzeni nazw i}} - nazwy przestrzeni nazw dla pozycji bazowej oraz zwykłej i ogólnej numerkowej, * {{Code|typ jednostki}}, {{Code|typ jednostki 1}}, {{Code|typ jednostki 2}}, {{Code|typ jednostki 3}},..., {{Code|typ jednostki i}} - typy jednostek, którym odpowiadają pewne przestrzenie przedmiotowe, dla pozycji bazowej, numerkowej i ogólnej. Parametry ramki tablicy transportu dziecka: * Parametry dziecka są takie same jak rodzica dla funkcji pudełkowej plus tu wymienione, * {{Code|numer jednostki}} - jak parametr {{Code|i}} nie został ustawiony, to wtedy liczy się ta zmienna. Przykłady: <syntaxhighlight lang="mediawiki"> {{Nazwa szablonu 1|nazwa przestrzeni nazw=Wikibooks|nazwa przestrzeni nazw=|nazwa przestrzeni nazw i=|nazwa jednostki=Dyskusja Wikibooks:Strona}} <hr /> {{Nazwa szablonu 2|nazwa przestrzeni nazw=Wikibooks|nazwa przestrzeni nazw 1=Szablon|nazwa przestrzeni nazw i=|nazwa jednostki 2=Dyskusja Wikibooks:Strona}} </syntaxhighlight> Kolejno wywołania te są równowaażne: <syntaxhighlight lang="mediawiki"> {{#invoke:Pudełko|Nazwa przedmiotowej przestrzeni nazw 3}} <hr /> {{#invoke:Pudełko|Nazwa przedmiotowej przestrzeni nazw 3|numer jednostki=2}} </syntaxhighlight> Na podstawie powyższego przykładu otrzymamy wynik o schemacie, nie wyniku, bo tam nie ma zmiennej {{Code|nazwa przestrzeni nazw 1}}, ale jest {{Code|nazwa przestrzeni nazw i}}: <syntaxhighlight lang="mediawiki"> <!-- Ale nie "nazwa przestrzeni nazw""; --> <!-- nazwa przestrzeni nazw=""; --> <!-- Czyli wynik: --> <!-- wynik pusty --> <!-- Widzimy, że wygenerowała się nazwa przestrzeni nazw, którą jest przestrzeń nazw główna, jest ciągiem pustym: ""; --> <hr /> <!-- Ale nie "Nazwa przestrzeni nazw 2", bo jej nie ma, ale za to istnieje "nazwa przestrzeni nazw i"; --> <!-- nazwa przestrzeni nazw 2=nazwa przestrzeni nazw i="", a nazwa jednostki 2="Dyskusja Wikibooks:Strona"; --> <!-- Czyli wynik: --> Wikibooks <!-- Widzimy, że wygenerowała się nazwa przestrzeni nazw, którą jest przestrzeń nieprogramowa, ale projektu, wychodząca z nazwy jednostek w tym przypadku z "nazwa jednostki 2"; --> </syntaxhighlight> Dla parametrów numerkowych nie jest brana w tym powyższym przykładzie zmienna {{Code|nazwa przestrzeni nazw 2}}, bo jej nie ma, ale za to jest {{Code|nazwa przestrzeni nazw i}}, bo ona występuje jako parametr domyślny ogólny dla parametrów numerkowych. Tytaj jest używana jest zmienna {{Code|nazwa jednostki 2}} do wygenerowania ostatecznego wyniku, bo jak można zauważyć, parametry przestrzenne wskazują na przestrzeń główną, a nazwy jednostek już nie. Dla parametrów bazowych mamy zmienna {{Code|nazwa przestrzeni nazw}}, ona jest pusta, więc to zostanie wziete do ostatecznego wyniku. Przykłady w wikikodzie: * {{Code|{{m|Pudełko|Nazwa przestrzeni nazw 3|nazwa przestrzeni nazw{{=}}|nazwa jednostki{{=}}Dyskusja Wikibooks:Strona}}}} → {{Tt|{{#invoke:Pudełko|Nazwa przestrzeni nazw 3|nazwa przestrzeni nazw=|nazwa jednostki=Dyskusja Wikibooks:Szablon}}}} * {{Code|{{m|Pudełko|Nazwa przestrzeni nazw 3|nazwa przestrzeni nazw 2{{=}}|nazwa jednostki 2{{=}}Dyskusja Wikibooks:Strona|numer jednostki{{=}}2}}}} → {{Tt|{{#invoke:Pudełko|Nazwa przestrzeni nazw 3|nazwa przestrzeni nazw 2=|nazwa jednostki 2=Dyskusja Wikibooks:Szablon|numer jednostki=2}}}} Powyżej dla przykładu podano parametry nie w rodzicu w szablonie, tylko w dziecku, jeśli chodzi o parametry nazw przestrzeni nazw, ale ich się za to nie powinno podawać w tych ramach, tylko w szablonach, w których wywoływane są te ramki pudełek {{Code|{{m|Pudełko}}}}, ale tak tutaj tak zrobiono by było najłatwiej sprawdzić działanie tego typu funkcji. Analogicznie możemy podawać parametry typu jednostki, np.: wywołaniu modułowym {{Code|{{m|Pudełko|Nazwa przedmiotowej przestrzeni nazw 3|typ jednostki 2{{=}}strona szablonu|numer jednostki{{=}}2}}}}, ale o tym więcej w rozdziałach {{Code|{{sr|# p["Przedmiotowy typ jednostki 3"](frame,i)|p=Pudełko}}}} w „{{sr|#Funkcje typu jednostki|p=Pudełko}}”, ale wtedy ta sama nazwa przestrzeni nazw reprezentowana przez {{Parametr|typ jednostki 2|strona szablonu}}, jest zamieniana na to samo, lepiej jest tutaj używać parametrów przestrzennych nazw niż typu jednostki, bo typ jednostki ma taką samą wartość dla przestrzeni przedmiotowej, co dyskusji. Tutaj parametr dyskusji typu jednostki bazowy i numerkowy ogólny, czy szczegółowy, nie gra roli, bo nawet, gdy wygenerujemy nazwę przestrzeni dyskusji za pomoca tego parametru, to i tak otrzymamy na samym końcu jego nazwę przedmiotową. Jeżeli typ jednostki bazowy wskazuje na przestrzeń nazw główną, wtedy się nie liczą parametry nazw jednostek, a na numerkowy, wtedy się liczy. Również parametry typu jednostki nie powinno się podawać w dziecku w ramce, tylko w rodzicu w szablonie jako parametry, w którym ta ramka jest wywoływana, ale tutaj podano jedynie dla przykładu, jak najłatwiej sprawdzić działanie tych parametrów tej funkcji. Najpierw w funkcji nagłówku brane są parametry nazw przestrzeni nazw, a jeżeli ich nie ma, to parametry typu jednostki, a jeżeli nie ma, to generowane są nazwy na podstawie aktualnego modułu. === {{Code|p["Nazwa przestrzeni nazw dyskusji 3"](frame,i)}} === Funkcja pisze nazwę przestrzeni nazw dyskusji jakikolwiek nazwy przestrzeni nazw (tzn. nazwę dyskusji nazwy przestrzenie nazw, czyli nie przedmiotowej, zamieniana jest na nią samą, czyli identyfikator przestrzeni się nie zmienia, a przedmiotową, nie dyskusji, przekształca się na dyskusji jej odpowiadającą, czyli w tym przypadku identyfikator przestrzeni zwiększa się o numer więcej), według, i nie zawsze tylko, podanej w zmiennej {{Code|nazwa przestrzeni nazw}} dla pozycja bazowej w podanych parametrach szablonu rodzicu ramki dziecka, lub dla innej pozycji należy parametr podawać w formie {{Code|nazwa przestrzeni nazw 1}}, {{Code|nazwa przestrzeni nazw 2}}, {{Code|nazwa przestrzeni nazw 3}},..., lub te parametry można podać w postaci ogólnej {{Code|nazwa przestrzeni nazw i}}. W tej funkcji trzeba też podawać parametry nazwy jednostek {{Code|nazwa jednostki}}, {{Code|nazwa jednostki 1}}, {{Code|nazwa jednostki 2}}, {{Code|nazwa jednostki 3}},... Parametry podaje się w parametrach rodzica wywołania tej funkcji {{Code|{{m|Pudełko|Nazwa przestrzeni nazw dyskusji 3}}}} (ale ich nie trzeba podawać w dziecku, ale można) i w parametrach dziecka, jeśli chodzi o zmienną {{Code|numer jednostki}}, czyli np.: {{Code|{{m|Pudełko|Nazwa przestrzeni nazw dyskusji 3|numer jednostki{{=}}<jakaś liczba całkowita dodatnia>}}}}. Te parametry przestrzenne zamiast w rodzicu w szablonie można podać w ramce dziecka, wtedy parametry dziecka mają pierwszeństwo. Przestrzeń nazw z parametrów nazw przestrzennych bazowych (bez numerka) może odpowiadać wartości przestrzeni głównej, to wtedy odpowiednia przestrzeń nazw z parametru nazwy jednostki się nie liczy w tej funkcji, aby się liczyła należy użyć funkcji {{Code|{{sr|#p["Nazwa przestrzeni nazw dyskusji"](frame,...)|p=Pudełko}}}}. Przestrzeń nazw z parametrów nazw przestrzennych numerkowych może odpowiadać wartości przestrzeni głównej, to wtedy odpowiednia przestrzeń nazw z parametru nazwy jednostki się liczy w tej funkcji, wtedy jest liczona nazwa przestrzeni nazw z tego parametru. Gdy parametry przestrzenne lub typ jednostki w drugim podejściu nie wskazują na przestrzeń główną, to wtedy działanie tej funkcji jest podobne do {{Code|{{sr|#p["Nazwa przestrzeni nazw dysskusji 2"](frame,...)|p=Pudełko}}}}. Definicja skrótowa funkcji: <syntaxhighlight lang="lua"> p["Nazwa przestrzeni nazw dyskusji 3"]=function(frame,czy_uwzglednic_alternatywna_nazwe,i)...end; </syntaxhighlight> Wtedy ciało funkcji tej, czyli jego definicja w środku, jest: <syntaxhighlight lang="lua"> -- Jest liczony numer parametru nazwy przestrzeni nazw, domyslnie chodzi tu o numer bazowy parametrów przestrzennych; local numer_jednostki=i or frame.args["numer jednostki"]; local liczba_numeru_jednostki=((numer_jednostki)and(tonumber(numer_jednostki)) or 0); local pudelko_pomocne_modul=require("Module:Pudełko/Pomocne"); -- Liczy nazwę przestrzeni nazw dyskusji na podstawie podanych parametrów; return pudelko_pomocne_modul.Uzyskanie_nazw_jednostki(frame,2,liczba_numeru_jednostki,nil,1); </syntaxhighlight> Parametry funkcji: * {{Code|frame}} - tablica ramki tablicy transportu, * {{Code|czy_uwzglednic_alternatywna_nazwe}} - czy ma uwzględniać nazwę przestrzeni nazw domyślną szablonu, dostępne wartości: {{Code|false}}, w której nazwa domyślna nie jest uwzględniana wtedy, oraz {{Code|nil}} i {{Code|true}}, które oznaczają to samo, w tym jeżeli ona jest uwzględniana, wtedy jest brany parametr pierwszy dziecka, który musi istnieć przy takiej wartości tego parametru, tzn. {{Code|{{m|Pudełko|Nazwa przestrzeni nazw dyskusji 3|Szablon}}}}, a nazwa uzyskana nazwy przestrzeni nazw jest w takim przypadku błędna, a jeżeli nazwa domyślna jest błędna, czyli {{Code|{{m|Pudełko|Nazwa przestrzeni nazw dyskusji 3|Moja przestrzeń}}}}, wtedy funkcja zwraca stan błędu {{Code|(błąd)}}. * {{Code|i}} - numer zmiennej nazwy przestrzeni nazw. Funkcja wykorzystuje {{Code|{{sr|#p.Uzyskanie_nazw_jednostki(frame,...)|p=Pudełko/Pomocne}}}} do wyznaczania ogólnego nazwy przestrzeni nazw dla pozycji bazowej i numerkowej, tzn. dla pozycji: jeden, dwa, trzy,..., itd, i ich ogólnej. Parametr ramki tablicy transportu rodzica szablonu: * {{Code|nazwa przestrzeni nazw}}, {{Code|nazwa przestrzeni nazw 1}}, {{Code|nazwa przestrzeni nazw 2}}, {{Code|nazwa przestrzeni nazw 3}},..., {{Code|nazwa przestrzeni nazw i}} - nazwy przestrzeni nazw dla pozycji bazowej oraz zwykłej i ogólnej numerkowej, * {{Code|nazwa jednostki}}, {{Code|nazwa jednostki 1}}, {{Code|nazwa jednostki 2}}, {{Code|nazwa jednostki 3}},... - nazwy jednostek dla pozycji bazowej i numerkowej, * {{Code|typ jednostki}}, {{Code|typ jednostki 1}}, {{Code|typ jednostki 2}}, {{Code|typ jednostki 3}},..., {{Code|typ jednostki i}} - typy jednostek, którym odpowiadają pewne przestrzenie przedmiotowe, dla pozycji bazowej, numerkowej i ogólnej. Parametry ramki tablicy transportu dziecka: * Parametry dziecka są takie same jak rodzica dla funkcji pudełkowej plus tu wymienione, * {{Code|numer jednostki}} - jak parametr {{Code|i}} nie został ustawiony, to wtedy liczy się ta zmienna. Przykłady: <syntaxhighlight lang="mediawiki"> {{Nazwa szablonu|nazwa przestrzeni nazw=Wikibooks|nazwa przestrzeni nazw=|nazwa przestrzeni nazw i=|nazwajednostki=Szablon:Strona|nazwa jednostki 2=Wikibooks:Strona}} <hr /> {{Nazwa szablonu|nazwa przestrzeni nazw=Wikibooks|nazwa przestrzeni nazw 1=Szablon|nazwa przestrzeni nazw i=|nazwa jednostki 2=Wikibooks:Strona}} </syntaxhighlight> W dziecku powiedzmy jest wywołanie, i szukamy nazwy przestrzeni nazw o numerze dwa, która została podana, ale istnieje za to jej wersji ogólna {{Code|nazwa przestrzeni nazw i}} i domyślna {{Code|nazwa przestrzeni nazw}}, ale wtedy dla tego numerkowego liczy się to ogólne z {{Code| i}}, a ponieważ ta nazwa jest pusta, więc będziemy liczyli nazwę przestrzeni nazw z {{Code|nazwa jednostki 2}}: <syntaxhighlight lang="mediawiki"> {{#invoke:Pudełko|Nazwa przestrzeni nazw 3}} <hr /> {{#invoke:Pudełko|Nazwa przestrzeni nazw 3|numer jednostki=2}} </syntaxhighlight> Na podstawie powyższego przykładu otrzymamy wynik o schemacie, nie wyniku, bo tam nie ma zmiennej {{Code|nazwa przestrzeni nazw 1}}, ale jest {{Code|nazwa przestrzeni nazw i}}: <syntaxhighlight lang="mediawiki"> <!-- Ale nie "nazwa przestrzeni nazw""; --> <!-- nazwa przestrzeni nazw=""; --> <!-- Czyli wynik: --> Dyskusja <!-- Widzimy, że wygenerowała się nazwa przestrzeni nazw, którą jest przestrzeń nazw główna, jest ciągiem pustym: ""; --> <hr /> <!-- Ale nie "Nazwa przestrzeni nazw 2", bo jej nie ma, ale za to istnieje "nazwa przestrzeni nazw i"; --> <!-- nazwa przestrzeni nazw 2=nazwa przestrzeni nazw i="", a nazwa jednostki 2="Wikibooks:Strona"; --> <!-- Czyli wynik: --> Dyskusja Wikibooks <!-- Widzimy, że wygenerowała się nazwa przestrzeni nazw, którą jest przestrzeń nieprogramowa, ale projektu, wychodząca z nazwy jednostek w tym przypadku z "nazwa jednostki 2"; --> </syntaxhighlight> Dla parametrów numerkowych nie jest brana w tym powyższym przykładzie zmienna {{Code|nazwa przestrzeni nazw 2}}, bo jej nie ma, ale za to jest {{Code|nazwa przestrzeni nazw i}}, bo ona występuje jako parametr domyślny ogólny dla parametrów numerkowych. Tytaj jest używana jest zmienna {{Code|nazwa jednostki 2}} do wygenerowania ostatecznego wyniku, bo jak można zauważyć, parametry przestrzenne wskazują na przestrzeń główną, a nazwy jednostek już nie. Dla parametrów bazowych mamy zmienna {{Code|nazwa przestrzeni nazw}}, ona jest pusta, więc to zostanie wziete do ostatecznego wyniku. Przykłady w wikikodzie: * {{Code|{{m|Pudełko|Nazwa przestrzeni nazw dyskusji 3|nazwa przestrzeni nazw{{=}}|nazwa jednostki{{=}}Wikibooks:Strona}}}} → {{Tt|{{#invoke:Pudełko|Nazwa przestrzeni nazw dyskusji 3|nazwa przestrzeni nazw=|nazwa jednostki=Wikibooks:Szablon}}}} * {{Code|{{m|Pudełko|Nazwa przestrzeni nazw dyskusji 3|nazwa przestrzeni nazw 2{{=}}|nazwa jednostki 2{{=}}Wikibooks:Strona|numer jednostki{{=}}2}}}} → {{Tt|{{#invoke:Pudełko|Nazwa przestrzeni nazw dyskusji 3|nazwa przestrzeni nazw 2=|nazwa jednostki 2=Wikibooks:Szablon|numer jednostki=2}}}} Powyżej dla przykładu podano parametry nie w rodzicu w szablonie, tylko w dziecku, jeśli chodzi o parametry nazw przestrzeni nazw i nazw jednostek, ale ich się za to nie powinno podawać w tych ramach, tylko w szablonach, w których wywoływane są te ramki pudełek {{Code|{{m|Pudełko}}}}, ale tak tutaj tak zrobiono by było najłatwiej sprawdzić działanie tego typu funkcji. Analogicznie możemy podawać parametry typu jednostki, np.: wywołaniu modułowym {{Code|{{m|Pudełko|Nazwa przestrzeni nazw dyskusji 3|typ jednostki 2{{=}}Podręcznik|nazwa jednostki 2{{=}}Szablon:Strona|numer jednostki{{=}}2}}}} (ale wtedy jest brana przestrzeń nazw z nazwy jednostki), ale o tym więcej w rozdziałach {{Code|{{sr|# p["Dyskusyjny typ jednostki 3"](frame,i)|p=Pudełko}}}} w „{{sr|#Funkcje typu jednostki|p=Pudełko}}”, on definiuje przestrzenie dyskusji, ale można użyć parametru dyskusji typu jednostki z obojętnie jaką wartością niepustą, czy pustą, czy nawet jej nie podamy, wtedy wyświetli się nazwa przestrzeni nazw dyskusji. Jeżeli typ jednostki bazowy wskazuje na przestrzeń nazw główną, wtedy się nie liczą parametry nazw jednostek, a na numerkowy, wtedy się liczy. Również parametry typu jednostki nie powinno się podawać w dziecku w ramce, tylko w rodzicu w szablonie jako parametry, w którym ta ramka jest wywoływana, ale tutaj podano jedynie dla przykładu, jak najłatwiej sprawdzić działanie tych parametrów tej funkcji. Najpierw w funkcji nagłówku brane są parametry nazw przestrzeni nazw, a jeżeli ich nie ma, to parametry typu jednostki, a jeżeli nie ma lub parametry przestrzenne wskazują na przestrzeń główną, i nie ma nazwy jednostki, to generowane są nazwy tej funkcji na podstawie aktualnej strony. == Funkcje nazw jednostki trzeciej wersji == === {{Code|p["Nazwa jednostki 3"](frame,i)}} === === {{Code|p["Nazwa przedmiotowa jednostki 3"](frame,i)}} === === {{Code|p["Nazwa dyskusji jednostki 3"](frame,i)}} === == Funkcje typu jednostki == === {{Code|p["Typ jednostki"](frame,i)}} === === {{Code|p["Typ jednostki 2"](frame,i)}} === === {{Code|p["Typ jednostki 3"](frame,i)}} === === Funkcje typu jednostki przedmiotowe === ==== {{Code|p["Przedmiotowy typ jednostki"](frame,i)}} ==== ==== {{Code|p["Przedmiotowy typ jednostki 2"](frame,i)}} ==== ==== {{Code|p["Przedmiotowy typ jednostki 3"](frame,i)}} ==== === Fukcje typu jednostki dyskusji === ==== {{Code|p["Dyskusyjny typ jednostki"](frame,i)}} ==== ==== {{Code|p["Dyskusyjny typ jednostki 2"](frame,i)}} ==== ==== {{Code|p["Dyskusyjny typ jednostki 3"](frame,i)}} ==== == Funkcje chech pudełka == === {{Code|p["Cecha pudełka"](frame)}} === === {{Code|p["Przedmiotowa cecha pudełka"](frame)}} === === {{Code|p["Dyskusyjna cecha pudełka"](frame)}} === == Fukcje ogólnego pudełka == === {{Code|p["Ogólne pudełko"](frame)}} === == Funkcje ogólne == === {{Code|p["Tekst pudełka"](frame)}} === == Funkcje błędów pudełka == === {{Code|p["Błędy pudełka"](frame)}} === === {{Code|p["Przedmiotowe błędy pudełka"](frame)}} === === {{Code|p["Dyskusyjne błędy pudełka"](frame)}} === == Funkcje nazw stron == === {{Code|p["Nazwa strony głównej projektu"](frame,i)}} === === {{Code|p["Nazwa strony głównej dla dzieci projektu"](frame,i)}} === == Funkcje kodów == === {{Code|p["Kod języka"](frame,i)}} === === {{Code|p["Kod projektu"](frame,i)}} === === {{Code|p["Klucz projektu"](frame,i)}} === == Funkcje wiki == === {{Code|p["Inny niż język bieżący wiki"](frame)}} === === {{Code|p["Inne niż lokalne wiki"](frame)}} === === {{Code|p["Inne niż bieżące wiki"](frame)}} === == Funkcje typów parametrów, czy podane je == === {{Code|p["Podano parametry nienazwane"](frame)}} === === {{Code|p["Podano parametry numerowane"](frame)}} === === {{Code|p["Podano parametry nazwane"](frame)}} === == Funkcje kodów tego projektu == === {{Code|p["Kod projektu tego projektu"](frame)}} === === {{Code|p["Kod języka tego projektu"](frame)}} === === {{Code|p["Klucz projektu tego projektu"](frame)}} === == Funkcje stron == === {{Code|p["Strona główna tego projektu"](frame)}} === === {{Code|p["Strona główna dla dzieci tego projektu"](frame)}} === == Funkcje nazw stron drugiej wersji == === {{Code|p["Nazwa strony głównej dla dzieci projektu 2"](frame)}} === === {{Code| p["Nazwa strony głównej projektu 2"](frame)}} === {{BrClear}} <noinclude><!-- -->{{ProstaStronaKoniec}}<!-- -->{{Kategoria|Opisy funkcji, w Lua w Scribunto, w modułach}}<!-- --></noinclude> cr6d9ro9ba84a4p5pz5772dqg8hp92u 540424 540423 2026-04-23T20:06:27Z Persino 2851 /* Funkcje nazw przestrzeni nazw trzeciej wersji */ 540424 wikitext text/x-wiki <noinclude>{{ProstaStronaStart | nagłówek = {{Podrozdział|{{ld2|Pudełko}}|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 pudelko_modul=require("Module:Pudełko"); </syntaxhighlight> dzięki, któremu można wypisywać funkcje należącego do niego. Posługuje się na parametrach pudełkowych {{Parametr|nazwa przestrzeni nazw}} (czy też bez numerka {{Parametr|nazwa przestrzeni nazw i}} dla tego numerowanego) lub te z numerkiem po jednej spacji w nich (ale nie dla tego z końcówką {{Code| i}}) mogą zostać użyte jako parametry szablonu. Moduł {{Code|{{ld2|Pudełko}}}} przedstawia funkcje nazw w oparciu o funkcje nazw {{Code|{{ld2|Nazwy}}}}, generuje on nazwy za pomocą parametrów pudełkowych podanych poniżej. Parametr {{Parametr|nazwa jednostki}} (lub parametr {{Parametr|cel}} dla numerka tego pierwszego, tego alternatywnego), lub te z numerkiem po jednej spacji w nazwie parametru, albo numerowane numerkami {{Code|1}}, {{Code|2}},..., mogą zostać użyte jako parametry szablonu. Parametry określające rodzaj jednostki {{Parametr|typ jednostki}} z {{Parametr|dyskusja typu jednostki}}, itp. w wersjach z numerkiem po jednej spacji w nich mogą zostać użyte jako parametry szablonu. A te tymi numerowanymi liczbami naturalnymi {{Tt|nazwy jednostki}} od jedynki wzwyż poprzez szablon, w którym są one użyte, one też mogą być użyte z dwukropkiem, te numerowane, na samym początku nazwy, wtedy one są traktowane jako pełne nazwy strony, i wtedy one nie zostaną z interpretowane, że do nich trzeba użyć parametr odpowiedni z nazwą przetrzeni nazw z tego numerowanego, czy ogólny, aby utworzyć znów inną pełną nazwę strony dla tego numerka. Zestawienie: * {{Code|nazwa przestrzeni nazw}} i {{Code|nazwa przestrzeni nazw i}} (ogólna nazwa przestrzeni nazw dla wszystkich numerków, i tych numerowanych jednostek) - i to pierwsze z numerkiem, tzn. {{Code|nazwa przestrzeni nazw 1}}, {{Code|nazwa przestrzeni nazw 2}}, ..., * {{Code|nazwa jednostki}} - i te z numerkiem: {{Code|nazwa jednostki 1}}, {{Code|nazwa jednostki 2}}, ..., lub gdy jest zamiast tego parametrem numerowany, {{Code|1}}, {{Code|2}},..., który dla tego pierwszego może być uznany jako: {{Code|cel}} {{=}} {{Code|1}}, * {{Code|typ jednostki}} (parametr bazowy) i {{Code|typ jednostki i}} (parametr domyślny numerkowy) - i te z numerkiem: {{Code|typ jednostki 1}}, {{Code|typ jednostki 2}}, ..., tzn. gdy chcemy określić z jakim typem jednostki mamy do czynienia w zależności do jakiej przestrzeni nazw należy, a w danej, czy jest on np. programowy, czy tylko jest opisem, jak to bywa w szablonach {{Np|Template|link=tak}}, podobnie jest w przypadku {{Np|Module|link=tak}}, czy jak jest w innych przestrzeniach nazw, ** {{Code|dyskusja typu jednostki}} (parametr bazowy) i {{Code|dyskusja typu jednostki i}} (parametr domyślny numerkowy) - i te z numerkiem: {{Code|dyskusja typu jednostki 1}}, {{Code|dyskusja typu jednostki 2}}, ..., gdy chcemy określić wartością niepustą,że chodzi tutaj o typ jednostki. == {{Code|p.CzyNiepoprawnaNazwa(nazwa_jednostki)}} == Funkcja sprawdzajaca, czy jest poprawnie podana nazwa jednostki, czy ma poprawną nazwę. Znakami tymi, z których nie powinna składać się nazwa jest {{Code|<nowiki>{}<>|[]#\n</nowiki>}} i dodatkowo znak {{Code|&#127;}} (kod {{Code|{{Nowiki|&#127;}}}}). Też nie może składać się z trzech znaków tyldy, tzn. {{Code|<nowiki>~~~</nowiki>}}. Również w swojej budowie nie może składać się ze kodów {{Strong|HTML}} literowych o wzorze {{Code|{{Nowiki|&(%a+);}}}}. Natomiast może składać się z {{Code|{{Nowiki|&#(%d+);}}}} i {{Code|{{Nowiki|&#x(%x+);}}}}, ale w pierw te kody muszą być zamienione na normalne znaki. Skrótowa definicja funkcji: <syntaxhighlight lang="lua"> function p.CzyNiepoprawnaNazwa(nazwa_jednostki)...end; </syntaxhighlight> Wtedy ciało funkcji tej, czyli jego definicja w środku, jest: <syntaxhighlight lang="lua"> -- Moduł: "Moduł:Html/dane", służy do ładowania znaku o kodzie HTML "&#127;"; local html_dane_modul=mw.loadData("Module:Html/dane"); return mw.ustring.match(nazwa_jednostki,"[{}<>|%[%]#\n"..html_dane_modul.znak_127.."]+") or mw.ustring.match(nazwa_jednostki,"~~~") or mw.ustring.match(nazwa_jednostki,"&(%a+);"); </syntaxhighlight> Parametry: * {{Code|nazwa_jednostki}} - nazwa jednostki do sprawdzenia. Przykłady: <syntaxhighlight lang="lua"> local pudelko_modul=require("Module:Pudełko"); -- Podana przykładowa niepoprawna nazwa jedostki local nazwa_jednostki="Nazwa pliku [[Nazwa linku w pliku]]"; -- Fukcja zwróci wartość: local czy_poprawna_nazwa=true; local czy_poprawna_nazwa=pudelko_modul.CzyNiepoprawnaNazwa(nazwa_jednostki); </syntaxhighlight> == Funkcje nazw przestrzeni nazw == === {{Code|p["Nazwa przestrzeni nazw"](frame,...)}} === Funkcja pisze nazwę przestrzeni nazw, niezależnie, czy to jest przedmiotowa, czy dyskusji, według podanej w zmiennej {{Code|nazwa przestrzeni nazw}} dla pozycja bazowej w podanych parametrach szablonu rodzicu ramki dziecka, lub dla innej pozycji należy parametr podawać w formie {{Code|nazwa przestrzeni nazw 1}}, {{Code|nazwa przestrzeni nazw 2}}, {{Code|nazwa przestrzeni nazw 3}},..., lub te parametry można podać w postaci ogólnej {{Code|nazwa przestrzeni nazw i}}. Parametry podaje się w parametrach rodzica wywołania tej funkcji {{Code|{{m|Pudełko|Nazwa przestrzeni nazw}}}} (ale ich nie trzeba podawać w dziecku, ale można) i w parametrach dziecka, jeśli chodzi o zmienną {{Code|numer jednostki}}, czyli np.: {{Code|{{m|Pudełko|Nazwa przestrzeni nazw|numer jednostki{{=}}<jakaś liczba całkowita dodatnia>}}}}. Te parametry przestrzenne zamiast w rodzicu w szablonie można podać w ramce dziecka, wtedy parametry dziecka mają pierwszeństwo. Przestrzeń nazw z parametrów nazw przestrzennych może odpowiadać wartości przestrzeni głównej, to wtedy odpowiednia przestrzeń nazw z parametru nazwy jednostki się nie liczy w tej funkcji, aby się liczyła należy użyć funkcji {{Code|{{sr|#p["Nazwa przestrzeni nazw 2"](frame,...)|p=Pudełko}}}}. Definicja skrótowa funkcji: <syntaxhighlight lang="lua"> p["Nazwa przestrzeni nazw"]=function(frame,czy_uwzglednic_alternatywna_nazwe,i)...end; </syntaxhighlight> Wtedy ciało funkcji tej, czyli jego definicja w środku, jest: <syntaxhighlight lang="lua"> -- Jest liczony numer parametru nazwy przestrzeni nazw, domyslnie chodzi tu o numer bazowy parametrów przestrzennych; local numer_jednostki=i or frame.args["numer jednostki"]; local liczba_numer_jednostki=((numer_jednostki)and(tonumber(numer_jednostki))or 0); local pudelko_pomocne_modul=require("Module:Pudełko/Pomocne"); -- Liczy nazwę przestrzeni nazw na podstawie podanych parametrów; return pudelko_pomocne_modul.Nazwa_przestrzeni_nazw(frame,0, czy_uwzglednic_alternatywna_nazwe,liczba_numer_jednostki); </syntaxhighlight> Parametry funkcji: * {{Code|frame}} - tablica ramki tablicy transportu, * {{Code|czy_uwzglednic_alternatywna_nazwe}} - czy ma uwzględniać nazwę przestrzeni nazw domyślną szablonu, dostępne wartości: {{Code|false}}, w której nazwa domyślna nie jest uwzględniana wtedy, oraz {{Code|nil}} i {{Code|true}}, które oznaczają to samo, w tym jeżeli ona jest uwzględniana, wtedy jest brany parametr pierwszy dziecka, który musi istnieć przy takiej wartości tego parametru, tzn. {{Code|{{m|Pudełko|Nazwa przestrzeni nazw|Szablon}}}}, a nazwa uzyskana nazwy przestrzeni nazw jest w takim przypadku błędna, a jeżeli nazwa domyślna jest błędna, czyli {{Code|{{m|Pudełko|Nazwa przestrzeni nazw|Moja przestrzeń}}}}, wtedy funkcja zwraca stan błędu {{Code|(błąd)}}. * {{Code|i}} - numer zmiennej nazwy przestrzeni nazw. Funkcja wykorzystuje {{Code|{{sr|#p.Nazwa_przestrzeni_nazw(frame,...)|p=Pudełko/Pomocne}}}} do wyznaczania ogólnego nazwy przestrzeni nazw dla pozycji bazowej i numerkowej, tzn. dla pozycji: jeden, dwa, trzy,..., itd, i ich ogólnej. Parametr ramki tablicy transportu rodzica szablonu: * {{Code|nazwa przestrzeni nazw}}, {{Code|nazwa przestrzeni nazw 1}}, {{Code|nazwa przestrzeni nazw 2}}, {{Code|nazwa przestrzeni nazw 3}},..., {{Code|nazwa przestrzeni nazw i}} - nazwy przestrzeni nazw dla pozycji bazowej oraz zwykłej i ogólnej numerkowej, * {{Code|typ jednostki}}, {{Code|typ jednostki 1}}, {{Code|typ jednostki 2}}, {{Code|typ jednostki 3}},..., {{Code|typ jednostki i}} - typy jednostek, którym odpowiadają pewne przestrzenie przedmiotowe, dla pozycji bazowej, numerkowej i ogólnej, ** {{Code|dyskusja typu jednostki}}, {{Code|dyskusja typu jednostki 1}}, {{Code|dyskusja typ jednostki 2}}, {{Code|dyskusja typ jednostki 3}},..., {{Code|dyskusja typ jednostki i}} - czy dany typ jednostki ma przedstawiać, jeśli niepusta, przestrzeń dyskusji dla pozycji bazowej, numerkowej i ogólnej. Parametry ramki tablicy transportu dziecka: * Parametry dziecka są takie same jak rodzica dla funkcji pudełkowej plus tu wymienione, * {{Code|numer jednostki}} - jak parametr {{Code|i}} nie został ustawiony, to wtedy liczy się ta zmienna. Przykłady: <syntaxhighlight lang="mediawiki"> {{Nazwa szablonu|nazwa przestrzeni nazw=Wikibooks|nazwa przestrzeni nazw 2=Szablon|nazwa przestrzeni nazw i=Moduł}} </syntaxhighlight> W dziecku powiedzmy jest wywołanie, i szukamy nazwy przestrzeni nazw o numerze dwa, która nie została podana, ale istnieje za to jej wersji ogólna {{Code|nazwa przestrzeni nazw i}} i domyślna {{Code|nazwa przestrzeni nazw}}: <syntaxhighlight lang="mediawiki"> {{#invoke:Pudełko|Nazwa przestrzeni nazw|numer jednostki=1}} </syntaxhighlight> Na podstawie powyższego przykładu otrzymamy wynik o schemacie, nie wyniku, bo tam nie ma zmiennej {{Code|nazwa przestrzeni nazw 1}}, ale jest {{Code|nazwa przestrzeni nazw i}}: <syntaxhighlight lang="mediawiki"> <!-- Ale nie "nazwa przestrzeni nazw", bo jej nie ma, ale za to istnieje "nazwa przestrzeni nazw i"; --> <!-- nazwa przestrzeni nazw 2=nazwa przestrzeni nazw i=Moduł; --> <!-- Czyli wynik: --> Moduł <!-- Widzimy, że wygenerowała się nazwa przestrzeni nazw, którą jest przestrzeń programowa, którą również jest "Szablon"; --> </syntaxhighlight> Nie jest brana w tym powyższym przykładzie zmienna {{Code|nazwa przestrzeni nazw}}, bo jej nie ma, ale za to jest {{Code|nazwa przestrzeni nazw i}}, bo ona występuje jako parametr domyślny ogólny dla parametrów numerkowych. Przykłady w wikikodzie: * {{Code|{{m|Pudełko|Nazwa przestrzeni nazw|numer jednostki{{=}}2}}}} → {{Tt|{{#invoke:Pudełko|Nazwa przestrzeni nazw|numer jednostki=2}}}} * {{Code|{{m|Pudełko|Nazwa przestrzeni nazw|Szablon|nazwa przestrzeni nazw i{{=}}Moja przestrzeń|numer jednostki{{=}}2}}}} → {{Tt|{{#invoke:Pudełko|Nazwa przestrzeni nazw|Szablon|nazwa przestrzeni nazw i=Moja przestrzeń|numer jednostki=2}}}} * {{Code|{{m|Pudełko|Nazwa przestrzeni nazw|nazwa przestrzeni nazw 2{{=}}Szablon|numer jednostki{{=}}2}}}} → {{Tt|{{#invoke:Pudełko|Nazwa przestrzeni nazw|nazwa przestrzeni nazw 2=Szablon|numer jednostki=2}}}} * {{Code|{{m|Pudełko|Nazwa przestrzeni nazw|nazwa przestrzeni nazw 2{{=}}Szablon|numer jednostki{{=}}2}}}} → {{Tt|{{#invoke:Pudełko|Nazwa przestrzeni nazw|nazwa przestrzeni nazw i=Szablon|numer jednostki=2}}}} * {{Code|{{m|Pudełko|Nazwa przestrzeni nazw|nazwa przestrzeni nazw{{=}}Szablon|numer jednostki{{=}}2}}}} → {{Tt|{{#invoke:Pudełko|Nazwa przestrzeni nazw|nazwa przestrzeni nazw=Szablon|numer jednostki=2}}}} Powyżej dla przykładu podano parametry nie w rodzicu w szablonie, tylko w dziecku, jeśli chodzi o parametry nazw przestrzeni nazw, ale ich się za to nie powinno podawać w tych ramach, tylko w szablonach, w których wywoływane są te ramki pudełek {{Code|{{m|Pudełko}}}}, ale tak tutaj tak zrobiono by było najłatwiej sprawdzić działanie tego typu funkcji. Analogicznie możemy podawać parametry typu jednostki, np.: wywołaniu modułowym {{Code|{{m|Pudełko|Nazwa przestrzeni nazw|typ jednostki 2{{=}}strona szablonu|numer jednostki{{=}}2}}}}, ale o tym więcej w rozdziałach {{Code|{{sr|# p["Typ jednostki"](frame,i)|p=Pudełko}}}} w „{{sr|#Funkcje typu jednostki|p=Pudełko}}”, on definiuje przestrzenie przedmiotowe, ale można użyć parametru dyskusji typu jednostki z wartością niepustą, wtedy wyświetli się nazwa przestrzeni nazw dyskusji. Również parametry typu jednostki nie powinno się podawać w dziecku w ramce, tylko w rodzicu w szablonie jako parametry, w którym ta ramka jest wywoływana, ale tutaj podano jedynie dla przykładu, jak najłatwiej sprawdzić działanie tych parametrów tej funkcji. Najpierw w funkcji nagłówku brane są parametry nazw przestrzeni nazw, a jeżeli ich nie ma, to parametry typu jednostki, a jeżeli nie ma, to generowane są nazwy na podstawie aktualnego modułu. === {{Code|p["Nazwa przedmiotowej przestrzeni nazw"](frame,...)}} === Funkcja pisze przedmiotową nazwę przestrzeni nazw jakikolwiek nazwy przestrzeni nazw (tzn. nazwę przedmiotową nazwy przestrzenie nazw, czyli nie dyskusji, zamieniana jest na nią samą, czyli identyfikator przestrzeni się nie zmienia, a dyskusji, nie przedmiotową, przekształca się na przedmiotową jej odpowiadającą, czyli w tym przypadku identyfikator przestrzeni zmniejsza się o numer mniej), według podanej w zmiennej {{Code|nazwa przestrzeni nazw}} dla pozycja bazowej w podanych parametrach szablonu rodzicu ramki dziecka, lub dla innej pozycji należy parametr podawać w formie {{Code|nazwa przestrzeni nazw 1}}, {{Code|nazwa przestrzeni nazw 2}}, {{Code|nazwa przestrzeni nazw 3}},..., lub te parametry można podać w postaci ogólnej {{Code|nazwa przestrzeni nazw i}}. Parametry podaje się w parametrach rodzica wywołania tej funkcji {{Code|{{m|Pudełko|Nazwa przedmiotowej przestrzeni nazw}}}} (ale ich nie trzeba podawać w dziecku, ale można) i w parametrach dziecka, jeśli chodzi o zmienną {{Code|numer jednostki}}, czyli np.: {{Code|{{m|Pudełko|Nazwa przedmiotowej przestrzeni nazw|numer jednostki{{=}}<jakaś liczba całkowita dodatnia>}}}}. Te parametry przestrzenne zamiast w rodzicu w szablonie można podać w ramce dziecka, wtedy parametry dziecka mają pierwszeństwo. Parametry przestrzenne mogą mogą być podane w postaci przestrzeni przedmiotowej lub dyskusji, ale ta funkcja zawsze ją zamienia na przedmiotową. Przestrzeń nazw z parametrów nazw przestrzennych może odpowiadać wartości przestrzeni głównej, to wtedy odpowiednia przestrzeń nazw z parametru nazwy jednostki się nie liczy w tej funkcji, aby się liczyła należy użyć funkcji {{Code|{{sr|#p["Nazwa przedmiotowej przestrzeni nazw 2"](frame,...)|p=Pudełko}}}}. Definicja skrótowa funkcji: <syntaxhighlight lang="lua"> p["Nazwa przedmiotowej przestrzeni nazw"]=function(frame,czy_uwzglednic_alternatywna_nazwe,i)...end; </syntaxhighlight> Wtedy ciało funkcji tej, czyli jego definicja w środku, jest: <syntaxhighlight lang="lua"> -- Jest liczony numer parametru nazwy przestrzeni nazw, domyslnie chodzi tu o numer bazowy parametrów przestrzennych; local numer_jednostki=i or frame.args["numer jednostki"]; local liczba_numer_jednostki=((numer_jednostki)and(tonumber(numer_jednostki))or 0); local pudelko_pomocne_modul=require("Module:Pudełko/Pomocne"); -- Liczy nazwę przestrzeni nazw przedmiotową na podstawie podanych parametrów; return pudelko_pomocne_modul.Nazwa_przestrzeni_nazw(frame,1, czy_uwzglednic_alternatywna_nazwe,liczba_numer_jednostki); </syntaxhighlight> Parametry funkcji: * {{Code|frame}} - tablica ramki tablicy transportu, * {{Code|czy_uwzglednic_alternatywna_nazwe}} - czy ma uwzględniać nazwę przestrzeni nazw domyślną szablonu, dostępne wartości: {{Code|false}}, w której nazwa domyślna nie jest uwzględniana wtedy, oraz {{Code|nil}} i {{Code|true}}, które oznaczają to samo, w tym jeżeli ona jest uwzględniana, wtedy jest brany parametr pierwszy dziecka, który musi istnieć przy takiej wartości tego parametru, tzn. {{Code|{{m|Pudełko|Nazwa przedmiotowej przestrzeni nazw|Dyskusja szablonu}}}} - ta nazwa domyślna zostanie zamieniona na przedmiotową, a jak ona by była przedmiotowa, to żadnej zamiany by nie było, a nazwa uzyskana z nazwy przestrzeni nazw z parametrów przestrzennych jest w takim przypadku błędna, to w takim razie brany jest ten parametr, a jeżeli ta nazwa domyślna jest błędna, czyli {{Code|{{m|Pudełko|Nazwa przedmiotowej przestrzeni nazw|Moja przestrzeń}}}}, wtedy funkcja zwraca stan błędu {{Code|(błąd)}}. * {{Code|i}} - numer zmiennej nazwy przestrzeni nazw. Funkcja wykorzystuje {{Code|{{sr|#p.Nazwa_przestrzeni_nazw(frame,...)|p=Pudełko/Pomocne}}}} do wyznaczania ogólnego nazwy przestrzeni nazw dla pozycji bazowej i numerkowej, tzn. dla pozycji: jeden, dwa, trzy,..., itd, i ich ogólnej. Parametr ramki tablicy transportu rodzica szablonu: * {{Code|nazwa przestrzeni nazw}}, {{Code|nazwa przestrzeni nazw 1}}, {{Code|nazwa przestrzeni nazw 2}}, {{Code|nazwa przestrzeni nazw 3}},..., {{Code|nazwa przestrzeni nazw i}} - nazwy przestrzeni nazw dla pozycji bazowej oraz zwykłej i ogólnej numerkowej, * {{Code|typ jednostki}}, {{Code|typ jednostki 1}}, {{Code|typ jednostki 2}}, {{Code|typ jednostki 3}},..., {{Code|typ jednostki i}} - typy jednostek, którym odpowiadają pewne przestrzenie przedmiotowe, dla pozycji bazowej, numerkowej i ogólnej. Parametry ramki tablicy transportu dziecka: * Parametry dziecka są takie same jak rodzica dla funkcji pudełkowej plus tu wymienione, * {{Code|numer jednostki}} - jak parametr {{Code|i}} nie został ustawiony, to wtedy liczy się ta zmienna. Przykłady: <syntaxhighlight lang="mediawiki"> {{Nazwa szablonu|nazwa przestrzeni nazw=Dyskusja Wikibooks|nazwa przestrzeni nazw 2=Dyskusja szablonu|nazwa przestrzeni nazw i=Dyskusja modułu}} </syntaxhighlight> W dziecku powiedzmy jest wywołanie, i szukamy nazwy przestrzeni nazw o numerze dwa, która nie została podana, ale istnieje za to jej wersji ogólna {{Code|nazwa przestrzeni nazw i}} i domyślna {{Code|nazwa przestrzeni nazw}}: <syntaxhighlight lang="mediawiki"> {{#invoke:Pudełko|Nazwa przedmiotowej przestrzeni nazw|numer jednostki=1}} </syntaxhighlight> Na podstawie powyższego przykładu otrzymamy wynik o schemacie, nie wyniku, bo tam nie ma zmiennej {{Code|nazwa przestrzeni nazw 1}}, ale jest {{Code|nazwa przestrzeni nazw i}}: <syntaxhighlight lang="mediawiki"> <!-- Ale nie "nazwa przestrzeni nazw", bo jej nie ma, ale za to istnieje "nazwa przestrzeni nazw i"; --> <!-- nazwa przestrzeni nazw 2=nazwa przestrzeni nazw i=Dyskusja modułu; --> <!-- Czyli wynik: --> Moduł <!-- Widzimy, że wygenerowała się nazwa przestrzeni nazw, którą jest przestrzeń przedmiotowa programowa przestrzeni dyskusji "Dyskusja modułu", którą również jest "Szablon" jego przestrzeni dyskusji "Dyskusja szablonu", a dla ich przestrzeni przedmiotowej, zamiast dyskusji, to samo przekształca się na to samo; --> </syntaxhighlight> Nie jest brana w tym powyższym przykładzie zmienna {{Code|nazwa przestrzeni nazw}}, bo jej nie ma, ale za to jest {{Code|nazwa przestrzeni nazw i}}, bo ona występuje jako parametr domyślny ogólny dla parametrów numerkowych. Przykłady w wikikodzie: * {{Code|{{m|Pudełko|Nazwa przedmiotowej przestrzeni nazw|numer jednostki{{=}}2}}}} → {{Tt|{{#invoke:Pudełko|Nazwa przedmiotowej przestrzeni nazw|numer jednostki=2}}}} * {{Code|{{m|Pudełko|Nazwa przedmiotowej przestrzeni nazw|Dyskusja szablonu|nazwa przestrzeni nazw i{{=}}Moja przestrzeń|numer jednostki{{=}}2}}}} → {{Tt|{{#invoke:Pudełko|Nazwa przedmiotowej przestrzeni nazw|Dyskusja szablonu|nazwa przestrzeni nazw i=Moja przestrzeń|numer jednostki=2}}}} * {{Code|{{m|Pudełko|Nazwa przedmiotowej przestrzeni nazw|nazwa przestrzeni nazw 2{{=}}Dyskusja szablonu|numer jednostki{{=}}2}}}} → {{Tt|{{#invoke:Pudełko|Nazwa przedmiotowej przestrzeni nazw|nazwa przestrzeni nazw 2=Dyskusja szablonu|numer jednostki=2}}}} * {{Code|{{m|Pudełko|Nazwa przedmiotowej przestrzeni nazw|nazwa przestrzeni nazw 2{{=}}Dyskusja szablonu|numer jednostki{{=}}2}}}} → {{Tt|{{#invoke:Pudełko|Nazwa przedmiotowej przestrzeni nazw|nazwa przestrzeni nazw i=Dyskusja szablonu|numer jednostki=2}}}} * {{Code|{{m|Pudełko|Nazwa przedmiotowej przestrzeni nazw|nazwa przestrzeni nazw{{=}}Dyskusja szablonu|numer jednostki{{=}}2}}}} → {{Tt|{{#invoke:Pudełko|Nazwa przedmiotowej przestrzeni nazw|nazwa przestrzeni nazw=Dyskusja szablonu|numer jednostki=2}}}} Powyżej dla przykładu podano parametry nie w rodzicu w szablonie, tylko w dziecku, jeśli chodzi o parametry nazw przestrzeni nazw, ale ich się za to nie powinno podawać w tych ramach, tylko w szablonach, w których wywoływane są te ramki pudełek {{Code|{{m|Pudełko}}}}, ale tak tutaj tak zrobiono by było najłatwiej sprawdzić działanie tego typu funkcji. Analogicznie możemy podawać parametry typu jednostki, np.: wywołaniu modułowym {{Code|{{m|Pudełko|Nazwa przedmiotowej przestrzeni nazw|typ jednostki 2{{=}}strona szablonu|numer jednostki{{=}}2}}}}, ale o tym więcej w rozdziałach {{Code|{{sr|# p["Przedmiotowy typ jednostki"](frame,i)|p=Pudełko}}}} w „{{sr|#Funkcje typu jednostki|p=Pudełko}}”, ale wtedy ta sama nazwa przestrzeni nazw reprezentowana przez {{Parametr|typ jednostki 2|strona szablonu}}, jest zamieniana na to samo, lepiej jest tutaj używać parametrów przestrzennych nazw niż typu jednostki, bo typ jednostki ma taką samą wartość dla przestrzeni przedmiotowej, co dyskusji. Tutaj parametr dyskusji typu jednostki bazowy i numerkowy ogólny, czy szczegółowy, nie gra roli, bo nawet, gdy wygenerujemy nazwę przestrzeni dyskusji za pomoca tego parametru, to i tak otrzymamy na samym końcu jego nazwę przedmiotową. Również parametry typu jednostki nie powinno się podawać w dziecku w ramce, tylko w rodzicu w szablonie jako parametry, w którym ta ramka jest wywoływana, ale tutaj podano jedynie dla przykładu, jak najłatwiej sprawdzić działanie tych parametrów tej funkcji. Najpierw w funkcji nagłówku brane są parametry nazw przestrzeni nazw, a jeżeli ich nie ma, to parametry typu jednostki, a jeżeli nie ma, to generowane są nazwy na podstawie aktualnego modułu. === {{Code|p["Nazwa przestrzeni nazw dyskusji"](frame,...)}} === Funkcja pisze nazwę przestrzeni nazw dyskusji jakikolwiek nazwy przestrzeni nazw (tzn. nazwę przedmiotową nazwy przestrzenie nazw, czyli nie dyskusji, zamieniana jest na dyskusji, czyli identyfikator przestrzeni się zmienia jeden wyżej, a dyskusji, nie przedmiotową, przekształca się na tą samą), według podanej w zmiennej {{Code|nazwa przestrzeni nazw}} dla pozycja bazowej w podanych parametrach szablonu rodzicu ramki dziecka, lub dla innej pozycji należy parametr podawać w formie {{Code|nazwa przestrzeni nazw 1}}, {{Code|nazwa przestrzeni nazw 2}}, {{Code|nazwa przestrzeni nazw 3}},..., lub te parametry można podać w postaci ogólnej {{Code|nazwa przestrzeni nazw i}}. Parametry podaje się w parametrach rodzica wywołania tej funkcji {{Code|{{m|Pudełko|Nazwa przestrzeni nazw dyskusji}}}} (ale ich nie trzeba podawać w dziecku, ale można) i w parametrach dziecka, jeśli chodzi o zmienną {{Code|numer jednostki}}, czyli np.: {{Code|{{m|Pudełko|Nazwa przestrzeni nazw dyskusji|numer jednostki{{=}}<jakaś liczba całkowita dodatnia>}}}}. Te parametry przestrzenne zamiast w rodzicu w szablonie można podać w ramce dziecka, wtedy parametry dziecka mają pierwszeństwo. Parametry przestrzenne mogą mogą być podane w postaci przestrzeni przedmiotowej lub dyskusji, ale ta funkcja zawsze ją zamienia na dyskusji. Przestrzeń nazw z parametrów nazw przestrzennych może odpowiadać wartości przestrzeni głównej, to wtedy odpowiednia przestrzeń nazw z parametru nazwy jednostki się nie liczy w tej funkcji, aby się liczyła należy użyć funkcji {{Code|{{sr|#p["Nazwa przestrzeni nazw dyskusji 2"](frame,...)|p=Pudełko}}}}. Definicja skrótowa funkcji: <syntaxhighlight lang="lua"> p["Nazwa przestrzeni nazw dyskusji"]=function(frame,czy_uwzglednic_alternatywna_nazwe,i)...end; </syntaxhighlight> Wtedy ciało funkcji tej, czyli jego definicja w środku, jest: <syntaxhighlight lang="lua"> -- Jest liczony numer parametru nazwy przestrzeni nazw, domyslnie chodzi tu o numer bazowy parametrów przestrzennych; local numer_jednostki=i or frame.args["numer jednostki"]; local liczba_numer_jednostki=((numer_jednostki)and(tonumber(numer_jednostki))or 0); local pudelko_pomocne_modul=require("Module:Pudełko/Pomocne"); -- Liczy nazwę przestrzeni nazw dyskusji na podstawie podanych parametrów; return pudelko_pomocne_modul.Nazwa_przestrzeni_nazw(frame,2, czy_uwzglednic_alternatywna_nazwe,liczba_numer_jednostki); </syntaxhighlight> Parametry funkcji: * {{Code|frame}} - tablica ramki tablicy transportu, * {{Code|czy_uwzglednic_alternatywna_nazwe}} - czy ma uwzględniać nazwę przestrzeni nazw domyślną szablonu, dostępne wartości: {{Code|false}}, w której nazwa domyślna nie jest uwzględniana wtedy, oraz {{Code|nil}} i {{Code|true}}, które oznaczają to samo, w tym jeżeli ona jest uwzględniana, wtedy jest brany parametr pierwszy dziecka, który musi istnieć przy takiej wartości tego parametru, tzn. {{Code|{{m|Pudełko|Nazwa przestrzeni nazw dyskusji|Szablon}}}} - ta nazwa domyślna zostanie przekształcona na dyskusji, a jeżeli ona by była dyskusji, to nie byłoby żadnego przekształcenia, a nazwa uzyskana nazwy przestrzeni nazw z parametrów przestrzennych jest w takim przypadku błędna, to w takim razie brany jest ten parametr, a jeżeli nazwa domyślna jest błędna, czyli {{Code|{{m|Pudełko|Nazwa przestrzeni nazw dyskusji|Moja przestrzeń}}}}, wtedy funkcja zwraca stan błędu {{Code|(błąd)}}. * {{Code|i}} - numer zmiennej nazwy przestrzeni nazw. Funkcja wykorzystuje {{Code|{{sr|#p.Nazwa_przestrzeni_nazw(frame,...)|p=Pudełko/Pomocne}}}} do wyznaczania ogólnego nazwy przestrzeni nazw dla pozycji bazowej i numerkowej, tzn. dla pozycji: jeden, dwa, trzy,..., itd, i ich ogólnej. Parametr ramki tablicy transportu rodzica szablonu: * {{Code|nazwa przestrzeni nazw}}, {{Code|nazwa przestrzeni nazw 1}}, {{Code|nazwa przestrzeni nazw 2}}, {{Code|nazwa przestrzeni nazw 3}},..., {{Code|nazwa przestrzeni nazw i}} - nazwy przestrzeni nazw dla pozycji bazowej oraz zwykłej i ogólnej numerkowej, * {{Code|typ jednostki}}, {{Code|typ jednostki 1}}, {{Code|typ jednostki 2}}, {{Code|typ jednostki 3}},..., {{Code|typ jednostki i}} - typy jednostek, którym odpowiadają pewne przestrzenie przedmiotowe, dla pozycji bazowej, numerkowej i ogólnej. Parametry ramki tablicy transportu dziecka: * Parametry dziecka są takie same jak rodzica dla funkcji pudełkowej plus tu wymienione, * {{Code|numer jednostki}} - jak parametr {{Code|i}} nie został ustawiony, to wtedy liczy się ta zmienna. Przykłady: <syntaxhighlight lang="mediawiki"> {{Nazwa szablonu|nazwa przestrzeni nazw=Wikibooks|nazwa przestrzeni nazw 2=Szablon|nazwa przestrzeni nazw i=Moduł}} </syntaxhighlight> W dziecku powiedzmy jest wywołanie, i szukamy nazwy przestrzeni nazw o numerze dwa, która nie została podana, ale istnieje za to jej wersji ogólna {{Code|nazwa przestrzeni nazw i}} i domyślna {{Code|nazwa przestrzeni nazw}}: <syntaxhighlight lang="mediawiki"> {{#invoke:Pudełko|Nazwa przestrzeni nazw dyskusji|numer jednostki=1}} </syntaxhighlight> Na podstawie powyższego przykładu otrzymamy wynik o schemacie, nie wyniku, bo tam nie ma zmiennej {{Code|nazwa przestrzeni nazw 1}}, ale jest {{Code|nazwa przestrzeni nazw i}}: <syntaxhighlight lang="mediawiki"> <!-- Ale nie "nazwa przestrzeni nazw", bo jej nie ma, ale za to istnieje "nazwa przestrzeni nazw i"; --> <!-- nazwa przestrzeni nazw 2=nazwa przestrzeni nazw i=Moduł; --> <!-- Czyli wynik: --> Dyskusja modułu <!-- Widzimy, że wygenerowała się nazwa przestrzeni nazw, którą jest przestrzeń dyskusji przestrzeni programowej przestrzeni przedmiotowej "Moduł", którą również jest "Szablon" jego przestrzeni dyskusji "Dyskusja szablonu", a dla ich przestrzeni przedmiotowej, zamiast dyskusji, to przekształca się na dyskusji jej odpowiadającą; --> </syntaxhighlight> Nie jest brana w tym powyższym przykładzie zmienna {{Code|nazwa przestrzeni nazw}}, bo jej nie ma, ale za to jest {{Code|nazwa przestrzeni nazw i}}, bo ona występuje jako parametr domyślny ogólny dla parametrów numerkowych. Przykłady w wikikodzie: * {{Code|{{m|Pudełko|Nazwa przestrzeni nazw dyskusji|numer jednostki{{=}}2}}}} → {{Tt|{{#invoke:Pudełko|Nazwa przestrzeni nazw dyskusji|numer jednostki=2}}}} * {{Code|{{m|Pudełko|Nazwa przestrzeni nazw dyskusji|Szablon|nazwa przestrzeni nazw i{{=}}Moja przestrzeń|numer jednostki{{=}}2}}}} → {{Tt|{{#invoke:Pudełko|Nazwa przestrzeni nazw dyskusji|Szablon|nazwa przestrzeni nazw i=Moja przestrzeń|numer jednostki=2}}}} * {{Code|{{m|Pudełko|Nazwa przestrzeni nazw dyskusji|nazwa przestrzeni nazw 2{{=}}Szablon|numer jednostki{{=}}2}}}} → {{Tt|{{#invoke:Pudełko|Nazwa przestrzeni nazw dyskusji|nazwa przestrzeni nazw 2=Szablon|numer jednostki=2}}}} * {{Code|{{m|Pudełko|Nazwa przestrzeni nazw dyskusji|nazwa przestrzeni nazw 2{{=}}Szablon|numer jednostki{{=}}2}}}} → {{Tt|{{#invoke:Pudełko|Nazwa przestrzeni nazw dyskusji|nazwa przestrzeni nazw i=Szablon|numer jednostki=2}}}} * {{Code|{{m|Pudełko|Nazwa przestrzeni nazw dyskusji|nazwa przestrzeni nazw{{=}}Szablon|numer jednostki{{=}}2}}}} → {{Tt|{{#invoke:Pudełko|Nazwa przestrzeni nazw dyskusji|nazwa przestrzeni nazw=Szablon|numer jednostki=2}}}} Powyżej dla przykładu podano parametry nie w rodzicu w szablonie, tylko w dziecku, jeśli chodzi o parametry nazw przestrzeni nazw, ale ich się za to nie powinno podawać w tych ramach, tylko w szablonach, w których wywoływane są te ramki pudełek {{Code|{{m|Pudełko}}}}, ale tak tutaj tak zrobiono by było najłatwiej sprawdzić działanie tego typu funkcji. Analogicznie możemy podawać parametry typu jednostki, np.: wywołaniu modułowym {{Code|{{m|Pudełko|Nazwa przestrzeni nazw dyskusji|typ jednostki 2{{=}}strona szablonu|numer jednostki{{=}}2}}}}, ale o tym więcej w rozdziałach {{Code|{{sr|# p["Dyskusyjny typ jednostki"](frame,i)|p=Pudełko}}}} w „{{sr|#Funkcje typu jednostki|p=Pudełko}}”, ale wtedy nazwa przestrzeni nazw reprezentowana przez {{Parametr|typ jednostki 2|strona szablonu}}, jest zamieniana na nazwę przestrzeni nazw dyskusji. Parametr dyskusji typu jednostki bazowy lub dla danego numerka ogólny, czy szczegółowy, nie gra roli. Również parametry typu jednostki nie powinno się podawać w dziecku w ramce, tylko w rodzicu w szablonie jako parametry, w którym ta ramka jest wywoływana, ale tutaj podano jedynie dla przykładu, jak najłatwiej sprawdzić działanie tych parametrów tej funkcji. Najpierw w funkcji nagłówku brane są parametry nazw przestrzeni nazw, a jeżeli ich nie ma, to parametry typu jednostki, a jeżeli nie ma, to generowane są nazwy na podstawie aktualnego modułu. == Funkcje nazw przestrzeni nazw drugiej wersji == === {{Code|p["Nazwa przestrzeni nazw 2"](frame,...)}} === Funkcja pisze nazwę przestrzeni nazw, niezależnie, czy to jest przedmiotowa, czy dyskusji, według, i nie zawsze tylko, podanej w zmiennej {{Code|nazwa przestrzeni nazw}} dla pozycja bazowej w podanych parametrach szablonu rodzicu ramki dziecka, lub dla innej pozycji należy parametr podawać w formie {{Code|nazwa przestrzeni nazw 1}}, {{Code|nazwa przestrzeni nazw 2}}, {{Code|nazwa przestrzeni nazw 3}},..., lub te parametry można podać w postaci ogólnej {{Code|nazwa przestrzeni nazw i}}. W tej funkcji trzeba też podawać parametry nazwy jednostek {{Code|nazwa jednostki}}, {{Code|nazwa jednostki 1}}, {{Code|nazwa jednostki 2}}, {{Code|nazwa jednostki 3}},... Parametry podaje się w parametrach rodzica wywołania tej funkcji {{Code|{{m|Pudełko|Nazwa przestrzeni nazw 2}}}} (ale ich nie trzeba podawać w dziecku, ale można) i w parametrach dziecka, jeśli chodzi o zmienną {{Code|numer jednostki}}, czyli np.: {{Code|{{m|Pudełko|Nazwa przestrzeni nazw 2|numer jednostki{{=}}<jakaś liczba całkowita dodatnia>}}}}. Te parametry przestrzenne zamiast w rodzicu w szablonie można podać w ramce dziecka, wtedy parametry dziecka mają pierwszeństwo. Przestrzeń nazw z parametrów nazw przestrzennych może odpowiadać wartości przestrzeni głównej, to wtedy odpowiednia przestrzeń nazw z parametru nazwy jednostki się liczy w tej funkcji, wtedy jest liczona nazwa przestrzeni nazw z tego parametru. Gdy parametry przestrzenne lub typ jednostki w drugim podejściu nie wskazują na przestrzeń główną, to wtedy działanie tej funkcji jest podobne do {{Code|{{sr|#p["Nazwa przestrzeni nazw"](frame,...)|p=Pudełko}}}}. Definicja skrótowa funkcji: <syntaxhighlight lang="lua"> p["Nazwa przestrzeni nazw 2"]=function(frame,czy_uwzglednic_alternatywna_nazwe,i)...end; </syntaxhighlight> Wtedy ciało funkcji tej, czyli jego definicja w środku, jest: <syntaxhighlight lang="lua"> local pudelko_pomocne_modul=require("Module:Pudełko/Pomocne"); -- Liczy nazwę przestrzeni nazw, jeżeli z parametrów przestrzennych przestrzeń wskazuje na główną, to wtedy jest liczona przestrzeń nazw z nazwy jednostki; return pudelko_pomocne_modul.Nazwa_przestrzeni_nazw_2(frame,czy_uwzglednic_alternatywna_nazwe,i) </syntaxhighlight> Parametry funkcji: * {{Code|frame}} - tablica ramki tablicy transportu, * {{Code|czy_uwzglednic_alternatywna_nazwe}} - czy ma uwzględniać nazwę przestrzeni nazw domyślną szablonu, dostępne wartości: {{Code|false}}, w której nazwa domyślna nie jest uwzględniana wtedy, oraz {{Code|nil}} i {{Code|true}}, które oznaczają to samo, w tym jeżeli ona jest uwzględniana, wtedy jest brany parametr pierwszy dziecka, który musi istnieć przy takiej wartości tego parametru, tzn. {{Code|{{m|Pudełko|Nazwa przestrzeni nazw 2|Szablon}}}}, a nazwa uzyskana nazwy przestrzeni nazw jest w takim przypadku błędna, a jeżeli nazwa domyślna jest błędna, czyli {{Code|{{m|Pudełko|Nazwa przestrzeni nazw 2|Moja przestrzeń}}}}, wtedy funkcja zwraca stan błędu {{Code|(błąd)}}. * {{Code|i}} - numer zmiennej nazwy przestrzeni nazw. Funkcja wykorzystuje {{Code|{{sr|#p.Nazwa_przestrzeni_nazw_2(frame,...)|p=Pudełko/Pomocne}}}} do wyznaczania ogólnego nazwy przestrzeni nazw dla pozycji bazowej i numerkowej, tzn. dla pozycji: jeden, dwa, trzy,..., itd, i ich ogólnej. Parametr ramki tablicy transportu rodzica szablonu: * {{Code|nazwa przestrzeni nazw}}, {{Code|nazwa przestrzeni nazw 1}}, {{Code|nazwa przestrzeni nazw 2}}, {{Code|nazwa przestrzeni nazw 3}},..., {{Code|nazwa przestrzeni nazw i}} - nazwy przestrzeni nazw dla pozycji bazowej oraz zwykłej i ogólnej numerkowej, * {{Code|nazwa jednostki}}, {{Code|nazwa jednostki 1}}, {{Code|nazwa jednostki 2}}, {{Code|nazwa jednostki 3}},... - nazwy jednostek dla pozycji bazowej i numerkowej, * {{Code|typ jednostki}}, {{Code|typ jednostki 1}}, {{Code|typ jednostki 2}}, {{Code|typ jednostki 3}},..., {{Code|typ jednostki i}} - typy jednostek, którym odpowiadają pewne przestrzenie przedmiotowe, dla pozycji bazowej, numerkowej i ogólnej, ** {{Code|dyskusja typu jednostki}}, {{Code|dyskusja typu jednostki 1}}, {{Code|dyskusja typ jednostki 2}}, {{Code|dyskusja typ jednostki 3}},..., {{Code|dyskusja typ jednostki i}} - czy dany typ jednostki ma przedstawiać, jeśli niepusta, przestrzeń dyskusji dla pozycji bazowej, numerkowej i ogólnej. Parametry ramki tablicy transportu dziecka: * Parametry dziecka są takie same jak rodzica dla funkcji pudełkowej plus tu wymienione, * {{Code|numer jednostki}} - jak parametr {{Code|i}} nie został ustawiony, to wtedy liczy się ta zmienna. Przykłady: <syntaxhighlight lang="mediawiki"> {{Nazwa szablonu|nazwa przestrzeni nazw=Wikibooks|nazwa przestrzeni nazw 1=Szablon|nazwa przestrzeni nazw i=|nazwa jednostki 2=Wikibooks:Strona}} </syntaxhighlight> W dziecku powiedzmy jest wywołanie, i szukamy nazwy przestrzeni nazw o numerze dwa, która została podana, ale istnieje za to jej wersji ogólna {{Code|nazwa przestrzeni nazw i}} i domyślna {{Code|nazwa przestrzeni nazw}}, ale wtedy dla tego numerkowego liczy się to ogólne z {{Code| i}}, a ponieważ ta nazwa jest pusta, więc będziemy liczyli nazwę przestrzeni nazw z {{Code|nazwa jednostki 2}}: <syntaxhighlight lang="mediawiki"> {{#invoke:Pudełko|Nazwa przestrzeni nazw 2|numer jednostki=2}} </syntaxhighlight> Na podstawie powyższego przykładu otrzymamy wynik o schemacie, nie wyniku, bo tam nie ma zmiennej {{Code|nazwa przestrzeni nazw 1}}, ale jest {{Code|nazwa przestrzeni nazw i}}: <syntaxhighlight lang="mediawiki"> <!-- Ale nie "nazwa przestrzeni nazw 2", bo jej nie ma, ale za to istnieje "nazwa przestrzeni nazw i"; --> <!-- nazwa przestrzeni nazw 2=nazwa przestrzeni nazw i="", a nazwa jednostki 2="Wikibooks:Strona"; --> <!-- Czyli wynik: --> Wikibooks <!-- Widzimy, że wygenerowała się nazwa przestrzeni nazw, którą jest przestrzeń nieprogramowa, ale projektu, wychodząca z nazwy jednostek w tym przypadku z "nazwa jednostki 2"; --> </syntaxhighlight> Nie jest brana w tym powyższym przykładzie zmienna {{Code|nazwa przestrzeni nazw}}, bo jej nie ma, ale za to jest {{Code|nazwa przestrzeni nazw i}}, bo ona występuje jako parametr domyślny ogólny dla parametrów numerkowych. Tytaj jest używana jest zmienna {{Code|nazwa jednostki 2}} do wygenerowania ostatecznego wyniku, bo jak można zauważyć, parametry przestrzenne wskazują na przestrzeń główną, a nazwy jednostek już nie. Przykłady w wikikodzie: * {{Code|{{m|Pudełko|Nazwa przestrzeni nazw 2|numer jednostki{{=}}2}}}} → {{Tt|{{#invoke:Pudełko|Nazwa przestrzeni nazw 2|numer jednostki=2}}}} * {{Code|{{m|Pudełko|Nazwa przestrzeni nazw 2|Szablon|nazwa przestrzeni nazw i{{=}}Moja przestrzeń|numer jednostki{{=}}2}}}} → {{Tt|{{#invoke:Pudełko|Nazwa przestrzeni nazw 2|Szablon|nazwa przestrzeni nazw i=Moja przestrzeń|numer jednostki=2}}}} * {{Code|{{m|Pudełko|Nazwa przestrzeni nazw 2|nazwa przestrzeni nazw 2{{=}}|nazwa jednostki 2{{=}}Szablon:Strona|numer jednostki{{=}}2}}}} → {{Tt|{{#invoke:Pudełko|Nazwa przestrzeni nazw 2|nazwa przestrzeni nazw 2=|nazwa jednostki 2=Szablon:Strona|numer jednostki=2}}}} * {{Code|{{m|Pudełko|Nazwa przestrzeni nazw 2|nazwa przestrzeni nazw i{{=}}|nazwa jednostki 2{{=}}Szablon:Strona|numer jednostki{{=}}2}}}} → {{Tt|{{#invoke:Pudełko|Nazwa przestrzeni nazw 2|nazwa przestrzeni nazw i=|nazwa jednostki 2=Szablon:Strona|numer jednostki=2}}}} * {{Code|{{m|Pudełko|Nazwa przestrzeni nazw 2|Szablon|nazwa przestrzeni nazw{{=}}|nazwa jednostki 2{{=}}Wikibooks:Strona|numer jednostki{{=}}2}}}} → {{Tt|{{#invoke:Pudełko|Nazwa przestrzeni nazw 2|Szablon|nazwa przestrzeni nazw=|nazwa jednostki 2=Wikibooks:Strona|numer jednostki=2}}}} Powyżej dla przykładu podano parametry nie w rodzicu w szablonie, tylko w dziecku, jeśli chodzi o parametry nazw przestrzeni nazw i nazw jednostek, ale ich się za to nie powinno podawać w tych ramach, tylko w szablonach, w których wywoływane są te ramki pudełek {{Code|{{m|Pudełko}}}}, ale tak tutaj tak zrobiono by było najłatwiej sprawdzić działanie tego typu funkcji. Analogicznie możemy podawać parametry typu jednostki, np.: wywołaniu modułowym {{Code|{{m|Pudełko|Nazwa przestrzeni nazw 2|typ jednostki 2{{=}}Podręcznik|nazwa jednostki 2{{=}}Szablon:Strona|numer jednostki{{=}}2}}}} (ale wtedy jest brana przestrzeń nazw z nazwy jednostki), ale o tym więcej w rozdziałach {{Code|{{sr|#p["Typ jednostki 2"](frame,i)|p=Pudełko}}}} w „{{sr|#Funkcje typu jednostki|p=Pudełko}}”, on definiuje przestrzenie przedmiotowe, ale można użyć parametru dyskusji typu jednostki z wartością niepustą, wtedy wyświetli się nazwa przestrzeni nazw dyskusji. Jeżeli typ jednostki wskazuje na przestrzeń nazw główną, wtedy się liczą parametry nazw jednostek. Również parametry typu jednostki nie powinno się podawać w dziecku w ramce, tylko w rodzicu w szablonie jako parametry, w którym ta ramka jest wywoływana, ale tutaj podano jedynie dla przykładu, jak najłatwiej sprawdzić działanie tych parametrów tej funkcji. Najpierw w funkcji nagłówku brane są parametry nazw przestrzeni nazw, a jeżeli ich nie ma, to parametry typu jednostki, a jeżeli nie ma lub parametry przestrzenne wskazują na przestrzeń główną, i nie ma nazwy jednostki, to generowane są nazwy tej funkcji na podstawie aktualnej strony. === {{Code|p["Nazwa przedmiotowej przestrzeni nazw 2"](frame,...)}} === Funkcja pisze przedmiotową nazwę przestrzeni nazw jakikolwiek nazwy przestrzeni nazw (tzn. nazwę przedmiotową nazwy przestrzenie nazw, czyli nie dyskusji, zamieniana jest na nią samą, czyli identyfikator przestrzeni się nie zmienia, a dyskusji, nie przedmiotową, przekształca się na przedmiotową jej odpowiadającą, czyli w tym przypadku identyfikator przestrzeni zmniejsza się o numer mniej), według, i nie zawsze tylko, podanej w zmiennej {{Code|nazwa przestrzeni nazw}} dla pozycja bazowej w podanych parametrach szablonu rodzicu ramki dziecka, lub dla innej pozycji należy parametr podawać w formie {{Code|nazwa przestrzeni nazw 1}}, {{Code|nazwa przestrzeni nazw 2}}, {{Code|nazwa przestrzeni nazw 3}},..., lub te parametry można podać w postaci ogólnej {{Code|nazwa przestrzeni nazw i}}. W tej funkcji trzeba też podawać parametry nazwy jednostek {{Code|nazwa jednostki}}, {{Code|nazwa jednostki 1}}, {{Code|nazwa jednostki 2}}, {{Code|nazwa jednostki 3}},... Parametry podaje się w parametrach rodzica wywołania tej funkcji {{Code|{{m|Pudełko|Nazwa przedmiotowej przestrzeni nazw 2}}}} (ale ich nie trzeba podawać w dziecku, ale można) i w parametrach dziecka, jeśli chodzi o zmienną {{Code|numer jednostki}}, czyli np.: {{Code|{{m|Pudełko|Nazwa przedmiotowej przestrzeni nazw 2|numer jednostki{{=}}<jakaś liczba całkowita dodatnia>}}}}. Te parametry przestrzenne zamiast w rodzicu w szablonie można podać w ramce dziecka, wtedy parametry dziecka mają pierwszeństwo. Przestrzeń nazw z parametrów nazw przestrzennych po przekształceniu na przedmiotową może odpowiadać wartości przestrzeni głównej, to wtedy odpowiednia przestrzeń nazw z parametru nazwy jednostki się liczy w tej funkcji, wtedy jest liczona nazwa przestrzeni nazw z tego parametru. Gdy parametry przestrzenne lub typ jednostki w drugim podejściu nie wskazują na przestrzeń główną, to wtedy działanie tej funkcji jest podobne do {{Code|{{sr|#p["Nazwa przedmiotowej przestrzeni nazw"](frame,...)|p=Pudełko}}}}. Definicja skrótowa funkcji: <syntaxhighlight lang="lua"> p["Nazwa przedmiotowej przestrzeni nazw 2"]=function(frame,czy_uwzglednic_alternatywna_nazwe,i)...end; </syntaxhighlight> Wtedy ciało funkcji tej, czyli jego definicja w środku, jest: <syntaxhighlight lang="lua"> local pudelko_pomocne_modul=require("Module:Pudełko/Pomocne"); return pudelko_pomocne_modul.Nazwa_przestrzeni_nazw_przedmiotowa_dyskusji_2(frame,czy_uwzglednic_alternatywna_nazwe,i,"przedmiotowa"); </syntaxhighlight> Parametry funkcji: * {{Code|frame}} - tablica ramki tablicy transportu, * {{Code|czy_uwzglednic_alternatywna_nazwe}} - czy ma uwzględniać nazwę przestrzeni nazw domyślną szablonu, dostępne wartości: {{Code|false}}, w której nazwa domyślna nie jest uwzględniana wtedy, oraz {{Code|nil}} i {{Code|true}}, które oznaczają to samo, w tym jeżeli ona jest uwzględniana, wtedy jest brany parametr pierwszy dziecka, który musi istnieć przy takiej wartości tego parametru, tzn. {{Code|{{m|Pudełko|Nazwa przedmiotowej przestrzeni nazw 2|Szablon}}}}, a nazwa uzyskana nazwy przestrzeni nazw jest w takim przypadku błędna, a jeżeli nazwa domyślna jest błędna, czyli {{Code|{{m|Pudełko|Nazwa przedmiotowej przestrzeni nazw 2|Moja przestrzeń}}}}, wtedy funkcja zwraca stan błędu {{Code|(błąd)}}. * {{Code|i}} - numer zmiennej nazwy przestrzeni nazw. Funkcja wykorzystuje {{Code|{{sr|#p.Nazwa_przestrzeni_nazw_przedmiotowa_dyskusji_2(frame,...)|p=Pudełko/Pomocne}}}} do wyznaczania ogólnego nazwy przestrzeni nazw dla pozycji bazowej i numerkowej, tzn. dla pozycji: jeden, dwa, trzy,..., itd, i ich ogólnej. Parametr ramki tablicy transportu rodzica szablonu: * {{Code|nazwa przestrzeni nazw}}, {{Code|nazwa przestrzeni nazw 1}}, {{Code|nazwa przestrzeni nazw 2}}, {{Code|nazwa przestrzeni nazw 3}},..., {{Code|nazwa przestrzeni nazw i}} - nazwy przestrzeni nazw dla pozycji bazowej oraz zwykłej i ogólnej numerkowej, * {{Code|nazwa jednostki}}, {{Code|nazwa jednostki 1}}, {{Code|nazwa jednostki 2}}, {{Code|nazwa jednostki 3}},... - nazwy jednostek dla pozycji bazowej i numerkowej, * {{Code|typ jednostki}}, {{Code|typ jednostki 1}}, {{Code|typ jednostki 2}}, {{Code|typ jednostki 3}},..., {{Code|typ jednostki i}} - typy jednostek, którym odpowiadają pewne przestrzenie przedmiotowe, dla pozycji bazowej, numerkowej i ogólnej. Parametry ramki tablicy transportu dziecka: * Parametry dziecka są takie same jak rodzica dla funkcji pudełkowej plus tu wymienione, * {{Code|numer jednostki}} - jak parametr {{Code|i}} nie został ustawiony, to wtedy liczy się ta zmienna. Przykłady: <syntaxhighlight lang="mediawiki"> {{Nazwa szablonu|nazwa przestrzeni nazw=Wikibooks|nazwa przestrzeni nazw 1=Szablon|nazwa przestrzeni nazw i=|nazwa jednostki 2=Dyskusja Wikibooks:Strona}} </syntaxhighlight> W dziecku powiedzmy jest wywołanie, i szukamy nazwy przestrzeni nazw o numerze dwa, która została podana, ale istnieje za to jej wersji ogólna {{Code|nazwa przestrzeni nazw i}} i domyślna {{Code|nazwa przestrzeni nazw}}, ale wtedy dla tego numerkowego liczy się to ogólne z {{Code| i}}, a ponieważ ta nazwa jest pusta, więc będziemy liczyli nazwę przestrzeni nazw z {{Code|nazwa jednostki 2}}: <syntaxhighlight lang="mediawiki"> {{#invoke:Pudełko|Nazwa przedmiotowej przestrzeni nazw 2|numer jednostki=2}} </syntaxhighlight> Na podstawie powyższego przykładu otrzymamy wynik o schemacie, nie wyniku, bo tam nie ma zmiennej {{Code|nazwa przestrzeni nazw 1}}, ale jest {{Code|nazwa przestrzeni nazw i}}: <syntaxhighlight lang="mediawiki"> <!-- Ale nie "nazwa przestrzeni nazw 2", bo jej nie ma, ale za to istnieje "nazwa przestrzeni nazw i"; --> <!-- nazwa przestrzeni nazw 2=nazwa przestrzeni nazw i="", a nazwa jednostki 2="Dyskusja Wikibooks:Strona"; --> <!-- Czyli wynik: --> Wikibooks <!-- Widzimy, że wygenerowała się nazwa przestrzeni nazw, którą jest przestrzeń nieprogramowa, ale projektu, wychodząca z nazwy jednostek w tym przypadku z "nazwa jednostki 2"; --> </syntaxhighlight> Nie jest brana w tym powyższym przykładzie zmienna {{Code|nazwa przestrzeni nazw}}, bo jej nie ma, ale za to jest {{Code|nazwa przestrzeni nazw i}}, bo ona występuje jako parametr domyślny ogólny dla parametrów numerkowych. Tytaj jest używana jest zmienna {{Code|nazwa jednostki 2}} do wygenerowania ostatecznego wyniku, bo jak można zauważyć, parametry przestrzenne wskazują na przestrzeń główną, a nazwy jednostek już nie. Przykłady w wikikodzie: * {{Code|{{m|Pudełko|Nazwa przedmiotowej przestrzeni nazw 2|numer jednostki{{=}}2}}}} → {{Tt|{{#invoke:Pudełko|Nazwa przedmiotowej przestrzeni nazw 2|numer jednostki=2}}}} * {{Code|{{m|Pudełko|Nazwa przedmiotowej przestrzeni nazw 2|Dyskusja szablonu|nazwa przestrzeni nazw i{{=}}Moja przestrzeń|numer jednostki{{=}}2}}}} → {{Tt|{{#invoke:Pudełko|Nazwa przedmiotowej przestrzeni nazw 2|Dyskusja szablonu|nazwa przestrzeni nazw i=Moja przestrzeń|numer jednostki=2}}}} * {{Code|{{m|Pudełko|Nazwa przedmiotowej przestrzeni nazw 2|nazwa przestrzeni nazw 2{{=}}Dyskusja|nazwa jednostki 2{{=}}Dyskusja szablonu:Strona|numer jednostki{{=}}2}}}} → {{Tt|{{#invoke:Pudełko|Nazwa przedmiotowej przestrzeni nazw 2|nazwa przestrzeni nazw 2=Dyskusja|nazwa jednostki 2=Dyskusja szablonu:Strona|numer jednostki=2}}}} * {{Code|{{m|Pudełko|Nazwa przedmiotowej przestrzeni nazw 2|nazwa przestrzeni nazw i{{=}}Dyskusja|nazwa jednostki 2{{=}}Dyskusja szablonu:Strona|numer jednostki{{=}}2}}}} → {{Tt|{{#invoke:Pudełko|Nazwa przedmiotowej przestrzeni nazw 2|nazwa przestrzeni nazw i=Dyskusja|nazwa jednostki 2=Dyskusja szablonu:Strona|numer jednostki=2}}}} * {{Code|{{m|Pudełko|Nazwa przedmiotowej przestrzeni nazw 2|Dyskusja szablonu|nazwa przestrzeni nazw{{=}}Dyskusja|nazwa jednostki 2{{=}}Wikibooks:Strona|numer jednostki{{=}}2}}}} → {{Tt|{{#invoke:Pudełko|Nazwa przedmiotowej przestrzeni nazw 2|Dyskusja szablonu|nazwa przestrzeni nazw=Dyskusja|nazwa jednostki 2=Dyskusja Wikibooks:Strona|numer jednostki=2}}}} Powyżej dla przykładu podano parametry nie w rodzicu w szablonie, tylko w dziecku, jeśli chodzi o parametry nazw przestrzeni nazw i nazw jednostek, ale ich się za to nie powinno podawać w tych ramach, tylko w szablonach, w których wywoływane są te ramki pudełek {{Code|{{m|Pudełko}}}}, ale tak tutaj tak zrobiono by było najłatwiej sprawdzić działanie tego typu funkcji. Analogicznie możemy podawać parametry typu jednostki, np.: wywołaniu modułowym {{Code|{{m|Pudełko|Nazwa przedmiotowej przestrzeni nazw 2|typ jednostki 2{{=}}Podręcznik|nazwa jednostki 2{{=}}Dyskusja szablonu:Strona|numer jednostki{{=}}2}}}} (ale wtedy jest brana przestrzeń nazw z nazwy jednostki), ale o tym więcej w rozdziałach {{Code|{{sr|# p["Przedmiotowy typ jednostki 2"](frame,i)|p=Pudełko}}}} w „{{sr|#Funkcje typu jednostki|p=Pudełko}}”, on definiuje przestrzenie przedmiotowe, ale można użyć parametru dyskusji typu jednostki z wartością niepustą, pustą, czy nawet jej nie podamy, wtedy wyświetli się nazwa przestrzeni nazw przedmiotowej. Jeżeli typ jednostki wskazuje na przestrzeń nazw główną, wtedy się liczą parametry nazw jednostek. Również parametry typu jednostki nie powinno się podawać w dziecku w ramce, tylko w rodzicu w szablonie jako parametry, w którym ta ramka jest wywoływana, ale tutaj podano jedynie dla przykładu, jak najłatwiej sprawdzić działanie tych parametrów tej funkcji. Najpierw w funkcji nagłówku brane są parametry nazw przestrzeni nazw, a jeżeli ich nie ma, to parametry typu jednostki, a jeżeli nie ma lub parametry przestrzenne wskazują na przestrzeń główną, i nie ma nazwy jednostki, to generowane są nazwy tej funkcji na podstawie aktualnej strony. === {{Code|p["Nazwa przestrzeni nazw dyskusji 2"](frame,...)}} === Funkcja pisze nazwę przestrzeni nazw dyskusji jakikolwiek nazwy przestrzeni nazw (tzn. nazwę dyskusji nazwy przestrzenie nazw, czyli nie przedmiotowej, zamieniana jest na nią samą, czyli identyfikator przestrzeni się nie zmienia, a przedmiotową, nie dyskusji, przekształca się na dyskusji jej odpowiadającą, czyli w tym przypadku identyfikator przestrzeni zwiększa się o numer więcej), według, i nie zawsze tylko, podanej w zmiennej {{Code|nazwa przestrzeni nazw}} dla pozycja bazowej w podanych parametrach szablonu rodzicu ramki dziecka, lub dla innej pozycji należy parametr podawać w formie {{Code|nazwa przestrzeni nazw 1}}, {{Code|nazwa przestrzeni nazw 2}}, {{Code|nazwa przestrzeni nazw 3}},..., lub te parametry można podać w postaci ogólnej {{Code|nazwa przestrzeni nazw i}}. W tej funkcji trzeba też podawać parametry nazwy jednostek {{Code|nazwa jednostki}}, {{Code|nazwa jednostki 1}}, {{Code|nazwa jednostki 2}}, {{Code|nazwa jednostki 3}},... Parametry podaje się w parametrach rodzica wywołania tej funkcji {{Code|{{m|Pudełko|Nazwa przestrzeni nazw dyskusji 2}}}} (ale ich nie trzeba podawać w dziecku, ale można) i w parametrach dziecka, jeśli chodzi o zmienną {{Code|numer jednostki}}, czyli np.: {{Code|{{m|Pudełko|Nazwa przestrzeni nazw dyskusji 2|numer jednostki{{=}}<jakaś liczba całkowita dodatnia>}}}}. Te parametry przestrzenne zamiast w rodzicu w szablonie można podać w ramce dziecka, wtedy parametry dziecka mają pierwszeństwo. Przestrzeń nazw z parametrów nazw przestrzennych po przekształceniu na przedmiotową może odpowiadać wartości przestrzeni głównej, to wtedy odpowiednia przestrzeń nazw z parametru nazwy jednostki się liczy w tej funkcji, wtedy jest liczona nazwa przestrzeni nazw z tego parametru. Gdy parametry przestrzenne lub typ jednostki w drugim podejściu nie wskazują na przestrzeń główną, to wtedy działanie tej funkcji jest podobne do {{Code|{{sr|#p["Nazwa dyskusji przestrzeni nazw"](frame,...)|p=Pudełko}}}}. Definicja skrótowa funkcji: <syntaxhighlight lang="lua"> p["Nazwa przestrzeni nazw dyskusji 2"]=function(frame,czy_uwzglednic_alternatywna_nazwe,i)...end; </syntaxhighlight> Wtedy ciało funkcji tej, czyli jego definicja w środku, jest: <syntaxhighlight lang="lua"> local pudelko_pomocne_modul=require("Module:Pudełko/Pomocne"); return pudelko_pomocne_modul.Nazwa_przestrzeni_nazw_przedmiotowa_dyskusji_2(frame,czy_uwzglednic_alternatywna_nazwe,i,"dyskusja"); </syntaxhighlight> Parametry funkcji: * {{Code|frame}} - tablica ramki tablicy transportu, * {{Code|czy_uwzglednic_alternatywna_nazwe}} - czy ma uwzględniać nazwę przestrzeni nazw domyślną szablonu, dostępne wartości: {{Code|false}}, w której nazwa domyślna nie jest uwzględniana wtedy, oraz {{Code|nil}} i {{Code|true}}, które oznaczają to samo, w tym jeżeli ona jest uwzględniana, wtedy jest brany parametr pierwszy dziecka, który musi istnieć przy takiej wartości tego parametru, tzn. {{Code|{{m|Pudełko|Nazwa przestrzeni nazw dyskusji 2|Szablon}}}}, a nazwa uzyskana nazwy przestrzeni nazw jest w takim przypadku błędna, a jeżeli nazwa domyślna jest błędna, czyli {{Code|{{m|Pudełko|Nazwa przestrzeni nazw dyskusji 2|Moja przestrzeń}}}}, wtedy funkcja zwraca stan błędu {{Code|(błąd)}}. * {{Code|i}} - numer zmiennej nazwy przestrzeni nazw. Funkcja wykorzystuje {{Code|{{sr|#p.Nazwa_przestrzeni_nazw_przedmiotowa_dyskusji_2(frame,...)|p=Pudełko/Pomocne}}}} do wyznaczania ogólnego nazwy przestrzeni nazw dla pozycji bazowej i numerkowej, tzn. dla pozycji: jeden, dwa, trzy,..., itd, i ich ogólnej. Parametr ramki tablicy transportu rodzica szablonu: * {{Code|nazwa przestrzeni nazw}}, {{Code|nazwa przestrzeni nazw 1}}, {{Code|nazwa przestrzeni nazw 2}}, {{Code|nazwa przestrzeni nazw 3}},..., {{Code|nazwa przestrzeni nazw i}} - nazwy przestrzeni nazw dla pozycji bazowej oraz zwykłej i ogólnej numerkowej, * {{Code|nazwa jednostki}}, {{Code|nazwa jednostki 1}}, {{Code|nazwa jednostki 2}}, {{Code|nazwa jednostki 3}},... - nazwy jednostek dla pozycji bazowej i numerkowej, * {{Code|typ jednostki}}, {{Code|typ jednostki 1}}, {{Code|typ jednostki 2}}, {{Code|typ jednostki 3}},..., {{Code|typ jednostki i}} - typy jednostek, którym odpowiadają pewne przestrzenie przedmiotowe, dla pozycji bazowej, numerkowej i ogólnej. Parametry ramki tablicy transportu dziecka: * Parametry dziecka są takie same jak rodzica dla funkcji pudełkowej plus tu wymienione, * {{Code|numer jednostki}} - jak parametr {{Code|i}} nie został ustawiony, to wtedy liczy się ta zmienna. Przykłady: <syntaxhighlight lang="mediawiki"> {{Nazwa szablonu|nazwa przestrzeni nazw=Wikibooks|nazwa przestrzeni nazw 1=Szablon|nazwa przestrzeni nazw i=|nazwa jednostki 2=Wikibooks:Strona}} </syntaxhighlight> W dziecku powiedzmy jest wywołanie, i szukamy nazwy przestrzeni nazw o numerze dwa, która została podana, ale istnieje za to jej wersji ogólna {{Code|nazwa przestrzeni nazw i}} i domyślna {{Code|nazwa przestrzeni nazw}}, ale wtedy dla tego numerkowego liczy się to ogólne z {{Code| i}}, a ponieważ ta nazwa jest pusta, więc będziemy liczyli nazwę przestrzeni nazw z {{Code|nazwa jednostki 2}}: <syntaxhighlight lang="mediawiki"> {{#invoke:Pudełko|Nazwa przestrzeni nazw dyskusji 2|numer jednostki=2}} </syntaxhighlight> Na podstawie powyższego przykładu otrzymamy wynik o schemacie, nie wyniku, bo tam nie ma zmiennej {{Code|nazwa przestrzeni nazw 1}}, ale jest {{Code|nazwa przestrzeni nazw i}}: <syntaxhighlight lang="mediawiki"> <!-- Ale nie "nazwa przestrzeni nazw 2", bo jej nie ma, ale za to istnieje "nazwa przestrzeni nazw i"; --> <!-- nazwa przestrzeni nazw 2=nazwa przestrzeni nazw i="", a nazwa jednostki 2="Wikibooks:Strona"; --> <!-- Czyli wynik: --> Dyskusja Wikibooks <!-- Widzimy, że wygenerowała się nazwa przestrzeni nazw, którą jest przestrzeń nieprogramowa, ale dyskusji projektu, wychodząca z nazwy jednostek w tym przypadku z "nazwa jednostki 2"; --> </syntaxhighlight> Nie jest brana w tym powyższym przykładzie zmienna {{Code|nazwa przestrzeni nazw}}, bo jej nie ma, ale za to jest {{Code|nazwa przestrzeni nazw i}}, bo ona występuje jako parametr domyślny ogólny dla parametrów numerkowych. Tytaj jest używana jest zmienna {{Code|nazwa jednostki 2}} do wygenerowania ostatecznego wyniku, bo jak można zauważyć, parametry przestrzenne wskazują na przestrzeń główną, a nazwy jednostek już nie. Przykłady w wikikodzie: * {{Code|{{m|Pudełko|Nazwa przestrzeni nazw dyskusji 2|numer jednostki{{=}}2}}}} → {{Tt|{{#invoke:Pudełko|Nazwa przestrzeni nazw dyskusji 2|numer jednostki=2}}}} * {{Code|{{m|Pudełko|Nazwa przestrzeni nazw dyskusji 2|Szablon|nazwa przestrzeni nazw i{{=}}Moja przestrzeń|numer jednostki{{=}}2}}}} → {{Tt|{{#invoke:Pudełko|Nazwa przestrzeni nazw dyskusji 2|Szablon|nazwa przestrzeni nazw i=Moja przestrzeń|numer jednostki=2}}}} * {{Code|{{m|Pudełko|Nazwa przestrzeni nazw dyskusji 2|nazwa przestrzeni nazw 2{{=}}|nazwa jednostki 2{{=}}Szablon:Strona|numer jednostki{{=}}2}}}} → {{Tt|{{#invoke:Pudełko|Nazwa przestrzeni nazw dyskusji 2|nazwa przestrzeni nazw 2=|nazwa jednostki 2=Szablon:Strona|numer jednostki=2}}}} * {{Code|{{m|Pudełko|Nazwa przestrzeni nazw dyskusji 2|nazwa przestrzeni nazw i{{=}}|nazwa jednostki 2{{=}}Szablon:Strona|numer jednostki{{=}}2}}}} → {{Tt|{{#invoke:Pudełko|Nazwa przestrzeni nazw dyskusji 2|nazwa przestrzeni nazw i=|nazwa jednostki 2=Szablon:Strona|numer jednostki=2}}}} * {{Code|{{m|Pudełko|Nazwa przestrzeni nazw dyskusji 2|Szablon|nazwa przestrzeni nazw{{=}}|nazwa jednostki 2{{=}}Wikibooks:Strona|numer jednostki{{=}}2}}}} → {{Tt|{{#invoke:Pudełko|Nazwa przestrzeni nazw dyskusji 2|Szablon|nazwa przestrzeni nazw=|nazwa jednostki 2=Dyskusja Wikibooks:Strona|numer jednostki=2}}}} Powyżej dla przykładu podano parametry nie w rodzicu w szablonie, tylko w dziecku, jeśli chodzi o parametry nazw przestrzeni nazw i nazw jednostek, ale ich się za to nie powinno podawać w tych ramach, tylko w szablonach, w których wywoływane są te ramki pudełek {{Code|{{m|Pudełko}}}}, ale tak tutaj tak zrobiono by było najłatwiej sprawdzić działanie tego typu funkcji. Analogicznie możemy podawać parametry typu jednostki, np.: wywołaniu modułowym {{Code|{{m|Pudełko|Nazwa przestrzeni nazw dyskusji 2|typ jednostki 2{{=}}Podręcznik|nazwa jednostki 2{{=}}Szablon:Strona|numer jednostki{{=}}2}}}} (ale wtedy jest brana przestrzeń nazw z nazwy jednostki), ale o tym więcej w rozdziałach {{Code|{{sr|# p["Dyskusyjny typ jednostki 2"](frame,i)|p=Pudełko}}}} w „{{sr|#Funkcje typu jednostki|p=Pudełko}}”, on definiuje przestrzenie dyskusji, ale można użyć parametru dyskusji typu jednostki z obojętnie jaką wartością niepustą, czy pustą, czy nawet jej nie podamy, wtedy wyświetli się nazwa przestrzeni nazw dyskusji. Jeżeli typ jednostki wskazuje na przestrzeń nazw główną, wtedy się liczą parametry nazw jednostek. Również parametry typu jednostki nie powinno się podawać w dziecku w ramce, tylko w rodzicu w szablonie jako parametry, w którym ta ramka jest wywoływana, ale tutaj podano jedynie dla przykładu, jak najłatwiej sprawdzić działanie tych parametrów tej funkcji. Najpierw w funkcji nagłówku brane są parametry nazw przestrzeni nazw, a jeżeli ich nie ma, to parametry typu jednostki, a jeżeli nie ma lub parametry przestrzenne wskazują na przestrzeń główną, i nie ma nazwy jednostki, to generowane są nazwy tej funkcji na podstawie aktualnej strony. == Funkcje pełnych nazw jednostki == === {{Code|p["Pełna nazwa dyskusji jednostki"](frame,i)}} === === {{Code|p["Pełna nazwa przedmiotowa jednostki"](frame,i)}} === === {{Code|p["Pełna nazwa jednostki"](frame,i)}} === == Funkcje pełnych nazw jednostki drugiej wersji == === {{Code|p["Pełna nazwa dyskusji jednostki 2"](frame,i)}} === === {{Code|p["Pełna nazwa przedmiotowa jednostki 2"](frame,i)}} === === {{Code|p["Pełna nazwa jednostki 2"](frame,i)}} === == Funkcje pełnych nazw jednostki trzeciej wersji == === {{Code|p["Pełna nazwa dyskusji jednostki 3"](frame,i)}} === === {{Code|p["Pełna nazwa przedmiotowa jednostki 3"](frame,i)}} === === {{Code|p["Pełna nazwa jednostki 3"](frame,i)}} === == Funkcje nazw jednostki == === {{Code|p["Nazwa jednostki"](frame,i)}} === == Funkcje nazw jednostki drugiej wersji == === {{Code|p["Nazwa jednostki 2"](frame,i)}} === === {{Code|p["Nazwa przedmiotowa jednostki 2"](frame,i)}} === === {{Code|p["Nazwa dyskusji jednostki 2"](frame,i)}} === == Funkcje nazw przestrzeni nazw trzeciej wersji == === {{Code|p["Nazwa przestrzeni nazw 3"](frame,i)}} === Funkcja pisze nazwę przestrzeni nazw, niezależnie, czy to jest przedmiotowa, czy dyskusji, według, i nie zawsze tylko, podanej w zmiennej {{Code|nazwa przestrzeni nazw}} dla pozycja bazowej w podanych parametrach szablonu rodzicu ramki dziecka, lub dla innej pozycji należy parametr podawać w formie {{Code|nazwa przestrzeni nazw 1}}, {{Code|Nazwa przestrzeni nazw 3}}, {{Code|nazwa przestrzeni nazw 3}},..., lub te parametry można podać w postaci ogólnej {{Code|nazwa przestrzeni nazw i}}. W tej funkcji trzeba też podawać parametry nazwy jednostek {{Code|nazwa jednostki}}, {{Code|nazwa jednostki 1}}, {{Code|nazwa jednostki 2}}, {{Code|nazwa jednostki 3}},... Parametry podaje się w parametrach rodzica wywołania tej funkcji {{Code|{{m|Pudełko|Nazwa przestrzeni nazw 3}}}} (ale ich nie trzeba podawać w dziecku, ale można) i w parametrach dziecka, jeśli chodzi o zmienną {{Code|numer jednostki}}, czyli np.: {{Code|{{m|Pudełko|Nazwa przestrzeni nazw 3|numer jednostki{{=}}<jakaś liczba całkowita dodatnia>}}}}. Te parametry przestrzenne zamiast w rodzicu w szablonie można podać w ramce dziecka, wtedy parametry dziecka mają pierwszeństwo. Przestrzeń nazw z parametrów nazw przestrzennych bazowych (bez numerka) może odpowiadać wartości przestrzeni głównej, to wtedy odpowiednia przestrzeń nazw z parametru nazwy jednostki się nie liczy w tej funkcji, aby się liczyła należy użyć funkcji {{Code|{{sr|#p["Nazwa przestrzeni nazw"](frame,...)|p=Pudełko}}}}. Przestrzeń nazw z parametrów nazw przestrzennych numerkowych może odpowiadać wartości przestrzeni głównej, to wtedy odpowiednia przestrzeń nazw z parametru nazwy jednostki się liczy w tej funkcji, wtedy jest liczona nazwa przestrzeni nazw z tego parametru. Gdy parametry przestrzenne lub typ jednostki w drugim podejściu nie wskazują na przestrzeń główną, to wtedy działanie tej funkcji jest podobne do {{Code|{{sr|#p["Nazwa przestrzeni nazw 2"](frame,...)|p=Pudełko}}}}. Definicja skrótowa funkcji: <syntaxhighlight lang="lua"> p["Nazwa przestrzeni nazw 3"]=function(frame,czy_uwzglednic_alternatywna_nazwe,i)...end; </syntaxhighlight> Wtedy ciało funkcji tej, czyli jego definicja w środku, jest: <syntaxhighlight lang="lua"> -- Jest liczony numer parametru nazwy przestrzeni nazw, domyslnie chodzi tu o numer bazowy parametrów przestrzennych; local numer_jednostki=i or frame.args["numer jednostki"]; local liczba_numeru_jednostki=((numer_jednostki)and(tonumber(numer_jednostki)) or 0); local pudelko_pomocne_modul=require("Module:Pudełko/Pomocne"); -- Liczy nazwę przestrzeni nazw dyskusji na podstawie podanych parametrów; return pudelko_pomocne_modul.Uzyskanie_nazw_jednostki(frame,0,liczba_numeru_jednostki,nil,2); </syntaxhighlight> Parametry funkcji: * {{Code|frame}} - tablica ramki tablicy transportu, * {{Code|czy_uwzglednic_alternatywna_nazwe}} - czy ma uwzględniać nazwę przestrzeni nazw domyślną szablonu, dostępne wartości: {{Code|false}}, w której nazwa domyślna nie jest uwzględniana wtedy, oraz {{Code|nil}} i {{Code|true}}, które oznaczają to samo, w tym jeżeli ona jest uwzględniana, wtedy jest brany parametr pierwszy dziecka, który musi istnieć przy takiej wartości tego parametru, tzn. {{Code|{{m|Pudełko|Nazwa przestrzeni nazw 3|Szablon}}}}, a nazwa uzyskana nazwy przestrzeni nazw jest w takim przypadku błędna, a jeżeli nazwa domyślna jest błędna, czyli {{Code|{{m|Pudełko|Nazwa przestrzeni nazw 3|Moja przestrzeń}}}}, wtedy funkcja zwraca stan błędu {{Code|(błąd)}}. * {{Code|i}} - numer zmiennej nazwy przestrzeni nazw. Funkcja wykorzystuje {{Code|{{sr|#p.Uzyskanie_nazw_jednostki(frame,...)|p=Pudełko/Pomocne}}}} do wyznaczania ogólnego nazwy przestrzeni nazw dla pozycji bazowej i numerkowej, tzn. dla pozycji: jeden, dwa, trzy,..., itd, i ich ogólnej. Parametr ramki tablicy transportu rodzica szablonu: * {{Code|nazwa przestrzeni nazw}}, {{Code|nazwa przestrzeni nazw 1}}, {{Code|Nazwa przestrzeni nazw 3}}, {{Code|nazwa przestrzeni nazw 3}},..., {{Code|nazwa przestrzeni nazw i}} - nazwy przestrzeni nazw dla pozycji bazowej oraz zwykłej i ogólnej numerkowej, * {{Code|nazwa jednostki}}, {{Code|nazwa jednostki 1}}, {{Code|nazwa jednostki 2}}, {{Code|nazwa jednostki 3}},... - nazwy jednostek dla pozycji bazowej i numerkowej, * {{Code|typ jednostki}}, {{Code|typ jednostki 1}}, {{Code|typ jednostki 2}}, {{Code|typ jednostki 3}},..., {{Code|typ jednostki i}} - typy jednostek, którym odpowiadają pewne przestrzenie przedmiotowe, dla pozycji bazowej, numerkowej i ogólnej, ** {{Code|dyskusja typu jednostki}}, {{Code|dyskusja typu jednostki 1}}, {{Code|dyskusja typ jednostki 2}}, {{Code|dyskusja typ jednostki 3}},..., {{Code|dyskusja typ jednostki i}} - czy dany typ jednostki ma przedstawiać, jeśli niepusta, przestrzeń dyskusji dla pozycji bazowej, numerkowej i ogólnej. Parametry ramki tablicy transportu dziecka: * Parametry dziecka są takie same jak rodzica dla funkcji pudełkowej plus tu wymienione, * {{Code|numer jednostki}} - jak parametr {{Code|i}} nie został ustawiony, to wtedy liczy się ta zmienna. Przykłady: <syntaxhighlight lang="mediawiki"> {{Nazwa szablonu 1|nazwa przestrzeni nazw=Wikibooks|nazwa przestrzeni nazw=|nazwa przestrzeni nazw i=|nazwajednostki=Szablon:Strona|nazwa jednostki 2=Wikibooks:Strona}} <hr /> {{Nazwa szablonu 2|nazwa przestrzeni nazw=Wikibooks|nazwa przestrzeni nazw 1=Szablon|nazwa przestrzeni nazw i=|nazwa jednostki 2=Wikibooks:Strona}} </syntaxhighlight> W dziecku powiedzmy jest wywołanie, i szukamy nazwy przestrzeni nazw o numerze dwa, która została podana, ale istnieje za to jej wersji ogólna {{Code|nazwa przestrzeni nazw i}} i domyślna {{Code|nazwa przestrzeni nazw}}, ale wtedy dla tego numerkowego liczy się to ogólne z {{Code| i}}, a ponieważ ta nazwa jest pusta, więc będziemy liczyli nazwę przestrzeni nazw z {{Code|nazwa jednostki 2}}: <syntaxhighlight lang="mediawiki"> {{#invoke:Pudełko|Nazwa przestrzeni nazw 3}} <hr /> {{#invoke:Pudełko|Nazwa przestrzeni nazw 3|numer jednostki=2}} </syntaxhighlight> Na podstawie powyższego przykładu otrzymamy wynik o schemacie, nie wyniku, bo tam nie ma zmiennej {{Code|nazwa przestrzeni nazw 1}}, ale jest {{Code|nazwa przestrzeni nazw i}}: <syntaxhighlight lang="mediawiki"> <!-- Ale nie "nazwa przestrzeni nazw""; --> <!-- nazwa przestrzeni nazw=""; --> <!-- Czyli wynik: --> <!-- wynik pusty --> <!-- Widzimy, że wygenerowała się nazwa przestrzeni nazw, którą jest przestrzeń nazw główna, jest ciągiem pustym: ""; --> <hr /> <!-- Ale nie "Nazwa przestrzeni nazw 2", bo jej nie ma, ale za to istnieje "nazwa przestrzeni nazw i"; --> <!-- nazwa przestrzeni nazw 2=nazwa przestrzeni nazw i="", a nazwa jednostki 2="Wikibooks:Strona"; --> <!-- Czyli wynik: --> Wikibooks <!-- Widzimy, że wygenerowała się nazwa przestrzeni nazw, którą jest przestrzeń nieprogramowa, ale projektu, wychodząca z nazwy jednostek w tym przypadku z "nazwa jednostki 2"; --> </syntaxhighlight> Dla parametrów numerkowych nie jest brana w tym powyższym przykładzie zmienna {{Code|nazwa przestrzeni nazw 2}}, bo jej nie ma, ale za to jest {{Code|nazwa przestrzeni nazw i}}, bo ona występuje jako parametr domyślny ogólny dla parametrów numerkowych. Tytaj jest używana jest zmienna {{Code|nazwa jednostki 2}} do wygenerowania ostatecznego wyniku, bo jak można zauważyć, parametry przestrzenne wskazują na przestrzeń główną, a nazwy jednostek już nie. Dla parametrów bazowych mamy zmienna {{Code|nazwa przestrzeni nazw}}, ona jest pusta, więc to zostanie wziete do ostatecznego wyniku. Przykłady w wikikodzie: * {{Code|{{m|Pudełko|Nazwa przestrzeni nazw 3|nazwa przestrzeni nazw{{=}}|nazwa jednostki{{=}}Wikibooks:Strona}}}} → {{Tt|{{#invoke:Pudełko|Nazwa przestrzeni nazw 3|nazwa przestrzeni nazw=|nazwa jednostki=Wikibooks:Szablon}}}} * {{Code|{{m|Pudełko|Nazwa przestrzeni nazw 3|nazwa przestrzeni nazw 2{{=}}|nazwa jednostki 2{{=}}Wikibooks:Strona|numer jednostki{{=}}2}}}} → {{Tt|{{#invoke:Pudełko|Nazwa przestrzeni nazw 3|nazwa przestrzeni nazw 2=|nazwa jednostki 2=Wikibooks:Szablon|numer jednostki=2}}}} Powyżej dla przykładu podano parametry nie w rodzicu w szablonie, tylko w dziecku, jeśli chodzi o parametry nazw przestrzeni nazw i nazw jednostek, ale ich się za to nie powinno podawać w tych ramach, tylko w szablonach, w których wywoływane są te ramki pudełek {{Code|{{m|Pudełko}}}}, ale tak tutaj tak zrobiono by było najłatwiej sprawdzić działanie tego typu funkcji. Analogicznie możemy podawać parametry typu jednostki, np.: wywołaniu modułowym {{Code|{{m|Pudełko|Nazwa przestrzeni nazw 3|typ jednostki 2{{=}}Podręcznik|nazwa jednostki 2{{=}}Szablon:Strona|numer jednostki{{=}}2}}}} (ale wtedy jest brana przestrzeń nazw z nazwy jednostki), ale o tym więcej w rozdziałach {{Code|{{sr|#p["Typ jednostki 3"](frame,i)|p=Pudełko}}}} w „{{sr|#Funkcje typu jednostki|p=Pudełko}}”, on definiuje przestrzenie przedmiotowe, ale można użyć parametru dyskusji typu jednostki z wartością niepustą, wtedy wyświetli się nazwa przestrzeni nazw dyskusji. Jeżeli typ jednostki bazowy wskazuje na przestrzeń nazw główną, wtedy się nie liczą parametry nazw jednostek, a na numerkowy, wtedy się liczy. Również parametry typu jednostki nie powinno się podawać w dziecku w ramce, tylko w rodzicu w szablonie jako parametry, w którym ta ramka jest wywoływana, ale tutaj podano jedynie dla przykładu, jak najłatwiej sprawdzić działanie tych parametrów tej funkcji. Najpierw w funkcji nagłówku brane są parametry nazw przestrzeni nazw, a jeżeli ich nie ma, to parametry typu jednostki, a jeżeli nie ma lub parametry przestrzenne wskazują na przestrzeń główną, i nie ma nazwy jednostki, to generowane są nazwy tej funkcji na podstawie aktualnej strony. === {{Code|p["Nazwa przedmiotowej przestrzeni nazw 3"](frame,i)}} === Funkcja pisze przedmiotową nazwę przestrzeni nazw jakikolwiek nazwy przestrzeni nazw (tzn. nazwę przedmiotową nazwy przestrzenie nazw, czyli nie dyskusji, zamieniana jest na nią samą, czyli identyfikator przestrzeni się nie zmienia, a dyskusji, nie przedmiotową, przekształca się na przedmiotową jej odpowiadającą, czyli w tym przypadku identyfikator przestrzeni zmniejsza się o numer mniej), według podanej w zmiennej {{Code|nazwa przestrzeni nazw}} dla pozycja bazowej w podanych parametrach szablonu rodzicu ramki dziecka, lub dla innej pozycji należy parametr podawać w formie {{Code|nazwa przestrzeni nazw 1}}, {{Code|nazwa przestrzeni nazw 2}}, {{Code|nazwa przestrzeni nazw 3}},..., lub te parametry można podać w postaci ogólnej {{Code|nazwa przestrzeni nazw i}}. Parametry podaje się w parametrach rodzica wywołania tej funkcji {{Code|{{m|Pudełko|Nazwa przedmiotowej przestrzeni nazw 3}}}} (ale ich nie trzeba podawać w dziecku, ale można) i w parametrach dziecka, jeśli chodzi o zmienną {{Code|numer jednostki}}, czyli np.: {{Code|{{m|Pudełko|Nazwa przedmiotowej przestrzeni nazw 3|numer jednostki{{=}}<jakaś liczba całkowita dodatnia>}}}}. Te parametry przestrzenne zamiast w rodzicu w szablonie można podać w ramce dziecka, wtedy parametry dziecka mają pierwszeństwo. Parametry przestrzenne mogą mogą być podane w postaci przestrzeni przedmiotowej lub dyskusji, ale ta funkcja zawsze ją zamienia na przedmiotową. Przestrzeń nazw z parametrów nazw przestrzennych bazowych (bez numerka) może odpowiadać wartości przestrzeni głównej, to wtedy odpowiednia przestrzeń nazw z parametru nazwy jednostki się nie liczy w tej funkcji, aby się liczyła należy użyć funkcji {{Code|{{sr|#p["Nazwa przedmiotowej przestrzeni nazw"](frame,...)|p=Pudełko}}}}. Przestrzeń nazw z parametrów nazw przestrzennych numerkowych może odpowiadać wartości przestrzeni głównej, to wtedy odpowiednia przestrzeń nazw z parametru nazwy jednostki się liczy w tej funkcji, wtedy jest liczona nazwa przestrzeni nazw z tego parametru. Gdy parametry przestrzenne lub typ jednostki w drugim podejściu nie wskazują na przestrzeń główną, to wtedy działanie tej funkcji jest podobne do {{Code|{{sr|#p["Nazwa przedmiotowej przestrzeni nazw 2"](frame,...)|p=Pudełko}}}}. Definicja skrótowa funkcji: <syntaxhighlight lang="lua"> p["Nazwa przedmiotowej przestrzeni nazw 3"]=function(frame,czy_uwzglednic_alternatywna_nazwe,i)...end; </syntaxhighlight> Wtedy ciało funkcji tej, czyli jego definicja w środku, jest: <syntaxhighlight lang="lua"> -- Jest liczony numer parametru nazwy przestrzeni nazw, domyslnie chodzi tu o numer bazowy parametrów przestrzennych; local numer_jednostki=i or frame.args["numer jednostki"]; local liczba_numeru_jednostki=((numer_jednostki)and(tonumber(numer_jednostki)) or 0); local pudelko_pomocne_modul=require("Module:Pudełko/Pomocne"); -- Liczy nazwę przestrzeni nazw przedmiotową na podstawie podanych parametrów; return pudelko_pomocne_modul.Uzyskanie_nazw_jednostki(frame,1,liczba_numeru_jednostki,nil,1); </syntaxhighlight> Parametry funkcji: * {{Code|frame}} - tablica ramki tablicy transportu, * {{Code|czy_uwzglednic_alternatywna_nazwe}} - czy ma uwzględniać nazwę przestrzeni nazw domyślną szablonu, dostępne wartości: {{Code|false}}, w której nazwa domyślna nie jest uwzględniana wtedy, oraz {{Code|nil}} i {{Code|true}}, które oznaczają to samo, w tym jeżeli ona jest uwzględniana, wtedy jest brany parametr pierwszy dziecka, który musi istnieć przy takiej wartości tego parametru, tzn. {{Code|{{m|Pudełko|Nazwa przedmiotowej przestrzeni nazw 3|Dyskusja szablonu}}}} - ta nazwa domyślna zostanie zamieniona na przedmiotową, a jak ona by była przedmiotowa, to żadnej zamiany by nie było, a nazwa uzyskana z nazwy przestrzeni nazw z parametrów przestrzennych jest w takim przypadku błędna, to w takim razie brany jest ten parametr, a jeżeli ta nazwa domyślna jest błędna, czyli {{Code|{{m|Pudełko|Nazwa przedmiotowej przestrzeni nazw 3|Moja przestrzeń}}}}, wtedy funkcja zwraca stan błędu {{Code|(błąd)}}. * {{Code|i}} - numer zmiennej nazwy przestrzeni nazw. Funkcja wykorzystuje {{Code|{{sr|#p.Uzyskanie_nazw_jednostki(frame,...)|p=Pudełko/Pomocne}}}} do wyznaczania ogólnego nazwy przestrzeni nazw dla pozycji bazowej i numerkowej, tzn. dla pozycji: jeden, dwa, trzy,..., itd, i ich ogólnej. Parametr ramki tablicy transportu rodzica szablonu: * {{Code|nazwa przestrzeni nazw}}, {{Code|nazwa przestrzeni nazw 1}}, {{Code|nazwa przestrzeni nazw 2}}, {{Code|nazwa przestrzeni nazw 3}},..., {{Code|nazwa przestrzeni nazw i}} - nazwy przestrzeni nazw dla pozycji bazowej oraz zwykłej i ogólnej numerkowej, * {{Code|typ jednostki}}, {{Code|typ jednostki 1}}, {{Code|typ jednostki 2}}, {{Code|typ jednostki 3}},..., {{Code|typ jednostki i}} - typy jednostek, którym odpowiadają pewne przestrzenie przedmiotowe, dla pozycji bazowej, numerkowej i ogólnej. Parametry ramki tablicy transportu dziecka: * Parametry dziecka są takie same jak rodzica dla funkcji pudełkowej plus tu wymienione, * {{Code|numer jednostki}} - jak parametr {{Code|i}} nie został ustawiony, to wtedy liczy się ta zmienna. Przykłady: <syntaxhighlight lang="mediawiki"> {{Nazwa szablonu 1|nazwa przestrzeni nazw=Wikibooks|nazwa przestrzeni nazw=|nazwa przestrzeni nazw i=|nazwa jednostki=Dyskusja Wikibooks:Strona}} <hr /> {{Nazwa szablonu 2|nazwa przestrzeni nazw=Wikibooks|nazwa przestrzeni nazw 1=Szablon|nazwa przestrzeni nazw i=|nazwa jednostki 2=Dyskusja Wikibooks:Strona}} </syntaxhighlight> Kolejno wywołania te są równowaażne: <syntaxhighlight lang="mediawiki"> {{#invoke:Pudełko|Nazwa przedmiotowej przestrzeni nazw 3}} <hr /> {{#invoke:Pudełko|Nazwa przedmiotowej przestrzeni nazw 3|numer jednostki=2}} </syntaxhighlight> Na podstawie powyższego przykładu otrzymamy wynik o schemacie, nie wyniku, bo tam nie ma zmiennej {{Code|nazwa przestrzeni nazw 1}}, ale jest {{Code|nazwa przestrzeni nazw i}}: <syntaxhighlight lang="mediawiki"> <!-- Ale nie "nazwa przestrzeni nazw""; --> <!-- nazwa przestrzeni nazw=""; --> <!-- Czyli wynik: --> <!-- wynik pusty --> <!-- Widzimy, że wygenerowała się nazwa przestrzeni nazw, którą jest przestrzeń nazw główna, jest ciągiem pustym: ""; --> <hr /> <!-- Ale nie "Nazwa przestrzeni nazw 2", bo jej nie ma, ale za to istnieje "nazwa przestrzeni nazw i"; --> <!-- nazwa przestrzeni nazw 2=nazwa przestrzeni nazw i="", a nazwa jednostki 2="Dyskusja Wikibooks:Strona"; --> <!-- Czyli wynik: --> Wikibooks <!-- Widzimy, że wygenerowała się nazwa przestrzeni nazw, którą jest przestrzeń nieprogramowa, ale projektu, wychodząca z nazwy jednostek w tym przypadku z "nazwa jednostki 2"; --> </syntaxhighlight> Dla parametrów numerkowych nie jest brana w tym powyższym przykładzie zmienna {{Code|nazwa przestrzeni nazw 2}}, bo jej nie ma, ale za to jest {{Code|nazwa przestrzeni nazw i}}, bo ona występuje jako parametr domyślny ogólny dla parametrów numerkowych. Tytaj jest używana jest zmienna {{Code|nazwa jednostki 2}} do wygenerowania ostatecznego wyniku, bo jak można zauważyć, parametry przestrzenne wskazują na przestrzeń główną, a nazwy jednostek już nie. Dla parametrów bazowych mamy zmienna {{Code|nazwa przestrzeni nazw}}, ona jest pusta, więc to zostanie wziete do ostatecznego wyniku. Przykłady w wikikodzie: * {{Code|{{m|Pudełko|Nazwa przestrzeni nazw 3|nazwa przestrzeni nazw{{=}}|nazwa jednostki{{=}}Dyskusja Wikibooks:Strona}}}} → {{Tt|{{#invoke:Pudełko|Nazwa przestrzeni nazw 3|nazwa przestrzeni nazw=|nazwa jednostki=Dyskusja Wikibooks:Szablon}}}} * {{Code|{{m|Pudełko|Nazwa przestrzeni nazw 3|nazwa przestrzeni nazw 2{{=}}|nazwa jednostki 2{{=}}Dyskusja Wikibooks:Strona|numer jednostki{{=}}2}}}} → {{Tt|{{#invoke:Pudełko|Nazwa przestrzeni nazw 3|nazwa przestrzeni nazw 2=|nazwa jednostki 2=Dyskusja Wikibooks:Szablon|numer jednostki=2}}}} Powyżej dla przykładu podano parametry nie w rodzicu w szablonie, tylko w dziecku, jeśli chodzi o parametry nazw przestrzeni nazw, ale ich się za to nie powinno podawać w tych ramach, tylko w szablonach, w których wywoływane są te ramki pudełek {{Code|{{m|Pudełko}}}}, ale tak tutaj tak zrobiono by było najłatwiej sprawdzić działanie tego typu funkcji. Analogicznie możemy podawać parametry typu jednostki, np.: wywołaniu modułowym {{Code|{{m|Pudełko|Nazwa przedmiotowej przestrzeni nazw 3|typ jednostki 2{{=}}strona szablonu|numer jednostki{{=}}2}}}}, ale o tym więcej w rozdziałach {{Code|{{sr|# p["Przedmiotowy typ jednostki 3"](frame,i)|p=Pudełko}}}} w „{{sr|#Funkcje typu jednostki|p=Pudełko}}”, ale wtedy ta sama nazwa przestrzeni nazw reprezentowana przez {{Parametr|typ jednostki 2|strona szablonu}}, jest zamieniana na to samo, lepiej jest tutaj używać parametrów przestrzennych nazw niż typu jednostki, bo typ jednostki ma taką samą wartość dla przestrzeni przedmiotowej, co dyskusji. Tutaj parametr dyskusji typu jednostki bazowy i numerkowy ogólny, czy szczegółowy, nie gra roli, bo nawet, gdy wygenerujemy nazwę przestrzeni dyskusji za pomoca tego parametru, to i tak otrzymamy na samym końcu jego nazwę przedmiotową. Jeżeli typ jednostki bazowy wskazuje na przestrzeń nazw główną, wtedy się nie liczą parametry nazw jednostek, a na numerkowy, wtedy się liczy. Również parametry typu jednostki nie powinno się podawać w dziecku w ramce, tylko w rodzicu w szablonie jako parametry, w którym ta ramka jest wywoływana, ale tutaj podano jedynie dla przykładu, jak najłatwiej sprawdzić działanie tych parametrów tej funkcji. Najpierw w funkcji nagłówku brane są parametry nazw przestrzeni nazw, a jeżeli ich nie ma, to parametry typu jednostki, a jeżeli nie ma, to generowane są nazwy na podstawie aktualnego modułu. === {{Code|p["Nazwa przestrzeni nazw dyskusji 3"](frame,i)}} === Funkcja pisze nazwę przestrzeni nazw dyskusji jakikolwiek nazwy przestrzeni nazw (tzn. nazwę dyskusji nazwy przestrzenie nazw, czyli nie przedmiotowej, zamieniana jest na nią samą, czyli identyfikator przestrzeni się nie zmienia, a przedmiotową, nie dyskusji, przekształca się na dyskusji jej odpowiadającą, czyli w tym przypadku identyfikator przestrzeni zwiększa się o numer więcej), według, i nie zawsze tylko, podanej w zmiennej {{Code|nazwa przestrzeni nazw}} dla pozycja bazowej w podanych parametrach szablonu rodzicu ramki dziecka, lub dla innej pozycji należy parametr podawać w formie {{Code|nazwa przestrzeni nazw 1}}, {{Code|nazwa przestrzeni nazw 2}}, {{Code|nazwa przestrzeni nazw 3}},..., lub te parametry można podać w postaci ogólnej {{Code|nazwa przestrzeni nazw i}}. W tej funkcji trzeba też podawać parametry nazwy jednostek {{Code|nazwa jednostki}}, {{Code|nazwa jednostki 1}}, {{Code|nazwa jednostki 2}}, {{Code|nazwa jednostki 3}},... Parametry podaje się w parametrach rodzica wywołania tej funkcji {{Code|{{m|Pudełko|Nazwa przestrzeni nazw dyskusji 3}}}} (ale ich nie trzeba podawać w dziecku, ale można) i w parametrach dziecka, jeśli chodzi o zmienną {{Code|numer jednostki}}, czyli np.: {{Code|{{m|Pudełko|Nazwa przestrzeni nazw dyskusji 3|numer jednostki{{=}}<jakaś liczba całkowita dodatnia>}}}}. Te parametry przestrzenne zamiast w rodzicu w szablonie można podać w ramce dziecka, wtedy parametry dziecka mają pierwszeństwo. Przestrzeń nazw z parametrów nazw przestrzennych bazowych (bez numerka) może odpowiadać wartości przestrzeni głównej, to wtedy odpowiednia przestrzeń nazw z parametru nazwy jednostki się nie liczy w tej funkcji, aby się liczyła należy użyć funkcji {{Code|{{sr|#p["Nazwa przestrzeni nazw dyskusji"](frame,...)|p=Pudełko}}}}. Przestrzeń nazw z parametrów nazw przestrzennych numerkowych może odpowiadać wartości przestrzeni głównej, to wtedy odpowiednia przestrzeń nazw z parametru nazwy jednostki się liczy w tej funkcji, wtedy jest liczona nazwa przestrzeni nazw z tego parametru. Gdy parametry przestrzenne lub typ jednostki w drugim podejściu nie wskazują na przestrzeń główną, to wtedy działanie tej funkcji jest podobne do {{Code|{{sr|#p["Nazwa przestrzeni nazw dysskusji 2"](frame,...)|p=Pudełko}}}}. Definicja skrótowa funkcji: <syntaxhighlight lang="lua"> p["Nazwa przestrzeni nazw dyskusji 3"]=function(frame,czy_uwzglednic_alternatywna_nazwe,i)...end; </syntaxhighlight> Wtedy ciało funkcji tej, czyli jego definicja w środku, jest: <syntaxhighlight lang="lua"> -- Jest liczony numer parametru nazwy przestrzeni nazw, domyslnie chodzi tu o numer bazowy parametrów przestrzennych; local numer_jednostki=i or frame.args["numer jednostki"]; local liczba_numeru_jednostki=((numer_jednostki)and(tonumber(numer_jednostki)) or 0); local pudelko_pomocne_modul=require("Module:Pudełko/Pomocne"); -- Liczy nazwę przestrzeni nazw dyskusji na podstawie podanych parametrów; return pudelko_pomocne_modul.Uzyskanie_nazw_jednostki(frame,2,liczba_numeru_jednostki,nil,1); </syntaxhighlight> Parametry funkcji: * {{Code|frame}} - tablica ramki tablicy transportu, * {{Code|czy_uwzglednic_alternatywna_nazwe}} - czy ma uwzględniać nazwę przestrzeni nazw domyślną szablonu, dostępne wartości: {{Code|false}}, w której nazwa domyślna nie jest uwzględniana wtedy, oraz {{Code|nil}} i {{Code|true}}, które oznaczają to samo, w tym jeżeli ona jest uwzględniana, wtedy jest brany parametr pierwszy dziecka, który musi istnieć przy takiej wartości tego parametru, tzn. {{Code|{{m|Pudełko|Nazwa przestrzeni nazw dyskusji 3|Szablon}}}}, a nazwa uzyskana nazwy przestrzeni nazw jest w takim przypadku błędna, a jeżeli nazwa domyślna jest błędna, czyli {{Code|{{m|Pudełko|Nazwa przestrzeni nazw dyskusji 3|Moja przestrzeń}}}}, wtedy funkcja zwraca stan błędu {{Code|(błąd)}}. * {{Code|i}} - numer zmiennej nazwy przestrzeni nazw. Funkcja wykorzystuje {{Code|{{sr|#p.Uzyskanie_nazw_jednostki(frame,...)|p=Pudełko/Pomocne}}}} do wyznaczania ogólnego nazwy przestrzeni nazw dla pozycji bazowej i numerkowej, tzn. dla pozycji: jeden, dwa, trzy,..., itd, i ich ogólnej. Parametr ramki tablicy transportu rodzica szablonu: * {{Code|nazwa przestrzeni nazw}}, {{Code|nazwa przestrzeni nazw 1}}, {{Code|nazwa przestrzeni nazw 2}}, {{Code|nazwa przestrzeni nazw 3}},..., {{Code|nazwa przestrzeni nazw i}} - nazwy przestrzeni nazw dla pozycji bazowej oraz zwykłej i ogólnej numerkowej, * {{Code|nazwa jednostki}}, {{Code|nazwa jednostki 1}}, {{Code|nazwa jednostki 2}}, {{Code|nazwa jednostki 3}},... - nazwy jednostek dla pozycji bazowej i numerkowej, * {{Code|typ jednostki}}, {{Code|typ jednostki 1}}, {{Code|typ jednostki 2}}, {{Code|typ jednostki 3}},..., {{Code|typ jednostki i}} - typy jednostek, którym odpowiadają pewne przestrzenie przedmiotowe, dla pozycji bazowej, numerkowej i ogólnej. Parametry ramki tablicy transportu dziecka: * Parametry dziecka są takie same jak rodzica dla funkcji pudełkowej plus tu wymienione, * {{Code|numer jednostki}} - jak parametr {{Code|i}} nie został ustawiony, to wtedy liczy się ta zmienna. Przykłady: <syntaxhighlight lang="mediawiki"> {{Nazwa szablonu 1|nazwa przestrzeni nazw=Wikibooks|nazwa przestrzeni nazw=|nazwa przestrzeni nazw i=|nazwajednostki=Szablon:Strona|nazwa jednostki 2=Wikibooks:Strona}} <hr /> {{Nazwa szablonu 2|nazwa przestrzeni nazw=Wikibooks|nazwa przestrzeni nazw 1=Szablon|nazwa przestrzeni nazw i=|nazwa jednostki 2=Wikibooks:Strona}} </syntaxhighlight> W dziecku powiedzmy jest wywołanie, i szukamy nazwy przestrzeni nazw o numerze dwa, która została podana, ale istnieje za to jej wersji ogólna {{Code|nazwa przestrzeni nazw i}} i domyślna {{Code|nazwa przestrzeni nazw}}, ale wtedy dla tego numerkowego liczy się to ogólne z {{Code| i}}, a ponieważ ta nazwa jest pusta, więc będziemy liczyli nazwę przestrzeni nazw z {{Code|nazwa jednostki 2}}: <syntaxhighlight lang="mediawiki"> {{#invoke:Pudełko|Nazwa przestrzeni nazw 3}} <hr /> {{#invoke:Pudełko|Nazwa przestrzeni nazw 3|numer jednostki=2}} </syntaxhighlight> Na podstawie powyższego przykładu otrzymamy wynik o schemacie, nie wyniku, bo tam nie ma zmiennej {{Code|nazwa przestrzeni nazw 1}}, ale jest {{Code|nazwa przestrzeni nazw i}}: <syntaxhighlight lang="mediawiki"> <!-- Ale nie "nazwa przestrzeni nazw""; --> <!-- nazwa przestrzeni nazw=""; --> <!-- Czyli wynik: --> Dyskusja <!-- Widzimy, że wygenerowała się nazwa przestrzeni nazw, którą jest przestrzeń nazw główna, jest ciągiem pustym: ""; --> <hr /> <!-- Ale nie "Nazwa przestrzeni nazw 2", bo jej nie ma, ale za to istnieje "nazwa przestrzeni nazw i"; --> <!-- nazwa przestrzeni nazw 2=nazwa przestrzeni nazw i="", a nazwa jednostki 2="Wikibooks:Strona"; --> <!-- Czyli wynik: --> Dyskusja Wikibooks <!-- Widzimy, że wygenerowała się nazwa przestrzeni nazw, którą jest przestrzeń nieprogramowa, ale projektu, wychodząca z nazwy jednostek w tym przypadku z "nazwa jednostki 2"; --> </syntaxhighlight> Dla parametrów numerkowych nie jest brana w tym powyższym przykładzie zmienna {{Code|nazwa przestrzeni nazw 2}}, bo jej nie ma, ale za to jest {{Code|nazwa przestrzeni nazw i}}, bo ona występuje jako parametr domyślny ogólny dla parametrów numerkowych. Tytaj jest używana jest zmienna {{Code|nazwa jednostki 2}} do wygenerowania ostatecznego wyniku, bo jak można zauważyć, parametry przestrzenne wskazują na przestrzeń główną, a nazwy jednostek już nie. Dla parametrów bazowych mamy zmienna {{Code|nazwa przestrzeni nazw}}, ona jest pusta, więc to zostanie wziete do ostatecznego wyniku. Przykłady w wikikodzie: * {{Code|{{m|Pudełko|Nazwa przestrzeni nazw dyskusji 3|nazwa przestrzeni nazw{{=}}|nazwa jednostki{{=}}Wikibooks:Strona}}}} → {{Tt|{{#invoke:Pudełko|Nazwa przestrzeni nazw dyskusji 3|nazwa przestrzeni nazw=|nazwa jednostki=Wikibooks:Szablon}}}} * {{Code|{{m|Pudełko|Nazwa przestrzeni nazw dyskusji 3|nazwa przestrzeni nazw 2{{=}}|nazwa jednostki 2{{=}}Wikibooks:Strona|numer jednostki{{=}}2}}}} → {{Tt|{{#invoke:Pudełko|Nazwa przestrzeni nazw dyskusji 3|nazwa przestrzeni nazw 2=|nazwa jednostki 2=Wikibooks:Szablon|numer jednostki=2}}}} Powyżej dla przykładu podano parametry nie w rodzicu w szablonie, tylko w dziecku, jeśli chodzi o parametry nazw przestrzeni nazw i nazw jednostek, ale ich się za to nie powinno podawać w tych ramach, tylko w szablonach, w których wywoływane są te ramki pudełek {{Code|{{m|Pudełko}}}}, ale tak tutaj tak zrobiono by było najłatwiej sprawdzić działanie tego typu funkcji. Analogicznie możemy podawać parametry typu jednostki, np.: wywołaniu modułowym {{Code|{{m|Pudełko|Nazwa przestrzeni nazw dyskusji 3|typ jednostki 2{{=}}Podręcznik|nazwa jednostki 2{{=}}Szablon:Strona|numer jednostki{{=}}2}}}} (ale wtedy jest brana przestrzeń nazw z nazwy jednostki), ale o tym więcej w rozdziałach {{Code|{{sr|# p["Dyskusyjny typ jednostki 3"](frame,i)|p=Pudełko}}}} w „{{sr|#Funkcje typu jednostki|p=Pudełko}}”, on definiuje przestrzenie dyskusji, ale można użyć parametru dyskusji typu jednostki z obojętnie jaką wartością niepustą, czy pustą, czy nawet jej nie podamy, wtedy wyświetli się nazwa przestrzeni nazw dyskusji. Jeżeli typ jednostki bazowy wskazuje na przestrzeń nazw główną, wtedy się nie liczą parametry nazw jednostek, a na numerkowy, wtedy się liczy. Również parametry typu jednostki nie powinno się podawać w dziecku w ramce, tylko w rodzicu w szablonie jako parametry, w którym ta ramka jest wywoływana, ale tutaj podano jedynie dla przykładu, jak najłatwiej sprawdzić działanie tych parametrów tej funkcji. Najpierw w funkcji nagłówku brane są parametry nazw przestrzeni nazw, a jeżeli ich nie ma, to parametry typu jednostki, a jeżeli nie ma lub parametry przestrzenne wskazują na przestrzeń główną, i nie ma nazwy jednostki, to generowane są nazwy tej funkcji na podstawie aktualnej strony. == Funkcje nazw jednostki trzeciej wersji == === {{Code|p["Nazwa jednostki 3"](frame,i)}} === === {{Code|p["Nazwa przedmiotowa jednostki 3"](frame,i)}} === === {{Code|p["Nazwa dyskusji jednostki 3"](frame,i)}} === == Funkcje typu jednostki == === {{Code|p["Typ jednostki"](frame,i)}} === === {{Code|p["Typ jednostki 2"](frame,i)}} === === {{Code|p["Typ jednostki 3"](frame,i)}} === === Funkcje typu jednostki przedmiotowe === ==== {{Code|p["Przedmiotowy typ jednostki"](frame,i)}} ==== ==== {{Code|p["Przedmiotowy typ jednostki 2"](frame,i)}} ==== ==== {{Code|p["Przedmiotowy typ jednostki 3"](frame,i)}} ==== === Fukcje typu jednostki dyskusji === ==== {{Code|p["Dyskusyjny typ jednostki"](frame,i)}} ==== ==== {{Code|p["Dyskusyjny typ jednostki 2"](frame,i)}} ==== ==== {{Code|p["Dyskusyjny typ jednostki 3"](frame,i)}} ==== == Funkcje chech pudełka == === {{Code|p["Cecha pudełka"](frame)}} === === {{Code|p["Przedmiotowa cecha pudełka"](frame)}} === === {{Code|p["Dyskusyjna cecha pudełka"](frame)}} === == Fukcje ogólnego pudełka == === {{Code|p["Ogólne pudełko"](frame)}} === == Funkcje ogólne == === {{Code|p["Tekst pudełka"](frame)}} === == Funkcje błędów pudełka == === {{Code|p["Błędy pudełka"](frame)}} === === {{Code|p["Przedmiotowe błędy pudełka"](frame)}} === === {{Code|p["Dyskusyjne błędy pudełka"](frame)}} === == Funkcje nazw stron == === {{Code|p["Nazwa strony głównej projektu"](frame,i)}} === === {{Code|p["Nazwa strony głównej dla dzieci projektu"](frame,i)}} === == Funkcje kodów == === {{Code|p["Kod języka"](frame,i)}} === === {{Code|p["Kod projektu"](frame,i)}} === === {{Code|p["Klucz projektu"](frame,i)}} === == Funkcje wiki == === {{Code|p["Inny niż język bieżący wiki"](frame)}} === === {{Code|p["Inne niż lokalne wiki"](frame)}} === === {{Code|p["Inne niż bieżące wiki"](frame)}} === == Funkcje typów parametrów, czy podane je == === {{Code|p["Podano parametry nienazwane"](frame)}} === === {{Code|p["Podano parametry numerowane"](frame)}} === === {{Code|p["Podano parametry nazwane"](frame)}} === == Funkcje kodów tego projektu == === {{Code|p["Kod projektu tego projektu"](frame)}} === === {{Code|p["Kod języka tego projektu"](frame)}} === === {{Code|p["Klucz projektu tego projektu"](frame)}} === == Funkcje stron == === {{Code|p["Strona główna tego projektu"](frame)}} === === {{Code|p["Strona główna dla dzieci tego projektu"](frame)}} === == Funkcje nazw stron drugiej wersji == === {{Code|p["Nazwa strony głównej dla dzieci projektu 2"](frame)}} === === {{Code| p["Nazwa strony głównej projektu 2"](frame)}} === {{BrClear}} <noinclude><!-- -->{{ProstaStronaKoniec}}<!-- -->{{Kategoria|Opisy funkcji, w Lua w Scribunto, w modułach}}<!-- --></noinclude> 3pkn9d5bzip8jbi3eybs16vqkireq5j 540425 540424 2026-04-23T20:08:02Z Persino 2851 /* {{Code|p["Nazwa przestrzeni nazw dyskusji 3"](frame,i)}} */ 540425 wikitext text/x-wiki <noinclude>{{ProstaStronaStart | nagłówek = {{Podrozdział|{{ld2|Pudełko}}|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 pudelko_modul=require("Module:Pudełko"); </syntaxhighlight> dzięki, któremu można wypisywać funkcje należącego do niego. Posługuje się na parametrach pudełkowych {{Parametr|nazwa przestrzeni nazw}} (czy też bez numerka {{Parametr|nazwa przestrzeni nazw i}} dla tego numerowanego) lub te z numerkiem po jednej spacji w nich (ale nie dla tego z końcówką {{Code| i}}) mogą zostać użyte jako parametry szablonu. Moduł {{Code|{{ld2|Pudełko}}}} przedstawia funkcje nazw w oparciu o funkcje nazw {{Code|{{ld2|Nazwy}}}}, generuje on nazwy za pomocą parametrów pudełkowych podanych poniżej. Parametr {{Parametr|nazwa jednostki}} (lub parametr {{Parametr|cel}} dla numerka tego pierwszego, tego alternatywnego), lub te z numerkiem po jednej spacji w nazwie parametru, albo numerowane numerkami {{Code|1}}, {{Code|2}},..., mogą zostać użyte jako parametry szablonu. Parametry określające rodzaj jednostki {{Parametr|typ jednostki}} z {{Parametr|dyskusja typu jednostki}}, itp. w wersjach z numerkiem po jednej spacji w nich mogą zostać użyte jako parametry szablonu. A te tymi numerowanymi liczbami naturalnymi {{Tt|nazwy jednostki}} od jedynki wzwyż poprzez szablon, w którym są one użyte, one też mogą być użyte z dwukropkiem, te numerowane, na samym początku nazwy, wtedy one są traktowane jako pełne nazwy strony, i wtedy one nie zostaną z interpretowane, że do nich trzeba użyć parametr odpowiedni z nazwą przetrzeni nazw z tego numerowanego, czy ogólny, aby utworzyć znów inną pełną nazwę strony dla tego numerka. Zestawienie: * {{Code|nazwa przestrzeni nazw}} i {{Code|nazwa przestrzeni nazw i}} (ogólna nazwa przestrzeni nazw dla wszystkich numerków, i tych numerowanych jednostek) - i to pierwsze z numerkiem, tzn. {{Code|nazwa przestrzeni nazw 1}}, {{Code|nazwa przestrzeni nazw 2}}, ..., * {{Code|nazwa jednostki}} - i te z numerkiem: {{Code|nazwa jednostki 1}}, {{Code|nazwa jednostki 2}}, ..., lub gdy jest zamiast tego parametrem numerowany, {{Code|1}}, {{Code|2}},..., który dla tego pierwszego może być uznany jako: {{Code|cel}} {{=}} {{Code|1}}, * {{Code|typ jednostki}} (parametr bazowy) i {{Code|typ jednostki i}} (parametr domyślny numerkowy) - i te z numerkiem: {{Code|typ jednostki 1}}, {{Code|typ jednostki 2}}, ..., tzn. gdy chcemy określić z jakim typem jednostki mamy do czynienia w zależności do jakiej przestrzeni nazw należy, a w danej, czy jest on np. programowy, czy tylko jest opisem, jak to bywa w szablonach {{Np|Template|link=tak}}, podobnie jest w przypadku {{Np|Module|link=tak}}, czy jak jest w innych przestrzeniach nazw, ** {{Code|dyskusja typu jednostki}} (parametr bazowy) i {{Code|dyskusja typu jednostki i}} (parametr domyślny numerkowy) - i te z numerkiem: {{Code|dyskusja typu jednostki 1}}, {{Code|dyskusja typu jednostki 2}}, ..., gdy chcemy określić wartością niepustą,że chodzi tutaj o typ jednostki. == {{Code|p.CzyNiepoprawnaNazwa(nazwa_jednostki)}} == Funkcja sprawdzajaca, czy jest poprawnie podana nazwa jednostki, czy ma poprawną nazwę. Znakami tymi, z których nie powinna składać się nazwa jest {{Code|<nowiki>{}<>|[]#\n</nowiki>}} i dodatkowo znak {{Code|&#127;}} (kod {{Code|{{Nowiki|&#127;}}}}). Też nie może składać się z trzech znaków tyldy, tzn. {{Code|<nowiki>~~~</nowiki>}}. Również w swojej budowie nie może składać się ze kodów {{Strong|HTML}} literowych o wzorze {{Code|{{Nowiki|&(%a+);}}}}. Natomiast może składać się z {{Code|{{Nowiki|&#(%d+);}}}} i {{Code|{{Nowiki|&#x(%x+);}}}}, ale w pierw te kody muszą być zamienione na normalne znaki. Skrótowa definicja funkcji: <syntaxhighlight lang="lua"> function p.CzyNiepoprawnaNazwa(nazwa_jednostki)...end; </syntaxhighlight> Wtedy ciało funkcji tej, czyli jego definicja w środku, jest: <syntaxhighlight lang="lua"> -- Moduł: "Moduł:Html/dane", służy do ładowania znaku o kodzie HTML "&#127;"; local html_dane_modul=mw.loadData("Module:Html/dane"); return mw.ustring.match(nazwa_jednostki,"[{}<>|%[%]#\n"..html_dane_modul.znak_127.."]+") or mw.ustring.match(nazwa_jednostki,"~~~") or mw.ustring.match(nazwa_jednostki,"&(%a+);"); </syntaxhighlight> Parametry: * {{Code|nazwa_jednostki}} - nazwa jednostki do sprawdzenia. Przykłady: <syntaxhighlight lang="lua"> local pudelko_modul=require("Module:Pudełko"); -- Podana przykładowa niepoprawna nazwa jedostki local nazwa_jednostki="Nazwa pliku [[Nazwa linku w pliku]]"; -- Fukcja zwróci wartość: local czy_poprawna_nazwa=true; local czy_poprawna_nazwa=pudelko_modul.CzyNiepoprawnaNazwa(nazwa_jednostki); </syntaxhighlight> == Funkcje nazw przestrzeni nazw == === {{Code|p["Nazwa przestrzeni nazw"](frame,...)}} === Funkcja pisze nazwę przestrzeni nazw, niezależnie, czy to jest przedmiotowa, czy dyskusji, według podanej w zmiennej {{Code|nazwa przestrzeni nazw}} dla pozycja bazowej w podanych parametrach szablonu rodzicu ramki dziecka, lub dla innej pozycji należy parametr podawać w formie {{Code|nazwa przestrzeni nazw 1}}, {{Code|nazwa przestrzeni nazw 2}}, {{Code|nazwa przestrzeni nazw 3}},..., lub te parametry można podać w postaci ogólnej {{Code|nazwa przestrzeni nazw i}}. Parametry podaje się w parametrach rodzica wywołania tej funkcji {{Code|{{m|Pudełko|Nazwa przestrzeni nazw}}}} (ale ich nie trzeba podawać w dziecku, ale można) i w parametrach dziecka, jeśli chodzi o zmienną {{Code|numer jednostki}}, czyli np.: {{Code|{{m|Pudełko|Nazwa przestrzeni nazw|numer jednostki{{=}}<jakaś liczba całkowita dodatnia>}}}}. Te parametry przestrzenne zamiast w rodzicu w szablonie można podać w ramce dziecka, wtedy parametry dziecka mają pierwszeństwo. Przestrzeń nazw z parametrów nazw przestrzennych może odpowiadać wartości przestrzeni głównej, to wtedy odpowiednia przestrzeń nazw z parametru nazwy jednostki się nie liczy w tej funkcji, aby się liczyła należy użyć funkcji {{Code|{{sr|#p["Nazwa przestrzeni nazw 2"](frame,...)|p=Pudełko}}}}. Definicja skrótowa funkcji: <syntaxhighlight lang="lua"> p["Nazwa przestrzeni nazw"]=function(frame,czy_uwzglednic_alternatywna_nazwe,i)...end; </syntaxhighlight> Wtedy ciało funkcji tej, czyli jego definicja w środku, jest: <syntaxhighlight lang="lua"> -- Jest liczony numer parametru nazwy przestrzeni nazw, domyslnie chodzi tu o numer bazowy parametrów przestrzennych; local numer_jednostki=i or frame.args["numer jednostki"]; local liczba_numer_jednostki=((numer_jednostki)and(tonumber(numer_jednostki))or 0); local pudelko_pomocne_modul=require("Module:Pudełko/Pomocne"); -- Liczy nazwę przestrzeni nazw na podstawie podanych parametrów; return pudelko_pomocne_modul.Nazwa_przestrzeni_nazw(frame,0, czy_uwzglednic_alternatywna_nazwe,liczba_numer_jednostki); </syntaxhighlight> Parametry funkcji: * {{Code|frame}} - tablica ramki tablicy transportu, * {{Code|czy_uwzglednic_alternatywna_nazwe}} - czy ma uwzględniać nazwę przestrzeni nazw domyślną szablonu, dostępne wartości: {{Code|false}}, w której nazwa domyślna nie jest uwzględniana wtedy, oraz {{Code|nil}} i {{Code|true}}, które oznaczają to samo, w tym jeżeli ona jest uwzględniana, wtedy jest brany parametr pierwszy dziecka, który musi istnieć przy takiej wartości tego parametru, tzn. {{Code|{{m|Pudełko|Nazwa przestrzeni nazw|Szablon}}}}, a nazwa uzyskana nazwy przestrzeni nazw jest w takim przypadku błędna, a jeżeli nazwa domyślna jest błędna, czyli {{Code|{{m|Pudełko|Nazwa przestrzeni nazw|Moja przestrzeń}}}}, wtedy funkcja zwraca stan błędu {{Code|(błąd)}}. * {{Code|i}} - numer zmiennej nazwy przestrzeni nazw. Funkcja wykorzystuje {{Code|{{sr|#p.Nazwa_przestrzeni_nazw(frame,...)|p=Pudełko/Pomocne}}}} do wyznaczania ogólnego nazwy przestrzeni nazw dla pozycji bazowej i numerkowej, tzn. dla pozycji: jeden, dwa, trzy,..., itd, i ich ogólnej. Parametr ramki tablicy transportu rodzica szablonu: * {{Code|nazwa przestrzeni nazw}}, {{Code|nazwa przestrzeni nazw 1}}, {{Code|nazwa przestrzeni nazw 2}}, {{Code|nazwa przestrzeni nazw 3}},..., {{Code|nazwa przestrzeni nazw i}} - nazwy przestrzeni nazw dla pozycji bazowej oraz zwykłej i ogólnej numerkowej, * {{Code|typ jednostki}}, {{Code|typ jednostki 1}}, {{Code|typ jednostki 2}}, {{Code|typ jednostki 3}},..., {{Code|typ jednostki i}} - typy jednostek, którym odpowiadają pewne przestrzenie przedmiotowe, dla pozycji bazowej, numerkowej i ogólnej, ** {{Code|dyskusja typu jednostki}}, {{Code|dyskusja typu jednostki 1}}, {{Code|dyskusja typ jednostki 2}}, {{Code|dyskusja typ jednostki 3}},..., {{Code|dyskusja typ jednostki i}} - czy dany typ jednostki ma przedstawiać, jeśli niepusta, przestrzeń dyskusji dla pozycji bazowej, numerkowej i ogólnej. Parametry ramki tablicy transportu dziecka: * Parametry dziecka są takie same jak rodzica dla funkcji pudełkowej plus tu wymienione, * {{Code|numer jednostki}} - jak parametr {{Code|i}} nie został ustawiony, to wtedy liczy się ta zmienna. Przykłady: <syntaxhighlight lang="mediawiki"> {{Nazwa szablonu|nazwa przestrzeni nazw=Wikibooks|nazwa przestrzeni nazw 2=Szablon|nazwa przestrzeni nazw i=Moduł}} </syntaxhighlight> W dziecku powiedzmy jest wywołanie, i szukamy nazwy przestrzeni nazw o numerze dwa, która nie została podana, ale istnieje za to jej wersji ogólna {{Code|nazwa przestrzeni nazw i}} i domyślna {{Code|nazwa przestrzeni nazw}}: <syntaxhighlight lang="mediawiki"> {{#invoke:Pudełko|Nazwa przestrzeni nazw|numer jednostki=1}} </syntaxhighlight> Na podstawie powyższego przykładu otrzymamy wynik o schemacie, nie wyniku, bo tam nie ma zmiennej {{Code|nazwa przestrzeni nazw 1}}, ale jest {{Code|nazwa przestrzeni nazw i}}: <syntaxhighlight lang="mediawiki"> <!-- Ale nie "nazwa przestrzeni nazw", bo jej nie ma, ale za to istnieje "nazwa przestrzeni nazw i"; --> <!-- nazwa przestrzeni nazw 2=nazwa przestrzeni nazw i=Moduł; --> <!-- Czyli wynik: --> Moduł <!-- Widzimy, że wygenerowała się nazwa przestrzeni nazw, którą jest przestrzeń programowa, którą również jest "Szablon"; --> </syntaxhighlight> Nie jest brana w tym powyższym przykładzie zmienna {{Code|nazwa przestrzeni nazw}}, bo jej nie ma, ale za to jest {{Code|nazwa przestrzeni nazw i}}, bo ona występuje jako parametr domyślny ogólny dla parametrów numerkowych. Przykłady w wikikodzie: * {{Code|{{m|Pudełko|Nazwa przestrzeni nazw|numer jednostki{{=}}2}}}} → {{Tt|{{#invoke:Pudełko|Nazwa przestrzeni nazw|numer jednostki=2}}}} * {{Code|{{m|Pudełko|Nazwa przestrzeni nazw|Szablon|nazwa przestrzeni nazw i{{=}}Moja przestrzeń|numer jednostki{{=}}2}}}} → {{Tt|{{#invoke:Pudełko|Nazwa przestrzeni nazw|Szablon|nazwa przestrzeni nazw i=Moja przestrzeń|numer jednostki=2}}}} * {{Code|{{m|Pudełko|Nazwa przestrzeni nazw|nazwa przestrzeni nazw 2{{=}}Szablon|numer jednostki{{=}}2}}}} → {{Tt|{{#invoke:Pudełko|Nazwa przestrzeni nazw|nazwa przestrzeni nazw 2=Szablon|numer jednostki=2}}}} * {{Code|{{m|Pudełko|Nazwa przestrzeni nazw|nazwa przestrzeni nazw 2{{=}}Szablon|numer jednostki{{=}}2}}}} → {{Tt|{{#invoke:Pudełko|Nazwa przestrzeni nazw|nazwa przestrzeni nazw i=Szablon|numer jednostki=2}}}} * {{Code|{{m|Pudełko|Nazwa przestrzeni nazw|nazwa przestrzeni nazw{{=}}Szablon|numer jednostki{{=}}2}}}} → {{Tt|{{#invoke:Pudełko|Nazwa przestrzeni nazw|nazwa przestrzeni nazw=Szablon|numer jednostki=2}}}} Powyżej dla przykładu podano parametry nie w rodzicu w szablonie, tylko w dziecku, jeśli chodzi o parametry nazw przestrzeni nazw, ale ich się za to nie powinno podawać w tych ramach, tylko w szablonach, w których wywoływane są te ramki pudełek {{Code|{{m|Pudełko}}}}, ale tak tutaj tak zrobiono by było najłatwiej sprawdzić działanie tego typu funkcji. Analogicznie możemy podawać parametry typu jednostki, np.: wywołaniu modułowym {{Code|{{m|Pudełko|Nazwa przestrzeni nazw|typ jednostki 2{{=}}strona szablonu|numer jednostki{{=}}2}}}}, ale o tym więcej w rozdziałach {{Code|{{sr|# p["Typ jednostki"](frame,i)|p=Pudełko}}}} w „{{sr|#Funkcje typu jednostki|p=Pudełko}}”, on definiuje przestrzenie przedmiotowe, ale można użyć parametru dyskusji typu jednostki z wartością niepustą, wtedy wyświetli się nazwa przestrzeni nazw dyskusji. Również parametry typu jednostki nie powinno się podawać w dziecku w ramce, tylko w rodzicu w szablonie jako parametry, w którym ta ramka jest wywoływana, ale tutaj podano jedynie dla przykładu, jak najłatwiej sprawdzić działanie tych parametrów tej funkcji. Najpierw w funkcji nagłówku brane są parametry nazw przestrzeni nazw, a jeżeli ich nie ma, to parametry typu jednostki, a jeżeli nie ma, to generowane są nazwy na podstawie aktualnego modułu. === {{Code|p["Nazwa przedmiotowej przestrzeni nazw"](frame,...)}} === Funkcja pisze przedmiotową nazwę przestrzeni nazw jakikolwiek nazwy przestrzeni nazw (tzn. nazwę przedmiotową nazwy przestrzenie nazw, czyli nie dyskusji, zamieniana jest na nią samą, czyli identyfikator przestrzeni się nie zmienia, a dyskusji, nie przedmiotową, przekształca się na przedmiotową jej odpowiadającą, czyli w tym przypadku identyfikator przestrzeni zmniejsza się o numer mniej), według podanej w zmiennej {{Code|nazwa przestrzeni nazw}} dla pozycja bazowej w podanych parametrach szablonu rodzicu ramki dziecka, lub dla innej pozycji należy parametr podawać w formie {{Code|nazwa przestrzeni nazw 1}}, {{Code|nazwa przestrzeni nazw 2}}, {{Code|nazwa przestrzeni nazw 3}},..., lub te parametry można podać w postaci ogólnej {{Code|nazwa przestrzeni nazw i}}. Parametry podaje się w parametrach rodzica wywołania tej funkcji {{Code|{{m|Pudełko|Nazwa przedmiotowej przestrzeni nazw}}}} (ale ich nie trzeba podawać w dziecku, ale można) i w parametrach dziecka, jeśli chodzi o zmienną {{Code|numer jednostki}}, czyli np.: {{Code|{{m|Pudełko|Nazwa przedmiotowej przestrzeni nazw|numer jednostki{{=}}<jakaś liczba całkowita dodatnia>}}}}. Te parametry przestrzenne zamiast w rodzicu w szablonie można podać w ramce dziecka, wtedy parametry dziecka mają pierwszeństwo. Parametry przestrzenne mogą mogą być podane w postaci przestrzeni przedmiotowej lub dyskusji, ale ta funkcja zawsze ją zamienia na przedmiotową. Przestrzeń nazw z parametrów nazw przestrzennych może odpowiadać wartości przestrzeni głównej, to wtedy odpowiednia przestrzeń nazw z parametru nazwy jednostki się nie liczy w tej funkcji, aby się liczyła należy użyć funkcji {{Code|{{sr|#p["Nazwa przedmiotowej przestrzeni nazw 2"](frame,...)|p=Pudełko}}}}. Definicja skrótowa funkcji: <syntaxhighlight lang="lua"> p["Nazwa przedmiotowej przestrzeni nazw"]=function(frame,czy_uwzglednic_alternatywna_nazwe,i)...end; </syntaxhighlight> Wtedy ciało funkcji tej, czyli jego definicja w środku, jest: <syntaxhighlight lang="lua"> -- Jest liczony numer parametru nazwy przestrzeni nazw, domyslnie chodzi tu o numer bazowy parametrów przestrzennych; local numer_jednostki=i or frame.args["numer jednostki"]; local liczba_numer_jednostki=((numer_jednostki)and(tonumber(numer_jednostki))or 0); local pudelko_pomocne_modul=require("Module:Pudełko/Pomocne"); -- Liczy nazwę przestrzeni nazw przedmiotową na podstawie podanych parametrów; return pudelko_pomocne_modul.Nazwa_przestrzeni_nazw(frame,1, czy_uwzglednic_alternatywna_nazwe,liczba_numer_jednostki); </syntaxhighlight> Parametry funkcji: * {{Code|frame}} - tablica ramki tablicy transportu, * {{Code|czy_uwzglednic_alternatywna_nazwe}} - czy ma uwzględniać nazwę przestrzeni nazw domyślną szablonu, dostępne wartości: {{Code|false}}, w której nazwa domyślna nie jest uwzględniana wtedy, oraz {{Code|nil}} i {{Code|true}}, które oznaczają to samo, w tym jeżeli ona jest uwzględniana, wtedy jest brany parametr pierwszy dziecka, który musi istnieć przy takiej wartości tego parametru, tzn. {{Code|{{m|Pudełko|Nazwa przedmiotowej przestrzeni nazw|Dyskusja szablonu}}}} - ta nazwa domyślna zostanie zamieniona na przedmiotową, a jak ona by była przedmiotowa, to żadnej zamiany by nie było, a nazwa uzyskana z nazwy przestrzeni nazw z parametrów przestrzennych jest w takim przypadku błędna, to w takim razie brany jest ten parametr, a jeżeli ta nazwa domyślna jest błędna, czyli {{Code|{{m|Pudełko|Nazwa przedmiotowej przestrzeni nazw|Moja przestrzeń}}}}, wtedy funkcja zwraca stan błędu {{Code|(błąd)}}. * {{Code|i}} - numer zmiennej nazwy przestrzeni nazw. Funkcja wykorzystuje {{Code|{{sr|#p.Nazwa_przestrzeni_nazw(frame,...)|p=Pudełko/Pomocne}}}} do wyznaczania ogólnego nazwy przestrzeni nazw dla pozycji bazowej i numerkowej, tzn. dla pozycji: jeden, dwa, trzy,..., itd, i ich ogólnej. Parametr ramki tablicy transportu rodzica szablonu: * {{Code|nazwa przestrzeni nazw}}, {{Code|nazwa przestrzeni nazw 1}}, {{Code|nazwa przestrzeni nazw 2}}, {{Code|nazwa przestrzeni nazw 3}},..., {{Code|nazwa przestrzeni nazw i}} - nazwy przestrzeni nazw dla pozycji bazowej oraz zwykłej i ogólnej numerkowej, * {{Code|typ jednostki}}, {{Code|typ jednostki 1}}, {{Code|typ jednostki 2}}, {{Code|typ jednostki 3}},..., {{Code|typ jednostki i}} - typy jednostek, którym odpowiadają pewne przestrzenie przedmiotowe, dla pozycji bazowej, numerkowej i ogólnej. Parametry ramki tablicy transportu dziecka: * Parametry dziecka są takie same jak rodzica dla funkcji pudełkowej plus tu wymienione, * {{Code|numer jednostki}} - jak parametr {{Code|i}} nie został ustawiony, to wtedy liczy się ta zmienna. Przykłady: <syntaxhighlight lang="mediawiki"> {{Nazwa szablonu|nazwa przestrzeni nazw=Dyskusja Wikibooks|nazwa przestrzeni nazw 2=Dyskusja szablonu|nazwa przestrzeni nazw i=Dyskusja modułu}} </syntaxhighlight> W dziecku powiedzmy jest wywołanie, i szukamy nazwy przestrzeni nazw o numerze dwa, która nie została podana, ale istnieje za to jej wersji ogólna {{Code|nazwa przestrzeni nazw i}} i domyślna {{Code|nazwa przestrzeni nazw}}: <syntaxhighlight lang="mediawiki"> {{#invoke:Pudełko|Nazwa przedmiotowej przestrzeni nazw|numer jednostki=1}} </syntaxhighlight> Na podstawie powyższego przykładu otrzymamy wynik o schemacie, nie wyniku, bo tam nie ma zmiennej {{Code|nazwa przestrzeni nazw 1}}, ale jest {{Code|nazwa przestrzeni nazw i}}: <syntaxhighlight lang="mediawiki"> <!-- Ale nie "nazwa przestrzeni nazw", bo jej nie ma, ale za to istnieje "nazwa przestrzeni nazw i"; --> <!-- nazwa przestrzeni nazw 2=nazwa przestrzeni nazw i=Dyskusja modułu; --> <!-- Czyli wynik: --> Moduł <!-- Widzimy, że wygenerowała się nazwa przestrzeni nazw, którą jest przestrzeń przedmiotowa programowa przestrzeni dyskusji "Dyskusja modułu", którą również jest "Szablon" jego przestrzeni dyskusji "Dyskusja szablonu", a dla ich przestrzeni przedmiotowej, zamiast dyskusji, to samo przekształca się na to samo; --> </syntaxhighlight> Nie jest brana w tym powyższym przykładzie zmienna {{Code|nazwa przestrzeni nazw}}, bo jej nie ma, ale za to jest {{Code|nazwa przestrzeni nazw i}}, bo ona występuje jako parametr domyślny ogólny dla parametrów numerkowych. Przykłady w wikikodzie: * {{Code|{{m|Pudełko|Nazwa przedmiotowej przestrzeni nazw|numer jednostki{{=}}2}}}} → {{Tt|{{#invoke:Pudełko|Nazwa przedmiotowej przestrzeni nazw|numer jednostki=2}}}} * {{Code|{{m|Pudełko|Nazwa przedmiotowej przestrzeni nazw|Dyskusja szablonu|nazwa przestrzeni nazw i{{=}}Moja przestrzeń|numer jednostki{{=}}2}}}} → {{Tt|{{#invoke:Pudełko|Nazwa przedmiotowej przestrzeni nazw|Dyskusja szablonu|nazwa przestrzeni nazw i=Moja przestrzeń|numer jednostki=2}}}} * {{Code|{{m|Pudełko|Nazwa przedmiotowej przestrzeni nazw|nazwa przestrzeni nazw 2{{=}}Dyskusja szablonu|numer jednostki{{=}}2}}}} → {{Tt|{{#invoke:Pudełko|Nazwa przedmiotowej przestrzeni nazw|nazwa przestrzeni nazw 2=Dyskusja szablonu|numer jednostki=2}}}} * {{Code|{{m|Pudełko|Nazwa przedmiotowej przestrzeni nazw|nazwa przestrzeni nazw 2{{=}}Dyskusja szablonu|numer jednostki{{=}}2}}}} → {{Tt|{{#invoke:Pudełko|Nazwa przedmiotowej przestrzeni nazw|nazwa przestrzeni nazw i=Dyskusja szablonu|numer jednostki=2}}}} * {{Code|{{m|Pudełko|Nazwa przedmiotowej przestrzeni nazw|nazwa przestrzeni nazw{{=}}Dyskusja szablonu|numer jednostki{{=}}2}}}} → {{Tt|{{#invoke:Pudełko|Nazwa przedmiotowej przestrzeni nazw|nazwa przestrzeni nazw=Dyskusja szablonu|numer jednostki=2}}}} Powyżej dla przykładu podano parametry nie w rodzicu w szablonie, tylko w dziecku, jeśli chodzi o parametry nazw przestrzeni nazw, ale ich się za to nie powinno podawać w tych ramach, tylko w szablonach, w których wywoływane są te ramki pudełek {{Code|{{m|Pudełko}}}}, ale tak tutaj tak zrobiono by było najłatwiej sprawdzić działanie tego typu funkcji. Analogicznie możemy podawać parametry typu jednostki, np.: wywołaniu modułowym {{Code|{{m|Pudełko|Nazwa przedmiotowej przestrzeni nazw|typ jednostki 2{{=}}strona szablonu|numer jednostki{{=}}2}}}}, ale o tym więcej w rozdziałach {{Code|{{sr|# p["Przedmiotowy typ jednostki"](frame,i)|p=Pudełko}}}} w „{{sr|#Funkcje typu jednostki|p=Pudełko}}”, ale wtedy ta sama nazwa przestrzeni nazw reprezentowana przez {{Parametr|typ jednostki 2|strona szablonu}}, jest zamieniana na to samo, lepiej jest tutaj używać parametrów przestrzennych nazw niż typu jednostki, bo typ jednostki ma taką samą wartość dla przestrzeni przedmiotowej, co dyskusji. Tutaj parametr dyskusji typu jednostki bazowy i numerkowy ogólny, czy szczegółowy, nie gra roli, bo nawet, gdy wygenerujemy nazwę przestrzeni dyskusji za pomoca tego parametru, to i tak otrzymamy na samym końcu jego nazwę przedmiotową. Również parametry typu jednostki nie powinno się podawać w dziecku w ramce, tylko w rodzicu w szablonie jako parametry, w którym ta ramka jest wywoływana, ale tutaj podano jedynie dla przykładu, jak najłatwiej sprawdzić działanie tych parametrów tej funkcji. Najpierw w funkcji nagłówku brane są parametry nazw przestrzeni nazw, a jeżeli ich nie ma, to parametry typu jednostki, a jeżeli nie ma, to generowane są nazwy na podstawie aktualnego modułu. === {{Code|p["Nazwa przestrzeni nazw dyskusji"](frame,...)}} === Funkcja pisze nazwę przestrzeni nazw dyskusji jakikolwiek nazwy przestrzeni nazw (tzn. nazwę przedmiotową nazwy przestrzenie nazw, czyli nie dyskusji, zamieniana jest na dyskusji, czyli identyfikator przestrzeni się zmienia jeden wyżej, a dyskusji, nie przedmiotową, przekształca się na tą samą), według podanej w zmiennej {{Code|nazwa przestrzeni nazw}} dla pozycja bazowej w podanych parametrach szablonu rodzicu ramki dziecka, lub dla innej pozycji należy parametr podawać w formie {{Code|nazwa przestrzeni nazw 1}}, {{Code|nazwa przestrzeni nazw 2}}, {{Code|nazwa przestrzeni nazw 3}},..., lub te parametry można podać w postaci ogólnej {{Code|nazwa przestrzeni nazw i}}. Parametry podaje się w parametrach rodzica wywołania tej funkcji {{Code|{{m|Pudełko|Nazwa przestrzeni nazw dyskusji}}}} (ale ich nie trzeba podawać w dziecku, ale można) i w parametrach dziecka, jeśli chodzi o zmienną {{Code|numer jednostki}}, czyli np.: {{Code|{{m|Pudełko|Nazwa przestrzeni nazw dyskusji|numer jednostki{{=}}<jakaś liczba całkowita dodatnia>}}}}. Te parametry przestrzenne zamiast w rodzicu w szablonie można podać w ramce dziecka, wtedy parametry dziecka mają pierwszeństwo. Parametry przestrzenne mogą mogą być podane w postaci przestrzeni przedmiotowej lub dyskusji, ale ta funkcja zawsze ją zamienia na dyskusji. Przestrzeń nazw z parametrów nazw przestrzennych może odpowiadać wartości przestrzeni głównej, to wtedy odpowiednia przestrzeń nazw z parametru nazwy jednostki się nie liczy w tej funkcji, aby się liczyła należy użyć funkcji {{Code|{{sr|#p["Nazwa przestrzeni nazw dyskusji 2"](frame,...)|p=Pudełko}}}}. Definicja skrótowa funkcji: <syntaxhighlight lang="lua"> p["Nazwa przestrzeni nazw dyskusji"]=function(frame,czy_uwzglednic_alternatywna_nazwe,i)...end; </syntaxhighlight> Wtedy ciało funkcji tej, czyli jego definicja w środku, jest: <syntaxhighlight lang="lua"> -- Jest liczony numer parametru nazwy przestrzeni nazw, domyslnie chodzi tu o numer bazowy parametrów przestrzennych; local numer_jednostki=i or frame.args["numer jednostki"]; local liczba_numer_jednostki=((numer_jednostki)and(tonumber(numer_jednostki))or 0); local pudelko_pomocne_modul=require("Module:Pudełko/Pomocne"); -- Liczy nazwę przestrzeni nazw dyskusji na podstawie podanych parametrów; return pudelko_pomocne_modul.Nazwa_przestrzeni_nazw(frame,2, czy_uwzglednic_alternatywna_nazwe,liczba_numer_jednostki); </syntaxhighlight> Parametry funkcji: * {{Code|frame}} - tablica ramki tablicy transportu, * {{Code|czy_uwzglednic_alternatywna_nazwe}} - czy ma uwzględniać nazwę przestrzeni nazw domyślną szablonu, dostępne wartości: {{Code|false}}, w której nazwa domyślna nie jest uwzględniana wtedy, oraz {{Code|nil}} i {{Code|true}}, które oznaczają to samo, w tym jeżeli ona jest uwzględniana, wtedy jest brany parametr pierwszy dziecka, który musi istnieć przy takiej wartości tego parametru, tzn. {{Code|{{m|Pudełko|Nazwa przestrzeni nazw dyskusji|Szablon}}}} - ta nazwa domyślna zostanie przekształcona na dyskusji, a jeżeli ona by była dyskusji, to nie byłoby żadnego przekształcenia, a nazwa uzyskana nazwy przestrzeni nazw z parametrów przestrzennych jest w takim przypadku błędna, to w takim razie brany jest ten parametr, a jeżeli nazwa domyślna jest błędna, czyli {{Code|{{m|Pudełko|Nazwa przestrzeni nazw dyskusji|Moja przestrzeń}}}}, wtedy funkcja zwraca stan błędu {{Code|(błąd)}}. * {{Code|i}} - numer zmiennej nazwy przestrzeni nazw. Funkcja wykorzystuje {{Code|{{sr|#p.Nazwa_przestrzeni_nazw(frame,...)|p=Pudełko/Pomocne}}}} do wyznaczania ogólnego nazwy przestrzeni nazw dla pozycji bazowej i numerkowej, tzn. dla pozycji: jeden, dwa, trzy,..., itd, i ich ogólnej. Parametr ramki tablicy transportu rodzica szablonu: * {{Code|nazwa przestrzeni nazw}}, {{Code|nazwa przestrzeni nazw 1}}, {{Code|nazwa przestrzeni nazw 2}}, {{Code|nazwa przestrzeni nazw 3}},..., {{Code|nazwa przestrzeni nazw i}} - nazwy przestrzeni nazw dla pozycji bazowej oraz zwykłej i ogólnej numerkowej, * {{Code|typ jednostki}}, {{Code|typ jednostki 1}}, {{Code|typ jednostki 2}}, {{Code|typ jednostki 3}},..., {{Code|typ jednostki i}} - typy jednostek, którym odpowiadają pewne przestrzenie przedmiotowe, dla pozycji bazowej, numerkowej i ogólnej. Parametry ramki tablicy transportu dziecka: * Parametry dziecka są takie same jak rodzica dla funkcji pudełkowej plus tu wymienione, * {{Code|numer jednostki}} - jak parametr {{Code|i}} nie został ustawiony, to wtedy liczy się ta zmienna. Przykłady: <syntaxhighlight lang="mediawiki"> {{Nazwa szablonu|nazwa przestrzeni nazw=Wikibooks|nazwa przestrzeni nazw 2=Szablon|nazwa przestrzeni nazw i=Moduł}} </syntaxhighlight> W dziecku powiedzmy jest wywołanie, i szukamy nazwy przestrzeni nazw o numerze dwa, która nie została podana, ale istnieje za to jej wersji ogólna {{Code|nazwa przestrzeni nazw i}} i domyślna {{Code|nazwa przestrzeni nazw}}: <syntaxhighlight lang="mediawiki"> {{#invoke:Pudełko|Nazwa przestrzeni nazw dyskusji|numer jednostki=1}} </syntaxhighlight> Na podstawie powyższego przykładu otrzymamy wynik o schemacie, nie wyniku, bo tam nie ma zmiennej {{Code|nazwa przestrzeni nazw 1}}, ale jest {{Code|nazwa przestrzeni nazw i}}: <syntaxhighlight lang="mediawiki"> <!-- Ale nie "nazwa przestrzeni nazw", bo jej nie ma, ale za to istnieje "nazwa przestrzeni nazw i"; --> <!-- nazwa przestrzeni nazw 2=nazwa przestrzeni nazw i=Moduł; --> <!-- Czyli wynik: --> Dyskusja modułu <!-- Widzimy, że wygenerowała się nazwa przestrzeni nazw, którą jest przestrzeń dyskusji przestrzeni programowej przestrzeni przedmiotowej "Moduł", którą również jest "Szablon" jego przestrzeni dyskusji "Dyskusja szablonu", a dla ich przestrzeni przedmiotowej, zamiast dyskusji, to przekształca się na dyskusji jej odpowiadającą; --> </syntaxhighlight> Nie jest brana w tym powyższym przykładzie zmienna {{Code|nazwa przestrzeni nazw}}, bo jej nie ma, ale za to jest {{Code|nazwa przestrzeni nazw i}}, bo ona występuje jako parametr domyślny ogólny dla parametrów numerkowych. Przykłady w wikikodzie: * {{Code|{{m|Pudełko|Nazwa przestrzeni nazw dyskusji|numer jednostki{{=}}2}}}} → {{Tt|{{#invoke:Pudełko|Nazwa przestrzeni nazw dyskusji|numer jednostki=2}}}} * {{Code|{{m|Pudełko|Nazwa przestrzeni nazw dyskusji|Szablon|nazwa przestrzeni nazw i{{=}}Moja przestrzeń|numer jednostki{{=}}2}}}} → {{Tt|{{#invoke:Pudełko|Nazwa przestrzeni nazw dyskusji|Szablon|nazwa przestrzeni nazw i=Moja przestrzeń|numer jednostki=2}}}} * {{Code|{{m|Pudełko|Nazwa przestrzeni nazw dyskusji|nazwa przestrzeni nazw 2{{=}}Szablon|numer jednostki{{=}}2}}}} → {{Tt|{{#invoke:Pudełko|Nazwa przestrzeni nazw dyskusji|nazwa przestrzeni nazw 2=Szablon|numer jednostki=2}}}} * {{Code|{{m|Pudełko|Nazwa przestrzeni nazw dyskusji|nazwa przestrzeni nazw 2{{=}}Szablon|numer jednostki{{=}}2}}}} → {{Tt|{{#invoke:Pudełko|Nazwa przestrzeni nazw dyskusji|nazwa przestrzeni nazw i=Szablon|numer jednostki=2}}}} * {{Code|{{m|Pudełko|Nazwa przestrzeni nazw dyskusji|nazwa przestrzeni nazw{{=}}Szablon|numer jednostki{{=}}2}}}} → {{Tt|{{#invoke:Pudełko|Nazwa przestrzeni nazw dyskusji|nazwa przestrzeni nazw=Szablon|numer jednostki=2}}}} Powyżej dla przykładu podano parametry nie w rodzicu w szablonie, tylko w dziecku, jeśli chodzi o parametry nazw przestrzeni nazw, ale ich się za to nie powinno podawać w tych ramach, tylko w szablonach, w których wywoływane są te ramki pudełek {{Code|{{m|Pudełko}}}}, ale tak tutaj tak zrobiono by było najłatwiej sprawdzić działanie tego typu funkcji. Analogicznie możemy podawać parametry typu jednostki, np.: wywołaniu modułowym {{Code|{{m|Pudełko|Nazwa przestrzeni nazw dyskusji|typ jednostki 2{{=}}strona szablonu|numer jednostki{{=}}2}}}}, ale o tym więcej w rozdziałach {{Code|{{sr|# p["Dyskusyjny typ jednostki"](frame,i)|p=Pudełko}}}} w „{{sr|#Funkcje typu jednostki|p=Pudełko}}”, ale wtedy nazwa przestrzeni nazw reprezentowana przez {{Parametr|typ jednostki 2|strona szablonu}}, jest zamieniana na nazwę przestrzeni nazw dyskusji. Parametr dyskusji typu jednostki bazowy lub dla danego numerka ogólny, czy szczegółowy, nie gra roli. Również parametry typu jednostki nie powinno się podawać w dziecku w ramce, tylko w rodzicu w szablonie jako parametry, w którym ta ramka jest wywoływana, ale tutaj podano jedynie dla przykładu, jak najłatwiej sprawdzić działanie tych parametrów tej funkcji. Najpierw w funkcji nagłówku brane są parametry nazw przestrzeni nazw, a jeżeli ich nie ma, to parametry typu jednostki, a jeżeli nie ma, to generowane są nazwy na podstawie aktualnego modułu. == Funkcje nazw przestrzeni nazw drugiej wersji == === {{Code|p["Nazwa przestrzeni nazw 2"](frame,...)}} === Funkcja pisze nazwę przestrzeni nazw, niezależnie, czy to jest przedmiotowa, czy dyskusji, według, i nie zawsze tylko, podanej w zmiennej {{Code|nazwa przestrzeni nazw}} dla pozycja bazowej w podanych parametrach szablonu rodzicu ramki dziecka, lub dla innej pozycji należy parametr podawać w formie {{Code|nazwa przestrzeni nazw 1}}, {{Code|nazwa przestrzeni nazw 2}}, {{Code|nazwa przestrzeni nazw 3}},..., lub te parametry można podać w postaci ogólnej {{Code|nazwa przestrzeni nazw i}}. W tej funkcji trzeba też podawać parametry nazwy jednostek {{Code|nazwa jednostki}}, {{Code|nazwa jednostki 1}}, {{Code|nazwa jednostki 2}}, {{Code|nazwa jednostki 3}},... Parametry podaje się w parametrach rodzica wywołania tej funkcji {{Code|{{m|Pudełko|Nazwa przestrzeni nazw 2}}}} (ale ich nie trzeba podawać w dziecku, ale można) i w parametrach dziecka, jeśli chodzi o zmienną {{Code|numer jednostki}}, czyli np.: {{Code|{{m|Pudełko|Nazwa przestrzeni nazw 2|numer jednostki{{=}}<jakaś liczba całkowita dodatnia>}}}}. Te parametry przestrzenne zamiast w rodzicu w szablonie można podać w ramce dziecka, wtedy parametry dziecka mają pierwszeństwo. Przestrzeń nazw z parametrów nazw przestrzennych może odpowiadać wartości przestrzeni głównej, to wtedy odpowiednia przestrzeń nazw z parametru nazwy jednostki się liczy w tej funkcji, wtedy jest liczona nazwa przestrzeni nazw z tego parametru. Gdy parametry przestrzenne lub typ jednostki w drugim podejściu nie wskazują na przestrzeń główną, to wtedy działanie tej funkcji jest podobne do {{Code|{{sr|#p["Nazwa przestrzeni nazw"](frame,...)|p=Pudełko}}}}. Definicja skrótowa funkcji: <syntaxhighlight lang="lua"> p["Nazwa przestrzeni nazw 2"]=function(frame,czy_uwzglednic_alternatywna_nazwe,i)...end; </syntaxhighlight> Wtedy ciało funkcji tej, czyli jego definicja w środku, jest: <syntaxhighlight lang="lua"> local pudelko_pomocne_modul=require("Module:Pudełko/Pomocne"); -- Liczy nazwę przestrzeni nazw, jeżeli z parametrów przestrzennych przestrzeń wskazuje na główną, to wtedy jest liczona przestrzeń nazw z nazwy jednostki; return pudelko_pomocne_modul.Nazwa_przestrzeni_nazw_2(frame,czy_uwzglednic_alternatywna_nazwe,i) </syntaxhighlight> Parametry funkcji: * {{Code|frame}} - tablica ramki tablicy transportu, * {{Code|czy_uwzglednic_alternatywna_nazwe}} - czy ma uwzględniać nazwę przestrzeni nazw domyślną szablonu, dostępne wartości: {{Code|false}}, w której nazwa domyślna nie jest uwzględniana wtedy, oraz {{Code|nil}} i {{Code|true}}, które oznaczają to samo, w tym jeżeli ona jest uwzględniana, wtedy jest brany parametr pierwszy dziecka, który musi istnieć przy takiej wartości tego parametru, tzn. {{Code|{{m|Pudełko|Nazwa przestrzeni nazw 2|Szablon}}}}, a nazwa uzyskana nazwy przestrzeni nazw jest w takim przypadku błędna, a jeżeli nazwa domyślna jest błędna, czyli {{Code|{{m|Pudełko|Nazwa przestrzeni nazw 2|Moja przestrzeń}}}}, wtedy funkcja zwraca stan błędu {{Code|(błąd)}}. * {{Code|i}} - numer zmiennej nazwy przestrzeni nazw. Funkcja wykorzystuje {{Code|{{sr|#p.Nazwa_przestrzeni_nazw_2(frame,...)|p=Pudełko/Pomocne}}}} do wyznaczania ogólnego nazwy przestrzeni nazw dla pozycji bazowej i numerkowej, tzn. dla pozycji: jeden, dwa, trzy,..., itd, i ich ogólnej. Parametr ramki tablicy transportu rodzica szablonu: * {{Code|nazwa przestrzeni nazw}}, {{Code|nazwa przestrzeni nazw 1}}, {{Code|nazwa przestrzeni nazw 2}}, {{Code|nazwa przestrzeni nazw 3}},..., {{Code|nazwa przestrzeni nazw i}} - nazwy przestrzeni nazw dla pozycji bazowej oraz zwykłej i ogólnej numerkowej, * {{Code|nazwa jednostki}}, {{Code|nazwa jednostki 1}}, {{Code|nazwa jednostki 2}}, {{Code|nazwa jednostki 3}},... - nazwy jednostek dla pozycji bazowej i numerkowej, * {{Code|typ jednostki}}, {{Code|typ jednostki 1}}, {{Code|typ jednostki 2}}, {{Code|typ jednostki 3}},..., {{Code|typ jednostki i}} - typy jednostek, którym odpowiadają pewne przestrzenie przedmiotowe, dla pozycji bazowej, numerkowej i ogólnej, ** {{Code|dyskusja typu jednostki}}, {{Code|dyskusja typu jednostki 1}}, {{Code|dyskusja typ jednostki 2}}, {{Code|dyskusja typ jednostki 3}},..., {{Code|dyskusja typ jednostki i}} - czy dany typ jednostki ma przedstawiać, jeśli niepusta, przestrzeń dyskusji dla pozycji bazowej, numerkowej i ogólnej. Parametry ramki tablicy transportu dziecka: * Parametry dziecka są takie same jak rodzica dla funkcji pudełkowej plus tu wymienione, * {{Code|numer jednostki}} - jak parametr {{Code|i}} nie został ustawiony, to wtedy liczy się ta zmienna. Przykłady: <syntaxhighlight lang="mediawiki"> {{Nazwa szablonu|nazwa przestrzeni nazw=Wikibooks|nazwa przestrzeni nazw 1=Szablon|nazwa przestrzeni nazw i=|nazwa jednostki 2=Wikibooks:Strona}} </syntaxhighlight> W dziecku powiedzmy jest wywołanie, i szukamy nazwy przestrzeni nazw o numerze dwa, która została podana, ale istnieje za to jej wersji ogólna {{Code|nazwa przestrzeni nazw i}} i domyślna {{Code|nazwa przestrzeni nazw}}, ale wtedy dla tego numerkowego liczy się to ogólne z {{Code| i}}, a ponieważ ta nazwa jest pusta, więc będziemy liczyli nazwę przestrzeni nazw z {{Code|nazwa jednostki 2}}: <syntaxhighlight lang="mediawiki"> {{#invoke:Pudełko|Nazwa przestrzeni nazw 2|numer jednostki=2}} </syntaxhighlight> Na podstawie powyższego przykładu otrzymamy wynik o schemacie, nie wyniku, bo tam nie ma zmiennej {{Code|nazwa przestrzeni nazw 1}}, ale jest {{Code|nazwa przestrzeni nazw i}}: <syntaxhighlight lang="mediawiki"> <!-- Ale nie "nazwa przestrzeni nazw 2", bo jej nie ma, ale za to istnieje "nazwa przestrzeni nazw i"; --> <!-- nazwa przestrzeni nazw 2=nazwa przestrzeni nazw i="", a nazwa jednostki 2="Wikibooks:Strona"; --> <!-- Czyli wynik: --> Wikibooks <!-- Widzimy, że wygenerowała się nazwa przestrzeni nazw, którą jest przestrzeń nieprogramowa, ale projektu, wychodząca z nazwy jednostek w tym przypadku z "nazwa jednostki 2"; --> </syntaxhighlight> Nie jest brana w tym powyższym przykładzie zmienna {{Code|nazwa przestrzeni nazw}}, bo jej nie ma, ale za to jest {{Code|nazwa przestrzeni nazw i}}, bo ona występuje jako parametr domyślny ogólny dla parametrów numerkowych. Tytaj jest używana jest zmienna {{Code|nazwa jednostki 2}} do wygenerowania ostatecznego wyniku, bo jak można zauważyć, parametry przestrzenne wskazują na przestrzeń główną, a nazwy jednostek już nie. Przykłady w wikikodzie: * {{Code|{{m|Pudełko|Nazwa przestrzeni nazw 2|numer jednostki{{=}}2}}}} → {{Tt|{{#invoke:Pudełko|Nazwa przestrzeni nazw 2|numer jednostki=2}}}} * {{Code|{{m|Pudełko|Nazwa przestrzeni nazw 2|Szablon|nazwa przestrzeni nazw i{{=}}Moja przestrzeń|numer jednostki{{=}}2}}}} → {{Tt|{{#invoke:Pudełko|Nazwa przestrzeni nazw 2|Szablon|nazwa przestrzeni nazw i=Moja przestrzeń|numer jednostki=2}}}} * {{Code|{{m|Pudełko|Nazwa przestrzeni nazw 2|nazwa przestrzeni nazw 2{{=}}|nazwa jednostki 2{{=}}Szablon:Strona|numer jednostki{{=}}2}}}} → {{Tt|{{#invoke:Pudełko|Nazwa przestrzeni nazw 2|nazwa przestrzeni nazw 2=|nazwa jednostki 2=Szablon:Strona|numer jednostki=2}}}} * {{Code|{{m|Pudełko|Nazwa przestrzeni nazw 2|nazwa przestrzeni nazw i{{=}}|nazwa jednostki 2{{=}}Szablon:Strona|numer jednostki{{=}}2}}}} → {{Tt|{{#invoke:Pudełko|Nazwa przestrzeni nazw 2|nazwa przestrzeni nazw i=|nazwa jednostki 2=Szablon:Strona|numer jednostki=2}}}} * {{Code|{{m|Pudełko|Nazwa przestrzeni nazw 2|Szablon|nazwa przestrzeni nazw{{=}}|nazwa jednostki 2{{=}}Wikibooks:Strona|numer jednostki{{=}}2}}}} → {{Tt|{{#invoke:Pudełko|Nazwa przestrzeni nazw 2|Szablon|nazwa przestrzeni nazw=|nazwa jednostki 2=Wikibooks:Strona|numer jednostki=2}}}} Powyżej dla przykładu podano parametry nie w rodzicu w szablonie, tylko w dziecku, jeśli chodzi o parametry nazw przestrzeni nazw i nazw jednostek, ale ich się za to nie powinno podawać w tych ramach, tylko w szablonach, w których wywoływane są te ramki pudełek {{Code|{{m|Pudełko}}}}, ale tak tutaj tak zrobiono by było najłatwiej sprawdzić działanie tego typu funkcji. Analogicznie możemy podawać parametry typu jednostki, np.: wywołaniu modułowym {{Code|{{m|Pudełko|Nazwa przestrzeni nazw 2|typ jednostki 2{{=}}Podręcznik|nazwa jednostki 2{{=}}Szablon:Strona|numer jednostki{{=}}2}}}} (ale wtedy jest brana przestrzeń nazw z nazwy jednostki), ale o tym więcej w rozdziałach {{Code|{{sr|#p["Typ jednostki 2"](frame,i)|p=Pudełko}}}} w „{{sr|#Funkcje typu jednostki|p=Pudełko}}”, on definiuje przestrzenie przedmiotowe, ale można użyć parametru dyskusji typu jednostki z wartością niepustą, wtedy wyświetli się nazwa przestrzeni nazw dyskusji. Jeżeli typ jednostki wskazuje na przestrzeń nazw główną, wtedy się liczą parametry nazw jednostek. Również parametry typu jednostki nie powinno się podawać w dziecku w ramce, tylko w rodzicu w szablonie jako parametry, w którym ta ramka jest wywoływana, ale tutaj podano jedynie dla przykładu, jak najłatwiej sprawdzić działanie tych parametrów tej funkcji. Najpierw w funkcji nagłówku brane są parametry nazw przestrzeni nazw, a jeżeli ich nie ma, to parametry typu jednostki, a jeżeli nie ma lub parametry przestrzenne wskazują na przestrzeń główną, i nie ma nazwy jednostki, to generowane są nazwy tej funkcji na podstawie aktualnej strony. === {{Code|p["Nazwa przedmiotowej przestrzeni nazw 2"](frame,...)}} === Funkcja pisze przedmiotową nazwę przestrzeni nazw jakikolwiek nazwy przestrzeni nazw (tzn. nazwę przedmiotową nazwy przestrzenie nazw, czyli nie dyskusji, zamieniana jest na nią samą, czyli identyfikator przestrzeni się nie zmienia, a dyskusji, nie przedmiotową, przekształca się na przedmiotową jej odpowiadającą, czyli w tym przypadku identyfikator przestrzeni zmniejsza się o numer mniej), według, i nie zawsze tylko, podanej w zmiennej {{Code|nazwa przestrzeni nazw}} dla pozycja bazowej w podanych parametrach szablonu rodzicu ramki dziecka, lub dla innej pozycji należy parametr podawać w formie {{Code|nazwa przestrzeni nazw 1}}, {{Code|nazwa przestrzeni nazw 2}}, {{Code|nazwa przestrzeni nazw 3}},..., lub te parametry można podać w postaci ogólnej {{Code|nazwa przestrzeni nazw i}}. W tej funkcji trzeba też podawać parametry nazwy jednostek {{Code|nazwa jednostki}}, {{Code|nazwa jednostki 1}}, {{Code|nazwa jednostki 2}}, {{Code|nazwa jednostki 3}},... Parametry podaje się w parametrach rodzica wywołania tej funkcji {{Code|{{m|Pudełko|Nazwa przedmiotowej przestrzeni nazw 2}}}} (ale ich nie trzeba podawać w dziecku, ale można) i w parametrach dziecka, jeśli chodzi o zmienną {{Code|numer jednostki}}, czyli np.: {{Code|{{m|Pudełko|Nazwa przedmiotowej przestrzeni nazw 2|numer jednostki{{=}}<jakaś liczba całkowita dodatnia>}}}}. Te parametry przestrzenne zamiast w rodzicu w szablonie można podać w ramce dziecka, wtedy parametry dziecka mają pierwszeństwo. Przestrzeń nazw z parametrów nazw przestrzennych po przekształceniu na przedmiotową może odpowiadać wartości przestrzeni głównej, to wtedy odpowiednia przestrzeń nazw z parametru nazwy jednostki się liczy w tej funkcji, wtedy jest liczona nazwa przestrzeni nazw z tego parametru. Gdy parametry przestrzenne lub typ jednostki w drugim podejściu nie wskazują na przestrzeń główną, to wtedy działanie tej funkcji jest podobne do {{Code|{{sr|#p["Nazwa przedmiotowej przestrzeni nazw"](frame,...)|p=Pudełko}}}}. Definicja skrótowa funkcji: <syntaxhighlight lang="lua"> p["Nazwa przedmiotowej przestrzeni nazw 2"]=function(frame,czy_uwzglednic_alternatywna_nazwe,i)...end; </syntaxhighlight> Wtedy ciało funkcji tej, czyli jego definicja w środku, jest: <syntaxhighlight lang="lua"> local pudelko_pomocne_modul=require("Module:Pudełko/Pomocne"); return pudelko_pomocne_modul.Nazwa_przestrzeni_nazw_przedmiotowa_dyskusji_2(frame,czy_uwzglednic_alternatywna_nazwe,i,"przedmiotowa"); </syntaxhighlight> Parametry funkcji: * {{Code|frame}} - tablica ramki tablicy transportu, * {{Code|czy_uwzglednic_alternatywna_nazwe}} - czy ma uwzględniać nazwę przestrzeni nazw domyślną szablonu, dostępne wartości: {{Code|false}}, w której nazwa domyślna nie jest uwzględniana wtedy, oraz {{Code|nil}} i {{Code|true}}, które oznaczają to samo, w tym jeżeli ona jest uwzględniana, wtedy jest brany parametr pierwszy dziecka, który musi istnieć przy takiej wartości tego parametru, tzn. {{Code|{{m|Pudełko|Nazwa przedmiotowej przestrzeni nazw 2|Szablon}}}}, a nazwa uzyskana nazwy przestrzeni nazw jest w takim przypadku błędna, a jeżeli nazwa domyślna jest błędna, czyli {{Code|{{m|Pudełko|Nazwa przedmiotowej przestrzeni nazw 2|Moja przestrzeń}}}}, wtedy funkcja zwraca stan błędu {{Code|(błąd)}}. * {{Code|i}} - numer zmiennej nazwy przestrzeni nazw. Funkcja wykorzystuje {{Code|{{sr|#p.Nazwa_przestrzeni_nazw_przedmiotowa_dyskusji_2(frame,...)|p=Pudełko/Pomocne}}}} do wyznaczania ogólnego nazwy przestrzeni nazw dla pozycji bazowej i numerkowej, tzn. dla pozycji: jeden, dwa, trzy,..., itd, i ich ogólnej. Parametr ramki tablicy transportu rodzica szablonu: * {{Code|nazwa przestrzeni nazw}}, {{Code|nazwa przestrzeni nazw 1}}, {{Code|nazwa przestrzeni nazw 2}}, {{Code|nazwa przestrzeni nazw 3}},..., {{Code|nazwa przestrzeni nazw i}} - nazwy przestrzeni nazw dla pozycji bazowej oraz zwykłej i ogólnej numerkowej, * {{Code|nazwa jednostki}}, {{Code|nazwa jednostki 1}}, {{Code|nazwa jednostki 2}}, {{Code|nazwa jednostki 3}},... - nazwy jednostek dla pozycji bazowej i numerkowej, * {{Code|typ jednostki}}, {{Code|typ jednostki 1}}, {{Code|typ jednostki 2}}, {{Code|typ jednostki 3}},..., {{Code|typ jednostki i}} - typy jednostek, którym odpowiadają pewne przestrzenie przedmiotowe, dla pozycji bazowej, numerkowej i ogólnej. Parametry ramki tablicy transportu dziecka: * Parametry dziecka są takie same jak rodzica dla funkcji pudełkowej plus tu wymienione, * {{Code|numer jednostki}} - jak parametr {{Code|i}} nie został ustawiony, to wtedy liczy się ta zmienna. Przykłady: <syntaxhighlight lang="mediawiki"> {{Nazwa szablonu|nazwa przestrzeni nazw=Wikibooks|nazwa przestrzeni nazw 1=Szablon|nazwa przestrzeni nazw i=|nazwa jednostki 2=Dyskusja Wikibooks:Strona}} </syntaxhighlight> W dziecku powiedzmy jest wywołanie, i szukamy nazwy przestrzeni nazw o numerze dwa, która została podana, ale istnieje za to jej wersji ogólna {{Code|nazwa przestrzeni nazw i}} i domyślna {{Code|nazwa przestrzeni nazw}}, ale wtedy dla tego numerkowego liczy się to ogólne z {{Code| i}}, a ponieważ ta nazwa jest pusta, więc będziemy liczyli nazwę przestrzeni nazw z {{Code|nazwa jednostki 2}}: <syntaxhighlight lang="mediawiki"> {{#invoke:Pudełko|Nazwa przedmiotowej przestrzeni nazw 2|numer jednostki=2}} </syntaxhighlight> Na podstawie powyższego przykładu otrzymamy wynik o schemacie, nie wyniku, bo tam nie ma zmiennej {{Code|nazwa przestrzeni nazw 1}}, ale jest {{Code|nazwa przestrzeni nazw i}}: <syntaxhighlight lang="mediawiki"> <!-- Ale nie "nazwa przestrzeni nazw 2", bo jej nie ma, ale za to istnieje "nazwa przestrzeni nazw i"; --> <!-- nazwa przestrzeni nazw 2=nazwa przestrzeni nazw i="", a nazwa jednostki 2="Dyskusja Wikibooks:Strona"; --> <!-- Czyli wynik: --> Wikibooks <!-- Widzimy, że wygenerowała się nazwa przestrzeni nazw, którą jest przestrzeń nieprogramowa, ale projektu, wychodząca z nazwy jednostek w tym przypadku z "nazwa jednostki 2"; --> </syntaxhighlight> Nie jest brana w tym powyższym przykładzie zmienna {{Code|nazwa przestrzeni nazw}}, bo jej nie ma, ale za to jest {{Code|nazwa przestrzeni nazw i}}, bo ona występuje jako parametr domyślny ogólny dla parametrów numerkowych. Tytaj jest używana jest zmienna {{Code|nazwa jednostki 2}} do wygenerowania ostatecznego wyniku, bo jak można zauważyć, parametry przestrzenne wskazują na przestrzeń główną, a nazwy jednostek już nie. Przykłady w wikikodzie: * {{Code|{{m|Pudełko|Nazwa przedmiotowej przestrzeni nazw 2|numer jednostki{{=}}2}}}} → {{Tt|{{#invoke:Pudełko|Nazwa przedmiotowej przestrzeni nazw 2|numer jednostki=2}}}} * {{Code|{{m|Pudełko|Nazwa przedmiotowej przestrzeni nazw 2|Dyskusja szablonu|nazwa przestrzeni nazw i{{=}}Moja przestrzeń|numer jednostki{{=}}2}}}} → {{Tt|{{#invoke:Pudełko|Nazwa przedmiotowej przestrzeni nazw 2|Dyskusja szablonu|nazwa przestrzeni nazw i=Moja przestrzeń|numer jednostki=2}}}} * {{Code|{{m|Pudełko|Nazwa przedmiotowej przestrzeni nazw 2|nazwa przestrzeni nazw 2{{=}}Dyskusja|nazwa jednostki 2{{=}}Dyskusja szablonu:Strona|numer jednostki{{=}}2}}}} → {{Tt|{{#invoke:Pudełko|Nazwa przedmiotowej przestrzeni nazw 2|nazwa przestrzeni nazw 2=Dyskusja|nazwa jednostki 2=Dyskusja szablonu:Strona|numer jednostki=2}}}} * {{Code|{{m|Pudełko|Nazwa przedmiotowej przestrzeni nazw 2|nazwa przestrzeni nazw i{{=}}Dyskusja|nazwa jednostki 2{{=}}Dyskusja szablonu:Strona|numer jednostki{{=}}2}}}} → {{Tt|{{#invoke:Pudełko|Nazwa przedmiotowej przestrzeni nazw 2|nazwa przestrzeni nazw i=Dyskusja|nazwa jednostki 2=Dyskusja szablonu:Strona|numer jednostki=2}}}} * {{Code|{{m|Pudełko|Nazwa przedmiotowej przestrzeni nazw 2|Dyskusja szablonu|nazwa przestrzeni nazw{{=}}Dyskusja|nazwa jednostki 2{{=}}Wikibooks:Strona|numer jednostki{{=}}2}}}} → {{Tt|{{#invoke:Pudełko|Nazwa przedmiotowej przestrzeni nazw 2|Dyskusja szablonu|nazwa przestrzeni nazw=Dyskusja|nazwa jednostki 2=Dyskusja Wikibooks:Strona|numer jednostki=2}}}} Powyżej dla przykładu podano parametry nie w rodzicu w szablonie, tylko w dziecku, jeśli chodzi o parametry nazw przestrzeni nazw i nazw jednostek, ale ich się za to nie powinno podawać w tych ramach, tylko w szablonach, w których wywoływane są te ramki pudełek {{Code|{{m|Pudełko}}}}, ale tak tutaj tak zrobiono by było najłatwiej sprawdzić działanie tego typu funkcji. Analogicznie możemy podawać parametry typu jednostki, np.: wywołaniu modułowym {{Code|{{m|Pudełko|Nazwa przedmiotowej przestrzeni nazw 2|typ jednostki 2{{=}}Podręcznik|nazwa jednostki 2{{=}}Dyskusja szablonu:Strona|numer jednostki{{=}}2}}}} (ale wtedy jest brana przestrzeń nazw z nazwy jednostki), ale o tym więcej w rozdziałach {{Code|{{sr|# p["Przedmiotowy typ jednostki 2"](frame,i)|p=Pudełko}}}} w „{{sr|#Funkcje typu jednostki|p=Pudełko}}”, on definiuje przestrzenie przedmiotowe, ale można użyć parametru dyskusji typu jednostki z wartością niepustą, pustą, czy nawet jej nie podamy, wtedy wyświetli się nazwa przestrzeni nazw przedmiotowej. Jeżeli typ jednostki wskazuje na przestrzeń nazw główną, wtedy się liczą parametry nazw jednostek. Również parametry typu jednostki nie powinno się podawać w dziecku w ramce, tylko w rodzicu w szablonie jako parametry, w którym ta ramka jest wywoływana, ale tutaj podano jedynie dla przykładu, jak najłatwiej sprawdzić działanie tych parametrów tej funkcji. Najpierw w funkcji nagłówku brane są parametry nazw przestrzeni nazw, a jeżeli ich nie ma, to parametry typu jednostki, a jeżeli nie ma lub parametry przestrzenne wskazują na przestrzeń główną, i nie ma nazwy jednostki, to generowane są nazwy tej funkcji na podstawie aktualnej strony. === {{Code|p["Nazwa przestrzeni nazw dyskusji 2"](frame,...)}} === Funkcja pisze nazwę przestrzeni nazw dyskusji jakikolwiek nazwy przestrzeni nazw (tzn. nazwę dyskusji nazwy przestrzenie nazw, czyli nie przedmiotowej, zamieniana jest na nią samą, czyli identyfikator przestrzeni się nie zmienia, a przedmiotową, nie dyskusji, przekształca się na dyskusji jej odpowiadającą, czyli w tym przypadku identyfikator przestrzeni zwiększa się o numer więcej), według, i nie zawsze tylko, podanej w zmiennej {{Code|nazwa przestrzeni nazw}} dla pozycja bazowej w podanych parametrach szablonu rodzicu ramki dziecka, lub dla innej pozycji należy parametr podawać w formie {{Code|nazwa przestrzeni nazw 1}}, {{Code|nazwa przestrzeni nazw 2}}, {{Code|nazwa przestrzeni nazw 3}},..., lub te parametry można podać w postaci ogólnej {{Code|nazwa przestrzeni nazw i}}. W tej funkcji trzeba też podawać parametry nazwy jednostek {{Code|nazwa jednostki}}, {{Code|nazwa jednostki 1}}, {{Code|nazwa jednostki 2}}, {{Code|nazwa jednostki 3}},... Parametry podaje się w parametrach rodzica wywołania tej funkcji {{Code|{{m|Pudełko|Nazwa przestrzeni nazw dyskusji 2}}}} (ale ich nie trzeba podawać w dziecku, ale można) i w parametrach dziecka, jeśli chodzi o zmienną {{Code|numer jednostki}}, czyli np.: {{Code|{{m|Pudełko|Nazwa przestrzeni nazw dyskusji 2|numer jednostki{{=}}<jakaś liczba całkowita dodatnia>}}}}. Te parametry przestrzenne zamiast w rodzicu w szablonie można podać w ramce dziecka, wtedy parametry dziecka mają pierwszeństwo. Przestrzeń nazw z parametrów nazw przestrzennych po przekształceniu na przedmiotową może odpowiadać wartości przestrzeni głównej, to wtedy odpowiednia przestrzeń nazw z parametru nazwy jednostki się liczy w tej funkcji, wtedy jest liczona nazwa przestrzeni nazw z tego parametru. Gdy parametry przestrzenne lub typ jednostki w drugim podejściu nie wskazują na przestrzeń główną, to wtedy działanie tej funkcji jest podobne do {{Code|{{sr|#p["Nazwa dyskusji przestrzeni nazw"](frame,...)|p=Pudełko}}}}. Definicja skrótowa funkcji: <syntaxhighlight lang="lua"> p["Nazwa przestrzeni nazw dyskusji 2"]=function(frame,czy_uwzglednic_alternatywna_nazwe,i)...end; </syntaxhighlight> Wtedy ciało funkcji tej, czyli jego definicja w środku, jest: <syntaxhighlight lang="lua"> local pudelko_pomocne_modul=require("Module:Pudełko/Pomocne"); return pudelko_pomocne_modul.Nazwa_przestrzeni_nazw_przedmiotowa_dyskusji_2(frame,czy_uwzglednic_alternatywna_nazwe,i,"dyskusja"); </syntaxhighlight> Parametry funkcji: * {{Code|frame}} - tablica ramki tablicy transportu, * {{Code|czy_uwzglednic_alternatywna_nazwe}} - czy ma uwzględniać nazwę przestrzeni nazw domyślną szablonu, dostępne wartości: {{Code|false}}, w której nazwa domyślna nie jest uwzględniana wtedy, oraz {{Code|nil}} i {{Code|true}}, które oznaczają to samo, w tym jeżeli ona jest uwzględniana, wtedy jest brany parametr pierwszy dziecka, który musi istnieć przy takiej wartości tego parametru, tzn. {{Code|{{m|Pudełko|Nazwa przestrzeni nazw dyskusji 2|Szablon}}}}, a nazwa uzyskana nazwy przestrzeni nazw jest w takim przypadku błędna, a jeżeli nazwa domyślna jest błędna, czyli {{Code|{{m|Pudełko|Nazwa przestrzeni nazw dyskusji 2|Moja przestrzeń}}}}, wtedy funkcja zwraca stan błędu {{Code|(błąd)}}. * {{Code|i}} - numer zmiennej nazwy przestrzeni nazw. Funkcja wykorzystuje {{Code|{{sr|#p.Nazwa_przestrzeni_nazw_przedmiotowa_dyskusji_2(frame,...)|p=Pudełko/Pomocne}}}} do wyznaczania ogólnego nazwy przestrzeni nazw dla pozycji bazowej i numerkowej, tzn. dla pozycji: jeden, dwa, trzy,..., itd, i ich ogólnej. Parametr ramki tablicy transportu rodzica szablonu: * {{Code|nazwa przestrzeni nazw}}, {{Code|nazwa przestrzeni nazw 1}}, {{Code|nazwa przestrzeni nazw 2}}, {{Code|nazwa przestrzeni nazw 3}},..., {{Code|nazwa przestrzeni nazw i}} - nazwy przestrzeni nazw dla pozycji bazowej oraz zwykłej i ogólnej numerkowej, * {{Code|nazwa jednostki}}, {{Code|nazwa jednostki 1}}, {{Code|nazwa jednostki 2}}, {{Code|nazwa jednostki 3}},... - nazwy jednostek dla pozycji bazowej i numerkowej, * {{Code|typ jednostki}}, {{Code|typ jednostki 1}}, {{Code|typ jednostki 2}}, {{Code|typ jednostki 3}},..., {{Code|typ jednostki i}} - typy jednostek, którym odpowiadają pewne przestrzenie przedmiotowe, dla pozycji bazowej, numerkowej i ogólnej. Parametry ramki tablicy transportu dziecka: * Parametry dziecka są takie same jak rodzica dla funkcji pudełkowej plus tu wymienione, * {{Code|numer jednostki}} - jak parametr {{Code|i}} nie został ustawiony, to wtedy liczy się ta zmienna. Przykłady: <syntaxhighlight lang="mediawiki"> {{Nazwa szablonu|nazwa przestrzeni nazw=Wikibooks|nazwa przestrzeni nazw 1=Szablon|nazwa przestrzeni nazw i=|nazwa jednostki 2=Wikibooks:Strona}} </syntaxhighlight> W dziecku powiedzmy jest wywołanie, i szukamy nazwy przestrzeni nazw o numerze dwa, która została podana, ale istnieje za to jej wersji ogólna {{Code|nazwa przestrzeni nazw i}} i domyślna {{Code|nazwa przestrzeni nazw}}, ale wtedy dla tego numerkowego liczy się to ogólne z {{Code| i}}, a ponieważ ta nazwa jest pusta, więc będziemy liczyli nazwę przestrzeni nazw z {{Code|nazwa jednostki 2}}: <syntaxhighlight lang="mediawiki"> {{#invoke:Pudełko|Nazwa przestrzeni nazw dyskusji 2|numer jednostki=2}} </syntaxhighlight> Na podstawie powyższego przykładu otrzymamy wynik o schemacie, nie wyniku, bo tam nie ma zmiennej {{Code|nazwa przestrzeni nazw 1}}, ale jest {{Code|nazwa przestrzeni nazw i}}: <syntaxhighlight lang="mediawiki"> <!-- Ale nie "nazwa przestrzeni nazw 2", bo jej nie ma, ale za to istnieje "nazwa przestrzeni nazw i"; --> <!-- nazwa przestrzeni nazw 2=nazwa przestrzeni nazw i="", a nazwa jednostki 2="Wikibooks:Strona"; --> <!-- Czyli wynik: --> Dyskusja Wikibooks <!-- Widzimy, że wygenerowała się nazwa przestrzeni nazw, którą jest przestrzeń nieprogramowa, ale dyskusji projektu, wychodząca z nazwy jednostek w tym przypadku z "nazwa jednostki 2"; --> </syntaxhighlight> Nie jest brana w tym powyższym przykładzie zmienna {{Code|nazwa przestrzeni nazw}}, bo jej nie ma, ale za to jest {{Code|nazwa przestrzeni nazw i}}, bo ona występuje jako parametr domyślny ogólny dla parametrów numerkowych. Tytaj jest używana jest zmienna {{Code|nazwa jednostki 2}} do wygenerowania ostatecznego wyniku, bo jak można zauważyć, parametry przestrzenne wskazują na przestrzeń główną, a nazwy jednostek już nie. Przykłady w wikikodzie: * {{Code|{{m|Pudełko|Nazwa przestrzeni nazw dyskusji 2|numer jednostki{{=}}2}}}} → {{Tt|{{#invoke:Pudełko|Nazwa przestrzeni nazw dyskusji 2|numer jednostki=2}}}} * {{Code|{{m|Pudełko|Nazwa przestrzeni nazw dyskusji 2|Szablon|nazwa przestrzeni nazw i{{=}}Moja przestrzeń|numer jednostki{{=}}2}}}} → {{Tt|{{#invoke:Pudełko|Nazwa przestrzeni nazw dyskusji 2|Szablon|nazwa przestrzeni nazw i=Moja przestrzeń|numer jednostki=2}}}} * {{Code|{{m|Pudełko|Nazwa przestrzeni nazw dyskusji 2|nazwa przestrzeni nazw 2{{=}}|nazwa jednostki 2{{=}}Szablon:Strona|numer jednostki{{=}}2}}}} → {{Tt|{{#invoke:Pudełko|Nazwa przestrzeni nazw dyskusji 2|nazwa przestrzeni nazw 2=|nazwa jednostki 2=Szablon:Strona|numer jednostki=2}}}} * {{Code|{{m|Pudełko|Nazwa przestrzeni nazw dyskusji 2|nazwa przestrzeni nazw i{{=}}|nazwa jednostki 2{{=}}Szablon:Strona|numer jednostki{{=}}2}}}} → {{Tt|{{#invoke:Pudełko|Nazwa przestrzeni nazw dyskusji 2|nazwa przestrzeni nazw i=|nazwa jednostki 2=Szablon:Strona|numer jednostki=2}}}} * {{Code|{{m|Pudełko|Nazwa przestrzeni nazw dyskusji 2|Szablon|nazwa przestrzeni nazw{{=}}|nazwa jednostki 2{{=}}Wikibooks:Strona|numer jednostki{{=}}2}}}} → {{Tt|{{#invoke:Pudełko|Nazwa przestrzeni nazw dyskusji 2|Szablon|nazwa przestrzeni nazw=|nazwa jednostki 2=Dyskusja Wikibooks:Strona|numer jednostki=2}}}} Powyżej dla przykładu podano parametry nie w rodzicu w szablonie, tylko w dziecku, jeśli chodzi o parametry nazw przestrzeni nazw i nazw jednostek, ale ich się za to nie powinno podawać w tych ramach, tylko w szablonach, w których wywoływane są te ramki pudełek {{Code|{{m|Pudełko}}}}, ale tak tutaj tak zrobiono by było najłatwiej sprawdzić działanie tego typu funkcji. Analogicznie możemy podawać parametry typu jednostki, np.: wywołaniu modułowym {{Code|{{m|Pudełko|Nazwa przestrzeni nazw dyskusji 2|typ jednostki 2{{=}}Podręcznik|nazwa jednostki 2{{=}}Szablon:Strona|numer jednostki{{=}}2}}}} (ale wtedy jest brana przestrzeń nazw z nazwy jednostki), ale o tym więcej w rozdziałach {{Code|{{sr|# p["Dyskusyjny typ jednostki 2"](frame,i)|p=Pudełko}}}} w „{{sr|#Funkcje typu jednostki|p=Pudełko}}”, on definiuje przestrzenie dyskusji, ale można użyć parametru dyskusji typu jednostki z obojętnie jaką wartością niepustą, czy pustą, czy nawet jej nie podamy, wtedy wyświetli się nazwa przestrzeni nazw dyskusji. Jeżeli typ jednostki wskazuje na przestrzeń nazw główną, wtedy się liczą parametry nazw jednostek. Również parametry typu jednostki nie powinno się podawać w dziecku w ramce, tylko w rodzicu w szablonie jako parametry, w którym ta ramka jest wywoływana, ale tutaj podano jedynie dla przykładu, jak najłatwiej sprawdzić działanie tych parametrów tej funkcji. Najpierw w funkcji nagłówku brane są parametry nazw przestrzeni nazw, a jeżeli ich nie ma, to parametry typu jednostki, a jeżeli nie ma lub parametry przestrzenne wskazują na przestrzeń główną, i nie ma nazwy jednostki, to generowane są nazwy tej funkcji na podstawie aktualnej strony. == Funkcje pełnych nazw jednostki == === {{Code|p["Pełna nazwa dyskusji jednostki"](frame,i)}} === === {{Code|p["Pełna nazwa przedmiotowa jednostki"](frame,i)}} === === {{Code|p["Pełna nazwa jednostki"](frame,i)}} === == Funkcje pełnych nazw jednostki drugiej wersji == === {{Code|p["Pełna nazwa dyskusji jednostki 2"](frame,i)}} === === {{Code|p["Pełna nazwa przedmiotowa jednostki 2"](frame,i)}} === === {{Code|p["Pełna nazwa jednostki 2"](frame,i)}} === == Funkcje pełnych nazw jednostki trzeciej wersji == === {{Code|p["Pełna nazwa dyskusji jednostki 3"](frame,i)}} === === {{Code|p["Pełna nazwa przedmiotowa jednostki 3"](frame,i)}} === === {{Code|p["Pełna nazwa jednostki 3"](frame,i)}} === == Funkcje nazw jednostki == === {{Code|p["Nazwa jednostki"](frame,i)}} === == Funkcje nazw jednostki drugiej wersji == === {{Code|p["Nazwa jednostki 2"](frame,i)}} === === {{Code|p["Nazwa przedmiotowa jednostki 2"](frame,i)}} === === {{Code|p["Nazwa dyskusji jednostki 2"](frame,i)}} === == Funkcje nazw przestrzeni nazw trzeciej wersji == === {{Code|p["Nazwa przestrzeni nazw 3"](frame,i)}} === Funkcja pisze nazwę przestrzeni nazw, niezależnie, czy to jest przedmiotowa, czy dyskusji, według, i nie zawsze tylko, podanej w zmiennej {{Code|nazwa przestrzeni nazw}} dla pozycja bazowej w podanych parametrach szablonu rodzicu ramki dziecka, lub dla innej pozycji należy parametr podawać w formie {{Code|nazwa przestrzeni nazw 1}}, {{Code|Nazwa przestrzeni nazw 3}}, {{Code|nazwa przestrzeni nazw 3}},..., lub te parametry można podać w postaci ogólnej {{Code|nazwa przestrzeni nazw i}}. W tej funkcji trzeba też podawać parametry nazwy jednostek {{Code|nazwa jednostki}}, {{Code|nazwa jednostki 1}}, {{Code|nazwa jednostki 2}}, {{Code|nazwa jednostki 3}},... Parametry podaje się w parametrach rodzica wywołania tej funkcji {{Code|{{m|Pudełko|Nazwa przestrzeni nazw 3}}}} (ale ich nie trzeba podawać w dziecku, ale można) i w parametrach dziecka, jeśli chodzi o zmienną {{Code|numer jednostki}}, czyli np.: {{Code|{{m|Pudełko|Nazwa przestrzeni nazw 3|numer jednostki{{=}}<jakaś liczba całkowita dodatnia>}}}}. Te parametry przestrzenne zamiast w rodzicu w szablonie można podać w ramce dziecka, wtedy parametry dziecka mają pierwszeństwo. Przestrzeń nazw z parametrów nazw przestrzennych bazowych (bez numerka) może odpowiadać wartości przestrzeni głównej, to wtedy odpowiednia przestrzeń nazw z parametru nazwy jednostki się nie liczy w tej funkcji, aby się liczyła należy użyć funkcji {{Code|{{sr|#p["Nazwa przestrzeni nazw"](frame,...)|p=Pudełko}}}}. Przestrzeń nazw z parametrów nazw przestrzennych numerkowych może odpowiadać wartości przestrzeni głównej, to wtedy odpowiednia przestrzeń nazw z parametru nazwy jednostki się liczy w tej funkcji, wtedy jest liczona nazwa przestrzeni nazw z tego parametru. Gdy parametry przestrzenne lub typ jednostki w drugim podejściu nie wskazują na przestrzeń główną, to wtedy działanie tej funkcji jest podobne do {{Code|{{sr|#p["Nazwa przestrzeni nazw 2"](frame,...)|p=Pudełko}}}}. Definicja skrótowa funkcji: <syntaxhighlight lang="lua"> p["Nazwa przestrzeni nazw 3"]=function(frame,czy_uwzglednic_alternatywna_nazwe,i)...end; </syntaxhighlight> Wtedy ciało funkcji tej, czyli jego definicja w środku, jest: <syntaxhighlight lang="lua"> -- Jest liczony numer parametru nazwy przestrzeni nazw, domyslnie chodzi tu o numer bazowy parametrów przestrzennych; local numer_jednostki=i or frame.args["numer jednostki"]; local liczba_numeru_jednostki=((numer_jednostki)and(tonumber(numer_jednostki)) or 0); local pudelko_pomocne_modul=require("Module:Pudełko/Pomocne"); -- Liczy nazwę przestrzeni nazw dyskusji na podstawie podanych parametrów; return pudelko_pomocne_modul.Uzyskanie_nazw_jednostki(frame,0,liczba_numeru_jednostki,nil,2); </syntaxhighlight> Parametry funkcji: * {{Code|frame}} - tablica ramki tablicy transportu, * {{Code|czy_uwzglednic_alternatywna_nazwe}} - czy ma uwzględniać nazwę przestrzeni nazw domyślną szablonu, dostępne wartości: {{Code|false}}, w której nazwa domyślna nie jest uwzględniana wtedy, oraz {{Code|nil}} i {{Code|true}}, które oznaczają to samo, w tym jeżeli ona jest uwzględniana, wtedy jest brany parametr pierwszy dziecka, który musi istnieć przy takiej wartości tego parametru, tzn. {{Code|{{m|Pudełko|Nazwa przestrzeni nazw 3|Szablon}}}}, a nazwa uzyskana nazwy przestrzeni nazw jest w takim przypadku błędna, a jeżeli nazwa domyślna jest błędna, czyli {{Code|{{m|Pudełko|Nazwa przestrzeni nazw 3|Moja przestrzeń}}}}, wtedy funkcja zwraca stan błędu {{Code|(błąd)}}. * {{Code|i}} - numer zmiennej nazwy przestrzeni nazw. Funkcja wykorzystuje {{Code|{{sr|#p.Uzyskanie_nazw_jednostki(frame,...)|p=Pudełko/Pomocne}}}} do wyznaczania ogólnego nazwy przestrzeni nazw dla pozycji bazowej i numerkowej, tzn. dla pozycji: jeden, dwa, trzy,..., itd, i ich ogólnej. Parametr ramki tablicy transportu rodzica szablonu: * {{Code|nazwa przestrzeni nazw}}, {{Code|nazwa przestrzeni nazw 1}}, {{Code|Nazwa przestrzeni nazw 3}}, {{Code|nazwa przestrzeni nazw 3}},..., {{Code|nazwa przestrzeni nazw i}} - nazwy przestrzeni nazw dla pozycji bazowej oraz zwykłej i ogólnej numerkowej, * {{Code|nazwa jednostki}}, {{Code|nazwa jednostki 1}}, {{Code|nazwa jednostki 2}}, {{Code|nazwa jednostki 3}},... - nazwy jednostek dla pozycji bazowej i numerkowej, * {{Code|typ jednostki}}, {{Code|typ jednostki 1}}, {{Code|typ jednostki 2}}, {{Code|typ jednostki 3}},..., {{Code|typ jednostki i}} - typy jednostek, którym odpowiadają pewne przestrzenie przedmiotowe, dla pozycji bazowej, numerkowej i ogólnej, ** {{Code|dyskusja typu jednostki}}, {{Code|dyskusja typu jednostki 1}}, {{Code|dyskusja typ jednostki 2}}, {{Code|dyskusja typ jednostki 3}},..., {{Code|dyskusja typ jednostki i}} - czy dany typ jednostki ma przedstawiać, jeśli niepusta, przestrzeń dyskusji dla pozycji bazowej, numerkowej i ogólnej. Parametry ramki tablicy transportu dziecka: * Parametry dziecka są takie same jak rodzica dla funkcji pudełkowej plus tu wymienione, * {{Code|numer jednostki}} - jak parametr {{Code|i}} nie został ustawiony, to wtedy liczy się ta zmienna. Przykłady: <syntaxhighlight lang="mediawiki"> {{Nazwa szablonu 1|nazwa przestrzeni nazw=Wikibooks|nazwa przestrzeni nazw=|nazwa przestrzeni nazw i=|nazwajednostki=Szablon:Strona|nazwa jednostki 2=Wikibooks:Strona}} <hr /> {{Nazwa szablonu 2|nazwa przestrzeni nazw=Wikibooks|nazwa przestrzeni nazw 1=Szablon|nazwa przestrzeni nazw i=|nazwa jednostki 2=Wikibooks:Strona}} </syntaxhighlight> W dziecku powiedzmy jest wywołanie, i szukamy nazwy przestrzeni nazw o numerze dwa, która została podana, ale istnieje za to jej wersji ogólna {{Code|nazwa przestrzeni nazw i}} i domyślna {{Code|nazwa przestrzeni nazw}}, ale wtedy dla tego numerkowego liczy się to ogólne z {{Code| i}}, a ponieważ ta nazwa jest pusta, więc będziemy liczyli nazwę przestrzeni nazw z {{Code|nazwa jednostki 2}}: <syntaxhighlight lang="mediawiki"> {{#invoke:Pudełko|Nazwa przestrzeni nazw 3}} <hr /> {{#invoke:Pudełko|Nazwa przestrzeni nazw 3|numer jednostki=2}} </syntaxhighlight> Na podstawie powyższego przykładu otrzymamy wynik o schemacie, nie wyniku, bo tam nie ma zmiennej {{Code|nazwa przestrzeni nazw 1}}, ale jest {{Code|nazwa przestrzeni nazw i}}: <syntaxhighlight lang="mediawiki"> <!-- Ale nie "nazwa przestrzeni nazw""; --> <!-- nazwa przestrzeni nazw=""; --> <!-- Czyli wynik: --> <!-- wynik pusty --> <!-- Widzimy, że wygenerowała się nazwa przestrzeni nazw, którą jest przestrzeń nazw główna, jest ciągiem pustym: ""; --> <hr /> <!-- Ale nie "Nazwa przestrzeni nazw 2", bo jej nie ma, ale za to istnieje "nazwa przestrzeni nazw i"; --> <!-- nazwa przestrzeni nazw 2=nazwa przestrzeni nazw i="", a nazwa jednostki 2="Wikibooks:Strona"; --> <!-- Czyli wynik: --> Wikibooks <!-- Widzimy, że wygenerowała się nazwa przestrzeni nazw, którą jest przestrzeń nieprogramowa, ale projektu, wychodząca z nazwy jednostek w tym przypadku z "nazwa jednostki 2"; --> </syntaxhighlight> Dla parametrów numerkowych nie jest brana w tym powyższym przykładzie zmienna {{Code|nazwa przestrzeni nazw 2}}, bo jej nie ma, ale za to jest {{Code|nazwa przestrzeni nazw i}}, bo ona występuje jako parametr domyślny ogólny dla parametrów numerkowych. Tytaj jest używana jest zmienna {{Code|nazwa jednostki 2}} do wygenerowania ostatecznego wyniku, bo jak można zauważyć, parametry przestrzenne wskazują na przestrzeń główną, a nazwy jednostek już nie. Dla parametrów bazowych mamy zmienna {{Code|nazwa przestrzeni nazw}}, ona jest pusta, więc to zostanie wziete do ostatecznego wyniku. Przykłady w wikikodzie: * {{Code|{{m|Pudełko|Nazwa przestrzeni nazw 3|nazwa przestrzeni nazw{{=}}|nazwa jednostki{{=}}Wikibooks:Strona}}}} → {{Tt|{{#invoke:Pudełko|Nazwa przestrzeni nazw 3|nazwa przestrzeni nazw=|nazwa jednostki=Wikibooks:Szablon}}}} * {{Code|{{m|Pudełko|Nazwa przestrzeni nazw 3|nazwa przestrzeni nazw 2{{=}}|nazwa jednostki 2{{=}}Wikibooks:Strona|numer jednostki{{=}}2}}}} → {{Tt|{{#invoke:Pudełko|Nazwa przestrzeni nazw 3|nazwa przestrzeni nazw 2=|nazwa jednostki 2=Wikibooks:Szablon|numer jednostki=2}}}} Powyżej dla przykładu podano parametry nie w rodzicu w szablonie, tylko w dziecku, jeśli chodzi o parametry nazw przestrzeni nazw i nazw jednostek, ale ich się za to nie powinno podawać w tych ramach, tylko w szablonach, w których wywoływane są te ramki pudełek {{Code|{{m|Pudełko}}}}, ale tak tutaj tak zrobiono by było najłatwiej sprawdzić działanie tego typu funkcji. Analogicznie możemy podawać parametry typu jednostki, np.: wywołaniu modułowym {{Code|{{m|Pudełko|Nazwa przestrzeni nazw 3|typ jednostki 2{{=}}Podręcznik|nazwa jednostki 2{{=}}Szablon:Strona|numer jednostki{{=}}2}}}} (ale wtedy jest brana przestrzeń nazw z nazwy jednostki), ale o tym więcej w rozdziałach {{Code|{{sr|#p["Typ jednostki 3"](frame,i)|p=Pudełko}}}} w „{{sr|#Funkcje typu jednostki|p=Pudełko}}”, on definiuje przestrzenie przedmiotowe, ale można użyć parametru dyskusji typu jednostki z wartością niepustą, wtedy wyświetli się nazwa przestrzeni nazw dyskusji. Jeżeli typ jednostki bazowy wskazuje na przestrzeń nazw główną, wtedy się nie liczą parametry nazw jednostek, a na numerkowy, wtedy się liczy. Również parametry typu jednostki nie powinno się podawać w dziecku w ramce, tylko w rodzicu w szablonie jako parametry, w którym ta ramka jest wywoływana, ale tutaj podano jedynie dla przykładu, jak najłatwiej sprawdzić działanie tych parametrów tej funkcji. Najpierw w funkcji nagłówku brane są parametry nazw przestrzeni nazw, a jeżeli ich nie ma, to parametry typu jednostki, a jeżeli nie ma lub parametry przestrzenne wskazują na przestrzeń główną, i nie ma nazwy jednostki, to generowane są nazwy tej funkcji na podstawie aktualnej strony. === {{Code|p["Nazwa przedmiotowej przestrzeni nazw 3"](frame,i)}} === Funkcja pisze przedmiotową nazwę przestrzeni nazw jakikolwiek nazwy przestrzeni nazw (tzn. nazwę przedmiotową nazwy przestrzenie nazw, czyli nie dyskusji, zamieniana jest na nią samą, czyli identyfikator przestrzeni się nie zmienia, a dyskusji, nie przedmiotową, przekształca się na przedmiotową jej odpowiadającą, czyli w tym przypadku identyfikator przestrzeni zmniejsza się o numer mniej), według podanej w zmiennej {{Code|nazwa przestrzeni nazw}} dla pozycja bazowej w podanych parametrach szablonu rodzicu ramki dziecka, lub dla innej pozycji należy parametr podawać w formie {{Code|nazwa przestrzeni nazw 1}}, {{Code|nazwa przestrzeni nazw 2}}, {{Code|nazwa przestrzeni nazw 3}},..., lub te parametry można podać w postaci ogólnej {{Code|nazwa przestrzeni nazw i}}. Parametry podaje się w parametrach rodzica wywołania tej funkcji {{Code|{{m|Pudełko|Nazwa przedmiotowej przestrzeni nazw 3}}}} (ale ich nie trzeba podawać w dziecku, ale można) i w parametrach dziecka, jeśli chodzi o zmienną {{Code|numer jednostki}}, czyli np.: {{Code|{{m|Pudełko|Nazwa przedmiotowej przestrzeni nazw 3|numer jednostki{{=}}<jakaś liczba całkowita dodatnia>}}}}. Te parametry przestrzenne zamiast w rodzicu w szablonie można podać w ramce dziecka, wtedy parametry dziecka mają pierwszeństwo. Parametry przestrzenne mogą mogą być podane w postaci przestrzeni przedmiotowej lub dyskusji, ale ta funkcja zawsze ją zamienia na przedmiotową. Przestrzeń nazw z parametrów nazw przestrzennych bazowych (bez numerka) może odpowiadać wartości przestrzeni głównej, to wtedy odpowiednia przestrzeń nazw z parametru nazwy jednostki się nie liczy w tej funkcji, aby się liczyła należy użyć funkcji {{Code|{{sr|#p["Nazwa przedmiotowej przestrzeni nazw"](frame,...)|p=Pudełko}}}}. Przestrzeń nazw z parametrów nazw przestrzennych numerkowych może odpowiadać wartości przestrzeni głównej, to wtedy odpowiednia przestrzeń nazw z parametru nazwy jednostki się liczy w tej funkcji, wtedy jest liczona nazwa przestrzeni nazw z tego parametru. Gdy parametry przestrzenne lub typ jednostki w drugim podejściu nie wskazują na przestrzeń główną, to wtedy działanie tej funkcji jest podobne do {{Code|{{sr|#p["Nazwa przedmiotowej przestrzeni nazw 2"](frame,...)|p=Pudełko}}}}. Definicja skrótowa funkcji: <syntaxhighlight lang="lua"> p["Nazwa przedmiotowej przestrzeni nazw 3"]=function(frame,czy_uwzglednic_alternatywna_nazwe,i)...end; </syntaxhighlight> Wtedy ciało funkcji tej, czyli jego definicja w środku, jest: <syntaxhighlight lang="lua"> -- Jest liczony numer parametru nazwy przestrzeni nazw, domyslnie chodzi tu o numer bazowy parametrów przestrzennych; local numer_jednostki=i or frame.args["numer jednostki"]; local liczba_numeru_jednostki=((numer_jednostki)and(tonumber(numer_jednostki)) or 0); local pudelko_pomocne_modul=require("Module:Pudełko/Pomocne"); -- Liczy nazwę przestrzeni nazw przedmiotową na podstawie podanych parametrów; return pudelko_pomocne_modul.Uzyskanie_nazw_jednostki(frame,1,liczba_numeru_jednostki,nil,1); </syntaxhighlight> Parametry funkcji: * {{Code|frame}} - tablica ramki tablicy transportu, * {{Code|czy_uwzglednic_alternatywna_nazwe}} - czy ma uwzględniać nazwę przestrzeni nazw domyślną szablonu, dostępne wartości: {{Code|false}}, w której nazwa domyślna nie jest uwzględniana wtedy, oraz {{Code|nil}} i {{Code|true}}, które oznaczają to samo, w tym jeżeli ona jest uwzględniana, wtedy jest brany parametr pierwszy dziecka, który musi istnieć przy takiej wartości tego parametru, tzn. {{Code|{{m|Pudełko|Nazwa przedmiotowej przestrzeni nazw 3|Dyskusja szablonu}}}} - ta nazwa domyślna zostanie zamieniona na przedmiotową, a jak ona by była przedmiotowa, to żadnej zamiany by nie było, a nazwa uzyskana z nazwy przestrzeni nazw z parametrów przestrzennych jest w takim przypadku błędna, to w takim razie brany jest ten parametr, a jeżeli ta nazwa domyślna jest błędna, czyli {{Code|{{m|Pudełko|Nazwa przedmiotowej przestrzeni nazw 3|Moja przestrzeń}}}}, wtedy funkcja zwraca stan błędu {{Code|(błąd)}}. * {{Code|i}} - numer zmiennej nazwy przestrzeni nazw. Funkcja wykorzystuje {{Code|{{sr|#p.Uzyskanie_nazw_jednostki(frame,...)|p=Pudełko/Pomocne}}}} do wyznaczania ogólnego nazwy przestrzeni nazw dla pozycji bazowej i numerkowej, tzn. dla pozycji: jeden, dwa, trzy,..., itd, i ich ogólnej. Parametr ramki tablicy transportu rodzica szablonu: * {{Code|nazwa przestrzeni nazw}}, {{Code|nazwa przestrzeni nazw 1}}, {{Code|nazwa przestrzeni nazw 2}}, {{Code|nazwa przestrzeni nazw 3}},..., {{Code|nazwa przestrzeni nazw i}} - nazwy przestrzeni nazw dla pozycji bazowej oraz zwykłej i ogólnej numerkowej, * {{Code|typ jednostki}}, {{Code|typ jednostki 1}}, {{Code|typ jednostki 2}}, {{Code|typ jednostki 3}},..., {{Code|typ jednostki i}} - typy jednostek, którym odpowiadają pewne przestrzenie przedmiotowe, dla pozycji bazowej, numerkowej i ogólnej. Parametry ramki tablicy transportu dziecka: * Parametry dziecka są takie same jak rodzica dla funkcji pudełkowej plus tu wymienione, * {{Code|numer jednostki}} - jak parametr {{Code|i}} nie został ustawiony, to wtedy liczy się ta zmienna. Przykłady: <syntaxhighlight lang="mediawiki"> {{Nazwa szablonu 1|nazwa przestrzeni nazw=Wikibooks|nazwa przestrzeni nazw=|nazwa przestrzeni nazw i=|nazwa jednostki=Dyskusja Wikibooks:Strona}} <hr /> {{Nazwa szablonu 2|nazwa przestrzeni nazw=Wikibooks|nazwa przestrzeni nazw 1=Szablon|nazwa przestrzeni nazw i=|nazwa jednostki 2=Dyskusja Wikibooks:Strona}} </syntaxhighlight> Kolejno wywołania te są równowaażne: <syntaxhighlight lang="mediawiki"> {{#invoke:Pudełko|Nazwa przedmiotowej przestrzeni nazw 3}} <hr /> {{#invoke:Pudełko|Nazwa przedmiotowej przestrzeni nazw 3|numer jednostki=2}} </syntaxhighlight> Na podstawie powyższego przykładu otrzymamy wynik o schemacie, nie wyniku, bo tam nie ma zmiennej {{Code|nazwa przestrzeni nazw 1}}, ale jest {{Code|nazwa przestrzeni nazw i}}: <syntaxhighlight lang="mediawiki"> <!-- Ale nie "nazwa przestrzeni nazw""; --> <!-- nazwa przestrzeni nazw=""; --> <!-- Czyli wynik: --> <!-- wynik pusty --> <!-- Widzimy, że wygenerowała się nazwa przestrzeni nazw, którą jest przestrzeń nazw główna, jest ciągiem pustym: ""; --> <hr /> <!-- Ale nie "Nazwa przestrzeni nazw 2", bo jej nie ma, ale za to istnieje "nazwa przestrzeni nazw i"; --> <!-- nazwa przestrzeni nazw 2=nazwa przestrzeni nazw i="", a nazwa jednostki 2="Dyskusja Wikibooks:Strona"; --> <!-- Czyli wynik: --> Wikibooks <!-- Widzimy, że wygenerowała się nazwa przestrzeni nazw, którą jest przestrzeń nieprogramowa, ale projektu, wychodząca z nazwy jednostek w tym przypadku z "nazwa jednostki 2"; --> </syntaxhighlight> Dla parametrów numerkowych nie jest brana w tym powyższym przykładzie zmienna {{Code|nazwa przestrzeni nazw 2}}, bo jej nie ma, ale za to jest {{Code|nazwa przestrzeni nazw i}}, bo ona występuje jako parametr domyślny ogólny dla parametrów numerkowych. Tytaj jest używana jest zmienna {{Code|nazwa jednostki 2}} do wygenerowania ostatecznego wyniku, bo jak można zauważyć, parametry przestrzenne wskazują na przestrzeń główną, a nazwy jednostek już nie. Dla parametrów bazowych mamy zmienna {{Code|nazwa przestrzeni nazw}}, ona jest pusta, więc to zostanie wziete do ostatecznego wyniku. Przykłady w wikikodzie: * {{Code|{{m|Pudełko|Nazwa przestrzeni nazw 3|nazwa przestrzeni nazw{{=}}|nazwa jednostki{{=}}Dyskusja Wikibooks:Strona}}}} → {{Tt|{{#invoke:Pudełko|Nazwa przestrzeni nazw 3|nazwa przestrzeni nazw=|nazwa jednostki=Dyskusja Wikibooks:Szablon}}}} * {{Code|{{m|Pudełko|Nazwa przestrzeni nazw 3|nazwa przestrzeni nazw 2{{=}}|nazwa jednostki 2{{=}}Dyskusja Wikibooks:Strona|numer jednostki{{=}}2}}}} → {{Tt|{{#invoke:Pudełko|Nazwa przestrzeni nazw 3|nazwa przestrzeni nazw 2=|nazwa jednostki 2=Dyskusja Wikibooks:Szablon|numer jednostki=2}}}} Powyżej dla przykładu podano parametry nie w rodzicu w szablonie, tylko w dziecku, jeśli chodzi o parametry nazw przestrzeni nazw, ale ich się za to nie powinno podawać w tych ramach, tylko w szablonach, w których wywoływane są te ramki pudełek {{Code|{{m|Pudełko}}}}, ale tak tutaj tak zrobiono by było najłatwiej sprawdzić działanie tego typu funkcji. Analogicznie możemy podawać parametry typu jednostki, np.: wywołaniu modułowym {{Code|{{m|Pudełko|Nazwa przedmiotowej przestrzeni nazw 3|typ jednostki 2{{=}}strona szablonu|numer jednostki{{=}}2}}}}, ale o tym więcej w rozdziałach {{Code|{{sr|# p["Przedmiotowy typ jednostki 3"](frame,i)|p=Pudełko}}}} w „{{sr|#Funkcje typu jednostki|p=Pudełko}}”, ale wtedy ta sama nazwa przestrzeni nazw reprezentowana przez {{Parametr|typ jednostki 2|strona szablonu}}, jest zamieniana na to samo, lepiej jest tutaj używać parametrów przestrzennych nazw niż typu jednostki, bo typ jednostki ma taką samą wartość dla przestrzeni przedmiotowej, co dyskusji. Tutaj parametr dyskusji typu jednostki bazowy i numerkowy ogólny, czy szczegółowy, nie gra roli, bo nawet, gdy wygenerujemy nazwę przestrzeni dyskusji za pomoca tego parametru, to i tak otrzymamy na samym końcu jego nazwę przedmiotową. Jeżeli typ jednostki bazowy wskazuje na przestrzeń nazw główną, wtedy się nie liczą parametry nazw jednostek, a na numerkowy, wtedy się liczy. Również parametry typu jednostki nie powinno się podawać w dziecku w ramce, tylko w rodzicu w szablonie jako parametry, w którym ta ramka jest wywoływana, ale tutaj podano jedynie dla przykładu, jak najłatwiej sprawdzić działanie tych parametrów tej funkcji. Najpierw w funkcji nagłówku brane są parametry nazw przestrzeni nazw, a jeżeli ich nie ma, to parametry typu jednostki, a jeżeli nie ma, to generowane są nazwy na podstawie aktualnego modułu. === {{Code|p["Nazwa przestrzeni nazw dyskusji 3"](frame,i)}} === Funkcja pisze nazwę przestrzeni nazw dyskusji jakikolwiek nazwy przestrzeni nazw (tzn. nazwę dyskusji nazwy przestrzenie nazw, czyli nie przedmiotowej, zamieniana jest na nią samą, czyli identyfikator przestrzeni się nie zmienia, a przedmiotową, nie dyskusji, przekształca się na dyskusji jej odpowiadającą, czyli w tym przypadku identyfikator przestrzeni zwiększa się o numer więcej), według, i nie zawsze tylko, podanej w zmiennej {{Code|nazwa przestrzeni nazw}} dla pozycja bazowej w podanych parametrach szablonu rodzicu ramki dziecka, lub dla innej pozycji należy parametr podawać w formie {{Code|nazwa przestrzeni nazw 1}}, {{Code|nazwa przestrzeni nazw 2}}, {{Code|nazwa przestrzeni nazw 3}},..., lub te parametry można podać w postaci ogólnej {{Code|nazwa przestrzeni nazw i}}. W tej funkcji trzeba też podawać parametry nazwy jednostek {{Code|nazwa jednostki}}, {{Code|nazwa jednostki 1}}, {{Code|nazwa jednostki 2}}, {{Code|nazwa jednostki 3}},... Parametry podaje się w parametrach rodzica wywołania tej funkcji {{Code|{{m|Pudełko|Nazwa przestrzeni nazw dyskusji 3}}}} (ale ich nie trzeba podawać w dziecku, ale można) i w parametrach dziecka, jeśli chodzi o zmienną {{Code|numer jednostki}}, czyli np.: {{Code|{{m|Pudełko|Nazwa przestrzeni nazw dyskusji 3|numer jednostki{{=}}<jakaś liczba całkowita dodatnia>}}}}. Te parametry przestrzenne zamiast w rodzicu w szablonie można podać w ramce dziecka, wtedy parametry dziecka mają pierwszeństwo. Przestrzeń nazw z parametrów nazw przestrzennych bazowych (bez numerka) może odpowiadać wartości przestrzeni głównej, to wtedy odpowiednia przestrzeń nazw z parametru nazwy jednostki się nie liczy w tej funkcji, aby się liczyła należy użyć funkcji {{Code|{{sr|#p["Nazwa przestrzeni nazw dyskusji"](frame,...)|p=Pudełko}}}}. Przestrzeń nazw z parametrów nazw przestrzennych numerkowych może odpowiadać wartości przestrzeni głównej, to wtedy odpowiednia przestrzeń nazw z parametru nazwy jednostki się liczy w tej funkcji, wtedy jest liczona nazwa przestrzeni nazw z tego parametru. Gdy parametry przestrzenne lub typ jednostki w drugim podejściu nie wskazują na przestrzeń główną, to wtedy działanie tej funkcji jest podobne do {{Code|{{sr|#p["Nazwa przestrzeni nazw dysskusji 2"](frame,...)|p=Pudełko}}}}. Definicja skrótowa funkcji: <syntaxhighlight lang="lua"> p["Nazwa przestrzeni nazw dyskusji 3"]=function(frame,czy_uwzglednic_alternatywna_nazwe,i)...end; </syntaxhighlight> Wtedy ciało funkcji tej, czyli jego definicja w środku, jest: <syntaxhighlight lang="lua"> -- Jest liczony numer parametru nazwy przestrzeni nazw, domyslnie chodzi tu o numer bazowy parametrów przestrzennych; local numer_jednostki=i or frame.args["numer jednostki"]; local liczba_numeru_jednostki=((numer_jednostki)and(tonumber(numer_jednostki)) or 0); local pudelko_pomocne_modul=require("Module:Pudełko/Pomocne"); -- Liczy nazwę przestrzeni nazw dyskusji na podstawie podanych parametrów; return pudelko_pomocne_modul.Uzyskanie_nazw_jednostki(frame,2,liczba_numeru_jednostki,nil,1); </syntaxhighlight> Parametry funkcji: * {{Code|frame}} - tablica ramki tablicy transportu, * {{Code|czy_uwzglednic_alternatywna_nazwe}} - czy ma uwzględniać nazwę przestrzeni nazw domyślną szablonu, dostępne wartości: {{Code|false}}, w której nazwa domyślna nie jest uwzględniana wtedy, oraz {{Code|nil}} i {{Code|true}}, które oznaczają to samo, w tym jeżeli ona jest uwzględniana, wtedy jest brany parametr pierwszy dziecka, który musi istnieć przy takiej wartości tego parametru, tzn. {{Code|{{m|Pudełko|Nazwa przestrzeni nazw dyskusji 3|Szablon}}}}, a nazwa uzyskana nazwy przestrzeni nazw jest w takim przypadku błędna, a jeżeli nazwa domyślna jest błędna, czyli {{Code|{{m|Pudełko|Nazwa przestrzeni nazw dyskusji 3|Moja przestrzeń}}}}, wtedy funkcja zwraca stan błędu {{Code|(błąd)}}. * {{Code|i}} - numer zmiennej nazwy przestrzeni nazw. Funkcja wykorzystuje {{Code|{{sr|#p.Uzyskanie_nazw_jednostki(frame,...)|p=Pudełko/Pomocne}}}} do wyznaczania ogólnego nazwy przestrzeni nazw dla pozycji bazowej i numerkowej, tzn. dla pozycji: jeden, dwa, trzy,..., itd, i ich ogólnej. Parametr ramki tablicy transportu rodzica szablonu: * {{Code|nazwa przestrzeni nazw}}, {{Code|nazwa przestrzeni nazw 1}}, {{Code|nazwa przestrzeni nazw 2}}, {{Code|nazwa przestrzeni nazw 3}},..., {{Code|nazwa przestrzeni nazw i}} - nazwy przestrzeni nazw dla pozycji bazowej oraz zwykłej i ogólnej numerkowej, * {{Code|nazwa jednostki}}, {{Code|nazwa jednostki 1}}, {{Code|nazwa jednostki 2}}, {{Code|nazwa jednostki 3}},... - nazwy jednostek dla pozycji bazowej i numerkowej, * {{Code|typ jednostki}}, {{Code|typ jednostki 1}}, {{Code|typ jednostki 2}}, {{Code|typ jednostki 3}},..., {{Code|typ jednostki i}} - typy jednostek, którym odpowiadają pewne przestrzenie przedmiotowe, dla pozycji bazowej, numerkowej i ogólnej. Parametry ramki tablicy transportu dziecka: * Parametry dziecka są takie same jak rodzica dla funkcji pudełkowej plus tu wymienione, * {{Code|numer jednostki}} - jak parametr {{Code|i}} nie został ustawiony, to wtedy liczy się ta zmienna. Przykłady: <syntaxhighlight lang="mediawiki"> {{Nazwa szablonu 1|nazwa przestrzeni nazw=Wikibooks|nazwa przestrzeni nazw=|nazwa przestrzeni nazw i=|nazwajednostki=Szablon:Strona|nazwa jednostki 2=Wikibooks:Strona}} <hr /> {{Nazwa szablonu 2|nazwa przestrzeni nazw=Wikibooks|nazwa przestrzeni nazw 1=Szablon|nazwa przestrzeni nazw i=|nazwa jednostki 2=Wikibooks:Strona}} </syntaxhighlight> W dziecku powiedzmy jest wywołanie, i szukamy nazwy przestrzeni nazw o numerze dwa, która została podana, ale istnieje za to jej wersji ogólna {{Code|nazwa przestrzeni nazw i}} i domyślna {{Code|nazwa przestrzeni nazw}}, ale wtedy dla tego numerkowego liczy się to ogólne z {{Code| i}}, a ponieważ ta nazwa jest pusta, więc będziemy liczyli nazwę przestrzeni nazw z {{Code|nazwa jednostki 2}}: <syntaxhighlight lang="mediawiki"> {{#invoke:Pudełko|Nazwa przestrzeni nazw 3}} <hr /> {{#invoke:Pudełko|Nazwa przestrzeni nazw 3|numer jednostki=2}} </syntaxhighlight> Na podstawie powyższego przykładu otrzymamy wynik o schemacie, nie wyniku, bo tam nie ma zmiennej {{Code|nazwa przestrzeni nazw 1}}, ale jest {{Code|nazwa przestrzeni nazw i}}: <syntaxhighlight lang="mediawiki"> <!-- Ale nie "nazwa przestrzeni nazw""; --> <!-- nazwa przestrzeni nazw=""; --> <!-- Czyli wynik: --> Dyskusja <!-- Widzimy, że wygenerowała się nazwa przestrzeni nazw, którą jest przestrzeń nazw niegłówna, jest ciągiem niepustym; --> <hr /> <!-- Ale nie "Nazwa przestrzeni nazw 2", bo jej nie ma, ale za to istnieje "nazwa przestrzeni nazw i"; --> <!-- nazwa przestrzeni nazw 2=nazwa przestrzeni nazw i="", a nazwa jednostki 2="Wikibooks:Strona"; --> <!-- Czyli wynik: --> Dyskusja Wikibooks <!-- Widzimy, że wygenerowała się nazwa przestrzeni nazw, którą jest przestrzeń nieprogramowa, ale projektu, wychodząca z nazwy jednostek w tym przypadku z "nazwa jednostki 2"; --> </syntaxhighlight> Dla parametrów numerkowych nie jest brana w tym powyższym przykładzie zmienna {{Code|nazwa przestrzeni nazw 2}}, bo jej nie ma, ale za to jest {{Code|nazwa przestrzeni nazw i}}, bo ona występuje jako parametr domyślny ogólny dla parametrów numerkowych. Tytaj jest używana jest zmienna {{Code|nazwa jednostki 2}} do wygenerowania ostatecznego wyniku, bo jak można zauważyć, parametry przestrzenne wskazują na przestrzeń główną, a nazwy jednostek już nie. Dla parametrów bazowych mamy zmienna {{Code|nazwa przestrzeni nazw}}, ona jest pusta, więc to zostanie wziete do ostatecznego wyniku. Przykłady w wikikodzie: * {{Code|{{m|Pudełko|Nazwa przestrzeni nazw dyskusji 3|nazwa przestrzeni nazw{{=}}|nazwa jednostki{{=}}Wikibooks:Strona}}}} → {{Tt|{{#invoke:Pudełko|Nazwa przestrzeni nazw dyskusji 3|nazwa przestrzeni nazw=|nazwa jednostki=Wikibooks:Szablon}}}} * {{Code|{{m|Pudełko|Nazwa przestrzeni nazw dyskusji 3|nazwa przestrzeni nazw 2{{=}}|nazwa jednostki 2{{=}}Wikibooks:Strona|numer jednostki{{=}}2}}}} → {{Tt|{{#invoke:Pudełko|Nazwa przestrzeni nazw dyskusji 3|nazwa przestrzeni nazw 2=|nazwa jednostki 2=Wikibooks:Szablon|numer jednostki=2}}}} Powyżej dla przykładu podano parametry nie w rodzicu w szablonie, tylko w dziecku, jeśli chodzi o parametry nazw przestrzeni nazw i nazw jednostek, ale ich się za to nie powinno podawać w tych ramach, tylko w szablonach, w których wywoływane są te ramki pudełek {{Code|{{m|Pudełko}}}}, ale tak tutaj tak zrobiono by było najłatwiej sprawdzić działanie tego typu funkcji. Analogicznie możemy podawać parametry typu jednostki, np.: wywołaniu modułowym {{Code|{{m|Pudełko|Nazwa przestrzeni nazw dyskusji 3|typ jednostki 2{{=}}Podręcznik|nazwa jednostki 2{{=}}Szablon:Strona|numer jednostki{{=}}2}}}} (ale wtedy jest brana przestrzeń nazw z nazwy jednostki), ale o tym więcej w rozdziałach {{Code|{{sr|# p["Dyskusyjny typ jednostki 3"](frame,i)|p=Pudełko}}}} w „{{sr|#Funkcje typu jednostki|p=Pudełko}}”, on definiuje przestrzenie dyskusji, ale można użyć parametru dyskusji typu jednostki z obojętnie jaką wartością niepustą, czy pustą, czy nawet jej nie podamy, wtedy wyświetli się nazwa przestrzeni nazw dyskusji. Jeżeli typ jednostki bazowy wskazuje na przestrzeń nazw główną, wtedy się nie liczą parametry nazw jednostek, a na numerkowy, wtedy się liczy. Również parametry typu jednostki nie powinno się podawać w dziecku w ramce, tylko w rodzicu w szablonie jako parametry, w którym ta ramka jest wywoływana, ale tutaj podano jedynie dla przykładu, jak najłatwiej sprawdzić działanie tych parametrów tej funkcji. Najpierw w funkcji nagłówku brane są parametry nazw przestrzeni nazw, a jeżeli ich nie ma, to parametry typu jednostki, a jeżeli nie ma lub parametry przestrzenne wskazują na przestrzeń główną, i nie ma nazwy jednostki, to generowane są nazwy tej funkcji na podstawie aktualnej strony. == Funkcje nazw jednostki trzeciej wersji == === {{Code|p["Nazwa jednostki 3"](frame,i)}} === === {{Code|p["Nazwa przedmiotowa jednostki 3"](frame,i)}} === === {{Code|p["Nazwa dyskusji jednostki 3"](frame,i)}} === == Funkcje typu jednostki == === {{Code|p["Typ jednostki"](frame,i)}} === === {{Code|p["Typ jednostki 2"](frame,i)}} === === {{Code|p["Typ jednostki 3"](frame,i)}} === === Funkcje typu jednostki przedmiotowe === ==== {{Code|p["Przedmiotowy typ jednostki"](frame,i)}} ==== ==== {{Code|p["Przedmiotowy typ jednostki 2"](frame,i)}} ==== ==== {{Code|p["Przedmiotowy typ jednostki 3"](frame,i)}} ==== === Fukcje typu jednostki dyskusji === ==== {{Code|p["Dyskusyjny typ jednostki"](frame,i)}} ==== ==== {{Code|p["Dyskusyjny typ jednostki 2"](frame,i)}} ==== ==== {{Code|p["Dyskusyjny typ jednostki 3"](frame,i)}} ==== == Funkcje chech pudełka == === {{Code|p["Cecha pudełka"](frame)}} === === {{Code|p["Przedmiotowa cecha pudełka"](frame)}} === === {{Code|p["Dyskusyjna cecha pudełka"](frame)}} === == Fukcje ogólnego pudełka == === {{Code|p["Ogólne pudełko"](frame)}} === == Funkcje ogólne == === {{Code|p["Tekst pudełka"](frame)}} === == Funkcje błędów pudełka == === {{Code|p["Błędy pudełka"](frame)}} === === {{Code|p["Przedmiotowe błędy pudełka"](frame)}} === === {{Code|p["Dyskusyjne błędy pudełka"](frame)}} === == Funkcje nazw stron == === {{Code|p["Nazwa strony głównej projektu"](frame,i)}} === === {{Code|p["Nazwa strony głównej dla dzieci projektu"](frame,i)}} === == Funkcje kodów == === {{Code|p["Kod języka"](frame,i)}} === === {{Code|p["Kod projektu"](frame,i)}} === === {{Code|p["Klucz projektu"](frame,i)}} === == Funkcje wiki == === {{Code|p["Inny niż język bieżący wiki"](frame)}} === === {{Code|p["Inne niż lokalne wiki"](frame)}} === === {{Code|p["Inne niż bieżące wiki"](frame)}} === == Funkcje typów parametrów, czy podane je == === {{Code|p["Podano parametry nienazwane"](frame)}} === === {{Code|p["Podano parametry numerowane"](frame)}} === === {{Code|p["Podano parametry nazwane"](frame)}} === == Funkcje kodów tego projektu == === {{Code|p["Kod projektu tego projektu"](frame)}} === === {{Code|p["Kod języka tego projektu"](frame)}} === === {{Code|p["Klucz projektu tego projektu"](frame)}} === == Funkcje stron == === {{Code|p["Strona główna tego projektu"](frame)}} === === {{Code|p["Strona główna dla dzieci tego projektu"](frame)}} === == Funkcje nazw stron drugiej wersji == === {{Code|p["Nazwa strony głównej dla dzieci projektu 2"](frame)}} === === {{Code| p["Nazwa strony głównej projektu 2"](frame)}} === {{BrClear}} <noinclude><!-- -->{{ProstaStronaKoniec}}<!-- -->{{Kategoria|Opisy funkcji, w Lua w Scribunto, w modułach}}<!-- --></noinclude> onp5uybh8awo4xbbbvc2ovdihn56gmm 540426 540425 2026-04-23T20:13:05Z Persino 2851 540426 wikitext text/x-wiki <noinclude>{{ProstaStronaStart | nagłówek = {{Podrozdział|{{ld2|Pudełko}}|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 pudelko_modul=require("Module:Pudełko"); </syntaxhighlight> dzięki, któremu można wypisywać funkcje należącego do niego. Posługuje się na parametrach pudełkowych {{Parametr|nazwa przestrzeni nazw}} (czy też bez numerka {{Parametr|nazwa przestrzeni nazw i}} dla tego numerowanego) lub te z numerkiem po jednej spacji w nich (ale nie dla tego z końcówką {{Code| i}}) mogą zostać użyte jako parametry szablonu. Moduł {{Code|{{ld2|Pudełko}}}} przedstawia funkcje nazw w oparciu o funkcje nazw {{Code|{{ld2|Nazwy}}}}, generuje on nazwy za pomocą parametrów pudełkowych podanych poniżej. Parametr {{Parametr|nazwa jednostki}} (lub parametr {{Parametr|cel}} dla numerka tego pierwszego, tego alternatywnego), lub te z numerkiem po jednej spacji w nazwie parametru, albo numerowane numerkami {{Code|1}}, {{Code|2}},..., mogą zostać użyte jako parametry szablonu. Parametry określające rodzaj jednostki {{Parametr|typ jednostki}} z {{Parametr|dyskusja typu jednostki}}, itp. w wersjach z numerkiem po jednej spacji w nich mogą zostać użyte jako parametry szablonu. A te tymi numerowanymi liczbami naturalnymi {{Tt|nazwy jednostki}} od jedynki wzwyż poprzez szablon, w którym są one użyte, one też mogą być użyte z dwukropkiem, te numerowane, na samym początku nazwy, wtedy one są traktowane jako pełne nazwy strony, i wtedy one nie zostaną z interpretowane, że do nich trzeba użyć parametr odpowiedni z nazwą przetrzeni nazw z tego numerowanego, czy ogólny, aby utworzyć znów inną pełną nazwę strony dla tego numerka. Zestawienie: * {{Code|nazwa przestrzeni nazw}} i {{Code|nazwa przestrzeni nazw i}} (ogólna nazwa przestrzeni nazw dla wszystkich numerków, i tych numerowanych jednostek) - i to pierwsze z numerkiem, tzn. {{Code|nazwa przestrzeni nazw 1}}, {{Code|nazwa przestrzeni nazw 2}}, ..., * {{Code|nazwa jednostki}} - i te z numerkiem: {{Code|nazwa jednostki 1}}, {{Code|nazwa jednostki 2}}, ..., lub gdy jest zamiast tego parametrem numerowany, {{Code|1}}, {{Code|2}},..., który dla tego pierwszego może być uznany jako: {{Code|cel}} {{=}} {{Code|1}}, * {{Code|typ jednostki}} (parametr bazowy) i {{Code|typ jednostki i}} (parametr domyślny numerkowy) - i te z numerkiem: {{Code|typ jednostki 1}}, {{Code|typ jednostki 2}}, ..., tzn. gdy chcemy określić z jakim typem jednostki mamy do czynienia w zależności do jakiej przestrzeni nazw należy, a w danej, czy jest on np. programowy, czy tylko jest opisem, jak to bywa w szablonach {{Np|Template|link=tak}}, podobnie jest w przypadku {{Np|Module|link=tak}}, czy jak jest w innych przestrzeniach nazw, ** {{Code|dyskusja typu jednostki}} (parametr bazowy) i {{Code|dyskusja typu jednostki i}} (parametr domyślny numerkowy) - i te z numerkiem: {{Code|dyskusja typu jednostki 1}}, {{Code|dyskusja typu jednostki 2}}, ..., gdy chcemy określić wartością niepustą,że chodzi tutaj o typ jednostki. == {{Code|p.CzyNiepoprawnaNazwa(nazwa_jednostki)}} == Funkcja sprawdzajaca, czy jest poprawnie podana nazwa jednostki, czy ma poprawną nazwę. Znakami tymi, z których nie powinna składać się nazwa jest {{Code|<nowiki>{}<>|[]#\n</nowiki>}} i dodatkowo znak {{Code|&#127;}} (kod {{Code|{{Nowiki|&#127;}}}}). Też nie może składać się z trzech znaków tyldy, tzn. {{Code|<nowiki>~~~</nowiki>}}. Również w swojej budowie nie może składać się ze kodów {{Strong|HTML}} literowych o wzorze {{Code|{{Nowiki|&(%a+);}}}}. Natomiast może składać się z {{Code|{{Nowiki|&#(%d+);}}}} i {{Code|{{Nowiki|&#x(%x+);}}}}, ale w pierw te kody muszą być zamienione na normalne znaki. Skrótowa definicja funkcji: <syntaxhighlight lang="lua"> function p.CzyNiepoprawnaNazwa(nazwa_jednostki)...end; </syntaxhighlight> Wtedy ciało funkcji tej, czyli jego definicja w środku, jest: <syntaxhighlight lang="lua"> -- Moduł: "Moduł:Html/dane", służy do ładowania znaku o kodzie HTML "&#127;"; local html_dane_modul=mw.loadData("Module:Html/dane"); return mw.ustring.match(nazwa_jednostki,"[{}<>|%[%]#\n"..html_dane_modul.znak_127.."]+") or mw.ustring.match(nazwa_jednostki,"~~~") or mw.ustring.match(nazwa_jednostki,"&(%a+);"); </syntaxhighlight> Parametry: * {{Code|nazwa_jednostki}} - nazwa jednostki do sprawdzenia. Przykłady: <syntaxhighlight lang="lua"> local pudelko_modul=require("Module:Pudełko"); -- Podana przykładowa niepoprawna nazwa jedostki local nazwa_jednostki="Nazwa pliku [[Nazwa linku w pliku]]"; -- Fukcja zwróci wartość: local czy_poprawna_nazwa=true; local czy_poprawna_nazwa=pudelko_modul.CzyNiepoprawnaNazwa(nazwa_jednostki); </syntaxhighlight> == Funkcje nazw przestrzeni nazw == === {{Code|p["Nazwa przestrzeni nazw"](frame,...)}} === Funkcja pisze nazwę przestrzeni nazw, niezależnie, czy to jest przedmiotowa, czy dyskusji, według podanej w zmiennej {{Code|nazwa przestrzeni nazw}} dla pozycja bazowej w podanych parametrach szablonu rodzicu ramki dziecka, lub dla innej pozycji należy parametr podawać w formie {{Code|nazwa przestrzeni nazw 1}}, {{Code|nazwa przestrzeni nazw 2}}, {{Code|nazwa przestrzeni nazw 3}},..., lub te parametry można podać w postaci ogólnej {{Code|nazwa przestrzeni nazw i}}. Parametry podaje się w parametrach rodzica wywołania tej funkcji {{Code|{{m|Pudełko|Nazwa przestrzeni nazw}}}} (ale ich nie trzeba podawać w dziecku, ale można) i w parametrach dziecka, jeśli chodzi o zmienną {{Code|numer jednostki}}, czyli np.: {{Code|{{m|Pudełko|Nazwa przestrzeni nazw|numer jednostki{{=}}<jakaś liczba całkowita dodatnia>}}}}. Te parametry przestrzenne zamiast w rodzicu w szablonie można podać w ramce dziecka, wtedy parametry dziecka mają pierwszeństwo. Przestrzeń nazw z parametrów nazw przestrzennych może odpowiadać wartości przestrzeni głównej, to wtedy odpowiednia przestrzeń nazw z parametru nazwy jednostki się nie liczy w tej funkcji, aby się liczyła należy użyć funkcji {{Code|{{sr|#p["Nazwa przestrzeni nazw 2"](frame,...)|p=Pudełko}}}}. Definicja skrótowa funkcji: <syntaxhighlight lang="lua"> p["Nazwa przestrzeni nazw"]=function(frame,czy_uwzglednic_alternatywna_nazwe,i)...end; </syntaxhighlight> Wtedy ciało funkcji tej, czyli jego definicja w środku, jest: <syntaxhighlight lang="lua"> -- Jest liczony numer parametru nazwy przestrzeni nazw, domyslnie chodzi tu o numer bazowy parametrów przestrzennych; local numer_jednostki=i or frame.args["numer jednostki"]; local liczba_numer_jednostki=((numer_jednostki)and(tonumber(numer_jednostki))or 0); local pudelko_pomocne_modul=require("Module:Pudełko/Pomocne"); -- Liczy nazwę przestrzeni nazw na podstawie podanych parametrów; return pudelko_pomocne_modul.Nazwa_przestrzeni_nazw(frame,0, czy_uwzglednic_alternatywna_nazwe,liczba_numer_jednostki); </syntaxhighlight> Parametry funkcji: * {{Code|frame}} - tablica ramki tablicy transportu, * {{Code|czy_uwzglednic_alternatywna_nazwe}} - czy ma uwzględniać nazwę przestrzeni nazw domyślną szablonu, dostępne wartości: {{Code|false}}, w której nazwa domyślna nie jest uwzględniana wtedy, oraz {{Code|nil}} i {{Code|true}}, które oznaczają to samo, w tym jeżeli ona jest uwzględniana, wtedy jest brany parametr pierwszy dziecka, który musi istnieć przy takiej wartości tego parametru, tzn. {{Code|{{m|Pudełko|Nazwa przestrzeni nazw|Szablon}}}}, a nazwa uzyskana nazwy przestrzeni nazw jest w takim przypadku błędna, a jeżeli nazwa domyślna jest błędna, czyli {{Code|{{m|Pudełko|Nazwa przestrzeni nazw|Moja przestrzeń}}}}, wtedy funkcja zwraca stan błędu {{Code|(błąd)}}. * {{Code|i}} - numer zmiennej nazwy przestrzeni nazw. Funkcja wykorzystuje {{Code|{{sr|#p.Nazwa_przestrzeni_nazw(frame,...)|p=Pudełko/Pomocne}}}} do wyznaczania ogólnego nazwy przestrzeni nazw dla pozycji bazowej i numerkowej, tzn. dla pozycji: jeden, dwa, trzy,..., itd, i ich ogólnej. Parametr ramki tablicy transportu rodzica szablonu: * {{Code|nazwa przestrzeni nazw}}, {{Code|nazwa przestrzeni nazw 1}}, {{Code|nazwa przestrzeni nazw 2}}, {{Code|nazwa przestrzeni nazw 3}},..., {{Code|nazwa przestrzeni nazw i}} - nazwy przestrzeni nazw dla pozycji bazowej oraz zwykłej i ogólnej numerkowej, * {{Code|typ jednostki}}, {{Code|typ jednostki 1}}, {{Code|typ jednostki 2}}, {{Code|typ jednostki 3}},..., {{Code|typ jednostki i}} - typy jednostek, którym odpowiadają pewne przestrzenie przedmiotowe, dla pozycji bazowej, numerkowej i ogólnej, ** {{Code|dyskusja typu jednostki}}, {{Code|dyskusja typu jednostki 1}}, {{Code|dyskusja typ jednostki 2}}, {{Code|dyskusja typ jednostki 3}},..., {{Code|dyskusja typ jednostki i}} - czy dany typ jednostki ma przedstawiać, jeśli niepusta, przestrzeń dyskusji dla pozycji bazowej, numerkowej i ogólnej. Parametry ramki tablicy transportu dziecka: * Parametry dziecka są takie same jak rodzica dla funkcji pudełkowej plus tu wymienione, * {{Code|numer jednostki}} - jak parametr {{Code|i}} nie został ustawiony, to wtedy liczy się ta zmienna. Przykłady: <syntaxhighlight lang="mediawiki"> {{Nazwa szablonu|nazwa przestrzeni nazw=Wikibooks|nazwa przestrzeni nazw 2=Szablon|nazwa przestrzeni nazw i=Moduł}} </syntaxhighlight> W dziecku powiedzmy jest wywołanie, i szukamy nazwy przestrzeni nazw o numerze dwa, która nie została podana, ale istnieje za to jej wersji ogólna {{Code|nazwa przestrzeni nazw i}} i domyślna {{Code|nazwa przestrzeni nazw}}: <syntaxhighlight lang="mediawiki"> {{#invoke:Pudełko|Nazwa przestrzeni nazw|numer jednostki=1}} </syntaxhighlight> Na podstawie powyższego przykładu otrzymamy wynik o schemacie, nie wyniku, bo tam nie ma zmiennej {{Code|nazwa przestrzeni nazw 1}}, ale jest {{Code|nazwa przestrzeni nazw i}}: <syntaxhighlight lang="mediawiki"> <!-- Ale nie "nazwa przestrzeni nazw", bo jej nie ma, ale za to istnieje "nazwa przestrzeni nazw i"; --> <!-- nazwa przestrzeni nazw 2=nazwa przestrzeni nazw i=Moduł; --> <!-- Czyli wynik: --> Moduł <!-- Widzimy, że wygenerowała się nazwa przestrzeni nazw, którą jest przestrzeń programowa, którą również jest "Szablon"; --> </syntaxhighlight> Nie jest brana w tym powyższym przykładzie zmienna {{Code|nazwa przestrzeni nazw}}, bo jej nie ma, ale za to jest {{Code|nazwa przestrzeni nazw i}}, bo ona występuje jako parametr domyślny ogólny dla parametrów numerkowych. Przykłady w wikikodzie: * {{Code|{{m|Pudełko|Nazwa przestrzeni nazw|numer jednostki{{=}}2}}}} → {{Tt|{{#invoke:Pudełko|Nazwa przestrzeni nazw|numer jednostki=2}}}} * {{Code|{{m|Pudełko|Nazwa przestrzeni nazw|Szablon|nazwa przestrzeni nazw i{{=}}Moja przestrzeń|numer jednostki{{=}}2}}}} → {{Tt|{{#invoke:Pudełko|Nazwa przestrzeni nazw|Szablon|nazwa przestrzeni nazw i=Moja przestrzeń|numer jednostki=2}}}} * {{Code|{{m|Pudełko|Nazwa przestrzeni nazw|nazwa przestrzeni nazw 2{{=}}Szablon|numer jednostki{{=}}2}}}} → {{Tt|{{#invoke:Pudełko|Nazwa przestrzeni nazw|nazwa przestrzeni nazw 2=Szablon|numer jednostki=2}}}} * {{Code|{{m|Pudełko|Nazwa przestrzeni nazw|nazwa przestrzeni nazw 2{{=}}Szablon|numer jednostki{{=}}2}}}} → {{Tt|{{#invoke:Pudełko|Nazwa przestrzeni nazw|nazwa przestrzeni nazw i=Szablon|numer jednostki=2}}}} * {{Code|{{m|Pudełko|Nazwa przestrzeni nazw|nazwa przestrzeni nazw{{=}}Szablon|numer jednostki{{=}}2}}}} → {{Tt|{{#invoke:Pudełko|Nazwa przestrzeni nazw|nazwa przestrzeni nazw=Szablon|numer jednostki=2}}}} Powyżej dla przykładu podano parametry nie w rodzicu w szablonie, tylko w dziecku, jeśli chodzi o parametry nazw przestrzeni nazw, ale ich się za to nie powinno podawać w tych ramach, tylko w szablonach, w których wywoływane są te ramki pudełek {{Code|{{m|Pudełko}}}}, ale tak tutaj tak zrobiono by było najłatwiej sprawdzić działanie tego typu funkcji. Analogicznie możemy podawać parametry typu jednostki, np.: wywołaniu modułowym {{Code|{{m|Pudełko|Nazwa przestrzeni nazw|typ jednostki 2{{=}}strona szablonu|numer jednostki{{=}}2}}}}, ale o tym więcej w rozdziałach {{Code|{{sr|# p["Typ jednostki"](frame,i)|p=Pudełko}}}} w „{{sr|#Funkcje typu jednostki|p=Pudełko}}”, on definiuje przestrzenie przedmiotowe, ale można użyć parametru dyskusji typu jednostki z wartością niepustą, wtedy wyświetli się nazwa przestrzeni nazw dyskusji. Również parametry typu jednostki nie powinno się podawać w dziecku w ramce, tylko w rodzicu w szablonie jako parametry, w którym ta ramka jest wywoływana, ale tutaj podano jedynie dla przykładu, jak najłatwiej sprawdzić działanie tych parametrów tej funkcji. Najpierw w funkcji nagłówku brane są parametry nazw przestrzeni nazw, a jeżeli ich nie ma, to parametry typu jednostki, a jeżeli nie ma, to generowane są nazwy na podstawie aktualnego modułu. === {{Code|p["Nazwa przedmiotowej przestrzeni nazw"](frame,...)}} === Funkcja pisze przedmiotową nazwę przestrzeni nazw jakikolwiek nazwy przestrzeni nazw (tzn. nazwę przedmiotową nazwy przestrzenie nazw, czyli nie dyskusji, zamieniana jest na nią samą, czyli identyfikator przestrzeni się nie zmienia, a dyskusji, nie przedmiotową, przekształca się na przedmiotową jej odpowiadającą, czyli w tym przypadku identyfikator przestrzeni zmniejsza się o numer mniej), według podanej w zmiennej {{Code|nazwa przestrzeni nazw}} dla pozycja bazowej w podanych parametrach szablonu rodzicu ramki dziecka, lub dla innej pozycji należy parametr podawać w formie {{Code|nazwa przestrzeni nazw 1}}, {{Code|nazwa przestrzeni nazw 2}}, {{Code|nazwa przestrzeni nazw 3}},..., lub te parametry można podać w postaci ogólnej {{Code|nazwa przestrzeni nazw i}}. Parametry podaje się w parametrach rodzica wywołania tej funkcji {{Code|{{m|Pudełko|Nazwa przedmiotowej przestrzeni nazw}}}} (ale ich nie trzeba podawać w dziecku, ale można) i w parametrach dziecka, jeśli chodzi o zmienną {{Code|numer jednostki}}, czyli np.: {{Code|{{m|Pudełko|Nazwa przedmiotowej przestrzeni nazw|numer jednostki{{=}}<jakaś liczba całkowita dodatnia>}}}}. Te parametry przestrzenne zamiast w rodzicu w szablonie można podać w ramce dziecka, wtedy parametry dziecka mają pierwszeństwo. Parametry przestrzenne mogą mogą być podane w postaci przestrzeni przedmiotowej lub dyskusji, ale ta funkcja zawsze ją zamienia na przedmiotową. Przestrzeń nazw z parametrów nazw przestrzennych może odpowiadać wartości przestrzeni głównej, to wtedy odpowiednia przestrzeń nazw z parametru nazwy jednostki się nie liczy w tej funkcji, aby się liczyła należy użyć funkcji {{Code|{{sr|#p["Nazwa przedmiotowej przestrzeni nazw 2"](frame,...)|p=Pudełko}}}}. Definicja skrótowa funkcji: <syntaxhighlight lang="lua"> p["Nazwa przedmiotowej przestrzeni nazw"]=function(frame,czy_uwzglednic_alternatywna_nazwe,i)...end; </syntaxhighlight> Wtedy ciało funkcji tej, czyli jego definicja w środku, jest: <syntaxhighlight lang="lua"> -- Jest liczony numer parametru nazwy przestrzeni nazw, domyslnie chodzi tu o numer bazowy parametrów przestrzennych; local numer_jednostki=i or frame.args["numer jednostki"]; local liczba_numer_jednostki=((numer_jednostki)and(tonumber(numer_jednostki))or 0); local pudelko_pomocne_modul=require("Module:Pudełko/Pomocne"); -- Liczy nazwę przestrzeni nazw przedmiotową na podstawie podanych parametrów; return pudelko_pomocne_modul.Nazwa_przestrzeni_nazw(frame,1, czy_uwzglednic_alternatywna_nazwe,liczba_numer_jednostki); </syntaxhighlight> Parametry funkcji: * {{Code|frame}} - tablica ramki tablicy transportu, * {{Code|czy_uwzglednic_alternatywna_nazwe}} - czy ma uwzględniać nazwę przestrzeni nazw domyślną szablonu, dostępne wartości: {{Code|false}}, w której nazwa domyślna nie jest uwzględniana wtedy, oraz {{Code|nil}} i {{Code|true}}, które oznaczają to samo, w tym jeżeli ona jest uwzględniana, wtedy jest brany parametr pierwszy dziecka, który musi istnieć przy takiej wartości tego parametru, tzn. {{Code|{{m|Pudełko|Nazwa przedmiotowej przestrzeni nazw|Dyskusja szablonu}}}} - ta nazwa domyślna zostanie zamieniona na przedmiotową, a jak ona by była przedmiotowa, to żadnej zamiany by nie było, a nazwa uzyskana z nazwy przestrzeni nazw z parametrów przestrzennych jest w takim przypadku błędna, to w takim razie brany jest ten parametr, a jeżeli ta nazwa domyślna jest błędna, czyli {{Code|{{m|Pudełko|Nazwa przedmiotowej przestrzeni nazw|Moja przestrzeń}}}}, wtedy funkcja zwraca stan błędu {{Code|(błąd)}}. * {{Code|i}} - numer zmiennej nazwy przestrzeni nazw. Funkcja wykorzystuje {{Code|{{sr|#p.Nazwa_przestrzeni_nazw(frame,...)|p=Pudełko/Pomocne}}}} do wyznaczania ogólnego nazwy przestrzeni nazw dla pozycji bazowej i numerkowej, tzn. dla pozycji: jeden, dwa, trzy,..., itd, i ich ogólnej. Parametr ramki tablicy transportu rodzica szablonu: * {{Code|nazwa przestrzeni nazw}}, {{Code|nazwa przestrzeni nazw 1}}, {{Code|nazwa przestrzeni nazw 2}}, {{Code|nazwa przestrzeni nazw 3}},..., {{Code|nazwa przestrzeni nazw i}} - nazwy przestrzeni nazw dla pozycji bazowej oraz zwykłej i ogólnej numerkowej, * {{Code|typ jednostki}}, {{Code|typ jednostki 1}}, {{Code|typ jednostki 2}}, {{Code|typ jednostki 3}},..., {{Code|typ jednostki i}} - typy jednostek, którym odpowiadają pewne przestrzenie przedmiotowe, dla pozycji bazowej, numerkowej i ogólnej. Parametry ramki tablicy transportu dziecka: * Parametry dziecka są takie same jak rodzica dla funkcji pudełkowej plus tu wymienione, * {{Code|numer jednostki}} - jak parametr {{Code|i}} nie został ustawiony, to wtedy liczy się ta zmienna. Przykłady: <syntaxhighlight lang="mediawiki"> {{Nazwa szablonu|nazwa przestrzeni nazw=Dyskusja Wikibooks|nazwa przestrzeni nazw 2=Dyskusja szablonu|nazwa przestrzeni nazw i=Dyskusja modułu}} </syntaxhighlight> W dziecku powiedzmy jest wywołanie, i szukamy nazwy przestrzeni nazw o numerze dwa, która nie została podana, ale istnieje za to jej wersji ogólna {{Code|nazwa przestrzeni nazw i}} i domyślna {{Code|nazwa przestrzeni nazw}}: <syntaxhighlight lang="mediawiki"> {{#invoke:Pudełko|Nazwa przedmiotowej przestrzeni nazw|numer jednostki=1}} </syntaxhighlight> Na podstawie powyższego przykładu otrzymamy wynik o schemacie, nie wyniku, bo tam nie ma zmiennej {{Code|nazwa przestrzeni nazw 1}}, ale jest {{Code|nazwa przestrzeni nazw i}}: <syntaxhighlight lang="mediawiki"> <!-- Ale nie "nazwa przestrzeni nazw", bo jej nie ma, ale za to istnieje "nazwa przestrzeni nazw i"; --> <!-- nazwa przestrzeni nazw 2=nazwa przestrzeni nazw i=Dyskusja modułu; --> <!-- Czyli wynik: --> Moduł <!-- Widzimy, że wygenerowała się nazwa przestrzeni nazw, którą jest przestrzeń przedmiotowa programowa przestrzeni dyskusji "Dyskusja modułu", którą również jest "Szablon" jego przestrzeni dyskusji "Dyskusja szablonu", a dla ich przestrzeni przedmiotowej, zamiast dyskusji, to samo przekształca się na to samo; --> </syntaxhighlight> Nie jest brana w tym powyższym przykładzie zmienna {{Code|nazwa przestrzeni nazw}}, bo jej nie ma, ale za to jest {{Code|nazwa przestrzeni nazw i}}, bo ona występuje jako parametr domyślny ogólny dla parametrów numerkowych. Przykłady w wikikodzie: * {{Code|{{m|Pudełko|Nazwa przedmiotowej przestrzeni nazw|numer jednostki{{=}}2}}}} → {{Tt|{{#invoke:Pudełko|Nazwa przedmiotowej przestrzeni nazw|numer jednostki=2}}}} * {{Code|{{m|Pudełko|Nazwa przedmiotowej przestrzeni nazw|Dyskusja szablonu|nazwa przestrzeni nazw i{{=}}Moja przestrzeń|numer jednostki{{=}}2}}}} → {{Tt|{{#invoke:Pudełko|Nazwa przedmiotowej przestrzeni nazw|Dyskusja szablonu|nazwa przestrzeni nazw i=Moja przestrzeń|numer jednostki=2}}}} * {{Code|{{m|Pudełko|Nazwa przedmiotowej przestrzeni nazw|nazwa przestrzeni nazw 2{{=}}Dyskusja szablonu|numer jednostki{{=}}2}}}} → {{Tt|{{#invoke:Pudełko|Nazwa przedmiotowej przestrzeni nazw|nazwa przestrzeni nazw 2=Dyskusja szablonu|numer jednostki=2}}}} * {{Code|{{m|Pudełko|Nazwa przedmiotowej przestrzeni nazw|nazwa przestrzeni nazw 2{{=}}Dyskusja szablonu|numer jednostki{{=}}2}}}} → {{Tt|{{#invoke:Pudełko|Nazwa przedmiotowej przestrzeni nazw|nazwa przestrzeni nazw i=Dyskusja szablonu|numer jednostki=2}}}} * {{Code|{{m|Pudełko|Nazwa przedmiotowej przestrzeni nazw|nazwa przestrzeni nazw{{=}}Dyskusja szablonu|numer jednostki{{=}}2}}}} → {{Tt|{{#invoke:Pudełko|Nazwa przedmiotowej przestrzeni nazw|nazwa przestrzeni nazw=Dyskusja szablonu|numer jednostki=2}}}} Powyżej dla przykładu podano parametry nie w rodzicu w szablonie, tylko w dziecku, jeśli chodzi o parametry nazw przestrzeni nazw, ale ich się za to nie powinno podawać w tych ramach, tylko w szablonach, w których wywoływane są te ramki pudełek {{Code|{{m|Pudełko}}}}, ale tak tutaj tak zrobiono by było najłatwiej sprawdzić działanie tego typu funkcji. Analogicznie możemy podawać parametry typu jednostki, np.: wywołaniu modułowym {{Code|{{m|Pudełko|Nazwa przedmiotowej przestrzeni nazw|typ jednostki 2{{=}}strona szablonu|numer jednostki{{=}}2}}}}, ale o tym więcej w rozdziałach {{Code|{{sr|# p["Przedmiotowy typ jednostki"](frame,i)|p=Pudełko}}}} w „{{sr|#Funkcje typu jednostki|p=Pudełko}}”, ale wtedy ta sama nazwa przestrzeni nazw reprezentowana przez {{Parametr|typ jednostki 2|strona szablonu}}, jest zamieniana na to samo, lepiej jest tutaj używać parametrów przestrzennych nazw niż typu jednostki, bo typ jednostki ma taką samą wartość dla przestrzeni przedmiotowej, co dyskusji. Tutaj parametr dyskusji typu jednostki bazowy i numerkowy ogólny, czy szczegółowy, nie gra roli, bo nawet, gdy wygenerujemy nazwę przestrzeni dyskusji za pomoca tego parametru, to i tak otrzymamy na samym końcu jego nazwę przedmiotową. Również parametry typu jednostki nie powinno się podawać w dziecku w ramce, tylko w rodzicu w szablonie jako parametry, w którym ta ramka jest wywoływana, ale tutaj podano jedynie dla przykładu, jak najłatwiej sprawdzić działanie tych parametrów tej funkcji. Najpierw w funkcji nagłówku brane są parametry nazw przestrzeni nazw, a jeżeli ich nie ma, to parametry typu jednostki, a jeżeli nie ma, to generowane są nazwy na podstawie aktualnego modułu. === {{Code|p["Nazwa przestrzeni nazw dyskusji"](frame,...)}} === Funkcja pisze nazwę przestrzeni nazw dyskusji jakikolwiek nazwy przestrzeni nazw (tzn. nazwę przedmiotową nazwy przestrzenie nazw, czyli nie dyskusji, zamieniana jest na dyskusji, czyli identyfikator przestrzeni się zmienia jeden wyżej, a dyskusji, nie przedmiotową, przekształca się na tą samą), według podanej w zmiennej {{Code|nazwa przestrzeni nazw}} dla pozycja bazowej w podanych parametrach szablonu rodzicu ramki dziecka, lub dla innej pozycji należy parametr podawać w formie {{Code|nazwa przestrzeni nazw 1}}, {{Code|nazwa przestrzeni nazw 2}}, {{Code|nazwa przestrzeni nazw 3}},..., lub te parametry można podać w postaci ogólnej {{Code|nazwa przestrzeni nazw i}}. Parametry podaje się w parametrach rodzica wywołania tej funkcji {{Code|{{m|Pudełko|Nazwa przestrzeni nazw dyskusji}}}} (ale ich nie trzeba podawać w dziecku, ale można) i w parametrach dziecka, jeśli chodzi o zmienną {{Code|numer jednostki}}, czyli np.: {{Code|{{m|Pudełko|Nazwa przestrzeni nazw dyskusji|numer jednostki{{=}}<jakaś liczba całkowita dodatnia>}}}}. Te parametry przestrzenne zamiast w rodzicu w szablonie można podać w ramce dziecka, wtedy parametry dziecka mają pierwszeństwo. Parametry przestrzenne mogą mogą być podane w postaci przestrzeni przedmiotowej lub dyskusji, ale ta funkcja zawsze ją zamienia na dyskusji. Przestrzeń nazw z parametrów nazw przestrzennych może odpowiadać wartości przestrzeni głównej, to wtedy odpowiednia przestrzeń nazw z parametru nazwy jednostki się nie liczy w tej funkcji, aby się liczyła należy użyć funkcji {{Code|{{sr|#p["Nazwa przestrzeni nazw dyskusji 2"](frame,...)|p=Pudełko}}}}. Definicja skrótowa funkcji: <syntaxhighlight lang="lua"> p["Nazwa przestrzeni nazw dyskusji"]=function(frame,czy_uwzglednic_alternatywna_nazwe,i)...end; </syntaxhighlight> Wtedy ciało funkcji tej, czyli jego definicja w środku, jest: <syntaxhighlight lang="lua"> -- Jest liczony numer parametru nazwy przestrzeni nazw, domyslnie chodzi tu o numer bazowy parametrów przestrzennych; local numer_jednostki=i or frame.args["numer jednostki"]; local liczba_numer_jednostki=((numer_jednostki)and(tonumber(numer_jednostki))or 0); local pudelko_pomocne_modul=require("Module:Pudełko/Pomocne"); -- Liczy nazwę przestrzeni nazw dyskusji na podstawie podanych parametrów; return pudelko_pomocne_modul.Nazwa_przestrzeni_nazw(frame,2, czy_uwzglednic_alternatywna_nazwe,liczba_numer_jednostki); </syntaxhighlight> Parametry funkcji: * {{Code|frame}} - tablica ramki tablicy transportu, * {{Code|czy_uwzglednic_alternatywna_nazwe}} - czy ma uwzględniać nazwę przestrzeni nazw domyślną szablonu, dostępne wartości: {{Code|false}}, w której nazwa domyślna nie jest uwzględniana wtedy, oraz {{Code|nil}} i {{Code|true}}, które oznaczają to samo, w tym jeżeli ona jest uwzględniana, wtedy jest brany parametr pierwszy dziecka, który musi istnieć przy takiej wartości tego parametru, tzn. {{Code|{{m|Pudełko|Nazwa przestrzeni nazw dyskusji|Szablon}}}} - ta nazwa domyślna zostanie przekształcona na dyskusji, a jeżeli ona by była dyskusji, to nie byłoby żadnego przekształcenia, a nazwa uzyskana nazwy przestrzeni nazw z parametrów przestrzennych jest w takim przypadku błędna, to w takim razie brany jest ten parametr, a jeżeli nazwa domyślna jest błędna, czyli {{Code|{{m|Pudełko|Nazwa przestrzeni nazw dyskusji|Moja przestrzeń}}}}, wtedy funkcja zwraca stan błędu {{Code|(błąd)}}. * {{Code|i}} - numer zmiennej nazwy przestrzeni nazw. Funkcja wykorzystuje {{Code|{{sr|#p.Nazwa_przestrzeni_nazw(frame,...)|p=Pudełko/Pomocne}}}} do wyznaczania ogólnego nazwy przestrzeni nazw dla pozycji bazowej i numerkowej, tzn. dla pozycji: jeden, dwa, trzy,..., itd, i ich ogólnej. Parametr ramki tablicy transportu rodzica szablonu: * {{Code|nazwa przestrzeni nazw}}, {{Code|nazwa przestrzeni nazw 1}}, {{Code|nazwa przestrzeni nazw 2}}, {{Code|nazwa przestrzeni nazw 3}},..., {{Code|nazwa przestrzeni nazw i}} - nazwy przestrzeni nazw dla pozycji bazowej oraz zwykłej i ogólnej numerkowej, * {{Code|typ jednostki}}, {{Code|typ jednostki 1}}, {{Code|typ jednostki 2}}, {{Code|typ jednostki 3}},..., {{Code|typ jednostki i}} - typy jednostek, którym odpowiadają pewne przestrzenie przedmiotowe, dla pozycji bazowej, numerkowej i ogólnej. Parametry ramki tablicy transportu dziecka: * Parametry dziecka są takie same jak rodzica dla funkcji pudełkowej plus tu wymienione, * {{Code|numer jednostki}} - jak parametr {{Code|i}} nie został ustawiony, to wtedy liczy się ta zmienna. Przykłady: <syntaxhighlight lang="mediawiki"> {{Nazwa szablonu|nazwa przestrzeni nazw=Wikibooks|nazwa przestrzeni nazw 2=Szablon|nazwa przestrzeni nazw i=Moduł}} </syntaxhighlight> W dziecku powiedzmy jest wywołanie, i szukamy nazwy przestrzeni nazw o numerze dwa, która nie została podana, ale istnieje za to jej wersji ogólna {{Code|nazwa przestrzeni nazw i}} i domyślna {{Code|nazwa przestrzeni nazw}}: <syntaxhighlight lang="mediawiki"> {{#invoke:Pudełko|Nazwa przestrzeni nazw dyskusji|numer jednostki=1}} </syntaxhighlight> Na podstawie powyższego przykładu otrzymamy wynik o schemacie, nie wyniku, bo tam nie ma zmiennej {{Code|nazwa przestrzeni nazw 1}}, ale jest {{Code|nazwa przestrzeni nazw i}}: <syntaxhighlight lang="mediawiki"> <!-- Ale nie "nazwa przestrzeni nazw", bo jej nie ma, ale za to istnieje "nazwa przestrzeni nazw i"; --> <!-- nazwa przestrzeni nazw 2=nazwa przestrzeni nazw i=Moduł; --> <!-- Czyli wynik: --> Dyskusja modułu <!-- Widzimy, że wygenerowała się nazwa przestrzeni nazw, którą jest przestrzeń dyskusji przestrzeni programowej przestrzeni przedmiotowej "Moduł", którą również jest "Szablon" jego przestrzeni dyskusji "Dyskusja szablonu", a dla ich przestrzeni przedmiotowej, zamiast dyskusji, to przekształca się na dyskusji jej odpowiadającą; --> </syntaxhighlight> Nie jest brana w tym powyższym przykładzie zmienna {{Code|nazwa przestrzeni nazw}}, bo jej nie ma, ale za to jest {{Code|nazwa przestrzeni nazw i}}, bo ona występuje jako parametr domyślny ogólny dla parametrów numerkowych. Przykłady w wikikodzie: * {{Code|{{m|Pudełko|Nazwa przestrzeni nazw dyskusji|numer jednostki{{=}}2}}}} → {{Tt|{{#invoke:Pudełko|Nazwa przestrzeni nazw dyskusji|numer jednostki=2}}}} * {{Code|{{m|Pudełko|Nazwa przestrzeni nazw dyskusji|Szablon|nazwa przestrzeni nazw i{{=}}Moja przestrzeń|numer jednostki{{=}}2}}}} → {{Tt|{{#invoke:Pudełko|Nazwa przestrzeni nazw dyskusji|Szablon|nazwa przestrzeni nazw i=Moja przestrzeń|numer jednostki=2}}}} * {{Code|{{m|Pudełko|Nazwa przestrzeni nazw dyskusji|nazwa przestrzeni nazw 2{{=}}Szablon|numer jednostki{{=}}2}}}} → {{Tt|{{#invoke:Pudełko|Nazwa przestrzeni nazw dyskusji|nazwa przestrzeni nazw 2=Szablon|numer jednostki=2}}}} * {{Code|{{m|Pudełko|Nazwa przestrzeni nazw dyskusji|nazwa przestrzeni nazw 2{{=}}Szablon|numer jednostki{{=}}2}}}} → {{Tt|{{#invoke:Pudełko|Nazwa przestrzeni nazw dyskusji|nazwa przestrzeni nazw i=Szablon|numer jednostki=2}}}} * {{Code|{{m|Pudełko|Nazwa przestrzeni nazw dyskusji|nazwa przestrzeni nazw{{=}}Szablon|numer jednostki{{=}}2}}}} → {{Tt|{{#invoke:Pudełko|Nazwa przestrzeni nazw dyskusji|nazwa przestrzeni nazw=Szablon|numer jednostki=2}}}} Powyżej dla przykładu podano parametry nie w rodzicu w szablonie, tylko w dziecku, jeśli chodzi o parametry nazw przestrzeni nazw, ale ich się za to nie powinno podawać w tych ramach, tylko w szablonach, w których wywoływane są te ramki pudełek {{Code|{{m|Pudełko}}}}, ale tak tutaj tak zrobiono by było najłatwiej sprawdzić działanie tego typu funkcji. Analogicznie możemy podawać parametry typu jednostki, np.: wywołaniu modułowym {{Code|{{m|Pudełko|Nazwa przestrzeni nazw dyskusji|typ jednostki 2{{=}}strona szablonu|numer jednostki{{=}}2}}}}, ale o tym więcej w rozdziałach {{Code|{{sr|# p["Dyskusyjny typ jednostki"](frame,i)|p=Pudełko}}}} w „{{sr|#Funkcje typu jednostki|p=Pudełko}}”, ale wtedy nazwa przestrzeni nazw reprezentowana przez {{Parametr|typ jednostki 2|strona szablonu}}, jest zamieniana na nazwę przestrzeni nazw dyskusji. Parametr dyskusji typu jednostki bazowy lub dla danego numerka ogólny, czy szczegółowy, nie gra roli. Również parametry typu jednostki nie powinno się podawać w dziecku w ramce, tylko w rodzicu w szablonie jako parametry, w którym ta ramka jest wywoływana, ale tutaj podano jedynie dla przykładu, jak najłatwiej sprawdzić działanie tych parametrów tej funkcji. Najpierw w funkcji nagłówku brane są parametry nazw przestrzeni nazw, a jeżeli ich nie ma, to parametry typu jednostki, a jeżeli nie ma, to generowane są nazwy na podstawie aktualnego modułu. == Funkcje nazw przestrzeni nazw drugiej wersji == === {{Code|p["Nazwa przestrzeni nazw 2"](frame,...)}} === Funkcja pisze nazwę przestrzeni nazw, niezależnie, czy to jest przedmiotowa, czy dyskusji, według, i nie zawsze tylko, podanej w zmiennej {{Code|nazwa przestrzeni nazw}} dla pozycja bazowej w podanych parametrach szablonu rodzicu ramki dziecka, lub dla innej pozycji należy parametr podawać w formie {{Code|nazwa przestrzeni nazw 1}}, {{Code|nazwa przestrzeni nazw 2}}, {{Code|nazwa przestrzeni nazw 3}},..., lub te parametry można podać w postaci ogólnej {{Code|nazwa przestrzeni nazw i}}. W tej funkcji trzeba też podawać parametry nazwy jednostek {{Code|nazwa jednostki}}, {{Code|nazwa jednostki 1}}, {{Code|nazwa jednostki 2}}, {{Code|nazwa jednostki 3}},... Parametry podaje się w parametrach rodzica wywołania tej funkcji {{Code|{{m|Pudełko|Nazwa przestrzeni nazw 2}}}} (ale ich nie trzeba podawać w dziecku, ale można) i w parametrach dziecka, jeśli chodzi o zmienną {{Code|numer jednostki}}, czyli np.: {{Code|{{m|Pudełko|Nazwa przestrzeni nazw 2|numer jednostki{{=}}<jakaś liczba całkowita dodatnia>}}}}. Te parametry przestrzenne zamiast w rodzicu w szablonie można podać w ramce dziecka, wtedy parametry dziecka mają pierwszeństwo. Przestrzeń nazw z parametrów nazw przestrzennych może odpowiadać wartości przestrzeni głównej, to wtedy odpowiednia przestrzeń nazw z parametru nazwy jednostki się liczy w tej funkcji, wtedy jest liczona nazwa przestrzeni nazw z tego parametru. Gdy parametry przestrzenne lub typ jednostki w drugim podejściu nie wskazują na przestrzeń główną, to wtedy działanie tej funkcji jest podobne do {{Code|{{sr|#p["Nazwa przestrzeni nazw"](frame,...)|p=Pudełko}}}}. Definicja skrótowa funkcji: <syntaxhighlight lang="lua"> p["Nazwa przestrzeni nazw 2"]=function(frame,czy_uwzglednic_alternatywna_nazwe,i)...end; </syntaxhighlight> Wtedy ciało funkcji tej, czyli jego definicja w środku, jest: <syntaxhighlight lang="lua"> local pudelko_pomocne_modul=require("Module:Pudełko/Pomocne"); -- Liczy nazwę przestrzeni nazw, jeżeli z parametrów przestrzennych przestrzeń wskazuje na główną, to wtedy jest liczona przestrzeń nazw z nazwy jednostki; return pudelko_pomocne_modul.Nazwa_przestrzeni_nazw_2(frame,czy_uwzglednic_alternatywna_nazwe,i) </syntaxhighlight> Parametry funkcji: * {{Code|frame}} - tablica ramki tablicy transportu, * {{Code|czy_uwzglednic_alternatywna_nazwe}} - czy ma uwzględniać nazwę przestrzeni nazw domyślną szablonu, dostępne wartości: {{Code|false}}, w której nazwa domyślna nie jest uwzględniana wtedy, oraz {{Code|nil}} i {{Code|true}}, które oznaczają to samo, w tym jeżeli ona jest uwzględniana, wtedy jest brany parametr pierwszy dziecka, który musi istnieć przy takiej wartości tego parametru, tzn. {{Code|{{m|Pudełko|Nazwa przestrzeni nazw 2|Szablon}}}}, a nazwa uzyskana nazwy przestrzeni nazw jest w takim przypadku błędna, a jeżeli nazwa domyślna jest błędna, czyli {{Code|{{m|Pudełko|Nazwa przestrzeni nazw 2|Moja przestrzeń}}}}, wtedy funkcja zwraca stan błędu {{Code|(błąd)}}. * {{Code|i}} - numer zmiennej nazwy przestrzeni nazw. Funkcja wykorzystuje {{Code|{{sr|#p.Nazwa_przestrzeni_nazw_2(frame,...)|p=Pudełko/Pomocne}}}} do wyznaczania ogólnego nazwy przestrzeni nazw dla pozycji bazowej i numerkowej, tzn. dla pozycji: jeden, dwa, trzy,..., itd, i ich ogólnej. Parametr ramki tablicy transportu rodzica szablonu: * {{Code|nazwa przestrzeni nazw}}, {{Code|nazwa przestrzeni nazw 1}}, {{Code|nazwa przestrzeni nazw 2}}, {{Code|nazwa przestrzeni nazw 3}},..., {{Code|nazwa przestrzeni nazw i}} - nazwy przestrzeni nazw dla pozycji bazowej oraz zwykłej i ogólnej numerkowej, * {{Code|nazwa jednostki}}, {{Code|nazwa jednostki 1}}, {{Code|nazwa jednostki 2}}, {{Code|nazwa jednostki 3}},... - nazwy jednostek dla pozycji bazowej i numerkowej, * {{Code|typ jednostki}}, {{Code|typ jednostki 1}}, {{Code|typ jednostki 2}}, {{Code|typ jednostki 3}},..., {{Code|typ jednostki i}} - typy jednostek, którym odpowiadają pewne przestrzenie przedmiotowe, dla pozycji bazowej, numerkowej i ogólnej, ** {{Code|dyskusja typu jednostki}}, {{Code|dyskusja typu jednostki 1}}, {{Code|dyskusja typ jednostki 2}}, {{Code|dyskusja typ jednostki 3}},..., {{Code|dyskusja typ jednostki i}} - czy dany typ jednostki ma przedstawiać, jeśli niepusta, przestrzeń dyskusji dla pozycji bazowej, numerkowej i ogólnej. Parametry ramki tablicy transportu dziecka: * Parametry dziecka są takie same jak rodzica dla funkcji pudełkowej plus tu wymienione, * {{Code|numer jednostki}} - jak parametr {{Code|i}} nie został ustawiony, to wtedy liczy się ta zmienna. Przykłady: <syntaxhighlight lang="mediawiki"> {{Nazwa szablonu|nazwa przestrzeni nazw=Wikibooks|nazwa przestrzeni nazw 1=Szablon|nazwa przestrzeni nazw i=|nazwa jednostki 2=Wikibooks:Strona}} </syntaxhighlight> W dziecku powiedzmy jest wywołanie, i szukamy nazwy przestrzeni nazw o numerze dwa, która została podana, ale istnieje za to jej wersji ogólna {{Code|nazwa przestrzeni nazw i}} i domyślna {{Code|nazwa przestrzeni nazw}}, ale wtedy dla tego numerkowego liczy się to ogólne z {{Code| i}}, a ponieważ ta nazwa jest pusta, więc będziemy liczyli nazwę przestrzeni nazw z {{Code|nazwa jednostki 2}}: <syntaxhighlight lang="mediawiki"> {{#invoke:Pudełko|Nazwa przestrzeni nazw 2|numer jednostki=2}} </syntaxhighlight> Na podstawie powyższego przykładu otrzymamy wynik o schemacie, nie wyniku, bo tam nie ma zmiennej {{Code|nazwa przestrzeni nazw 1}}, ale jest {{Code|nazwa przestrzeni nazw i}}: <syntaxhighlight lang="mediawiki"> <!-- Ale nie "nazwa przestrzeni nazw 2", bo jej nie ma, ale za to istnieje "nazwa przestrzeni nazw i"; --> <!-- nazwa przestrzeni nazw 2=nazwa przestrzeni nazw i="", a nazwa jednostki 2="Wikibooks:Strona"; --> <!-- Czyli wynik: --> Wikibooks <!-- Widzimy, że wygenerowała się nazwa przestrzeni nazw, którą jest przestrzeń nieprogramowa, ale projektu, wychodząca z nazwy jednostek w tym przypadku z "nazwa jednostki 2"; --> </syntaxhighlight> Nie jest brana w tym powyższym przykładzie zmienna {{Code|nazwa przestrzeni nazw}}, bo jej nie ma, ale za to jest {{Code|nazwa przestrzeni nazw i}}, bo ona występuje jako parametr domyślny ogólny dla parametrów numerkowych. Tytaj jest używana jest zmienna {{Code|nazwa jednostki 2}} do wygenerowania ostatecznego wyniku, bo jak można zauważyć, parametry przestrzenne wskazują na przestrzeń główną, a nazwy jednostek już nie. Przykłady w wikikodzie: * {{Code|{{m|Pudełko|Nazwa przestrzeni nazw 2|numer jednostki{{=}}2}}}} → {{Tt|{{#invoke:Pudełko|Nazwa przestrzeni nazw 2|numer jednostki=2}}}} * {{Code|{{m|Pudełko|Nazwa przestrzeni nazw 2|Szablon|nazwa przestrzeni nazw i{{=}}Moja przestrzeń|numer jednostki{{=}}2}}}} → {{Tt|{{#invoke:Pudełko|Nazwa przestrzeni nazw 2|Szablon|nazwa przestrzeni nazw i=Moja przestrzeń|numer jednostki=2}}}} * {{Code|{{m|Pudełko|Nazwa przestrzeni nazw 2|nazwa przestrzeni nazw 2{{=}}|nazwa jednostki 2{{=}}Szablon:Strona|numer jednostki{{=}}2}}}} → {{Tt|{{#invoke:Pudełko|Nazwa przestrzeni nazw 2|nazwa przestrzeni nazw 2=|nazwa jednostki 2=Szablon:Strona|numer jednostki=2}}}} * {{Code|{{m|Pudełko|Nazwa przestrzeni nazw 2|nazwa przestrzeni nazw i{{=}}|nazwa jednostki 2{{=}}Szablon:Strona|numer jednostki{{=}}2}}}} → {{Tt|{{#invoke:Pudełko|Nazwa przestrzeni nazw 2|nazwa przestrzeni nazw i=|nazwa jednostki 2=Szablon:Strona|numer jednostki=2}}}} * {{Code|{{m|Pudełko|Nazwa przestrzeni nazw 2|Szablon|nazwa przestrzeni nazw{{=}}|nazwa jednostki 2{{=}}Wikibooks:Strona|numer jednostki{{=}}2}}}} → {{Tt|{{#invoke:Pudełko|Nazwa przestrzeni nazw 2|Szablon|nazwa przestrzeni nazw=|nazwa jednostki 2=Wikibooks:Strona|numer jednostki=2}}}} Powyżej dla przykładu podano parametry nie w rodzicu w szablonie, tylko w dziecku, jeśli chodzi o parametry nazw przestrzeni nazw i nazw jednostek, ale ich się za to nie powinno podawać w tych ramach, tylko w szablonach, w których wywoływane są te ramki pudełek {{Code|{{m|Pudełko}}}}, ale tak tutaj tak zrobiono by było najłatwiej sprawdzić działanie tego typu funkcji. Analogicznie możemy podawać parametry typu jednostki, np.: wywołaniu modułowym {{Code|{{m|Pudełko|Nazwa przestrzeni nazw 2|typ jednostki 2{{=}}Podręcznik|nazwa jednostki 2{{=}}Szablon:Strona|numer jednostki{{=}}2}}}} (ale wtedy jest brana przestrzeń nazw z nazwy jednostki), ale o tym więcej w rozdziałach {{Code|{{sr|#p["Typ jednostki 2"](frame,i)|p=Pudełko}}}} w „{{sr|#Funkcje typu jednostki|p=Pudełko}}”, on definiuje przestrzenie przedmiotowe, ale można użyć parametru dyskusji typu jednostki z wartością niepustą, wtedy wyświetli się nazwa przestrzeni nazw dyskusji. Jeżeli typ jednostki wskazuje na przestrzeń nazw główną, wtedy się liczą parametry nazw jednostek. Również parametry typu jednostki nie powinno się podawać w dziecku w ramce, tylko w rodzicu w szablonie jako parametry, w którym ta ramka jest wywoływana, ale tutaj podano jedynie dla przykładu, jak najłatwiej sprawdzić działanie tych parametrów tej funkcji. Najpierw w funkcji nagłówku brane są parametry nazw przestrzeni nazw, a jeżeli ich nie ma, to parametry typu jednostki, a jeżeli nie ma lub parametry przestrzenne wskazują na przestrzeń główną, i nie ma nazwy jednostki, to generowane są nazwy tej funkcji na podstawie aktualnej strony. === {{Code|p["Nazwa przedmiotowej przestrzeni nazw 2"](frame,...)}} === Funkcja pisze przedmiotową nazwę przestrzeni nazw jakikolwiek nazwy przestrzeni nazw (tzn. nazwę przedmiotową nazwy przestrzenie nazw, czyli nie dyskusji, zamieniana jest na nią samą, czyli identyfikator przestrzeni się nie zmienia, a dyskusji, nie przedmiotową, przekształca się na przedmiotową jej odpowiadającą, czyli w tym przypadku identyfikator przestrzeni zmniejsza się o numer mniej), według, i nie zawsze tylko, podanej w zmiennej {{Code|nazwa przestrzeni nazw}} dla pozycja bazowej w podanych parametrach szablonu rodzicu ramki dziecka, lub dla innej pozycji należy parametr podawać w formie {{Code|nazwa przestrzeni nazw 1}}, {{Code|nazwa przestrzeni nazw 2}}, {{Code|nazwa przestrzeni nazw 3}},..., lub te parametry można podać w postaci ogólnej {{Code|nazwa przestrzeni nazw i}}. W tej funkcji trzeba też podawać parametry nazwy jednostek {{Code|nazwa jednostki}}, {{Code|nazwa jednostki 1}}, {{Code|nazwa jednostki 2}}, {{Code|nazwa jednostki 3}},... Parametry podaje się w parametrach rodzica wywołania tej funkcji {{Code|{{m|Pudełko|Nazwa przedmiotowej przestrzeni nazw 2}}}} (ale ich nie trzeba podawać w dziecku, ale można) i w parametrach dziecka, jeśli chodzi o zmienną {{Code|numer jednostki}}, czyli np.: {{Code|{{m|Pudełko|Nazwa przedmiotowej przestrzeni nazw 2|numer jednostki{{=}}<jakaś liczba całkowita dodatnia>}}}}. Te parametry przestrzenne zamiast w rodzicu w szablonie można podać w ramce dziecka, wtedy parametry dziecka mają pierwszeństwo. Przestrzeń nazw z parametrów nazw przestrzennych po przekształceniu na przedmiotową może odpowiadać wartości przestrzeni głównej, to wtedy odpowiednia przestrzeń nazw z parametru nazwy jednostki się liczy w tej funkcji, wtedy jest liczona nazwa przestrzeni nazw z tego parametru. Gdy parametry przestrzenne lub typ jednostki w drugim podejściu nie wskazują na przestrzeń główną, to wtedy działanie tej funkcji jest podobne do {{Code|{{sr|#p["Nazwa przedmiotowej przestrzeni nazw"](frame,...)|p=Pudełko}}}}. Definicja skrótowa funkcji: <syntaxhighlight lang="lua"> p["Nazwa przedmiotowej przestrzeni nazw 2"]=function(frame,czy_uwzglednic_alternatywna_nazwe,i)...end; </syntaxhighlight> Wtedy ciało funkcji tej, czyli jego definicja w środku, jest: <syntaxhighlight lang="lua"> local pudelko_pomocne_modul=require("Module:Pudełko/Pomocne"); return pudelko_pomocne_modul.Nazwa_przestrzeni_nazw_przedmiotowa_dyskusji_2(frame,czy_uwzglednic_alternatywna_nazwe,i,"przedmiotowa"); </syntaxhighlight> Parametry funkcji: * {{Code|frame}} - tablica ramki tablicy transportu, * {{Code|czy_uwzglednic_alternatywna_nazwe}} - czy ma uwzględniać nazwę przestrzeni nazw domyślną szablonu, dostępne wartości: {{Code|false}}, w której nazwa domyślna nie jest uwzględniana wtedy, oraz {{Code|nil}} i {{Code|true}}, które oznaczają to samo, w tym jeżeli ona jest uwzględniana, wtedy jest brany parametr pierwszy dziecka, który musi istnieć przy takiej wartości tego parametru, tzn. {{Code|{{m|Pudełko|Nazwa przedmiotowej przestrzeni nazw 2|Szablon}}}}, a nazwa uzyskana nazwy przestrzeni nazw jest w takim przypadku błędna, a jeżeli nazwa domyślna jest błędna, czyli {{Code|{{m|Pudełko|Nazwa przedmiotowej przestrzeni nazw 2|Moja przestrzeń}}}}, wtedy funkcja zwraca stan błędu {{Code|(błąd)}}. * {{Code|i}} - numer zmiennej nazwy przestrzeni nazw. Funkcja wykorzystuje {{Code|{{sr|#p.Nazwa_przestrzeni_nazw_przedmiotowa_dyskusji_2(frame,...)|p=Pudełko/Pomocne}}}} do wyznaczania ogólnego nazwy przestrzeni nazw dla pozycji bazowej i numerkowej, tzn. dla pozycji: jeden, dwa, trzy,..., itd, i ich ogólnej. Parametr ramki tablicy transportu rodzica szablonu: * {{Code|nazwa przestrzeni nazw}}, {{Code|nazwa przestrzeni nazw 1}}, {{Code|nazwa przestrzeni nazw 2}}, {{Code|nazwa przestrzeni nazw 3}},..., {{Code|nazwa przestrzeni nazw i}} - nazwy przestrzeni nazw dla pozycji bazowej oraz zwykłej i ogólnej numerkowej, * {{Code|nazwa jednostki}}, {{Code|nazwa jednostki 1}}, {{Code|nazwa jednostki 2}}, {{Code|nazwa jednostki 3}},... - nazwy jednostek dla pozycji bazowej i numerkowej, * {{Code|typ jednostki}}, {{Code|typ jednostki 1}}, {{Code|typ jednostki 2}}, {{Code|typ jednostki 3}},..., {{Code|typ jednostki i}} - typy jednostek, którym odpowiadają pewne przestrzenie przedmiotowe, dla pozycji bazowej, numerkowej i ogólnej. Parametry ramki tablicy transportu dziecka: * Parametry dziecka są takie same jak rodzica dla funkcji pudełkowej plus tu wymienione, * {{Code|numer jednostki}} - jak parametr {{Code|i}} nie został ustawiony, to wtedy liczy się ta zmienna. Przykłady: <syntaxhighlight lang="mediawiki"> {{Nazwa szablonu|nazwa przestrzeni nazw=Wikibooks|nazwa przestrzeni nazw 1=Szablon|nazwa przestrzeni nazw i=|nazwa jednostki 2=Dyskusja Wikibooks:Strona}} </syntaxhighlight> W dziecku powiedzmy jest wywołanie, i szukamy nazwy przestrzeni nazw o numerze dwa, która została podana, ale istnieje za to jej wersji ogólna {{Code|nazwa przestrzeni nazw i}} i domyślna {{Code|nazwa przestrzeni nazw}}, ale wtedy dla tego numerkowego liczy się to ogólne z {{Code| i}}, a ponieważ ta nazwa jest pusta, więc będziemy liczyli nazwę przestrzeni nazw z {{Code|nazwa jednostki 2}}: <syntaxhighlight lang="mediawiki"> {{#invoke:Pudełko|Nazwa przedmiotowej przestrzeni nazw 2|numer jednostki=2}} </syntaxhighlight> Na podstawie powyższego przykładu otrzymamy wynik o schemacie, nie wyniku, bo tam nie ma zmiennej {{Code|nazwa przestrzeni nazw 1}}, ale jest {{Code|nazwa przestrzeni nazw i}}: <syntaxhighlight lang="mediawiki"> <!-- Ale nie "nazwa przestrzeni nazw 2", bo jej nie ma, ale za to istnieje "nazwa przestrzeni nazw i"; --> <!-- nazwa przestrzeni nazw 2=nazwa przestrzeni nazw i="", a nazwa jednostki 2="Dyskusja Wikibooks:Strona"; --> <!-- Czyli wynik: --> Wikibooks <!-- Widzimy, że wygenerowała się nazwa przestrzeni nazw, którą jest przestrzeń nieprogramowa, ale projektu, wychodząca z nazwy jednostek w tym przypadku z "nazwa jednostki 2"; --> </syntaxhighlight> Nie jest brana w tym powyższym przykładzie zmienna {{Code|nazwa przestrzeni nazw}}, bo jej nie ma, ale za to jest {{Code|nazwa przestrzeni nazw i}}, bo ona występuje jako parametr domyślny ogólny dla parametrów numerkowych. Tytaj jest używana jest zmienna {{Code|nazwa jednostki 2}} do wygenerowania ostatecznego wyniku, bo jak można zauważyć, parametry przestrzenne wskazują na przestrzeń główną, a nazwy jednostek już nie. Przykłady w wikikodzie: * {{Code|{{m|Pudełko|Nazwa przedmiotowej przestrzeni nazw 2|numer jednostki{{=}}2}}}} → {{Tt|{{#invoke:Pudełko|Nazwa przedmiotowej przestrzeni nazw 2|numer jednostki=2}}}} * {{Code|{{m|Pudełko|Nazwa przedmiotowej przestrzeni nazw 2|Dyskusja szablonu|nazwa przestrzeni nazw i{{=}}Moja przestrzeń|numer jednostki{{=}}2}}}} → {{Tt|{{#invoke:Pudełko|Nazwa przedmiotowej przestrzeni nazw 2|Dyskusja szablonu|nazwa przestrzeni nazw i=Moja przestrzeń|numer jednostki=2}}}} * {{Code|{{m|Pudełko|Nazwa przedmiotowej przestrzeni nazw 2|nazwa przestrzeni nazw 2{{=}}Dyskusja|nazwa jednostki 2{{=}}Dyskusja szablonu:Strona|numer jednostki{{=}}2}}}} → {{Tt|{{#invoke:Pudełko|Nazwa przedmiotowej przestrzeni nazw 2|nazwa przestrzeni nazw 2=Dyskusja|nazwa jednostki 2=Dyskusja szablonu:Strona|numer jednostki=2}}}} * {{Code|{{m|Pudełko|Nazwa przedmiotowej przestrzeni nazw 2|nazwa przestrzeni nazw i{{=}}Dyskusja|nazwa jednostki 2{{=}}Dyskusja szablonu:Strona|numer jednostki{{=}}2}}}} → {{Tt|{{#invoke:Pudełko|Nazwa przedmiotowej przestrzeni nazw 2|nazwa przestrzeni nazw i=Dyskusja|nazwa jednostki 2=Dyskusja szablonu:Strona|numer jednostki=2}}}} * {{Code|{{m|Pudełko|Nazwa przedmiotowej przestrzeni nazw 2|Dyskusja szablonu|nazwa przestrzeni nazw{{=}}Dyskusja|nazwa jednostki 2{{=}}Wikibooks:Strona|numer jednostki{{=}}2}}}} → {{Tt|{{#invoke:Pudełko|Nazwa przedmiotowej przestrzeni nazw 2|Dyskusja szablonu|nazwa przestrzeni nazw=Dyskusja|nazwa jednostki 2=Dyskusja Wikibooks:Strona|numer jednostki=2}}}} Powyżej dla przykładu podano parametry nie w rodzicu w szablonie, tylko w dziecku, jeśli chodzi o parametry nazw przestrzeni nazw i nazw jednostek, ale ich się za to nie powinno podawać w tych ramach, tylko w szablonach, w których wywoływane są te ramki pudełek {{Code|{{m|Pudełko}}}}, ale tak tutaj tak zrobiono by było najłatwiej sprawdzić działanie tego typu funkcji. Analogicznie możemy podawać parametry typu jednostki, np.: wywołaniu modułowym {{Code|{{m|Pudełko|Nazwa przedmiotowej przestrzeni nazw 2|typ jednostki 2{{=}}Podręcznik|nazwa jednostki 2{{=}}Dyskusja szablonu:Strona|numer jednostki{{=}}2}}}} (ale wtedy jest brana przestrzeń nazw z nazwy jednostki), ale o tym więcej w rozdziałach {{Code|{{sr|# p["Przedmiotowy typ jednostki 2"](frame,i)|p=Pudełko}}}} w „{{sr|#Funkcje typu jednostki|p=Pudełko}}”, on definiuje przestrzenie przedmiotowe, ale można użyć parametru dyskusji typu jednostki z wartością niepustą, pustą, czy nawet jej nie podamy, wtedy wyświetli się nazwa przestrzeni nazw przedmiotowej. Jeżeli typ jednostki wskazuje na przestrzeń nazw główną, wtedy się liczą parametry nazw jednostek. Również parametry typu jednostki nie powinno się podawać w dziecku w ramce, tylko w rodzicu w szablonie jako parametry, w którym ta ramka jest wywoływana, ale tutaj podano jedynie dla przykładu, jak najłatwiej sprawdzić działanie tych parametrów tej funkcji. Najpierw w funkcji nagłówku brane są parametry nazw przestrzeni nazw, a jeżeli ich nie ma, to parametry typu jednostki, a jeżeli nie ma lub parametry przestrzenne wskazują na przestrzeń główną, i nie ma nazwy jednostki, to generowane są nazwy tej funkcji na podstawie aktualnej strony. === {{Code|p["Nazwa przestrzeni nazw dyskusji 2"](frame,...)}} === Funkcja pisze nazwę przestrzeni nazw dyskusji jakikolwiek nazwy przestrzeni nazw (tzn. nazwę dyskusji nazwy przestrzenie nazw, czyli nie przedmiotowej, zamieniana jest na nią samą, czyli identyfikator przestrzeni się nie zmienia, a przedmiotową, nie dyskusji, przekształca się na dyskusji jej odpowiadającą, czyli w tym przypadku identyfikator przestrzeni zwiększa się o numer więcej), według, i nie zawsze tylko, podanej w zmiennej {{Code|nazwa przestrzeni nazw}} dla pozycja bazowej w podanych parametrach szablonu rodzicu ramki dziecka, lub dla innej pozycji należy parametr podawać w formie {{Code|nazwa przestrzeni nazw 1}}, {{Code|nazwa przestrzeni nazw 2}}, {{Code|nazwa przestrzeni nazw 3}},..., lub te parametry można podać w postaci ogólnej {{Code|nazwa przestrzeni nazw i}}. W tej funkcji trzeba też podawać parametry nazwy jednostek {{Code|nazwa jednostki}}, {{Code|nazwa jednostki 1}}, {{Code|nazwa jednostki 2}}, {{Code|nazwa jednostki 3}},... Parametry podaje się w parametrach rodzica wywołania tej funkcji {{Code|{{m|Pudełko|Nazwa przestrzeni nazw dyskusji 2}}}} (ale ich nie trzeba podawać w dziecku, ale można) i w parametrach dziecka, jeśli chodzi o zmienną {{Code|numer jednostki}}, czyli np.: {{Code|{{m|Pudełko|Nazwa przestrzeni nazw dyskusji 2|numer jednostki{{=}}<jakaś liczba całkowita dodatnia>}}}}. Te parametry przestrzenne zamiast w rodzicu w szablonie można podać w ramce dziecka, wtedy parametry dziecka mają pierwszeństwo. Przestrzeń nazw z parametrów nazw przestrzennych po przekształceniu na przedmiotową może odpowiadać wartości przestrzeni głównej, to wtedy odpowiednia przestrzeń nazw z parametru nazwy jednostki się liczy w tej funkcji, wtedy jest liczona nazwa przestrzeni nazw z tego parametru. Gdy parametry przestrzenne lub typ jednostki w drugim podejściu nie wskazują na przestrzeń główną, to wtedy działanie tej funkcji jest podobne do {{Code|{{sr|#p["Nazwa dyskusji przestrzeni nazw"](frame,...)|p=Pudełko}}}}. Definicja skrótowa funkcji: <syntaxhighlight lang="lua"> p["Nazwa przestrzeni nazw dyskusji 2"]=function(frame,czy_uwzglednic_alternatywna_nazwe,i)...end; </syntaxhighlight> Wtedy ciało funkcji tej, czyli jego definicja w środku, jest: <syntaxhighlight lang="lua"> local pudelko_pomocne_modul=require("Module:Pudełko/Pomocne"); return pudelko_pomocne_modul.Nazwa_przestrzeni_nazw_przedmiotowa_dyskusji_2(frame,czy_uwzglednic_alternatywna_nazwe,i,"dyskusja"); </syntaxhighlight> Parametry funkcji: * {{Code|frame}} - tablica ramki tablicy transportu, * {{Code|czy_uwzglednic_alternatywna_nazwe}} - czy ma uwzględniać nazwę przestrzeni nazw domyślną szablonu, dostępne wartości: {{Code|false}}, w której nazwa domyślna nie jest uwzględniana wtedy, oraz {{Code|nil}} i {{Code|true}}, które oznaczają to samo, w tym jeżeli ona jest uwzględniana, wtedy jest brany parametr pierwszy dziecka, który musi istnieć przy takiej wartości tego parametru, tzn. {{Code|{{m|Pudełko|Nazwa przestrzeni nazw dyskusji 2|Szablon}}}}, a nazwa uzyskana nazwy przestrzeni nazw jest w takim przypadku błędna, a jeżeli nazwa domyślna jest błędna, czyli {{Code|{{m|Pudełko|Nazwa przestrzeni nazw dyskusji 2|Moja przestrzeń}}}}, wtedy funkcja zwraca stan błędu {{Code|(błąd)}}. * {{Code|i}} - numer zmiennej nazwy przestrzeni nazw. Funkcja wykorzystuje {{Code|{{sr|#p.Nazwa_przestrzeni_nazw_przedmiotowa_dyskusji_2(frame,...)|p=Pudełko/Pomocne}}}} do wyznaczania ogólnego nazwy przestrzeni nazw dla pozycji bazowej i numerkowej, tzn. dla pozycji: jeden, dwa, trzy,..., itd, i ich ogólnej. Parametr ramki tablicy transportu rodzica szablonu: * {{Code|nazwa przestrzeni nazw}}, {{Code|nazwa przestrzeni nazw 1}}, {{Code|nazwa przestrzeni nazw 2}}, {{Code|nazwa przestrzeni nazw 3}},..., {{Code|nazwa przestrzeni nazw i}} - nazwy przestrzeni nazw dla pozycji bazowej oraz zwykłej i ogólnej numerkowej, * {{Code|nazwa jednostki}}, {{Code|nazwa jednostki 1}}, {{Code|nazwa jednostki 2}}, {{Code|nazwa jednostki 3}},... - nazwy jednostek dla pozycji bazowej i numerkowej, * {{Code|typ jednostki}}, {{Code|typ jednostki 1}}, {{Code|typ jednostki 2}}, {{Code|typ jednostki 3}},..., {{Code|typ jednostki i}} - typy jednostek, którym odpowiadają pewne przestrzenie przedmiotowe, dla pozycji bazowej, numerkowej i ogólnej. Parametry ramki tablicy transportu dziecka: * Parametry dziecka są takie same jak rodzica dla funkcji pudełkowej plus tu wymienione, * {{Code|numer jednostki}} - jak parametr {{Code|i}} nie został ustawiony, to wtedy liczy się ta zmienna. Przykłady: <syntaxhighlight lang="mediawiki"> {{Nazwa szablonu|nazwa przestrzeni nazw=Wikibooks|nazwa przestrzeni nazw 1=Szablon|nazwa przestrzeni nazw i=|nazwa jednostki 2=Wikibooks:Strona}} </syntaxhighlight> W dziecku powiedzmy jest wywołanie, i szukamy nazwy przestrzeni nazw o numerze dwa, która została podana, ale istnieje za to jej wersji ogólna {{Code|nazwa przestrzeni nazw i}} i domyślna {{Code|nazwa przestrzeni nazw}}, ale wtedy dla tego numerkowego liczy się to ogólne z {{Code| i}}, a ponieważ ta nazwa jest pusta, więc będziemy liczyli nazwę przestrzeni nazw z {{Code|nazwa jednostki 2}}: <syntaxhighlight lang="mediawiki"> {{#invoke:Pudełko|Nazwa przestrzeni nazw dyskusji 2|numer jednostki=2}} </syntaxhighlight> Na podstawie powyższego przykładu otrzymamy wynik o schemacie, nie wyniku, bo tam nie ma zmiennej {{Code|nazwa przestrzeni nazw 1}}, ale jest {{Code|nazwa przestrzeni nazw i}}: <syntaxhighlight lang="mediawiki"> <!-- Ale nie "nazwa przestrzeni nazw 2", bo jej nie ma, ale za to istnieje "nazwa przestrzeni nazw i"; --> <!-- nazwa przestrzeni nazw 2=nazwa przestrzeni nazw i="", a nazwa jednostki 2="Wikibooks:Strona"; --> <!-- Czyli wynik: --> Dyskusja Wikibooks <!-- Widzimy, że wygenerowała się nazwa przestrzeni nazw, którą jest przestrzeń nieprogramowa, ale dyskusji projektu, wychodząca z nazwy jednostek w tym przypadku z "nazwa jednostki 2"; --> </syntaxhighlight> Nie jest brana w tym powyższym przykładzie zmienna {{Code|nazwa przestrzeni nazw}}, bo jej nie ma, ale za to jest {{Code|nazwa przestrzeni nazw i}}, bo ona występuje jako parametr domyślny ogólny dla parametrów numerkowych. Tytaj jest używana jest zmienna {{Code|nazwa jednostki 2}} do wygenerowania ostatecznego wyniku, bo jak można zauważyć, parametry przestrzenne wskazują na przestrzeń główną, a nazwy jednostek już nie. Przykłady w wikikodzie: * {{Code|{{m|Pudełko|Nazwa przestrzeni nazw dyskusji 2|numer jednostki{{=}}2}}}} → {{Tt|{{#invoke:Pudełko|Nazwa przestrzeni nazw dyskusji 2|numer jednostki=2}}}} * {{Code|{{m|Pudełko|Nazwa przestrzeni nazw dyskusji 2|Szablon|nazwa przestrzeni nazw i{{=}}Moja przestrzeń|numer jednostki{{=}}2}}}} → {{Tt|{{#invoke:Pudełko|Nazwa przestrzeni nazw dyskusji 2|Szablon|nazwa przestrzeni nazw i=Moja przestrzeń|numer jednostki=2}}}} * {{Code|{{m|Pudełko|Nazwa przestrzeni nazw dyskusji 2|nazwa przestrzeni nazw 2{{=}}|nazwa jednostki 2{{=}}Szablon:Strona|numer jednostki{{=}}2}}}} → {{Tt|{{#invoke:Pudełko|Nazwa przestrzeni nazw dyskusji 2|nazwa przestrzeni nazw 2=|nazwa jednostki 2=Szablon:Strona|numer jednostki=2}}}} * {{Code|{{m|Pudełko|Nazwa przestrzeni nazw dyskusji 2|nazwa przestrzeni nazw i{{=}}|nazwa jednostki 2{{=}}Szablon:Strona|numer jednostki{{=}}2}}}} → {{Tt|{{#invoke:Pudełko|Nazwa przestrzeni nazw dyskusji 2|nazwa przestrzeni nazw i=|nazwa jednostki 2=Szablon:Strona|numer jednostki=2}}}} * {{Code|{{m|Pudełko|Nazwa przestrzeni nazw dyskusji 2|Szablon|nazwa przestrzeni nazw{{=}}|nazwa jednostki 2{{=}}Wikibooks:Strona|numer jednostki{{=}}2}}}} → {{Tt|{{#invoke:Pudełko|Nazwa przestrzeni nazw dyskusji 2|Szablon|nazwa przestrzeni nazw=|nazwa jednostki 2=Dyskusja Wikibooks:Strona|numer jednostki=2}}}} Powyżej dla przykładu podano parametry nie w rodzicu w szablonie, tylko w dziecku, jeśli chodzi o parametry nazw przestrzeni nazw i nazw jednostek, ale ich się za to nie powinno podawać w tych ramach, tylko w szablonach, w których wywoływane są te ramki pudełek {{Code|{{m|Pudełko}}}}, ale tak tutaj tak zrobiono by było najłatwiej sprawdzić działanie tego typu funkcji. Analogicznie możemy podawać parametry typu jednostki, np.: wywołaniu modułowym {{Code|{{m|Pudełko|Nazwa przestrzeni nazw dyskusji 2|typ jednostki 2{{=}}Podręcznik|nazwa jednostki 2{{=}}Szablon:Strona|numer jednostki{{=}}2}}}} (ale wtedy jest brana przestrzeń nazw z nazwy jednostki), ale o tym więcej w rozdziałach {{Code|{{sr|# p["Dyskusyjny typ jednostki 2"](frame,i)|p=Pudełko}}}} w „{{sr|#Funkcje typu jednostki|p=Pudełko}}”, on definiuje przestrzenie dyskusji, ale można użyć parametru dyskusji typu jednostki z obojętnie jaką wartością niepustą, czy pustą, czy nawet jej nie podamy, wtedy wyświetli się nazwa przestrzeni nazw dyskusji. Jeżeli typ jednostki wskazuje na przestrzeń nazw główną, wtedy się liczą parametry nazw jednostek. Również parametry typu jednostki nie powinno się podawać w dziecku w ramce, tylko w rodzicu w szablonie jako parametry, w którym ta ramka jest wywoływana, ale tutaj podano jedynie dla przykładu, jak najłatwiej sprawdzić działanie tych parametrów tej funkcji. Najpierw w funkcji nagłówku brane są parametry nazw przestrzeni nazw, a jeżeli ich nie ma, to parametry typu jednostki, a jeżeli nie ma lub parametry przestrzenne wskazują na przestrzeń główną, i nie ma nazwy jednostki, to generowane są nazwy tej funkcji na podstawie aktualnej strony. == Funkcje pełnych nazw jednostki == === {{Code|p["Pełna nazwa dyskusji jednostki"](frame,i)}} === === {{Code|p["Pełna nazwa przedmiotowa jednostki"](frame,i)}} === === {{Code|p["Pełna nazwa jednostki"](frame,i)}} === == Funkcje pełnych nazw jednostki drugiej wersji == === {{Code|p["Pełna nazwa dyskusji jednostki 2"](frame,i)}} === === {{Code|p["Pełna nazwa przedmiotowa jednostki 2"](frame,i)}} === === {{Code|p["Pełna nazwa jednostki 2"](frame,i)}} === == Funkcje pełnych nazw jednostki trzeciej wersji == === {{Code|p["Pełna nazwa dyskusji jednostki 3"](frame,i)}} === === {{Code|p["Pełna nazwa przedmiotowa jednostki 3"](frame,i)}} === === {{Code|p["Pełna nazwa jednostki 3"](frame,i)}} === == Funkcje nazw jednostki == === {{Code|p["Nazwa jednostki"](frame,i)}} === == Funkcje nazw jednostki drugiej wersji == === {{Code|p["Nazwa jednostki 2"](frame,i)}} === === {{Code|p["Nazwa przedmiotowa jednostki 2"](frame,i)}} === === {{Code|p["Nazwa dyskusji jednostki 2"](frame,i)}} === == Funkcje nazw przestrzeni nazw trzeciej wersji == === {{Code|p["Nazwa przestrzeni nazw 3"](frame,i)}} === Funkcja pisze nazwę przestrzeni nazw, niezależnie, czy to jest przedmiotowa, czy dyskusji, według, i nie zawsze tylko, podanej w zmiennej {{Code|nazwa przestrzeni nazw}} dla pozycja bazowej w podanych parametrach szablonu rodzicu ramki dziecka, lub dla innej pozycji należy parametr podawać w formie {{Code|nazwa przestrzeni nazw 1}}, {{Code|Nazwa przestrzeni nazw 3}}, {{Code|nazwa przestrzeni nazw 3}},..., lub te parametry można podać w postaci ogólnej {{Code|nazwa przestrzeni nazw i}}. W tej funkcji trzeba też podawać parametry nazwy jednostek {{Code|nazwa jednostki}}, {{Code|nazwa jednostki 1}}, {{Code|nazwa jednostki 2}}, {{Code|nazwa jednostki 3}},... Parametry podaje się w parametrach rodzica wywołania tej funkcji {{Code|{{m|Pudełko|Nazwa przestrzeni nazw 3}}}} (ale ich nie trzeba podawać w dziecku, ale można) i w parametrach dziecka, jeśli chodzi o zmienną {{Code|numer jednostki}}, czyli np.: {{Code|{{m|Pudełko|Nazwa przestrzeni nazw 3|numer jednostki{{=}}<jakaś liczba całkowita dodatnia>}}}}. Te parametry przestrzenne zamiast w rodzicu w szablonie można podać w ramce dziecka, wtedy parametry dziecka mają pierwszeństwo. Przestrzeń nazw z parametrów nazw przestrzennych bazowych (bez numerka) może odpowiadać wartości przestrzeni głównej, to wtedy odpowiednia przestrzeń nazw z parametru nazwy jednostki się nie liczy w tej funkcji, aby się liczyła należy użyć funkcji {{Code|{{sr|#p["Nazwa przestrzeni nazw"](frame,...)|p=Pudełko}}}}. Przestrzeń nazw z parametrów nazw przestrzennych numerkowych może odpowiadać wartości przestrzeni głównej, to wtedy odpowiednia przestrzeń nazw z parametru nazwy jednostki się liczy w tej funkcji, wtedy jest liczona nazwa przestrzeni nazw z tego parametru. Gdy parametry przestrzenne lub typ jednostki w drugim podejściu nie wskazują na przestrzeń główną, to wtedy działanie tej funkcji jest podobne do {{Code|{{sr|#p["Nazwa przestrzeni nazw 2"](frame,...)|p=Pudełko}}}}. Definicja skrótowa funkcji: <syntaxhighlight lang="lua"> p["Nazwa przestrzeni nazw 3"]=function(frame,czy_uwzglednic_alternatywna_nazwe,i)...end; </syntaxhighlight> Wtedy ciało funkcji tej, czyli jego definicja w środku, jest: <syntaxhighlight lang="lua"> -- Jest liczony numer parametru nazwy przestrzeni nazw, domyslnie chodzi tu o numer bazowy parametrów przestrzennych; local numer_jednostki=i or frame.args["numer jednostki"]; local liczba_numeru_jednostki=((numer_jednostki)and(tonumber(numer_jednostki)) or 0); local pudelko_pomocne_modul=require("Module:Pudełko/Pomocne"); -- Liczy nazwę przestrzeni nazw dyskusji na podstawie podanych parametrów; return pudelko_pomocne_modul.Uzyskanie_nazw_jednostki(frame,0,liczba_numeru_jednostki,nil,2); </syntaxhighlight> Parametry funkcji: * {{Code|frame}} - tablica ramki tablicy transportu, * {{Code|czy_uwzglednic_alternatywna_nazwe}} - czy ma uwzględniać nazwę przestrzeni nazw domyślną szablonu, dostępne wartości: {{Code|false}}, w której nazwa domyślna nie jest uwzględniana wtedy, oraz {{Code|nil}} i {{Code|true}}, które oznaczają to samo, w tym jeżeli ona jest uwzględniana, wtedy jest brany parametr pierwszy dziecka, który musi istnieć przy takiej wartości tego parametru, tzn. {{Code|{{m|Pudełko|Nazwa przestrzeni nazw 3|Szablon}}}}, a nazwa uzyskana nazwy przestrzeni nazw jest w takim przypadku błędna, a jeżeli nazwa domyślna jest błędna, czyli {{Code|{{m|Pudełko|Nazwa przestrzeni nazw 3|Moja przestrzeń}}}}, wtedy funkcja zwraca stan błędu {{Code|(błąd)}}. * {{Code|i}} - numer zmiennej nazwy przestrzeni nazw. Funkcja wykorzystuje {{Code|{{sr|#p.Uzyskanie_nazw_jednostki(frame,...)|p=Pudełko/Pomocne}}}} do wyznaczania ogólnego nazwy przestrzeni nazw dla pozycji bazowej i numerkowej, tzn. dla pozycji: jeden, dwa, trzy,..., itd, i ich ogólnej. Parametr ramki tablicy transportu rodzica szablonu: * {{Code|nazwa przestrzeni nazw}}, {{Code|nazwa przestrzeni nazw 1}}, {{Code|Nazwa przestrzeni nazw 3}}, {{Code|nazwa przestrzeni nazw 3}},..., {{Code|nazwa przestrzeni nazw i}} - nazwy przestrzeni nazw dla pozycji bazowej oraz zwykłej i ogólnej numerkowej, * {{Code|nazwa jednostki}}, {{Code|nazwa jednostki 1}}, {{Code|nazwa jednostki 2}}, {{Code|nazwa jednostki 3}},... - nazwy jednostek dla pozycji bazowej i numerkowej, * {{Code|typ jednostki}}, {{Code|typ jednostki 1}}, {{Code|typ jednostki 2}}, {{Code|typ jednostki 3}},..., {{Code|typ jednostki i}} - typy jednostek, którym odpowiadają pewne przestrzenie przedmiotowe, dla pozycji bazowej, numerkowej i ogólnej, ** {{Code|dyskusja typu jednostki}}, {{Code|dyskusja typu jednostki 1}}, {{Code|dyskusja typ jednostki 2}}, {{Code|dyskusja typ jednostki 3}},..., {{Code|dyskusja typ jednostki i}} - czy dany typ jednostki ma przedstawiać, jeśli niepusta, przestrzeń dyskusji dla pozycji bazowej, numerkowej i ogólnej. Parametry ramki tablicy transportu dziecka: * Parametry dziecka są takie same jak rodzica dla funkcji pudełkowej plus tu wymienione, * {{Code|numer jednostki}} - jak parametr {{Code|i}} nie został ustawiony, to wtedy liczy się ta zmienna. Przykłady: <syntaxhighlight lang="mediawiki"> {{Nazwa szablonu 1|nazwa przestrzeni nazw=Wikibooks|nazwa przestrzeni nazw=|nazwa przestrzeni nazw i=|nazwajednostki=Szablon:Strona|nazwa jednostki 2=Wikibooks:Strona}} <hr /> {{Nazwa szablonu 2|nazwa przestrzeni nazw=Wikibooks|nazwa przestrzeni nazw 1=Szablon|nazwa przestrzeni nazw i=|nazwa jednostki 2=Wikibooks:Strona}} </syntaxhighlight> W dziecku powiedzmy jest wywołanie, i szukamy nazwy przestrzeni nazw o numerze dwa, która została podana, ale istnieje za to jej wersji ogólna {{Code|nazwa przestrzeni nazw i}} i domyślna {{Code|nazwa przestrzeni nazw}}, ale wtedy dla tego numerkowego liczy się to ogólne z {{Code| i}}, a ponieważ ta nazwa jest pusta, więc będziemy liczyli nazwę przestrzeni nazw z {{Code|nazwa jednostki 2}}: <syntaxhighlight lang="mediawiki"> {{#invoke:Pudełko|Nazwa przestrzeni nazw 3}} <hr /> {{#invoke:Pudełko|Nazwa przestrzeni nazw 3|numer jednostki=2}} </syntaxhighlight> Na podstawie powyższego przykładu otrzymamy wynik o schemacie, nie wyniku, bo tam nie ma zmiennej {{Code|nazwa przestrzeni nazw 1}}, ale jest {{Code|nazwa przestrzeni nazw i}}: <syntaxhighlight lang="mediawiki"> <!-- Ale nie "nazwa przestrzeni nazw""; --> <!-- nazwa przestrzeni nazw=""; --> <!-- Czyli wynik: --> <!-- wynik pusty --> <!-- Widzimy, że wygenerowała się nazwa przestrzeni nazw, którą jest przestrzeń nazw główna, jest ciągiem pustym: ""; --> <hr /> <!-- Ale nie "Nazwa przestrzeni nazw 2", bo jej nie ma, ale za to istnieje "nazwa przestrzeni nazw i"; --> <!-- nazwa przestrzeni nazw 2=nazwa przestrzeni nazw i="", a nazwa jednostki 2="Wikibooks:Strona"; --> <!-- Czyli wynik: --> Wikibooks <!-- Widzimy, że wygenerowała się nazwa przestrzeni nazw, którą jest przestrzeń nieprogramowa, ale projektu, wychodząca z nazwy jednostek w tym przypadku z "nazwa jednostki 2"; --> </syntaxhighlight> Dla parametrów numerkowych nie jest brana w tym powyższym przykładzie zmienna {{Code|nazwa przestrzeni nazw 2}}, bo jej nie ma, ale za to jest {{Code|nazwa przestrzeni nazw i}}, bo ona występuje jako parametr domyślny ogólny dla parametrów numerkowych. Tytaj jest używana jest zmienna {{Code|nazwa jednostki 2}} do wygenerowania ostatecznego wyniku, bo jak można zauważyć, parametry przestrzenne wskazują na przestrzeń główną, a nazwy jednostek już nie. Dla parametrów bazowych mamy zmienną {{Code|nazwa przestrzeni nazw}}, ona jest pusta, więc to zostanie wziete do ostatecznego wyniku. Przykłady w wikikodzie: * {{Code|{{m|Pudełko|Nazwa przestrzeni nazw 3|nazwa przestrzeni nazw{{=}}|nazwa jednostki{{=}}Wikibooks:Strona}}}} → {{Tt|{{#invoke:Pudełko|Nazwa przestrzeni nazw 3|nazwa przestrzeni nazw=|nazwa jednostki=Wikibooks:Szablon}}}} * {{Code|{{m|Pudełko|Nazwa przestrzeni nazw 3|nazwa przestrzeni nazw 2{{=}}|nazwa jednostki 2{{=}}Wikibooks:Strona|numer jednostki{{=}}2}}}} → {{Tt|{{#invoke:Pudełko|Nazwa przestrzeni nazw 3|nazwa przestrzeni nazw 2=|nazwa jednostki 2=Wikibooks:Szablon|numer jednostki=2}}}} Powyżej dla przykładu podano parametry nie w rodzicu w szablonie, tylko w dziecku, jeśli chodzi o parametry nazw przestrzeni nazw i nazw jednostek, ale ich się za to nie powinno podawać w tych ramach, tylko w szablonach, w których wywoływane są te ramki pudełek {{Code|{{m|Pudełko}}}}, ale tak tutaj tak zrobiono by było najłatwiej sprawdzić działanie tego typu funkcji. Analogicznie możemy podawać parametry typu jednostki, np.: wywołaniu modułowym {{Code|{{m|Pudełko|Nazwa przestrzeni nazw 3|typ jednostki 2{{=}}Podręcznik|nazwa jednostki 2{{=}}Szablon:Strona|numer jednostki{{=}}2}}}} (ale wtedy jest brana przestrzeń nazw z nazwy jednostki), ale o tym więcej w rozdziałach {{Code|{{sr|#p["Typ jednostki 3"](frame,i)|p=Pudełko}}}} w „{{sr|#Funkcje typu jednostki|p=Pudełko}}”, on definiuje przestrzenie przedmiotowe, ale można użyć parametru dyskusji typu jednostki z wartością niepustą, wtedy wyświetli się nazwa przestrzeni nazw dyskusji. Jeżeli typ jednostki bazowy wskazuje na przestrzeń nazw główną, wtedy się nie liczą parametry nazw jednostek, a na numerkowy, wtedy się liczy. Również parametry typu jednostki nie powinno się podawać w dziecku w ramce, tylko w rodzicu w szablonie jako parametry, w którym ta ramka jest wywoływana, ale tutaj podano jedynie dla przykładu, jak najłatwiej sprawdzić działanie tych parametrów tej funkcji. Najpierw w funkcji nagłówku brane są parametry nazw przestrzeni nazw, a jeżeli ich nie ma, to parametry typu jednostki, a jeżeli nie ma lub parametry przestrzenne wskazują na przestrzeń główną, i nie ma nazwy jednostki, to generowane są nazwy tej funkcji na podstawie aktualnej strony. === {{Code|p["Nazwa przedmiotowej przestrzeni nazw 3"](frame,i)}} === Funkcja pisze przedmiotową nazwę przestrzeni nazw jakikolwiek nazwy przestrzeni nazw (tzn. nazwę przedmiotową nazwy przestrzenie nazw, czyli nie dyskusji, zamieniana jest na nią samą, czyli identyfikator przestrzeni się nie zmienia, a dyskusji, nie przedmiotową, przekształca się na przedmiotową jej odpowiadającą, czyli w tym przypadku identyfikator przestrzeni zmniejsza się o numer mniej), według podanej w zmiennej {{Code|nazwa przestrzeni nazw}} dla pozycja bazowej w podanych parametrach szablonu rodzicu ramki dziecka, lub dla innej pozycji należy parametr podawać w formie {{Code|nazwa przestrzeni nazw 1}}, {{Code|nazwa przestrzeni nazw 2}}, {{Code|nazwa przestrzeni nazw 3}},..., lub te parametry można podać w postaci ogólnej {{Code|nazwa przestrzeni nazw i}}. Parametry podaje się w parametrach rodzica wywołania tej funkcji {{Code|{{m|Pudełko|Nazwa przedmiotowej przestrzeni nazw 3}}}} (ale ich nie trzeba podawać w dziecku, ale można) i w parametrach dziecka, jeśli chodzi o zmienną {{Code|numer jednostki}}, czyli np.: {{Code|{{m|Pudełko|Nazwa przedmiotowej przestrzeni nazw 3|numer jednostki{{=}}<jakaś liczba całkowita dodatnia>}}}}. Te parametry przestrzenne zamiast w rodzicu w szablonie można podać w ramce dziecka, wtedy parametry dziecka mają pierwszeństwo. Parametry przestrzenne mogą mogą być podane w postaci przestrzeni przedmiotowej lub dyskusji, ale ta funkcja zawsze ją zamienia na przedmiotową. Przestrzeń nazw z parametrów nazw przestrzennych bazowych (bez numerka) może odpowiadać wartości przestrzeni głównej, to wtedy odpowiednia przestrzeń nazw z parametru nazwy jednostki się nie liczy w tej funkcji, aby się liczyła należy użyć funkcji {{Code|{{sr|#p["Nazwa przedmiotowej przestrzeni nazw"](frame,...)|p=Pudełko}}}}. Przestrzeń nazw z parametrów nazw przestrzennych numerkowych może odpowiadać wartości przestrzeni głównej, to wtedy odpowiednia przestrzeń nazw z parametru nazwy jednostki się liczy w tej funkcji, wtedy jest liczona nazwa przestrzeni nazw z tego parametru. Gdy parametry przestrzenne lub typ jednostki w drugim podejściu nie wskazują na przestrzeń główną, to wtedy działanie tej funkcji jest podobne do {{Code|{{sr|#p["Nazwa przedmiotowej przestrzeni nazw 2"](frame,...)|p=Pudełko}}}}. Definicja skrótowa funkcji: <syntaxhighlight lang="lua"> p["Nazwa przedmiotowej przestrzeni nazw 3"]=function(frame,czy_uwzglednic_alternatywna_nazwe,i)...end; </syntaxhighlight> Wtedy ciało funkcji tej, czyli jego definicja w środku, jest: <syntaxhighlight lang="lua"> -- Jest liczony numer parametru nazwy przestrzeni nazw, domyslnie chodzi tu o numer bazowy parametrów przestrzennych; local numer_jednostki=i or frame.args["numer jednostki"]; local liczba_numeru_jednostki=((numer_jednostki)and(tonumber(numer_jednostki)) or 0); local pudelko_pomocne_modul=require("Module:Pudełko/Pomocne"); -- Liczy nazwę przestrzeni nazw przedmiotową na podstawie podanych parametrów; return pudelko_pomocne_modul.Uzyskanie_nazw_jednostki(frame,1,liczba_numeru_jednostki,nil,1); </syntaxhighlight> Parametry funkcji: * {{Code|frame}} - tablica ramki tablicy transportu, * {{Code|czy_uwzglednic_alternatywna_nazwe}} - czy ma uwzględniać nazwę przestrzeni nazw domyślną szablonu, dostępne wartości: {{Code|false}}, w której nazwa domyślna nie jest uwzględniana wtedy, oraz {{Code|nil}} i {{Code|true}}, które oznaczają to samo, w tym jeżeli ona jest uwzględniana, wtedy jest brany parametr pierwszy dziecka, który musi istnieć przy takiej wartości tego parametru, tzn. {{Code|{{m|Pudełko|Nazwa przedmiotowej przestrzeni nazw 3|Dyskusja szablonu}}}} - ta nazwa domyślna zostanie zamieniona na przedmiotową, a jak ona by była przedmiotowa, to żadnej zamiany by nie było, a nazwa uzyskana z nazwy przestrzeni nazw z parametrów przestrzennych jest w takim przypadku błędna, to w takim razie brany jest ten parametr, a jeżeli ta nazwa domyślna jest błędna, czyli {{Code|{{m|Pudełko|Nazwa przedmiotowej przestrzeni nazw 3|Moja przestrzeń}}}}, wtedy funkcja zwraca stan błędu {{Code|(błąd)}}. * {{Code|i}} - numer zmiennej nazwy przestrzeni nazw. Funkcja wykorzystuje {{Code|{{sr|#p.Uzyskanie_nazw_jednostki(frame,...)|p=Pudełko/Pomocne}}}} do wyznaczania ogólnego nazwy przestrzeni nazw dla pozycji bazowej i numerkowej, tzn. dla pozycji: jeden, dwa, trzy,..., itd, i ich ogólnej. Parametr ramki tablicy transportu rodzica szablonu: * {{Code|nazwa przestrzeni nazw}}, {{Code|nazwa przestrzeni nazw 1}}, {{Code|nazwa przestrzeni nazw 2}}, {{Code|nazwa przestrzeni nazw 3}},..., {{Code|nazwa przestrzeni nazw i}} - nazwy przestrzeni nazw dla pozycji bazowej oraz zwykłej i ogólnej numerkowej, * {{Code|typ jednostki}}, {{Code|typ jednostki 1}}, {{Code|typ jednostki 2}}, {{Code|typ jednostki 3}},..., {{Code|typ jednostki i}} - typy jednostek, którym odpowiadają pewne przestrzenie przedmiotowe, dla pozycji bazowej, numerkowej i ogólnej. Parametry ramki tablicy transportu dziecka: * Parametry dziecka są takie same jak rodzica dla funkcji pudełkowej plus tu wymienione, * {{Code|numer jednostki}} - jak parametr {{Code|i}} nie został ustawiony, to wtedy liczy się ta zmienna. Przykłady: <syntaxhighlight lang="mediawiki"> {{Nazwa szablonu 1|nazwa przestrzeni nazw=Wikibooks|nazwa przestrzeni nazw=|nazwa przestrzeni nazw i=|nazwa jednostki=Dyskusja Wikibooks:Strona}} <hr /> {{Nazwa szablonu 2|nazwa przestrzeni nazw=Wikibooks|nazwa przestrzeni nazw 1=Szablon|nazwa przestrzeni nazw i=|nazwa jednostki 2=Dyskusja Wikibooks:Strona}} </syntaxhighlight> Kolejno wywołania te są równowaażne: <syntaxhighlight lang="mediawiki"> {{#invoke:Pudełko|Nazwa przedmiotowej przestrzeni nazw 3}} <hr /> {{#invoke:Pudełko|Nazwa przedmiotowej przestrzeni nazw 3|numer jednostki=2}} </syntaxhighlight> Na podstawie powyższego przykładu otrzymamy wynik o schemacie, nie wyniku, bo tam nie ma zmiennej {{Code|nazwa przestrzeni nazw 1}}, ale jest {{Code|nazwa przestrzeni nazw i}}: <syntaxhighlight lang="mediawiki"> <!-- Ale nie "nazwa przestrzeni nazw""; --> <!-- nazwa przestrzeni nazw=""; --> <!-- Czyli wynik: --> <!-- wynik pusty --> <!-- Widzimy, że wygenerowała się nazwa przestrzeni nazw, którą jest przestrzeń nazw główna, jest ciągiem pustym: ""; --> <hr /> <!-- Ale nie "Nazwa przestrzeni nazw 2", bo jej nie ma, ale za to istnieje "nazwa przestrzeni nazw i"; --> <!-- nazwa przestrzeni nazw 2=nazwa przestrzeni nazw i="", a nazwa jednostki 2="Dyskusja Wikibooks:Strona"; --> <!-- Czyli wynik: --> Wikibooks <!-- Widzimy, że wygenerowała się nazwa przestrzeni nazw, którą jest przestrzeń nieprogramowa, ale projektu, wychodząca z nazwy jednostek w tym przypadku z "nazwa jednostki 2"; --> </syntaxhighlight> Dla parametrów numerkowych nie jest brana w tym powyższym przykładzie zmienna {{Code|nazwa przestrzeni nazw 2}}, bo jej nie ma, ale za to jest {{Code|nazwa przestrzeni nazw i}}, bo ona występuje jako parametr domyślny ogólny dla parametrów numerkowych. Tytaj jest używana jest zmienna {{Code|nazwa jednostki 2}} do wygenerowania ostatecznego wyniku, bo jak można zauważyć, parametry przestrzenne wskazują na przestrzeń główną, a nazwy jednostek już nie. Dla parametrów bazowych mamy zmienną {{Code|nazwa przestrzeni nazw}}, ona jest pusta, więc to zostanie wziete do ostatecznego wyniku. Przykłady w wikikodzie: * {{Code|{{m|Pudełko|Nazwa przestrzeni nazw 3|nazwa przestrzeni nazw{{=}}|nazwa jednostki{{=}}Dyskusja Wikibooks:Strona}}}} → {{Tt|{{#invoke:Pudełko|Nazwa przestrzeni nazw 3|nazwa przestrzeni nazw=|nazwa jednostki=Dyskusja Wikibooks:Szablon}}}} * {{Code|{{m|Pudełko|Nazwa przestrzeni nazw 3|nazwa przestrzeni nazw 2{{=}}|nazwa jednostki 2{{=}}Dyskusja Wikibooks:Strona|numer jednostki{{=}}2}}}} → {{Tt|{{#invoke:Pudełko|Nazwa przestrzeni nazw 3|nazwa przestrzeni nazw 2=|nazwa jednostki 2=Dyskusja Wikibooks:Szablon|numer jednostki=2}}}} Powyżej dla przykładu podano parametry nie w rodzicu w szablonie, tylko w dziecku, jeśli chodzi o parametry nazw przestrzeni nazw, ale ich się za to nie powinno podawać w tych ramach, tylko w szablonach, w których wywoływane są te ramki pudełek {{Code|{{m|Pudełko}}}}, ale tak tutaj tak zrobiono by było najłatwiej sprawdzić działanie tego typu funkcji. Analogicznie możemy podawać parametry typu jednostki, np.: wywołaniu modułowym {{Code|{{m|Pudełko|Nazwa przedmiotowej przestrzeni nazw 3|typ jednostki 2{{=}}strona szablonu|numer jednostki{{=}}2}}}}, ale o tym więcej w rozdziałach {{Code|{{sr|# p["Przedmiotowy typ jednostki 3"](frame,i)|p=Pudełko}}}} w „{{sr|#Funkcje typu jednostki|p=Pudełko}}”, ale wtedy ta sama nazwa przestrzeni nazw reprezentowana przez {{Parametr|typ jednostki 2|strona szablonu}}, jest zamieniana na to samo, lepiej jest tutaj używać parametrów przestrzennych nazw niż typu jednostki, bo typ jednostki ma taką samą wartość dla przestrzeni przedmiotowej, co dyskusji. Tutaj parametr dyskusji typu jednostki bazowy i numerkowy ogólny, czy szczegółowy, nie gra roli, bo nawet, gdy wygenerujemy nazwę przestrzeni dyskusji za pomoca tego parametru, to i tak otrzymamy na samym końcu jego nazwę przedmiotową. Jeżeli typ jednostki bazowy wskazuje na przestrzeń nazw główną, wtedy się nie liczą parametry nazw jednostek, a na numerkowy, wtedy się liczy. Również parametry typu jednostki nie powinno się podawać w dziecku w ramce, tylko w rodzicu w szablonie jako parametry, w którym ta ramka jest wywoływana, ale tutaj podano jedynie dla przykładu, jak najłatwiej sprawdzić działanie tych parametrów tej funkcji. Najpierw w funkcji nagłówku brane są parametry nazw przestrzeni nazw, a jeżeli ich nie ma, to parametry typu jednostki, a jeżeli nie ma, to generowane są nazwy na podstawie aktualnego modułu. === {{Code|p["Nazwa przestrzeni nazw dyskusji 3"](frame,i)}} === Funkcja pisze nazwę przestrzeni nazw dyskusji jakikolwiek nazwy przestrzeni nazw (tzn. nazwę dyskusji nazwy przestrzenie nazw, czyli nie przedmiotowej, zamieniana jest na nią samą, czyli identyfikator przestrzeni się nie zmienia, a przedmiotową, nie dyskusji, przekształca się na dyskusji jej odpowiadającą, czyli w tym przypadku identyfikator przestrzeni zwiększa się o numer więcej), według, i nie zawsze tylko, podanej w zmiennej {{Code|nazwa przestrzeni nazw}} dla pozycja bazowej w podanych parametrach szablonu rodzicu ramki dziecka, lub dla innej pozycji należy parametr podawać w formie {{Code|nazwa przestrzeni nazw 1}}, {{Code|nazwa przestrzeni nazw 2}}, {{Code|nazwa przestrzeni nazw 3}},..., lub te parametry można podać w postaci ogólnej {{Code|nazwa przestrzeni nazw i}}. W tej funkcji trzeba też podawać parametry nazwy jednostek {{Code|nazwa jednostki}}, {{Code|nazwa jednostki 1}}, {{Code|nazwa jednostki 2}}, {{Code|nazwa jednostki 3}},... Parametry podaje się w parametrach rodzica wywołania tej funkcji {{Code|{{m|Pudełko|Nazwa przestrzeni nazw dyskusji 3}}}} (ale ich nie trzeba podawać w dziecku, ale można) i w parametrach dziecka, jeśli chodzi o zmienną {{Code|numer jednostki}}, czyli np.: {{Code|{{m|Pudełko|Nazwa przestrzeni nazw dyskusji 3|numer jednostki{{=}}<jakaś liczba całkowita dodatnia>}}}}. Te parametry przestrzenne zamiast w rodzicu w szablonie można podać w ramce dziecka, wtedy parametry dziecka mają pierwszeństwo. Przestrzeń nazw z parametrów nazw przestrzennych bazowych (bez numerka) może odpowiadać wartości przestrzeni głównej, to wtedy odpowiednia przestrzeń nazw z parametru nazwy jednostki się nie liczy w tej funkcji, aby się liczyła należy użyć funkcji {{Code|{{sr|#p["Nazwa przestrzeni nazw dyskusji"](frame,...)|p=Pudełko}}}}. Przestrzeń nazw z parametrów nazw przestrzennych numerkowych może odpowiadać wartości przestrzeni głównej, to wtedy odpowiednia przestrzeń nazw z parametru nazwy jednostki się liczy w tej funkcji, wtedy jest liczona nazwa przestrzeni nazw z tego parametru. Gdy parametry przestrzenne lub typ jednostki w drugim podejściu nie wskazują na przestrzeń główną, to wtedy działanie tej funkcji jest podobne do {{Code|{{sr|#p["Nazwa przestrzeni nazw dysskusji 2"](frame,...)|p=Pudełko}}}}. Definicja skrótowa funkcji: <syntaxhighlight lang="lua"> p["Nazwa przestrzeni nazw dyskusji 3"]=function(frame,czy_uwzglednic_alternatywna_nazwe,i)...end; </syntaxhighlight> Wtedy ciało funkcji tej, czyli jego definicja w środku, jest: <syntaxhighlight lang="lua"> -- Jest liczony numer parametru nazwy przestrzeni nazw, domyslnie chodzi tu o numer bazowy parametrów przestrzennych; local numer_jednostki=i or frame.args["numer jednostki"]; local liczba_numeru_jednostki=((numer_jednostki)and(tonumber(numer_jednostki)) or 0); local pudelko_pomocne_modul=require("Module:Pudełko/Pomocne"); -- Liczy nazwę przestrzeni nazw dyskusji na podstawie podanych parametrów; return pudelko_pomocne_modul.Uzyskanie_nazw_jednostki(frame,2,liczba_numeru_jednostki,nil,1); </syntaxhighlight> Parametry funkcji: * {{Code|frame}} - tablica ramki tablicy transportu, * {{Code|czy_uwzglednic_alternatywna_nazwe}} - czy ma uwzględniać nazwę przestrzeni nazw domyślną szablonu, dostępne wartości: {{Code|false}}, w której nazwa domyślna nie jest uwzględniana wtedy, oraz {{Code|nil}} i {{Code|true}}, które oznaczają to samo, w tym jeżeli ona jest uwzględniana, wtedy jest brany parametr pierwszy dziecka, który musi istnieć przy takiej wartości tego parametru, tzn. {{Code|{{m|Pudełko|Nazwa przestrzeni nazw dyskusji 3|Szablon}}}}, a nazwa uzyskana nazwy przestrzeni nazw jest w takim przypadku błędna, a jeżeli nazwa domyślna jest błędna, czyli {{Code|{{m|Pudełko|Nazwa przestrzeni nazw dyskusji 3|Moja przestrzeń}}}}, wtedy funkcja zwraca stan błędu {{Code|(błąd)}}. * {{Code|i}} - numer zmiennej nazwy przestrzeni nazw. Funkcja wykorzystuje {{Code|{{sr|#p.Uzyskanie_nazw_jednostki(frame,...)|p=Pudełko/Pomocne}}}} do wyznaczania ogólnego nazwy przestrzeni nazw dla pozycji bazowej i numerkowej, tzn. dla pozycji: jeden, dwa, trzy,..., itd, i ich ogólnej. Parametr ramki tablicy transportu rodzica szablonu: * {{Code|nazwa przestrzeni nazw}}, {{Code|nazwa przestrzeni nazw 1}}, {{Code|nazwa przestrzeni nazw 2}}, {{Code|nazwa przestrzeni nazw 3}},..., {{Code|nazwa przestrzeni nazw i}} - nazwy przestrzeni nazw dla pozycji bazowej oraz zwykłej i ogólnej numerkowej, * {{Code|nazwa jednostki}}, {{Code|nazwa jednostki 1}}, {{Code|nazwa jednostki 2}}, {{Code|nazwa jednostki 3}},... - nazwy jednostek dla pozycji bazowej i numerkowej, * {{Code|typ jednostki}}, {{Code|typ jednostki 1}}, {{Code|typ jednostki 2}}, {{Code|typ jednostki 3}},..., {{Code|typ jednostki i}} - typy jednostek, którym odpowiadają pewne przestrzenie przedmiotowe, dla pozycji bazowej, numerkowej i ogólnej. Parametry ramki tablicy transportu dziecka: * Parametry dziecka są takie same jak rodzica dla funkcji pudełkowej plus tu wymienione, * {{Code|numer jednostki}} - jak parametr {{Code|i}} nie został ustawiony, to wtedy liczy się ta zmienna. Przykłady: <syntaxhighlight lang="mediawiki"> {{Nazwa szablonu 1|nazwa przestrzeni nazw=Wikibooks|nazwa przestrzeni nazw=|nazwa przestrzeni nazw i=|nazwajednostki=Szablon:Strona|nazwa jednostki 2=Wikibooks:Strona}} <hr /> {{Nazwa szablonu 2|nazwa przestrzeni nazw=Wikibooks|nazwa przestrzeni nazw 1=Szablon|nazwa przestrzeni nazw i=|nazwa jednostki 2=Wikibooks:Strona}} </syntaxhighlight> W dziecku powiedzmy jest wywołanie, i szukamy nazwy przestrzeni nazw o numerze dwa, która została podana, ale istnieje za to jej wersji ogólna {{Code|nazwa przestrzeni nazw i}} i domyślna {{Code|nazwa przestrzeni nazw}}, ale wtedy dla tego numerkowego liczy się to ogólne z {{Code| i}}, a ponieważ ta nazwa jest pusta, więc będziemy liczyli nazwę przestrzeni nazw z {{Code|nazwa jednostki 2}}: <syntaxhighlight lang="mediawiki"> {{#invoke:Pudełko|Nazwa przestrzeni nazw 3}} <hr /> {{#invoke:Pudełko|Nazwa przestrzeni nazw 3|numer jednostki=2}} </syntaxhighlight> Na podstawie powyższego przykładu otrzymamy wynik o schemacie, nie wyniku, bo tam nie ma zmiennej {{Code|nazwa przestrzeni nazw 1}}, ale jest {{Code|nazwa przestrzeni nazw i}}: <syntaxhighlight lang="mediawiki"> <!-- Ale nie "nazwa przestrzeni nazw""; --> <!-- nazwa przestrzeni nazw=""; --> <!-- Czyli wynik: --> Dyskusja <!-- Widzimy, że wygenerowała się nazwa przestrzeni nazw, którą jest przestrzeń nazw niegłówna, jest ciągiem niepustym; --> <hr /> <!-- Ale nie "Nazwa przestrzeni nazw 2", bo jej nie ma, ale za to istnieje "nazwa przestrzeni nazw i"; --> <!-- nazwa przestrzeni nazw 2=nazwa przestrzeni nazw i="", a nazwa jednostki 2="Wikibooks:Strona"; --> <!-- Czyli wynik: --> Dyskusja Wikibooks <!-- Widzimy, że wygenerowała się nazwa przestrzeni nazw, którą jest przestrzeń nieprogramowa, ale projektu, wychodząca z nazwy jednostek w tym przypadku z "nazwa jednostki 2"; --> </syntaxhighlight> Dla parametrów numerkowych nie jest brana w tym powyższym przykładzie zmienna {{Code|nazwa przestrzeni nazw 2}}, bo jej nie ma, ale za to jest {{Code|nazwa przestrzeni nazw i}}, bo ona występuje jako parametr domyślny ogólny dla parametrów numerkowych. Tytaj jest używana jest zmienna {{Code|nazwa jednostki 2}} do wygenerowania ostatecznego wyniku, bo jak można zauważyć, parametry przestrzenne wskazują na przestrzeń główną, a nazwy jednostek już nie. Dla parametrów bazowych mamy zmienną {{Code|nazwa przestrzeni nazw}}, ona jest pusta, więc to zostanie wziete do ostatecznego wyniku. Przykłady w wikikodzie: * {{Code|{{m|Pudełko|Nazwa przestrzeni nazw dyskusji 3|nazwa przestrzeni nazw{{=}}|nazwa jednostki{{=}}Wikibooks:Strona}}}} → {{Tt|{{#invoke:Pudełko|Nazwa przestrzeni nazw dyskusji 3|nazwa przestrzeni nazw=|nazwa jednostki=Wikibooks:Szablon}}}} * {{Code|{{m|Pudełko|Nazwa przestrzeni nazw dyskusji 3|nazwa przestrzeni nazw 2{{=}}|nazwa jednostki 2{{=}}Wikibooks:Strona|numer jednostki{{=}}2}}}} → {{Tt|{{#invoke:Pudełko|Nazwa przestrzeni nazw dyskusji 3|nazwa przestrzeni nazw 2=|nazwa jednostki 2=Wikibooks:Szablon|numer jednostki=2}}}} Powyżej dla przykładu podano parametry nie w rodzicu w szablonie, tylko w dziecku, jeśli chodzi o parametry nazw przestrzeni nazw i nazw jednostek, ale ich się za to nie powinno podawać w tych ramach, tylko w szablonach, w których wywoływane są te ramki pudełek {{Code|{{m|Pudełko}}}}, ale tak tutaj tak zrobiono by było najłatwiej sprawdzić działanie tego typu funkcji. Analogicznie możemy podawać parametry typu jednostki, np.: wywołaniu modułowym {{Code|{{m|Pudełko|Nazwa przestrzeni nazw dyskusji 3|typ jednostki 2{{=}}Podręcznik|nazwa jednostki 2{{=}}Szablon:Strona|numer jednostki{{=}}2}}}} (ale wtedy jest brana przestrzeń nazw z nazwy jednostki), ale o tym więcej w rozdziałach {{Code|{{sr|# p["Dyskusyjny typ jednostki 3"](frame,i)|p=Pudełko}}}} w „{{sr|#Funkcje typu jednostki|p=Pudełko}}”, on definiuje przestrzenie dyskusji, ale można użyć parametru dyskusji typu jednostki z obojętnie jaką wartością niepustą, czy pustą, czy nawet jej nie podamy, wtedy wyświetli się nazwa przestrzeni nazw dyskusji. Jeżeli typ jednostki bazowy wskazuje na przestrzeń nazw główną, wtedy się nie liczą parametry nazw jednostek, a na numerkowy, wtedy się liczy. Również parametry typu jednostki nie powinno się podawać w dziecku w ramce, tylko w rodzicu w szablonie jako parametry, w którym ta ramka jest wywoływana, ale tutaj podano jedynie dla przykładu, jak najłatwiej sprawdzić działanie tych parametrów tej funkcji. Najpierw w funkcji nagłówku brane są parametry nazw przestrzeni nazw, a jeżeli ich nie ma, to parametry typu jednostki, a jeżeli nie ma lub parametry przestrzenne wskazują na przestrzeń główną, i nie ma nazwy jednostki, to generowane są nazwy tej funkcji na podstawie aktualnej strony. == Funkcje nazw jednostki trzeciej wersji == === {{Code|p["Nazwa jednostki 3"](frame,i)}} === === {{Code|p["Nazwa przedmiotowa jednostki 3"](frame,i)}} === === {{Code|p["Nazwa dyskusji jednostki 3"](frame,i)}} === == Funkcje typu jednostki == === {{Code|p["Typ jednostki"](frame,i)}} === === {{Code|p["Typ jednostki 2"](frame,i)}} === === {{Code|p["Typ jednostki 3"](frame,i)}} === === Funkcje typu jednostki przedmiotowe === ==== {{Code|p["Przedmiotowy typ jednostki"](frame,i)}} ==== ==== {{Code|p["Przedmiotowy typ jednostki 2"](frame,i)}} ==== ==== {{Code|p["Przedmiotowy typ jednostki 3"](frame,i)}} ==== === Fukcje typu jednostki dyskusji === ==== {{Code|p["Dyskusyjny typ jednostki"](frame,i)}} ==== ==== {{Code|p["Dyskusyjny typ jednostki 2"](frame,i)}} ==== ==== {{Code|p["Dyskusyjny typ jednostki 3"](frame,i)}} ==== == Funkcje chech pudełka == === {{Code|p["Cecha pudełka"](frame)}} === === {{Code|p["Przedmiotowa cecha pudełka"](frame)}} === === {{Code|p["Dyskusyjna cecha pudełka"](frame)}} === == Fukcje ogólnego pudełka == === {{Code|p["Ogólne pudełko"](frame)}} === == Funkcje ogólne == === {{Code|p["Tekst pudełka"](frame)}} === == Funkcje błędów pudełka == === {{Code|p["Błędy pudełka"](frame)}} === === {{Code|p["Przedmiotowe błędy pudełka"](frame)}} === === {{Code|p["Dyskusyjne błędy pudełka"](frame)}} === == Funkcje nazw stron == === {{Code|p["Nazwa strony głównej projektu"](frame,i)}} === === {{Code|p["Nazwa strony głównej dla dzieci projektu"](frame,i)}} === == Funkcje kodów == === {{Code|p["Kod języka"](frame,i)}} === === {{Code|p["Kod projektu"](frame,i)}} === === {{Code|p["Klucz projektu"](frame,i)}} === == Funkcje wiki == === {{Code|p["Inny niż język bieżący wiki"](frame)}} === === {{Code|p["Inne niż lokalne wiki"](frame)}} === === {{Code|p["Inne niż bieżące wiki"](frame)}} === == Funkcje typów parametrów, czy podane je == === {{Code|p["Podano parametry nienazwane"](frame)}} === === {{Code|p["Podano parametry numerowane"](frame)}} === === {{Code|p["Podano parametry nazwane"](frame)}} === == Funkcje kodów tego projektu == === {{Code|p["Kod projektu tego projektu"](frame)}} === === {{Code|p["Kod języka tego projektu"](frame)}} === === {{Code|p["Klucz projektu tego projektu"](frame)}} === == Funkcje stron == === {{Code|p["Strona główna tego projektu"](frame)}} === === {{Code|p["Strona główna dla dzieci tego projektu"](frame)}} === == Funkcje nazw stron drugiej wersji == === {{Code|p["Nazwa strony głównej dla dzieci projektu 2"](frame)}} === === {{Code| p["Nazwa strony głównej projektu 2"](frame)}} === {{BrClear}} <noinclude><!-- -->{{ProstaStronaKoniec}}<!-- -->{{Kategoria|Opisy funkcji, w Lua w Scribunto, w modułach}}<!-- --></noinclude> dx37u71dykkv68f5i5s1zby27h78m1s 540427 540426 2026-04-23T20:15:52Z Persino 2851 540427 wikitext text/x-wiki <noinclude>{{ProstaStronaStart | nagłówek = {{Podrozdział|{{ld2|Pudełko}}|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 pudelko_modul=require("Module:Pudełko"); </syntaxhighlight> dzięki, któremu można wypisywać funkcje należącego do niego. Posługuje się na parametrach pudełkowych {{Parametr|nazwa przestrzeni nazw}} (czy też bez numerka {{Parametr|nazwa przestrzeni nazw i}} dla tego numerowanego) lub te z numerkiem po jednej spacji w nich (ale nie dla tego z końcówką {{Code| i}}) mogą zostać użyte jako parametry szablonu. Moduł {{Code|{{ld2|Pudełko}}}} przedstawia funkcje nazw w oparciu o funkcje nazw {{Code|{{ld2|Nazwy}}}}, generuje on nazwy za pomocą parametrów pudełkowych podanych poniżej. Parametr {{Parametr|nazwa jednostki}} (lub parametr {{Parametr|cel}} dla numerka tego pierwszego, tego alternatywnego), lub te z numerkiem po jednej spacji w nazwie parametru, albo numerowane numerkami {{Code|1}}, {{Code|2}},..., mogą zostać użyte jako parametry szablonu. Parametry określające rodzaj jednostki {{Parametr|typ jednostki}} z {{Parametr|dyskusja typu jednostki}}, itp. w wersjach z numerkiem po jednej spacji w nich mogą zostać użyte jako parametry szablonu. A te tymi numerowanymi liczbami naturalnymi {{Tt|nazwy jednostki}} od jedynki wzwyż poprzez szablon, w którym są one użyte, one też mogą być użyte z dwukropkiem, te numerowane, na samym początku nazwy, wtedy one są traktowane jako pełne nazwy strony, i wtedy one nie zostaną z interpretowane, że do nich trzeba użyć parametr odpowiedni z nazwą przetrzeni nazw z tego numerowanego, czy ogólny, aby utworzyć znów inną pełną nazwę strony dla tego numerka. Zestawienie: * {{Code|nazwa przestrzeni nazw}} i {{Code|nazwa przestrzeni nazw i}} (ogólna nazwa przestrzeni nazw dla wszystkich numerków, i tych numerowanych jednostek) - i to pierwsze z numerkiem, tzn. {{Code|nazwa przestrzeni nazw 1}}, {{Code|nazwa przestrzeni nazw 2}}, ..., * {{Code|nazwa jednostki}} - i te z numerkiem: {{Code|nazwa jednostki 1}}, {{Code|nazwa jednostki 2}}, ..., lub gdy jest zamiast tego parametrem numerowany, {{Code|1}}, {{Code|2}},..., który dla tego pierwszego może być uznany jako: {{Code|cel}} {{=}} {{Code|1}}, * {{Code|typ jednostki}} (parametr bazowy) i {{Code|typ jednostki i}} (parametr domyślny numerkowy) - i te z numerkiem: {{Code|typ jednostki 1}}, {{Code|typ jednostki 2}}, ..., tzn. gdy chcemy określić z jakim typem jednostki mamy do czynienia w zależności do jakiej przestrzeni nazw należy, a w danej, czy jest on np. programowy, czy tylko jest opisem, jak to bywa w szablonach {{Np|Template|link=tak}}, podobnie jest w przypadku {{Np|Module|link=tak}}, czy jak jest w innych przestrzeniach nazw, ** {{Code|dyskusja typu jednostki}} (parametr bazowy) i {{Code|dyskusja typu jednostki i}} (parametr domyślny numerkowy) - i te z numerkiem: {{Code|dyskusja typu jednostki 1}}, {{Code|dyskusja typu jednostki 2}}, ..., gdy chcemy określić wartością niepustą,że chodzi tutaj o typ jednostki. == {{Code|p.CzyNiepoprawnaNazwa(nazwa_jednostki)}} == Funkcja sprawdzajaca, czy jest poprawnie podana nazwa jednostki, czy ma poprawną nazwę. Znakami tymi, z których nie powinna składać się nazwa jest {{Code|<nowiki>{}<>|[]#\n</nowiki>}} i dodatkowo znak {{Code|&#127;}} (kod {{Code|{{Nowiki|&#127;}}}}). Też nie może składać się z trzech znaków tyldy, tzn. {{Code|<nowiki>~~~</nowiki>}}. Również w swojej budowie nie może składać się ze kodów {{Strong|HTML}} literowych o wzorze {{Code|{{Nowiki|&(%a+);}}}}. Natomiast może składać się z {{Code|{{Nowiki|&#(%d+);}}}} i {{Code|{{Nowiki|&#x(%x+);}}}}, ale w pierw te kody muszą być zamienione na normalne znaki. Skrótowa definicja funkcji: <syntaxhighlight lang="lua"> function p.CzyNiepoprawnaNazwa(nazwa_jednostki)...end; </syntaxhighlight> Wtedy ciało funkcji tej, czyli jego definicja w środku, jest: <syntaxhighlight lang="lua"> -- Moduł: "Moduł:Html/dane", służy do ładowania znaku o kodzie HTML "&#127;"; local html_dane_modul=mw.loadData("Module:Html/dane"); return mw.ustring.match(nazwa_jednostki,"[{}<>|%[%]#\n"..html_dane_modul.znak_127.."]+") or mw.ustring.match(nazwa_jednostki,"~~~") or mw.ustring.match(nazwa_jednostki,"&(%a+);"); </syntaxhighlight> Parametry: * {{Code|nazwa_jednostki}} - nazwa jednostki do sprawdzenia. Przykłady: <syntaxhighlight lang="lua"> local pudelko_modul=require("Module:Pudełko"); -- Podana przykładowa niepoprawna nazwa jedostki local nazwa_jednostki="Nazwa pliku [[Nazwa linku w pliku]]"; -- Fukcja zwróci wartość: local czy_poprawna_nazwa=true; local czy_poprawna_nazwa=pudelko_modul.CzyNiepoprawnaNazwa(nazwa_jednostki); </syntaxhighlight> == Funkcje nazw przestrzeni nazw == === {{Code|p["Nazwa przestrzeni nazw"](frame,...)}} === Funkcja pisze nazwę przestrzeni nazw, niezależnie, czy to jest przedmiotowa, czy dyskusji, według podanej w zmiennej {{Code|nazwa przestrzeni nazw}} dla pozycja bazowej w podanych parametrach szablonu rodzicu ramki dziecka, lub dla innej pozycji należy parametr podawać w formie {{Code|nazwa przestrzeni nazw 1}}, {{Code|nazwa przestrzeni nazw 2}}, {{Code|nazwa przestrzeni nazw 3}},..., lub te parametry można podać w postaci ogólnej {{Code|nazwa przestrzeni nazw i}}. Parametry podaje się w parametrach rodzica wywołania tej funkcji {{Code|{{m|Pudełko|Nazwa przestrzeni nazw}}}} (ale ich nie trzeba podawać w dziecku, ale można) i w parametrach dziecka, jeśli chodzi o zmienną {{Code|numer jednostki}}, czyli np.: {{Code|{{m|Pudełko|Nazwa przestrzeni nazw|numer jednostki{{=}}<jakaś liczba całkowita dodatnia>}}}}. Te parametry przestrzenne zamiast w rodzicu w szablonie można podać w ramce dziecka, wtedy parametry dziecka mają pierwszeństwo. Przestrzeń nazw z parametrów nazw przestrzennych może odpowiadać wartości przestrzeni głównej, to wtedy odpowiednia przestrzeń nazw z parametru nazwy jednostki się nie liczy w tej funkcji, aby się liczyła należy użyć funkcji {{Code|{{sr|#p["Nazwa przestrzeni nazw 2"](frame,...)|p=Pudełko}}}}. Definicja skrótowa funkcji: <syntaxhighlight lang="lua"> p["Nazwa przestrzeni nazw"]=function(frame,czy_uwzglednic_alternatywna_nazwe,i)...end; </syntaxhighlight> Wtedy ciało funkcji tej, czyli jego definicja w środku, jest: <syntaxhighlight lang="lua"> -- Jest liczony numer parametru nazwy przestrzeni nazw, domyslnie chodzi tu o numer bazowy parametrów przestrzennych; local numer_jednostki=i or frame.args["numer jednostki"]; local liczba_numer_jednostki=((numer_jednostki)and(tonumber(numer_jednostki))or 0); local pudelko_pomocne_modul=require("Module:Pudełko/Pomocne"); -- Liczy nazwę przestrzeni nazw na podstawie podanych parametrów; return pudelko_pomocne_modul.Nazwa_przestrzeni_nazw(frame,0, czy_uwzglednic_alternatywna_nazwe,liczba_numer_jednostki); </syntaxhighlight> Parametry funkcji: * {{Code|frame}} - tablica ramki tablicy transportu, * {{Code|czy_uwzglednic_alternatywna_nazwe}} - czy ma uwzględniać nazwę przestrzeni nazw domyślną szablonu, dostępne wartości: {{Code|false}}, w której nazwa domyślna nie jest uwzględniana wtedy, oraz {{Code|nil}} i {{Code|true}}, które oznaczają to samo, w tym jeżeli ona jest uwzględniana, wtedy jest brany parametr pierwszy dziecka, który musi istnieć przy takiej wartości tego parametru, tzn. {{Code|{{m|Pudełko|Nazwa przestrzeni nazw|Szablon}}}}, a nazwa uzyskana nazwy przestrzeni nazw jest w takim przypadku błędna, a jeżeli nazwa domyślna jest błędna, czyli {{Code|{{m|Pudełko|Nazwa przestrzeni nazw|Moja przestrzeń}}}}, wtedy funkcja zwraca stan błędu {{Code|(błąd)}}. * {{Code|i}} - numer zmiennej nazwy przestrzeni nazw. Funkcja wykorzystuje {{Code|{{sr|#p.Nazwa_przestrzeni_nazw(frame,...)|p=Pudełko/Pomocne}}}} do wyznaczania ogólnego nazwy przestrzeni nazw dla pozycji bazowej i numerkowej, tzn. dla pozycji: jeden, dwa, trzy,..., itd, i ich ogólnej. Parametr ramki tablicy transportu rodzica szablonu: * {{Code|nazwa przestrzeni nazw}}, {{Code|nazwa przestrzeni nazw 1}}, {{Code|nazwa przestrzeni nazw 2}}, {{Code|nazwa przestrzeni nazw 3}},..., {{Code|nazwa przestrzeni nazw i}} - nazwy przestrzeni nazw dla pozycji bazowej oraz zwykłej i ogólnej numerkowej, * {{Code|typ jednostki}}, {{Code|typ jednostki 1}}, {{Code|typ jednostki 2}}, {{Code|typ jednostki 3}},..., {{Code|typ jednostki i}} - typy jednostek, którym odpowiadają pewne przestrzenie przedmiotowe, dla pozycji bazowej, numerkowej i ogólnej, ** {{Code|dyskusja typu jednostki}}, {{Code|dyskusja typu jednostki 1}}, {{Code|dyskusja typ jednostki 2}}, {{Code|dyskusja typ jednostki 3}},..., {{Code|dyskusja typ jednostki i}} - czy dany typ jednostki ma przedstawiać, jeśli niepusta, przestrzeń dyskusji dla pozycji bazowej, numerkowej i ogólnej. Parametry ramki tablicy transportu dziecka: * Parametry dziecka są takie same jak rodzica dla funkcji pudełkowej plus tu wymienione, * {{Code|numer jednostki}} - jak parametr {{Code|i}} nie został ustawiony, to wtedy liczy się ta zmienna. Przykłady: <syntaxhighlight lang="mediawiki"> {{Nazwa szablonu|nazwa przestrzeni nazw=Wikibooks|nazwa przestrzeni nazw 2=Szablon|nazwa przestrzeni nazw i=Moduł}} </syntaxhighlight> W dziecku powiedzmy jest wywołanie, i szukamy nazwy przestrzeni nazw o numerze dwa, która nie została podana, ale istnieje za to jej wersji ogólna {{Code|nazwa przestrzeni nazw i}} i domyślna {{Code|nazwa przestrzeni nazw}}: <syntaxhighlight lang="mediawiki"> {{#invoke:Pudełko|Nazwa przestrzeni nazw|numer jednostki=1}} </syntaxhighlight> Na podstawie powyższego przykładu otrzymamy wynik o schemacie, nie wyniku, bo tam nie ma zmiennej {{Code|nazwa przestrzeni nazw 1}}, ale jest {{Code|nazwa przestrzeni nazw i}}: <syntaxhighlight lang="mediawiki"> <!-- Ale nie "nazwa przestrzeni nazw", bo jej nie ma, ale za to istnieje "nazwa przestrzeni nazw i"; --> <!-- nazwa przestrzeni nazw 2=nazwa przestrzeni nazw i=Moduł; --> <!-- Czyli wynik: --> Moduł <!-- Widzimy, że wygenerowała się nazwa przestrzeni nazw, którą jest przestrzeń programowa, którą również jest "Szablon"; --> </syntaxhighlight> Nie jest brana w tym powyższym przykładzie zmienna {{Code|nazwa przestrzeni nazw}}, bo jej nie ma, ale za to jest {{Code|nazwa przestrzeni nazw i}}, bo ona występuje jako parametr domyślny ogólny dla parametrów numerkowych. Przykłady w wikikodzie: * {{Code|{{m|Pudełko|Nazwa przestrzeni nazw|numer jednostki{{=}}2}}}} → {{Tt|{{#invoke:Pudełko|Nazwa przestrzeni nazw|numer jednostki=2}}}} * {{Code|{{m|Pudełko|Nazwa przestrzeni nazw|Szablon|nazwa przestrzeni nazw i{{=}}Moja przestrzeń|numer jednostki{{=}}2}}}} → {{Tt|{{#invoke:Pudełko|Nazwa przestrzeni nazw|Szablon|nazwa przestrzeni nazw i=Moja przestrzeń|numer jednostki=2}}}} * {{Code|{{m|Pudełko|Nazwa przestrzeni nazw|nazwa przestrzeni nazw 2{{=}}Szablon|numer jednostki{{=}}2}}}} → {{Tt|{{#invoke:Pudełko|Nazwa przestrzeni nazw|nazwa przestrzeni nazw 2=Szablon|numer jednostki=2}}}} * {{Code|{{m|Pudełko|Nazwa przestrzeni nazw|nazwa przestrzeni nazw 2{{=}}Szablon|numer jednostki{{=}}2}}}} → {{Tt|{{#invoke:Pudełko|Nazwa przestrzeni nazw|nazwa przestrzeni nazw i=Szablon|numer jednostki=2}}}} * {{Code|{{m|Pudełko|Nazwa przestrzeni nazw|nazwa przestrzeni nazw{{=}}Szablon|numer jednostki{{=}}2}}}} → {{Tt|{{#invoke:Pudełko|Nazwa przestrzeni nazw|nazwa przestrzeni nazw=Szablon|numer jednostki=2}}}} Powyżej dla przykładu podano parametry nie w rodzicu w szablonie, tylko w dziecku, jeśli chodzi o parametry nazw przestrzeni nazw, ale ich się za to nie powinno podawać w tych ramach, tylko w szablonach, w których wywoływane są te ramki pudełek {{Code|{{m|Pudełko}}}}, ale tak tutaj tak zrobiono by było najłatwiej sprawdzić działanie tego typu funkcji. Analogicznie możemy podawać parametry typu jednostki, np.: wywołaniu modułowym {{Code|{{m|Pudełko|Nazwa przestrzeni nazw|typ jednostki 2{{=}}strona szablonu|numer jednostki{{=}}2}}}}, ale o tym więcej w rozdziałach {{Code|{{sr|# p["Typ jednostki"](frame,i)|p=Pudełko}}}} w „{{sr|#Funkcje typu jednostki|p=Pudełko}}”, on definiuje przestrzenie przedmiotowe, ale można użyć parametru dyskusji typu jednostki z wartością niepustą, wtedy wyświetli się nazwa przestrzeni nazw dyskusji. Również parametry typu jednostki nie powinno się podawać w dziecku w ramce, tylko w rodzicu w szablonie jako parametry, w którym ta ramka jest wywoływana, ale tutaj podano jedynie dla przykładu, jak najłatwiej sprawdzić działanie tych parametrów tej funkcji. Najpierw w funkcji nagłówku brane są parametry nazw przestrzeni nazw, a jeżeli ich nie ma, to parametry typu jednostki, a jeżeli nie ma, to generowane są nazwy na podstawie aktualnego modułu. === {{Code|p["Nazwa przedmiotowej przestrzeni nazw"](frame,...)}} === Funkcja pisze przedmiotową nazwę przestrzeni nazw jakikolwiek nazwy przestrzeni nazw (tzn. nazwę przedmiotową nazwy przestrzenie nazw, czyli nie dyskusji, zamieniana jest na nią samą, czyli identyfikator przestrzeni się nie zmienia, a dyskusji, nie przedmiotową, przekształca się na przedmiotową jej odpowiadającą, czyli w tym przypadku identyfikator przestrzeni zmniejsza się o numer mniej), według podanej w zmiennej {{Code|nazwa przestrzeni nazw}} dla pozycja bazowej w podanych parametrach szablonu rodzicu ramki dziecka, lub dla innej pozycji należy parametr podawać w formie {{Code|nazwa przestrzeni nazw 1}}, {{Code|nazwa przestrzeni nazw 2}}, {{Code|nazwa przestrzeni nazw 3}},..., lub te parametry można podać w postaci ogólnej {{Code|nazwa przestrzeni nazw i}}. Parametry podaje się w parametrach rodzica wywołania tej funkcji {{Code|{{m|Pudełko|Nazwa przedmiotowej przestrzeni nazw}}}} (ale ich nie trzeba podawać w dziecku, ale można) i w parametrach dziecka, jeśli chodzi o zmienną {{Code|numer jednostki}}, czyli np.: {{Code|{{m|Pudełko|Nazwa przedmiotowej przestrzeni nazw|numer jednostki{{=}}<jakaś liczba całkowita dodatnia>}}}}. Te parametry przestrzenne zamiast w rodzicu w szablonie można podać w ramce dziecka, wtedy parametry dziecka mają pierwszeństwo. Parametry przestrzenne mogą mogą być podane w postaci przestrzeni przedmiotowej lub dyskusji, ale ta funkcja zawsze ją zamienia na przedmiotową. Przestrzeń nazw z parametrów nazw przestrzennych może odpowiadać wartości przestrzeni głównej, to wtedy odpowiednia przestrzeń nazw z parametru nazwy jednostki się nie liczy w tej funkcji, aby się liczyła należy użyć funkcji {{Code|{{sr|#p["Nazwa przedmiotowej przestrzeni nazw 2"](frame,...)|p=Pudełko}}}}. Definicja skrótowa funkcji: <syntaxhighlight lang="lua"> p["Nazwa przedmiotowej przestrzeni nazw"]=function(frame,czy_uwzglednic_alternatywna_nazwe,i)...end; </syntaxhighlight> Wtedy ciało funkcji tej, czyli jego definicja w środku, jest: <syntaxhighlight lang="lua"> -- Jest liczony numer parametru nazwy przestrzeni nazw, domyslnie chodzi tu o numer bazowy parametrów przestrzennych; local numer_jednostki=i or frame.args["numer jednostki"]; local liczba_numer_jednostki=((numer_jednostki)and(tonumber(numer_jednostki))or 0); local pudelko_pomocne_modul=require("Module:Pudełko/Pomocne"); -- Liczy nazwę przestrzeni nazw przedmiotową na podstawie podanych parametrów; return pudelko_pomocne_modul.Nazwa_przestrzeni_nazw(frame,1, czy_uwzglednic_alternatywna_nazwe,liczba_numer_jednostki); </syntaxhighlight> Parametry funkcji: * {{Code|frame}} - tablica ramki tablicy transportu, * {{Code|czy_uwzglednic_alternatywna_nazwe}} - czy ma uwzględniać nazwę przestrzeni nazw domyślną szablonu, dostępne wartości: {{Code|false}}, w której nazwa domyślna nie jest uwzględniana wtedy, oraz {{Code|nil}} i {{Code|true}}, które oznaczają to samo, w tym jeżeli ona jest uwzględniana, wtedy jest brany parametr pierwszy dziecka, który musi istnieć przy takiej wartości tego parametru, tzn. {{Code|{{m|Pudełko|Nazwa przedmiotowej przestrzeni nazw|Dyskusja szablonu}}}} - ta nazwa domyślna zostanie zamieniona na przedmiotową, a jak ona by była przedmiotowa, to żadnej zamiany by nie było, a nazwa uzyskana z nazwy przestrzeni nazw z parametrów przestrzennych jest w takim przypadku błędna, to w takim razie brany jest ten parametr, a jeżeli ta nazwa domyślna jest błędna, czyli {{Code|{{m|Pudełko|Nazwa przedmiotowej przestrzeni nazw|Moja przestrzeń}}}}, wtedy funkcja zwraca stan błędu {{Code|(błąd)}}. * {{Code|i}} - numer zmiennej nazwy przestrzeni nazw. Funkcja wykorzystuje {{Code|{{sr|#p.Nazwa_przestrzeni_nazw(frame,...)|p=Pudełko/Pomocne}}}} do wyznaczania ogólnego nazwy przestrzeni nazw dla pozycji bazowej i numerkowej, tzn. dla pozycji: jeden, dwa, trzy,..., itd, i ich ogólnej. Parametr ramki tablicy transportu rodzica szablonu: * {{Code|nazwa przestrzeni nazw}}, {{Code|nazwa przestrzeni nazw 1}}, {{Code|nazwa przestrzeni nazw 2}}, {{Code|nazwa przestrzeni nazw 3}},..., {{Code|nazwa przestrzeni nazw i}} - nazwy przestrzeni nazw dla pozycji bazowej oraz zwykłej i ogólnej numerkowej, * {{Code|typ jednostki}}, {{Code|typ jednostki 1}}, {{Code|typ jednostki 2}}, {{Code|typ jednostki 3}},..., {{Code|typ jednostki i}} - typy jednostek, którym odpowiadają pewne przestrzenie przedmiotowe, dla pozycji bazowej, numerkowej i ogólnej. Parametry ramki tablicy transportu dziecka: * Parametry dziecka są takie same jak rodzica dla funkcji pudełkowej plus tu wymienione, * {{Code|numer jednostki}} - jak parametr {{Code|i}} nie został ustawiony, to wtedy liczy się ta zmienna. Przykłady: <syntaxhighlight lang="mediawiki"> {{Nazwa szablonu|nazwa przestrzeni nazw=Dyskusja Wikibooks|nazwa przestrzeni nazw 2=Dyskusja szablonu|nazwa przestrzeni nazw i=Dyskusja modułu}} </syntaxhighlight> W dziecku powiedzmy jest wywołanie, i szukamy nazwy przestrzeni nazw o numerze dwa, która nie została podana, ale istnieje za to jej wersji ogólna {{Code|nazwa przestrzeni nazw i}} i domyślna {{Code|nazwa przestrzeni nazw}}: <syntaxhighlight lang="mediawiki"> {{#invoke:Pudełko|Nazwa przedmiotowej przestrzeni nazw|numer jednostki=1}} </syntaxhighlight> Na podstawie powyższego przykładu otrzymamy wynik o schemacie, nie wyniku, bo tam nie ma zmiennej {{Code|nazwa przestrzeni nazw 1}}, ale jest {{Code|nazwa przestrzeni nazw i}}: <syntaxhighlight lang="mediawiki"> <!-- Ale nie "nazwa przestrzeni nazw", bo jej nie ma, ale za to istnieje "nazwa przestrzeni nazw i"; --> <!-- nazwa przestrzeni nazw 2=nazwa przestrzeni nazw i=Dyskusja modułu; --> <!-- Czyli wynik: --> Moduł <!-- Widzimy, że wygenerowała się nazwa przestrzeni nazw, którą jest przestrzeń przedmiotowa programowa przestrzeni dyskusji "Dyskusja modułu", którą również jest "Szablon" jego przestrzeni dyskusji "Dyskusja szablonu", a dla ich przestrzeni przedmiotowej, zamiast dyskusji, to samo przekształca się na to samo; --> </syntaxhighlight> Nie jest brana w tym powyższym przykładzie zmienna {{Code|nazwa przestrzeni nazw}}, bo jej nie ma, ale za to jest {{Code|nazwa przestrzeni nazw i}}, bo ona występuje jako parametr domyślny ogólny dla parametrów numerkowych. Przykłady w wikikodzie: * {{Code|{{m|Pudełko|Nazwa przedmiotowej przestrzeni nazw|numer jednostki{{=}}2}}}} → {{Tt|{{#invoke:Pudełko|Nazwa przedmiotowej przestrzeni nazw|numer jednostki=2}}}} * {{Code|{{m|Pudełko|Nazwa przedmiotowej przestrzeni nazw|Dyskusja szablonu|nazwa przestrzeni nazw i{{=}}Moja przestrzeń|numer jednostki{{=}}2}}}} → {{Tt|{{#invoke:Pudełko|Nazwa przedmiotowej przestrzeni nazw|Dyskusja szablonu|nazwa przestrzeni nazw i=Moja przestrzeń|numer jednostki=2}}}} * {{Code|{{m|Pudełko|Nazwa przedmiotowej przestrzeni nazw|nazwa przestrzeni nazw 2{{=}}Dyskusja szablonu|numer jednostki{{=}}2}}}} → {{Tt|{{#invoke:Pudełko|Nazwa przedmiotowej przestrzeni nazw|nazwa przestrzeni nazw 2=Dyskusja szablonu|numer jednostki=2}}}} * {{Code|{{m|Pudełko|Nazwa przedmiotowej przestrzeni nazw|nazwa przestrzeni nazw 2{{=}}Dyskusja szablonu|numer jednostki{{=}}2}}}} → {{Tt|{{#invoke:Pudełko|Nazwa przedmiotowej przestrzeni nazw|nazwa przestrzeni nazw i=Dyskusja szablonu|numer jednostki=2}}}} * {{Code|{{m|Pudełko|Nazwa przedmiotowej przestrzeni nazw|nazwa przestrzeni nazw{{=}}Dyskusja szablonu|numer jednostki{{=}}2}}}} → {{Tt|{{#invoke:Pudełko|Nazwa przedmiotowej przestrzeni nazw|nazwa przestrzeni nazw=Dyskusja szablonu|numer jednostki=2}}}} Powyżej dla przykładu podano parametry nie w rodzicu w szablonie, tylko w dziecku, jeśli chodzi o parametry nazw przestrzeni nazw, ale ich się za to nie powinno podawać w tych ramach, tylko w szablonach, w których wywoływane są te ramki pudełek {{Code|{{m|Pudełko}}}}, ale tak tutaj tak zrobiono by było najłatwiej sprawdzić działanie tego typu funkcji. Analogicznie możemy podawać parametry typu jednostki, np.: wywołaniu modułowym {{Code|{{m|Pudełko|Nazwa przedmiotowej przestrzeni nazw|typ jednostki 2{{=}}strona szablonu|numer jednostki{{=}}2}}}}, ale o tym więcej w rozdziałach {{Code|{{sr|# p["Przedmiotowy typ jednostki"](frame,i)|p=Pudełko}}}} w „{{sr|#Funkcje typu jednostki|p=Pudełko}}”, ale wtedy ta sama nazwa przestrzeni nazw reprezentowana przez {{Parametr|typ jednostki 2|strona szablonu}}, jest zamieniana na to samo, lepiej jest tutaj używać parametrów przestrzennych nazw niż typu jednostki, bo typ jednostki ma taką samą wartość dla przestrzeni przedmiotowej, co dyskusji. Tutaj parametr dyskusji typu jednostki bazowy i numerkowy ogólny, czy szczegółowy, nie gra roli, bo nawet, gdy wygenerujemy nazwę przestrzeni dyskusji za pomoca tego parametru, to i tak otrzymamy na samym końcu jego nazwę przedmiotową. Również parametry typu jednostki nie powinno się podawać w dziecku w ramce, tylko w rodzicu w szablonie jako parametry, w którym ta ramka jest wywoływana, ale tutaj podano jedynie dla przykładu, jak najłatwiej sprawdzić działanie tych parametrów tej funkcji. Najpierw w funkcji nagłówku brane są parametry nazw przestrzeni nazw, a jeżeli ich nie ma, to parametry typu jednostki, a jeżeli nie ma, to generowane są nazwy na podstawie aktualnego modułu. === {{Code|p["Nazwa przestrzeni nazw dyskusji"](frame,...)}} === Funkcja pisze nazwę przestrzeni nazw dyskusji jakikolwiek nazwy przestrzeni nazw (tzn. nazwę przedmiotową nazwy przestrzenie nazw, czyli nie dyskusji, zamieniana jest na dyskusji, czyli identyfikator przestrzeni się zmienia jeden wyżej, a dyskusji, nie przedmiotową, przekształca się na tą samą), według podanej w zmiennej {{Code|nazwa przestrzeni nazw}} dla pozycja bazowej w podanych parametrach szablonu rodzicu ramki dziecka, lub dla innej pozycji należy parametr podawać w formie {{Code|nazwa przestrzeni nazw 1}}, {{Code|nazwa przestrzeni nazw 2}}, {{Code|nazwa przestrzeni nazw 3}},..., lub te parametry można podać w postaci ogólnej {{Code|nazwa przestrzeni nazw i}}. Parametry podaje się w parametrach rodzica wywołania tej funkcji {{Code|{{m|Pudełko|Nazwa przestrzeni nazw dyskusji}}}} (ale ich nie trzeba podawać w dziecku, ale można) i w parametrach dziecka, jeśli chodzi o zmienną {{Code|numer jednostki}}, czyli np.: {{Code|{{m|Pudełko|Nazwa przestrzeni nazw dyskusji|numer jednostki{{=}}<jakaś liczba całkowita dodatnia>}}}}. Te parametry przestrzenne zamiast w rodzicu w szablonie można podać w ramce dziecka, wtedy parametry dziecka mają pierwszeństwo. Parametry przestrzenne mogą mogą być podane w postaci przestrzeni przedmiotowej lub dyskusji, ale ta funkcja zawsze ją zamienia na dyskusji. Przestrzeń nazw z parametrów nazw przestrzennych może odpowiadać wartości przestrzeni głównej, to wtedy odpowiednia przestrzeń nazw z parametru nazwy jednostki się nie liczy w tej funkcji, aby się liczyła należy użyć funkcji {{Code|{{sr|#p["Nazwa przestrzeni nazw dyskusji 2"](frame,...)|p=Pudełko}}}}. Definicja skrótowa funkcji: <syntaxhighlight lang="lua"> p["Nazwa przestrzeni nazw dyskusji"]=function(frame,czy_uwzglednic_alternatywna_nazwe,i)...end; </syntaxhighlight> Wtedy ciało funkcji tej, czyli jego definicja w środku, jest: <syntaxhighlight lang="lua"> -- Jest liczony numer parametru nazwy przestrzeni nazw, domyslnie chodzi tu o numer bazowy parametrów przestrzennych; local numer_jednostki=i or frame.args["numer jednostki"]; local liczba_numer_jednostki=((numer_jednostki)and(tonumber(numer_jednostki))or 0); local pudelko_pomocne_modul=require("Module:Pudełko/Pomocne"); -- Liczy nazwę przestrzeni nazw dyskusji na podstawie podanych parametrów; return pudelko_pomocne_modul.Nazwa_przestrzeni_nazw(frame,2, czy_uwzglednic_alternatywna_nazwe,liczba_numer_jednostki); </syntaxhighlight> Parametry funkcji: * {{Code|frame}} - tablica ramki tablicy transportu, * {{Code|czy_uwzglednic_alternatywna_nazwe}} - czy ma uwzględniać nazwę przestrzeni nazw domyślną szablonu, dostępne wartości: {{Code|false}}, w której nazwa domyślna nie jest uwzględniana wtedy, oraz {{Code|nil}} i {{Code|true}}, które oznaczają to samo, w tym jeżeli ona jest uwzględniana, wtedy jest brany parametr pierwszy dziecka, który musi istnieć przy takiej wartości tego parametru, tzn. {{Code|{{m|Pudełko|Nazwa przestrzeni nazw dyskusji|Szablon}}}} - ta nazwa domyślna zostanie przekształcona na dyskusji, a jeżeli ona by była dyskusji, to nie byłoby żadnego przekształcenia, a nazwa uzyskana nazwy przestrzeni nazw z parametrów przestrzennych jest w takim przypadku błędna, to w takim razie brany jest ten parametr, a jeżeli nazwa domyślna jest błędna, czyli {{Code|{{m|Pudełko|Nazwa przestrzeni nazw dyskusji|Moja przestrzeń}}}}, wtedy funkcja zwraca stan błędu {{Code|(błąd)}}. * {{Code|i}} - numer zmiennej nazwy przestrzeni nazw. Funkcja wykorzystuje {{Code|{{sr|#p.Nazwa_przestrzeni_nazw(frame,...)|p=Pudełko/Pomocne}}}} do wyznaczania ogólnego nazwy przestrzeni nazw dla pozycji bazowej i numerkowej, tzn. dla pozycji: jeden, dwa, trzy,..., itd, i ich ogólnej. Parametr ramki tablicy transportu rodzica szablonu: * {{Code|nazwa przestrzeni nazw}}, {{Code|nazwa przestrzeni nazw 1}}, {{Code|nazwa przestrzeni nazw 2}}, {{Code|nazwa przestrzeni nazw 3}},..., {{Code|nazwa przestrzeni nazw i}} - nazwy przestrzeni nazw dla pozycji bazowej oraz zwykłej i ogólnej numerkowej, * {{Code|typ jednostki}}, {{Code|typ jednostki 1}}, {{Code|typ jednostki 2}}, {{Code|typ jednostki 3}},..., {{Code|typ jednostki i}} - typy jednostek, którym odpowiadają pewne przestrzenie przedmiotowe, dla pozycji bazowej, numerkowej i ogólnej. Parametry ramki tablicy transportu dziecka: * Parametry dziecka są takie same jak rodzica dla funkcji pudełkowej plus tu wymienione, * {{Code|numer jednostki}} - jak parametr {{Code|i}} nie został ustawiony, to wtedy liczy się ta zmienna. Przykłady: <syntaxhighlight lang="mediawiki"> {{Nazwa szablonu|nazwa przestrzeni nazw=Wikibooks|nazwa przestrzeni nazw 2=Szablon|nazwa przestrzeni nazw i=Moduł}} </syntaxhighlight> W dziecku powiedzmy jest wywołanie, i szukamy nazwy przestrzeni nazw o numerze dwa, która nie została podana, ale istnieje za to jej wersji ogólna {{Code|nazwa przestrzeni nazw i}} i domyślna {{Code|nazwa przestrzeni nazw}}: <syntaxhighlight lang="mediawiki"> {{#invoke:Pudełko|Nazwa przestrzeni nazw dyskusji|numer jednostki=1}} </syntaxhighlight> Na podstawie powyższego przykładu otrzymamy wynik o schemacie, nie wyniku, bo tam nie ma zmiennej {{Code|nazwa przestrzeni nazw 1}}, ale jest {{Code|nazwa przestrzeni nazw i}}: <syntaxhighlight lang="mediawiki"> <!-- Ale nie "nazwa przestrzeni nazw", bo jej nie ma, ale za to istnieje "nazwa przestrzeni nazw i"; --> <!-- nazwa przestrzeni nazw 2=nazwa przestrzeni nazw i=Moduł; --> <!-- Czyli wynik: --> Dyskusja modułu <!-- Widzimy, że wygenerowała się nazwa przestrzeni nazw, którą jest przestrzeń dyskusji przestrzeni programowej przestrzeni przedmiotowej "Moduł", którą również jest "Szablon" jego przestrzeni dyskusji "Dyskusja szablonu", a dla ich przestrzeni przedmiotowej, zamiast dyskusji, to przekształca się na dyskusji jej odpowiadającą; --> </syntaxhighlight> Nie jest brana w tym powyższym przykładzie zmienna {{Code|nazwa przestrzeni nazw}}, bo jej nie ma, ale za to jest {{Code|nazwa przestrzeni nazw i}}, bo ona występuje jako parametr domyślny ogólny dla parametrów numerkowych. Przykłady w wikikodzie: * {{Code|{{m|Pudełko|Nazwa przestrzeni nazw dyskusji|numer jednostki{{=}}2}}}} → {{Tt|{{#invoke:Pudełko|Nazwa przestrzeni nazw dyskusji|numer jednostki=2}}}} * {{Code|{{m|Pudełko|Nazwa przestrzeni nazw dyskusji|Szablon|nazwa przestrzeni nazw i{{=}}Moja przestrzeń|numer jednostki{{=}}2}}}} → {{Tt|{{#invoke:Pudełko|Nazwa przestrzeni nazw dyskusji|Szablon|nazwa przestrzeni nazw i=Moja przestrzeń|numer jednostki=2}}}} * {{Code|{{m|Pudełko|Nazwa przestrzeni nazw dyskusji|nazwa przestrzeni nazw 2{{=}}Szablon|numer jednostki{{=}}2}}}} → {{Tt|{{#invoke:Pudełko|Nazwa przestrzeni nazw dyskusji|nazwa przestrzeni nazw 2=Szablon|numer jednostki=2}}}} * {{Code|{{m|Pudełko|Nazwa przestrzeni nazw dyskusji|nazwa przestrzeni nazw 2{{=}}Szablon|numer jednostki{{=}}2}}}} → {{Tt|{{#invoke:Pudełko|Nazwa przestrzeni nazw dyskusji|nazwa przestrzeni nazw i=Szablon|numer jednostki=2}}}} * {{Code|{{m|Pudełko|Nazwa przestrzeni nazw dyskusji|nazwa przestrzeni nazw{{=}}Szablon|numer jednostki{{=}}2}}}} → {{Tt|{{#invoke:Pudełko|Nazwa przestrzeni nazw dyskusji|nazwa przestrzeni nazw=Szablon|numer jednostki=2}}}} Powyżej dla przykładu podano parametry nie w rodzicu w szablonie, tylko w dziecku, jeśli chodzi o parametry nazw przestrzeni nazw, ale ich się za to nie powinno podawać w tych ramach, tylko w szablonach, w których wywoływane są te ramki pudełek {{Code|{{m|Pudełko}}}}, ale tak tutaj tak zrobiono by było najłatwiej sprawdzić działanie tego typu funkcji. Analogicznie możemy podawać parametry typu jednostki, np.: wywołaniu modułowym {{Code|{{m|Pudełko|Nazwa przestrzeni nazw dyskusji|typ jednostki 2{{=}}strona szablonu|numer jednostki{{=}}2}}}}, ale o tym więcej w rozdziałach {{Code|{{sr|# p["Dyskusyjny typ jednostki"](frame,i)|p=Pudełko}}}} w „{{sr|#Funkcje typu jednostki|p=Pudełko}}”, ale wtedy nazwa przestrzeni nazw reprezentowana przez {{Parametr|typ jednostki 2|strona szablonu}}, jest zamieniana na nazwę przestrzeni nazw dyskusji. Parametr dyskusji typu jednostki bazowy lub dla danego numerka ogólny, czy szczegółowy, nie gra roli. Również parametry typu jednostki nie powinno się podawać w dziecku w ramce, tylko w rodzicu w szablonie jako parametry, w którym ta ramka jest wywoływana, ale tutaj podano jedynie dla przykładu, jak najłatwiej sprawdzić działanie tych parametrów tej funkcji. Najpierw w funkcji nagłówku brane są parametry nazw przestrzeni nazw, a jeżeli ich nie ma, to parametry typu jednostki, a jeżeli nie ma, to generowane są nazwy na podstawie aktualnego modułu. == Funkcje nazw przestrzeni nazw drugiej wersji == === {{Code|p["Nazwa przestrzeni nazw 2"](frame,...)}} === Funkcja pisze nazwę przestrzeni nazw, niezależnie, czy to jest przedmiotowa, czy dyskusji, według, i nie zawsze tylko, podanej w zmiennej {{Code|nazwa przestrzeni nazw}} dla pozycja bazowej w podanych parametrach szablonu rodzicu ramki dziecka, lub dla innej pozycji należy parametr podawać w formie {{Code|nazwa przestrzeni nazw 1}}, {{Code|nazwa przestrzeni nazw 2}}, {{Code|nazwa przestrzeni nazw 3}},..., lub te parametry można podać w postaci ogólnej {{Code|nazwa przestrzeni nazw i}}. W tej funkcji trzeba też podawać parametry nazwy jednostek {{Code|nazwa jednostki}}, {{Code|nazwa jednostki 1}}, {{Code|nazwa jednostki 2}}, {{Code|nazwa jednostki 3}},... Parametry podaje się w parametrach rodzica wywołania tej funkcji {{Code|{{m|Pudełko|Nazwa przestrzeni nazw 2}}}} (ale ich nie trzeba podawać w dziecku, ale można) i w parametrach dziecka, jeśli chodzi o zmienną {{Code|numer jednostki}}, czyli np.: {{Code|{{m|Pudełko|Nazwa przestrzeni nazw 2|numer jednostki{{=}}<jakaś liczba całkowita dodatnia>}}}}. Te parametry przestrzenne zamiast w rodzicu w szablonie można podać w ramce dziecka, wtedy parametry dziecka mają pierwszeństwo. Przestrzeń nazw z parametrów nazw przestrzennych może odpowiadać wartości przestrzeni głównej, to wtedy odpowiednia przestrzeń nazw z parametru nazwy jednostki się liczy w tej funkcji, wtedy jest liczona nazwa przestrzeni nazw z tego parametru. Gdy parametry przestrzenne lub typ jednostki w drugim podejściu nie wskazują na przestrzeń główną, to wtedy działanie tej funkcji jest podobne do {{Code|{{sr|#p["Nazwa przestrzeni nazw"](frame,...)|p=Pudełko}}}}. Definicja skrótowa funkcji: <syntaxhighlight lang="lua"> p["Nazwa przestrzeni nazw 2"]=function(frame,czy_uwzglednic_alternatywna_nazwe,i)...end; </syntaxhighlight> Wtedy ciało funkcji tej, czyli jego definicja w środku, jest: <syntaxhighlight lang="lua"> local pudelko_pomocne_modul=require("Module:Pudełko/Pomocne"); -- Liczy nazwę przestrzeni nazw, jeżeli z parametrów przestrzennych przestrzeń wskazuje na główną, to wtedy jest liczona przestrzeń nazw z nazwy jednostki; return pudelko_pomocne_modul.Nazwa_przestrzeni_nazw_2(frame,czy_uwzglednic_alternatywna_nazwe,i) </syntaxhighlight> Parametry funkcji: * {{Code|frame}} - tablica ramki tablicy transportu, * {{Code|czy_uwzglednic_alternatywna_nazwe}} - czy ma uwzględniać nazwę przestrzeni nazw domyślną szablonu, dostępne wartości: {{Code|false}}, w której nazwa domyślna nie jest uwzględniana wtedy, oraz {{Code|nil}} i {{Code|true}}, które oznaczają to samo, w tym jeżeli ona jest uwzględniana, wtedy jest brany parametr pierwszy dziecka, który musi istnieć przy takiej wartości tego parametru, tzn. {{Code|{{m|Pudełko|Nazwa przestrzeni nazw 2|Szablon}}}}, a nazwa uzyskana nazwy przestrzeni nazw jest w takim przypadku błędna, a jeżeli nazwa domyślna jest błędna, czyli {{Code|{{m|Pudełko|Nazwa przestrzeni nazw 2|Moja przestrzeń}}}}, wtedy funkcja zwraca stan błędu {{Code|(błąd)}}. * {{Code|i}} - numer zmiennej nazwy przestrzeni nazw. Funkcja wykorzystuje {{Code|{{sr|#p.Nazwa_przestrzeni_nazw_2(frame,...)|p=Pudełko/Pomocne}}}} do wyznaczania ogólnego nazwy przestrzeni nazw dla pozycji bazowej i numerkowej, tzn. dla pozycji: jeden, dwa, trzy,..., itd, i ich ogólnej. Parametr ramki tablicy transportu rodzica szablonu: * {{Code|nazwa przestrzeni nazw}}, {{Code|nazwa przestrzeni nazw 1}}, {{Code|nazwa przestrzeni nazw 2}}, {{Code|nazwa przestrzeni nazw 3}},..., {{Code|nazwa przestrzeni nazw i}} - nazwy przestrzeni nazw dla pozycji bazowej oraz zwykłej i ogólnej numerkowej, * {{Code|nazwa jednostki}}, {{Code|nazwa jednostki 1}}, {{Code|nazwa jednostki 2}}, {{Code|nazwa jednostki 3}},... - nazwy jednostek dla pozycji bazowej i numerkowej, * {{Code|typ jednostki}}, {{Code|typ jednostki 1}}, {{Code|typ jednostki 2}}, {{Code|typ jednostki 3}},..., {{Code|typ jednostki i}} - typy jednostek, którym odpowiadają pewne przestrzenie przedmiotowe, dla pozycji bazowej, numerkowej i ogólnej, ** {{Code|dyskusja typu jednostki}}, {{Code|dyskusja typu jednostki 1}}, {{Code|dyskusja typ jednostki 2}}, {{Code|dyskusja typ jednostki 3}},..., {{Code|dyskusja typ jednostki i}} - czy dany typ jednostki ma przedstawiać, jeśli niepusta, przestrzeń dyskusji dla pozycji bazowej, numerkowej i ogólnej. Parametry ramki tablicy transportu dziecka: * Parametry dziecka są takie same jak rodzica dla funkcji pudełkowej plus tu wymienione, * {{Code|numer jednostki}} - jak parametr {{Code|i}} nie został ustawiony, to wtedy liczy się ta zmienna. Przykłady: <syntaxhighlight lang="mediawiki"> {{Nazwa szablonu|nazwa przestrzeni nazw=Wikibooks|nazwa przestrzeni nazw 1=Szablon|nazwa przestrzeni nazw i=|nazwa jednostki 2=Wikibooks:Strona}} </syntaxhighlight> W dziecku powiedzmy jest wywołanie, i szukamy nazwy przestrzeni nazw o numerze dwa, która została podana, ale istnieje za to jej wersji ogólna {{Code|nazwa przestrzeni nazw i}} i domyślna {{Code|nazwa przestrzeni nazw}}, ale wtedy dla tego numerkowego liczy się to ogólne z {{Code| i}}, a ponieważ ta nazwa jest pusta, więc będziemy liczyli nazwę przestrzeni nazw z {{Code|nazwa jednostki 2}}: <syntaxhighlight lang="mediawiki"> {{#invoke:Pudełko|Nazwa przestrzeni nazw 2|numer jednostki=2}} </syntaxhighlight> Na podstawie powyższego przykładu otrzymamy wynik o schemacie, nie wyniku, bo tam nie ma zmiennej {{Code|nazwa przestrzeni nazw 1}}, ale jest {{Code|nazwa przestrzeni nazw i}}: <syntaxhighlight lang="mediawiki"> <!-- Ale nie "nazwa przestrzeni nazw 2", bo jej nie ma, ale za to istnieje "nazwa przestrzeni nazw i"; --> <!-- nazwa przestrzeni nazw 2=nazwa przestrzeni nazw i="", a nazwa jednostki 2="Wikibooks:Strona"; --> <!-- Czyli wynik: --> Wikibooks <!-- Widzimy, że wygenerowała się nazwa przestrzeni nazw, którą jest przestrzeń nieprogramowa, ale projektu, wychodząca z nazwy jednostek w tym przypadku z "nazwa jednostki 2"; --> </syntaxhighlight> Nie jest brana w tym powyższym przykładzie zmienna {{Code|nazwa przestrzeni nazw}}, bo jej nie ma, ale za to jest {{Code|nazwa przestrzeni nazw i}}, bo ona występuje jako parametr domyślny ogólny dla parametrów numerkowych. Tytaj jest używana jest zmienna {{Code|nazwa jednostki 2}} do wygenerowania ostatecznego wyniku, bo jak można zauważyć, parametry przestrzenne wskazują na przestrzeń główną, a nazwy jednostek już nie. Przykłady w wikikodzie: * {{Code|{{m|Pudełko|Nazwa przestrzeni nazw 2|numer jednostki{{=}}2}}}} → {{Tt|{{#invoke:Pudełko|Nazwa przestrzeni nazw 2|numer jednostki=2}}}} * {{Code|{{m|Pudełko|Nazwa przestrzeni nazw 2|Szablon|nazwa przestrzeni nazw i{{=}}Moja przestrzeń|numer jednostki{{=}}2}}}} → {{Tt|{{#invoke:Pudełko|Nazwa przestrzeni nazw 2|Szablon|nazwa przestrzeni nazw i=Moja przestrzeń|numer jednostki=2}}}} * {{Code|{{m|Pudełko|Nazwa przestrzeni nazw 2|nazwa przestrzeni nazw 2{{=}}|nazwa jednostki 2{{=}}Szablon:Strona|numer jednostki{{=}}2}}}} → {{Tt|{{#invoke:Pudełko|Nazwa przestrzeni nazw 2|nazwa przestrzeni nazw 2=|nazwa jednostki 2=Szablon:Strona|numer jednostki=2}}}} * {{Code|{{m|Pudełko|Nazwa przestrzeni nazw 2|nazwa przestrzeni nazw i{{=}}|nazwa jednostki 2{{=}}Szablon:Strona|numer jednostki{{=}}2}}}} → {{Tt|{{#invoke:Pudełko|Nazwa przestrzeni nazw 2|nazwa przestrzeni nazw i=|nazwa jednostki 2=Szablon:Strona|numer jednostki=2}}}} * {{Code|{{m|Pudełko|Nazwa przestrzeni nazw 2|Szablon|nazwa przestrzeni nazw{{=}}|nazwa jednostki 2{{=}}Wikibooks:Strona|numer jednostki{{=}}2}}}} → {{Tt|{{#invoke:Pudełko|Nazwa przestrzeni nazw 2|Szablon|nazwa przestrzeni nazw=|nazwa jednostki 2=Wikibooks:Strona|numer jednostki=2}}}} Powyżej dla przykładu podano parametry nie w rodzicu w szablonie, tylko w dziecku, jeśli chodzi o parametry nazw przestrzeni nazw i nazw jednostek, ale ich się za to nie powinno podawać w tych ramach, tylko w szablonach, w których wywoływane są te ramki pudełek {{Code|{{m|Pudełko}}}}, ale tak tutaj tak zrobiono by było najłatwiej sprawdzić działanie tego typu funkcji. Analogicznie możemy podawać parametry typu jednostki, np.: wywołaniu modułowym {{Code|{{m|Pudełko|Nazwa przestrzeni nazw 2|typ jednostki 2{{=}}Podręcznik|nazwa jednostki 2{{=}}Szablon:Strona|numer jednostki{{=}}2}}}} (ale wtedy jest brana przestrzeń nazw z nazwy jednostki), ale o tym więcej w rozdziałach {{Code|{{sr|#p["Typ jednostki 2"](frame,i)|p=Pudełko}}}} w „{{sr|#Funkcje typu jednostki|p=Pudełko}}”, on definiuje przestrzenie przedmiotowe, ale można użyć parametru dyskusji typu jednostki z wartością niepustą, wtedy wyświetli się nazwa przestrzeni nazw dyskusji. Jeżeli typ jednostki wskazuje na przestrzeń nazw główną, wtedy się liczą parametry nazw jednostek. Również parametry typu jednostki nie powinno się podawać w dziecku w ramce, tylko w rodzicu w szablonie jako parametry, w którym ta ramka jest wywoływana, ale tutaj podano jedynie dla przykładu, jak najłatwiej sprawdzić działanie tych parametrów tej funkcji. Najpierw w funkcji nagłówku brane są parametry nazw przestrzeni nazw, a jeżeli ich nie ma, to parametry typu jednostki, a jeżeli nie ma lub parametry przestrzenne wskazują na przestrzeń główną, i nie ma nazwy jednostki, to generowane są nazwy tej funkcji na podstawie aktualnej strony. === {{Code|p["Nazwa przedmiotowej przestrzeni nazw 2"](frame,...)}} === Funkcja pisze przedmiotową nazwę przestrzeni nazw jakikolwiek nazwy przestrzeni nazw (tzn. nazwę przedmiotową nazwy przestrzenie nazw, czyli nie dyskusji, zamieniana jest na nią samą, czyli identyfikator przestrzeni się nie zmienia, a dyskusji, nie przedmiotową, przekształca się na przedmiotową jej odpowiadającą, czyli w tym przypadku identyfikator przestrzeni zmniejsza się o numer mniej), według, i nie zawsze tylko, podanej w zmiennej {{Code|nazwa przestrzeni nazw}} dla pozycja bazowej w podanych parametrach szablonu rodzicu ramki dziecka, lub dla innej pozycji należy parametr podawać w formie {{Code|nazwa przestrzeni nazw 1}}, {{Code|nazwa przestrzeni nazw 2}}, {{Code|nazwa przestrzeni nazw 3}},..., lub te parametry można podać w postaci ogólnej {{Code|nazwa przestrzeni nazw i}}. W tej funkcji trzeba też podawać parametry nazwy jednostek {{Code|nazwa jednostki}}, {{Code|nazwa jednostki 1}}, {{Code|nazwa jednostki 2}}, {{Code|nazwa jednostki 3}},... Parametry podaje się w parametrach rodzica wywołania tej funkcji {{Code|{{m|Pudełko|Nazwa przedmiotowej przestrzeni nazw 2}}}} (ale ich nie trzeba podawać w dziecku, ale można) i w parametrach dziecka, jeśli chodzi o zmienną {{Code|numer jednostki}}, czyli np.: {{Code|{{m|Pudełko|Nazwa przedmiotowej przestrzeni nazw 2|numer jednostki{{=}}<jakaś liczba całkowita dodatnia>}}}}. Te parametry przestrzenne zamiast w rodzicu w szablonie można podać w ramce dziecka, wtedy parametry dziecka mają pierwszeństwo. Przestrzeń nazw z parametrów nazw przestrzennych po przekształceniu na przedmiotową może odpowiadać wartości przestrzeni głównej, to wtedy odpowiednia przestrzeń nazw z parametru nazwy jednostki się liczy w tej funkcji, wtedy jest liczona nazwa przestrzeni nazw z tego parametru. Gdy parametry przestrzenne lub typ jednostki w drugim podejściu nie wskazują na przestrzeń główną, to wtedy działanie tej funkcji jest podobne do {{Code|{{sr|#p["Nazwa przedmiotowej przestrzeni nazw"](frame,...)|p=Pudełko}}}}. Definicja skrótowa funkcji: <syntaxhighlight lang="lua"> p["Nazwa przedmiotowej przestrzeni nazw 2"]=function(frame,czy_uwzglednic_alternatywna_nazwe,i)...end; </syntaxhighlight> Wtedy ciało funkcji tej, czyli jego definicja w środku, jest: <syntaxhighlight lang="lua"> local pudelko_pomocne_modul=require("Module:Pudełko/Pomocne"); return pudelko_pomocne_modul.Nazwa_przestrzeni_nazw_przedmiotowa_dyskusji_2(frame,czy_uwzglednic_alternatywna_nazwe,i,"przedmiotowa"); </syntaxhighlight> Parametry funkcji: * {{Code|frame}} - tablica ramki tablicy transportu, * {{Code|czy_uwzglednic_alternatywna_nazwe}} - czy ma uwzględniać nazwę przestrzeni nazw domyślną szablonu, dostępne wartości: {{Code|false}}, w której nazwa domyślna nie jest uwzględniana wtedy, oraz {{Code|nil}} i {{Code|true}}, które oznaczają to samo, w tym jeżeli ona jest uwzględniana, wtedy jest brany parametr pierwszy dziecka, który musi istnieć przy takiej wartości tego parametru, tzn. {{Code|{{m|Pudełko|Nazwa przedmiotowej przestrzeni nazw 2|Szablon}}}}, a nazwa uzyskana nazwy przestrzeni nazw jest w takim przypadku błędna, a jeżeli nazwa domyślna jest błędna, czyli {{Code|{{m|Pudełko|Nazwa przedmiotowej przestrzeni nazw 2|Moja przestrzeń}}}}, wtedy funkcja zwraca stan błędu {{Code|(błąd)}}. * {{Code|i}} - numer zmiennej nazwy przestrzeni nazw. Funkcja wykorzystuje {{Code|{{sr|#p.Nazwa_przestrzeni_nazw_przedmiotowa_dyskusji_2(frame,...)|p=Pudełko/Pomocne}}}} do wyznaczania ogólnego nazwy przestrzeni nazw dla pozycji bazowej i numerkowej, tzn. dla pozycji: jeden, dwa, trzy,..., itd, i ich ogólnej. Parametr ramki tablicy transportu rodzica szablonu: * {{Code|nazwa przestrzeni nazw}}, {{Code|nazwa przestrzeni nazw 1}}, {{Code|nazwa przestrzeni nazw 2}}, {{Code|nazwa przestrzeni nazw 3}},..., {{Code|nazwa przestrzeni nazw i}} - nazwy przestrzeni nazw dla pozycji bazowej oraz zwykłej i ogólnej numerkowej, * {{Code|nazwa jednostki}}, {{Code|nazwa jednostki 1}}, {{Code|nazwa jednostki 2}}, {{Code|nazwa jednostki 3}},... - nazwy jednostek dla pozycji bazowej i numerkowej, * {{Code|typ jednostki}}, {{Code|typ jednostki 1}}, {{Code|typ jednostki 2}}, {{Code|typ jednostki 3}},..., {{Code|typ jednostki i}} - typy jednostek, którym odpowiadają pewne przestrzenie przedmiotowe, dla pozycji bazowej, numerkowej i ogólnej. Parametry ramki tablicy transportu dziecka: * Parametry dziecka są takie same jak rodzica dla funkcji pudełkowej plus tu wymienione, * {{Code|numer jednostki}} - jak parametr {{Code|i}} nie został ustawiony, to wtedy liczy się ta zmienna. Przykłady: <syntaxhighlight lang="mediawiki"> {{Nazwa szablonu|nazwa przestrzeni nazw=Wikibooks|nazwa przestrzeni nazw 1=Szablon|nazwa przestrzeni nazw i=|nazwa jednostki 2=Dyskusja Wikibooks:Strona}} </syntaxhighlight> W dziecku powiedzmy jest wywołanie, i szukamy nazwy przestrzeni nazw o numerze dwa, która została podana, ale istnieje za to jej wersji ogólna {{Code|nazwa przestrzeni nazw i}} i domyślna {{Code|nazwa przestrzeni nazw}}, ale wtedy dla tego numerkowego liczy się to ogólne z {{Code| i}}, a ponieważ ta nazwa jest pusta, więc będziemy liczyli nazwę przestrzeni nazw z {{Code|nazwa jednostki 2}}: <syntaxhighlight lang="mediawiki"> {{#invoke:Pudełko|Nazwa przedmiotowej przestrzeni nazw 2|numer jednostki=2}} </syntaxhighlight> Na podstawie powyższego przykładu otrzymamy wynik o schemacie, nie wyniku, bo tam nie ma zmiennej {{Code|nazwa przestrzeni nazw 1}}, ale jest {{Code|nazwa przestrzeni nazw i}}: <syntaxhighlight lang="mediawiki"> <!-- Ale nie "nazwa przestrzeni nazw 2", bo jej nie ma, ale za to istnieje "nazwa przestrzeni nazw i"; --> <!-- nazwa przestrzeni nazw 2=nazwa przestrzeni nazw i="", a nazwa jednostki 2="Dyskusja Wikibooks:Strona"; --> <!-- Czyli wynik: --> Wikibooks <!-- Widzimy, że wygenerowała się nazwa przestrzeni nazw, którą jest przestrzeń nieprogramowa, ale projektu, wychodząca z nazwy jednostek w tym przypadku z "nazwa jednostki 2"; --> </syntaxhighlight> Nie jest brana w tym powyższym przykładzie zmienna {{Code|nazwa przestrzeni nazw}}, bo jej nie ma, ale za to jest {{Code|nazwa przestrzeni nazw i}}, bo ona występuje jako parametr domyślny ogólny dla parametrów numerkowych. Tytaj jest używana jest zmienna {{Code|nazwa jednostki 2}} do wygenerowania ostatecznego wyniku, bo jak można zauważyć, parametry przestrzenne wskazują na przestrzeń główną, a nazwy jednostek już nie. Przykłady w wikikodzie: * {{Code|{{m|Pudełko|Nazwa przedmiotowej przestrzeni nazw 2|numer jednostki{{=}}2}}}} → {{Tt|{{#invoke:Pudełko|Nazwa przedmiotowej przestrzeni nazw 2|numer jednostki=2}}}} * {{Code|{{m|Pudełko|Nazwa przedmiotowej przestrzeni nazw 2|Dyskusja szablonu|nazwa przestrzeni nazw i{{=}}Moja przestrzeń|numer jednostki{{=}}2}}}} → {{Tt|{{#invoke:Pudełko|Nazwa przedmiotowej przestrzeni nazw 2|Dyskusja szablonu|nazwa przestrzeni nazw i=Moja przestrzeń|numer jednostki=2}}}} * {{Code|{{m|Pudełko|Nazwa przedmiotowej przestrzeni nazw 2|nazwa przestrzeni nazw 2{{=}}Dyskusja|nazwa jednostki 2{{=}}Dyskusja szablonu:Strona|numer jednostki{{=}}2}}}} → {{Tt|{{#invoke:Pudełko|Nazwa przedmiotowej przestrzeni nazw 2|nazwa przestrzeni nazw 2=Dyskusja|nazwa jednostki 2=Dyskusja szablonu:Strona|numer jednostki=2}}}} * {{Code|{{m|Pudełko|Nazwa przedmiotowej przestrzeni nazw 2|nazwa przestrzeni nazw i{{=}}Dyskusja|nazwa jednostki 2{{=}}Dyskusja szablonu:Strona|numer jednostki{{=}}2}}}} → {{Tt|{{#invoke:Pudełko|Nazwa przedmiotowej przestrzeni nazw 2|nazwa przestrzeni nazw i=Dyskusja|nazwa jednostki 2=Dyskusja szablonu:Strona|numer jednostki=2}}}} * {{Code|{{m|Pudełko|Nazwa przedmiotowej przestrzeni nazw 2|Dyskusja szablonu|nazwa przestrzeni nazw{{=}}Dyskusja|nazwa jednostki 2{{=}}Wikibooks:Strona|numer jednostki{{=}}2}}}} → {{Tt|{{#invoke:Pudełko|Nazwa przedmiotowej przestrzeni nazw 2|Dyskusja szablonu|nazwa przestrzeni nazw=Dyskusja|nazwa jednostki 2=Dyskusja Wikibooks:Strona|numer jednostki=2}}}} Powyżej dla przykładu podano parametry nie w rodzicu w szablonie, tylko w dziecku, jeśli chodzi o parametry nazw przestrzeni nazw i nazw jednostek, ale ich się za to nie powinno podawać w tych ramach, tylko w szablonach, w których wywoływane są te ramki pudełek {{Code|{{m|Pudełko}}}}, ale tak tutaj tak zrobiono by było najłatwiej sprawdzić działanie tego typu funkcji. Analogicznie możemy podawać parametry typu jednostki, np.: wywołaniu modułowym {{Code|{{m|Pudełko|Nazwa przedmiotowej przestrzeni nazw 2|typ jednostki 2{{=}}Podręcznik|nazwa jednostki 2{{=}}Dyskusja szablonu:Strona|numer jednostki{{=}}2}}}} (ale wtedy jest brana przestrzeń nazw z nazwy jednostki), ale o tym więcej w rozdziałach {{Code|{{sr|# p["Przedmiotowy typ jednostki 2"](frame,i)|p=Pudełko}}}} w „{{sr|#Funkcje typu jednostki|p=Pudełko}}”, on definiuje przestrzenie przedmiotowe, ale można użyć parametru dyskusji typu jednostki z wartością niepustą, pustą, czy nawet jej nie podamy, wtedy wyświetli się nazwa przestrzeni nazw przedmiotowej. Jeżeli typ jednostki wskazuje na przestrzeń nazw główną, wtedy się liczą parametry nazw jednostek. Również parametry typu jednostki nie powinno się podawać w dziecku w ramce, tylko w rodzicu w szablonie jako parametry, w którym ta ramka jest wywoływana, ale tutaj podano jedynie dla przykładu, jak najłatwiej sprawdzić działanie tych parametrów tej funkcji. Najpierw w funkcji nagłówku brane są parametry nazw przestrzeni nazw, a jeżeli ich nie ma, to parametry typu jednostki, a jeżeli nie ma lub parametry przestrzenne wskazują na przestrzeń główną, i nie ma nazwy jednostki, to generowane są nazwy tej funkcji na podstawie aktualnej strony. === {{Code|p["Nazwa przestrzeni nazw dyskusji 2"](frame,...)}} === Funkcja pisze nazwę przestrzeni nazw dyskusji jakikolwiek nazwy przestrzeni nazw (tzn. nazwę dyskusji nazwy przestrzenie nazw, czyli nie przedmiotowej, zamieniana jest na nią samą, czyli identyfikator przestrzeni się nie zmienia, a przedmiotową, nie dyskusji, przekształca się na dyskusji jej odpowiadającą, czyli w tym przypadku identyfikator przestrzeni zwiększa się o numer więcej), według, i nie zawsze tylko, podanej w zmiennej {{Code|nazwa przestrzeni nazw}} dla pozycja bazowej w podanych parametrach szablonu rodzicu ramki dziecka, lub dla innej pozycji należy parametr podawać w formie {{Code|nazwa przestrzeni nazw 1}}, {{Code|nazwa przestrzeni nazw 2}}, {{Code|nazwa przestrzeni nazw 3}},..., lub te parametry można podać w postaci ogólnej {{Code|nazwa przestrzeni nazw i}}. W tej funkcji trzeba też podawać parametry nazwy jednostek {{Code|nazwa jednostki}}, {{Code|nazwa jednostki 1}}, {{Code|nazwa jednostki 2}}, {{Code|nazwa jednostki 3}},... Parametry podaje się w parametrach rodzica wywołania tej funkcji {{Code|{{m|Pudełko|Nazwa przestrzeni nazw dyskusji 2}}}} (ale ich nie trzeba podawać w dziecku, ale można) i w parametrach dziecka, jeśli chodzi o zmienną {{Code|numer jednostki}}, czyli np.: {{Code|{{m|Pudełko|Nazwa przestrzeni nazw dyskusji 2|numer jednostki{{=}}<jakaś liczba całkowita dodatnia>}}}}. Te parametry przestrzenne zamiast w rodzicu w szablonie można podać w ramce dziecka, wtedy parametry dziecka mają pierwszeństwo. Przestrzeń nazw z parametrów nazw przestrzennych po przekształceniu na przedmiotową może odpowiadać wartości przestrzeni głównej, to wtedy odpowiednia przestrzeń nazw z parametru nazwy jednostki się liczy w tej funkcji, wtedy jest liczona nazwa przestrzeni nazw z tego parametru. Gdy parametry przestrzenne lub typ jednostki w drugim podejściu nie wskazują na przestrzeń główną, to wtedy działanie tej funkcji jest podobne do {{Code|{{sr|#p["Nazwa dyskusji przestrzeni nazw"](frame,...)|p=Pudełko}}}}. Definicja skrótowa funkcji: <syntaxhighlight lang="lua"> p["Nazwa przestrzeni nazw dyskusji 2"]=function(frame,czy_uwzglednic_alternatywna_nazwe,i)...end; </syntaxhighlight> Wtedy ciało funkcji tej, czyli jego definicja w środku, jest: <syntaxhighlight lang="lua"> local pudelko_pomocne_modul=require("Module:Pudełko/Pomocne"); return pudelko_pomocne_modul.Nazwa_przestrzeni_nazw_przedmiotowa_dyskusji_2(frame,czy_uwzglednic_alternatywna_nazwe,i,"dyskusja"); </syntaxhighlight> Parametry funkcji: * {{Code|frame}} - tablica ramki tablicy transportu, * {{Code|czy_uwzglednic_alternatywna_nazwe}} - czy ma uwzględniać nazwę przestrzeni nazw domyślną szablonu, dostępne wartości: {{Code|false}}, w której nazwa domyślna nie jest uwzględniana wtedy, oraz {{Code|nil}} i {{Code|true}}, które oznaczają to samo, w tym jeżeli ona jest uwzględniana, wtedy jest brany parametr pierwszy dziecka, który musi istnieć przy takiej wartości tego parametru, tzn. {{Code|{{m|Pudełko|Nazwa przestrzeni nazw dyskusji 2|Szablon}}}}, a nazwa uzyskana nazwy przestrzeni nazw jest w takim przypadku błędna, a jeżeli nazwa domyślna jest błędna, czyli {{Code|{{m|Pudełko|Nazwa przestrzeni nazw dyskusji 2|Moja przestrzeń}}}}, wtedy funkcja zwraca stan błędu {{Code|(błąd)}}. * {{Code|i}} - numer zmiennej nazwy przestrzeni nazw. Funkcja wykorzystuje {{Code|{{sr|#p.Nazwa_przestrzeni_nazw_przedmiotowa_dyskusji_2(frame,...)|p=Pudełko/Pomocne}}}} do wyznaczania ogólnego nazwy przestrzeni nazw dla pozycji bazowej i numerkowej, tzn. dla pozycji: jeden, dwa, trzy,..., itd, i ich ogólnej. Parametr ramki tablicy transportu rodzica szablonu: * {{Code|nazwa przestrzeni nazw}}, {{Code|nazwa przestrzeni nazw 1}}, {{Code|nazwa przestrzeni nazw 2}}, {{Code|nazwa przestrzeni nazw 3}},..., {{Code|nazwa przestrzeni nazw i}} - nazwy przestrzeni nazw dla pozycji bazowej oraz zwykłej i ogólnej numerkowej, * {{Code|nazwa jednostki}}, {{Code|nazwa jednostki 1}}, {{Code|nazwa jednostki 2}}, {{Code|nazwa jednostki 3}},... - nazwy jednostek dla pozycji bazowej i numerkowej, * {{Code|typ jednostki}}, {{Code|typ jednostki 1}}, {{Code|typ jednostki 2}}, {{Code|typ jednostki 3}},..., {{Code|typ jednostki i}} - typy jednostek, którym odpowiadają pewne przestrzenie przedmiotowe, dla pozycji bazowej, numerkowej i ogólnej. Parametry ramki tablicy transportu dziecka: * Parametry dziecka są takie same jak rodzica dla funkcji pudełkowej plus tu wymienione, * {{Code|numer jednostki}} - jak parametr {{Code|i}} nie został ustawiony, to wtedy liczy się ta zmienna. Przykłady: <syntaxhighlight lang="mediawiki"> {{Nazwa szablonu|nazwa przestrzeni nazw=Wikibooks|nazwa przestrzeni nazw 1=Szablon|nazwa przestrzeni nazw i=|nazwa jednostki 2=Wikibooks:Strona}} </syntaxhighlight> W dziecku powiedzmy jest wywołanie, i szukamy nazwy przestrzeni nazw o numerze dwa, która została podana, ale istnieje za to jej wersji ogólna {{Code|nazwa przestrzeni nazw i}} i domyślna {{Code|nazwa przestrzeni nazw}}, ale wtedy dla tego numerkowego liczy się to ogólne z {{Code| i}}, a ponieważ ta nazwa jest pusta, więc będziemy liczyli nazwę przestrzeni nazw z {{Code|nazwa jednostki 2}}: <syntaxhighlight lang="mediawiki"> {{#invoke:Pudełko|Nazwa przestrzeni nazw dyskusji 2|numer jednostki=2}} </syntaxhighlight> Na podstawie powyższego przykładu otrzymamy wynik o schemacie, nie wyniku, bo tam nie ma zmiennej {{Code|nazwa przestrzeni nazw 1}}, ale jest {{Code|nazwa przestrzeni nazw i}}: <syntaxhighlight lang="mediawiki"> <!-- Ale nie "nazwa przestrzeni nazw 2", bo jej nie ma, ale za to istnieje "nazwa przestrzeni nazw i"; --> <!-- nazwa przestrzeni nazw 2=nazwa przestrzeni nazw i="", a nazwa jednostki 2="Wikibooks:Strona"; --> <!-- Czyli wynik: --> Dyskusja Wikibooks <!-- Widzimy, że wygenerowała się nazwa przestrzeni nazw, którą jest przestrzeń nieprogramowa, ale dyskusji projektu, wychodząca z nazwy jednostek w tym przypadku z "nazwa jednostki 2"; --> </syntaxhighlight> Nie jest brana w tym powyższym przykładzie zmienna {{Code|nazwa przestrzeni nazw}}, bo jej nie ma, ale za to jest {{Code|nazwa przestrzeni nazw i}}, bo ona występuje jako parametr domyślny ogólny dla parametrów numerkowych. Tytaj jest używana jest zmienna {{Code|nazwa jednostki 2}} do wygenerowania ostatecznego wyniku, bo jak można zauważyć, parametry przestrzenne wskazują na przestrzeń główną, a nazwy jednostek już nie. Przykłady w wikikodzie: * {{Code|{{m|Pudełko|Nazwa przestrzeni nazw dyskusji 2|numer jednostki{{=}}2}}}} → {{Tt|{{#invoke:Pudełko|Nazwa przestrzeni nazw dyskusji 2|numer jednostki=2}}}} * {{Code|{{m|Pudełko|Nazwa przestrzeni nazw dyskusji 2|Szablon|nazwa przestrzeni nazw i{{=}}Moja przestrzeń|numer jednostki{{=}}2}}}} → {{Tt|{{#invoke:Pudełko|Nazwa przestrzeni nazw dyskusji 2|Szablon|nazwa przestrzeni nazw i=Moja przestrzeń|numer jednostki=2}}}} * {{Code|{{m|Pudełko|Nazwa przestrzeni nazw dyskusji 2|nazwa przestrzeni nazw 2{{=}}|nazwa jednostki 2{{=}}Szablon:Strona|numer jednostki{{=}}2}}}} → {{Tt|{{#invoke:Pudełko|Nazwa przestrzeni nazw dyskusji 2|nazwa przestrzeni nazw 2=|nazwa jednostki 2=Szablon:Strona|numer jednostki=2}}}} * {{Code|{{m|Pudełko|Nazwa przestrzeni nazw dyskusji 2|nazwa przestrzeni nazw i{{=}}|nazwa jednostki 2{{=}}Szablon:Strona|numer jednostki{{=}}2}}}} → {{Tt|{{#invoke:Pudełko|Nazwa przestrzeni nazw dyskusji 2|nazwa przestrzeni nazw i=|nazwa jednostki 2=Szablon:Strona|numer jednostki=2}}}} * {{Code|{{m|Pudełko|Nazwa przestrzeni nazw dyskusji 2|Szablon|nazwa przestrzeni nazw{{=}}|nazwa jednostki 2{{=}}Wikibooks:Strona|numer jednostki{{=}}2}}}} → {{Tt|{{#invoke:Pudełko|Nazwa przestrzeni nazw dyskusji 2|Szablon|nazwa przestrzeni nazw=|nazwa jednostki 2=Dyskusja Wikibooks:Strona|numer jednostki=2}}}} Powyżej dla przykładu podano parametry nie w rodzicu w szablonie, tylko w dziecku, jeśli chodzi o parametry nazw przestrzeni nazw i nazw jednostek, ale ich się za to nie powinno podawać w tych ramach, tylko w szablonach, w których wywoływane są te ramki pudełek {{Code|{{m|Pudełko}}}}, ale tak tutaj tak zrobiono by było najłatwiej sprawdzić działanie tego typu funkcji. Analogicznie możemy podawać parametry typu jednostki, np.: wywołaniu modułowym {{Code|{{m|Pudełko|Nazwa przestrzeni nazw dyskusji 2|typ jednostki 2{{=}}Podręcznik|nazwa jednostki 2{{=}}Szablon:Strona|numer jednostki{{=}}2}}}} (ale wtedy jest brana przestrzeń nazw z nazwy jednostki), ale o tym więcej w rozdziałach {{Code|{{sr|# p["Dyskusyjny typ jednostki 2"](frame,i)|p=Pudełko}}}} w „{{sr|#Funkcje typu jednostki|p=Pudełko}}”, one definiują przestrzenie dyskusji, ale można użyć parametru dyskusji typu jednostki z obojętnie jaką wartością niepustą, czy pustą, czy nawet jej nie podamy, wtedy wyświetli się nazwa przestrzeni nazw dyskusji. Jeżeli typ jednostki wskazuje na przestrzeń nazw główną, wtedy się liczą parametry nazw jednostek. Również parametry typu jednostki nie powinno się podawać w dziecku w ramce, tylko w rodzicu w szablonie jako parametry, w którym ta ramka jest wywoływana, ale tutaj podano jedynie dla przykładu, jak najłatwiej sprawdzić działanie tych parametrów tej funkcji. Najpierw w funkcji nagłówku brane są parametry nazw przestrzeni nazw, a jeżeli ich nie ma, to parametry typu jednostki, a jeżeli nie ma lub parametry przestrzenne wskazują na przestrzeń główną, i nie ma nazwy jednostki, to generowane są nazwy tej funkcji na podstawie aktualnej strony. == Funkcje pełnych nazw jednostki == === {{Code|p["Pełna nazwa dyskusji jednostki"](frame,i)}} === === {{Code|p["Pełna nazwa przedmiotowa jednostki"](frame,i)}} === === {{Code|p["Pełna nazwa jednostki"](frame,i)}} === == Funkcje pełnych nazw jednostki drugiej wersji == === {{Code|p["Pełna nazwa dyskusji jednostki 2"](frame,i)}} === === {{Code|p["Pełna nazwa przedmiotowa jednostki 2"](frame,i)}} === === {{Code|p["Pełna nazwa jednostki 2"](frame,i)}} === == Funkcje pełnych nazw jednostki trzeciej wersji == === {{Code|p["Pełna nazwa dyskusji jednostki 3"](frame,i)}} === === {{Code|p["Pełna nazwa przedmiotowa jednostki 3"](frame,i)}} === === {{Code|p["Pełna nazwa jednostki 3"](frame,i)}} === == Funkcje nazw jednostki == === {{Code|p["Nazwa jednostki"](frame,i)}} === == Funkcje nazw jednostki drugiej wersji == === {{Code|p["Nazwa jednostki 2"](frame,i)}} === === {{Code|p["Nazwa przedmiotowa jednostki 2"](frame,i)}} === === {{Code|p["Nazwa dyskusji jednostki 2"](frame,i)}} === == Funkcje nazw przestrzeni nazw trzeciej wersji == === {{Code|p["Nazwa przestrzeni nazw 3"](frame,i)}} === Funkcja pisze nazwę przestrzeni nazw, niezależnie, czy to jest przedmiotowa, czy dyskusji, według, i nie zawsze tylko, podanej w zmiennej {{Code|nazwa przestrzeni nazw}} dla pozycja bazowej w podanych parametrach szablonu rodzicu ramki dziecka, lub dla innej pozycji należy parametr podawać w formie {{Code|nazwa przestrzeni nazw 1}}, {{Code|Nazwa przestrzeni nazw 3}}, {{Code|nazwa przestrzeni nazw 3}},..., lub te parametry można podać w postaci ogólnej {{Code|nazwa przestrzeni nazw i}}. W tej funkcji trzeba też podawać parametry nazwy jednostek {{Code|nazwa jednostki}}, {{Code|nazwa jednostki 1}}, {{Code|nazwa jednostki 2}}, {{Code|nazwa jednostki 3}},... Parametry podaje się w parametrach rodzica wywołania tej funkcji {{Code|{{m|Pudełko|Nazwa przestrzeni nazw 3}}}} (ale ich nie trzeba podawać w dziecku, ale można) i w parametrach dziecka, jeśli chodzi o zmienną {{Code|numer jednostki}}, czyli np.: {{Code|{{m|Pudełko|Nazwa przestrzeni nazw 3|numer jednostki{{=}}<jakaś liczba całkowita dodatnia>}}}}. Te parametry przestrzenne zamiast w rodzicu w szablonie można podać w ramce dziecka, wtedy parametry dziecka mają pierwszeństwo. Przestrzeń nazw z parametrów nazw przestrzennych bazowych (bez numerka) może odpowiadać wartości przestrzeni głównej, to wtedy odpowiednia przestrzeń nazw z parametru nazwy jednostki się nie liczy w tej funkcji, aby się liczyła należy użyć funkcji {{Code|{{sr|#p["Nazwa przestrzeni nazw"](frame,...)|p=Pudełko}}}}. Przestrzeń nazw z parametrów nazw przestrzennych numerkowych może odpowiadać wartości przestrzeni głównej, to wtedy odpowiednia przestrzeń nazw z parametru nazwy jednostki się liczy w tej funkcji, wtedy jest liczona nazwa przestrzeni nazw z tego parametru. Gdy parametry przestrzenne lub typ jednostki w drugim podejściu nie wskazują na przestrzeń główną, to wtedy działanie tej funkcji jest podobne do {{Code|{{sr|#p["Nazwa przestrzeni nazw 2"](frame,...)|p=Pudełko}}}}. Definicja skrótowa funkcji: <syntaxhighlight lang="lua"> p["Nazwa przestrzeni nazw 3"]=function(frame,czy_uwzglednic_alternatywna_nazwe,i)...end; </syntaxhighlight> Wtedy ciało funkcji tej, czyli jego definicja w środku, jest: <syntaxhighlight lang="lua"> -- Jest liczony numer parametru nazwy przestrzeni nazw, domyslnie chodzi tu o numer bazowy parametrów przestrzennych; local numer_jednostki=i or frame.args["numer jednostki"]; local liczba_numeru_jednostki=((numer_jednostki)and(tonumber(numer_jednostki)) or 0); local pudelko_pomocne_modul=require("Module:Pudełko/Pomocne"); -- Liczy nazwę przestrzeni nazw dyskusji na podstawie podanych parametrów; return pudelko_pomocne_modul.Uzyskanie_nazw_jednostki(frame,0,liczba_numeru_jednostki,nil,2); </syntaxhighlight> Parametry funkcji: * {{Code|frame}} - tablica ramki tablicy transportu, * {{Code|czy_uwzglednic_alternatywna_nazwe}} - czy ma uwzględniać nazwę przestrzeni nazw domyślną szablonu, dostępne wartości: {{Code|false}}, w której nazwa domyślna nie jest uwzględniana wtedy, oraz {{Code|nil}} i {{Code|true}}, które oznaczają to samo, w tym jeżeli ona jest uwzględniana, wtedy jest brany parametr pierwszy dziecka, który musi istnieć przy takiej wartości tego parametru, tzn. {{Code|{{m|Pudełko|Nazwa przestrzeni nazw 3|Szablon}}}}, a nazwa uzyskana nazwy przestrzeni nazw jest w takim przypadku błędna, a jeżeli nazwa domyślna jest błędna, czyli {{Code|{{m|Pudełko|Nazwa przestrzeni nazw 3|Moja przestrzeń}}}}, wtedy funkcja zwraca stan błędu {{Code|(błąd)}}. * {{Code|i}} - numer zmiennej nazwy przestrzeni nazw. Funkcja wykorzystuje {{Code|{{sr|#p.Uzyskanie_nazw_jednostki(frame,...)|p=Pudełko/Pomocne}}}} do wyznaczania ogólnego nazwy przestrzeni nazw dla pozycji bazowej i numerkowej, tzn. dla pozycji: jeden, dwa, trzy,..., itd, i ich ogólnej. Parametr ramki tablicy transportu rodzica szablonu: * {{Code|nazwa przestrzeni nazw}}, {{Code|nazwa przestrzeni nazw 1}}, {{Code|Nazwa przestrzeni nazw 3}}, {{Code|nazwa przestrzeni nazw 3}},..., {{Code|nazwa przestrzeni nazw i}} - nazwy przestrzeni nazw dla pozycji bazowej oraz zwykłej i ogólnej numerkowej, * {{Code|nazwa jednostki}}, {{Code|nazwa jednostki 1}}, {{Code|nazwa jednostki 2}}, {{Code|nazwa jednostki 3}},... - nazwy jednostek dla pozycji bazowej i numerkowej, * {{Code|typ jednostki}}, {{Code|typ jednostki 1}}, {{Code|typ jednostki 2}}, {{Code|typ jednostki 3}},..., {{Code|typ jednostki i}} - typy jednostek, którym odpowiadają pewne przestrzenie przedmiotowe, dla pozycji bazowej, numerkowej i ogólnej, ** {{Code|dyskusja typu jednostki}}, {{Code|dyskusja typu jednostki 1}}, {{Code|dyskusja typ jednostki 2}}, {{Code|dyskusja typ jednostki 3}},..., {{Code|dyskusja typ jednostki i}} - czy dany typ jednostki ma przedstawiać, jeśli niepusta, przestrzeń dyskusji dla pozycji bazowej, numerkowej i ogólnej. Parametry ramki tablicy transportu dziecka: * Parametry dziecka są takie same jak rodzica dla funkcji pudełkowej plus tu wymienione, * {{Code|numer jednostki}} - jak parametr {{Code|i}} nie został ustawiony, to wtedy liczy się ta zmienna. Przykłady: <syntaxhighlight lang="mediawiki"> {{Nazwa szablonu 1|nazwa przestrzeni nazw=Wikibooks|nazwa przestrzeni nazw=|nazwa przestrzeni nazw i=|nazwajednostki=Szablon:Strona|nazwa jednostki 2=Wikibooks:Strona}} <hr /> {{Nazwa szablonu 2|nazwa przestrzeni nazw=Wikibooks|nazwa przestrzeni nazw 1=Szablon|nazwa przestrzeni nazw i=|nazwa jednostki 2=Wikibooks:Strona}} </syntaxhighlight> W dziecku powiedzmy jest wywołanie, i szukamy nazwy przestrzeni nazw o numerze dwa, która została podana, ale istnieje za to jej wersji ogólna {{Code|nazwa przestrzeni nazw i}} i domyślna {{Code|nazwa przestrzeni nazw}}, ale wtedy dla tego numerkowego liczy się to ogólne z {{Code| i}}, a ponieważ ta nazwa jest pusta, więc będziemy liczyli nazwę przestrzeni nazw z {{Code|nazwa jednostki 2}}: <syntaxhighlight lang="mediawiki"> {{#invoke:Pudełko|Nazwa przestrzeni nazw 3}} <hr /> {{#invoke:Pudełko|Nazwa przestrzeni nazw 3|numer jednostki=2}} </syntaxhighlight> Na podstawie powyższego przykładu otrzymamy wynik o schemacie, nie wyniku, bo tam nie ma zmiennej {{Code|nazwa przestrzeni nazw 1}}, ale jest {{Code|nazwa przestrzeni nazw i}}: <syntaxhighlight lang="mediawiki"> <!-- Ale nie "nazwa przestrzeni nazw""; --> <!-- nazwa przestrzeni nazw=""; --> <!-- Czyli wynik: --> <!-- wynik pusty --> <!-- Widzimy, że wygenerowała się nazwa przestrzeni nazw, którą jest przestrzeń nazw główna, jest ciągiem pustym: ""; --> <hr /> <!-- Ale nie "Nazwa przestrzeni nazw 2", bo jej nie ma, ale za to istnieje "nazwa przestrzeni nazw i"; --> <!-- nazwa przestrzeni nazw 2=nazwa przestrzeni nazw i="", a nazwa jednostki 2="Wikibooks:Strona"; --> <!-- Czyli wynik: --> Wikibooks <!-- Widzimy, że wygenerowała się nazwa przestrzeni nazw, którą jest przestrzeń nieprogramowa, ale projektu, wychodząca z nazwy jednostek w tym przypadku z "nazwa jednostki 2"; --> </syntaxhighlight> Dla parametrów numerkowych nie jest brana w tym powyższym przykładzie zmienna {{Code|nazwa przestrzeni nazw 2}}, bo jej nie ma, ale za to jest {{Code|nazwa przestrzeni nazw i}}, bo ona występuje jako parametr domyślny ogólny dla parametrów numerkowych. Tytaj jest używana jest zmienna {{Code|nazwa jednostki 2}} do wygenerowania ostatecznego wyniku, bo jak można zauważyć, parametry przestrzenne wskazują na przestrzeń główną, a nazwy jednostek już nie. Dla parametrów bazowych mamy zmienną {{Code|nazwa przestrzeni nazw}}, ona jest pusta, więc to zostanie wziete do ostatecznego wyniku. Przykłady w wikikodzie: * {{Code|{{m|Pudełko|Nazwa przestrzeni nazw 3|nazwa przestrzeni nazw{{=}}|nazwa jednostki{{=}}Wikibooks:Strona}}}} → {{Tt|{{#invoke:Pudełko|Nazwa przestrzeni nazw 3|nazwa przestrzeni nazw=|nazwa jednostki=Wikibooks:Szablon}}}} * {{Code|{{m|Pudełko|Nazwa przestrzeni nazw 3|nazwa przestrzeni nazw 2{{=}}|nazwa jednostki 2{{=}}Wikibooks:Strona|numer jednostki{{=}}2}}}} → {{Tt|{{#invoke:Pudełko|Nazwa przestrzeni nazw 3|nazwa przestrzeni nazw 2=|nazwa jednostki 2=Wikibooks:Szablon|numer jednostki=2}}}} Powyżej dla przykładu podano parametry nie w rodzicu w szablonie, tylko w dziecku, jeśli chodzi o parametry nazw przestrzeni nazw i nazw jednostek, ale ich się za to nie powinno podawać w tych ramach, tylko w szablonach, w których wywoływane są te ramki pudełek {{Code|{{m|Pudełko}}}}, ale tak tutaj tak zrobiono by było najłatwiej sprawdzić działanie tego typu funkcji. Analogicznie możemy podawać parametry typu jednostki, np.: wywołaniu modułowym {{Code|{{m|Pudełko|Nazwa przestrzeni nazw 3|typ jednostki 2{{=}}Podręcznik|nazwa jednostki 2{{=}}Szablon:Strona|numer jednostki{{=}}2}}}} (ale wtedy jest brana przestrzeń nazw z nazwy jednostki), ale o tym więcej w rozdziałach {{Code|{{sr|#p["Typ jednostki 3"](frame,i)|p=Pudełko}}}} w „{{sr|#Funkcje typu jednostki|p=Pudełko}}”, on definiuje przestrzenie przedmiotowe, ale można użyć parametru dyskusji typu jednostki z wartością niepustą, wtedy wyświetli się nazwa przestrzeni nazw dyskusji. Jeżeli typ jednostki bazowy wskazuje na przestrzeń nazw główną, wtedy się nie liczą parametry nazw jednostek, a na numerkowy, wtedy się liczy. Również parametry typu jednostki nie powinno się podawać w dziecku w ramce, tylko w rodzicu w szablonie jako parametry, w którym ta ramka jest wywoływana, ale tutaj podano jedynie dla przykładu, jak najłatwiej sprawdzić działanie tych parametrów tej funkcji. Najpierw w funkcji nagłówku brane są parametry nazw przestrzeni nazw, a jeżeli ich nie ma, to parametry typu jednostki, a jeżeli nie ma lub parametry przestrzenne wskazują na przestrzeń główną, i nie ma nazwy jednostki, to generowane są nazwy tej funkcji na podstawie aktualnej strony. === {{Code|p["Nazwa przedmiotowej przestrzeni nazw 3"](frame,i)}} === Funkcja pisze przedmiotową nazwę przestrzeni nazw jakikolwiek nazwy przestrzeni nazw (tzn. nazwę przedmiotową nazwy przestrzenie nazw, czyli nie dyskusji, zamieniana jest na nią samą, czyli identyfikator przestrzeni się nie zmienia, a dyskusji, nie przedmiotową, przekształca się na przedmiotową jej odpowiadającą, czyli w tym przypadku identyfikator przestrzeni zmniejsza się o numer mniej), według podanej w zmiennej {{Code|nazwa przestrzeni nazw}} dla pozycja bazowej w podanych parametrach szablonu rodzicu ramki dziecka, lub dla innej pozycji należy parametr podawać w formie {{Code|nazwa przestrzeni nazw 1}}, {{Code|nazwa przestrzeni nazw 2}}, {{Code|nazwa przestrzeni nazw 3}},..., lub te parametry można podać w postaci ogólnej {{Code|nazwa przestrzeni nazw i}}. Parametry podaje się w parametrach rodzica wywołania tej funkcji {{Code|{{m|Pudełko|Nazwa przedmiotowej przestrzeni nazw 3}}}} (ale ich nie trzeba podawać w dziecku, ale można) i w parametrach dziecka, jeśli chodzi o zmienną {{Code|numer jednostki}}, czyli np.: {{Code|{{m|Pudełko|Nazwa przedmiotowej przestrzeni nazw 3|numer jednostki{{=}}<jakaś liczba całkowita dodatnia>}}}}. Te parametry przestrzenne zamiast w rodzicu w szablonie można podać w ramce dziecka, wtedy parametry dziecka mają pierwszeństwo. Parametry przestrzenne mogą mogą być podane w postaci przestrzeni przedmiotowej lub dyskusji, ale ta funkcja zawsze ją zamienia na przedmiotową. Przestrzeń nazw z parametrów nazw przestrzennych bazowych (bez numerka) może odpowiadać wartości przestrzeni głównej, to wtedy odpowiednia przestrzeń nazw z parametru nazwy jednostki się nie liczy w tej funkcji, aby się liczyła należy użyć funkcji {{Code|{{sr|#p["Nazwa przedmiotowej przestrzeni nazw"](frame,...)|p=Pudełko}}}}. Przestrzeń nazw z parametrów nazw przestrzennych numerkowych może odpowiadać wartości przestrzeni głównej, to wtedy odpowiednia przestrzeń nazw z parametru nazwy jednostki się liczy w tej funkcji, wtedy jest liczona nazwa przestrzeni nazw z tego parametru. Gdy parametry przestrzenne lub typ jednostki w drugim podejściu nie wskazują na przestrzeń główną, to wtedy działanie tej funkcji jest podobne do {{Code|{{sr|#p["Nazwa przedmiotowej przestrzeni nazw 2"](frame,...)|p=Pudełko}}}}. Definicja skrótowa funkcji: <syntaxhighlight lang="lua"> p["Nazwa przedmiotowej przestrzeni nazw 3"]=function(frame,czy_uwzglednic_alternatywna_nazwe,i)...end; </syntaxhighlight> Wtedy ciało funkcji tej, czyli jego definicja w środku, jest: <syntaxhighlight lang="lua"> -- Jest liczony numer parametru nazwy przestrzeni nazw, domyslnie chodzi tu o numer bazowy parametrów przestrzennych; local numer_jednostki=i or frame.args["numer jednostki"]; local liczba_numeru_jednostki=((numer_jednostki)and(tonumber(numer_jednostki)) or 0); local pudelko_pomocne_modul=require("Module:Pudełko/Pomocne"); -- Liczy nazwę przestrzeni nazw przedmiotową na podstawie podanych parametrów; return pudelko_pomocne_modul.Uzyskanie_nazw_jednostki(frame,1,liczba_numeru_jednostki,nil,1); </syntaxhighlight> Parametry funkcji: * {{Code|frame}} - tablica ramki tablicy transportu, * {{Code|czy_uwzglednic_alternatywna_nazwe}} - czy ma uwzględniać nazwę przestrzeni nazw domyślną szablonu, dostępne wartości: {{Code|false}}, w której nazwa domyślna nie jest uwzględniana wtedy, oraz {{Code|nil}} i {{Code|true}}, które oznaczają to samo, w tym jeżeli ona jest uwzględniana, wtedy jest brany parametr pierwszy dziecka, który musi istnieć przy takiej wartości tego parametru, tzn. {{Code|{{m|Pudełko|Nazwa przedmiotowej przestrzeni nazw 3|Dyskusja szablonu}}}} - ta nazwa domyślna zostanie zamieniona na przedmiotową, a jak ona by była przedmiotowa, to żadnej zamiany by nie było, a nazwa uzyskana z nazwy przestrzeni nazw z parametrów przestrzennych jest w takim przypadku błędna, to w takim razie brany jest ten parametr, a jeżeli ta nazwa domyślna jest błędna, czyli {{Code|{{m|Pudełko|Nazwa przedmiotowej przestrzeni nazw 3|Moja przestrzeń}}}}, wtedy funkcja zwraca stan błędu {{Code|(błąd)}}. * {{Code|i}} - numer zmiennej nazwy przestrzeni nazw. Funkcja wykorzystuje {{Code|{{sr|#p.Uzyskanie_nazw_jednostki(frame,...)|p=Pudełko/Pomocne}}}} do wyznaczania ogólnego nazwy przestrzeni nazw dla pozycji bazowej i numerkowej, tzn. dla pozycji: jeden, dwa, trzy,..., itd, i ich ogólnej. Parametr ramki tablicy transportu rodzica szablonu: * {{Code|nazwa przestrzeni nazw}}, {{Code|nazwa przestrzeni nazw 1}}, {{Code|nazwa przestrzeni nazw 2}}, {{Code|nazwa przestrzeni nazw 3}},..., {{Code|nazwa przestrzeni nazw i}} - nazwy przestrzeni nazw dla pozycji bazowej oraz zwykłej i ogólnej numerkowej, * {{Code|typ jednostki}}, {{Code|typ jednostki 1}}, {{Code|typ jednostki 2}}, {{Code|typ jednostki 3}},..., {{Code|typ jednostki i}} - typy jednostek, którym odpowiadają pewne przestrzenie przedmiotowe, dla pozycji bazowej, numerkowej i ogólnej. Parametry ramki tablicy transportu dziecka: * Parametry dziecka są takie same jak rodzica dla funkcji pudełkowej plus tu wymienione, * {{Code|numer jednostki}} - jak parametr {{Code|i}} nie został ustawiony, to wtedy liczy się ta zmienna. Przykłady: <syntaxhighlight lang="mediawiki"> {{Nazwa szablonu 1|nazwa przestrzeni nazw=Wikibooks|nazwa przestrzeni nazw=|nazwa przestrzeni nazw i=|nazwa jednostki=Dyskusja Wikibooks:Strona}} <hr /> {{Nazwa szablonu 2|nazwa przestrzeni nazw=Wikibooks|nazwa przestrzeni nazw 1=Szablon|nazwa przestrzeni nazw i=|nazwa jednostki 2=Dyskusja Wikibooks:Strona}} </syntaxhighlight> Kolejno wywołania te są równowaażne: <syntaxhighlight lang="mediawiki"> {{#invoke:Pudełko|Nazwa przedmiotowej przestrzeni nazw 3}} <hr /> {{#invoke:Pudełko|Nazwa przedmiotowej przestrzeni nazw 3|numer jednostki=2}} </syntaxhighlight> Na podstawie powyższego przykładu otrzymamy wynik o schemacie, nie wyniku, bo tam nie ma zmiennej {{Code|nazwa przestrzeni nazw 1}}, ale jest {{Code|nazwa przestrzeni nazw i}}: <syntaxhighlight lang="mediawiki"> <!-- Ale nie "nazwa przestrzeni nazw""; --> <!-- nazwa przestrzeni nazw=""; --> <!-- Czyli wynik: --> <!-- wynik pusty --> <!-- Widzimy, że wygenerowała się nazwa przestrzeni nazw, którą jest przestrzeń nazw główna, jest ciągiem pustym: ""; --> <hr /> <!-- Ale nie "Nazwa przestrzeni nazw 2", bo jej nie ma, ale za to istnieje "nazwa przestrzeni nazw i"; --> <!-- nazwa przestrzeni nazw 2=nazwa przestrzeni nazw i="", a nazwa jednostki 2="Dyskusja Wikibooks:Strona"; --> <!-- Czyli wynik: --> Wikibooks <!-- Widzimy, że wygenerowała się nazwa przestrzeni nazw, którą jest przestrzeń nieprogramowa, ale projektu, wychodząca z nazwy jednostek w tym przypadku z "nazwa jednostki 2"; --> </syntaxhighlight> Dla parametrów numerkowych nie jest brana w tym powyższym przykładzie zmienna {{Code|nazwa przestrzeni nazw 2}}, bo jej nie ma, ale za to jest {{Code|nazwa przestrzeni nazw i}}, bo ona występuje jako parametr domyślny ogólny dla parametrów numerkowych. Tytaj jest używana jest zmienna {{Code|nazwa jednostki 2}} do wygenerowania ostatecznego wyniku, bo jak można zauważyć, parametry przestrzenne wskazują na przestrzeń główną, a nazwy jednostek już nie. Dla parametrów bazowych mamy zmienną {{Code|nazwa przestrzeni nazw}}, ona jest pusta, więc to zostanie wziete do ostatecznego wyniku. Przykłady w wikikodzie: * {{Code|{{m|Pudełko|Nazwa przestrzeni nazw 3|nazwa przestrzeni nazw{{=}}|nazwa jednostki{{=}}Dyskusja Wikibooks:Strona}}}} → {{Tt|{{#invoke:Pudełko|Nazwa przestrzeni nazw 3|nazwa przestrzeni nazw=|nazwa jednostki=Dyskusja Wikibooks:Szablon}}}} * {{Code|{{m|Pudełko|Nazwa przestrzeni nazw 3|nazwa przestrzeni nazw 2{{=}}|nazwa jednostki 2{{=}}Dyskusja Wikibooks:Strona|numer jednostki{{=}}2}}}} → {{Tt|{{#invoke:Pudełko|Nazwa przestrzeni nazw 3|nazwa przestrzeni nazw 2=|nazwa jednostki 2=Dyskusja Wikibooks:Szablon|numer jednostki=2}}}} Powyżej dla przykładu podano parametry nie w rodzicu w szablonie, tylko w dziecku, jeśli chodzi o parametry nazw przestrzeni nazw, ale ich się za to nie powinno podawać w tych ramach, tylko w szablonach, w których wywoływane są te ramki pudełek {{Code|{{m|Pudełko}}}}, ale tak tutaj tak zrobiono by było najłatwiej sprawdzić działanie tego typu funkcji. Analogicznie możemy podawać parametry typu jednostki, np.: wywołaniu modułowym {{Code|{{m|Pudełko|Nazwa przedmiotowej przestrzeni nazw 3|typ jednostki 2{{=}}strona szablonu|numer jednostki{{=}}2}}}}, ale o tym więcej w rozdziałach {{Code|{{sr|# p["Przedmiotowy typ jednostki 3"](frame,i)|p=Pudełko}}}} w „{{sr|#Funkcje typu jednostki|p=Pudełko}}”, ale wtedy ta sama nazwa przestrzeni nazw reprezentowana przez {{Parametr|typ jednostki 2|strona szablonu}}, jest zamieniana na to samo, lepiej jest tutaj używać parametrów przestrzennych nazw niż typu jednostki, bo typ jednostki ma taką samą wartość dla przestrzeni przedmiotowej, co dyskusji. Tutaj parametr dyskusji typu jednostki bazowy i numerkowy ogólny, czy szczegółowy, nie gra roli, bo nawet, gdy wygenerujemy nazwę przestrzeni dyskusji za pomoca tego parametru, to i tak otrzymamy na samym końcu jego nazwę przedmiotową. Jeżeli typ jednostki bazowy wskazuje na przestrzeń nazw główną, wtedy się nie liczą parametry nazw jednostek, a na numerkowy, wtedy się liczy. Również parametry typu jednostki nie powinno się podawać w dziecku w ramce, tylko w rodzicu w szablonie jako parametry, w którym ta ramka jest wywoływana, ale tutaj podano jedynie dla przykładu, jak najłatwiej sprawdzić działanie tych parametrów tej funkcji. Najpierw w funkcji nagłówku brane są parametry nazw przestrzeni nazw, a jeżeli ich nie ma, to parametry typu jednostki, a jeżeli nie ma, to generowane są nazwy na podstawie aktualnego modułu. === {{Code|p["Nazwa przestrzeni nazw dyskusji 3"](frame,i)}} === Funkcja pisze nazwę przestrzeni nazw dyskusji jakikolwiek nazwy przestrzeni nazw (tzn. nazwę dyskusji nazwy przestrzenie nazw, czyli nie przedmiotowej, zamieniana jest na nią samą, czyli identyfikator przestrzeni się nie zmienia, a przedmiotową, nie dyskusji, przekształca się na dyskusji jej odpowiadającą, czyli w tym przypadku identyfikator przestrzeni zwiększa się o numer więcej), według, i nie zawsze tylko, podanej w zmiennej {{Code|nazwa przestrzeni nazw}} dla pozycja bazowej w podanych parametrach szablonu rodzicu ramki dziecka, lub dla innej pozycji należy parametr podawać w formie {{Code|nazwa przestrzeni nazw 1}}, {{Code|nazwa przestrzeni nazw 2}}, {{Code|nazwa przestrzeni nazw 3}},..., lub te parametry można podać w postaci ogólnej {{Code|nazwa przestrzeni nazw i}}. W tej funkcji trzeba też podawać parametry nazwy jednostek {{Code|nazwa jednostki}}, {{Code|nazwa jednostki 1}}, {{Code|nazwa jednostki 2}}, {{Code|nazwa jednostki 3}},... Parametry podaje się w parametrach rodzica wywołania tej funkcji {{Code|{{m|Pudełko|Nazwa przestrzeni nazw dyskusji 3}}}} (ale ich nie trzeba podawać w dziecku, ale można) i w parametrach dziecka, jeśli chodzi o zmienną {{Code|numer jednostki}}, czyli np.: {{Code|{{m|Pudełko|Nazwa przestrzeni nazw dyskusji 3|numer jednostki{{=}}<jakaś liczba całkowita dodatnia>}}}}. Te parametry przestrzenne zamiast w rodzicu w szablonie można podać w ramce dziecka, wtedy parametry dziecka mają pierwszeństwo. Przestrzeń nazw z parametrów nazw przestrzennych bazowych (bez numerka) może odpowiadać wartości przestrzeni głównej, to wtedy odpowiednia przestrzeń nazw z parametru nazwy jednostki się nie liczy w tej funkcji, aby się liczyła należy użyć funkcji {{Code|{{sr|#p["Nazwa przestrzeni nazw dyskusji"](frame,...)|p=Pudełko}}}}. Przestrzeń nazw z parametrów nazw przestrzennych numerkowych może odpowiadać wartości przestrzeni głównej, to wtedy odpowiednia przestrzeń nazw z parametru nazwy jednostki się liczy w tej funkcji, wtedy jest liczona nazwa przestrzeni nazw z tego parametru. Gdy parametry przestrzenne lub typ jednostki w drugim podejściu nie wskazują na przestrzeń główną, to wtedy działanie tej funkcji jest podobne do {{Code|{{sr|#p["Nazwa przestrzeni nazw dysskusji 2"](frame,...)|p=Pudełko}}}}. Definicja skrótowa funkcji: <syntaxhighlight lang="lua"> p["Nazwa przestrzeni nazw dyskusji 3"]=function(frame,czy_uwzglednic_alternatywna_nazwe,i)...end; </syntaxhighlight> Wtedy ciało funkcji tej, czyli jego definicja w środku, jest: <syntaxhighlight lang="lua"> -- Jest liczony numer parametru nazwy przestrzeni nazw, domyslnie chodzi tu o numer bazowy parametrów przestrzennych; local numer_jednostki=i or frame.args["numer jednostki"]; local liczba_numeru_jednostki=((numer_jednostki)and(tonumber(numer_jednostki)) or 0); local pudelko_pomocne_modul=require("Module:Pudełko/Pomocne"); -- Liczy nazwę przestrzeni nazw dyskusji na podstawie podanych parametrów; return pudelko_pomocne_modul.Uzyskanie_nazw_jednostki(frame,2,liczba_numeru_jednostki,nil,1); </syntaxhighlight> Parametry funkcji: * {{Code|frame}} - tablica ramki tablicy transportu, * {{Code|czy_uwzglednic_alternatywna_nazwe}} - czy ma uwzględniać nazwę przestrzeni nazw domyślną szablonu, dostępne wartości: {{Code|false}}, w której nazwa domyślna nie jest uwzględniana wtedy, oraz {{Code|nil}} i {{Code|true}}, które oznaczają to samo, w tym jeżeli ona jest uwzględniana, wtedy jest brany parametr pierwszy dziecka, który musi istnieć przy takiej wartości tego parametru, tzn. {{Code|{{m|Pudełko|Nazwa przestrzeni nazw dyskusji 3|Szablon}}}}, a nazwa uzyskana nazwy przestrzeni nazw jest w takim przypadku błędna, a jeżeli nazwa domyślna jest błędna, czyli {{Code|{{m|Pudełko|Nazwa przestrzeni nazw dyskusji 3|Moja przestrzeń}}}}, wtedy funkcja zwraca stan błędu {{Code|(błąd)}}. * {{Code|i}} - numer zmiennej nazwy przestrzeni nazw. Funkcja wykorzystuje {{Code|{{sr|#p.Uzyskanie_nazw_jednostki(frame,...)|p=Pudełko/Pomocne}}}} do wyznaczania ogólnego nazwy przestrzeni nazw dla pozycji bazowej i numerkowej, tzn. dla pozycji: jeden, dwa, trzy,..., itd, i ich ogólnej. Parametr ramki tablicy transportu rodzica szablonu: * {{Code|nazwa przestrzeni nazw}}, {{Code|nazwa przestrzeni nazw 1}}, {{Code|nazwa przestrzeni nazw 2}}, {{Code|nazwa przestrzeni nazw 3}},..., {{Code|nazwa przestrzeni nazw i}} - nazwy przestrzeni nazw dla pozycji bazowej oraz zwykłej i ogólnej numerkowej, * {{Code|nazwa jednostki}}, {{Code|nazwa jednostki 1}}, {{Code|nazwa jednostki 2}}, {{Code|nazwa jednostki 3}},... - nazwy jednostek dla pozycji bazowej i numerkowej, * {{Code|typ jednostki}}, {{Code|typ jednostki 1}}, {{Code|typ jednostki 2}}, {{Code|typ jednostki 3}},..., {{Code|typ jednostki i}} - typy jednostek, którym odpowiadają pewne przestrzenie przedmiotowe, dla pozycji bazowej, numerkowej i ogólnej. Parametry ramki tablicy transportu dziecka: * Parametry dziecka są takie same jak rodzica dla funkcji pudełkowej plus tu wymienione, * {{Code|numer jednostki}} - jak parametr {{Code|i}} nie został ustawiony, to wtedy liczy się ta zmienna. Przykłady: <syntaxhighlight lang="mediawiki"> {{Nazwa szablonu 1|nazwa przestrzeni nazw=Wikibooks|nazwa przestrzeni nazw=|nazwa przestrzeni nazw i=|nazwajednostki=Szablon:Strona|nazwa jednostki 2=Wikibooks:Strona}} <hr /> {{Nazwa szablonu 2|nazwa przestrzeni nazw=Wikibooks|nazwa przestrzeni nazw 1=Szablon|nazwa przestrzeni nazw i=|nazwa jednostki 2=Wikibooks:Strona}} </syntaxhighlight> W dziecku powiedzmy jest wywołanie, i szukamy nazwy przestrzeni nazw o numerze dwa, która została podana, ale istnieje za to jej wersji ogólna {{Code|nazwa przestrzeni nazw i}} i domyślna {{Code|nazwa przestrzeni nazw}}, ale wtedy dla tego numerkowego liczy się to ogólne z {{Code| i}}, a ponieważ ta nazwa jest pusta, więc będziemy liczyli nazwę przestrzeni nazw z {{Code|nazwa jednostki 2}}: <syntaxhighlight lang="mediawiki"> {{#invoke:Pudełko|Nazwa przestrzeni nazw 3}} <hr /> {{#invoke:Pudełko|Nazwa przestrzeni nazw 3|numer jednostki=2}} </syntaxhighlight> Na podstawie powyższego przykładu otrzymamy wynik o schemacie, nie wyniku, bo tam nie ma zmiennej {{Code|nazwa przestrzeni nazw 1}}, ale jest {{Code|nazwa przestrzeni nazw i}}: <syntaxhighlight lang="mediawiki"> <!-- Ale nie "nazwa przestrzeni nazw""; --> <!-- nazwa przestrzeni nazw=""; --> <!-- Czyli wynik: --> Dyskusja <!-- Widzimy, że wygenerowała się nazwa przestrzeni nazw, którą jest przestrzeń nazw niegłówna, jest ciągiem niepustym; --> <hr /> <!-- Ale nie "Nazwa przestrzeni nazw 2", bo jej nie ma, ale za to istnieje "nazwa przestrzeni nazw i"; --> <!-- nazwa przestrzeni nazw 2=nazwa przestrzeni nazw i="", a nazwa jednostki 2="Wikibooks:Strona"; --> <!-- Czyli wynik: --> Dyskusja Wikibooks <!-- Widzimy, że wygenerowała się nazwa przestrzeni nazw, którą jest przestrzeń nieprogramowa, ale projektu, wychodząca z nazwy jednostek w tym przypadku z "nazwa jednostki 2"; --> </syntaxhighlight> Dla parametrów numerkowych nie jest brana w tym powyższym przykładzie zmienna {{Code|nazwa przestrzeni nazw 2}}, bo jej nie ma, ale za to jest {{Code|nazwa przestrzeni nazw i}}, bo ona występuje jako parametr domyślny ogólny dla parametrów numerkowych. Tytaj jest używana jest zmienna {{Code|nazwa jednostki 2}} do wygenerowania ostatecznego wyniku, bo jak można zauważyć, parametry przestrzenne wskazują na przestrzeń główną, a nazwy jednostek już nie. Dla parametrów bazowych mamy zmienną {{Code|nazwa przestrzeni nazw}}, ona jest pusta, więc to zostanie wziete do ostatecznego wyniku. Przykłady w wikikodzie: * {{Code|{{m|Pudełko|Nazwa przestrzeni nazw dyskusji 3|nazwa przestrzeni nazw{{=}}|nazwa jednostki{{=}}Wikibooks:Strona}}}} → {{Tt|{{#invoke:Pudełko|Nazwa przestrzeni nazw dyskusji 3|nazwa przestrzeni nazw=|nazwa jednostki=Wikibooks:Szablon}}}} * {{Code|{{m|Pudełko|Nazwa przestrzeni nazw dyskusji 3|nazwa przestrzeni nazw 2{{=}}|nazwa jednostki 2{{=}}Wikibooks:Strona|numer jednostki{{=}}2}}}} → {{Tt|{{#invoke:Pudełko|Nazwa przestrzeni nazw dyskusji 3|nazwa przestrzeni nazw 2=|nazwa jednostki 2=Wikibooks:Szablon|numer jednostki=2}}}} Powyżej dla przykładu podano parametry nie w rodzicu w szablonie, tylko w dziecku, jeśli chodzi o parametry nazw przestrzeni nazw i nazw jednostek, ale ich się za to nie powinno podawać w tych ramach, tylko w szablonach, w których wywoływane są te ramki pudełek {{Code|{{m|Pudełko}}}}, ale tak tutaj tak zrobiono by było najłatwiej sprawdzić działanie tego typu funkcji. Analogicznie możemy podawać parametry typu jednostki, np.: wywołaniu modułowym {{Code|{{m|Pudełko|Nazwa przestrzeni nazw dyskusji 3|typ jednostki 2{{=}}Podręcznik|nazwa jednostki 2{{=}}Szablon:Strona|numer jednostki{{=}}2}}}} (ale wtedy jest brana przestrzeń nazw z nazwy jednostki), ale o tym więcej w rozdziałach {{Code|{{sr|# p["Dyskusyjny typ jednostki 3"](frame,i)|p=Pudełko}}}} w „{{sr|#Funkcje typu jednostki|p=Pudełko}}”, one definiują przestrzenie dyskusji, ale można użyć parametru dyskusji typu jednostki z obojętnie jaką wartością niepustą, czy pustą, czy nawet jej nie podamy, wtedy wyświetli się nazwa przestrzeni nazw dyskusji. Jeżeli typ jednostki bazowy wskazuje na przestrzeń nazw główną, wtedy się nie liczą parametry nazw jednostek, a na numerkowy, wtedy się liczy. Również parametry typu jednostki nie powinno się podawać w dziecku w ramce, tylko w rodzicu w szablonie jako parametry, w którym ta ramka jest wywoływana, ale tutaj podano jedynie dla przykładu, jak najłatwiej sprawdzić działanie tych parametrów tej funkcji. Najpierw w funkcji nagłówku brane są parametry nazw przestrzeni nazw, a jeżeli ich nie ma, to parametry typu jednostki, a jeżeli nie ma lub parametry przestrzenne wskazują na przestrzeń główną, i nie ma nazwy jednostki, to generowane są nazwy tej funkcji na podstawie aktualnej strony. == Funkcje nazw jednostki trzeciej wersji == === {{Code|p["Nazwa jednostki 3"](frame,i)}} === === {{Code|p["Nazwa przedmiotowa jednostki 3"](frame,i)}} === === {{Code|p["Nazwa dyskusji jednostki 3"](frame,i)}} === == Funkcje typu jednostki == === {{Code|p["Typ jednostki"](frame,i)}} === === {{Code|p["Typ jednostki 2"](frame,i)}} === === {{Code|p["Typ jednostki 3"](frame,i)}} === === Funkcje typu jednostki przedmiotowe === ==== {{Code|p["Przedmiotowy typ jednostki"](frame,i)}} ==== ==== {{Code|p["Przedmiotowy typ jednostki 2"](frame,i)}} ==== ==== {{Code|p["Przedmiotowy typ jednostki 3"](frame,i)}} ==== === Fukcje typu jednostki dyskusji === ==== {{Code|p["Dyskusyjny typ jednostki"](frame,i)}} ==== ==== {{Code|p["Dyskusyjny typ jednostki 2"](frame,i)}} ==== ==== {{Code|p["Dyskusyjny typ jednostki 3"](frame,i)}} ==== == Funkcje chech pudełka == === {{Code|p["Cecha pudełka"](frame)}} === === {{Code|p["Przedmiotowa cecha pudełka"](frame)}} === === {{Code|p["Dyskusyjna cecha pudełka"](frame)}} === == Fukcje ogólnego pudełka == === {{Code|p["Ogólne pudełko"](frame)}} === == Funkcje ogólne == === {{Code|p["Tekst pudełka"](frame)}} === == Funkcje błędów pudełka == === {{Code|p["Błędy pudełka"](frame)}} === === {{Code|p["Przedmiotowe błędy pudełka"](frame)}} === === {{Code|p["Dyskusyjne błędy pudełka"](frame)}} === == Funkcje nazw stron == === {{Code|p["Nazwa strony głównej projektu"](frame,i)}} === === {{Code|p["Nazwa strony głównej dla dzieci projektu"](frame,i)}} === == Funkcje kodów == === {{Code|p["Kod języka"](frame,i)}} === === {{Code|p["Kod projektu"](frame,i)}} === === {{Code|p["Klucz projektu"](frame,i)}} === == Funkcje wiki == === {{Code|p["Inny niż język bieżący wiki"](frame)}} === === {{Code|p["Inne niż lokalne wiki"](frame)}} === === {{Code|p["Inne niż bieżące wiki"](frame)}} === == Funkcje typów parametrów, czy podane je == === {{Code|p["Podano parametry nienazwane"](frame)}} === === {{Code|p["Podano parametry numerowane"](frame)}} === === {{Code|p["Podano parametry nazwane"](frame)}} === == Funkcje kodów tego projektu == === {{Code|p["Kod projektu tego projektu"](frame)}} === === {{Code|p["Kod języka tego projektu"](frame)}} === === {{Code|p["Klucz projektu tego projektu"](frame)}} === == Funkcje stron == === {{Code|p["Strona główna tego projektu"](frame)}} === === {{Code|p["Strona główna dla dzieci tego projektu"](frame)}} === == Funkcje nazw stron drugiej wersji == === {{Code|p["Nazwa strony głównej dla dzieci projektu 2"](frame)}} === === {{Code| p["Nazwa strony głównej projektu 2"](frame)}} === {{BrClear}} <noinclude><!-- -->{{ProstaStronaKoniec}}<!-- -->{{Kategoria|Opisy funkcji, w Lua w Scribunto, w modułach}}<!-- --></noinclude> dse0z7vbrjbf6rrkmc5ezqyke9syjyq 540429 540427 2026-04-24T01:47:08Z Persino 2851 540429 wikitext text/x-wiki <noinclude>{{ProstaStronaStart | nagłówek = {{Podrozdział|{{ld2|Pudełko}}|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 pudelko_modul=require("Module:Pudełko"); </syntaxhighlight> dzięki, któremu można wypisywać funkcje należącego do niego. Posługuje się na parametrach pudełkowych {{Parametr|nazwa przestrzeni nazw}} (czy też bez numerka {{Parametr|nazwa przestrzeni nazw i}} dla tego numerowanego) lub te z numerkiem po jednej spacji w nich (ale nie dla tego z końcówką {{Code| i}}) mogą zostać użyte jako parametry szablonu. Moduł {{Code|{{ld2|Pudełko}}}} przedstawia funkcje nazw w oparciu o funkcje nazw {{Code|{{ld2|Nazwy}}}}, generuje on nazwy za pomocą parametrów pudełkowych podanych poniżej. Parametr {{Parametr|nazwa jednostki}} (lub parametr {{Parametr|cel}} dla numerka tego pierwszego, tego alternatywnego), lub te z numerkiem po jednej spacji w nazwie parametru, albo numerowane numerkami {{Code|1}}, {{Code|2}},..., mogą zostać użyte jako parametry szablonu. Parametry określające rodzaj jednostki {{Parametr|typ jednostki}} z {{Parametr|dyskusja typu jednostki}}, itp. w wersjach z numerkiem po jednej spacji w nich mogą zostać użyte jako parametry szablonu. A te tymi numerowanymi liczbami naturalnymi {{Tt|nazwy jednostki}} od jedynki wzwyż poprzez szablon, w którym są one użyte, one też mogą być użyte z dwukropkiem, te numerowane, na samym początku nazwy, wtedy one są traktowane jako pełne nazwy strony, i wtedy one nie zostaną z interpretowane, że do nich trzeba użyć parametr odpowiedni z nazwą przetrzeni nazw z tego numerowanego, czy ogólny, aby utworzyć znów inną pełną nazwę strony dla tego numerka. Zestawienie: * {{Code|nazwa przestrzeni nazw}} i {{Code|nazwa przestrzeni nazw i}} (ogólna nazwa przestrzeni nazw dla wszystkich numerków, i tych numerowanych jednostek) - i to pierwsze z numerkiem, tzn. {{Code|nazwa przestrzeni nazw 1}}, {{Code|nazwa przestrzeni nazw 2}}, ..., * {{Code|nazwa jednostki}} - i te z numerkiem: {{Code|nazwa jednostki 1}}, {{Code|nazwa jednostki 2}}, ..., lub gdy jest zamiast tego parametrem numerowany, {{Code|1}}, {{Code|2}},..., który dla tego pierwszego może być uznany jako: {{Code|cel}} {{=}} {{Code|1}}, * {{Code|typ jednostki}} (parametr bazowy) i {{Code|typ jednostki i}} (parametr domyślny numerkowy) - i te z numerkiem: {{Code|typ jednostki 1}}, {{Code|typ jednostki 2}}, ..., tzn. gdy chcemy określić z jakim typem jednostki mamy do czynienia w zależności do jakiej przestrzeni nazw należy, a w danej, czy jest on np. programowy, czy tylko jest opisem, jak to bywa w szablonach {{Np|Template|link=tak}}, podobnie jest w przypadku {{Np|Module|link=tak}}, czy jak jest w innych przestrzeniach nazw, ** {{Code|dyskusja typu jednostki}} (parametr bazowy) i {{Code|dyskusja typu jednostki i}} (parametr domyślny numerkowy) - i te z numerkiem: {{Code|dyskusja typu jednostki 1}}, {{Code|dyskusja typu jednostki 2}}, ..., gdy chcemy określić wartością niepustą,że chodzi tutaj o typ jednostki. == {{Code|p.CzyNiepoprawnaNazwa(nazwa_jednostki)}} == Funkcja sprawdzajaca, czy jest poprawnie podana nazwa jednostki, czy ma poprawną nazwę. Znakami tymi, z których nie powinna składać się nazwa jest {{Code|<nowiki>{}<>|[]#\n</nowiki>}} i dodatkowo znak {{Code|&#127;}} (kod {{Code|{{Nowiki|&#127;}}}}). Też nie może składać się z trzech znaków tyldy, tzn. {{Code|<nowiki>~~~</nowiki>}}. Również w swojej budowie nie może składać się ze kodów {{Strong|HTML}} literowych o wzorze {{Code|{{Nowiki|&(%a+);}}}}. Natomiast może składać się z {{Code|{{Nowiki|&#(%d+);}}}} i {{Code|{{Nowiki|&#x(%x+);}}}}, ale w pierw te kody muszą być zamienione na normalne znaki. Skrótowa definicja funkcji: <syntaxhighlight lang="lua"> function p.CzyNiepoprawnaNazwa(nazwa_jednostki)...end; </syntaxhighlight> Wtedy ciało funkcji tej, czyli jego definicja w środku, jest: <syntaxhighlight lang="lua"> -- Moduł: "Moduł:Html/dane", służy do ładowania znaku o kodzie HTML "&#127;"; local html_dane_modul=mw.loadData("Module:Html/dane"); return mw.ustring.match(nazwa_jednostki,"[{}<>|%[%]#\n"..html_dane_modul.znak_127.."]+") or mw.ustring.match(nazwa_jednostki,"~~~") or mw.ustring.match(nazwa_jednostki,"&(%a+);"); </syntaxhighlight> Parametry: * {{Code|nazwa_jednostki}} - nazwa jednostki do sprawdzenia. Przykłady: <syntaxhighlight lang="lua"> local pudelko_modul=require("Module:Pudełko"); -- Podana przykładowa niepoprawna nazwa jedostki local nazwa_jednostki="Nazwa pliku [[Nazwa linku w pliku]]"; -- Fukcja zwróci wartość: local czy_poprawna_nazwa=true; local czy_poprawna_nazwa=pudelko_modul.CzyNiepoprawnaNazwa(nazwa_jednostki); </syntaxhighlight> == Funkcje nazw przestrzeni nazw == === {{Code|p["Nazwa przestrzeni nazw"](frame,...)}} === Funkcja pisze nazwę przestrzeni nazw, niezależnie, czy to jest przedmiotowa, czy dyskusji, według podanej w zmiennej {{Code|nazwa przestrzeni nazw}} dla pozycja bazowej w podanych parametrach szablonu rodzicu ramki dziecka, lub dla innej pozycji należy parametr podawać w formie {{Code|nazwa przestrzeni nazw 1}}, {{Code|nazwa przestrzeni nazw 2}}, {{Code|nazwa przestrzeni nazw 3}},..., lub te parametry można podać w postaci ogólnej {{Code|nazwa przestrzeni nazw i}}. Parametry podaje się w parametrach rodzica wywołania tej funkcji {{Code|{{m|Pudełko|Nazwa przestrzeni nazw}}}} (ale ich nie trzeba podawać w dziecku, ale można) i w parametrach dziecka, jeśli chodzi o zmienną {{Code|numer jednostki}}, czyli np.: {{Code|{{m|Pudełko|Nazwa przestrzeni nazw|numer jednostki{{=}}<jakaś liczba całkowita dodatnia>}}}}. Te parametry przestrzenne zamiast w rodzicu w szablonie można podać w ramce dziecka, wtedy parametry dziecka mają pierwszeństwo. Przestrzeń nazw z parametrów nazw przestrzennych może odpowiadać wartości przestrzeni głównej, to wtedy odpowiednia przestrzeń nazw z parametru nazwy jednostki się nie liczy w tej funkcji, aby się liczyła należy użyć funkcji {{Code|{{sr|#p["Nazwa przestrzeni nazw 2"](frame,...)|p=Pudełko}}}}. Definicja skrótowa funkcji: <syntaxhighlight lang="lua"> p["Nazwa przestrzeni nazw"]=function(frame,czy_uwzglednic_alternatywna_nazwe,i)...end; </syntaxhighlight> Wtedy ciało funkcji tej, czyli jego definicja w środku, jest: <syntaxhighlight lang="lua"> -- Jest liczony numer parametru nazwy przestrzeni nazw, domyslnie chodzi tu o numer bazowy parametrów przestrzennych; local numer_jednostki=i or frame.args["numer jednostki"]; local liczba_numer_jednostki=((numer_jednostki)and(tonumber(numer_jednostki))or 0); local pudelko_pomocne_modul=require("Module:Pudełko/Pomocne"); -- Liczy nazwę przestrzeni nazw na podstawie podanych parametrów; return pudelko_pomocne_modul.Nazwa_przestrzeni_nazw(frame,0, czy_uwzglednic_alternatywna_nazwe,liczba_numer_jednostki); </syntaxhighlight> Parametry funkcji: * {{Code|frame}} - tablica ramki tablicy transportu, * {{Code|czy_uwzglednic_alternatywna_nazwe}} - czy ma uwzględniać nazwę przestrzeni nazw domyślną szablonu, dostępne wartości: {{Code|false}}, w której nazwa domyślna nie jest uwzględniana wtedy, oraz {{Code|nil}} i {{Code|true}}, które oznaczają to samo, w tym jeżeli ona jest uwzględniana, wtedy jest brany parametr pierwszy dziecka, który musi istnieć przy takiej wartości tego parametru, tzn. {{Code|{{m|Pudełko|Nazwa przestrzeni nazw|Szablon}}}}, a nazwa uzyskana nazwy przestrzeni nazw jest w takim przypadku błędna, a jeżeli nazwa domyślna jest błędna, czyli {{Code|{{m|Pudełko|Nazwa przestrzeni nazw|Moja przestrzeń}}}}, wtedy funkcja zwraca stan błędu {{Code|(błąd)}}. * {{Code|i}} - numer zmiennej nazwy przestrzeni nazw. Funkcja wykorzystuje {{Code|{{sr|#p.Nazwa_przestrzeni_nazw(frame,...)|p=Pudełko/Pomocne}}}} do wyznaczania ogólnego nazwy przestrzeni nazw dla pozycji bazowej i numerkowej, tzn. dla pozycji: jeden, dwa, trzy,..., itd, i ich ogólnej. Parametr ramki tablicy transportu rodzica szablonu: * {{Code|nazwa przestrzeni nazw}}, {{Code|nazwa przestrzeni nazw 1}}, {{Code|nazwa przestrzeni nazw 2}}, {{Code|nazwa przestrzeni nazw 3}},..., {{Code|nazwa przestrzeni nazw i}} - nazwy przestrzeni nazw dla pozycji bazowej oraz zwykłej i ogólnej numerkowej, * {{Code|typ jednostki}}, {{Code|typ jednostki 1}}, {{Code|typ jednostki 2}}, {{Code|typ jednostki 3}},..., {{Code|typ jednostki i}} - typy jednostek, którym odpowiadają pewne przestrzenie przedmiotowe, dla pozycji bazowej, numerkowej i ogólnej, ** {{Code|dyskusja typu jednostki}}, {{Code|dyskusja typu jednostki 1}}, {{Code|dyskusja typ jednostki 2}}, {{Code|dyskusja typ jednostki 3}},..., {{Code|dyskusja typ jednostki i}} - czy dany typ jednostki ma przedstawiać, jeśli niepusta, przestrzeń dyskusji dla pozycji bazowej, numerkowej i ogólnej. Parametry ramki tablicy transportu dziecka: * Parametry dziecka są takie same jak rodzica dla funkcji pudełkowej plus tu wymienione, * {{Code|numer jednostki}} - jak parametr {{Code|i}} nie został ustawiony, to wtedy liczy się ta zmienna. Przykłady: <syntaxhighlight lang="mediawiki"> {{Nazwa szablonu|nazwa przestrzeni nazw=Wikibooks|nazwa przestrzeni nazw 2=Szablon|nazwa przestrzeni nazw i=Moduł}} </syntaxhighlight> W dziecku powiedzmy jest wywołanie, i szukamy nazwy przestrzeni nazw o numerze dwa, która nie została podana, ale istnieje za to jej wersji ogólna {{Code|nazwa przestrzeni nazw i}} i domyślna {{Code|nazwa przestrzeni nazw}}: <syntaxhighlight lang="mediawiki"> {{#invoke:Pudełko|Nazwa przestrzeni nazw|numer jednostki=1}} </syntaxhighlight> Na podstawie powyższego przykładu otrzymamy wynik o schemacie, nie wyniku, bo tam nie ma zmiennej {{Code|nazwa przestrzeni nazw 1}}, ale jest {{Code|nazwa przestrzeni nazw i}}: <syntaxhighlight lang="mediawiki"> <!-- Ale nie "nazwa przestrzeni nazw", bo jej nie ma, ale za to istnieje "nazwa przestrzeni nazw i"; --> <!-- nazwa przestrzeni nazw 2=nazwa przestrzeni nazw i=Moduł; --> <!-- Czyli wynik: --> Moduł <!-- Widzimy, że wygenerowała się nazwa przestrzeni nazw, którą jest przestrzeń programowa, którą również jest "Szablon"; --> </syntaxhighlight> Nie jest brana w tym powyższym przykładzie zmienna {{Code|nazwa przestrzeni nazw}}, bo jej nie ma, ale za to jest {{Code|nazwa przestrzeni nazw i}}, bo ona występuje jako parametr domyślny ogólny dla parametrów numerkowych. Przykłady w wikikodzie: * {{Code|{{m|Pudełko|Nazwa przestrzeni nazw|numer jednostki{{=}}2}}}} → {{Tt|{{#invoke:Pudełko|Nazwa przestrzeni nazw|numer jednostki=2}}}} * {{Code|{{m|Pudełko|Nazwa przestrzeni nazw|Szablon|nazwa przestrzeni nazw i{{=}}Moja przestrzeń|numer jednostki{{=}}2}}}} → {{Tt|{{#invoke:Pudełko|Nazwa przestrzeni nazw|Szablon|nazwa przestrzeni nazw i=Moja przestrzeń|numer jednostki=2}}}} * {{Code|{{m|Pudełko|Nazwa przestrzeni nazw|nazwa przestrzeni nazw 2{{=}}Szablon|numer jednostki{{=}}2}}}} → {{Tt|{{#invoke:Pudełko|Nazwa przestrzeni nazw|nazwa przestrzeni nazw 2=Szablon|numer jednostki=2}}}} * {{Code|{{m|Pudełko|Nazwa przestrzeni nazw|nazwa przestrzeni nazw 2{{=}}Szablon|numer jednostki{{=}}2}}}} → {{Tt|{{#invoke:Pudełko|Nazwa przestrzeni nazw|nazwa przestrzeni nazw i=Szablon|numer jednostki=2}}}} * {{Code|{{m|Pudełko|Nazwa przestrzeni nazw|nazwa przestrzeni nazw{{=}}Szablon|numer jednostki{{=}}2}}}} → {{Tt|{{#invoke:Pudełko|Nazwa przestrzeni nazw|nazwa przestrzeni nazw=Szablon|numer jednostki=2}}}} Powyżej dla przykładu podano parametry nie w rodzicu w szablonie, tylko w dziecku, jeśli chodzi o parametry nazw przestrzeni nazw, ale ich się za to nie powinno podawać w tych ramach, tylko w szablonach, w których wywoływane są te ramki pudełek {{Code|{{m|Pudełko}}}}, ale tak tutaj tak zrobiono by było najłatwiej sprawdzić działanie tego typu funkcji. Analogicznie możemy podawać parametry typu jednostki, np.: wywołaniu modułowym {{Code|{{m|Pudełko|Nazwa przestrzeni nazw|typ jednostki 2{{=}}strona szablonu|numer jednostki{{=}}2}}}}, ale o tym więcej w rozdziałach {{Code|{{sr|# p["Typ jednostki"](frame,i)|p=Pudełko}}}} w „{{sr|#Funkcje typu jednostki|p=Pudełko}}”, on definiuje przestrzenie przedmiotowe, ale można użyć parametru dyskusji typu jednostki z wartością niepustą, wtedy wyświetli się nazwa przestrzeni nazw dyskusji. Również parametry typu jednostki nie powinno się podawać w dziecku w ramce, tylko w rodzicu w szablonie jako parametry, w którym ta ramka jest wywoływana, ale tutaj podano jedynie dla przykładu, jak najłatwiej sprawdzić działanie tych parametrów tej funkcji. Najpierw w funkcji nagłówku brane są parametry nazw przestrzeni nazw, a jeżeli ich nie ma, to parametry typu jednostki, a jeżeli nie ma, to generowane są nazwy na podstawie aktualnego modułu. === {{Code|p["Nazwa przedmiotowej przestrzeni nazw"](frame,...)}} === Funkcja pisze przedmiotową nazwę przestrzeni nazw jakikolwiek nazwy przestrzeni nazw (tzn. nazwę przedmiotową nazwy przestrzenie nazw, czyli nie dyskusji, zamieniana jest na nią samą, czyli identyfikator przestrzeni się nie zmienia, a dyskusji, nie przedmiotową, przekształca się na przedmiotową jej odpowiadającą, czyli w tym przypadku identyfikator przestrzeni zmniejsza się o numer mniej), według podanej w zmiennej {{Code|nazwa przestrzeni nazw}} dla pozycja bazowej w podanych parametrach szablonu rodzicu ramki dziecka, lub dla innej pozycji należy parametr podawać w formie {{Code|nazwa przestrzeni nazw 1}}, {{Code|nazwa przestrzeni nazw 2}}, {{Code|nazwa przestrzeni nazw 3}},..., lub te parametry można podać w postaci ogólnej {{Code|nazwa przestrzeni nazw i}}. Parametry podaje się w parametrach rodzica wywołania tej funkcji {{Code|{{m|Pudełko|Nazwa przedmiotowej przestrzeni nazw}}}} (ale ich nie trzeba podawać w dziecku, ale można) i w parametrach dziecka, jeśli chodzi o zmienną {{Code|numer jednostki}}, czyli np.: {{Code|{{m|Pudełko|Nazwa przedmiotowej przestrzeni nazw|numer jednostki{{=}}<jakaś liczba całkowita dodatnia>}}}}. Te parametry przestrzenne zamiast w rodzicu w szablonie można podać w ramce dziecka, wtedy parametry dziecka mają pierwszeństwo. Parametry przestrzenne mogą mogą być podane w postaci przestrzeni przedmiotowej lub dyskusji, ale ta funkcja zawsze ją zamienia na przedmiotową. Przestrzeń nazw z parametrów nazw przestrzennych może odpowiadać wartości przestrzeni głównej, to wtedy odpowiednia przestrzeń nazw z parametru nazwy jednostki się nie liczy w tej funkcji, aby się liczyła należy użyć funkcji {{Code|{{sr|#p["Nazwa przedmiotowej przestrzeni nazw 2"](frame,...)|p=Pudełko}}}}. Definicja skrótowa funkcji: <syntaxhighlight lang="lua"> p["Nazwa przedmiotowej przestrzeni nazw"]=function(frame,czy_uwzglednic_alternatywna_nazwe,i)...end; </syntaxhighlight> Wtedy ciało funkcji tej, czyli jego definicja w środku, jest: <syntaxhighlight lang="lua"> -- Jest liczony numer parametru nazwy przestrzeni nazw, domyslnie chodzi tu o numer bazowy parametrów przestrzennych; local numer_jednostki=i or frame.args["numer jednostki"]; local liczba_numer_jednostki=((numer_jednostki)and(tonumber(numer_jednostki))or 0); local pudelko_pomocne_modul=require("Module:Pudełko/Pomocne"); -- Liczy nazwę przestrzeni nazw przedmiotową na podstawie podanych parametrów; return pudelko_pomocne_modul.Nazwa_przestrzeni_nazw(frame,1, czy_uwzglednic_alternatywna_nazwe,liczba_numer_jednostki); </syntaxhighlight> Parametry funkcji: * {{Code|frame}} - tablica ramki tablicy transportu, * {{Code|czy_uwzglednic_alternatywna_nazwe}} - czy ma uwzględniać nazwę przestrzeni nazw domyślną szablonu, dostępne wartości: {{Code|false}}, w której nazwa domyślna nie jest uwzględniana wtedy, oraz {{Code|nil}} i {{Code|true}}, które oznaczają to samo, w tym jeżeli ona jest uwzględniana, wtedy jest brany parametr pierwszy dziecka, który musi istnieć przy takiej wartości tego parametru, tzn. {{Code|{{m|Pudełko|Nazwa przedmiotowej przestrzeni nazw|Dyskusja szablonu}}}} - ta nazwa domyślna zostanie zamieniona na przedmiotową, a jak ona by była przedmiotowa, to żadnej zamiany by nie było, a nazwa uzyskana z nazwy przestrzeni nazw z parametrów przestrzennych jest w takim przypadku błędna, to w takim razie brany jest ten parametr, a jeżeli ta nazwa domyślna jest błędna, czyli {{Code|{{m|Pudełko|Nazwa przedmiotowej przestrzeni nazw|Moja przestrzeń}}}}, wtedy funkcja zwraca stan błędu {{Code|(błąd)}}. * {{Code|i}} - numer zmiennej nazwy przestrzeni nazw. Funkcja wykorzystuje {{Code|{{sr|#p.Nazwa_przestrzeni_nazw(frame,...)|p=Pudełko/Pomocne}}}} do wyznaczania ogólnego nazwy przestrzeni nazw dla pozycji bazowej i numerkowej, tzn. dla pozycji: jeden, dwa, trzy,..., itd, i ich ogólnej. Parametr ramki tablicy transportu rodzica szablonu: * {{Code|nazwa przestrzeni nazw}}, {{Code|nazwa przestrzeni nazw 1}}, {{Code|nazwa przestrzeni nazw 2}}, {{Code|nazwa przestrzeni nazw 3}},..., {{Code|nazwa przestrzeni nazw i}} - nazwy przestrzeni nazw dla pozycji bazowej oraz zwykłej i ogólnej numerkowej, * {{Code|typ jednostki}}, {{Code|typ jednostki 1}}, {{Code|typ jednostki 2}}, {{Code|typ jednostki 3}},..., {{Code|typ jednostki i}} - typy jednostek, którym odpowiadają pewne przestrzenie przedmiotowe, dla pozycji bazowej, numerkowej i ogólnej. Parametry ramki tablicy transportu dziecka: * Parametry dziecka są takie same jak rodzica dla funkcji pudełkowej plus tu wymienione, * {{Code|numer jednostki}} - jak parametr {{Code|i}} nie został ustawiony, to wtedy liczy się ta zmienna. Przykłady: <syntaxhighlight lang="mediawiki"> {{Nazwa szablonu|nazwa przestrzeni nazw=Dyskusja Wikibooks|nazwa przestrzeni nazw 2=Dyskusja szablonu|nazwa przestrzeni nazw i=Dyskusja modułu}} </syntaxhighlight> W dziecku powiedzmy jest wywołanie, i szukamy nazwy przestrzeni nazw o numerze dwa, która nie została podana, ale istnieje za to jej wersji ogólna {{Code|nazwa przestrzeni nazw i}} i domyślna {{Code|nazwa przestrzeni nazw}}: <syntaxhighlight lang="mediawiki"> {{#invoke:Pudełko|Nazwa przedmiotowej przestrzeni nazw|numer jednostki=1}} </syntaxhighlight> Na podstawie powyższego przykładu otrzymamy wynik o schemacie, nie wyniku, bo tam nie ma zmiennej {{Code|nazwa przestrzeni nazw 1}}, ale jest {{Code|nazwa przestrzeni nazw i}}: <syntaxhighlight lang="mediawiki"> <!-- Ale nie "nazwa przestrzeni nazw", bo jej nie ma, ale za to istnieje "nazwa przestrzeni nazw i"; --> <!-- nazwa przestrzeni nazw 2=nazwa przestrzeni nazw i=Dyskusja modułu; --> <!-- Czyli wynik: --> Moduł <!-- Widzimy, że wygenerowała się nazwa przestrzeni nazw, którą jest przestrzeń przedmiotowa programowa przestrzeni dyskusji "Dyskusja modułu", którą również jest "Szablon" jego przestrzeni dyskusji "Dyskusja szablonu", a dla ich przestrzeni przedmiotowej, zamiast dyskusji, to samo przekształca się na to samo; --> </syntaxhighlight> Nie jest brana w tym powyższym przykładzie zmienna {{Code|nazwa przestrzeni nazw}}, bo jej nie ma, ale za to jest {{Code|nazwa przestrzeni nazw i}}, bo ona występuje jako parametr domyślny ogólny dla parametrów numerkowych. Przykłady w wikikodzie: * {{Code|{{m|Pudełko|Nazwa przedmiotowej przestrzeni nazw|numer jednostki{{=}}2}}}} → {{Tt|{{#invoke:Pudełko|Nazwa przedmiotowej przestrzeni nazw|numer jednostki=2}}}} * {{Code|{{m|Pudełko|Nazwa przedmiotowej przestrzeni nazw|Dyskusja szablonu|nazwa przestrzeni nazw i{{=}}Moja przestrzeń|numer jednostki{{=}}2}}}} → {{Tt|{{#invoke:Pudełko|Nazwa przedmiotowej przestrzeni nazw|Dyskusja szablonu|nazwa przestrzeni nazw i=Moja przestrzeń|numer jednostki=2}}}} * {{Code|{{m|Pudełko|Nazwa przedmiotowej przestrzeni nazw|nazwa przestrzeni nazw 2{{=}}Dyskusja szablonu|numer jednostki{{=}}2}}}} → {{Tt|{{#invoke:Pudełko|Nazwa przedmiotowej przestrzeni nazw|nazwa przestrzeni nazw 2=Dyskusja szablonu|numer jednostki=2}}}} * {{Code|{{m|Pudełko|Nazwa przedmiotowej przestrzeni nazw|nazwa przestrzeni nazw 2{{=}}Dyskusja szablonu|numer jednostki{{=}}2}}}} → {{Tt|{{#invoke:Pudełko|Nazwa przedmiotowej przestrzeni nazw|nazwa przestrzeni nazw i=Dyskusja szablonu|numer jednostki=2}}}} * {{Code|{{m|Pudełko|Nazwa przedmiotowej przestrzeni nazw|nazwa przestrzeni nazw{{=}}Dyskusja szablonu|numer jednostki{{=}}2}}}} → {{Tt|{{#invoke:Pudełko|Nazwa przedmiotowej przestrzeni nazw|nazwa przestrzeni nazw=Dyskusja szablonu|numer jednostki=2}}}} Powyżej dla przykładu podano parametry nie w rodzicu w szablonie, tylko w dziecku, jeśli chodzi o parametry nazw przestrzeni nazw, ale ich się za to nie powinno podawać w tych ramach, tylko w szablonach, w których wywoływane są te ramki pudełek {{Code|{{m|Pudełko}}}}, ale tak tutaj tak zrobiono by było najłatwiej sprawdzić działanie tego typu funkcji. Analogicznie możemy podawać parametry typu jednostki, np.: wywołaniu modułowym {{Code|{{m|Pudełko|Nazwa przedmiotowej przestrzeni nazw|typ jednostki 2{{=}}strona szablonu|numer jednostki{{=}}2}}}}, ale o tym więcej w rozdziałach {{Code|{{sr|# p["Przedmiotowy typ jednostki"](frame,i)|p=Pudełko}}}} w „{{sr|#Funkcje typu jednostki|p=Pudełko}}”, ale wtedy ta sama nazwa przestrzeni nazw reprezentowana przez {{Parametr|typ jednostki 2|strona szablonu}}, jest zamieniana na to samo, lepiej jest tutaj używać parametrów przestrzennych nazw niż typu jednostki, bo typ jednostki ma taką samą wartość dla przestrzeni przedmiotowej, co dyskusji. Tutaj parametr dyskusji typu jednostki bazowy i numerkowy ogólny, czy szczegółowy, nie gra roli, bo nawet, gdy wygenerujemy nazwę przestrzeni dyskusji za pomoca tego parametru, to i tak otrzymamy na samym końcu jego nazwę przedmiotową. Również parametry typu jednostki nie powinno się podawać w dziecku w ramce, tylko w rodzicu w szablonie jako parametry, w którym ta ramka jest wywoływana, ale tutaj podano jedynie dla przykładu, jak najłatwiej sprawdzić działanie tych parametrów tej funkcji. Najpierw w funkcji nagłówku brane są parametry nazw przestrzeni nazw, a jeżeli ich nie ma, to parametry typu jednostki, a jeżeli nie ma, to generowane są nazwy na podstawie aktualnego modułu. === {{Code|p["Nazwa przestrzeni nazw dyskusji"](frame,...)}} === Funkcja pisze nazwę przestrzeni nazw dyskusji jakikolwiek nazwy przestrzeni nazw (tzn. nazwę przedmiotową nazwy przestrzenie nazw, czyli nie dyskusji, zamieniana jest na dyskusji, czyli identyfikator przestrzeni się zmienia jeden wyżej, a dyskusji, nie przedmiotową, przekształca się na tą samą), według podanej w zmiennej {{Code|nazwa przestrzeni nazw}} dla pozycja bazowej w podanych parametrach szablonu rodzicu ramki dziecka, lub dla innej pozycji należy parametr podawać w formie {{Code|nazwa przestrzeni nazw 1}}, {{Code|nazwa przestrzeni nazw 2}}, {{Code|nazwa przestrzeni nazw 3}},..., lub te parametry można podać w postaci ogólnej {{Code|nazwa przestrzeni nazw i}}. Parametry podaje się w parametrach rodzica wywołania tej funkcji {{Code|{{m|Pudełko|Nazwa przestrzeni nazw dyskusji}}}} (ale ich nie trzeba podawać w dziecku, ale można) i w parametrach dziecka, jeśli chodzi o zmienną {{Code|numer jednostki}}, czyli np.: {{Code|{{m|Pudełko|Nazwa przestrzeni nazw dyskusji|numer jednostki{{=}}<jakaś liczba całkowita dodatnia>}}}}. Te parametry przestrzenne zamiast w rodzicu w szablonie można podać w ramce dziecka, wtedy parametry dziecka mają pierwszeństwo. Parametry przestrzenne mogą mogą być podane w postaci przestrzeni przedmiotowej lub dyskusji, ale ta funkcja zawsze ją zamienia na dyskusji. Przestrzeń nazw z parametrów nazw przestrzennych może odpowiadać wartości przestrzeni głównej, to wtedy odpowiednia przestrzeń nazw z parametru nazwy jednostki się nie liczy w tej funkcji, aby się liczyła należy użyć funkcji {{Code|{{sr|#p["Nazwa przestrzeni nazw dyskusji 2"](frame,...)|p=Pudełko}}}}. Definicja skrótowa funkcji: <syntaxhighlight lang="lua"> p["Nazwa przestrzeni nazw dyskusji"]=function(frame,czy_uwzglednic_alternatywna_nazwe,i)...end; </syntaxhighlight> Wtedy ciało funkcji tej, czyli jego definicja w środku, jest: <syntaxhighlight lang="lua"> -- Jest liczony numer parametru nazwy przestrzeni nazw, domyslnie chodzi tu o numer bazowy parametrów przestrzennych; local numer_jednostki=i or frame.args["numer jednostki"]; local liczba_numer_jednostki=((numer_jednostki)and(tonumber(numer_jednostki))or 0); local pudelko_pomocne_modul=require("Module:Pudełko/Pomocne"); -- Liczy nazwę przestrzeni nazw dyskusji na podstawie podanych parametrów; return pudelko_pomocne_modul.Nazwa_przestrzeni_nazw(frame,2, czy_uwzglednic_alternatywna_nazwe,liczba_numer_jednostki); </syntaxhighlight> Parametry funkcji: * {{Code|frame}} - tablica ramki tablicy transportu, * {{Code|czy_uwzglednic_alternatywna_nazwe}} - czy ma uwzględniać nazwę przestrzeni nazw domyślną szablonu, dostępne wartości: {{Code|false}}, w której nazwa domyślna nie jest uwzględniana wtedy, oraz {{Code|nil}} i {{Code|true}}, które oznaczają to samo, w tym jeżeli ona jest uwzględniana, wtedy jest brany parametr pierwszy dziecka, który musi istnieć przy takiej wartości tego parametru, tzn. {{Code|{{m|Pudełko|Nazwa przestrzeni nazw dyskusji|Szablon}}}} - ta nazwa domyślna zostanie przekształcona na dyskusji, a jeżeli ona by była dyskusji, to nie byłoby żadnego przekształcenia, a nazwa uzyskana nazwy przestrzeni nazw z parametrów przestrzennych jest w takim przypadku błędna, to w takim razie brany jest ten parametr, a jeżeli nazwa domyślna jest błędna, czyli {{Code|{{m|Pudełko|Nazwa przestrzeni nazw dyskusji|Moja przestrzeń}}}}, wtedy funkcja zwraca stan błędu {{Code|(błąd)}}. * {{Code|i}} - numer zmiennej nazwy przestrzeni nazw. Funkcja wykorzystuje {{Code|{{sr|#p.Nazwa_przestrzeni_nazw(frame,...)|p=Pudełko/Pomocne}}}} do wyznaczania ogólnego nazwy przestrzeni nazw dla pozycji bazowej i numerkowej, tzn. dla pozycji: jeden, dwa, trzy,..., itd, i ich ogólnej. Parametr ramki tablicy transportu rodzica szablonu: * {{Code|nazwa przestrzeni nazw}}, {{Code|nazwa przestrzeni nazw 1}}, {{Code|nazwa przestrzeni nazw 2}}, {{Code|nazwa przestrzeni nazw 3}},..., {{Code|nazwa przestrzeni nazw i}} - nazwy przestrzeni nazw dla pozycji bazowej oraz zwykłej i ogólnej numerkowej, * {{Code|typ jednostki}}, {{Code|typ jednostki 1}}, {{Code|typ jednostki 2}}, {{Code|typ jednostki 3}},..., {{Code|typ jednostki i}} - typy jednostek, którym odpowiadają pewne przestrzenie przedmiotowe, dla pozycji bazowej, numerkowej i ogólnej. Parametry ramki tablicy transportu dziecka: * Parametry dziecka są takie same jak rodzica dla funkcji pudełkowej plus tu wymienione, * {{Code|numer jednostki}} - jak parametr {{Code|i}} nie został ustawiony, to wtedy liczy się ta zmienna. Przykłady: <syntaxhighlight lang="mediawiki"> {{Nazwa szablonu|nazwa przestrzeni nazw=Wikibooks|nazwa przestrzeni nazw 2=Szablon|nazwa przestrzeni nazw i=Moduł}} </syntaxhighlight> W dziecku powiedzmy jest wywołanie, i szukamy nazwy przestrzeni nazw o numerze dwa, która nie została podana, ale istnieje za to jej wersji ogólna {{Code|nazwa przestrzeni nazw i}} i domyślna {{Code|nazwa przestrzeni nazw}}: <syntaxhighlight lang="mediawiki"> {{#invoke:Pudełko|Nazwa przestrzeni nazw dyskusji|numer jednostki=1}} </syntaxhighlight> Na podstawie powyższego przykładu otrzymamy wynik o schemacie, nie wyniku, bo tam nie ma zmiennej {{Code|nazwa przestrzeni nazw 1}}, ale jest {{Code|nazwa przestrzeni nazw i}}: <syntaxhighlight lang="mediawiki"> <!-- Ale nie "nazwa przestrzeni nazw", bo jej nie ma, ale za to istnieje "nazwa przestrzeni nazw i"; --> <!-- nazwa przestrzeni nazw 2=nazwa przestrzeni nazw i=Moduł; --> <!-- Czyli wynik: --> Dyskusja modułu <!-- Widzimy, że wygenerowała się nazwa przestrzeni nazw, którą jest przestrzeń dyskusji przestrzeni programowej przestrzeni przedmiotowej "Moduł", którą również jest "Szablon" jego przestrzeni dyskusji "Dyskusja szablonu", a dla ich przestrzeni przedmiotowej, zamiast dyskusji, to przekształca się na dyskusji jej odpowiadającą; --> </syntaxhighlight> Nie jest brana w tym powyższym przykładzie zmienna {{Code|nazwa przestrzeni nazw}}, bo jej nie ma, ale za to jest {{Code|nazwa przestrzeni nazw i}}, bo ona występuje jako parametr domyślny ogólny dla parametrów numerkowych. Przykłady w wikikodzie: * {{Code|{{m|Pudełko|Nazwa przestrzeni nazw dyskusji|numer jednostki{{=}}2}}}} → {{Tt|{{#invoke:Pudełko|Nazwa przestrzeni nazw dyskusji|numer jednostki=2}}}} * {{Code|{{m|Pudełko|Nazwa przestrzeni nazw dyskusji|Szablon|nazwa przestrzeni nazw i{{=}}Moja przestrzeń|numer jednostki{{=}}2}}}} → {{Tt|{{#invoke:Pudełko|Nazwa przestrzeni nazw dyskusji|Szablon|nazwa przestrzeni nazw i=Moja przestrzeń|numer jednostki=2}}}} * {{Code|{{m|Pudełko|Nazwa przestrzeni nazw dyskusji|nazwa przestrzeni nazw 2{{=}}Szablon|numer jednostki{{=}}2}}}} → {{Tt|{{#invoke:Pudełko|Nazwa przestrzeni nazw dyskusji|nazwa przestrzeni nazw 2=Szablon|numer jednostki=2}}}} * {{Code|{{m|Pudełko|Nazwa przestrzeni nazw dyskusji|nazwa przestrzeni nazw 2{{=}}Szablon|numer jednostki{{=}}2}}}} → {{Tt|{{#invoke:Pudełko|Nazwa przestrzeni nazw dyskusji|nazwa przestrzeni nazw i=Szablon|numer jednostki=2}}}} * {{Code|{{m|Pudełko|Nazwa przestrzeni nazw dyskusji|nazwa przestrzeni nazw{{=}}Szablon|numer jednostki{{=}}2}}}} → {{Tt|{{#invoke:Pudełko|Nazwa przestrzeni nazw dyskusji|nazwa przestrzeni nazw=Szablon|numer jednostki=2}}}} Powyżej dla przykładu podano parametry nie w rodzicu w szablonie, tylko w dziecku, jeśli chodzi o parametry nazw przestrzeni nazw, ale ich się za to nie powinno podawać w tych ramach, tylko w szablonach, w których wywoływane są te ramki pudełek {{Code|{{m|Pudełko}}}}, ale tak tutaj tak zrobiono by było najłatwiej sprawdzić działanie tego typu funkcji. Analogicznie możemy podawać parametry typu jednostki, np.: wywołaniu modułowym {{Code|{{m|Pudełko|Nazwa przestrzeni nazw dyskusji|typ jednostki 2{{=}}strona szablonu|numer jednostki{{=}}2}}}}, ale o tym więcej w rozdziałach {{Code|{{sr|# p["Dyskusyjny typ jednostki"](frame,i)|p=Pudełko}}}} w „{{sr|#Funkcje typu jednostki|p=Pudełko}}”, ale wtedy nazwa przestrzeni nazw reprezentowana przez {{Parametr|typ jednostki 2|strona szablonu}}, jest zamieniana na nazwę przestrzeni nazw dyskusji. Parametr dyskusji typu jednostki bazowy lub dla danego numerka ogólny, czy szczegółowy, nie gra roli. Również parametry typu jednostki nie powinno się podawać w dziecku w ramce, tylko w rodzicu w szablonie jako parametry, w którym ta ramka jest wywoływana, ale tutaj podano jedynie dla przykładu, jak najłatwiej sprawdzić działanie tych parametrów tej funkcji. Najpierw w funkcji nagłówku brane są parametry nazw przestrzeni nazw, a jeżeli ich nie ma, to parametry typu jednostki, a jeżeli nie ma, to generowane są nazwy na podstawie aktualnego modułu. == Funkcje nazw przestrzeni nazw drugiej wersji == === {{Code|p["Nazwa przestrzeni nazw 2"](frame,...)}} === Funkcja pisze nazwę przestrzeni nazw, niezależnie, czy to jest przedmiotowa, czy dyskusji, według, i nie zawsze tylko, podanej w zmiennej {{Code|nazwa przestrzeni nazw}} dla pozycja bazowej w podanych parametrach szablonu rodzicu ramki dziecka, lub dla innej pozycji należy parametr podawać w formie {{Code|nazwa przestrzeni nazw 1}}, {{Code|nazwa przestrzeni nazw 2}}, {{Code|nazwa przestrzeni nazw 3}},..., lub te parametry można podać w postaci ogólnej {{Code|nazwa przestrzeni nazw i}}. W tej funkcji trzeba też podawać parametry nazwy jednostek {{Code|nazwa jednostki}}, {{Code|nazwa jednostki 1}}, {{Code|nazwa jednostki 2}}, {{Code|nazwa jednostki 3}},... Parametry podaje się w parametrach rodzica wywołania tej funkcji {{Code|{{m|Pudełko|Nazwa przestrzeni nazw 2}}}} (ale ich nie trzeba podawać w dziecku, ale można) i w parametrach dziecka, jeśli chodzi o zmienną {{Code|numer jednostki}}, czyli np.: {{Code|{{m|Pudełko|Nazwa przestrzeni nazw 2|numer jednostki{{=}}<jakaś liczba całkowita dodatnia>}}}}. Te parametry przestrzenne zamiast w rodzicu w szablonie można podać w ramce dziecka, wtedy parametry dziecka mają pierwszeństwo. Przestrzeń nazw z parametrów nazw przestrzennych może odpowiadać wartości przestrzeni głównej, to wtedy odpowiednia przestrzeń nazw z parametru nazwy jednostki się liczy w tej funkcji, wtedy jest liczona nazwa przestrzeni nazw z tego parametru. Gdy parametry przestrzenne lub typ jednostki w drugim podejściu nie wskazują na przestrzeń główną, to wtedy działanie tej funkcji jest podobne do {{Code|{{sr|#p["Nazwa przestrzeni nazw"](frame,...)|p=Pudełko}}}}. Definicja skrótowa funkcji: <syntaxhighlight lang="lua"> p["Nazwa przestrzeni nazw 2"]=function(frame,czy_uwzglednic_alternatywna_nazwe,i)...end; </syntaxhighlight> Wtedy ciało funkcji tej, czyli jego definicja w środku, jest: <syntaxhighlight lang="lua"> local pudelko_pomocne_modul=require("Module:Pudełko/Pomocne"); -- Liczy nazwę przestrzeni nazw, jeżeli z parametrów przestrzennych przestrzeń wskazuje na główną, to wtedy jest liczona przestrzeń nazw z nazwy jednostki; return pudelko_pomocne_modul.Nazwa_przestrzeni_nazw_2(frame,czy_uwzglednic_alternatywna_nazwe,i) </syntaxhighlight> Parametry funkcji: * {{Code|frame}} - tablica ramki tablicy transportu, * {{Code|czy_uwzglednic_alternatywna_nazwe}} - czy ma uwzględniać nazwę przestrzeni nazw domyślną szablonu, dostępne wartości: {{Code|false}}, w której nazwa domyślna nie jest uwzględniana wtedy, oraz {{Code|nil}} i {{Code|true}}, które oznaczają to samo, w tym jeżeli ona jest uwzględniana, wtedy jest brany parametr pierwszy dziecka, który musi istnieć przy takiej wartości tego parametru, tzn. {{Code|{{m|Pudełko|Nazwa przestrzeni nazw 2|Szablon}}}}, a nazwa uzyskana nazwy przestrzeni nazw jest w takim przypadku błędna, a jeżeli nazwa domyślna jest błędna, czyli {{Code|{{m|Pudełko|Nazwa przestrzeni nazw 2|Moja przestrzeń}}}}, wtedy funkcja zwraca stan błędu {{Code|(błąd)}}. * {{Code|i}} - numer zmiennej nazwy przestrzeni nazw. Funkcja wykorzystuje {{Code|{{sr|#p.Nazwa_przestrzeni_nazw_2(frame,...)|p=Pudełko/Pomocne}}}} do wyznaczania ogólnego nazwy przestrzeni nazw dla pozycji bazowej i numerkowej, tzn. dla pozycji: jeden, dwa, trzy,..., itd, i ich ogólnej. Parametr ramki tablicy transportu rodzica szablonu: * {{Code|nazwa przestrzeni nazw}}, {{Code|nazwa przestrzeni nazw 1}}, {{Code|nazwa przestrzeni nazw 2}}, {{Code|nazwa przestrzeni nazw 3}},..., {{Code|nazwa przestrzeni nazw i}} - nazwy przestrzeni nazw dla pozycji bazowej oraz zwykłej i ogólnej numerkowej, * {{Code|nazwa jednostki}}, {{Code|nazwa jednostki 1}}, {{Code|nazwa jednostki 2}}, {{Code|nazwa jednostki 3}},... - nazwy jednostek dla pozycji bazowej i numerkowej, * {{Code|typ jednostki}}, {{Code|typ jednostki 1}}, {{Code|typ jednostki 2}}, {{Code|typ jednostki 3}},..., {{Code|typ jednostki i}} - typy jednostek, którym odpowiadają pewne przestrzenie przedmiotowe, dla pozycji bazowej, numerkowej i ogólnej, ** {{Code|dyskusja typu jednostki}}, {{Code|dyskusja typu jednostki 1}}, {{Code|dyskusja typ jednostki 2}}, {{Code|dyskusja typ jednostki 3}},..., {{Code|dyskusja typ jednostki i}} - czy dany typ jednostki ma przedstawiać, jeśli niepusta, przestrzeń dyskusji dla pozycji bazowej, numerkowej i ogólnej. Parametry ramki tablicy transportu dziecka: * Parametry dziecka są takie same jak rodzica dla funkcji pudełkowej plus tu wymienione, * {{Code|numer jednostki}} - jak parametr {{Code|i}} nie został ustawiony, to wtedy liczy się ta zmienna. Przykłady: <syntaxhighlight lang="mediawiki"> {{Nazwa szablonu|nazwa przestrzeni nazw=Wikibooks|nazwa przestrzeni nazw 1=Szablon|nazwa przestrzeni nazw i=|nazwa jednostki 2=Wikibooks:Strona}} </syntaxhighlight> W dziecku powiedzmy jest wywołanie, i szukamy nazwy przestrzeni nazw o numerze dwa, która została podana, ale istnieje za to jej wersji ogólna {{Code|nazwa przestrzeni nazw i}} i domyślna {{Code|nazwa przestrzeni nazw}}, ale wtedy dla tego numerkowego liczy się to ogólne z {{Code| i}}, a ponieważ ta nazwa jest pusta, więc będziemy liczyli nazwę przestrzeni nazw z {{Code|nazwa jednostki 2}}: <syntaxhighlight lang="mediawiki"> {{#invoke:Pudełko|Nazwa przestrzeni nazw 2|numer jednostki=2}} </syntaxhighlight> Na podstawie powyższego przykładu otrzymamy wynik o schemacie, nie wyniku, bo tam nie ma zmiennej {{Code|nazwa przestrzeni nazw 1}}, ale jest {{Code|nazwa przestrzeni nazw i}}: <syntaxhighlight lang="mediawiki"> <!-- Ale nie "nazwa przestrzeni nazw 2", bo jej nie ma, ale za to istnieje "nazwa przestrzeni nazw i"; --> <!-- nazwa przestrzeni nazw 2=nazwa przestrzeni nazw i="", a nazwa jednostki 2="Wikibooks:Strona"; --> <!-- Czyli wynik: --> Wikibooks <!-- Widzimy, że wygenerowała się nazwa przestrzeni nazw, którą jest przestrzeń nieprogramowa, ale projektu, wychodząca z nazwy jednostek w tym przypadku z "nazwa jednostki 2"; --> </syntaxhighlight> Nie jest brana w tym powyższym przykładzie zmienna {{Code|nazwa przestrzeni nazw}}, bo jej nie ma, ale za to jest {{Code|nazwa przestrzeni nazw i}}, bo ona występuje jako parametr domyślny ogólny dla parametrów numerkowych. Tytaj jest używana jest zmienna {{Code|nazwa jednostki 2}} do wygenerowania ostatecznego wyniku, bo jak można zauważyć, parametry przestrzenne wskazują na przestrzeń główną, a nazwy jednostek już nie. Przykłady w wikikodzie: * {{Code|{{m|Pudełko|Nazwa przestrzeni nazw 2|numer jednostki{{=}}2}}}} → {{Tt|{{#invoke:Pudełko|Nazwa przestrzeni nazw 2|numer jednostki=2}}}} * {{Code|{{m|Pudełko|Nazwa przestrzeni nazw 2|Szablon|nazwa przestrzeni nazw i{{=}}Moja przestrzeń|numer jednostki{{=}}2}}}} → {{Tt|{{#invoke:Pudełko|Nazwa przestrzeni nazw 2|Szablon|nazwa przestrzeni nazw i=Moja przestrzeń|numer jednostki=2}}}} * {{Code|{{m|Pudełko|Nazwa przestrzeni nazw 2|nazwa przestrzeni nazw 2{{=}}|nazwa jednostki 2{{=}}Szablon:Strona|numer jednostki{{=}}2}}}} → {{Tt|{{#invoke:Pudełko|Nazwa przestrzeni nazw 2|nazwa przestrzeni nazw 2=|nazwa jednostki 2=Szablon:Strona|numer jednostki=2}}}} * {{Code|{{m|Pudełko|Nazwa przestrzeni nazw 2|nazwa przestrzeni nazw i{{=}}|nazwa jednostki 2{{=}}Szablon:Strona|numer jednostki{{=}}2}}}} → {{Tt|{{#invoke:Pudełko|Nazwa przestrzeni nazw 2|nazwa przestrzeni nazw i=|nazwa jednostki 2=Szablon:Strona|numer jednostki=2}}}} * {{Code|{{m|Pudełko|Nazwa przestrzeni nazw 2|Szablon|nazwa przestrzeni nazw{{=}}|nazwa jednostki 2{{=}}Wikibooks:Strona|numer jednostki{{=}}2}}}} → {{Tt|{{#invoke:Pudełko|Nazwa przestrzeni nazw 2|Szablon|nazwa przestrzeni nazw=|nazwa jednostki 2=Wikibooks:Strona|numer jednostki=2}}}} Powyżej dla przykładu podano parametry nie w rodzicu w szablonie, tylko w dziecku, jeśli chodzi o parametry nazw przestrzeni nazw i nazw jednostek, ale ich się za to nie powinno podawać w tych ramach, tylko w szablonach, w których wywoływane są te ramki pudełek {{Code|{{m|Pudełko}}}}, ale tak tutaj tak zrobiono by było najłatwiej sprawdzić działanie tego typu funkcji. Analogicznie możemy podawać parametry typu jednostki, np.: wywołaniu modułowym {{Code|{{m|Pudełko|Nazwa przestrzeni nazw 2|typ jednostki 2{{=}}Podręcznik|nazwa jednostki 2{{=}}Szablon:Strona|numer jednostki{{=}}2}}}} (ale wtedy jest brana przestrzeń nazw z nazwy jednostki), ale o tym więcej w rozdziałach {{Code|{{sr|#p["Typ jednostki 2"](frame,i)|p=Pudełko}}}} w „{{sr|#Funkcje typu jednostki|p=Pudełko}}”, on definiuje przestrzenie przedmiotowe, ale można użyć parametru dyskusji typu jednostki z wartością niepustą, wtedy wyświetli się nazwa przestrzeni nazw dyskusji. Jeżeli typ jednostki wskazuje na przestrzeń nazw główną, wtedy się liczą parametry nazw jednostek. Również parametry typu jednostki nie powinno się podawać w dziecku w ramce, tylko w rodzicu w szablonie jako parametry, w którym ta ramka jest wywoływana, ale tutaj podano jedynie dla przykładu, jak najłatwiej sprawdzić działanie tych parametrów tej funkcji. Najpierw w funkcji nagłówku brane są parametry nazw przestrzeni nazw, a jeżeli ich nie ma, to parametry typu jednostki, a jeżeli nie ma lub parametry przestrzenne wskazują na przestrzeń główną, i nie ma nazwy jednostki, to generowane są nazwy tej funkcji na podstawie aktualnej strony. === {{Code|p["Nazwa przedmiotowej przestrzeni nazw 2"](frame,...)}} === Funkcja pisze przedmiotową nazwę przestrzeni nazw jakikolwiek nazwy przestrzeni nazw (tzn. nazwę przedmiotową nazwy przestrzenie nazw, czyli nie dyskusji, zamieniana jest na nią samą, czyli identyfikator przestrzeni się nie zmienia, a dyskusji, nie przedmiotową, przekształca się na przedmiotową jej odpowiadającą, czyli w tym przypadku identyfikator przestrzeni zmniejsza się o numer mniej), według, i nie zawsze tylko, podanej w zmiennej {{Code|nazwa przestrzeni nazw}} dla pozycja bazowej w podanych parametrach szablonu rodzicu ramki dziecka, lub dla innej pozycji należy parametr podawać w formie {{Code|nazwa przestrzeni nazw 1}}, {{Code|nazwa przestrzeni nazw 2}}, {{Code|nazwa przestrzeni nazw 3}},..., lub te parametry można podać w postaci ogólnej {{Code|nazwa przestrzeni nazw i}}. W tej funkcji trzeba też podawać parametry nazwy jednostek {{Code|nazwa jednostki}}, {{Code|nazwa jednostki 1}}, {{Code|nazwa jednostki 2}}, {{Code|nazwa jednostki 3}},... Parametry podaje się w parametrach rodzica wywołania tej funkcji {{Code|{{m|Pudełko|Nazwa przedmiotowej przestrzeni nazw 2}}}} (ale ich nie trzeba podawać w dziecku, ale można) i w parametrach dziecka, jeśli chodzi o zmienną {{Code|numer jednostki}}, czyli np.: {{Code|{{m|Pudełko|Nazwa przedmiotowej przestrzeni nazw 2|numer jednostki{{=}}<jakaś liczba całkowita dodatnia>}}}}. Te parametry przestrzenne zamiast w rodzicu w szablonie można podać w ramce dziecka, wtedy parametry dziecka mają pierwszeństwo. Przestrzeń nazw z parametrów nazw przestrzennych po przekształceniu na przedmiotową może odpowiadać wartości przestrzeni głównej, to wtedy odpowiednia przestrzeń nazw z parametru nazwy jednostki się liczy w tej funkcji, wtedy jest liczona nazwa przestrzeni nazw z tego parametru. Gdy parametry przestrzenne lub typ jednostki w drugim podejściu nie wskazują na przestrzeń główną, to wtedy działanie tej funkcji jest podobne do {{Code|{{sr|#p["Nazwa przedmiotowej przestrzeni nazw"](frame,...)|p=Pudełko}}}}. Definicja skrótowa funkcji: <syntaxhighlight lang="lua"> p["Nazwa przedmiotowej przestrzeni nazw 2"]=function(frame,czy_uwzglednic_alternatywna_nazwe,i)...end; </syntaxhighlight> Wtedy ciało funkcji tej, czyli jego definicja w środku, jest: <syntaxhighlight lang="lua"> local pudelko_pomocne_modul=require("Module:Pudełko/Pomocne"); return pudelko_pomocne_modul.Nazwa_przestrzeni_nazw_przedmiotowa_dyskusji_2(frame,czy_uwzglednic_alternatywna_nazwe,i,"przedmiotowa"); </syntaxhighlight> Parametry funkcji: * {{Code|frame}} - tablica ramki tablicy transportu, * {{Code|czy_uwzglednic_alternatywna_nazwe}} - czy ma uwzględniać nazwę przestrzeni nazw domyślną szablonu, dostępne wartości: {{Code|false}}, w której nazwa domyślna nie jest uwzględniana wtedy, oraz {{Code|nil}} i {{Code|true}}, które oznaczają to samo, w tym jeżeli ona jest uwzględniana, wtedy jest brany parametr pierwszy dziecka, który musi istnieć przy takiej wartości tego parametru, tzn. {{Code|{{m|Pudełko|Nazwa przedmiotowej przestrzeni nazw 2|Szablon}}}}, a nazwa uzyskana nazwy przestrzeni nazw jest w takim przypadku błędna, a jeżeli nazwa domyślna jest błędna, czyli {{Code|{{m|Pudełko|Nazwa przedmiotowej przestrzeni nazw 2|Moja przestrzeń}}}}, wtedy funkcja zwraca stan błędu {{Code|(błąd)}}. * {{Code|i}} - numer zmiennej nazwy przestrzeni nazw. Funkcja wykorzystuje {{Code|{{sr|#p.Nazwa_przestrzeni_nazw_przedmiotowa_dyskusji_2(frame,...)|p=Pudełko/Pomocne}}}} do wyznaczania ogólnego nazwy przestrzeni nazw dla pozycji bazowej i numerkowej, tzn. dla pozycji: jeden, dwa, trzy,..., itd, i ich ogólnej. Parametr ramki tablicy transportu rodzica szablonu: * {{Code|nazwa przestrzeni nazw}}, {{Code|nazwa przestrzeni nazw 1}}, {{Code|nazwa przestrzeni nazw 2}}, {{Code|nazwa przestrzeni nazw 3}},..., {{Code|nazwa przestrzeni nazw i}} - nazwy przestrzeni nazw dla pozycji bazowej oraz zwykłej i ogólnej numerkowej, * {{Code|nazwa jednostki}}, {{Code|nazwa jednostki 1}}, {{Code|nazwa jednostki 2}}, {{Code|nazwa jednostki 3}},... - nazwy jednostek dla pozycji bazowej i numerkowej, * {{Code|typ jednostki}}, {{Code|typ jednostki 1}}, {{Code|typ jednostki 2}}, {{Code|typ jednostki 3}},..., {{Code|typ jednostki i}} - typy jednostek, którym odpowiadają pewne przestrzenie przedmiotowe, dla pozycji bazowej, numerkowej i ogólnej. Parametry ramki tablicy transportu dziecka: * Parametry dziecka są takie same jak rodzica dla funkcji pudełkowej plus tu wymienione, * {{Code|numer jednostki}} - jak parametr {{Code|i}} nie został ustawiony, to wtedy liczy się ta zmienna. Przykłady: <syntaxhighlight lang="mediawiki"> {{Nazwa szablonu|nazwa przestrzeni nazw=Wikibooks|nazwa przestrzeni nazw 1=Szablon|nazwa przestrzeni nazw i=|nazwa jednostki 2=Dyskusja Wikibooks:Strona}} </syntaxhighlight> W dziecku powiedzmy jest wywołanie, i szukamy nazwy przestrzeni nazw o numerze dwa, która została podana, ale istnieje za to jej wersji ogólna {{Code|nazwa przestrzeni nazw i}} i domyślna {{Code|nazwa przestrzeni nazw}}, ale wtedy dla tego numerkowego liczy się to ogólne z {{Code| i}}, a ponieważ ta nazwa jest pusta, więc będziemy liczyli nazwę przestrzeni nazw z {{Code|nazwa jednostki 2}}: <syntaxhighlight lang="mediawiki"> {{#invoke:Pudełko|Nazwa przedmiotowej przestrzeni nazw 2|numer jednostki=2}} </syntaxhighlight> Na podstawie powyższego przykładu otrzymamy wynik o schemacie, nie wyniku, bo tam nie ma zmiennej {{Code|nazwa przestrzeni nazw 1}}, ale jest {{Code|nazwa przestrzeni nazw i}}: <syntaxhighlight lang="mediawiki"> <!-- Ale nie "nazwa przestrzeni nazw 2", bo jej nie ma, ale za to istnieje "nazwa przestrzeni nazw i"; --> <!-- nazwa przestrzeni nazw 2=nazwa przestrzeni nazw i="", a nazwa jednostki 2="Dyskusja Wikibooks:Strona"; --> <!-- Czyli wynik: --> Wikibooks <!-- Widzimy, że wygenerowała się nazwa przestrzeni nazw, którą jest przestrzeń nieprogramowa, ale projektu, wychodząca z nazwy jednostek w tym przypadku z "nazwa jednostki 2"; --> </syntaxhighlight> Nie jest brana w tym powyższym przykładzie zmienna {{Code|nazwa przestrzeni nazw}}, bo jej nie ma, ale za to jest {{Code|nazwa przestrzeni nazw i}}, bo ona występuje jako parametr domyślny ogólny dla parametrów numerkowych. Tytaj jest używana jest zmienna {{Code|nazwa jednostki 2}} do wygenerowania ostatecznego wyniku, bo jak można zauważyć, parametry przestrzenne wskazują na przestrzeń główną, a nazwy jednostek już nie. Przykłady w wikikodzie: * {{Code|{{m|Pudełko|Nazwa przedmiotowej przestrzeni nazw 2|numer jednostki{{=}}2}}}} → {{Tt|{{#invoke:Pudełko|Nazwa przedmiotowej przestrzeni nazw 2|numer jednostki=2}}}} * {{Code|{{m|Pudełko|Nazwa przedmiotowej przestrzeni nazw 2|Dyskusja szablonu|nazwa przestrzeni nazw i{{=}}Moja przestrzeń|numer jednostki{{=}}2}}}} → {{Tt|{{#invoke:Pudełko|Nazwa przedmiotowej przestrzeni nazw 2|Dyskusja szablonu|nazwa przestrzeni nazw i=Moja przestrzeń|numer jednostki=2}}}} * {{Code|{{m|Pudełko|Nazwa przedmiotowej przestrzeni nazw 2|nazwa przestrzeni nazw 2{{=}}Dyskusja|nazwa jednostki 2{{=}}Dyskusja szablonu:Strona|numer jednostki{{=}}2}}}} → {{Tt|{{#invoke:Pudełko|Nazwa przedmiotowej przestrzeni nazw 2|nazwa przestrzeni nazw 2=Dyskusja|nazwa jednostki 2=Dyskusja szablonu:Strona|numer jednostki=2}}}} * {{Code|{{m|Pudełko|Nazwa przedmiotowej przestrzeni nazw 2|nazwa przestrzeni nazw i{{=}}Dyskusja|nazwa jednostki 2{{=}}Dyskusja szablonu:Strona|numer jednostki{{=}}2}}}} → {{Tt|{{#invoke:Pudełko|Nazwa przedmiotowej przestrzeni nazw 2|nazwa przestrzeni nazw i=Dyskusja|nazwa jednostki 2=Dyskusja szablonu:Strona|numer jednostki=2}}}} * {{Code|{{m|Pudełko|Nazwa przedmiotowej przestrzeni nazw 2|Dyskusja szablonu|nazwa przestrzeni nazw{{=}}Dyskusja|nazwa jednostki 2{{=}}Wikibooks:Strona|numer jednostki{{=}}2}}}} → {{Tt|{{#invoke:Pudełko|Nazwa przedmiotowej przestrzeni nazw 2|Dyskusja szablonu|nazwa przestrzeni nazw=Dyskusja|nazwa jednostki 2=Dyskusja Wikibooks:Strona|numer jednostki=2}}}} Powyżej dla przykładu podano parametry nie w rodzicu w szablonie, tylko w dziecku, jeśli chodzi o parametry nazw przestrzeni nazw i nazw jednostek, ale ich się za to nie powinno podawać w tych ramach, tylko w szablonach, w których wywoływane są te ramki pudełek {{Code|{{m|Pudełko}}}}, ale tak tutaj tak zrobiono by było najłatwiej sprawdzić działanie tego typu funkcji. Analogicznie możemy podawać parametry typu jednostki, np.: wywołaniu modułowym {{Code|{{m|Pudełko|Nazwa przedmiotowej przestrzeni nazw 2|typ jednostki 2{{=}}Podręcznik|nazwa jednostki 2{{=}}Dyskusja szablonu:Strona|numer jednostki{{=}}2}}}} (ale wtedy jest brana przestrzeń nazw z nazwy jednostki), ale o tym więcej w rozdziałach {{Code|{{sr|# p["Przedmiotowy typ jednostki 2"](frame,i)|p=Pudełko}}}} w „{{sr|#Funkcje typu jednostki|p=Pudełko}}”, on definiuje przestrzenie przedmiotowe, ale można użyć parametru dyskusji typu jednostki z wartością niepustą, pustą, czy nawet jej nie podamy, wtedy wyświetli się nazwa przestrzeni nazw przedmiotowej. Jeżeli typ jednostki wskazuje na przestrzeń nazw główną, wtedy się liczą parametry nazw jednostek. Również parametry typu jednostki nie powinno się podawać w dziecku w ramce, tylko w rodzicu w szablonie jako parametry, w którym ta ramka jest wywoływana, ale tutaj podano jedynie dla przykładu, jak najłatwiej sprawdzić działanie tych parametrów tej funkcji. Najpierw w funkcji nagłówku brane są parametry nazw przestrzeni nazw, a jeżeli ich nie ma, to parametry typu jednostki, a jeżeli nie ma lub parametry przestrzenne wskazują na przestrzeń główną, i nie ma nazwy jednostki, to generowane są nazwy tej funkcji na podstawie aktualnej strony. === {{Code|p["Nazwa przestrzeni nazw dyskusji 2"](frame,...)}} === Funkcja pisze nazwę przestrzeni nazw dyskusji jakikolwiek nazwy przestrzeni nazw (tzn. nazwę dyskusji nazwy przestrzenie nazw, czyli nie przedmiotowej, zamieniana jest na nią samą, czyli identyfikator przestrzeni się nie zmienia, a przedmiotową, nie dyskusji, przekształca się na dyskusji jej odpowiadającą, czyli w tym przypadku identyfikator przestrzeni zwiększa się o numer więcej), według, i nie zawsze tylko, podanej w zmiennej {{Code|nazwa przestrzeni nazw}} dla pozycja bazowej w podanych parametrach szablonu rodzicu ramki dziecka, lub dla innej pozycji należy parametr podawać w formie {{Code|nazwa przestrzeni nazw 1}}, {{Code|nazwa przestrzeni nazw 2}}, {{Code|nazwa przestrzeni nazw 3}},..., lub te parametry można podać w postaci ogólnej {{Code|nazwa przestrzeni nazw i}}. W tej funkcji trzeba też podawać parametry nazwy jednostek {{Code|nazwa jednostki}}, {{Code|nazwa jednostki 1}}, {{Code|nazwa jednostki 2}}, {{Code|nazwa jednostki 3}},... Parametry podaje się w parametrach rodzica wywołania tej funkcji {{Code|{{m|Pudełko|Nazwa przestrzeni nazw dyskusji 2}}}} (ale ich nie trzeba podawać w dziecku, ale można) i w parametrach dziecka, jeśli chodzi o zmienną {{Code|numer jednostki}}, czyli np.: {{Code|{{m|Pudełko|Nazwa przestrzeni nazw dyskusji 2|numer jednostki{{=}}<jakaś liczba całkowita dodatnia>}}}}. Te parametry przestrzenne zamiast w rodzicu w szablonie można podać w ramce dziecka, wtedy parametry dziecka mają pierwszeństwo. Przestrzeń nazw z parametrów nazw przestrzennych po przekształceniu na przedmiotową może odpowiadać wartości przestrzeni głównej, to wtedy odpowiednia przestrzeń nazw z parametru nazwy jednostki się liczy w tej funkcji, wtedy jest liczona nazwa przestrzeni nazw z tego parametru. Gdy parametry przestrzenne lub typ jednostki w drugim podejściu nie wskazują na przestrzeń główną, to wtedy działanie tej funkcji jest podobne do {{Code|{{sr|#p["Nazwa dyskusji przestrzeni nazw"](frame,...)|p=Pudełko}}}}. Definicja skrótowa funkcji: <syntaxhighlight lang="lua"> p["Nazwa przestrzeni nazw dyskusji 2"]=function(frame,czy_uwzglednic_alternatywna_nazwe,i)...end; </syntaxhighlight> Wtedy ciało funkcji tej, czyli jego definicja w środku, jest: <syntaxhighlight lang="lua"> local pudelko_pomocne_modul=require("Module:Pudełko/Pomocne"); return pudelko_pomocne_modul.Nazwa_przestrzeni_nazw_przedmiotowa_dyskusji_2(frame,czy_uwzglednic_alternatywna_nazwe,i,"dyskusja"); </syntaxhighlight> Parametry funkcji: * {{Code|frame}} - tablica ramki tablicy transportu, * {{Code|czy_uwzglednic_alternatywna_nazwe}} - czy ma uwzględniać nazwę przestrzeni nazw domyślną szablonu, dostępne wartości: {{Code|false}}, w której nazwa domyślna nie jest uwzględniana wtedy, oraz {{Code|nil}} i {{Code|true}}, które oznaczają to samo, w tym jeżeli ona jest uwzględniana, wtedy jest brany parametr pierwszy dziecka, który musi istnieć przy takiej wartości tego parametru, tzn. {{Code|{{m|Pudełko|Nazwa przestrzeni nazw dyskusji 2|Szablon}}}}, a nazwa uzyskana nazwy przestrzeni nazw jest w takim przypadku błędna, a jeżeli nazwa domyślna jest błędna, czyli {{Code|{{m|Pudełko|Nazwa przestrzeni nazw dyskusji 2|Moja przestrzeń}}}}, wtedy funkcja zwraca stan błędu {{Code|(błąd)}}. * {{Code|i}} - numer zmiennej nazwy przestrzeni nazw. Funkcja wykorzystuje {{Code|{{sr|#p.Nazwa_przestrzeni_nazw_przedmiotowa_dyskusji_2(frame,...)|p=Pudełko/Pomocne}}}} do wyznaczania ogólnego nazwy przestrzeni nazw dla pozycji bazowej i numerkowej, tzn. dla pozycji: jeden, dwa, trzy,..., itd, i ich ogólnej. Parametr ramki tablicy transportu rodzica szablonu: * {{Code|nazwa przestrzeni nazw}}, {{Code|nazwa przestrzeni nazw 1}}, {{Code|nazwa przestrzeni nazw 2}}, {{Code|nazwa przestrzeni nazw 3}},..., {{Code|nazwa przestrzeni nazw i}} - nazwy przestrzeni nazw dla pozycji bazowej oraz zwykłej i ogólnej numerkowej, * {{Code|nazwa jednostki}}, {{Code|nazwa jednostki 1}}, {{Code|nazwa jednostki 2}}, {{Code|nazwa jednostki 3}},... - nazwy jednostek dla pozycji bazowej i numerkowej, * {{Code|typ jednostki}}, {{Code|typ jednostki 1}}, {{Code|typ jednostki 2}}, {{Code|typ jednostki 3}},..., {{Code|typ jednostki i}} - typy jednostek, którym odpowiadają pewne przestrzenie przedmiotowe, dla pozycji bazowej, numerkowej i ogólnej. Parametry ramki tablicy transportu dziecka: * Parametry dziecka są takie same jak rodzica dla funkcji pudełkowej plus tu wymienione, * {{Code|numer jednostki}} - jak parametr {{Code|i}} nie został ustawiony, to wtedy liczy się ta zmienna. Przykłady: <syntaxhighlight lang="mediawiki"> {{Nazwa szablonu|nazwa przestrzeni nazw=Wikibooks|nazwa przestrzeni nazw 1=Szablon|nazwa przestrzeni nazw i=|nazwa jednostki 2=Wikibooks:Strona}} </syntaxhighlight> W dziecku powiedzmy jest wywołanie, i szukamy nazwy przestrzeni nazw o numerze dwa, która została podana, ale istnieje za to jej wersji ogólna {{Code|nazwa przestrzeni nazw i}} i domyślna {{Code|nazwa przestrzeni nazw}}, ale wtedy dla tego numerkowego liczy się to ogólne z {{Code| i}}, a ponieważ ta nazwa jest pusta, więc będziemy liczyli nazwę przestrzeni nazw z {{Code|nazwa jednostki 2}}: <syntaxhighlight lang="mediawiki"> {{#invoke:Pudełko|Nazwa przestrzeni nazw dyskusji 2|numer jednostki=2}} </syntaxhighlight> Na podstawie powyższego przykładu otrzymamy wynik o schemacie, nie wyniku, bo tam nie ma zmiennej {{Code|nazwa przestrzeni nazw 1}}, ale jest {{Code|nazwa przestrzeni nazw i}}: <syntaxhighlight lang="mediawiki"> <!-- Ale nie "nazwa przestrzeni nazw 2", bo jej nie ma, ale za to istnieje "nazwa przestrzeni nazw i"; --> <!-- nazwa przestrzeni nazw 2=nazwa przestrzeni nazw i="", a nazwa jednostki 2="Wikibooks:Strona"; --> <!-- Czyli wynik: --> Dyskusja Wikibooks <!-- Widzimy, że wygenerowała się nazwa przestrzeni nazw, którą jest przestrzeń nieprogramowa, ale dyskusji projektu, wychodząca z nazwy jednostek w tym przypadku z "nazwa jednostki 2"; --> </syntaxhighlight> Nie jest brana w tym powyższym przykładzie zmienna {{Code|nazwa przestrzeni nazw}}, bo jej nie ma, ale za to jest {{Code|nazwa przestrzeni nazw i}}, bo ona występuje jako parametr domyślny ogólny dla parametrów numerkowych. Tytaj jest używana jest zmienna {{Code|nazwa jednostki 2}} do wygenerowania ostatecznego wyniku, bo jak można zauważyć, parametry przestrzenne wskazują na przestrzeń główną, a nazwy jednostek już nie. Przykłady w wikikodzie: * {{Code|{{m|Pudełko|Nazwa przestrzeni nazw dyskusji 2|numer jednostki{{=}}2}}}} → {{Tt|{{#invoke:Pudełko|Nazwa przestrzeni nazw dyskusji 2|numer jednostki=2}}}} * {{Code|{{m|Pudełko|Nazwa przestrzeni nazw dyskusji 2|Szablon|nazwa przestrzeni nazw i{{=}}Moja przestrzeń|numer jednostki{{=}}2}}}} → {{Tt|{{#invoke:Pudełko|Nazwa przestrzeni nazw dyskusji 2|Szablon|nazwa przestrzeni nazw i=Moja przestrzeń|numer jednostki=2}}}} * {{Code|{{m|Pudełko|Nazwa przestrzeni nazw dyskusji 2|nazwa przestrzeni nazw 2{{=}}|nazwa jednostki 2{{=}}Szablon:Strona|numer jednostki{{=}}2}}}} → {{Tt|{{#invoke:Pudełko|Nazwa przestrzeni nazw dyskusji 2|nazwa przestrzeni nazw 2=|nazwa jednostki 2=Szablon:Strona|numer jednostki=2}}}} * {{Code|{{m|Pudełko|Nazwa przestrzeni nazw dyskusji 2|nazwa przestrzeni nazw i{{=}}|nazwa jednostki 2{{=}}Szablon:Strona|numer jednostki{{=}}2}}}} → {{Tt|{{#invoke:Pudełko|Nazwa przestrzeni nazw dyskusji 2|nazwa przestrzeni nazw i=|nazwa jednostki 2=Szablon:Strona|numer jednostki=2}}}} * {{Code|{{m|Pudełko|Nazwa przestrzeni nazw dyskusji 2|Szablon|nazwa przestrzeni nazw{{=}}|nazwa jednostki 2{{=}}Wikibooks:Strona|numer jednostki{{=}}2}}}} → {{Tt|{{#invoke:Pudełko|Nazwa przestrzeni nazw dyskusji 2|Szablon|nazwa przestrzeni nazw=|nazwa jednostki 2=Dyskusja Wikibooks:Strona|numer jednostki=2}}}} Powyżej dla przykładu podano parametry nie w rodzicu w szablonie, tylko w dziecku, jeśli chodzi o parametry nazw przestrzeni nazw i nazw jednostek, ale ich się za to nie powinno podawać w tych ramach, tylko w szablonach, w których wywoływane są te ramki pudełek {{Code|{{m|Pudełko}}}}, ale tak tutaj tak zrobiono by było najłatwiej sprawdzić działanie tego typu funkcji. Analogicznie możemy podawać parametry typu jednostki, np.: wywołaniu modułowym {{Code|{{m|Pudełko|Nazwa przestrzeni nazw dyskusji 2|typ jednostki 2{{=}}Podręcznik|nazwa jednostki 2{{=}}Szablon:Strona|numer jednostki{{=}}2}}}} (ale wtedy jest brana przestrzeń nazw z nazwy jednostki), ale o tym więcej w rozdziałach {{Code|{{sr|# p["Dyskusyjny typ jednostki 2"](frame,i)|p=Pudełko}}}} w „{{sr|#Funkcje typu jednostki|p=Pudełko}}”, one definiują przestrzenie dyskusji, ale można użyć parametru dyskusji typu jednostki z obojętnie jaką wartością niepustą, czy pustą, czy nawet jej nie podamy, wtedy wyświetli się nazwa przestrzeni nazw dyskusji. Jeżeli typ jednostki wskazuje na przestrzeń nazw główną, wtedy się liczą parametry nazw jednostek. Również parametry typu jednostki nie powinno się podawać w dziecku w ramce, tylko w rodzicu w szablonie jako parametry, w którym ta ramka jest wywoływana, ale tutaj podano jedynie dla przykładu, jak najłatwiej sprawdzić działanie tych parametrów tej funkcji. Najpierw w funkcji nagłówku brane są parametry nazw przestrzeni nazw, a jeżeli ich nie ma, to parametry typu jednostki, a jeżeli nie ma lub parametry przestrzenne wskazują na przestrzeń główną, i nie ma nazwy jednostki, to generowane są nazwy tej funkcji na podstawie aktualnej strony. == Funkcje pełnych nazw jednostki == === {{Code|p["Pełna nazwa dyskusji jednostki"](frame,i)}} === === {{Code|p["Pełna nazwa przedmiotowa jednostki"](frame,i)}} === === {{Code|p["Pełna nazwa jednostki"](frame,i)}} === == Funkcje pełnych nazw jednostki drugiej wersji == === {{Code|p["Pełna nazwa dyskusji jednostki 2"](frame,i)}} === === {{Code|p["Pełna nazwa przedmiotowa jednostki 2"](frame,i)}} === === {{Code|p["Pełna nazwa jednostki 2"](frame,i)}} === == Funkcje pełnych nazw jednostki trzeciej wersji == === {{Code|p["Pełna nazwa dyskusji jednostki 3"](frame,i)}} === === {{Code|p["Pełna nazwa przedmiotowa jednostki 3"](frame,i)}} === === {{Code|p["Pełna nazwa jednostki 3"](frame,i)}} === == Funkcje nazw jednostki == === {{Code|p["Nazwa jednostki"](frame,i)}} === == Funkcje nazw jednostki drugiej wersji == === {{Code|p["Nazwa jednostki 2"](frame,i)}} === === {{Code|p["Nazwa przedmiotowa jednostki 2"](frame,i)}} === === {{Code|p["Nazwa dyskusji jednostki 2"](frame,i)}} === == Funkcje nazw przestrzeni nazw trzeciej wersji == === {{Code|p["Nazwa przestrzeni nazw 3"](frame,i)}} === Funkcja pisze nazwę przestrzeni nazw, niezależnie, czy to jest przedmiotowa, czy dyskusji, według, i nie zawsze tylko, podanej w zmiennej {{Code|nazwa przestrzeni nazw}} dla pozycja bazowej w podanych parametrach szablonu rodzicu ramki dziecka, lub dla innej pozycji należy parametr podawać w formie {{Code|nazwa przestrzeni nazw 1}}, {{Code|Nazwa przestrzeni nazw 3}}, {{Code|nazwa przestrzeni nazw 3}},..., lub te parametry można podać w postaci ogólnej {{Code|nazwa przestrzeni nazw i}}. W tej funkcji trzeba też podawać parametry nazwy jednostek {{Code|nazwa jednostki}}, {{Code|nazwa jednostki 1}}, {{Code|nazwa jednostki 2}}, {{Code|nazwa jednostki 3}},... Parametry podaje się w parametrach rodzica wywołania tej funkcji {{Code|{{m|Pudełko|Nazwa przestrzeni nazw 3}}}} (ale ich nie trzeba podawać w dziecku, ale można) i w parametrach dziecka, jeśli chodzi o zmienną {{Code|numer jednostki}}, czyli np.: {{Code|{{m|Pudełko|Nazwa przestrzeni nazw 3|numer jednostki{{=}}<jakaś liczba całkowita dodatnia>}}}}. Te parametry przestrzenne zamiast w rodzicu w szablonie można podać w ramce dziecka, wtedy parametry dziecka mają pierwszeństwo. Przestrzeń nazw z parametrów nazw przestrzennych bazowych (bez numerka) może odpowiadać wartości przestrzeni głównej, to wtedy odpowiednia przestrzeń nazw z parametru nazwy jednostki się nie liczy w tej funkcji, aby się liczyła należy użyć funkcji {{Code|{{sr|#p["Nazwa przestrzeni nazw"](frame,...)|p=Pudełko}}}}. Przestrzeń nazw z parametrów nazw przestrzennych numerkowych może odpowiadać wartości przestrzeni głównej, to wtedy odpowiednia przestrzeń nazw z parametru nazwy jednostki się liczy w tej funkcji, wtedy jest liczona nazwa przestrzeni nazw z tego parametru. Gdy parametry przestrzenne lub typ jednostki w drugim podejściu nie wskazują na przestrzeń główną, to wtedy działanie tej funkcji jest podobne do {{Code|{{sr|#p["Nazwa przestrzeni nazw 2"](frame,...)|p=Pudełko}}}}. Definicja skrótowa funkcji: <syntaxhighlight lang="lua"> p["Nazwa przestrzeni nazw 3"]=function(frame,czy_uwzglednic_alternatywna_nazwe,i)...end; </syntaxhighlight> Wtedy ciało funkcji tej, czyli jego definicja w środku, jest: <syntaxhighlight lang="lua"> -- Jest liczony numer parametru nazwy przestrzeni nazw, domyslnie chodzi tu o numer bazowy parametrów przestrzennych; local numer_jednostki=i or frame.args["numer jednostki"]; local liczba_numeru_jednostki=((numer_jednostki)and(tonumber(numer_jednostki)) or 0); local pudelko_pomocne_modul=require("Module:Pudełko/Pomocne"); -- Liczy nazwę przestrzeni nazw dyskusji na podstawie podanych parametrów; return pudelko_pomocne_modul.Uzyskanie_nazw_jednostki(frame,0,liczba_numeru_jednostki,nil,2); </syntaxhighlight> Parametry funkcji: * {{Code|frame}} - tablica ramki tablicy transportu, * {{Code|czy_uwzglednic_alternatywna_nazwe}} - czy ma uwzględniać nazwę przestrzeni nazw domyślną szablonu, dostępne wartości: {{Code|false}}, w której nazwa domyślna nie jest uwzględniana wtedy, oraz {{Code|nil}} i {{Code|true}}, które oznaczają to samo, w tym jeżeli ona jest uwzględniana, wtedy jest brany parametr pierwszy dziecka, który musi istnieć przy takiej wartości tego parametru, tzn. {{Code|{{m|Pudełko|Nazwa przestrzeni nazw 3|Szablon}}}}, a nazwa uzyskana nazwy przestrzeni nazw jest w takim przypadku błędna, a jeżeli nazwa domyślna jest błędna, czyli {{Code|{{m|Pudełko|Nazwa przestrzeni nazw 3|Moja przestrzeń}}}}, wtedy funkcja zwraca stan błędu {{Code|(błąd)}}. * {{Code|i}} - numer zmiennej nazwy przestrzeni nazw. Funkcja wykorzystuje {{Code|{{sr|#p.Uzyskanie_nazw_jednostki(frame,...)|p=Pudełko/Pomocne}}}} do wyznaczania ogólnego nazwy przestrzeni nazw dla pozycji bazowej i numerkowej, tzn. dla pozycji: jeden, dwa, trzy,..., itd, i ich ogólnej. Parametr ramki tablicy transportu rodzica szablonu: * {{Code|nazwa przestrzeni nazw}}, {{Code|nazwa przestrzeni nazw 1}}, {{Code|Nazwa przestrzeni nazw 3}}, {{Code|nazwa przestrzeni nazw 3}},..., {{Code|nazwa przestrzeni nazw i}} - nazwy przestrzeni nazw dla pozycji bazowej oraz zwykłej i ogólnej numerkowej, * {{Code|nazwa jednostki}}, {{Code|nazwa jednostki 1}}, {{Code|nazwa jednostki 2}}, {{Code|nazwa jednostki 3}},... - nazwy jednostek dla pozycji bazowej i numerkowej, * {{Code|typ jednostki}}, {{Code|typ jednostki 1}}, {{Code|typ jednostki 2}}, {{Code|typ jednostki 3}},..., {{Code|typ jednostki i}} - typy jednostek, którym odpowiadają pewne przestrzenie przedmiotowe, dla pozycji bazowej, numerkowej i ogólnej, ** {{Code|dyskusja typu jednostki}}, {{Code|dyskusja typu jednostki 1}}, {{Code|dyskusja typ jednostki 2}}, {{Code|dyskusja typ jednostki 3}},..., {{Code|dyskusja typ jednostki i}} - czy dany typ jednostki ma przedstawiać, jeśli niepusta, przestrzeń dyskusji dla pozycji bazowej, numerkowej i ogólnej. Parametry ramki tablicy transportu dziecka: * Parametry dziecka są takie same jak rodzica dla funkcji pudełkowej plus tu wymienione, * {{Code|numer jednostki}} - jak parametr {{Code|i}} nie został ustawiony, to wtedy liczy się ta zmienna. Przykłady: <syntaxhighlight lang="mediawiki"> {{Nazwa szablonu 1|nazwa przestrzeni nazw=Wikibooks|nazwa przestrzeni nazw=|nazwa przestrzeni nazw i=|nazwajednostki=Szablon:Strona|nazwa jednostki 2=Wikibooks:Strona}} ---- {{Nazwa szablonu 2|nazwa przestrzeni nazw=Wikibooks|nazwa przestrzeni nazw 1=Szablon|nazwa przestrzeni nazw i=|nazwa jednostki 2=Wikibooks:Strona}} </syntaxhighlight> W dziecku powiedzmy jest wywołanie, i szukamy nazwy przestrzeni nazw o numerze dwa, która została podana, ale istnieje za to jej wersji ogólna {{Code|nazwa przestrzeni nazw i}} i domyślna {{Code|nazwa przestrzeni nazw}}, ale wtedy dla tego numerkowego liczy się to ogólne z {{Code| i}}, a ponieważ ta nazwa jest pusta, więc będziemy liczyli nazwę przestrzeni nazw z {{Code|nazwa jednostki 2}}: <syntaxhighlight lang="mediawiki"> {{#invoke:Pudełko|Nazwa przestrzeni nazw 3}} ---- {{#invoke:Pudełko|Nazwa przestrzeni nazw 3|numer jednostki=2}} </syntaxhighlight> Na podstawie powyższego przykładu otrzymamy wynik o schemacie, nie wyniku, bo tam nie ma zmiennej {{Code|nazwa przestrzeni nazw 1}}, ale jest {{Code|nazwa przestrzeni nazw i}}: <syntaxhighlight lang="mediawiki"> <!-- Ale nie "nazwa przestrzeni nazw""; --> <!-- nazwa przestrzeni nazw=""; --> <!-- Czyli wynik: --> <!-- wynik pusty --> <!-- Widzimy, że wygenerowała się nazwa przestrzeni nazw, którą jest przestrzeń nazw główna, jest ciągiem pustym: ""; --> ---- <!-- Ale nie "Nazwa przestrzeni nazw 2", bo jej nie ma, ale za to istnieje "nazwa przestrzeni nazw i"; --> <!-- nazwa przestrzeni nazw 2=nazwa przestrzeni nazw i="", a nazwa jednostki 2="Wikibooks:Strona"; --> <!-- Czyli wynik: --> Wikibooks <!-- Widzimy, że wygenerowała się nazwa przestrzeni nazw, którą jest przestrzeń nieprogramowa, ale projektu, wychodząca z nazwy jednostek w tym przypadku z "nazwa jednostki 2"; --> </syntaxhighlight> Dla parametrów numerkowych nie jest brana w tym powyższym przykładzie zmienna {{Code|nazwa przestrzeni nazw 2}}, bo jej nie ma, ale za to jest {{Code|nazwa przestrzeni nazw i}}, bo ona występuje jako parametr domyślny ogólny dla parametrów numerkowych. Tytaj jest używana jest zmienna {{Code|nazwa jednostki 2}} do wygenerowania ostatecznego wyniku, bo jak można zauważyć, parametry przestrzenne wskazują na przestrzeń główną, a nazwy jednostek już nie. Dla parametrów bazowych mamy zmienną {{Code|nazwa przestrzeni nazw}}, ona jest pusta, więc to zostanie wziete do ostatecznego wyniku. Przykłady w wikikodzie: * {{Code|{{m|Pudełko|Nazwa przestrzeni nazw 3|nazwa przestrzeni nazw{{=}}|nazwa jednostki{{=}}Wikibooks:Strona}}}} → {{Tt|{{#invoke:Pudełko|Nazwa przestrzeni nazw 3|nazwa przestrzeni nazw=|nazwa jednostki=Wikibooks:Szablon}}}} * {{Code|{{m|Pudełko|Nazwa przestrzeni nazw 3|nazwa przestrzeni nazw 2{{=}}|nazwa jednostki 2{{=}}Wikibooks:Strona|numer jednostki{{=}}2}}}} → {{Tt|{{#invoke:Pudełko|Nazwa przestrzeni nazw 3|nazwa przestrzeni nazw 2=|nazwa jednostki 2=Wikibooks:Szablon|numer jednostki=2}}}} Powyżej dla przykładu podano parametry nie w rodzicu w szablonie, tylko w dziecku, jeśli chodzi o parametry nazw przestrzeni nazw i nazw jednostek, ale ich się za to nie powinno podawać w tych ramach, tylko w szablonach, w których wywoływane są te ramki pudełek {{Code|{{m|Pudełko}}}}, ale tak tutaj tak zrobiono by było najłatwiej sprawdzić działanie tego typu funkcji. Analogicznie możemy podawać parametry typu jednostki, np.: wywołaniu modułowym {{Code|{{m|Pudełko|Nazwa przestrzeni nazw 3|typ jednostki 2{{=}}Podręcznik|nazwa jednostki 2{{=}}Szablon:Strona|numer jednostki{{=}}2}}}} (ale wtedy jest brana przestrzeń nazw z nazwy jednostki), ale o tym więcej w rozdziałach {{Code|{{sr|#p["Typ jednostki 3"](frame,i)|p=Pudełko}}}} w „{{sr|#Funkcje typu jednostki|p=Pudełko}}”, on definiuje przestrzenie przedmiotowe, ale można użyć parametru dyskusji typu jednostki z wartością niepustą, wtedy wyświetli się nazwa przestrzeni nazw dyskusji. Jeżeli typ jednostki bazowy wskazuje na przestrzeń nazw główną, wtedy się nie liczą parametry nazw jednostek, a na numerkowy, wtedy się liczy. Również parametry typu jednostki nie powinno się podawać w dziecku w ramce, tylko w rodzicu w szablonie jako parametry, w którym ta ramka jest wywoływana, ale tutaj podano jedynie dla przykładu, jak najłatwiej sprawdzić działanie tych parametrów tej funkcji. Najpierw w funkcji nagłówku brane są parametry nazw przestrzeni nazw, a jeżeli ich nie ma, to parametry typu jednostki, a jeżeli nie ma lub parametry przestrzenne wskazują na przestrzeń główną, i nie ma nazwy jednostki, to generowane są nazwy tej funkcji na podstawie aktualnej strony. === {{Code|p["Nazwa przedmiotowej przestrzeni nazw 3"](frame,i)}} === Funkcja pisze przedmiotową nazwę przestrzeni nazw jakikolwiek nazwy przestrzeni nazw (tzn. nazwę przedmiotową nazwy przestrzenie nazw, czyli nie dyskusji, zamieniana jest na nią samą, czyli identyfikator przestrzeni się nie zmienia, a dyskusji, nie przedmiotową, przekształca się na przedmiotową jej odpowiadającą, czyli w tym przypadku identyfikator przestrzeni zmniejsza się o numer mniej), według podanej w zmiennej {{Code|nazwa przestrzeni nazw}} dla pozycja bazowej w podanych parametrach szablonu rodzicu ramki dziecka, lub dla innej pozycji należy parametr podawać w formie {{Code|nazwa przestrzeni nazw 1}}, {{Code|nazwa przestrzeni nazw 2}}, {{Code|nazwa przestrzeni nazw 3}},..., lub te parametry można podać w postaci ogólnej {{Code|nazwa przestrzeni nazw i}}. Parametry podaje się w parametrach rodzica wywołania tej funkcji {{Code|{{m|Pudełko|Nazwa przedmiotowej przestrzeni nazw 3}}}} (ale ich nie trzeba podawać w dziecku, ale można) i w parametrach dziecka, jeśli chodzi o zmienną {{Code|numer jednostki}}, czyli np.: {{Code|{{m|Pudełko|Nazwa przedmiotowej przestrzeni nazw 3|numer jednostki{{=}}<jakaś liczba całkowita dodatnia>}}}}. Te parametry przestrzenne zamiast w rodzicu w szablonie można podać w ramce dziecka, wtedy parametry dziecka mają pierwszeństwo. Parametry przestrzenne mogą mogą być podane w postaci przestrzeni przedmiotowej lub dyskusji, ale ta funkcja zawsze ją zamienia na przedmiotową. Przestrzeń nazw z parametrów nazw przestrzennych bazowych (bez numerka) może odpowiadać wartości przestrzeni głównej, to wtedy odpowiednia przestrzeń nazw z parametru nazwy jednostki się nie liczy w tej funkcji, aby się liczyła należy użyć funkcji {{Code|{{sr|#p["Nazwa przedmiotowej przestrzeni nazw"](frame,...)|p=Pudełko}}}}. Przestrzeń nazw z parametrów nazw przestrzennych numerkowych może odpowiadać wartości przestrzeni głównej, to wtedy odpowiednia przestrzeń nazw z parametru nazwy jednostki się liczy w tej funkcji, wtedy jest liczona nazwa przestrzeni nazw z tego parametru. Gdy parametry przestrzenne lub typ jednostki w drugim podejściu nie wskazują na przestrzeń główną, to wtedy działanie tej funkcji jest podobne do {{Code|{{sr|#p["Nazwa przedmiotowej przestrzeni nazw 2"](frame,...)|p=Pudełko}}}}. Definicja skrótowa funkcji: <syntaxhighlight lang="lua"> p["Nazwa przedmiotowej przestrzeni nazw 3"]=function(frame,czy_uwzglednic_alternatywna_nazwe,i)...end; </syntaxhighlight> Wtedy ciało funkcji tej, czyli jego definicja w środku, jest: <syntaxhighlight lang="lua"> -- Jest liczony numer parametru nazwy przestrzeni nazw, domyslnie chodzi tu o numer bazowy parametrów przestrzennych; local numer_jednostki=i or frame.args["numer jednostki"]; local liczba_numeru_jednostki=((numer_jednostki)and(tonumber(numer_jednostki)) or 0); local pudelko_pomocne_modul=require("Module:Pudełko/Pomocne"); -- Liczy nazwę przestrzeni nazw przedmiotową na podstawie podanych parametrów; return pudelko_pomocne_modul.Uzyskanie_nazw_jednostki(frame,1,liczba_numeru_jednostki,nil,1); </syntaxhighlight> Parametry funkcji: * {{Code|frame}} - tablica ramki tablicy transportu, * {{Code|czy_uwzglednic_alternatywna_nazwe}} - czy ma uwzględniać nazwę przestrzeni nazw domyślną szablonu, dostępne wartości: {{Code|false}}, w której nazwa domyślna nie jest uwzględniana wtedy, oraz {{Code|nil}} i {{Code|true}}, które oznaczają to samo, w tym jeżeli ona jest uwzględniana, wtedy jest brany parametr pierwszy dziecka, który musi istnieć przy takiej wartości tego parametru, tzn. {{Code|{{m|Pudełko|Nazwa przedmiotowej przestrzeni nazw 3|Dyskusja szablonu}}}} - ta nazwa domyślna zostanie zamieniona na przedmiotową, a jak ona by była przedmiotowa, to żadnej zamiany by nie było, a nazwa uzyskana z nazwy przestrzeni nazw z parametrów przestrzennych jest w takim przypadku błędna, to w takim razie brany jest ten parametr, a jeżeli ta nazwa domyślna jest błędna, czyli {{Code|{{m|Pudełko|Nazwa przedmiotowej przestrzeni nazw 3|Moja przestrzeń}}}}, wtedy funkcja zwraca stan błędu {{Code|(błąd)}}. * {{Code|i}} - numer zmiennej nazwy przestrzeni nazw. Funkcja wykorzystuje {{Code|{{sr|#p.Uzyskanie_nazw_jednostki(frame,...)|p=Pudełko/Pomocne}}}} do wyznaczania ogólnego nazwy przestrzeni nazw dla pozycji bazowej i numerkowej, tzn. dla pozycji: jeden, dwa, trzy,..., itd, i ich ogólnej. Parametr ramki tablicy transportu rodzica szablonu: * {{Code|nazwa przestrzeni nazw}}, {{Code|nazwa przestrzeni nazw 1}}, {{Code|nazwa przestrzeni nazw 2}}, {{Code|nazwa przestrzeni nazw 3}},..., {{Code|nazwa przestrzeni nazw i}} - nazwy przestrzeni nazw dla pozycji bazowej oraz zwykłej i ogólnej numerkowej, * {{Code|typ jednostki}}, {{Code|typ jednostki 1}}, {{Code|typ jednostki 2}}, {{Code|typ jednostki 3}},..., {{Code|typ jednostki i}} - typy jednostek, którym odpowiadają pewne przestrzenie przedmiotowe, dla pozycji bazowej, numerkowej i ogólnej. Parametry ramki tablicy transportu dziecka: * Parametry dziecka są takie same jak rodzica dla funkcji pudełkowej plus tu wymienione, * {{Code|numer jednostki}} - jak parametr {{Code|i}} nie został ustawiony, to wtedy liczy się ta zmienna. Przykłady: <syntaxhighlight lang="mediawiki"> {{Nazwa szablonu 1|nazwa przestrzeni nazw=Wikibooks|nazwa przestrzeni nazw=|nazwa przestrzeni nazw i=|nazwa jednostki=Dyskusja Wikibooks:Strona}} ---- {{Nazwa szablonu 2|nazwa przestrzeni nazw=Wikibooks|nazwa przestrzeni nazw 1=Szablon|nazwa przestrzeni nazw i=|nazwa jednostki 2=Dyskusja Wikibooks:Strona}} </syntaxhighlight> Kolejno wywołania te są równowaażne: <syntaxhighlight lang="mediawiki"> {{#invoke:Pudełko|Nazwa przedmiotowej przestrzeni nazw 3}} ---- {{#invoke:Pudełko|Nazwa przedmiotowej przestrzeni nazw 3|numer jednostki=2}} </syntaxhighlight> Na podstawie powyższego przykładu otrzymamy wynik o schemacie, nie wyniku, bo tam nie ma zmiennej {{Code|nazwa przestrzeni nazw 1}}, ale jest {{Code|nazwa przestrzeni nazw i}}: <syntaxhighlight lang="mediawiki"> <!-- Ale nie "nazwa przestrzeni nazw""; --> <!-- nazwa przestrzeni nazw=""; --> <!-- Czyli wynik: --> <!-- wynik pusty --> <!-- Widzimy, że wygenerowała się nazwa przestrzeni nazw, którą jest przestrzeń nazw główna, jest ciągiem pustym: ""; --> ---- <!-- Ale nie "Nazwa przestrzeni nazw 2", bo jej nie ma, ale za to istnieje "nazwa przestrzeni nazw i"; --> <!-- nazwa przestrzeni nazw 2=nazwa przestrzeni nazw i="", a nazwa jednostki 2="Dyskusja Wikibooks:Strona"; --> <!-- Czyli wynik: --> Wikibooks <!-- Widzimy, że wygenerowała się nazwa przestrzeni nazw, którą jest przestrzeń nieprogramowa, ale projektu, wychodząca z nazwy jednostek w tym przypadku z "nazwa jednostki 2"; --> </syntaxhighlight> Dla parametrów numerkowych nie jest brana w tym powyższym przykładzie zmienna {{Code|nazwa przestrzeni nazw 2}}, bo jej nie ma, ale za to jest {{Code|nazwa przestrzeni nazw i}}, bo ona występuje jako parametr domyślny ogólny dla parametrów numerkowych. Tytaj jest używana jest zmienna {{Code|nazwa jednostki 2}} do wygenerowania ostatecznego wyniku, bo jak można zauważyć, parametry przestrzenne wskazują na przestrzeń główną, a nazwy jednostek już nie. Dla parametrów bazowych mamy zmienną {{Code|nazwa przestrzeni nazw}}, ona jest pusta, więc to zostanie wziete do ostatecznego wyniku. Przykłady w wikikodzie: * {{Code|{{m|Pudełko|Nazwa przestrzeni nazw 3|nazwa przestrzeni nazw{{=}}|nazwa jednostki{{=}}Dyskusja Wikibooks:Strona}}}} → {{Tt|{{#invoke:Pudełko|Nazwa przestrzeni nazw 3|nazwa przestrzeni nazw=|nazwa jednostki=Dyskusja Wikibooks:Szablon}}}} * {{Code|{{m|Pudełko|Nazwa przestrzeni nazw 3|nazwa przestrzeni nazw 2{{=}}|nazwa jednostki 2{{=}}Dyskusja Wikibooks:Strona|numer jednostki{{=}}2}}}} → {{Tt|{{#invoke:Pudełko|Nazwa przestrzeni nazw 3|nazwa przestrzeni nazw 2=|nazwa jednostki 2=Dyskusja Wikibooks:Szablon|numer jednostki=2}}}} Powyżej dla przykładu podano parametry nie w rodzicu w szablonie, tylko w dziecku, jeśli chodzi o parametry nazw przestrzeni nazw, ale ich się za to nie powinno podawać w tych ramach, tylko w szablonach, w których wywoływane są te ramki pudełek {{Code|{{m|Pudełko}}}}, ale tak tutaj tak zrobiono by było najłatwiej sprawdzić działanie tego typu funkcji. Analogicznie możemy podawać parametry typu jednostki, np.: wywołaniu modułowym {{Code|{{m|Pudełko|Nazwa przedmiotowej przestrzeni nazw 3|typ jednostki 2{{=}}strona szablonu|numer jednostki{{=}}2}}}}, ale o tym więcej w rozdziałach {{Code|{{sr|# p["Przedmiotowy typ jednostki 3"](frame,i)|p=Pudełko}}}} w „{{sr|#Funkcje typu jednostki|p=Pudełko}}”, ale wtedy ta sama nazwa przestrzeni nazw reprezentowana przez {{Parametr|typ jednostki 2|strona szablonu}}, jest zamieniana na to samo, lepiej jest tutaj używać parametrów przestrzennych nazw niż typu jednostki, bo typ jednostki ma taką samą wartość dla przestrzeni przedmiotowej, co dyskusji. Tutaj parametr dyskusji typu jednostki bazowy i numerkowy ogólny, czy szczegółowy, nie gra roli, bo nawet, gdy wygenerujemy nazwę przestrzeni dyskusji za pomoca tego parametru, to i tak otrzymamy na samym końcu jego nazwę przedmiotową. Jeżeli typ jednostki bazowy wskazuje na przestrzeń nazw główną, wtedy się nie liczą parametry nazw jednostek, a na numerkowy, wtedy się liczy. Również parametry typu jednostki nie powinno się podawać w dziecku w ramce, tylko w rodzicu w szablonie jako parametry, w którym ta ramka jest wywoływana, ale tutaj podano jedynie dla przykładu, jak najłatwiej sprawdzić działanie tych parametrów tej funkcji. Najpierw w funkcji nagłówku brane są parametry nazw przestrzeni nazw, a jeżeli ich nie ma, to parametry typu jednostki, a jeżeli nie ma, to generowane są nazwy na podstawie aktualnego modułu. === {{Code|p["Nazwa przestrzeni nazw dyskusji 3"](frame,i)}} === Funkcja pisze nazwę przestrzeni nazw dyskusji jakikolwiek nazwy przestrzeni nazw (tzn. nazwę dyskusji nazwy przestrzenie nazw, czyli nie przedmiotowej, zamieniana jest na nią samą, czyli identyfikator przestrzeni się nie zmienia, a przedmiotową, nie dyskusji, przekształca się na dyskusji jej odpowiadającą, czyli w tym przypadku identyfikator przestrzeni zwiększa się o numer więcej), według, i nie zawsze tylko, podanej w zmiennej {{Code|nazwa przestrzeni nazw}} dla pozycja bazowej w podanych parametrach szablonu rodzicu ramki dziecka, lub dla innej pozycji należy parametr podawać w formie {{Code|nazwa przestrzeni nazw 1}}, {{Code|nazwa przestrzeni nazw 2}}, {{Code|nazwa przestrzeni nazw 3}},..., lub te parametry można podać w postaci ogólnej {{Code|nazwa przestrzeni nazw i}}. W tej funkcji trzeba też podawać parametry nazwy jednostek {{Code|nazwa jednostki}}, {{Code|nazwa jednostki 1}}, {{Code|nazwa jednostki 2}}, {{Code|nazwa jednostki 3}},... Parametry podaje się w parametrach rodzica wywołania tej funkcji {{Code|{{m|Pudełko|Nazwa przestrzeni nazw dyskusji 3}}}} (ale ich nie trzeba podawać w dziecku, ale można) i w parametrach dziecka, jeśli chodzi o zmienną {{Code|numer jednostki}}, czyli np.: {{Code|{{m|Pudełko|Nazwa przestrzeni nazw dyskusji 3|numer jednostki{{=}}<jakaś liczba całkowita dodatnia>}}}}. Te parametry przestrzenne zamiast w rodzicu w szablonie można podać w ramce dziecka, wtedy parametry dziecka mają pierwszeństwo. Przestrzeń nazw z parametrów nazw przestrzennych bazowych (bez numerka) może odpowiadać wartości przestrzeni głównej, to wtedy odpowiednia przestrzeń nazw z parametru nazwy jednostki się nie liczy w tej funkcji, aby się liczyła należy użyć funkcji {{Code|{{sr|#p["Nazwa przestrzeni nazw dyskusji"](frame,...)|p=Pudełko}}}}. Przestrzeń nazw z parametrów nazw przestrzennych numerkowych może odpowiadać wartości przestrzeni głównej, to wtedy odpowiednia przestrzeń nazw z parametru nazwy jednostki się liczy w tej funkcji, wtedy jest liczona nazwa przestrzeni nazw z tego parametru. Gdy parametry przestrzenne lub typ jednostki w drugim podejściu nie wskazują na przestrzeń główną, to wtedy działanie tej funkcji jest podobne do {{Code|{{sr|#p["Nazwa przestrzeni nazw dysskusji 2"](frame,...)|p=Pudełko}}}}. Definicja skrótowa funkcji: <syntaxhighlight lang="lua"> p["Nazwa przestrzeni nazw dyskusji 3"]=function(frame,czy_uwzglednic_alternatywna_nazwe,i)...end; </syntaxhighlight> Wtedy ciało funkcji tej, czyli jego definicja w środku, jest: <syntaxhighlight lang="lua"> -- Jest liczony numer parametru nazwy przestrzeni nazw, domyslnie chodzi tu o numer bazowy parametrów przestrzennych; local numer_jednostki=i or frame.args["numer jednostki"]; local liczba_numeru_jednostki=((numer_jednostki)and(tonumber(numer_jednostki)) or 0); local pudelko_pomocne_modul=require("Module:Pudełko/Pomocne"); -- Liczy nazwę przestrzeni nazw dyskusji na podstawie podanych parametrów; return pudelko_pomocne_modul.Uzyskanie_nazw_jednostki(frame,2,liczba_numeru_jednostki,nil,1); </syntaxhighlight> Parametry funkcji: * {{Code|frame}} - tablica ramki tablicy transportu, * {{Code|czy_uwzglednic_alternatywna_nazwe}} - czy ma uwzględniać nazwę przestrzeni nazw domyślną szablonu, dostępne wartości: {{Code|false}}, w której nazwa domyślna nie jest uwzględniana wtedy, oraz {{Code|nil}} i {{Code|true}}, które oznaczają to samo, w tym jeżeli ona jest uwzględniana, wtedy jest brany parametr pierwszy dziecka, który musi istnieć przy takiej wartości tego parametru, tzn. {{Code|{{m|Pudełko|Nazwa przestrzeni nazw dyskusji 3|Szablon}}}}, a nazwa uzyskana nazwy przestrzeni nazw jest w takim przypadku błędna, a jeżeli nazwa domyślna jest błędna, czyli {{Code|{{m|Pudełko|Nazwa przestrzeni nazw dyskusji 3|Moja przestrzeń}}}}, wtedy funkcja zwraca stan błędu {{Code|(błąd)}}. * {{Code|i}} - numer zmiennej nazwy przestrzeni nazw. Funkcja wykorzystuje {{Code|{{sr|#p.Uzyskanie_nazw_jednostki(frame,...)|p=Pudełko/Pomocne}}}} do wyznaczania ogólnego nazwy przestrzeni nazw dla pozycji bazowej i numerkowej, tzn. dla pozycji: jeden, dwa, trzy,..., itd, i ich ogólnej. Parametr ramki tablicy transportu rodzica szablonu: * {{Code|nazwa przestrzeni nazw}}, {{Code|nazwa przestrzeni nazw 1}}, {{Code|nazwa przestrzeni nazw 2}}, {{Code|nazwa przestrzeni nazw 3}},..., {{Code|nazwa przestrzeni nazw i}} - nazwy przestrzeni nazw dla pozycji bazowej oraz zwykłej i ogólnej numerkowej, * {{Code|nazwa jednostki}}, {{Code|nazwa jednostki 1}}, {{Code|nazwa jednostki 2}}, {{Code|nazwa jednostki 3}},... - nazwy jednostek dla pozycji bazowej i numerkowej, * {{Code|typ jednostki}}, {{Code|typ jednostki 1}}, {{Code|typ jednostki 2}}, {{Code|typ jednostki 3}},..., {{Code|typ jednostki i}} - typy jednostek, którym odpowiadają pewne przestrzenie przedmiotowe, dla pozycji bazowej, numerkowej i ogólnej. Parametry ramki tablicy transportu dziecka: * Parametry dziecka są takie same jak rodzica dla funkcji pudełkowej plus tu wymienione, * {{Code|numer jednostki}} - jak parametr {{Code|i}} nie został ustawiony, to wtedy liczy się ta zmienna. Przykłady: <syntaxhighlight lang="mediawiki"> {{Nazwa szablonu 1|nazwa przestrzeni nazw=Wikibooks|nazwa przestrzeni nazw=|nazwa przestrzeni nazw i=|nazwajednostki=Szablon:Strona|nazwa jednostki 2=Wikibooks:Strona}} ---- {{Nazwa szablonu 2|nazwa przestrzeni nazw=Wikibooks|nazwa przestrzeni nazw 1=Szablon|nazwa przestrzeni nazw i=|nazwa jednostki 2=Wikibooks:Strona}} </syntaxhighlight> W dziecku powiedzmy jest wywołanie, i szukamy nazwy przestrzeni nazw o numerze dwa, która została podana, ale istnieje za to jej wersji ogólna {{Code|nazwa przestrzeni nazw i}} i domyślna {{Code|nazwa przestrzeni nazw}}, ale wtedy dla tego numerkowego liczy się to ogólne z {{Code| i}}, a ponieważ ta nazwa jest pusta, więc będziemy liczyli nazwę przestrzeni nazw z {{Code|nazwa jednostki 2}}: <syntaxhighlight lang="mediawiki"> {{#invoke:Pudełko|Nazwa przestrzeni nazw 3}} ---- {{#invoke:Pudełko|Nazwa przestrzeni nazw 3|numer jednostki=2}} </syntaxhighlight> Na podstawie powyższego przykładu otrzymamy wynik o schemacie, nie wyniku, bo tam nie ma zmiennej {{Code|nazwa przestrzeni nazw 1}}, ale jest {{Code|nazwa przestrzeni nazw i}}: <syntaxhighlight lang="mediawiki"> <!-- Ale nie "nazwa przestrzeni nazw""; --> <!-- nazwa przestrzeni nazw=""; --> <!-- Czyli wynik: --> Dyskusja <!-- Widzimy, że wygenerowała się nazwa przestrzeni nazw, którą jest przestrzeń nazw niegłówna, jest ciągiem niepustym; --> ---- <!-- Ale nie "Nazwa przestrzeni nazw 2", bo jej nie ma, ale za to istnieje "nazwa przestrzeni nazw i"; --> <!-- nazwa przestrzeni nazw 2=nazwa przestrzeni nazw i="", a nazwa jednostki 2="Wikibooks:Strona"; --> <!-- Czyli wynik: --> Dyskusja Wikibooks <!-- Widzimy, że wygenerowała się nazwa przestrzeni nazw, którą jest przestrzeń nieprogramowa, ale projektu, wychodząca z nazwy jednostek w tym przypadku z "nazwa jednostki 2"; --> </syntaxhighlight> Dla parametrów numerkowych nie jest brana w tym powyższym przykładzie zmienna {{Code|nazwa przestrzeni nazw 2}}, bo jej nie ma, ale za to jest {{Code|nazwa przestrzeni nazw i}}, bo ona występuje jako parametr domyślny ogólny dla parametrów numerkowych. Tytaj jest używana jest zmienna {{Code|nazwa jednostki 2}} do wygenerowania ostatecznego wyniku, bo jak można zauważyć, parametry przestrzenne wskazują na przestrzeń główną, a nazwy jednostek już nie. Dla parametrów bazowych mamy zmienną {{Code|nazwa przestrzeni nazw}}, ona jest pusta, więc to zostanie wziete do ostatecznego wyniku. Przykłady w wikikodzie: * {{Code|{{m|Pudełko|Nazwa przestrzeni nazw dyskusji 3|nazwa przestrzeni nazw{{=}}|nazwa jednostki{{=}}Wikibooks:Strona}}}} → {{Tt|{{#invoke:Pudełko|Nazwa przestrzeni nazw dyskusji 3|nazwa przestrzeni nazw=|nazwa jednostki=Wikibooks:Szablon}}}} * {{Code|{{m|Pudełko|Nazwa przestrzeni nazw dyskusji 3|nazwa przestrzeni nazw 2{{=}}|nazwa jednostki 2{{=}}Wikibooks:Strona|numer jednostki{{=}}2}}}} → {{Tt|{{#invoke:Pudełko|Nazwa przestrzeni nazw dyskusji 3|nazwa przestrzeni nazw 2=|nazwa jednostki 2=Wikibooks:Szablon|numer jednostki=2}}}} Powyżej dla przykładu podano parametry nie w rodzicu w szablonie, tylko w dziecku, jeśli chodzi o parametry nazw przestrzeni nazw i nazw jednostek, ale ich się za to nie powinno podawać w tych ramach, tylko w szablonach, w których wywoływane są te ramki pudełek {{Code|{{m|Pudełko}}}}, ale tak tutaj tak zrobiono by było najłatwiej sprawdzić działanie tego typu funkcji. Analogicznie możemy podawać parametry typu jednostki, np.: wywołaniu modułowym {{Code|{{m|Pudełko|Nazwa przestrzeni nazw dyskusji 3|typ jednostki 2{{=}}Podręcznik|nazwa jednostki 2{{=}}Szablon:Strona|numer jednostki{{=}}2}}}} (ale wtedy jest brana przestrzeń nazw z nazwy jednostki), ale o tym więcej w rozdziałach {{Code|{{sr|# p["Dyskusyjny typ jednostki 3"](frame,i)|p=Pudełko}}}} w „{{sr|#Funkcje typu jednostki|p=Pudełko}}”, one definiują przestrzenie dyskusji, ale można użyć parametru dyskusji typu jednostki z obojętnie jaką wartością niepustą, czy pustą, czy nawet jej nie podamy, wtedy wyświetli się nazwa przestrzeni nazw dyskusji. Jeżeli typ jednostki bazowy wskazuje na przestrzeń nazw główną, wtedy się nie liczą parametry nazw jednostek, a na numerkowy, wtedy się liczy. Również parametry typu jednostki nie powinno się podawać w dziecku w ramce, tylko w rodzicu w szablonie jako parametry, w którym ta ramka jest wywoływana, ale tutaj podano jedynie dla przykładu, jak najłatwiej sprawdzić działanie tych parametrów tej funkcji. Najpierw w funkcji nagłówku brane są parametry nazw przestrzeni nazw, a jeżeli ich nie ma, to parametry typu jednostki, a jeżeli nie ma lub parametry przestrzenne wskazują na przestrzeń główną, i nie ma nazwy jednostki, to generowane są nazwy tej funkcji na podstawie aktualnej strony. == Funkcje nazw jednostki trzeciej wersji == === {{Code|p["Nazwa jednostki 3"](frame,i)}} === === {{Code|p["Nazwa przedmiotowa jednostki 3"](frame,i)}} === === {{Code|p["Nazwa dyskusji jednostki 3"](frame,i)}} === == Funkcje typu jednostki == === {{Code|p["Typ jednostki"](frame,i)}} === === {{Code|p["Typ jednostki 2"](frame,i)}} === === {{Code|p["Typ jednostki 3"](frame,i)}} === === Funkcje typu jednostki przedmiotowe === ==== {{Code|p["Przedmiotowy typ jednostki"](frame,i)}} ==== ==== {{Code|p["Przedmiotowy typ jednostki 2"](frame,i)}} ==== ==== {{Code|p["Przedmiotowy typ jednostki 3"](frame,i)}} ==== === Fukcje typu jednostki dyskusji === ==== {{Code|p["Dyskusyjny typ jednostki"](frame,i)}} ==== ==== {{Code|p["Dyskusyjny typ jednostki 2"](frame,i)}} ==== ==== {{Code|p["Dyskusyjny typ jednostki 3"](frame,i)}} ==== == Funkcje chech pudełka == === {{Code|p["Cecha pudełka"](frame)}} === === {{Code|p["Przedmiotowa cecha pudełka"](frame)}} === === {{Code|p["Dyskusyjna cecha pudełka"](frame)}} === == Fukcje ogólnego pudełka == === {{Code|p["Ogólne pudełko"](frame)}} === == Funkcje ogólne == === {{Code|p["Tekst pudełka"](frame)}} === == Funkcje błędów pudełka == === {{Code|p["Błędy pudełka"](frame)}} === === {{Code|p["Przedmiotowe błędy pudełka"](frame)}} === === {{Code|p["Dyskusyjne błędy pudełka"](frame)}} === == Funkcje nazw stron == === {{Code|p["Nazwa strony głównej projektu"](frame,i)}} === === {{Code|p["Nazwa strony głównej dla dzieci projektu"](frame,i)}} === == Funkcje kodów == === {{Code|p["Kod języka"](frame,i)}} === === {{Code|p["Kod projektu"](frame,i)}} === === {{Code|p["Klucz projektu"](frame,i)}} === == Funkcje wiki == === {{Code|p["Inny niż język bieżący wiki"](frame)}} === === {{Code|p["Inne niż lokalne wiki"](frame)}} === === {{Code|p["Inne niż bieżące wiki"](frame)}} === == Funkcje typów parametrów, czy podane je == === {{Code|p["Podano parametry nienazwane"](frame)}} === === {{Code|p["Podano parametry numerowane"](frame)}} === === {{Code|p["Podano parametry nazwane"](frame)}} === == Funkcje kodów tego projektu == === {{Code|p["Kod projektu tego projektu"](frame)}} === === {{Code|p["Kod języka tego projektu"](frame)}} === === {{Code|p["Klucz projektu tego projektu"](frame)}} === == Funkcje stron == === {{Code|p["Strona główna tego projektu"](frame)}} === === {{Code|p["Strona główna dla dzieci tego projektu"](frame)}} === == Funkcje nazw stron drugiej wersji == === {{Code|p["Nazwa strony głównej dla dzieci projektu 2"](frame)}} === === {{Code| p["Nazwa strony głównej projektu 2"](frame)}} === {{BrClear}} <noinclude><!-- -->{{ProstaStronaKoniec}}<!-- -->{{Kategoria|Opisy funkcji, w Lua w Scribunto, w modułach}}<!-- --></noinclude> 8n4rga9slq9chugvi9tsn8c8ek8hubq 540430 540429 2026-04-24T01:53:07Z Persino 2851 540430 wikitext text/x-wiki <noinclude>{{ProstaStronaStart | nagłówek = {{Podrozdział|{{ld2|Pudełko}}|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 pudelko_modul=require("Module:Pudełko"); </syntaxhighlight> dzięki, któremu można wypisywać funkcje należącego do niego. Posługuje się na parametrach pudełkowych {{Parametr|nazwa przestrzeni nazw}} (czy też bez numerka {{Parametr|nazwa przestrzeni nazw i}} dla tego numerowanego) lub te z numerkiem po jednej spacji w nich (ale nie dla tego z końcówką {{Code| i}}) mogą zostać użyte jako parametry szablonu. Moduł {{Code|{{ld2|Pudełko}}}} przedstawia funkcje nazw w oparciu o funkcje nazw {{Code|{{ld2|Nazwy}}}}, generuje on nazwy za pomocą parametrów pudełkowych podanych poniżej. Parametr {{Parametr|nazwa jednostki}} (lub parametr {{Parametr|cel}} dla numerka tego pierwszego, tego alternatywnego), lub te z numerkiem po jednej spacji w nazwie parametru, albo numerowane numerkami {{Code|1}}, {{Code|2}},..., mogą zostać użyte jako parametry szablonu. Parametry określające rodzaj jednostki {{Parametr|typ jednostki}} z {{Parametr|dyskusja typu jednostki}}, itp. w wersjach z numerkiem po jednej spacji w nich mogą zostać użyte jako parametry szablonu. A te tymi numerowanymi liczbami naturalnymi {{Tt|nazwy jednostki}} od jedynki wzwyż poprzez szablon, w którym są one użyte, one też mogą być użyte z dwukropkiem, te numerowane, na samym początku nazwy, wtedy one są traktowane jako pełne nazwy strony, i wtedy one nie zostaną z interpretowane, że do nich trzeba użyć parametr odpowiedni z nazwą przetrzeni nazw z tego numerowanego, czy ogólny, aby utworzyć znów inną pełną nazwę strony dla tego numerka. Zestawienie: * {{Code|nazwa przestrzeni nazw}} i {{Code|nazwa przestrzeni nazw i}} (ogólna nazwa przestrzeni nazw dla wszystkich numerków, i tych numerowanych jednostek) - i to pierwsze z numerkiem, tzn. {{Code|nazwa przestrzeni nazw 1}}, {{Code|nazwa przestrzeni nazw 2}}, ..., * {{Code|nazwa jednostki}} - i te z numerkiem: {{Code|nazwa jednostki 1}}, {{Code|nazwa jednostki 2}}, ..., lub gdy jest zamiast tego parametrem numerowany, {{Code|1}}, {{Code|2}},..., który dla tego pierwszego może być uznany jako: {{Code|cel}} {{=}} {{Code|1}}, * {{Code|typ jednostki}} (parametr bazowy) i {{Code|typ jednostki i}} (parametr domyślny numerkowy) - i te z numerkiem: {{Code|typ jednostki 1}}, {{Code|typ jednostki 2}}, ..., tzn. gdy chcemy określić z jakim typem jednostki mamy do czynienia w zależności do jakiej przestrzeni nazw należy, a w danej, czy jest on np. programowy, czy tylko jest opisem, jak to bywa w szablonach {{Np|Template|link=tak}}, podobnie jest w przypadku {{Np|Module|link=tak}}, czy jak jest w innych przestrzeniach nazw, ** {{Code|dyskusja typu jednostki}} (parametr bazowy) i {{Code|dyskusja typu jednostki i}} (parametr domyślny numerkowy) - i te z numerkiem: {{Code|dyskusja typu jednostki 1}}, {{Code|dyskusja typu jednostki 2}}, ..., gdy chcemy określić wartością niepustą,że chodzi tutaj o typ jednostki. == {{Code|p.CzyNiepoprawnaNazwa(nazwa_jednostki)}} == Funkcja sprawdzajaca, czy jest poprawnie podana nazwa jednostki, czy ma poprawną nazwę. Znakami tymi, z których nie powinna składać się nazwa jest {{Code|<nowiki>{}<>|[]#\n</nowiki>}} i dodatkowo znak {{Code|&#127;}} (kod {{Code|{{Nowiki|&#127;}}}}). Też nie może składać się z trzech znaków tyldy, tzn. {{Code|<nowiki>~~~</nowiki>}}. Również w swojej budowie nie może składać się ze kodów {{Strong|HTML}} literowych o wzorze {{Code|{{Nowiki|&(%a+);}}}}. Natomiast może składać się z {{Code|{{Nowiki|&#(%d+);}}}} i {{Code|{{Nowiki|&#x(%x+);}}}}, ale w pierw te kody muszą być zamienione na normalne znaki. Skrótowa definicja funkcji: <syntaxhighlight lang="lua"> function p.CzyNiepoprawnaNazwa(nazwa_jednostki)...end; </syntaxhighlight> Wtedy ciało funkcji tej, czyli jego definicja w środku, jest: <syntaxhighlight lang="lua"> -- Moduł: "Moduł:Html/dane", służy do ładowania znaku o kodzie HTML "&#127;"; local html_dane_modul=mw.loadData("Module:Html/dane"); return mw.ustring.match(nazwa_jednostki,"[{}<>|%[%]#\n"..html_dane_modul.znak_127.."]+") or mw.ustring.match(nazwa_jednostki,"~~~") or mw.ustring.match(nazwa_jednostki,"&(%a+);"); </syntaxhighlight> Parametry: * {{Code|nazwa_jednostki}} - nazwa jednostki do sprawdzenia. Przykłady: <syntaxhighlight lang="lua"> local pudelko_modul=require("Module:Pudełko"); -- Podana przykładowa niepoprawna nazwa jedostki local nazwa_jednostki="Nazwa pliku [[Nazwa linku w pliku]]"; -- Fukcja zwróci wartość: local czy_poprawna_nazwa=true; local czy_poprawna_nazwa=pudelko_modul.CzyNiepoprawnaNazwa(nazwa_jednostki); </syntaxhighlight> == Funkcje nazw przestrzeni nazw == === {{Code|p["Nazwa przestrzeni nazw"](frame,...)}} === Funkcja pisze nazwę przestrzeni nazw, niezależnie, czy to jest przedmiotowa, czy dyskusji, według podanej w zmiennej {{Code|nazwa przestrzeni nazw}} dla pozycja bazowej w podanych parametrach szablonu rodzicu ramki dziecka, lub dla innej pozycji należy parametr podawać w formie {{Code|nazwa przestrzeni nazw 1}}, {{Code|nazwa przestrzeni nazw 2}}, {{Code|nazwa przestrzeni nazw 3}},..., lub te parametry można podać w postaci ogólnej {{Code|nazwa przestrzeni nazw i}}. Parametry podaje się w parametrach rodzica wywołania tej funkcji {{Code|{{m|Pudełko|Nazwa przestrzeni nazw}}}} (ale ich nie trzeba podawać w dziecku, ale można) i w parametrach dziecka, jeśli chodzi o zmienną {{Code|numer jednostki}}, czyli np.: {{Code|{{m|Pudełko|Nazwa przestrzeni nazw|numer jednostki{{=}}<jakaś liczba całkowita dodatnia>}}}}. Te parametry przestrzenne zamiast w rodzicu w szablonie można podać w ramce dziecka, wtedy parametry dziecka mają pierwszeństwo. Przestrzeń nazw z parametrów nazw przestrzennych może odpowiadać wartości przestrzeni głównej, to wtedy odpowiednia przestrzeń nazw z parametru nazwy jednostki się nie liczy w tej funkcji, aby się liczyła należy użyć funkcji {{Code|{{sr|#p["Nazwa przestrzeni nazw 2"](frame,...)|p=Pudełko}}}}. Definicja skrótowa funkcji: <syntaxhighlight lang="lua"> p["Nazwa przestrzeni nazw"]=function(frame,czy_uwzglednic_alternatywna_nazwe,i)...end; </syntaxhighlight> Wtedy ciało funkcji tej, czyli jego definicja w środku, jest: <syntaxhighlight lang="lua"> -- Jest liczony numer parametru nazwy przestrzeni nazw, domyslnie chodzi tu o numer bazowy parametrów przestrzennych; local numer_jednostki=i or frame.args["numer jednostki"]; local liczba_numer_jednostki=((numer_jednostki)and(tonumber(numer_jednostki))or 0); local pudelko_pomocne_modul=require("Module:Pudełko/Pomocne"); -- Liczy nazwę przestrzeni nazw na podstawie podanych parametrów; return pudelko_pomocne_modul.Nazwa_przestrzeni_nazw(frame,0, czy_uwzglednic_alternatywna_nazwe,liczba_numer_jednostki); </syntaxhighlight> Parametry funkcji: * {{Code|frame}} - tablica ramki tablicy transportu, * {{Code|czy_uwzglednic_alternatywna_nazwe}} - czy ma uwzględniać nazwę przestrzeni nazw domyślną szablonu, dostępne wartości: {{Code|false}}, w której nazwa domyślna nie jest uwzględniana wtedy, oraz {{Code|nil}} i {{Code|true}}, które oznaczają to samo, w tym jeżeli ona jest uwzględniana, wtedy jest brany parametr pierwszy dziecka, który musi istnieć przy takiej wartości tego parametru, tzn. {{Code|{{m|Pudełko|Nazwa przestrzeni nazw|Szablon}}}}, a nazwa uzyskana nazwy przestrzeni nazw jest w takim przypadku błędna, a jeżeli nazwa domyślna jest błędna, czyli {{Code|{{m|Pudełko|Nazwa przestrzeni nazw|Moja przestrzeń}}}}, wtedy funkcja zwraca stan błędu {{Code|(błąd)}}. * {{Code|i}} - numer zmiennej nazwy przestrzeni nazw. Funkcja wykorzystuje {{Code|{{sr|#p.Nazwa_przestrzeni_nazw(frame,...)|p=Pudełko/Pomocne}}}} do wyznaczania ogólnego nazwy przestrzeni nazw dla pozycji bazowej i numerkowej, tzn. dla pozycji: jeden, dwa, trzy,..., itd, i ich ogólnej. Parametr ramki tablicy transportu rodzica szablonu: * {{Code|nazwa przestrzeni nazw}}, {{Code|nazwa przestrzeni nazw 1}}, {{Code|nazwa przestrzeni nazw 2}}, {{Code|nazwa przestrzeni nazw 3}},..., {{Code|nazwa przestrzeni nazw i}} - nazwy przestrzeni nazw dla pozycji bazowej oraz zwykłej i ogólnej numerkowej, * {{Code|typ jednostki}}, {{Code|typ jednostki 1}}, {{Code|typ jednostki 2}}, {{Code|typ jednostki 3}},..., {{Code|typ jednostki i}} - typy jednostek, którym odpowiadają pewne przestrzenie przedmiotowe, dla pozycji bazowej, numerkowej i ogólnej, ** {{Code|dyskusja typu jednostki}}, {{Code|dyskusja typu jednostki 1}}, {{Code|dyskusja typ jednostki 2}}, {{Code|dyskusja typ jednostki 3}},..., {{Code|dyskusja typ jednostki i}} - czy dany typ jednostki ma przedstawiać, jeśli niepusta, przestrzeń dyskusji dla pozycji bazowej, numerkowej i ogólnej. Parametry ramki tablicy transportu dziecka: * Parametry dziecka są takie same jak rodzica dla funkcji pudełkowej plus tu wymienione, * {{Code|numer jednostki}} - jak parametr {{Code|i}} nie został ustawiony, to wtedy liczy się ta zmienna. Przykłady: <syntaxhighlight lang="mediawiki"> {{Nazwa szablonu|nazwa przestrzeni nazw=Wikibooks|nazwa przestrzeni nazw 2=Szablon|nazwa przestrzeni nazw i=Moduł}} </syntaxhighlight> W dziecku powiedzmy jest wywołanie, i szukamy nazwy przestrzeni nazw o numerze dwa, która nie została podana, ale istnieje za to jej wersji ogólna {{Code|nazwa przestrzeni nazw i}} i domyślna {{Code|nazwa przestrzeni nazw}}: <syntaxhighlight lang="mediawiki"> {{#invoke:Pudełko|Nazwa przestrzeni nazw|numer jednostki=1}} </syntaxhighlight> Na podstawie powyższego przykładu otrzymamy wynik o schemacie, nie wyniku, bo tam nie ma zmiennej {{Code|nazwa przestrzeni nazw 1}}, ale jest {{Code|nazwa przestrzeni nazw i}}: <syntaxhighlight lang="mediawiki"> <!-- Ale nie "nazwa przestrzeni nazw", bo jej nie ma, ale za to istnieje "nazwa przestrzeni nazw i"; --> <!-- nazwa przestrzeni nazw 2=nazwa przestrzeni nazw i=Moduł; --> <!-- Czyli wynik: --> Moduł <!-- Widzimy, że wygenerowała się nazwa przestrzeni nazw, którą jest przestrzeń programowa, którą również jest "Szablon"; --> </syntaxhighlight> Nie jest brana w tym powyższym przykładzie zmienna {{Code|nazwa przestrzeni nazw}}, bo jej nie ma, ale za to jest {{Code|nazwa przestrzeni nazw i}}, bo ona występuje jako parametr domyślny ogólny dla parametrów numerkowych. Przykłady w wikikodzie: * {{Code|{{m|Pudełko|Nazwa przestrzeni nazw|numer jednostki{{=}}2}}}} → {{Tt|{{#invoke:Pudełko|Nazwa przestrzeni nazw|numer jednostki=2}}}} * {{Code|{{m|Pudełko|Nazwa przestrzeni nazw|Szablon|nazwa przestrzeni nazw i{{=}}Moja przestrzeń|numer jednostki{{=}}2}}}} → {{Tt|{{#invoke:Pudełko|Nazwa przestrzeni nazw|Szablon|nazwa przestrzeni nazw i=Moja przestrzeń|numer jednostki=2}}}} * {{Code|{{m|Pudełko|Nazwa przestrzeni nazw|nazwa przestrzeni nazw 2{{=}}Szablon|numer jednostki{{=}}2}}}} → {{Tt|{{#invoke:Pudełko|Nazwa przestrzeni nazw|nazwa przestrzeni nazw 2=Szablon|numer jednostki=2}}}} * {{Code|{{m|Pudełko|Nazwa przestrzeni nazw|nazwa przestrzeni nazw 2{{=}}Szablon|numer jednostki{{=}}2}}}} → {{Tt|{{#invoke:Pudełko|Nazwa przestrzeni nazw|nazwa przestrzeni nazw i=Szablon|numer jednostki=2}}}} * {{Code|{{m|Pudełko|Nazwa przestrzeni nazw|nazwa przestrzeni nazw{{=}}Szablon|numer jednostki{{=}}2}}}} → {{Tt|{{#invoke:Pudełko|Nazwa przestrzeni nazw|nazwa przestrzeni nazw=Szablon|numer jednostki=2}}}} Powyżej dla przykładu podano parametry nie w rodzicu w szablonie, tylko w dziecku, jeśli chodzi o parametry nazw przestrzeni nazw, ale ich się za to nie powinno podawać w tych ramach, tylko w szablonach, w których wywoływane są te ramki pudełek {{Code|{{m|Pudełko}}}}, ale tak tutaj tak zrobiono by było najłatwiej sprawdzić działanie tego typu funkcji. Analogicznie możemy podawać parametry typu jednostki, np.: wywołaniu modułowym {{Code|{{m|Pudełko|Nazwa przestrzeni nazw|typ jednostki 2{{=}}strona szablonu|numer jednostki{{=}}2}}}}, ale o tym więcej w rozdziałach {{Code|{{sr|# p["Typ jednostki"](frame,i)|p=Pudełko}}}} w „{{sr|#Funkcje typu jednostki|p=Pudełko}}”, on definiuje przestrzenie przedmiotowe, ale można użyć parametru dyskusji typu jednostki z wartością niepustą, wtedy wyświetli się nazwa przestrzeni nazw dyskusji. Również parametry typu jednostki nie powinno się podawać w dziecku w ramce, tylko w rodzicu w szablonie jako parametry, w którym ta ramka jest wywoływana, ale tutaj podano jedynie dla przykładu, jak najłatwiej sprawdzić działanie tych parametrów tej funkcji. Najpierw w funkcji nagłówku brane są parametry nazw przestrzeni nazw, a jeżeli ich nie ma, to parametry typu jednostki, a jeżeli nie ma, to generowane są nazwy na podstawie aktualnego modułu. === {{Code|p["Nazwa przedmiotowej przestrzeni nazw"](frame,...)}} === Funkcja pisze przedmiotową nazwę przestrzeni nazw jakikolwiek nazwy przestrzeni nazw (tzn. nazwę przedmiotową nazwy przestrzenie nazw, czyli nie dyskusji, zamieniana jest na nią samą, czyli identyfikator przestrzeni się nie zmienia, a dyskusji, nie przedmiotową, przekształca się na przedmiotową jej odpowiadającą, czyli w tym przypadku identyfikator przestrzeni zmniejsza się o numer mniej), według podanej w zmiennej {{Code|nazwa przestrzeni nazw}} dla pozycja bazowej w podanych parametrach szablonu rodzicu ramki dziecka, lub dla innej pozycji należy parametr podawać w formie {{Code|nazwa przestrzeni nazw 1}}, {{Code|nazwa przestrzeni nazw 2}}, {{Code|nazwa przestrzeni nazw 3}},..., lub te parametry można podać w postaci ogólnej {{Code|nazwa przestrzeni nazw i}}. Parametry podaje się w parametrach rodzica wywołania tej funkcji {{Code|{{m|Pudełko|Nazwa przedmiotowej przestrzeni nazw}}}} (ale ich nie trzeba podawać w dziecku, ale można) i w parametrach dziecka, jeśli chodzi o zmienną {{Code|numer jednostki}}, czyli np.: {{Code|{{m|Pudełko|Nazwa przedmiotowej przestrzeni nazw|numer jednostki{{=}}<jakaś liczba całkowita dodatnia>}}}}. Te parametry przestrzenne zamiast w rodzicu w szablonie można podać w ramce dziecka, wtedy parametry dziecka mają pierwszeństwo. Parametry przestrzenne mogą mogą być podane w postaci przestrzeni przedmiotowej lub dyskusji, ale ta funkcja zawsze ją zamienia na przedmiotową. Przestrzeń nazw z parametrów nazw przestrzennych może odpowiadać wartości przestrzeni głównej, to wtedy odpowiednia przestrzeń nazw z parametru nazwy jednostki się nie liczy w tej funkcji, aby się liczyła należy użyć funkcji {{Code|{{sr|#p["Nazwa przedmiotowej przestrzeni nazw 2"](frame,...)|p=Pudełko}}}}. Definicja skrótowa funkcji: <syntaxhighlight lang="lua"> p["Nazwa przedmiotowej przestrzeni nazw"]=function(frame,czy_uwzglednic_alternatywna_nazwe,i)...end; </syntaxhighlight> Wtedy ciało funkcji tej, czyli jego definicja w środku, jest: <syntaxhighlight lang="lua"> -- Jest liczony numer parametru nazwy przestrzeni nazw, domyslnie chodzi tu o numer bazowy parametrów przestrzennych; local numer_jednostki=i or frame.args["numer jednostki"]; local liczba_numer_jednostki=((numer_jednostki)and(tonumber(numer_jednostki))or 0); local pudelko_pomocne_modul=require("Module:Pudełko/Pomocne"); -- Liczy nazwę przestrzeni nazw przedmiotową na podstawie podanych parametrów; return pudelko_pomocne_modul.Nazwa_przestrzeni_nazw(frame,1, czy_uwzglednic_alternatywna_nazwe,liczba_numer_jednostki); </syntaxhighlight> Parametry funkcji: * {{Code|frame}} - tablica ramki tablicy transportu, * {{Code|czy_uwzglednic_alternatywna_nazwe}} - czy ma uwzględniać nazwę przestrzeni nazw domyślną szablonu, dostępne wartości: {{Code|false}}, w której nazwa domyślna nie jest uwzględniana wtedy, oraz {{Code|nil}} i {{Code|true}}, które oznaczają to samo, w tym jeżeli ona jest uwzględniana, wtedy jest brany parametr pierwszy dziecka, który musi istnieć przy takiej wartości tego parametru, tzn. {{Code|{{m|Pudełko|Nazwa przedmiotowej przestrzeni nazw|Dyskusja szablonu}}}} - ta nazwa domyślna zostanie zamieniona na przedmiotową, a jak ona by była przedmiotowa, to żadnej zamiany by nie było, a nazwa uzyskana z nazwy przestrzeni nazw z parametrów przestrzennych jest w takim przypadku błędna, to w takim razie brany jest ten parametr, a jeżeli ta nazwa domyślna jest błędna, czyli {{Code|{{m|Pudełko|Nazwa przedmiotowej przestrzeni nazw|Moja przestrzeń}}}}, wtedy funkcja zwraca stan błędu {{Code|(błąd)}}. * {{Code|i}} - numer zmiennej nazwy przestrzeni nazw. Funkcja wykorzystuje {{Code|{{sr|#p.Nazwa_przestrzeni_nazw(frame,...)|p=Pudełko/Pomocne}}}} do wyznaczania ogólnego nazwy przestrzeni nazw dla pozycji bazowej i numerkowej, tzn. dla pozycji: jeden, dwa, trzy,..., itd, i ich ogólnej. Parametr ramki tablicy transportu rodzica szablonu: * {{Code|nazwa przestrzeni nazw}}, {{Code|nazwa przestrzeni nazw 1}}, {{Code|nazwa przestrzeni nazw 2}}, {{Code|nazwa przestrzeni nazw 3}},..., {{Code|nazwa przestrzeni nazw i}} - nazwy przestrzeni nazw dla pozycji bazowej oraz zwykłej i ogólnej numerkowej, * {{Code|typ jednostki}}, {{Code|typ jednostki 1}}, {{Code|typ jednostki 2}}, {{Code|typ jednostki 3}},..., {{Code|typ jednostki i}} - typy jednostek, którym odpowiadają pewne przestrzenie przedmiotowe, dla pozycji bazowej, numerkowej i ogólnej. Parametry ramki tablicy transportu dziecka: * Parametry dziecka są takie same jak rodzica dla funkcji pudełkowej plus tu wymienione, * {{Code|numer jednostki}} - jak parametr {{Code|i}} nie został ustawiony, to wtedy liczy się ta zmienna. Przykłady: <syntaxhighlight lang="mediawiki"> {{Nazwa szablonu|nazwa przestrzeni nazw=Dyskusja Wikibooks|nazwa przestrzeni nazw 2=Dyskusja szablonu|nazwa przestrzeni nazw i=Dyskusja modułu}} </syntaxhighlight> W dziecku powiedzmy jest wywołanie, i szukamy nazwy przestrzeni nazw o numerze dwa, która nie została podana, ale istnieje za to jej wersji ogólna {{Code|nazwa przestrzeni nazw i}} i domyślna {{Code|nazwa przestrzeni nazw}}: <syntaxhighlight lang="mediawiki"> {{#invoke:Pudełko|Nazwa przedmiotowej przestrzeni nazw|numer jednostki=1}} </syntaxhighlight> Na podstawie powyższego przykładu otrzymamy wynik o schemacie, nie wyniku, bo tam nie ma zmiennej {{Code|nazwa przestrzeni nazw 1}}, ale jest {{Code|nazwa przestrzeni nazw i}}: <syntaxhighlight lang="mediawiki"> <!-- Ale nie "nazwa przestrzeni nazw", bo jej nie ma, ale za to istnieje "nazwa przestrzeni nazw i"; --> <!-- nazwa przestrzeni nazw 2=nazwa przestrzeni nazw i=Dyskusja modułu; --> <!-- Czyli wynik: --> Moduł <!-- Widzimy, że wygenerowała się nazwa przestrzeni nazw, którą jest przestrzeń przedmiotowa programowa przestrzeni dyskusji "Dyskusja modułu", którą również jest "Szablon" jego przestrzeni dyskusji "Dyskusja szablonu", a dla ich przestrzeni przedmiotowej, zamiast dyskusji, to samo przekształca się na to samo; --> </syntaxhighlight> Nie jest brana w tym powyższym przykładzie zmienna {{Code|nazwa przestrzeni nazw}}, bo jej nie ma, ale za to jest {{Code|nazwa przestrzeni nazw i}}, bo ona występuje jako parametr domyślny ogólny dla parametrów numerkowych. Przykłady w wikikodzie: * {{Code|{{m|Pudełko|Nazwa przedmiotowej przestrzeni nazw|numer jednostki{{=}}2}}}} → {{Tt|{{#invoke:Pudełko|Nazwa przedmiotowej przestrzeni nazw|numer jednostki=2}}}} * {{Code|{{m|Pudełko|Nazwa przedmiotowej przestrzeni nazw|Dyskusja szablonu|nazwa przestrzeni nazw i{{=}}Moja przestrzeń|numer jednostki{{=}}2}}}} → {{Tt|{{#invoke:Pudełko|Nazwa przedmiotowej przestrzeni nazw|Dyskusja szablonu|nazwa przestrzeni nazw i=Moja przestrzeń|numer jednostki=2}}}} * {{Code|{{m|Pudełko|Nazwa przedmiotowej przestrzeni nazw|nazwa przestrzeni nazw 2{{=}}Dyskusja szablonu|numer jednostki{{=}}2}}}} → {{Tt|{{#invoke:Pudełko|Nazwa przedmiotowej przestrzeni nazw|nazwa przestrzeni nazw 2=Dyskusja szablonu|numer jednostki=2}}}} * {{Code|{{m|Pudełko|Nazwa przedmiotowej przestrzeni nazw|nazwa przestrzeni nazw 2{{=}}Dyskusja szablonu|numer jednostki{{=}}2}}}} → {{Tt|{{#invoke:Pudełko|Nazwa przedmiotowej przestrzeni nazw|nazwa przestrzeni nazw i=Dyskusja szablonu|numer jednostki=2}}}} * {{Code|{{m|Pudełko|Nazwa przedmiotowej przestrzeni nazw|nazwa przestrzeni nazw{{=}}Dyskusja szablonu|numer jednostki{{=}}2}}}} → {{Tt|{{#invoke:Pudełko|Nazwa przedmiotowej przestrzeni nazw|nazwa przestrzeni nazw=Dyskusja szablonu|numer jednostki=2}}}} Powyżej dla przykładu podano parametry nie w rodzicu w szablonie, tylko w dziecku, jeśli chodzi o parametry nazw przestrzeni nazw, ale ich się za to nie powinno podawać w tych ramach, tylko w szablonach, w których wywoływane są te ramki pudełek {{Code|{{m|Pudełko}}}}, ale tak tutaj tak zrobiono by było najłatwiej sprawdzić działanie tego typu funkcji. Analogicznie możemy podawać parametry typu jednostki, np.: wywołaniu modułowym {{Code|{{m|Pudełko|Nazwa przedmiotowej przestrzeni nazw|typ jednostki 2{{=}}strona szablonu|numer jednostki{{=}}2}}}}, ale o tym więcej w rozdziałach {{Code|{{sr|# p["Przedmiotowy typ jednostki"](frame,i)|p=Pudełko}}}} w „{{sr|#Funkcje typu jednostki|p=Pudełko}}”, ale wtedy ta sama nazwa przestrzeni nazw reprezentowana przez {{Parametr|typ jednostki 2|strona szablonu}}, jest zamieniana na to samo, lepiej jest tutaj używać parametrów przestrzennych nazw niż typu jednostki, bo typ jednostki ma taką samą wartość dla przestrzeni przedmiotowej, co dyskusji. Tutaj parametr dyskusji typu jednostki bazowy i numerkowy ogólny, czy szczegółowy, nie gra roli, bo nawet, gdy wygenerujemy nazwę przestrzeni dyskusji za pomoca tego parametru, to i tak otrzymamy na samym końcu jego nazwę przedmiotową. Również parametry typu jednostki nie powinno się podawać w dziecku w ramce, tylko w rodzicu w szablonie jako parametry, w którym ta ramka jest wywoływana, ale tutaj podano jedynie dla przykładu, jak najłatwiej sprawdzić działanie tych parametrów tej funkcji. Najpierw w funkcji nagłówku brane są parametry nazw przestrzeni nazw, a jeżeli ich nie ma, to parametry typu jednostki, a jeżeli nie ma, to generowane są nazwy na podstawie aktualnego modułu. === {{Code|p["Nazwa przestrzeni nazw dyskusji"](frame,...)}} === Funkcja pisze nazwę przestrzeni nazw dyskusji jakikolwiek nazwy przestrzeni nazw (tzn. nazwę przedmiotową nazwy przestrzenie nazw, czyli nie dyskusji, zamieniana jest na dyskusji, czyli identyfikator przestrzeni się zmienia jeden wyżej, a dyskusji, nie przedmiotową, przekształca się na tą samą), według podanej w zmiennej {{Code|nazwa przestrzeni nazw}} dla pozycja bazowej w podanych parametrach szablonu rodzicu ramki dziecka, lub dla innej pozycji należy parametr podawać w formie {{Code|nazwa przestrzeni nazw 1}}, {{Code|nazwa przestrzeni nazw 2}}, {{Code|nazwa przestrzeni nazw 3}},..., lub te parametry można podać w postaci ogólnej {{Code|nazwa przestrzeni nazw i}}. Parametry podaje się w parametrach rodzica wywołania tej funkcji {{Code|{{m|Pudełko|Nazwa przestrzeni nazw dyskusji}}}} (ale ich nie trzeba podawać w dziecku, ale można) i w parametrach dziecka, jeśli chodzi o zmienną {{Code|numer jednostki}}, czyli np.: {{Code|{{m|Pudełko|Nazwa przestrzeni nazw dyskusji|numer jednostki{{=}}<jakaś liczba całkowita dodatnia>}}}}. Te parametry przestrzenne zamiast w rodzicu w szablonie można podać w ramce dziecka, wtedy parametry dziecka mają pierwszeństwo. Parametry przestrzenne mogą mogą być podane w postaci przestrzeni przedmiotowej lub dyskusji, ale ta funkcja zawsze ją zamienia na dyskusji. Przestrzeń nazw z parametrów nazw przestrzennych może odpowiadać wartości przestrzeni głównej, to wtedy odpowiednia przestrzeń nazw z parametru nazwy jednostki się nie liczy w tej funkcji, aby się liczyła należy użyć funkcji {{Code|{{sr|#p["Nazwa przestrzeni nazw dyskusji 2"](frame,...)|p=Pudełko}}}}. Definicja skrótowa funkcji: <syntaxhighlight lang="lua"> p["Nazwa przestrzeni nazw dyskusji"]=function(frame,czy_uwzglednic_alternatywna_nazwe,i)...end; </syntaxhighlight> Wtedy ciało funkcji tej, czyli jego definicja w środku, jest: <syntaxhighlight lang="lua"> -- Jest liczony numer parametru nazwy przestrzeni nazw, domyslnie chodzi tu o numer bazowy parametrów przestrzennych; local numer_jednostki=i or frame.args["numer jednostki"]; local liczba_numer_jednostki=((numer_jednostki)and(tonumber(numer_jednostki))or 0); local pudelko_pomocne_modul=require("Module:Pudełko/Pomocne"); -- Liczy nazwę przestrzeni nazw dyskusji na podstawie podanych parametrów; return pudelko_pomocne_modul.Nazwa_przestrzeni_nazw(frame,2, czy_uwzglednic_alternatywna_nazwe,liczba_numer_jednostki); </syntaxhighlight> Parametry funkcji: * {{Code|frame}} - tablica ramki tablicy transportu, * {{Code|czy_uwzglednic_alternatywna_nazwe}} - czy ma uwzględniać nazwę przestrzeni nazw domyślną szablonu, dostępne wartości: {{Code|false}}, w której nazwa domyślna nie jest uwzględniana wtedy, oraz {{Code|nil}} i {{Code|true}}, które oznaczają to samo, w tym jeżeli ona jest uwzględniana, wtedy jest brany parametr pierwszy dziecka, który musi istnieć przy takiej wartości tego parametru, tzn. {{Code|{{m|Pudełko|Nazwa przestrzeni nazw dyskusji|Szablon}}}} - ta nazwa domyślna zostanie przekształcona na dyskusji, a jeżeli ona by była dyskusji, to nie byłoby żadnego przekształcenia, a nazwa uzyskana nazwy przestrzeni nazw z parametrów przestrzennych jest w takim przypadku błędna, to w takim razie brany jest ten parametr, a jeżeli nazwa domyślna jest błędna, czyli {{Code|{{m|Pudełko|Nazwa przestrzeni nazw dyskusji|Moja przestrzeń}}}}, wtedy funkcja zwraca stan błędu {{Code|(błąd)}}. * {{Code|i}} - numer zmiennej nazwy przestrzeni nazw. Funkcja wykorzystuje {{Code|{{sr|#p.Nazwa_przestrzeni_nazw(frame,...)|p=Pudełko/Pomocne}}}} do wyznaczania ogólnego nazwy przestrzeni nazw dla pozycji bazowej i numerkowej, tzn. dla pozycji: jeden, dwa, trzy,..., itd, i ich ogólnej. Parametr ramki tablicy transportu rodzica szablonu: * {{Code|nazwa przestrzeni nazw}}, {{Code|nazwa przestrzeni nazw 1}}, {{Code|nazwa przestrzeni nazw 2}}, {{Code|nazwa przestrzeni nazw 3}},..., {{Code|nazwa przestrzeni nazw i}} - nazwy przestrzeni nazw dla pozycji bazowej oraz zwykłej i ogólnej numerkowej, * {{Code|typ jednostki}}, {{Code|typ jednostki 1}}, {{Code|typ jednostki 2}}, {{Code|typ jednostki 3}},..., {{Code|typ jednostki i}} - typy jednostek, którym odpowiadają pewne przestrzenie przedmiotowe, dla pozycji bazowej, numerkowej i ogólnej. Parametry ramki tablicy transportu dziecka: * Parametry dziecka są takie same jak rodzica dla funkcji pudełkowej plus tu wymienione, * {{Code|numer jednostki}} - jak parametr {{Code|i}} nie został ustawiony, to wtedy liczy się ta zmienna. Przykłady: <syntaxhighlight lang="mediawiki"> {{Nazwa szablonu|nazwa przestrzeni nazw=Wikibooks|nazwa przestrzeni nazw 2=Szablon|nazwa przestrzeni nazw i=Moduł}} </syntaxhighlight> W dziecku powiedzmy jest wywołanie, i szukamy nazwy przestrzeni nazw o numerze dwa, która nie została podana, ale istnieje za to jej wersji ogólna {{Code|nazwa przestrzeni nazw i}} i domyślna {{Code|nazwa przestrzeni nazw}}: <syntaxhighlight lang="mediawiki"> {{#invoke:Pudełko|Nazwa przestrzeni nazw dyskusji|numer jednostki=1}} </syntaxhighlight> Na podstawie powyższego przykładu otrzymamy wynik o schemacie, nie wyniku, bo tam nie ma zmiennej {{Code|nazwa przestrzeni nazw 1}}, ale jest {{Code|nazwa przestrzeni nazw i}}: <syntaxhighlight lang="mediawiki"> <!-- Ale nie "nazwa przestrzeni nazw", bo jej nie ma, ale za to istnieje "nazwa przestrzeni nazw i"; --> <!-- nazwa przestrzeni nazw 2=nazwa przestrzeni nazw i=Moduł; --> <!-- Czyli wynik: --> Dyskusja modułu <!-- Widzimy, że wygenerowała się nazwa przestrzeni nazw, którą jest przestrzeń dyskusji przestrzeni programowej przestrzeni przedmiotowej "Moduł", którą również jest "Szablon" jego przestrzeni dyskusji "Dyskusja szablonu", a dla ich przestrzeni przedmiotowej, zamiast dyskusji, to przekształca się na dyskusji jej odpowiadającą; --> </syntaxhighlight> Nie jest brana w tym powyższym przykładzie zmienna {{Code|nazwa przestrzeni nazw}}, bo jej nie ma, ale za to jest {{Code|nazwa przestrzeni nazw i}}, bo ona występuje jako parametr domyślny ogólny dla parametrów numerkowych. Przykłady w wikikodzie: * {{Code|{{m|Pudełko|Nazwa przestrzeni nazw dyskusji|numer jednostki{{=}}2}}}} → {{Tt|{{#invoke:Pudełko|Nazwa przestrzeni nazw dyskusji|numer jednostki=2}}}} * {{Code|{{m|Pudełko|Nazwa przestrzeni nazw dyskusji|Szablon|nazwa przestrzeni nazw i{{=}}Moja przestrzeń|numer jednostki{{=}}2}}}} → {{Tt|{{#invoke:Pudełko|Nazwa przestrzeni nazw dyskusji|Szablon|nazwa przestrzeni nazw i=Moja przestrzeń|numer jednostki=2}}}} * {{Code|{{m|Pudełko|Nazwa przestrzeni nazw dyskusji|nazwa przestrzeni nazw 2{{=}}Szablon|numer jednostki{{=}}2}}}} → {{Tt|{{#invoke:Pudełko|Nazwa przestrzeni nazw dyskusji|nazwa przestrzeni nazw 2=Szablon|numer jednostki=2}}}} * {{Code|{{m|Pudełko|Nazwa przestrzeni nazw dyskusji|nazwa przestrzeni nazw 2{{=}}Szablon|numer jednostki{{=}}2}}}} → {{Tt|{{#invoke:Pudełko|Nazwa przestrzeni nazw dyskusji|nazwa przestrzeni nazw i=Szablon|numer jednostki=2}}}} * {{Code|{{m|Pudełko|Nazwa przestrzeni nazw dyskusji|nazwa przestrzeni nazw{{=}}Szablon|numer jednostki{{=}}2}}}} → {{Tt|{{#invoke:Pudełko|Nazwa przestrzeni nazw dyskusji|nazwa przestrzeni nazw=Szablon|numer jednostki=2}}}} Powyżej dla przykładu podano parametry nie w rodzicu w szablonie, tylko w dziecku, jeśli chodzi o parametry nazw przestrzeni nazw, ale ich się za to nie powinno podawać w tych ramach, tylko w szablonach, w których wywoływane są te ramki pudełek {{Code|{{m|Pudełko}}}}, ale tak tutaj tak zrobiono by było najłatwiej sprawdzić działanie tego typu funkcji. Analogicznie możemy podawać parametry typu jednostki, np.: wywołaniu modułowym {{Code|{{m|Pudełko|Nazwa przestrzeni nazw dyskusji|typ jednostki 2{{=}}strona szablonu|numer jednostki{{=}}2}}}}, ale o tym więcej w rozdziałach {{Code|{{sr|# p["Dyskusyjny typ jednostki"](frame,i)|p=Pudełko}}}} w „{{sr|#Funkcje typu jednostki|p=Pudełko}}”, ale wtedy nazwa przestrzeni nazw reprezentowana przez {{Parametr|typ jednostki 2|strona szablonu}}, jest zamieniana na nazwę przestrzeni nazw dyskusji. Parametr dyskusji typu jednostki bazowy lub dla danego numerka ogólny, czy szczegółowy, nie gra roli. Również parametry typu jednostki nie powinno się podawać w dziecku w ramce, tylko w rodzicu w szablonie jako parametry, w którym ta ramka jest wywoływana, ale tutaj podano jedynie dla przykładu, jak najłatwiej sprawdzić działanie tych parametrów tej funkcji. Najpierw w funkcji nagłówku brane są parametry nazw przestrzeni nazw, a jeżeli ich nie ma, to parametry typu jednostki, a jeżeli nie ma, to generowane są nazwy na podstawie aktualnego modułu. == Funkcje nazw przestrzeni nazw drugiej wersji == === {{Code|p["Nazwa przestrzeni nazw 2"](frame,...)}} === Funkcja pisze nazwę przestrzeni nazw, niezależnie, czy to jest przedmiotowa, czy dyskusji, według, i nie zawsze tylko, podanej w zmiennej {{Code|nazwa przestrzeni nazw}} dla pozycja bazowej w podanych parametrach szablonu rodzicu ramki dziecka, lub dla innej pozycji należy parametr podawać w formie {{Code|nazwa przestrzeni nazw 1}}, {{Code|nazwa przestrzeni nazw 2}}, {{Code|nazwa przestrzeni nazw 3}},..., lub te parametry można podać w postaci ogólnej {{Code|nazwa przestrzeni nazw i}}. W tej funkcji trzeba też podawać parametry nazwy jednostek {{Code|nazwa jednostki}}, {{Code|nazwa jednostki 1}}, {{Code|nazwa jednostki 2}}, {{Code|nazwa jednostki 3}},... Parametry podaje się w parametrach rodzica wywołania tej funkcji {{Code|{{m|Pudełko|Nazwa przestrzeni nazw 2}}}} (ale ich nie trzeba podawać w dziecku, ale można) i w parametrach dziecka, jeśli chodzi o zmienną {{Code|numer jednostki}}, czyli np.: {{Code|{{m|Pudełko|Nazwa przestrzeni nazw 2|numer jednostki{{=}}<jakaś liczba całkowita dodatnia>}}}}. Te parametry przestrzenne zamiast w rodzicu w szablonie można podać w ramce dziecka, wtedy parametry dziecka mają pierwszeństwo. Przestrzeń nazw z parametrów nazw przestrzennych może odpowiadać wartości przestrzeni głównej, to wtedy odpowiednia przestrzeń nazw z parametru nazwy jednostki się liczy w tej funkcji, wtedy jest liczona nazwa przestrzeni nazw z tego parametru. Gdy parametry przestrzenne lub typ jednostki w drugim podejściu nie wskazują na przestrzeń główną, to wtedy działanie tej funkcji jest podobne do {{Code|{{sr|#p["Nazwa przestrzeni nazw"](frame,...)|p=Pudełko}}}}. Definicja skrótowa funkcji: <syntaxhighlight lang="lua"> p["Nazwa przestrzeni nazw 2"]=function(frame,czy_uwzglednic_alternatywna_nazwe,i)...end; </syntaxhighlight> Wtedy ciało funkcji tej, czyli jego definicja w środku, jest: <syntaxhighlight lang="lua"> local pudelko_pomocne_modul=require("Module:Pudełko/Pomocne"); -- Liczy nazwę przestrzeni nazw, jeżeli z parametrów przestrzennych przestrzeń wskazuje na główną, to wtedy jest liczona przestrzeń nazw z nazwy jednostki; return pudelko_pomocne_modul.Nazwa_przestrzeni_nazw_2(frame,czy_uwzglednic_alternatywna_nazwe,i) </syntaxhighlight> Parametry funkcji: * {{Code|frame}} - tablica ramki tablicy transportu, * {{Code|czy_uwzglednic_alternatywna_nazwe}} - czy ma uwzględniać nazwę przestrzeni nazw domyślną szablonu, dostępne wartości: {{Code|false}}, w której nazwa domyślna nie jest uwzględniana wtedy, oraz {{Code|nil}} i {{Code|true}}, które oznaczają to samo, w tym jeżeli ona jest uwzględniana, wtedy jest brany parametr pierwszy dziecka, który musi istnieć przy takiej wartości tego parametru, tzn. {{Code|{{m|Pudełko|Nazwa przestrzeni nazw 2|Szablon}}}}, a nazwa uzyskana nazwy przestrzeni nazw jest w takim przypadku błędna, a jeżeli nazwa domyślna jest błędna, czyli {{Code|{{m|Pudełko|Nazwa przestrzeni nazw 2|Moja przestrzeń}}}}, wtedy funkcja zwraca stan błędu {{Code|(błąd)}}. * {{Code|i}} - numer zmiennej nazwy przestrzeni nazw. Funkcja wykorzystuje {{Code|{{sr|#p.Nazwa_przestrzeni_nazw_2(frame,...)|p=Pudełko/Pomocne}}}} do wyznaczania ogólnego nazwy przestrzeni nazw dla pozycji bazowej i numerkowej, tzn. dla pozycji: jeden, dwa, trzy,..., itd, i ich ogólnej. Parametr ramki tablicy transportu rodzica szablonu: * {{Code|nazwa przestrzeni nazw}}, {{Code|nazwa przestrzeni nazw 1}}, {{Code|nazwa przestrzeni nazw 2}}, {{Code|nazwa przestrzeni nazw 3}},..., {{Code|nazwa przestrzeni nazw i}} - nazwy przestrzeni nazw dla pozycji bazowej oraz zwykłej i ogólnej numerkowej, * {{Code|nazwa jednostki}}, {{Code|nazwa jednostki 1}}, {{Code|nazwa jednostki 2}}, {{Code|nazwa jednostki 3}},... - nazwy jednostek dla pozycji bazowej i numerkowej, * {{Code|typ jednostki}}, {{Code|typ jednostki 1}}, {{Code|typ jednostki 2}}, {{Code|typ jednostki 3}},..., {{Code|typ jednostki i}} - typy jednostek, którym odpowiadają pewne przestrzenie przedmiotowe, dla pozycji bazowej, numerkowej i ogólnej, ** {{Code|dyskusja typu jednostki}}, {{Code|dyskusja typu jednostki 1}}, {{Code|dyskusja typ jednostki 2}}, {{Code|dyskusja typ jednostki 3}},..., {{Code|dyskusja typ jednostki i}} - czy dany typ jednostki ma przedstawiać, jeśli niepusta, przestrzeń dyskusji dla pozycji bazowej, numerkowej i ogólnej. Parametry ramki tablicy transportu dziecka: * Parametry dziecka są takie same jak rodzica dla funkcji pudełkowej plus tu wymienione, * {{Code|numer jednostki}} - jak parametr {{Code|i}} nie został ustawiony, to wtedy liczy się ta zmienna. Przykłady: <syntaxhighlight lang="mediawiki"> {{Nazwa szablonu|nazwa przestrzeni nazw=Wikibooks|nazwa przestrzeni nazw 1=Szablon|nazwa przestrzeni nazw i=|nazwa jednostki 2=Wikibooks:Strona}} </syntaxhighlight> W dziecku powiedzmy jest wywołanie, i szukamy nazwy przestrzeni nazw o numerze dwa, która została podana, ale istnieje za to jej wersji ogólna {{Code|nazwa przestrzeni nazw i}} i domyślna {{Code|nazwa przestrzeni nazw}}, ale wtedy dla tego numerkowego liczy się to ogólne z {{Code| i}}, a ponieważ ta nazwa jest pusta, więc będziemy liczyli nazwę przestrzeni nazw z {{Code|nazwa jednostki 2}}: <syntaxhighlight lang="mediawiki"> {{#invoke:Pudełko|Nazwa przestrzeni nazw 2|numer jednostki=2}} </syntaxhighlight> Na podstawie powyższego przykładu otrzymamy wynik o schemacie, nie wyniku, bo tam nie ma zmiennej {{Code|nazwa przestrzeni nazw 1}}, ale jest {{Code|nazwa przestrzeni nazw i}}: <syntaxhighlight lang="mediawiki"> <!-- Ale nie "nazwa przestrzeni nazw 2", bo jej nie ma, ale za to istnieje "nazwa przestrzeni nazw i"; --> <!-- nazwa przestrzeni nazw 2=nazwa przestrzeni nazw i="", a nazwa jednostki 2="Wikibooks:Strona"; --> <!-- Czyli wynik: --> Wikibooks <!-- Widzimy, że wygenerowała się nazwa przestrzeni nazw, którą jest przestrzeń nieprogramowa, ale projektu, wychodząca z nazwy jednostek w tym przypadku z "nazwa jednostki 2"; --> </syntaxhighlight> Nie jest brana w tym powyższym przykładzie zmienna {{Code|nazwa przestrzeni nazw}}, bo jej nie ma, ale za to jest {{Code|nazwa przestrzeni nazw i}}, bo ona występuje jako parametr domyślny ogólny dla parametrów numerkowych. Tytaj jest używana jest zmienna {{Code|nazwa jednostki 2}} do wygenerowania ostatecznego wyniku, bo jak można zauważyć, parametry przestrzenne wskazują na przestrzeń główną, a nazwy jednostek już nie. Przykłady w wikikodzie: * {{Code|{{m|Pudełko|Nazwa przestrzeni nazw 2|numer jednostki{{=}}2}}}} → {{Tt|{{#invoke:Pudełko|Nazwa przestrzeni nazw 2|numer jednostki=2}}}} * {{Code|{{m|Pudełko|Nazwa przestrzeni nazw 2|Szablon|nazwa przestrzeni nazw i{{=}}Moja przestrzeń|numer jednostki{{=}}2}}}} → {{Tt|{{#invoke:Pudełko|Nazwa przestrzeni nazw 2|Szablon|nazwa przestrzeni nazw i=Moja przestrzeń|numer jednostki=2}}}} * {{Code|{{m|Pudełko|Nazwa przestrzeni nazw 2|nazwa przestrzeni nazw 2{{=}}|nazwa jednostki 2{{=}}Szablon:Strona|numer jednostki{{=}}2}}}} → {{Tt|{{#invoke:Pudełko|Nazwa przestrzeni nazw 2|nazwa przestrzeni nazw 2=|nazwa jednostki 2=Szablon:Strona|numer jednostki=2}}}} * {{Code|{{m|Pudełko|Nazwa przestrzeni nazw 2|nazwa przestrzeni nazw i{{=}}|nazwa jednostki 2{{=}}Szablon:Strona|numer jednostki{{=}}2}}}} → {{Tt|{{#invoke:Pudełko|Nazwa przestrzeni nazw 2|nazwa przestrzeni nazw i=|nazwa jednostki 2=Szablon:Strona|numer jednostki=2}}}} * {{Code|{{m|Pudełko|Nazwa przestrzeni nazw 2|Szablon|nazwa przestrzeni nazw{{=}}|nazwa jednostki 2{{=}}Wikibooks:Strona|numer jednostki{{=}}2}}}} → {{Tt|{{#invoke:Pudełko|Nazwa przestrzeni nazw 2|Szablon|nazwa przestrzeni nazw=|nazwa jednostki 2=Wikibooks:Strona|numer jednostki=2}}}} Powyżej dla przykładu podano parametry nie w rodzicu w szablonie, tylko w dziecku, jeśli chodzi o parametry nazw przestrzeni nazw i nazw jednostek, ale ich się za to nie powinno podawać w tych ramach, tylko w szablonach, w których wywoływane są te ramki pudełek {{Code|{{m|Pudełko}}}}, ale tak tutaj tak zrobiono by było najłatwiej sprawdzić działanie tego typu funkcji. Analogicznie możemy podawać parametry typu jednostki, np.: wywołaniu modułowym {{Code|{{m|Pudełko|Nazwa przestrzeni nazw 2|typ jednostki 2{{=}}Podręcznik|nazwa jednostki 2{{=}}Szablon:Strona|numer jednostki{{=}}2}}}} (ale wtedy jest brana przestrzeń nazw z nazwy jednostki), ale o tym więcej w rozdziałach {{Code|{{sr|#p["Typ jednostki 2"](frame,i)|p=Pudełko}}}} w „{{sr|#Funkcje typu jednostki|p=Pudełko}}”, on definiuje przestrzenie przedmiotowe, ale można użyć parametru dyskusji typu jednostki z wartością niepustą, wtedy wyświetli się nazwa przestrzeni nazw dyskusji. Jeżeli typ jednostki wskazuje na przestrzeń nazw główną, wtedy się liczą parametry nazw jednostek. Również parametry typu jednostki nie powinno się podawać w dziecku w ramce, tylko w rodzicu w szablonie jako parametry, w którym ta ramka jest wywoływana, ale tutaj podano jedynie dla przykładu, jak najłatwiej sprawdzić działanie tych parametrów tej funkcji. Najpierw w funkcji nagłówku brane są parametry nazw przestrzeni nazw, a jeżeli ich nie ma, to parametry typu jednostki, a jeżeli nie ma lub parametry przestrzenne wskazują na przestrzeń główną, i nie ma nazwy jednostki, to generowane są nazwy tej funkcji na podstawie aktualnej strony. === {{Code|p["Nazwa przedmiotowej przestrzeni nazw 2"](frame,...)}} === Funkcja pisze przedmiotową nazwę przestrzeni nazw jakikolwiek nazwy przestrzeni nazw (tzn. nazwę przedmiotową nazwy przestrzenie nazw, czyli nie dyskusji, zamieniana jest na nią samą, czyli identyfikator przestrzeni się nie zmienia, a dyskusji, nie przedmiotową, przekształca się na przedmiotową jej odpowiadającą, czyli w tym przypadku identyfikator przestrzeni zmniejsza się o numer mniej), według, i nie zawsze tylko, podanej w zmiennej {{Code|nazwa przestrzeni nazw}} dla pozycja bazowej w podanych parametrach szablonu rodzicu ramki dziecka, lub dla innej pozycji należy parametr podawać w formie {{Code|nazwa przestrzeni nazw 1}}, {{Code|nazwa przestrzeni nazw 2}}, {{Code|nazwa przestrzeni nazw 3}},..., lub te parametry można podać w postaci ogólnej {{Code|nazwa przestrzeni nazw i}}. W tej funkcji trzeba też podawać parametry nazwy jednostek {{Code|nazwa jednostki}}, {{Code|nazwa jednostki 1}}, {{Code|nazwa jednostki 2}}, {{Code|nazwa jednostki 3}},... Parametry podaje się w parametrach rodzica wywołania tej funkcji {{Code|{{m|Pudełko|Nazwa przedmiotowej przestrzeni nazw 2}}}} (ale ich nie trzeba podawać w dziecku, ale można) i w parametrach dziecka, jeśli chodzi o zmienną {{Code|numer jednostki}}, czyli np.: {{Code|{{m|Pudełko|Nazwa przedmiotowej przestrzeni nazw 2|numer jednostki{{=}}<jakaś liczba całkowita dodatnia>}}}}. Te parametry przestrzenne zamiast w rodzicu w szablonie można podać w ramce dziecka, wtedy parametry dziecka mają pierwszeństwo. Przestrzeń nazw z parametrów nazw przestrzennych po przekształceniu na przedmiotową może odpowiadać wartości przestrzeni głównej, to wtedy odpowiednia przestrzeń nazw z parametru nazwy jednostki się liczy w tej funkcji, wtedy jest liczona nazwa przestrzeni nazw z tego parametru. Gdy parametry przestrzenne lub typ jednostki w drugim podejściu nie wskazują na przestrzeń główną, to wtedy działanie tej funkcji jest podobne do {{Code|{{sr|#p["Nazwa przedmiotowej przestrzeni nazw"](frame,...)|p=Pudełko}}}}. Definicja skrótowa funkcji: <syntaxhighlight lang="lua"> p["Nazwa przedmiotowej przestrzeni nazw 2"]=function(frame,czy_uwzglednic_alternatywna_nazwe,i)...end; </syntaxhighlight> Wtedy ciało funkcji tej, czyli jego definicja w środku, jest: <syntaxhighlight lang="lua"> local pudelko_pomocne_modul=require("Module:Pudełko/Pomocne"); return pudelko_pomocne_modul.Nazwa_przestrzeni_nazw_przedmiotowa_dyskusji_2(frame,czy_uwzglednic_alternatywna_nazwe,i,"przedmiotowa"); </syntaxhighlight> Parametry funkcji: * {{Code|frame}} - tablica ramki tablicy transportu, * {{Code|czy_uwzglednic_alternatywna_nazwe}} - czy ma uwzględniać nazwę przestrzeni nazw domyślną szablonu, dostępne wartości: {{Code|false}}, w której nazwa domyślna nie jest uwzględniana wtedy, oraz {{Code|nil}} i {{Code|true}}, które oznaczają to samo, w tym jeżeli ona jest uwzględniana, wtedy jest brany parametr pierwszy dziecka, który musi istnieć przy takiej wartości tego parametru, tzn. {{Code|{{m|Pudełko|Nazwa przedmiotowej przestrzeni nazw 2|Szablon}}}}, a nazwa uzyskana nazwy przestrzeni nazw jest w takim przypadku błędna, a jeżeli nazwa domyślna jest błędna, czyli {{Code|{{m|Pudełko|Nazwa przedmiotowej przestrzeni nazw 2|Moja przestrzeń}}}}, wtedy funkcja zwraca stan błędu {{Code|(błąd)}}. * {{Code|i}} - numer zmiennej nazwy przestrzeni nazw. Funkcja wykorzystuje {{Code|{{sr|#p.Nazwa_przestrzeni_nazw_przedmiotowa_dyskusji_2(frame,...)|p=Pudełko/Pomocne}}}} do wyznaczania ogólnego nazwy przestrzeni nazw dla pozycji bazowej i numerkowej, tzn. dla pozycji: jeden, dwa, trzy,..., itd, i ich ogólnej. Parametr ramki tablicy transportu rodzica szablonu: * {{Code|nazwa przestrzeni nazw}}, {{Code|nazwa przestrzeni nazw 1}}, {{Code|nazwa przestrzeni nazw 2}}, {{Code|nazwa przestrzeni nazw 3}},..., {{Code|nazwa przestrzeni nazw i}} - nazwy przestrzeni nazw dla pozycji bazowej oraz zwykłej i ogólnej numerkowej, * {{Code|nazwa jednostki}}, {{Code|nazwa jednostki 1}}, {{Code|nazwa jednostki 2}}, {{Code|nazwa jednostki 3}},... - nazwy jednostek dla pozycji bazowej i numerkowej, * {{Code|typ jednostki}}, {{Code|typ jednostki 1}}, {{Code|typ jednostki 2}}, {{Code|typ jednostki 3}},..., {{Code|typ jednostki i}} - typy jednostek, którym odpowiadają pewne przestrzenie przedmiotowe, dla pozycji bazowej, numerkowej i ogólnej. Parametry ramki tablicy transportu dziecka: * Parametry dziecka są takie same jak rodzica dla funkcji pudełkowej plus tu wymienione, * {{Code|numer jednostki}} - jak parametr {{Code|i}} nie został ustawiony, to wtedy liczy się ta zmienna. Przykłady: <syntaxhighlight lang="mediawiki"> {{Nazwa szablonu|nazwa przestrzeni nazw=Wikibooks|nazwa przestrzeni nazw 1=Szablon|nazwa przestrzeni nazw i=|nazwa jednostki 2=Dyskusja Wikibooks:Strona}} </syntaxhighlight> W dziecku powiedzmy jest wywołanie, i szukamy nazwy przestrzeni nazw o numerze dwa, która została podana, ale istnieje za to jej wersji ogólna {{Code|nazwa przestrzeni nazw i}} i domyślna {{Code|nazwa przestrzeni nazw}}, ale wtedy dla tego numerkowego liczy się to ogólne z {{Code| i}}, a ponieważ ta nazwa jest pusta, więc będziemy liczyli nazwę przestrzeni nazw z {{Code|nazwa jednostki 2}}: <syntaxhighlight lang="mediawiki"> {{#invoke:Pudełko|Nazwa przedmiotowej przestrzeni nazw 2|numer jednostki=2}} </syntaxhighlight> Na podstawie powyższego przykładu otrzymamy wynik o schemacie, nie wyniku, bo tam nie ma zmiennej {{Code|nazwa przestrzeni nazw 1}}, ale jest {{Code|nazwa przestrzeni nazw i}}: <syntaxhighlight lang="mediawiki"> <!-- Ale nie "nazwa przestrzeni nazw 2", bo jej nie ma, ale za to istnieje "nazwa przestrzeni nazw i"; --> <!-- nazwa przestrzeni nazw 2=nazwa przestrzeni nazw i="", a nazwa jednostki 2="Dyskusja Wikibooks:Strona"; --> <!-- Czyli wynik: --> Wikibooks <!-- Widzimy, że wygenerowała się nazwa przestrzeni nazw, którą jest przestrzeń nieprogramowa, ale projektu, wychodząca z nazwy jednostek w tym przypadku z "nazwa jednostki 2"; --> </syntaxhighlight> Nie jest brana w tym powyższym przykładzie zmienna {{Code|nazwa przestrzeni nazw}}, bo jej nie ma, ale za to jest {{Code|nazwa przestrzeni nazw i}}, bo ona występuje jako parametr domyślny ogólny dla parametrów numerkowych. Tytaj jest używana jest zmienna {{Code|nazwa jednostki 2}} do wygenerowania ostatecznego wyniku, bo jak można zauważyć, parametry przestrzenne wskazują na przestrzeń główną, a nazwy jednostek już nie. Przykłady w wikikodzie: * {{Code|{{m|Pudełko|Nazwa przedmiotowej przestrzeni nazw 2|numer jednostki{{=}}2}}}} → {{Tt|{{#invoke:Pudełko|Nazwa przedmiotowej przestrzeni nazw 2|numer jednostki=2}}}} * {{Code|{{m|Pudełko|Nazwa przedmiotowej przestrzeni nazw 2|Dyskusja szablonu|nazwa przestrzeni nazw i{{=}}Moja przestrzeń|numer jednostki{{=}}2}}}} → {{Tt|{{#invoke:Pudełko|Nazwa przedmiotowej przestrzeni nazw 2|Dyskusja szablonu|nazwa przestrzeni nazw i=Moja przestrzeń|numer jednostki=2}}}} * {{Code|{{m|Pudełko|Nazwa przedmiotowej przestrzeni nazw 2|nazwa przestrzeni nazw 2{{=}}Dyskusja|nazwa jednostki 2{{=}}Dyskusja szablonu:Strona|numer jednostki{{=}}2}}}} → {{Tt|{{#invoke:Pudełko|Nazwa przedmiotowej przestrzeni nazw 2|nazwa przestrzeni nazw 2=Dyskusja|nazwa jednostki 2=Dyskusja szablonu:Strona|numer jednostki=2}}}} * {{Code|{{m|Pudełko|Nazwa przedmiotowej przestrzeni nazw 2|nazwa przestrzeni nazw i{{=}}Dyskusja|nazwa jednostki 2{{=}}Dyskusja szablonu:Strona|numer jednostki{{=}}2}}}} → {{Tt|{{#invoke:Pudełko|Nazwa przedmiotowej przestrzeni nazw 2|nazwa przestrzeni nazw i=Dyskusja|nazwa jednostki 2=Dyskusja szablonu:Strona|numer jednostki=2}}}} * {{Code|{{m|Pudełko|Nazwa przedmiotowej przestrzeni nazw 2|Dyskusja szablonu|nazwa przestrzeni nazw{{=}}Dyskusja|nazwa jednostki 2{{=}}Wikibooks:Strona|numer jednostki{{=}}2}}}} → {{Tt|{{#invoke:Pudełko|Nazwa przedmiotowej przestrzeni nazw 2|Dyskusja szablonu|nazwa przestrzeni nazw=Dyskusja|nazwa jednostki 2=Dyskusja Wikibooks:Strona|numer jednostki=2}}}} Powyżej dla przykładu podano parametry nie w rodzicu w szablonie, tylko w dziecku, jeśli chodzi o parametry nazw przestrzeni nazw i nazw jednostek, ale ich się za to nie powinno podawać w tych ramach, tylko w szablonach, w których wywoływane są te ramki pudełek {{Code|{{m|Pudełko}}}}, ale tak tutaj tak zrobiono by było najłatwiej sprawdzić działanie tego typu funkcji. Analogicznie możemy podawać parametry typu jednostki, np.: wywołaniu modułowym {{Code|{{m|Pudełko|Nazwa przedmiotowej przestrzeni nazw 2|typ jednostki 2{{=}}Podręcznik|nazwa jednostki 2{{=}}Dyskusja szablonu:Strona|numer jednostki{{=}}2}}}} (ale wtedy jest brana przestrzeń nazw z nazwy jednostki), ale o tym więcej w rozdziałach {{Code|{{sr|# p["Przedmiotowy typ jednostki 2"](frame,i)|p=Pudełko}}}} w „{{sr|#Funkcje typu jednostki|p=Pudełko}}”, on definiuje przestrzenie przedmiotowe, ale można użyć parametru dyskusji typu jednostki z wartością niepustą, pustą, czy nawet jej nie podamy, wtedy wyświetli się nazwa przestrzeni nazw przedmiotowej. Jeżeli typ jednostki wskazuje na przestrzeń nazw główną, wtedy się liczą parametry nazw jednostek. Również parametry typu jednostki nie powinno się podawać w dziecku w ramce, tylko w rodzicu w szablonie jako parametry, w którym ta ramka jest wywoływana, ale tutaj podano jedynie dla przykładu, jak najłatwiej sprawdzić działanie tych parametrów tej funkcji. Najpierw w funkcji nagłówku brane są parametry nazw przestrzeni nazw, a jeżeli ich nie ma, to parametry typu jednostki, a jeżeli nie ma lub parametry przestrzenne wskazują na przestrzeń główną, i nie ma nazwy jednostki, to generowane są nazwy tej funkcji na podstawie aktualnej strony. === {{Code|p["Nazwa przestrzeni nazw dyskusji 2"](frame,...)}} === Funkcja pisze nazwę przestrzeni nazw dyskusji jakikolwiek nazwy przestrzeni nazw (tzn. nazwę dyskusji nazwy przestrzenie nazw, czyli nie przedmiotowej, zamieniana jest na nią samą, czyli identyfikator przestrzeni się nie zmienia, a przedmiotową, nie dyskusji, przekształca się na dyskusji jej odpowiadającą, czyli w tym przypadku identyfikator przestrzeni zwiększa się o numer więcej), według, i nie zawsze tylko, podanej w zmiennej {{Code|nazwa przestrzeni nazw}} dla pozycja bazowej w podanych parametrach szablonu rodzicu ramki dziecka, lub dla innej pozycji należy parametr podawać w formie {{Code|nazwa przestrzeni nazw 1}}, {{Code|nazwa przestrzeni nazw 2}}, {{Code|nazwa przestrzeni nazw 3}},..., lub te parametry można podać w postaci ogólnej {{Code|nazwa przestrzeni nazw i}}. W tej funkcji trzeba też podawać parametry nazwy jednostek {{Code|nazwa jednostki}}, {{Code|nazwa jednostki 1}}, {{Code|nazwa jednostki 2}}, {{Code|nazwa jednostki 3}},... Parametry podaje się w parametrach rodzica wywołania tej funkcji {{Code|{{m|Pudełko|Nazwa przestrzeni nazw dyskusji 2}}}} (ale ich nie trzeba podawać w dziecku, ale można) i w parametrach dziecka, jeśli chodzi o zmienną {{Code|numer jednostki}}, czyli np.: {{Code|{{m|Pudełko|Nazwa przestrzeni nazw dyskusji 2|numer jednostki{{=}}<jakaś liczba całkowita dodatnia>}}}}. Te parametry przestrzenne zamiast w rodzicu w szablonie można podać w ramce dziecka, wtedy parametry dziecka mają pierwszeństwo. Przestrzeń nazw z parametrów nazw przestrzennych po przekształceniu na przedmiotową może odpowiadać wartości przestrzeni głównej, to wtedy odpowiednia przestrzeń nazw z parametru nazwy jednostki się liczy w tej funkcji, wtedy jest liczona nazwa przestrzeni nazw z tego parametru. Gdy parametry przestrzenne lub typ jednostki w drugim podejściu nie wskazują na przestrzeń główną, to wtedy działanie tej funkcji jest podobne do {{Code|{{sr|#p["Nazwa dyskusji przestrzeni nazw"](frame,...)|p=Pudełko}}}}. Definicja skrótowa funkcji: <syntaxhighlight lang="lua"> p["Nazwa przestrzeni nazw dyskusji 2"]=function(frame,czy_uwzglednic_alternatywna_nazwe,i)...end; </syntaxhighlight> Wtedy ciało funkcji tej, czyli jego definicja w środku, jest: <syntaxhighlight lang="lua"> local pudelko_pomocne_modul=require("Module:Pudełko/Pomocne"); return pudelko_pomocne_modul.Nazwa_przestrzeni_nazw_przedmiotowa_dyskusji_2(frame,czy_uwzglednic_alternatywna_nazwe,i,"dyskusja"); </syntaxhighlight> Parametry funkcji: * {{Code|frame}} - tablica ramki tablicy transportu, * {{Code|czy_uwzglednic_alternatywna_nazwe}} - czy ma uwzględniać nazwę przestrzeni nazw domyślną szablonu, dostępne wartości: {{Code|false}}, w której nazwa domyślna nie jest uwzględniana wtedy, oraz {{Code|nil}} i {{Code|true}}, które oznaczają to samo, w tym jeżeli ona jest uwzględniana, wtedy jest brany parametr pierwszy dziecka, który musi istnieć przy takiej wartości tego parametru, tzn. {{Code|{{m|Pudełko|Nazwa przestrzeni nazw dyskusji 2|Szablon}}}}, a nazwa uzyskana nazwy przestrzeni nazw jest w takim przypadku błędna, a jeżeli nazwa domyślna jest błędna, czyli {{Code|{{m|Pudełko|Nazwa przestrzeni nazw dyskusji 2|Moja przestrzeń}}}}, wtedy funkcja zwraca stan błędu {{Code|(błąd)}}. * {{Code|i}} - numer zmiennej nazwy przestrzeni nazw. Funkcja wykorzystuje {{Code|{{sr|#p.Nazwa_przestrzeni_nazw_przedmiotowa_dyskusji_2(frame,...)|p=Pudełko/Pomocne}}}} do wyznaczania ogólnego nazwy przestrzeni nazw dla pozycji bazowej i numerkowej, tzn. dla pozycji: jeden, dwa, trzy,..., itd, i ich ogólnej. Parametr ramki tablicy transportu rodzica szablonu: * {{Code|nazwa przestrzeni nazw}}, {{Code|nazwa przestrzeni nazw 1}}, {{Code|nazwa przestrzeni nazw 2}}, {{Code|nazwa przestrzeni nazw 3}},..., {{Code|nazwa przestrzeni nazw i}} - nazwy przestrzeni nazw dla pozycji bazowej oraz zwykłej i ogólnej numerkowej, * {{Code|nazwa jednostki}}, {{Code|nazwa jednostki 1}}, {{Code|nazwa jednostki 2}}, {{Code|nazwa jednostki 3}},... - nazwy jednostek dla pozycji bazowej i numerkowej, * {{Code|typ jednostki}}, {{Code|typ jednostki 1}}, {{Code|typ jednostki 2}}, {{Code|typ jednostki 3}},..., {{Code|typ jednostki i}} - typy jednostek, którym odpowiadają pewne przestrzenie przedmiotowe, dla pozycji bazowej, numerkowej i ogólnej. Parametry ramki tablicy transportu dziecka: * Parametry dziecka są takie same jak rodzica dla funkcji pudełkowej plus tu wymienione, * {{Code|numer jednostki}} - jak parametr {{Code|i}} nie został ustawiony, to wtedy liczy się ta zmienna. Przykłady: <syntaxhighlight lang="mediawiki"> {{Nazwa szablonu|nazwa przestrzeni nazw=Wikibooks|nazwa przestrzeni nazw 1=Szablon|nazwa przestrzeni nazw i=|nazwa jednostki 2=Wikibooks:Strona}} </syntaxhighlight> W dziecku powiedzmy jest wywołanie, i szukamy nazwy przestrzeni nazw o numerze dwa, która została podana, ale istnieje za to jej wersji ogólna {{Code|nazwa przestrzeni nazw i}} i domyślna {{Code|nazwa przestrzeni nazw}}, ale wtedy dla tego numerkowego liczy się to ogólne z {{Code| i}}, a ponieważ ta nazwa jest pusta, więc będziemy liczyli nazwę przestrzeni nazw z {{Code|nazwa jednostki 2}}: <syntaxhighlight lang="mediawiki"> {{#invoke:Pudełko|Nazwa przestrzeni nazw dyskusji 2|numer jednostki=2}} </syntaxhighlight> Na podstawie powyższego przykładu otrzymamy wynik o schemacie, nie wyniku, bo tam nie ma zmiennej {{Code|nazwa przestrzeni nazw 1}}, ale jest {{Code|nazwa przestrzeni nazw i}}: <syntaxhighlight lang="mediawiki"> <!-- Ale nie "nazwa przestrzeni nazw 2", bo jej nie ma, ale za to istnieje "nazwa przestrzeni nazw i"; --> <!-- nazwa przestrzeni nazw 2=nazwa przestrzeni nazw i="", a nazwa jednostki 2="Wikibooks:Strona"; --> <!-- Czyli wynik: --> Dyskusja Wikibooks <!-- Widzimy, że wygenerowała się nazwa przestrzeni nazw, którą jest przestrzeń nieprogramowa, ale dyskusji projektu, wychodząca z nazwy jednostek w tym przypadku z "nazwa jednostki 2"; --> </syntaxhighlight> Nie jest brana w tym powyższym przykładzie zmienna {{Code|nazwa przestrzeni nazw}}, bo jej nie ma, ale za to jest {{Code|nazwa przestrzeni nazw i}}, bo ona występuje jako parametr domyślny ogólny dla parametrów numerkowych. Tytaj jest używana jest zmienna {{Code|nazwa jednostki 2}} do wygenerowania ostatecznego wyniku, bo jak można zauważyć, parametry przestrzenne wskazują na przestrzeń główną, a nazwy jednostek już nie. Przykłady w wikikodzie: * {{Code|{{m|Pudełko|Nazwa przestrzeni nazw dyskusji 2|numer jednostki{{=}}2}}}} → {{Tt|{{#invoke:Pudełko|Nazwa przestrzeni nazw dyskusji 2|numer jednostki=2}}}} * {{Code|{{m|Pudełko|Nazwa przestrzeni nazw dyskusji 2|Szablon|nazwa przestrzeni nazw i{{=}}Moja przestrzeń|numer jednostki{{=}}2}}}} → {{Tt|{{#invoke:Pudełko|Nazwa przestrzeni nazw dyskusji 2|Szablon|nazwa przestrzeni nazw i=Moja przestrzeń|numer jednostki=2}}}} * {{Code|{{m|Pudełko|Nazwa przestrzeni nazw dyskusji 2|nazwa przestrzeni nazw 2{{=}}|nazwa jednostki 2{{=}}Szablon:Strona|numer jednostki{{=}}2}}}} → {{Tt|{{#invoke:Pudełko|Nazwa przestrzeni nazw dyskusji 2|nazwa przestrzeni nazw 2=|nazwa jednostki 2=Szablon:Strona|numer jednostki=2}}}} * {{Code|{{m|Pudełko|Nazwa przestrzeni nazw dyskusji 2|nazwa przestrzeni nazw i{{=}}|nazwa jednostki 2{{=}}Szablon:Strona|numer jednostki{{=}}2}}}} → {{Tt|{{#invoke:Pudełko|Nazwa przestrzeni nazw dyskusji 2|nazwa przestrzeni nazw i=|nazwa jednostki 2=Szablon:Strona|numer jednostki=2}}}} * {{Code|{{m|Pudełko|Nazwa przestrzeni nazw dyskusji 2|Szablon|nazwa przestrzeni nazw{{=}}|nazwa jednostki 2{{=}}Wikibooks:Strona|numer jednostki{{=}}2}}}} → {{Tt|{{#invoke:Pudełko|Nazwa przestrzeni nazw dyskusji 2|Szablon|nazwa przestrzeni nazw=|nazwa jednostki 2=Dyskusja Wikibooks:Strona|numer jednostki=2}}}} Powyżej dla przykładu podano parametry nie w rodzicu w szablonie, tylko w dziecku, jeśli chodzi o parametry nazw przestrzeni nazw i nazw jednostek, ale ich się za to nie powinno podawać w tych ramach, tylko w szablonach, w których wywoływane są te ramki pudełek {{Code|{{m|Pudełko}}}}, ale tak tutaj tak zrobiono by było najłatwiej sprawdzić działanie tego typu funkcji. Analogicznie możemy podawać parametry typu jednostki, np.: wywołaniu modułowym {{Code|{{m|Pudełko|Nazwa przestrzeni nazw dyskusji 2|typ jednostki 2{{=}}Podręcznik|nazwa jednostki 2{{=}}Szablon:Strona|numer jednostki{{=}}2}}}} (ale wtedy jest brana przestrzeń nazw z nazwy jednostki), ale o tym więcej w rozdziałach {{Code|{{sr|# p["Dyskusyjny typ jednostki 2"](frame,i)|p=Pudełko}}}} w „{{sr|#Funkcje typu jednostki|p=Pudełko}}”, one definiują przestrzenie dyskusji, ale można użyć parametru dyskusji typu jednostki z obojętnie jaką wartością niepustą, czy pustą, czy nawet jej nie podamy, wtedy wyświetli się nazwa przestrzeni nazw dyskusji. Jeżeli typ jednostki wskazuje na przestrzeń nazw główną, wtedy się liczą parametry nazw jednostek. Również parametry typu jednostki nie powinno się podawać w dziecku w ramce, tylko w rodzicu w szablonie jako parametry, w którym ta ramka jest wywoływana, ale tutaj podano jedynie dla przykładu, jak najłatwiej sprawdzić działanie tych parametrów tej funkcji. Najpierw w funkcji nagłówku brane są parametry nazw przestrzeni nazw, a jeżeli ich nie ma, to parametry typu jednostki, a jeżeli nie ma lub parametry przestrzenne wskazują na przestrzeń główną, i nie ma nazwy jednostki, to generowane są nazwy tej funkcji na podstawie aktualnej strony. == Funkcje pełnych nazw jednostki == === {{Code|p["Pełna nazwa dyskusji jednostki"](frame,i)}} === === {{Code|p["Pełna nazwa przedmiotowa jednostki"](frame,i)}} === === {{Code|p["Pełna nazwa jednostki"](frame,i)}} === == Funkcje pełnych nazw jednostki drugiej wersji == === {{Code|p["Pełna nazwa dyskusji jednostki 2"](frame,i)}} === === {{Code|p["Pełna nazwa przedmiotowa jednostki 2"](frame,i)}} === === {{Code|p["Pełna nazwa jednostki 2"](frame,i)}} === == Funkcje pełnych nazw jednostki trzeciej wersji == === {{Code|p["Pełna nazwa dyskusji jednostki 3"](frame,i)}} === === {{Code|p["Pełna nazwa przedmiotowa jednostki 3"](frame,i)}} === === {{Code|p["Pełna nazwa jednostki 3"](frame,i)}} === == Funkcje nazw jednostki == === {{Code|p["Nazwa jednostki"](frame,i)}} === == Funkcje nazw jednostki drugiej wersji == === {{Code|p["Nazwa jednostki 2"](frame,i)}} === === {{Code|p["Nazwa przedmiotowa jednostki 2"](frame,i)}} === === {{Code|p["Nazwa dyskusji jednostki 2"](frame,i)}} === == Funkcje nazw przestrzeni nazw trzeciej wersji == === {{Code|p["Nazwa przestrzeni nazw 3"](frame,i)}} === Funkcja pisze nazwę przestrzeni nazw, niezależnie, czy to jest przedmiotowa, czy dyskusji, według, i nie zawsze tylko, podanej w zmiennej {{Code|nazwa przestrzeni nazw}} dla pozycja bazowej w podanych parametrach szablonu rodzicu ramki dziecka, lub dla innej pozycji należy parametr podawać w formie {{Code|nazwa przestrzeni nazw 1}}, {{Code|Nazwa przestrzeni nazw 3}}, {{Code|nazwa przestrzeni nazw 3}},..., lub te parametry można podać w postaci ogólnej {{Code|nazwa przestrzeni nazw i}}. W tej funkcji trzeba też podawać parametry nazwy jednostek {{Code|nazwa jednostki}}, {{Code|nazwa jednostki 1}}, {{Code|nazwa jednostki 2}}, {{Code|nazwa jednostki 3}},... Parametry podaje się w parametrach rodzica wywołania tej funkcji {{Code|{{m|Pudełko|Nazwa przestrzeni nazw 3}}}} (ale ich nie trzeba podawać w dziecku, ale można) i w parametrach dziecka, jeśli chodzi o zmienną {{Code|numer jednostki}}, czyli np.: {{Code|{{m|Pudełko|Nazwa przestrzeni nazw 3|numer jednostki{{=}}<jakaś liczba całkowita dodatnia>}}}}. Te parametry przestrzenne zamiast w rodzicu w szablonie można podać w ramce dziecka, wtedy parametry dziecka mają pierwszeństwo. Przestrzeń nazw z parametrów nazw przestrzennych bazowych (bez numerka) może odpowiadać wartości przestrzeni głównej, to wtedy odpowiednia przestrzeń nazw z parametru nazwy jednostki się nie liczy w tej funkcji, aby się liczyła należy użyć funkcji {{Code|{{sr|#p["Nazwa przestrzeni nazw"](frame,...)|p=Pudełko}}}}. Przestrzeń nazw z parametrów nazw przestrzennych numerkowych może odpowiadać wartości przestrzeni głównej, to wtedy odpowiednia przestrzeń nazw z parametru nazwy jednostki się liczy w tej funkcji, wtedy jest liczona nazwa przestrzeni nazw z tego parametru. Gdy parametry przestrzenne lub typ jednostki w drugim podejściu nie wskazują na przestrzeń główną, to wtedy działanie tej funkcji jest podobne do {{Code|{{sr|#p["Nazwa przestrzeni nazw 2"](frame,...)|p=Pudełko}}}}. Definicja skrótowa funkcji: <syntaxhighlight lang="lua"> p["Nazwa przestrzeni nazw 3"]=function(frame,czy_uwzglednic_alternatywna_nazwe,i)...end; </syntaxhighlight> Wtedy ciało funkcji tej, czyli jego definicja w środku, jest: <syntaxhighlight lang="lua"> -- Jest liczony numer parametru nazwy przestrzeni nazw, domyslnie chodzi tu o numer bazowy parametrów przestrzennych; local numer_jednostki=i or frame.args["numer jednostki"]; local liczba_numeru_jednostki=((numer_jednostki)and(tonumber(numer_jednostki)) or 0); local pudelko_pomocne_modul=require("Module:Pudełko/Pomocne"); -- Liczy nazwę przestrzeni nazw dyskusji na podstawie podanych parametrów; return pudelko_pomocne_modul.Uzyskanie_nazw_jednostki(frame,0,liczba_numeru_jednostki,nil,2); </syntaxhighlight> Parametry funkcji: * {{Code|frame}} - tablica ramki tablicy transportu, * {{Code|czy_uwzglednic_alternatywna_nazwe}} - czy ma uwzględniać nazwę przestrzeni nazw domyślną szablonu, dostępne wartości: {{Code|false}}, w której nazwa domyślna nie jest uwzględniana wtedy, oraz {{Code|nil}} i {{Code|true}}, które oznaczają to samo, w tym jeżeli ona jest uwzględniana, wtedy jest brany parametr pierwszy dziecka, który musi istnieć przy takiej wartości tego parametru, tzn. {{Code|{{m|Pudełko|Nazwa przestrzeni nazw 3|Szablon}}}}, a nazwa uzyskana nazwy przestrzeni nazw jest w takim przypadku błędna, a jeżeli nazwa domyślna jest błędna, czyli {{Code|{{m|Pudełko|Nazwa przestrzeni nazw 3|Moja przestrzeń}}}}, wtedy funkcja zwraca stan błędu {{Code|(błąd)}}. * {{Code|i}} - numer zmiennej nazwy przestrzeni nazw. Funkcja wykorzystuje {{Code|{{sr|#p.Uzyskanie_nazw_jednostki(frame,...)|p=Pudełko/Pomocne}}}} do wyznaczania ogólnego nazwy przestrzeni nazw dla pozycji bazowej i numerkowej, tzn. dla pozycji: jeden, dwa, trzy,..., itd, i ich ogólnej. Parametr ramki tablicy transportu rodzica szablonu: * {{Code|nazwa przestrzeni nazw}}, {{Code|nazwa przestrzeni nazw 1}}, {{Code|Nazwa przestrzeni nazw 3}}, {{Code|nazwa przestrzeni nazw 3}},..., {{Code|nazwa przestrzeni nazw i}} - nazwy przestrzeni nazw dla pozycji bazowej oraz zwykłej i ogólnej numerkowej, * {{Code|nazwa jednostki}}, {{Code|nazwa jednostki 1}}, {{Code|nazwa jednostki 2}}, {{Code|nazwa jednostki 3}},... - nazwy jednostek dla pozycji bazowej i numerkowej, * {{Code|typ jednostki}}, {{Code|typ jednostki 1}}, {{Code|typ jednostki 2}}, {{Code|typ jednostki 3}},..., {{Code|typ jednostki i}} - typy jednostek, którym odpowiadają pewne przestrzenie przedmiotowe, dla pozycji bazowej, numerkowej i ogólnej, ** {{Code|dyskusja typu jednostki}}, {{Code|dyskusja typu jednostki 1}}, {{Code|dyskusja typ jednostki 2}}, {{Code|dyskusja typ jednostki 3}},..., {{Code|dyskusja typ jednostki i}} - czy dany typ jednostki ma przedstawiać, jeśli niepusta, przestrzeń dyskusji dla pozycji bazowej, numerkowej i ogólnej. Parametry ramki tablicy transportu dziecka: * Parametry dziecka są takie same jak rodzica dla funkcji pudełkowej plus tu wymienione, * {{Code|numer jednostki}} - jak parametr {{Code|i}} nie został ustawiony, to wtedy liczy się ta zmienna. Przykłady: <syntaxhighlight lang="mediawiki"> {{Nazwa szablonu 1|nazwa przestrzeni nazw=Wikibooks|nazwa przestrzeni nazw=|nazwa przestrzeni nazw i=|nazwa jednostki=Szablon:Strona|nazwa jednostki 2=Wikibooks:Strona}} ---- {{Nazwa szablonu 2|nazwa przestrzeni nazw=Wikibooks|nazwa przestrzeni nazw 1=Szablon|nazwa przestrzeni nazw i=|nazwa jednostki 2=Wikibooks:Strona}} </syntaxhighlight> W dziecku powiedzmy jest wywołanie, i szukamy nazwy przestrzeni nazw o numerze dwa, która została podana, ale istnieje za to jej wersji ogólna {{Code|nazwa przestrzeni nazw i}} i domyślna {{Code|nazwa przestrzeni nazw}}, ale wtedy dla tego numerkowego liczy się to ogólne z {{Code| i}}, a ponieważ ta nazwa jest pusta, więc będziemy liczyli nazwę przestrzeni nazw z {{Code|nazwa jednostki 2}}: <syntaxhighlight lang="mediawiki"> {{#invoke:Pudełko|Nazwa przestrzeni nazw 3}} ---- {{#invoke:Pudełko|Nazwa przestrzeni nazw 3|numer jednostki=2}} </syntaxhighlight> Na podstawie powyższego przykładu otrzymamy wynik o schemacie, nie wyniku, bo tam nie ma zmiennej {{Code|nazwa przestrzeni nazw 1}}, ale jest {{Code|nazwa przestrzeni nazw i}}: <syntaxhighlight lang="mediawiki"> <!-- Ale nie "nazwa przestrzeni nazw""; --> <!-- nazwa przestrzeni nazw=""; --> <!-- Czyli wynik: --> <!-- wynik pusty --> <!-- Widzimy, że wygenerowała się nazwa przestrzeni nazw, którą jest przestrzeń nazw główna, jest ciągiem pustym: ""; --> ---- <!-- Ale nie "Nazwa przestrzeni nazw 2", bo jej nie ma, ale za to istnieje "nazwa przestrzeni nazw i"; --> <!-- nazwa przestrzeni nazw 2=nazwa przestrzeni nazw i="", a nazwa jednostki 2="Wikibooks:Strona"; --> <!-- Czyli wynik: --> Wikibooks <!-- Widzimy, że wygenerowała się nazwa przestrzeni nazw, którą jest przestrzeń nieprogramowa, ale projektu, wychodząca z nazwy jednostek w tym przypadku z "nazwa jednostki 2"; --> </syntaxhighlight> Dla parametrów numerkowych nie jest brana w tym powyższym przykładzie zmienna {{Code|nazwa przestrzeni nazw 2}}, bo jej nie ma, ale za to jest {{Code|nazwa przestrzeni nazw i}}, bo ona występuje jako parametr domyślny ogólny dla parametrów numerkowych. Tytaj jest używana jest zmienna {{Code|nazwa jednostki 2}} do wygenerowania ostatecznego wyniku, bo jak można zauważyć, parametry przestrzenne wskazują na przestrzeń główną, a nazwy jednostek już nie. Dla parametrów bazowych mamy zmienną {{Code|nazwa przestrzeni nazw}}, ona jest pusta, więc to zostanie wziete do ostatecznego wyniku. Przykłady w wikikodzie: * {{Code|{{m|Pudełko|Nazwa przestrzeni nazw 3|nazwa przestrzeni nazw{{=}}|nazwa jednostki{{=}}Wikibooks:Strona}}}} → {{Tt|{{#invoke:Pudełko|Nazwa przestrzeni nazw 3|nazwa przestrzeni nazw=|nazwa jednostki=Wikibooks:Szablon}}}} * {{Code|{{m|Pudełko|Nazwa przestrzeni nazw 3|nazwa przestrzeni nazw 2{{=}}|nazwa jednostki 2{{=}}Wikibooks:Strona|numer jednostki{{=}}2}}}} → {{Tt|{{#invoke:Pudełko|Nazwa przestrzeni nazw 3|nazwa przestrzeni nazw 2=|nazwa jednostki 2=Wikibooks:Szablon|numer jednostki=2}}}} Powyżej dla przykładu podano parametry nie w rodzicu w szablonie, tylko w dziecku, jeśli chodzi o parametry nazw przestrzeni nazw i nazw jednostek, ale ich się za to nie powinno podawać w tych ramach, tylko w szablonach, w których wywoływane są te ramki pudełek {{Code|{{m|Pudełko}}}}, ale tak tutaj tak zrobiono by było najłatwiej sprawdzić działanie tego typu funkcji. Analogicznie możemy podawać parametry typu jednostki, np.: wywołaniu modułowym {{Code|{{m|Pudełko|Nazwa przestrzeni nazw 3|typ jednostki 2{{=}}Podręcznik|nazwa jednostki 2{{=}}Szablon:Strona|numer jednostki{{=}}2}}}} (ale wtedy jest brana przestrzeń nazw z nazwy jednostki), ale o tym więcej w rozdziałach {{Code|{{sr|#p["Typ jednostki 3"](frame,i)|p=Pudełko}}}} w „{{sr|#Funkcje typu jednostki|p=Pudełko}}”, on definiuje przestrzenie przedmiotowe, ale można użyć parametru dyskusji typu jednostki z wartością niepustą, wtedy wyświetli się nazwa przestrzeni nazw dyskusji. Jeżeli typ jednostki bazowy wskazuje na przestrzeń nazw główną, wtedy się nie liczą parametry nazw jednostek, a na numerkowy, wtedy się liczy. Również parametry typu jednostki nie powinno się podawać w dziecku w ramce, tylko w rodzicu w szablonie jako parametry, w którym ta ramka jest wywoływana, ale tutaj podano jedynie dla przykładu, jak najłatwiej sprawdzić działanie tych parametrów tej funkcji. Najpierw w funkcji nagłówku brane są parametry nazw przestrzeni nazw, a jeżeli ich nie ma, to parametry typu jednostki, a jeżeli nie ma lub parametry przestrzenne wskazują na przestrzeń główną, i nie ma nazwy jednostki, to generowane są nazwy tej funkcji na podstawie aktualnej strony. === {{Code|p["Nazwa przedmiotowej przestrzeni nazw 3"](frame,i)}} === Funkcja pisze przedmiotową nazwę przestrzeni nazw jakikolwiek nazwy przestrzeni nazw (tzn. nazwę przedmiotową nazwy przestrzenie nazw, czyli nie dyskusji, zamieniana jest na nią samą, czyli identyfikator przestrzeni się nie zmienia, a dyskusji, nie przedmiotową, przekształca się na przedmiotową jej odpowiadającą, czyli w tym przypadku identyfikator przestrzeni zmniejsza się o numer mniej), według podanej w zmiennej {{Code|nazwa przestrzeni nazw}} dla pozycja bazowej w podanych parametrach szablonu rodzicu ramki dziecka, lub dla innej pozycji należy parametr podawać w formie {{Code|nazwa przestrzeni nazw 1}}, {{Code|nazwa przestrzeni nazw 2}}, {{Code|nazwa przestrzeni nazw 3}},..., lub te parametry można podać w postaci ogólnej {{Code|nazwa przestrzeni nazw i}}. Parametry podaje się w parametrach rodzica wywołania tej funkcji {{Code|{{m|Pudełko|Nazwa przedmiotowej przestrzeni nazw 3}}}} (ale ich nie trzeba podawać w dziecku, ale można) i w parametrach dziecka, jeśli chodzi o zmienną {{Code|numer jednostki}}, czyli np.: {{Code|{{m|Pudełko|Nazwa przedmiotowej przestrzeni nazw 3|numer jednostki{{=}}<jakaś liczba całkowita dodatnia>}}}}. Te parametry przestrzenne zamiast w rodzicu w szablonie można podać w ramce dziecka, wtedy parametry dziecka mają pierwszeństwo. Parametry przestrzenne mogą mogą być podane w postaci przestrzeni przedmiotowej lub dyskusji, ale ta funkcja zawsze ją zamienia na przedmiotową. Przestrzeń nazw z parametrów nazw przestrzennych bazowych (bez numerka) może odpowiadać wartości przestrzeni głównej, to wtedy odpowiednia przestrzeń nazw z parametru nazwy jednostki się nie liczy w tej funkcji, aby się liczyła należy użyć funkcji {{Code|{{sr|#p["Nazwa przedmiotowej przestrzeni nazw"](frame,...)|p=Pudełko}}}}. Przestrzeń nazw z parametrów nazw przestrzennych numerkowych może odpowiadać wartości przestrzeni głównej, to wtedy odpowiednia przestrzeń nazw z parametru nazwy jednostki się liczy w tej funkcji, wtedy jest liczona nazwa przestrzeni nazw z tego parametru. Gdy parametry przestrzenne lub typ jednostki w drugim podejściu nie wskazują na przestrzeń główną, to wtedy działanie tej funkcji jest podobne do {{Code|{{sr|#p["Nazwa przedmiotowej przestrzeni nazw 2"](frame,...)|p=Pudełko}}}}. Definicja skrótowa funkcji: <syntaxhighlight lang="lua"> p["Nazwa przedmiotowej przestrzeni nazw 3"]=function(frame,czy_uwzglednic_alternatywna_nazwe,i)...end; </syntaxhighlight> Wtedy ciało funkcji tej, czyli jego definicja w środku, jest: <syntaxhighlight lang="lua"> -- Jest liczony numer parametru nazwy przestrzeni nazw, domyslnie chodzi tu o numer bazowy parametrów przestrzennych; local numer_jednostki=i or frame.args["numer jednostki"]; local liczba_numeru_jednostki=((numer_jednostki)and(tonumber(numer_jednostki)) or 0); local pudelko_pomocne_modul=require("Module:Pudełko/Pomocne"); -- Liczy nazwę przestrzeni nazw przedmiotową na podstawie podanych parametrów; return pudelko_pomocne_modul.Uzyskanie_nazw_jednostki(frame,1,liczba_numeru_jednostki,nil,1); </syntaxhighlight> Parametry funkcji: * {{Code|frame}} - tablica ramki tablicy transportu, * {{Code|czy_uwzglednic_alternatywna_nazwe}} - czy ma uwzględniać nazwę przestrzeni nazw domyślną szablonu, dostępne wartości: {{Code|false}}, w której nazwa domyślna nie jest uwzględniana wtedy, oraz {{Code|nil}} i {{Code|true}}, które oznaczają to samo, w tym jeżeli ona jest uwzględniana, wtedy jest brany parametr pierwszy dziecka, który musi istnieć przy takiej wartości tego parametru, tzn. {{Code|{{m|Pudełko|Nazwa przedmiotowej przestrzeni nazw 3|Dyskusja szablonu}}}} - ta nazwa domyślna zostanie zamieniona na przedmiotową, a jak ona by była przedmiotowa, to żadnej zamiany by nie było, a nazwa uzyskana z nazwy przestrzeni nazw z parametrów przestrzennych jest w takim przypadku błędna, to w takim razie brany jest ten parametr, a jeżeli ta nazwa domyślna jest błędna, czyli {{Code|{{m|Pudełko|Nazwa przedmiotowej przestrzeni nazw 3|Moja przestrzeń}}}}, wtedy funkcja zwraca stan błędu {{Code|(błąd)}}. * {{Code|i}} - numer zmiennej nazwy przestrzeni nazw. Funkcja wykorzystuje {{Code|{{sr|#p.Uzyskanie_nazw_jednostki(frame,...)|p=Pudełko/Pomocne}}}} do wyznaczania ogólnego nazwy przestrzeni nazw dla pozycji bazowej i numerkowej, tzn. dla pozycji: jeden, dwa, trzy,..., itd, i ich ogólnej. Parametr ramki tablicy transportu rodzica szablonu: * {{Code|nazwa przestrzeni nazw}}, {{Code|nazwa przestrzeni nazw 1}}, {{Code|nazwa przestrzeni nazw 2}}, {{Code|nazwa przestrzeni nazw 3}},..., {{Code|nazwa przestrzeni nazw i}} - nazwy przestrzeni nazw dla pozycji bazowej oraz zwykłej i ogólnej numerkowej, * {{Code|typ jednostki}}, {{Code|typ jednostki 1}}, {{Code|typ jednostki 2}}, {{Code|typ jednostki 3}},..., {{Code|typ jednostki i}} - typy jednostek, którym odpowiadają pewne przestrzenie przedmiotowe, dla pozycji bazowej, numerkowej i ogólnej. Parametry ramki tablicy transportu dziecka: * Parametry dziecka są takie same jak rodzica dla funkcji pudełkowej plus tu wymienione, * {{Code|numer jednostki}} - jak parametr {{Code|i}} nie został ustawiony, to wtedy liczy się ta zmienna. Przykłady: <syntaxhighlight lang="mediawiki"> {{Nazwa szablonu 1|nazwa przestrzeni nazw=Wikibooks|nazwa przestrzeni nazw=|nazwa przestrzeni nazw i=|nazwa jednostki=Dyskusja Wikibooks:Strona|nazwa jednostki 2=Dyskusja Wikibooks:Strona}} ---- {{Nazwa szablonu 2|nazwa przestrzeni nazw=Wikibooks|nazwa przestrzeni nazw 1=Szablon|nazwa przestrzeni nazw i=|nazwa jednostki 2=Dyskusja Wikibooks:Strona}} </syntaxhighlight> Kolejno wywołania te są równowaażne: <syntaxhighlight lang="mediawiki"> {{#invoke:Pudełko|Nazwa przedmiotowej przestrzeni nazw 3}} ---- {{#invoke:Pudełko|Nazwa przedmiotowej przestrzeni nazw 3|numer jednostki=2}} </syntaxhighlight> Na podstawie powyższego przykładu otrzymamy wynik o schemacie, nie wyniku, bo tam nie ma zmiennej {{Code|nazwa przestrzeni nazw 1}}, ale jest {{Code|nazwa przestrzeni nazw i}}: <syntaxhighlight lang="mediawiki"> <!-- Ale nie "nazwa przestrzeni nazw""; --> <!-- nazwa przestrzeni nazw=""; --> <!-- Czyli wynik: --> <!-- wynik pusty --> <!-- Widzimy, że wygenerowała się nazwa przestrzeni nazw, którą jest przestrzeń nazw główna, jest ciągiem pustym: ""; --> ---- <!-- Ale nie "Nazwa przestrzeni nazw 2", bo jej nie ma, ale za to istnieje "nazwa przestrzeni nazw i"; --> <!-- nazwa przestrzeni nazw 2=nazwa przestrzeni nazw i="", a nazwa jednostki 2="Dyskusja Wikibooks:Strona"; --> <!-- Czyli wynik: --> Wikibooks <!-- Widzimy, że wygenerowała się nazwa przestrzeni nazw, którą jest przestrzeń nieprogramowa, ale projektu, wychodząca z nazwy jednostek w tym przypadku z "nazwa jednostki 2"; --> </syntaxhighlight> Dla parametrów numerkowych nie jest brana w tym powyższym przykładzie zmienna {{Code|nazwa przestrzeni nazw 2}}, bo jej nie ma, ale za to jest {{Code|nazwa przestrzeni nazw i}}, bo ona występuje jako parametr domyślny ogólny dla parametrów numerkowych. Tytaj jest używana jest zmienna {{Code|nazwa jednostki 2}} do wygenerowania ostatecznego wyniku, bo jak można zauważyć, parametry przestrzenne wskazują na przestrzeń główną, a nazwy jednostek już nie. Dla parametrów bazowych mamy zmienną {{Code|nazwa przestrzeni nazw}}, ona jest pusta, więc to zostanie wziete do ostatecznego wyniku. Przykłady w wikikodzie: * {{Code|{{m|Pudełko|Nazwa przestrzeni nazw 3|nazwa przestrzeni nazw{{=}}|nazwa jednostki{{=}}Dyskusja Wikibooks:Strona}}}} → {{Tt|{{#invoke:Pudełko|Nazwa przestrzeni nazw 3|nazwa przestrzeni nazw=|nazwa jednostki=Dyskusja Wikibooks:Szablon}}}} * {{Code|{{m|Pudełko|Nazwa przestrzeni nazw 3|nazwa przestrzeni nazw 2{{=}}|nazwa jednostki 2{{=}}Dyskusja Wikibooks:Strona|numer jednostki{{=}}2}}}} → {{Tt|{{#invoke:Pudełko|Nazwa przestrzeni nazw 3|nazwa przestrzeni nazw 2=|nazwa jednostki 2=Dyskusja Wikibooks:Szablon|numer jednostki=2}}}} Powyżej dla przykładu podano parametry nie w rodzicu w szablonie, tylko w dziecku, jeśli chodzi o parametry nazw przestrzeni nazw, ale ich się za to nie powinno podawać w tych ramach, tylko w szablonach, w których wywoływane są te ramki pudełek {{Code|{{m|Pudełko}}}}, ale tak tutaj tak zrobiono by było najłatwiej sprawdzić działanie tego typu funkcji. Analogicznie możemy podawać parametry typu jednostki, np.: wywołaniu modułowym {{Code|{{m|Pudełko|Nazwa przedmiotowej przestrzeni nazw 3|typ jednostki 2{{=}}strona szablonu|numer jednostki{{=}}2}}}}, ale o tym więcej w rozdziałach {{Code|{{sr|# p["Przedmiotowy typ jednostki 3"](frame,i)|p=Pudełko}}}} w „{{sr|#Funkcje typu jednostki|p=Pudełko}}”, ale wtedy ta sama nazwa przestrzeni nazw reprezentowana przez {{Parametr|typ jednostki 2|strona szablonu}}, jest zamieniana na to samo, lepiej jest tutaj używać parametrów przestrzennych nazw niż typu jednostki, bo typ jednostki ma taką samą wartość dla przestrzeni przedmiotowej, co dyskusji. Tutaj parametr dyskusji typu jednostki bazowy i numerkowy ogólny, czy szczegółowy, nie gra roli, bo nawet, gdy wygenerujemy nazwę przestrzeni dyskusji za pomoca tego parametru, to i tak otrzymamy na samym końcu jego nazwę przedmiotową. Jeżeli typ jednostki bazowy wskazuje na przestrzeń nazw główną, wtedy się nie liczą parametry nazw jednostek, a na numerkowy, wtedy się liczy. Również parametry typu jednostki nie powinno się podawać w dziecku w ramce, tylko w rodzicu w szablonie jako parametry, w którym ta ramka jest wywoływana, ale tutaj podano jedynie dla przykładu, jak najłatwiej sprawdzić działanie tych parametrów tej funkcji. Najpierw w funkcji nagłówku brane są parametry nazw przestrzeni nazw, a jeżeli ich nie ma, to parametry typu jednostki, a jeżeli nie ma, to generowane są nazwy na podstawie aktualnego modułu. === {{Code|p["Nazwa przestrzeni nazw dyskusji 3"](frame,i)}} === Funkcja pisze nazwę przestrzeni nazw dyskusji jakikolwiek nazwy przestrzeni nazw (tzn. nazwę dyskusji nazwy przestrzenie nazw, czyli nie przedmiotowej, zamieniana jest na nią samą, czyli identyfikator przestrzeni się nie zmienia, a przedmiotową, nie dyskusji, przekształca się na dyskusji jej odpowiadającą, czyli w tym przypadku identyfikator przestrzeni zwiększa się o numer więcej), według, i nie zawsze tylko, podanej w zmiennej {{Code|nazwa przestrzeni nazw}} dla pozycja bazowej w podanych parametrach szablonu rodzicu ramki dziecka, lub dla innej pozycji należy parametr podawać w formie {{Code|nazwa przestrzeni nazw 1}}, {{Code|nazwa przestrzeni nazw 2}}, {{Code|nazwa przestrzeni nazw 3}},..., lub te parametry można podać w postaci ogólnej {{Code|nazwa przestrzeni nazw i}}. W tej funkcji trzeba też podawać parametry nazwy jednostek {{Code|nazwa jednostki}}, {{Code|nazwa jednostki 1}}, {{Code|nazwa jednostki 2}}, {{Code|nazwa jednostki 3}},... Parametry podaje się w parametrach rodzica wywołania tej funkcji {{Code|{{m|Pudełko|Nazwa przestrzeni nazw dyskusji 3}}}} (ale ich nie trzeba podawać w dziecku, ale można) i w parametrach dziecka, jeśli chodzi o zmienną {{Code|numer jednostki}}, czyli np.: {{Code|{{m|Pudełko|Nazwa przestrzeni nazw dyskusji 3|numer jednostki{{=}}<jakaś liczba całkowita dodatnia>}}}}. Te parametry przestrzenne zamiast w rodzicu w szablonie można podać w ramce dziecka, wtedy parametry dziecka mają pierwszeństwo. Przestrzeń nazw z parametrów nazw przestrzennych bazowych (bez numerka) może odpowiadać wartości przestrzeni głównej, to wtedy odpowiednia przestrzeń nazw z parametru nazwy jednostki się nie liczy w tej funkcji, aby się liczyła należy użyć funkcji {{Code|{{sr|#p["Nazwa przestrzeni nazw dyskusji"](frame,...)|p=Pudełko}}}}. Przestrzeń nazw z parametrów nazw przestrzennych numerkowych może odpowiadać wartości przestrzeni głównej, to wtedy odpowiednia przestrzeń nazw z parametru nazwy jednostki się liczy w tej funkcji, wtedy jest liczona nazwa przestrzeni nazw z tego parametru. Gdy parametry przestrzenne lub typ jednostki w drugim podejściu nie wskazują na przestrzeń główną, to wtedy działanie tej funkcji jest podobne do {{Code|{{sr|#p["Nazwa przestrzeni nazw dysskusji 2"](frame,...)|p=Pudełko}}}}. Definicja skrótowa funkcji: <syntaxhighlight lang="lua"> p["Nazwa przestrzeni nazw dyskusji 3"]=function(frame,czy_uwzglednic_alternatywna_nazwe,i)...end; </syntaxhighlight> Wtedy ciało funkcji tej, czyli jego definicja w środku, jest: <syntaxhighlight lang="lua"> -- Jest liczony numer parametru nazwy przestrzeni nazw, domyslnie chodzi tu o numer bazowy parametrów przestrzennych; local numer_jednostki=i or frame.args["numer jednostki"]; local liczba_numeru_jednostki=((numer_jednostki)and(tonumber(numer_jednostki)) or 0); local pudelko_pomocne_modul=require("Module:Pudełko/Pomocne"); -- Liczy nazwę przestrzeni nazw dyskusji na podstawie podanych parametrów; return pudelko_pomocne_modul.Uzyskanie_nazw_jednostki(frame,2,liczba_numeru_jednostki,nil,1); </syntaxhighlight> Parametry funkcji: * {{Code|frame}} - tablica ramki tablicy transportu, * {{Code|czy_uwzglednic_alternatywna_nazwe}} - czy ma uwzględniać nazwę przestrzeni nazw domyślną szablonu, dostępne wartości: {{Code|false}}, w której nazwa domyślna nie jest uwzględniana wtedy, oraz {{Code|nil}} i {{Code|true}}, które oznaczają to samo, w tym jeżeli ona jest uwzględniana, wtedy jest brany parametr pierwszy dziecka, który musi istnieć przy takiej wartości tego parametru, tzn. {{Code|{{m|Pudełko|Nazwa przestrzeni nazw dyskusji 3|Szablon}}}}, a nazwa uzyskana nazwy przestrzeni nazw jest w takim przypadku błędna, a jeżeli nazwa domyślna jest błędna, czyli {{Code|{{m|Pudełko|Nazwa przestrzeni nazw dyskusji 3|Moja przestrzeń}}}}, wtedy funkcja zwraca stan błędu {{Code|(błąd)}}. * {{Code|i}} - numer zmiennej nazwy przestrzeni nazw. Funkcja wykorzystuje {{Code|{{sr|#p.Uzyskanie_nazw_jednostki(frame,...)|p=Pudełko/Pomocne}}}} do wyznaczania ogólnego nazwy przestrzeni nazw dla pozycji bazowej i numerkowej, tzn. dla pozycji: jeden, dwa, trzy,..., itd, i ich ogólnej. Parametr ramki tablicy transportu rodzica szablonu: * {{Code|nazwa przestrzeni nazw}}, {{Code|nazwa przestrzeni nazw 1}}, {{Code|nazwa przestrzeni nazw 2}}, {{Code|nazwa przestrzeni nazw 3}},..., {{Code|nazwa przestrzeni nazw i}} - nazwy przestrzeni nazw dla pozycji bazowej oraz zwykłej i ogólnej numerkowej, * {{Code|nazwa jednostki}}, {{Code|nazwa jednostki 1}}, {{Code|nazwa jednostki 2}}, {{Code|nazwa jednostki 3}},... - nazwy jednostek dla pozycji bazowej i numerkowej, * {{Code|typ jednostki}}, {{Code|typ jednostki 1}}, {{Code|typ jednostki 2}}, {{Code|typ jednostki 3}},..., {{Code|typ jednostki i}} - typy jednostek, którym odpowiadają pewne przestrzenie przedmiotowe, dla pozycji bazowej, numerkowej i ogólnej. Parametry ramki tablicy transportu dziecka: * Parametry dziecka są takie same jak rodzica dla funkcji pudełkowej plus tu wymienione, * {{Code|numer jednostki}} - jak parametr {{Code|i}} nie został ustawiony, to wtedy liczy się ta zmienna. Przykłady: <syntaxhighlight lang="mediawiki"> {{Nazwa szablonu 1|nazwa przestrzeni nazw=Wikibooks|nazwa przestrzeni nazw=|nazwa przestrzeni nazw i=|nazwajednostki=Szablon:Strona|nazwa jednostki 2=Wikibooks:Strona}} ---- {{Nazwa szablonu 2|nazwa przestrzeni nazw=Wikibooks|nazwa przestrzeni nazw 1=Szablon|nazwa przestrzeni nazw i=|nazwa jednostki 2=Wikibooks:Strona}} </syntaxhighlight> W dziecku powiedzmy jest wywołanie, i szukamy nazwy przestrzeni nazw o numerze dwa, która została podana, ale istnieje za to jej wersji ogólna {{Code|nazwa przestrzeni nazw i}} i domyślna {{Code|nazwa przestrzeni nazw}}, ale wtedy dla tego numerkowego liczy się to ogólne z {{Code| i}}, a ponieważ ta nazwa jest pusta, więc będziemy liczyli nazwę przestrzeni nazw z {{Code|nazwa jednostki 2}}: <syntaxhighlight lang="mediawiki"> {{#invoke:Pudełko|Nazwa przestrzeni nazw 3}} ---- {{#invoke:Pudełko|Nazwa przestrzeni nazw 3|numer jednostki=2}} </syntaxhighlight> Na podstawie powyższego przykładu otrzymamy wynik o schemacie, nie wyniku, bo tam nie ma zmiennej {{Code|nazwa przestrzeni nazw 1}}, ale jest {{Code|nazwa przestrzeni nazw i}}: <syntaxhighlight lang="mediawiki"> <!-- Ale nie "nazwa przestrzeni nazw""; --> <!-- nazwa przestrzeni nazw=""; --> <!-- Czyli wynik: --> Dyskusja <!-- Widzimy, że wygenerowała się nazwa przestrzeni nazw, którą jest przestrzeń nazw niegłówna, jest ciągiem niepustym; --> ---- <!-- Ale nie "Nazwa przestrzeni nazw 2", bo jej nie ma, ale za to istnieje "nazwa przestrzeni nazw i"; --> <!-- nazwa przestrzeni nazw 2=nazwa przestrzeni nazw i="", a nazwa jednostki 2="Wikibooks:Strona"; --> <!-- Czyli wynik: --> Dyskusja Wikibooks <!-- Widzimy, że wygenerowała się nazwa przestrzeni nazw, którą jest przestrzeń nieprogramowa, ale projektu, wychodząca z nazwy jednostek w tym przypadku z "nazwa jednostki 2"; --> </syntaxhighlight> Dla parametrów numerkowych nie jest brana w tym powyższym przykładzie zmienna {{Code|nazwa przestrzeni nazw 2}}, bo jej nie ma, ale za to jest {{Code|nazwa przestrzeni nazw i}}, bo ona występuje jako parametr domyślny ogólny dla parametrów numerkowych. Tytaj jest używana jest zmienna {{Code|nazwa jednostki 2}} do wygenerowania ostatecznego wyniku, bo jak można zauważyć, parametry przestrzenne wskazują na przestrzeń główną, a nazwy jednostek już nie. Dla parametrów bazowych mamy zmienną {{Code|nazwa przestrzeni nazw}}, ona jest pusta, więc to zostanie wziete do ostatecznego wyniku. Przykłady w wikikodzie: * {{Code|{{m|Pudełko|Nazwa przestrzeni nazw dyskusji 3|nazwa przestrzeni nazw{{=}}|nazwa jednostki{{=}}Wikibooks:Strona}}}} → {{Tt|{{#invoke:Pudełko|Nazwa przestrzeni nazw dyskusji 3|nazwa przestrzeni nazw=|nazwa jednostki=Wikibooks:Szablon}}}} * {{Code|{{m|Pudełko|Nazwa przestrzeni nazw dyskusji 3|nazwa przestrzeni nazw 2{{=}}|nazwa jednostki 2{{=}}Wikibooks:Strona|numer jednostki{{=}}2}}}} → {{Tt|{{#invoke:Pudełko|Nazwa przestrzeni nazw dyskusji 3|nazwa przestrzeni nazw 2=|nazwa jednostki 2=Wikibooks:Szablon|numer jednostki=2}}}} Powyżej dla przykładu podano parametry nie w rodzicu w szablonie, tylko w dziecku, jeśli chodzi o parametry nazw przestrzeni nazw i nazw jednostek, ale ich się za to nie powinno podawać w tych ramach, tylko w szablonach, w których wywoływane są te ramki pudełek {{Code|{{m|Pudełko}}}}, ale tak tutaj tak zrobiono by było najłatwiej sprawdzić działanie tego typu funkcji. Analogicznie możemy podawać parametry typu jednostki, np.: wywołaniu modułowym {{Code|{{m|Pudełko|Nazwa przestrzeni nazw dyskusji 3|typ jednostki 2{{=}}Podręcznik|nazwa jednostki 2{{=}}Szablon:Strona|numer jednostki{{=}}2}}}} (ale wtedy jest brana przestrzeń nazw z nazwy jednostki), ale o tym więcej w rozdziałach {{Code|{{sr|# p["Dyskusyjny typ jednostki 3"](frame,i)|p=Pudełko}}}} w „{{sr|#Funkcje typu jednostki|p=Pudełko}}”, one definiują przestrzenie dyskusji, ale można użyć parametru dyskusji typu jednostki z obojętnie jaką wartością niepustą, czy pustą, czy nawet jej nie podamy, wtedy wyświetli się nazwa przestrzeni nazw dyskusji. Jeżeli typ jednostki bazowy wskazuje na przestrzeń nazw główną, wtedy się nie liczą parametry nazw jednostek, a na numerkowy, wtedy się liczy. Również parametry typu jednostki nie powinno się podawać w dziecku w ramce, tylko w rodzicu w szablonie jako parametry, w którym ta ramka jest wywoływana, ale tutaj podano jedynie dla przykładu, jak najłatwiej sprawdzić działanie tych parametrów tej funkcji. Najpierw w funkcji nagłówku brane są parametry nazw przestrzeni nazw, a jeżeli ich nie ma, to parametry typu jednostki, a jeżeli nie ma lub parametry przestrzenne wskazują na przestrzeń główną, i nie ma nazwy jednostki, to generowane są nazwy tej funkcji na podstawie aktualnej strony. == Funkcje nazw jednostki trzeciej wersji == === {{Code|p["Nazwa jednostki 3"](frame,i)}} === === {{Code|p["Nazwa przedmiotowa jednostki 3"](frame,i)}} === === {{Code|p["Nazwa dyskusji jednostki 3"](frame,i)}} === == Funkcje typu jednostki == === {{Code|p["Typ jednostki"](frame,i)}} === === {{Code|p["Typ jednostki 2"](frame,i)}} === === {{Code|p["Typ jednostki 3"](frame,i)}} === === Funkcje typu jednostki przedmiotowe === ==== {{Code|p["Przedmiotowy typ jednostki"](frame,i)}} ==== ==== {{Code|p["Przedmiotowy typ jednostki 2"](frame,i)}} ==== ==== {{Code|p["Przedmiotowy typ jednostki 3"](frame,i)}} ==== === Fukcje typu jednostki dyskusji === ==== {{Code|p["Dyskusyjny typ jednostki"](frame,i)}} ==== ==== {{Code|p["Dyskusyjny typ jednostki 2"](frame,i)}} ==== ==== {{Code|p["Dyskusyjny typ jednostki 3"](frame,i)}} ==== == Funkcje chech pudełka == === {{Code|p["Cecha pudełka"](frame)}} === === {{Code|p["Przedmiotowa cecha pudełka"](frame)}} === === {{Code|p["Dyskusyjna cecha pudełka"](frame)}} === == Fukcje ogólnego pudełka == === {{Code|p["Ogólne pudełko"](frame)}} === == Funkcje ogólne == === {{Code|p["Tekst pudełka"](frame)}} === == Funkcje błędów pudełka == === {{Code|p["Błędy pudełka"](frame)}} === === {{Code|p["Przedmiotowe błędy pudełka"](frame)}} === === {{Code|p["Dyskusyjne błędy pudełka"](frame)}} === == Funkcje nazw stron == === {{Code|p["Nazwa strony głównej projektu"](frame,i)}} === === {{Code|p["Nazwa strony głównej dla dzieci projektu"](frame,i)}} === == Funkcje kodów == === {{Code|p["Kod języka"](frame,i)}} === === {{Code|p["Kod projektu"](frame,i)}} === === {{Code|p["Klucz projektu"](frame,i)}} === == Funkcje wiki == === {{Code|p["Inny niż język bieżący wiki"](frame)}} === === {{Code|p["Inne niż lokalne wiki"](frame)}} === === {{Code|p["Inne niż bieżące wiki"](frame)}} === == Funkcje typów parametrów, czy podane je == === {{Code|p["Podano parametry nienazwane"](frame)}} === === {{Code|p["Podano parametry numerowane"](frame)}} === === {{Code|p["Podano parametry nazwane"](frame)}} === == Funkcje kodów tego projektu == === {{Code|p["Kod projektu tego projektu"](frame)}} === === {{Code|p["Kod języka tego projektu"](frame)}} === === {{Code|p["Klucz projektu tego projektu"](frame)}} === == Funkcje stron == === {{Code|p["Strona główna tego projektu"](frame)}} === === {{Code|p["Strona główna dla dzieci tego projektu"](frame)}} === == Funkcje nazw stron drugiej wersji == === {{Code|p["Nazwa strony głównej dla dzieci projektu 2"](frame)}} === === {{Code| p["Nazwa strony głównej projektu 2"](frame)}} === {{BrClear}} <noinclude><!-- -->{{ProstaStronaKoniec}}<!-- -->{{Kategoria|Opisy funkcji, w Lua w Scribunto, w modułach}}<!-- --></noinclude> fdzajx59ni9wpgtgxcymjqhq96cmhsr 540431 540430 2026-04-24T01:54:30Z Persino 2851 540431 wikitext text/x-wiki <noinclude>{{ProstaStronaStart | nagłówek = {{Podrozdział|{{ld2|Pudełko}}|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 pudelko_modul=require("Module:Pudełko"); </syntaxhighlight> dzięki, któremu można wypisywać funkcje należącego do niego. Posługuje się na parametrach pudełkowych {{Parametr|nazwa przestrzeni nazw}} (czy też bez numerka {{Parametr|nazwa przestrzeni nazw i}} dla tego numerowanego) lub te z numerkiem po jednej spacji w nich (ale nie dla tego z końcówką {{Code| i}}) mogą zostać użyte jako parametry szablonu. Moduł {{Code|{{ld2|Pudełko}}}} przedstawia funkcje nazw w oparciu o funkcje nazw {{Code|{{ld2|Nazwy}}}}, generuje on nazwy za pomocą parametrów pudełkowych podanych poniżej. Parametr {{Parametr|nazwa jednostki}} (lub parametr {{Parametr|cel}} dla numerka tego pierwszego, tego alternatywnego), lub te z numerkiem po jednej spacji w nazwie parametru, albo numerowane numerkami {{Code|1}}, {{Code|2}},..., mogą zostać użyte jako parametry szablonu. Parametry określające rodzaj jednostki {{Parametr|typ jednostki}} z {{Parametr|dyskusja typu jednostki}}, itp. w wersjach z numerkiem po jednej spacji w nich mogą zostać użyte jako parametry szablonu. A te tymi numerowanymi liczbami naturalnymi {{Tt|nazwy jednostki}} od jedynki wzwyż poprzez szablon, w którym są one użyte, one też mogą być użyte z dwukropkiem, te numerowane, na samym początku nazwy, wtedy one są traktowane jako pełne nazwy strony, i wtedy one nie zostaną z interpretowane, że do nich trzeba użyć parametr odpowiedni z nazwą przetrzeni nazw z tego numerowanego, czy ogólny, aby utworzyć znów inną pełną nazwę strony dla tego numerka. Zestawienie: * {{Code|nazwa przestrzeni nazw}} i {{Code|nazwa przestrzeni nazw i}} (ogólna nazwa przestrzeni nazw dla wszystkich numerków, i tych numerowanych jednostek) - i to pierwsze z numerkiem, tzn. {{Code|nazwa przestrzeni nazw 1}}, {{Code|nazwa przestrzeni nazw 2}}, ..., * {{Code|nazwa jednostki}} - i te z numerkiem: {{Code|nazwa jednostki 1}}, {{Code|nazwa jednostki 2}}, ..., lub gdy jest zamiast tego parametrem numerowany, {{Code|1}}, {{Code|2}},..., który dla tego pierwszego może być uznany jako: {{Code|cel}} {{=}} {{Code|1}}, * {{Code|typ jednostki}} (parametr bazowy) i {{Code|typ jednostki i}} (parametr domyślny numerkowy) - i te z numerkiem: {{Code|typ jednostki 1}}, {{Code|typ jednostki 2}}, ..., tzn. gdy chcemy określić z jakim typem jednostki mamy do czynienia w zależności do jakiej przestrzeni nazw należy, a w danej, czy jest on np. programowy, czy tylko jest opisem, jak to bywa w szablonach {{Np|Template|link=tak}}, podobnie jest w przypadku {{Np|Module|link=tak}}, czy jak jest w innych przestrzeniach nazw, ** {{Code|dyskusja typu jednostki}} (parametr bazowy) i {{Code|dyskusja typu jednostki i}} (parametr domyślny numerkowy) - i te z numerkiem: {{Code|dyskusja typu jednostki 1}}, {{Code|dyskusja typu jednostki 2}}, ..., gdy chcemy określić wartością niepustą,że chodzi tutaj o typ jednostki. == {{Code|p.CzyNiepoprawnaNazwa(nazwa_jednostki)}} == Funkcja sprawdzajaca, czy jest poprawnie podana nazwa jednostki, czy ma poprawną nazwę. Znakami tymi, z których nie powinna składać się nazwa jest {{Code|<nowiki>{}<>|[]#\n</nowiki>}} i dodatkowo znak {{Code|&#127;}} (kod {{Code|{{Nowiki|&#127;}}}}). Też nie może składać się z trzech znaków tyldy, tzn. {{Code|<nowiki>~~~</nowiki>}}. Również w swojej budowie nie może składać się ze kodów {{Strong|HTML}} literowych o wzorze {{Code|{{Nowiki|&(%a+);}}}}. Natomiast może składać się z {{Code|{{Nowiki|&#(%d+);}}}} i {{Code|{{Nowiki|&#x(%x+);}}}}, ale w pierw te kody muszą być zamienione na normalne znaki. Skrótowa definicja funkcji: <syntaxhighlight lang="lua"> function p.CzyNiepoprawnaNazwa(nazwa_jednostki)...end; </syntaxhighlight> Wtedy ciało funkcji tej, czyli jego definicja w środku, jest: <syntaxhighlight lang="lua"> -- Moduł: "Moduł:Html/dane", służy do ładowania znaku o kodzie HTML "&#127;"; local html_dane_modul=mw.loadData("Module:Html/dane"); return mw.ustring.match(nazwa_jednostki,"[{}<>|%[%]#\n"..html_dane_modul.znak_127.."]+") or mw.ustring.match(nazwa_jednostki,"~~~") or mw.ustring.match(nazwa_jednostki,"&(%a+);"); </syntaxhighlight> Parametry: * {{Code|nazwa_jednostki}} - nazwa jednostki do sprawdzenia. Przykłady: <syntaxhighlight lang="lua"> local pudelko_modul=require("Module:Pudełko"); -- Podana przykładowa niepoprawna nazwa jedostki local nazwa_jednostki="Nazwa pliku [[Nazwa linku w pliku]]"; -- Fukcja zwróci wartość: local czy_poprawna_nazwa=true; local czy_poprawna_nazwa=pudelko_modul.CzyNiepoprawnaNazwa(nazwa_jednostki); </syntaxhighlight> == Funkcje nazw przestrzeni nazw == === {{Code|p["Nazwa przestrzeni nazw"](frame,...)}} === Funkcja pisze nazwę przestrzeni nazw, niezależnie, czy to jest przedmiotowa, czy dyskusji, według podanej w zmiennej {{Code|nazwa przestrzeni nazw}} dla pozycja bazowej w podanych parametrach szablonu rodzicu ramki dziecka, lub dla innej pozycji należy parametr podawać w formie {{Code|nazwa przestrzeni nazw 1}}, {{Code|nazwa przestrzeni nazw 2}}, {{Code|nazwa przestrzeni nazw 3}},..., lub te parametry można podać w postaci ogólnej {{Code|nazwa przestrzeni nazw i}}. Parametry podaje się w parametrach rodzica wywołania tej funkcji {{Code|{{m|Pudełko|Nazwa przestrzeni nazw}}}} (ale ich nie trzeba podawać w dziecku, ale można) i w parametrach dziecka, jeśli chodzi o zmienną {{Code|numer jednostki}}, czyli np.: {{Code|{{m|Pudełko|Nazwa przestrzeni nazw|numer jednostki{{=}}<jakaś liczba całkowita dodatnia>}}}}. Te parametry przestrzenne zamiast w rodzicu w szablonie można podać w ramce dziecka, wtedy parametry dziecka mają pierwszeństwo. Przestrzeń nazw z parametrów nazw przestrzennych może odpowiadać wartości przestrzeni głównej, to wtedy odpowiednia przestrzeń nazw z parametru nazwy jednostki się nie liczy w tej funkcji, aby się liczyła należy użyć funkcji {{Code|{{sr|#p["Nazwa przestrzeni nazw 2"](frame,...)|p=Pudełko}}}}. Definicja skrótowa funkcji: <syntaxhighlight lang="lua"> p["Nazwa przestrzeni nazw"]=function(frame,czy_uwzglednic_alternatywna_nazwe,i)...end; </syntaxhighlight> Wtedy ciało funkcji tej, czyli jego definicja w środku, jest: <syntaxhighlight lang="lua"> -- Jest liczony numer parametru nazwy przestrzeni nazw, domyslnie chodzi tu o numer bazowy parametrów przestrzennych; local numer_jednostki=i or frame.args["numer jednostki"]; local liczba_numer_jednostki=((numer_jednostki)and(tonumber(numer_jednostki))or 0); local pudelko_pomocne_modul=require("Module:Pudełko/Pomocne"); -- Liczy nazwę przestrzeni nazw na podstawie podanych parametrów; return pudelko_pomocne_modul.Nazwa_przestrzeni_nazw(frame,0, czy_uwzglednic_alternatywna_nazwe,liczba_numer_jednostki); </syntaxhighlight> Parametry funkcji: * {{Code|frame}} - tablica ramki tablicy transportu, * {{Code|czy_uwzglednic_alternatywna_nazwe}} - czy ma uwzględniać nazwę przestrzeni nazw domyślną szablonu, dostępne wartości: {{Code|false}}, w której nazwa domyślna nie jest uwzględniana wtedy, oraz {{Code|nil}} i {{Code|true}}, które oznaczają to samo, w tym jeżeli ona jest uwzględniana, wtedy jest brany parametr pierwszy dziecka, który musi istnieć przy takiej wartości tego parametru, tzn. {{Code|{{m|Pudełko|Nazwa przestrzeni nazw|Szablon}}}}, a nazwa uzyskana nazwy przestrzeni nazw jest w takim przypadku błędna, a jeżeli nazwa domyślna jest błędna, czyli {{Code|{{m|Pudełko|Nazwa przestrzeni nazw|Moja przestrzeń}}}}, wtedy funkcja zwraca stan błędu {{Code|(błąd)}}. * {{Code|i}} - numer zmiennej nazwy przestrzeni nazw. Funkcja wykorzystuje {{Code|{{sr|#p.Nazwa_przestrzeni_nazw(frame,...)|p=Pudełko/Pomocne}}}} do wyznaczania ogólnego nazwy przestrzeni nazw dla pozycji bazowej i numerkowej, tzn. dla pozycji: jeden, dwa, trzy,..., itd, i ich ogólnej. Parametr ramki tablicy transportu rodzica szablonu: * {{Code|nazwa przestrzeni nazw}}, {{Code|nazwa przestrzeni nazw 1}}, {{Code|nazwa przestrzeni nazw 2}}, {{Code|nazwa przestrzeni nazw 3}},..., {{Code|nazwa przestrzeni nazw i}} - nazwy przestrzeni nazw dla pozycji bazowej oraz zwykłej i ogólnej numerkowej, * {{Code|typ jednostki}}, {{Code|typ jednostki 1}}, {{Code|typ jednostki 2}}, {{Code|typ jednostki 3}},..., {{Code|typ jednostki i}} - typy jednostek, którym odpowiadają pewne przestrzenie przedmiotowe, dla pozycji bazowej, numerkowej i ogólnej, ** {{Code|dyskusja typu jednostki}}, {{Code|dyskusja typu jednostki 1}}, {{Code|dyskusja typ jednostki 2}}, {{Code|dyskusja typ jednostki 3}},..., {{Code|dyskusja typ jednostki i}} - czy dany typ jednostki ma przedstawiać, jeśli niepusta, przestrzeń dyskusji dla pozycji bazowej, numerkowej i ogólnej. Parametry ramki tablicy transportu dziecka: * Parametry dziecka są takie same jak rodzica dla funkcji pudełkowej plus tu wymienione, * {{Code|numer jednostki}} - jak parametr {{Code|i}} nie został ustawiony, to wtedy liczy się ta zmienna. Przykłady: <syntaxhighlight lang="mediawiki"> {{Nazwa szablonu|nazwa przestrzeni nazw=Wikibooks|nazwa przestrzeni nazw 2=Szablon|nazwa przestrzeni nazw i=Moduł}} </syntaxhighlight> W dziecku powiedzmy jest wywołanie, i szukamy nazwy przestrzeni nazw o numerze dwa, która nie została podana, ale istnieje za to jej wersji ogólna {{Code|nazwa przestrzeni nazw i}} i domyślna {{Code|nazwa przestrzeni nazw}}: <syntaxhighlight lang="mediawiki"> {{#invoke:Pudełko|Nazwa przestrzeni nazw|numer jednostki=1}} </syntaxhighlight> Na podstawie powyższego przykładu otrzymamy wynik o schemacie, nie wyniku, bo tam nie ma zmiennej {{Code|nazwa przestrzeni nazw 1}}, ale jest {{Code|nazwa przestrzeni nazw i}}: <syntaxhighlight lang="mediawiki"> <!-- Ale nie "nazwa przestrzeni nazw", bo jej nie ma, ale za to istnieje "nazwa przestrzeni nazw i"; --> <!-- nazwa przestrzeni nazw 2=nazwa przestrzeni nazw i=Moduł; --> <!-- Czyli wynik: --> Moduł <!-- Widzimy, że wygenerowała się nazwa przestrzeni nazw, którą jest przestrzeń programowa, którą również jest "Szablon"; --> </syntaxhighlight> Nie jest brana w tym powyższym przykładzie zmienna {{Code|nazwa przestrzeni nazw}}, bo jej nie ma, ale za to jest {{Code|nazwa przestrzeni nazw i}}, bo ona występuje jako parametr domyślny ogólny dla parametrów numerkowych. Przykłady w wikikodzie: * {{Code|{{m|Pudełko|Nazwa przestrzeni nazw|numer jednostki{{=}}2}}}} → {{Tt|{{#invoke:Pudełko|Nazwa przestrzeni nazw|numer jednostki=2}}}} * {{Code|{{m|Pudełko|Nazwa przestrzeni nazw|Szablon|nazwa przestrzeni nazw i{{=}}Moja przestrzeń|numer jednostki{{=}}2}}}} → {{Tt|{{#invoke:Pudełko|Nazwa przestrzeni nazw|Szablon|nazwa przestrzeni nazw i=Moja przestrzeń|numer jednostki=2}}}} * {{Code|{{m|Pudełko|Nazwa przestrzeni nazw|nazwa przestrzeni nazw 2{{=}}Szablon|numer jednostki{{=}}2}}}} → {{Tt|{{#invoke:Pudełko|Nazwa przestrzeni nazw|nazwa przestrzeni nazw 2=Szablon|numer jednostki=2}}}} * {{Code|{{m|Pudełko|Nazwa przestrzeni nazw|nazwa przestrzeni nazw 2{{=}}Szablon|numer jednostki{{=}}2}}}} → {{Tt|{{#invoke:Pudełko|Nazwa przestrzeni nazw|nazwa przestrzeni nazw i=Szablon|numer jednostki=2}}}} * {{Code|{{m|Pudełko|Nazwa przestrzeni nazw|nazwa przestrzeni nazw{{=}}Szablon|numer jednostki{{=}}2}}}} → {{Tt|{{#invoke:Pudełko|Nazwa przestrzeni nazw|nazwa przestrzeni nazw=Szablon|numer jednostki=2}}}} Powyżej dla przykładu podano parametry nie w rodzicu w szablonie, tylko w dziecku, jeśli chodzi o parametry nazw przestrzeni nazw, ale ich się za to nie powinno podawać w tych ramach, tylko w szablonach, w których wywoływane są te ramki pudełek {{Code|{{m|Pudełko}}}}, ale tak tutaj tak zrobiono by było najłatwiej sprawdzić działanie tego typu funkcji. Analogicznie możemy podawać parametry typu jednostki, np.: wywołaniu modułowym {{Code|{{m|Pudełko|Nazwa przestrzeni nazw|typ jednostki 2{{=}}strona szablonu|numer jednostki{{=}}2}}}}, ale o tym więcej w rozdziałach {{Code|{{sr|# p["Typ jednostki"](frame,i)|p=Pudełko}}}} w „{{sr|#Funkcje typu jednostki|p=Pudełko}}”, on definiuje przestrzenie przedmiotowe, ale można użyć parametru dyskusji typu jednostki z wartością niepustą, wtedy wyświetli się nazwa przestrzeni nazw dyskusji. Również parametry typu jednostki nie powinno się podawać w dziecku w ramce, tylko w rodzicu w szablonie jako parametry, w którym ta ramka jest wywoływana, ale tutaj podano jedynie dla przykładu, jak najłatwiej sprawdzić działanie tych parametrów tej funkcji. Najpierw w funkcji nagłówku brane są parametry nazw przestrzeni nazw, a jeżeli ich nie ma, to parametry typu jednostki, a jeżeli nie ma, to generowane są nazwy na podstawie aktualnego modułu. === {{Code|p["Nazwa przedmiotowej przestrzeni nazw"](frame,...)}} === Funkcja pisze przedmiotową nazwę przestrzeni nazw jakikolwiek nazwy przestrzeni nazw (tzn. nazwę przedmiotową nazwy przestrzenie nazw, czyli nie dyskusji, zamieniana jest na nią samą, czyli identyfikator przestrzeni się nie zmienia, a dyskusji, nie przedmiotową, przekształca się na przedmiotową jej odpowiadającą, czyli w tym przypadku identyfikator przestrzeni zmniejsza się o numer mniej), według podanej w zmiennej {{Code|nazwa przestrzeni nazw}} dla pozycja bazowej w podanych parametrach szablonu rodzicu ramki dziecka, lub dla innej pozycji należy parametr podawać w formie {{Code|nazwa przestrzeni nazw 1}}, {{Code|nazwa przestrzeni nazw 2}}, {{Code|nazwa przestrzeni nazw 3}},..., lub te parametry można podać w postaci ogólnej {{Code|nazwa przestrzeni nazw i}}. Parametry podaje się w parametrach rodzica wywołania tej funkcji {{Code|{{m|Pudełko|Nazwa przedmiotowej przestrzeni nazw}}}} (ale ich nie trzeba podawać w dziecku, ale można) i w parametrach dziecka, jeśli chodzi o zmienną {{Code|numer jednostki}}, czyli np.: {{Code|{{m|Pudełko|Nazwa przedmiotowej przestrzeni nazw|numer jednostki{{=}}<jakaś liczba całkowita dodatnia>}}}}. Te parametry przestrzenne zamiast w rodzicu w szablonie można podać w ramce dziecka, wtedy parametry dziecka mają pierwszeństwo. Parametry przestrzenne mogą mogą być podane w postaci przestrzeni przedmiotowej lub dyskusji, ale ta funkcja zawsze ją zamienia na przedmiotową. Przestrzeń nazw z parametrów nazw przestrzennych może odpowiadać wartości przestrzeni głównej, to wtedy odpowiednia przestrzeń nazw z parametru nazwy jednostki się nie liczy w tej funkcji, aby się liczyła należy użyć funkcji {{Code|{{sr|#p["Nazwa przedmiotowej przestrzeni nazw 2"](frame,...)|p=Pudełko}}}}. Definicja skrótowa funkcji: <syntaxhighlight lang="lua"> p["Nazwa przedmiotowej przestrzeni nazw"]=function(frame,czy_uwzglednic_alternatywna_nazwe,i)...end; </syntaxhighlight> Wtedy ciało funkcji tej, czyli jego definicja w środku, jest: <syntaxhighlight lang="lua"> -- Jest liczony numer parametru nazwy przestrzeni nazw, domyslnie chodzi tu o numer bazowy parametrów przestrzennych; local numer_jednostki=i or frame.args["numer jednostki"]; local liczba_numer_jednostki=((numer_jednostki)and(tonumber(numer_jednostki))or 0); local pudelko_pomocne_modul=require("Module:Pudełko/Pomocne"); -- Liczy nazwę przestrzeni nazw przedmiotową na podstawie podanych parametrów; return pudelko_pomocne_modul.Nazwa_przestrzeni_nazw(frame,1, czy_uwzglednic_alternatywna_nazwe,liczba_numer_jednostki); </syntaxhighlight> Parametry funkcji: * {{Code|frame}} - tablica ramki tablicy transportu, * {{Code|czy_uwzglednic_alternatywna_nazwe}} - czy ma uwzględniać nazwę przestrzeni nazw domyślną szablonu, dostępne wartości: {{Code|false}}, w której nazwa domyślna nie jest uwzględniana wtedy, oraz {{Code|nil}} i {{Code|true}}, które oznaczają to samo, w tym jeżeli ona jest uwzględniana, wtedy jest brany parametr pierwszy dziecka, który musi istnieć przy takiej wartości tego parametru, tzn. {{Code|{{m|Pudełko|Nazwa przedmiotowej przestrzeni nazw|Dyskusja szablonu}}}} - ta nazwa domyślna zostanie zamieniona na przedmiotową, a jak ona by była przedmiotowa, to żadnej zamiany by nie było, a nazwa uzyskana z nazwy przestrzeni nazw z parametrów przestrzennych jest w takim przypadku błędna, to w takim razie brany jest ten parametr, a jeżeli ta nazwa domyślna jest błędna, czyli {{Code|{{m|Pudełko|Nazwa przedmiotowej przestrzeni nazw|Moja przestrzeń}}}}, wtedy funkcja zwraca stan błędu {{Code|(błąd)}}. * {{Code|i}} - numer zmiennej nazwy przestrzeni nazw. Funkcja wykorzystuje {{Code|{{sr|#p.Nazwa_przestrzeni_nazw(frame,...)|p=Pudełko/Pomocne}}}} do wyznaczania ogólnego nazwy przestrzeni nazw dla pozycji bazowej i numerkowej, tzn. dla pozycji: jeden, dwa, trzy,..., itd, i ich ogólnej. Parametr ramki tablicy transportu rodzica szablonu: * {{Code|nazwa przestrzeni nazw}}, {{Code|nazwa przestrzeni nazw 1}}, {{Code|nazwa przestrzeni nazw 2}}, {{Code|nazwa przestrzeni nazw 3}},..., {{Code|nazwa przestrzeni nazw i}} - nazwy przestrzeni nazw dla pozycji bazowej oraz zwykłej i ogólnej numerkowej, * {{Code|typ jednostki}}, {{Code|typ jednostki 1}}, {{Code|typ jednostki 2}}, {{Code|typ jednostki 3}},..., {{Code|typ jednostki i}} - typy jednostek, którym odpowiadają pewne przestrzenie przedmiotowe, dla pozycji bazowej, numerkowej i ogólnej. Parametry ramki tablicy transportu dziecka: * Parametry dziecka są takie same jak rodzica dla funkcji pudełkowej plus tu wymienione, * {{Code|numer jednostki}} - jak parametr {{Code|i}} nie został ustawiony, to wtedy liczy się ta zmienna. Przykłady: <syntaxhighlight lang="mediawiki"> {{Nazwa szablonu|nazwa przestrzeni nazw=Dyskusja Wikibooks|nazwa przestrzeni nazw 2=Dyskusja szablonu|nazwa przestrzeni nazw i=Dyskusja modułu}} </syntaxhighlight> W dziecku powiedzmy jest wywołanie, i szukamy nazwy przestrzeni nazw o numerze dwa, która nie została podana, ale istnieje za to jej wersji ogólna {{Code|nazwa przestrzeni nazw i}} i domyślna {{Code|nazwa przestrzeni nazw}}: <syntaxhighlight lang="mediawiki"> {{#invoke:Pudełko|Nazwa przedmiotowej przestrzeni nazw|numer jednostki=1}} </syntaxhighlight> Na podstawie powyższego przykładu otrzymamy wynik o schemacie, nie wyniku, bo tam nie ma zmiennej {{Code|nazwa przestrzeni nazw 1}}, ale jest {{Code|nazwa przestrzeni nazw i}}: <syntaxhighlight lang="mediawiki"> <!-- Ale nie "nazwa przestrzeni nazw", bo jej nie ma, ale za to istnieje "nazwa przestrzeni nazw i"; --> <!-- nazwa przestrzeni nazw 2=nazwa przestrzeni nazw i=Dyskusja modułu; --> <!-- Czyli wynik: --> Moduł <!-- Widzimy, że wygenerowała się nazwa przestrzeni nazw, którą jest przestrzeń przedmiotowa programowa przestrzeni dyskusji "Dyskusja modułu", którą również jest "Szablon" jego przestrzeni dyskusji "Dyskusja szablonu", a dla ich przestrzeni przedmiotowej, zamiast dyskusji, to samo przekształca się na to samo; --> </syntaxhighlight> Nie jest brana w tym powyższym przykładzie zmienna {{Code|nazwa przestrzeni nazw}}, bo jej nie ma, ale za to jest {{Code|nazwa przestrzeni nazw i}}, bo ona występuje jako parametr domyślny ogólny dla parametrów numerkowych. Przykłady w wikikodzie: * {{Code|{{m|Pudełko|Nazwa przedmiotowej przestrzeni nazw|numer jednostki{{=}}2}}}} → {{Tt|{{#invoke:Pudełko|Nazwa przedmiotowej przestrzeni nazw|numer jednostki=2}}}} * {{Code|{{m|Pudełko|Nazwa przedmiotowej przestrzeni nazw|Dyskusja szablonu|nazwa przestrzeni nazw i{{=}}Moja przestrzeń|numer jednostki{{=}}2}}}} → {{Tt|{{#invoke:Pudełko|Nazwa przedmiotowej przestrzeni nazw|Dyskusja szablonu|nazwa przestrzeni nazw i=Moja przestrzeń|numer jednostki=2}}}} * {{Code|{{m|Pudełko|Nazwa przedmiotowej przestrzeni nazw|nazwa przestrzeni nazw 2{{=}}Dyskusja szablonu|numer jednostki{{=}}2}}}} → {{Tt|{{#invoke:Pudełko|Nazwa przedmiotowej przestrzeni nazw|nazwa przestrzeni nazw 2=Dyskusja szablonu|numer jednostki=2}}}} * {{Code|{{m|Pudełko|Nazwa przedmiotowej przestrzeni nazw|nazwa przestrzeni nazw 2{{=}}Dyskusja szablonu|numer jednostki{{=}}2}}}} → {{Tt|{{#invoke:Pudełko|Nazwa przedmiotowej przestrzeni nazw|nazwa przestrzeni nazw i=Dyskusja szablonu|numer jednostki=2}}}} * {{Code|{{m|Pudełko|Nazwa przedmiotowej przestrzeni nazw|nazwa przestrzeni nazw{{=}}Dyskusja szablonu|numer jednostki{{=}}2}}}} → {{Tt|{{#invoke:Pudełko|Nazwa przedmiotowej przestrzeni nazw|nazwa przestrzeni nazw=Dyskusja szablonu|numer jednostki=2}}}} Powyżej dla przykładu podano parametry nie w rodzicu w szablonie, tylko w dziecku, jeśli chodzi o parametry nazw przestrzeni nazw, ale ich się za to nie powinno podawać w tych ramach, tylko w szablonach, w których wywoływane są te ramki pudełek {{Code|{{m|Pudełko}}}}, ale tak tutaj tak zrobiono by było najłatwiej sprawdzić działanie tego typu funkcji. Analogicznie możemy podawać parametry typu jednostki, np.: wywołaniu modułowym {{Code|{{m|Pudełko|Nazwa przedmiotowej przestrzeni nazw|typ jednostki 2{{=}}strona szablonu|numer jednostki{{=}}2}}}}, ale o tym więcej w rozdziałach {{Code|{{sr|# p["Przedmiotowy typ jednostki"](frame,i)|p=Pudełko}}}} w „{{sr|#Funkcje typu jednostki|p=Pudełko}}”, ale wtedy ta sama nazwa przestrzeni nazw reprezentowana przez {{Parametr|typ jednostki 2|strona szablonu}}, jest zamieniana na to samo, lepiej jest tutaj używać parametrów przestrzennych nazw niż typu jednostki, bo typ jednostki ma taką samą wartość dla przestrzeni przedmiotowej, co dyskusji. Tutaj parametr dyskusji typu jednostki bazowy i numerkowy ogólny, czy szczegółowy, nie gra roli, bo nawet, gdy wygenerujemy nazwę przestrzeni dyskusji za pomoca tego parametru, to i tak otrzymamy na samym końcu jego nazwę przedmiotową. Również parametry typu jednostki nie powinno się podawać w dziecku w ramce, tylko w rodzicu w szablonie jako parametry, w którym ta ramka jest wywoływana, ale tutaj podano jedynie dla przykładu, jak najłatwiej sprawdzić działanie tych parametrów tej funkcji. Najpierw w funkcji nagłówku brane są parametry nazw przestrzeni nazw, a jeżeli ich nie ma, to parametry typu jednostki, a jeżeli nie ma, to generowane są nazwy na podstawie aktualnego modułu. === {{Code|p["Nazwa przestrzeni nazw dyskusji"](frame,...)}} === Funkcja pisze nazwę przestrzeni nazw dyskusji jakikolwiek nazwy przestrzeni nazw (tzn. nazwę przedmiotową nazwy przestrzenie nazw, czyli nie dyskusji, zamieniana jest na dyskusji, czyli identyfikator przestrzeni się zmienia jeden wyżej, a dyskusji, nie przedmiotową, przekształca się na tą samą), według podanej w zmiennej {{Code|nazwa przestrzeni nazw}} dla pozycja bazowej w podanych parametrach szablonu rodzicu ramki dziecka, lub dla innej pozycji należy parametr podawać w formie {{Code|nazwa przestrzeni nazw 1}}, {{Code|nazwa przestrzeni nazw 2}}, {{Code|nazwa przestrzeni nazw 3}},..., lub te parametry można podać w postaci ogólnej {{Code|nazwa przestrzeni nazw i}}. Parametry podaje się w parametrach rodzica wywołania tej funkcji {{Code|{{m|Pudełko|Nazwa przestrzeni nazw dyskusji}}}} (ale ich nie trzeba podawać w dziecku, ale można) i w parametrach dziecka, jeśli chodzi o zmienną {{Code|numer jednostki}}, czyli np.: {{Code|{{m|Pudełko|Nazwa przestrzeni nazw dyskusji|numer jednostki{{=}}<jakaś liczba całkowita dodatnia>}}}}. Te parametry przestrzenne zamiast w rodzicu w szablonie można podać w ramce dziecka, wtedy parametry dziecka mają pierwszeństwo. Parametry przestrzenne mogą mogą być podane w postaci przestrzeni przedmiotowej lub dyskusji, ale ta funkcja zawsze ją zamienia na dyskusji. Przestrzeń nazw z parametrów nazw przestrzennych może odpowiadać wartości przestrzeni głównej, to wtedy odpowiednia przestrzeń nazw z parametru nazwy jednostki się nie liczy w tej funkcji, aby się liczyła należy użyć funkcji {{Code|{{sr|#p["Nazwa przestrzeni nazw dyskusji 2"](frame,...)|p=Pudełko}}}}. Definicja skrótowa funkcji: <syntaxhighlight lang="lua"> p["Nazwa przestrzeni nazw dyskusji"]=function(frame,czy_uwzglednic_alternatywna_nazwe,i)...end; </syntaxhighlight> Wtedy ciało funkcji tej, czyli jego definicja w środku, jest: <syntaxhighlight lang="lua"> -- Jest liczony numer parametru nazwy przestrzeni nazw, domyslnie chodzi tu o numer bazowy parametrów przestrzennych; local numer_jednostki=i or frame.args["numer jednostki"]; local liczba_numer_jednostki=((numer_jednostki)and(tonumber(numer_jednostki))or 0); local pudelko_pomocne_modul=require("Module:Pudełko/Pomocne"); -- Liczy nazwę przestrzeni nazw dyskusji na podstawie podanych parametrów; return pudelko_pomocne_modul.Nazwa_przestrzeni_nazw(frame,2, czy_uwzglednic_alternatywna_nazwe,liczba_numer_jednostki); </syntaxhighlight> Parametry funkcji: * {{Code|frame}} - tablica ramki tablicy transportu, * {{Code|czy_uwzglednic_alternatywna_nazwe}} - czy ma uwzględniać nazwę przestrzeni nazw domyślną szablonu, dostępne wartości: {{Code|false}}, w której nazwa domyślna nie jest uwzględniana wtedy, oraz {{Code|nil}} i {{Code|true}}, które oznaczają to samo, w tym jeżeli ona jest uwzględniana, wtedy jest brany parametr pierwszy dziecka, który musi istnieć przy takiej wartości tego parametru, tzn. {{Code|{{m|Pudełko|Nazwa przestrzeni nazw dyskusji|Szablon}}}} - ta nazwa domyślna zostanie przekształcona na dyskusji, a jeżeli ona by była dyskusji, to nie byłoby żadnego przekształcenia, a nazwa uzyskana nazwy przestrzeni nazw z parametrów przestrzennych jest w takim przypadku błędna, to w takim razie brany jest ten parametr, a jeżeli nazwa domyślna jest błędna, czyli {{Code|{{m|Pudełko|Nazwa przestrzeni nazw dyskusji|Moja przestrzeń}}}}, wtedy funkcja zwraca stan błędu {{Code|(błąd)}}. * {{Code|i}} - numer zmiennej nazwy przestrzeni nazw. Funkcja wykorzystuje {{Code|{{sr|#p.Nazwa_przestrzeni_nazw(frame,...)|p=Pudełko/Pomocne}}}} do wyznaczania ogólnego nazwy przestrzeni nazw dla pozycji bazowej i numerkowej, tzn. dla pozycji: jeden, dwa, trzy,..., itd, i ich ogólnej. Parametr ramki tablicy transportu rodzica szablonu: * {{Code|nazwa przestrzeni nazw}}, {{Code|nazwa przestrzeni nazw 1}}, {{Code|nazwa przestrzeni nazw 2}}, {{Code|nazwa przestrzeni nazw 3}},..., {{Code|nazwa przestrzeni nazw i}} - nazwy przestrzeni nazw dla pozycji bazowej oraz zwykłej i ogólnej numerkowej, * {{Code|typ jednostki}}, {{Code|typ jednostki 1}}, {{Code|typ jednostki 2}}, {{Code|typ jednostki 3}},..., {{Code|typ jednostki i}} - typy jednostek, którym odpowiadają pewne przestrzenie przedmiotowe, dla pozycji bazowej, numerkowej i ogólnej. Parametry ramki tablicy transportu dziecka: * Parametry dziecka są takie same jak rodzica dla funkcji pudełkowej plus tu wymienione, * {{Code|numer jednostki}} - jak parametr {{Code|i}} nie został ustawiony, to wtedy liczy się ta zmienna. Przykłady: <syntaxhighlight lang="mediawiki"> {{Nazwa szablonu|nazwa przestrzeni nazw=Wikibooks|nazwa przestrzeni nazw 2=Szablon|nazwa przestrzeni nazw i=Moduł}} </syntaxhighlight> W dziecku powiedzmy jest wywołanie, i szukamy nazwy przestrzeni nazw o numerze dwa, która nie została podana, ale istnieje za to jej wersji ogólna {{Code|nazwa przestrzeni nazw i}} i domyślna {{Code|nazwa przestrzeni nazw}}: <syntaxhighlight lang="mediawiki"> {{#invoke:Pudełko|Nazwa przestrzeni nazw dyskusji|numer jednostki=1}} </syntaxhighlight> Na podstawie powyższego przykładu otrzymamy wynik o schemacie, nie wyniku, bo tam nie ma zmiennej {{Code|nazwa przestrzeni nazw 1}}, ale jest {{Code|nazwa przestrzeni nazw i}}: <syntaxhighlight lang="mediawiki"> <!-- Ale nie "nazwa przestrzeni nazw", bo jej nie ma, ale za to istnieje "nazwa przestrzeni nazw i"; --> <!-- nazwa przestrzeni nazw 2=nazwa przestrzeni nazw i=Moduł; --> <!-- Czyli wynik: --> Dyskusja modułu <!-- Widzimy, że wygenerowała się nazwa przestrzeni nazw, którą jest przestrzeń dyskusji przestrzeni programowej przestrzeni przedmiotowej "Moduł", którą również jest "Szablon" jego przestrzeni dyskusji "Dyskusja szablonu", a dla ich przestrzeni przedmiotowej, zamiast dyskusji, to przekształca się na dyskusji jej odpowiadającą; --> </syntaxhighlight> Nie jest brana w tym powyższym przykładzie zmienna {{Code|nazwa przestrzeni nazw}}, bo jej nie ma, ale za to jest {{Code|nazwa przestrzeni nazw i}}, bo ona występuje jako parametr domyślny ogólny dla parametrów numerkowych. Przykłady w wikikodzie: * {{Code|{{m|Pudełko|Nazwa przestrzeni nazw dyskusji|numer jednostki{{=}}2}}}} → {{Tt|{{#invoke:Pudełko|Nazwa przestrzeni nazw dyskusji|numer jednostki=2}}}} * {{Code|{{m|Pudełko|Nazwa przestrzeni nazw dyskusji|Szablon|nazwa przestrzeni nazw i{{=}}Moja przestrzeń|numer jednostki{{=}}2}}}} → {{Tt|{{#invoke:Pudełko|Nazwa przestrzeni nazw dyskusji|Szablon|nazwa przestrzeni nazw i=Moja przestrzeń|numer jednostki=2}}}} * {{Code|{{m|Pudełko|Nazwa przestrzeni nazw dyskusji|nazwa przestrzeni nazw 2{{=}}Szablon|numer jednostki{{=}}2}}}} → {{Tt|{{#invoke:Pudełko|Nazwa przestrzeni nazw dyskusji|nazwa przestrzeni nazw 2=Szablon|numer jednostki=2}}}} * {{Code|{{m|Pudełko|Nazwa przestrzeni nazw dyskusji|nazwa przestrzeni nazw 2{{=}}Szablon|numer jednostki{{=}}2}}}} → {{Tt|{{#invoke:Pudełko|Nazwa przestrzeni nazw dyskusji|nazwa przestrzeni nazw i=Szablon|numer jednostki=2}}}} * {{Code|{{m|Pudełko|Nazwa przestrzeni nazw dyskusji|nazwa przestrzeni nazw{{=}}Szablon|numer jednostki{{=}}2}}}} → {{Tt|{{#invoke:Pudełko|Nazwa przestrzeni nazw dyskusji|nazwa przestrzeni nazw=Szablon|numer jednostki=2}}}} Powyżej dla przykładu podano parametry nie w rodzicu w szablonie, tylko w dziecku, jeśli chodzi o parametry nazw przestrzeni nazw, ale ich się za to nie powinno podawać w tych ramach, tylko w szablonach, w których wywoływane są te ramki pudełek {{Code|{{m|Pudełko}}}}, ale tak tutaj tak zrobiono by było najłatwiej sprawdzić działanie tego typu funkcji. Analogicznie możemy podawać parametry typu jednostki, np.: wywołaniu modułowym {{Code|{{m|Pudełko|Nazwa przestrzeni nazw dyskusji|typ jednostki 2{{=}}strona szablonu|numer jednostki{{=}}2}}}}, ale o tym więcej w rozdziałach {{Code|{{sr|# p["Dyskusyjny typ jednostki"](frame,i)|p=Pudełko}}}} w „{{sr|#Funkcje typu jednostki|p=Pudełko}}”, ale wtedy nazwa przestrzeni nazw reprezentowana przez {{Parametr|typ jednostki 2|strona szablonu}}, jest zamieniana na nazwę przestrzeni nazw dyskusji. Parametr dyskusji typu jednostki bazowy lub dla danego numerka ogólny, czy szczegółowy, nie gra roli. Również parametry typu jednostki nie powinno się podawać w dziecku w ramce, tylko w rodzicu w szablonie jako parametry, w którym ta ramka jest wywoływana, ale tutaj podano jedynie dla przykładu, jak najłatwiej sprawdzić działanie tych parametrów tej funkcji. Najpierw w funkcji nagłówku brane są parametry nazw przestrzeni nazw, a jeżeli ich nie ma, to parametry typu jednostki, a jeżeli nie ma, to generowane są nazwy na podstawie aktualnego modułu. == Funkcje nazw przestrzeni nazw drugiej wersji == === {{Code|p["Nazwa przestrzeni nazw 2"](frame,...)}} === Funkcja pisze nazwę przestrzeni nazw, niezależnie, czy to jest przedmiotowa, czy dyskusji, według, i nie zawsze tylko, podanej w zmiennej {{Code|nazwa przestrzeni nazw}} dla pozycja bazowej w podanych parametrach szablonu rodzicu ramki dziecka, lub dla innej pozycji należy parametr podawać w formie {{Code|nazwa przestrzeni nazw 1}}, {{Code|nazwa przestrzeni nazw 2}}, {{Code|nazwa przestrzeni nazw 3}},..., lub te parametry można podać w postaci ogólnej {{Code|nazwa przestrzeni nazw i}}. W tej funkcji trzeba też podawać parametry nazwy jednostek {{Code|nazwa jednostki}}, {{Code|nazwa jednostki 1}}, {{Code|nazwa jednostki 2}}, {{Code|nazwa jednostki 3}},... Parametry podaje się w parametrach rodzica wywołania tej funkcji {{Code|{{m|Pudełko|Nazwa przestrzeni nazw 2}}}} (ale ich nie trzeba podawać w dziecku, ale można) i w parametrach dziecka, jeśli chodzi o zmienną {{Code|numer jednostki}}, czyli np.: {{Code|{{m|Pudełko|Nazwa przestrzeni nazw 2|numer jednostki{{=}}<jakaś liczba całkowita dodatnia>}}}}. Te parametry przestrzenne zamiast w rodzicu w szablonie można podać w ramce dziecka, wtedy parametry dziecka mają pierwszeństwo. Przestrzeń nazw z parametrów nazw przestrzennych może odpowiadać wartości przestrzeni głównej, to wtedy odpowiednia przestrzeń nazw z parametru nazwy jednostki się liczy w tej funkcji, wtedy jest liczona nazwa przestrzeni nazw z tego parametru. Gdy parametry przestrzenne lub typ jednostki w drugim podejściu nie wskazują na przestrzeń główną, to wtedy działanie tej funkcji jest podobne do {{Code|{{sr|#p["Nazwa przestrzeni nazw"](frame,...)|p=Pudełko}}}}. Definicja skrótowa funkcji: <syntaxhighlight lang="lua"> p["Nazwa przestrzeni nazw 2"]=function(frame,czy_uwzglednic_alternatywna_nazwe,i)...end; </syntaxhighlight> Wtedy ciało funkcji tej, czyli jego definicja w środku, jest: <syntaxhighlight lang="lua"> local pudelko_pomocne_modul=require("Module:Pudełko/Pomocne"); -- Liczy nazwę przestrzeni nazw, jeżeli z parametrów przestrzennych przestrzeń wskazuje na główną, to wtedy jest liczona przestrzeń nazw z nazwy jednostki; return pudelko_pomocne_modul.Nazwa_przestrzeni_nazw_2(frame,czy_uwzglednic_alternatywna_nazwe,i) </syntaxhighlight> Parametry funkcji: * {{Code|frame}} - tablica ramki tablicy transportu, * {{Code|czy_uwzglednic_alternatywna_nazwe}} - czy ma uwzględniać nazwę przestrzeni nazw domyślną szablonu, dostępne wartości: {{Code|false}}, w której nazwa domyślna nie jest uwzględniana wtedy, oraz {{Code|nil}} i {{Code|true}}, które oznaczają to samo, w tym jeżeli ona jest uwzględniana, wtedy jest brany parametr pierwszy dziecka, który musi istnieć przy takiej wartości tego parametru, tzn. {{Code|{{m|Pudełko|Nazwa przestrzeni nazw 2|Szablon}}}}, a nazwa uzyskana nazwy przestrzeni nazw jest w takim przypadku błędna, a jeżeli nazwa domyślna jest błędna, czyli {{Code|{{m|Pudełko|Nazwa przestrzeni nazw 2|Moja przestrzeń}}}}, wtedy funkcja zwraca stan błędu {{Code|(błąd)}}. * {{Code|i}} - numer zmiennej nazwy przestrzeni nazw. Funkcja wykorzystuje {{Code|{{sr|#p.Nazwa_przestrzeni_nazw_2(frame,...)|p=Pudełko/Pomocne}}}} do wyznaczania ogólnego nazwy przestrzeni nazw dla pozycji bazowej i numerkowej, tzn. dla pozycji: jeden, dwa, trzy,..., itd, i ich ogólnej. Parametr ramki tablicy transportu rodzica szablonu: * {{Code|nazwa przestrzeni nazw}}, {{Code|nazwa przestrzeni nazw 1}}, {{Code|nazwa przestrzeni nazw 2}}, {{Code|nazwa przestrzeni nazw 3}},..., {{Code|nazwa przestrzeni nazw i}} - nazwy przestrzeni nazw dla pozycji bazowej oraz zwykłej i ogólnej numerkowej, * {{Code|nazwa jednostki}}, {{Code|nazwa jednostki 1}}, {{Code|nazwa jednostki 2}}, {{Code|nazwa jednostki 3}},... - nazwy jednostek dla pozycji bazowej i numerkowej, * {{Code|typ jednostki}}, {{Code|typ jednostki 1}}, {{Code|typ jednostki 2}}, {{Code|typ jednostki 3}},..., {{Code|typ jednostki i}} - typy jednostek, którym odpowiadają pewne przestrzenie przedmiotowe, dla pozycji bazowej, numerkowej i ogólnej, ** {{Code|dyskusja typu jednostki}}, {{Code|dyskusja typu jednostki 1}}, {{Code|dyskusja typ jednostki 2}}, {{Code|dyskusja typ jednostki 3}},..., {{Code|dyskusja typ jednostki i}} - czy dany typ jednostki ma przedstawiać, jeśli niepusta, przestrzeń dyskusji dla pozycji bazowej, numerkowej i ogólnej. Parametry ramki tablicy transportu dziecka: * Parametry dziecka są takie same jak rodzica dla funkcji pudełkowej plus tu wymienione, * {{Code|numer jednostki}} - jak parametr {{Code|i}} nie został ustawiony, to wtedy liczy się ta zmienna. Przykłady: <syntaxhighlight lang="mediawiki"> {{Nazwa szablonu|nazwa przestrzeni nazw=Wikibooks|nazwa przestrzeni nazw 1=Szablon|nazwa przestrzeni nazw i=|nazwa jednostki 2=Wikibooks:Strona}} </syntaxhighlight> W dziecku powiedzmy jest wywołanie, i szukamy nazwy przestrzeni nazw o numerze dwa, która została podana, ale istnieje za to jej wersji ogólna {{Code|nazwa przestrzeni nazw i}} i domyślna {{Code|nazwa przestrzeni nazw}}, ale wtedy dla tego numerkowego liczy się to ogólne z {{Code| i}}, a ponieważ ta nazwa jest pusta, więc będziemy liczyli nazwę przestrzeni nazw z {{Code|nazwa jednostki 2}}: <syntaxhighlight lang="mediawiki"> {{#invoke:Pudełko|Nazwa przestrzeni nazw 2|numer jednostki=2}} </syntaxhighlight> Na podstawie powyższego przykładu otrzymamy wynik o schemacie, nie wyniku, bo tam nie ma zmiennej {{Code|nazwa przestrzeni nazw 1}}, ale jest {{Code|nazwa przestrzeni nazw i}}: <syntaxhighlight lang="mediawiki"> <!-- Ale nie "nazwa przestrzeni nazw 2", bo jej nie ma, ale za to istnieje "nazwa przestrzeni nazw i"; --> <!-- nazwa przestrzeni nazw 2=nazwa przestrzeni nazw i="", a nazwa jednostki 2="Wikibooks:Strona"; --> <!-- Czyli wynik: --> Wikibooks <!-- Widzimy, że wygenerowała się nazwa przestrzeni nazw, którą jest przestrzeń nieprogramowa, ale projektu, wychodząca z nazwy jednostek w tym przypadku z "nazwa jednostki 2"; --> </syntaxhighlight> Nie jest brana w tym powyższym przykładzie zmienna {{Code|nazwa przestrzeni nazw}}, bo jej nie ma, ale za to jest {{Code|nazwa przestrzeni nazw i}}, bo ona występuje jako parametr domyślny ogólny dla parametrów numerkowych. Tytaj jest używana jest zmienna {{Code|nazwa jednostki 2}} do wygenerowania ostatecznego wyniku, bo jak można zauważyć, parametry przestrzenne wskazują na przestrzeń główną, a nazwy jednostek już nie. Przykłady w wikikodzie: * {{Code|{{m|Pudełko|Nazwa przestrzeni nazw 2|numer jednostki{{=}}2}}}} → {{Tt|{{#invoke:Pudełko|Nazwa przestrzeni nazw 2|numer jednostki=2}}}} * {{Code|{{m|Pudełko|Nazwa przestrzeni nazw 2|Szablon|nazwa przestrzeni nazw i{{=}}Moja przestrzeń|numer jednostki{{=}}2}}}} → {{Tt|{{#invoke:Pudełko|Nazwa przestrzeni nazw 2|Szablon|nazwa przestrzeni nazw i=Moja przestrzeń|numer jednostki=2}}}} * {{Code|{{m|Pudełko|Nazwa przestrzeni nazw 2|nazwa przestrzeni nazw 2{{=}}|nazwa jednostki 2{{=}}Szablon:Strona|numer jednostki{{=}}2}}}} → {{Tt|{{#invoke:Pudełko|Nazwa przestrzeni nazw 2|nazwa przestrzeni nazw 2=|nazwa jednostki 2=Szablon:Strona|numer jednostki=2}}}} * {{Code|{{m|Pudełko|Nazwa przestrzeni nazw 2|nazwa przestrzeni nazw i{{=}}|nazwa jednostki 2{{=}}Szablon:Strona|numer jednostki{{=}}2}}}} → {{Tt|{{#invoke:Pudełko|Nazwa przestrzeni nazw 2|nazwa przestrzeni nazw i=|nazwa jednostki 2=Szablon:Strona|numer jednostki=2}}}} * {{Code|{{m|Pudełko|Nazwa przestrzeni nazw 2|Szablon|nazwa przestrzeni nazw{{=}}|nazwa jednostki 2{{=}}Wikibooks:Strona|numer jednostki{{=}}2}}}} → {{Tt|{{#invoke:Pudełko|Nazwa przestrzeni nazw 2|Szablon|nazwa przestrzeni nazw=|nazwa jednostki 2=Wikibooks:Strona|numer jednostki=2}}}} Powyżej dla przykładu podano parametry nie w rodzicu w szablonie, tylko w dziecku, jeśli chodzi o parametry nazw przestrzeni nazw i nazw jednostek, ale ich się za to nie powinno podawać w tych ramach, tylko w szablonach, w których wywoływane są te ramki pudełek {{Code|{{m|Pudełko}}}}, ale tak tutaj tak zrobiono by było najłatwiej sprawdzić działanie tego typu funkcji. Analogicznie możemy podawać parametry typu jednostki, np.: wywołaniu modułowym {{Code|{{m|Pudełko|Nazwa przestrzeni nazw 2|typ jednostki 2{{=}}Podręcznik|nazwa jednostki 2{{=}}Szablon:Strona|numer jednostki{{=}}2}}}} (ale wtedy jest brana przestrzeń nazw z nazwy jednostki), ale o tym więcej w rozdziałach {{Code|{{sr|#p["Typ jednostki 2"](frame,i)|p=Pudełko}}}} w „{{sr|#Funkcje typu jednostki|p=Pudełko}}”, on definiuje przestrzenie przedmiotowe, ale można użyć parametru dyskusji typu jednostki z wartością niepustą, wtedy wyświetli się nazwa przestrzeni nazw dyskusji. Jeżeli typ jednostki wskazuje na przestrzeń nazw główną, wtedy się liczą parametry nazw jednostek. Również parametry typu jednostki nie powinno się podawać w dziecku w ramce, tylko w rodzicu w szablonie jako parametry, w którym ta ramka jest wywoływana, ale tutaj podano jedynie dla przykładu, jak najłatwiej sprawdzić działanie tych parametrów tej funkcji. Najpierw w funkcji nagłówku brane są parametry nazw przestrzeni nazw, a jeżeli ich nie ma, to parametry typu jednostki, a jeżeli nie ma lub parametry przestrzenne wskazują na przestrzeń główną, i nie ma nazwy jednostki, to generowane są nazwy tej funkcji na podstawie aktualnej strony. === {{Code|p["Nazwa przedmiotowej przestrzeni nazw 2"](frame,...)}} === Funkcja pisze przedmiotową nazwę przestrzeni nazw jakikolwiek nazwy przestrzeni nazw (tzn. nazwę przedmiotową nazwy przestrzenie nazw, czyli nie dyskusji, zamieniana jest na nią samą, czyli identyfikator przestrzeni się nie zmienia, a dyskusji, nie przedmiotową, przekształca się na przedmiotową jej odpowiadającą, czyli w tym przypadku identyfikator przestrzeni zmniejsza się o numer mniej), według, i nie zawsze tylko, podanej w zmiennej {{Code|nazwa przestrzeni nazw}} dla pozycja bazowej w podanych parametrach szablonu rodzicu ramki dziecka, lub dla innej pozycji należy parametr podawać w formie {{Code|nazwa przestrzeni nazw 1}}, {{Code|nazwa przestrzeni nazw 2}}, {{Code|nazwa przestrzeni nazw 3}},..., lub te parametry można podać w postaci ogólnej {{Code|nazwa przestrzeni nazw i}}. W tej funkcji trzeba też podawać parametry nazwy jednostek {{Code|nazwa jednostki}}, {{Code|nazwa jednostki 1}}, {{Code|nazwa jednostki 2}}, {{Code|nazwa jednostki 3}},... Parametry podaje się w parametrach rodzica wywołania tej funkcji {{Code|{{m|Pudełko|Nazwa przedmiotowej przestrzeni nazw 2}}}} (ale ich nie trzeba podawać w dziecku, ale można) i w parametrach dziecka, jeśli chodzi o zmienną {{Code|numer jednostki}}, czyli np.: {{Code|{{m|Pudełko|Nazwa przedmiotowej przestrzeni nazw 2|numer jednostki{{=}}<jakaś liczba całkowita dodatnia>}}}}. Te parametry przestrzenne zamiast w rodzicu w szablonie można podać w ramce dziecka, wtedy parametry dziecka mają pierwszeństwo. Przestrzeń nazw z parametrów nazw przestrzennych po przekształceniu na przedmiotową może odpowiadać wartości przestrzeni głównej, to wtedy odpowiednia przestrzeń nazw z parametru nazwy jednostki się liczy w tej funkcji, wtedy jest liczona nazwa przestrzeni nazw z tego parametru. Gdy parametry przestrzenne lub typ jednostki w drugim podejściu nie wskazują na przestrzeń główną, to wtedy działanie tej funkcji jest podobne do {{Code|{{sr|#p["Nazwa przedmiotowej przestrzeni nazw"](frame,...)|p=Pudełko}}}}. Definicja skrótowa funkcji: <syntaxhighlight lang="lua"> p["Nazwa przedmiotowej przestrzeni nazw 2"]=function(frame,czy_uwzglednic_alternatywna_nazwe,i)...end; </syntaxhighlight> Wtedy ciało funkcji tej, czyli jego definicja w środku, jest: <syntaxhighlight lang="lua"> local pudelko_pomocne_modul=require("Module:Pudełko/Pomocne"); return pudelko_pomocne_modul.Nazwa_przestrzeni_nazw_przedmiotowa_dyskusji_2(frame,czy_uwzglednic_alternatywna_nazwe,i,"przedmiotowa"); </syntaxhighlight> Parametry funkcji: * {{Code|frame}} - tablica ramki tablicy transportu, * {{Code|czy_uwzglednic_alternatywna_nazwe}} - czy ma uwzględniać nazwę przestrzeni nazw domyślną szablonu, dostępne wartości: {{Code|false}}, w której nazwa domyślna nie jest uwzględniana wtedy, oraz {{Code|nil}} i {{Code|true}}, które oznaczają to samo, w tym jeżeli ona jest uwzględniana, wtedy jest brany parametr pierwszy dziecka, który musi istnieć przy takiej wartości tego parametru, tzn. {{Code|{{m|Pudełko|Nazwa przedmiotowej przestrzeni nazw 2|Szablon}}}}, a nazwa uzyskana nazwy przestrzeni nazw jest w takim przypadku błędna, a jeżeli nazwa domyślna jest błędna, czyli {{Code|{{m|Pudełko|Nazwa przedmiotowej przestrzeni nazw 2|Moja przestrzeń}}}}, wtedy funkcja zwraca stan błędu {{Code|(błąd)}}. * {{Code|i}} - numer zmiennej nazwy przestrzeni nazw. Funkcja wykorzystuje {{Code|{{sr|#p.Nazwa_przestrzeni_nazw_przedmiotowa_dyskusji_2(frame,...)|p=Pudełko/Pomocne}}}} do wyznaczania ogólnego nazwy przestrzeni nazw dla pozycji bazowej i numerkowej, tzn. dla pozycji: jeden, dwa, trzy,..., itd, i ich ogólnej. Parametr ramki tablicy transportu rodzica szablonu: * {{Code|nazwa przestrzeni nazw}}, {{Code|nazwa przestrzeni nazw 1}}, {{Code|nazwa przestrzeni nazw 2}}, {{Code|nazwa przestrzeni nazw 3}},..., {{Code|nazwa przestrzeni nazw i}} - nazwy przestrzeni nazw dla pozycji bazowej oraz zwykłej i ogólnej numerkowej, * {{Code|nazwa jednostki}}, {{Code|nazwa jednostki 1}}, {{Code|nazwa jednostki 2}}, {{Code|nazwa jednostki 3}},... - nazwy jednostek dla pozycji bazowej i numerkowej, * {{Code|typ jednostki}}, {{Code|typ jednostki 1}}, {{Code|typ jednostki 2}}, {{Code|typ jednostki 3}},..., {{Code|typ jednostki i}} - typy jednostek, którym odpowiadają pewne przestrzenie przedmiotowe, dla pozycji bazowej, numerkowej i ogólnej. Parametry ramki tablicy transportu dziecka: * Parametry dziecka są takie same jak rodzica dla funkcji pudełkowej plus tu wymienione, * {{Code|numer jednostki}} - jak parametr {{Code|i}} nie został ustawiony, to wtedy liczy się ta zmienna. Przykłady: <syntaxhighlight lang="mediawiki"> {{Nazwa szablonu|nazwa przestrzeni nazw=Wikibooks|nazwa przestrzeni nazw 1=Szablon|nazwa przestrzeni nazw i=|nazwa jednostki 2=Dyskusja Wikibooks:Strona}} </syntaxhighlight> W dziecku powiedzmy jest wywołanie, i szukamy nazwy przestrzeni nazw o numerze dwa, która została podana, ale istnieje za to jej wersji ogólna {{Code|nazwa przestrzeni nazw i}} i domyślna {{Code|nazwa przestrzeni nazw}}, ale wtedy dla tego numerkowego liczy się to ogólne z {{Code| i}}, a ponieważ ta nazwa jest pusta, więc będziemy liczyli nazwę przestrzeni nazw z {{Code|nazwa jednostki 2}}: <syntaxhighlight lang="mediawiki"> {{#invoke:Pudełko|Nazwa przedmiotowej przestrzeni nazw 2|numer jednostki=2}} </syntaxhighlight> Na podstawie powyższego przykładu otrzymamy wynik o schemacie, nie wyniku, bo tam nie ma zmiennej {{Code|nazwa przestrzeni nazw 1}}, ale jest {{Code|nazwa przestrzeni nazw i}}: <syntaxhighlight lang="mediawiki"> <!-- Ale nie "nazwa przestrzeni nazw 2", bo jej nie ma, ale za to istnieje "nazwa przestrzeni nazw i"; --> <!-- nazwa przestrzeni nazw 2=nazwa przestrzeni nazw i="", a nazwa jednostki 2="Dyskusja Wikibooks:Strona"; --> <!-- Czyli wynik: --> Wikibooks <!-- Widzimy, że wygenerowała się nazwa przestrzeni nazw, którą jest przestrzeń nieprogramowa, ale projektu, wychodząca z nazwy jednostek w tym przypadku z "nazwa jednostki 2"; --> </syntaxhighlight> Nie jest brana w tym powyższym przykładzie zmienna {{Code|nazwa przestrzeni nazw}}, bo jej nie ma, ale za to jest {{Code|nazwa przestrzeni nazw i}}, bo ona występuje jako parametr domyślny ogólny dla parametrów numerkowych. Tytaj jest używana jest zmienna {{Code|nazwa jednostki 2}} do wygenerowania ostatecznego wyniku, bo jak można zauważyć, parametry przestrzenne wskazują na przestrzeń główną, a nazwy jednostek już nie. Przykłady w wikikodzie: * {{Code|{{m|Pudełko|Nazwa przedmiotowej przestrzeni nazw 2|numer jednostki{{=}}2}}}} → {{Tt|{{#invoke:Pudełko|Nazwa przedmiotowej przestrzeni nazw 2|numer jednostki=2}}}} * {{Code|{{m|Pudełko|Nazwa przedmiotowej przestrzeni nazw 2|Dyskusja szablonu|nazwa przestrzeni nazw i{{=}}Moja przestrzeń|numer jednostki{{=}}2}}}} → {{Tt|{{#invoke:Pudełko|Nazwa przedmiotowej przestrzeni nazw 2|Dyskusja szablonu|nazwa przestrzeni nazw i=Moja przestrzeń|numer jednostki=2}}}} * {{Code|{{m|Pudełko|Nazwa przedmiotowej przestrzeni nazw 2|nazwa przestrzeni nazw 2{{=}}Dyskusja|nazwa jednostki 2{{=}}Dyskusja szablonu:Strona|numer jednostki{{=}}2}}}} → {{Tt|{{#invoke:Pudełko|Nazwa przedmiotowej przestrzeni nazw 2|nazwa przestrzeni nazw 2=Dyskusja|nazwa jednostki 2=Dyskusja szablonu:Strona|numer jednostki=2}}}} * {{Code|{{m|Pudełko|Nazwa przedmiotowej przestrzeni nazw 2|nazwa przestrzeni nazw i{{=}}Dyskusja|nazwa jednostki 2{{=}}Dyskusja szablonu:Strona|numer jednostki{{=}}2}}}} → {{Tt|{{#invoke:Pudełko|Nazwa przedmiotowej przestrzeni nazw 2|nazwa przestrzeni nazw i=Dyskusja|nazwa jednostki 2=Dyskusja szablonu:Strona|numer jednostki=2}}}} * {{Code|{{m|Pudełko|Nazwa przedmiotowej przestrzeni nazw 2|Dyskusja szablonu|nazwa przestrzeni nazw{{=}}Dyskusja|nazwa jednostki 2{{=}}Wikibooks:Strona|numer jednostki{{=}}2}}}} → {{Tt|{{#invoke:Pudełko|Nazwa przedmiotowej przestrzeni nazw 2|Dyskusja szablonu|nazwa przestrzeni nazw=Dyskusja|nazwa jednostki 2=Dyskusja Wikibooks:Strona|numer jednostki=2}}}} Powyżej dla przykładu podano parametry nie w rodzicu w szablonie, tylko w dziecku, jeśli chodzi o parametry nazw przestrzeni nazw i nazw jednostek, ale ich się za to nie powinno podawać w tych ramach, tylko w szablonach, w których wywoływane są te ramki pudełek {{Code|{{m|Pudełko}}}}, ale tak tutaj tak zrobiono by było najłatwiej sprawdzić działanie tego typu funkcji. Analogicznie możemy podawać parametry typu jednostki, np.: wywołaniu modułowym {{Code|{{m|Pudełko|Nazwa przedmiotowej przestrzeni nazw 2|typ jednostki 2{{=}}Podręcznik|nazwa jednostki 2{{=}}Dyskusja szablonu:Strona|numer jednostki{{=}}2}}}} (ale wtedy jest brana przestrzeń nazw z nazwy jednostki), ale o tym więcej w rozdziałach {{Code|{{sr|# p["Przedmiotowy typ jednostki 2"](frame,i)|p=Pudełko}}}} w „{{sr|#Funkcje typu jednostki|p=Pudełko}}”, on definiuje przestrzenie przedmiotowe, ale można użyć parametru dyskusji typu jednostki z wartością niepustą, pustą, czy nawet jej nie podamy, wtedy wyświetli się nazwa przestrzeni nazw przedmiotowej. Jeżeli typ jednostki wskazuje na przestrzeń nazw główną, wtedy się liczą parametry nazw jednostek. Również parametry typu jednostki nie powinno się podawać w dziecku w ramce, tylko w rodzicu w szablonie jako parametry, w którym ta ramka jest wywoływana, ale tutaj podano jedynie dla przykładu, jak najłatwiej sprawdzić działanie tych parametrów tej funkcji. Najpierw w funkcji nagłówku brane są parametry nazw przestrzeni nazw, a jeżeli ich nie ma, to parametry typu jednostki, a jeżeli nie ma lub parametry przestrzenne wskazują na przestrzeń główną, i nie ma nazwy jednostki, to generowane są nazwy tej funkcji na podstawie aktualnej strony. === {{Code|p["Nazwa przestrzeni nazw dyskusji 2"](frame,...)}} === Funkcja pisze nazwę przestrzeni nazw dyskusji jakikolwiek nazwy przestrzeni nazw (tzn. nazwę dyskusji nazwy przestrzenie nazw, czyli nie przedmiotowej, zamieniana jest na nią samą, czyli identyfikator przestrzeni się nie zmienia, a przedmiotową, nie dyskusji, przekształca się na dyskusji jej odpowiadającą, czyli w tym przypadku identyfikator przestrzeni zwiększa się o numer więcej), według, i nie zawsze tylko, podanej w zmiennej {{Code|nazwa przestrzeni nazw}} dla pozycja bazowej w podanych parametrach szablonu rodzicu ramki dziecka, lub dla innej pozycji należy parametr podawać w formie {{Code|nazwa przestrzeni nazw 1}}, {{Code|nazwa przestrzeni nazw 2}}, {{Code|nazwa przestrzeni nazw 3}},..., lub te parametry można podać w postaci ogólnej {{Code|nazwa przestrzeni nazw i}}. W tej funkcji trzeba też podawać parametry nazwy jednostek {{Code|nazwa jednostki}}, {{Code|nazwa jednostki 1}}, {{Code|nazwa jednostki 2}}, {{Code|nazwa jednostki 3}},... Parametry podaje się w parametrach rodzica wywołania tej funkcji {{Code|{{m|Pudełko|Nazwa przestrzeni nazw dyskusji 2}}}} (ale ich nie trzeba podawać w dziecku, ale można) i w parametrach dziecka, jeśli chodzi o zmienną {{Code|numer jednostki}}, czyli np.: {{Code|{{m|Pudełko|Nazwa przestrzeni nazw dyskusji 2|numer jednostki{{=}}<jakaś liczba całkowita dodatnia>}}}}. Te parametry przestrzenne zamiast w rodzicu w szablonie można podać w ramce dziecka, wtedy parametry dziecka mają pierwszeństwo. Przestrzeń nazw z parametrów nazw przestrzennych po przekształceniu na przedmiotową może odpowiadać wartości przestrzeni głównej, to wtedy odpowiednia przestrzeń nazw z parametru nazwy jednostki się liczy w tej funkcji, wtedy jest liczona nazwa przestrzeni nazw z tego parametru. Gdy parametry przestrzenne lub typ jednostki w drugim podejściu nie wskazują na przestrzeń główną, to wtedy działanie tej funkcji jest podobne do {{Code|{{sr|#p["Nazwa dyskusji przestrzeni nazw"](frame,...)|p=Pudełko}}}}. Definicja skrótowa funkcji: <syntaxhighlight lang="lua"> p["Nazwa przestrzeni nazw dyskusji 2"]=function(frame,czy_uwzglednic_alternatywna_nazwe,i)...end; </syntaxhighlight> Wtedy ciało funkcji tej, czyli jego definicja w środku, jest: <syntaxhighlight lang="lua"> local pudelko_pomocne_modul=require("Module:Pudełko/Pomocne"); return pudelko_pomocne_modul.Nazwa_przestrzeni_nazw_przedmiotowa_dyskusji_2(frame,czy_uwzglednic_alternatywna_nazwe,i,"dyskusja"); </syntaxhighlight> Parametry funkcji: * {{Code|frame}} - tablica ramki tablicy transportu, * {{Code|czy_uwzglednic_alternatywna_nazwe}} - czy ma uwzględniać nazwę przestrzeni nazw domyślną szablonu, dostępne wartości: {{Code|false}}, w której nazwa domyślna nie jest uwzględniana wtedy, oraz {{Code|nil}} i {{Code|true}}, które oznaczają to samo, w tym jeżeli ona jest uwzględniana, wtedy jest brany parametr pierwszy dziecka, który musi istnieć przy takiej wartości tego parametru, tzn. {{Code|{{m|Pudełko|Nazwa przestrzeni nazw dyskusji 2|Szablon}}}}, a nazwa uzyskana nazwy przestrzeni nazw jest w takim przypadku błędna, a jeżeli nazwa domyślna jest błędna, czyli {{Code|{{m|Pudełko|Nazwa przestrzeni nazw dyskusji 2|Moja przestrzeń}}}}, wtedy funkcja zwraca stan błędu {{Code|(błąd)}}. * {{Code|i}} - numer zmiennej nazwy przestrzeni nazw. Funkcja wykorzystuje {{Code|{{sr|#p.Nazwa_przestrzeni_nazw_przedmiotowa_dyskusji_2(frame,...)|p=Pudełko/Pomocne}}}} do wyznaczania ogólnego nazwy przestrzeni nazw dla pozycji bazowej i numerkowej, tzn. dla pozycji: jeden, dwa, trzy,..., itd, i ich ogólnej. Parametr ramki tablicy transportu rodzica szablonu: * {{Code|nazwa przestrzeni nazw}}, {{Code|nazwa przestrzeni nazw 1}}, {{Code|nazwa przestrzeni nazw 2}}, {{Code|nazwa przestrzeni nazw 3}},..., {{Code|nazwa przestrzeni nazw i}} - nazwy przestrzeni nazw dla pozycji bazowej oraz zwykłej i ogólnej numerkowej, * {{Code|nazwa jednostki}}, {{Code|nazwa jednostki 1}}, {{Code|nazwa jednostki 2}}, {{Code|nazwa jednostki 3}},... - nazwy jednostek dla pozycji bazowej i numerkowej, * {{Code|typ jednostki}}, {{Code|typ jednostki 1}}, {{Code|typ jednostki 2}}, {{Code|typ jednostki 3}},..., {{Code|typ jednostki i}} - typy jednostek, którym odpowiadają pewne przestrzenie przedmiotowe, dla pozycji bazowej, numerkowej i ogólnej. Parametry ramki tablicy transportu dziecka: * Parametry dziecka są takie same jak rodzica dla funkcji pudełkowej plus tu wymienione, * {{Code|numer jednostki}} - jak parametr {{Code|i}} nie został ustawiony, to wtedy liczy się ta zmienna. Przykłady: <syntaxhighlight lang="mediawiki"> {{Nazwa szablonu|nazwa przestrzeni nazw=Wikibooks|nazwa przestrzeni nazw 1=Szablon|nazwa przestrzeni nazw i=|nazwa jednostki 2=Wikibooks:Strona}} </syntaxhighlight> W dziecku powiedzmy jest wywołanie, i szukamy nazwy przestrzeni nazw o numerze dwa, która została podana, ale istnieje za to jej wersji ogólna {{Code|nazwa przestrzeni nazw i}} i domyślna {{Code|nazwa przestrzeni nazw}}, ale wtedy dla tego numerkowego liczy się to ogólne z {{Code| i}}, a ponieważ ta nazwa jest pusta, więc będziemy liczyli nazwę przestrzeni nazw z {{Code|nazwa jednostki 2}}: <syntaxhighlight lang="mediawiki"> {{#invoke:Pudełko|Nazwa przestrzeni nazw dyskusji 2|numer jednostki=2}} </syntaxhighlight> Na podstawie powyższego przykładu otrzymamy wynik o schemacie, nie wyniku, bo tam nie ma zmiennej {{Code|nazwa przestrzeni nazw 1}}, ale jest {{Code|nazwa przestrzeni nazw i}}: <syntaxhighlight lang="mediawiki"> <!-- Ale nie "nazwa przestrzeni nazw 2", bo jej nie ma, ale za to istnieje "nazwa przestrzeni nazw i"; --> <!-- nazwa przestrzeni nazw 2=nazwa przestrzeni nazw i="", a nazwa jednostki 2="Wikibooks:Strona"; --> <!-- Czyli wynik: --> Dyskusja Wikibooks <!-- Widzimy, że wygenerowała się nazwa przestrzeni nazw, którą jest przestrzeń nieprogramowa, ale dyskusji projektu, wychodząca z nazwy jednostek w tym przypadku z "nazwa jednostki 2"; --> </syntaxhighlight> Nie jest brana w tym powyższym przykładzie zmienna {{Code|nazwa przestrzeni nazw}}, bo jej nie ma, ale za to jest {{Code|nazwa przestrzeni nazw i}}, bo ona występuje jako parametr domyślny ogólny dla parametrów numerkowych. Tytaj jest używana jest zmienna {{Code|nazwa jednostki 2}} do wygenerowania ostatecznego wyniku, bo jak można zauważyć, parametry przestrzenne wskazują na przestrzeń główną, a nazwy jednostek już nie. Przykłady w wikikodzie: * {{Code|{{m|Pudełko|Nazwa przestrzeni nazw dyskusji 2|numer jednostki{{=}}2}}}} → {{Tt|{{#invoke:Pudełko|Nazwa przestrzeni nazw dyskusji 2|numer jednostki=2}}}} * {{Code|{{m|Pudełko|Nazwa przestrzeni nazw dyskusji 2|Szablon|nazwa przestrzeni nazw i{{=}}Moja przestrzeń|numer jednostki{{=}}2}}}} → {{Tt|{{#invoke:Pudełko|Nazwa przestrzeni nazw dyskusji 2|Szablon|nazwa przestrzeni nazw i=Moja przestrzeń|numer jednostki=2}}}} * {{Code|{{m|Pudełko|Nazwa przestrzeni nazw dyskusji 2|nazwa przestrzeni nazw 2{{=}}|nazwa jednostki 2{{=}}Szablon:Strona|numer jednostki{{=}}2}}}} → {{Tt|{{#invoke:Pudełko|Nazwa przestrzeni nazw dyskusji 2|nazwa przestrzeni nazw 2=|nazwa jednostki 2=Szablon:Strona|numer jednostki=2}}}} * {{Code|{{m|Pudełko|Nazwa przestrzeni nazw dyskusji 2|nazwa przestrzeni nazw i{{=}}|nazwa jednostki 2{{=}}Szablon:Strona|numer jednostki{{=}}2}}}} → {{Tt|{{#invoke:Pudełko|Nazwa przestrzeni nazw dyskusji 2|nazwa przestrzeni nazw i=|nazwa jednostki 2=Szablon:Strona|numer jednostki=2}}}} * {{Code|{{m|Pudełko|Nazwa przestrzeni nazw dyskusji 2|Szablon|nazwa przestrzeni nazw{{=}}|nazwa jednostki 2{{=}}Wikibooks:Strona|numer jednostki{{=}}2}}}} → {{Tt|{{#invoke:Pudełko|Nazwa przestrzeni nazw dyskusji 2|Szablon|nazwa przestrzeni nazw=|nazwa jednostki 2=Dyskusja Wikibooks:Strona|numer jednostki=2}}}} Powyżej dla przykładu podano parametry nie w rodzicu w szablonie, tylko w dziecku, jeśli chodzi o parametry nazw przestrzeni nazw i nazw jednostek, ale ich się za to nie powinno podawać w tych ramach, tylko w szablonach, w których wywoływane są te ramki pudełek {{Code|{{m|Pudełko}}}}, ale tak tutaj tak zrobiono by było najłatwiej sprawdzić działanie tego typu funkcji. Analogicznie możemy podawać parametry typu jednostki, np.: wywołaniu modułowym {{Code|{{m|Pudełko|Nazwa przestrzeni nazw dyskusji 2|typ jednostki 2{{=}}Podręcznik|nazwa jednostki 2{{=}}Szablon:Strona|numer jednostki{{=}}2}}}} (ale wtedy jest brana przestrzeń nazw z nazwy jednostki), ale o tym więcej w rozdziałach {{Code|{{sr|# p["Dyskusyjny typ jednostki 2"](frame,i)|p=Pudełko}}}} w „{{sr|#Funkcje typu jednostki|p=Pudełko}}”, one definiują przestrzenie dyskusji, ale można użyć parametru dyskusji typu jednostki z obojętnie jaką wartością niepustą, czy pustą, czy nawet jej nie podamy, wtedy wyświetli się nazwa przestrzeni nazw dyskusji. Jeżeli typ jednostki wskazuje na przestrzeń nazw główną, wtedy się liczą parametry nazw jednostek. Również parametry typu jednostki nie powinno się podawać w dziecku w ramce, tylko w rodzicu w szablonie jako parametry, w którym ta ramka jest wywoływana, ale tutaj podano jedynie dla przykładu, jak najłatwiej sprawdzić działanie tych parametrów tej funkcji. Najpierw w funkcji nagłówku brane są parametry nazw przestrzeni nazw, a jeżeli ich nie ma, to parametry typu jednostki, a jeżeli nie ma lub parametry przestrzenne wskazują na przestrzeń główną, i nie ma nazwy jednostki, to generowane są nazwy tej funkcji na podstawie aktualnej strony. == Funkcje pełnych nazw jednostki == === {{Code|p["Pełna nazwa dyskusji jednostki"](frame,i)}} === === {{Code|p["Pełna nazwa przedmiotowa jednostki"](frame,i)}} === === {{Code|p["Pełna nazwa jednostki"](frame,i)}} === == Funkcje pełnych nazw jednostki drugiej wersji == === {{Code|p["Pełna nazwa dyskusji jednostki 2"](frame,i)}} === === {{Code|p["Pełna nazwa przedmiotowa jednostki 2"](frame,i)}} === === {{Code|p["Pełna nazwa jednostki 2"](frame,i)}} === == Funkcje pełnych nazw jednostki trzeciej wersji == === {{Code|p["Pełna nazwa dyskusji jednostki 3"](frame,i)}} === === {{Code|p["Pełna nazwa przedmiotowa jednostki 3"](frame,i)}} === === {{Code|p["Pełna nazwa jednostki 3"](frame,i)}} === == Funkcje nazw jednostki == === {{Code|p["Nazwa jednostki"](frame,i)}} === == Funkcje nazw jednostki drugiej wersji == === {{Code|p["Nazwa jednostki 2"](frame,i)}} === === {{Code|p["Nazwa przedmiotowa jednostki 2"](frame,i)}} === === {{Code|p["Nazwa dyskusji jednostki 2"](frame,i)}} === == Funkcje nazw przestrzeni nazw trzeciej wersji == === {{Code|p["Nazwa przestrzeni nazw 3"](frame,i)}} === Funkcja pisze nazwę przestrzeni nazw, niezależnie, czy to jest przedmiotowa, czy dyskusji, według, i nie zawsze tylko, podanej w zmiennej {{Code|nazwa przestrzeni nazw}} dla pozycja bazowej w podanych parametrach szablonu rodzicu ramki dziecka, lub dla innej pozycji należy parametr podawać w formie {{Code|nazwa przestrzeni nazw 1}}, {{Code|Nazwa przestrzeni nazw 3}}, {{Code|nazwa przestrzeni nazw 3}},..., lub te parametry można podać w postaci ogólnej {{Code|nazwa przestrzeni nazw i}}. W tej funkcji trzeba też podawać parametry nazwy jednostek {{Code|nazwa jednostki}}, {{Code|nazwa jednostki 1}}, {{Code|nazwa jednostki 2}}, {{Code|nazwa jednostki 3}},... Parametry podaje się w parametrach rodzica wywołania tej funkcji {{Code|{{m|Pudełko|Nazwa przestrzeni nazw 3}}}} (ale ich nie trzeba podawać w dziecku, ale można) i w parametrach dziecka, jeśli chodzi o zmienną {{Code|numer jednostki}}, czyli np.: {{Code|{{m|Pudełko|Nazwa przestrzeni nazw 3|numer jednostki{{=}}<jakaś liczba całkowita dodatnia>}}}}. Te parametry przestrzenne zamiast w rodzicu w szablonie można podać w ramce dziecka, wtedy parametry dziecka mają pierwszeństwo. Przestrzeń nazw z parametrów nazw przestrzennych bazowych (bez numerka) może odpowiadać wartości przestrzeni głównej, to wtedy odpowiednia przestrzeń nazw z parametru nazwy jednostki się nie liczy w tej funkcji, aby się liczyła należy użyć funkcji {{Code|{{sr|#p["Nazwa przestrzeni nazw"](frame,...)|p=Pudełko}}}}. Przestrzeń nazw z parametrów nazw przestrzennych numerkowych może odpowiadać wartości przestrzeni głównej, to wtedy odpowiednia przestrzeń nazw z parametru nazwy jednostki się liczy w tej funkcji, wtedy jest liczona nazwa przestrzeni nazw z tego parametru. Gdy parametry przestrzenne lub typ jednostki w drugim podejściu nie wskazują na przestrzeń główną, to wtedy działanie tej funkcji jest podobne do {{Code|{{sr|#p["Nazwa przestrzeni nazw 2"](frame,...)|p=Pudełko}}}}. Definicja skrótowa funkcji: <syntaxhighlight lang="lua"> p["Nazwa przestrzeni nazw 3"]=function(frame,czy_uwzglednic_alternatywna_nazwe,i)...end; </syntaxhighlight> Wtedy ciało funkcji tej, czyli jego definicja w środku, jest: <syntaxhighlight lang="lua"> -- Jest liczony numer parametru nazwy przestrzeni nazw, domyslnie chodzi tu o numer bazowy parametrów przestrzennych; local numer_jednostki=i or frame.args["numer jednostki"]; local liczba_numeru_jednostki=((numer_jednostki)and(tonumber(numer_jednostki)) or 0); local pudelko_pomocne_modul=require("Module:Pudełko/Pomocne"); -- Liczy nazwę przestrzeni nazw dyskusji na podstawie podanych parametrów; return pudelko_pomocne_modul.Uzyskanie_nazw_jednostki(frame,0,liczba_numeru_jednostki,nil,2); </syntaxhighlight> Parametry funkcji: * {{Code|frame}} - tablica ramki tablicy transportu, * {{Code|czy_uwzglednic_alternatywna_nazwe}} - czy ma uwzględniać nazwę przestrzeni nazw domyślną szablonu, dostępne wartości: {{Code|false}}, w której nazwa domyślna nie jest uwzględniana wtedy, oraz {{Code|nil}} i {{Code|true}}, które oznaczają to samo, w tym jeżeli ona jest uwzględniana, wtedy jest brany parametr pierwszy dziecka, który musi istnieć przy takiej wartości tego parametru, tzn. {{Code|{{m|Pudełko|Nazwa przestrzeni nazw 3|Szablon}}}}, a nazwa uzyskana nazwy przestrzeni nazw jest w takim przypadku błędna, a jeżeli nazwa domyślna jest błędna, czyli {{Code|{{m|Pudełko|Nazwa przestrzeni nazw 3|Moja przestrzeń}}}}, wtedy funkcja zwraca stan błędu {{Code|(błąd)}}. * {{Code|i}} - numer zmiennej nazwy przestrzeni nazw. Funkcja wykorzystuje {{Code|{{sr|#p.Uzyskanie_nazw_jednostki(frame,...)|p=Pudełko/Pomocne}}}} do wyznaczania ogólnego nazwy przestrzeni nazw dla pozycji bazowej i numerkowej, tzn. dla pozycji: jeden, dwa, trzy,..., itd, i ich ogólnej. Parametr ramki tablicy transportu rodzica szablonu: * {{Code|nazwa przestrzeni nazw}}, {{Code|nazwa przestrzeni nazw 1}}, {{Code|Nazwa przestrzeni nazw 3}}, {{Code|nazwa przestrzeni nazw 3}},..., {{Code|nazwa przestrzeni nazw i}} - nazwy przestrzeni nazw dla pozycji bazowej oraz zwykłej i ogólnej numerkowej, * {{Code|nazwa jednostki}}, {{Code|nazwa jednostki 1}}, {{Code|nazwa jednostki 2}}, {{Code|nazwa jednostki 3}},... - nazwy jednostek dla pozycji bazowej i numerkowej, * {{Code|typ jednostki}}, {{Code|typ jednostki 1}}, {{Code|typ jednostki 2}}, {{Code|typ jednostki 3}},..., {{Code|typ jednostki i}} - typy jednostek, którym odpowiadają pewne przestrzenie przedmiotowe, dla pozycji bazowej, numerkowej i ogólnej, ** {{Code|dyskusja typu jednostki}}, {{Code|dyskusja typu jednostki 1}}, {{Code|dyskusja typ jednostki 2}}, {{Code|dyskusja typ jednostki 3}},..., {{Code|dyskusja typ jednostki i}} - czy dany typ jednostki ma przedstawiać, jeśli niepusta, przestrzeń dyskusji dla pozycji bazowej, numerkowej i ogólnej. Parametry ramki tablicy transportu dziecka: * Parametry dziecka są takie same jak rodzica dla funkcji pudełkowej plus tu wymienione, * {{Code|numer jednostki}} - jak parametr {{Code|i}} nie został ustawiony, to wtedy liczy się ta zmienna. Przykłady: <syntaxhighlight lang="mediawiki"> {{Nazwa szablonu 1|nazwa przestrzeni nazw=Wikibooks|nazwa przestrzeni nazw=|nazwa przestrzeni nazw i=|nazwa jednostki=Szablon:Strona|nazwa jednostki 2=Wikibooks:Strona}} ---- {{Nazwa szablonu 2|nazwa przestrzeni nazw=Wikibooks|nazwa przestrzeni nazw 1=Szablon|nazwa przestrzeni nazw i=|nazwa jednostki 2=Wikibooks:Strona}} </syntaxhighlight> W dziecku powiedzmy jest wywołanie, i szukamy nazwy przestrzeni nazw o numerze dwa, która została podana, ale istnieje za to jej wersji ogólna {{Code|nazwa przestrzeni nazw i}} i domyślna {{Code|nazwa przestrzeni nazw}}, ale wtedy dla tego numerkowego liczy się to ogólne z {{Code| i}}, a ponieważ ta nazwa jest pusta, więc będziemy liczyli nazwę przestrzeni nazw z {{Code|nazwa jednostki 2}}: <syntaxhighlight lang="mediawiki"> {{#invoke:Pudełko|Nazwa przestrzeni nazw 3}} ---- {{#invoke:Pudełko|Nazwa przestrzeni nazw 3|numer jednostki=2}} </syntaxhighlight> Na podstawie powyższego przykładu otrzymamy wynik o schemacie, nie wyniku, bo tam nie ma zmiennej {{Code|nazwa przestrzeni nazw 1}}, ale jest {{Code|nazwa przestrzeni nazw i}}: <syntaxhighlight lang="mediawiki"> <!-- Ale nie "nazwa przestrzeni nazw""; --> <!-- nazwa przestrzeni nazw=""; --> <!-- Czyli wynik: --> <!-- wynik pusty --> <!-- Widzimy, że wygenerowała się nazwa przestrzeni nazw, którą jest przestrzeń nazw główna, jest ciągiem pustym: ""; --> ---- <!-- Ale nie "Nazwa przestrzeni nazw 2", bo jej nie ma, ale za to istnieje "nazwa przestrzeni nazw i"; --> <!-- nazwa przestrzeni nazw 2=nazwa przestrzeni nazw i="", a nazwa jednostki 2="Wikibooks:Strona"; --> <!-- Czyli wynik: --> Wikibooks <!-- Widzimy, że wygenerowała się nazwa przestrzeni nazw, którą jest przestrzeń nieprogramowa, ale projektu, wychodząca z nazwy jednostek w tym przypadku z "nazwa jednostki 2"; --> </syntaxhighlight> Dla parametrów numerkowych nie jest brana w tym powyższym przykładzie zmienna {{Code|nazwa przestrzeni nazw 2}}, bo jej nie ma, ale za to jest {{Code|nazwa przestrzeni nazw i}}, bo ona występuje jako parametr domyślny ogólny dla parametrów numerkowych. Tytaj jest używana jest zmienna {{Code|nazwa jednostki 2}} do wygenerowania ostatecznego wyniku, bo jak można zauważyć, parametry przestrzenne wskazują na przestrzeń główną, a nazwy jednostek już nie. Dla parametrów bazowych mamy zmienną {{Code|nazwa przestrzeni nazw}}, ona jest pusta, więc to zostanie wziete do ostatecznego wyniku. Przykłady w wikikodzie: * {{Code|{{m|Pudełko|Nazwa przestrzeni nazw 3|nazwa przestrzeni nazw{{=}}|nazwa jednostki{{=}}Wikibooks:Strona}}}} → {{Tt|{{#invoke:Pudełko|Nazwa przestrzeni nazw 3|nazwa przestrzeni nazw=|nazwa jednostki=Wikibooks:Szablon}}}} * {{Code|{{m|Pudełko|Nazwa przestrzeni nazw 3|nazwa przestrzeni nazw 2{{=}}|nazwa jednostki 2{{=}}Wikibooks:Strona|numer jednostki{{=}}2}}}} → {{Tt|{{#invoke:Pudełko|Nazwa przestrzeni nazw 3|nazwa przestrzeni nazw 2=|nazwa jednostki 2=Wikibooks:Szablon|numer jednostki=2}}}} Powyżej dla przykładu podano parametry nie w rodzicu w szablonie, tylko w dziecku, jeśli chodzi o parametry nazw przestrzeni nazw i nazw jednostek, ale ich się za to nie powinno podawać w tych ramach, tylko w szablonach, w których wywoływane są te ramki pudełek {{Code|{{m|Pudełko}}}}, ale tak tutaj tak zrobiono by było najłatwiej sprawdzić działanie tego typu funkcji. Analogicznie możemy podawać parametry typu jednostki, np.: wywołaniu modułowym {{Code|{{m|Pudełko|Nazwa przestrzeni nazw 3|typ jednostki 2{{=}}Podręcznik|nazwa jednostki 2{{=}}Szablon:Strona|numer jednostki{{=}}2}}}} (ale wtedy jest brana przestrzeń nazw z nazwy jednostki), ale o tym więcej w rozdziałach {{Code|{{sr|#p["Typ jednostki 3"](frame,i)|p=Pudełko}}}} w „{{sr|#Funkcje typu jednostki|p=Pudełko}}”, on definiuje przestrzenie przedmiotowe, ale można użyć parametru dyskusji typu jednostki z wartością niepustą, wtedy wyświetli się nazwa przestrzeni nazw dyskusji. Jeżeli typ jednostki bazowy wskazuje na przestrzeń nazw główną, wtedy się nie liczą parametry nazw jednostek, a na numerkowy, wtedy się liczy. Również parametry typu jednostki nie powinno się podawać w dziecku w ramce, tylko w rodzicu w szablonie jako parametry, w którym ta ramka jest wywoływana, ale tutaj podano jedynie dla przykładu, jak najłatwiej sprawdzić działanie tych parametrów tej funkcji. Najpierw w funkcji nagłówku brane są parametry nazw przestrzeni nazw, a jeżeli ich nie ma, to parametry typu jednostki, a jeżeli nie ma lub parametry przestrzenne wskazują na przestrzeń główną, i nie ma nazwy jednostki, to generowane są nazwy tej funkcji na podstawie aktualnej strony. === {{Code|p["Nazwa przedmiotowej przestrzeni nazw 3"](frame,i)}} === Funkcja pisze przedmiotową nazwę przestrzeni nazw jakikolwiek nazwy przestrzeni nazw (tzn. nazwę przedmiotową nazwy przestrzenie nazw, czyli nie dyskusji, zamieniana jest na nią samą, czyli identyfikator przestrzeni się nie zmienia, a dyskusji, nie przedmiotową, przekształca się na przedmiotową jej odpowiadającą, czyli w tym przypadku identyfikator przestrzeni zmniejsza się o numer mniej), według podanej w zmiennej {{Code|nazwa przestrzeni nazw}} dla pozycja bazowej w podanych parametrach szablonu rodzicu ramki dziecka, lub dla innej pozycji należy parametr podawać w formie {{Code|nazwa przestrzeni nazw 1}}, {{Code|nazwa przestrzeni nazw 2}}, {{Code|nazwa przestrzeni nazw 3}},..., lub te parametry można podać w postaci ogólnej {{Code|nazwa przestrzeni nazw i}}. Parametry podaje się w parametrach rodzica wywołania tej funkcji {{Code|{{m|Pudełko|Nazwa przedmiotowej przestrzeni nazw 3}}}} (ale ich nie trzeba podawać w dziecku, ale można) i w parametrach dziecka, jeśli chodzi o zmienną {{Code|numer jednostki}}, czyli np.: {{Code|{{m|Pudełko|Nazwa przedmiotowej przestrzeni nazw 3|numer jednostki{{=}}<jakaś liczba całkowita dodatnia>}}}}. Te parametry przestrzenne zamiast w rodzicu w szablonie można podać w ramce dziecka, wtedy parametry dziecka mają pierwszeństwo. Parametry przestrzenne mogą mogą być podane w postaci przestrzeni przedmiotowej lub dyskusji, ale ta funkcja zawsze ją zamienia na przedmiotową. Przestrzeń nazw z parametrów nazw przestrzennych bazowych (bez numerka) może odpowiadać wartości przestrzeni głównej, to wtedy odpowiednia przestrzeń nazw z parametru nazwy jednostki się nie liczy w tej funkcji, aby się liczyła należy użyć funkcji {{Code|{{sr|#p["Nazwa przedmiotowej przestrzeni nazw"](frame,...)|p=Pudełko}}}}. Przestrzeń nazw z parametrów nazw przestrzennych numerkowych może odpowiadać wartości przestrzeni głównej, to wtedy odpowiednia przestrzeń nazw z parametru nazwy jednostki się liczy w tej funkcji, wtedy jest liczona nazwa przestrzeni nazw z tego parametru. Gdy parametry przestrzenne lub typ jednostki w drugim podejściu nie wskazują na przestrzeń główną, to wtedy działanie tej funkcji jest podobne do {{Code|{{sr|#p["Nazwa przedmiotowej przestrzeni nazw 2"](frame,...)|p=Pudełko}}}}. Definicja skrótowa funkcji: <syntaxhighlight lang="lua"> p["Nazwa przedmiotowej przestrzeni nazw 3"]=function(frame,czy_uwzglednic_alternatywna_nazwe,i)...end; </syntaxhighlight> Wtedy ciało funkcji tej, czyli jego definicja w środku, jest: <syntaxhighlight lang="lua"> -- Jest liczony numer parametru nazwy przestrzeni nazw, domyslnie chodzi tu o numer bazowy parametrów przestrzennych; local numer_jednostki=i or frame.args["numer jednostki"]; local liczba_numeru_jednostki=((numer_jednostki)and(tonumber(numer_jednostki)) or 0); local pudelko_pomocne_modul=require("Module:Pudełko/Pomocne"); -- Liczy nazwę przestrzeni nazw przedmiotową na podstawie podanych parametrów; return pudelko_pomocne_modul.Uzyskanie_nazw_jednostki(frame,1,liczba_numeru_jednostki,nil,1); </syntaxhighlight> Parametry funkcji: * {{Code|frame}} - tablica ramki tablicy transportu, * {{Code|czy_uwzglednic_alternatywna_nazwe}} - czy ma uwzględniać nazwę przestrzeni nazw domyślną szablonu, dostępne wartości: {{Code|false}}, w której nazwa domyślna nie jest uwzględniana wtedy, oraz {{Code|nil}} i {{Code|true}}, które oznaczają to samo, w tym jeżeli ona jest uwzględniana, wtedy jest brany parametr pierwszy dziecka, który musi istnieć przy takiej wartości tego parametru, tzn. {{Code|{{m|Pudełko|Nazwa przedmiotowej przestrzeni nazw 3|Dyskusja szablonu}}}} - ta nazwa domyślna zostanie zamieniona na przedmiotową, a jak ona by była przedmiotowa, to żadnej zamiany by nie było, a nazwa uzyskana z nazwy przestrzeni nazw z parametrów przestrzennych jest w takim przypadku błędna, to w takim razie brany jest ten parametr, a jeżeli ta nazwa domyślna jest błędna, czyli {{Code|{{m|Pudełko|Nazwa przedmiotowej przestrzeni nazw 3|Moja przestrzeń}}}}, wtedy funkcja zwraca stan błędu {{Code|(błąd)}}. * {{Code|i}} - numer zmiennej nazwy przestrzeni nazw. Funkcja wykorzystuje {{Code|{{sr|#p.Uzyskanie_nazw_jednostki(frame,...)|p=Pudełko/Pomocne}}}} do wyznaczania ogólnego nazwy przestrzeni nazw dla pozycji bazowej i numerkowej, tzn. dla pozycji: jeden, dwa, trzy,..., itd, i ich ogólnej. Parametr ramki tablicy transportu rodzica szablonu: * {{Code|nazwa przestrzeni nazw}}, {{Code|nazwa przestrzeni nazw 1}}, {{Code|nazwa przestrzeni nazw 2}}, {{Code|nazwa przestrzeni nazw 3}},..., {{Code|nazwa przestrzeni nazw i}} - nazwy przestrzeni nazw dla pozycji bazowej oraz zwykłej i ogólnej numerkowej, * {{Code|typ jednostki}}, {{Code|typ jednostki 1}}, {{Code|typ jednostki 2}}, {{Code|typ jednostki 3}},..., {{Code|typ jednostki i}} - typy jednostek, którym odpowiadają pewne przestrzenie przedmiotowe, dla pozycji bazowej, numerkowej i ogólnej. Parametry ramki tablicy transportu dziecka: * Parametry dziecka są takie same jak rodzica dla funkcji pudełkowej plus tu wymienione, * {{Code|numer jednostki}} - jak parametr {{Code|i}} nie został ustawiony, to wtedy liczy się ta zmienna. Przykłady: <syntaxhighlight lang="mediawiki"> {{Nazwa szablonu 1|nazwa przestrzeni nazw=Wikibooks|nazwa przestrzeni nazw=|nazwa przestrzeni nazw i=|nazwa jednostki=Dyskusja Wikibooks:Strona|nazwa jednostki 2=Dyskusja Wikibooks:Strona}} ---- {{Nazwa szablonu 2|nazwa przestrzeni nazw=Wikibooks|nazwa przestrzeni nazw 1=Szablon|nazwa przestrzeni nazw i=|nazwa jednostki 2=Dyskusja Wikibooks:Strona}} </syntaxhighlight> Kolejno wywołania te są równowaażne: <syntaxhighlight lang="mediawiki"> {{#invoke:Pudełko|Nazwa przedmiotowej przestrzeni nazw 3}} ---- {{#invoke:Pudełko|Nazwa przedmiotowej przestrzeni nazw 3|numer jednostki=2}} </syntaxhighlight> Na podstawie powyższego przykładu otrzymamy wynik o schemacie, nie wyniku, bo tam nie ma zmiennej {{Code|nazwa przestrzeni nazw 1}}, ale jest {{Code|nazwa przestrzeni nazw i}}: <syntaxhighlight lang="mediawiki"> <!-- Ale nie "nazwa przestrzeni nazw""; --> <!-- nazwa przestrzeni nazw=""; --> <!-- Czyli wynik: --> <!-- wynik pusty --> <!-- Widzimy, że wygenerowała się nazwa przestrzeni nazw, którą jest przestrzeń nazw główna, jest ciągiem pustym: ""; --> ---- <!-- Ale nie "Nazwa przestrzeni nazw 2", bo jej nie ma, ale za to istnieje "nazwa przestrzeni nazw i"; --> <!-- nazwa przestrzeni nazw 2=nazwa przestrzeni nazw i="", a nazwa jednostki 2="Dyskusja Wikibooks:Strona"; --> <!-- Czyli wynik: --> Wikibooks <!-- Widzimy, że wygenerowała się nazwa przestrzeni nazw, którą jest przestrzeń nieprogramowa, ale projektu, wychodząca z nazwy jednostek w tym przypadku z "nazwa jednostki 2"; --> </syntaxhighlight> Dla parametrów numerkowych nie jest brana w tym powyższym przykładzie zmienna {{Code|nazwa przestrzeni nazw 2}}, bo jej nie ma, ale za to jest {{Code|nazwa przestrzeni nazw i}}, bo ona występuje jako parametr domyślny ogólny dla parametrów numerkowych. Tytaj jest używana jest zmienna {{Code|nazwa jednostki 2}} do wygenerowania ostatecznego wyniku, bo jak można zauważyć, parametry przestrzenne wskazują na przestrzeń główną, a nazwy jednostek już nie. Dla parametrów bazowych mamy zmienną {{Code|nazwa przestrzeni nazw}}, ona jest pusta, więc to zostanie wziete do ostatecznego wyniku. Przykłady w wikikodzie: * {{Code|{{m|Pudełko|Nazwa przestrzeni nazw 3|nazwa przestrzeni nazw{{=}}|nazwa jednostki{{=}}Dyskusja Wikibooks:Strona}}}} → {{Tt|{{#invoke:Pudełko|Nazwa przestrzeni nazw 3|nazwa przestrzeni nazw=|nazwa jednostki=Dyskusja Wikibooks:Szablon}}}} * {{Code|{{m|Pudełko|Nazwa przestrzeni nazw 3|nazwa przestrzeni nazw 2{{=}}|nazwa jednostki 2{{=}}Dyskusja Wikibooks:Strona|numer jednostki{{=}}2}}}} → {{Tt|{{#invoke:Pudełko|Nazwa przestrzeni nazw 3|nazwa przestrzeni nazw 2=|nazwa jednostki 2=Dyskusja Wikibooks:Szablon|numer jednostki=2}}}} Powyżej dla przykładu podano parametry nie w rodzicu w szablonie, tylko w dziecku, jeśli chodzi o parametry nazw przestrzeni nazw, ale ich się za to nie powinno podawać w tych ramach, tylko w szablonach, w których wywoływane są te ramki pudełek {{Code|{{m|Pudełko}}}}, ale tak tutaj tak zrobiono by było najłatwiej sprawdzić działanie tego typu funkcji. Analogicznie możemy podawać parametry typu jednostki, np.: wywołaniu modułowym {{Code|{{m|Pudełko|Nazwa przedmiotowej przestrzeni nazw 3|typ jednostki 2{{=}}strona szablonu|numer jednostki{{=}}2}}}}, ale o tym więcej w rozdziałach {{Code|{{sr|# p["Przedmiotowy typ jednostki 3"](frame,i)|p=Pudełko}}}} w „{{sr|#Funkcje typu jednostki|p=Pudełko}}”, ale wtedy ta sama nazwa przestrzeni nazw reprezentowana przez {{Parametr|typ jednostki 2|strona szablonu}}, jest zamieniana na to samo, lepiej jest tutaj używać parametrów przestrzennych nazw niż typu jednostki, bo typ jednostki ma taką samą wartość dla przestrzeni przedmiotowej, co dyskusji. Tutaj parametr dyskusji typu jednostki bazowy i numerkowy ogólny, czy szczegółowy, nie gra roli, bo nawet, gdy wygenerujemy nazwę przestrzeni dyskusji za pomoca tego parametru, to i tak otrzymamy na samym końcu jego nazwę przedmiotową. Jeżeli typ jednostki bazowy wskazuje na przestrzeń nazw główną, wtedy się nie liczą parametry nazw jednostek, a na numerkowy, wtedy się liczy. Również parametry typu jednostki nie powinno się podawać w dziecku w ramce, tylko w rodzicu w szablonie jako parametry, w którym ta ramka jest wywoływana, ale tutaj podano jedynie dla przykładu, jak najłatwiej sprawdzić działanie tych parametrów tej funkcji. Najpierw w funkcji nagłówku brane są parametry nazw przestrzeni nazw, a jeżeli ich nie ma, to parametry typu jednostki, a jeżeli nie ma, to generowane są nazwy na podstawie aktualnego modułu. === {{Code|p["Nazwa przestrzeni nazw dyskusji 3"](frame,i)}} === Funkcja pisze nazwę przestrzeni nazw dyskusji jakikolwiek nazwy przestrzeni nazw (tzn. nazwę dyskusji nazwy przestrzenie nazw, czyli nie przedmiotowej, zamieniana jest na nią samą, czyli identyfikator przestrzeni się nie zmienia, a przedmiotową, nie dyskusji, przekształca się na dyskusji jej odpowiadającą, czyli w tym przypadku identyfikator przestrzeni zwiększa się o numer więcej), według, i nie zawsze tylko, podanej w zmiennej {{Code|nazwa przestrzeni nazw}} dla pozycja bazowej w podanych parametrach szablonu rodzicu ramki dziecka, lub dla innej pozycji należy parametr podawać w formie {{Code|nazwa przestrzeni nazw 1}}, {{Code|nazwa przestrzeni nazw 2}}, {{Code|nazwa przestrzeni nazw 3}},..., lub te parametry można podać w postaci ogólnej {{Code|nazwa przestrzeni nazw i}}. W tej funkcji trzeba też podawać parametry nazwy jednostek {{Code|nazwa jednostki}}, {{Code|nazwa jednostki 1}}, {{Code|nazwa jednostki 2}}, {{Code|nazwa jednostki 3}},... Parametry podaje się w parametrach rodzica wywołania tej funkcji {{Code|{{m|Pudełko|Nazwa przestrzeni nazw dyskusji 3}}}} (ale ich nie trzeba podawać w dziecku, ale można) i w parametrach dziecka, jeśli chodzi o zmienną {{Code|numer jednostki}}, czyli np.: {{Code|{{m|Pudełko|Nazwa przestrzeni nazw dyskusji 3|numer jednostki{{=}}<jakaś liczba całkowita dodatnia>}}}}. Te parametry przestrzenne zamiast w rodzicu w szablonie można podać w ramce dziecka, wtedy parametry dziecka mają pierwszeństwo. Przestrzeń nazw z parametrów nazw przestrzennych bazowych (bez numerka) może odpowiadać wartości przestrzeni głównej, to wtedy odpowiednia przestrzeń nazw z parametru nazwy jednostki się nie liczy w tej funkcji, aby się liczyła należy użyć funkcji {{Code|{{sr|#p["Nazwa przestrzeni nazw dyskusji"](frame,...)|p=Pudełko}}}}. Przestrzeń nazw z parametrów nazw przestrzennych numerkowych może odpowiadać wartości przestrzeni głównej, to wtedy odpowiednia przestrzeń nazw z parametru nazwy jednostki się liczy w tej funkcji, wtedy jest liczona nazwa przestrzeni nazw z tego parametru. Gdy parametry przestrzenne lub typ jednostki w drugim podejściu nie wskazują na przestrzeń główną, to wtedy działanie tej funkcji jest podobne do {{Code|{{sr|#p["Nazwa przestrzeni nazw dysskusji 2"](frame,...)|p=Pudełko}}}}. Definicja skrótowa funkcji: <syntaxhighlight lang="lua"> p["Nazwa przestrzeni nazw dyskusji 3"]=function(frame,czy_uwzglednic_alternatywna_nazwe,i)...end; </syntaxhighlight> Wtedy ciało funkcji tej, czyli jego definicja w środku, jest: <syntaxhighlight lang="lua"> -- Jest liczony numer parametru nazwy przestrzeni nazw, domyslnie chodzi tu o numer bazowy parametrów przestrzennych; local numer_jednostki=i or frame.args["numer jednostki"]; local liczba_numeru_jednostki=((numer_jednostki)and(tonumber(numer_jednostki)) or 0); local pudelko_pomocne_modul=require("Module:Pudełko/Pomocne"); -- Liczy nazwę przestrzeni nazw dyskusji na podstawie podanych parametrów; return pudelko_pomocne_modul.Uzyskanie_nazw_jednostki(frame,2,liczba_numeru_jednostki,nil,1); </syntaxhighlight> Parametry funkcji: * {{Code|frame}} - tablica ramki tablicy transportu, * {{Code|czy_uwzglednic_alternatywna_nazwe}} - czy ma uwzględniać nazwę przestrzeni nazw domyślną szablonu, dostępne wartości: {{Code|false}}, w której nazwa domyślna nie jest uwzględniana wtedy, oraz {{Code|nil}} i {{Code|true}}, które oznaczają to samo, w tym jeżeli ona jest uwzględniana, wtedy jest brany parametr pierwszy dziecka, który musi istnieć przy takiej wartości tego parametru, tzn. {{Code|{{m|Pudełko|Nazwa przestrzeni nazw dyskusji 3|Szablon}}}}, a nazwa uzyskana nazwy przestrzeni nazw jest w takim przypadku błędna, a jeżeli nazwa domyślna jest błędna, czyli {{Code|{{m|Pudełko|Nazwa przestrzeni nazw dyskusji 3|Moja przestrzeń}}}}, wtedy funkcja zwraca stan błędu {{Code|(błąd)}}. * {{Code|i}} - numer zmiennej nazwy przestrzeni nazw. Funkcja wykorzystuje {{Code|{{sr|#p.Uzyskanie_nazw_jednostki(frame,...)|p=Pudełko/Pomocne}}}} do wyznaczania ogólnego nazwy przestrzeni nazw dla pozycji bazowej i numerkowej, tzn. dla pozycji: jeden, dwa, trzy,..., itd, i ich ogólnej. Parametr ramki tablicy transportu rodzica szablonu: * {{Code|nazwa przestrzeni nazw}}, {{Code|nazwa przestrzeni nazw 1}}, {{Code|nazwa przestrzeni nazw 2}}, {{Code|nazwa przestrzeni nazw 3}},..., {{Code|nazwa przestrzeni nazw i}} - nazwy przestrzeni nazw dla pozycji bazowej oraz zwykłej i ogólnej numerkowej, * {{Code|nazwa jednostki}}, {{Code|nazwa jednostki 1}}, {{Code|nazwa jednostki 2}}, {{Code|nazwa jednostki 3}},... - nazwy jednostek dla pozycji bazowej i numerkowej, * {{Code|typ jednostki}}, {{Code|typ jednostki 1}}, {{Code|typ jednostki 2}}, {{Code|typ jednostki 3}},..., {{Code|typ jednostki i}} - typy jednostek, którym odpowiadają pewne przestrzenie przedmiotowe, dla pozycji bazowej, numerkowej i ogólnej. Parametry ramki tablicy transportu dziecka: * Parametry dziecka są takie same jak rodzica dla funkcji pudełkowej plus tu wymienione, * {{Code|numer jednostki}} - jak parametr {{Code|i}} nie został ustawiony, to wtedy liczy się ta zmienna. Przykłady: <syntaxhighlight lang="mediawiki"> {{Nazwa szablonu 1|nazwa przestrzeni nazw=Wikibooks|nazwa przestrzeni nazw=|nazwa przestrzeni nazw i=|nazwa jednostki=Szablon:Strona|nazwa jednostki 2=Wikibooks:Strona}} ---- {{Nazwa szablonu 2|nazwa przestrzeni nazw=Wikibooks|nazwa przestrzeni nazw 1=Szablon|nazwa przestrzeni nazw i=|nazwa jednostki 2=Wikibooks:Strona}} </syntaxhighlight> W dziecku powiedzmy jest wywołanie, i szukamy nazwy przestrzeni nazw o numerze dwa, która została podana, ale istnieje za to jej wersji ogólna {{Code|nazwa przestrzeni nazw i}} i domyślna {{Code|nazwa przestrzeni nazw}}, ale wtedy dla tego numerkowego liczy się to ogólne z {{Code| i}}, a ponieważ ta nazwa jest pusta, więc będziemy liczyli nazwę przestrzeni nazw z {{Code|nazwa jednostki 2}}: <syntaxhighlight lang="mediawiki"> {{#invoke:Pudełko|Nazwa przestrzeni nazw 3}} ---- {{#invoke:Pudełko|Nazwa przestrzeni nazw 3|numer jednostki=2}} </syntaxhighlight> Na podstawie powyższego przykładu otrzymamy wynik o schemacie, nie wyniku, bo tam nie ma zmiennej {{Code|nazwa przestrzeni nazw 1}}, ale jest {{Code|nazwa przestrzeni nazw i}}: <syntaxhighlight lang="mediawiki"> <!-- Ale nie "nazwa przestrzeni nazw""; --> <!-- nazwa przestrzeni nazw=""; --> <!-- Czyli wynik: --> Dyskusja <!-- Widzimy, że wygenerowała się nazwa przestrzeni nazw, którą jest przestrzeń nazw niegłówna, jest ciągiem niepustym; --> ---- <!-- Ale nie "Nazwa przestrzeni nazw 2", bo jej nie ma, ale za to istnieje "nazwa przestrzeni nazw i"; --> <!-- nazwa przestrzeni nazw 2=nazwa przestrzeni nazw i="", a nazwa jednostki 2="Wikibooks:Strona"; --> <!-- Czyli wynik: --> Dyskusja Wikibooks <!-- Widzimy, że wygenerowała się nazwa przestrzeni nazw, którą jest przestrzeń nieprogramowa, ale projektu, wychodząca z nazwy jednostek w tym przypadku z "nazwa jednostki 2"; --> </syntaxhighlight> Dla parametrów numerkowych nie jest brana w tym powyższym przykładzie zmienna {{Code|nazwa przestrzeni nazw 2}}, bo jej nie ma, ale za to jest {{Code|nazwa przestrzeni nazw i}}, bo ona występuje jako parametr domyślny ogólny dla parametrów numerkowych. Tytaj jest używana jest zmienna {{Code|nazwa jednostki 2}} do wygenerowania ostatecznego wyniku, bo jak można zauważyć, parametry przestrzenne wskazują na przestrzeń główną, a nazwy jednostek już nie. Dla parametrów bazowych mamy zmienną {{Code|nazwa przestrzeni nazw}}, ona jest pusta, więc to zostanie wziete do ostatecznego wyniku. Przykłady w wikikodzie: * {{Code|{{m|Pudełko|Nazwa przestrzeni nazw dyskusji 3|nazwa przestrzeni nazw{{=}}|nazwa jednostki{{=}}Wikibooks:Strona}}}} → {{Tt|{{#invoke:Pudełko|Nazwa przestrzeni nazw dyskusji 3|nazwa przestrzeni nazw=|nazwa jednostki=Wikibooks:Szablon}}}} * {{Code|{{m|Pudełko|Nazwa przestrzeni nazw dyskusji 3|nazwa przestrzeni nazw 2{{=}}|nazwa jednostki 2{{=}}Wikibooks:Strona|numer jednostki{{=}}2}}}} → {{Tt|{{#invoke:Pudełko|Nazwa przestrzeni nazw dyskusji 3|nazwa przestrzeni nazw 2=|nazwa jednostki 2=Wikibooks:Szablon|numer jednostki=2}}}} Powyżej dla przykładu podano parametry nie w rodzicu w szablonie, tylko w dziecku, jeśli chodzi o parametry nazw przestrzeni nazw i nazw jednostek, ale ich się za to nie powinno podawać w tych ramach, tylko w szablonach, w których wywoływane są te ramki pudełek {{Code|{{m|Pudełko}}}}, ale tak tutaj tak zrobiono by było najłatwiej sprawdzić działanie tego typu funkcji. Analogicznie możemy podawać parametry typu jednostki, np.: wywołaniu modułowym {{Code|{{m|Pudełko|Nazwa przestrzeni nazw dyskusji 3|typ jednostki 2{{=}}Podręcznik|nazwa jednostki 2{{=}}Szablon:Strona|numer jednostki{{=}}2}}}} (ale wtedy jest brana przestrzeń nazw z nazwy jednostki), ale o tym więcej w rozdziałach {{Code|{{sr|# p["Dyskusyjny typ jednostki 3"](frame,i)|p=Pudełko}}}} w „{{sr|#Funkcje typu jednostki|p=Pudełko}}”, one definiują przestrzenie dyskusji, ale można użyć parametru dyskusji typu jednostki z obojętnie jaką wartością niepustą, czy pustą, czy nawet jej nie podamy, wtedy wyświetli się nazwa przestrzeni nazw dyskusji. Jeżeli typ jednostki bazowy wskazuje na przestrzeń nazw główną, wtedy się nie liczą parametry nazw jednostek, a na numerkowy, wtedy się liczy. Również parametry typu jednostki nie powinno się podawać w dziecku w ramce, tylko w rodzicu w szablonie jako parametry, w którym ta ramka jest wywoływana, ale tutaj podano jedynie dla przykładu, jak najłatwiej sprawdzić działanie tych parametrów tej funkcji. Najpierw w funkcji nagłówku brane są parametry nazw przestrzeni nazw, a jeżeli ich nie ma, to parametry typu jednostki, a jeżeli nie ma lub parametry przestrzenne wskazują na przestrzeń główną, i nie ma nazwy jednostki, to generowane są nazwy tej funkcji na podstawie aktualnej strony. == Funkcje nazw jednostki trzeciej wersji == === {{Code|p["Nazwa jednostki 3"](frame,i)}} === === {{Code|p["Nazwa przedmiotowa jednostki 3"](frame,i)}} === === {{Code|p["Nazwa dyskusji jednostki 3"](frame,i)}} === == Funkcje typu jednostki == === {{Code|p["Typ jednostki"](frame,i)}} === === {{Code|p["Typ jednostki 2"](frame,i)}} === === {{Code|p["Typ jednostki 3"](frame,i)}} === === Funkcje typu jednostki przedmiotowe === ==== {{Code|p["Przedmiotowy typ jednostki"](frame,i)}} ==== ==== {{Code|p["Przedmiotowy typ jednostki 2"](frame,i)}} ==== ==== {{Code|p["Przedmiotowy typ jednostki 3"](frame,i)}} ==== === Fukcje typu jednostki dyskusji === ==== {{Code|p["Dyskusyjny typ jednostki"](frame,i)}} ==== ==== {{Code|p["Dyskusyjny typ jednostki 2"](frame,i)}} ==== ==== {{Code|p["Dyskusyjny typ jednostki 3"](frame,i)}} ==== == Funkcje chech pudełka == === {{Code|p["Cecha pudełka"](frame)}} === === {{Code|p["Przedmiotowa cecha pudełka"](frame)}} === === {{Code|p["Dyskusyjna cecha pudełka"](frame)}} === == Fukcje ogólnego pudełka == === {{Code|p["Ogólne pudełko"](frame)}} === == Funkcje ogólne == === {{Code|p["Tekst pudełka"](frame)}} === == Funkcje błędów pudełka == === {{Code|p["Błędy pudełka"](frame)}} === === {{Code|p["Przedmiotowe błędy pudełka"](frame)}} === === {{Code|p["Dyskusyjne błędy pudełka"](frame)}} === == Funkcje nazw stron == === {{Code|p["Nazwa strony głównej projektu"](frame,i)}} === === {{Code|p["Nazwa strony głównej dla dzieci projektu"](frame,i)}} === == Funkcje kodów == === {{Code|p["Kod języka"](frame,i)}} === === {{Code|p["Kod projektu"](frame,i)}} === === {{Code|p["Klucz projektu"](frame,i)}} === == Funkcje wiki == === {{Code|p["Inny niż język bieżący wiki"](frame)}} === === {{Code|p["Inne niż lokalne wiki"](frame)}} === === {{Code|p["Inne niż bieżące wiki"](frame)}} === == Funkcje typów parametrów, czy podane je == === {{Code|p["Podano parametry nienazwane"](frame)}} === === {{Code|p["Podano parametry numerowane"](frame)}} === === {{Code|p["Podano parametry nazwane"](frame)}} === == Funkcje kodów tego projektu == === {{Code|p["Kod projektu tego projektu"](frame)}} === === {{Code|p["Kod języka tego projektu"](frame)}} === === {{Code|p["Klucz projektu tego projektu"](frame)}} === == Funkcje stron == === {{Code|p["Strona główna tego projektu"](frame)}} === === {{Code|p["Strona główna dla dzieci tego projektu"](frame)}} === == Funkcje nazw stron drugiej wersji == === {{Code|p["Nazwa strony głównej dla dzieci projektu 2"](frame)}} === === {{Code| p["Nazwa strony głównej projektu 2"](frame)}} === {{BrClear}} <noinclude><!-- -->{{ProstaStronaKoniec}}<!-- -->{{Kategoria|Opisy funkcji, w Lua w Scribunto, w modułach}}<!-- --></noinclude> gerof9f1qc89uxzd3xzrpe03sgqgh5g 540436 540431 2026-04-24T02:29:42Z Persino 2851 /* {{Code|p["Nazwa przestrzeni nazw 3"](frame,i)}} */ 540436 wikitext text/x-wiki <noinclude>{{ProstaStronaStart | nagłówek = {{Podrozdział|{{ld2|Pudełko}}|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 pudelko_modul=require("Module:Pudełko"); </syntaxhighlight> dzięki, któremu można wypisywać funkcje należącego do niego. Posługuje się na parametrach pudełkowych {{Parametr|nazwa przestrzeni nazw}} (czy też bez numerka {{Parametr|nazwa przestrzeni nazw i}} dla tego numerowanego) lub te z numerkiem po jednej spacji w nich (ale nie dla tego z końcówką {{Code| i}}) mogą zostać użyte jako parametry szablonu. Moduł {{Code|{{ld2|Pudełko}}}} przedstawia funkcje nazw w oparciu o funkcje nazw {{Code|{{ld2|Nazwy}}}}, generuje on nazwy za pomocą parametrów pudełkowych podanych poniżej. Parametr {{Parametr|nazwa jednostki}} (lub parametr {{Parametr|cel}} dla numerka tego pierwszego, tego alternatywnego), lub te z numerkiem po jednej spacji w nazwie parametru, albo numerowane numerkami {{Code|1}}, {{Code|2}},..., mogą zostać użyte jako parametry szablonu. Parametry określające rodzaj jednostki {{Parametr|typ jednostki}} z {{Parametr|dyskusja typu jednostki}}, itp. w wersjach z numerkiem po jednej spacji w nich mogą zostać użyte jako parametry szablonu. A te tymi numerowanymi liczbami naturalnymi {{Tt|nazwy jednostki}} od jedynki wzwyż poprzez szablon, w którym są one użyte, one też mogą być użyte z dwukropkiem, te numerowane, na samym początku nazwy, wtedy one są traktowane jako pełne nazwy strony, i wtedy one nie zostaną z interpretowane, że do nich trzeba użyć parametr odpowiedni z nazwą przetrzeni nazw z tego numerowanego, czy ogólny, aby utworzyć znów inną pełną nazwę strony dla tego numerka. Zestawienie: * {{Code|nazwa przestrzeni nazw}} i {{Code|nazwa przestrzeni nazw i}} (ogólna nazwa przestrzeni nazw dla wszystkich numerków, i tych numerowanych jednostek) - i to pierwsze z numerkiem, tzn. {{Code|nazwa przestrzeni nazw 1}}, {{Code|nazwa przestrzeni nazw 2}}, ..., * {{Code|nazwa jednostki}} - i te z numerkiem: {{Code|nazwa jednostki 1}}, {{Code|nazwa jednostki 2}}, ..., lub gdy jest zamiast tego parametrem numerowany, {{Code|1}}, {{Code|2}},..., który dla tego pierwszego może być uznany jako: {{Code|cel}} {{=}} {{Code|1}}, * {{Code|typ jednostki}} (parametr bazowy) i {{Code|typ jednostki i}} (parametr domyślny numerkowy) - i te z numerkiem: {{Code|typ jednostki 1}}, {{Code|typ jednostki 2}}, ..., tzn. gdy chcemy określić z jakim typem jednostki mamy do czynienia w zależności do jakiej przestrzeni nazw należy, a w danej, czy jest on np. programowy, czy tylko jest opisem, jak to bywa w szablonach {{Np|Template|link=tak}}, podobnie jest w przypadku {{Np|Module|link=tak}}, czy jak jest w innych przestrzeniach nazw, ** {{Code|dyskusja typu jednostki}} (parametr bazowy) i {{Code|dyskusja typu jednostki i}} (parametr domyślny numerkowy) - i te z numerkiem: {{Code|dyskusja typu jednostki 1}}, {{Code|dyskusja typu jednostki 2}}, ..., gdy chcemy określić wartością niepustą,że chodzi tutaj o typ jednostki. == {{Code|p.CzyNiepoprawnaNazwa(nazwa_jednostki)}} == Funkcja sprawdzajaca, czy jest poprawnie podana nazwa jednostki, czy ma poprawną nazwę. Znakami tymi, z których nie powinna składać się nazwa jest {{Code|<nowiki>{}<>|[]#\n</nowiki>}} i dodatkowo znak {{Code|&#127;}} (kod {{Code|{{Nowiki|&#127;}}}}). Też nie może składać się z trzech znaków tyldy, tzn. {{Code|<nowiki>~~~</nowiki>}}. Również w swojej budowie nie może składać się ze kodów {{Strong|HTML}} literowych o wzorze {{Code|{{Nowiki|&(%a+);}}}}. Natomiast może składać się z {{Code|{{Nowiki|&#(%d+);}}}} i {{Code|{{Nowiki|&#x(%x+);}}}}, ale w pierw te kody muszą być zamienione na normalne znaki. Skrótowa definicja funkcji: <syntaxhighlight lang="lua"> function p.CzyNiepoprawnaNazwa(nazwa_jednostki)...end; </syntaxhighlight> Wtedy ciało funkcji tej, czyli jego definicja w środku, jest: <syntaxhighlight lang="lua"> -- Moduł: "Moduł:Html/dane", służy do ładowania znaku o kodzie HTML "&#127;"; local html_dane_modul=mw.loadData("Module:Html/dane"); return mw.ustring.match(nazwa_jednostki,"[{}<>|%[%]#\n"..html_dane_modul.znak_127.."]+") or mw.ustring.match(nazwa_jednostki,"~~~") or mw.ustring.match(nazwa_jednostki,"&(%a+);"); </syntaxhighlight> Parametry: * {{Code|nazwa_jednostki}} - nazwa jednostki do sprawdzenia. Przykłady: <syntaxhighlight lang="lua"> local pudelko_modul=require("Module:Pudełko"); -- Podana przykładowa niepoprawna nazwa jedostki local nazwa_jednostki="Nazwa pliku [[Nazwa linku w pliku]]"; -- Fukcja zwróci wartość: local czy_poprawna_nazwa=true; local czy_poprawna_nazwa=pudelko_modul.CzyNiepoprawnaNazwa(nazwa_jednostki); </syntaxhighlight> == Funkcje nazw przestrzeni nazw == === {{Code|p["Nazwa przestrzeni nazw"](frame,...)}} === Funkcja pisze nazwę przestrzeni nazw, niezależnie, czy to jest przedmiotowa, czy dyskusji, według podanej w zmiennej {{Code|nazwa przestrzeni nazw}} dla pozycja bazowej w podanych parametrach szablonu rodzicu ramki dziecka, lub dla innej pozycji należy parametr podawać w formie {{Code|nazwa przestrzeni nazw 1}}, {{Code|nazwa przestrzeni nazw 2}}, {{Code|nazwa przestrzeni nazw 3}},..., lub te parametry można podać w postaci ogólnej {{Code|nazwa przestrzeni nazw i}}. Parametry podaje się w parametrach rodzica wywołania tej funkcji {{Code|{{m|Pudełko|Nazwa przestrzeni nazw}}}} (ale ich nie trzeba podawać w dziecku, ale można) i w parametrach dziecka, jeśli chodzi o zmienną {{Code|numer jednostki}}, czyli np.: {{Code|{{m|Pudełko|Nazwa przestrzeni nazw|numer jednostki{{=}}<jakaś liczba całkowita dodatnia>}}}}. Te parametry przestrzenne zamiast w rodzicu w szablonie można podać w ramce dziecka, wtedy parametry dziecka mają pierwszeństwo. Przestrzeń nazw z parametrów nazw przestrzennych może odpowiadać wartości przestrzeni głównej, to wtedy odpowiednia przestrzeń nazw z parametru nazwy jednostki się nie liczy w tej funkcji, aby się liczyła należy użyć funkcji {{Code|{{sr|#p["Nazwa przestrzeni nazw 2"](frame,...)|p=Pudełko}}}}. Definicja skrótowa funkcji: <syntaxhighlight lang="lua"> p["Nazwa przestrzeni nazw"]=function(frame,czy_uwzglednic_alternatywna_nazwe,i)...end; </syntaxhighlight> Wtedy ciało funkcji tej, czyli jego definicja w środku, jest: <syntaxhighlight lang="lua"> -- Jest liczony numer parametru nazwy przestrzeni nazw, domyslnie chodzi tu o numer bazowy parametrów przestrzennych; local numer_jednostki=i or frame.args["numer jednostki"]; local liczba_numer_jednostki=((numer_jednostki)and(tonumber(numer_jednostki))or 0); local pudelko_pomocne_modul=require("Module:Pudełko/Pomocne"); -- Liczy nazwę przestrzeni nazw na podstawie podanych parametrów; return pudelko_pomocne_modul.Nazwa_przestrzeni_nazw(frame,0, czy_uwzglednic_alternatywna_nazwe,liczba_numer_jednostki); </syntaxhighlight> Parametry funkcji: * {{Code|frame}} - tablica ramki tablicy transportu, * {{Code|czy_uwzglednic_alternatywna_nazwe}} - czy ma uwzględniać nazwę przestrzeni nazw domyślną szablonu, dostępne wartości: {{Code|false}}, w której nazwa domyślna nie jest uwzględniana wtedy, oraz {{Code|nil}} i {{Code|true}}, które oznaczają to samo, w tym jeżeli ona jest uwzględniana, wtedy jest brany parametr pierwszy dziecka, który musi istnieć przy takiej wartości tego parametru, tzn. {{Code|{{m|Pudełko|Nazwa przestrzeni nazw|Szablon}}}}, a nazwa uzyskana nazwy przestrzeni nazw jest w takim przypadku błędna, a jeżeli nazwa domyślna jest błędna, czyli {{Code|{{m|Pudełko|Nazwa przestrzeni nazw|Moja przestrzeń}}}}, wtedy funkcja zwraca stan błędu {{Code|(błąd)}}. * {{Code|i}} - numer zmiennej nazwy przestrzeni nazw. Funkcja wykorzystuje {{Code|{{sr|#p.Nazwa_przestrzeni_nazw(frame,...)|p=Pudełko/Pomocne}}}} do wyznaczania ogólnego nazwy przestrzeni nazw dla pozycji bazowej i numerkowej, tzn. dla pozycji: jeden, dwa, trzy,..., itd, i ich ogólnej. Parametr ramki tablicy transportu rodzica szablonu: * {{Code|nazwa przestrzeni nazw}}, {{Code|nazwa przestrzeni nazw 1}}, {{Code|nazwa przestrzeni nazw 2}}, {{Code|nazwa przestrzeni nazw 3}},..., {{Code|nazwa przestrzeni nazw i}} - nazwy przestrzeni nazw dla pozycji bazowej oraz zwykłej i ogólnej numerkowej, * {{Code|typ jednostki}}, {{Code|typ jednostki 1}}, {{Code|typ jednostki 2}}, {{Code|typ jednostki 3}},..., {{Code|typ jednostki i}} - typy jednostek, którym odpowiadają pewne przestrzenie przedmiotowe, dla pozycji bazowej, numerkowej i ogólnej, ** {{Code|dyskusja typu jednostki}}, {{Code|dyskusja typu jednostki 1}}, {{Code|dyskusja typ jednostki 2}}, {{Code|dyskusja typ jednostki 3}},..., {{Code|dyskusja typ jednostki i}} - czy dany typ jednostki ma przedstawiać, jeśli niepusta, przestrzeń dyskusji dla pozycji bazowej, numerkowej i ogólnej. Parametry ramki tablicy transportu dziecka: * Parametry dziecka są takie same jak rodzica dla funkcji pudełkowej plus tu wymienione, * {{Code|numer jednostki}} - jak parametr {{Code|i}} nie został ustawiony, to wtedy liczy się ta zmienna. Przykłady: <syntaxhighlight lang="mediawiki"> {{Nazwa szablonu|nazwa przestrzeni nazw=Wikibooks|nazwa przestrzeni nazw 2=Szablon|nazwa przestrzeni nazw i=Moduł}} </syntaxhighlight> W dziecku powiedzmy jest wywołanie, i szukamy nazwy przestrzeni nazw o numerze dwa, która nie została podana, ale istnieje za to jej wersji ogólna {{Code|nazwa przestrzeni nazw i}} i domyślna {{Code|nazwa przestrzeni nazw}}: <syntaxhighlight lang="mediawiki"> {{#invoke:Pudełko|Nazwa przestrzeni nazw|numer jednostki=1}} </syntaxhighlight> Na podstawie powyższego przykładu otrzymamy wynik o schemacie, nie wyniku, bo tam nie ma zmiennej {{Code|nazwa przestrzeni nazw 1}}, ale jest {{Code|nazwa przestrzeni nazw i}}: <syntaxhighlight lang="mediawiki"> <!-- Ale nie "nazwa przestrzeni nazw", bo jej nie ma, ale za to istnieje "nazwa przestrzeni nazw i"; --> <!-- nazwa przestrzeni nazw 2=nazwa przestrzeni nazw i=Moduł; --> <!-- Czyli wynik: --> Moduł <!-- Widzimy, że wygenerowała się nazwa przestrzeni nazw, którą jest przestrzeń programowa, którą również jest "Szablon"; --> </syntaxhighlight> Nie jest brana w tym powyższym przykładzie zmienna {{Code|nazwa przestrzeni nazw}}, bo jej nie ma, ale za to jest {{Code|nazwa przestrzeni nazw i}}, bo ona występuje jako parametr domyślny ogólny dla parametrów numerkowych. Przykłady w wikikodzie: * {{Code|{{m|Pudełko|Nazwa przestrzeni nazw|numer jednostki{{=}}2}}}} → {{Tt|{{#invoke:Pudełko|Nazwa przestrzeni nazw|numer jednostki=2}}}} * {{Code|{{m|Pudełko|Nazwa przestrzeni nazw|Szablon|nazwa przestrzeni nazw i{{=}}Moja przestrzeń|numer jednostki{{=}}2}}}} → {{Tt|{{#invoke:Pudełko|Nazwa przestrzeni nazw|Szablon|nazwa przestrzeni nazw i=Moja przestrzeń|numer jednostki=2}}}} * {{Code|{{m|Pudełko|Nazwa przestrzeni nazw|nazwa przestrzeni nazw 2{{=}}Szablon|numer jednostki{{=}}2}}}} → {{Tt|{{#invoke:Pudełko|Nazwa przestrzeni nazw|nazwa przestrzeni nazw 2=Szablon|numer jednostki=2}}}} * {{Code|{{m|Pudełko|Nazwa przestrzeni nazw|nazwa przestrzeni nazw 2{{=}}Szablon|numer jednostki{{=}}2}}}} → {{Tt|{{#invoke:Pudełko|Nazwa przestrzeni nazw|nazwa przestrzeni nazw i=Szablon|numer jednostki=2}}}} * {{Code|{{m|Pudełko|Nazwa przestrzeni nazw|nazwa przestrzeni nazw{{=}}Szablon|numer jednostki{{=}}2}}}} → {{Tt|{{#invoke:Pudełko|Nazwa przestrzeni nazw|nazwa przestrzeni nazw=Szablon|numer jednostki=2}}}} Powyżej dla przykładu podano parametry nie w rodzicu w szablonie, tylko w dziecku, jeśli chodzi o parametry nazw przestrzeni nazw, ale ich się za to nie powinno podawać w tych ramach, tylko w szablonach, w których wywoływane są te ramki pudełek {{Code|{{m|Pudełko}}}}, ale tak tutaj tak zrobiono by było najłatwiej sprawdzić działanie tego typu funkcji. Analogicznie możemy podawać parametry typu jednostki, np.: wywołaniu modułowym {{Code|{{m|Pudełko|Nazwa przestrzeni nazw|typ jednostki 2{{=}}strona szablonu|numer jednostki{{=}}2}}}}, ale o tym więcej w rozdziałach {{Code|{{sr|# p["Typ jednostki"](frame,i)|p=Pudełko}}}} w „{{sr|#Funkcje typu jednostki|p=Pudełko}}”, on definiuje przestrzenie przedmiotowe, ale można użyć parametru dyskusji typu jednostki z wartością niepustą, wtedy wyświetli się nazwa przestrzeni nazw dyskusji. Również parametry typu jednostki nie powinno się podawać w dziecku w ramce, tylko w rodzicu w szablonie jako parametry, w którym ta ramka jest wywoływana, ale tutaj podano jedynie dla przykładu, jak najłatwiej sprawdzić działanie tych parametrów tej funkcji. Najpierw w funkcji nagłówku brane są parametry nazw przestrzeni nazw, a jeżeli ich nie ma, to parametry typu jednostki, a jeżeli nie ma, to generowane są nazwy na podstawie aktualnego modułu. === {{Code|p["Nazwa przedmiotowej przestrzeni nazw"](frame,...)}} === Funkcja pisze przedmiotową nazwę przestrzeni nazw jakikolwiek nazwy przestrzeni nazw (tzn. nazwę przedmiotową nazwy przestrzenie nazw, czyli nie dyskusji, zamieniana jest na nią samą, czyli identyfikator przestrzeni się nie zmienia, a dyskusji, nie przedmiotową, przekształca się na przedmiotową jej odpowiadającą, czyli w tym przypadku identyfikator przestrzeni zmniejsza się o numer mniej), według podanej w zmiennej {{Code|nazwa przestrzeni nazw}} dla pozycja bazowej w podanych parametrach szablonu rodzicu ramki dziecka, lub dla innej pozycji należy parametr podawać w formie {{Code|nazwa przestrzeni nazw 1}}, {{Code|nazwa przestrzeni nazw 2}}, {{Code|nazwa przestrzeni nazw 3}},..., lub te parametry można podać w postaci ogólnej {{Code|nazwa przestrzeni nazw i}}. Parametry podaje się w parametrach rodzica wywołania tej funkcji {{Code|{{m|Pudełko|Nazwa przedmiotowej przestrzeni nazw}}}} (ale ich nie trzeba podawać w dziecku, ale można) i w parametrach dziecka, jeśli chodzi o zmienną {{Code|numer jednostki}}, czyli np.: {{Code|{{m|Pudełko|Nazwa przedmiotowej przestrzeni nazw|numer jednostki{{=}}<jakaś liczba całkowita dodatnia>}}}}. Te parametry przestrzenne zamiast w rodzicu w szablonie można podać w ramce dziecka, wtedy parametry dziecka mają pierwszeństwo. Parametry przestrzenne mogą mogą być podane w postaci przestrzeni przedmiotowej lub dyskusji, ale ta funkcja zawsze ją zamienia na przedmiotową. Przestrzeń nazw z parametrów nazw przestrzennych może odpowiadać wartości przestrzeni głównej, to wtedy odpowiednia przestrzeń nazw z parametru nazwy jednostki się nie liczy w tej funkcji, aby się liczyła należy użyć funkcji {{Code|{{sr|#p["Nazwa przedmiotowej przestrzeni nazw 2"](frame,...)|p=Pudełko}}}}. Definicja skrótowa funkcji: <syntaxhighlight lang="lua"> p["Nazwa przedmiotowej przestrzeni nazw"]=function(frame,czy_uwzglednic_alternatywna_nazwe,i)...end; </syntaxhighlight> Wtedy ciało funkcji tej, czyli jego definicja w środku, jest: <syntaxhighlight lang="lua"> -- Jest liczony numer parametru nazwy przestrzeni nazw, domyslnie chodzi tu o numer bazowy parametrów przestrzennych; local numer_jednostki=i or frame.args["numer jednostki"]; local liczba_numer_jednostki=((numer_jednostki)and(tonumber(numer_jednostki))or 0); local pudelko_pomocne_modul=require("Module:Pudełko/Pomocne"); -- Liczy nazwę przestrzeni nazw przedmiotową na podstawie podanych parametrów; return pudelko_pomocne_modul.Nazwa_przestrzeni_nazw(frame,1, czy_uwzglednic_alternatywna_nazwe,liczba_numer_jednostki); </syntaxhighlight> Parametry funkcji: * {{Code|frame}} - tablica ramki tablicy transportu, * {{Code|czy_uwzglednic_alternatywna_nazwe}} - czy ma uwzględniać nazwę przestrzeni nazw domyślną szablonu, dostępne wartości: {{Code|false}}, w której nazwa domyślna nie jest uwzględniana wtedy, oraz {{Code|nil}} i {{Code|true}}, które oznaczają to samo, w tym jeżeli ona jest uwzględniana, wtedy jest brany parametr pierwszy dziecka, który musi istnieć przy takiej wartości tego parametru, tzn. {{Code|{{m|Pudełko|Nazwa przedmiotowej przestrzeni nazw|Dyskusja szablonu}}}} - ta nazwa domyślna zostanie zamieniona na przedmiotową, a jak ona by była przedmiotowa, to żadnej zamiany by nie było, a nazwa uzyskana z nazwy przestrzeni nazw z parametrów przestrzennych jest w takim przypadku błędna, to w takim razie brany jest ten parametr, a jeżeli ta nazwa domyślna jest błędna, czyli {{Code|{{m|Pudełko|Nazwa przedmiotowej przestrzeni nazw|Moja przestrzeń}}}}, wtedy funkcja zwraca stan błędu {{Code|(błąd)}}. * {{Code|i}} - numer zmiennej nazwy przestrzeni nazw. Funkcja wykorzystuje {{Code|{{sr|#p.Nazwa_przestrzeni_nazw(frame,...)|p=Pudełko/Pomocne}}}} do wyznaczania ogólnego nazwy przestrzeni nazw dla pozycji bazowej i numerkowej, tzn. dla pozycji: jeden, dwa, trzy,..., itd, i ich ogólnej. Parametr ramki tablicy transportu rodzica szablonu: * {{Code|nazwa przestrzeni nazw}}, {{Code|nazwa przestrzeni nazw 1}}, {{Code|nazwa przestrzeni nazw 2}}, {{Code|nazwa przestrzeni nazw 3}},..., {{Code|nazwa przestrzeni nazw i}} - nazwy przestrzeni nazw dla pozycji bazowej oraz zwykłej i ogólnej numerkowej, * {{Code|typ jednostki}}, {{Code|typ jednostki 1}}, {{Code|typ jednostki 2}}, {{Code|typ jednostki 3}},..., {{Code|typ jednostki i}} - typy jednostek, którym odpowiadają pewne przestrzenie przedmiotowe, dla pozycji bazowej, numerkowej i ogólnej. Parametry ramki tablicy transportu dziecka: * Parametry dziecka są takie same jak rodzica dla funkcji pudełkowej plus tu wymienione, * {{Code|numer jednostki}} - jak parametr {{Code|i}} nie został ustawiony, to wtedy liczy się ta zmienna. Przykłady: <syntaxhighlight lang="mediawiki"> {{Nazwa szablonu|nazwa przestrzeni nazw=Dyskusja Wikibooks|nazwa przestrzeni nazw 2=Dyskusja szablonu|nazwa przestrzeni nazw i=Dyskusja modułu}} </syntaxhighlight> W dziecku powiedzmy jest wywołanie, i szukamy nazwy przestrzeni nazw o numerze dwa, która nie została podana, ale istnieje za to jej wersji ogólna {{Code|nazwa przestrzeni nazw i}} i domyślna {{Code|nazwa przestrzeni nazw}}: <syntaxhighlight lang="mediawiki"> {{#invoke:Pudełko|Nazwa przedmiotowej przestrzeni nazw|numer jednostki=1}} </syntaxhighlight> Na podstawie powyższego przykładu otrzymamy wynik o schemacie, nie wyniku, bo tam nie ma zmiennej {{Code|nazwa przestrzeni nazw 1}}, ale jest {{Code|nazwa przestrzeni nazw i}}: <syntaxhighlight lang="mediawiki"> <!-- Ale nie "nazwa przestrzeni nazw", bo jej nie ma, ale za to istnieje "nazwa przestrzeni nazw i"; --> <!-- nazwa przestrzeni nazw 2=nazwa przestrzeni nazw i=Dyskusja modułu; --> <!-- Czyli wynik: --> Moduł <!-- Widzimy, że wygenerowała się nazwa przestrzeni nazw, którą jest przestrzeń przedmiotowa programowa przestrzeni dyskusji "Dyskusja modułu", którą również jest "Szablon" jego przestrzeni dyskusji "Dyskusja szablonu", a dla ich przestrzeni przedmiotowej, zamiast dyskusji, to samo przekształca się na to samo; --> </syntaxhighlight> Nie jest brana w tym powyższym przykładzie zmienna {{Code|nazwa przestrzeni nazw}}, bo jej nie ma, ale za to jest {{Code|nazwa przestrzeni nazw i}}, bo ona występuje jako parametr domyślny ogólny dla parametrów numerkowych. Przykłady w wikikodzie: * {{Code|{{m|Pudełko|Nazwa przedmiotowej przestrzeni nazw|numer jednostki{{=}}2}}}} → {{Tt|{{#invoke:Pudełko|Nazwa przedmiotowej przestrzeni nazw|numer jednostki=2}}}} * {{Code|{{m|Pudełko|Nazwa przedmiotowej przestrzeni nazw|Dyskusja szablonu|nazwa przestrzeni nazw i{{=}}Moja przestrzeń|numer jednostki{{=}}2}}}} → {{Tt|{{#invoke:Pudełko|Nazwa przedmiotowej przestrzeni nazw|Dyskusja szablonu|nazwa przestrzeni nazw i=Moja przestrzeń|numer jednostki=2}}}} * {{Code|{{m|Pudełko|Nazwa przedmiotowej przestrzeni nazw|nazwa przestrzeni nazw 2{{=}}Dyskusja szablonu|numer jednostki{{=}}2}}}} → {{Tt|{{#invoke:Pudełko|Nazwa przedmiotowej przestrzeni nazw|nazwa przestrzeni nazw 2=Dyskusja szablonu|numer jednostki=2}}}} * {{Code|{{m|Pudełko|Nazwa przedmiotowej przestrzeni nazw|nazwa przestrzeni nazw 2{{=}}Dyskusja szablonu|numer jednostki{{=}}2}}}} → {{Tt|{{#invoke:Pudełko|Nazwa przedmiotowej przestrzeni nazw|nazwa przestrzeni nazw i=Dyskusja szablonu|numer jednostki=2}}}} * {{Code|{{m|Pudełko|Nazwa przedmiotowej przestrzeni nazw|nazwa przestrzeni nazw{{=}}Dyskusja szablonu|numer jednostki{{=}}2}}}} → {{Tt|{{#invoke:Pudełko|Nazwa przedmiotowej przestrzeni nazw|nazwa przestrzeni nazw=Dyskusja szablonu|numer jednostki=2}}}} Powyżej dla przykładu podano parametry nie w rodzicu w szablonie, tylko w dziecku, jeśli chodzi o parametry nazw przestrzeni nazw, ale ich się za to nie powinno podawać w tych ramach, tylko w szablonach, w których wywoływane są te ramki pudełek {{Code|{{m|Pudełko}}}}, ale tak tutaj tak zrobiono by było najłatwiej sprawdzić działanie tego typu funkcji. Analogicznie możemy podawać parametry typu jednostki, np.: wywołaniu modułowym {{Code|{{m|Pudełko|Nazwa przedmiotowej przestrzeni nazw|typ jednostki 2{{=}}strona szablonu|numer jednostki{{=}}2}}}}, ale o tym więcej w rozdziałach {{Code|{{sr|# p["Przedmiotowy typ jednostki"](frame,i)|p=Pudełko}}}} w „{{sr|#Funkcje typu jednostki|p=Pudełko}}”, ale wtedy ta sama nazwa przestrzeni nazw reprezentowana przez {{Parametr|typ jednostki 2|strona szablonu}}, jest zamieniana na to samo, lepiej jest tutaj używać parametrów przestrzennych nazw niż typu jednostki, bo typ jednostki ma taką samą wartość dla przestrzeni przedmiotowej, co dyskusji. Tutaj parametr dyskusji typu jednostki bazowy i numerkowy ogólny, czy szczegółowy, nie gra roli, bo nawet, gdy wygenerujemy nazwę przestrzeni dyskusji za pomoca tego parametru, to i tak otrzymamy na samym końcu jego nazwę przedmiotową. Również parametry typu jednostki nie powinno się podawać w dziecku w ramce, tylko w rodzicu w szablonie jako parametry, w którym ta ramka jest wywoływana, ale tutaj podano jedynie dla przykładu, jak najłatwiej sprawdzić działanie tych parametrów tej funkcji. Najpierw w funkcji nagłówku brane są parametry nazw przestrzeni nazw, a jeżeli ich nie ma, to parametry typu jednostki, a jeżeli nie ma, to generowane są nazwy na podstawie aktualnego modułu. === {{Code|p["Nazwa przestrzeni nazw dyskusji"](frame,...)}} === Funkcja pisze nazwę przestrzeni nazw dyskusji jakikolwiek nazwy przestrzeni nazw (tzn. nazwę przedmiotową nazwy przestrzenie nazw, czyli nie dyskusji, zamieniana jest na dyskusji, czyli identyfikator przestrzeni się zmienia jeden wyżej, a dyskusji, nie przedmiotową, przekształca się na tą samą), według podanej w zmiennej {{Code|nazwa przestrzeni nazw}} dla pozycja bazowej w podanych parametrach szablonu rodzicu ramki dziecka, lub dla innej pozycji należy parametr podawać w formie {{Code|nazwa przestrzeni nazw 1}}, {{Code|nazwa przestrzeni nazw 2}}, {{Code|nazwa przestrzeni nazw 3}},..., lub te parametry można podać w postaci ogólnej {{Code|nazwa przestrzeni nazw i}}. Parametry podaje się w parametrach rodzica wywołania tej funkcji {{Code|{{m|Pudełko|Nazwa przestrzeni nazw dyskusji}}}} (ale ich nie trzeba podawać w dziecku, ale można) i w parametrach dziecka, jeśli chodzi o zmienną {{Code|numer jednostki}}, czyli np.: {{Code|{{m|Pudełko|Nazwa przestrzeni nazw dyskusji|numer jednostki{{=}}<jakaś liczba całkowita dodatnia>}}}}. Te parametry przestrzenne zamiast w rodzicu w szablonie można podać w ramce dziecka, wtedy parametry dziecka mają pierwszeństwo. Parametry przestrzenne mogą mogą być podane w postaci przestrzeni przedmiotowej lub dyskusji, ale ta funkcja zawsze ją zamienia na dyskusji. Przestrzeń nazw z parametrów nazw przestrzennych może odpowiadać wartości przestrzeni głównej, to wtedy odpowiednia przestrzeń nazw z parametru nazwy jednostki się nie liczy w tej funkcji, aby się liczyła należy użyć funkcji {{Code|{{sr|#p["Nazwa przestrzeni nazw dyskusji 2"](frame,...)|p=Pudełko}}}}. Definicja skrótowa funkcji: <syntaxhighlight lang="lua"> p["Nazwa przestrzeni nazw dyskusji"]=function(frame,czy_uwzglednic_alternatywna_nazwe,i)...end; </syntaxhighlight> Wtedy ciało funkcji tej, czyli jego definicja w środku, jest: <syntaxhighlight lang="lua"> -- Jest liczony numer parametru nazwy przestrzeni nazw, domyslnie chodzi tu o numer bazowy parametrów przestrzennych; local numer_jednostki=i or frame.args["numer jednostki"]; local liczba_numer_jednostki=((numer_jednostki)and(tonumber(numer_jednostki))or 0); local pudelko_pomocne_modul=require("Module:Pudełko/Pomocne"); -- Liczy nazwę przestrzeni nazw dyskusji na podstawie podanych parametrów; return pudelko_pomocne_modul.Nazwa_przestrzeni_nazw(frame,2, czy_uwzglednic_alternatywna_nazwe,liczba_numer_jednostki); </syntaxhighlight> Parametry funkcji: * {{Code|frame}} - tablica ramki tablicy transportu, * {{Code|czy_uwzglednic_alternatywna_nazwe}} - czy ma uwzględniać nazwę przestrzeni nazw domyślną szablonu, dostępne wartości: {{Code|false}}, w której nazwa domyślna nie jest uwzględniana wtedy, oraz {{Code|nil}} i {{Code|true}}, które oznaczają to samo, w tym jeżeli ona jest uwzględniana, wtedy jest brany parametr pierwszy dziecka, który musi istnieć przy takiej wartości tego parametru, tzn. {{Code|{{m|Pudełko|Nazwa przestrzeni nazw dyskusji|Szablon}}}} - ta nazwa domyślna zostanie przekształcona na dyskusji, a jeżeli ona by była dyskusji, to nie byłoby żadnego przekształcenia, a nazwa uzyskana nazwy przestrzeni nazw z parametrów przestrzennych jest w takim przypadku błędna, to w takim razie brany jest ten parametr, a jeżeli nazwa domyślna jest błędna, czyli {{Code|{{m|Pudełko|Nazwa przestrzeni nazw dyskusji|Moja przestrzeń}}}}, wtedy funkcja zwraca stan błędu {{Code|(błąd)}}. * {{Code|i}} - numer zmiennej nazwy przestrzeni nazw. Funkcja wykorzystuje {{Code|{{sr|#p.Nazwa_przestrzeni_nazw(frame,...)|p=Pudełko/Pomocne}}}} do wyznaczania ogólnego nazwy przestrzeni nazw dla pozycji bazowej i numerkowej, tzn. dla pozycji: jeden, dwa, trzy,..., itd, i ich ogólnej. Parametr ramki tablicy transportu rodzica szablonu: * {{Code|nazwa przestrzeni nazw}}, {{Code|nazwa przestrzeni nazw 1}}, {{Code|nazwa przestrzeni nazw 2}}, {{Code|nazwa przestrzeni nazw 3}},..., {{Code|nazwa przestrzeni nazw i}} - nazwy przestrzeni nazw dla pozycji bazowej oraz zwykłej i ogólnej numerkowej, * {{Code|typ jednostki}}, {{Code|typ jednostki 1}}, {{Code|typ jednostki 2}}, {{Code|typ jednostki 3}},..., {{Code|typ jednostki i}} - typy jednostek, którym odpowiadają pewne przestrzenie przedmiotowe, dla pozycji bazowej, numerkowej i ogólnej. Parametry ramki tablicy transportu dziecka: * Parametry dziecka są takie same jak rodzica dla funkcji pudełkowej plus tu wymienione, * {{Code|numer jednostki}} - jak parametr {{Code|i}} nie został ustawiony, to wtedy liczy się ta zmienna. Przykłady: <syntaxhighlight lang="mediawiki"> {{Nazwa szablonu|nazwa przestrzeni nazw=Wikibooks|nazwa przestrzeni nazw 2=Szablon|nazwa przestrzeni nazw i=Moduł}} </syntaxhighlight> W dziecku powiedzmy jest wywołanie, i szukamy nazwy przestrzeni nazw o numerze dwa, która nie została podana, ale istnieje za to jej wersji ogólna {{Code|nazwa przestrzeni nazw i}} i domyślna {{Code|nazwa przestrzeni nazw}}: <syntaxhighlight lang="mediawiki"> {{#invoke:Pudełko|Nazwa przestrzeni nazw dyskusji|numer jednostki=1}} </syntaxhighlight> Na podstawie powyższego przykładu otrzymamy wynik o schemacie, nie wyniku, bo tam nie ma zmiennej {{Code|nazwa przestrzeni nazw 1}}, ale jest {{Code|nazwa przestrzeni nazw i}}: <syntaxhighlight lang="mediawiki"> <!-- Ale nie "nazwa przestrzeni nazw", bo jej nie ma, ale za to istnieje "nazwa przestrzeni nazw i"; --> <!-- nazwa przestrzeni nazw 2=nazwa przestrzeni nazw i=Moduł; --> <!-- Czyli wynik: --> Dyskusja modułu <!-- Widzimy, że wygenerowała się nazwa przestrzeni nazw, którą jest przestrzeń dyskusji przestrzeni programowej przestrzeni przedmiotowej "Moduł", którą również jest "Szablon" jego przestrzeni dyskusji "Dyskusja szablonu", a dla ich przestrzeni przedmiotowej, zamiast dyskusji, to przekształca się na dyskusji jej odpowiadającą; --> </syntaxhighlight> Nie jest brana w tym powyższym przykładzie zmienna {{Code|nazwa przestrzeni nazw}}, bo jej nie ma, ale za to jest {{Code|nazwa przestrzeni nazw i}}, bo ona występuje jako parametr domyślny ogólny dla parametrów numerkowych. Przykłady w wikikodzie: * {{Code|{{m|Pudełko|Nazwa przestrzeni nazw dyskusji|numer jednostki{{=}}2}}}} → {{Tt|{{#invoke:Pudełko|Nazwa przestrzeni nazw dyskusji|numer jednostki=2}}}} * {{Code|{{m|Pudełko|Nazwa przestrzeni nazw dyskusji|Szablon|nazwa przestrzeni nazw i{{=}}Moja przestrzeń|numer jednostki{{=}}2}}}} → {{Tt|{{#invoke:Pudełko|Nazwa przestrzeni nazw dyskusji|Szablon|nazwa przestrzeni nazw i=Moja przestrzeń|numer jednostki=2}}}} * {{Code|{{m|Pudełko|Nazwa przestrzeni nazw dyskusji|nazwa przestrzeni nazw 2{{=}}Szablon|numer jednostki{{=}}2}}}} → {{Tt|{{#invoke:Pudełko|Nazwa przestrzeni nazw dyskusji|nazwa przestrzeni nazw 2=Szablon|numer jednostki=2}}}} * {{Code|{{m|Pudełko|Nazwa przestrzeni nazw dyskusji|nazwa przestrzeni nazw 2{{=}}Szablon|numer jednostki{{=}}2}}}} → {{Tt|{{#invoke:Pudełko|Nazwa przestrzeni nazw dyskusji|nazwa przestrzeni nazw i=Szablon|numer jednostki=2}}}} * {{Code|{{m|Pudełko|Nazwa przestrzeni nazw dyskusji|nazwa przestrzeni nazw{{=}}Szablon|numer jednostki{{=}}2}}}} → {{Tt|{{#invoke:Pudełko|Nazwa przestrzeni nazw dyskusji|nazwa przestrzeni nazw=Szablon|numer jednostki=2}}}} Powyżej dla przykładu podano parametry nie w rodzicu w szablonie, tylko w dziecku, jeśli chodzi o parametry nazw przestrzeni nazw, ale ich się za to nie powinno podawać w tych ramach, tylko w szablonach, w których wywoływane są te ramki pudełek {{Code|{{m|Pudełko}}}}, ale tak tutaj tak zrobiono by było najłatwiej sprawdzić działanie tego typu funkcji. Analogicznie możemy podawać parametry typu jednostki, np.: wywołaniu modułowym {{Code|{{m|Pudełko|Nazwa przestrzeni nazw dyskusji|typ jednostki 2{{=}}strona szablonu|numer jednostki{{=}}2}}}}, ale o tym więcej w rozdziałach {{Code|{{sr|# p["Dyskusyjny typ jednostki"](frame,i)|p=Pudełko}}}} w „{{sr|#Funkcje typu jednostki|p=Pudełko}}”, ale wtedy nazwa przestrzeni nazw reprezentowana przez {{Parametr|typ jednostki 2|strona szablonu}}, jest zamieniana na nazwę przestrzeni nazw dyskusji. Parametr dyskusji typu jednostki bazowy lub dla danego numerka ogólny, czy szczegółowy, nie gra roli. Również parametry typu jednostki nie powinno się podawać w dziecku w ramce, tylko w rodzicu w szablonie jako parametry, w którym ta ramka jest wywoływana, ale tutaj podano jedynie dla przykładu, jak najłatwiej sprawdzić działanie tych parametrów tej funkcji. Najpierw w funkcji nagłówku brane są parametry nazw przestrzeni nazw, a jeżeli ich nie ma, to parametry typu jednostki, a jeżeli nie ma, to generowane są nazwy na podstawie aktualnego modułu. == Funkcje nazw przestrzeni nazw drugiej wersji == === {{Code|p["Nazwa przestrzeni nazw 2"](frame,...)}} === Funkcja pisze nazwę przestrzeni nazw, niezależnie, czy to jest przedmiotowa, czy dyskusji, według, i nie zawsze tylko, podanej w zmiennej {{Code|nazwa przestrzeni nazw}} dla pozycja bazowej w podanych parametrach szablonu rodzicu ramki dziecka, lub dla innej pozycji należy parametr podawać w formie {{Code|nazwa przestrzeni nazw 1}}, {{Code|nazwa przestrzeni nazw 2}}, {{Code|nazwa przestrzeni nazw 3}},..., lub te parametry można podać w postaci ogólnej {{Code|nazwa przestrzeni nazw i}}. W tej funkcji trzeba też podawać parametry nazwy jednostek {{Code|nazwa jednostki}}, {{Code|nazwa jednostki 1}}, {{Code|nazwa jednostki 2}}, {{Code|nazwa jednostki 3}},... Parametry podaje się w parametrach rodzica wywołania tej funkcji {{Code|{{m|Pudełko|Nazwa przestrzeni nazw 2}}}} (ale ich nie trzeba podawać w dziecku, ale można) i w parametrach dziecka, jeśli chodzi o zmienną {{Code|numer jednostki}}, czyli np.: {{Code|{{m|Pudełko|Nazwa przestrzeni nazw 2|numer jednostki{{=}}<jakaś liczba całkowita dodatnia>}}}}. Te parametry przestrzenne zamiast w rodzicu w szablonie można podać w ramce dziecka, wtedy parametry dziecka mają pierwszeństwo. Przestrzeń nazw z parametrów nazw przestrzennych może odpowiadać wartości przestrzeni głównej, to wtedy odpowiednia przestrzeń nazw z parametru nazwy jednostki się liczy w tej funkcji, wtedy jest liczona nazwa przestrzeni nazw z tego parametru. Gdy parametry przestrzenne lub typ jednostki w drugim podejściu nie wskazują na przestrzeń główną, to wtedy działanie tej funkcji jest podobne do {{Code|{{sr|#p["Nazwa przestrzeni nazw"](frame,...)|p=Pudełko}}}}. Definicja skrótowa funkcji: <syntaxhighlight lang="lua"> p["Nazwa przestrzeni nazw 2"]=function(frame,czy_uwzglednic_alternatywna_nazwe,i)...end; </syntaxhighlight> Wtedy ciało funkcji tej, czyli jego definicja w środku, jest: <syntaxhighlight lang="lua"> local pudelko_pomocne_modul=require("Module:Pudełko/Pomocne"); -- Liczy nazwę przestrzeni nazw, jeżeli z parametrów przestrzennych przestrzeń wskazuje na główną, to wtedy jest liczona przestrzeń nazw z nazwy jednostki; return pudelko_pomocne_modul.Nazwa_przestrzeni_nazw_2(frame,czy_uwzglednic_alternatywna_nazwe,i) </syntaxhighlight> Parametry funkcji: * {{Code|frame}} - tablica ramki tablicy transportu, * {{Code|czy_uwzglednic_alternatywna_nazwe}} - czy ma uwzględniać nazwę przestrzeni nazw domyślną szablonu, dostępne wartości: {{Code|false}}, w której nazwa domyślna nie jest uwzględniana wtedy, oraz {{Code|nil}} i {{Code|true}}, które oznaczają to samo, w tym jeżeli ona jest uwzględniana, wtedy jest brany parametr pierwszy dziecka, który musi istnieć przy takiej wartości tego parametru, tzn. {{Code|{{m|Pudełko|Nazwa przestrzeni nazw 2|Szablon}}}}, a nazwa uzyskana nazwy przestrzeni nazw jest w takim przypadku błędna, a jeżeli nazwa domyślna jest błędna, czyli {{Code|{{m|Pudełko|Nazwa przestrzeni nazw 2|Moja przestrzeń}}}}, wtedy funkcja zwraca stan błędu {{Code|(błąd)}}. * {{Code|i}} - numer zmiennej nazwy przestrzeni nazw. Funkcja wykorzystuje {{Code|{{sr|#p.Nazwa_przestrzeni_nazw_2(frame,...)|p=Pudełko/Pomocne}}}} do wyznaczania ogólnego nazwy przestrzeni nazw dla pozycji bazowej i numerkowej, tzn. dla pozycji: jeden, dwa, trzy,..., itd, i ich ogólnej. Parametr ramki tablicy transportu rodzica szablonu: * {{Code|nazwa przestrzeni nazw}}, {{Code|nazwa przestrzeni nazw 1}}, {{Code|nazwa przestrzeni nazw 2}}, {{Code|nazwa przestrzeni nazw 3}},..., {{Code|nazwa przestrzeni nazw i}} - nazwy przestrzeni nazw dla pozycji bazowej oraz zwykłej i ogólnej numerkowej, * {{Code|nazwa jednostki}}, {{Code|nazwa jednostki 1}}, {{Code|nazwa jednostki 2}}, {{Code|nazwa jednostki 3}},... - nazwy jednostek dla pozycji bazowej i numerkowej, * {{Code|typ jednostki}}, {{Code|typ jednostki 1}}, {{Code|typ jednostki 2}}, {{Code|typ jednostki 3}},..., {{Code|typ jednostki i}} - typy jednostek, którym odpowiadają pewne przestrzenie przedmiotowe, dla pozycji bazowej, numerkowej i ogólnej, ** {{Code|dyskusja typu jednostki}}, {{Code|dyskusja typu jednostki 1}}, {{Code|dyskusja typ jednostki 2}}, {{Code|dyskusja typ jednostki 3}},..., {{Code|dyskusja typ jednostki i}} - czy dany typ jednostki ma przedstawiać, jeśli niepusta, przestrzeń dyskusji dla pozycji bazowej, numerkowej i ogólnej. Parametry ramki tablicy transportu dziecka: * Parametry dziecka są takie same jak rodzica dla funkcji pudełkowej plus tu wymienione, * {{Code|numer jednostki}} - jak parametr {{Code|i}} nie został ustawiony, to wtedy liczy się ta zmienna. Przykłady: <syntaxhighlight lang="mediawiki"> {{Nazwa szablonu|nazwa przestrzeni nazw=Wikibooks|nazwa przestrzeni nazw 1=Szablon|nazwa przestrzeni nazw i=|nazwa jednostki 2=Wikibooks:Strona}} </syntaxhighlight> W dziecku powiedzmy jest wywołanie, i szukamy nazwy przestrzeni nazw o numerze dwa, która została podana, ale istnieje za to jej wersji ogólna {{Code|nazwa przestrzeni nazw i}} i domyślna {{Code|nazwa przestrzeni nazw}}, ale wtedy dla tego numerkowego liczy się to ogólne z {{Code| i}}, a ponieważ ta nazwa jest pusta, więc będziemy liczyli nazwę przestrzeni nazw z {{Code|nazwa jednostki 2}}: <syntaxhighlight lang="mediawiki"> {{#invoke:Pudełko|Nazwa przestrzeni nazw 2|numer jednostki=2}} </syntaxhighlight> Na podstawie powyższego przykładu otrzymamy wynik o schemacie, nie wyniku, bo tam nie ma zmiennej {{Code|nazwa przestrzeni nazw 1}}, ale jest {{Code|nazwa przestrzeni nazw i}}: <syntaxhighlight lang="mediawiki"> <!-- Ale nie "nazwa przestrzeni nazw 2", bo jej nie ma, ale za to istnieje "nazwa przestrzeni nazw i"; --> <!-- nazwa przestrzeni nazw 2=nazwa przestrzeni nazw i="", a nazwa jednostki 2="Wikibooks:Strona"; --> <!-- Czyli wynik: --> Wikibooks <!-- Widzimy, że wygenerowała się nazwa przestrzeni nazw, którą jest przestrzeń nieprogramowa, ale projektu, wychodząca z nazwy jednostek w tym przypadku z "nazwa jednostki 2"; --> </syntaxhighlight> Nie jest brana w tym powyższym przykładzie zmienna {{Code|nazwa przestrzeni nazw}}, bo jej nie ma, ale za to jest {{Code|nazwa przestrzeni nazw i}}, bo ona występuje jako parametr domyślny ogólny dla parametrów numerkowych. Tytaj jest używana jest zmienna {{Code|nazwa jednostki 2}} do wygenerowania ostatecznego wyniku, bo jak można zauważyć, parametry przestrzenne wskazują na przestrzeń główną, a nazwy jednostek już nie. Przykłady w wikikodzie: * {{Code|{{m|Pudełko|Nazwa przestrzeni nazw 2|numer jednostki{{=}}2}}}} → {{Tt|{{#invoke:Pudełko|Nazwa przestrzeni nazw 2|numer jednostki=2}}}} * {{Code|{{m|Pudełko|Nazwa przestrzeni nazw 2|Szablon|nazwa przestrzeni nazw i{{=}}Moja przestrzeń|numer jednostki{{=}}2}}}} → {{Tt|{{#invoke:Pudełko|Nazwa przestrzeni nazw 2|Szablon|nazwa przestrzeni nazw i=Moja przestrzeń|numer jednostki=2}}}} * {{Code|{{m|Pudełko|Nazwa przestrzeni nazw 2|nazwa przestrzeni nazw 2{{=}}|nazwa jednostki 2{{=}}Szablon:Strona|numer jednostki{{=}}2}}}} → {{Tt|{{#invoke:Pudełko|Nazwa przestrzeni nazw 2|nazwa przestrzeni nazw 2=|nazwa jednostki 2=Szablon:Strona|numer jednostki=2}}}} * {{Code|{{m|Pudełko|Nazwa przestrzeni nazw 2|nazwa przestrzeni nazw i{{=}}|nazwa jednostki 2{{=}}Szablon:Strona|numer jednostki{{=}}2}}}} → {{Tt|{{#invoke:Pudełko|Nazwa przestrzeni nazw 2|nazwa przestrzeni nazw i=|nazwa jednostki 2=Szablon:Strona|numer jednostki=2}}}} * {{Code|{{m|Pudełko|Nazwa przestrzeni nazw 2|Szablon|nazwa przestrzeni nazw{{=}}|nazwa jednostki 2{{=}}Wikibooks:Strona|numer jednostki{{=}}2}}}} → {{Tt|{{#invoke:Pudełko|Nazwa przestrzeni nazw 2|Szablon|nazwa przestrzeni nazw=|nazwa jednostki 2=Wikibooks:Strona|numer jednostki=2}}}} Powyżej dla przykładu podano parametry nie w rodzicu w szablonie, tylko w dziecku, jeśli chodzi o parametry nazw przestrzeni nazw i nazw jednostek, ale ich się za to nie powinno podawać w tych ramach, tylko w szablonach, w których wywoływane są te ramki pudełek {{Code|{{m|Pudełko}}}}, ale tak tutaj tak zrobiono by było najłatwiej sprawdzić działanie tego typu funkcji. Analogicznie możemy podawać parametry typu jednostki, np.: wywołaniu modułowym {{Code|{{m|Pudełko|Nazwa przestrzeni nazw 2|typ jednostki 2{{=}}Podręcznik|nazwa jednostki 2{{=}}Szablon:Strona|numer jednostki{{=}}2}}}} (ale wtedy jest brana przestrzeń nazw z nazwy jednostki), ale o tym więcej w rozdziałach {{Code|{{sr|#p["Typ jednostki 2"](frame,i)|p=Pudełko}}}} w „{{sr|#Funkcje typu jednostki|p=Pudełko}}”, on definiuje przestrzenie przedmiotowe, ale można użyć parametru dyskusji typu jednostki z wartością niepustą, wtedy wyświetli się nazwa przestrzeni nazw dyskusji. Jeżeli typ jednostki wskazuje na przestrzeń nazw główną, wtedy się liczą parametry nazw jednostek. Również parametry typu jednostki nie powinno się podawać w dziecku w ramce, tylko w rodzicu w szablonie jako parametry, w którym ta ramka jest wywoływana, ale tutaj podano jedynie dla przykładu, jak najłatwiej sprawdzić działanie tych parametrów tej funkcji. Najpierw w funkcji nagłówku brane są parametry nazw przestrzeni nazw, a jeżeli ich nie ma, to parametry typu jednostki, a jeżeli nie ma lub parametry przestrzenne wskazują na przestrzeń główną, i nie ma nazwy jednostki, to generowane są nazwy tej funkcji na podstawie aktualnej strony. === {{Code|p["Nazwa przedmiotowej przestrzeni nazw 2"](frame,...)}} === Funkcja pisze przedmiotową nazwę przestrzeni nazw jakikolwiek nazwy przestrzeni nazw (tzn. nazwę przedmiotową nazwy przestrzenie nazw, czyli nie dyskusji, zamieniana jest na nią samą, czyli identyfikator przestrzeni się nie zmienia, a dyskusji, nie przedmiotową, przekształca się na przedmiotową jej odpowiadającą, czyli w tym przypadku identyfikator przestrzeni zmniejsza się o numer mniej), według, i nie zawsze tylko, podanej w zmiennej {{Code|nazwa przestrzeni nazw}} dla pozycja bazowej w podanych parametrach szablonu rodzicu ramki dziecka, lub dla innej pozycji należy parametr podawać w formie {{Code|nazwa przestrzeni nazw 1}}, {{Code|nazwa przestrzeni nazw 2}}, {{Code|nazwa przestrzeni nazw 3}},..., lub te parametry można podać w postaci ogólnej {{Code|nazwa przestrzeni nazw i}}. W tej funkcji trzeba też podawać parametry nazwy jednostek {{Code|nazwa jednostki}}, {{Code|nazwa jednostki 1}}, {{Code|nazwa jednostki 2}}, {{Code|nazwa jednostki 3}},... Parametry podaje się w parametrach rodzica wywołania tej funkcji {{Code|{{m|Pudełko|Nazwa przedmiotowej przestrzeni nazw 2}}}} (ale ich nie trzeba podawać w dziecku, ale można) i w parametrach dziecka, jeśli chodzi o zmienną {{Code|numer jednostki}}, czyli np.: {{Code|{{m|Pudełko|Nazwa przedmiotowej przestrzeni nazw 2|numer jednostki{{=}}<jakaś liczba całkowita dodatnia>}}}}. Te parametry przestrzenne zamiast w rodzicu w szablonie można podać w ramce dziecka, wtedy parametry dziecka mają pierwszeństwo. Przestrzeń nazw z parametrów nazw przestrzennych po przekształceniu na przedmiotową może odpowiadać wartości przestrzeni głównej, to wtedy odpowiednia przestrzeń nazw z parametru nazwy jednostki się liczy w tej funkcji, wtedy jest liczona nazwa przestrzeni nazw z tego parametru. Gdy parametry przestrzenne lub typ jednostki w drugim podejściu nie wskazują na przestrzeń główną, to wtedy działanie tej funkcji jest podobne do {{Code|{{sr|#p["Nazwa przedmiotowej przestrzeni nazw"](frame,...)|p=Pudełko}}}}. Definicja skrótowa funkcji: <syntaxhighlight lang="lua"> p["Nazwa przedmiotowej przestrzeni nazw 2"]=function(frame,czy_uwzglednic_alternatywna_nazwe,i)...end; </syntaxhighlight> Wtedy ciało funkcji tej, czyli jego definicja w środku, jest: <syntaxhighlight lang="lua"> local pudelko_pomocne_modul=require("Module:Pudełko/Pomocne"); return pudelko_pomocne_modul.Nazwa_przestrzeni_nazw_przedmiotowa_dyskusji_2(frame,czy_uwzglednic_alternatywna_nazwe,i,"przedmiotowa"); </syntaxhighlight> Parametry funkcji: * {{Code|frame}} - tablica ramki tablicy transportu, * {{Code|czy_uwzglednic_alternatywna_nazwe}} - czy ma uwzględniać nazwę przestrzeni nazw domyślną szablonu, dostępne wartości: {{Code|false}}, w której nazwa domyślna nie jest uwzględniana wtedy, oraz {{Code|nil}} i {{Code|true}}, które oznaczają to samo, w tym jeżeli ona jest uwzględniana, wtedy jest brany parametr pierwszy dziecka, który musi istnieć przy takiej wartości tego parametru, tzn. {{Code|{{m|Pudełko|Nazwa przedmiotowej przestrzeni nazw 2|Szablon}}}}, a nazwa uzyskana nazwy przestrzeni nazw jest w takim przypadku błędna, a jeżeli nazwa domyślna jest błędna, czyli {{Code|{{m|Pudełko|Nazwa przedmiotowej przestrzeni nazw 2|Moja przestrzeń}}}}, wtedy funkcja zwraca stan błędu {{Code|(błąd)}}. * {{Code|i}} - numer zmiennej nazwy przestrzeni nazw. Funkcja wykorzystuje {{Code|{{sr|#p.Nazwa_przestrzeni_nazw_przedmiotowa_dyskusji_2(frame,...)|p=Pudełko/Pomocne}}}} do wyznaczania ogólnego nazwy przestrzeni nazw dla pozycji bazowej i numerkowej, tzn. dla pozycji: jeden, dwa, trzy,..., itd, i ich ogólnej. Parametr ramki tablicy transportu rodzica szablonu: * {{Code|nazwa przestrzeni nazw}}, {{Code|nazwa przestrzeni nazw 1}}, {{Code|nazwa przestrzeni nazw 2}}, {{Code|nazwa przestrzeni nazw 3}},..., {{Code|nazwa przestrzeni nazw i}} - nazwy przestrzeni nazw dla pozycji bazowej oraz zwykłej i ogólnej numerkowej, * {{Code|nazwa jednostki}}, {{Code|nazwa jednostki 1}}, {{Code|nazwa jednostki 2}}, {{Code|nazwa jednostki 3}},... - nazwy jednostek dla pozycji bazowej i numerkowej, * {{Code|typ jednostki}}, {{Code|typ jednostki 1}}, {{Code|typ jednostki 2}}, {{Code|typ jednostki 3}},..., {{Code|typ jednostki i}} - typy jednostek, którym odpowiadają pewne przestrzenie przedmiotowe, dla pozycji bazowej, numerkowej i ogólnej. Parametry ramki tablicy transportu dziecka: * Parametry dziecka są takie same jak rodzica dla funkcji pudełkowej plus tu wymienione, * {{Code|numer jednostki}} - jak parametr {{Code|i}} nie został ustawiony, to wtedy liczy się ta zmienna. Przykłady: <syntaxhighlight lang="mediawiki"> {{Nazwa szablonu|nazwa przestrzeni nazw=Wikibooks|nazwa przestrzeni nazw 1=Szablon|nazwa przestrzeni nazw i=|nazwa jednostki 2=Dyskusja Wikibooks:Strona}} </syntaxhighlight> W dziecku powiedzmy jest wywołanie, i szukamy nazwy przestrzeni nazw o numerze dwa, która została podana, ale istnieje za to jej wersji ogólna {{Code|nazwa przestrzeni nazw i}} i domyślna {{Code|nazwa przestrzeni nazw}}, ale wtedy dla tego numerkowego liczy się to ogólne z {{Code| i}}, a ponieważ ta nazwa jest pusta, więc będziemy liczyli nazwę przestrzeni nazw z {{Code|nazwa jednostki 2}}: <syntaxhighlight lang="mediawiki"> {{#invoke:Pudełko|Nazwa przedmiotowej przestrzeni nazw 2|numer jednostki=2}} </syntaxhighlight> Na podstawie powyższego przykładu otrzymamy wynik o schemacie, nie wyniku, bo tam nie ma zmiennej {{Code|nazwa przestrzeni nazw 1}}, ale jest {{Code|nazwa przestrzeni nazw i}}: <syntaxhighlight lang="mediawiki"> <!-- Ale nie "nazwa przestrzeni nazw 2", bo jej nie ma, ale za to istnieje "nazwa przestrzeni nazw i"; --> <!-- nazwa przestrzeni nazw 2=nazwa przestrzeni nazw i="", a nazwa jednostki 2="Dyskusja Wikibooks:Strona"; --> <!-- Czyli wynik: --> Wikibooks <!-- Widzimy, że wygenerowała się nazwa przestrzeni nazw, którą jest przestrzeń nieprogramowa, ale projektu, wychodząca z nazwy jednostek w tym przypadku z "nazwa jednostki 2"; --> </syntaxhighlight> Nie jest brana w tym powyższym przykładzie zmienna {{Code|nazwa przestrzeni nazw}}, bo jej nie ma, ale za to jest {{Code|nazwa przestrzeni nazw i}}, bo ona występuje jako parametr domyślny ogólny dla parametrów numerkowych. Tytaj jest używana jest zmienna {{Code|nazwa jednostki 2}} do wygenerowania ostatecznego wyniku, bo jak można zauważyć, parametry przestrzenne wskazują na przestrzeń główną, a nazwy jednostek już nie. Przykłady w wikikodzie: * {{Code|{{m|Pudełko|Nazwa przedmiotowej przestrzeni nazw 2|numer jednostki{{=}}2}}}} → {{Tt|{{#invoke:Pudełko|Nazwa przedmiotowej przestrzeni nazw 2|numer jednostki=2}}}} * {{Code|{{m|Pudełko|Nazwa przedmiotowej przestrzeni nazw 2|Dyskusja szablonu|nazwa przestrzeni nazw i{{=}}Moja przestrzeń|numer jednostki{{=}}2}}}} → {{Tt|{{#invoke:Pudełko|Nazwa przedmiotowej przestrzeni nazw 2|Dyskusja szablonu|nazwa przestrzeni nazw i=Moja przestrzeń|numer jednostki=2}}}} * {{Code|{{m|Pudełko|Nazwa przedmiotowej przestrzeni nazw 2|nazwa przestrzeni nazw 2{{=}}Dyskusja|nazwa jednostki 2{{=}}Dyskusja szablonu:Strona|numer jednostki{{=}}2}}}} → {{Tt|{{#invoke:Pudełko|Nazwa przedmiotowej przestrzeni nazw 2|nazwa przestrzeni nazw 2=Dyskusja|nazwa jednostki 2=Dyskusja szablonu:Strona|numer jednostki=2}}}} * {{Code|{{m|Pudełko|Nazwa przedmiotowej przestrzeni nazw 2|nazwa przestrzeni nazw i{{=}}Dyskusja|nazwa jednostki 2{{=}}Dyskusja szablonu:Strona|numer jednostki{{=}}2}}}} → {{Tt|{{#invoke:Pudełko|Nazwa przedmiotowej przestrzeni nazw 2|nazwa przestrzeni nazw i=Dyskusja|nazwa jednostki 2=Dyskusja szablonu:Strona|numer jednostki=2}}}} * {{Code|{{m|Pudełko|Nazwa przedmiotowej przestrzeni nazw 2|Dyskusja szablonu|nazwa przestrzeni nazw{{=}}Dyskusja|nazwa jednostki 2{{=}}Wikibooks:Strona|numer jednostki{{=}}2}}}} → {{Tt|{{#invoke:Pudełko|Nazwa przedmiotowej przestrzeni nazw 2|Dyskusja szablonu|nazwa przestrzeni nazw=Dyskusja|nazwa jednostki 2=Dyskusja Wikibooks:Strona|numer jednostki=2}}}} Powyżej dla przykładu podano parametry nie w rodzicu w szablonie, tylko w dziecku, jeśli chodzi o parametry nazw przestrzeni nazw i nazw jednostek, ale ich się za to nie powinno podawać w tych ramach, tylko w szablonach, w których wywoływane są te ramki pudełek {{Code|{{m|Pudełko}}}}, ale tak tutaj tak zrobiono by było najłatwiej sprawdzić działanie tego typu funkcji. Analogicznie możemy podawać parametry typu jednostki, np.: wywołaniu modułowym {{Code|{{m|Pudełko|Nazwa przedmiotowej przestrzeni nazw 2|typ jednostki 2{{=}}Podręcznik|nazwa jednostki 2{{=}}Dyskusja szablonu:Strona|numer jednostki{{=}}2}}}} (ale wtedy jest brana przestrzeń nazw z nazwy jednostki), ale o tym więcej w rozdziałach {{Code|{{sr|# p["Przedmiotowy typ jednostki 2"](frame,i)|p=Pudełko}}}} w „{{sr|#Funkcje typu jednostki|p=Pudełko}}”, on definiuje przestrzenie przedmiotowe, ale można użyć parametru dyskusji typu jednostki z wartością niepustą, pustą, czy nawet jej nie podamy, wtedy wyświetli się nazwa przestrzeni nazw przedmiotowej. Jeżeli typ jednostki wskazuje na przestrzeń nazw główną, wtedy się liczą parametry nazw jednostek. Również parametry typu jednostki nie powinno się podawać w dziecku w ramce, tylko w rodzicu w szablonie jako parametry, w którym ta ramka jest wywoływana, ale tutaj podano jedynie dla przykładu, jak najłatwiej sprawdzić działanie tych parametrów tej funkcji. Najpierw w funkcji nagłówku brane są parametry nazw przestrzeni nazw, a jeżeli ich nie ma, to parametry typu jednostki, a jeżeli nie ma lub parametry przestrzenne wskazują na przestrzeń główną, i nie ma nazwy jednostki, to generowane są nazwy tej funkcji na podstawie aktualnej strony. === {{Code|p["Nazwa przestrzeni nazw dyskusji 2"](frame,...)}} === Funkcja pisze nazwę przestrzeni nazw dyskusji jakikolwiek nazwy przestrzeni nazw (tzn. nazwę dyskusji nazwy przestrzenie nazw, czyli nie przedmiotowej, zamieniana jest na nią samą, czyli identyfikator przestrzeni się nie zmienia, a przedmiotową, nie dyskusji, przekształca się na dyskusji jej odpowiadającą, czyli w tym przypadku identyfikator przestrzeni zwiększa się o numer więcej), według, i nie zawsze tylko, podanej w zmiennej {{Code|nazwa przestrzeni nazw}} dla pozycja bazowej w podanych parametrach szablonu rodzicu ramki dziecka, lub dla innej pozycji należy parametr podawać w formie {{Code|nazwa przestrzeni nazw 1}}, {{Code|nazwa przestrzeni nazw 2}}, {{Code|nazwa przestrzeni nazw 3}},..., lub te parametry można podać w postaci ogólnej {{Code|nazwa przestrzeni nazw i}}. W tej funkcji trzeba też podawać parametry nazwy jednostek {{Code|nazwa jednostki}}, {{Code|nazwa jednostki 1}}, {{Code|nazwa jednostki 2}}, {{Code|nazwa jednostki 3}},... Parametry podaje się w parametrach rodzica wywołania tej funkcji {{Code|{{m|Pudełko|Nazwa przestrzeni nazw dyskusji 2}}}} (ale ich nie trzeba podawać w dziecku, ale można) i w parametrach dziecka, jeśli chodzi o zmienną {{Code|numer jednostki}}, czyli np.: {{Code|{{m|Pudełko|Nazwa przestrzeni nazw dyskusji 2|numer jednostki{{=}}<jakaś liczba całkowita dodatnia>}}}}. Te parametry przestrzenne zamiast w rodzicu w szablonie można podać w ramce dziecka, wtedy parametry dziecka mają pierwszeństwo. Przestrzeń nazw z parametrów nazw przestrzennych po przekształceniu na przedmiotową może odpowiadać wartości przestrzeni głównej, to wtedy odpowiednia przestrzeń nazw z parametru nazwy jednostki się liczy w tej funkcji, wtedy jest liczona nazwa przestrzeni nazw z tego parametru. Gdy parametry przestrzenne lub typ jednostki w drugim podejściu nie wskazują na przestrzeń główną, to wtedy działanie tej funkcji jest podobne do {{Code|{{sr|#p["Nazwa dyskusji przestrzeni nazw"](frame,...)|p=Pudełko}}}}. Definicja skrótowa funkcji: <syntaxhighlight lang="lua"> p["Nazwa przestrzeni nazw dyskusji 2"]=function(frame,czy_uwzglednic_alternatywna_nazwe,i)...end; </syntaxhighlight> Wtedy ciało funkcji tej, czyli jego definicja w środku, jest: <syntaxhighlight lang="lua"> local pudelko_pomocne_modul=require("Module:Pudełko/Pomocne"); return pudelko_pomocne_modul.Nazwa_przestrzeni_nazw_przedmiotowa_dyskusji_2(frame,czy_uwzglednic_alternatywna_nazwe,i,"dyskusja"); </syntaxhighlight> Parametry funkcji: * {{Code|frame}} - tablica ramki tablicy transportu, * {{Code|czy_uwzglednic_alternatywna_nazwe}} - czy ma uwzględniać nazwę przestrzeni nazw domyślną szablonu, dostępne wartości: {{Code|false}}, w której nazwa domyślna nie jest uwzględniana wtedy, oraz {{Code|nil}} i {{Code|true}}, które oznaczają to samo, w tym jeżeli ona jest uwzględniana, wtedy jest brany parametr pierwszy dziecka, który musi istnieć przy takiej wartości tego parametru, tzn. {{Code|{{m|Pudełko|Nazwa przestrzeni nazw dyskusji 2|Szablon}}}}, a nazwa uzyskana nazwy przestrzeni nazw jest w takim przypadku błędna, a jeżeli nazwa domyślna jest błędna, czyli {{Code|{{m|Pudełko|Nazwa przestrzeni nazw dyskusji 2|Moja przestrzeń}}}}, wtedy funkcja zwraca stan błędu {{Code|(błąd)}}. * {{Code|i}} - numer zmiennej nazwy przestrzeni nazw. Funkcja wykorzystuje {{Code|{{sr|#p.Nazwa_przestrzeni_nazw_przedmiotowa_dyskusji_2(frame,...)|p=Pudełko/Pomocne}}}} do wyznaczania ogólnego nazwy przestrzeni nazw dla pozycji bazowej i numerkowej, tzn. dla pozycji: jeden, dwa, trzy,..., itd, i ich ogólnej. Parametr ramki tablicy transportu rodzica szablonu: * {{Code|nazwa przestrzeni nazw}}, {{Code|nazwa przestrzeni nazw 1}}, {{Code|nazwa przestrzeni nazw 2}}, {{Code|nazwa przestrzeni nazw 3}},..., {{Code|nazwa przestrzeni nazw i}} - nazwy przestrzeni nazw dla pozycji bazowej oraz zwykłej i ogólnej numerkowej, * {{Code|nazwa jednostki}}, {{Code|nazwa jednostki 1}}, {{Code|nazwa jednostki 2}}, {{Code|nazwa jednostki 3}},... - nazwy jednostek dla pozycji bazowej i numerkowej, * {{Code|typ jednostki}}, {{Code|typ jednostki 1}}, {{Code|typ jednostki 2}}, {{Code|typ jednostki 3}},..., {{Code|typ jednostki i}} - typy jednostek, którym odpowiadają pewne przestrzenie przedmiotowe, dla pozycji bazowej, numerkowej i ogólnej. Parametry ramki tablicy transportu dziecka: * Parametry dziecka są takie same jak rodzica dla funkcji pudełkowej plus tu wymienione, * {{Code|numer jednostki}} - jak parametr {{Code|i}} nie został ustawiony, to wtedy liczy się ta zmienna. Przykłady: <syntaxhighlight lang="mediawiki"> {{Nazwa szablonu|nazwa przestrzeni nazw=Wikibooks|nazwa przestrzeni nazw 1=Szablon|nazwa przestrzeni nazw i=|nazwa jednostki 2=Wikibooks:Strona}} </syntaxhighlight> W dziecku powiedzmy jest wywołanie, i szukamy nazwy przestrzeni nazw o numerze dwa, która została podana, ale istnieje za to jej wersji ogólna {{Code|nazwa przestrzeni nazw i}} i domyślna {{Code|nazwa przestrzeni nazw}}, ale wtedy dla tego numerkowego liczy się to ogólne z {{Code| i}}, a ponieważ ta nazwa jest pusta, więc będziemy liczyli nazwę przestrzeni nazw z {{Code|nazwa jednostki 2}}: <syntaxhighlight lang="mediawiki"> {{#invoke:Pudełko|Nazwa przestrzeni nazw dyskusji 2|numer jednostki=2}} </syntaxhighlight> Na podstawie powyższego przykładu otrzymamy wynik o schemacie, nie wyniku, bo tam nie ma zmiennej {{Code|nazwa przestrzeni nazw 1}}, ale jest {{Code|nazwa przestrzeni nazw i}}: <syntaxhighlight lang="mediawiki"> <!-- Ale nie "nazwa przestrzeni nazw 2", bo jej nie ma, ale za to istnieje "nazwa przestrzeni nazw i"; --> <!-- nazwa przestrzeni nazw 2=nazwa przestrzeni nazw i="", a nazwa jednostki 2="Wikibooks:Strona"; --> <!-- Czyli wynik: --> Dyskusja Wikibooks <!-- Widzimy, że wygenerowała się nazwa przestrzeni nazw, którą jest przestrzeń nieprogramowa, ale dyskusji projektu, wychodząca z nazwy jednostek w tym przypadku z "nazwa jednostki 2"; --> </syntaxhighlight> Nie jest brana w tym powyższym przykładzie zmienna {{Code|nazwa przestrzeni nazw}}, bo jej nie ma, ale za to jest {{Code|nazwa przestrzeni nazw i}}, bo ona występuje jako parametr domyślny ogólny dla parametrów numerkowych. Tytaj jest używana jest zmienna {{Code|nazwa jednostki 2}} do wygenerowania ostatecznego wyniku, bo jak można zauważyć, parametry przestrzenne wskazują na przestrzeń główną, a nazwy jednostek już nie. Przykłady w wikikodzie: * {{Code|{{m|Pudełko|Nazwa przestrzeni nazw dyskusji 2|numer jednostki{{=}}2}}}} → {{Tt|{{#invoke:Pudełko|Nazwa przestrzeni nazw dyskusji 2|numer jednostki=2}}}} * {{Code|{{m|Pudełko|Nazwa przestrzeni nazw dyskusji 2|Szablon|nazwa przestrzeni nazw i{{=}}Moja przestrzeń|numer jednostki{{=}}2}}}} → {{Tt|{{#invoke:Pudełko|Nazwa przestrzeni nazw dyskusji 2|Szablon|nazwa przestrzeni nazw i=Moja przestrzeń|numer jednostki=2}}}} * {{Code|{{m|Pudełko|Nazwa przestrzeni nazw dyskusji 2|nazwa przestrzeni nazw 2{{=}}|nazwa jednostki 2{{=}}Szablon:Strona|numer jednostki{{=}}2}}}} → {{Tt|{{#invoke:Pudełko|Nazwa przestrzeni nazw dyskusji 2|nazwa przestrzeni nazw 2=|nazwa jednostki 2=Szablon:Strona|numer jednostki=2}}}} * {{Code|{{m|Pudełko|Nazwa przestrzeni nazw dyskusji 2|nazwa przestrzeni nazw i{{=}}|nazwa jednostki 2{{=}}Szablon:Strona|numer jednostki{{=}}2}}}} → {{Tt|{{#invoke:Pudełko|Nazwa przestrzeni nazw dyskusji 2|nazwa przestrzeni nazw i=|nazwa jednostki 2=Szablon:Strona|numer jednostki=2}}}} * {{Code|{{m|Pudełko|Nazwa przestrzeni nazw dyskusji 2|Szablon|nazwa przestrzeni nazw{{=}}|nazwa jednostki 2{{=}}Wikibooks:Strona|numer jednostki{{=}}2}}}} → {{Tt|{{#invoke:Pudełko|Nazwa przestrzeni nazw dyskusji 2|Szablon|nazwa przestrzeni nazw=|nazwa jednostki 2=Dyskusja Wikibooks:Strona|numer jednostki=2}}}} Powyżej dla przykładu podano parametry nie w rodzicu w szablonie, tylko w dziecku, jeśli chodzi o parametry nazw przestrzeni nazw i nazw jednostek, ale ich się za to nie powinno podawać w tych ramach, tylko w szablonach, w których wywoływane są te ramki pudełek {{Code|{{m|Pudełko}}}}, ale tak tutaj tak zrobiono by było najłatwiej sprawdzić działanie tego typu funkcji. Analogicznie możemy podawać parametry typu jednostki, np.: wywołaniu modułowym {{Code|{{m|Pudełko|Nazwa przestrzeni nazw dyskusji 2|typ jednostki 2{{=}}Podręcznik|nazwa jednostki 2{{=}}Szablon:Strona|numer jednostki{{=}}2}}}} (ale wtedy jest brana przestrzeń nazw z nazwy jednostki), ale o tym więcej w rozdziałach {{Code|{{sr|# p["Dyskusyjny typ jednostki 2"](frame,i)|p=Pudełko}}}} w „{{sr|#Funkcje typu jednostki|p=Pudełko}}”, one definiują przestrzenie dyskusji, ale można użyć parametru dyskusji typu jednostki z obojętnie jaką wartością niepustą, czy pustą, czy nawet jej nie podamy, wtedy wyświetli się nazwa przestrzeni nazw dyskusji. Jeżeli typ jednostki wskazuje na przestrzeń nazw główną, wtedy się liczą parametry nazw jednostek. Również parametry typu jednostki nie powinno się podawać w dziecku w ramce, tylko w rodzicu w szablonie jako parametry, w którym ta ramka jest wywoływana, ale tutaj podano jedynie dla przykładu, jak najłatwiej sprawdzić działanie tych parametrów tej funkcji. Najpierw w funkcji nagłówku brane są parametry nazw przestrzeni nazw, a jeżeli ich nie ma, to parametry typu jednostki, a jeżeli nie ma lub parametry przestrzenne wskazują na przestrzeń główną, i nie ma nazwy jednostki, to generowane są nazwy tej funkcji na podstawie aktualnej strony. == Funkcje pełnych nazw jednostki == === {{Code|p["Pełna nazwa dyskusji jednostki"](frame,i)}} === === {{Code|p["Pełna nazwa przedmiotowa jednostki"](frame,i)}} === === {{Code|p["Pełna nazwa jednostki"](frame,i)}} === == Funkcje pełnych nazw jednostki drugiej wersji == === {{Code|p["Pełna nazwa dyskusji jednostki 2"](frame,i)}} === === {{Code|p["Pełna nazwa przedmiotowa jednostki 2"](frame,i)}} === === {{Code|p["Pełna nazwa jednostki 2"](frame,i)}} === == Funkcje pełnych nazw jednostki trzeciej wersji == === {{Code|p["Pełna nazwa dyskusji jednostki 3"](frame,i)}} === === {{Code|p["Pełna nazwa przedmiotowa jednostki 3"](frame,i)}} === === {{Code|p["Pełna nazwa jednostki 3"](frame,i)}} === == Funkcje nazw jednostki == === {{Code|p["Nazwa jednostki"](frame,i)}} === == Funkcje nazw jednostki drugiej wersji == === {{Code|p["Nazwa jednostki 2"](frame,i)}} === === {{Code|p["Nazwa przedmiotowa jednostki 2"](frame,i)}} === === {{Code|p["Nazwa dyskusji jednostki 2"](frame,i)}} === == Funkcje nazw przestrzeni nazw trzeciej wersji == === {{Code|p["Nazwa przestrzeni nazw 3"](frame,i)}} === Funkcja pisze nazwę przestrzeni nazw, niezależnie, czy to jest przedmiotowa, czy dyskusji, według, i nie zawsze tylko, podanej w zmiennej {{Code|nazwa przestrzeni nazw}} dla pozycja bazowej w podanych parametrach szablonu rodzicu ramki dziecka, lub dla innej pozycji należy parametr podawać w formie {{Code|nazwa przestrzeni nazw 1}}, {{Code|Nazwa przestrzeni nazw 3}}, {{Code|nazwa przestrzeni nazw 3}},..., lub te parametry można podać w postaci ogólnej {{Code|nazwa przestrzeni nazw i}}. W tej funkcji trzeba też podawać parametry nazwy jednostek {{Code|nazwa jednostki}}, {{Code|nazwa jednostki 1}}, {{Code|nazwa jednostki 2}}, {{Code|nazwa jednostki 3}},... Parametry podaje się w parametrach rodzica wywołania tej funkcji {{Code|{{m|Pudełko|Nazwa przestrzeni nazw 3}}}} (ale ich nie trzeba podawać w dziecku, ale można) i w parametrach dziecka, jeśli chodzi o zmienną {{Code|numer jednostki}}, czyli np.: {{Code|{{m|Pudełko|Nazwa przestrzeni nazw 3|numer jednostki{{=}}<jakaś liczba całkowita dodatnia>}}}}. Te parametry przestrzenne zamiast w rodzicu w szablonie można podać w ramce dziecka, wtedy parametry dziecka mają pierwszeństwo. Przestrzeń nazw z parametrów nazw przestrzennych bazowych (bez numerka) może odpowiadać wartości przestrzeni głównej, to wtedy odpowiednia przestrzeń nazw z parametru nazwy jednostki się nie liczy w tej funkcji, aby się liczyła należy użyć funkcji {{Code|{{sr|#p["Nazwa przestrzeni nazw"](frame,...)|p=Pudełko}}}}. Przestrzeń nazw z parametrów nazw przestrzennych numerkowych może odpowiadać wartości przestrzeni głównej, to wtedy odpowiednia przestrzeń nazw z parametru nazwy jednostki się liczy w tej funkcji, wtedy jest liczona nazwa przestrzeni nazw z tego parametru. Gdy parametry przestrzenne lub typ jednostki w drugim podejściu nie wskazują na przestrzeń główną, to wtedy działanie tej funkcji jest podobne do {{Code|{{sr|#p["Nazwa przestrzeni nazw 2"](frame,...)|p=Pudełko}}}}. Definicja skrótowa funkcji: <syntaxhighlight lang="lua"> p["Nazwa przestrzeni nazw 3"]=function(frame,czy_uwzglednic_alternatywna_nazwe,i)...end; </syntaxhighlight> Wtedy ciało funkcji tej, czyli jego definicja w środku, jest: <syntaxhighlight lang="lua"> -- Jest liczony numer parametru nazwy przestrzeni nazw, domyslnie chodzi tu o numer bazowy parametrów przestrzennych; local numer_jednostki=i or frame.args["numer jednostki"]; local liczba_numeru_jednostki=((numer_jednostki)and(tonumber(numer_jednostki)) or 0); local pudelko_pomocne_modul=require("Module:Pudełko/Pomocne"); -- Liczy nazwę przestrzeni nazw dyskusji na podstawie podanych parametrów; return pudelko_pomocne_modul.Uzyskanie_nazw_jednostki(frame,0,liczba_numeru_jednostki,nil,2); </syntaxhighlight> Parametry funkcji: * {{Code|frame}} - tablica ramki tablicy transportu, * {{Code|czy_uwzglednic_alternatywna_nazwe}} - czy ma uwzględniać nazwę przestrzeni nazw domyślną szablonu, dostępne wartości: {{Code|false}}, w której nazwa domyślna nie jest uwzględniana wtedy, oraz {{Code|nil}} i {{Code|true}}, które oznaczają to samo, w tym jeżeli ona jest uwzględniana, wtedy jest brany parametr pierwszy dziecka, który musi istnieć przy takiej wartości tego parametru, tzn. {{Code|{{m|Pudełko|Nazwa przestrzeni nazw 3|Szablon}}}}, a nazwa uzyskana nazwy przestrzeni nazw jest w takim przypadku błędna, a jeżeli nazwa domyślna jest błędna, czyli {{Code|{{m|Pudełko|Nazwa przestrzeni nazw 3|Moja przestrzeń}}}}, wtedy funkcja zwraca stan błędu {{Code|(błąd)}}. * {{Code|i}} - numer zmiennej nazwy przestrzeni nazw. Funkcja wykorzystuje {{Code|{{sr|#p.Uzyskanie_nazw_jednostki(frame,...)|p=Pudełko/Pomocne}}}} do wyznaczania ogólnego nazwy przestrzeni nazw dla pozycji bazowej i numerkowej, tzn. dla pozycji: jeden, dwa, trzy,..., itd, i ich ogólnej. Parametr ramki tablicy transportu rodzica szablonu: * {{Code|nazwa przestrzeni nazw}}, {{Code|nazwa przestrzeni nazw 1}}, {{Code|Nazwa przestrzeni nazw 3}}, {{Code|nazwa przestrzeni nazw 3}},..., {{Code|nazwa przestrzeni nazw i}} - nazwy przestrzeni nazw dla pozycji bazowej oraz zwykłej i ogólnej numerkowej, * {{Code|nazwa jednostki}}, {{Code|nazwa jednostki 1}}, {{Code|nazwa jednostki 2}}, {{Code|nazwa jednostki 3}},... - nazwy jednostek dla pozycji bazowej i numerkowej, * {{Code|typ jednostki}}, {{Code|typ jednostki 1}}, {{Code|typ jednostki 2}}, {{Code|typ jednostki 3}},..., {{Code|typ jednostki i}} - typy jednostek, którym odpowiadają pewne przestrzenie przedmiotowe, dla pozycji bazowej, numerkowej i ogólnej, ** {{Code|dyskusja typu jednostki}}, {{Code|dyskusja typu jednostki 1}}, {{Code|dyskusja typ jednostki 2}}, {{Code|dyskusja typ jednostki 3}},..., {{Code|dyskusja typ jednostki i}} - czy dany typ jednostki ma przedstawiać, jeśli niepusta, przestrzeń dyskusji dla pozycji bazowej, numerkowej i ogólnej. Parametry ramki tablicy transportu dziecka: * Parametry dziecka są takie same jak rodzica dla funkcji pudełkowej plus tu wymienione, * {{Code|numer jednostki}} - jak parametr {{Code|i}} nie został ustawiony, to wtedy liczy się ta zmienna. Przykłady: <syntaxhighlight lang="mediawiki"> {{Nazwa szablonu 1|nazwa przestrzeni nazw=Wikibooks|nazwa przestrzeni nazw=|nazwa przestrzeni nazw i=|nazwa jednostki=Szablon:Strona|nazwa jednostki 2=Wikibooks:Strona}} ---- {{Nazwa szablonu 2|nazwa przestrzeni nazw=Wikibooks|nazwa przestrzeni nazw 1=Szablon|nazwa przestrzeni nazw i=|nazwa jednostki 2=Wikibooks:Strona}} </syntaxhighlight> W dziecku powiedzmy jest wywołanie, i szukamy nazwy przestrzeni nazw o numerze dwa, która została podana, ale istnieje za to jej wersji ogólna {{Code|nazwa przestrzeni nazw i}} i domyślna {{Code|nazwa przestrzeni nazw}}, ale wtedy dla tego numerkowego liczy się to ogólne z {{Code| i}}, a ponieważ ta nazwa jest pusta, więc będziemy liczyli nazwę przestrzeni nazw z {{Code|nazwa jednostki 2}}: <syntaxhighlight lang="mediawiki"> {{#invoke:Pudełko|Nazwa przestrzeni nazw 3}} ---- {{#invoke:Pudełko|Nazwa przestrzeni nazw 3|numer jednostki=2}} </syntaxhighlight> Na podstawie powyższego przykładu otrzymamy wynik o schemacie, nie wyniku, bo tam nie ma zmiennej {{Code|nazwa przestrzeni nazw 1}}, ale jest {{Code|nazwa przestrzeni nazw i}}: <syntaxhighlight lang="mediawiki"> <!-- nazwa przestrzeni nazw=""; --> <!-- Czyli wynik: --> <!-- wynik pusty --> <!-- Widzimy, że wygenerowała się nazwa przestrzeni nazw, którą jest przestrzeń nazw główna, jest ciągiem pustym: ""; --> ---- <!-- Ale nie "Nazwa przestrzeni nazw 2", bo jej nie ma, ale za to istnieje "nazwa przestrzeni nazw i"; --> <!-- nazwa przestrzeni nazw 2=nazwa przestrzeni nazw i="", a nazwa jednostki 2="Wikibooks:Strona"; --> <!-- Czyli wynik: --> Wikibooks <!-- Widzimy, że wygenerowała się nazwa przestrzeni nazw, którą jest przestrzeń nieprogramowa, ale projektu, wychodząca z nazwy jednostek w tym przypadku z "nazwa jednostki 2"; --> </syntaxhighlight> Dla parametrów numerkowych nie jest brana w tym powyższym przykładzie zmienna {{Code|nazwa przestrzeni nazw 2}}, bo jej nie ma, ale za to jest {{Code|nazwa przestrzeni nazw i}}, bo ona występuje jako parametr domyślny ogólny dla parametrów numerkowych. Tytaj jest używana jest zmienna {{Code|nazwa jednostki 2}} do wygenerowania ostatecznego wyniku, bo jak można zauważyć, parametry przestrzenne wskazują na przestrzeń główną, a nazwy jednostek już nie. Dla parametrów bazowych mamy zmienną {{Code|nazwa przestrzeni nazw}}, ona jest pusta, więc to zostanie wziete do ostatecznego wyniku. Przykłady w wikikodzie: * {{Code|{{m|Pudełko|Nazwa przestrzeni nazw 3|nazwa przestrzeni nazw{{=}}|nazwa jednostki{{=}}Wikibooks:Strona}}}} → {{Tt|{{#invoke:Pudełko|Nazwa przestrzeni nazw 3|nazwa przestrzeni nazw=|nazwa jednostki=Wikibooks:Szablon}}}} * {{Code|{{m|Pudełko|Nazwa przestrzeni nazw 3|nazwa przestrzeni nazw 2{{=}}|nazwa jednostki 2{{=}}Wikibooks:Strona|numer jednostki{{=}}2}}}} → {{Tt|{{#invoke:Pudełko|Nazwa przestrzeni nazw 3|nazwa przestrzeni nazw 2=|nazwa jednostki 2=Wikibooks:Szablon|numer jednostki=2}}}} Powyżej dla przykładu podano parametry nie w rodzicu w szablonie, tylko w dziecku, jeśli chodzi o parametry nazw przestrzeni nazw i nazw jednostek, ale ich się za to nie powinno podawać w tych ramach, tylko w szablonach, w których wywoływane są te ramki pudełek {{Code|{{m|Pudełko}}}}, ale tak tutaj tak zrobiono by było najłatwiej sprawdzić działanie tego typu funkcji. Analogicznie możemy podawać parametry typu jednostki, np.: wywołaniu modułowym {{Code|{{m|Pudełko|Nazwa przestrzeni nazw 3|typ jednostki 2{{=}}Podręcznik|nazwa jednostki 2{{=}}Szablon:Strona|numer jednostki{{=}}2}}}} (ale wtedy jest brana przestrzeń nazw z nazwy jednostki), ale o tym więcej w rozdziałach {{Code|{{sr|#p["Typ jednostki 3"](frame,i)|p=Pudełko}}}} w „{{sr|#Funkcje typu jednostki|p=Pudełko}}”, on definiuje przestrzenie przedmiotowe, ale można użyć parametru dyskusji typu jednostki z wartością niepustą, wtedy wyświetli się nazwa przestrzeni nazw dyskusji. Jeżeli typ jednostki bazowy wskazuje na przestrzeń nazw główną, wtedy się nie liczą parametry nazw jednostek, a na numerkowy, wtedy się liczy. Również parametry typu jednostki nie powinno się podawać w dziecku w ramce, tylko w rodzicu w szablonie jako parametry, w którym ta ramka jest wywoływana, ale tutaj podano jedynie dla przykładu, jak najłatwiej sprawdzić działanie tych parametrów tej funkcji. Najpierw w funkcji nagłówku brane są parametry nazw przestrzeni nazw, a jeżeli ich nie ma, to parametry typu jednostki, a jeżeli nie ma lub parametry przestrzenne wskazują na przestrzeń główną, i nie ma nazwy jednostki, to generowane są nazwy tej funkcji na podstawie aktualnej strony. === {{Code|p["Nazwa przedmiotowej przestrzeni nazw 3"](frame,i)}} === Funkcja pisze przedmiotową nazwę przestrzeni nazw jakikolwiek nazwy przestrzeni nazw (tzn. nazwę przedmiotową nazwy przestrzenie nazw, czyli nie dyskusji, zamieniana jest na nią samą, czyli identyfikator przestrzeni się nie zmienia, a dyskusji, nie przedmiotową, przekształca się na przedmiotową jej odpowiadającą, czyli w tym przypadku identyfikator przestrzeni zmniejsza się o numer mniej), według podanej w zmiennej {{Code|nazwa przestrzeni nazw}} dla pozycja bazowej w podanych parametrach szablonu rodzicu ramki dziecka, lub dla innej pozycji należy parametr podawać w formie {{Code|nazwa przestrzeni nazw 1}}, {{Code|nazwa przestrzeni nazw 2}}, {{Code|nazwa przestrzeni nazw 3}},..., lub te parametry można podać w postaci ogólnej {{Code|nazwa przestrzeni nazw i}}. Parametry podaje się w parametrach rodzica wywołania tej funkcji {{Code|{{m|Pudełko|Nazwa przedmiotowej przestrzeni nazw 3}}}} (ale ich nie trzeba podawać w dziecku, ale można) i w parametrach dziecka, jeśli chodzi o zmienną {{Code|numer jednostki}}, czyli np.: {{Code|{{m|Pudełko|Nazwa przedmiotowej przestrzeni nazw 3|numer jednostki{{=}}<jakaś liczba całkowita dodatnia>}}}}. Te parametry przestrzenne zamiast w rodzicu w szablonie można podać w ramce dziecka, wtedy parametry dziecka mają pierwszeństwo. Parametry przestrzenne mogą mogą być podane w postaci przestrzeni przedmiotowej lub dyskusji, ale ta funkcja zawsze ją zamienia na przedmiotową. Przestrzeń nazw z parametrów nazw przestrzennych bazowych (bez numerka) może odpowiadać wartości przestrzeni głównej, to wtedy odpowiednia przestrzeń nazw z parametru nazwy jednostki się nie liczy w tej funkcji, aby się liczyła należy użyć funkcji {{Code|{{sr|#p["Nazwa przedmiotowej przestrzeni nazw"](frame,...)|p=Pudełko}}}}. Przestrzeń nazw z parametrów nazw przestrzennych numerkowych może odpowiadać wartości przestrzeni głównej, to wtedy odpowiednia przestrzeń nazw z parametru nazwy jednostki się liczy w tej funkcji, wtedy jest liczona nazwa przestrzeni nazw z tego parametru. Gdy parametry przestrzenne lub typ jednostki w drugim podejściu nie wskazują na przestrzeń główną, to wtedy działanie tej funkcji jest podobne do {{Code|{{sr|#p["Nazwa przedmiotowej przestrzeni nazw 2"](frame,...)|p=Pudełko}}}}. Definicja skrótowa funkcji: <syntaxhighlight lang="lua"> p["Nazwa przedmiotowej przestrzeni nazw 3"]=function(frame,czy_uwzglednic_alternatywna_nazwe,i)...end; </syntaxhighlight> Wtedy ciało funkcji tej, czyli jego definicja w środku, jest: <syntaxhighlight lang="lua"> -- Jest liczony numer parametru nazwy przestrzeni nazw, domyslnie chodzi tu o numer bazowy parametrów przestrzennych; local numer_jednostki=i or frame.args["numer jednostki"]; local liczba_numeru_jednostki=((numer_jednostki)and(tonumber(numer_jednostki)) or 0); local pudelko_pomocne_modul=require("Module:Pudełko/Pomocne"); -- Liczy nazwę przestrzeni nazw przedmiotową na podstawie podanych parametrów; return pudelko_pomocne_modul.Uzyskanie_nazw_jednostki(frame,1,liczba_numeru_jednostki,nil,1); </syntaxhighlight> Parametry funkcji: * {{Code|frame}} - tablica ramki tablicy transportu, * {{Code|czy_uwzglednic_alternatywna_nazwe}} - czy ma uwzględniać nazwę przestrzeni nazw domyślną szablonu, dostępne wartości: {{Code|false}}, w której nazwa domyślna nie jest uwzględniana wtedy, oraz {{Code|nil}} i {{Code|true}}, które oznaczają to samo, w tym jeżeli ona jest uwzględniana, wtedy jest brany parametr pierwszy dziecka, który musi istnieć przy takiej wartości tego parametru, tzn. {{Code|{{m|Pudełko|Nazwa przedmiotowej przestrzeni nazw 3|Dyskusja szablonu}}}} - ta nazwa domyślna zostanie zamieniona na przedmiotową, a jak ona by była przedmiotowa, to żadnej zamiany by nie było, a nazwa uzyskana z nazwy przestrzeni nazw z parametrów przestrzennych jest w takim przypadku błędna, to w takim razie brany jest ten parametr, a jeżeli ta nazwa domyślna jest błędna, czyli {{Code|{{m|Pudełko|Nazwa przedmiotowej przestrzeni nazw 3|Moja przestrzeń}}}}, wtedy funkcja zwraca stan błędu {{Code|(błąd)}}. * {{Code|i}} - numer zmiennej nazwy przestrzeni nazw. Funkcja wykorzystuje {{Code|{{sr|#p.Uzyskanie_nazw_jednostki(frame,...)|p=Pudełko/Pomocne}}}} do wyznaczania ogólnego nazwy przestrzeni nazw dla pozycji bazowej i numerkowej, tzn. dla pozycji: jeden, dwa, trzy,..., itd, i ich ogólnej. Parametr ramki tablicy transportu rodzica szablonu: * {{Code|nazwa przestrzeni nazw}}, {{Code|nazwa przestrzeni nazw 1}}, {{Code|nazwa przestrzeni nazw 2}}, {{Code|nazwa przestrzeni nazw 3}},..., {{Code|nazwa przestrzeni nazw i}} - nazwy przestrzeni nazw dla pozycji bazowej oraz zwykłej i ogólnej numerkowej, * {{Code|typ jednostki}}, {{Code|typ jednostki 1}}, {{Code|typ jednostki 2}}, {{Code|typ jednostki 3}},..., {{Code|typ jednostki i}} - typy jednostek, którym odpowiadają pewne przestrzenie przedmiotowe, dla pozycji bazowej, numerkowej i ogólnej. Parametry ramki tablicy transportu dziecka: * Parametry dziecka są takie same jak rodzica dla funkcji pudełkowej plus tu wymienione, * {{Code|numer jednostki}} - jak parametr {{Code|i}} nie został ustawiony, to wtedy liczy się ta zmienna. Przykłady: <syntaxhighlight lang="mediawiki"> {{Nazwa szablonu 1|nazwa przestrzeni nazw=Wikibooks|nazwa przestrzeni nazw=|nazwa przestrzeni nazw i=|nazwa jednostki=Dyskusja Wikibooks:Strona|nazwa jednostki 2=Dyskusja Wikibooks:Strona}} ---- {{Nazwa szablonu 2|nazwa przestrzeni nazw=Wikibooks|nazwa przestrzeni nazw 1=Szablon|nazwa przestrzeni nazw i=|nazwa jednostki 2=Dyskusja Wikibooks:Strona}} </syntaxhighlight> Kolejno wywołania te są równowaażne: <syntaxhighlight lang="mediawiki"> {{#invoke:Pudełko|Nazwa przedmiotowej przestrzeni nazw 3}} ---- {{#invoke:Pudełko|Nazwa przedmiotowej przestrzeni nazw 3|numer jednostki=2}} </syntaxhighlight> Na podstawie powyższego przykładu otrzymamy wynik o schemacie, nie wyniku, bo tam nie ma zmiennej {{Code|nazwa przestrzeni nazw 1}}, ale jest {{Code|nazwa przestrzeni nazw i}}: <syntaxhighlight lang="mediawiki"> <!-- Ale nie "nazwa przestrzeni nazw""; --> <!-- nazwa przestrzeni nazw=""; --> <!-- Czyli wynik: --> <!-- wynik pusty --> <!-- Widzimy, że wygenerowała się nazwa przestrzeni nazw, którą jest przestrzeń nazw główna, jest ciągiem pustym: ""; --> ---- <!-- Ale nie "Nazwa przestrzeni nazw 2", bo jej nie ma, ale za to istnieje "nazwa przestrzeni nazw i"; --> <!-- nazwa przestrzeni nazw 2=nazwa przestrzeni nazw i="", a nazwa jednostki 2="Dyskusja Wikibooks:Strona"; --> <!-- Czyli wynik: --> Wikibooks <!-- Widzimy, że wygenerowała się nazwa przestrzeni nazw, którą jest przestrzeń nieprogramowa, ale projektu, wychodząca z nazwy jednostek w tym przypadku z "nazwa jednostki 2"; --> </syntaxhighlight> Dla parametrów numerkowych nie jest brana w tym powyższym przykładzie zmienna {{Code|nazwa przestrzeni nazw 2}}, bo jej nie ma, ale za to jest {{Code|nazwa przestrzeni nazw i}}, bo ona występuje jako parametr domyślny ogólny dla parametrów numerkowych. Tytaj jest używana jest zmienna {{Code|nazwa jednostki 2}} do wygenerowania ostatecznego wyniku, bo jak można zauważyć, parametry przestrzenne wskazują na przestrzeń główną, a nazwy jednostek już nie. Dla parametrów bazowych mamy zmienną {{Code|nazwa przestrzeni nazw}}, ona jest pusta, więc to zostanie wziete do ostatecznego wyniku. Przykłady w wikikodzie: * {{Code|{{m|Pudełko|Nazwa przestrzeni nazw 3|nazwa przestrzeni nazw{{=}}|nazwa jednostki{{=}}Dyskusja Wikibooks:Strona}}}} → {{Tt|{{#invoke:Pudełko|Nazwa przestrzeni nazw 3|nazwa przestrzeni nazw=|nazwa jednostki=Dyskusja Wikibooks:Szablon}}}} * {{Code|{{m|Pudełko|Nazwa przestrzeni nazw 3|nazwa przestrzeni nazw 2{{=}}|nazwa jednostki 2{{=}}Dyskusja Wikibooks:Strona|numer jednostki{{=}}2}}}} → {{Tt|{{#invoke:Pudełko|Nazwa przestrzeni nazw 3|nazwa przestrzeni nazw 2=|nazwa jednostki 2=Dyskusja Wikibooks:Szablon|numer jednostki=2}}}} Powyżej dla przykładu podano parametry nie w rodzicu w szablonie, tylko w dziecku, jeśli chodzi o parametry nazw przestrzeni nazw, ale ich się za to nie powinno podawać w tych ramach, tylko w szablonach, w których wywoływane są te ramki pudełek {{Code|{{m|Pudełko}}}}, ale tak tutaj tak zrobiono by było najłatwiej sprawdzić działanie tego typu funkcji. Analogicznie możemy podawać parametry typu jednostki, np.: wywołaniu modułowym {{Code|{{m|Pudełko|Nazwa przedmiotowej przestrzeni nazw 3|typ jednostki 2{{=}}strona szablonu|numer jednostki{{=}}2}}}}, ale o tym więcej w rozdziałach {{Code|{{sr|# p["Przedmiotowy typ jednostki 3"](frame,i)|p=Pudełko}}}} w „{{sr|#Funkcje typu jednostki|p=Pudełko}}”, ale wtedy ta sama nazwa przestrzeni nazw reprezentowana przez {{Parametr|typ jednostki 2|strona szablonu}}, jest zamieniana na to samo, lepiej jest tutaj używać parametrów przestrzennych nazw niż typu jednostki, bo typ jednostki ma taką samą wartość dla przestrzeni przedmiotowej, co dyskusji. Tutaj parametr dyskusji typu jednostki bazowy i numerkowy ogólny, czy szczegółowy, nie gra roli, bo nawet, gdy wygenerujemy nazwę przestrzeni dyskusji za pomoca tego parametru, to i tak otrzymamy na samym końcu jego nazwę przedmiotową. Jeżeli typ jednostki bazowy wskazuje na przestrzeń nazw główną, wtedy się nie liczą parametry nazw jednostek, a na numerkowy, wtedy się liczy. Również parametry typu jednostki nie powinno się podawać w dziecku w ramce, tylko w rodzicu w szablonie jako parametry, w którym ta ramka jest wywoływana, ale tutaj podano jedynie dla przykładu, jak najłatwiej sprawdzić działanie tych parametrów tej funkcji. Najpierw w funkcji nagłówku brane są parametry nazw przestrzeni nazw, a jeżeli ich nie ma, to parametry typu jednostki, a jeżeli nie ma, to generowane są nazwy na podstawie aktualnego modułu. === {{Code|p["Nazwa przestrzeni nazw dyskusji 3"](frame,i)}} === Funkcja pisze nazwę przestrzeni nazw dyskusji jakikolwiek nazwy przestrzeni nazw (tzn. nazwę dyskusji nazwy przestrzenie nazw, czyli nie przedmiotowej, zamieniana jest na nią samą, czyli identyfikator przestrzeni się nie zmienia, a przedmiotową, nie dyskusji, przekształca się na dyskusji jej odpowiadającą, czyli w tym przypadku identyfikator przestrzeni zwiększa się o numer więcej), według, i nie zawsze tylko, podanej w zmiennej {{Code|nazwa przestrzeni nazw}} dla pozycja bazowej w podanych parametrach szablonu rodzicu ramki dziecka, lub dla innej pozycji należy parametr podawać w formie {{Code|nazwa przestrzeni nazw 1}}, {{Code|nazwa przestrzeni nazw 2}}, {{Code|nazwa przestrzeni nazw 3}},..., lub te parametry można podać w postaci ogólnej {{Code|nazwa przestrzeni nazw i}}. W tej funkcji trzeba też podawać parametry nazwy jednostek {{Code|nazwa jednostki}}, {{Code|nazwa jednostki 1}}, {{Code|nazwa jednostki 2}}, {{Code|nazwa jednostki 3}},... Parametry podaje się w parametrach rodzica wywołania tej funkcji {{Code|{{m|Pudełko|Nazwa przestrzeni nazw dyskusji 3}}}} (ale ich nie trzeba podawać w dziecku, ale można) i w parametrach dziecka, jeśli chodzi o zmienną {{Code|numer jednostki}}, czyli np.: {{Code|{{m|Pudełko|Nazwa przestrzeni nazw dyskusji 3|numer jednostki{{=}}<jakaś liczba całkowita dodatnia>}}}}. Te parametry przestrzenne zamiast w rodzicu w szablonie można podać w ramce dziecka, wtedy parametry dziecka mają pierwszeństwo. Przestrzeń nazw z parametrów nazw przestrzennych bazowych (bez numerka) może odpowiadać wartości przestrzeni głównej, to wtedy odpowiednia przestrzeń nazw z parametru nazwy jednostki się nie liczy w tej funkcji, aby się liczyła należy użyć funkcji {{Code|{{sr|#p["Nazwa przestrzeni nazw dyskusji"](frame,...)|p=Pudełko}}}}. Przestrzeń nazw z parametrów nazw przestrzennych numerkowych może odpowiadać wartości przestrzeni głównej, to wtedy odpowiednia przestrzeń nazw z parametru nazwy jednostki się liczy w tej funkcji, wtedy jest liczona nazwa przestrzeni nazw z tego parametru. Gdy parametry przestrzenne lub typ jednostki w drugim podejściu nie wskazują na przestrzeń główną, to wtedy działanie tej funkcji jest podobne do {{Code|{{sr|#p["Nazwa przestrzeni nazw dysskusji 2"](frame,...)|p=Pudełko}}}}. Definicja skrótowa funkcji: <syntaxhighlight lang="lua"> p["Nazwa przestrzeni nazw dyskusji 3"]=function(frame,czy_uwzglednic_alternatywna_nazwe,i)...end; </syntaxhighlight> Wtedy ciało funkcji tej, czyli jego definicja w środku, jest: <syntaxhighlight lang="lua"> -- Jest liczony numer parametru nazwy przestrzeni nazw, domyslnie chodzi tu o numer bazowy parametrów przestrzennych; local numer_jednostki=i or frame.args["numer jednostki"]; local liczba_numeru_jednostki=((numer_jednostki)and(tonumber(numer_jednostki)) or 0); local pudelko_pomocne_modul=require("Module:Pudełko/Pomocne"); -- Liczy nazwę przestrzeni nazw dyskusji na podstawie podanych parametrów; return pudelko_pomocne_modul.Uzyskanie_nazw_jednostki(frame,2,liczba_numeru_jednostki,nil,1); </syntaxhighlight> Parametry funkcji: * {{Code|frame}} - tablica ramki tablicy transportu, * {{Code|czy_uwzglednic_alternatywna_nazwe}} - czy ma uwzględniać nazwę przestrzeni nazw domyślną szablonu, dostępne wartości: {{Code|false}}, w której nazwa domyślna nie jest uwzględniana wtedy, oraz {{Code|nil}} i {{Code|true}}, które oznaczają to samo, w tym jeżeli ona jest uwzględniana, wtedy jest brany parametr pierwszy dziecka, który musi istnieć przy takiej wartości tego parametru, tzn. {{Code|{{m|Pudełko|Nazwa przestrzeni nazw dyskusji 3|Szablon}}}}, a nazwa uzyskana nazwy przestrzeni nazw jest w takim przypadku błędna, a jeżeli nazwa domyślna jest błędna, czyli {{Code|{{m|Pudełko|Nazwa przestrzeni nazw dyskusji 3|Moja przestrzeń}}}}, wtedy funkcja zwraca stan błędu {{Code|(błąd)}}. * {{Code|i}} - numer zmiennej nazwy przestrzeni nazw. Funkcja wykorzystuje {{Code|{{sr|#p.Uzyskanie_nazw_jednostki(frame,...)|p=Pudełko/Pomocne}}}} do wyznaczania ogólnego nazwy przestrzeni nazw dla pozycji bazowej i numerkowej, tzn. dla pozycji: jeden, dwa, trzy,..., itd, i ich ogólnej. Parametr ramki tablicy transportu rodzica szablonu: * {{Code|nazwa przestrzeni nazw}}, {{Code|nazwa przestrzeni nazw 1}}, {{Code|nazwa przestrzeni nazw 2}}, {{Code|nazwa przestrzeni nazw 3}},..., {{Code|nazwa przestrzeni nazw i}} - nazwy przestrzeni nazw dla pozycji bazowej oraz zwykłej i ogólnej numerkowej, * {{Code|nazwa jednostki}}, {{Code|nazwa jednostki 1}}, {{Code|nazwa jednostki 2}}, {{Code|nazwa jednostki 3}},... - nazwy jednostek dla pozycji bazowej i numerkowej, * {{Code|typ jednostki}}, {{Code|typ jednostki 1}}, {{Code|typ jednostki 2}}, {{Code|typ jednostki 3}},..., {{Code|typ jednostki i}} - typy jednostek, którym odpowiadają pewne przestrzenie przedmiotowe, dla pozycji bazowej, numerkowej i ogólnej. Parametry ramki tablicy transportu dziecka: * Parametry dziecka są takie same jak rodzica dla funkcji pudełkowej plus tu wymienione, * {{Code|numer jednostki}} - jak parametr {{Code|i}} nie został ustawiony, to wtedy liczy się ta zmienna. Przykłady: <syntaxhighlight lang="mediawiki"> {{Nazwa szablonu 1|nazwa przestrzeni nazw=Wikibooks|nazwa przestrzeni nazw=|nazwa przestrzeni nazw i=|nazwa jednostki=Szablon:Strona|nazwa jednostki 2=Wikibooks:Strona}} ---- {{Nazwa szablonu 2|nazwa przestrzeni nazw=Wikibooks|nazwa przestrzeni nazw 1=Szablon|nazwa przestrzeni nazw i=|nazwa jednostki 2=Wikibooks:Strona}} </syntaxhighlight> W dziecku powiedzmy jest wywołanie, i szukamy nazwy przestrzeni nazw o numerze dwa, która została podana, ale istnieje za to jej wersji ogólna {{Code|nazwa przestrzeni nazw i}} i domyślna {{Code|nazwa przestrzeni nazw}}, ale wtedy dla tego numerkowego liczy się to ogólne z {{Code| i}}, a ponieważ ta nazwa jest pusta, więc będziemy liczyli nazwę przestrzeni nazw z {{Code|nazwa jednostki 2}}: <syntaxhighlight lang="mediawiki"> {{#invoke:Pudełko|Nazwa przestrzeni nazw 3}} ---- {{#invoke:Pudełko|Nazwa przestrzeni nazw 3|numer jednostki=2}} </syntaxhighlight> Na podstawie powyższego przykładu otrzymamy wynik o schemacie, nie wyniku, bo tam nie ma zmiennej {{Code|nazwa przestrzeni nazw 1}}, ale jest {{Code|nazwa przestrzeni nazw i}}: <syntaxhighlight lang="mediawiki"> <!-- Ale nie "nazwa przestrzeni nazw""; --> <!-- nazwa przestrzeni nazw=""; --> <!-- Czyli wynik: --> Dyskusja <!-- Widzimy, że wygenerowała się nazwa przestrzeni nazw, którą jest przestrzeń nazw niegłówna, jest ciągiem niepustym; --> ---- <!-- Ale nie "Nazwa przestrzeni nazw 2", bo jej nie ma, ale za to istnieje "nazwa przestrzeni nazw i"; --> <!-- nazwa przestrzeni nazw 2=nazwa przestrzeni nazw i="", a nazwa jednostki 2="Wikibooks:Strona"; --> <!-- Czyli wynik: --> Dyskusja Wikibooks <!-- Widzimy, że wygenerowała się nazwa przestrzeni nazw, którą jest przestrzeń nieprogramowa, ale projektu, wychodząca z nazwy jednostek w tym przypadku z "nazwa jednostki 2"; --> </syntaxhighlight> Dla parametrów numerkowych nie jest brana w tym powyższym przykładzie zmienna {{Code|nazwa przestrzeni nazw 2}}, bo jej nie ma, ale za to jest {{Code|nazwa przestrzeni nazw i}}, bo ona występuje jako parametr domyślny ogólny dla parametrów numerkowych. Tytaj jest używana jest zmienna {{Code|nazwa jednostki 2}} do wygenerowania ostatecznego wyniku, bo jak można zauważyć, parametry przestrzenne wskazują na przestrzeń główną, a nazwy jednostek już nie. Dla parametrów bazowych mamy zmienną {{Code|nazwa przestrzeni nazw}}, ona jest pusta, więc to zostanie wziete do ostatecznego wyniku. Przykłady w wikikodzie: * {{Code|{{m|Pudełko|Nazwa przestrzeni nazw dyskusji 3|nazwa przestrzeni nazw{{=}}|nazwa jednostki{{=}}Wikibooks:Strona}}}} → {{Tt|{{#invoke:Pudełko|Nazwa przestrzeni nazw dyskusji 3|nazwa przestrzeni nazw=|nazwa jednostki=Wikibooks:Szablon}}}} * {{Code|{{m|Pudełko|Nazwa przestrzeni nazw dyskusji 3|nazwa przestrzeni nazw 2{{=}}|nazwa jednostki 2{{=}}Wikibooks:Strona|numer jednostki{{=}}2}}}} → {{Tt|{{#invoke:Pudełko|Nazwa przestrzeni nazw dyskusji 3|nazwa przestrzeni nazw 2=|nazwa jednostki 2=Wikibooks:Szablon|numer jednostki=2}}}} Powyżej dla przykładu podano parametry nie w rodzicu w szablonie, tylko w dziecku, jeśli chodzi o parametry nazw przestrzeni nazw i nazw jednostek, ale ich się za to nie powinno podawać w tych ramach, tylko w szablonach, w których wywoływane są te ramki pudełek {{Code|{{m|Pudełko}}}}, ale tak tutaj tak zrobiono by było najłatwiej sprawdzić działanie tego typu funkcji. Analogicznie możemy podawać parametry typu jednostki, np.: wywołaniu modułowym {{Code|{{m|Pudełko|Nazwa przestrzeni nazw dyskusji 3|typ jednostki 2{{=}}Podręcznik|nazwa jednostki 2{{=}}Szablon:Strona|numer jednostki{{=}}2}}}} (ale wtedy jest brana przestrzeń nazw z nazwy jednostki), ale o tym więcej w rozdziałach {{Code|{{sr|# p["Dyskusyjny typ jednostki 3"](frame,i)|p=Pudełko}}}} w „{{sr|#Funkcje typu jednostki|p=Pudełko}}”, one definiują przestrzenie dyskusji, ale można użyć parametru dyskusji typu jednostki z obojętnie jaką wartością niepustą, czy pustą, czy nawet jej nie podamy, wtedy wyświetli się nazwa przestrzeni nazw dyskusji. Jeżeli typ jednostki bazowy wskazuje na przestrzeń nazw główną, wtedy się nie liczą parametry nazw jednostek, a na numerkowy, wtedy się liczy. Również parametry typu jednostki nie powinno się podawać w dziecku w ramce, tylko w rodzicu w szablonie jako parametry, w którym ta ramka jest wywoływana, ale tutaj podano jedynie dla przykładu, jak najłatwiej sprawdzić działanie tych parametrów tej funkcji. Najpierw w funkcji nagłówku brane są parametry nazw przestrzeni nazw, a jeżeli ich nie ma, to parametry typu jednostki, a jeżeli nie ma lub parametry przestrzenne wskazują na przestrzeń główną, i nie ma nazwy jednostki, to generowane są nazwy tej funkcji na podstawie aktualnej strony. == Funkcje nazw jednostki trzeciej wersji == === {{Code|p["Nazwa jednostki 3"](frame,i)}} === === {{Code|p["Nazwa przedmiotowa jednostki 3"](frame,i)}} === === {{Code|p["Nazwa dyskusji jednostki 3"](frame,i)}} === == Funkcje typu jednostki == === {{Code|p["Typ jednostki"](frame,i)}} === === {{Code|p["Typ jednostki 2"](frame,i)}} === === {{Code|p["Typ jednostki 3"](frame,i)}} === === Funkcje typu jednostki przedmiotowe === ==== {{Code|p["Przedmiotowy typ jednostki"](frame,i)}} ==== ==== {{Code|p["Przedmiotowy typ jednostki 2"](frame,i)}} ==== ==== {{Code|p["Przedmiotowy typ jednostki 3"](frame,i)}} ==== === Fukcje typu jednostki dyskusji === ==== {{Code|p["Dyskusyjny typ jednostki"](frame,i)}} ==== ==== {{Code|p["Dyskusyjny typ jednostki 2"](frame,i)}} ==== ==== {{Code|p["Dyskusyjny typ jednostki 3"](frame,i)}} ==== == Funkcje chech pudełka == === {{Code|p["Cecha pudełka"](frame)}} === === {{Code|p["Przedmiotowa cecha pudełka"](frame)}} === === {{Code|p["Dyskusyjna cecha pudełka"](frame)}} === == Fukcje ogólnego pudełka == === {{Code|p["Ogólne pudełko"](frame)}} === == Funkcje ogólne == === {{Code|p["Tekst pudełka"](frame)}} === == Funkcje błędów pudełka == === {{Code|p["Błędy pudełka"](frame)}} === === {{Code|p["Przedmiotowe błędy pudełka"](frame)}} === === {{Code|p["Dyskusyjne błędy pudełka"](frame)}} === == Funkcje nazw stron == === {{Code|p["Nazwa strony głównej projektu"](frame,i)}} === === {{Code|p["Nazwa strony głównej dla dzieci projektu"](frame,i)}} === == Funkcje kodów == === {{Code|p["Kod języka"](frame,i)}} === === {{Code|p["Kod projektu"](frame,i)}} === === {{Code|p["Klucz projektu"](frame,i)}} === == Funkcje wiki == === {{Code|p["Inny niż język bieżący wiki"](frame)}} === === {{Code|p["Inne niż lokalne wiki"](frame)}} === === {{Code|p["Inne niż bieżące wiki"](frame)}} === == Funkcje typów parametrów, czy podane je == === {{Code|p["Podano parametry nienazwane"](frame)}} === === {{Code|p["Podano parametry numerowane"](frame)}} === === {{Code|p["Podano parametry nazwane"](frame)}} === == Funkcje kodów tego projektu == === {{Code|p["Kod projektu tego projektu"](frame)}} === === {{Code|p["Kod języka tego projektu"](frame)}} === === {{Code|p["Klucz projektu tego projektu"](frame)}} === == Funkcje stron == === {{Code|p["Strona główna tego projektu"](frame)}} === === {{Code|p["Strona główna dla dzieci tego projektu"](frame)}} === == Funkcje nazw stron drugiej wersji == === {{Code|p["Nazwa strony głównej dla dzieci projektu 2"](frame)}} === === {{Code| p["Nazwa strony głównej projektu 2"](frame)}} === {{BrClear}} <noinclude><!-- -->{{ProstaStronaKoniec}}<!-- -->{{Kategoria|Opisy funkcji, w Lua w Scribunto, w modułach}}<!-- --></noinclude> gbxj2oimdhzjap2h4l95rv8bbquu51b 540437 540436 2026-04-24T02:31:24Z Persino 2851 /* Funkcje nazw przestrzeni nazw trzeciej wersji */ 540437 wikitext text/x-wiki <noinclude>{{ProstaStronaStart | nagłówek = {{Podrozdział|{{ld2|Pudełko}}|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 pudelko_modul=require("Module:Pudełko"); </syntaxhighlight> dzięki, któremu można wypisywać funkcje należącego do niego. Posługuje się na parametrach pudełkowych {{Parametr|nazwa przestrzeni nazw}} (czy też bez numerka {{Parametr|nazwa przestrzeni nazw i}} dla tego numerowanego) lub te z numerkiem po jednej spacji w nich (ale nie dla tego z końcówką {{Code| i}}) mogą zostać użyte jako parametry szablonu. Moduł {{Code|{{ld2|Pudełko}}}} przedstawia funkcje nazw w oparciu o funkcje nazw {{Code|{{ld2|Nazwy}}}}, generuje on nazwy za pomocą parametrów pudełkowych podanych poniżej. Parametr {{Parametr|nazwa jednostki}} (lub parametr {{Parametr|cel}} dla numerka tego pierwszego, tego alternatywnego), lub te z numerkiem po jednej spacji w nazwie parametru, albo numerowane numerkami {{Code|1}}, {{Code|2}},..., mogą zostać użyte jako parametry szablonu. Parametry określające rodzaj jednostki {{Parametr|typ jednostki}} z {{Parametr|dyskusja typu jednostki}}, itp. w wersjach z numerkiem po jednej spacji w nich mogą zostać użyte jako parametry szablonu. A te tymi numerowanymi liczbami naturalnymi {{Tt|nazwy jednostki}} od jedynki wzwyż poprzez szablon, w którym są one użyte, one też mogą być użyte z dwukropkiem, te numerowane, na samym początku nazwy, wtedy one są traktowane jako pełne nazwy strony, i wtedy one nie zostaną z interpretowane, że do nich trzeba użyć parametr odpowiedni z nazwą przetrzeni nazw z tego numerowanego, czy ogólny, aby utworzyć znów inną pełną nazwę strony dla tego numerka. Zestawienie: * {{Code|nazwa przestrzeni nazw}} i {{Code|nazwa przestrzeni nazw i}} (ogólna nazwa przestrzeni nazw dla wszystkich numerków, i tych numerowanych jednostek) - i to pierwsze z numerkiem, tzn. {{Code|nazwa przestrzeni nazw 1}}, {{Code|nazwa przestrzeni nazw 2}}, ..., * {{Code|nazwa jednostki}} - i te z numerkiem: {{Code|nazwa jednostki 1}}, {{Code|nazwa jednostki 2}}, ..., lub gdy jest zamiast tego parametrem numerowany, {{Code|1}}, {{Code|2}},..., który dla tego pierwszego może być uznany jako: {{Code|cel}} {{=}} {{Code|1}}, * {{Code|typ jednostki}} (parametr bazowy) i {{Code|typ jednostki i}} (parametr domyślny numerkowy) - i te z numerkiem: {{Code|typ jednostki 1}}, {{Code|typ jednostki 2}}, ..., tzn. gdy chcemy określić z jakim typem jednostki mamy do czynienia w zależności do jakiej przestrzeni nazw należy, a w danej, czy jest on np. programowy, czy tylko jest opisem, jak to bywa w szablonach {{Np|Template|link=tak}}, podobnie jest w przypadku {{Np|Module|link=tak}}, czy jak jest w innych przestrzeniach nazw, ** {{Code|dyskusja typu jednostki}} (parametr bazowy) i {{Code|dyskusja typu jednostki i}} (parametr domyślny numerkowy) - i te z numerkiem: {{Code|dyskusja typu jednostki 1}}, {{Code|dyskusja typu jednostki 2}}, ..., gdy chcemy określić wartością niepustą,że chodzi tutaj o typ jednostki. == {{Code|p.CzyNiepoprawnaNazwa(nazwa_jednostki)}} == Funkcja sprawdzajaca, czy jest poprawnie podana nazwa jednostki, czy ma poprawną nazwę. Znakami tymi, z których nie powinna składać się nazwa jest {{Code|<nowiki>{}<>|[]#\n</nowiki>}} i dodatkowo znak {{Code|&#127;}} (kod {{Code|{{Nowiki|&#127;}}}}). Też nie może składać się z trzech znaków tyldy, tzn. {{Code|<nowiki>~~~</nowiki>}}. Również w swojej budowie nie może składać się ze kodów {{Strong|HTML}} literowych o wzorze {{Code|{{Nowiki|&(%a+);}}}}. Natomiast może składać się z {{Code|{{Nowiki|&#(%d+);}}}} i {{Code|{{Nowiki|&#x(%x+);}}}}, ale w pierw te kody muszą być zamienione na normalne znaki. Skrótowa definicja funkcji: <syntaxhighlight lang="lua"> function p.CzyNiepoprawnaNazwa(nazwa_jednostki)...end; </syntaxhighlight> Wtedy ciało funkcji tej, czyli jego definicja w środku, jest: <syntaxhighlight lang="lua"> -- Moduł: "Moduł:Html/dane", służy do ładowania znaku o kodzie HTML "&#127;"; local html_dane_modul=mw.loadData("Module:Html/dane"); return mw.ustring.match(nazwa_jednostki,"[{}<>|%[%]#\n"..html_dane_modul.znak_127.."]+") or mw.ustring.match(nazwa_jednostki,"~~~") or mw.ustring.match(nazwa_jednostki,"&(%a+);"); </syntaxhighlight> Parametry: * {{Code|nazwa_jednostki}} - nazwa jednostki do sprawdzenia. Przykłady: <syntaxhighlight lang="lua"> local pudelko_modul=require("Module:Pudełko"); -- Podana przykładowa niepoprawna nazwa jedostki local nazwa_jednostki="Nazwa pliku [[Nazwa linku w pliku]]"; -- Fukcja zwróci wartość: local czy_poprawna_nazwa=true; local czy_poprawna_nazwa=pudelko_modul.CzyNiepoprawnaNazwa(nazwa_jednostki); </syntaxhighlight> == Funkcje nazw przestrzeni nazw == === {{Code|p["Nazwa przestrzeni nazw"](frame,...)}} === Funkcja pisze nazwę przestrzeni nazw, niezależnie, czy to jest przedmiotowa, czy dyskusji, według podanej w zmiennej {{Code|nazwa przestrzeni nazw}} dla pozycja bazowej w podanych parametrach szablonu rodzicu ramki dziecka, lub dla innej pozycji należy parametr podawać w formie {{Code|nazwa przestrzeni nazw 1}}, {{Code|nazwa przestrzeni nazw 2}}, {{Code|nazwa przestrzeni nazw 3}},..., lub te parametry można podać w postaci ogólnej {{Code|nazwa przestrzeni nazw i}}. Parametry podaje się w parametrach rodzica wywołania tej funkcji {{Code|{{m|Pudełko|Nazwa przestrzeni nazw}}}} (ale ich nie trzeba podawać w dziecku, ale można) i w parametrach dziecka, jeśli chodzi o zmienną {{Code|numer jednostki}}, czyli np.: {{Code|{{m|Pudełko|Nazwa przestrzeni nazw|numer jednostki{{=}}<jakaś liczba całkowita dodatnia>}}}}. Te parametry przestrzenne zamiast w rodzicu w szablonie można podać w ramce dziecka, wtedy parametry dziecka mają pierwszeństwo. Przestrzeń nazw z parametrów nazw przestrzennych może odpowiadać wartości przestrzeni głównej, to wtedy odpowiednia przestrzeń nazw z parametru nazwy jednostki się nie liczy w tej funkcji, aby się liczyła należy użyć funkcji {{Code|{{sr|#p["Nazwa przestrzeni nazw 2"](frame,...)|p=Pudełko}}}}. Definicja skrótowa funkcji: <syntaxhighlight lang="lua"> p["Nazwa przestrzeni nazw"]=function(frame,czy_uwzglednic_alternatywna_nazwe,i)...end; </syntaxhighlight> Wtedy ciało funkcji tej, czyli jego definicja w środku, jest: <syntaxhighlight lang="lua"> -- Jest liczony numer parametru nazwy przestrzeni nazw, domyslnie chodzi tu o numer bazowy parametrów przestrzennych; local numer_jednostki=i or frame.args["numer jednostki"]; local liczba_numer_jednostki=((numer_jednostki)and(tonumber(numer_jednostki))or 0); local pudelko_pomocne_modul=require("Module:Pudełko/Pomocne"); -- Liczy nazwę przestrzeni nazw na podstawie podanych parametrów; return pudelko_pomocne_modul.Nazwa_przestrzeni_nazw(frame,0, czy_uwzglednic_alternatywna_nazwe,liczba_numer_jednostki); </syntaxhighlight> Parametry funkcji: * {{Code|frame}} - tablica ramki tablicy transportu, * {{Code|czy_uwzglednic_alternatywna_nazwe}} - czy ma uwzględniać nazwę przestrzeni nazw domyślną szablonu, dostępne wartości: {{Code|false}}, w której nazwa domyślna nie jest uwzględniana wtedy, oraz {{Code|nil}} i {{Code|true}}, które oznaczają to samo, w tym jeżeli ona jest uwzględniana, wtedy jest brany parametr pierwszy dziecka, który musi istnieć przy takiej wartości tego parametru, tzn. {{Code|{{m|Pudełko|Nazwa przestrzeni nazw|Szablon}}}}, a nazwa uzyskana nazwy przestrzeni nazw jest w takim przypadku błędna, a jeżeli nazwa domyślna jest błędna, czyli {{Code|{{m|Pudełko|Nazwa przestrzeni nazw|Moja przestrzeń}}}}, wtedy funkcja zwraca stan błędu {{Code|(błąd)}}. * {{Code|i}} - numer zmiennej nazwy przestrzeni nazw. Funkcja wykorzystuje {{Code|{{sr|#p.Nazwa_przestrzeni_nazw(frame,...)|p=Pudełko/Pomocne}}}} do wyznaczania ogólnego nazwy przestrzeni nazw dla pozycji bazowej i numerkowej, tzn. dla pozycji: jeden, dwa, trzy,..., itd, i ich ogólnej. Parametr ramki tablicy transportu rodzica szablonu: * {{Code|nazwa przestrzeni nazw}}, {{Code|nazwa przestrzeni nazw 1}}, {{Code|nazwa przestrzeni nazw 2}}, {{Code|nazwa przestrzeni nazw 3}},..., {{Code|nazwa przestrzeni nazw i}} - nazwy przestrzeni nazw dla pozycji bazowej oraz zwykłej i ogólnej numerkowej, * {{Code|typ jednostki}}, {{Code|typ jednostki 1}}, {{Code|typ jednostki 2}}, {{Code|typ jednostki 3}},..., {{Code|typ jednostki i}} - typy jednostek, którym odpowiadają pewne przestrzenie przedmiotowe, dla pozycji bazowej, numerkowej i ogólnej, ** {{Code|dyskusja typu jednostki}}, {{Code|dyskusja typu jednostki 1}}, {{Code|dyskusja typ jednostki 2}}, {{Code|dyskusja typ jednostki 3}},..., {{Code|dyskusja typ jednostki i}} - czy dany typ jednostki ma przedstawiać, jeśli niepusta, przestrzeń dyskusji dla pozycji bazowej, numerkowej i ogólnej. Parametry ramki tablicy transportu dziecka: * Parametry dziecka są takie same jak rodzica dla funkcji pudełkowej plus tu wymienione, * {{Code|numer jednostki}} - jak parametr {{Code|i}} nie został ustawiony, to wtedy liczy się ta zmienna. Przykłady: <syntaxhighlight lang="mediawiki"> {{Nazwa szablonu|nazwa przestrzeni nazw=Wikibooks|nazwa przestrzeni nazw 2=Szablon|nazwa przestrzeni nazw i=Moduł}} </syntaxhighlight> W dziecku powiedzmy jest wywołanie, i szukamy nazwy przestrzeni nazw o numerze dwa, która nie została podana, ale istnieje za to jej wersji ogólna {{Code|nazwa przestrzeni nazw i}} i domyślna {{Code|nazwa przestrzeni nazw}}: <syntaxhighlight lang="mediawiki"> {{#invoke:Pudełko|Nazwa przestrzeni nazw|numer jednostki=1}} </syntaxhighlight> Na podstawie powyższego przykładu otrzymamy wynik o schemacie, nie wyniku, bo tam nie ma zmiennej {{Code|nazwa przestrzeni nazw 1}}, ale jest {{Code|nazwa przestrzeni nazw i}}: <syntaxhighlight lang="mediawiki"> <!-- Ale nie "nazwa przestrzeni nazw", bo jej nie ma, ale za to istnieje "nazwa przestrzeni nazw i"; --> <!-- nazwa przestrzeni nazw 2=nazwa przestrzeni nazw i=Moduł; --> <!-- Czyli wynik: --> Moduł <!-- Widzimy, że wygenerowała się nazwa przestrzeni nazw, którą jest przestrzeń programowa, którą również jest "Szablon"; --> </syntaxhighlight> Nie jest brana w tym powyższym przykładzie zmienna {{Code|nazwa przestrzeni nazw}}, bo jej nie ma, ale za to jest {{Code|nazwa przestrzeni nazw i}}, bo ona występuje jako parametr domyślny ogólny dla parametrów numerkowych. Przykłady w wikikodzie: * {{Code|{{m|Pudełko|Nazwa przestrzeni nazw|numer jednostki{{=}}2}}}} → {{Tt|{{#invoke:Pudełko|Nazwa przestrzeni nazw|numer jednostki=2}}}} * {{Code|{{m|Pudełko|Nazwa przestrzeni nazw|Szablon|nazwa przestrzeni nazw i{{=}}Moja przestrzeń|numer jednostki{{=}}2}}}} → {{Tt|{{#invoke:Pudełko|Nazwa przestrzeni nazw|Szablon|nazwa przestrzeni nazw i=Moja przestrzeń|numer jednostki=2}}}} * {{Code|{{m|Pudełko|Nazwa przestrzeni nazw|nazwa przestrzeni nazw 2{{=}}Szablon|numer jednostki{{=}}2}}}} → {{Tt|{{#invoke:Pudełko|Nazwa przestrzeni nazw|nazwa przestrzeni nazw 2=Szablon|numer jednostki=2}}}} * {{Code|{{m|Pudełko|Nazwa przestrzeni nazw|nazwa przestrzeni nazw 2{{=}}Szablon|numer jednostki{{=}}2}}}} → {{Tt|{{#invoke:Pudełko|Nazwa przestrzeni nazw|nazwa przestrzeni nazw i=Szablon|numer jednostki=2}}}} * {{Code|{{m|Pudełko|Nazwa przestrzeni nazw|nazwa przestrzeni nazw{{=}}Szablon|numer jednostki{{=}}2}}}} → {{Tt|{{#invoke:Pudełko|Nazwa przestrzeni nazw|nazwa przestrzeni nazw=Szablon|numer jednostki=2}}}} Powyżej dla przykładu podano parametry nie w rodzicu w szablonie, tylko w dziecku, jeśli chodzi o parametry nazw przestrzeni nazw, ale ich się za to nie powinno podawać w tych ramach, tylko w szablonach, w których wywoływane są te ramki pudełek {{Code|{{m|Pudełko}}}}, ale tak tutaj tak zrobiono by było najłatwiej sprawdzić działanie tego typu funkcji. Analogicznie możemy podawać parametry typu jednostki, np.: wywołaniu modułowym {{Code|{{m|Pudełko|Nazwa przestrzeni nazw|typ jednostki 2{{=}}strona szablonu|numer jednostki{{=}}2}}}}, ale o tym więcej w rozdziałach {{Code|{{sr|# p["Typ jednostki"](frame,i)|p=Pudełko}}}} w „{{sr|#Funkcje typu jednostki|p=Pudełko}}”, on definiuje przestrzenie przedmiotowe, ale można użyć parametru dyskusji typu jednostki z wartością niepustą, wtedy wyświetli się nazwa przestrzeni nazw dyskusji. Również parametry typu jednostki nie powinno się podawać w dziecku w ramce, tylko w rodzicu w szablonie jako parametry, w którym ta ramka jest wywoływana, ale tutaj podano jedynie dla przykładu, jak najłatwiej sprawdzić działanie tych parametrów tej funkcji. Najpierw w funkcji nagłówku brane są parametry nazw przestrzeni nazw, a jeżeli ich nie ma, to parametry typu jednostki, a jeżeli nie ma, to generowane są nazwy na podstawie aktualnego modułu. === {{Code|p["Nazwa przedmiotowej przestrzeni nazw"](frame,...)}} === Funkcja pisze przedmiotową nazwę przestrzeni nazw jakikolwiek nazwy przestrzeni nazw (tzn. nazwę przedmiotową nazwy przestrzenie nazw, czyli nie dyskusji, zamieniana jest na nią samą, czyli identyfikator przestrzeni się nie zmienia, a dyskusji, nie przedmiotową, przekształca się na przedmiotową jej odpowiadającą, czyli w tym przypadku identyfikator przestrzeni zmniejsza się o numer mniej), według podanej w zmiennej {{Code|nazwa przestrzeni nazw}} dla pozycja bazowej w podanych parametrach szablonu rodzicu ramki dziecka, lub dla innej pozycji należy parametr podawać w formie {{Code|nazwa przestrzeni nazw 1}}, {{Code|nazwa przestrzeni nazw 2}}, {{Code|nazwa przestrzeni nazw 3}},..., lub te parametry można podać w postaci ogólnej {{Code|nazwa przestrzeni nazw i}}. Parametry podaje się w parametrach rodzica wywołania tej funkcji {{Code|{{m|Pudełko|Nazwa przedmiotowej przestrzeni nazw}}}} (ale ich nie trzeba podawać w dziecku, ale można) i w parametrach dziecka, jeśli chodzi o zmienną {{Code|numer jednostki}}, czyli np.: {{Code|{{m|Pudełko|Nazwa przedmiotowej przestrzeni nazw|numer jednostki{{=}}<jakaś liczba całkowita dodatnia>}}}}. Te parametry przestrzenne zamiast w rodzicu w szablonie można podać w ramce dziecka, wtedy parametry dziecka mają pierwszeństwo. Parametry przestrzenne mogą mogą być podane w postaci przestrzeni przedmiotowej lub dyskusji, ale ta funkcja zawsze ją zamienia na przedmiotową. Przestrzeń nazw z parametrów nazw przestrzennych może odpowiadać wartości przestrzeni głównej, to wtedy odpowiednia przestrzeń nazw z parametru nazwy jednostki się nie liczy w tej funkcji, aby się liczyła należy użyć funkcji {{Code|{{sr|#p["Nazwa przedmiotowej przestrzeni nazw 2"](frame,...)|p=Pudełko}}}}. Definicja skrótowa funkcji: <syntaxhighlight lang="lua"> p["Nazwa przedmiotowej przestrzeni nazw"]=function(frame,czy_uwzglednic_alternatywna_nazwe,i)...end; </syntaxhighlight> Wtedy ciało funkcji tej, czyli jego definicja w środku, jest: <syntaxhighlight lang="lua"> -- Jest liczony numer parametru nazwy przestrzeni nazw, domyslnie chodzi tu o numer bazowy parametrów przestrzennych; local numer_jednostki=i or frame.args["numer jednostki"]; local liczba_numer_jednostki=((numer_jednostki)and(tonumber(numer_jednostki))or 0); local pudelko_pomocne_modul=require("Module:Pudełko/Pomocne"); -- Liczy nazwę przestrzeni nazw przedmiotową na podstawie podanych parametrów; return pudelko_pomocne_modul.Nazwa_przestrzeni_nazw(frame,1, czy_uwzglednic_alternatywna_nazwe,liczba_numer_jednostki); </syntaxhighlight> Parametry funkcji: * {{Code|frame}} - tablica ramki tablicy transportu, * {{Code|czy_uwzglednic_alternatywna_nazwe}} - czy ma uwzględniać nazwę przestrzeni nazw domyślną szablonu, dostępne wartości: {{Code|false}}, w której nazwa domyślna nie jest uwzględniana wtedy, oraz {{Code|nil}} i {{Code|true}}, które oznaczają to samo, w tym jeżeli ona jest uwzględniana, wtedy jest brany parametr pierwszy dziecka, który musi istnieć przy takiej wartości tego parametru, tzn. {{Code|{{m|Pudełko|Nazwa przedmiotowej przestrzeni nazw|Dyskusja szablonu}}}} - ta nazwa domyślna zostanie zamieniona na przedmiotową, a jak ona by była przedmiotowa, to żadnej zamiany by nie było, a nazwa uzyskana z nazwy przestrzeni nazw z parametrów przestrzennych jest w takim przypadku błędna, to w takim razie brany jest ten parametr, a jeżeli ta nazwa domyślna jest błędna, czyli {{Code|{{m|Pudełko|Nazwa przedmiotowej przestrzeni nazw|Moja przestrzeń}}}}, wtedy funkcja zwraca stan błędu {{Code|(błąd)}}. * {{Code|i}} - numer zmiennej nazwy przestrzeni nazw. Funkcja wykorzystuje {{Code|{{sr|#p.Nazwa_przestrzeni_nazw(frame,...)|p=Pudełko/Pomocne}}}} do wyznaczania ogólnego nazwy przestrzeni nazw dla pozycji bazowej i numerkowej, tzn. dla pozycji: jeden, dwa, trzy,..., itd, i ich ogólnej. Parametr ramki tablicy transportu rodzica szablonu: * {{Code|nazwa przestrzeni nazw}}, {{Code|nazwa przestrzeni nazw 1}}, {{Code|nazwa przestrzeni nazw 2}}, {{Code|nazwa przestrzeni nazw 3}},..., {{Code|nazwa przestrzeni nazw i}} - nazwy przestrzeni nazw dla pozycji bazowej oraz zwykłej i ogólnej numerkowej, * {{Code|typ jednostki}}, {{Code|typ jednostki 1}}, {{Code|typ jednostki 2}}, {{Code|typ jednostki 3}},..., {{Code|typ jednostki i}} - typy jednostek, którym odpowiadają pewne przestrzenie przedmiotowe, dla pozycji bazowej, numerkowej i ogólnej. Parametry ramki tablicy transportu dziecka: * Parametry dziecka są takie same jak rodzica dla funkcji pudełkowej plus tu wymienione, * {{Code|numer jednostki}} - jak parametr {{Code|i}} nie został ustawiony, to wtedy liczy się ta zmienna. Przykłady: <syntaxhighlight lang="mediawiki"> {{Nazwa szablonu|nazwa przestrzeni nazw=Dyskusja Wikibooks|nazwa przestrzeni nazw 2=Dyskusja szablonu|nazwa przestrzeni nazw i=Dyskusja modułu}} </syntaxhighlight> W dziecku powiedzmy jest wywołanie, i szukamy nazwy przestrzeni nazw o numerze dwa, która nie została podana, ale istnieje za to jej wersji ogólna {{Code|nazwa przestrzeni nazw i}} i domyślna {{Code|nazwa przestrzeni nazw}}: <syntaxhighlight lang="mediawiki"> {{#invoke:Pudełko|Nazwa przedmiotowej przestrzeni nazw|numer jednostki=1}} </syntaxhighlight> Na podstawie powyższego przykładu otrzymamy wynik o schemacie, nie wyniku, bo tam nie ma zmiennej {{Code|nazwa przestrzeni nazw 1}}, ale jest {{Code|nazwa przestrzeni nazw i}}: <syntaxhighlight lang="mediawiki"> <!-- Ale nie "nazwa przestrzeni nazw", bo jej nie ma, ale za to istnieje "nazwa przestrzeni nazw i"; --> <!-- nazwa przestrzeni nazw 2=nazwa przestrzeni nazw i=Dyskusja modułu; --> <!-- Czyli wynik: --> Moduł <!-- Widzimy, że wygenerowała się nazwa przestrzeni nazw, którą jest przestrzeń przedmiotowa programowa przestrzeni dyskusji "Dyskusja modułu", którą również jest "Szablon" jego przestrzeni dyskusji "Dyskusja szablonu", a dla ich przestrzeni przedmiotowej, zamiast dyskusji, to samo przekształca się na to samo; --> </syntaxhighlight> Nie jest brana w tym powyższym przykładzie zmienna {{Code|nazwa przestrzeni nazw}}, bo jej nie ma, ale za to jest {{Code|nazwa przestrzeni nazw i}}, bo ona występuje jako parametr domyślny ogólny dla parametrów numerkowych. Przykłady w wikikodzie: * {{Code|{{m|Pudełko|Nazwa przedmiotowej przestrzeni nazw|numer jednostki{{=}}2}}}} → {{Tt|{{#invoke:Pudełko|Nazwa przedmiotowej przestrzeni nazw|numer jednostki=2}}}} * {{Code|{{m|Pudełko|Nazwa przedmiotowej przestrzeni nazw|Dyskusja szablonu|nazwa przestrzeni nazw i{{=}}Moja przestrzeń|numer jednostki{{=}}2}}}} → {{Tt|{{#invoke:Pudełko|Nazwa przedmiotowej przestrzeni nazw|Dyskusja szablonu|nazwa przestrzeni nazw i=Moja przestrzeń|numer jednostki=2}}}} * {{Code|{{m|Pudełko|Nazwa przedmiotowej przestrzeni nazw|nazwa przestrzeni nazw 2{{=}}Dyskusja szablonu|numer jednostki{{=}}2}}}} → {{Tt|{{#invoke:Pudełko|Nazwa przedmiotowej przestrzeni nazw|nazwa przestrzeni nazw 2=Dyskusja szablonu|numer jednostki=2}}}} * {{Code|{{m|Pudełko|Nazwa przedmiotowej przestrzeni nazw|nazwa przestrzeni nazw 2{{=}}Dyskusja szablonu|numer jednostki{{=}}2}}}} → {{Tt|{{#invoke:Pudełko|Nazwa przedmiotowej przestrzeni nazw|nazwa przestrzeni nazw i=Dyskusja szablonu|numer jednostki=2}}}} * {{Code|{{m|Pudełko|Nazwa przedmiotowej przestrzeni nazw|nazwa przestrzeni nazw{{=}}Dyskusja szablonu|numer jednostki{{=}}2}}}} → {{Tt|{{#invoke:Pudełko|Nazwa przedmiotowej przestrzeni nazw|nazwa przestrzeni nazw=Dyskusja szablonu|numer jednostki=2}}}} Powyżej dla przykładu podano parametry nie w rodzicu w szablonie, tylko w dziecku, jeśli chodzi o parametry nazw przestrzeni nazw, ale ich się za to nie powinno podawać w tych ramach, tylko w szablonach, w których wywoływane są te ramki pudełek {{Code|{{m|Pudełko}}}}, ale tak tutaj tak zrobiono by było najłatwiej sprawdzić działanie tego typu funkcji. Analogicznie możemy podawać parametry typu jednostki, np.: wywołaniu modułowym {{Code|{{m|Pudełko|Nazwa przedmiotowej przestrzeni nazw|typ jednostki 2{{=}}strona szablonu|numer jednostki{{=}}2}}}}, ale o tym więcej w rozdziałach {{Code|{{sr|# p["Przedmiotowy typ jednostki"](frame,i)|p=Pudełko}}}} w „{{sr|#Funkcje typu jednostki|p=Pudełko}}”, ale wtedy ta sama nazwa przestrzeni nazw reprezentowana przez {{Parametr|typ jednostki 2|strona szablonu}}, jest zamieniana na to samo, lepiej jest tutaj używać parametrów przestrzennych nazw niż typu jednostki, bo typ jednostki ma taką samą wartość dla przestrzeni przedmiotowej, co dyskusji. Tutaj parametr dyskusji typu jednostki bazowy i numerkowy ogólny, czy szczegółowy, nie gra roli, bo nawet, gdy wygenerujemy nazwę przestrzeni dyskusji za pomoca tego parametru, to i tak otrzymamy na samym końcu jego nazwę przedmiotową. Również parametry typu jednostki nie powinno się podawać w dziecku w ramce, tylko w rodzicu w szablonie jako parametry, w którym ta ramka jest wywoływana, ale tutaj podano jedynie dla przykładu, jak najłatwiej sprawdzić działanie tych parametrów tej funkcji. Najpierw w funkcji nagłówku brane są parametry nazw przestrzeni nazw, a jeżeli ich nie ma, to parametry typu jednostki, a jeżeli nie ma, to generowane są nazwy na podstawie aktualnego modułu. === {{Code|p["Nazwa przestrzeni nazw dyskusji"](frame,...)}} === Funkcja pisze nazwę przestrzeni nazw dyskusji jakikolwiek nazwy przestrzeni nazw (tzn. nazwę przedmiotową nazwy przestrzenie nazw, czyli nie dyskusji, zamieniana jest na dyskusji, czyli identyfikator przestrzeni się zmienia jeden wyżej, a dyskusji, nie przedmiotową, przekształca się na tą samą), według podanej w zmiennej {{Code|nazwa przestrzeni nazw}} dla pozycja bazowej w podanych parametrach szablonu rodzicu ramki dziecka, lub dla innej pozycji należy parametr podawać w formie {{Code|nazwa przestrzeni nazw 1}}, {{Code|nazwa przestrzeni nazw 2}}, {{Code|nazwa przestrzeni nazw 3}},..., lub te parametry można podać w postaci ogólnej {{Code|nazwa przestrzeni nazw i}}. Parametry podaje się w parametrach rodzica wywołania tej funkcji {{Code|{{m|Pudełko|Nazwa przestrzeni nazw dyskusji}}}} (ale ich nie trzeba podawać w dziecku, ale można) i w parametrach dziecka, jeśli chodzi o zmienną {{Code|numer jednostki}}, czyli np.: {{Code|{{m|Pudełko|Nazwa przestrzeni nazw dyskusji|numer jednostki{{=}}<jakaś liczba całkowita dodatnia>}}}}. Te parametry przestrzenne zamiast w rodzicu w szablonie można podać w ramce dziecka, wtedy parametry dziecka mają pierwszeństwo. Parametry przestrzenne mogą mogą być podane w postaci przestrzeni przedmiotowej lub dyskusji, ale ta funkcja zawsze ją zamienia na dyskusji. Przestrzeń nazw z parametrów nazw przestrzennych może odpowiadać wartości przestrzeni głównej, to wtedy odpowiednia przestrzeń nazw z parametru nazwy jednostki się nie liczy w tej funkcji, aby się liczyła należy użyć funkcji {{Code|{{sr|#p["Nazwa przestrzeni nazw dyskusji 2"](frame,...)|p=Pudełko}}}}. Definicja skrótowa funkcji: <syntaxhighlight lang="lua"> p["Nazwa przestrzeni nazw dyskusji"]=function(frame,czy_uwzglednic_alternatywna_nazwe,i)...end; </syntaxhighlight> Wtedy ciało funkcji tej, czyli jego definicja w środku, jest: <syntaxhighlight lang="lua"> -- Jest liczony numer parametru nazwy przestrzeni nazw, domyslnie chodzi tu o numer bazowy parametrów przestrzennych; local numer_jednostki=i or frame.args["numer jednostki"]; local liczba_numer_jednostki=((numer_jednostki)and(tonumber(numer_jednostki))or 0); local pudelko_pomocne_modul=require("Module:Pudełko/Pomocne"); -- Liczy nazwę przestrzeni nazw dyskusji na podstawie podanych parametrów; return pudelko_pomocne_modul.Nazwa_przestrzeni_nazw(frame,2, czy_uwzglednic_alternatywna_nazwe,liczba_numer_jednostki); </syntaxhighlight> Parametry funkcji: * {{Code|frame}} - tablica ramki tablicy transportu, * {{Code|czy_uwzglednic_alternatywna_nazwe}} - czy ma uwzględniać nazwę przestrzeni nazw domyślną szablonu, dostępne wartości: {{Code|false}}, w której nazwa domyślna nie jest uwzględniana wtedy, oraz {{Code|nil}} i {{Code|true}}, które oznaczają to samo, w tym jeżeli ona jest uwzględniana, wtedy jest brany parametr pierwszy dziecka, który musi istnieć przy takiej wartości tego parametru, tzn. {{Code|{{m|Pudełko|Nazwa przestrzeni nazw dyskusji|Szablon}}}} - ta nazwa domyślna zostanie przekształcona na dyskusji, a jeżeli ona by była dyskusji, to nie byłoby żadnego przekształcenia, a nazwa uzyskana nazwy przestrzeni nazw z parametrów przestrzennych jest w takim przypadku błędna, to w takim razie brany jest ten parametr, a jeżeli nazwa domyślna jest błędna, czyli {{Code|{{m|Pudełko|Nazwa przestrzeni nazw dyskusji|Moja przestrzeń}}}}, wtedy funkcja zwraca stan błędu {{Code|(błąd)}}. * {{Code|i}} - numer zmiennej nazwy przestrzeni nazw. Funkcja wykorzystuje {{Code|{{sr|#p.Nazwa_przestrzeni_nazw(frame,...)|p=Pudełko/Pomocne}}}} do wyznaczania ogólnego nazwy przestrzeni nazw dla pozycji bazowej i numerkowej, tzn. dla pozycji: jeden, dwa, trzy,..., itd, i ich ogólnej. Parametr ramki tablicy transportu rodzica szablonu: * {{Code|nazwa przestrzeni nazw}}, {{Code|nazwa przestrzeni nazw 1}}, {{Code|nazwa przestrzeni nazw 2}}, {{Code|nazwa przestrzeni nazw 3}},..., {{Code|nazwa przestrzeni nazw i}} - nazwy przestrzeni nazw dla pozycji bazowej oraz zwykłej i ogólnej numerkowej, * {{Code|typ jednostki}}, {{Code|typ jednostki 1}}, {{Code|typ jednostki 2}}, {{Code|typ jednostki 3}},..., {{Code|typ jednostki i}} - typy jednostek, którym odpowiadają pewne przestrzenie przedmiotowe, dla pozycji bazowej, numerkowej i ogólnej. Parametry ramki tablicy transportu dziecka: * Parametry dziecka są takie same jak rodzica dla funkcji pudełkowej plus tu wymienione, * {{Code|numer jednostki}} - jak parametr {{Code|i}} nie został ustawiony, to wtedy liczy się ta zmienna. Przykłady: <syntaxhighlight lang="mediawiki"> {{Nazwa szablonu|nazwa przestrzeni nazw=Wikibooks|nazwa przestrzeni nazw 2=Szablon|nazwa przestrzeni nazw i=Moduł}} </syntaxhighlight> W dziecku powiedzmy jest wywołanie, i szukamy nazwy przestrzeni nazw o numerze dwa, która nie została podana, ale istnieje za to jej wersji ogólna {{Code|nazwa przestrzeni nazw i}} i domyślna {{Code|nazwa przestrzeni nazw}}: <syntaxhighlight lang="mediawiki"> {{#invoke:Pudełko|Nazwa przestrzeni nazw dyskusji|numer jednostki=1}} </syntaxhighlight> Na podstawie powyższego przykładu otrzymamy wynik o schemacie, nie wyniku, bo tam nie ma zmiennej {{Code|nazwa przestrzeni nazw 1}}, ale jest {{Code|nazwa przestrzeni nazw i}}: <syntaxhighlight lang="mediawiki"> <!-- Ale nie "nazwa przestrzeni nazw", bo jej nie ma, ale za to istnieje "nazwa przestrzeni nazw i"; --> <!-- nazwa przestrzeni nazw 2=nazwa przestrzeni nazw i=Moduł; --> <!-- Czyli wynik: --> Dyskusja modułu <!-- Widzimy, że wygenerowała się nazwa przestrzeni nazw, którą jest przestrzeń dyskusji przestrzeni programowej przestrzeni przedmiotowej "Moduł", którą również jest "Szablon" jego przestrzeni dyskusji "Dyskusja szablonu", a dla ich przestrzeni przedmiotowej, zamiast dyskusji, to przekształca się na dyskusji jej odpowiadającą; --> </syntaxhighlight> Nie jest brana w tym powyższym przykładzie zmienna {{Code|nazwa przestrzeni nazw}}, bo jej nie ma, ale za to jest {{Code|nazwa przestrzeni nazw i}}, bo ona występuje jako parametr domyślny ogólny dla parametrów numerkowych. Przykłady w wikikodzie: * {{Code|{{m|Pudełko|Nazwa przestrzeni nazw dyskusji|numer jednostki{{=}}2}}}} → {{Tt|{{#invoke:Pudełko|Nazwa przestrzeni nazw dyskusji|numer jednostki=2}}}} * {{Code|{{m|Pudełko|Nazwa przestrzeni nazw dyskusji|Szablon|nazwa przestrzeni nazw i{{=}}Moja przestrzeń|numer jednostki{{=}}2}}}} → {{Tt|{{#invoke:Pudełko|Nazwa przestrzeni nazw dyskusji|Szablon|nazwa przestrzeni nazw i=Moja przestrzeń|numer jednostki=2}}}} * {{Code|{{m|Pudełko|Nazwa przestrzeni nazw dyskusji|nazwa przestrzeni nazw 2{{=}}Szablon|numer jednostki{{=}}2}}}} → {{Tt|{{#invoke:Pudełko|Nazwa przestrzeni nazw dyskusji|nazwa przestrzeni nazw 2=Szablon|numer jednostki=2}}}} * {{Code|{{m|Pudełko|Nazwa przestrzeni nazw dyskusji|nazwa przestrzeni nazw 2{{=}}Szablon|numer jednostki{{=}}2}}}} → {{Tt|{{#invoke:Pudełko|Nazwa przestrzeni nazw dyskusji|nazwa przestrzeni nazw i=Szablon|numer jednostki=2}}}} * {{Code|{{m|Pudełko|Nazwa przestrzeni nazw dyskusji|nazwa przestrzeni nazw{{=}}Szablon|numer jednostki{{=}}2}}}} → {{Tt|{{#invoke:Pudełko|Nazwa przestrzeni nazw dyskusji|nazwa przestrzeni nazw=Szablon|numer jednostki=2}}}} Powyżej dla przykładu podano parametry nie w rodzicu w szablonie, tylko w dziecku, jeśli chodzi o parametry nazw przestrzeni nazw, ale ich się za to nie powinno podawać w tych ramach, tylko w szablonach, w których wywoływane są te ramki pudełek {{Code|{{m|Pudełko}}}}, ale tak tutaj tak zrobiono by było najłatwiej sprawdzić działanie tego typu funkcji. Analogicznie możemy podawać parametry typu jednostki, np.: wywołaniu modułowym {{Code|{{m|Pudełko|Nazwa przestrzeni nazw dyskusji|typ jednostki 2{{=}}strona szablonu|numer jednostki{{=}}2}}}}, ale o tym więcej w rozdziałach {{Code|{{sr|# p["Dyskusyjny typ jednostki"](frame,i)|p=Pudełko}}}} w „{{sr|#Funkcje typu jednostki|p=Pudełko}}”, ale wtedy nazwa przestrzeni nazw reprezentowana przez {{Parametr|typ jednostki 2|strona szablonu}}, jest zamieniana na nazwę przestrzeni nazw dyskusji. Parametr dyskusji typu jednostki bazowy lub dla danego numerka ogólny, czy szczegółowy, nie gra roli. Również parametry typu jednostki nie powinno się podawać w dziecku w ramce, tylko w rodzicu w szablonie jako parametry, w którym ta ramka jest wywoływana, ale tutaj podano jedynie dla przykładu, jak najłatwiej sprawdzić działanie tych parametrów tej funkcji. Najpierw w funkcji nagłówku brane są parametry nazw przestrzeni nazw, a jeżeli ich nie ma, to parametry typu jednostki, a jeżeli nie ma, to generowane są nazwy na podstawie aktualnego modułu. == Funkcje nazw przestrzeni nazw drugiej wersji == === {{Code|p["Nazwa przestrzeni nazw 2"](frame,...)}} === Funkcja pisze nazwę przestrzeni nazw, niezależnie, czy to jest przedmiotowa, czy dyskusji, według, i nie zawsze tylko, podanej w zmiennej {{Code|nazwa przestrzeni nazw}} dla pozycja bazowej w podanych parametrach szablonu rodzicu ramki dziecka, lub dla innej pozycji należy parametr podawać w formie {{Code|nazwa przestrzeni nazw 1}}, {{Code|nazwa przestrzeni nazw 2}}, {{Code|nazwa przestrzeni nazw 3}},..., lub te parametry można podać w postaci ogólnej {{Code|nazwa przestrzeni nazw i}}. W tej funkcji trzeba też podawać parametry nazwy jednostek {{Code|nazwa jednostki}}, {{Code|nazwa jednostki 1}}, {{Code|nazwa jednostki 2}}, {{Code|nazwa jednostki 3}},... Parametry podaje się w parametrach rodzica wywołania tej funkcji {{Code|{{m|Pudełko|Nazwa przestrzeni nazw 2}}}} (ale ich nie trzeba podawać w dziecku, ale można) i w parametrach dziecka, jeśli chodzi o zmienną {{Code|numer jednostki}}, czyli np.: {{Code|{{m|Pudełko|Nazwa przestrzeni nazw 2|numer jednostki{{=}}<jakaś liczba całkowita dodatnia>}}}}. Te parametry przestrzenne zamiast w rodzicu w szablonie można podać w ramce dziecka, wtedy parametry dziecka mają pierwszeństwo. Przestrzeń nazw z parametrów nazw przestrzennych może odpowiadać wartości przestrzeni głównej, to wtedy odpowiednia przestrzeń nazw z parametru nazwy jednostki się liczy w tej funkcji, wtedy jest liczona nazwa przestrzeni nazw z tego parametru. Gdy parametry przestrzenne lub typ jednostki w drugim podejściu nie wskazują na przestrzeń główną, to wtedy działanie tej funkcji jest podobne do {{Code|{{sr|#p["Nazwa przestrzeni nazw"](frame,...)|p=Pudełko}}}}. Definicja skrótowa funkcji: <syntaxhighlight lang="lua"> p["Nazwa przestrzeni nazw 2"]=function(frame,czy_uwzglednic_alternatywna_nazwe,i)...end; </syntaxhighlight> Wtedy ciało funkcji tej, czyli jego definicja w środku, jest: <syntaxhighlight lang="lua"> local pudelko_pomocne_modul=require("Module:Pudełko/Pomocne"); -- Liczy nazwę przestrzeni nazw, jeżeli z parametrów przestrzennych przestrzeń wskazuje na główną, to wtedy jest liczona przestrzeń nazw z nazwy jednostki; return pudelko_pomocne_modul.Nazwa_przestrzeni_nazw_2(frame,czy_uwzglednic_alternatywna_nazwe,i) </syntaxhighlight> Parametry funkcji: * {{Code|frame}} - tablica ramki tablicy transportu, * {{Code|czy_uwzglednic_alternatywna_nazwe}} - czy ma uwzględniać nazwę przestrzeni nazw domyślną szablonu, dostępne wartości: {{Code|false}}, w której nazwa domyślna nie jest uwzględniana wtedy, oraz {{Code|nil}} i {{Code|true}}, które oznaczają to samo, w tym jeżeli ona jest uwzględniana, wtedy jest brany parametr pierwszy dziecka, który musi istnieć przy takiej wartości tego parametru, tzn. {{Code|{{m|Pudełko|Nazwa przestrzeni nazw 2|Szablon}}}}, a nazwa uzyskana nazwy przestrzeni nazw jest w takim przypadku błędna, a jeżeli nazwa domyślna jest błędna, czyli {{Code|{{m|Pudełko|Nazwa przestrzeni nazw 2|Moja przestrzeń}}}}, wtedy funkcja zwraca stan błędu {{Code|(błąd)}}. * {{Code|i}} - numer zmiennej nazwy przestrzeni nazw. Funkcja wykorzystuje {{Code|{{sr|#p.Nazwa_przestrzeni_nazw_2(frame,...)|p=Pudełko/Pomocne}}}} do wyznaczania ogólnego nazwy przestrzeni nazw dla pozycji bazowej i numerkowej, tzn. dla pozycji: jeden, dwa, trzy,..., itd, i ich ogólnej. Parametr ramki tablicy transportu rodzica szablonu: * {{Code|nazwa przestrzeni nazw}}, {{Code|nazwa przestrzeni nazw 1}}, {{Code|nazwa przestrzeni nazw 2}}, {{Code|nazwa przestrzeni nazw 3}},..., {{Code|nazwa przestrzeni nazw i}} - nazwy przestrzeni nazw dla pozycji bazowej oraz zwykłej i ogólnej numerkowej, * {{Code|nazwa jednostki}}, {{Code|nazwa jednostki 1}}, {{Code|nazwa jednostki 2}}, {{Code|nazwa jednostki 3}},... - nazwy jednostek dla pozycji bazowej i numerkowej, * {{Code|typ jednostki}}, {{Code|typ jednostki 1}}, {{Code|typ jednostki 2}}, {{Code|typ jednostki 3}},..., {{Code|typ jednostki i}} - typy jednostek, którym odpowiadają pewne przestrzenie przedmiotowe, dla pozycji bazowej, numerkowej i ogólnej, ** {{Code|dyskusja typu jednostki}}, {{Code|dyskusja typu jednostki 1}}, {{Code|dyskusja typ jednostki 2}}, {{Code|dyskusja typ jednostki 3}},..., {{Code|dyskusja typ jednostki i}} - czy dany typ jednostki ma przedstawiać, jeśli niepusta, przestrzeń dyskusji dla pozycji bazowej, numerkowej i ogólnej. Parametry ramki tablicy transportu dziecka: * Parametry dziecka są takie same jak rodzica dla funkcji pudełkowej plus tu wymienione, * {{Code|numer jednostki}} - jak parametr {{Code|i}} nie został ustawiony, to wtedy liczy się ta zmienna. Przykłady: <syntaxhighlight lang="mediawiki"> {{Nazwa szablonu|nazwa przestrzeni nazw=Wikibooks|nazwa przestrzeni nazw 1=Szablon|nazwa przestrzeni nazw i=|nazwa jednostki 2=Wikibooks:Strona}} </syntaxhighlight> W dziecku powiedzmy jest wywołanie, i szukamy nazwy przestrzeni nazw o numerze dwa, która została podana, ale istnieje za to jej wersji ogólna {{Code|nazwa przestrzeni nazw i}} i domyślna {{Code|nazwa przestrzeni nazw}}, ale wtedy dla tego numerkowego liczy się to ogólne z {{Code| i}}, a ponieważ ta nazwa jest pusta, więc będziemy liczyli nazwę przestrzeni nazw z {{Code|nazwa jednostki 2}}: <syntaxhighlight lang="mediawiki"> {{#invoke:Pudełko|Nazwa przestrzeni nazw 2|numer jednostki=2}} </syntaxhighlight> Na podstawie powyższego przykładu otrzymamy wynik o schemacie, nie wyniku, bo tam nie ma zmiennej {{Code|nazwa przestrzeni nazw 1}}, ale jest {{Code|nazwa przestrzeni nazw i}}: <syntaxhighlight lang="mediawiki"> <!-- Ale nie "nazwa przestrzeni nazw 2", bo jej nie ma, ale za to istnieje "nazwa przestrzeni nazw i"; --> <!-- nazwa przestrzeni nazw 2=nazwa przestrzeni nazw i="", a nazwa jednostki 2="Wikibooks:Strona"; --> <!-- Czyli wynik: --> Wikibooks <!-- Widzimy, że wygenerowała się nazwa przestrzeni nazw, którą jest przestrzeń nieprogramowa, ale projektu, wychodząca z nazwy jednostek w tym przypadku z "nazwa jednostki 2"; --> </syntaxhighlight> Nie jest brana w tym powyższym przykładzie zmienna {{Code|nazwa przestrzeni nazw}}, bo jej nie ma, ale za to jest {{Code|nazwa przestrzeni nazw i}}, bo ona występuje jako parametr domyślny ogólny dla parametrów numerkowych. Tytaj jest używana jest zmienna {{Code|nazwa jednostki 2}} do wygenerowania ostatecznego wyniku, bo jak można zauważyć, parametry przestrzenne wskazują na przestrzeń główną, a nazwy jednostek już nie. Przykłady w wikikodzie: * {{Code|{{m|Pudełko|Nazwa przestrzeni nazw 2|numer jednostki{{=}}2}}}} → {{Tt|{{#invoke:Pudełko|Nazwa przestrzeni nazw 2|numer jednostki=2}}}} * {{Code|{{m|Pudełko|Nazwa przestrzeni nazw 2|Szablon|nazwa przestrzeni nazw i{{=}}Moja przestrzeń|numer jednostki{{=}}2}}}} → {{Tt|{{#invoke:Pudełko|Nazwa przestrzeni nazw 2|Szablon|nazwa przestrzeni nazw i=Moja przestrzeń|numer jednostki=2}}}} * {{Code|{{m|Pudełko|Nazwa przestrzeni nazw 2|nazwa przestrzeni nazw 2{{=}}|nazwa jednostki 2{{=}}Szablon:Strona|numer jednostki{{=}}2}}}} → {{Tt|{{#invoke:Pudełko|Nazwa przestrzeni nazw 2|nazwa przestrzeni nazw 2=|nazwa jednostki 2=Szablon:Strona|numer jednostki=2}}}} * {{Code|{{m|Pudełko|Nazwa przestrzeni nazw 2|nazwa przestrzeni nazw i{{=}}|nazwa jednostki 2{{=}}Szablon:Strona|numer jednostki{{=}}2}}}} → {{Tt|{{#invoke:Pudełko|Nazwa przestrzeni nazw 2|nazwa przestrzeni nazw i=|nazwa jednostki 2=Szablon:Strona|numer jednostki=2}}}} * {{Code|{{m|Pudełko|Nazwa przestrzeni nazw 2|Szablon|nazwa przestrzeni nazw{{=}}|nazwa jednostki 2{{=}}Wikibooks:Strona|numer jednostki{{=}}2}}}} → {{Tt|{{#invoke:Pudełko|Nazwa przestrzeni nazw 2|Szablon|nazwa przestrzeni nazw=|nazwa jednostki 2=Wikibooks:Strona|numer jednostki=2}}}} Powyżej dla przykładu podano parametry nie w rodzicu w szablonie, tylko w dziecku, jeśli chodzi o parametry nazw przestrzeni nazw i nazw jednostek, ale ich się za to nie powinno podawać w tych ramach, tylko w szablonach, w których wywoływane są te ramki pudełek {{Code|{{m|Pudełko}}}}, ale tak tutaj tak zrobiono by było najłatwiej sprawdzić działanie tego typu funkcji. Analogicznie możemy podawać parametry typu jednostki, np.: wywołaniu modułowym {{Code|{{m|Pudełko|Nazwa przestrzeni nazw 2|typ jednostki 2{{=}}Podręcznik|nazwa jednostki 2{{=}}Szablon:Strona|numer jednostki{{=}}2}}}} (ale wtedy jest brana przestrzeń nazw z nazwy jednostki), ale o tym więcej w rozdziałach {{Code|{{sr|#p["Typ jednostki 2"](frame,i)|p=Pudełko}}}} w „{{sr|#Funkcje typu jednostki|p=Pudełko}}”, on definiuje przestrzenie przedmiotowe, ale można użyć parametru dyskusji typu jednostki z wartością niepustą, wtedy wyświetli się nazwa przestrzeni nazw dyskusji. Jeżeli typ jednostki wskazuje na przestrzeń nazw główną, wtedy się liczą parametry nazw jednostek. Również parametry typu jednostki nie powinno się podawać w dziecku w ramce, tylko w rodzicu w szablonie jako parametry, w którym ta ramka jest wywoływana, ale tutaj podano jedynie dla przykładu, jak najłatwiej sprawdzić działanie tych parametrów tej funkcji. Najpierw w funkcji nagłówku brane są parametry nazw przestrzeni nazw, a jeżeli ich nie ma, to parametry typu jednostki, a jeżeli nie ma lub parametry przestrzenne wskazują na przestrzeń główną, i nie ma nazwy jednostki, to generowane są nazwy tej funkcji na podstawie aktualnej strony. === {{Code|p["Nazwa przedmiotowej przestrzeni nazw 2"](frame,...)}} === Funkcja pisze przedmiotową nazwę przestrzeni nazw jakikolwiek nazwy przestrzeni nazw (tzn. nazwę przedmiotową nazwy przestrzenie nazw, czyli nie dyskusji, zamieniana jest na nią samą, czyli identyfikator przestrzeni się nie zmienia, a dyskusji, nie przedmiotową, przekształca się na przedmiotową jej odpowiadającą, czyli w tym przypadku identyfikator przestrzeni zmniejsza się o numer mniej), według, i nie zawsze tylko, podanej w zmiennej {{Code|nazwa przestrzeni nazw}} dla pozycja bazowej w podanych parametrach szablonu rodzicu ramki dziecka, lub dla innej pozycji należy parametr podawać w formie {{Code|nazwa przestrzeni nazw 1}}, {{Code|nazwa przestrzeni nazw 2}}, {{Code|nazwa przestrzeni nazw 3}},..., lub te parametry można podać w postaci ogólnej {{Code|nazwa przestrzeni nazw i}}. W tej funkcji trzeba też podawać parametry nazwy jednostek {{Code|nazwa jednostki}}, {{Code|nazwa jednostki 1}}, {{Code|nazwa jednostki 2}}, {{Code|nazwa jednostki 3}},... Parametry podaje się w parametrach rodzica wywołania tej funkcji {{Code|{{m|Pudełko|Nazwa przedmiotowej przestrzeni nazw 2}}}} (ale ich nie trzeba podawać w dziecku, ale można) i w parametrach dziecka, jeśli chodzi o zmienną {{Code|numer jednostki}}, czyli np.: {{Code|{{m|Pudełko|Nazwa przedmiotowej przestrzeni nazw 2|numer jednostki{{=}}<jakaś liczba całkowita dodatnia>}}}}. Te parametry przestrzenne zamiast w rodzicu w szablonie można podać w ramce dziecka, wtedy parametry dziecka mają pierwszeństwo. Przestrzeń nazw z parametrów nazw przestrzennych po przekształceniu na przedmiotową może odpowiadać wartości przestrzeni głównej, to wtedy odpowiednia przestrzeń nazw z parametru nazwy jednostki się liczy w tej funkcji, wtedy jest liczona nazwa przestrzeni nazw z tego parametru. Gdy parametry przestrzenne lub typ jednostki w drugim podejściu nie wskazują na przestrzeń główną, to wtedy działanie tej funkcji jest podobne do {{Code|{{sr|#p["Nazwa przedmiotowej przestrzeni nazw"](frame,...)|p=Pudełko}}}}. Definicja skrótowa funkcji: <syntaxhighlight lang="lua"> p["Nazwa przedmiotowej przestrzeni nazw 2"]=function(frame,czy_uwzglednic_alternatywna_nazwe,i)...end; </syntaxhighlight> Wtedy ciało funkcji tej, czyli jego definicja w środku, jest: <syntaxhighlight lang="lua"> local pudelko_pomocne_modul=require("Module:Pudełko/Pomocne"); return pudelko_pomocne_modul.Nazwa_przestrzeni_nazw_przedmiotowa_dyskusji_2(frame,czy_uwzglednic_alternatywna_nazwe,i,"przedmiotowa"); </syntaxhighlight> Parametry funkcji: * {{Code|frame}} - tablica ramki tablicy transportu, * {{Code|czy_uwzglednic_alternatywna_nazwe}} - czy ma uwzględniać nazwę przestrzeni nazw domyślną szablonu, dostępne wartości: {{Code|false}}, w której nazwa domyślna nie jest uwzględniana wtedy, oraz {{Code|nil}} i {{Code|true}}, które oznaczają to samo, w tym jeżeli ona jest uwzględniana, wtedy jest brany parametr pierwszy dziecka, który musi istnieć przy takiej wartości tego parametru, tzn. {{Code|{{m|Pudełko|Nazwa przedmiotowej przestrzeni nazw 2|Szablon}}}}, a nazwa uzyskana nazwy przestrzeni nazw jest w takim przypadku błędna, a jeżeli nazwa domyślna jest błędna, czyli {{Code|{{m|Pudełko|Nazwa przedmiotowej przestrzeni nazw 2|Moja przestrzeń}}}}, wtedy funkcja zwraca stan błędu {{Code|(błąd)}}. * {{Code|i}} - numer zmiennej nazwy przestrzeni nazw. Funkcja wykorzystuje {{Code|{{sr|#p.Nazwa_przestrzeni_nazw_przedmiotowa_dyskusji_2(frame,...)|p=Pudełko/Pomocne}}}} do wyznaczania ogólnego nazwy przestrzeni nazw dla pozycji bazowej i numerkowej, tzn. dla pozycji: jeden, dwa, trzy,..., itd, i ich ogólnej. Parametr ramki tablicy transportu rodzica szablonu: * {{Code|nazwa przestrzeni nazw}}, {{Code|nazwa przestrzeni nazw 1}}, {{Code|nazwa przestrzeni nazw 2}}, {{Code|nazwa przestrzeni nazw 3}},..., {{Code|nazwa przestrzeni nazw i}} - nazwy przestrzeni nazw dla pozycji bazowej oraz zwykłej i ogólnej numerkowej, * {{Code|nazwa jednostki}}, {{Code|nazwa jednostki 1}}, {{Code|nazwa jednostki 2}}, {{Code|nazwa jednostki 3}},... - nazwy jednostek dla pozycji bazowej i numerkowej, * {{Code|typ jednostki}}, {{Code|typ jednostki 1}}, {{Code|typ jednostki 2}}, {{Code|typ jednostki 3}},..., {{Code|typ jednostki i}} - typy jednostek, którym odpowiadają pewne przestrzenie przedmiotowe, dla pozycji bazowej, numerkowej i ogólnej. Parametry ramki tablicy transportu dziecka: * Parametry dziecka są takie same jak rodzica dla funkcji pudełkowej plus tu wymienione, * {{Code|numer jednostki}} - jak parametr {{Code|i}} nie został ustawiony, to wtedy liczy się ta zmienna. Przykłady: <syntaxhighlight lang="mediawiki"> {{Nazwa szablonu|nazwa przestrzeni nazw=Wikibooks|nazwa przestrzeni nazw 1=Szablon|nazwa przestrzeni nazw i=|nazwa jednostki 2=Dyskusja Wikibooks:Strona}} </syntaxhighlight> W dziecku powiedzmy jest wywołanie, i szukamy nazwy przestrzeni nazw o numerze dwa, która została podana, ale istnieje za to jej wersji ogólna {{Code|nazwa przestrzeni nazw i}} i domyślna {{Code|nazwa przestrzeni nazw}}, ale wtedy dla tego numerkowego liczy się to ogólne z {{Code| i}}, a ponieważ ta nazwa jest pusta, więc będziemy liczyli nazwę przestrzeni nazw z {{Code|nazwa jednostki 2}}: <syntaxhighlight lang="mediawiki"> {{#invoke:Pudełko|Nazwa przedmiotowej przestrzeni nazw 2|numer jednostki=2}} </syntaxhighlight> Na podstawie powyższego przykładu otrzymamy wynik o schemacie, nie wyniku, bo tam nie ma zmiennej {{Code|nazwa przestrzeni nazw 1}}, ale jest {{Code|nazwa przestrzeni nazw i}}: <syntaxhighlight lang="mediawiki"> <!-- Ale nie "nazwa przestrzeni nazw 2", bo jej nie ma, ale za to istnieje "nazwa przestrzeni nazw i"; --> <!-- nazwa przestrzeni nazw 2=nazwa przestrzeni nazw i="", a nazwa jednostki 2="Dyskusja Wikibooks:Strona"; --> <!-- Czyli wynik: --> Wikibooks <!-- Widzimy, że wygenerowała się nazwa przestrzeni nazw, którą jest przestrzeń nieprogramowa, ale projektu, wychodząca z nazwy jednostek w tym przypadku z "nazwa jednostki 2"; --> </syntaxhighlight> Nie jest brana w tym powyższym przykładzie zmienna {{Code|nazwa przestrzeni nazw}}, bo jej nie ma, ale za to jest {{Code|nazwa przestrzeni nazw i}}, bo ona występuje jako parametr domyślny ogólny dla parametrów numerkowych. Tytaj jest używana jest zmienna {{Code|nazwa jednostki 2}} do wygenerowania ostatecznego wyniku, bo jak można zauważyć, parametry przestrzenne wskazują na przestrzeń główną, a nazwy jednostek już nie. Przykłady w wikikodzie: * {{Code|{{m|Pudełko|Nazwa przedmiotowej przestrzeni nazw 2|numer jednostki{{=}}2}}}} → {{Tt|{{#invoke:Pudełko|Nazwa przedmiotowej przestrzeni nazw 2|numer jednostki=2}}}} * {{Code|{{m|Pudełko|Nazwa przedmiotowej przestrzeni nazw 2|Dyskusja szablonu|nazwa przestrzeni nazw i{{=}}Moja przestrzeń|numer jednostki{{=}}2}}}} → {{Tt|{{#invoke:Pudełko|Nazwa przedmiotowej przestrzeni nazw 2|Dyskusja szablonu|nazwa przestrzeni nazw i=Moja przestrzeń|numer jednostki=2}}}} * {{Code|{{m|Pudełko|Nazwa przedmiotowej przestrzeni nazw 2|nazwa przestrzeni nazw 2{{=}}Dyskusja|nazwa jednostki 2{{=}}Dyskusja szablonu:Strona|numer jednostki{{=}}2}}}} → {{Tt|{{#invoke:Pudełko|Nazwa przedmiotowej przestrzeni nazw 2|nazwa przestrzeni nazw 2=Dyskusja|nazwa jednostki 2=Dyskusja szablonu:Strona|numer jednostki=2}}}} * {{Code|{{m|Pudełko|Nazwa przedmiotowej przestrzeni nazw 2|nazwa przestrzeni nazw i{{=}}Dyskusja|nazwa jednostki 2{{=}}Dyskusja szablonu:Strona|numer jednostki{{=}}2}}}} → {{Tt|{{#invoke:Pudełko|Nazwa przedmiotowej przestrzeni nazw 2|nazwa przestrzeni nazw i=Dyskusja|nazwa jednostki 2=Dyskusja szablonu:Strona|numer jednostki=2}}}} * {{Code|{{m|Pudełko|Nazwa przedmiotowej przestrzeni nazw 2|Dyskusja szablonu|nazwa przestrzeni nazw{{=}}Dyskusja|nazwa jednostki 2{{=}}Wikibooks:Strona|numer jednostki{{=}}2}}}} → {{Tt|{{#invoke:Pudełko|Nazwa przedmiotowej przestrzeni nazw 2|Dyskusja szablonu|nazwa przestrzeni nazw=Dyskusja|nazwa jednostki 2=Dyskusja Wikibooks:Strona|numer jednostki=2}}}} Powyżej dla przykładu podano parametry nie w rodzicu w szablonie, tylko w dziecku, jeśli chodzi o parametry nazw przestrzeni nazw i nazw jednostek, ale ich się za to nie powinno podawać w tych ramach, tylko w szablonach, w których wywoływane są te ramki pudełek {{Code|{{m|Pudełko}}}}, ale tak tutaj tak zrobiono by było najłatwiej sprawdzić działanie tego typu funkcji. Analogicznie możemy podawać parametry typu jednostki, np.: wywołaniu modułowym {{Code|{{m|Pudełko|Nazwa przedmiotowej przestrzeni nazw 2|typ jednostki 2{{=}}Podręcznik|nazwa jednostki 2{{=}}Dyskusja szablonu:Strona|numer jednostki{{=}}2}}}} (ale wtedy jest brana przestrzeń nazw z nazwy jednostki), ale o tym więcej w rozdziałach {{Code|{{sr|# p["Przedmiotowy typ jednostki 2"](frame,i)|p=Pudełko}}}} w „{{sr|#Funkcje typu jednostki|p=Pudełko}}”, on definiuje przestrzenie przedmiotowe, ale można użyć parametru dyskusji typu jednostki z wartością niepustą, pustą, czy nawet jej nie podamy, wtedy wyświetli się nazwa przestrzeni nazw przedmiotowej. Jeżeli typ jednostki wskazuje na przestrzeń nazw główną, wtedy się liczą parametry nazw jednostek. Również parametry typu jednostki nie powinno się podawać w dziecku w ramce, tylko w rodzicu w szablonie jako parametry, w którym ta ramka jest wywoływana, ale tutaj podano jedynie dla przykładu, jak najłatwiej sprawdzić działanie tych parametrów tej funkcji. Najpierw w funkcji nagłówku brane są parametry nazw przestrzeni nazw, a jeżeli ich nie ma, to parametry typu jednostki, a jeżeli nie ma lub parametry przestrzenne wskazują na przestrzeń główną, i nie ma nazwy jednostki, to generowane są nazwy tej funkcji na podstawie aktualnej strony. === {{Code|p["Nazwa przestrzeni nazw dyskusji 2"](frame,...)}} === Funkcja pisze nazwę przestrzeni nazw dyskusji jakikolwiek nazwy przestrzeni nazw (tzn. nazwę dyskusji nazwy przestrzenie nazw, czyli nie przedmiotowej, zamieniana jest na nią samą, czyli identyfikator przestrzeni się nie zmienia, a przedmiotową, nie dyskusji, przekształca się na dyskusji jej odpowiadającą, czyli w tym przypadku identyfikator przestrzeni zwiększa się o numer więcej), według, i nie zawsze tylko, podanej w zmiennej {{Code|nazwa przestrzeni nazw}} dla pozycja bazowej w podanych parametrach szablonu rodzicu ramki dziecka, lub dla innej pozycji należy parametr podawać w formie {{Code|nazwa przestrzeni nazw 1}}, {{Code|nazwa przestrzeni nazw 2}}, {{Code|nazwa przestrzeni nazw 3}},..., lub te parametry można podać w postaci ogólnej {{Code|nazwa przestrzeni nazw i}}. W tej funkcji trzeba też podawać parametry nazwy jednostek {{Code|nazwa jednostki}}, {{Code|nazwa jednostki 1}}, {{Code|nazwa jednostki 2}}, {{Code|nazwa jednostki 3}},... Parametry podaje się w parametrach rodzica wywołania tej funkcji {{Code|{{m|Pudełko|Nazwa przestrzeni nazw dyskusji 2}}}} (ale ich nie trzeba podawać w dziecku, ale można) i w parametrach dziecka, jeśli chodzi o zmienną {{Code|numer jednostki}}, czyli np.: {{Code|{{m|Pudełko|Nazwa przestrzeni nazw dyskusji 2|numer jednostki{{=}}<jakaś liczba całkowita dodatnia>}}}}. Te parametry przestrzenne zamiast w rodzicu w szablonie można podać w ramce dziecka, wtedy parametry dziecka mają pierwszeństwo. Przestrzeń nazw z parametrów nazw przestrzennych po przekształceniu na przedmiotową może odpowiadać wartości przestrzeni głównej, to wtedy odpowiednia przestrzeń nazw z parametru nazwy jednostki się liczy w tej funkcji, wtedy jest liczona nazwa przestrzeni nazw z tego parametru. Gdy parametry przestrzenne lub typ jednostki w drugim podejściu nie wskazują na przestrzeń główną, to wtedy działanie tej funkcji jest podobne do {{Code|{{sr|#p["Nazwa dyskusji przestrzeni nazw"](frame,...)|p=Pudełko}}}}. Definicja skrótowa funkcji: <syntaxhighlight lang="lua"> p["Nazwa przestrzeni nazw dyskusji 2"]=function(frame,czy_uwzglednic_alternatywna_nazwe,i)...end; </syntaxhighlight> Wtedy ciało funkcji tej, czyli jego definicja w środku, jest: <syntaxhighlight lang="lua"> local pudelko_pomocne_modul=require("Module:Pudełko/Pomocne"); return pudelko_pomocne_modul.Nazwa_przestrzeni_nazw_przedmiotowa_dyskusji_2(frame,czy_uwzglednic_alternatywna_nazwe,i,"dyskusja"); </syntaxhighlight> Parametry funkcji: * {{Code|frame}} - tablica ramki tablicy transportu, * {{Code|czy_uwzglednic_alternatywna_nazwe}} - czy ma uwzględniać nazwę przestrzeni nazw domyślną szablonu, dostępne wartości: {{Code|false}}, w której nazwa domyślna nie jest uwzględniana wtedy, oraz {{Code|nil}} i {{Code|true}}, które oznaczają to samo, w tym jeżeli ona jest uwzględniana, wtedy jest brany parametr pierwszy dziecka, który musi istnieć przy takiej wartości tego parametru, tzn. {{Code|{{m|Pudełko|Nazwa przestrzeni nazw dyskusji 2|Szablon}}}}, a nazwa uzyskana nazwy przestrzeni nazw jest w takim przypadku błędna, a jeżeli nazwa domyślna jest błędna, czyli {{Code|{{m|Pudełko|Nazwa przestrzeni nazw dyskusji 2|Moja przestrzeń}}}}, wtedy funkcja zwraca stan błędu {{Code|(błąd)}}. * {{Code|i}} - numer zmiennej nazwy przestrzeni nazw. Funkcja wykorzystuje {{Code|{{sr|#p.Nazwa_przestrzeni_nazw_przedmiotowa_dyskusji_2(frame,...)|p=Pudełko/Pomocne}}}} do wyznaczania ogólnego nazwy przestrzeni nazw dla pozycji bazowej i numerkowej, tzn. dla pozycji: jeden, dwa, trzy,..., itd, i ich ogólnej. Parametr ramki tablicy transportu rodzica szablonu: * {{Code|nazwa przestrzeni nazw}}, {{Code|nazwa przestrzeni nazw 1}}, {{Code|nazwa przestrzeni nazw 2}}, {{Code|nazwa przestrzeni nazw 3}},..., {{Code|nazwa przestrzeni nazw i}} - nazwy przestrzeni nazw dla pozycji bazowej oraz zwykłej i ogólnej numerkowej, * {{Code|nazwa jednostki}}, {{Code|nazwa jednostki 1}}, {{Code|nazwa jednostki 2}}, {{Code|nazwa jednostki 3}},... - nazwy jednostek dla pozycji bazowej i numerkowej, * {{Code|typ jednostki}}, {{Code|typ jednostki 1}}, {{Code|typ jednostki 2}}, {{Code|typ jednostki 3}},..., {{Code|typ jednostki i}} - typy jednostek, którym odpowiadają pewne przestrzenie przedmiotowe, dla pozycji bazowej, numerkowej i ogólnej. Parametry ramki tablicy transportu dziecka: * Parametry dziecka są takie same jak rodzica dla funkcji pudełkowej plus tu wymienione, * {{Code|numer jednostki}} - jak parametr {{Code|i}} nie został ustawiony, to wtedy liczy się ta zmienna. Przykłady: <syntaxhighlight lang="mediawiki"> {{Nazwa szablonu|nazwa przestrzeni nazw=Wikibooks|nazwa przestrzeni nazw 1=Szablon|nazwa przestrzeni nazw i=|nazwa jednostki 2=Wikibooks:Strona}} </syntaxhighlight> W dziecku powiedzmy jest wywołanie, i szukamy nazwy przestrzeni nazw o numerze dwa, która została podana, ale istnieje za to jej wersji ogólna {{Code|nazwa przestrzeni nazw i}} i domyślna {{Code|nazwa przestrzeni nazw}}, ale wtedy dla tego numerkowego liczy się to ogólne z {{Code| i}}, a ponieważ ta nazwa jest pusta, więc będziemy liczyli nazwę przestrzeni nazw z {{Code|nazwa jednostki 2}}: <syntaxhighlight lang="mediawiki"> {{#invoke:Pudełko|Nazwa przestrzeni nazw dyskusji 2|numer jednostki=2}} </syntaxhighlight> Na podstawie powyższego przykładu otrzymamy wynik o schemacie, nie wyniku, bo tam nie ma zmiennej {{Code|nazwa przestrzeni nazw 1}}, ale jest {{Code|nazwa przestrzeni nazw i}}: <syntaxhighlight lang="mediawiki"> <!-- Ale nie "nazwa przestrzeni nazw 2", bo jej nie ma, ale za to istnieje "nazwa przestrzeni nazw i"; --> <!-- nazwa przestrzeni nazw 2=nazwa przestrzeni nazw i="", a nazwa jednostki 2="Wikibooks:Strona"; --> <!-- Czyli wynik: --> Dyskusja Wikibooks <!-- Widzimy, że wygenerowała się nazwa przestrzeni nazw, którą jest przestrzeń nieprogramowa, ale dyskusji projektu, wychodząca z nazwy jednostek w tym przypadku z "nazwa jednostki 2"; --> </syntaxhighlight> Nie jest brana w tym powyższym przykładzie zmienna {{Code|nazwa przestrzeni nazw}}, bo jej nie ma, ale za to jest {{Code|nazwa przestrzeni nazw i}}, bo ona występuje jako parametr domyślny ogólny dla parametrów numerkowych. Tytaj jest używana jest zmienna {{Code|nazwa jednostki 2}} do wygenerowania ostatecznego wyniku, bo jak można zauważyć, parametry przestrzenne wskazują na przestrzeń główną, a nazwy jednostek już nie. Przykłady w wikikodzie: * {{Code|{{m|Pudełko|Nazwa przestrzeni nazw dyskusji 2|numer jednostki{{=}}2}}}} → {{Tt|{{#invoke:Pudełko|Nazwa przestrzeni nazw dyskusji 2|numer jednostki=2}}}} * {{Code|{{m|Pudełko|Nazwa przestrzeni nazw dyskusji 2|Szablon|nazwa przestrzeni nazw i{{=}}Moja przestrzeń|numer jednostki{{=}}2}}}} → {{Tt|{{#invoke:Pudełko|Nazwa przestrzeni nazw dyskusji 2|Szablon|nazwa przestrzeni nazw i=Moja przestrzeń|numer jednostki=2}}}} * {{Code|{{m|Pudełko|Nazwa przestrzeni nazw dyskusji 2|nazwa przestrzeni nazw 2{{=}}|nazwa jednostki 2{{=}}Szablon:Strona|numer jednostki{{=}}2}}}} → {{Tt|{{#invoke:Pudełko|Nazwa przestrzeni nazw dyskusji 2|nazwa przestrzeni nazw 2=|nazwa jednostki 2=Szablon:Strona|numer jednostki=2}}}} * {{Code|{{m|Pudełko|Nazwa przestrzeni nazw dyskusji 2|nazwa przestrzeni nazw i{{=}}|nazwa jednostki 2{{=}}Szablon:Strona|numer jednostki{{=}}2}}}} → {{Tt|{{#invoke:Pudełko|Nazwa przestrzeni nazw dyskusji 2|nazwa przestrzeni nazw i=|nazwa jednostki 2=Szablon:Strona|numer jednostki=2}}}} * {{Code|{{m|Pudełko|Nazwa przestrzeni nazw dyskusji 2|Szablon|nazwa przestrzeni nazw{{=}}|nazwa jednostki 2{{=}}Wikibooks:Strona|numer jednostki{{=}}2}}}} → {{Tt|{{#invoke:Pudełko|Nazwa przestrzeni nazw dyskusji 2|Szablon|nazwa przestrzeni nazw=|nazwa jednostki 2=Dyskusja Wikibooks:Strona|numer jednostki=2}}}} Powyżej dla przykładu podano parametry nie w rodzicu w szablonie, tylko w dziecku, jeśli chodzi o parametry nazw przestrzeni nazw i nazw jednostek, ale ich się za to nie powinno podawać w tych ramach, tylko w szablonach, w których wywoływane są te ramki pudełek {{Code|{{m|Pudełko}}}}, ale tak tutaj tak zrobiono by było najłatwiej sprawdzić działanie tego typu funkcji. Analogicznie możemy podawać parametry typu jednostki, np.: wywołaniu modułowym {{Code|{{m|Pudełko|Nazwa przestrzeni nazw dyskusji 2|typ jednostki 2{{=}}Podręcznik|nazwa jednostki 2{{=}}Szablon:Strona|numer jednostki{{=}}2}}}} (ale wtedy jest brana przestrzeń nazw z nazwy jednostki), ale o tym więcej w rozdziałach {{Code|{{sr|# p["Dyskusyjny typ jednostki 2"](frame,i)|p=Pudełko}}}} w „{{sr|#Funkcje typu jednostki|p=Pudełko}}”, one definiują przestrzenie dyskusji, ale można użyć parametru dyskusji typu jednostki z obojętnie jaką wartością niepustą, czy pustą, czy nawet jej nie podamy, wtedy wyświetli się nazwa przestrzeni nazw dyskusji. Jeżeli typ jednostki wskazuje na przestrzeń nazw główną, wtedy się liczą parametry nazw jednostek. Również parametry typu jednostki nie powinno się podawać w dziecku w ramce, tylko w rodzicu w szablonie jako parametry, w którym ta ramka jest wywoływana, ale tutaj podano jedynie dla przykładu, jak najłatwiej sprawdzić działanie tych parametrów tej funkcji. Najpierw w funkcji nagłówku brane są parametry nazw przestrzeni nazw, a jeżeli ich nie ma, to parametry typu jednostki, a jeżeli nie ma lub parametry przestrzenne wskazują na przestrzeń główną, i nie ma nazwy jednostki, to generowane są nazwy tej funkcji na podstawie aktualnej strony. == Funkcje pełnych nazw jednostki == === {{Code|p["Pełna nazwa dyskusji jednostki"](frame,i)}} === === {{Code|p["Pełna nazwa przedmiotowa jednostki"](frame,i)}} === === {{Code|p["Pełna nazwa jednostki"](frame,i)}} === == Funkcje pełnych nazw jednostki drugiej wersji == === {{Code|p["Pełna nazwa dyskusji jednostki 2"](frame,i)}} === === {{Code|p["Pełna nazwa przedmiotowa jednostki 2"](frame,i)}} === === {{Code|p["Pełna nazwa jednostki 2"](frame,i)}} === == Funkcje pełnych nazw jednostki trzeciej wersji == === {{Code|p["Pełna nazwa dyskusji jednostki 3"](frame,i)}} === === {{Code|p["Pełna nazwa przedmiotowa jednostki 3"](frame,i)}} === === {{Code|p["Pełna nazwa jednostki 3"](frame,i)}} === == Funkcje nazw jednostki == === {{Code|p["Nazwa jednostki"](frame,i)}} === == Funkcje nazw jednostki drugiej wersji == === {{Code|p["Nazwa jednostki 2"](frame,i)}} === === {{Code|p["Nazwa przedmiotowa jednostki 2"](frame,i)}} === === {{Code|p["Nazwa dyskusji jednostki 2"](frame,i)}} === == Funkcje nazw przestrzeni nazw trzeciej wersji == === {{Code|p["Nazwa przestrzeni nazw 3"](frame,i)}} === Funkcja pisze nazwę przestrzeni nazw, niezależnie, czy to jest przedmiotowa, czy dyskusji, według, i nie zawsze tylko, podanej w zmiennej {{Code|nazwa przestrzeni nazw}} dla pozycja bazowej w podanych parametrach szablonu rodzicu ramki dziecka, lub dla innej pozycji należy parametr podawać w formie {{Code|nazwa przestrzeni nazw 1}}, {{Code|Nazwa przestrzeni nazw 3}}, {{Code|nazwa przestrzeni nazw 3}},..., lub te parametry można podać w postaci ogólnej {{Code|nazwa przestrzeni nazw i}}. W tej funkcji trzeba też podawać parametry nazwy jednostek {{Code|nazwa jednostki}}, {{Code|nazwa jednostki 1}}, {{Code|nazwa jednostki 2}}, {{Code|nazwa jednostki 3}},... Parametry podaje się w parametrach rodzica wywołania tej funkcji {{Code|{{m|Pudełko|Nazwa przestrzeni nazw 3}}}} (ale ich nie trzeba podawać w dziecku, ale można) i w parametrach dziecka, jeśli chodzi o zmienną {{Code|numer jednostki}}, czyli np.: {{Code|{{m|Pudełko|Nazwa przestrzeni nazw 3|numer jednostki{{=}}<jakaś liczba całkowita dodatnia>}}}}. Te parametry przestrzenne zamiast w rodzicu w szablonie można podać w ramce dziecka, wtedy parametry dziecka mają pierwszeństwo. Przestrzeń nazw z parametrów nazw przestrzennych bazowych (bez numerka) może odpowiadać wartości przestrzeni głównej, to wtedy odpowiednia przestrzeń nazw z parametru nazwy jednostki się nie liczy w tej funkcji, aby się liczyła należy użyć funkcji {{Code|{{sr|#p["Nazwa przestrzeni nazw"](frame,...)|p=Pudełko}}}}. Przestrzeń nazw z parametrów nazw przestrzennych numerkowych może odpowiadać wartości przestrzeni głównej, to wtedy odpowiednia przestrzeń nazw z parametru nazwy jednostki się liczy w tej funkcji, wtedy jest liczona nazwa przestrzeni nazw z tego parametru. Gdy parametry przestrzenne lub typ jednostki w drugim podejściu nie wskazują na przestrzeń główną, to wtedy działanie tej funkcji jest podobne do {{Code|{{sr|#p["Nazwa przestrzeni nazw 2"](frame,...)|p=Pudełko}}}}. Definicja skrótowa funkcji: <syntaxhighlight lang="lua"> p["Nazwa przestrzeni nazw 3"]=function(frame,czy_uwzglednic_alternatywna_nazwe,i)...end; </syntaxhighlight> Wtedy ciało funkcji tej, czyli jego definicja w środku, jest: <syntaxhighlight lang="lua"> -- Jest liczony numer parametru nazwy przestrzeni nazw, domyslnie chodzi tu o numer bazowy parametrów przestrzennych; local numer_jednostki=i or frame.args["numer jednostki"]; local liczba_numeru_jednostki=((numer_jednostki)and(tonumber(numer_jednostki)) or 0); local pudelko_pomocne_modul=require("Module:Pudełko/Pomocne"); -- Liczy nazwę przestrzeni nazw dyskusji na podstawie podanych parametrów; return pudelko_pomocne_modul.Uzyskanie_nazw_jednostki(frame,0,liczba_numeru_jednostki,nil,2); </syntaxhighlight> Parametry funkcji: * {{Code|frame}} - tablica ramki tablicy transportu, * {{Code|czy_uwzglednic_alternatywna_nazwe}} - czy ma uwzględniać nazwę przestrzeni nazw domyślną szablonu, dostępne wartości: {{Code|false}}, w której nazwa domyślna nie jest uwzględniana wtedy, oraz {{Code|nil}} i {{Code|true}}, które oznaczają to samo, w tym jeżeli ona jest uwzględniana, wtedy jest brany parametr pierwszy dziecka, który musi istnieć przy takiej wartości tego parametru, tzn. {{Code|{{m|Pudełko|Nazwa przestrzeni nazw 3|Szablon}}}}, a nazwa uzyskana nazwy przestrzeni nazw jest w takim przypadku błędna, a jeżeli nazwa domyślna jest błędna, czyli {{Code|{{m|Pudełko|Nazwa przestrzeni nazw 3|Moja przestrzeń}}}}, wtedy funkcja zwraca stan błędu {{Code|(błąd)}}. * {{Code|i}} - numer zmiennej nazwy przestrzeni nazw. Funkcja wykorzystuje {{Code|{{sr|#p.Uzyskanie_nazw_jednostki(frame,...)|p=Pudełko/Pomocne}}}} do wyznaczania ogólnego nazwy przestrzeni nazw dla pozycji bazowej i numerkowej, tzn. dla pozycji: jeden, dwa, trzy,..., itd, i ich ogólnej. Parametr ramki tablicy transportu rodzica szablonu: * {{Code|nazwa przestrzeni nazw}}, {{Code|nazwa przestrzeni nazw 1}}, {{Code|Nazwa przestrzeni nazw 3}}, {{Code|nazwa przestrzeni nazw 3}},..., {{Code|nazwa przestrzeni nazw i}} - nazwy przestrzeni nazw dla pozycji bazowej oraz zwykłej i ogólnej numerkowej, * {{Code|nazwa jednostki}}, {{Code|nazwa jednostki 1}}, {{Code|nazwa jednostki 2}}, {{Code|nazwa jednostki 3}},... - nazwy jednostek dla pozycji bazowej i numerkowej, * {{Code|typ jednostki}}, {{Code|typ jednostki 1}}, {{Code|typ jednostki 2}}, {{Code|typ jednostki 3}},..., {{Code|typ jednostki i}} - typy jednostek, którym odpowiadają pewne przestrzenie przedmiotowe, dla pozycji bazowej, numerkowej i ogólnej, ** {{Code|dyskusja typu jednostki}}, {{Code|dyskusja typu jednostki 1}}, {{Code|dyskusja typ jednostki 2}}, {{Code|dyskusja typ jednostki 3}},..., {{Code|dyskusja typ jednostki i}} - czy dany typ jednostki ma przedstawiać, jeśli niepusta, przestrzeń dyskusji dla pozycji bazowej, numerkowej i ogólnej. Parametry ramki tablicy transportu dziecka: * Parametry dziecka są takie same jak rodzica dla funkcji pudełkowej plus tu wymienione, * {{Code|numer jednostki}} - jak parametr {{Code|i}} nie został ustawiony, to wtedy liczy się ta zmienna. Przykłady: <syntaxhighlight lang="mediawiki"> {{Nazwa szablonu 1|nazwa przestrzeni nazw=Wikibooks|nazwa przestrzeni nazw=|nazwa przestrzeni nazw i=|nazwa jednostki=Szablon:Strona|nazwa jednostki 2=Wikibooks:Strona}} ---- {{Nazwa szablonu 2|nazwa przestrzeni nazw=Wikibooks|nazwa przestrzeni nazw 1=Szablon|nazwa przestrzeni nazw i=|nazwa jednostki 2=Wikibooks:Strona}} </syntaxhighlight> W dziecku powiedzmy jest wywołanie, i szukamy nazwy przestrzeni nazw o numerze dwa, która została podana, ale istnieje za to jej wersji ogólna {{Code|nazwa przestrzeni nazw i}} i domyślna {{Code|nazwa przestrzeni nazw}}, ale wtedy dla tego numerkowego liczy się to ogólne z {{Code| i}}, a ponieważ ta nazwa jest pusta, więc będziemy liczyli nazwę przestrzeni nazw z {{Code|nazwa jednostki 2}}: <syntaxhighlight lang="mediawiki"> {{#invoke:Pudełko|Nazwa przestrzeni nazw 3}} ---- {{#invoke:Pudełko|Nazwa przestrzeni nazw 3|numer jednostki=2}} </syntaxhighlight> Na podstawie powyższego przykładu otrzymamy wynik o schemacie, nie wyniku, bo tam nie ma zmiennej {{Code|nazwa przestrzeni nazw 1}}, ale jest {{Code|nazwa przestrzeni nazw i}}: <syntaxhighlight lang="mediawiki"> <!-- nazwa przestrzeni nazw=""; --> <!-- Czyli wynik: --> <!-- wynik pusty --> <!-- Widzimy, że wygenerowała się nazwa przestrzeni nazw, którą jest przestrzeń nazw główna, jest ciągiem pustym: ""; --> ---- <!-- Ale nie "Nazwa przestrzeni nazw 2", bo jej nie ma, ale za to istnieje "nazwa przestrzeni nazw i"; --> <!-- nazwa przestrzeni nazw 2=nazwa przestrzeni nazw i="", a nazwa jednostki 2="Wikibooks:Strona"; --> <!-- Czyli wynik: --> Wikibooks <!-- Widzimy, że wygenerowała się nazwa przestrzeni nazw, którą jest przestrzeń nieprogramowa, ale projektu, wychodząca z nazwy jednostek w tym przypadku z "nazwa jednostki 2"; --> </syntaxhighlight> Dla parametrów numerkowych nie jest brana w tym powyższym przykładzie zmienna {{Code|nazwa przestrzeni nazw 2}}, bo jej nie ma, ale za to jest {{Code|nazwa przestrzeni nazw i}}, bo ona występuje jako parametr domyślny ogólny dla parametrów numerkowych. Tytaj jest używana jest zmienna {{Code|nazwa jednostki 2}} do wygenerowania ostatecznego wyniku, bo jak można zauważyć, parametry przestrzenne wskazują na przestrzeń główną, a nazwy jednostek już nie. Dla parametrów bazowych mamy zmienną {{Code|nazwa przestrzeni nazw}}, ona jest pusta, więc to zostanie wziete do ostatecznego wyniku. Przykłady w wikikodzie: * {{Code|{{m|Pudełko|Nazwa przestrzeni nazw 3|nazwa przestrzeni nazw{{=}}|nazwa jednostki{{=}}Wikibooks:Strona}}}} → {{Tt|{{#invoke:Pudełko|Nazwa przestrzeni nazw 3|nazwa przestrzeni nazw=|nazwa jednostki=Wikibooks:Szablon}}}} * {{Code|{{m|Pudełko|Nazwa przestrzeni nazw 3|nazwa przestrzeni nazw 2{{=}}|nazwa jednostki 2{{=}}Wikibooks:Strona|numer jednostki{{=}}2}}}} → {{Tt|{{#invoke:Pudełko|Nazwa przestrzeni nazw 3|nazwa przestrzeni nazw 2=|nazwa jednostki 2=Wikibooks:Szablon|numer jednostki=2}}}} Powyżej dla przykładu podano parametry nie w rodzicu w szablonie, tylko w dziecku, jeśli chodzi o parametry nazw przestrzeni nazw i nazw jednostek, ale ich się za to nie powinno podawać w tych ramach, tylko w szablonach, w których wywoływane są te ramki pudełek {{Code|{{m|Pudełko}}}}, ale tak tutaj tak zrobiono by było najłatwiej sprawdzić działanie tego typu funkcji. Analogicznie możemy podawać parametry typu jednostki, np.: wywołaniu modułowym {{Code|{{m|Pudełko|Nazwa przestrzeni nazw 3|typ jednostki 2{{=}}Podręcznik|nazwa jednostki 2{{=}}Szablon:Strona|numer jednostki{{=}}2}}}} (ale wtedy jest brana przestrzeń nazw z nazwy jednostki), ale o tym więcej w rozdziałach {{Code|{{sr|#p["Typ jednostki 3"](frame,i)|p=Pudełko}}}} w „{{sr|#Funkcje typu jednostki|p=Pudełko}}”, on definiuje przestrzenie przedmiotowe, ale można użyć parametru dyskusji typu jednostki z wartością niepustą, wtedy wyświetli się nazwa przestrzeni nazw dyskusji. Jeżeli typ jednostki bazowy wskazuje na przestrzeń nazw główną, wtedy się nie liczą parametry nazw jednostek, a na numerkowy, wtedy się liczy. Również parametry typu jednostki nie powinno się podawać w dziecku w ramce, tylko w rodzicu w szablonie jako parametry, w którym ta ramka jest wywoływana, ale tutaj podano jedynie dla przykładu, jak najłatwiej sprawdzić działanie tych parametrów tej funkcji. Najpierw w funkcji nagłówku brane są parametry nazw przestrzeni nazw, a jeżeli ich nie ma, to parametry typu jednostki, a jeżeli nie ma lub parametry przestrzenne wskazują na przestrzeń główną, i nie ma nazwy jednostki, to generowane są nazwy tej funkcji na podstawie aktualnej strony. === {{Code|p["Nazwa przedmiotowej przestrzeni nazw 3"](frame,i)}} === Funkcja pisze przedmiotową nazwę przestrzeni nazw jakikolwiek nazwy przestrzeni nazw (tzn. nazwę przedmiotową nazwy przestrzenie nazw, czyli nie dyskusji, zamieniana jest na nią samą, czyli identyfikator przestrzeni się nie zmienia, a dyskusji, nie przedmiotową, przekształca się na przedmiotową jej odpowiadającą, czyli w tym przypadku identyfikator przestrzeni zmniejsza się o numer mniej), według podanej w zmiennej {{Code|nazwa przestrzeni nazw}} dla pozycja bazowej w podanych parametrach szablonu rodzicu ramki dziecka, lub dla innej pozycji należy parametr podawać w formie {{Code|nazwa przestrzeni nazw 1}}, {{Code|nazwa przestrzeni nazw 2}}, {{Code|nazwa przestrzeni nazw 3}},..., lub te parametry można podać w postaci ogólnej {{Code|nazwa przestrzeni nazw i}}. Parametry podaje się w parametrach rodzica wywołania tej funkcji {{Code|{{m|Pudełko|Nazwa przedmiotowej przestrzeni nazw 3}}}} (ale ich nie trzeba podawać w dziecku, ale można) i w parametrach dziecka, jeśli chodzi o zmienną {{Code|numer jednostki}}, czyli np.: {{Code|{{m|Pudełko|Nazwa przedmiotowej przestrzeni nazw 3|numer jednostki{{=}}<jakaś liczba całkowita dodatnia>}}}}. Te parametry przestrzenne zamiast w rodzicu w szablonie można podać w ramce dziecka, wtedy parametry dziecka mają pierwszeństwo. Parametry przestrzenne mogą mogą być podane w postaci przestrzeni przedmiotowej lub dyskusji, ale ta funkcja zawsze ją zamienia na przedmiotową. Przestrzeń nazw z parametrów nazw przestrzennych bazowych (bez numerka) może odpowiadać wartości przestrzeni głównej, to wtedy odpowiednia przestrzeń nazw z parametru nazwy jednostki się nie liczy w tej funkcji, aby się liczyła należy użyć funkcji {{Code|{{sr|#p["Nazwa przedmiotowej przestrzeni nazw"](frame,...)|p=Pudełko}}}}. Przestrzeń nazw z parametrów nazw przestrzennych numerkowych może odpowiadać wartości przestrzeni głównej, to wtedy odpowiednia przestrzeń nazw z parametru nazwy jednostki się liczy w tej funkcji, wtedy jest liczona nazwa przestrzeni nazw z tego parametru. Gdy parametry przestrzenne lub typ jednostki w drugim podejściu nie wskazują na przestrzeń główną, to wtedy działanie tej funkcji jest podobne do {{Code|{{sr|#p["Nazwa przedmiotowej przestrzeni nazw 2"](frame,...)|p=Pudełko}}}}. Definicja skrótowa funkcji: <syntaxhighlight lang="lua"> p["Nazwa przedmiotowej przestrzeni nazw 3"]=function(frame,czy_uwzglednic_alternatywna_nazwe,i)...end; </syntaxhighlight> Wtedy ciało funkcji tej, czyli jego definicja w środku, jest: <syntaxhighlight lang="lua"> -- Jest liczony numer parametru nazwy przestrzeni nazw, domyslnie chodzi tu o numer bazowy parametrów przestrzennych; local numer_jednostki=i or frame.args["numer jednostki"]; local liczba_numeru_jednostki=((numer_jednostki)and(tonumber(numer_jednostki)) or 0); local pudelko_pomocne_modul=require("Module:Pudełko/Pomocne"); -- Liczy nazwę przestrzeni nazw przedmiotową na podstawie podanych parametrów; return pudelko_pomocne_modul.Uzyskanie_nazw_jednostki(frame,1,liczba_numeru_jednostki,nil,1); </syntaxhighlight> Parametry funkcji: * {{Code|frame}} - tablica ramki tablicy transportu, * {{Code|czy_uwzglednic_alternatywna_nazwe}} - czy ma uwzględniać nazwę przestrzeni nazw domyślną szablonu, dostępne wartości: {{Code|false}}, w której nazwa domyślna nie jest uwzględniana wtedy, oraz {{Code|nil}} i {{Code|true}}, które oznaczają to samo, w tym jeżeli ona jest uwzględniana, wtedy jest brany parametr pierwszy dziecka, który musi istnieć przy takiej wartości tego parametru, tzn. {{Code|{{m|Pudełko|Nazwa przedmiotowej przestrzeni nazw 3|Dyskusja szablonu}}}} - ta nazwa domyślna zostanie zamieniona na przedmiotową, a jak ona by była przedmiotowa, to żadnej zamiany by nie było, a nazwa uzyskana z nazwy przestrzeni nazw z parametrów przestrzennych jest w takim przypadku błędna, to w takim razie brany jest ten parametr, a jeżeli ta nazwa domyślna jest błędna, czyli {{Code|{{m|Pudełko|Nazwa przedmiotowej przestrzeni nazw 3|Moja przestrzeń}}}}, wtedy funkcja zwraca stan błędu {{Code|(błąd)}}. * {{Code|i}} - numer zmiennej nazwy przestrzeni nazw. Funkcja wykorzystuje {{Code|{{sr|#p.Uzyskanie_nazw_jednostki(frame,...)|p=Pudełko/Pomocne}}}} do wyznaczania ogólnego nazwy przestrzeni nazw dla pozycji bazowej i numerkowej, tzn. dla pozycji: jeden, dwa, trzy,..., itd, i ich ogólnej. Parametr ramki tablicy transportu rodzica szablonu: * {{Code|nazwa przestrzeni nazw}}, {{Code|nazwa przestrzeni nazw 1}}, {{Code|nazwa przestrzeni nazw 2}}, {{Code|nazwa przestrzeni nazw 3}},..., {{Code|nazwa przestrzeni nazw i}} - nazwy przestrzeni nazw dla pozycji bazowej oraz zwykłej i ogólnej numerkowej, * {{Code|typ jednostki}}, {{Code|typ jednostki 1}}, {{Code|typ jednostki 2}}, {{Code|typ jednostki 3}},..., {{Code|typ jednostki i}} - typy jednostek, którym odpowiadają pewne przestrzenie przedmiotowe, dla pozycji bazowej, numerkowej i ogólnej. Parametry ramki tablicy transportu dziecka: * Parametry dziecka są takie same jak rodzica dla funkcji pudełkowej plus tu wymienione, * {{Code|numer jednostki}} - jak parametr {{Code|i}} nie został ustawiony, to wtedy liczy się ta zmienna. Przykłady: <syntaxhighlight lang="mediawiki"> {{Nazwa szablonu 1|nazwa przestrzeni nazw=Wikibooks|nazwa przestrzeni nazw=|nazwa przestrzeni nazw i=|nazwa jednostki=Dyskusja Wikibooks:Strona|nazwa jednostki 2=Dyskusja Wikibooks:Strona}} ---- {{Nazwa szablonu 2|nazwa przestrzeni nazw=Wikibooks|nazwa przestrzeni nazw 1=Szablon|nazwa przestrzeni nazw i=|nazwa jednostki 2=Dyskusja Wikibooks:Strona}} </syntaxhighlight> Kolejno wywołania te są równowaażne: <syntaxhighlight lang="mediawiki"> {{#invoke:Pudełko|Nazwa przedmiotowej przestrzeni nazw 3}} ---- {{#invoke:Pudełko|Nazwa przedmiotowej przestrzeni nazw 3|numer jednostki=2}} </syntaxhighlight> Na podstawie powyższego przykładu otrzymamy wynik o schemacie, nie wyniku, bo tam nie ma zmiennej {{Code|nazwa przestrzeni nazw 1}}, ale jest {{Code|nazwa przestrzeni nazw i}}: <syntaxhighlight lang="mediawiki"> <!-- nazwa przestrzeni nazw=""; --> <!-- Czyli wynik: --> <!-- wynik pusty --> <!-- Widzimy, że wygenerowała się nazwa przestrzeni nazw, którą jest przestrzeń nazw główna, jest ciągiem pustym: ""; --> ---- <!-- Ale nie "Nazwa przestrzeni nazw 2", bo jej nie ma, ale za to istnieje "nazwa przestrzeni nazw i"; --> <!-- nazwa przestrzeni nazw 2=nazwa przestrzeni nazw i="", a nazwa jednostki 2="Dyskusja Wikibooks:Strona"; --> <!-- Czyli wynik: --> Wikibooks <!-- Widzimy, że wygenerowała się nazwa przestrzeni nazw, którą jest przestrzeń nieprogramowa, ale projektu, wychodząca z nazwy jednostek w tym przypadku z "nazwa jednostki 2"; --> </syntaxhighlight> Dla parametrów numerkowych nie jest brana w tym powyższym przykładzie zmienna {{Code|nazwa przestrzeni nazw 2}}, bo jej nie ma, ale za to jest {{Code|nazwa przestrzeni nazw i}}, bo ona występuje jako parametr domyślny ogólny dla parametrów numerkowych. Tytaj jest używana jest zmienna {{Code|nazwa jednostki 2}} do wygenerowania ostatecznego wyniku, bo jak można zauważyć, parametry przestrzenne wskazują na przestrzeń główną, a nazwy jednostek już nie. Dla parametrów bazowych mamy zmienną {{Code|nazwa przestrzeni nazw}}, ona jest pusta, więc to zostanie wziete do ostatecznego wyniku. Przykłady w wikikodzie: * {{Code|{{m|Pudełko|Nazwa przestrzeni nazw 3|nazwa przestrzeni nazw{{=}}|nazwa jednostki{{=}}Dyskusja Wikibooks:Strona}}}} → {{Tt|{{#invoke:Pudełko|Nazwa przestrzeni nazw 3|nazwa przestrzeni nazw=|nazwa jednostki=Dyskusja Wikibooks:Szablon}}}} * {{Code|{{m|Pudełko|Nazwa przestrzeni nazw 3|nazwa przestrzeni nazw 2{{=}}|nazwa jednostki 2{{=}}Dyskusja Wikibooks:Strona|numer jednostki{{=}}2}}}} → {{Tt|{{#invoke:Pudełko|Nazwa przestrzeni nazw 3|nazwa przestrzeni nazw 2=|nazwa jednostki 2=Dyskusja Wikibooks:Szablon|numer jednostki=2}}}} Powyżej dla przykładu podano parametry nie w rodzicu w szablonie, tylko w dziecku, jeśli chodzi o parametry nazw przestrzeni nazw, ale ich się za to nie powinno podawać w tych ramach, tylko w szablonach, w których wywoływane są te ramki pudełek {{Code|{{m|Pudełko}}}}, ale tak tutaj tak zrobiono by było najłatwiej sprawdzić działanie tego typu funkcji. Analogicznie możemy podawać parametry typu jednostki, np.: wywołaniu modułowym {{Code|{{m|Pudełko|Nazwa przedmiotowej przestrzeni nazw 3|typ jednostki 2{{=}}strona szablonu|numer jednostki{{=}}2}}}}, ale o tym więcej w rozdziałach {{Code|{{sr|# p["Przedmiotowy typ jednostki 3"](frame,i)|p=Pudełko}}}} w „{{sr|#Funkcje typu jednostki|p=Pudełko}}”, ale wtedy ta sama nazwa przestrzeni nazw reprezentowana przez {{Parametr|typ jednostki 2|strona szablonu}}, jest zamieniana na to samo, lepiej jest tutaj używać parametrów przestrzennych nazw niż typu jednostki, bo typ jednostki ma taką samą wartość dla przestrzeni przedmiotowej, co dyskusji. Tutaj parametr dyskusji typu jednostki bazowy i numerkowy ogólny, czy szczegółowy, nie gra roli, bo nawet, gdy wygenerujemy nazwę przestrzeni dyskusji za pomoca tego parametru, to i tak otrzymamy na samym końcu jego nazwę przedmiotową. Jeżeli typ jednostki bazowy wskazuje na przestrzeń nazw główną, wtedy się nie liczą parametry nazw jednostek, a na numerkowy, wtedy się liczy. Również parametry typu jednostki nie powinno się podawać w dziecku w ramce, tylko w rodzicu w szablonie jako parametry, w którym ta ramka jest wywoływana, ale tutaj podano jedynie dla przykładu, jak najłatwiej sprawdzić działanie tych parametrów tej funkcji. Najpierw w funkcji nagłówku brane są parametry nazw przestrzeni nazw, a jeżeli ich nie ma, to parametry typu jednostki, a jeżeli nie ma, to generowane są nazwy na podstawie aktualnego modułu. === {{Code|p["Nazwa przestrzeni nazw dyskusji 3"](frame,i)}} === Funkcja pisze nazwę przestrzeni nazw dyskusji jakikolwiek nazwy przestrzeni nazw (tzn. nazwę dyskusji nazwy przestrzenie nazw, czyli nie przedmiotowej, zamieniana jest na nią samą, czyli identyfikator przestrzeni się nie zmienia, a przedmiotową, nie dyskusji, przekształca się na dyskusji jej odpowiadającą, czyli w tym przypadku identyfikator przestrzeni zwiększa się o numer więcej), według, i nie zawsze tylko, podanej w zmiennej {{Code|nazwa przestrzeni nazw}} dla pozycja bazowej w podanych parametrach szablonu rodzicu ramki dziecka, lub dla innej pozycji należy parametr podawać w formie {{Code|nazwa przestrzeni nazw 1}}, {{Code|nazwa przestrzeni nazw 2}}, {{Code|nazwa przestrzeni nazw 3}},..., lub te parametry można podać w postaci ogólnej {{Code|nazwa przestrzeni nazw i}}. W tej funkcji trzeba też podawać parametry nazwy jednostek {{Code|nazwa jednostki}}, {{Code|nazwa jednostki 1}}, {{Code|nazwa jednostki 2}}, {{Code|nazwa jednostki 3}},... Parametry podaje się w parametrach rodzica wywołania tej funkcji {{Code|{{m|Pudełko|Nazwa przestrzeni nazw dyskusji 3}}}} (ale ich nie trzeba podawać w dziecku, ale można) i w parametrach dziecka, jeśli chodzi o zmienną {{Code|numer jednostki}}, czyli np.: {{Code|{{m|Pudełko|Nazwa przestrzeni nazw dyskusji 3|numer jednostki{{=}}<jakaś liczba całkowita dodatnia>}}}}. Te parametry przestrzenne zamiast w rodzicu w szablonie można podać w ramce dziecka, wtedy parametry dziecka mają pierwszeństwo. Przestrzeń nazw z parametrów nazw przestrzennych bazowych (bez numerka) może odpowiadać wartości przestrzeni głównej, to wtedy odpowiednia przestrzeń nazw z parametru nazwy jednostki się nie liczy w tej funkcji, aby się liczyła należy użyć funkcji {{Code|{{sr|#p["Nazwa przestrzeni nazw dyskusji"](frame,...)|p=Pudełko}}}}. Przestrzeń nazw z parametrów nazw przestrzennych numerkowych może odpowiadać wartości przestrzeni głównej, to wtedy odpowiednia przestrzeń nazw z parametru nazwy jednostki się liczy w tej funkcji, wtedy jest liczona nazwa przestrzeni nazw z tego parametru. Gdy parametry przestrzenne lub typ jednostki w drugim podejściu nie wskazują na przestrzeń główną, to wtedy działanie tej funkcji jest podobne do {{Code|{{sr|#p["Nazwa przestrzeni nazw dysskusji 2"](frame,...)|p=Pudełko}}}}. Definicja skrótowa funkcji: <syntaxhighlight lang="lua"> p["Nazwa przestrzeni nazw dyskusji 3"]=function(frame,czy_uwzglednic_alternatywna_nazwe,i)...end; </syntaxhighlight> Wtedy ciało funkcji tej, czyli jego definicja w środku, jest: <syntaxhighlight lang="lua"> -- Jest liczony numer parametru nazwy przestrzeni nazw, domyslnie chodzi tu o numer bazowy parametrów przestrzennych; local numer_jednostki=i or frame.args["numer jednostki"]; local liczba_numeru_jednostki=((numer_jednostki)and(tonumber(numer_jednostki)) or 0); local pudelko_pomocne_modul=require("Module:Pudełko/Pomocne"); -- Liczy nazwę przestrzeni nazw dyskusji na podstawie podanych parametrów; return pudelko_pomocne_modul.Uzyskanie_nazw_jednostki(frame,2,liczba_numeru_jednostki,nil,1); </syntaxhighlight> Parametry funkcji: * {{Code|frame}} - tablica ramki tablicy transportu, * {{Code|czy_uwzglednic_alternatywna_nazwe}} - czy ma uwzględniać nazwę przestrzeni nazw domyślną szablonu, dostępne wartości: {{Code|false}}, w której nazwa domyślna nie jest uwzględniana wtedy, oraz {{Code|nil}} i {{Code|true}}, które oznaczają to samo, w tym jeżeli ona jest uwzględniana, wtedy jest brany parametr pierwszy dziecka, który musi istnieć przy takiej wartości tego parametru, tzn. {{Code|{{m|Pudełko|Nazwa przestrzeni nazw dyskusji 3|Szablon}}}}, a nazwa uzyskana nazwy przestrzeni nazw jest w takim przypadku błędna, a jeżeli nazwa domyślna jest błędna, czyli {{Code|{{m|Pudełko|Nazwa przestrzeni nazw dyskusji 3|Moja przestrzeń}}}}, wtedy funkcja zwraca stan błędu {{Code|(błąd)}}. * {{Code|i}} - numer zmiennej nazwy przestrzeni nazw. Funkcja wykorzystuje {{Code|{{sr|#p.Uzyskanie_nazw_jednostki(frame,...)|p=Pudełko/Pomocne}}}} do wyznaczania ogólnego nazwy przestrzeni nazw dla pozycji bazowej i numerkowej, tzn. dla pozycji: jeden, dwa, trzy,..., itd, i ich ogólnej. Parametr ramki tablicy transportu rodzica szablonu: * {{Code|nazwa przestrzeni nazw}}, {{Code|nazwa przestrzeni nazw 1}}, {{Code|nazwa przestrzeni nazw 2}}, {{Code|nazwa przestrzeni nazw 3}},..., {{Code|nazwa przestrzeni nazw i}} - nazwy przestrzeni nazw dla pozycji bazowej oraz zwykłej i ogólnej numerkowej, * {{Code|nazwa jednostki}}, {{Code|nazwa jednostki 1}}, {{Code|nazwa jednostki 2}}, {{Code|nazwa jednostki 3}},... - nazwy jednostek dla pozycji bazowej i numerkowej, * {{Code|typ jednostki}}, {{Code|typ jednostki 1}}, {{Code|typ jednostki 2}}, {{Code|typ jednostki 3}},..., {{Code|typ jednostki i}} - typy jednostek, którym odpowiadają pewne przestrzenie przedmiotowe, dla pozycji bazowej, numerkowej i ogólnej. Parametry ramki tablicy transportu dziecka: * Parametry dziecka są takie same jak rodzica dla funkcji pudełkowej plus tu wymienione, * {{Code|numer jednostki}} - jak parametr {{Code|i}} nie został ustawiony, to wtedy liczy się ta zmienna. Przykłady: <syntaxhighlight lang="mediawiki"> {{Nazwa szablonu 1|nazwa przestrzeni nazw=Wikibooks|nazwa przestrzeni nazw=|nazwa przestrzeni nazw i=|nazwa jednostki=Szablon:Strona|nazwa jednostki 2=Wikibooks:Strona}} ---- {{Nazwa szablonu 2|nazwa przestrzeni nazw=Wikibooks|nazwa przestrzeni nazw 1=Szablon|nazwa przestrzeni nazw i=|nazwa jednostki 2=Wikibooks:Strona}} </syntaxhighlight> W dziecku powiedzmy jest wywołanie, i szukamy nazwy przestrzeni nazw o numerze dwa, która została podana, ale istnieje za to jej wersji ogólna {{Code|nazwa przestrzeni nazw i}} i domyślna {{Code|nazwa przestrzeni nazw}}, ale wtedy dla tego numerkowego liczy się to ogólne z {{Code| i}}, a ponieważ ta nazwa jest pusta, więc będziemy liczyli nazwę przestrzeni nazw z {{Code|nazwa jednostki 2}}: <syntaxhighlight lang="mediawiki"> {{#invoke:Pudełko|Nazwa przestrzeni nazw 3}} ---- {{#invoke:Pudełko|Nazwa przestrzeni nazw 3|numer jednostki=2}} </syntaxhighlight> Na podstawie powyższego przykładu otrzymamy wynik o schemacie, nie wyniku, bo tam nie ma zmiennej {{Code|nazwa przestrzeni nazw 1}}, ale jest {{Code|nazwa przestrzeni nazw i}}: <syntaxhighlight lang="mediawiki"> <!-- nazwa przestrzeni nazw=""; --> <!-- Czyli wynik: --> Dyskusja <!-- Widzimy, że wygenerowała się nazwa przestrzeni nazw, którą jest przestrzeń nazw niegłówna, jest ciągiem niepustym; --> ---- <!-- Ale nie "Nazwa przestrzeni nazw 2", bo jej nie ma, ale za to istnieje "nazwa przestrzeni nazw i"; --> <!-- nazwa przestrzeni nazw 2=nazwa przestrzeni nazw i="", a nazwa jednostki 2="Wikibooks:Strona"; --> <!-- Czyli wynik: --> Dyskusja Wikibooks <!-- Widzimy, że wygenerowała się nazwa przestrzeni nazw, którą jest przestrzeń nieprogramowa, ale projektu, wychodząca z nazwy jednostek w tym przypadku z "nazwa jednostki 2"; --> </syntaxhighlight> Dla parametrów numerkowych nie jest brana w tym powyższym przykładzie zmienna {{Code|nazwa przestrzeni nazw 2}}, bo jej nie ma, ale za to jest {{Code|nazwa przestrzeni nazw i}}, bo ona występuje jako parametr domyślny ogólny dla parametrów numerkowych. Tytaj jest używana jest zmienna {{Code|nazwa jednostki 2}} do wygenerowania ostatecznego wyniku, bo jak można zauważyć, parametry przestrzenne wskazują na przestrzeń główną, a nazwy jednostek już nie. Dla parametrów bazowych mamy zmienną {{Code|nazwa przestrzeni nazw}}, ona jest pusta, więc to zostanie wziete do ostatecznego wyniku. Przykłady w wikikodzie: * {{Code|{{m|Pudełko|Nazwa przestrzeni nazw dyskusji 3|nazwa przestrzeni nazw{{=}}|nazwa jednostki{{=}}Wikibooks:Strona}}}} → {{Tt|{{#invoke:Pudełko|Nazwa przestrzeni nazw dyskusji 3|nazwa przestrzeni nazw=|nazwa jednostki=Wikibooks:Szablon}}}} * {{Code|{{m|Pudełko|Nazwa przestrzeni nazw dyskusji 3|nazwa przestrzeni nazw 2{{=}}|nazwa jednostki 2{{=}}Wikibooks:Strona|numer jednostki{{=}}2}}}} → {{Tt|{{#invoke:Pudełko|Nazwa przestrzeni nazw dyskusji 3|nazwa przestrzeni nazw 2=|nazwa jednostki 2=Wikibooks:Szablon|numer jednostki=2}}}} Powyżej dla przykładu podano parametry nie w rodzicu w szablonie, tylko w dziecku, jeśli chodzi o parametry nazw przestrzeni nazw i nazw jednostek, ale ich się za to nie powinno podawać w tych ramach, tylko w szablonach, w których wywoływane są te ramki pudełek {{Code|{{m|Pudełko}}}}, ale tak tutaj tak zrobiono by było najłatwiej sprawdzić działanie tego typu funkcji. Analogicznie możemy podawać parametry typu jednostki, np.: wywołaniu modułowym {{Code|{{m|Pudełko|Nazwa przestrzeni nazw dyskusji 3|typ jednostki 2{{=}}Podręcznik|nazwa jednostki 2{{=}}Szablon:Strona|numer jednostki{{=}}2}}}} (ale wtedy jest brana przestrzeń nazw z nazwy jednostki), ale o tym więcej w rozdziałach {{Code|{{sr|# p["Dyskusyjny typ jednostki 3"](frame,i)|p=Pudełko}}}} w „{{sr|#Funkcje typu jednostki|p=Pudełko}}”, one definiują przestrzenie dyskusji, ale można użyć parametru dyskusji typu jednostki z obojętnie jaką wartością niepustą, czy pustą, czy nawet jej nie podamy, wtedy wyświetli się nazwa przestrzeni nazw dyskusji. Jeżeli typ jednostki bazowy wskazuje na przestrzeń nazw główną, wtedy się nie liczą parametry nazw jednostek, a na numerkowy, wtedy się liczy. Również parametry typu jednostki nie powinno się podawać w dziecku w ramce, tylko w rodzicu w szablonie jako parametry, w którym ta ramka jest wywoływana, ale tutaj podano jedynie dla przykładu, jak najłatwiej sprawdzić działanie tych parametrów tej funkcji. Najpierw w funkcji nagłówku brane są parametry nazw przestrzeni nazw, a jeżeli ich nie ma, to parametry typu jednostki, a jeżeli nie ma lub parametry przestrzenne wskazują na przestrzeń główną, i nie ma nazwy jednostki, to generowane są nazwy tej funkcji na podstawie aktualnej strony. == Funkcje nazw jednostki trzeciej wersji == === {{Code|p["Nazwa jednostki 3"](frame,i)}} === === {{Code|p["Nazwa przedmiotowa jednostki 3"](frame,i)}} === === {{Code|p["Nazwa dyskusji jednostki 3"](frame,i)}} === == Funkcje typu jednostki == === {{Code|p["Typ jednostki"](frame,i)}} === === {{Code|p["Typ jednostki 2"](frame,i)}} === === {{Code|p["Typ jednostki 3"](frame,i)}} === === Funkcje typu jednostki przedmiotowe === ==== {{Code|p["Przedmiotowy typ jednostki"](frame,i)}} ==== ==== {{Code|p["Przedmiotowy typ jednostki 2"](frame,i)}} ==== ==== {{Code|p["Przedmiotowy typ jednostki 3"](frame,i)}} ==== === Fukcje typu jednostki dyskusji === ==== {{Code|p["Dyskusyjny typ jednostki"](frame,i)}} ==== ==== {{Code|p["Dyskusyjny typ jednostki 2"](frame,i)}} ==== ==== {{Code|p["Dyskusyjny typ jednostki 3"](frame,i)}} ==== == Funkcje chech pudełka == === {{Code|p["Cecha pudełka"](frame)}} === === {{Code|p["Przedmiotowa cecha pudełka"](frame)}} === === {{Code|p["Dyskusyjna cecha pudełka"](frame)}} === == Fukcje ogólnego pudełka == === {{Code|p["Ogólne pudełko"](frame)}} === == Funkcje ogólne == === {{Code|p["Tekst pudełka"](frame)}} === == Funkcje błędów pudełka == === {{Code|p["Błędy pudełka"](frame)}} === === {{Code|p["Przedmiotowe błędy pudełka"](frame)}} === === {{Code|p["Dyskusyjne błędy pudełka"](frame)}} === == Funkcje nazw stron == === {{Code|p["Nazwa strony głównej projektu"](frame,i)}} === === {{Code|p["Nazwa strony głównej dla dzieci projektu"](frame,i)}} === == Funkcje kodów == === {{Code|p["Kod języka"](frame,i)}} === === {{Code|p["Kod projektu"](frame,i)}} === === {{Code|p["Klucz projektu"](frame,i)}} === == Funkcje wiki == === {{Code|p["Inny niż język bieżący wiki"](frame)}} === === {{Code|p["Inne niż lokalne wiki"](frame)}} === === {{Code|p["Inne niż bieżące wiki"](frame)}} === == Funkcje typów parametrów, czy podane je == === {{Code|p["Podano parametry nienazwane"](frame)}} === === {{Code|p["Podano parametry numerowane"](frame)}} === === {{Code|p["Podano parametry nazwane"](frame)}} === == Funkcje kodów tego projektu == === {{Code|p["Kod projektu tego projektu"](frame)}} === === {{Code|p["Kod języka tego projektu"](frame)}} === === {{Code|p["Klucz projektu tego projektu"](frame)}} === == Funkcje stron == === {{Code|p["Strona główna tego projektu"](frame)}} === === {{Code|p["Strona główna dla dzieci tego projektu"](frame)}} === == Funkcje nazw stron drugiej wersji == === {{Code|p["Nazwa strony głównej dla dzieci projektu 2"](frame)}} === === {{Code| p["Nazwa strony głównej projektu 2"](frame)}} === {{BrClear}} <noinclude><!-- -->{{ProstaStronaKoniec}}<!-- -->{{Kategoria|Opisy funkcji, w Lua w Scribunto, w modułach}}<!-- --></noinclude> 4089hvnys72fsmln0fcd6bergrib9os 540438 540437 2026-04-24T02:37:24Z Persino 2851 /* Funkcje nazw przestrzeni nazw trzeciej wersji */ 540438 wikitext text/x-wiki <noinclude>{{ProstaStronaStart | nagłówek = {{Podrozdział|{{ld2|Pudełko}}|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 pudelko_modul=require("Module:Pudełko"); </syntaxhighlight> dzięki, któremu można wypisywać funkcje należącego do niego. Posługuje się na parametrach pudełkowych {{Parametr|nazwa przestrzeni nazw}} (czy też bez numerka {{Parametr|nazwa przestrzeni nazw i}} dla tego numerowanego) lub te z numerkiem po jednej spacji w nich (ale nie dla tego z końcówką {{Code| i}}) mogą zostać użyte jako parametry szablonu. Moduł {{Code|{{ld2|Pudełko}}}} przedstawia funkcje nazw w oparciu o funkcje nazw {{Code|{{ld2|Nazwy}}}}, generuje on nazwy za pomocą parametrów pudełkowych podanych poniżej. Parametr {{Parametr|nazwa jednostki}} (lub parametr {{Parametr|cel}} dla numerka tego pierwszego, tego alternatywnego), lub te z numerkiem po jednej spacji w nazwie parametru, albo numerowane numerkami {{Code|1}}, {{Code|2}},..., mogą zostać użyte jako parametry szablonu. Parametry określające rodzaj jednostki {{Parametr|typ jednostki}} z {{Parametr|dyskusja typu jednostki}}, itp. w wersjach z numerkiem po jednej spacji w nich mogą zostać użyte jako parametry szablonu. A te tymi numerowanymi liczbami naturalnymi {{Tt|nazwy jednostki}} od jedynki wzwyż poprzez szablon, w którym są one użyte, one też mogą być użyte z dwukropkiem, te numerowane, na samym początku nazwy, wtedy one są traktowane jako pełne nazwy strony, i wtedy one nie zostaną z interpretowane, że do nich trzeba użyć parametr odpowiedni z nazwą przetrzeni nazw z tego numerowanego, czy ogólny, aby utworzyć znów inną pełną nazwę strony dla tego numerka. Zestawienie: * {{Code|nazwa przestrzeni nazw}} i {{Code|nazwa przestrzeni nazw i}} (ogólna nazwa przestrzeni nazw dla wszystkich numerków, i tych numerowanych jednostek) - i to pierwsze z numerkiem, tzn. {{Code|nazwa przestrzeni nazw 1}}, {{Code|nazwa przestrzeni nazw 2}}, ..., * {{Code|nazwa jednostki}} - i te z numerkiem: {{Code|nazwa jednostki 1}}, {{Code|nazwa jednostki 2}}, ..., lub gdy jest zamiast tego parametrem numerowany, {{Code|1}}, {{Code|2}},..., który dla tego pierwszego może być uznany jako: {{Code|cel}} {{=}} {{Code|1}}, * {{Code|typ jednostki}} (parametr bazowy) i {{Code|typ jednostki i}} (parametr domyślny numerkowy) - i te z numerkiem: {{Code|typ jednostki 1}}, {{Code|typ jednostki 2}}, ..., tzn. gdy chcemy określić z jakim typem jednostki mamy do czynienia w zależności do jakiej przestrzeni nazw należy, a w danej, czy jest on np. programowy, czy tylko jest opisem, jak to bywa w szablonach {{Np|Template|link=tak}}, podobnie jest w przypadku {{Np|Module|link=tak}}, czy jak jest w innych przestrzeniach nazw, ** {{Code|dyskusja typu jednostki}} (parametr bazowy) i {{Code|dyskusja typu jednostki i}} (parametr domyślny numerkowy) - i te z numerkiem: {{Code|dyskusja typu jednostki 1}}, {{Code|dyskusja typu jednostki 2}}, ..., gdy chcemy określić wartością niepustą,że chodzi tutaj o typ jednostki. == {{Code|p.CzyNiepoprawnaNazwa(nazwa_jednostki)}} == Funkcja sprawdzajaca, czy jest poprawnie podana nazwa jednostki, czy ma poprawną nazwę. Znakami tymi, z których nie powinna składać się nazwa jest {{Code|<nowiki>{}<>|[]#\n</nowiki>}} i dodatkowo znak {{Code|&#127;}} (kod {{Code|{{Nowiki|&#127;}}}}). Też nie może składać się z trzech znaków tyldy, tzn. {{Code|<nowiki>~~~</nowiki>}}. Również w swojej budowie nie może składać się ze kodów {{Strong|HTML}} literowych o wzorze {{Code|{{Nowiki|&(%a+);}}}}. Natomiast może składać się z {{Code|{{Nowiki|&#(%d+);}}}} i {{Code|{{Nowiki|&#x(%x+);}}}}, ale w pierw te kody muszą być zamienione na normalne znaki. Skrótowa definicja funkcji: <syntaxhighlight lang="lua"> function p.CzyNiepoprawnaNazwa(nazwa_jednostki)...end; </syntaxhighlight> Wtedy ciało funkcji tej, czyli jego definicja w środku, jest: <syntaxhighlight lang="lua"> -- Moduł: "Moduł:Html/dane", służy do ładowania znaku o kodzie HTML "&#127;"; local html_dane_modul=mw.loadData("Module:Html/dane"); return mw.ustring.match(nazwa_jednostki,"[{}<>|%[%]#\n"..html_dane_modul.znak_127.."]+") or mw.ustring.match(nazwa_jednostki,"~~~") or mw.ustring.match(nazwa_jednostki,"&(%a+);"); </syntaxhighlight> Parametry: * {{Code|nazwa_jednostki}} - nazwa jednostki do sprawdzenia. Przykłady: <syntaxhighlight lang="lua"> local pudelko_modul=require("Module:Pudełko"); -- Podana przykładowa niepoprawna nazwa jedostki local nazwa_jednostki="Nazwa pliku [[Nazwa linku w pliku]]"; -- Fukcja zwróci wartość: local czy_poprawna_nazwa=true; local czy_poprawna_nazwa=pudelko_modul.CzyNiepoprawnaNazwa(nazwa_jednostki); </syntaxhighlight> == Funkcje nazw przestrzeni nazw == === {{Code|p["Nazwa przestrzeni nazw"](frame,...)}} === Funkcja pisze nazwę przestrzeni nazw, niezależnie, czy to jest przedmiotowa, czy dyskusji, według podanej w zmiennej {{Code|nazwa przestrzeni nazw}} dla pozycja bazowej w podanych parametrach szablonu rodzicu ramki dziecka, lub dla innej pozycji należy parametr podawać w formie {{Code|nazwa przestrzeni nazw 1}}, {{Code|nazwa przestrzeni nazw 2}}, {{Code|nazwa przestrzeni nazw 3}},..., lub te parametry można podać w postaci ogólnej {{Code|nazwa przestrzeni nazw i}}. Parametry podaje się w parametrach rodzica wywołania tej funkcji {{Code|{{m|Pudełko|Nazwa przestrzeni nazw}}}} (ale ich nie trzeba podawać w dziecku, ale można) i w parametrach dziecka, jeśli chodzi o zmienną {{Code|numer jednostki}}, czyli np.: {{Code|{{m|Pudełko|Nazwa przestrzeni nazw|numer jednostki{{=}}<jakaś liczba całkowita dodatnia>}}}}. Te parametry przestrzenne zamiast w rodzicu w szablonie można podać w ramce dziecka, wtedy parametry dziecka mają pierwszeństwo. Przestrzeń nazw z parametrów nazw przestrzennych może odpowiadać wartości przestrzeni głównej, to wtedy odpowiednia przestrzeń nazw z parametru nazwy jednostki się nie liczy w tej funkcji, aby się liczyła należy użyć funkcji {{Code|{{sr|#p["Nazwa przestrzeni nazw 2"](frame,...)|p=Pudełko}}}}. Definicja skrótowa funkcji: <syntaxhighlight lang="lua"> p["Nazwa przestrzeni nazw"]=function(frame,czy_uwzglednic_alternatywna_nazwe,i)...end; </syntaxhighlight> Wtedy ciało funkcji tej, czyli jego definicja w środku, jest: <syntaxhighlight lang="lua"> -- Jest liczony numer parametru nazwy przestrzeni nazw, domyslnie chodzi tu o numer bazowy parametrów przestrzennych; local numer_jednostki=i or frame.args["numer jednostki"]; local liczba_numer_jednostki=((numer_jednostki)and(tonumber(numer_jednostki))or 0); local pudelko_pomocne_modul=require("Module:Pudełko/Pomocne"); -- Liczy nazwę przestrzeni nazw na podstawie podanych parametrów; return pudelko_pomocne_modul.Nazwa_przestrzeni_nazw(frame,0, czy_uwzglednic_alternatywna_nazwe,liczba_numer_jednostki); </syntaxhighlight> Parametry funkcji: * {{Code|frame}} - tablica ramki tablicy transportu, * {{Code|czy_uwzglednic_alternatywna_nazwe}} - czy ma uwzględniać nazwę przestrzeni nazw domyślną szablonu, dostępne wartości: {{Code|false}}, w której nazwa domyślna nie jest uwzględniana wtedy, oraz {{Code|nil}} i {{Code|true}}, które oznaczają to samo, w tym jeżeli ona jest uwzględniana, wtedy jest brany parametr pierwszy dziecka, który musi istnieć przy takiej wartości tego parametru, tzn. {{Code|{{m|Pudełko|Nazwa przestrzeni nazw|Szablon}}}}, a nazwa uzyskana nazwy przestrzeni nazw jest w takim przypadku błędna, a jeżeli nazwa domyślna jest błędna, czyli {{Code|{{m|Pudełko|Nazwa przestrzeni nazw|Moja przestrzeń}}}}, wtedy funkcja zwraca stan błędu {{Code|(błąd)}}. * {{Code|i}} - numer zmiennej nazwy przestrzeni nazw. Funkcja wykorzystuje {{Code|{{sr|#p.Nazwa_przestrzeni_nazw(frame,...)|p=Pudełko/Pomocne}}}} do wyznaczania ogólnego nazwy przestrzeni nazw dla pozycji bazowej i numerkowej, tzn. dla pozycji: jeden, dwa, trzy,..., itd, i ich ogólnej. Parametr ramki tablicy transportu rodzica szablonu: * {{Code|nazwa przestrzeni nazw}}, {{Code|nazwa przestrzeni nazw 1}}, {{Code|nazwa przestrzeni nazw 2}}, {{Code|nazwa przestrzeni nazw 3}},..., {{Code|nazwa przestrzeni nazw i}} - nazwy przestrzeni nazw dla pozycji bazowej oraz zwykłej i ogólnej numerkowej, * {{Code|typ jednostki}}, {{Code|typ jednostki 1}}, {{Code|typ jednostki 2}}, {{Code|typ jednostki 3}},..., {{Code|typ jednostki i}} - typy jednostek, którym odpowiadają pewne przestrzenie przedmiotowe, dla pozycji bazowej, numerkowej i ogólnej, ** {{Code|dyskusja typu jednostki}}, {{Code|dyskusja typu jednostki 1}}, {{Code|dyskusja typ jednostki 2}}, {{Code|dyskusja typ jednostki 3}},..., {{Code|dyskusja typ jednostki i}} - czy dany typ jednostki ma przedstawiać, jeśli niepusta, przestrzeń dyskusji dla pozycji bazowej, numerkowej i ogólnej. Parametry ramki tablicy transportu dziecka: * Parametry dziecka są takie same jak rodzica dla funkcji pudełkowej plus tu wymienione, * {{Code|numer jednostki}} - jak parametr {{Code|i}} nie został ustawiony, to wtedy liczy się ta zmienna. Przykłady: <syntaxhighlight lang="mediawiki"> {{Nazwa szablonu|nazwa przestrzeni nazw=Wikibooks|nazwa przestrzeni nazw 2=Szablon|nazwa przestrzeni nazw i=Moduł}} </syntaxhighlight> W dziecku powiedzmy jest wywołanie, i szukamy nazwy przestrzeni nazw o numerze dwa, która nie została podana, ale istnieje za to jej wersji ogólna {{Code|nazwa przestrzeni nazw i}} i domyślna {{Code|nazwa przestrzeni nazw}}: <syntaxhighlight lang="mediawiki"> {{#invoke:Pudełko|Nazwa przestrzeni nazw|numer jednostki=1}} </syntaxhighlight> Na podstawie powyższego przykładu otrzymamy wynik o schemacie, nie wyniku, bo tam nie ma zmiennej {{Code|nazwa przestrzeni nazw 1}}, ale jest {{Code|nazwa przestrzeni nazw i}}: <syntaxhighlight lang="mediawiki"> <!-- Ale nie "nazwa przestrzeni nazw", bo jej nie ma, ale za to istnieje "nazwa przestrzeni nazw i"; --> <!-- nazwa przestrzeni nazw 2=nazwa przestrzeni nazw i=Moduł; --> <!-- Czyli wynik: --> Moduł <!-- Widzimy, że wygenerowała się nazwa przestrzeni nazw, którą jest przestrzeń programowa, którą również jest "Szablon"; --> </syntaxhighlight> Nie jest brana w tym powyższym przykładzie zmienna {{Code|nazwa przestrzeni nazw}}, bo jej nie ma, ale za to jest {{Code|nazwa przestrzeni nazw i}}, bo ona występuje jako parametr domyślny ogólny dla parametrów numerkowych. Przykłady w wikikodzie: * {{Code|{{m|Pudełko|Nazwa przestrzeni nazw|numer jednostki{{=}}2}}}} → {{Tt|{{#invoke:Pudełko|Nazwa przestrzeni nazw|numer jednostki=2}}}} * {{Code|{{m|Pudełko|Nazwa przestrzeni nazw|Szablon|nazwa przestrzeni nazw i{{=}}Moja przestrzeń|numer jednostki{{=}}2}}}} → {{Tt|{{#invoke:Pudełko|Nazwa przestrzeni nazw|Szablon|nazwa przestrzeni nazw i=Moja przestrzeń|numer jednostki=2}}}} * {{Code|{{m|Pudełko|Nazwa przestrzeni nazw|nazwa przestrzeni nazw 2{{=}}Szablon|numer jednostki{{=}}2}}}} → {{Tt|{{#invoke:Pudełko|Nazwa przestrzeni nazw|nazwa przestrzeni nazw 2=Szablon|numer jednostki=2}}}} * {{Code|{{m|Pudełko|Nazwa przestrzeni nazw|nazwa przestrzeni nazw 2{{=}}Szablon|numer jednostki{{=}}2}}}} → {{Tt|{{#invoke:Pudełko|Nazwa przestrzeni nazw|nazwa przestrzeni nazw i=Szablon|numer jednostki=2}}}} * {{Code|{{m|Pudełko|Nazwa przestrzeni nazw|nazwa przestrzeni nazw{{=}}Szablon|numer jednostki{{=}}2}}}} → {{Tt|{{#invoke:Pudełko|Nazwa przestrzeni nazw|nazwa przestrzeni nazw=Szablon|numer jednostki=2}}}} Powyżej dla przykładu podano parametry nie w rodzicu w szablonie, tylko w dziecku, jeśli chodzi o parametry nazw przestrzeni nazw, ale ich się za to nie powinno podawać w tych ramach, tylko w szablonach, w których wywoływane są te ramki pudełek {{Code|{{m|Pudełko}}}}, ale tak tutaj tak zrobiono by było najłatwiej sprawdzić działanie tego typu funkcji. Analogicznie możemy podawać parametry typu jednostki, np.: wywołaniu modułowym {{Code|{{m|Pudełko|Nazwa przestrzeni nazw|typ jednostki 2{{=}}strona szablonu|numer jednostki{{=}}2}}}}, ale o tym więcej w rozdziałach {{Code|{{sr|# p["Typ jednostki"](frame,i)|p=Pudełko}}}} w „{{sr|#Funkcje typu jednostki|p=Pudełko}}”, on definiuje przestrzenie przedmiotowe, ale można użyć parametru dyskusji typu jednostki z wartością niepustą, wtedy wyświetli się nazwa przestrzeni nazw dyskusji. Również parametry typu jednostki nie powinno się podawać w dziecku w ramce, tylko w rodzicu w szablonie jako parametry, w którym ta ramka jest wywoływana, ale tutaj podano jedynie dla przykładu, jak najłatwiej sprawdzić działanie tych parametrów tej funkcji. Najpierw w funkcji nagłówku brane są parametry nazw przestrzeni nazw, a jeżeli ich nie ma, to parametry typu jednostki, a jeżeli nie ma, to generowane są nazwy na podstawie aktualnego modułu. === {{Code|p["Nazwa przedmiotowej przestrzeni nazw"](frame,...)}} === Funkcja pisze przedmiotową nazwę przestrzeni nazw jakikolwiek nazwy przestrzeni nazw (tzn. nazwę przedmiotową nazwy przestrzenie nazw, czyli nie dyskusji, zamieniana jest na nią samą, czyli identyfikator przestrzeni się nie zmienia, a dyskusji, nie przedmiotową, przekształca się na przedmiotową jej odpowiadającą, czyli w tym przypadku identyfikator przestrzeni zmniejsza się o numer mniej), według podanej w zmiennej {{Code|nazwa przestrzeni nazw}} dla pozycja bazowej w podanych parametrach szablonu rodzicu ramki dziecka, lub dla innej pozycji należy parametr podawać w formie {{Code|nazwa przestrzeni nazw 1}}, {{Code|nazwa przestrzeni nazw 2}}, {{Code|nazwa przestrzeni nazw 3}},..., lub te parametry można podać w postaci ogólnej {{Code|nazwa przestrzeni nazw i}}. Parametry podaje się w parametrach rodzica wywołania tej funkcji {{Code|{{m|Pudełko|Nazwa przedmiotowej przestrzeni nazw}}}} (ale ich nie trzeba podawać w dziecku, ale można) i w parametrach dziecka, jeśli chodzi o zmienną {{Code|numer jednostki}}, czyli np.: {{Code|{{m|Pudełko|Nazwa przedmiotowej przestrzeni nazw|numer jednostki{{=}}<jakaś liczba całkowita dodatnia>}}}}. Te parametry przestrzenne zamiast w rodzicu w szablonie można podać w ramce dziecka, wtedy parametry dziecka mają pierwszeństwo. Parametry przestrzenne mogą mogą być podane w postaci przestrzeni przedmiotowej lub dyskusji, ale ta funkcja zawsze ją zamienia na przedmiotową. Przestrzeń nazw z parametrów nazw przestrzennych może odpowiadać wartości przestrzeni głównej, to wtedy odpowiednia przestrzeń nazw z parametru nazwy jednostki się nie liczy w tej funkcji, aby się liczyła należy użyć funkcji {{Code|{{sr|#p["Nazwa przedmiotowej przestrzeni nazw 2"](frame,...)|p=Pudełko}}}}. Definicja skrótowa funkcji: <syntaxhighlight lang="lua"> p["Nazwa przedmiotowej przestrzeni nazw"]=function(frame,czy_uwzglednic_alternatywna_nazwe,i)...end; </syntaxhighlight> Wtedy ciało funkcji tej, czyli jego definicja w środku, jest: <syntaxhighlight lang="lua"> -- Jest liczony numer parametru nazwy przestrzeni nazw, domyslnie chodzi tu o numer bazowy parametrów przestrzennych; local numer_jednostki=i or frame.args["numer jednostki"]; local liczba_numer_jednostki=((numer_jednostki)and(tonumber(numer_jednostki))or 0); local pudelko_pomocne_modul=require("Module:Pudełko/Pomocne"); -- Liczy nazwę przestrzeni nazw przedmiotową na podstawie podanych parametrów; return pudelko_pomocne_modul.Nazwa_przestrzeni_nazw(frame,1, czy_uwzglednic_alternatywna_nazwe,liczba_numer_jednostki); </syntaxhighlight> Parametry funkcji: * {{Code|frame}} - tablica ramki tablicy transportu, * {{Code|czy_uwzglednic_alternatywna_nazwe}} - czy ma uwzględniać nazwę przestrzeni nazw domyślną szablonu, dostępne wartości: {{Code|false}}, w której nazwa domyślna nie jest uwzględniana wtedy, oraz {{Code|nil}} i {{Code|true}}, które oznaczają to samo, w tym jeżeli ona jest uwzględniana, wtedy jest brany parametr pierwszy dziecka, który musi istnieć przy takiej wartości tego parametru, tzn. {{Code|{{m|Pudełko|Nazwa przedmiotowej przestrzeni nazw|Dyskusja szablonu}}}} - ta nazwa domyślna zostanie zamieniona na przedmiotową, a jak ona by była przedmiotowa, to żadnej zamiany by nie było, a nazwa uzyskana z nazwy przestrzeni nazw z parametrów przestrzennych jest w takim przypadku błędna, to w takim razie brany jest ten parametr, a jeżeli ta nazwa domyślna jest błędna, czyli {{Code|{{m|Pudełko|Nazwa przedmiotowej przestrzeni nazw|Moja przestrzeń}}}}, wtedy funkcja zwraca stan błędu {{Code|(błąd)}}. * {{Code|i}} - numer zmiennej nazwy przestrzeni nazw. Funkcja wykorzystuje {{Code|{{sr|#p.Nazwa_przestrzeni_nazw(frame,...)|p=Pudełko/Pomocne}}}} do wyznaczania ogólnego nazwy przestrzeni nazw dla pozycji bazowej i numerkowej, tzn. dla pozycji: jeden, dwa, trzy,..., itd, i ich ogólnej. Parametr ramki tablicy transportu rodzica szablonu: * {{Code|nazwa przestrzeni nazw}}, {{Code|nazwa przestrzeni nazw 1}}, {{Code|nazwa przestrzeni nazw 2}}, {{Code|nazwa przestrzeni nazw 3}},..., {{Code|nazwa przestrzeni nazw i}} - nazwy przestrzeni nazw dla pozycji bazowej oraz zwykłej i ogólnej numerkowej, * {{Code|typ jednostki}}, {{Code|typ jednostki 1}}, {{Code|typ jednostki 2}}, {{Code|typ jednostki 3}},..., {{Code|typ jednostki i}} - typy jednostek, którym odpowiadają pewne przestrzenie przedmiotowe, dla pozycji bazowej, numerkowej i ogólnej. Parametry ramki tablicy transportu dziecka: * Parametry dziecka są takie same jak rodzica dla funkcji pudełkowej plus tu wymienione, * {{Code|numer jednostki}} - jak parametr {{Code|i}} nie został ustawiony, to wtedy liczy się ta zmienna. Przykłady: <syntaxhighlight lang="mediawiki"> {{Nazwa szablonu|nazwa przestrzeni nazw=Dyskusja Wikibooks|nazwa przestrzeni nazw 2=Dyskusja szablonu|nazwa przestrzeni nazw i=Dyskusja modułu}} </syntaxhighlight> W dziecku powiedzmy jest wywołanie, i szukamy nazwy przestrzeni nazw o numerze dwa, która nie została podana, ale istnieje za to jej wersji ogólna {{Code|nazwa przestrzeni nazw i}} i domyślna {{Code|nazwa przestrzeni nazw}}: <syntaxhighlight lang="mediawiki"> {{#invoke:Pudełko|Nazwa przedmiotowej przestrzeni nazw|numer jednostki=1}} </syntaxhighlight> Na podstawie powyższego przykładu otrzymamy wynik o schemacie, nie wyniku, bo tam nie ma zmiennej {{Code|nazwa przestrzeni nazw 1}}, ale jest {{Code|nazwa przestrzeni nazw i}}: <syntaxhighlight lang="mediawiki"> <!-- Ale nie "nazwa przestrzeni nazw", bo jej nie ma, ale za to istnieje "nazwa przestrzeni nazw i"; --> <!-- nazwa przestrzeni nazw 2=nazwa przestrzeni nazw i=Dyskusja modułu; --> <!-- Czyli wynik: --> Moduł <!-- Widzimy, że wygenerowała się nazwa przestrzeni nazw, którą jest przestrzeń przedmiotowa programowa przestrzeni dyskusji "Dyskusja modułu", którą również jest "Szablon" jego przestrzeni dyskusji "Dyskusja szablonu", a dla ich przestrzeni przedmiotowej, zamiast dyskusji, to samo przekształca się na to samo; --> </syntaxhighlight> Nie jest brana w tym powyższym przykładzie zmienna {{Code|nazwa przestrzeni nazw}}, bo jej nie ma, ale za to jest {{Code|nazwa przestrzeni nazw i}}, bo ona występuje jako parametr domyślny ogólny dla parametrów numerkowych. Przykłady w wikikodzie: * {{Code|{{m|Pudełko|Nazwa przedmiotowej przestrzeni nazw|numer jednostki{{=}}2}}}} → {{Tt|{{#invoke:Pudełko|Nazwa przedmiotowej przestrzeni nazw|numer jednostki=2}}}} * {{Code|{{m|Pudełko|Nazwa przedmiotowej przestrzeni nazw|Dyskusja szablonu|nazwa przestrzeni nazw i{{=}}Moja przestrzeń|numer jednostki{{=}}2}}}} → {{Tt|{{#invoke:Pudełko|Nazwa przedmiotowej przestrzeni nazw|Dyskusja szablonu|nazwa przestrzeni nazw i=Moja przestrzeń|numer jednostki=2}}}} * {{Code|{{m|Pudełko|Nazwa przedmiotowej przestrzeni nazw|nazwa przestrzeni nazw 2{{=}}Dyskusja szablonu|numer jednostki{{=}}2}}}} → {{Tt|{{#invoke:Pudełko|Nazwa przedmiotowej przestrzeni nazw|nazwa przestrzeni nazw 2=Dyskusja szablonu|numer jednostki=2}}}} * {{Code|{{m|Pudełko|Nazwa przedmiotowej przestrzeni nazw|nazwa przestrzeni nazw 2{{=}}Dyskusja szablonu|numer jednostki{{=}}2}}}} → {{Tt|{{#invoke:Pudełko|Nazwa przedmiotowej przestrzeni nazw|nazwa przestrzeni nazw i=Dyskusja szablonu|numer jednostki=2}}}} * {{Code|{{m|Pudełko|Nazwa przedmiotowej przestrzeni nazw|nazwa przestrzeni nazw{{=}}Dyskusja szablonu|numer jednostki{{=}}2}}}} → {{Tt|{{#invoke:Pudełko|Nazwa przedmiotowej przestrzeni nazw|nazwa przestrzeni nazw=Dyskusja szablonu|numer jednostki=2}}}} Powyżej dla przykładu podano parametry nie w rodzicu w szablonie, tylko w dziecku, jeśli chodzi o parametry nazw przestrzeni nazw, ale ich się za to nie powinno podawać w tych ramach, tylko w szablonach, w których wywoływane są te ramki pudełek {{Code|{{m|Pudełko}}}}, ale tak tutaj tak zrobiono by było najłatwiej sprawdzić działanie tego typu funkcji. Analogicznie możemy podawać parametry typu jednostki, np.: wywołaniu modułowym {{Code|{{m|Pudełko|Nazwa przedmiotowej przestrzeni nazw|typ jednostki 2{{=}}strona szablonu|numer jednostki{{=}}2}}}}, ale o tym więcej w rozdziałach {{Code|{{sr|# p["Przedmiotowy typ jednostki"](frame,i)|p=Pudełko}}}} w „{{sr|#Funkcje typu jednostki|p=Pudełko}}”, ale wtedy ta sama nazwa przestrzeni nazw reprezentowana przez {{Parametr|typ jednostki 2|strona szablonu}}, jest zamieniana na to samo, lepiej jest tutaj używać parametrów przestrzennych nazw niż typu jednostki, bo typ jednostki ma taką samą wartość dla przestrzeni przedmiotowej, co dyskusji. Tutaj parametr dyskusji typu jednostki bazowy i numerkowy ogólny, czy szczegółowy, nie gra roli, bo nawet, gdy wygenerujemy nazwę przestrzeni dyskusji za pomoca tego parametru, to i tak otrzymamy na samym końcu jego nazwę przedmiotową. Również parametry typu jednostki nie powinno się podawać w dziecku w ramce, tylko w rodzicu w szablonie jako parametry, w którym ta ramka jest wywoływana, ale tutaj podano jedynie dla przykładu, jak najłatwiej sprawdzić działanie tych parametrów tej funkcji. Najpierw w funkcji nagłówku brane są parametry nazw przestrzeni nazw, a jeżeli ich nie ma, to parametry typu jednostki, a jeżeli nie ma, to generowane są nazwy na podstawie aktualnego modułu. === {{Code|p["Nazwa przestrzeni nazw dyskusji"](frame,...)}} === Funkcja pisze nazwę przestrzeni nazw dyskusji jakikolwiek nazwy przestrzeni nazw (tzn. nazwę przedmiotową nazwy przestrzenie nazw, czyli nie dyskusji, zamieniana jest na dyskusji, czyli identyfikator przestrzeni się zmienia jeden wyżej, a dyskusji, nie przedmiotową, przekształca się na tą samą), według podanej w zmiennej {{Code|nazwa przestrzeni nazw}} dla pozycja bazowej w podanych parametrach szablonu rodzicu ramki dziecka, lub dla innej pozycji należy parametr podawać w formie {{Code|nazwa przestrzeni nazw 1}}, {{Code|nazwa przestrzeni nazw 2}}, {{Code|nazwa przestrzeni nazw 3}},..., lub te parametry można podać w postaci ogólnej {{Code|nazwa przestrzeni nazw i}}. Parametry podaje się w parametrach rodzica wywołania tej funkcji {{Code|{{m|Pudełko|Nazwa przestrzeni nazw dyskusji}}}} (ale ich nie trzeba podawać w dziecku, ale można) i w parametrach dziecka, jeśli chodzi o zmienną {{Code|numer jednostki}}, czyli np.: {{Code|{{m|Pudełko|Nazwa przestrzeni nazw dyskusji|numer jednostki{{=}}<jakaś liczba całkowita dodatnia>}}}}. Te parametry przestrzenne zamiast w rodzicu w szablonie można podać w ramce dziecka, wtedy parametry dziecka mają pierwszeństwo. Parametry przestrzenne mogą mogą być podane w postaci przestrzeni przedmiotowej lub dyskusji, ale ta funkcja zawsze ją zamienia na dyskusji. Przestrzeń nazw z parametrów nazw przestrzennych może odpowiadać wartości przestrzeni głównej, to wtedy odpowiednia przestrzeń nazw z parametru nazwy jednostki się nie liczy w tej funkcji, aby się liczyła należy użyć funkcji {{Code|{{sr|#p["Nazwa przestrzeni nazw dyskusji 2"](frame,...)|p=Pudełko}}}}. Definicja skrótowa funkcji: <syntaxhighlight lang="lua"> p["Nazwa przestrzeni nazw dyskusji"]=function(frame,czy_uwzglednic_alternatywna_nazwe,i)...end; </syntaxhighlight> Wtedy ciało funkcji tej, czyli jego definicja w środku, jest: <syntaxhighlight lang="lua"> -- Jest liczony numer parametru nazwy przestrzeni nazw, domyslnie chodzi tu o numer bazowy parametrów przestrzennych; local numer_jednostki=i or frame.args["numer jednostki"]; local liczba_numer_jednostki=((numer_jednostki)and(tonumber(numer_jednostki))or 0); local pudelko_pomocne_modul=require("Module:Pudełko/Pomocne"); -- Liczy nazwę przestrzeni nazw dyskusji na podstawie podanych parametrów; return pudelko_pomocne_modul.Nazwa_przestrzeni_nazw(frame,2, czy_uwzglednic_alternatywna_nazwe,liczba_numer_jednostki); </syntaxhighlight> Parametry funkcji: * {{Code|frame}} - tablica ramki tablicy transportu, * {{Code|czy_uwzglednic_alternatywna_nazwe}} - czy ma uwzględniać nazwę przestrzeni nazw domyślną szablonu, dostępne wartości: {{Code|false}}, w której nazwa domyślna nie jest uwzględniana wtedy, oraz {{Code|nil}} i {{Code|true}}, które oznaczają to samo, w tym jeżeli ona jest uwzględniana, wtedy jest brany parametr pierwszy dziecka, który musi istnieć przy takiej wartości tego parametru, tzn. {{Code|{{m|Pudełko|Nazwa przestrzeni nazw dyskusji|Szablon}}}} - ta nazwa domyślna zostanie przekształcona na dyskusji, a jeżeli ona by była dyskusji, to nie byłoby żadnego przekształcenia, a nazwa uzyskana nazwy przestrzeni nazw z parametrów przestrzennych jest w takim przypadku błędna, to w takim razie brany jest ten parametr, a jeżeli nazwa domyślna jest błędna, czyli {{Code|{{m|Pudełko|Nazwa przestrzeni nazw dyskusji|Moja przestrzeń}}}}, wtedy funkcja zwraca stan błędu {{Code|(błąd)}}. * {{Code|i}} - numer zmiennej nazwy przestrzeni nazw. Funkcja wykorzystuje {{Code|{{sr|#p.Nazwa_przestrzeni_nazw(frame,...)|p=Pudełko/Pomocne}}}} do wyznaczania ogólnego nazwy przestrzeni nazw dla pozycji bazowej i numerkowej, tzn. dla pozycji: jeden, dwa, trzy,..., itd, i ich ogólnej. Parametr ramki tablicy transportu rodzica szablonu: * {{Code|nazwa przestrzeni nazw}}, {{Code|nazwa przestrzeni nazw 1}}, {{Code|nazwa przestrzeni nazw 2}}, {{Code|nazwa przestrzeni nazw 3}},..., {{Code|nazwa przestrzeni nazw i}} - nazwy przestrzeni nazw dla pozycji bazowej oraz zwykłej i ogólnej numerkowej, * {{Code|typ jednostki}}, {{Code|typ jednostki 1}}, {{Code|typ jednostki 2}}, {{Code|typ jednostki 3}},..., {{Code|typ jednostki i}} - typy jednostek, którym odpowiadają pewne przestrzenie przedmiotowe, dla pozycji bazowej, numerkowej i ogólnej. Parametry ramki tablicy transportu dziecka: * Parametry dziecka są takie same jak rodzica dla funkcji pudełkowej plus tu wymienione, * {{Code|numer jednostki}} - jak parametr {{Code|i}} nie został ustawiony, to wtedy liczy się ta zmienna. Przykłady: <syntaxhighlight lang="mediawiki"> {{Nazwa szablonu|nazwa przestrzeni nazw=Wikibooks|nazwa przestrzeni nazw 2=Szablon|nazwa przestrzeni nazw i=Moduł}} </syntaxhighlight> W dziecku powiedzmy jest wywołanie, i szukamy nazwy przestrzeni nazw o numerze dwa, która nie została podana, ale istnieje za to jej wersji ogólna {{Code|nazwa przestrzeni nazw i}} i domyślna {{Code|nazwa przestrzeni nazw}}: <syntaxhighlight lang="mediawiki"> {{#invoke:Pudełko|Nazwa przestrzeni nazw dyskusji|numer jednostki=1}} </syntaxhighlight> Na podstawie powyższego przykładu otrzymamy wynik o schemacie, nie wyniku, bo tam nie ma zmiennej {{Code|nazwa przestrzeni nazw 1}}, ale jest {{Code|nazwa przestrzeni nazw i}}: <syntaxhighlight lang="mediawiki"> <!-- Ale nie "nazwa przestrzeni nazw", bo jej nie ma, ale za to istnieje "nazwa przestrzeni nazw i"; --> <!-- nazwa przestrzeni nazw 2=nazwa przestrzeni nazw i=Moduł; --> <!-- Czyli wynik: --> Dyskusja modułu <!-- Widzimy, że wygenerowała się nazwa przestrzeni nazw, którą jest przestrzeń dyskusji przestrzeni programowej przestrzeni przedmiotowej "Moduł", którą również jest "Szablon" jego przestrzeni dyskusji "Dyskusja szablonu", a dla ich przestrzeni przedmiotowej, zamiast dyskusji, to przekształca się na dyskusji jej odpowiadającą; --> </syntaxhighlight> Nie jest brana w tym powyższym przykładzie zmienna {{Code|nazwa przestrzeni nazw}}, bo jej nie ma, ale za to jest {{Code|nazwa przestrzeni nazw i}}, bo ona występuje jako parametr domyślny ogólny dla parametrów numerkowych. Przykłady w wikikodzie: * {{Code|{{m|Pudełko|Nazwa przestrzeni nazw dyskusji|numer jednostki{{=}}2}}}} → {{Tt|{{#invoke:Pudełko|Nazwa przestrzeni nazw dyskusji|numer jednostki=2}}}} * {{Code|{{m|Pudełko|Nazwa przestrzeni nazw dyskusji|Szablon|nazwa przestrzeni nazw i{{=}}Moja przestrzeń|numer jednostki{{=}}2}}}} → {{Tt|{{#invoke:Pudełko|Nazwa przestrzeni nazw dyskusji|Szablon|nazwa przestrzeni nazw i=Moja przestrzeń|numer jednostki=2}}}} * {{Code|{{m|Pudełko|Nazwa przestrzeni nazw dyskusji|nazwa przestrzeni nazw 2{{=}}Szablon|numer jednostki{{=}}2}}}} → {{Tt|{{#invoke:Pudełko|Nazwa przestrzeni nazw dyskusji|nazwa przestrzeni nazw 2=Szablon|numer jednostki=2}}}} * {{Code|{{m|Pudełko|Nazwa przestrzeni nazw dyskusji|nazwa przestrzeni nazw 2{{=}}Szablon|numer jednostki{{=}}2}}}} → {{Tt|{{#invoke:Pudełko|Nazwa przestrzeni nazw dyskusji|nazwa przestrzeni nazw i=Szablon|numer jednostki=2}}}} * {{Code|{{m|Pudełko|Nazwa przestrzeni nazw dyskusji|nazwa przestrzeni nazw{{=}}Szablon|numer jednostki{{=}}2}}}} → {{Tt|{{#invoke:Pudełko|Nazwa przestrzeni nazw dyskusji|nazwa przestrzeni nazw=Szablon|numer jednostki=2}}}} Powyżej dla przykładu podano parametry nie w rodzicu w szablonie, tylko w dziecku, jeśli chodzi o parametry nazw przestrzeni nazw, ale ich się za to nie powinno podawać w tych ramach, tylko w szablonach, w których wywoływane są te ramki pudełek {{Code|{{m|Pudełko}}}}, ale tak tutaj tak zrobiono by było najłatwiej sprawdzić działanie tego typu funkcji. Analogicznie możemy podawać parametry typu jednostki, np.: wywołaniu modułowym {{Code|{{m|Pudełko|Nazwa przestrzeni nazw dyskusji|typ jednostki 2{{=}}strona szablonu|numer jednostki{{=}}2}}}}, ale o tym więcej w rozdziałach {{Code|{{sr|# p["Dyskusyjny typ jednostki"](frame,i)|p=Pudełko}}}} w „{{sr|#Funkcje typu jednostki|p=Pudełko}}”, ale wtedy nazwa przestrzeni nazw reprezentowana przez {{Parametr|typ jednostki 2|strona szablonu}}, jest zamieniana na nazwę przestrzeni nazw dyskusji. Parametr dyskusji typu jednostki bazowy lub dla danego numerka ogólny, czy szczegółowy, nie gra roli. Również parametry typu jednostki nie powinno się podawać w dziecku w ramce, tylko w rodzicu w szablonie jako parametry, w którym ta ramka jest wywoływana, ale tutaj podano jedynie dla przykładu, jak najłatwiej sprawdzić działanie tych parametrów tej funkcji. Najpierw w funkcji nagłówku brane są parametry nazw przestrzeni nazw, a jeżeli ich nie ma, to parametry typu jednostki, a jeżeli nie ma, to generowane są nazwy na podstawie aktualnego modułu. == Funkcje nazw przestrzeni nazw drugiej wersji == === {{Code|p["Nazwa przestrzeni nazw 2"](frame,...)}} === Funkcja pisze nazwę przestrzeni nazw, niezależnie, czy to jest przedmiotowa, czy dyskusji, według, i nie zawsze tylko, podanej w zmiennej {{Code|nazwa przestrzeni nazw}} dla pozycja bazowej w podanych parametrach szablonu rodzicu ramki dziecka, lub dla innej pozycji należy parametr podawać w formie {{Code|nazwa przestrzeni nazw 1}}, {{Code|nazwa przestrzeni nazw 2}}, {{Code|nazwa przestrzeni nazw 3}},..., lub te parametry można podać w postaci ogólnej {{Code|nazwa przestrzeni nazw i}}. W tej funkcji trzeba też podawać parametry nazwy jednostek {{Code|nazwa jednostki}}, {{Code|nazwa jednostki 1}}, {{Code|nazwa jednostki 2}}, {{Code|nazwa jednostki 3}},... Parametry podaje się w parametrach rodzica wywołania tej funkcji {{Code|{{m|Pudełko|Nazwa przestrzeni nazw 2}}}} (ale ich nie trzeba podawać w dziecku, ale można) i w parametrach dziecka, jeśli chodzi o zmienną {{Code|numer jednostki}}, czyli np.: {{Code|{{m|Pudełko|Nazwa przestrzeni nazw 2|numer jednostki{{=}}<jakaś liczba całkowita dodatnia>}}}}. Te parametry przestrzenne zamiast w rodzicu w szablonie można podać w ramce dziecka, wtedy parametry dziecka mają pierwszeństwo. Przestrzeń nazw z parametrów nazw przestrzennych może odpowiadać wartości przestrzeni głównej, to wtedy odpowiednia przestrzeń nazw z parametru nazwy jednostki się liczy w tej funkcji, wtedy jest liczona nazwa przestrzeni nazw z tego parametru. Gdy parametry przestrzenne lub typ jednostki w drugim podejściu nie wskazują na przestrzeń główną, to wtedy działanie tej funkcji jest podobne do {{Code|{{sr|#p["Nazwa przestrzeni nazw"](frame,...)|p=Pudełko}}}}. Definicja skrótowa funkcji: <syntaxhighlight lang="lua"> p["Nazwa przestrzeni nazw 2"]=function(frame,czy_uwzglednic_alternatywna_nazwe,i)...end; </syntaxhighlight> Wtedy ciało funkcji tej, czyli jego definicja w środku, jest: <syntaxhighlight lang="lua"> local pudelko_pomocne_modul=require("Module:Pudełko/Pomocne"); -- Liczy nazwę przestrzeni nazw, jeżeli z parametrów przestrzennych przestrzeń wskazuje na główną, to wtedy jest liczona przestrzeń nazw z nazwy jednostki; return pudelko_pomocne_modul.Nazwa_przestrzeni_nazw_2(frame,czy_uwzglednic_alternatywna_nazwe,i) </syntaxhighlight> Parametry funkcji: * {{Code|frame}} - tablica ramki tablicy transportu, * {{Code|czy_uwzglednic_alternatywna_nazwe}} - czy ma uwzględniać nazwę przestrzeni nazw domyślną szablonu, dostępne wartości: {{Code|false}}, w której nazwa domyślna nie jest uwzględniana wtedy, oraz {{Code|nil}} i {{Code|true}}, które oznaczają to samo, w tym jeżeli ona jest uwzględniana, wtedy jest brany parametr pierwszy dziecka, który musi istnieć przy takiej wartości tego parametru, tzn. {{Code|{{m|Pudełko|Nazwa przestrzeni nazw 2|Szablon}}}}, a nazwa uzyskana nazwy przestrzeni nazw jest w takim przypadku błędna, a jeżeli nazwa domyślna jest błędna, czyli {{Code|{{m|Pudełko|Nazwa przestrzeni nazw 2|Moja przestrzeń}}}}, wtedy funkcja zwraca stan błędu {{Code|(błąd)}}. * {{Code|i}} - numer zmiennej nazwy przestrzeni nazw. Funkcja wykorzystuje {{Code|{{sr|#p.Nazwa_przestrzeni_nazw_2(frame,...)|p=Pudełko/Pomocne}}}} do wyznaczania ogólnego nazwy przestrzeni nazw dla pozycji bazowej i numerkowej, tzn. dla pozycji: jeden, dwa, trzy,..., itd, i ich ogólnej. Parametr ramki tablicy transportu rodzica szablonu: * {{Code|nazwa przestrzeni nazw}}, {{Code|nazwa przestrzeni nazw 1}}, {{Code|nazwa przestrzeni nazw 2}}, {{Code|nazwa przestrzeni nazw 3}},..., {{Code|nazwa przestrzeni nazw i}} - nazwy przestrzeni nazw dla pozycji bazowej oraz zwykłej i ogólnej numerkowej, * {{Code|nazwa jednostki}}, {{Code|nazwa jednostki 1}}, {{Code|nazwa jednostki 2}}, {{Code|nazwa jednostki 3}},... - nazwy jednostek dla pozycji bazowej i numerkowej, * {{Code|typ jednostki}}, {{Code|typ jednostki 1}}, {{Code|typ jednostki 2}}, {{Code|typ jednostki 3}},..., {{Code|typ jednostki i}} - typy jednostek, którym odpowiadają pewne przestrzenie przedmiotowe, dla pozycji bazowej, numerkowej i ogólnej, ** {{Code|dyskusja typu jednostki}}, {{Code|dyskusja typu jednostki 1}}, {{Code|dyskusja typ jednostki 2}}, {{Code|dyskusja typ jednostki 3}},..., {{Code|dyskusja typ jednostki i}} - czy dany typ jednostki ma przedstawiać, jeśli niepusta, przestrzeń dyskusji dla pozycji bazowej, numerkowej i ogólnej. Parametry ramki tablicy transportu dziecka: * Parametry dziecka są takie same jak rodzica dla funkcji pudełkowej plus tu wymienione, * {{Code|numer jednostki}} - jak parametr {{Code|i}} nie został ustawiony, to wtedy liczy się ta zmienna. Przykłady: <syntaxhighlight lang="mediawiki"> {{Nazwa szablonu|nazwa przestrzeni nazw=Wikibooks|nazwa przestrzeni nazw 1=Szablon|nazwa przestrzeni nazw i=|nazwa jednostki 2=Wikibooks:Strona}} </syntaxhighlight> W dziecku powiedzmy jest wywołanie, i szukamy nazwy przestrzeni nazw o numerze dwa, która została podana, ale istnieje za to jej wersji ogólna {{Code|nazwa przestrzeni nazw i}} i domyślna {{Code|nazwa przestrzeni nazw}}, ale wtedy dla tego numerkowego liczy się to ogólne z {{Code| i}}, a ponieważ ta nazwa jest pusta, więc będziemy liczyli nazwę przestrzeni nazw z {{Code|nazwa jednostki 2}}: <syntaxhighlight lang="mediawiki"> {{#invoke:Pudełko|Nazwa przestrzeni nazw 2|numer jednostki=2}} </syntaxhighlight> Na podstawie powyższego przykładu otrzymamy wynik o schemacie, nie wyniku, bo tam nie ma zmiennej {{Code|nazwa przestrzeni nazw 1}}, ale jest {{Code|nazwa przestrzeni nazw i}}: <syntaxhighlight lang="mediawiki"> <!-- Ale nie "nazwa przestrzeni nazw 2", bo jej nie ma, ale za to istnieje "nazwa przestrzeni nazw i"; --> <!-- nazwa przestrzeni nazw 2=nazwa przestrzeni nazw i="", a nazwa jednostki 2="Wikibooks:Strona"; --> <!-- Czyli wynik: --> Wikibooks <!-- Widzimy, że wygenerowała się nazwa przestrzeni nazw, którą jest przestrzeń nieprogramowa, ale projektu, wychodząca z nazwy jednostek w tym przypadku z "nazwa jednostki 2"; --> </syntaxhighlight> Nie jest brana w tym powyższym przykładzie zmienna {{Code|nazwa przestrzeni nazw}}, bo jej nie ma, ale za to jest {{Code|nazwa przestrzeni nazw i}}, bo ona występuje jako parametr domyślny ogólny dla parametrów numerkowych. Tytaj jest używana jest zmienna {{Code|nazwa jednostki 2}} do wygenerowania ostatecznego wyniku, bo jak można zauważyć, parametry przestrzenne wskazują na przestrzeń główną, a nazwy jednostek już nie. Przykłady w wikikodzie: * {{Code|{{m|Pudełko|Nazwa przestrzeni nazw 2|numer jednostki{{=}}2}}}} → {{Tt|{{#invoke:Pudełko|Nazwa przestrzeni nazw 2|numer jednostki=2}}}} * {{Code|{{m|Pudełko|Nazwa przestrzeni nazw 2|Szablon|nazwa przestrzeni nazw i{{=}}Moja przestrzeń|numer jednostki{{=}}2}}}} → {{Tt|{{#invoke:Pudełko|Nazwa przestrzeni nazw 2|Szablon|nazwa przestrzeni nazw i=Moja przestrzeń|numer jednostki=2}}}} * {{Code|{{m|Pudełko|Nazwa przestrzeni nazw 2|nazwa przestrzeni nazw 2{{=}}|nazwa jednostki 2{{=}}Szablon:Strona|numer jednostki{{=}}2}}}} → {{Tt|{{#invoke:Pudełko|Nazwa przestrzeni nazw 2|nazwa przestrzeni nazw 2=|nazwa jednostki 2=Szablon:Strona|numer jednostki=2}}}} * {{Code|{{m|Pudełko|Nazwa przestrzeni nazw 2|nazwa przestrzeni nazw i{{=}}|nazwa jednostki 2{{=}}Szablon:Strona|numer jednostki{{=}}2}}}} → {{Tt|{{#invoke:Pudełko|Nazwa przestrzeni nazw 2|nazwa przestrzeni nazw i=|nazwa jednostki 2=Szablon:Strona|numer jednostki=2}}}} * {{Code|{{m|Pudełko|Nazwa przestrzeni nazw 2|Szablon|nazwa przestrzeni nazw{{=}}|nazwa jednostki 2{{=}}Wikibooks:Strona|numer jednostki{{=}}2}}}} → {{Tt|{{#invoke:Pudełko|Nazwa przestrzeni nazw 2|Szablon|nazwa przestrzeni nazw=|nazwa jednostki 2=Wikibooks:Strona|numer jednostki=2}}}} Powyżej dla przykładu podano parametry nie w rodzicu w szablonie, tylko w dziecku, jeśli chodzi o parametry nazw przestrzeni nazw i nazw jednostek, ale ich się za to nie powinno podawać w tych ramach, tylko w szablonach, w których wywoływane są te ramki pudełek {{Code|{{m|Pudełko}}}}, ale tak tutaj tak zrobiono by było najłatwiej sprawdzić działanie tego typu funkcji. Analogicznie możemy podawać parametry typu jednostki, np.: wywołaniu modułowym {{Code|{{m|Pudełko|Nazwa przestrzeni nazw 2|typ jednostki 2{{=}}Podręcznik|nazwa jednostki 2{{=}}Szablon:Strona|numer jednostki{{=}}2}}}} (ale wtedy jest brana przestrzeń nazw z nazwy jednostki), ale o tym więcej w rozdziałach {{Code|{{sr|#p["Typ jednostki 2"](frame,i)|p=Pudełko}}}} w „{{sr|#Funkcje typu jednostki|p=Pudełko}}”, on definiuje przestrzenie przedmiotowe, ale można użyć parametru dyskusji typu jednostki z wartością niepustą, wtedy wyświetli się nazwa przestrzeni nazw dyskusji. Jeżeli typ jednostki wskazuje na przestrzeń nazw główną, wtedy się liczą parametry nazw jednostek. Również parametry typu jednostki nie powinno się podawać w dziecku w ramce, tylko w rodzicu w szablonie jako parametry, w którym ta ramka jest wywoływana, ale tutaj podano jedynie dla przykładu, jak najłatwiej sprawdzić działanie tych parametrów tej funkcji. Najpierw w funkcji nagłówku brane są parametry nazw przestrzeni nazw, a jeżeli ich nie ma, to parametry typu jednostki, a jeżeli nie ma lub parametry przestrzenne wskazują na przestrzeń główną, i nie ma nazwy jednostki, to generowane są nazwy tej funkcji na podstawie aktualnej strony. === {{Code|p["Nazwa przedmiotowej przestrzeni nazw 2"](frame,...)}} === Funkcja pisze przedmiotową nazwę przestrzeni nazw jakikolwiek nazwy przestrzeni nazw (tzn. nazwę przedmiotową nazwy przestrzenie nazw, czyli nie dyskusji, zamieniana jest na nią samą, czyli identyfikator przestrzeni się nie zmienia, a dyskusji, nie przedmiotową, przekształca się na przedmiotową jej odpowiadającą, czyli w tym przypadku identyfikator przestrzeni zmniejsza się o numer mniej), według, i nie zawsze tylko, podanej w zmiennej {{Code|nazwa przestrzeni nazw}} dla pozycja bazowej w podanych parametrach szablonu rodzicu ramki dziecka, lub dla innej pozycji należy parametr podawać w formie {{Code|nazwa przestrzeni nazw 1}}, {{Code|nazwa przestrzeni nazw 2}}, {{Code|nazwa przestrzeni nazw 3}},..., lub te parametry można podać w postaci ogólnej {{Code|nazwa przestrzeni nazw i}}. W tej funkcji trzeba też podawać parametry nazwy jednostek {{Code|nazwa jednostki}}, {{Code|nazwa jednostki 1}}, {{Code|nazwa jednostki 2}}, {{Code|nazwa jednostki 3}},... Parametry podaje się w parametrach rodzica wywołania tej funkcji {{Code|{{m|Pudełko|Nazwa przedmiotowej przestrzeni nazw 2}}}} (ale ich nie trzeba podawać w dziecku, ale można) i w parametrach dziecka, jeśli chodzi o zmienną {{Code|numer jednostki}}, czyli np.: {{Code|{{m|Pudełko|Nazwa przedmiotowej przestrzeni nazw 2|numer jednostki{{=}}<jakaś liczba całkowita dodatnia>}}}}. Te parametry przestrzenne zamiast w rodzicu w szablonie można podać w ramce dziecka, wtedy parametry dziecka mają pierwszeństwo. Przestrzeń nazw z parametrów nazw przestrzennych po przekształceniu na przedmiotową może odpowiadać wartości przestrzeni głównej, to wtedy odpowiednia przestrzeń nazw z parametru nazwy jednostki się liczy w tej funkcji, wtedy jest liczona nazwa przestrzeni nazw z tego parametru. Gdy parametry przestrzenne lub typ jednostki w drugim podejściu nie wskazują na przestrzeń główną, to wtedy działanie tej funkcji jest podobne do {{Code|{{sr|#p["Nazwa przedmiotowej przestrzeni nazw"](frame,...)|p=Pudełko}}}}. Definicja skrótowa funkcji: <syntaxhighlight lang="lua"> p["Nazwa przedmiotowej przestrzeni nazw 2"]=function(frame,czy_uwzglednic_alternatywna_nazwe,i)...end; </syntaxhighlight> Wtedy ciało funkcji tej, czyli jego definicja w środku, jest: <syntaxhighlight lang="lua"> local pudelko_pomocne_modul=require("Module:Pudełko/Pomocne"); return pudelko_pomocne_modul.Nazwa_przestrzeni_nazw_przedmiotowa_dyskusji_2(frame,czy_uwzglednic_alternatywna_nazwe,i,"przedmiotowa"); </syntaxhighlight> Parametry funkcji: * {{Code|frame}} - tablica ramki tablicy transportu, * {{Code|czy_uwzglednic_alternatywna_nazwe}} - czy ma uwzględniać nazwę przestrzeni nazw domyślną szablonu, dostępne wartości: {{Code|false}}, w której nazwa domyślna nie jest uwzględniana wtedy, oraz {{Code|nil}} i {{Code|true}}, które oznaczają to samo, w tym jeżeli ona jest uwzględniana, wtedy jest brany parametr pierwszy dziecka, który musi istnieć przy takiej wartości tego parametru, tzn. {{Code|{{m|Pudełko|Nazwa przedmiotowej przestrzeni nazw 2|Szablon}}}}, a nazwa uzyskana nazwy przestrzeni nazw jest w takim przypadku błędna, a jeżeli nazwa domyślna jest błędna, czyli {{Code|{{m|Pudełko|Nazwa przedmiotowej przestrzeni nazw 2|Moja przestrzeń}}}}, wtedy funkcja zwraca stan błędu {{Code|(błąd)}}. * {{Code|i}} - numer zmiennej nazwy przestrzeni nazw. Funkcja wykorzystuje {{Code|{{sr|#p.Nazwa_przestrzeni_nazw_przedmiotowa_dyskusji_2(frame,...)|p=Pudełko/Pomocne}}}} do wyznaczania ogólnego nazwy przestrzeni nazw dla pozycji bazowej i numerkowej, tzn. dla pozycji: jeden, dwa, trzy,..., itd, i ich ogólnej. Parametr ramki tablicy transportu rodzica szablonu: * {{Code|nazwa przestrzeni nazw}}, {{Code|nazwa przestrzeni nazw 1}}, {{Code|nazwa przestrzeni nazw 2}}, {{Code|nazwa przestrzeni nazw 3}},..., {{Code|nazwa przestrzeni nazw i}} - nazwy przestrzeni nazw dla pozycji bazowej oraz zwykłej i ogólnej numerkowej, * {{Code|nazwa jednostki}}, {{Code|nazwa jednostki 1}}, {{Code|nazwa jednostki 2}}, {{Code|nazwa jednostki 3}},... - nazwy jednostek dla pozycji bazowej i numerkowej, * {{Code|typ jednostki}}, {{Code|typ jednostki 1}}, {{Code|typ jednostki 2}}, {{Code|typ jednostki 3}},..., {{Code|typ jednostki i}} - typy jednostek, którym odpowiadają pewne przestrzenie przedmiotowe, dla pozycji bazowej, numerkowej i ogólnej. Parametry ramki tablicy transportu dziecka: * Parametry dziecka są takie same jak rodzica dla funkcji pudełkowej plus tu wymienione, * {{Code|numer jednostki}} - jak parametr {{Code|i}} nie został ustawiony, to wtedy liczy się ta zmienna. Przykłady: <syntaxhighlight lang="mediawiki"> {{Nazwa szablonu|nazwa przestrzeni nazw=Wikibooks|nazwa przestrzeni nazw 1=Szablon|nazwa przestrzeni nazw i=|nazwa jednostki 2=Dyskusja Wikibooks:Strona}} </syntaxhighlight> W dziecku powiedzmy jest wywołanie, i szukamy nazwy przestrzeni nazw o numerze dwa, która została podana, ale istnieje za to jej wersji ogólna {{Code|nazwa przestrzeni nazw i}} i domyślna {{Code|nazwa przestrzeni nazw}}, ale wtedy dla tego numerkowego liczy się to ogólne z {{Code| i}}, a ponieważ ta nazwa jest pusta, więc będziemy liczyli nazwę przestrzeni nazw z {{Code|nazwa jednostki 2}}: <syntaxhighlight lang="mediawiki"> {{#invoke:Pudełko|Nazwa przedmiotowej przestrzeni nazw 2|numer jednostki=2}} </syntaxhighlight> Na podstawie powyższego przykładu otrzymamy wynik o schemacie, nie wyniku, bo tam nie ma zmiennej {{Code|nazwa przestrzeni nazw 1}}, ale jest {{Code|nazwa przestrzeni nazw i}}: <syntaxhighlight lang="mediawiki"> <!-- Ale nie "nazwa przestrzeni nazw 2", bo jej nie ma, ale za to istnieje "nazwa przestrzeni nazw i"; --> <!-- nazwa przestrzeni nazw 2=nazwa przestrzeni nazw i="", a nazwa jednostki 2="Dyskusja Wikibooks:Strona"; --> <!-- Czyli wynik: --> Wikibooks <!-- Widzimy, że wygenerowała się nazwa przestrzeni nazw, którą jest przestrzeń nieprogramowa, ale projektu, wychodząca z nazwy jednostek w tym przypadku z "nazwa jednostki 2"; --> </syntaxhighlight> Nie jest brana w tym powyższym przykładzie zmienna {{Code|nazwa przestrzeni nazw}}, bo jej nie ma, ale za to jest {{Code|nazwa przestrzeni nazw i}}, bo ona występuje jako parametr domyślny ogólny dla parametrów numerkowych. Tytaj jest używana jest zmienna {{Code|nazwa jednostki 2}} do wygenerowania ostatecznego wyniku, bo jak można zauważyć, parametry przestrzenne wskazują na przestrzeń główną, a nazwy jednostek już nie. Przykłady w wikikodzie: * {{Code|{{m|Pudełko|Nazwa przedmiotowej przestrzeni nazw 2|numer jednostki{{=}}2}}}} → {{Tt|{{#invoke:Pudełko|Nazwa przedmiotowej przestrzeni nazw 2|numer jednostki=2}}}} * {{Code|{{m|Pudełko|Nazwa przedmiotowej przestrzeni nazw 2|Dyskusja szablonu|nazwa przestrzeni nazw i{{=}}Moja przestrzeń|numer jednostki{{=}}2}}}} → {{Tt|{{#invoke:Pudełko|Nazwa przedmiotowej przestrzeni nazw 2|Dyskusja szablonu|nazwa przestrzeni nazw i=Moja przestrzeń|numer jednostki=2}}}} * {{Code|{{m|Pudełko|Nazwa przedmiotowej przestrzeni nazw 2|nazwa przestrzeni nazw 2{{=}}Dyskusja|nazwa jednostki 2{{=}}Dyskusja szablonu:Strona|numer jednostki{{=}}2}}}} → {{Tt|{{#invoke:Pudełko|Nazwa przedmiotowej przestrzeni nazw 2|nazwa przestrzeni nazw 2=Dyskusja|nazwa jednostki 2=Dyskusja szablonu:Strona|numer jednostki=2}}}} * {{Code|{{m|Pudełko|Nazwa przedmiotowej przestrzeni nazw 2|nazwa przestrzeni nazw i{{=}}Dyskusja|nazwa jednostki 2{{=}}Dyskusja szablonu:Strona|numer jednostki{{=}}2}}}} → {{Tt|{{#invoke:Pudełko|Nazwa przedmiotowej przestrzeni nazw 2|nazwa przestrzeni nazw i=Dyskusja|nazwa jednostki 2=Dyskusja szablonu:Strona|numer jednostki=2}}}} * {{Code|{{m|Pudełko|Nazwa przedmiotowej przestrzeni nazw 2|Dyskusja szablonu|nazwa przestrzeni nazw{{=}}Dyskusja|nazwa jednostki 2{{=}}Wikibooks:Strona|numer jednostki{{=}}2}}}} → {{Tt|{{#invoke:Pudełko|Nazwa przedmiotowej przestrzeni nazw 2|Dyskusja szablonu|nazwa przestrzeni nazw=Dyskusja|nazwa jednostki 2=Dyskusja Wikibooks:Strona|numer jednostki=2}}}} Powyżej dla przykładu podano parametry nie w rodzicu w szablonie, tylko w dziecku, jeśli chodzi o parametry nazw przestrzeni nazw i nazw jednostek, ale ich się za to nie powinno podawać w tych ramach, tylko w szablonach, w których wywoływane są te ramki pudełek {{Code|{{m|Pudełko}}}}, ale tak tutaj tak zrobiono by było najłatwiej sprawdzić działanie tego typu funkcji. Analogicznie możemy podawać parametry typu jednostki, np.: wywołaniu modułowym {{Code|{{m|Pudełko|Nazwa przedmiotowej przestrzeni nazw 2|typ jednostki 2{{=}}Podręcznik|nazwa jednostki 2{{=}}Dyskusja szablonu:Strona|numer jednostki{{=}}2}}}} (ale wtedy jest brana przestrzeń nazw z nazwy jednostki), ale o tym więcej w rozdziałach {{Code|{{sr|# p["Przedmiotowy typ jednostki 2"](frame,i)|p=Pudełko}}}} w „{{sr|#Funkcje typu jednostki|p=Pudełko}}”, on definiuje przestrzenie przedmiotowe, ale można użyć parametru dyskusji typu jednostki z wartością niepustą, pustą, czy nawet jej nie podamy, wtedy wyświetli się nazwa przestrzeni nazw przedmiotowej. Jeżeli typ jednostki wskazuje na przestrzeń nazw główną, wtedy się liczą parametry nazw jednostek. Również parametry typu jednostki nie powinno się podawać w dziecku w ramce, tylko w rodzicu w szablonie jako parametry, w którym ta ramka jest wywoływana, ale tutaj podano jedynie dla przykładu, jak najłatwiej sprawdzić działanie tych parametrów tej funkcji. Najpierw w funkcji nagłówku brane są parametry nazw przestrzeni nazw, a jeżeli ich nie ma, to parametry typu jednostki, a jeżeli nie ma lub parametry przestrzenne wskazują na przestrzeń główną, i nie ma nazwy jednostki, to generowane są nazwy tej funkcji na podstawie aktualnej strony. === {{Code|p["Nazwa przestrzeni nazw dyskusji 2"](frame,...)}} === Funkcja pisze nazwę przestrzeni nazw dyskusji jakikolwiek nazwy przestrzeni nazw (tzn. nazwę dyskusji nazwy przestrzenie nazw, czyli nie przedmiotowej, zamieniana jest na nią samą, czyli identyfikator przestrzeni się nie zmienia, a przedmiotową, nie dyskusji, przekształca się na dyskusji jej odpowiadającą, czyli w tym przypadku identyfikator przestrzeni zwiększa się o numer więcej), według, i nie zawsze tylko, podanej w zmiennej {{Code|nazwa przestrzeni nazw}} dla pozycja bazowej w podanych parametrach szablonu rodzicu ramki dziecka, lub dla innej pozycji należy parametr podawać w formie {{Code|nazwa przestrzeni nazw 1}}, {{Code|nazwa przestrzeni nazw 2}}, {{Code|nazwa przestrzeni nazw 3}},..., lub te parametry można podać w postaci ogólnej {{Code|nazwa przestrzeni nazw i}}. W tej funkcji trzeba też podawać parametry nazwy jednostek {{Code|nazwa jednostki}}, {{Code|nazwa jednostki 1}}, {{Code|nazwa jednostki 2}}, {{Code|nazwa jednostki 3}},... Parametry podaje się w parametrach rodzica wywołania tej funkcji {{Code|{{m|Pudełko|Nazwa przestrzeni nazw dyskusji 2}}}} (ale ich nie trzeba podawać w dziecku, ale można) i w parametrach dziecka, jeśli chodzi o zmienną {{Code|numer jednostki}}, czyli np.: {{Code|{{m|Pudełko|Nazwa przestrzeni nazw dyskusji 2|numer jednostki{{=}}<jakaś liczba całkowita dodatnia>}}}}. Te parametry przestrzenne zamiast w rodzicu w szablonie można podać w ramce dziecka, wtedy parametry dziecka mają pierwszeństwo. Przestrzeń nazw z parametrów nazw przestrzennych po przekształceniu na przedmiotową może odpowiadać wartości przestrzeni głównej, to wtedy odpowiednia przestrzeń nazw z parametru nazwy jednostki się liczy w tej funkcji, wtedy jest liczona nazwa przestrzeni nazw z tego parametru. Gdy parametry przestrzenne lub typ jednostki w drugim podejściu nie wskazują na przestrzeń główną, to wtedy działanie tej funkcji jest podobne do {{Code|{{sr|#p["Nazwa dyskusji przestrzeni nazw"](frame,...)|p=Pudełko}}}}. Definicja skrótowa funkcji: <syntaxhighlight lang="lua"> p["Nazwa przestrzeni nazw dyskusji 2"]=function(frame,czy_uwzglednic_alternatywna_nazwe,i)...end; </syntaxhighlight> Wtedy ciało funkcji tej, czyli jego definicja w środku, jest: <syntaxhighlight lang="lua"> local pudelko_pomocne_modul=require("Module:Pudełko/Pomocne"); return pudelko_pomocne_modul.Nazwa_przestrzeni_nazw_przedmiotowa_dyskusji_2(frame,czy_uwzglednic_alternatywna_nazwe,i,"dyskusja"); </syntaxhighlight> Parametry funkcji: * {{Code|frame}} - tablica ramki tablicy transportu, * {{Code|czy_uwzglednic_alternatywna_nazwe}} - czy ma uwzględniać nazwę przestrzeni nazw domyślną szablonu, dostępne wartości: {{Code|false}}, w której nazwa domyślna nie jest uwzględniana wtedy, oraz {{Code|nil}} i {{Code|true}}, które oznaczają to samo, w tym jeżeli ona jest uwzględniana, wtedy jest brany parametr pierwszy dziecka, który musi istnieć przy takiej wartości tego parametru, tzn. {{Code|{{m|Pudełko|Nazwa przestrzeni nazw dyskusji 2|Szablon}}}}, a nazwa uzyskana nazwy przestrzeni nazw jest w takim przypadku błędna, a jeżeli nazwa domyślna jest błędna, czyli {{Code|{{m|Pudełko|Nazwa przestrzeni nazw dyskusji 2|Moja przestrzeń}}}}, wtedy funkcja zwraca stan błędu {{Code|(błąd)}}. * {{Code|i}} - numer zmiennej nazwy przestrzeni nazw. Funkcja wykorzystuje {{Code|{{sr|#p.Nazwa_przestrzeni_nazw_przedmiotowa_dyskusji_2(frame,...)|p=Pudełko/Pomocne}}}} do wyznaczania ogólnego nazwy przestrzeni nazw dla pozycji bazowej i numerkowej, tzn. dla pozycji: jeden, dwa, trzy,..., itd, i ich ogólnej. Parametr ramki tablicy transportu rodzica szablonu: * {{Code|nazwa przestrzeni nazw}}, {{Code|nazwa przestrzeni nazw 1}}, {{Code|nazwa przestrzeni nazw 2}}, {{Code|nazwa przestrzeni nazw 3}},..., {{Code|nazwa przestrzeni nazw i}} - nazwy przestrzeni nazw dla pozycji bazowej oraz zwykłej i ogólnej numerkowej, * {{Code|nazwa jednostki}}, {{Code|nazwa jednostki 1}}, {{Code|nazwa jednostki 2}}, {{Code|nazwa jednostki 3}},... - nazwy jednostek dla pozycji bazowej i numerkowej, * {{Code|typ jednostki}}, {{Code|typ jednostki 1}}, {{Code|typ jednostki 2}}, {{Code|typ jednostki 3}},..., {{Code|typ jednostki i}} - typy jednostek, którym odpowiadają pewne przestrzenie przedmiotowe, dla pozycji bazowej, numerkowej i ogólnej. Parametry ramki tablicy transportu dziecka: * Parametry dziecka są takie same jak rodzica dla funkcji pudełkowej plus tu wymienione, * {{Code|numer jednostki}} - jak parametr {{Code|i}} nie został ustawiony, to wtedy liczy się ta zmienna. Przykłady: <syntaxhighlight lang="mediawiki"> {{Nazwa szablonu|nazwa przestrzeni nazw=Wikibooks|nazwa przestrzeni nazw 1=Szablon|nazwa przestrzeni nazw i=|nazwa jednostki 2=Wikibooks:Strona}} </syntaxhighlight> W dziecku powiedzmy jest wywołanie, i szukamy nazwy przestrzeni nazw o numerze dwa, która została podana, ale istnieje za to jej wersji ogólna {{Code|nazwa przestrzeni nazw i}} i domyślna {{Code|nazwa przestrzeni nazw}}, ale wtedy dla tego numerkowego liczy się to ogólne z {{Code| i}}, a ponieważ ta nazwa jest pusta, więc będziemy liczyli nazwę przestrzeni nazw z {{Code|nazwa jednostki 2}}: <syntaxhighlight lang="mediawiki"> {{#invoke:Pudełko|Nazwa przestrzeni nazw dyskusji 2|numer jednostki=2}} </syntaxhighlight> Na podstawie powyższego przykładu otrzymamy wynik o schemacie, nie wyniku, bo tam nie ma zmiennej {{Code|nazwa przestrzeni nazw 1}}, ale jest {{Code|nazwa przestrzeni nazw i}}: <syntaxhighlight lang="mediawiki"> <!-- Ale nie "nazwa przestrzeni nazw 2", bo jej nie ma, ale za to istnieje "nazwa przestrzeni nazw i"; --> <!-- nazwa przestrzeni nazw 2=nazwa przestrzeni nazw i="", a nazwa jednostki 2="Wikibooks:Strona"; --> <!-- Czyli wynik: --> Dyskusja Wikibooks <!-- Widzimy, że wygenerowała się nazwa przestrzeni nazw, którą jest przestrzeń nieprogramowa, ale dyskusji projektu, wychodząca z nazwy jednostek w tym przypadku z "nazwa jednostki 2"; --> </syntaxhighlight> Nie jest brana w tym powyższym przykładzie zmienna {{Code|nazwa przestrzeni nazw}}, bo jej nie ma, ale za to jest {{Code|nazwa przestrzeni nazw i}}, bo ona występuje jako parametr domyślny ogólny dla parametrów numerkowych. Tytaj jest używana jest zmienna {{Code|nazwa jednostki 2}} do wygenerowania ostatecznego wyniku, bo jak można zauważyć, parametry przestrzenne wskazują na przestrzeń główną, a nazwy jednostek już nie. Przykłady w wikikodzie: * {{Code|{{m|Pudełko|Nazwa przestrzeni nazw dyskusji 2|numer jednostki{{=}}2}}}} → {{Tt|{{#invoke:Pudełko|Nazwa przestrzeni nazw dyskusji 2|numer jednostki=2}}}} * {{Code|{{m|Pudełko|Nazwa przestrzeni nazw dyskusji 2|Szablon|nazwa przestrzeni nazw i{{=}}Moja przestrzeń|numer jednostki{{=}}2}}}} → {{Tt|{{#invoke:Pudełko|Nazwa przestrzeni nazw dyskusji 2|Szablon|nazwa przestrzeni nazw i=Moja przestrzeń|numer jednostki=2}}}} * {{Code|{{m|Pudełko|Nazwa przestrzeni nazw dyskusji 2|nazwa przestrzeni nazw 2{{=}}|nazwa jednostki 2{{=}}Szablon:Strona|numer jednostki{{=}}2}}}} → {{Tt|{{#invoke:Pudełko|Nazwa przestrzeni nazw dyskusji 2|nazwa przestrzeni nazw 2=|nazwa jednostki 2=Szablon:Strona|numer jednostki=2}}}} * {{Code|{{m|Pudełko|Nazwa przestrzeni nazw dyskusji 2|nazwa przestrzeni nazw i{{=}}|nazwa jednostki 2{{=}}Szablon:Strona|numer jednostki{{=}}2}}}} → {{Tt|{{#invoke:Pudełko|Nazwa przestrzeni nazw dyskusji 2|nazwa przestrzeni nazw i=|nazwa jednostki 2=Szablon:Strona|numer jednostki=2}}}} * {{Code|{{m|Pudełko|Nazwa przestrzeni nazw dyskusji 2|Szablon|nazwa przestrzeni nazw{{=}}|nazwa jednostki 2{{=}}Wikibooks:Strona|numer jednostki{{=}}2}}}} → {{Tt|{{#invoke:Pudełko|Nazwa przestrzeni nazw dyskusji 2|Szablon|nazwa przestrzeni nazw=|nazwa jednostki 2=Dyskusja Wikibooks:Strona|numer jednostki=2}}}} Powyżej dla przykładu podano parametry nie w rodzicu w szablonie, tylko w dziecku, jeśli chodzi o parametry nazw przestrzeni nazw i nazw jednostek, ale ich się za to nie powinno podawać w tych ramach, tylko w szablonach, w których wywoływane są te ramki pudełek {{Code|{{m|Pudełko}}}}, ale tak tutaj tak zrobiono by było najłatwiej sprawdzić działanie tego typu funkcji. Analogicznie możemy podawać parametry typu jednostki, np.: wywołaniu modułowym {{Code|{{m|Pudełko|Nazwa przestrzeni nazw dyskusji 2|typ jednostki 2{{=}}Podręcznik|nazwa jednostki 2{{=}}Szablon:Strona|numer jednostki{{=}}2}}}} (ale wtedy jest brana przestrzeń nazw z nazwy jednostki), ale o tym więcej w rozdziałach {{Code|{{sr|# p["Dyskusyjny typ jednostki 2"](frame,i)|p=Pudełko}}}} w „{{sr|#Funkcje typu jednostki|p=Pudełko}}”, one definiują przestrzenie dyskusji, ale można użyć parametru dyskusji typu jednostki z obojętnie jaką wartością niepustą, czy pustą, czy nawet jej nie podamy, wtedy wyświetli się nazwa przestrzeni nazw dyskusji. Jeżeli typ jednostki wskazuje na przestrzeń nazw główną, wtedy się liczą parametry nazw jednostek. Również parametry typu jednostki nie powinno się podawać w dziecku w ramce, tylko w rodzicu w szablonie jako parametry, w którym ta ramka jest wywoływana, ale tutaj podano jedynie dla przykładu, jak najłatwiej sprawdzić działanie tych parametrów tej funkcji. Najpierw w funkcji nagłówku brane są parametry nazw przestrzeni nazw, a jeżeli ich nie ma, to parametry typu jednostki, a jeżeli nie ma lub parametry przestrzenne wskazują na przestrzeń główną, i nie ma nazwy jednostki, to generowane są nazwy tej funkcji na podstawie aktualnej strony. == Funkcje pełnych nazw jednostki == === {{Code|p["Pełna nazwa dyskusji jednostki"](frame,i)}} === === {{Code|p["Pełna nazwa przedmiotowa jednostki"](frame,i)}} === === {{Code|p["Pełna nazwa jednostki"](frame,i)}} === == Funkcje pełnych nazw jednostki drugiej wersji == === {{Code|p["Pełna nazwa dyskusji jednostki 2"](frame,i)}} === === {{Code|p["Pełna nazwa przedmiotowa jednostki 2"](frame,i)}} === === {{Code|p["Pełna nazwa jednostki 2"](frame,i)}} === == Funkcje pełnych nazw jednostki trzeciej wersji == === {{Code|p["Pełna nazwa dyskusji jednostki 3"](frame,i)}} === === {{Code|p["Pełna nazwa przedmiotowa jednostki 3"](frame,i)}} === === {{Code|p["Pełna nazwa jednostki 3"](frame,i)}} === == Funkcje nazw jednostki == === {{Code|p["Nazwa jednostki"](frame,i)}} === == Funkcje nazw jednostki drugiej wersji == === {{Code|p["Nazwa jednostki 2"](frame,i)}} === === {{Code|p["Nazwa przedmiotowa jednostki 2"](frame,i)}} === === {{Code|p["Nazwa dyskusji jednostki 2"](frame,i)}} === == Funkcje nazw przestrzeni nazw trzeciej wersji == === {{Code|p["Nazwa przestrzeni nazw 3"](frame,i)}} === Funkcja pisze nazwę przestrzeni nazw, niezależnie, czy to jest przedmiotowa, czy dyskusji, według, i nie zawsze tylko, podanej w zmiennej {{Code|nazwa przestrzeni nazw}} dla pozycja bazowej w podanych parametrach szablonu rodzicu ramki dziecka, lub dla innej pozycji należy parametr podawać w formie {{Code|nazwa przestrzeni nazw 1}}, {{Code|Nazwa przestrzeni nazw 3}}, {{Code|nazwa przestrzeni nazw 3}},..., lub te parametry można podać w postaci ogólnej {{Code|nazwa przestrzeni nazw i}}. W tej funkcji trzeba też podawać parametry nazwy jednostek {{Code|nazwa jednostki}}, {{Code|nazwa jednostki 1}}, {{Code|nazwa jednostki 2}}, {{Code|nazwa jednostki 3}},... Parametry podaje się w parametrach rodzica wywołania tej funkcji {{Code|{{m|Pudełko|Nazwa przestrzeni nazw 3}}}} (ale ich nie trzeba podawać w dziecku, ale można) i w parametrach dziecka, jeśli chodzi o zmienną {{Code|numer jednostki}}, czyli np.: {{Code|{{m|Pudełko|Nazwa przestrzeni nazw 3|numer jednostki{{=}}<jakaś liczba całkowita dodatnia>}}}}. Te parametry przestrzenne zamiast w rodzicu w szablonie można podać w ramce dziecka, wtedy parametry dziecka mają pierwszeństwo. Przestrzeń nazw z parametrów nazw przestrzennych bazowych (bez numerka) może odpowiadać wartości przestrzeni głównej, to wtedy odpowiednia przestrzeń nazw z parametru nazwy jednostki się nie liczy w tej funkcji, aby się liczyła należy użyć funkcji {{Code|{{sr|#p["Nazwa przestrzeni nazw"](frame,...)|p=Pudełko}}}}. Przestrzeń nazw z parametrów nazw przestrzennych numerkowych może odpowiadać wartości przestrzeni głównej, to wtedy odpowiednia przestrzeń nazw z parametru nazwy jednostki się liczy w tej funkcji, wtedy jest liczona nazwa przestrzeni nazw z tego parametru. Gdy parametry przestrzenne lub typ jednostki w drugim podejściu nie wskazują na przestrzeń główną, to wtedy działanie tej funkcji jest podobne do {{Code|{{sr|#p["Nazwa przestrzeni nazw 2"](frame,...)|p=Pudełko}}}}. Definicja skrótowa funkcji: <syntaxhighlight lang="lua"> p["Nazwa przestrzeni nazw 3"]=function(frame,czy_uwzglednic_alternatywna_nazwe,i)...end; </syntaxhighlight> Wtedy ciało funkcji tej, czyli jego definicja w środku, jest: <syntaxhighlight lang="lua"> -- Jest liczony numer parametru nazwy przestrzeni nazw, domyslnie chodzi tu o numer bazowy parametrów przestrzennych; local numer_jednostki=i or frame.args["numer jednostki"]; local liczba_numeru_jednostki=((numer_jednostki)and(tonumber(numer_jednostki)) or 0); local pudelko_pomocne_modul=require("Module:Pudełko/Pomocne"); -- Liczy nazwę przestrzeni nazw dyskusji na podstawie podanych parametrów; return pudelko_pomocne_modul.Uzyskanie_nazw_jednostki(frame,0,liczba_numeru_jednostki,nil,2); </syntaxhighlight> Parametry funkcji: * {{Code|frame}} - tablica ramki tablicy transportu, * {{Code|czy_uwzglednic_alternatywna_nazwe}} - czy ma uwzględniać nazwę przestrzeni nazw domyślną szablonu, dostępne wartości: {{Code|false}}, w której nazwa domyślna nie jest uwzględniana wtedy, oraz {{Code|nil}} i {{Code|true}}, które oznaczają to samo, w tym jeżeli ona jest uwzględniana, wtedy jest brany parametr pierwszy dziecka, który musi istnieć przy takiej wartości tego parametru, tzn. {{Code|{{m|Pudełko|Nazwa przestrzeni nazw 3|Szablon}}}}, a nazwa uzyskana nazwy przestrzeni nazw jest w takim przypadku błędna, a jeżeli nazwa domyślna jest błędna, czyli {{Code|{{m|Pudełko|Nazwa przestrzeni nazw 3|Moja przestrzeń}}}}, wtedy funkcja zwraca stan błędu {{Code|(błąd)}}. * {{Code|i}} - numer zmiennej nazwy przestrzeni nazw. Funkcja wykorzystuje {{Code|{{sr|#p.Uzyskanie_nazw_jednostki(frame,...)|p=Pudełko/Pomocne}}}} do wyznaczania ogólnego nazwy przestrzeni nazw dla pozycji bazowej i numerkowej, tzn. dla pozycji: jeden, dwa, trzy,..., itd, i ich ogólnej. Parametr ramki tablicy transportu rodzica szablonu: * {{Code|nazwa przestrzeni nazw}}, {{Code|nazwa przestrzeni nazw 1}}, {{Code|Nazwa przestrzeni nazw 3}}, {{Code|nazwa przestrzeni nazw 3}},..., {{Code|nazwa przestrzeni nazw i}} - nazwy przestrzeni nazw dla pozycji bazowej oraz zwykłej i ogólnej numerkowej, * {{Code|nazwa jednostki}}, {{Code|nazwa jednostki 1}}, {{Code|nazwa jednostki 2}}, {{Code|nazwa jednostki 3}},... - nazwy jednostek dla pozycji bazowej i numerkowej, * {{Code|typ jednostki}}, {{Code|typ jednostki 1}}, {{Code|typ jednostki 2}}, {{Code|typ jednostki 3}},..., {{Code|typ jednostki i}} - typy jednostek, którym odpowiadają pewne przestrzenie przedmiotowe, dla pozycji bazowej, numerkowej i ogólnej, ** {{Code|dyskusja typu jednostki}}, {{Code|dyskusja typu jednostki 1}}, {{Code|dyskusja typ jednostki 2}}, {{Code|dyskusja typ jednostki 3}},..., {{Code|dyskusja typ jednostki i}} - czy dany typ jednostki ma przedstawiać, jeśli niepusta, przestrzeń dyskusji dla pozycji bazowej, numerkowej i ogólnej. Parametry ramki tablicy transportu dziecka: * Parametry dziecka są takie same jak rodzica dla funkcji pudełkowej plus tu wymienione, * {{Code|numer jednostki}} - jak parametr {{Code|i}} nie został ustawiony, to wtedy liczy się ta zmienna. Przykłady: <syntaxhighlight lang="mediawiki"> {{Nazwa szablonu 1|nazwa przestrzeni nazw=Wikibooks|nazwa przestrzeni nazw=|nazwa przestrzeni nazw i=|nazwa jednostki=Szablon:Strona}} ---- {{Nazwa szablonu 2|nazwa przestrzeni nazw=Wikibooks|nazwa przestrzeni nazw 1=Szablon|nazwa przestrzeni nazw i=|nazwa jednostki 2=Wikibooks:Strona}} </syntaxhighlight> W dziecku powiedzmy jest wywołanie, i szukamy nazwy przestrzeni nazw o numerze dwa, która została podana, ale istnieje za to jej wersji ogólna {{Code|nazwa przestrzeni nazw i}} i domyślna {{Code|nazwa przestrzeni nazw}}, ale wtedy dla tego numerkowego liczy się to ogólne z {{Code| i}}, a ponieważ ta nazwa jest pusta, więc będziemy liczyli nazwę przestrzeni nazw z {{Code|nazwa jednostki 2}}: <syntaxhighlight lang="mediawiki"> {{#invoke:Pudełko|Nazwa przestrzeni nazw 3}} ---- {{#invoke:Pudełko|Nazwa przestrzeni nazw 3|numer jednostki=2}} </syntaxhighlight> Na podstawie powyższego przykładu otrzymamy wynik o schemacie, nie wyniku, bo tam nie ma zmiennej {{Code|nazwa przestrzeni nazw 1}}, ale jest {{Code|nazwa przestrzeni nazw i}}: <syntaxhighlight lang="mediawiki"> <!-- nazwa przestrzeni nazw=""; --> <!-- Czyli wynik: --> <!-- wynik pusty --> <!-- Widzimy, że wygenerowała się nazwa przestrzeni nazw, którą jest przestrzeń nazw główna, jest ciągiem pustym: ""; --> ---- <!-- Ale nie "Nazwa przestrzeni nazw 2", bo jej nie ma, ale za to istnieje "nazwa przestrzeni nazw i"; --> <!-- nazwa przestrzeni nazw 2=nazwa przestrzeni nazw i="", a nazwa jednostki 2="Wikibooks:Strona"; --> <!-- Czyli wynik: --> Wikibooks <!-- Widzimy, że wygenerowała się nazwa przestrzeni nazw, którą jest przestrzeń nieprogramowa, ale projektu, wychodząca z nazwy jednostek w tym przypadku z "nazwa jednostki 2"; --> </syntaxhighlight> Dla parametrów numerkowych nie jest brana w tym powyższym przykładzie zmienna {{Code|nazwa przestrzeni nazw 2}}, bo jej nie ma, ale za to jest {{Code|nazwa przestrzeni nazw i}}, bo ona występuje jako parametr domyślny ogólny dla parametrów numerkowych. Tytaj jest używana jest zmienna {{Code|nazwa jednostki 2}} do wygenerowania ostatecznego wyniku, bo jak można zauważyć, parametry przestrzenne wskazują na przestrzeń główną, a nazwy jednostek już nie. Dla parametrów bazowych mamy zmienną {{Code|nazwa przestrzeni nazw}}, ona jest pusta, więc to zostanie wziete do ostatecznego wyniku. Przykłady w wikikodzie: * {{Code|{{m|Pudełko|Nazwa przestrzeni nazw 3|nazwa przestrzeni nazw{{=}}|nazwa jednostki{{=}}Wikibooks:Strona}}}} → {{Tt|{{#invoke:Pudełko|Nazwa przestrzeni nazw 3|nazwa przestrzeni nazw=|nazwa jednostki=Wikibooks:Szablon}}}} * {{Code|{{m|Pudełko|Nazwa przestrzeni nazw 3|nazwa przestrzeni nazw 2{{=}}|nazwa jednostki 2{{=}}Wikibooks:Strona|numer jednostki{{=}}2}}}} → {{Tt|{{#invoke:Pudełko|Nazwa przestrzeni nazw 3|nazwa przestrzeni nazw 2=|nazwa jednostki 2=Wikibooks:Szablon|numer jednostki=2}}}} Powyżej dla przykładu podano parametry nie w rodzicu w szablonie, tylko w dziecku, jeśli chodzi o parametry nazw przestrzeni nazw i nazw jednostek, ale ich się za to nie powinno podawać w tych ramach, tylko w szablonach, w których wywoływane są te ramki pudełek {{Code|{{m|Pudełko}}}}, ale tak tutaj tak zrobiono by było najłatwiej sprawdzić działanie tego typu funkcji. Analogicznie możemy podawać parametry typu jednostki, np.: wywołaniu modułowym {{Code|{{m|Pudełko|Nazwa przestrzeni nazw 3|typ jednostki 2{{=}}Podręcznik|nazwa jednostki 2{{=}}Szablon:Strona|numer jednostki{{=}}2}}}} (ale wtedy jest brana przestrzeń nazw z nazwy jednostki), ale o tym więcej w rozdziałach {{Code|{{sr|#p["Typ jednostki 3"](frame,i)|p=Pudełko}}}} w „{{sr|#Funkcje typu jednostki|p=Pudełko}}”, on definiuje przestrzenie przedmiotowe, ale można użyć parametru dyskusji typu jednostki z wartością niepustą, wtedy wyświetli się nazwa przestrzeni nazw dyskusji. Jeżeli typ jednostki bazowy wskazuje na przestrzeń nazw główną, wtedy się nie liczą parametry nazw jednostek, a na numerkowy, wtedy się liczy. Również parametry typu jednostki nie powinno się podawać w dziecku w ramce, tylko w rodzicu w szablonie jako parametry, w którym ta ramka jest wywoływana, ale tutaj podano jedynie dla przykładu, jak najłatwiej sprawdzić działanie tych parametrów tej funkcji. Najpierw w funkcji nagłówku brane są parametry nazw przestrzeni nazw, a jeżeli ich nie ma, to parametry typu jednostki, a jeżeli nie ma lub parametry przestrzenne wskazują na przestrzeń główną, i nie ma nazwy jednostki, to generowane są nazwy tej funkcji na podstawie aktualnej strony. === {{Code|p["Nazwa przedmiotowej przestrzeni nazw 3"](frame,i)}} === Funkcja pisze przedmiotową nazwę przestrzeni nazw jakikolwiek nazwy przestrzeni nazw (tzn. nazwę przedmiotową nazwy przestrzenie nazw, czyli nie dyskusji, zamieniana jest na nią samą, czyli identyfikator przestrzeni się nie zmienia, a dyskusji, nie przedmiotową, przekształca się na przedmiotową jej odpowiadającą, czyli w tym przypadku identyfikator przestrzeni zmniejsza się o numer mniej), według podanej w zmiennej {{Code|nazwa przestrzeni nazw}} dla pozycja bazowej w podanych parametrach szablonu rodzicu ramki dziecka, lub dla innej pozycji należy parametr podawać w formie {{Code|nazwa przestrzeni nazw 1}}, {{Code|nazwa przestrzeni nazw 2}}, {{Code|nazwa przestrzeni nazw 3}},..., lub te parametry można podać w postaci ogólnej {{Code|nazwa przestrzeni nazw i}}. Parametry podaje się w parametrach rodzica wywołania tej funkcji {{Code|{{m|Pudełko|Nazwa przedmiotowej przestrzeni nazw 3}}}} (ale ich nie trzeba podawać w dziecku, ale można) i w parametrach dziecka, jeśli chodzi o zmienną {{Code|numer jednostki}}, czyli np.: {{Code|{{m|Pudełko|Nazwa przedmiotowej przestrzeni nazw 3|numer jednostki{{=}}<jakaś liczba całkowita dodatnia>}}}}. Te parametry przestrzenne zamiast w rodzicu w szablonie można podać w ramce dziecka, wtedy parametry dziecka mają pierwszeństwo. Parametry przestrzenne mogą mogą być podane w postaci przestrzeni przedmiotowej lub dyskusji, ale ta funkcja zawsze ją zamienia na przedmiotową. Przestrzeń nazw z parametrów nazw przestrzennych bazowych (bez numerka) może odpowiadać wartości przestrzeni głównej, to wtedy odpowiednia przestrzeń nazw z parametru nazwy jednostki się nie liczy w tej funkcji, aby się liczyła należy użyć funkcji {{Code|{{sr|#p["Nazwa przedmiotowej przestrzeni nazw"](frame,...)|p=Pudełko}}}}. Przestrzeń nazw z parametrów nazw przestrzennych numerkowych może odpowiadać wartości przestrzeni głównej, to wtedy odpowiednia przestrzeń nazw z parametru nazwy jednostki się liczy w tej funkcji, wtedy jest liczona nazwa przestrzeni nazw z tego parametru. Gdy parametry przestrzenne lub typ jednostki w drugim podejściu nie wskazują na przestrzeń główną, to wtedy działanie tej funkcji jest podobne do {{Code|{{sr|#p["Nazwa przedmiotowej przestrzeni nazw 2"](frame,...)|p=Pudełko}}}}. Definicja skrótowa funkcji: <syntaxhighlight lang="lua"> p["Nazwa przedmiotowej przestrzeni nazw 3"]=function(frame,czy_uwzglednic_alternatywna_nazwe,i)...end; </syntaxhighlight> Wtedy ciało funkcji tej, czyli jego definicja w środku, jest: <syntaxhighlight lang="lua"> -- Jest liczony numer parametru nazwy przestrzeni nazw, domyslnie chodzi tu o numer bazowy parametrów przestrzennych; local numer_jednostki=i or frame.args["numer jednostki"]; local liczba_numeru_jednostki=((numer_jednostki)and(tonumber(numer_jednostki)) or 0); local pudelko_pomocne_modul=require("Module:Pudełko/Pomocne"); -- Liczy nazwę przestrzeni nazw przedmiotową na podstawie podanych parametrów; return pudelko_pomocne_modul.Uzyskanie_nazw_jednostki(frame,1,liczba_numeru_jednostki,nil,1); </syntaxhighlight> Parametry funkcji: * {{Code|frame}} - tablica ramki tablicy transportu, * {{Code|czy_uwzglednic_alternatywna_nazwe}} - czy ma uwzględniać nazwę przestrzeni nazw domyślną szablonu, dostępne wartości: {{Code|false}}, w której nazwa domyślna nie jest uwzględniana wtedy, oraz {{Code|nil}} i {{Code|true}}, które oznaczają to samo, w tym jeżeli ona jest uwzględniana, wtedy jest brany parametr pierwszy dziecka, który musi istnieć przy takiej wartości tego parametru, tzn. {{Code|{{m|Pudełko|Nazwa przedmiotowej przestrzeni nazw 3|Dyskusja szablonu}}}} - ta nazwa domyślna zostanie zamieniona na przedmiotową, a jak ona by była przedmiotowa, to żadnej zamiany by nie było, a nazwa uzyskana z nazwy przestrzeni nazw z parametrów przestrzennych jest w takim przypadku błędna, to w takim razie brany jest ten parametr, a jeżeli ta nazwa domyślna jest błędna, czyli {{Code|{{m|Pudełko|Nazwa przedmiotowej przestrzeni nazw 3|Moja przestrzeń}}}}, wtedy funkcja zwraca stan błędu {{Code|(błąd)}}. * {{Code|i}} - numer zmiennej nazwy przestrzeni nazw. Funkcja wykorzystuje {{Code|{{sr|#p.Uzyskanie_nazw_jednostki(frame,...)|p=Pudełko/Pomocne}}}} do wyznaczania ogólnego nazwy przestrzeni nazw dla pozycji bazowej i numerkowej, tzn. dla pozycji: jeden, dwa, trzy,..., itd, i ich ogólnej. Parametr ramki tablicy transportu rodzica szablonu: * {{Code|nazwa przestrzeni nazw}}, {{Code|nazwa przestrzeni nazw 1}}, {{Code|nazwa przestrzeni nazw 2}}, {{Code|nazwa przestrzeni nazw 3}},..., {{Code|nazwa przestrzeni nazw i}} - nazwy przestrzeni nazw dla pozycji bazowej oraz zwykłej i ogólnej numerkowej, * {{Code|typ jednostki}}, {{Code|typ jednostki 1}}, {{Code|typ jednostki 2}}, {{Code|typ jednostki 3}},..., {{Code|typ jednostki i}} - typy jednostek, którym odpowiadają pewne przestrzenie przedmiotowe, dla pozycji bazowej, numerkowej i ogólnej. Parametry ramki tablicy transportu dziecka: * Parametry dziecka są takie same jak rodzica dla funkcji pudełkowej plus tu wymienione, * {{Code|numer jednostki}} - jak parametr {{Code|i}} nie został ustawiony, to wtedy liczy się ta zmienna. Przykłady: <syntaxhighlight lang="mediawiki"> {{Nazwa szablonu 1|nazwa przestrzeni nazw=Wikibooks|nazwa przestrzeni nazw=|nazwa przestrzeni nazw i=|nazwa jednostki=Dyskusja Wikibooks:Strona}} ---- {{Nazwa szablonu 2|nazwa przestrzeni nazw=Wikibooks|nazwa przestrzeni nazw 1=Szablon|nazwa przestrzeni nazw i=|nazwa jednostki 2=Dyskusja Wikibooks:Strona}} </syntaxhighlight> Kolejno wywołania te są równowaażne: <syntaxhighlight lang="mediawiki"> {{#invoke:Pudełko|Nazwa przedmiotowej przestrzeni nazw 3}} ---- {{#invoke:Pudełko|Nazwa przedmiotowej przestrzeni nazw 3|numer jednostki=2}} </syntaxhighlight> Na podstawie powyższego przykładu otrzymamy wynik o schemacie, nie wyniku, bo tam nie ma zmiennej {{Code|nazwa przestrzeni nazw 1}}, ale jest {{Code|nazwa przestrzeni nazw i}}: <syntaxhighlight lang="mediawiki"> <!-- nazwa przestrzeni nazw=""; --> <!-- Czyli wynik: --> <!-- wynik pusty --> <!-- Widzimy, że wygenerowała się nazwa przestrzeni nazw, którą jest przestrzeń nazw główna, jest ciągiem pustym: ""; --> ---- <!-- Ale nie "Nazwa przestrzeni nazw 2", bo jej nie ma, ale za to istnieje "nazwa przestrzeni nazw i"; --> <!-- nazwa przestrzeni nazw 2=nazwa przestrzeni nazw i="", a nazwa jednostki 2="Dyskusja Wikibooks:Strona"; --> <!-- Czyli wynik: --> Wikibooks <!-- Widzimy, że wygenerowała się nazwa przestrzeni nazw, którą jest przestrzeń nieprogramowa, ale projektu, wychodząca z nazwy jednostek w tym przypadku z "nazwa jednostki 2"; --> </syntaxhighlight> Dla parametrów numerkowych nie jest brana w tym powyższym przykładzie zmienna {{Code|nazwa przestrzeni nazw 2}}, bo jej nie ma, ale za to jest {{Code|nazwa przestrzeni nazw i}}, bo ona występuje jako parametr domyślny ogólny dla parametrów numerkowych. Tytaj jest używana jest zmienna {{Code|nazwa jednostki 2}} do wygenerowania ostatecznego wyniku, bo jak można zauważyć, parametry przestrzenne wskazują na przestrzeń główną, a nazwy jednostek już nie. Dla parametrów bazowych mamy zmienną {{Code|nazwa przestrzeni nazw}}, ona jest pusta, więc to zostanie wziete do ostatecznego wyniku. Przykłady w wikikodzie: * {{Code|{{m|Pudełko|Nazwa przestrzeni nazw 3|nazwa przestrzeni nazw{{=}}|nazwa jednostki{{=}}Dyskusja Wikibooks:Strona}}}} → {{Tt|{{#invoke:Pudełko|Nazwa przestrzeni nazw 3|nazwa przestrzeni nazw=|nazwa jednostki=Dyskusja Wikibooks:Szablon}}}} * {{Code|{{m|Pudełko|Nazwa przestrzeni nazw 3|nazwa przestrzeni nazw 2{{=}}|nazwa jednostki 2{{=}}Dyskusja Wikibooks:Strona|numer jednostki{{=}}2}}}} → {{Tt|{{#invoke:Pudełko|Nazwa przestrzeni nazw 3|nazwa przestrzeni nazw 2=|nazwa jednostki 2=Dyskusja Wikibooks:Szablon|numer jednostki=2}}}} Powyżej dla przykładu podano parametry nie w rodzicu w szablonie, tylko w dziecku, jeśli chodzi o parametry nazw przestrzeni nazw, ale ich się za to nie powinno podawać w tych ramach, tylko w szablonach, w których wywoływane są te ramki pudełek {{Code|{{m|Pudełko}}}}, ale tak tutaj tak zrobiono by było najłatwiej sprawdzić działanie tego typu funkcji. Analogicznie możemy podawać parametry typu jednostki, np.: wywołaniu modułowym {{Code|{{m|Pudełko|Nazwa przedmiotowej przestrzeni nazw 3|typ jednostki 2{{=}}strona szablonu|numer jednostki{{=}}2}}}}, ale o tym więcej w rozdziałach {{Code|{{sr|# p["Przedmiotowy typ jednostki 3"](frame,i)|p=Pudełko}}}} w „{{sr|#Funkcje typu jednostki|p=Pudełko}}”, ale wtedy ta sama nazwa przestrzeni nazw reprezentowana przez {{Parametr|typ jednostki 2|strona szablonu}}, jest zamieniana na to samo, lepiej jest tutaj używać parametrów przestrzennych nazw niż typu jednostki, bo typ jednostki ma taką samą wartość dla przestrzeni przedmiotowej, co dyskusji. Tutaj parametr dyskusji typu jednostki bazowy i numerkowy ogólny, czy szczegółowy, nie gra roli, bo nawet, gdy wygenerujemy nazwę przestrzeni dyskusji za pomoca tego parametru, to i tak otrzymamy na samym końcu jego nazwę przedmiotową. Jeżeli typ jednostki bazowy wskazuje na przestrzeń nazw główną, wtedy się nie liczą parametry nazw jednostek, a na numerkowy, wtedy się liczy. Również parametry typu jednostki nie powinno się podawać w dziecku w ramce, tylko w rodzicu w szablonie jako parametry, w którym ta ramka jest wywoływana, ale tutaj podano jedynie dla przykładu, jak najłatwiej sprawdzić działanie tych parametrów tej funkcji. Najpierw w funkcji nagłówku brane są parametry nazw przestrzeni nazw, a jeżeli ich nie ma, to parametry typu jednostki, a jeżeli nie ma, to generowane są nazwy na podstawie aktualnego modułu. === {{Code|p["Nazwa przestrzeni nazw dyskusji 3"](frame,i)}} === Funkcja pisze nazwę przestrzeni nazw dyskusji jakikolwiek nazwy przestrzeni nazw (tzn. nazwę dyskusji nazwy przestrzenie nazw, czyli nie przedmiotowej, zamieniana jest na nią samą, czyli identyfikator przestrzeni się nie zmienia, a przedmiotową, nie dyskusji, przekształca się na dyskusji jej odpowiadającą, czyli w tym przypadku identyfikator przestrzeni zwiększa się o numer więcej), według, i nie zawsze tylko, podanej w zmiennej {{Code|nazwa przestrzeni nazw}} dla pozycja bazowej w podanych parametrach szablonu rodzicu ramki dziecka, lub dla innej pozycji należy parametr podawać w formie {{Code|nazwa przestrzeni nazw 1}}, {{Code|nazwa przestrzeni nazw 2}}, {{Code|nazwa przestrzeni nazw 3}},..., lub te parametry można podać w postaci ogólnej {{Code|nazwa przestrzeni nazw i}}. W tej funkcji trzeba też podawać parametry nazwy jednostek {{Code|nazwa jednostki}}, {{Code|nazwa jednostki 1}}, {{Code|nazwa jednostki 2}}, {{Code|nazwa jednostki 3}},... Parametry podaje się w parametrach rodzica wywołania tej funkcji {{Code|{{m|Pudełko|Nazwa przestrzeni nazw dyskusji 3}}}} (ale ich nie trzeba podawać w dziecku, ale można) i w parametrach dziecka, jeśli chodzi o zmienną {{Code|numer jednostki}}, czyli np.: {{Code|{{m|Pudełko|Nazwa przestrzeni nazw dyskusji 3|numer jednostki{{=}}<jakaś liczba całkowita dodatnia>}}}}. Te parametry przestrzenne zamiast w rodzicu w szablonie można podać w ramce dziecka, wtedy parametry dziecka mają pierwszeństwo. Przestrzeń nazw z parametrów nazw przestrzennych bazowych (bez numerka) może odpowiadać wartości przestrzeni głównej, to wtedy odpowiednia przestrzeń nazw z parametru nazwy jednostki się nie liczy w tej funkcji, aby się liczyła należy użyć funkcji {{Code|{{sr|#p["Nazwa przestrzeni nazw dyskusji"](frame,...)|p=Pudełko}}}}. Przestrzeń nazw z parametrów nazw przestrzennych numerkowych może odpowiadać wartości przestrzeni głównej, to wtedy odpowiednia przestrzeń nazw z parametru nazwy jednostki się liczy w tej funkcji, wtedy jest liczona nazwa przestrzeni nazw z tego parametru. Gdy parametry przestrzenne lub typ jednostki w drugim podejściu nie wskazują na przestrzeń główną, to wtedy działanie tej funkcji jest podobne do {{Code|{{sr|#p["Nazwa przestrzeni nazw dysskusji 2"](frame,...)|p=Pudełko}}}}. Definicja skrótowa funkcji: <syntaxhighlight lang="lua"> p["Nazwa przestrzeni nazw dyskusji 3"]=function(frame,czy_uwzglednic_alternatywna_nazwe,i)...end; </syntaxhighlight> Wtedy ciało funkcji tej, czyli jego definicja w środku, jest: <syntaxhighlight lang="lua"> -- Jest liczony numer parametru nazwy przestrzeni nazw, domyslnie chodzi tu o numer bazowy parametrów przestrzennych; local numer_jednostki=i or frame.args["numer jednostki"]; local liczba_numeru_jednostki=((numer_jednostki)and(tonumber(numer_jednostki)) or 0); local pudelko_pomocne_modul=require("Module:Pudełko/Pomocne"); -- Liczy nazwę przestrzeni nazw dyskusji na podstawie podanych parametrów; return pudelko_pomocne_modul.Uzyskanie_nazw_jednostki(frame,2,liczba_numeru_jednostki,nil,1); </syntaxhighlight> Parametry funkcji: * {{Code|frame}} - tablica ramki tablicy transportu, * {{Code|czy_uwzglednic_alternatywna_nazwe}} - czy ma uwzględniać nazwę przestrzeni nazw domyślną szablonu, dostępne wartości: {{Code|false}}, w której nazwa domyślna nie jest uwzględniana wtedy, oraz {{Code|nil}} i {{Code|true}}, które oznaczają to samo, w tym jeżeli ona jest uwzględniana, wtedy jest brany parametr pierwszy dziecka, który musi istnieć przy takiej wartości tego parametru, tzn. {{Code|{{m|Pudełko|Nazwa przestrzeni nazw dyskusji 3|Szablon}}}}, a nazwa uzyskana nazwy przestrzeni nazw jest w takim przypadku błędna, a jeżeli nazwa domyślna jest błędna, czyli {{Code|{{m|Pudełko|Nazwa przestrzeni nazw dyskusji 3|Moja przestrzeń}}}}, wtedy funkcja zwraca stan błędu {{Code|(błąd)}}. * {{Code|i}} - numer zmiennej nazwy przestrzeni nazw. Funkcja wykorzystuje {{Code|{{sr|#p.Uzyskanie_nazw_jednostki(frame,...)|p=Pudełko/Pomocne}}}} do wyznaczania ogólnego nazwy przestrzeni nazw dla pozycji bazowej i numerkowej, tzn. dla pozycji: jeden, dwa, trzy,..., itd, i ich ogólnej. Parametr ramki tablicy transportu rodzica szablonu: * {{Code|nazwa przestrzeni nazw}}, {{Code|nazwa przestrzeni nazw 1}}, {{Code|nazwa przestrzeni nazw 2}}, {{Code|nazwa przestrzeni nazw 3}},..., {{Code|nazwa przestrzeni nazw i}} - nazwy przestrzeni nazw dla pozycji bazowej oraz zwykłej i ogólnej numerkowej, * {{Code|nazwa jednostki}}, {{Code|nazwa jednostki 1}}, {{Code|nazwa jednostki 2}}, {{Code|nazwa jednostki 3}},... - nazwy jednostek dla pozycji bazowej i numerkowej, * {{Code|typ jednostki}}, {{Code|typ jednostki 1}}, {{Code|typ jednostki 2}}, {{Code|typ jednostki 3}},..., {{Code|typ jednostki i}} - typy jednostek, którym odpowiadają pewne przestrzenie przedmiotowe, dla pozycji bazowej, numerkowej i ogólnej. Parametry ramki tablicy transportu dziecka: * Parametry dziecka są takie same jak rodzica dla funkcji pudełkowej plus tu wymienione, * {{Code|numer jednostki}} - jak parametr {{Code|i}} nie został ustawiony, to wtedy liczy się ta zmienna. Przykłady: <syntaxhighlight lang="mediawiki"> {{Nazwa szablonu 1|nazwa przestrzeni nazw=Wikibooks|nazwa przestrzeni nazw=|nazwa przestrzeni nazw i=|nazwa jednostki=Szablon:Strona}} ---- {{Nazwa szablonu 2|nazwa przestrzeni nazw=Wikibooks|nazwa przestrzeni nazw 1=Szablon|nazwa przestrzeni nazw i=|nazwa jednostki 2=Wikibooks:Strona}} </syntaxhighlight> W dziecku powiedzmy jest wywołanie, i szukamy nazwy przestrzeni nazw o numerze dwa, która została podana, ale istnieje za to jej wersji ogólna {{Code|nazwa przestrzeni nazw i}} i domyślna {{Code|nazwa przestrzeni nazw}}, ale wtedy dla tego numerkowego liczy się to ogólne z {{Code| i}}, a ponieważ ta nazwa jest pusta, więc będziemy liczyli nazwę przestrzeni nazw z {{Code|nazwa jednostki 2}}: <syntaxhighlight lang="mediawiki"> {{#invoke:Pudełko|Nazwa przestrzeni nazw 3}} ---- {{#invoke:Pudełko|Nazwa przestrzeni nazw 3|numer jednostki=2}} </syntaxhighlight> Na podstawie powyższego przykładu otrzymamy wynik o schemacie, nie wyniku, bo tam nie ma zmiennej {{Code|nazwa przestrzeni nazw 1}}, ale jest {{Code|nazwa przestrzeni nazw i}}: <syntaxhighlight lang="mediawiki"> <!-- nazwa przestrzeni nazw=""; --> <!-- Czyli wynik: --> Dyskusja <!-- Widzimy, że wygenerowała się nazwa przestrzeni nazw, którą jest przestrzeń nazw niegłówna, jest ciągiem niepustym; --> ---- <!-- Ale nie "Nazwa przestrzeni nazw 2", bo jej nie ma, ale za to istnieje "nazwa przestrzeni nazw i"; --> <!-- nazwa przestrzeni nazw 2=nazwa przestrzeni nazw i="", a nazwa jednostki 2="Wikibooks:Strona"; --> <!-- Czyli wynik: --> Dyskusja Wikibooks <!-- Widzimy, że wygenerowała się nazwa przestrzeni nazw, którą jest przestrzeń nieprogramowa, ale projektu, wychodząca z nazwy jednostek w tym przypadku z "nazwa jednostki 2"; --> </syntaxhighlight> Dla parametrów numerkowych nie jest brana w tym powyższym przykładzie zmienna {{Code|nazwa przestrzeni nazw 2}}, bo jej nie ma, ale za to jest {{Code|nazwa przestrzeni nazw i}}, bo ona występuje jako parametr domyślny ogólny dla parametrów numerkowych. Tytaj jest używana jest zmienna {{Code|nazwa jednostki 2}} do wygenerowania ostatecznego wyniku, bo jak można zauważyć, parametry przestrzenne wskazują na przestrzeń główną, a nazwy jednostek już nie. Dla parametrów bazowych mamy zmienną {{Code|nazwa przestrzeni nazw}}, ona jest pusta, więc to zostanie wziete do ostatecznego wyniku. Przykłady w wikikodzie: * {{Code|{{m|Pudełko|Nazwa przestrzeni nazw dyskusji 3|nazwa przestrzeni nazw{{=}}|nazwa jednostki{{=}}Wikibooks:Strona}}}} → {{Tt|{{#invoke:Pudełko|Nazwa przestrzeni nazw dyskusji 3|nazwa przestrzeni nazw=|nazwa jednostki=Wikibooks:Szablon}}}} * {{Code|{{m|Pudełko|Nazwa przestrzeni nazw dyskusji 3|nazwa przestrzeni nazw 2{{=}}|nazwa jednostki 2{{=}}Wikibooks:Strona|numer jednostki{{=}}2}}}} → {{Tt|{{#invoke:Pudełko|Nazwa przestrzeni nazw dyskusji 3|nazwa przestrzeni nazw 2=|nazwa jednostki 2=Wikibooks:Szablon|numer jednostki=2}}}} Powyżej dla przykładu podano parametry nie w rodzicu w szablonie, tylko w dziecku, jeśli chodzi o parametry nazw przestrzeni nazw i nazw jednostek, ale ich się za to nie powinno podawać w tych ramach, tylko w szablonach, w których wywoływane są te ramki pudełek {{Code|{{m|Pudełko}}}}, ale tak tutaj tak zrobiono by było najłatwiej sprawdzić działanie tego typu funkcji. Analogicznie możemy podawać parametry typu jednostki, np.: wywołaniu modułowym {{Code|{{m|Pudełko|Nazwa przestrzeni nazw dyskusji 3|typ jednostki 2{{=}}Podręcznik|nazwa jednostki 2{{=}}Szablon:Strona|numer jednostki{{=}}2}}}} (ale wtedy jest brana przestrzeń nazw z nazwy jednostki), ale o tym więcej w rozdziałach {{Code|{{sr|# p["Dyskusyjny typ jednostki 3"](frame,i)|p=Pudełko}}}} w „{{sr|#Funkcje typu jednostki|p=Pudełko}}”, one definiują przestrzenie dyskusji, ale można użyć parametru dyskusji typu jednostki z obojętnie jaką wartością niepustą, czy pustą, czy nawet jej nie podamy, wtedy wyświetli się nazwa przestrzeni nazw dyskusji. Jeżeli typ jednostki bazowy wskazuje na przestrzeń nazw główną, wtedy się nie liczą parametry nazw jednostek, a na numerkowy, wtedy się liczy. Również parametry typu jednostki nie powinno się podawać w dziecku w ramce, tylko w rodzicu w szablonie jako parametry, w którym ta ramka jest wywoływana, ale tutaj podano jedynie dla przykładu, jak najłatwiej sprawdzić działanie tych parametrów tej funkcji. Najpierw w funkcji nagłówku brane są parametry nazw przestrzeni nazw, a jeżeli ich nie ma, to parametry typu jednostki, a jeżeli nie ma lub parametry przestrzenne wskazują na przestrzeń główną, i nie ma nazwy jednostki, to generowane są nazwy tej funkcji na podstawie aktualnej strony. == Funkcje nazw jednostki trzeciej wersji == === {{Code|p["Nazwa jednostki 3"](frame,i)}} === === {{Code|p["Nazwa przedmiotowa jednostki 3"](frame,i)}} === === {{Code|p["Nazwa dyskusji jednostki 3"](frame,i)}} === == Funkcje typu jednostki == === {{Code|p["Typ jednostki"](frame,i)}} === === {{Code|p["Typ jednostki 2"](frame,i)}} === === {{Code|p["Typ jednostki 3"](frame,i)}} === === Funkcje typu jednostki przedmiotowe === ==== {{Code|p["Przedmiotowy typ jednostki"](frame,i)}} ==== ==== {{Code|p["Przedmiotowy typ jednostki 2"](frame,i)}} ==== ==== {{Code|p["Przedmiotowy typ jednostki 3"](frame,i)}} ==== === Fukcje typu jednostki dyskusji === ==== {{Code|p["Dyskusyjny typ jednostki"](frame,i)}} ==== ==== {{Code|p["Dyskusyjny typ jednostki 2"](frame,i)}} ==== ==== {{Code|p["Dyskusyjny typ jednostki 3"](frame,i)}} ==== == Funkcje chech pudełka == === {{Code|p["Cecha pudełka"](frame)}} === === {{Code|p["Przedmiotowa cecha pudełka"](frame)}} === === {{Code|p["Dyskusyjna cecha pudełka"](frame)}} === == Fukcje ogólnego pudełka == === {{Code|p["Ogólne pudełko"](frame)}} === == Funkcje ogólne == === {{Code|p["Tekst pudełka"](frame)}} === == Funkcje błędów pudełka == === {{Code|p["Błędy pudełka"](frame)}} === === {{Code|p["Przedmiotowe błędy pudełka"](frame)}} === === {{Code|p["Dyskusyjne błędy pudełka"](frame)}} === == Funkcje nazw stron == === {{Code|p["Nazwa strony głównej projektu"](frame,i)}} === === {{Code|p["Nazwa strony głównej dla dzieci projektu"](frame,i)}} === == Funkcje kodów == === {{Code|p["Kod języka"](frame,i)}} === === {{Code|p["Kod projektu"](frame,i)}} === === {{Code|p["Klucz projektu"](frame,i)}} === == Funkcje wiki == === {{Code|p["Inny niż język bieżący wiki"](frame)}} === === {{Code|p["Inne niż lokalne wiki"](frame)}} === === {{Code|p["Inne niż bieżące wiki"](frame)}} === == Funkcje typów parametrów, czy podane je == === {{Code|p["Podano parametry nienazwane"](frame)}} === === {{Code|p["Podano parametry numerowane"](frame)}} === === {{Code|p["Podano parametry nazwane"](frame)}} === == Funkcje kodów tego projektu == === {{Code|p["Kod projektu tego projektu"](frame)}} === === {{Code|p["Kod języka tego projektu"](frame)}} === === {{Code|p["Klucz projektu tego projektu"](frame)}} === == Funkcje stron == === {{Code|p["Strona główna tego projektu"](frame)}} === === {{Code|p["Strona główna dla dzieci tego projektu"](frame)}} === == Funkcje nazw stron drugiej wersji == === {{Code|p["Nazwa strony głównej dla dzieci projektu 2"](frame)}} === === {{Code| p["Nazwa strony głównej projektu 2"](frame)}} === {{BrClear}} <noinclude><!-- -->{{ProstaStronaKoniec}}<!-- -->{{Kategoria|Opisy funkcji, w Lua w Scribunto, w modułach}}<!-- --></noinclude> 4eus41rwt5er26b2g5fyy8qn915biip 540439 540438 2026-04-24T02:46:27Z Persino 2851 /* Funkcje nazw przestrzeni nazw trzeciej wersji */ 540439 wikitext text/x-wiki <noinclude>{{ProstaStronaStart | nagłówek = {{Podrozdział|{{ld2|Pudełko}}|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 pudelko_modul=require("Module:Pudełko"); </syntaxhighlight> dzięki, któremu można wypisywać funkcje należącego do niego. Posługuje się na parametrach pudełkowych {{Parametr|nazwa przestrzeni nazw}} (czy też bez numerka {{Parametr|nazwa przestrzeni nazw i}} dla tego numerowanego) lub te z numerkiem po jednej spacji w nich (ale nie dla tego z końcówką {{Code| i}}) mogą zostać użyte jako parametry szablonu. Moduł {{Code|{{ld2|Pudełko}}}} przedstawia funkcje nazw w oparciu o funkcje nazw {{Code|{{ld2|Nazwy}}}}, generuje on nazwy za pomocą parametrów pudełkowych podanych poniżej. Parametr {{Parametr|nazwa jednostki}} (lub parametr {{Parametr|cel}} dla numerka tego pierwszego, tego alternatywnego), lub te z numerkiem po jednej spacji w nazwie parametru, albo numerowane numerkami {{Code|1}}, {{Code|2}},..., mogą zostać użyte jako parametry szablonu. Parametry określające rodzaj jednostki {{Parametr|typ jednostki}} z {{Parametr|dyskusja typu jednostki}}, itp. w wersjach z numerkiem po jednej spacji w nich mogą zostać użyte jako parametry szablonu. A te tymi numerowanymi liczbami naturalnymi {{Tt|nazwy jednostki}} od jedynki wzwyż poprzez szablon, w którym są one użyte, one też mogą być użyte z dwukropkiem, te numerowane, na samym początku nazwy, wtedy one są traktowane jako pełne nazwy strony, i wtedy one nie zostaną z interpretowane, że do nich trzeba użyć parametr odpowiedni z nazwą przetrzeni nazw z tego numerowanego, czy ogólny, aby utworzyć znów inną pełną nazwę strony dla tego numerka. Zestawienie: * {{Code|nazwa przestrzeni nazw}} i {{Code|nazwa przestrzeni nazw i}} (ogólna nazwa przestrzeni nazw dla wszystkich numerków, i tych numerowanych jednostek) - i to pierwsze z numerkiem, tzn. {{Code|nazwa przestrzeni nazw 1}}, {{Code|nazwa przestrzeni nazw 2}}, ..., * {{Code|nazwa jednostki}} - i te z numerkiem: {{Code|nazwa jednostki 1}}, {{Code|nazwa jednostki 2}}, ..., lub gdy jest zamiast tego parametrem numerowany, {{Code|1}}, {{Code|2}},..., który dla tego pierwszego może być uznany jako: {{Code|cel}} {{=}} {{Code|1}}, * {{Code|typ jednostki}} (parametr bazowy) i {{Code|typ jednostki i}} (parametr domyślny numerkowy) - i te z numerkiem: {{Code|typ jednostki 1}}, {{Code|typ jednostki 2}}, ..., tzn. gdy chcemy określić z jakim typem jednostki mamy do czynienia w zależności do jakiej przestrzeni nazw należy, a w danej, czy jest on np. programowy, czy tylko jest opisem, jak to bywa w szablonach {{Np|Template|link=tak}}, podobnie jest w przypadku {{Np|Module|link=tak}}, czy jak jest w innych przestrzeniach nazw, ** {{Code|dyskusja typu jednostki}} (parametr bazowy) i {{Code|dyskusja typu jednostki i}} (parametr domyślny numerkowy) - i te z numerkiem: {{Code|dyskusja typu jednostki 1}}, {{Code|dyskusja typu jednostki 2}}, ..., gdy chcemy określić wartością niepustą,że chodzi tutaj o typ jednostki. == {{Code|p.CzyNiepoprawnaNazwa(nazwa_jednostki)}} == Funkcja sprawdzajaca, czy jest poprawnie podana nazwa jednostki, czy ma poprawną nazwę. Znakami tymi, z których nie powinna składać się nazwa jest {{Code|<nowiki>{}<>|[]#\n</nowiki>}} i dodatkowo znak {{Code|&#127;}} (kod {{Code|{{Nowiki|&#127;}}}}). Też nie może składać się z trzech znaków tyldy, tzn. {{Code|<nowiki>~~~</nowiki>}}. Również w swojej budowie nie może składać się ze kodów {{Strong|HTML}} literowych o wzorze {{Code|{{Nowiki|&(%a+);}}}}. Natomiast może składać się z {{Code|{{Nowiki|&#(%d+);}}}} i {{Code|{{Nowiki|&#x(%x+);}}}}, ale w pierw te kody muszą być zamienione na normalne znaki. Skrótowa definicja funkcji: <syntaxhighlight lang="lua"> function p.CzyNiepoprawnaNazwa(nazwa_jednostki)...end; </syntaxhighlight> Wtedy ciało funkcji tej, czyli jego definicja w środku, jest: <syntaxhighlight lang="lua"> -- Moduł: "Moduł:Html/dane", służy do ładowania znaku o kodzie HTML "&#127;"; local html_dane_modul=mw.loadData("Module:Html/dane"); return mw.ustring.match(nazwa_jednostki,"[{}<>|%[%]#\n"..html_dane_modul.znak_127.."]+") or mw.ustring.match(nazwa_jednostki,"~~~") or mw.ustring.match(nazwa_jednostki,"&(%a+);"); </syntaxhighlight> Parametry: * {{Code|nazwa_jednostki}} - nazwa jednostki do sprawdzenia. Przykłady: <syntaxhighlight lang="lua"> local pudelko_modul=require("Module:Pudełko"); -- Podana przykładowa niepoprawna nazwa jedostki local nazwa_jednostki="Nazwa pliku [[Nazwa linku w pliku]]"; -- Fukcja zwróci wartość: local czy_poprawna_nazwa=true; local czy_poprawna_nazwa=pudelko_modul.CzyNiepoprawnaNazwa(nazwa_jednostki); </syntaxhighlight> == Funkcje nazw przestrzeni nazw == === {{Code|p["Nazwa przestrzeni nazw"](frame,...)}} === Funkcja pisze nazwę przestrzeni nazw, niezależnie, czy to jest przedmiotowa, czy dyskusji, według podanej w zmiennej {{Code|nazwa przestrzeni nazw}} dla pozycja bazowej w podanych parametrach szablonu rodzicu ramki dziecka, lub dla innej pozycji należy parametr podawać w formie {{Code|nazwa przestrzeni nazw 1}}, {{Code|nazwa przestrzeni nazw 2}}, {{Code|nazwa przestrzeni nazw 3}},..., lub te parametry można podać w postaci ogólnej {{Code|nazwa przestrzeni nazw i}}. Parametry podaje się w parametrach rodzica wywołania tej funkcji {{Code|{{m|Pudełko|Nazwa przestrzeni nazw}}}} (ale ich nie trzeba podawać w dziecku, ale można) i w parametrach dziecka, jeśli chodzi o zmienną {{Code|numer jednostki}}, czyli np.: {{Code|{{m|Pudełko|Nazwa przestrzeni nazw|numer jednostki{{=}}<jakaś liczba całkowita dodatnia>}}}}. Te parametry przestrzenne zamiast w rodzicu w szablonie można podać w ramce dziecka, wtedy parametry dziecka mają pierwszeństwo. Przestrzeń nazw z parametrów nazw przestrzennych może odpowiadać wartości przestrzeni głównej, to wtedy odpowiednia przestrzeń nazw z parametru nazwy jednostki się nie liczy w tej funkcji, aby się liczyła należy użyć funkcji {{Code|{{sr|#p["Nazwa przestrzeni nazw 2"](frame,...)|p=Pudełko}}}}. Definicja skrótowa funkcji: <syntaxhighlight lang="lua"> p["Nazwa przestrzeni nazw"]=function(frame,czy_uwzglednic_alternatywna_nazwe,i)...end; </syntaxhighlight> Wtedy ciało funkcji tej, czyli jego definicja w środku, jest: <syntaxhighlight lang="lua"> -- Jest liczony numer parametru nazwy przestrzeni nazw, domyslnie chodzi tu o numer bazowy parametrów przestrzennych; local numer_jednostki=i or frame.args["numer jednostki"]; local liczba_numer_jednostki=((numer_jednostki)and(tonumber(numer_jednostki))or 0); local pudelko_pomocne_modul=require("Module:Pudełko/Pomocne"); -- Liczy nazwę przestrzeni nazw na podstawie podanych parametrów; return pudelko_pomocne_modul.Nazwa_przestrzeni_nazw(frame,0, czy_uwzglednic_alternatywna_nazwe,liczba_numer_jednostki); </syntaxhighlight> Parametry funkcji: * {{Code|frame}} - tablica ramki tablicy transportu, * {{Code|czy_uwzglednic_alternatywna_nazwe}} - czy ma uwzględniać nazwę przestrzeni nazw domyślną szablonu, dostępne wartości: {{Code|false}}, w której nazwa domyślna nie jest uwzględniana wtedy, oraz {{Code|nil}} i {{Code|true}}, które oznaczają to samo, w tym jeżeli ona jest uwzględniana, wtedy jest brany parametr pierwszy dziecka, który musi istnieć przy takiej wartości tego parametru, tzn. {{Code|{{m|Pudełko|Nazwa przestrzeni nazw|Szablon}}}}, a nazwa uzyskana nazwy przestrzeni nazw jest w takim przypadku błędna, a jeżeli nazwa domyślna jest błędna, czyli {{Code|{{m|Pudełko|Nazwa przestrzeni nazw|Moja przestrzeń}}}}, wtedy funkcja zwraca stan błędu {{Code|(błąd)}}. * {{Code|i}} - numer zmiennej nazwy przestrzeni nazw. Funkcja wykorzystuje {{Code|{{sr|#p.Nazwa_przestrzeni_nazw(frame,...)|p=Pudełko/Pomocne}}}} do wyznaczania ogólnego nazwy przestrzeni nazw dla pozycji bazowej i numerkowej, tzn. dla pozycji: jeden, dwa, trzy,..., itd, i ich ogólnej. Parametr ramki tablicy transportu rodzica szablonu: * {{Code|nazwa przestrzeni nazw}}, {{Code|nazwa przestrzeni nazw 1}}, {{Code|nazwa przestrzeni nazw 2}}, {{Code|nazwa przestrzeni nazw 3}},..., {{Code|nazwa przestrzeni nazw i}} - nazwy przestrzeni nazw dla pozycji bazowej oraz zwykłej i ogólnej numerkowej, * {{Code|typ jednostki}}, {{Code|typ jednostki 1}}, {{Code|typ jednostki 2}}, {{Code|typ jednostki 3}},..., {{Code|typ jednostki i}} - typy jednostek, którym odpowiadają pewne przestrzenie przedmiotowe, dla pozycji bazowej, numerkowej i ogólnej, ** {{Code|dyskusja typu jednostki}}, {{Code|dyskusja typu jednostki 1}}, {{Code|dyskusja typ jednostki 2}}, {{Code|dyskusja typ jednostki 3}},..., {{Code|dyskusja typ jednostki i}} - czy dany typ jednostki ma przedstawiać, jeśli niepusta, przestrzeń dyskusji dla pozycji bazowej, numerkowej i ogólnej. Parametry ramki tablicy transportu dziecka: * Parametry dziecka są takie same jak rodzica dla funkcji pudełkowej plus tu wymienione, * {{Code|numer jednostki}} - jak parametr {{Code|i}} nie został ustawiony, to wtedy liczy się ta zmienna. Przykłady: <syntaxhighlight lang="mediawiki"> {{Nazwa szablonu|nazwa przestrzeni nazw=Wikibooks|nazwa przestrzeni nazw 2=Szablon|nazwa przestrzeni nazw i=Moduł}} </syntaxhighlight> W dziecku powiedzmy jest wywołanie, i szukamy nazwy przestrzeni nazw o numerze dwa, która nie została podana, ale istnieje za to jej wersji ogólna {{Code|nazwa przestrzeni nazw i}} i domyślna {{Code|nazwa przestrzeni nazw}}: <syntaxhighlight lang="mediawiki"> {{#invoke:Pudełko|Nazwa przestrzeni nazw|numer jednostki=1}} </syntaxhighlight> Na podstawie powyższego przykładu otrzymamy wynik o schemacie, nie wyniku, bo tam nie ma zmiennej {{Code|nazwa przestrzeni nazw 1}}, ale jest {{Code|nazwa przestrzeni nazw i}}: <syntaxhighlight lang="mediawiki"> <!-- Ale nie "nazwa przestrzeni nazw", bo jej nie ma, ale za to istnieje "nazwa przestrzeni nazw i"; --> <!-- nazwa przestrzeni nazw 2=nazwa przestrzeni nazw i=Moduł; --> <!-- Czyli wynik: --> Moduł <!-- Widzimy, że wygenerowała się nazwa przestrzeni nazw, którą jest przestrzeń programowa, którą również jest "Szablon"; --> </syntaxhighlight> Nie jest brana w tym powyższym przykładzie zmienna {{Code|nazwa przestrzeni nazw}}, bo jej nie ma, ale za to jest {{Code|nazwa przestrzeni nazw i}}, bo ona występuje jako parametr domyślny ogólny dla parametrów numerkowych. Przykłady w wikikodzie: * {{Code|{{m|Pudełko|Nazwa przestrzeni nazw|numer jednostki{{=}}2}}}} → {{Tt|{{#invoke:Pudełko|Nazwa przestrzeni nazw|numer jednostki=2}}}} * {{Code|{{m|Pudełko|Nazwa przestrzeni nazw|Szablon|nazwa przestrzeni nazw i{{=}}Moja przestrzeń|numer jednostki{{=}}2}}}} → {{Tt|{{#invoke:Pudełko|Nazwa przestrzeni nazw|Szablon|nazwa przestrzeni nazw i=Moja przestrzeń|numer jednostki=2}}}} * {{Code|{{m|Pudełko|Nazwa przestrzeni nazw|nazwa przestrzeni nazw 2{{=}}Szablon|numer jednostki{{=}}2}}}} → {{Tt|{{#invoke:Pudełko|Nazwa przestrzeni nazw|nazwa przestrzeni nazw 2=Szablon|numer jednostki=2}}}} * {{Code|{{m|Pudełko|Nazwa przestrzeni nazw|nazwa przestrzeni nazw 2{{=}}Szablon|numer jednostki{{=}}2}}}} → {{Tt|{{#invoke:Pudełko|Nazwa przestrzeni nazw|nazwa przestrzeni nazw i=Szablon|numer jednostki=2}}}} * {{Code|{{m|Pudełko|Nazwa przestrzeni nazw|nazwa przestrzeni nazw{{=}}Szablon|numer jednostki{{=}}2}}}} → {{Tt|{{#invoke:Pudełko|Nazwa przestrzeni nazw|nazwa przestrzeni nazw=Szablon|numer jednostki=2}}}} Powyżej dla przykładu podano parametry nie w rodzicu w szablonie, tylko w dziecku, jeśli chodzi o parametry nazw przestrzeni nazw, ale ich się za to nie powinno podawać w tych ramach, tylko w szablonach, w których wywoływane są te ramki pudełek {{Code|{{m|Pudełko}}}}, ale tak tutaj tak zrobiono by było najłatwiej sprawdzić działanie tego typu funkcji. Analogicznie możemy podawać parametry typu jednostki, np.: wywołaniu modułowym {{Code|{{m|Pudełko|Nazwa przestrzeni nazw|typ jednostki 2{{=}}strona szablonu|numer jednostki{{=}}2}}}}, ale o tym więcej w rozdziałach {{Code|{{sr|# p["Typ jednostki"](frame,i)|p=Pudełko}}}} w „{{sr|#Funkcje typu jednostki|p=Pudełko}}”, on definiuje przestrzenie przedmiotowe, ale można użyć parametru dyskusji typu jednostki z wartością niepustą, wtedy wyświetli się nazwa przestrzeni nazw dyskusji. Również parametry typu jednostki nie powinno się podawać w dziecku w ramce, tylko w rodzicu w szablonie jako parametry, w którym ta ramka jest wywoływana, ale tutaj podano jedynie dla przykładu, jak najłatwiej sprawdzić działanie tych parametrów tej funkcji. Najpierw w funkcji nagłówku brane są parametry nazw przestrzeni nazw, a jeżeli ich nie ma, to parametry typu jednostki, a jeżeli nie ma, to generowane są nazwy na podstawie aktualnego modułu. === {{Code|p["Nazwa przedmiotowej przestrzeni nazw"](frame,...)}} === Funkcja pisze przedmiotową nazwę przestrzeni nazw jakikolwiek nazwy przestrzeni nazw (tzn. nazwę przedmiotową nazwy przestrzenie nazw, czyli nie dyskusji, zamieniana jest na nią samą, czyli identyfikator przestrzeni się nie zmienia, a dyskusji, nie przedmiotową, przekształca się na przedmiotową jej odpowiadającą, czyli w tym przypadku identyfikator przestrzeni zmniejsza się o numer mniej), według podanej w zmiennej {{Code|nazwa przestrzeni nazw}} dla pozycja bazowej w podanych parametrach szablonu rodzicu ramki dziecka, lub dla innej pozycji należy parametr podawać w formie {{Code|nazwa przestrzeni nazw 1}}, {{Code|nazwa przestrzeni nazw 2}}, {{Code|nazwa przestrzeni nazw 3}},..., lub te parametry można podać w postaci ogólnej {{Code|nazwa przestrzeni nazw i}}. Parametry podaje się w parametrach rodzica wywołania tej funkcji {{Code|{{m|Pudełko|Nazwa przedmiotowej przestrzeni nazw}}}} (ale ich nie trzeba podawać w dziecku, ale można) i w parametrach dziecka, jeśli chodzi o zmienną {{Code|numer jednostki}}, czyli np.: {{Code|{{m|Pudełko|Nazwa przedmiotowej przestrzeni nazw|numer jednostki{{=}}<jakaś liczba całkowita dodatnia>}}}}. Te parametry przestrzenne zamiast w rodzicu w szablonie można podać w ramce dziecka, wtedy parametry dziecka mają pierwszeństwo. Parametry przestrzenne mogą mogą być podane w postaci przestrzeni przedmiotowej lub dyskusji, ale ta funkcja zawsze ją zamienia na przedmiotową. Przestrzeń nazw z parametrów nazw przestrzennych może odpowiadać wartości przestrzeni głównej, to wtedy odpowiednia przestrzeń nazw z parametru nazwy jednostki się nie liczy w tej funkcji, aby się liczyła należy użyć funkcji {{Code|{{sr|#p["Nazwa przedmiotowej przestrzeni nazw 2"](frame,...)|p=Pudełko}}}}. Definicja skrótowa funkcji: <syntaxhighlight lang="lua"> p["Nazwa przedmiotowej przestrzeni nazw"]=function(frame,czy_uwzglednic_alternatywna_nazwe,i)...end; </syntaxhighlight> Wtedy ciało funkcji tej, czyli jego definicja w środku, jest: <syntaxhighlight lang="lua"> -- Jest liczony numer parametru nazwy przestrzeni nazw, domyslnie chodzi tu o numer bazowy parametrów przestrzennych; local numer_jednostki=i or frame.args["numer jednostki"]; local liczba_numer_jednostki=((numer_jednostki)and(tonumber(numer_jednostki))or 0); local pudelko_pomocne_modul=require("Module:Pudełko/Pomocne"); -- Liczy nazwę przestrzeni nazw przedmiotową na podstawie podanych parametrów; return pudelko_pomocne_modul.Nazwa_przestrzeni_nazw(frame,1, czy_uwzglednic_alternatywna_nazwe,liczba_numer_jednostki); </syntaxhighlight> Parametry funkcji: * {{Code|frame}} - tablica ramki tablicy transportu, * {{Code|czy_uwzglednic_alternatywna_nazwe}} - czy ma uwzględniać nazwę przestrzeni nazw domyślną szablonu, dostępne wartości: {{Code|false}}, w której nazwa domyślna nie jest uwzględniana wtedy, oraz {{Code|nil}} i {{Code|true}}, które oznaczają to samo, w tym jeżeli ona jest uwzględniana, wtedy jest brany parametr pierwszy dziecka, który musi istnieć przy takiej wartości tego parametru, tzn. {{Code|{{m|Pudełko|Nazwa przedmiotowej przestrzeni nazw|Dyskusja szablonu}}}} - ta nazwa domyślna zostanie zamieniona na przedmiotową, a jak ona by była przedmiotowa, to żadnej zamiany by nie było, a nazwa uzyskana z nazwy przestrzeni nazw z parametrów przestrzennych jest w takim przypadku błędna, to w takim razie brany jest ten parametr, a jeżeli ta nazwa domyślna jest błędna, czyli {{Code|{{m|Pudełko|Nazwa przedmiotowej przestrzeni nazw|Moja przestrzeń}}}}, wtedy funkcja zwraca stan błędu {{Code|(błąd)}}. * {{Code|i}} - numer zmiennej nazwy przestrzeni nazw. Funkcja wykorzystuje {{Code|{{sr|#p.Nazwa_przestrzeni_nazw(frame,...)|p=Pudełko/Pomocne}}}} do wyznaczania ogólnego nazwy przestrzeni nazw dla pozycji bazowej i numerkowej, tzn. dla pozycji: jeden, dwa, trzy,..., itd, i ich ogólnej. Parametr ramki tablicy transportu rodzica szablonu: * {{Code|nazwa przestrzeni nazw}}, {{Code|nazwa przestrzeni nazw 1}}, {{Code|nazwa przestrzeni nazw 2}}, {{Code|nazwa przestrzeni nazw 3}},..., {{Code|nazwa przestrzeni nazw i}} - nazwy przestrzeni nazw dla pozycji bazowej oraz zwykłej i ogólnej numerkowej, * {{Code|typ jednostki}}, {{Code|typ jednostki 1}}, {{Code|typ jednostki 2}}, {{Code|typ jednostki 3}},..., {{Code|typ jednostki i}} - typy jednostek, którym odpowiadają pewne przestrzenie przedmiotowe, dla pozycji bazowej, numerkowej i ogólnej. Parametry ramki tablicy transportu dziecka: * Parametry dziecka są takie same jak rodzica dla funkcji pudełkowej plus tu wymienione, * {{Code|numer jednostki}} - jak parametr {{Code|i}} nie został ustawiony, to wtedy liczy się ta zmienna. Przykłady: <syntaxhighlight lang="mediawiki"> {{Nazwa szablonu|nazwa przestrzeni nazw=Dyskusja Wikibooks|nazwa przestrzeni nazw 2=Dyskusja szablonu|nazwa przestrzeni nazw i=Dyskusja modułu}} </syntaxhighlight> W dziecku powiedzmy jest wywołanie, i szukamy nazwy przestrzeni nazw o numerze dwa, która nie została podana, ale istnieje za to jej wersji ogólna {{Code|nazwa przestrzeni nazw i}} i domyślna {{Code|nazwa przestrzeni nazw}}: <syntaxhighlight lang="mediawiki"> {{#invoke:Pudełko|Nazwa przedmiotowej przestrzeni nazw|numer jednostki=1}} </syntaxhighlight> Na podstawie powyższego przykładu otrzymamy wynik o schemacie, nie wyniku, bo tam nie ma zmiennej {{Code|nazwa przestrzeni nazw 1}}, ale jest {{Code|nazwa przestrzeni nazw i}}: <syntaxhighlight lang="mediawiki"> <!-- Ale nie "nazwa przestrzeni nazw", bo jej nie ma, ale za to istnieje "nazwa przestrzeni nazw i"; --> <!-- nazwa przestrzeni nazw 2=nazwa przestrzeni nazw i=Dyskusja modułu; --> <!-- Czyli wynik: --> Moduł <!-- Widzimy, że wygenerowała się nazwa przestrzeni nazw, którą jest przestrzeń przedmiotowa programowa przestrzeni dyskusji "Dyskusja modułu", którą również jest "Szablon" jego przestrzeni dyskusji "Dyskusja szablonu", a dla ich przestrzeni przedmiotowej, zamiast dyskusji, to samo przekształca się na to samo; --> </syntaxhighlight> Nie jest brana w tym powyższym przykładzie zmienna {{Code|nazwa przestrzeni nazw}}, bo jej nie ma, ale za to jest {{Code|nazwa przestrzeni nazw i}}, bo ona występuje jako parametr domyślny ogólny dla parametrów numerkowych. Przykłady w wikikodzie: * {{Code|{{m|Pudełko|Nazwa przedmiotowej przestrzeni nazw|numer jednostki{{=}}2}}}} → {{Tt|{{#invoke:Pudełko|Nazwa przedmiotowej przestrzeni nazw|numer jednostki=2}}}} * {{Code|{{m|Pudełko|Nazwa przedmiotowej przestrzeni nazw|Dyskusja szablonu|nazwa przestrzeni nazw i{{=}}Moja przestrzeń|numer jednostki{{=}}2}}}} → {{Tt|{{#invoke:Pudełko|Nazwa przedmiotowej przestrzeni nazw|Dyskusja szablonu|nazwa przestrzeni nazw i=Moja przestrzeń|numer jednostki=2}}}} * {{Code|{{m|Pudełko|Nazwa przedmiotowej przestrzeni nazw|nazwa przestrzeni nazw 2{{=}}Dyskusja szablonu|numer jednostki{{=}}2}}}} → {{Tt|{{#invoke:Pudełko|Nazwa przedmiotowej przestrzeni nazw|nazwa przestrzeni nazw 2=Dyskusja szablonu|numer jednostki=2}}}} * {{Code|{{m|Pudełko|Nazwa przedmiotowej przestrzeni nazw|nazwa przestrzeni nazw 2{{=}}Dyskusja szablonu|numer jednostki{{=}}2}}}} → {{Tt|{{#invoke:Pudełko|Nazwa przedmiotowej przestrzeni nazw|nazwa przestrzeni nazw i=Dyskusja szablonu|numer jednostki=2}}}} * {{Code|{{m|Pudełko|Nazwa przedmiotowej przestrzeni nazw|nazwa przestrzeni nazw{{=}}Dyskusja szablonu|numer jednostki{{=}}2}}}} → {{Tt|{{#invoke:Pudełko|Nazwa przedmiotowej przestrzeni nazw|nazwa przestrzeni nazw=Dyskusja szablonu|numer jednostki=2}}}} Powyżej dla przykładu podano parametry nie w rodzicu w szablonie, tylko w dziecku, jeśli chodzi o parametry nazw przestrzeni nazw, ale ich się za to nie powinno podawać w tych ramach, tylko w szablonach, w których wywoływane są te ramki pudełek {{Code|{{m|Pudełko}}}}, ale tak tutaj tak zrobiono by było najłatwiej sprawdzić działanie tego typu funkcji. Analogicznie możemy podawać parametry typu jednostki, np.: wywołaniu modułowym {{Code|{{m|Pudełko|Nazwa przedmiotowej przestrzeni nazw|typ jednostki 2{{=}}strona szablonu|numer jednostki{{=}}2}}}}, ale o tym więcej w rozdziałach {{Code|{{sr|# p["Przedmiotowy typ jednostki"](frame,i)|p=Pudełko}}}} w „{{sr|#Funkcje typu jednostki|p=Pudełko}}”, ale wtedy ta sama nazwa przestrzeni nazw reprezentowana przez {{Parametr|typ jednostki 2|strona szablonu}}, jest zamieniana na to samo, lepiej jest tutaj używać parametrów przestrzennych nazw niż typu jednostki, bo typ jednostki ma taką samą wartość dla przestrzeni przedmiotowej, co dyskusji. Tutaj parametr dyskusji typu jednostki bazowy i numerkowy ogólny, czy szczegółowy, nie gra roli, bo nawet, gdy wygenerujemy nazwę przestrzeni dyskusji za pomoca tego parametru, to i tak otrzymamy na samym końcu jego nazwę przedmiotową. Również parametry typu jednostki nie powinno się podawać w dziecku w ramce, tylko w rodzicu w szablonie jako parametry, w którym ta ramka jest wywoływana, ale tutaj podano jedynie dla przykładu, jak najłatwiej sprawdzić działanie tych parametrów tej funkcji. Najpierw w funkcji nagłówku brane są parametry nazw przestrzeni nazw, a jeżeli ich nie ma, to parametry typu jednostki, a jeżeli nie ma, to generowane są nazwy na podstawie aktualnego modułu. === {{Code|p["Nazwa przestrzeni nazw dyskusji"](frame,...)}} === Funkcja pisze nazwę przestrzeni nazw dyskusji jakikolwiek nazwy przestrzeni nazw (tzn. nazwę przedmiotową nazwy przestrzenie nazw, czyli nie dyskusji, zamieniana jest na dyskusji, czyli identyfikator przestrzeni się zmienia jeden wyżej, a dyskusji, nie przedmiotową, przekształca się na tą samą), według podanej w zmiennej {{Code|nazwa przestrzeni nazw}} dla pozycja bazowej w podanych parametrach szablonu rodzicu ramki dziecka, lub dla innej pozycji należy parametr podawać w formie {{Code|nazwa przestrzeni nazw 1}}, {{Code|nazwa przestrzeni nazw 2}}, {{Code|nazwa przestrzeni nazw 3}},..., lub te parametry można podać w postaci ogólnej {{Code|nazwa przestrzeni nazw i}}. Parametry podaje się w parametrach rodzica wywołania tej funkcji {{Code|{{m|Pudełko|Nazwa przestrzeni nazw dyskusji}}}} (ale ich nie trzeba podawać w dziecku, ale można) i w parametrach dziecka, jeśli chodzi o zmienną {{Code|numer jednostki}}, czyli np.: {{Code|{{m|Pudełko|Nazwa przestrzeni nazw dyskusji|numer jednostki{{=}}<jakaś liczba całkowita dodatnia>}}}}. Te parametry przestrzenne zamiast w rodzicu w szablonie można podać w ramce dziecka, wtedy parametry dziecka mają pierwszeństwo. Parametry przestrzenne mogą mogą być podane w postaci przestrzeni przedmiotowej lub dyskusji, ale ta funkcja zawsze ją zamienia na dyskusji. Przestrzeń nazw z parametrów nazw przestrzennych może odpowiadać wartości przestrzeni głównej, to wtedy odpowiednia przestrzeń nazw z parametru nazwy jednostki się nie liczy w tej funkcji, aby się liczyła należy użyć funkcji {{Code|{{sr|#p["Nazwa przestrzeni nazw dyskusji 2"](frame,...)|p=Pudełko}}}}. Definicja skrótowa funkcji: <syntaxhighlight lang="lua"> p["Nazwa przestrzeni nazw dyskusji"]=function(frame,czy_uwzglednic_alternatywna_nazwe,i)...end; </syntaxhighlight> Wtedy ciało funkcji tej, czyli jego definicja w środku, jest: <syntaxhighlight lang="lua"> -- Jest liczony numer parametru nazwy przestrzeni nazw, domyslnie chodzi tu o numer bazowy parametrów przestrzennych; local numer_jednostki=i or frame.args["numer jednostki"]; local liczba_numer_jednostki=((numer_jednostki)and(tonumber(numer_jednostki))or 0); local pudelko_pomocne_modul=require("Module:Pudełko/Pomocne"); -- Liczy nazwę przestrzeni nazw dyskusji na podstawie podanych parametrów; return pudelko_pomocne_modul.Nazwa_przestrzeni_nazw(frame,2, czy_uwzglednic_alternatywna_nazwe,liczba_numer_jednostki); </syntaxhighlight> Parametry funkcji: * {{Code|frame}} - tablica ramki tablicy transportu, * {{Code|czy_uwzglednic_alternatywna_nazwe}} - czy ma uwzględniać nazwę przestrzeni nazw domyślną szablonu, dostępne wartości: {{Code|false}}, w której nazwa domyślna nie jest uwzględniana wtedy, oraz {{Code|nil}} i {{Code|true}}, które oznaczają to samo, w tym jeżeli ona jest uwzględniana, wtedy jest brany parametr pierwszy dziecka, który musi istnieć przy takiej wartości tego parametru, tzn. {{Code|{{m|Pudełko|Nazwa przestrzeni nazw dyskusji|Szablon}}}} - ta nazwa domyślna zostanie przekształcona na dyskusji, a jeżeli ona by była dyskusji, to nie byłoby żadnego przekształcenia, a nazwa uzyskana nazwy przestrzeni nazw z parametrów przestrzennych jest w takim przypadku błędna, to w takim razie brany jest ten parametr, a jeżeli nazwa domyślna jest błędna, czyli {{Code|{{m|Pudełko|Nazwa przestrzeni nazw dyskusji|Moja przestrzeń}}}}, wtedy funkcja zwraca stan błędu {{Code|(błąd)}}. * {{Code|i}} - numer zmiennej nazwy przestrzeni nazw. Funkcja wykorzystuje {{Code|{{sr|#p.Nazwa_przestrzeni_nazw(frame,...)|p=Pudełko/Pomocne}}}} do wyznaczania ogólnego nazwy przestrzeni nazw dla pozycji bazowej i numerkowej, tzn. dla pozycji: jeden, dwa, trzy,..., itd, i ich ogólnej. Parametr ramki tablicy transportu rodzica szablonu: * {{Code|nazwa przestrzeni nazw}}, {{Code|nazwa przestrzeni nazw 1}}, {{Code|nazwa przestrzeni nazw 2}}, {{Code|nazwa przestrzeni nazw 3}},..., {{Code|nazwa przestrzeni nazw i}} - nazwy przestrzeni nazw dla pozycji bazowej oraz zwykłej i ogólnej numerkowej, * {{Code|typ jednostki}}, {{Code|typ jednostki 1}}, {{Code|typ jednostki 2}}, {{Code|typ jednostki 3}},..., {{Code|typ jednostki i}} - typy jednostek, którym odpowiadają pewne przestrzenie przedmiotowe, dla pozycji bazowej, numerkowej i ogólnej. Parametry ramki tablicy transportu dziecka: * Parametry dziecka są takie same jak rodzica dla funkcji pudełkowej plus tu wymienione, * {{Code|numer jednostki}} - jak parametr {{Code|i}} nie został ustawiony, to wtedy liczy się ta zmienna. Przykłady: <syntaxhighlight lang="mediawiki"> {{Nazwa szablonu|nazwa przestrzeni nazw=Wikibooks|nazwa przestrzeni nazw 2=Szablon|nazwa przestrzeni nazw i=Moduł}} </syntaxhighlight> W dziecku powiedzmy jest wywołanie, i szukamy nazwy przestrzeni nazw o numerze dwa, która nie została podana, ale istnieje za to jej wersji ogólna {{Code|nazwa przestrzeni nazw i}} i domyślna {{Code|nazwa przestrzeni nazw}}: <syntaxhighlight lang="mediawiki"> {{#invoke:Pudełko|Nazwa przestrzeni nazw dyskusji|numer jednostki=1}} </syntaxhighlight> Na podstawie powyższego przykładu otrzymamy wynik o schemacie, nie wyniku, bo tam nie ma zmiennej {{Code|nazwa przestrzeni nazw 1}}, ale jest {{Code|nazwa przestrzeni nazw i}}: <syntaxhighlight lang="mediawiki"> <!-- Ale nie "nazwa przestrzeni nazw", bo jej nie ma, ale za to istnieje "nazwa przestrzeni nazw i"; --> <!-- nazwa przestrzeni nazw 2=nazwa przestrzeni nazw i=Moduł; --> <!-- Czyli wynik: --> Dyskusja modułu <!-- Widzimy, że wygenerowała się nazwa przestrzeni nazw, którą jest przestrzeń dyskusji przestrzeni programowej przestrzeni przedmiotowej "Moduł", którą również jest "Szablon" jego przestrzeni dyskusji "Dyskusja szablonu", a dla ich przestrzeni przedmiotowej, zamiast dyskusji, to przekształca się na dyskusji jej odpowiadającą; --> </syntaxhighlight> Nie jest brana w tym powyższym przykładzie zmienna {{Code|nazwa przestrzeni nazw}}, bo jej nie ma, ale za to jest {{Code|nazwa przestrzeni nazw i}}, bo ona występuje jako parametr domyślny ogólny dla parametrów numerkowych. Przykłady w wikikodzie: * {{Code|{{m|Pudełko|Nazwa przestrzeni nazw dyskusji|numer jednostki{{=}}2}}}} → {{Tt|{{#invoke:Pudełko|Nazwa przestrzeni nazw dyskusji|numer jednostki=2}}}} * {{Code|{{m|Pudełko|Nazwa przestrzeni nazw dyskusji|Szablon|nazwa przestrzeni nazw i{{=}}Moja przestrzeń|numer jednostki{{=}}2}}}} → {{Tt|{{#invoke:Pudełko|Nazwa przestrzeni nazw dyskusji|Szablon|nazwa przestrzeni nazw i=Moja przestrzeń|numer jednostki=2}}}} * {{Code|{{m|Pudełko|Nazwa przestrzeni nazw dyskusji|nazwa przestrzeni nazw 2{{=}}Szablon|numer jednostki{{=}}2}}}} → {{Tt|{{#invoke:Pudełko|Nazwa przestrzeni nazw dyskusji|nazwa przestrzeni nazw 2=Szablon|numer jednostki=2}}}} * {{Code|{{m|Pudełko|Nazwa przestrzeni nazw dyskusji|nazwa przestrzeni nazw 2{{=}}Szablon|numer jednostki{{=}}2}}}} → {{Tt|{{#invoke:Pudełko|Nazwa przestrzeni nazw dyskusji|nazwa przestrzeni nazw i=Szablon|numer jednostki=2}}}} * {{Code|{{m|Pudełko|Nazwa przestrzeni nazw dyskusji|nazwa przestrzeni nazw{{=}}Szablon|numer jednostki{{=}}2}}}} → {{Tt|{{#invoke:Pudełko|Nazwa przestrzeni nazw dyskusji|nazwa przestrzeni nazw=Szablon|numer jednostki=2}}}} Powyżej dla przykładu podano parametry nie w rodzicu w szablonie, tylko w dziecku, jeśli chodzi o parametry nazw przestrzeni nazw, ale ich się za to nie powinno podawać w tych ramach, tylko w szablonach, w których wywoływane są te ramki pudełek {{Code|{{m|Pudełko}}}}, ale tak tutaj tak zrobiono by było najłatwiej sprawdzić działanie tego typu funkcji. Analogicznie możemy podawać parametry typu jednostki, np.: wywołaniu modułowym {{Code|{{m|Pudełko|Nazwa przestrzeni nazw dyskusji|typ jednostki 2{{=}}strona szablonu|numer jednostki{{=}}2}}}}, ale o tym więcej w rozdziałach {{Code|{{sr|# p["Dyskusyjny typ jednostki"](frame,i)|p=Pudełko}}}} w „{{sr|#Funkcje typu jednostki|p=Pudełko}}”, ale wtedy nazwa przestrzeni nazw reprezentowana przez {{Parametr|typ jednostki 2|strona szablonu}}, jest zamieniana na nazwę przestrzeni nazw dyskusji. Parametr dyskusji typu jednostki bazowy lub dla danego numerka ogólny, czy szczegółowy, nie gra roli. Również parametry typu jednostki nie powinno się podawać w dziecku w ramce, tylko w rodzicu w szablonie jako parametry, w którym ta ramka jest wywoływana, ale tutaj podano jedynie dla przykładu, jak najłatwiej sprawdzić działanie tych parametrów tej funkcji. Najpierw w funkcji nagłówku brane są parametry nazw przestrzeni nazw, a jeżeli ich nie ma, to parametry typu jednostki, a jeżeli nie ma, to generowane są nazwy na podstawie aktualnego modułu. == Funkcje nazw przestrzeni nazw drugiej wersji == === {{Code|p["Nazwa przestrzeni nazw 2"](frame,...)}} === Funkcja pisze nazwę przestrzeni nazw, niezależnie, czy to jest przedmiotowa, czy dyskusji, według, i nie zawsze tylko, podanej w zmiennej {{Code|nazwa przestrzeni nazw}} dla pozycja bazowej w podanych parametrach szablonu rodzicu ramki dziecka, lub dla innej pozycji należy parametr podawać w formie {{Code|nazwa przestrzeni nazw 1}}, {{Code|nazwa przestrzeni nazw 2}}, {{Code|nazwa przestrzeni nazw 3}},..., lub te parametry można podać w postaci ogólnej {{Code|nazwa przestrzeni nazw i}}. W tej funkcji trzeba też podawać parametry nazwy jednostek {{Code|nazwa jednostki}}, {{Code|nazwa jednostki 1}}, {{Code|nazwa jednostki 2}}, {{Code|nazwa jednostki 3}},... Parametry podaje się w parametrach rodzica wywołania tej funkcji {{Code|{{m|Pudełko|Nazwa przestrzeni nazw 2}}}} (ale ich nie trzeba podawać w dziecku, ale można) i w parametrach dziecka, jeśli chodzi o zmienną {{Code|numer jednostki}}, czyli np.: {{Code|{{m|Pudełko|Nazwa przestrzeni nazw 2|numer jednostki{{=}}<jakaś liczba całkowita dodatnia>}}}}. Te parametry przestrzenne zamiast w rodzicu w szablonie można podać w ramce dziecka, wtedy parametry dziecka mają pierwszeństwo. Przestrzeń nazw z parametrów nazw przestrzennych może odpowiadać wartości przestrzeni głównej, to wtedy odpowiednia przestrzeń nazw z parametru nazwy jednostki się liczy w tej funkcji, wtedy jest liczona nazwa przestrzeni nazw z tego parametru. Gdy parametry przestrzenne lub typ jednostki w drugim podejściu nie wskazują na przestrzeń główną, to wtedy działanie tej funkcji jest podobne do {{Code|{{sr|#p["Nazwa przestrzeni nazw"](frame,...)|p=Pudełko}}}}. Definicja skrótowa funkcji: <syntaxhighlight lang="lua"> p["Nazwa przestrzeni nazw 2"]=function(frame,czy_uwzglednic_alternatywna_nazwe,i)...end; </syntaxhighlight> Wtedy ciało funkcji tej, czyli jego definicja w środku, jest: <syntaxhighlight lang="lua"> local pudelko_pomocne_modul=require("Module:Pudełko/Pomocne"); -- Liczy nazwę przestrzeni nazw, jeżeli z parametrów przestrzennych przestrzeń wskazuje na główną, to wtedy jest liczona przestrzeń nazw z nazwy jednostki; return pudelko_pomocne_modul.Nazwa_przestrzeni_nazw_2(frame,czy_uwzglednic_alternatywna_nazwe,i) </syntaxhighlight> Parametry funkcji: * {{Code|frame}} - tablica ramki tablicy transportu, * {{Code|czy_uwzglednic_alternatywna_nazwe}} - czy ma uwzględniać nazwę przestrzeni nazw domyślną szablonu, dostępne wartości: {{Code|false}}, w której nazwa domyślna nie jest uwzględniana wtedy, oraz {{Code|nil}} i {{Code|true}}, które oznaczają to samo, w tym jeżeli ona jest uwzględniana, wtedy jest brany parametr pierwszy dziecka, który musi istnieć przy takiej wartości tego parametru, tzn. {{Code|{{m|Pudełko|Nazwa przestrzeni nazw 2|Szablon}}}}, a nazwa uzyskana nazwy przestrzeni nazw jest w takim przypadku błędna, a jeżeli nazwa domyślna jest błędna, czyli {{Code|{{m|Pudełko|Nazwa przestrzeni nazw 2|Moja przestrzeń}}}}, wtedy funkcja zwraca stan błędu {{Code|(błąd)}}. * {{Code|i}} - numer zmiennej nazwy przestrzeni nazw. Funkcja wykorzystuje {{Code|{{sr|#p.Nazwa_przestrzeni_nazw_2(frame,...)|p=Pudełko/Pomocne}}}} do wyznaczania ogólnego nazwy przestrzeni nazw dla pozycji bazowej i numerkowej, tzn. dla pozycji: jeden, dwa, trzy,..., itd, i ich ogólnej. Parametr ramki tablicy transportu rodzica szablonu: * {{Code|nazwa przestrzeni nazw}}, {{Code|nazwa przestrzeni nazw 1}}, {{Code|nazwa przestrzeni nazw 2}}, {{Code|nazwa przestrzeni nazw 3}},..., {{Code|nazwa przestrzeni nazw i}} - nazwy przestrzeni nazw dla pozycji bazowej oraz zwykłej i ogólnej numerkowej, * {{Code|nazwa jednostki}}, {{Code|nazwa jednostki 1}}, {{Code|nazwa jednostki 2}}, {{Code|nazwa jednostki 3}},... - nazwy jednostek dla pozycji bazowej i numerkowej, * {{Code|typ jednostki}}, {{Code|typ jednostki 1}}, {{Code|typ jednostki 2}}, {{Code|typ jednostki 3}},..., {{Code|typ jednostki i}} - typy jednostek, którym odpowiadają pewne przestrzenie przedmiotowe, dla pozycji bazowej, numerkowej i ogólnej, ** {{Code|dyskusja typu jednostki}}, {{Code|dyskusja typu jednostki 1}}, {{Code|dyskusja typ jednostki 2}}, {{Code|dyskusja typ jednostki 3}},..., {{Code|dyskusja typ jednostki i}} - czy dany typ jednostki ma przedstawiać, jeśli niepusta, przestrzeń dyskusji dla pozycji bazowej, numerkowej i ogólnej. Parametry ramki tablicy transportu dziecka: * Parametry dziecka są takie same jak rodzica dla funkcji pudełkowej plus tu wymienione, * {{Code|numer jednostki}} - jak parametr {{Code|i}} nie został ustawiony, to wtedy liczy się ta zmienna. Przykłady: <syntaxhighlight lang="mediawiki"> {{Nazwa szablonu|nazwa przestrzeni nazw=Wikibooks|nazwa przestrzeni nazw 1=Szablon|nazwa przestrzeni nazw i=|nazwa jednostki 2=Wikibooks:Strona}} </syntaxhighlight> W dziecku powiedzmy jest wywołanie, i szukamy nazwy przestrzeni nazw o numerze dwa, która została podana, ale istnieje za to jej wersji ogólna {{Code|nazwa przestrzeni nazw i}} i domyślna {{Code|nazwa przestrzeni nazw}}, ale wtedy dla tego numerkowego liczy się to ogólne z {{Code| i}}, a ponieważ ta nazwa jest pusta, więc będziemy liczyli nazwę przestrzeni nazw z {{Code|nazwa jednostki 2}}: <syntaxhighlight lang="mediawiki"> {{#invoke:Pudełko|Nazwa przestrzeni nazw 2|numer jednostki=2}} </syntaxhighlight> Na podstawie powyższego przykładu otrzymamy wynik o schemacie, nie wyniku, bo tam nie ma zmiennej {{Code|nazwa przestrzeni nazw 1}}, ale jest {{Code|nazwa przestrzeni nazw i}}: <syntaxhighlight lang="mediawiki"> <!-- Ale nie "nazwa przestrzeni nazw 2", bo jej nie ma, ale za to istnieje "nazwa przestrzeni nazw i"; --> <!-- nazwa przestrzeni nazw 2=nazwa przestrzeni nazw i="", a nazwa jednostki 2="Wikibooks:Strona"; --> <!-- Czyli wynik: --> Wikibooks <!-- Widzimy, że wygenerowała się nazwa przestrzeni nazw, którą jest przestrzeń nieprogramowa, ale projektu, wychodząca z nazwy jednostek w tym przypadku z "nazwa jednostki 2"; --> </syntaxhighlight> Nie jest brana w tym powyższym przykładzie zmienna {{Code|nazwa przestrzeni nazw}}, bo jej nie ma, ale za to jest {{Code|nazwa przestrzeni nazw i}}, bo ona występuje jako parametr domyślny ogólny dla parametrów numerkowych. Tytaj jest używana jest zmienna {{Code|nazwa jednostki 2}} do wygenerowania ostatecznego wyniku, bo jak można zauważyć, parametry przestrzenne wskazują na przestrzeń główną, a nazwy jednostek już nie. Przykłady w wikikodzie: * {{Code|{{m|Pudełko|Nazwa przestrzeni nazw 2|numer jednostki{{=}}2}}}} → {{Tt|{{#invoke:Pudełko|Nazwa przestrzeni nazw 2|numer jednostki=2}}}} * {{Code|{{m|Pudełko|Nazwa przestrzeni nazw 2|Szablon|nazwa przestrzeni nazw i{{=}}Moja przestrzeń|numer jednostki{{=}}2}}}} → {{Tt|{{#invoke:Pudełko|Nazwa przestrzeni nazw 2|Szablon|nazwa przestrzeni nazw i=Moja przestrzeń|numer jednostki=2}}}} * {{Code|{{m|Pudełko|Nazwa przestrzeni nazw 2|nazwa przestrzeni nazw 2{{=}}|nazwa jednostki 2{{=}}Szablon:Strona|numer jednostki{{=}}2}}}} → {{Tt|{{#invoke:Pudełko|Nazwa przestrzeni nazw 2|nazwa przestrzeni nazw 2=|nazwa jednostki 2=Szablon:Strona|numer jednostki=2}}}} * {{Code|{{m|Pudełko|Nazwa przestrzeni nazw 2|nazwa przestrzeni nazw i{{=}}|nazwa jednostki 2{{=}}Szablon:Strona|numer jednostki{{=}}2}}}} → {{Tt|{{#invoke:Pudełko|Nazwa przestrzeni nazw 2|nazwa przestrzeni nazw i=|nazwa jednostki 2=Szablon:Strona|numer jednostki=2}}}} * {{Code|{{m|Pudełko|Nazwa przestrzeni nazw 2|Szablon|nazwa przestrzeni nazw{{=}}|nazwa jednostki 2{{=}}Wikibooks:Strona|numer jednostki{{=}}2}}}} → {{Tt|{{#invoke:Pudełko|Nazwa przestrzeni nazw 2|Szablon|nazwa przestrzeni nazw=|nazwa jednostki 2=Wikibooks:Strona|numer jednostki=2}}}} Powyżej dla przykładu podano parametry nie w rodzicu w szablonie, tylko w dziecku, jeśli chodzi o parametry nazw przestrzeni nazw i nazw jednostek, ale ich się za to nie powinno podawać w tych ramach, tylko w szablonach, w których wywoływane są te ramki pudełek {{Code|{{m|Pudełko}}}}, ale tak tutaj tak zrobiono by było najłatwiej sprawdzić działanie tego typu funkcji. Analogicznie możemy podawać parametry typu jednostki, np.: wywołaniu modułowym {{Code|{{m|Pudełko|Nazwa przestrzeni nazw 2|typ jednostki 2{{=}}Podręcznik|nazwa jednostki 2{{=}}Szablon:Strona|numer jednostki{{=}}2}}}} (ale wtedy jest brana przestrzeń nazw z nazwy jednostki), ale o tym więcej w rozdziałach {{Code|{{sr|#p["Typ jednostki 2"](frame,i)|p=Pudełko}}}} w „{{sr|#Funkcje typu jednostki|p=Pudełko}}”, on definiuje przestrzenie przedmiotowe, ale można użyć parametru dyskusji typu jednostki z wartością niepustą, wtedy wyświetli się nazwa przestrzeni nazw dyskusji. Jeżeli typ jednostki wskazuje na przestrzeń nazw główną, wtedy się liczą parametry nazw jednostek. Również parametry typu jednostki nie powinno się podawać w dziecku w ramce, tylko w rodzicu w szablonie jako parametry, w którym ta ramka jest wywoływana, ale tutaj podano jedynie dla przykładu, jak najłatwiej sprawdzić działanie tych parametrów tej funkcji. Najpierw w funkcji nagłówku brane są parametry nazw przestrzeni nazw, a jeżeli ich nie ma, to parametry typu jednostki, a jeżeli nie ma lub parametry przestrzenne wskazują na przestrzeń główną, i nie ma nazwy jednostki, to generowane są nazwy tej funkcji na podstawie aktualnej strony. === {{Code|p["Nazwa przedmiotowej przestrzeni nazw 2"](frame,...)}} === Funkcja pisze przedmiotową nazwę przestrzeni nazw jakikolwiek nazwy przestrzeni nazw (tzn. nazwę przedmiotową nazwy przestrzenie nazw, czyli nie dyskusji, zamieniana jest na nią samą, czyli identyfikator przestrzeni się nie zmienia, a dyskusji, nie przedmiotową, przekształca się na przedmiotową jej odpowiadającą, czyli w tym przypadku identyfikator przestrzeni zmniejsza się o numer mniej), według, i nie zawsze tylko, podanej w zmiennej {{Code|nazwa przestrzeni nazw}} dla pozycja bazowej w podanych parametrach szablonu rodzicu ramki dziecka, lub dla innej pozycji należy parametr podawać w formie {{Code|nazwa przestrzeni nazw 1}}, {{Code|nazwa przestrzeni nazw 2}}, {{Code|nazwa przestrzeni nazw 3}},..., lub te parametry można podać w postaci ogólnej {{Code|nazwa przestrzeni nazw i}}. W tej funkcji trzeba też podawać parametry nazwy jednostek {{Code|nazwa jednostki}}, {{Code|nazwa jednostki 1}}, {{Code|nazwa jednostki 2}}, {{Code|nazwa jednostki 3}},... Parametry podaje się w parametrach rodzica wywołania tej funkcji {{Code|{{m|Pudełko|Nazwa przedmiotowej przestrzeni nazw 2}}}} (ale ich nie trzeba podawać w dziecku, ale można) i w parametrach dziecka, jeśli chodzi o zmienną {{Code|numer jednostki}}, czyli np.: {{Code|{{m|Pudełko|Nazwa przedmiotowej przestrzeni nazw 2|numer jednostki{{=}}<jakaś liczba całkowita dodatnia>}}}}. Te parametry przestrzenne zamiast w rodzicu w szablonie można podać w ramce dziecka, wtedy parametry dziecka mają pierwszeństwo. Przestrzeń nazw z parametrów nazw przestrzennych po przekształceniu na przedmiotową może odpowiadać wartości przestrzeni głównej, to wtedy odpowiednia przestrzeń nazw z parametru nazwy jednostki się liczy w tej funkcji, wtedy jest liczona nazwa przestrzeni nazw z tego parametru. Gdy parametry przestrzenne lub typ jednostki w drugim podejściu nie wskazują na przestrzeń główną, to wtedy działanie tej funkcji jest podobne do {{Code|{{sr|#p["Nazwa przedmiotowej przestrzeni nazw"](frame,...)|p=Pudełko}}}}. Definicja skrótowa funkcji: <syntaxhighlight lang="lua"> p["Nazwa przedmiotowej przestrzeni nazw 2"]=function(frame,czy_uwzglednic_alternatywna_nazwe,i)...end; </syntaxhighlight> Wtedy ciało funkcji tej, czyli jego definicja w środku, jest: <syntaxhighlight lang="lua"> local pudelko_pomocne_modul=require("Module:Pudełko/Pomocne"); return pudelko_pomocne_modul.Nazwa_przestrzeni_nazw_przedmiotowa_dyskusji_2(frame,czy_uwzglednic_alternatywna_nazwe,i,"przedmiotowa"); </syntaxhighlight> Parametry funkcji: * {{Code|frame}} - tablica ramki tablicy transportu, * {{Code|czy_uwzglednic_alternatywna_nazwe}} - czy ma uwzględniać nazwę przestrzeni nazw domyślną szablonu, dostępne wartości: {{Code|false}}, w której nazwa domyślna nie jest uwzględniana wtedy, oraz {{Code|nil}} i {{Code|true}}, które oznaczają to samo, w tym jeżeli ona jest uwzględniana, wtedy jest brany parametr pierwszy dziecka, który musi istnieć przy takiej wartości tego parametru, tzn. {{Code|{{m|Pudełko|Nazwa przedmiotowej przestrzeni nazw 2|Szablon}}}}, a nazwa uzyskana nazwy przestrzeni nazw jest w takim przypadku błędna, a jeżeli nazwa domyślna jest błędna, czyli {{Code|{{m|Pudełko|Nazwa przedmiotowej przestrzeni nazw 2|Moja przestrzeń}}}}, wtedy funkcja zwraca stan błędu {{Code|(błąd)}}. * {{Code|i}} - numer zmiennej nazwy przestrzeni nazw. Funkcja wykorzystuje {{Code|{{sr|#p.Nazwa_przestrzeni_nazw_przedmiotowa_dyskusji_2(frame,...)|p=Pudełko/Pomocne}}}} do wyznaczania ogólnego nazwy przestrzeni nazw dla pozycji bazowej i numerkowej, tzn. dla pozycji: jeden, dwa, trzy,..., itd, i ich ogólnej. Parametr ramki tablicy transportu rodzica szablonu: * {{Code|nazwa przestrzeni nazw}}, {{Code|nazwa przestrzeni nazw 1}}, {{Code|nazwa przestrzeni nazw 2}}, {{Code|nazwa przestrzeni nazw 3}},..., {{Code|nazwa przestrzeni nazw i}} - nazwy przestrzeni nazw dla pozycji bazowej oraz zwykłej i ogólnej numerkowej, * {{Code|nazwa jednostki}}, {{Code|nazwa jednostki 1}}, {{Code|nazwa jednostki 2}}, {{Code|nazwa jednostki 3}},... - nazwy jednostek dla pozycji bazowej i numerkowej, * {{Code|typ jednostki}}, {{Code|typ jednostki 1}}, {{Code|typ jednostki 2}}, {{Code|typ jednostki 3}},..., {{Code|typ jednostki i}} - typy jednostek, którym odpowiadają pewne przestrzenie przedmiotowe, dla pozycji bazowej, numerkowej i ogólnej. Parametry ramki tablicy transportu dziecka: * Parametry dziecka są takie same jak rodzica dla funkcji pudełkowej plus tu wymienione, * {{Code|numer jednostki}} - jak parametr {{Code|i}} nie został ustawiony, to wtedy liczy się ta zmienna. Przykłady: <syntaxhighlight lang="mediawiki"> {{Nazwa szablonu|nazwa przestrzeni nazw=Wikibooks|nazwa przestrzeni nazw 1=Szablon|nazwa przestrzeni nazw i=|nazwa jednostki 2=Dyskusja Wikibooks:Strona}} </syntaxhighlight> W dziecku powiedzmy jest wywołanie, i szukamy nazwy przestrzeni nazw o numerze dwa, która została podana, ale istnieje za to jej wersji ogólna {{Code|nazwa przestrzeni nazw i}} i domyślna {{Code|nazwa przestrzeni nazw}}, ale wtedy dla tego numerkowego liczy się to ogólne z {{Code| i}}, a ponieważ ta nazwa jest pusta, więc będziemy liczyli nazwę przestrzeni nazw z {{Code|nazwa jednostki 2}}: <syntaxhighlight lang="mediawiki"> {{#invoke:Pudełko|Nazwa przedmiotowej przestrzeni nazw 2|numer jednostki=2}} </syntaxhighlight> Na podstawie powyższego przykładu otrzymamy wynik o schemacie, nie wyniku, bo tam nie ma zmiennej {{Code|nazwa przestrzeni nazw 1}}, ale jest {{Code|nazwa przestrzeni nazw i}}: <syntaxhighlight lang="mediawiki"> <!-- Ale nie "nazwa przestrzeni nazw 2", bo jej nie ma, ale za to istnieje "nazwa przestrzeni nazw i"; --> <!-- nazwa przestrzeni nazw 2=nazwa przestrzeni nazw i="", a nazwa jednostki 2="Dyskusja Wikibooks:Strona"; --> <!-- Czyli wynik: --> Wikibooks <!-- Widzimy, że wygenerowała się nazwa przestrzeni nazw, którą jest przestrzeń nieprogramowa, ale projektu, wychodząca z nazwy jednostek w tym przypadku z "nazwa jednostki 2"; --> </syntaxhighlight> Nie jest brana w tym powyższym przykładzie zmienna {{Code|nazwa przestrzeni nazw}}, bo jej nie ma, ale za to jest {{Code|nazwa przestrzeni nazw i}}, bo ona występuje jako parametr domyślny ogólny dla parametrów numerkowych. Tytaj jest używana jest zmienna {{Code|nazwa jednostki 2}} do wygenerowania ostatecznego wyniku, bo jak można zauważyć, parametry przestrzenne wskazują na przestrzeń główną, a nazwy jednostek już nie. Przykłady w wikikodzie: * {{Code|{{m|Pudełko|Nazwa przedmiotowej przestrzeni nazw 2|numer jednostki{{=}}2}}}} → {{Tt|{{#invoke:Pudełko|Nazwa przedmiotowej przestrzeni nazw 2|numer jednostki=2}}}} * {{Code|{{m|Pudełko|Nazwa przedmiotowej przestrzeni nazw 2|Dyskusja szablonu|nazwa przestrzeni nazw i{{=}}Moja przestrzeń|numer jednostki{{=}}2}}}} → {{Tt|{{#invoke:Pudełko|Nazwa przedmiotowej przestrzeni nazw 2|Dyskusja szablonu|nazwa przestrzeni nazw i=Moja przestrzeń|numer jednostki=2}}}} * {{Code|{{m|Pudełko|Nazwa przedmiotowej przestrzeni nazw 2|nazwa przestrzeni nazw 2{{=}}Dyskusja|nazwa jednostki 2{{=}}Dyskusja szablonu:Strona|numer jednostki{{=}}2}}}} → {{Tt|{{#invoke:Pudełko|Nazwa przedmiotowej przestrzeni nazw 2|nazwa przestrzeni nazw 2=Dyskusja|nazwa jednostki 2=Dyskusja szablonu:Strona|numer jednostki=2}}}} * {{Code|{{m|Pudełko|Nazwa przedmiotowej przestrzeni nazw 2|nazwa przestrzeni nazw i{{=}}Dyskusja|nazwa jednostki 2{{=}}Dyskusja szablonu:Strona|numer jednostki{{=}}2}}}} → {{Tt|{{#invoke:Pudełko|Nazwa przedmiotowej przestrzeni nazw 2|nazwa przestrzeni nazw i=Dyskusja|nazwa jednostki 2=Dyskusja szablonu:Strona|numer jednostki=2}}}} * {{Code|{{m|Pudełko|Nazwa przedmiotowej przestrzeni nazw 2|Dyskusja szablonu|nazwa przestrzeni nazw{{=}}Dyskusja|nazwa jednostki 2{{=}}Wikibooks:Strona|numer jednostki{{=}}2}}}} → {{Tt|{{#invoke:Pudełko|Nazwa przedmiotowej przestrzeni nazw 2|Dyskusja szablonu|nazwa przestrzeni nazw=Dyskusja|nazwa jednostki 2=Dyskusja Wikibooks:Strona|numer jednostki=2}}}} Powyżej dla przykładu podano parametry nie w rodzicu w szablonie, tylko w dziecku, jeśli chodzi o parametry nazw przestrzeni nazw i nazw jednostek, ale ich się za to nie powinno podawać w tych ramach, tylko w szablonach, w których wywoływane są te ramki pudełek {{Code|{{m|Pudełko}}}}, ale tak tutaj tak zrobiono by było najłatwiej sprawdzić działanie tego typu funkcji. Analogicznie możemy podawać parametry typu jednostki, np.: wywołaniu modułowym {{Code|{{m|Pudełko|Nazwa przedmiotowej przestrzeni nazw 2|typ jednostki 2{{=}}Podręcznik|nazwa jednostki 2{{=}}Dyskusja szablonu:Strona|numer jednostki{{=}}2}}}} (ale wtedy jest brana przestrzeń nazw z nazwy jednostki), ale o tym więcej w rozdziałach {{Code|{{sr|# p["Przedmiotowy typ jednostki 2"](frame,i)|p=Pudełko}}}} w „{{sr|#Funkcje typu jednostki|p=Pudełko}}”, on definiuje przestrzenie przedmiotowe, ale można użyć parametru dyskusji typu jednostki z wartością niepustą, pustą, czy nawet jej nie podamy, wtedy wyświetli się nazwa przestrzeni nazw przedmiotowej. Jeżeli typ jednostki wskazuje na przestrzeń nazw główną, wtedy się liczą parametry nazw jednostek. Również parametry typu jednostki nie powinno się podawać w dziecku w ramce, tylko w rodzicu w szablonie jako parametry, w którym ta ramka jest wywoływana, ale tutaj podano jedynie dla przykładu, jak najłatwiej sprawdzić działanie tych parametrów tej funkcji. Najpierw w funkcji nagłówku brane są parametry nazw przestrzeni nazw, a jeżeli ich nie ma, to parametry typu jednostki, a jeżeli nie ma lub parametry przestrzenne wskazują na przestrzeń główną, i nie ma nazwy jednostki, to generowane są nazwy tej funkcji na podstawie aktualnej strony. === {{Code|p["Nazwa przestrzeni nazw dyskusji 2"](frame,...)}} === Funkcja pisze nazwę przestrzeni nazw dyskusji jakikolwiek nazwy przestrzeni nazw (tzn. nazwę dyskusji nazwy przestrzenie nazw, czyli nie przedmiotowej, zamieniana jest na nią samą, czyli identyfikator przestrzeni się nie zmienia, a przedmiotową, nie dyskusji, przekształca się na dyskusji jej odpowiadającą, czyli w tym przypadku identyfikator przestrzeni zwiększa się o numer więcej), według, i nie zawsze tylko, podanej w zmiennej {{Code|nazwa przestrzeni nazw}} dla pozycja bazowej w podanych parametrach szablonu rodzicu ramki dziecka, lub dla innej pozycji należy parametr podawać w formie {{Code|nazwa przestrzeni nazw 1}}, {{Code|nazwa przestrzeni nazw 2}}, {{Code|nazwa przestrzeni nazw 3}},..., lub te parametry można podać w postaci ogólnej {{Code|nazwa przestrzeni nazw i}}. W tej funkcji trzeba też podawać parametry nazwy jednostek {{Code|nazwa jednostki}}, {{Code|nazwa jednostki 1}}, {{Code|nazwa jednostki 2}}, {{Code|nazwa jednostki 3}},... Parametry podaje się w parametrach rodzica wywołania tej funkcji {{Code|{{m|Pudełko|Nazwa przestrzeni nazw dyskusji 2}}}} (ale ich nie trzeba podawać w dziecku, ale można) i w parametrach dziecka, jeśli chodzi o zmienną {{Code|numer jednostki}}, czyli np.: {{Code|{{m|Pudełko|Nazwa przestrzeni nazw dyskusji 2|numer jednostki{{=}}<jakaś liczba całkowita dodatnia>}}}}. Te parametry przestrzenne zamiast w rodzicu w szablonie można podać w ramce dziecka, wtedy parametry dziecka mają pierwszeństwo. Przestrzeń nazw z parametrów nazw przestrzennych po przekształceniu na przedmiotową może odpowiadać wartości przestrzeni głównej, to wtedy odpowiednia przestrzeń nazw z parametru nazwy jednostki się liczy w tej funkcji, wtedy jest liczona nazwa przestrzeni nazw z tego parametru. Gdy parametry przestrzenne lub typ jednostki w drugim podejściu nie wskazują na przestrzeń główną, to wtedy działanie tej funkcji jest podobne do {{Code|{{sr|#p["Nazwa dyskusji przestrzeni nazw"](frame,...)|p=Pudełko}}}}. Definicja skrótowa funkcji: <syntaxhighlight lang="lua"> p["Nazwa przestrzeni nazw dyskusji 2"]=function(frame,czy_uwzglednic_alternatywna_nazwe,i)...end; </syntaxhighlight> Wtedy ciało funkcji tej, czyli jego definicja w środku, jest: <syntaxhighlight lang="lua"> local pudelko_pomocne_modul=require("Module:Pudełko/Pomocne"); return pudelko_pomocne_modul.Nazwa_przestrzeni_nazw_przedmiotowa_dyskusji_2(frame,czy_uwzglednic_alternatywna_nazwe,i,"dyskusja"); </syntaxhighlight> Parametry funkcji: * {{Code|frame}} - tablica ramki tablicy transportu, * {{Code|czy_uwzglednic_alternatywna_nazwe}} - czy ma uwzględniać nazwę przestrzeni nazw domyślną szablonu, dostępne wartości: {{Code|false}}, w której nazwa domyślna nie jest uwzględniana wtedy, oraz {{Code|nil}} i {{Code|true}}, które oznaczają to samo, w tym jeżeli ona jest uwzględniana, wtedy jest brany parametr pierwszy dziecka, który musi istnieć przy takiej wartości tego parametru, tzn. {{Code|{{m|Pudełko|Nazwa przestrzeni nazw dyskusji 2|Szablon}}}}, a nazwa uzyskana nazwy przestrzeni nazw jest w takim przypadku błędna, a jeżeli nazwa domyślna jest błędna, czyli {{Code|{{m|Pudełko|Nazwa przestrzeni nazw dyskusji 2|Moja przestrzeń}}}}, wtedy funkcja zwraca stan błędu {{Code|(błąd)}}. * {{Code|i}} - numer zmiennej nazwy przestrzeni nazw. Funkcja wykorzystuje {{Code|{{sr|#p.Nazwa_przestrzeni_nazw_przedmiotowa_dyskusji_2(frame,...)|p=Pudełko/Pomocne}}}} do wyznaczania ogólnego nazwy przestrzeni nazw dla pozycji bazowej i numerkowej, tzn. dla pozycji: jeden, dwa, trzy,..., itd, i ich ogólnej. Parametr ramki tablicy transportu rodzica szablonu: * {{Code|nazwa przestrzeni nazw}}, {{Code|nazwa przestrzeni nazw 1}}, {{Code|nazwa przestrzeni nazw 2}}, {{Code|nazwa przestrzeni nazw 3}},..., {{Code|nazwa przestrzeni nazw i}} - nazwy przestrzeni nazw dla pozycji bazowej oraz zwykłej i ogólnej numerkowej, * {{Code|nazwa jednostki}}, {{Code|nazwa jednostki 1}}, {{Code|nazwa jednostki 2}}, {{Code|nazwa jednostki 3}},... - nazwy jednostek dla pozycji bazowej i numerkowej, * {{Code|typ jednostki}}, {{Code|typ jednostki 1}}, {{Code|typ jednostki 2}}, {{Code|typ jednostki 3}},..., {{Code|typ jednostki i}} - typy jednostek, którym odpowiadają pewne przestrzenie przedmiotowe, dla pozycji bazowej, numerkowej i ogólnej. Parametry ramki tablicy transportu dziecka: * Parametry dziecka są takie same jak rodzica dla funkcji pudełkowej plus tu wymienione, * {{Code|numer jednostki}} - jak parametr {{Code|i}} nie został ustawiony, to wtedy liczy się ta zmienna. Przykłady: <syntaxhighlight lang="mediawiki"> {{Nazwa szablonu|nazwa przestrzeni nazw=Wikibooks|nazwa przestrzeni nazw 1=Szablon|nazwa przestrzeni nazw i=|nazwa jednostki 2=Wikibooks:Strona}} </syntaxhighlight> W dziecku powiedzmy jest wywołanie, i szukamy nazwy przestrzeni nazw o numerze dwa, która została podana, ale istnieje za to jej wersji ogólna {{Code|nazwa przestrzeni nazw i}} i domyślna {{Code|nazwa przestrzeni nazw}}, ale wtedy dla tego numerkowego liczy się to ogólne z {{Code| i}}, a ponieważ ta nazwa jest pusta, więc będziemy liczyli nazwę przestrzeni nazw z {{Code|nazwa jednostki 2}}: <syntaxhighlight lang="mediawiki"> {{#invoke:Pudełko|Nazwa przestrzeni nazw dyskusji 2|numer jednostki=2}} </syntaxhighlight> Na podstawie powyższego przykładu otrzymamy wynik o schemacie, nie wyniku, bo tam nie ma zmiennej {{Code|nazwa przestrzeni nazw 1}}, ale jest {{Code|nazwa przestrzeni nazw i}}: <syntaxhighlight lang="mediawiki"> <!-- Ale nie "nazwa przestrzeni nazw 2", bo jej nie ma, ale za to istnieje "nazwa przestrzeni nazw i"; --> <!-- nazwa przestrzeni nazw 2=nazwa przestrzeni nazw i="", a nazwa jednostki 2="Wikibooks:Strona"; --> <!-- Czyli wynik: --> Dyskusja Wikibooks <!-- Widzimy, że wygenerowała się nazwa przestrzeni nazw, którą jest przestrzeń nieprogramowa, ale dyskusji projektu, wychodząca z nazwy jednostek w tym przypadku z "nazwa jednostki 2"; --> </syntaxhighlight> Nie jest brana w tym powyższym przykładzie zmienna {{Code|nazwa przestrzeni nazw}}, bo jej nie ma, ale za to jest {{Code|nazwa przestrzeni nazw i}}, bo ona występuje jako parametr domyślny ogólny dla parametrów numerkowych. Tytaj jest używana jest zmienna {{Code|nazwa jednostki 2}} do wygenerowania ostatecznego wyniku, bo jak można zauważyć, parametry przestrzenne wskazują na przestrzeń główną, a nazwy jednostek już nie. Przykłady w wikikodzie: * {{Code|{{m|Pudełko|Nazwa przestrzeni nazw dyskusji 2|numer jednostki{{=}}2}}}} → {{Tt|{{#invoke:Pudełko|Nazwa przestrzeni nazw dyskusji 2|numer jednostki=2}}}} * {{Code|{{m|Pudełko|Nazwa przestrzeni nazw dyskusji 2|Szablon|nazwa przestrzeni nazw i{{=}}Moja przestrzeń|numer jednostki{{=}}2}}}} → {{Tt|{{#invoke:Pudełko|Nazwa przestrzeni nazw dyskusji 2|Szablon|nazwa przestrzeni nazw i=Moja przestrzeń|numer jednostki=2}}}} * {{Code|{{m|Pudełko|Nazwa przestrzeni nazw dyskusji 2|nazwa przestrzeni nazw 2{{=}}|nazwa jednostki 2{{=}}Szablon:Strona|numer jednostki{{=}}2}}}} → {{Tt|{{#invoke:Pudełko|Nazwa przestrzeni nazw dyskusji 2|nazwa przestrzeni nazw 2=|nazwa jednostki 2=Szablon:Strona|numer jednostki=2}}}} * {{Code|{{m|Pudełko|Nazwa przestrzeni nazw dyskusji 2|nazwa przestrzeni nazw i{{=}}|nazwa jednostki 2{{=}}Szablon:Strona|numer jednostki{{=}}2}}}} → {{Tt|{{#invoke:Pudełko|Nazwa przestrzeni nazw dyskusji 2|nazwa przestrzeni nazw i=|nazwa jednostki 2=Szablon:Strona|numer jednostki=2}}}} * {{Code|{{m|Pudełko|Nazwa przestrzeni nazw dyskusji 2|Szablon|nazwa przestrzeni nazw{{=}}|nazwa jednostki 2{{=}}Wikibooks:Strona|numer jednostki{{=}}2}}}} → {{Tt|{{#invoke:Pudełko|Nazwa przestrzeni nazw dyskusji 2|Szablon|nazwa przestrzeni nazw=|nazwa jednostki 2=Dyskusja Wikibooks:Strona|numer jednostki=2}}}} Powyżej dla przykładu podano parametry nie w rodzicu w szablonie, tylko w dziecku, jeśli chodzi o parametry nazw przestrzeni nazw i nazw jednostek, ale ich się za to nie powinno podawać w tych ramach, tylko w szablonach, w których wywoływane są te ramki pudełek {{Code|{{m|Pudełko}}}}, ale tak tutaj tak zrobiono by było najłatwiej sprawdzić działanie tego typu funkcji. Analogicznie możemy podawać parametry typu jednostki, np.: wywołaniu modułowym {{Code|{{m|Pudełko|Nazwa przestrzeni nazw dyskusji 2|typ jednostki 2{{=}}Podręcznik|nazwa jednostki 2{{=}}Szablon:Strona|numer jednostki{{=}}2}}}} (ale wtedy jest brana przestrzeń nazw z nazwy jednostki), ale o tym więcej w rozdziałach {{Code|{{sr|# p["Dyskusyjny typ jednostki 2"](frame,i)|p=Pudełko}}}} w „{{sr|#Funkcje typu jednostki|p=Pudełko}}”, one definiują przestrzenie dyskusji, ale można użyć parametru dyskusji typu jednostki z obojętnie jaką wartością niepustą, czy pustą, czy nawet jej nie podamy, wtedy wyświetli się nazwa przestrzeni nazw dyskusji. Jeżeli typ jednostki wskazuje na przestrzeń nazw główną, wtedy się liczą parametry nazw jednostek. Również parametry typu jednostki nie powinno się podawać w dziecku w ramce, tylko w rodzicu w szablonie jako parametry, w którym ta ramka jest wywoływana, ale tutaj podano jedynie dla przykładu, jak najłatwiej sprawdzić działanie tych parametrów tej funkcji. Najpierw w funkcji nagłówku brane są parametry nazw przestrzeni nazw, a jeżeli ich nie ma, to parametry typu jednostki, a jeżeli nie ma lub parametry przestrzenne wskazują na przestrzeń główną, i nie ma nazwy jednostki, to generowane są nazwy tej funkcji na podstawie aktualnej strony. == Funkcje pełnych nazw jednostki == === {{Code|p["Pełna nazwa dyskusji jednostki"](frame,i)}} === === {{Code|p["Pełna nazwa przedmiotowa jednostki"](frame,i)}} === === {{Code|p["Pełna nazwa jednostki"](frame,i)}} === == Funkcje pełnych nazw jednostki drugiej wersji == === {{Code|p["Pełna nazwa dyskusji jednostki 2"](frame,i)}} === === {{Code|p["Pełna nazwa przedmiotowa jednostki 2"](frame,i)}} === === {{Code|p["Pełna nazwa jednostki 2"](frame,i)}} === == Funkcje pełnych nazw jednostki trzeciej wersji == === {{Code|p["Pełna nazwa dyskusji jednostki 3"](frame,i)}} === === {{Code|p["Pełna nazwa przedmiotowa jednostki 3"](frame,i)}} === === {{Code|p["Pełna nazwa jednostki 3"](frame,i)}} === == Funkcje nazw jednostki == === {{Code|p["Nazwa jednostki"](frame,i)}} === == Funkcje nazw jednostki drugiej wersji == === {{Code|p["Nazwa jednostki 2"](frame,i)}} === === {{Code|p["Nazwa przedmiotowa jednostki 2"](frame,i)}} === === {{Code|p["Nazwa dyskusji jednostki 2"](frame,i)}} === == Funkcje nazw przestrzeni nazw trzeciej wersji == === {{Code|p["Nazwa przestrzeni nazw 3"](frame,i)}} === Funkcja pisze nazwę przestrzeni nazw, niezależnie, czy to jest przedmiotowa, czy dyskusji, według, i nie zawsze tylko, podanej w zmiennej {{Code|nazwa przestrzeni nazw}} dla pozycja bazowej w podanych parametrach szablonu rodzicu ramki dziecka, lub dla innej pozycji należy parametr podawać w formie {{Code|nazwa przestrzeni nazw 1}}, {{Code|Nazwa przestrzeni nazw 3}}, {{Code|nazwa przestrzeni nazw 3}},..., lub te parametry można podać w postaci ogólnej {{Code|nazwa przestrzeni nazw i}}. W tej funkcji trzeba też podawać parametry nazwy jednostek {{Code|nazwa jednostki}}, {{Code|nazwa jednostki 1}}, {{Code|nazwa jednostki 2}}, {{Code|nazwa jednostki 3}},... Parametry podaje się w parametrach rodzica wywołania tej funkcji {{Code|{{m|Pudełko|Nazwa przestrzeni nazw 3}}}} (ale ich nie trzeba podawać w dziecku, ale można) i w parametrach dziecka, jeśli chodzi o zmienną {{Code|numer jednostki}}, czyli np.: {{Code|{{m|Pudełko|Nazwa przestrzeni nazw 3|numer jednostki{{=}}<jakaś liczba całkowita dodatnia>}}}}. Te parametry przestrzenne zamiast w rodzicu w szablonie można podać w ramce dziecka, wtedy parametry dziecka mają pierwszeństwo. Przestrzeń nazw z parametrów nazw przestrzennych bazowych (bez numerka) może odpowiadać wartości przestrzeni głównej, to wtedy odpowiednia przestrzeń nazw z parametru nazwy jednostki się nie liczy w tej funkcji, aby się liczyła należy użyć funkcji {{Code|{{sr|#p["Nazwa przestrzeni nazw"](frame,...)|p=Pudełko}}}}. Przestrzeń nazw z parametrów nazw przestrzennych numerkowych może odpowiadać wartości przestrzeni głównej, to wtedy odpowiednia przestrzeń nazw z parametru nazwy jednostki się liczy w tej funkcji, wtedy jest liczona nazwa przestrzeni nazw z tego parametru. Gdy parametry przestrzenne lub typ jednostki w drugim podejściu nie wskazują na przestrzeń główną, to wtedy działanie tej funkcji jest podobne do {{Code|{{sr|#p["Nazwa przestrzeni nazw 2"](frame,...)|p=Pudełko}}}}. Definicja skrótowa funkcji: <syntaxhighlight lang="lua"> p["Nazwa przestrzeni nazw 3"]=function(frame,czy_uwzglednic_alternatywna_nazwe,i)...end; </syntaxhighlight> Wtedy ciało funkcji tej, czyli jego definicja w środku, jest: <syntaxhighlight lang="lua"> -- Jest liczony numer parametru nazwy przestrzeni nazw, domyslnie chodzi tu o numer bazowy parametrów przestrzennych; local numer_jednostki=i or frame.args["numer jednostki"]; local liczba_numeru_jednostki=((numer_jednostki)and(tonumber(numer_jednostki)) or 0); local pudelko_pomocne_modul=require("Module:Pudełko/Pomocne"); -- Liczy nazwę przestrzeni nazw dyskusji na podstawie podanych parametrów; return pudelko_pomocne_modul.Uzyskanie_nazw_jednostki(frame,0,liczba_numeru_jednostki,nil,2); </syntaxhighlight> Parametry funkcji: * {{Code|frame}} - tablica ramki tablicy transportu, * {{Code|czy_uwzglednic_alternatywna_nazwe}} - czy ma uwzględniać nazwę przestrzeni nazw domyślną szablonu, dostępne wartości: {{Code|false}}, w której nazwa domyślna nie jest uwzględniana wtedy, oraz {{Code|nil}} i {{Code|true}}, które oznaczają to samo, w tym jeżeli ona jest uwzględniana, wtedy jest brany parametr pierwszy dziecka, który musi istnieć przy takiej wartości tego parametru, tzn. {{Code|{{m|Pudełko|Nazwa przestrzeni nazw 3|Szablon}}}}, a nazwa uzyskana nazwy przestrzeni nazw jest w takim przypadku błędna, a jeżeli nazwa domyślna jest błędna, czyli {{Code|{{m|Pudełko|Nazwa przestrzeni nazw 3|Moja przestrzeń}}}}, wtedy funkcja zwraca stan błędu {{Code|(błąd)}}. * {{Code|i}} - numer zmiennej nazwy przestrzeni nazw. Funkcja wykorzystuje {{Code|{{sr|#p.Uzyskanie_nazw_jednostki(frame,...)|p=Pudełko/Pomocne}}}} do wyznaczania ogólnego nazwy przestrzeni nazw dla pozycji bazowej i numerkowej, tzn. dla pozycji: jeden, dwa, trzy,..., itd, i ich ogólnej. Parametr ramki tablicy transportu rodzica szablonu: * {{Code|nazwa przestrzeni nazw}}, {{Code|nazwa przestrzeni nazw 1}}, {{Code|Nazwa przestrzeni nazw 3}}, {{Code|nazwa przestrzeni nazw 3}},..., {{Code|nazwa przestrzeni nazw i}} - nazwy przestrzeni nazw dla pozycji bazowej oraz zwykłej i ogólnej numerkowej, * {{Code|nazwa jednostki}}, {{Code|nazwa jednostki 1}}, {{Code|nazwa jednostki 2}}, {{Code|nazwa jednostki 3}},... - nazwy jednostek dla pozycji bazowej i numerkowej, * {{Code|typ jednostki}}, {{Code|typ jednostki 1}}, {{Code|typ jednostki 2}}, {{Code|typ jednostki 3}},..., {{Code|typ jednostki i}} - typy jednostek, którym odpowiadają pewne przestrzenie przedmiotowe, dla pozycji bazowej, numerkowej i ogólnej, ** {{Code|dyskusja typu jednostki}}, {{Code|dyskusja typu jednostki 1}}, {{Code|dyskusja typ jednostki 2}}, {{Code|dyskusja typ jednostki 3}},..., {{Code|dyskusja typ jednostki i}} - czy dany typ jednostki ma przedstawiać, jeśli niepusta, przestrzeń dyskusji dla pozycji bazowej, numerkowej i ogólnej. Parametry ramki tablicy transportu dziecka: * Parametry dziecka są takie same jak rodzica dla funkcji pudełkowej plus tu wymienione, * {{Code|numer jednostki}} - jak parametr {{Code|i}} nie został ustawiony, to wtedy liczy się ta zmienna. Przykłady: <syntaxhighlight lang="mediawiki"> {{Nazwa szablonu 1|nazwa przestrzeni nazw=Wikibooks|nazwa przestrzeni nazw=|nazwa przestrzeni nazw i=|nazwa jednostki=Szablon:Strona}} ---- {{Nazwa szablonu 2|nazwa przestrzeni nazw=Wikibooks|nazwa przestrzeni nazw 1=Szablon|nazwa przestrzeni nazw i=|nazwa jednostki 2=Wikibooks:Strona}} </syntaxhighlight> W pierwszym wywołaniu {{Code|nazwa przestrzeni nazw}} jest puste, ale dla tego bazowego (bez numerka) szukamy przestrzeni nazw, a więc ta nazwa jest ostateczna. ---- W drugim wywołaniu w dziecku powiedzmy jest wywołanie, i szukamy nazwy przestrzeni nazw o numerze dwa, która została podana, ale istnieje za to jej wersji ogólna {{Code|nazwa przestrzeni nazw i}} i domyślna {{Code|nazwa przestrzeni nazw}}, ale wtedy dla tego numerkowego liczy się to ogólne z {{Code| i}}, a ponieważ ta nazwa jest pusta, więc będziemy liczyli nazwę przestrzeni nazw z {{Code|nazwa jednostki 2}}. Odpowiadająca powyższemu kodowi, powiedzmy wikikod, według ich zawartości, przedstawia się: <syntaxhighlight lang="mediawiki"> {{#invoke:Pudełko|Nazwa przestrzeni nazw 3}} ---- {{#invoke:Pudełko|Nazwa przestrzeni nazw 3|numer jednostki=2}} </syntaxhighlight> Na podstawie powyższego przykładu otrzymamy wynik o schemacie, nie wyniku, bo tam nie ma zmiennej {{Code|nazwa przestrzeni nazw 1}}, ale jest {{Code|nazwa przestrzeni nazw i}}: <syntaxhighlight lang="mediawiki"> <!-- nazwa przestrzeni nazw=""; --> <!-- Czyli wynik: --> <!-- wynik pusty --> <!-- Widzimy, że wygenerowała się nazwa przestrzeni nazw, którą jest przestrzeń nazw główna, jest ciągiem pustym: ""; --> ---- <!-- Ale nie "Nazwa przestrzeni nazw 2", bo jej nie ma, ale za to istnieje "nazwa przestrzeni nazw i"; --> <!-- nazwa przestrzeni nazw 2=nazwa przestrzeni nazw i="", a nazwa jednostki 2="Wikibooks:Strona"; --> <!-- Czyli wynik: --> Wikibooks <!-- Widzimy, że wygenerowała się nazwa przestrzeni nazw, którą jest przestrzeń nieprogramowa, ale projektu, wychodząca z nazwy jednostek w tym przypadku z "nazwa jednostki 2"; --> </syntaxhighlight> Dla parametrów numerkowych nie jest brana w tym powyższym przykładzie zmienna {{Code|nazwa przestrzeni nazw 2}}, bo jej nie ma, ale za to jest {{Code|nazwa przestrzeni nazw i}}, bo ona występuje jako parametr domyślny ogólny dla parametrów numerkowych. Tytaj jest używana jest zmienna {{Code|nazwa jednostki 2}} do wygenerowania ostatecznego wyniku, bo jak można zauważyć, parametry przestrzenne wskazują na przestrzeń główną, a nazwy jednostek już nie. Dla parametrów bazowych mamy zmienną {{Code|nazwa przestrzeni nazw}}, ona jest pusta, więc to zostanie wziete do ostatecznego wyniku. Przykłady w wikikodzie: * {{Code|{{m|Pudełko|Nazwa przestrzeni nazw 3|nazwa przestrzeni nazw{{=}}|nazwa jednostki{{=}}Wikibooks:Strona}}}} → {{Tt|{{#invoke:Pudełko|Nazwa przestrzeni nazw 3|nazwa przestrzeni nazw=|nazwa jednostki=Wikibooks:Szablon}}}} * {{Code|{{m|Pudełko|Nazwa przestrzeni nazw 3|nazwa przestrzeni nazw 2{{=}}|nazwa jednostki 2{{=}}Wikibooks:Strona|numer jednostki{{=}}2}}}} → {{Tt|{{#invoke:Pudełko|Nazwa przestrzeni nazw 3|nazwa przestrzeni nazw 2=|nazwa jednostki 2=Wikibooks:Szablon|numer jednostki=2}}}} Powyżej dla przykładu podano parametry nie w rodzicu w szablonie, tylko w dziecku, jeśli chodzi o parametry nazw przestrzeni nazw i nazw jednostek, ale ich się za to nie powinno podawać w tych ramach, tylko w szablonach, w których wywoływane są te ramki pudełek {{Code|{{m|Pudełko}}}}, ale tak tutaj tak zrobiono by było najłatwiej sprawdzić działanie tego typu funkcji. Analogicznie możemy podawać parametry typu jednostki, np.: wywołaniu modułowym {{Code|{{m|Pudełko|Nazwa przestrzeni nazw 3|typ jednostki 2{{=}}Podręcznik|nazwa jednostki 2{{=}}Szablon:Strona|numer jednostki{{=}}2}}}} (ale wtedy jest brana przestrzeń nazw z nazwy jednostki), ale o tym więcej w rozdziałach {{Code|{{sr|#p["Typ jednostki 3"](frame,i)|p=Pudełko}}}} w „{{sr|#Funkcje typu jednostki|p=Pudełko}}”, on definiuje przestrzenie przedmiotowe, ale można użyć parametru dyskusji typu jednostki z wartością niepustą, wtedy wyświetli się nazwa przestrzeni nazw dyskusji. Jeżeli typ jednostki bazowy wskazuje na przestrzeń nazw główną, wtedy się nie liczą parametry nazw jednostek, a na numerkowy, wtedy się liczy. Również parametry typu jednostki nie powinno się podawać w dziecku w ramce, tylko w rodzicu w szablonie jako parametry, w którym ta ramka jest wywoływana, ale tutaj podano jedynie dla przykładu, jak najłatwiej sprawdzić działanie tych parametrów tej funkcji. Najpierw w funkcji nagłówku brane są parametry nazw przestrzeni nazw, a jeżeli ich nie ma, to parametry typu jednostki, a jeżeli nie ma lub parametry przestrzenne wskazują na przestrzeń główną, i nie ma nazwy jednostki, to generowane są nazwy tej funkcji na podstawie aktualnej strony. === {{Code|p["Nazwa przedmiotowej przestrzeni nazw 3"](frame,i)}} === Funkcja pisze przedmiotową nazwę przestrzeni nazw jakikolwiek nazwy przestrzeni nazw (tzn. nazwę przedmiotową nazwy przestrzenie nazw, czyli nie dyskusji, zamieniana jest na nią samą, czyli identyfikator przestrzeni się nie zmienia, a dyskusji, nie przedmiotową, przekształca się na przedmiotową jej odpowiadającą, czyli w tym przypadku identyfikator przestrzeni zmniejsza się o numer mniej), według podanej w zmiennej {{Code|nazwa przestrzeni nazw}} dla pozycja bazowej w podanych parametrach szablonu rodzicu ramki dziecka, lub dla innej pozycji należy parametr podawać w formie {{Code|nazwa przestrzeni nazw 1}}, {{Code|nazwa przestrzeni nazw 2}}, {{Code|nazwa przestrzeni nazw 3}},..., lub te parametry można podać w postaci ogólnej {{Code|nazwa przestrzeni nazw i}}. Parametry podaje się w parametrach rodzica wywołania tej funkcji {{Code|{{m|Pudełko|Nazwa przedmiotowej przestrzeni nazw 3}}}} (ale ich nie trzeba podawać w dziecku, ale można) i w parametrach dziecka, jeśli chodzi o zmienną {{Code|numer jednostki}}, czyli np.: {{Code|{{m|Pudełko|Nazwa przedmiotowej przestrzeni nazw 3|numer jednostki{{=}}<jakaś liczba całkowita dodatnia>}}}}. Te parametry przestrzenne zamiast w rodzicu w szablonie można podać w ramce dziecka, wtedy parametry dziecka mają pierwszeństwo. Parametry przestrzenne mogą mogą być podane w postaci przestrzeni przedmiotowej lub dyskusji, ale ta funkcja zawsze ją zamienia na przedmiotową. Przestrzeń nazw z parametrów nazw przestrzennych bazowych (bez numerka) może odpowiadać wartości przestrzeni głównej, to wtedy odpowiednia przestrzeń nazw z parametru nazwy jednostki się nie liczy w tej funkcji, aby się liczyła należy użyć funkcji {{Code|{{sr|#p["Nazwa przedmiotowej przestrzeni nazw"](frame,...)|p=Pudełko}}}}. Przestrzeń nazw z parametrów nazw przestrzennych numerkowych może odpowiadać wartości przestrzeni głównej, to wtedy odpowiednia przestrzeń nazw z parametru nazwy jednostki się liczy w tej funkcji, wtedy jest liczona nazwa przestrzeni nazw z tego parametru. Gdy parametry przestrzenne lub typ jednostki w drugim podejściu nie wskazują na przestrzeń główną, to wtedy działanie tej funkcji jest podobne do {{Code|{{sr|#p["Nazwa przedmiotowej przestrzeni nazw 2"](frame,...)|p=Pudełko}}}}. Definicja skrótowa funkcji: <syntaxhighlight lang="lua"> p["Nazwa przedmiotowej przestrzeni nazw 3"]=function(frame,czy_uwzglednic_alternatywna_nazwe,i)...end; </syntaxhighlight> Wtedy ciało funkcji tej, czyli jego definicja w środku, jest: <syntaxhighlight lang="lua"> -- Jest liczony numer parametru nazwy przestrzeni nazw, domyslnie chodzi tu o numer bazowy parametrów przestrzennych; local numer_jednostki=i or frame.args["numer jednostki"]; local liczba_numeru_jednostki=((numer_jednostki)and(tonumber(numer_jednostki)) or 0); local pudelko_pomocne_modul=require("Module:Pudełko/Pomocne"); -- Liczy nazwę przestrzeni nazw przedmiotową na podstawie podanych parametrów; return pudelko_pomocne_modul.Uzyskanie_nazw_jednostki(frame,1,liczba_numeru_jednostki,nil,1); </syntaxhighlight> Parametry funkcji: * {{Code|frame}} - tablica ramki tablicy transportu, * {{Code|czy_uwzglednic_alternatywna_nazwe}} - czy ma uwzględniać nazwę przestrzeni nazw domyślną szablonu, dostępne wartości: {{Code|false}}, w której nazwa domyślna nie jest uwzględniana wtedy, oraz {{Code|nil}} i {{Code|true}}, które oznaczają to samo, w tym jeżeli ona jest uwzględniana, wtedy jest brany parametr pierwszy dziecka, który musi istnieć przy takiej wartości tego parametru, tzn. {{Code|{{m|Pudełko|Nazwa przedmiotowej przestrzeni nazw 3|Dyskusja szablonu}}}} - ta nazwa domyślna zostanie zamieniona na przedmiotową, a jak ona by była przedmiotowa, to żadnej zamiany by nie było, a nazwa uzyskana z nazwy przestrzeni nazw z parametrów przestrzennych jest w takim przypadku błędna, to w takim razie brany jest ten parametr, a jeżeli ta nazwa domyślna jest błędna, czyli {{Code|{{m|Pudełko|Nazwa przedmiotowej przestrzeni nazw 3|Moja przestrzeń}}}}, wtedy funkcja zwraca stan błędu {{Code|(błąd)}}. * {{Code|i}} - numer zmiennej nazwy przestrzeni nazw. Funkcja wykorzystuje {{Code|{{sr|#p.Uzyskanie_nazw_jednostki(frame,...)|p=Pudełko/Pomocne}}}} do wyznaczania ogólnego nazwy przestrzeni nazw dla pozycji bazowej i numerkowej, tzn. dla pozycji: jeden, dwa, trzy,..., itd, i ich ogólnej. Parametr ramki tablicy transportu rodzica szablonu: * {{Code|nazwa przestrzeni nazw}}, {{Code|nazwa przestrzeni nazw 1}}, {{Code|nazwa przestrzeni nazw 2}}, {{Code|nazwa przestrzeni nazw 3}},..., {{Code|nazwa przestrzeni nazw i}} - nazwy przestrzeni nazw dla pozycji bazowej oraz zwykłej i ogólnej numerkowej, * {{Code|typ jednostki}}, {{Code|typ jednostki 1}}, {{Code|typ jednostki 2}}, {{Code|typ jednostki 3}},..., {{Code|typ jednostki i}} - typy jednostek, którym odpowiadają pewne przestrzenie przedmiotowe, dla pozycji bazowej, numerkowej i ogólnej. Parametry ramki tablicy transportu dziecka: * Parametry dziecka są takie same jak rodzica dla funkcji pudełkowej plus tu wymienione, * {{Code|numer jednostki}} - jak parametr {{Code|i}} nie został ustawiony, to wtedy liczy się ta zmienna. Przykłady: <syntaxhighlight lang="mediawiki"> {{Nazwa szablonu 1|nazwa przestrzeni nazw=Wikibooks|nazwa przestrzeni nazw=|nazwa przestrzeni nazw i=|nazwa jednostki=Dyskusja Wikibooks:Strona}} ---- {{Nazwa szablonu 2|nazwa przestrzeni nazw=Wikibooks|nazwa przestrzeni nazw 1=Szablon|nazwa przestrzeni nazw i=|nazwa jednostki 2=Dyskusja Wikibooks:Strona}} </syntaxhighlight> W pierwszym wywołaniu {{Code|nazwa przestrzeni nazw}} jest puste, ale dla tego bazowego (bez numerka) szukamy przestrzeni nazw, a więc ta nazwa jest ostateczna. ---- W drugim wywołaniu w dziecku powiedzmy jest wywołanie, i szukamy nazwy przestrzeni nazw o numerze dwa, która została podana, ale istnieje za to jej wersji ogólna {{Code|nazwa przestrzeni nazw i}} i domyślna {{Code|nazwa przestrzeni nazw}}, ale wtedy dla tego numerkowego liczy się to ogólne z {{Code| i}}, a ponieważ ta nazwa jest pusta, więc będziemy liczyli nazwę przestrzeni nazw z {{Code|nazwa jednostki 2}}. Odpowiadająca powyższemu kodowi, powiedzmy wikikod, według ich zawartości, przedstawia się: <syntaxhighlight lang="mediawiki"> {{#invoke:Pudełko|Nazwa przedmiotowej przestrzeni nazw 3}} ---- {{#invoke:Pudełko|Nazwa przedmiotowej przestrzeni nazw 3|numer jednostki=2}} </syntaxhighlight> Na podstawie powyższego przykładu otrzymamy wynik o schemacie, nie wyniku, bo tam nie ma zmiennej {{Code|nazwa przestrzeni nazw 1}}, ale jest {{Code|nazwa przestrzeni nazw i}}: <syntaxhighlight lang="mediawiki"> <!-- nazwa przestrzeni nazw=""; --> <!-- Czyli wynik: --> <!-- wynik pusty --> <!-- Widzimy, że wygenerowała się nazwa przestrzeni nazw, którą jest przestrzeń nazw główna, jest ciągiem pustym: ""; --> ---- <!-- Ale nie "Nazwa przestrzeni nazw 2", bo jej nie ma, ale za to istnieje "nazwa przestrzeni nazw i"; --> <!-- nazwa przestrzeni nazw 2=nazwa przestrzeni nazw i="", a nazwa jednostki 2="Dyskusja Wikibooks:Strona"; --> <!-- Czyli wynik: --> Wikibooks <!-- Widzimy, że wygenerowała się nazwa przestrzeni nazw, którą jest przestrzeń nieprogramowa, ale projektu, wychodząca z nazwy jednostek w tym przypadku z "nazwa jednostki 2"; --> </syntaxhighlight> Dla parametrów numerkowych nie jest brana w tym powyższym przykładzie zmienna {{Code|nazwa przestrzeni nazw 2}}, bo jej nie ma, ale za to jest {{Code|nazwa przestrzeni nazw i}}, bo ona występuje jako parametr domyślny ogólny dla parametrów numerkowych. Tytaj jest używana jest zmienna {{Code|nazwa jednostki 2}} do wygenerowania ostatecznego wyniku, bo jak można zauważyć, parametry przestrzenne wskazują na przestrzeń główną, a nazwy jednostek już nie. Dla parametrów bazowych mamy zmienną {{Code|nazwa przestrzeni nazw}}, ona jest pusta, więc to zostanie wziete do ostatecznego wyniku. Przykłady w wikikodzie: * {{Code|{{m|Pudełko|Nazwa przestrzeni nazw 3|nazwa przestrzeni nazw{{=}}|nazwa jednostki{{=}}Dyskusja Wikibooks:Strona}}}} → {{Tt|{{#invoke:Pudełko|Nazwa przestrzeni nazw 3|nazwa przestrzeni nazw=|nazwa jednostki=Dyskusja Wikibooks:Szablon}}}} * {{Code|{{m|Pudełko|Nazwa przestrzeni nazw 3|nazwa przestrzeni nazw 2{{=}}|nazwa jednostki 2{{=}}Dyskusja Wikibooks:Strona|numer jednostki{{=}}2}}}} → {{Tt|{{#invoke:Pudełko|Nazwa przestrzeni nazw 3|nazwa przestrzeni nazw 2=|nazwa jednostki 2=Dyskusja Wikibooks:Szablon|numer jednostki=2}}}} Powyżej dla przykładu podano parametry nie w rodzicu w szablonie, tylko w dziecku, jeśli chodzi o parametry nazw przestrzeni nazw, ale ich się za to nie powinno podawać w tych ramach, tylko w szablonach, w których wywoływane są te ramki pudełek {{Code|{{m|Pudełko}}}}, ale tak tutaj tak zrobiono by było najłatwiej sprawdzić działanie tego typu funkcji. Analogicznie możemy podawać parametry typu jednostki, np.: wywołaniu modułowym {{Code|{{m|Pudełko|Nazwa przedmiotowej przestrzeni nazw 3|typ jednostki 2{{=}}strona szablonu|numer jednostki{{=}}2}}}}, ale o tym więcej w rozdziałach {{Code|{{sr|# p["Przedmiotowy typ jednostki 3"](frame,i)|p=Pudełko}}}} w „{{sr|#Funkcje typu jednostki|p=Pudełko}}”, ale wtedy ta sama nazwa przestrzeni nazw reprezentowana przez {{Parametr|typ jednostki 2|strona szablonu}}, jest zamieniana na to samo, lepiej jest tutaj używać parametrów przestrzennych nazw niż typu jednostki, bo typ jednostki ma taką samą wartość dla przestrzeni przedmiotowej, co dyskusji. Tutaj parametr dyskusji typu jednostki bazowy i numerkowy ogólny, czy szczegółowy, nie gra roli, bo nawet, gdy wygenerujemy nazwę przestrzeni dyskusji za pomoca tego parametru, to i tak otrzymamy na samym końcu jego nazwę przedmiotową. Jeżeli typ jednostki bazowy wskazuje na przestrzeń nazw główną, wtedy się nie liczą parametry nazw jednostek, a na numerkowy, wtedy się liczy. Również parametry typu jednostki nie powinno się podawać w dziecku w ramce, tylko w rodzicu w szablonie jako parametry, w którym ta ramka jest wywoływana, ale tutaj podano jedynie dla przykładu, jak najłatwiej sprawdzić działanie tych parametrów tej funkcji. Najpierw w funkcji nagłówku brane są parametry nazw przestrzeni nazw, a jeżeli ich nie ma, to parametry typu jednostki, a jeżeli nie ma, to generowane są nazwy na podstawie aktualnego modułu. === {{Code|p["Nazwa przestrzeni nazw dyskusji 3"](frame,i)}} === Funkcja pisze nazwę przestrzeni nazw dyskusji jakikolwiek nazwy przestrzeni nazw (tzn. nazwę dyskusji nazwy przestrzenie nazw, czyli nie przedmiotowej, zamieniana jest na nią samą, czyli identyfikator przestrzeni się nie zmienia, a przedmiotową, nie dyskusji, przekształca się na dyskusji jej odpowiadającą, czyli w tym przypadku identyfikator przestrzeni zwiększa się o numer więcej), według, i nie zawsze tylko, podanej w zmiennej {{Code|nazwa przestrzeni nazw}} dla pozycja bazowej w podanych parametrach szablonu rodzicu ramki dziecka, lub dla innej pozycji należy parametr podawać w formie {{Code|nazwa przestrzeni nazw 1}}, {{Code|nazwa przestrzeni nazw 2}}, {{Code|nazwa przestrzeni nazw 3}},..., lub te parametry można podać w postaci ogólnej {{Code|nazwa przestrzeni nazw i}}. W tej funkcji trzeba też podawać parametry nazwy jednostek {{Code|nazwa jednostki}}, {{Code|nazwa jednostki 1}}, {{Code|nazwa jednostki 2}}, {{Code|nazwa jednostki 3}},... Parametry podaje się w parametrach rodzica wywołania tej funkcji {{Code|{{m|Pudełko|Nazwa przestrzeni nazw dyskusji 3}}}} (ale ich nie trzeba podawać w dziecku, ale można) i w parametrach dziecka, jeśli chodzi o zmienną {{Code|numer jednostki}}, czyli np.: {{Code|{{m|Pudełko|Nazwa przestrzeni nazw dyskusji 3|numer jednostki{{=}}<jakaś liczba całkowita dodatnia>}}}}. Te parametry przestrzenne zamiast w rodzicu w szablonie można podać w ramce dziecka, wtedy parametry dziecka mają pierwszeństwo. Przestrzeń nazw z parametrów nazw przestrzennych bazowych (bez numerka) może odpowiadać wartości przestrzeni głównej, to wtedy odpowiednia przestrzeń nazw z parametru nazwy jednostki się nie liczy w tej funkcji, aby się liczyła należy użyć funkcji {{Code|{{sr|#p["Nazwa przestrzeni nazw dyskusji"](frame,...)|p=Pudełko}}}}. Przestrzeń nazw z parametrów nazw przestrzennych numerkowych może odpowiadać wartości przestrzeni głównej, to wtedy odpowiednia przestrzeń nazw z parametru nazwy jednostki się liczy w tej funkcji, wtedy jest liczona nazwa przestrzeni nazw z tego parametru. Gdy parametry przestrzenne lub typ jednostki w drugim podejściu nie wskazują na przestrzeń główną, to wtedy działanie tej funkcji jest podobne do {{Code|{{sr|#p["Nazwa przestrzeni nazw dysskusji 2"](frame,...)|p=Pudełko}}}}. Definicja skrótowa funkcji: <syntaxhighlight lang="lua"> p["Nazwa przestrzeni nazw dyskusji 3"]=function(frame,czy_uwzglednic_alternatywna_nazwe,i)...end; </syntaxhighlight> Wtedy ciało funkcji tej, czyli jego definicja w środku, jest: <syntaxhighlight lang="lua"> -- Jest liczony numer parametru nazwy przestrzeni nazw, domyslnie chodzi tu o numer bazowy parametrów przestrzennych; local numer_jednostki=i or frame.args["numer jednostki"]; local liczba_numeru_jednostki=((numer_jednostki)and(tonumber(numer_jednostki)) or 0); local pudelko_pomocne_modul=require("Module:Pudełko/Pomocne"); -- Liczy nazwę przestrzeni nazw dyskusji na podstawie podanych parametrów; return pudelko_pomocne_modul.Uzyskanie_nazw_jednostki(frame,2,liczba_numeru_jednostki,nil,1); </syntaxhighlight> Parametry funkcji: * {{Code|frame}} - tablica ramki tablicy transportu, * {{Code|czy_uwzglednic_alternatywna_nazwe}} - czy ma uwzględniać nazwę przestrzeni nazw domyślną szablonu, dostępne wartości: {{Code|false}}, w której nazwa domyślna nie jest uwzględniana wtedy, oraz {{Code|nil}} i {{Code|true}}, które oznaczają to samo, w tym jeżeli ona jest uwzględniana, wtedy jest brany parametr pierwszy dziecka, który musi istnieć przy takiej wartości tego parametru, tzn. {{Code|{{m|Pudełko|Nazwa przestrzeni nazw dyskusji 3|Szablon}}}}, a nazwa uzyskana nazwy przestrzeni nazw jest w takim przypadku błędna, a jeżeli nazwa domyślna jest błędna, czyli {{Code|{{m|Pudełko|Nazwa przestrzeni nazw dyskusji 3|Moja przestrzeń}}}}, wtedy funkcja zwraca stan błędu {{Code|(błąd)}}. * {{Code|i}} - numer zmiennej nazwy przestrzeni nazw. Funkcja wykorzystuje {{Code|{{sr|#p.Uzyskanie_nazw_jednostki(frame,...)|p=Pudełko/Pomocne}}}} do wyznaczania ogólnego nazwy przestrzeni nazw dla pozycji bazowej i numerkowej, tzn. dla pozycji: jeden, dwa, trzy,..., itd, i ich ogólnej. Parametr ramki tablicy transportu rodzica szablonu: * {{Code|nazwa przestrzeni nazw}}, {{Code|nazwa przestrzeni nazw 1}}, {{Code|nazwa przestrzeni nazw 2}}, {{Code|nazwa przestrzeni nazw 3}},..., {{Code|nazwa przestrzeni nazw i}} - nazwy przestrzeni nazw dla pozycji bazowej oraz zwykłej i ogólnej numerkowej, * {{Code|nazwa jednostki}}, {{Code|nazwa jednostki 1}}, {{Code|nazwa jednostki 2}}, {{Code|nazwa jednostki 3}},... - nazwy jednostek dla pozycji bazowej i numerkowej, * {{Code|typ jednostki}}, {{Code|typ jednostki 1}}, {{Code|typ jednostki 2}}, {{Code|typ jednostki 3}},..., {{Code|typ jednostki i}} - typy jednostek, którym odpowiadają pewne przestrzenie przedmiotowe, dla pozycji bazowej, numerkowej i ogólnej. Parametry ramki tablicy transportu dziecka: * Parametry dziecka są takie same jak rodzica dla funkcji pudełkowej plus tu wymienione, * {{Code|numer jednostki}} - jak parametr {{Code|i}} nie został ustawiony, to wtedy liczy się ta zmienna. Przykłady: <syntaxhighlight lang="mediawiki"> {{Nazwa szablonu 1|nazwa przestrzeni nazw=Wikibooks|nazwa przestrzeni nazw=|nazwa przestrzeni nazw i=|nazwa jednostki=Szablon:Strona}} ---- {{Nazwa szablonu 2|nazwa przestrzeni nazw=Wikibooks|nazwa przestrzeni nazw 1=Szablon|nazwa przestrzeni nazw i=|nazwa jednostki 2=Wikibooks:Strona}} </syntaxhighlight> W pierwszym wywołaniu {{Code|nazwa przestrzeni nazw}} jest puste, ale dla tego bazowego (bez numerka) szukamy przestrzeni nazw, a więc ta nazwa jest ostateczna. ---- W drugim wywołaniu w dziecku powiedzmy jest wywołanie, i szukamy nazwy przestrzeni nazw o numerze dwa, która została podana, ale istnieje za to jej wersji ogólna {{Code|nazwa przestrzeni nazw i}} i domyślna {{Code|nazwa przestrzeni nazw}}, ale wtedy dla tego numerkowego liczy się to ogólne z {{Code| i}}, a ponieważ ta nazwa jest pusta, więc będziemy liczyli nazwę przestrzeni nazw z {{Code|nazwa jednostki 2}}. Odpowiadająca powyższemu kodowi, powiedzmy wikikod, według ich zawartości, przedstawia się: <syntaxhighlight lang="mediawiki"> {{#invoke:Pudełko|Nazwa przestrzeni nazw 3}} ---- {{#invoke:Pudełko|Nazwa przestrzeni nazw 3|numer jednostki=2}} </syntaxhighlight> Na podstawie powyższego przykładu otrzymamy wynik o schemacie, nie wyniku, bo tam nie ma zmiennej {{Code|nazwa przestrzeni nazw 1}}, ale jest {{Code|nazwa przestrzeni nazw i}}: <syntaxhighlight lang="mediawiki"> <!-- nazwa przestrzeni nazw=""; --> <!-- Czyli wynik: --> Dyskusja <!-- Widzimy, że wygenerowała się nazwa przestrzeni nazw, którą jest przestrzeń nazw niegłówna, jest ciągiem niepustym; --> ---- <!-- Ale nie "Nazwa przestrzeni nazw 2", bo jej nie ma, ale za to istnieje "nazwa przestrzeni nazw i"; --> <!-- nazwa przestrzeni nazw 2=nazwa przestrzeni nazw i="", a nazwa jednostki 2="Wikibooks:Strona"; --> <!-- Czyli wynik: --> Dyskusja Wikibooks <!-- Widzimy, że wygenerowała się nazwa przestrzeni nazw, którą jest przestrzeń nieprogramowa, ale projektu, wychodząca z nazwy jednostek w tym przypadku z "nazwa jednostki 2"; --> </syntaxhighlight> Dla parametrów numerkowych nie jest brana w tym powyższym przykładzie zmienna {{Code|nazwa przestrzeni nazw 2}}, bo jej nie ma, ale za to jest {{Code|nazwa przestrzeni nazw i}}, bo ona występuje jako parametr domyślny ogólny dla parametrów numerkowych. Tytaj jest używana jest zmienna {{Code|nazwa jednostki 2}} do wygenerowania ostatecznego wyniku, bo jak można zauważyć, parametry przestrzenne wskazują na przestrzeń główną, a nazwy jednostek już nie. Dla parametrów bazowych mamy zmienną {{Code|nazwa przestrzeni nazw}}, ona jest pusta, więc to zostanie wziete do ostatecznego wyniku. Przykłady w wikikodzie: * {{Code|{{m|Pudełko|Nazwa przestrzeni nazw dyskusji 3|nazwa przestrzeni nazw{{=}}|nazwa jednostki{{=}}Wikibooks:Strona}}}} → {{Tt|{{#invoke:Pudełko|Nazwa przestrzeni nazw dyskusji 3|nazwa przestrzeni nazw=|nazwa jednostki=Wikibooks:Szablon}}}} * {{Code|{{m|Pudełko|Nazwa przestrzeni nazw dyskusji 3|nazwa przestrzeni nazw 2{{=}}|nazwa jednostki 2{{=}}Wikibooks:Strona|numer jednostki{{=}}2}}}} → {{Tt|{{#invoke:Pudełko|Nazwa przestrzeni nazw dyskusji 3|nazwa przestrzeni nazw 2=|nazwa jednostki 2=Wikibooks:Szablon|numer jednostki=2}}}} Powyżej dla przykładu podano parametry nie w rodzicu w szablonie, tylko w dziecku, jeśli chodzi o parametry nazw przestrzeni nazw i nazw jednostek, ale ich się za to nie powinno podawać w tych ramach, tylko w szablonach, w których wywoływane są te ramki pudełek {{Code|{{m|Pudełko}}}}, ale tak tutaj tak zrobiono by było najłatwiej sprawdzić działanie tego typu funkcji. Analogicznie możemy podawać parametry typu jednostki, np.: wywołaniu modułowym {{Code|{{m|Pudełko|Nazwa przestrzeni nazw dyskusji 3|typ jednostki 2{{=}}Podręcznik|nazwa jednostki 2{{=}}Szablon:Strona|numer jednostki{{=}}2}}}} (ale wtedy jest brana przestrzeń nazw z nazwy jednostki), ale o tym więcej w rozdziałach {{Code|{{sr|# p["Dyskusyjny typ jednostki 3"](frame,i)|p=Pudełko}}}} w „{{sr|#Funkcje typu jednostki|p=Pudełko}}”, one definiują przestrzenie dyskusji, ale można użyć parametru dyskusji typu jednostki z obojętnie jaką wartością niepustą, czy pustą, czy nawet jej nie podamy, wtedy wyświetli się nazwa przestrzeni nazw dyskusji. Jeżeli typ jednostki bazowy wskazuje na przestrzeń nazw główną, wtedy się nie liczą parametry nazw jednostek, a na numerkowy, wtedy się liczy. Również parametry typu jednostki nie powinno się podawać w dziecku w ramce, tylko w rodzicu w szablonie jako parametry, w którym ta ramka jest wywoływana, ale tutaj podano jedynie dla przykładu, jak najłatwiej sprawdzić działanie tych parametrów tej funkcji. Najpierw w funkcji nagłówku brane są parametry nazw przestrzeni nazw, a jeżeli ich nie ma, to parametry typu jednostki, a jeżeli nie ma lub parametry przestrzenne wskazują na przestrzeń główną, i nie ma nazwy jednostki, to generowane są nazwy tej funkcji na podstawie aktualnej strony. == Funkcje nazw jednostki trzeciej wersji == === {{Code|p["Nazwa jednostki 3"](frame,i)}} === === {{Code|p["Nazwa przedmiotowa jednostki 3"](frame,i)}} === === {{Code|p["Nazwa dyskusji jednostki 3"](frame,i)}} === == Funkcje typu jednostki == === {{Code|p["Typ jednostki"](frame,i)}} === === {{Code|p["Typ jednostki 2"](frame,i)}} === === {{Code|p["Typ jednostki 3"](frame,i)}} === === Funkcje typu jednostki przedmiotowe === ==== {{Code|p["Przedmiotowy typ jednostki"](frame,i)}} ==== ==== {{Code|p["Przedmiotowy typ jednostki 2"](frame,i)}} ==== ==== {{Code|p["Przedmiotowy typ jednostki 3"](frame,i)}} ==== === Fukcje typu jednostki dyskusji === ==== {{Code|p["Dyskusyjny typ jednostki"](frame,i)}} ==== ==== {{Code|p["Dyskusyjny typ jednostki 2"](frame,i)}} ==== ==== {{Code|p["Dyskusyjny typ jednostki 3"](frame,i)}} ==== == Funkcje chech pudełka == === {{Code|p["Cecha pudełka"](frame)}} === === {{Code|p["Przedmiotowa cecha pudełka"](frame)}} === === {{Code|p["Dyskusyjna cecha pudełka"](frame)}} === == Fukcje ogólnego pudełka == === {{Code|p["Ogólne pudełko"](frame)}} === == Funkcje ogólne == === {{Code|p["Tekst pudełka"](frame)}} === == Funkcje błędów pudełka == === {{Code|p["Błędy pudełka"](frame)}} === === {{Code|p["Przedmiotowe błędy pudełka"](frame)}} === === {{Code|p["Dyskusyjne błędy pudełka"](frame)}} === == Funkcje nazw stron == === {{Code|p["Nazwa strony głównej projektu"](frame,i)}} === === {{Code|p["Nazwa strony głównej dla dzieci projektu"](frame,i)}} === == Funkcje kodów == === {{Code|p["Kod języka"](frame,i)}} === === {{Code|p["Kod projektu"](frame,i)}} === === {{Code|p["Klucz projektu"](frame,i)}} === == Funkcje wiki == === {{Code|p["Inny niż język bieżący wiki"](frame)}} === === {{Code|p["Inne niż lokalne wiki"](frame)}} === === {{Code|p["Inne niż bieżące wiki"](frame)}} === == Funkcje typów parametrów, czy podane je == === {{Code|p["Podano parametry nienazwane"](frame)}} === === {{Code|p["Podano parametry numerowane"](frame)}} === === {{Code|p["Podano parametry nazwane"](frame)}} === == Funkcje kodów tego projektu == === {{Code|p["Kod projektu tego projektu"](frame)}} === === {{Code|p["Kod języka tego projektu"](frame)}} === === {{Code|p["Klucz projektu tego projektu"](frame)}} === == Funkcje stron == === {{Code|p["Strona główna tego projektu"](frame)}} === === {{Code|p["Strona główna dla dzieci tego projektu"](frame)}} === == Funkcje nazw stron drugiej wersji == === {{Code|p["Nazwa strony głównej dla dzieci projektu 2"](frame)}} === === {{Code| p["Nazwa strony głównej projektu 2"](frame)}} === {{BrClear}} <noinclude><!-- -->{{ProstaStronaKoniec}}<!-- -->{{Kategoria|Opisy funkcji, w Lua w Scribunto, w modułach}}<!-- --></noinclude> 6zurxe2j9xrx4m9ie5aeajiz6dotb66 540440 540439 2026-04-24T02:49:44Z Persino 2851 /* Funkcje nazw przestrzeni nazw trzeciej wersji */ 540440 wikitext text/x-wiki <noinclude>{{ProstaStronaStart | nagłówek = {{Podrozdział|{{ld2|Pudełko}}|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 pudelko_modul=require("Module:Pudełko"); </syntaxhighlight> dzięki, któremu można wypisywać funkcje należącego do niego. Posługuje się na parametrach pudełkowych {{Parametr|nazwa przestrzeni nazw}} (czy też bez numerka {{Parametr|nazwa przestrzeni nazw i}} dla tego numerowanego) lub te z numerkiem po jednej spacji w nich (ale nie dla tego z końcówką {{Code| i}}) mogą zostać użyte jako parametry szablonu. Moduł {{Code|{{ld2|Pudełko}}}} przedstawia funkcje nazw w oparciu o funkcje nazw {{Code|{{ld2|Nazwy}}}}, generuje on nazwy za pomocą parametrów pudełkowych podanych poniżej. Parametr {{Parametr|nazwa jednostki}} (lub parametr {{Parametr|cel}} dla numerka tego pierwszego, tego alternatywnego), lub te z numerkiem po jednej spacji w nazwie parametru, albo numerowane numerkami {{Code|1}}, {{Code|2}},..., mogą zostać użyte jako parametry szablonu. Parametry określające rodzaj jednostki {{Parametr|typ jednostki}} z {{Parametr|dyskusja typu jednostki}}, itp. w wersjach z numerkiem po jednej spacji w nich mogą zostać użyte jako parametry szablonu. A te tymi numerowanymi liczbami naturalnymi {{Tt|nazwy jednostki}} od jedynki wzwyż poprzez szablon, w którym są one użyte, one też mogą być użyte z dwukropkiem, te numerowane, na samym początku nazwy, wtedy one są traktowane jako pełne nazwy strony, i wtedy one nie zostaną z interpretowane, że do nich trzeba użyć parametr odpowiedni z nazwą przetrzeni nazw z tego numerowanego, czy ogólny, aby utworzyć znów inną pełną nazwę strony dla tego numerka. Zestawienie: * {{Code|nazwa przestrzeni nazw}} i {{Code|nazwa przestrzeni nazw i}} (ogólna nazwa przestrzeni nazw dla wszystkich numerków, i tych numerowanych jednostek) - i to pierwsze z numerkiem, tzn. {{Code|nazwa przestrzeni nazw 1}}, {{Code|nazwa przestrzeni nazw 2}}, ..., * {{Code|nazwa jednostki}} - i te z numerkiem: {{Code|nazwa jednostki 1}}, {{Code|nazwa jednostki 2}}, ..., lub gdy jest zamiast tego parametrem numerowany, {{Code|1}}, {{Code|2}},..., który dla tego pierwszego może być uznany jako: {{Code|cel}} {{=}} {{Code|1}}, * {{Code|typ jednostki}} (parametr bazowy) i {{Code|typ jednostki i}} (parametr domyślny numerkowy) - i te z numerkiem: {{Code|typ jednostki 1}}, {{Code|typ jednostki 2}}, ..., tzn. gdy chcemy określić z jakim typem jednostki mamy do czynienia w zależności do jakiej przestrzeni nazw należy, a w danej, czy jest on np. programowy, czy tylko jest opisem, jak to bywa w szablonach {{Np|Template|link=tak}}, podobnie jest w przypadku {{Np|Module|link=tak}}, czy jak jest w innych przestrzeniach nazw, ** {{Code|dyskusja typu jednostki}} (parametr bazowy) i {{Code|dyskusja typu jednostki i}} (parametr domyślny numerkowy) - i te z numerkiem: {{Code|dyskusja typu jednostki 1}}, {{Code|dyskusja typu jednostki 2}}, ..., gdy chcemy określić wartością niepustą,że chodzi tutaj o typ jednostki. == {{Code|p.CzyNiepoprawnaNazwa(nazwa_jednostki)}} == Funkcja sprawdzajaca, czy jest poprawnie podana nazwa jednostki, czy ma poprawną nazwę. Znakami tymi, z których nie powinna składać się nazwa jest {{Code|<nowiki>{}<>|[]#\n</nowiki>}} i dodatkowo znak {{Code|&#127;}} (kod {{Code|{{Nowiki|&#127;}}}}). Też nie może składać się z trzech znaków tyldy, tzn. {{Code|<nowiki>~~~</nowiki>}}. Również w swojej budowie nie może składać się ze kodów {{Strong|HTML}} literowych o wzorze {{Code|{{Nowiki|&(%a+);}}}}. Natomiast może składać się z {{Code|{{Nowiki|&#(%d+);}}}} i {{Code|{{Nowiki|&#x(%x+);}}}}, ale w pierw te kody muszą być zamienione na normalne znaki. Skrótowa definicja funkcji: <syntaxhighlight lang="lua"> function p.CzyNiepoprawnaNazwa(nazwa_jednostki)...end; </syntaxhighlight> Wtedy ciało funkcji tej, czyli jego definicja w środku, jest: <syntaxhighlight lang="lua"> -- Moduł: "Moduł:Html/dane", służy do ładowania znaku o kodzie HTML "&#127;"; local html_dane_modul=mw.loadData("Module:Html/dane"); return mw.ustring.match(nazwa_jednostki,"[{}<>|%[%]#\n"..html_dane_modul.znak_127.."]+") or mw.ustring.match(nazwa_jednostki,"~~~") or mw.ustring.match(nazwa_jednostki,"&(%a+);"); </syntaxhighlight> Parametry: * {{Code|nazwa_jednostki}} - nazwa jednostki do sprawdzenia. Przykłady: <syntaxhighlight lang="lua"> local pudelko_modul=require("Module:Pudełko"); -- Podana przykładowa niepoprawna nazwa jedostki local nazwa_jednostki="Nazwa pliku [[Nazwa linku w pliku]]"; -- Fukcja zwróci wartość: local czy_poprawna_nazwa=true; local czy_poprawna_nazwa=pudelko_modul.CzyNiepoprawnaNazwa(nazwa_jednostki); </syntaxhighlight> == Funkcje nazw przestrzeni nazw == === {{Code|p["Nazwa przestrzeni nazw"](frame,...)}} === Funkcja pisze nazwę przestrzeni nazw, niezależnie, czy to jest przedmiotowa, czy dyskusji, według podanej w zmiennej {{Code|nazwa przestrzeni nazw}} dla pozycja bazowej w podanych parametrach szablonu rodzicu ramki dziecka, lub dla innej pozycji należy parametr podawać w formie {{Code|nazwa przestrzeni nazw 1}}, {{Code|nazwa przestrzeni nazw 2}}, {{Code|nazwa przestrzeni nazw 3}},..., lub te parametry można podać w postaci ogólnej {{Code|nazwa przestrzeni nazw i}}. Parametry podaje się w parametrach rodzica wywołania tej funkcji {{Code|{{m|Pudełko|Nazwa przestrzeni nazw}}}} (ale ich nie trzeba podawać w dziecku, ale można) i w parametrach dziecka, jeśli chodzi o zmienną {{Code|numer jednostki}}, czyli np.: {{Code|{{m|Pudełko|Nazwa przestrzeni nazw|numer jednostki{{=}}<jakaś liczba całkowita dodatnia>}}}}. Te parametry przestrzenne zamiast w rodzicu w szablonie można podać w ramce dziecka, wtedy parametry dziecka mają pierwszeństwo. Przestrzeń nazw z parametrów nazw przestrzennych może odpowiadać wartości przestrzeni głównej, to wtedy odpowiednia przestrzeń nazw z parametru nazwy jednostki się nie liczy w tej funkcji, aby się liczyła należy użyć funkcji {{Code|{{sr|#p["Nazwa przestrzeni nazw 2"](frame,...)|p=Pudełko}}}}. Definicja skrótowa funkcji: <syntaxhighlight lang="lua"> p["Nazwa przestrzeni nazw"]=function(frame,czy_uwzglednic_alternatywna_nazwe,i)...end; </syntaxhighlight> Wtedy ciało funkcji tej, czyli jego definicja w środku, jest: <syntaxhighlight lang="lua"> -- Jest liczony numer parametru nazwy przestrzeni nazw, domyslnie chodzi tu o numer bazowy parametrów przestrzennych; local numer_jednostki=i or frame.args["numer jednostki"]; local liczba_numer_jednostki=((numer_jednostki)and(tonumber(numer_jednostki))or 0); local pudelko_pomocne_modul=require("Module:Pudełko/Pomocne"); -- Liczy nazwę przestrzeni nazw na podstawie podanych parametrów; return pudelko_pomocne_modul.Nazwa_przestrzeni_nazw(frame,0, czy_uwzglednic_alternatywna_nazwe,liczba_numer_jednostki); </syntaxhighlight> Parametry funkcji: * {{Code|frame}} - tablica ramki tablicy transportu, * {{Code|czy_uwzglednic_alternatywna_nazwe}} - czy ma uwzględniać nazwę przestrzeni nazw domyślną szablonu, dostępne wartości: {{Code|false}}, w której nazwa domyślna nie jest uwzględniana wtedy, oraz {{Code|nil}} i {{Code|true}}, które oznaczają to samo, w tym jeżeli ona jest uwzględniana, wtedy jest brany parametr pierwszy dziecka, który musi istnieć przy takiej wartości tego parametru, tzn. {{Code|{{m|Pudełko|Nazwa przestrzeni nazw|Szablon}}}}, a nazwa uzyskana nazwy przestrzeni nazw jest w takim przypadku błędna, a jeżeli nazwa domyślna jest błędna, czyli {{Code|{{m|Pudełko|Nazwa przestrzeni nazw|Moja przestrzeń}}}}, wtedy funkcja zwraca stan błędu {{Code|(błąd)}}. * {{Code|i}} - numer zmiennej nazwy przestrzeni nazw. Funkcja wykorzystuje {{Code|{{sr|#p.Nazwa_przestrzeni_nazw(frame,...)|p=Pudełko/Pomocne}}}} do wyznaczania ogólnego nazwy przestrzeni nazw dla pozycji bazowej i numerkowej, tzn. dla pozycji: jeden, dwa, trzy,..., itd, i ich ogólnej. Parametr ramki tablicy transportu rodzica szablonu: * {{Code|nazwa przestrzeni nazw}}, {{Code|nazwa przestrzeni nazw 1}}, {{Code|nazwa przestrzeni nazw 2}}, {{Code|nazwa przestrzeni nazw 3}},..., {{Code|nazwa przestrzeni nazw i}} - nazwy przestrzeni nazw dla pozycji bazowej oraz zwykłej i ogólnej numerkowej, * {{Code|typ jednostki}}, {{Code|typ jednostki 1}}, {{Code|typ jednostki 2}}, {{Code|typ jednostki 3}},..., {{Code|typ jednostki i}} - typy jednostek, którym odpowiadają pewne przestrzenie przedmiotowe, dla pozycji bazowej, numerkowej i ogólnej, ** {{Code|dyskusja typu jednostki}}, {{Code|dyskusja typu jednostki 1}}, {{Code|dyskusja typ jednostki 2}}, {{Code|dyskusja typ jednostki 3}},..., {{Code|dyskusja typ jednostki i}} - czy dany typ jednostki ma przedstawiać, jeśli niepusta, przestrzeń dyskusji dla pozycji bazowej, numerkowej i ogólnej. Parametry ramki tablicy transportu dziecka: * Parametry dziecka są takie same jak rodzica dla funkcji pudełkowej plus tu wymienione, * {{Code|numer jednostki}} - jak parametr {{Code|i}} nie został ustawiony, to wtedy liczy się ta zmienna. Przykłady: <syntaxhighlight lang="mediawiki"> {{Nazwa szablonu|nazwa przestrzeni nazw=Wikibooks|nazwa przestrzeni nazw 2=Szablon|nazwa przestrzeni nazw i=Moduł}} </syntaxhighlight> W dziecku powiedzmy jest wywołanie, i szukamy nazwy przestrzeni nazw o numerze dwa, która nie została podana, ale istnieje za to jej wersji ogólna {{Code|nazwa przestrzeni nazw i}} i domyślna {{Code|nazwa przestrzeni nazw}}: <syntaxhighlight lang="mediawiki"> {{#invoke:Pudełko|Nazwa przestrzeni nazw|numer jednostki=1}} </syntaxhighlight> Na podstawie powyższego przykładu otrzymamy wynik o schemacie, nie wyniku, bo tam nie ma zmiennej {{Code|nazwa przestrzeni nazw 1}}, ale jest {{Code|nazwa przestrzeni nazw i}}: <syntaxhighlight lang="mediawiki"> <!-- Ale nie "nazwa przestrzeni nazw", bo jej nie ma, ale za to istnieje "nazwa przestrzeni nazw i"; --> <!-- nazwa przestrzeni nazw 2=nazwa przestrzeni nazw i=Moduł; --> <!-- Czyli wynik: --> Moduł <!-- Widzimy, że wygenerowała się nazwa przestrzeni nazw, którą jest przestrzeń programowa, którą również jest "Szablon"; --> </syntaxhighlight> Nie jest brana w tym powyższym przykładzie zmienna {{Code|nazwa przestrzeni nazw}}, bo jej nie ma, ale za to jest {{Code|nazwa przestrzeni nazw i}}, bo ona występuje jako parametr domyślny ogólny dla parametrów numerkowych. Przykłady w wikikodzie: * {{Code|{{m|Pudełko|Nazwa przestrzeni nazw|numer jednostki{{=}}2}}}} → {{Tt|{{#invoke:Pudełko|Nazwa przestrzeni nazw|numer jednostki=2}}}} * {{Code|{{m|Pudełko|Nazwa przestrzeni nazw|Szablon|nazwa przestrzeni nazw i{{=}}Moja przestrzeń|numer jednostki{{=}}2}}}} → {{Tt|{{#invoke:Pudełko|Nazwa przestrzeni nazw|Szablon|nazwa przestrzeni nazw i=Moja przestrzeń|numer jednostki=2}}}} * {{Code|{{m|Pudełko|Nazwa przestrzeni nazw|nazwa przestrzeni nazw 2{{=}}Szablon|numer jednostki{{=}}2}}}} → {{Tt|{{#invoke:Pudełko|Nazwa przestrzeni nazw|nazwa przestrzeni nazw 2=Szablon|numer jednostki=2}}}} * {{Code|{{m|Pudełko|Nazwa przestrzeni nazw|nazwa przestrzeni nazw 2{{=}}Szablon|numer jednostki{{=}}2}}}} → {{Tt|{{#invoke:Pudełko|Nazwa przestrzeni nazw|nazwa przestrzeni nazw i=Szablon|numer jednostki=2}}}} * {{Code|{{m|Pudełko|Nazwa przestrzeni nazw|nazwa przestrzeni nazw{{=}}Szablon|numer jednostki{{=}}2}}}} → {{Tt|{{#invoke:Pudełko|Nazwa przestrzeni nazw|nazwa przestrzeni nazw=Szablon|numer jednostki=2}}}} Powyżej dla przykładu podano parametry nie w rodzicu w szablonie, tylko w dziecku, jeśli chodzi o parametry nazw przestrzeni nazw, ale ich się za to nie powinno podawać w tych ramach, tylko w szablonach, w których wywoływane są te ramki pudełek {{Code|{{m|Pudełko}}}}, ale tak tutaj tak zrobiono by było najłatwiej sprawdzić działanie tego typu funkcji. Analogicznie możemy podawać parametry typu jednostki, np.: wywołaniu modułowym {{Code|{{m|Pudełko|Nazwa przestrzeni nazw|typ jednostki 2{{=}}strona szablonu|numer jednostki{{=}}2}}}}, ale o tym więcej w rozdziałach {{Code|{{sr|# p["Typ jednostki"](frame,i)|p=Pudełko}}}} w „{{sr|#Funkcje typu jednostki|p=Pudełko}}”, on definiuje przestrzenie przedmiotowe, ale można użyć parametru dyskusji typu jednostki z wartością niepustą, wtedy wyświetli się nazwa przestrzeni nazw dyskusji. Również parametry typu jednostki nie powinno się podawać w dziecku w ramce, tylko w rodzicu w szablonie jako parametry, w którym ta ramka jest wywoływana, ale tutaj podano jedynie dla przykładu, jak najłatwiej sprawdzić działanie tych parametrów tej funkcji. Najpierw w funkcji nagłówku brane są parametry nazw przestrzeni nazw, a jeżeli ich nie ma, to parametry typu jednostki, a jeżeli nie ma, to generowane są nazwy na podstawie aktualnego modułu. === {{Code|p["Nazwa przedmiotowej przestrzeni nazw"](frame,...)}} === Funkcja pisze przedmiotową nazwę przestrzeni nazw jakikolwiek nazwy przestrzeni nazw (tzn. nazwę przedmiotową nazwy przestrzenie nazw, czyli nie dyskusji, zamieniana jest na nią samą, czyli identyfikator przestrzeni się nie zmienia, a dyskusji, nie przedmiotową, przekształca się na przedmiotową jej odpowiadającą, czyli w tym przypadku identyfikator przestrzeni zmniejsza się o numer mniej), według podanej w zmiennej {{Code|nazwa przestrzeni nazw}} dla pozycja bazowej w podanych parametrach szablonu rodzicu ramki dziecka, lub dla innej pozycji należy parametr podawać w formie {{Code|nazwa przestrzeni nazw 1}}, {{Code|nazwa przestrzeni nazw 2}}, {{Code|nazwa przestrzeni nazw 3}},..., lub te parametry można podać w postaci ogólnej {{Code|nazwa przestrzeni nazw i}}. Parametry podaje się w parametrach rodzica wywołania tej funkcji {{Code|{{m|Pudełko|Nazwa przedmiotowej przestrzeni nazw}}}} (ale ich nie trzeba podawać w dziecku, ale można) i w parametrach dziecka, jeśli chodzi o zmienną {{Code|numer jednostki}}, czyli np.: {{Code|{{m|Pudełko|Nazwa przedmiotowej przestrzeni nazw|numer jednostki{{=}}<jakaś liczba całkowita dodatnia>}}}}. Te parametry przestrzenne zamiast w rodzicu w szablonie można podać w ramce dziecka, wtedy parametry dziecka mają pierwszeństwo. Parametry przestrzenne mogą mogą być podane w postaci przestrzeni przedmiotowej lub dyskusji, ale ta funkcja zawsze ją zamienia na przedmiotową. Przestrzeń nazw z parametrów nazw przestrzennych może odpowiadać wartości przestrzeni głównej, to wtedy odpowiednia przestrzeń nazw z parametru nazwy jednostki się nie liczy w tej funkcji, aby się liczyła należy użyć funkcji {{Code|{{sr|#p["Nazwa przedmiotowej przestrzeni nazw 2"](frame,...)|p=Pudełko}}}}. Definicja skrótowa funkcji: <syntaxhighlight lang="lua"> p["Nazwa przedmiotowej przestrzeni nazw"]=function(frame,czy_uwzglednic_alternatywna_nazwe,i)...end; </syntaxhighlight> Wtedy ciało funkcji tej, czyli jego definicja w środku, jest: <syntaxhighlight lang="lua"> -- Jest liczony numer parametru nazwy przestrzeni nazw, domyslnie chodzi tu o numer bazowy parametrów przestrzennych; local numer_jednostki=i or frame.args["numer jednostki"]; local liczba_numer_jednostki=((numer_jednostki)and(tonumber(numer_jednostki))or 0); local pudelko_pomocne_modul=require("Module:Pudełko/Pomocne"); -- Liczy nazwę przestrzeni nazw przedmiotową na podstawie podanych parametrów; return pudelko_pomocne_modul.Nazwa_przestrzeni_nazw(frame,1, czy_uwzglednic_alternatywna_nazwe,liczba_numer_jednostki); </syntaxhighlight> Parametry funkcji: * {{Code|frame}} - tablica ramki tablicy transportu, * {{Code|czy_uwzglednic_alternatywna_nazwe}} - czy ma uwzględniać nazwę przestrzeni nazw domyślną szablonu, dostępne wartości: {{Code|false}}, w której nazwa domyślna nie jest uwzględniana wtedy, oraz {{Code|nil}} i {{Code|true}}, które oznaczają to samo, w tym jeżeli ona jest uwzględniana, wtedy jest brany parametr pierwszy dziecka, który musi istnieć przy takiej wartości tego parametru, tzn. {{Code|{{m|Pudełko|Nazwa przedmiotowej przestrzeni nazw|Dyskusja szablonu}}}} - ta nazwa domyślna zostanie zamieniona na przedmiotową, a jak ona by była przedmiotowa, to żadnej zamiany by nie było, a nazwa uzyskana z nazwy przestrzeni nazw z parametrów przestrzennych jest w takim przypadku błędna, to w takim razie brany jest ten parametr, a jeżeli ta nazwa domyślna jest błędna, czyli {{Code|{{m|Pudełko|Nazwa przedmiotowej przestrzeni nazw|Moja przestrzeń}}}}, wtedy funkcja zwraca stan błędu {{Code|(błąd)}}. * {{Code|i}} - numer zmiennej nazwy przestrzeni nazw. Funkcja wykorzystuje {{Code|{{sr|#p.Nazwa_przestrzeni_nazw(frame,...)|p=Pudełko/Pomocne}}}} do wyznaczania ogólnego nazwy przestrzeni nazw dla pozycji bazowej i numerkowej, tzn. dla pozycji: jeden, dwa, trzy,..., itd, i ich ogólnej. Parametr ramki tablicy transportu rodzica szablonu: * {{Code|nazwa przestrzeni nazw}}, {{Code|nazwa przestrzeni nazw 1}}, {{Code|nazwa przestrzeni nazw 2}}, {{Code|nazwa przestrzeni nazw 3}},..., {{Code|nazwa przestrzeni nazw i}} - nazwy przestrzeni nazw dla pozycji bazowej oraz zwykłej i ogólnej numerkowej, * {{Code|typ jednostki}}, {{Code|typ jednostki 1}}, {{Code|typ jednostki 2}}, {{Code|typ jednostki 3}},..., {{Code|typ jednostki i}} - typy jednostek, którym odpowiadają pewne przestrzenie przedmiotowe, dla pozycji bazowej, numerkowej i ogólnej. Parametry ramki tablicy transportu dziecka: * Parametry dziecka są takie same jak rodzica dla funkcji pudełkowej plus tu wymienione, * {{Code|numer jednostki}} - jak parametr {{Code|i}} nie został ustawiony, to wtedy liczy się ta zmienna. Przykłady: <syntaxhighlight lang="mediawiki"> {{Nazwa szablonu|nazwa przestrzeni nazw=Dyskusja Wikibooks|nazwa przestrzeni nazw 2=Dyskusja szablonu|nazwa przestrzeni nazw i=Dyskusja modułu}} </syntaxhighlight> W dziecku powiedzmy jest wywołanie, i szukamy nazwy przestrzeni nazw o numerze dwa, która nie została podana, ale istnieje za to jej wersji ogólna {{Code|nazwa przestrzeni nazw i}} i domyślna {{Code|nazwa przestrzeni nazw}}: <syntaxhighlight lang="mediawiki"> {{#invoke:Pudełko|Nazwa przedmiotowej przestrzeni nazw|numer jednostki=1}} </syntaxhighlight> Na podstawie powyższego przykładu otrzymamy wynik o schemacie, nie wyniku, bo tam nie ma zmiennej {{Code|nazwa przestrzeni nazw 1}}, ale jest {{Code|nazwa przestrzeni nazw i}}: <syntaxhighlight lang="mediawiki"> <!-- Ale nie "nazwa przestrzeni nazw", bo jej nie ma, ale za to istnieje "nazwa przestrzeni nazw i"; --> <!-- nazwa przestrzeni nazw 2=nazwa przestrzeni nazw i=Dyskusja modułu; --> <!-- Czyli wynik: --> Moduł <!-- Widzimy, że wygenerowała się nazwa przestrzeni nazw, którą jest przestrzeń przedmiotowa programowa przestrzeni dyskusji "Dyskusja modułu", którą również jest "Szablon" jego przestrzeni dyskusji "Dyskusja szablonu", a dla ich przestrzeni przedmiotowej, zamiast dyskusji, to samo przekształca się na to samo; --> </syntaxhighlight> Nie jest brana w tym powyższym przykładzie zmienna {{Code|nazwa przestrzeni nazw}}, bo jej nie ma, ale za to jest {{Code|nazwa przestrzeni nazw i}}, bo ona występuje jako parametr domyślny ogólny dla parametrów numerkowych. Przykłady w wikikodzie: * {{Code|{{m|Pudełko|Nazwa przedmiotowej przestrzeni nazw|numer jednostki{{=}}2}}}} → {{Tt|{{#invoke:Pudełko|Nazwa przedmiotowej przestrzeni nazw|numer jednostki=2}}}} * {{Code|{{m|Pudełko|Nazwa przedmiotowej przestrzeni nazw|Dyskusja szablonu|nazwa przestrzeni nazw i{{=}}Moja przestrzeń|numer jednostki{{=}}2}}}} → {{Tt|{{#invoke:Pudełko|Nazwa przedmiotowej przestrzeni nazw|Dyskusja szablonu|nazwa przestrzeni nazw i=Moja przestrzeń|numer jednostki=2}}}} * {{Code|{{m|Pudełko|Nazwa przedmiotowej przestrzeni nazw|nazwa przestrzeni nazw 2{{=}}Dyskusja szablonu|numer jednostki{{=}}2}}}} → {{Tt|{{#invoke:Pudełko|Nazwa przedmiotowej przestrzeni nazw|nazwa przestrzeni nazw 2=Dyskusja szablonu|numer jednostki=2}}}} * {{Code|{{m|Pudełko|Nazwa przedmiotowej przestrzeni nazw|nazwa przestrzeni nazw 2{{=}}Dyskusja szablonu|numer jednostki{{=}}2}}}} → {{Tt|{{#invoke:Pudełko|Nazwa przedmiotowej przestrzeni nazw|nazwa przestrzeni nazw i=Dyskusja szablonu|numer jednostki=2}}}} * {{Code|{{m|Pudełko|Nazwa przedmiotowej przestrzeni nazw|nazwa przestrzeni nazw{{=}}Dyskusja szablonu|numer jednostki{{=}}2}}}} → {{Tt|{{#invoke:Pudełko|Nazwa przedmiotowej przestrzeni nazw|nazwa przestrzeni nazw=Dyskusja szablonu|numer jednostki=2}}}} Powyżej dla przykładu podano parametry nie w rodzicu w szablonie, tylko w dziecku, jeśli chodzi o parametry nazw przestrzeni nazw, ale ich się za to nie powinno podawać w tych ramach, tylko w szablonach, w których wywoływane są te ramki pudełek {{Code|{{m|Pudełko}}}}, ale tak tutaj tak zrobiono by było najłatwiej sprawdzić działanie tego typu funkcji. Analogicznie możemy podawać parametry typu jednostki, np.: wywołaniu modułowym {{Code|{{m|Pudełko|Nazwa przedmiotowej przestrzeni nazw|typ jednostki 2{{=}}strona szablonu|numer jednostki{{=}}2}}}}, ale o tym więcej w rozdziałach {{Code|{{sr|# p["Przedmiotowy typ jednostki"](frame,i)|p=Pudełko}}}} w „{{sr|#Funkcje typu jednostki|p=Pudełko}}”, ale wtedy ta sama nazwa przestrzeni nazw reprezentowana przez {{Parametr|typ jednostki 2|strona szablonu}}, jest zamieniana na to samo, lepiej jest tutaj używać parametrów przestrzennych nazw niż typu jednostki, bo typ jednostki ma taką samą wartość dla przestrzeni przedmiotowej, co dyskusji. Tutaj parametr dyskusji typu jednostki bazowy i numerkowy ogólny, czy szczegółowy, nie gra roli, bo nawet, gdy wygenerujemy nazwę przestrzeni dyskusji za pomoca tego parametru, to i tak otrzymamy na samym końcu jego nazwę przedmiotową. Również parametry typu jednostki nie powinno się podawać w dziecku w ramce, tylko w rodzicu w szablonie jako parametry, w którym ta ramka jest wywoływana, ale tutaj podano jedynie dla przykładu, jak najłatwiej sprawdzić działanie tych parametrów tej funkcji. Najpierw w funkcji nagłówku brane są parametry nazw przestrzeni nazw, a jeżeli ich nie ma, to parametry typu jednostki, a jeżeli nie ma, to generowane są nazwy na podstawie aktualnego modułu. === {{Code|p["Nazwa przestrzeni nazw dyskusji"](frame,...)}} === Funkcja pisze nazwę przestrzeni nazw dyskusji jakikolwiek nazwy przestrzeni nazw (tzn. nazwę przedmiotową nazwy przestrzenie nazw, czyli nie dyskusji, zamieniana jest na dyskusji, czyli identyfikator przestrzeni się zmienia jeden wyżej, a dyskusji, nie przedmiotową, przekształca się na tą samą), według podanej w zmiennej {{Code|nazwa przestrzeni nazw}} dla pozycja bazowej w podanych parametrach szablonu rodzicu ramki dziecka, lub dla innej pozycji należy parametr podawać w formie {{Code|nazwa przestrzeni nazw 1}}, {{Code|nazwa przestrzeni nazw 2}}, {{Code|nazwa przestrzeni nazw 3}},..., lub te parametry można podać w postaci ogólnej {{Code|nazwa przestrzeni nazw i}}. Parametry podaje się w parametrach rodzica wywołania tej funkcji {{Code|{{m|Pudełko|Nazwa przestrzeni nazw dyskusji}}}} (ale ich nie trzeba podawać w dziecku, ale można) i w parametrach dziecka, jeśli chodzi o zmienną {{Code|numer jednostki}}, czyli np.: {{Code|{{m|Pudełko|Nazwa przestrzeni nazw dyskusji|numer jednostki{{=}}<jakaś liczba całkowita dodatnia>}}}}. Te parametry przestrzenne zamiast w rodzicu w szablonie można podać w ramce dziecka, wtedy parametry dziecka mają pierwszeństwo. Parametry przestrzenne mogą mogą być podane w postaci przestrzeni przedmiotowej lub dyskusji, ale ta funkcja zawsze ją zamienia na dyskusji. Przestrzeń nazw z parametrów nazw przestrzennych może odpowiadać wartości przestrzeni głównej, to wtedy odpowiednia przestrzeń nazw z parametru nazwy jednostki się nie liczy w tej funkcji, aby się liczyła należy użyć funkcji {{Code|{{sr|#p["Nazwa przestrzeni nazw dyskusji 2"](frame,...)|p=Pudełko}}}}. Definicja skrótowa funkcji: <syntaxhighlight lang="lua"> p["Nazwa przestrzeni nazw dyskusji"]=function(frame,czy_uwzglednic_alternatywna_nazwe,i)...end; </syntaxhighlight> Wtedy ciało funkcji tej, czyli jego definicja w środku, jest: <syntaxhighlight lang="lua"> -- Jest liczony numer parametru nazwy przestrzeni nazw, domyslnie chodzi tu o numer bazowy parametrów przestrzennych; local numer_jednostki=i or frame.args["numer jednostki"]; local liczba_numer_jednostki=((numer_jednostki)and(tonumber(numer_jednostki))or 0); local pudelko_pomocne_modul=require("Module:Pudełko/Pomocne"); -- Liczy nazwę przestrzeni nazw dyskusji na podstawie podanych parametrów; return pudelko_pomocne_modul.Nazwa_przestrzeni_nazw(frame,2, czy_uwzglednic_alternatywna_nazwe,liczba_numer_jednostki); </syntaxhighlight> Parametry funkcji: * {{Code|frame}} - tablica ramki tablicy transportu, * {{Code|czy_uwzglednic_alternatywna_nazwe}} - czy ma uwzględniać nazwę przestrzeni nazw domyślną szablonu, dostępne wartości: {{Code|false}}, w której nazwa domyślna nie jest uwzględniana wtedy, oraz {{Code|nil}} i {{Code|true}}, które oznaczają to samo, w tym jeżeli ona jest uwzględniana, wtedy jest brany parametr pierwszy dziecka, który musi istnieć przy takiej wartości tego parametru, tzn. {{Code|{{m|Pudełko|Nazwa przestrzeni nazw dyskusji|Szablon}}}} - ta nazwa domyślna zostanie przekształcona na dyskusji, a jeżeli ona by była dyskusji, to nie byłoby żadnego przekształcenia, a nazwa uzyskana nazwy przestrzeni nazw z parametrów przestrzennych jest w takim przypadku błędna, to w takim razie brany jest ten parametr, a jeżeli nazwa domyślna jest błędna, czyli {{Code|{{m|Pudełko|Nazwa przestrzeni nazw dyskusji|Moja przestrzeń}}}}, wtedy funkcja zwraca stan błędu {{Code|(błąd)}}. * {{Code|i}} - numer zmiennej nazwy przestrzeni nazw. Funkcja wykorzystuje {{Code|{{sr|#p.Nazwa_przestrzeni_nazw(frame,...)|p=Pudełko/Pomocne}}}} do wyznaczania ogólnego nazwy przestrzeni nazw dla pozycji bazowej i numerkowej, tzn. dla pozycji: jeden, dwa, trzy,..., itd, i ich ogólnej. Parametr ramki tablicy transportu rodzica szablonu: * {{Code|nazwa przestrzeni nazw}}, {{Code|nazwa przestrzeni nazw 1}}, {{Code|nazwa przestrzeni nazw 2}}, {{Code|nazwa przestrzeni nazw 3}},..., {{Code|nazwa przestrzeni nazw i}} - nazwy przestrzeni nazw dla pozycji bazowej oraz zwykłej i ogólnej numerkowej, * {{Code|typ jednostki}}, {{Code|typ jednostki 1}}, {{Code|typ jednostki 2}}, {{Code|typ jednostki 3}},..., {{Code|typ jednostki i}} - typy jednostek, którym odpowiadają pewne przestrzenie przedmiotowe, dla pozycji bazowej, numerkowej i ogólnej. Parametry ramki tablicy transportu dziecka: * Parametry dziecka są takie same jak rodzica dla funkcji pudełkowej plus tu wymienione, * {{Code|numer jednostki}} - jak parametr {{Code|i}} nie został ustawiony, to wtedy liczy się ta zmienna. Przykłady: <syntaxhighlight lang="mediawiki"> {{Nazwa szablonu|nazwa przestrzeni nazw=Wikibooks|nazwa przestrzeni nazw 2=Szablon|nazwa przestrzeni nazw i=Moduł}} </syntaxhighlight> W dziecku powiedzmy jest wywołanie, i szukamy nazwy przestrzeni nazw o numerze dwa, która nie została podana, ale istnieje za to jej wersji ogólna {{Code|nazwa przestrzeni nazw i}} i domyślna {{Code|nazwa przestrzeni nazw}}: <syntaxhighlight lang="mediawiki"> {{#invoke:Pudełko|Nazwa przestrzeni nazw dyskusji|numer jednostki=1}} </syntaxhighlight> Na podstawie powyższego przykładu otrzymamy wynik o schemacie, nie wyniku, bo tam nie ma zmiennej {{Code|nazwa przestrzeni nazw 1}}, ale jest {{Code|nazwa przestrzeni nazw i}}: <syntaxhighlight lang="mediawiki"> <!-- Ale nie "nazwa przestrzeni nazw", bo jej nie ma, ale za to istnieje "nazwa przestrzeni nazw i"; --> <!-- nazwa przestrzeni nazw 2=nazwa przestrzeni nazw i=Moduł; --> <!-- Czyli wynik: --> Dyskusja modułu <!-- Widzimy, że wygenerowała się nazwa przestrzeni nazw, którą jest przestrzeń dyskusji przestrzeni programowej przestrzeni przedmiotowej "Moduł", którą również jest "Szablon" jego przestrzeni dyskusji "Dyskusja szablonu", a dla ich przestrzeni przedmiotowej, zamiast dyskusji, to przekształca się na dyskusji jej odpowiadającą; --> </syntaxhighlight> Nie jest brana w tym powyższym przykładzie zmienna {{Code|nazwa przestrzeni nazw}}, bo jej nie ma, ale za to jest {{Code|nazwa przestrzeni nazw i}}, bo ona występuje jako parametr domyślny ogólny dla parametrów numerkowych. Przykłady w wikikodzie: * {{Code|{{m|Pudełko|Nazwa przestrzeni nazw dyskusji|numer jednostki{{=}}2}}}} → {{Tt|{{#invoke:Pudełko|Nazwa przestrzeni nazw dyskusji|numer jednostki=2}}}} * {{Code|{{m|Pudełko|Nazwa przestrzeni nazw dyskusji|Szablon|nazwa przestrzeni nazw i{{=}}Moja przestrzeń|numer jednostki{{=}}2}}}} → {{Tt|{{#invoke:Pudełko|Nazwa przestrzeni nazw dyskusji|Szablon|nazwa przestrzeni nazw i=Moja przestrzeń|numer jednostki=2}}}} * {{Code|{{m|Pudełko|Nazwa przestrzeni nazw dyskusji|nazwa przestrzeni nazw 2{{=}}Szablon|numer jednostki{{=}}2}}}} → {{Tt|{{#invoke:Pudełko|Nazwa przestrzeni nazw dyskusji|nazwa przestrzeni nazw 2=Szablon|numer jednostki=2}}}} * {{Code|{{m|Pudełko|Nazwa przestrzeni nazw dyskusji|nazwa przestrzeni nazw 2{{=}}Szablon|numer jednostki{{=}}2}}}} → {{Tt|{{#invoke:Pudełko|Nazwa przestrzeni nazw dyskusji|nazwa przestrzeni nazw i=Szablon|numer jednostki=2}}}} * {{Code|{{m|Pudełko|Nazwa przestrzeni nazw dyskusji|nazwa przestrzeni nazw{{=}}Szablon|numer jednostki{{=}}2}}}} → {{Tt|{{#invoke:Pudełko|Nazwa przestrzeni nazw dyskusji|nazwa przestrzeni nazw=Szablon|numer jednostki=2}}}} Powyżej dla przykładu podano parametry nie w rodzicu w szablonie, tylko w dziecku, jeśli chodzi o parametry nazw przestrzeni nazw, ale ich się za to nie powinno podawać w tych ramach, tylko w szablonach, w których wywoływane są te ramki pudełek {{Code|{{m|Pudełko}}}}, ale tak tutaj tak zrobiono by było najłatwiej sprawdzić działanie tego typu funkcji. Analogicznie możemy podawać parametry typu jednostki, np.: wywołaniu modułowym {{Code|{{m|Pudełko|Nazwa przestrzeni nazw dyskusji|typ jednostki 2{{=}}strona szablonu|numer jednostki{{=}}2}}}}, ale o tym więcej w rozdziałach {{Code|{{sr|# p["Dyskusyjny typ jednostki"](frame,i)|p=Pudełko}}}} w „{{sr|#Funkcje typu jednostki|p=Pudełko}}”, ale wtedy nazwa przestrzeni nazw reprezentowana przez {{Parametr|typ jednostki 2|strona szablonu}}, jest zamieniana na nazwę przestrzeni nazw dyskusji. Parametr dyskusji typu jednostki bazowy lub dla danego numerka ogólny, czy szczegółowy, nie gra roli. Również parametry typu jednostki nie powinno się podawać w dziecku w ramce, tylko w rodzicu w szablonie jako parametry, w którym ta ramka jest wywoływana, ale tutaj podano jedynie dla przykładu, jak najłatwiej sprawdzić działanie tych parametrów tej funkcji. Najpierw w funkcji nagłówku brane są parametry nazw przestrzeni nazw, a jeżeli ich nie ma, to parametry typu jednostki, a jeżeli nie ma, to generowane są nazwy na podstawie aktualnego modułu. == Funkcje nazw przestrzeni nazw drugiej wersji == === {{Code|p["Nazwa przestrzeni nazw 2"](frame,...)}} === Funkcja pisze nazwę przestrzeni nazw, niezależnie, czy to jest przedmiotowa, czy dyskusji, według, i nie zawsze tylko, podanej w zmiennej {{Code|nazwa przestrzeni nazw}} dla pozycja bazowej w podanych parametrach szablonu rodzicu ramki dziecka, lub dla innej pozycji należy parametr podawać w formie {{Code|nazwa przestrzeni nazw 1}}, {{Code|nazwa przestrzeni nazw 2}}, {{Code|nazwa przestrzeni nazw 3}},..., lub te parametry można podać w postaci ogólnej {{Code|nazwa przestrzeni nazw i}}. W tej funkcji trzeba też podawać parametry nazwy jednostek {{Code|nazwa jednostki}}, {{Code|nazwa jednostki 1}}, {{Code|nazwa jednostki 2}}, {{Code|nazwa jednostki 3}},... Parametry podaje się w parametrach rodzica wywołania tej funkcji {{Code|{{m|Pudełko|Nazwa przestrzeni nazw 2}}}} (ale ich nie trzeba podawać w dziecku, ale można) i w parametrach dziecka, jeśli chodzi o zmienną {{Code|numer jednostki}}, czyli np.: {{Code|{{m|Pudełko|Nazwa przestrzeni nazw 2|numer jednostki{{=}}<jakaś liczba całkowita dodatnia>}}}}. Te parametry przestrzenne zamiast w rodzicu w szablonie można podać w ramce dziecka, wtedy parametry dziecka mają pierwszeństwo. Przestrzeń nazw z parametrów nazw przestrzennych może odpowiadać wartości przestrzeni głównej, to wtedy odpowiednia przestrzeń nazw z parametru nazwy jednostki się liczy w tej funkcji, wtedy jest liczona nazwa przestrzeni nazw z tego parametru. Gdy parametry przestrzenne lub typ jednostki w drugim podejściu nie wskazują na przestrzeń główną, to wtedy działanie tej funkcji jest podobne do {{Code|{{sr|#p["Nazwa przestrzeni nazw"](frame,...)|p=Pudełko}}}}. Definicja skrótowa funkcji: <syntaxhighlight lang="lua"> p["Nazwa przestrzeni nazw 2"]=function(frame,czy_uwzglednic_alternatywna_nazwe,i)...end; </syntaxhighlight> Wtedy ciało funkcji tej, czyli jego definicja w środku, jest: <syntaxhighlight lang="lua"> local pudelko_pomocne_modul=require("Module:Pudełko/Pomocne"); -- Liczy nazwę przestrzeni nazw, jeżeli z parametrów przestrzennych przestrzeń wskazuje na główną, to wtedy jest liczona przestrzeń nazw z nazwy jednostki; return pudelko_pomocne_modul.Nazwa_przestrzeni_nazw_2(frame,czy_uwzglednic_alternatywna_nazwe,i) </syntaxhighlight> Parametry funkcji: * {{Code|frame}} - tablica ramki tablicy transportu, * {{Code|czy_uwzglednic_alternatywna_nazwe}} - czy ma uwzględniać nazwę przestrzeni nazw domyślną szablonu, dostępne wartości: {{Code|false}}, w której nazwa domyślna nie jest uwzględniana wtedy, oraz {{Code|nil}} i {{Code|true}}, które oznaczają to samo, w tym jeżeli ona jest uwzględniana, wtedy jest brany parametr pierwszy dziecka, który musi istnieć przy takiej wartości tego parametru, tzn. {{Code|{{m|Pudełko|Nazwa przestrzeni nazw 2|Szablon}}}}, a nazwa uzyskana nazwy przestrzeni nazw jest w takim przypadku błędna, a jeżeli nazwa domyślna jest błędna, czyli {{Code|{{m|Pudełko|Nazwa przestrzeni nazw 2|Moja przestrzeń}}}}, wtedy funkcja zwraca stan błędu {{Code|(błąd)}}. * {{Code|i}} - numer zmiennej nazwy przestrzeni nazw. Funkcja wykorzystuje {{Code|{{sr|#p.Nazwa_przestrzeni_nazw_2(frame,...)|p=Pudełko/Pomocne}}}} do wyznaczania ogólnego nazwy przestrzeni nazw dla pozycji bazowej i numerkowej, tzn. dla pozycji: jeden, dwa, trzy,..., itd, i ich ogólnej. Parametr ramki tablicy transportu rodzica szablonu: * {{Code|nazwa przestrzeni nazw}}, {{Code|nazwa przestrzeni nazw 1}}, {{Code|nazwa przestrzeni nazw 2}}, {{Code|nazwa przestrzeni nazw 3}},..., {{Code|nazwa przestrzeni nazw i}} - nazwy przestrzeni nazw dla pozycji bazowej oraz zwykłej i ogólnej numerkowej, * {{Code|nazwa jednostki}}, {{Code|nazwa jednostki 1}}, {{Code|nazwa jednostki 2}}, {{Code|nazwa jednostki 3}},... - nazwy jednostek dla pozycji bazowej i numerkowej, * {{Code|typ jednostki}}, {{Code|typ jednostki 1}}, {{Code|typ jednostki 2}}, {{Code|typ jednostki 3}},..., {{Code|typ jednostki i}} - typy jednostek, którym odpowiadają pewne przestrzenie przedmiotowe, dla pozycji bazowej, numerkowej i ogólnej, ** {{Code|dyskusja typu jednostki}}, {{Code|dyskusja typu jednostki 1}}, {{Code|dyskusja typ jednostki 2}}, {{Code|dyskusja typ jednostki 3}},..., {{Code|dyskusja typ jednostki i}} - czy dany typ jednostki ma przedstawiać, jeśli niepusta, przestrzeń dyskusji dla pozycji bazowej, numerkowej i ogólnej. Parametry ramki tablicy transportu dziecka: * Parametry dziecka są takie same jak rodzica dla funkcji pudełkowej plus tu wymienione, * {{Code|numer jednostki}} - jak parametr {{Code|i}} nie został ustawiony, to wtedy liczy się ta zmienna. Przykłady: <syntaxhighlight lang="mediawiki"> {{Nazwa szablonu|nazwa przestrzeni nazw=Wikibooks|nazwa przestrzeni nazw 1=Szablon|nazwa przestrzeni nazw i=|nazwa jednostki 2=Wikibooks:Strona}} </syntaxhighlight> W dziecku powiedzmy jest wywołanie, i szukamy nazwy przestrzeni nazw o numerze dwa, która została podana, ale istnieje za to jej wersji ogólna {{Code|nazwa przestrzeni nazw i}} i domyślna {{Code|nazwa przestrzeni nazw}}, ale wtedy dla tego numerkowego liczy się to ogólne z {{Code| i}}, a ponieważ ta nazwa jest pusta, więc będziemy liczyli nazwę przestrzeni nazw z {{Code|nazwa jednostki 2}}: <syntaxhighlight lang="mediawiki"> {{#invoke:Pudełko|Nazwa przestrzeni nazw 2|numer jednostki=2}} </syntaxhighlight> Na podstawie powyższego przykładu otrzymamy wynik o schemacie, nie wyniku, bo tam nie ma zmiennej {{Code|nazwa przestrzeni nazw 1}}, ale jest {{Code|nazwa przestrzeni nazw i}}: <syntaxhighlight lang="mediawiki"> <!-- Ale nie "nazwa przestrzeni nazw 2", bo jej nie ma, ale za to istnieje "nazwa przestrzeni nazw i"; --> <!-- nazwa przestrzeni nazw 2=nazwa przestrzeni nazw i="", a nazwa jednostki 2="Wikibooks:Strona"; --> <!-- Czyli wynik: --> Wikibooks <!-- Widzimy, że wygenerowała się nazwa przestrzeni nazw, którą jest przestrzeń nieprogramowa, ale projektu, wychodząca z nazwy jednostek w tym przypadku z "nazwa jednostki 2"; --> </syntaxhighlight> Nie jest brana w tym powyższym przykładzie zmienna {{Code|nazwa przestrzeni nazw}}, bo jej nie ma, ale za to jest {{Code|nazwa przestrzeni nazw i}}, bo ona występuje jako parametr domyślny ogólny dla parametrów numerkowych. Tytaj jest używana jest zmienna {{Code|nazwa jednostki 2}} do wygenerowania ostatecznego wyniku, bo jak można zauważyć, parametry przestrzenne wskazują na przestrzeń główną, a nazwy jednostek już nie. Przykłady w wikikodzie: * {{Code|{{m|Pudełko|Nazwa przestrzeni nazw 2|numer jednostki{{=}}2}}}} → {{Tt|{{#invoke:Pudełko|Nazwa przestrzeni nazw 2|numer jednostki=2}}}} * {{Code|{{m|Pudełko|Nazwa przestrzeni nazw 2|Szablon|nazwa przestrzeni nazw i{{=}}Moja przestrzeń|numer jednostki{{=}}2}}}} → {{Tt|{{#invoke:Pudełko|Nazwa przestrzeni nazw 2|Szablon|nazwa przestrzeni nazw i=Moja przestrzeń|numer jednostki=2}}}} * {{Code|{{m|Pudełko|Nazwa przestrzeni nazw 2|nazwa przestrzeni nazw 2{{=}}|nazwa jednostki 2{{=}}Szablon:Strona|numer jednostki{{=}}2}}}} → {{Tt|{{#invoke:Pudełko|Nazwa przestrzeni nazw 2|nazwa przestrzeni nazw 2=|nazwa jednostki 2=Szablon:Strona|numer jednostki=2}}}} * {{Code|{{m|Pudełko|Nazwa przestrzeni nazw 2|nazwa przestrzeni nazw i{{=}}|nazwa jednostki 2{{=}}Szablon:Strona|numer jednostki{{=}}2}}}} → {{Tt|{{#invoke:Pudełko|Nazwa przestrzeni nazw 2|nazwa przestrzeni nazw i=|nazwa jednostki 2=Szablon:Strona|numer jednostki=2}}}} * {{Code|{{m|Pudełko|Nazwa przestrzeni nazw 2|Szablon|nazwa przestrzeni nazw{{=}}|nazwa jednostki 2{{=}}Wikibooks:Strona|numer jednostki{{=}}2}}}} → {{Tt|{{#invoke:Pudełko|Nazwa przestrzeni nazw 2|Szablon|nazwa przestrzeni nazw=|nazwa jednostki 2=Wikibooks:Strona|numer jednostki=2}}}} Powyżej dla przykładu podano parametry nie w rodzicu w szablonie, tylko w dziecku, jeśli chodzi o parametry nazw przestrzeni nazw i nazw jednostek, ale ich się za to nie powinno podawać w tych ramach, tylko w szablonach, w których wywoływane są te ramki pudełek {{Code|{{m|Pudełko}}}}, ale tak tutaj tak zrobiono by było najłatwiej sprawdzić działanie tego typu funkcji. Analogicznie możemy podawać parametry typu jednostki, np.: wywołaniu modułowym {{Code|{{m|Pudełko|Nazwa przestrzeni nazw 2|typ jednostki 2{{=}}Podręcznik|nazwa jednostki 2{{=}}Szablon:Strona|numer jednostki{{=}}2}}}} (ale wtedy jest brana przestrzeń nazw z nazwy jednostki), ale o tym więcej w rozdziałach {{Code|{{sr|#p["Typ jednostki 2"](frame,i)|p=Pudełko}}}} w „{{sr|#Funkcje typu jednostki|p=Pudełko}}”, on definiuje przestrzenie przedmiotowe, ale można użyć parametru dyskusji typu jednostki z wartością niepustą, wtedy wyświetli się nazwa przestrzeni nazw dyskusji. Jeżeli typ jednostki wskazuje na przestrzeń nazw główną, wtedy się liczą parametry nazw jednostek. Również parametry typu jednostki nie powinno się podawać w dziecku w ramce, tylko w rodzicu w szablonie jako parametry, w którym ta ramka jest wywoływana, ale tutaj podano jedynie dla przykładu, jak najłatwiej sprawdzić działanie tych parametrów tej funkcji. Najpierw w funkcji nagłówku brane są parametry nazw przestrzeni nazw, a jeżeli ich nie ma, to parametry typu jednostki, a jeżeli nie ma lub parametry przestrzenne wskazują na przestrzeń główną, i nie ma nazwy jednostki, to generowane są nazwy tej funkcji na podstawie aktualnej strony. === {{Code|p["Nazwa przedmiotowej przestrzeni nazw 2"](frame,...)}} === Funkcja pisze przedmiotową nazwę przestrzeni nazw jakikolwiek nazwy przestrzeni nazw (tzn. nazwę przedmiotową nazwy przestrzenie nazw, czyli nie dyskusji, zamieniana jest na nią samą, czyli identyfikator przestrzeni się nie zmienia, a dyskusji, nie przedmiotową, przekształca się na przedmiotową jej odpowiadającą, czyli w tym przypadku identyfikator przestrzeni zmniejsza się o numer mniej), według, i nie zawsze tylko, podanej w zmiennej {{Code|nazwa przestrzeni nazw}} dla pozycja bazowej w podanych parametrach szablonu rodzicu ramki dziecka, lub dla innej pozycji należy parametr podawać w formie {{Code|nazwa przestrzeni nazw 1}}, {{Code|nazwa przestrzeni nazw 2}}, {{Code|nazwa przestrzeni nazw 3}},..., lub te parametry można podać w postaci ogólnej {{Code|nazwa przestrzeni nazw i}}. W tej funkcji trzeba też podawać parametry nazwy jednostek {{Code|nazwa jednostki}}, {{Code|nazwa jednostki 1}}, {{Code|nazwa jednostki 2}}, {{Code|nazwa jednostki 3}},... Parametry podaje się w parametrach rodzica wywołania tej funkcji {{Code|{{m|Pudełko|Nazwa przedmiotowej przestrzeni nazw 2}}}} (ale ich nie trzeba podawać w dziecku, ale można) i w parametrach dziecka, jeśli chodzi o zmienną {{Code|numer jednostki}}, czyli np.: {{Code|{{m|Pudełko|Nazwa przedmiotowej przestrzeni nazw 2|numer jednostki{{=}}<jakaś liczba całkowita dodatnia>}}}}. Te parametry przestrzenne zamiast w rodzicu w szablonie można podać w ramce dziecka, wtedy parametry dziecka mają pierwszeństwo. Przestrzeń nazw z parametrów nazw przestrzennych po przekształceniu na przedmiotową może odpowiadać wartości przestrzeni głównej, to wtedy odpowiednia przestrzeń nazw z parametru nazwy jednostki się liczy w tej funkcji, wtedy jest liczona nazwa przestrzeni nazw z tego parametru. Gdy parametry przestrzenne lub typ jednostki w drugim podejściu nie wskazują na przestrzeń główną, to wtedy działanie tej funkcji jest podobne do {{Code|{{sr|#p["Nazwa przedmiotowej przestrzeni nazw"](frame,...)|p=Pudełko}}}}. Definicja skrótowa funkcji: <syntaxhighlight lang="lua"> p["Nazwa przedmiotowej przestrzeni nazw 2"]=function(frame,czy_uwzglednic_alternatywna_nazwe,i)...end; </syntaxhighlight> Wtedy ciało funkcji tej, czyli jego definicja w środku, jest: <syntaxhighlight lang="lua"> local pudelko_pomocne_modul=require("Module:Pudełko/Pomocne"); return pudelko_pomocne_modul.Nazwa_przestrzeni_nazw_przedmiotowa_dyskusji_2(frame,czy_uwzglednic_alternatywna_nazwe,i,"przedmiotowa"); </syntaxhighlight> Parametry funkcji: * {{Code|frame}} - tablica ramki tablicy transportu, * {{Code|czy_uwzglednic_alternatywna_nazwe}} - czy ma uwzględniać nazwę przestrzeni nazw domyślną szablonu, dostępne wartości: {{Code|false}}, w której nazwa domyślna nie jest uwzględniana wtedy, oraz {{Code|nil}} i {{Code|true}}, które oznaczają to samo, w tym jeżeli ona jest uwzględniana, wtedy jest brany parametr pierwszy dziecka, który musi istnieć przy takiej wartości tego parametru, tzn. {{Code|{{m|Pudełko|Nazwa przedmiotowej przestrzeni nazw 2|Szablon}}}}, a nazwa uzyskana nazwy przestrzeni nazw jest w takim przypadku błędna, a jeżeli nazwa domyślna jest błędna, czyli {{Code|{{m|Pudełko|Nazwa przedmiotowej przestrzeni nazw 2|Moja przestrzeń}}}}, wtedy funkcja zwraca stan błędu {{Code|(błąd)}}. * {{Code|i}} - numer zmiennej nazwy przestrzeni nazw. Funkcja wykorzystuje {{Code|{{sr|#p.Nazwa_przestrzeni_nazw_przedmiotowa_dyskusji_2(frame,...)|p=Pudełko/Pomocne}}}} do wyznaczania ogólnego nazwy przestrzeni nazw dla pozycji bazowej i numerkowej, tzn. dla pozycji: jeden, dwa, trzy,..., itd, i ich ogólnej. Parametr ramki tablicy transportu rodzica szablonu: * {{Code|nazwa przestrzeni nazw}}, {{Code|nazwa przestrzeni nazw 1}}, {{Code|nazwa przestrzeni nazw 2}}, {{Code|nazwa przestrzeni nazw 3}},..., {{Code|nazwa przestrzeni nazw i}} - nazwy przestrzeni nazw dla pozycji bazowej oraz zwykłej i ogólnej numerkowej, * {{Code|nazwa jednostki}}, {{Code|nazwa jednostki 1}}, {{Code|nazwa jednostki 2}}, {{Code|nazwa jednostki 3}},... - nazwy jednostek dla pozycji bazowej i numerkowej, * {{Code|typ jednostki}}, {{Code|typ jednostki 1}}, {{Code|typ jednostki 2}}, {{Code|typ jednostki 3}},..., {{Code|typ jednostki i}} - typy jednostek, którym odpowiadają pewne przestrzenie przedmiotowe, dla pozycji bazowej, numerkowej i ogólnej. Parametry ramki tablicy transportu dziecka: * Parametry dziecka są takie same jak rodzica dla funkcji pudełkowej plus tu wymienione, * {{Code|numer jednostki}} - jak parametr {{Code|i}} nie został ustawiony, to wtedy liczy się ta zmienna. Przykłady: <syntaxhighlight lang="mediawiki"> {{Nazwa szablonu|nazwa przestrzeni nazw=Wikibooks|nazwa przestrzeni nazw 1=Szablon|nazwa przestrzeni nazw i=|nazwa jednostki 2=Dyskusja Wikibooks:Strona}} </syntaxhighlight> W dziecku powiedzmy jest wywołanie, i szukamy nazwy przestrzeni nazw o numerze dwa, która została podana, ale istnieje za to jej wersji ogólna {{Code|nazwa przestrzeni nazw i}} i domyślna {{Code|nazwa przestrzeni nazw}}, ale wtedy dla tego numerkowego liczy się to ogólne z {{Code| i}}, a ponieważ ta nazwa jest pusta, więc będziemy liczyli nazwę przestrzeni nazw z {{Code|nazwa jednostki 2}}: <syntaxhighlight lang="mediawiki"> {{#invoke:Pudełko|Nazwa przedmiotowej przestrzeni nazw 2|numer jednostki=2}} </syntaxhighlight> Na podstawie powyższego przykładu otrzymamy wynik o schemacie, nie wyniku, bo tam nie ma zmiennej {{Code|nazwa przestrzeni nazw 1}}, ale jest {{Code|nazwa przestrzeni nazw i}}: <syntaxhighlight lang="mediawiki"> <!-- Ale nie "nazwa przestrzeni nazw 2", bo jej nie ma, ale za to istnieje "nazwa przestrzeni nazw i"; --> <!-- nazwa przestrzeni nazw 2=nazwa przestrzeni nazw i="", a nazwa jednostki 2="Dyskusja Wikibooks:Strona"; --> <!-- Czyli wynik: --> Wikibooks <!-- Widzimy, że wygenerowała się nazwa przestrzeni nazw, którą jest przestrzeń nieprogramowa, ale projektu, wychodząca z nazwy jednostek w tym przypadku z "nazwa jednostki 2"; --> </syntaxhighlight> Nie jest brana w tym powyższym przykładzie zmienna {{Code|nazwa przestrzeni nazw}}, bo jej nie ma, ale za to jest {{Code|nazwa przestrzeni nazw i}}, bo ona występuje jako parametr domyślny ogólny dla parametrów numerkowych. Tytaj jest używana jest zmienna {{Code|nazwa jednostki 2}} do wygenerowania ostatecznego wyniku, bo jak można zauważyć, parametry przestrzenne wskazują na przestrzeń główną, a nazwy jednostek już nie. Przykłady w wikikodzie: * {{Code|{{m|Pudełko|Nazwa przedmiotowej przestrzeni nazw 2|numer jednostki{{=}}2}}}} → {{Tt|{{#invoke:Pudełko|Nazwa przedmiotowej przestrzeni nazw 2|numer jednostki=2}}}} * {{Code|{{m|Pudełko|Nazwa przedmiotowej przestrzeni nazw 2|Dyskusja szablonu|nazwa przestrzeni nazw i{{=}}Moja przestrzeń|numer jednostki{{=}}2}}}} → {{Tt|{{#invoke:Pudełko|Nazwa przedmiotowej przestrzeni nazw 2|Dyskusja szablonu|nazwa przestrzeni nazw i=Moja przestrzeń|numer jednostki=2}}}} * {{Code|{{m|Pudełko|Nazwa przedmiotowej przestrzeni nazw 2|nazwa przestrzeni nazw 2{{=}}Dyskusja|nazwa jednostki 2{{=}}Dyskusja szablonu:Strona|numer jednostki{{=}}2}}}} → {{Tt|{{#invoke:Pudełko|Nazwa przedmiotowej przestrzeni nazw 2|nazwa przestrzeni nazw 2=Dyskusja|nazwa jednostki 2=Dyskusja szablonu:Strona|numer jednostki=2}}}} * {{Code|{{m|Pudełko|Nazwa przedmiotowej przestrzeni nazw 2|nazwa przestrzeni nazw i{{=}}Dyskusja|nazwa jednostki 2{{=}}Dyskusja szablonu:Strona|numer jednostki{{=}}2}}}} → {{Tt|{{#invoke:Pudełko|Nazwa przedmiotowej przestrzeni nazw 2|nazwa przestrzeni nazw i=Dyskusja|nazwa jednostki 2=Dyskusja szablonu:Strona|numer jednostki=2}}}} * {{Code|{{m|Pudełko|Nazwa przedmiotowej przestrzeni nazw 2|Dyskusja szablonu|nazwa przestrzeni nazw{{=}}Dyskusja|nazwa jednostki 2{{=}}Wikibooks:Strona|numer jednostki{{=}}2}}}} → {{Tt|{{#invoke:Pudełko|Nazwa przedmiotowej przestrzeni nazw 2|Dyskusja szablonu|nazwa przestrzeni nazw=Dyskusja|nazwa jednostki 2=Dyskusja Wikibooks:Strona|numer jednostki=2}}}} Powyżej dla przykładu podano parametry nie w rodzicu w szablonie, tylko w dziecku, jeśli chodzi o parametry nazw przestrzeni nazw i nazw jednostek, ale ich się za to nie powinno podawać w tych ramach, tylko w szablonach, w których wywoływane są te ramki pudełek {{Code|{{m|Pudełko}}}}, ale tak tutaj tak zrobiono by było najłatwiej sprawdzić działanie tego typu funkcji. Analogicznie możemy podawać parametry typu jednostki, np.: wywołaniu modułowym {{Code|{{m|Pudełko|Nazwa przedmiotowej przestrzeni nazw 2|typ jednostki 2{{=}}Podręcznik|nazwa jednostki 2{{=}}Dyskusja szablonu:Strona|numer jednostki{{=}}2}}}} (ale wtedy jest brana przestrzeń nazw z nazwy jednostki), ale o tym więcej w rozdziałach {{Code|{{sr|# p["Przedmiotowy typ jednostki 2"](frame,i)|p=Pudełko}}}} w „{{sr|#Funkcje typu jednostki|p=Pudełko}}”, on definiuje przestrzenie przedmiotowe, ale można użyć parametru dyskusji typu jednostki z wartością niepustą, pustą, czy nawet jej nie podamy, wtedy wyświetli się nazwa przestrzeni nazw przedmiotowej. Jeżeli typ jednostki wskazuje na przestrzeń nazw główną, wtedy się liczą parametry nazw jednostek. Również parametry typu jednostki nie powinno się podawać w dziecku w ramce, tylko w rodzicu w szablonie jako parametry, w którym ta ramka jest wywoływana, ale tutaj podano jedynie dla przykładu, jak najłatwiej sprawdzić działanie tych parametrów tej funkcji. Najpierw w funkcji nagłówku brane są parametry nazw przestrzeni nazw, a jeżeli ich nie ma, to parametry typu jednostki, a jeżeli nie ma lub parametry przestrzenne wskazują na przestrzeń główną, i nie ma nazwy jednostki, to generowane są nazwy tej funkcji na podstawie aktualnej strony. === {{Code|p["Nazwa przestrzeni nazw dyskusji 2"](frame,...)}} === Funkcja pisze nazwę przestrzeni nazw dyskusji jakikolwiek nazwy przestrzeni nazw (tzn. nazwę dyskusji nazwy przestrzenie nazw, czyli nie przedmiotowej, zamieniana jest na nią samą, czyli identyfikator przestrzeni się nie zmienia, a przedmiotową, nie dyskusji, przekształca się na dyskusji jej odpowiadającą, czyli w tym przypadku identyfikator przestrzeni zwiększa się o numer więcej), według, i nie zawsze tylko, podanej w zmiennej {{Code|nazwa przestrzeni nazw}} dla pozycja bazowej w podanych parametrach szablonu rodzicu ramki dziecka, lub dla innej pozycji należy parametr podawać w formie {{Code|nazwa przestrzeni nazw 1}}, {{Code|nazwa przestrzeni nazw 2}}, {{Code|nazwa przestrzeni nazw 3}},..., lub te parametry można podać w postaci ogólnej {{Code|nazwa przestrzeni nazw i}}. W tej funkcji trzeba też podawać parametry nazwy jednostek {{Code|nazwa jednostki}}, {{Code|nazwa jednostki 1}}, {{Code|nazwa jednostki 2}}, {{Code|nazwa jednostki 3}},... Parametry podaje się w parametrach rodzica wywołania tej funkcji {{Code|{{m|Pudełko|Nazwa przestrzeni nazw dyskusji 2}}}} (ale ich nie trzeba podawać w dziecku, ale można) i w parametrach dziecka, jeśli chodzi o zmienną {{Code|numer jednostki}}, czyli np.: {{Code|{{m|Pudełko|Nazwa przestrzeni nazw dyskusji 2|numer jednostki{{=}}<jakaś liczba całkowita dodatnia>}}}}. Te parametry przestrzenne zamiast w rodzicu w szablonie można podać w ramce dziecka, wtedy parametry dziecka mają pierwszeństwo. Przestrzeń nazw z parametrów nazw przestrzennych po przekształceniu na przedmiotową może odpowiadać wartości przestrzeni głównej, to wtedy odpowiednia przestrzeń nazw z parametru nazwy jednostki się liczy w tej funkcji, wtedy jest liczona nazwa przestrzeni nazw z tego parametru. Gdy parametry przestrzenne lub typ jednostki w drugim podejściu nie wskazują na przestrzeń główną, to wtedy działanie tej funkcji jest podobne do {{Code|{{sr|#p["Nazwa dyskusji przestrzeni nazw"](frame,...)|p=Pudełko}}}}. Definicja skrótowa funkcji: <syntaxhighlight lang="lua"> p["Nazwa przestrzeni nazw dyskusji 2"]=function(frame,czy_uwzglednic_alternatywna_nazwe,i)...end; </syntaxhighlight> Wtedy ciało funkcji tej, czyli jego definicja w środku, jest: <syntaxhighlight lang="lua"> local pudelko_pomocne_modul=require("Module:Pudełko/Pomocne"); return pudelko_pomocne_modul.Nazwa_przestrzeni_nazw_przedmiotowa_dyskusji_2(frame,czy_uwzglednic_alternatywna_nazwe,i,"dyskusja"); </syntaxhighlight> Parametry funkcji: * {{Code|frame}} - tablica ramki tablicy transportu, * {{Code|czy_uwzglednic_alternatywna_nazwe}} - czy ma uwzględniać nazwę przestrzeni nazw domyślną szablonu, dostępne wartości: {{Code|false}}, w której nazwa domyślna nie jest uwzględniana wtedy, oraz {{Code|nil}} i {{Code|true}}, które oznaczają to samo, w tym jeżeli ona jest uwzględniana, wtedy jest brany parametr pierwszy dziecka, który musi istnieć przy takiej wartości tego parametru, tzn. {{Code|{{m|Pudełko|Nazwa przestrzeni nazw dyskusji 2|Szablon}}}}, a nazwa uzyskana nazwy przestrzeni nazw jest w takim przypadku błędna, a jeżeli nazwa domyślna jest błędna, czyli {{Code|{{m|Pudełko|Nazwa przestrzeni nazw dyskusji 2|Moja przestrzeń}}}}, wtedy funkcja zwraca stan błędu {{Code|(błąd)}}. * {{Code|i}} - numer zmiennej nazwy przestrzeni nazw. Funkcja wykorzystuje {{Code|{{sr|#p.Nazwa_przestrzeni_nazw_przedmiotowa_dyskusji_2(frame,...)|p=Pudełko/Pomocne}}}} do wyznaczania ogólnego nazwy przestrzeni nazw dla pozycji bazowej i numerkowej, tzn. dla pozycji: jeden, dwa, trzy,..., itd, i ich ogólnej. Parametr ramki tablicy transportu rodzica szablonu: * {{Code|nazwa przestrzeni nazw}}, {{Code|nazwa przestrzeni nazw 1}}, {{Code|nazwa przestrzeni nazw 2}}, {{Code|nazwa przestrzeni nazw 3}},..., {{Code|nazwa przestrzeni nazw i}} - nazwy przestrzeni nazw dla pozycji bazowej oraz zwykłej i ogólnej numerkowej, * {{Code|nazwa jednostki}}, {{Code|nazwa jednostki 1}}, {{Code|nazwa jednostki 2}}, {{Code|nazwa jednostki 3}},... - nazwy jednostek dla pozycji bazowej i numerkowej, * {{Code|typ jednostki}}, {{Code|typ jednostki 1}}, {{Code|typ jednostki 2}}, {{Code|typ jednostki 3}},..., {{Code|typ jednostki i}} - typy jednostek, którym odpowiadają pewne przestrzenie przedmiotowe, dla pozycji bazowej, numerkowej i ogólnej. Parametry ramki tablicy transportu dziecka: * Parametry dziecka są takie same jak rodzica dla funkcji pudełkowej plus tu wymienione, * {{Code|numer jednostki}} - jak parametr {{Code|i}} nie został ustawiony, to wtedy liczy się ta zmienna. Przykłady: <syntaxhighlight lang="mediawiki"> {{Nazwa szablonu|nazwa przestrzeni nazw=Wikibooks|nazwa przestrzeni nazw 1=Szablon|nazwa przestrzeni nazw i=|nazwa jednostki 2=Wikibooks:Strona}} </syntaxhighlight> W dziecku powiedzmy jest wywołanie, i szukamy nazwy przestrzeni nazw o numerze dwa, która została podana, ale istnieje za to jej wersji ogólna {{Code|nazwa przestrzeni nazw i}} i domyślna {{Code|nazwa przestrzeni nazw}}, ale wtedy dla tego numerkowego liczy się to ogólne z {{Code| i}}, a ponieważ ta nazwa jest pusta, więc będziemy liczyli nazwę przestrzeni nazw z {{Code|nazwa jednostki 2}}: <syntaxhighlight lang="mediawiki"> {{#invoke:Pudełko|Nazwa przestrzeni nazw dyskusji 2|numer jednostki=2}} </syntaxhighlight> Na podstawie powyższego przykładu otrzymamy wynik o schemacie, nie wyniku, bo tam nie ma zmiennej {{Code|nazwa przestrzeni nazw 1}}, ale jest {{Code|nazwa przestrzeni nazw i}}: <syntaxhighlight lang="mediawiki"> <!-- Ale nie "nazwa przestrzeni nazw 2", bo jej nie ma, ale za to istnieje "nazwa przestrzeni nazw i"; --> <!-- nazwa przestrzeni nazw 2=nazwa przestrzeni nazw i="", a nazwa jednostki 2="Wikibooks:Strona"; --> <!-- Czyli wynik: --> Dyskusja Wikibooks <!-- Widzimy, że wygenerowała się nazwa przestrzeni nazw, którą jest przestrzeń nieprogramowa, ale dyskusji projektu, wychodząca z nazwy jednostek w tym przypadku z "nazwa jednostki 2"; --> </syntaxhighlight> Nie jest brana w tym powyższym przykładzie zmienna {{Code|nazwa przestrzeni nazw}}, bo jej nie ma, ale za to jest {{Code|nazwa przestrzeni nazw i}}, bo ona występuje jako parametr domyślny ogólny dla parametrów numerkowych. Tytaj jest używana jest zmienna {{Code|nazwa jednostki 2}} do wygenerowania ostatecznego wyniku, bo jak można zauważyć, parametry przestrzenne wskazują na przestrzeń główną, a nazwy jednostek już nie. Przykłady w wikikodzie: * {{Code|{{m|Pudełko|Nazwa przestrzeni nazw dyskusji 2|numer jednostki{{=}}2}}}} → {{Tt|{{#invoke:Pudełko|Nazwa przestrzeni nazw dyskusji 2|numer jednostki=2}}}} * {{Code|{{m|Pudełko|Nazwa przestrzeni nazw dyskusji 2|Szablon|nazwa przestrzeni nazw i{{=}}Moja przestrzeń|numer jednostki{{=}}2}}}} → {{Tt|{{#invoke:Pudełko|Nazwa przestrzeni nazw dyskusji 2|Szablon|nazwa przestrzeni nazw i=Moja przestrzeń|numer jednostki=2}}}} * {{Code|{{m|Pudełko|Nazwa przestrzeni nazw dyskusji 2|nazwa przestrzeni nazw 2{{=}}|nazwa jednostki 2{{=}}Szablon:Strona|numer jednostki{{=}}2}}}} → {{Tt|{{#invoke:Pudełko|Nazwa przestrzeni nazw dyskusji 2|nazwa przestrzeni nazw 2=|nazwa jednostki 2=Szablon:Strona|numer jednostki=2}}}} * {{Code|{{m|Pudełko|Nazwa przestrzeni nazw dyskusji 2|nazwa przestrzeni nazw i{{=}}|nazwa jednostki 2{{=}}Szablon:Strona|numer jednostki{{=}}2}}}} → {{Tt|{{#invoke:Pudełko|Nazwa przestrzeni nazw dyskusji 2|nazwa przestrzeni nazw i=|nazwa jednostki 2=Szablon:Strona|numer jednostki=2}}}} * {{Code|{{m|Pudełko|Nazwa przestrzeni nazw dyskusji 2|Szablon|nazwa przestrzeni nazw{{=}}|nazwa jednostki 2{{=}}Wikibooks:Strona|numer jednostki{{=}}2}}}} → {{Tt|{{#invoke:Pudełko|Nazwa przestrzeni nazw dyskusji 2|Szablon|nazwa przestrzeni nazw=|nazwa jednostki 2=Dyskusja Wikibooks:Strona|numer jednostki=2}}}} Powyżej dla przykładu podano parametry nie w rodzicu w szablonie, tylko w dziecku, jeśli chodzi o parametry nazw przestrzeni nazw i nazw jednostek, ale ich się za to nie powinno podawać w tych ramach, tylko w szablonach, w których wywoływane są te ramki pudełek {{Code|{{m|Pudełko}}}}, ale tak tutaj tak zrobiono by było najłatwiej sprawdzić działanie tego typu funkcji. Analogicznie możemy podawać parametry typu jednostki, np.: wywołaniu modułowym {{Code|{{m|Pudełko|Nazwa przestrzeni nazw dyskusji 2|typ jednostki 2{{=}}Podręcznik|nazwa jednostki 2{{=}}Szablon:Strona|numer jednostki{{=}}2}}}} (ale wtedy jest brana przestrzeń nazw z nazwy jednostki), ale o tym więcej w rozdziałach {{Code|{{sr|# p["Dyskusyjny typ jednostki 2"](frame,i)|p=Pudełko}}}} w „{{sr|#Funkcje typu jednostki|p=Pudełko}}”, one definiują przestrzenie dyskusji, ale można użyć parametru dyskusji typu jednostki z obojętnie jaką wartością niepustą, czy pustą, czy nawet jej nie podamy, wtedy wyświetli się nazwa przestrzeni nazw dyskusji. Jeżeli typ jednostki wskazuje na przestrzeń nazw główną, wtedy się liczą parametry nazw jednostek. Również parametry typu jednostki nie powinno się podawać w dziecku w ramce, tylko w rodzicu w szablonie jako parametry, w którym ta ramka jest wywoływana, ale tutaj podano jedynie dla przykładu, jak najłatwiej sprawdzić działanie tych parametrów tej funkcji. Najpierw w funkcji nagłówku brane są parametry nazw przestrzeni nazw, a jeżeli ich nie ma, to parametry typu jednostki, a jeżeli nie ma lub parametry przestrzenne wskazują na przestrzeń główną, i nie ma nazwy jednostki, to generowane są nazwy tej funkcji na podstawie aktualnej strony. == Funkcje pełnych nazw jednostki == === {{Code|p["Pełna nazwa dyskusji jednostki"](frame,i)}} === === {{Code|p["Pełna nazwa przedmiotowa jednostki"](frame,i)}} === === {{Code|p["Pełna nazwa jednostki"](frame,i)}} === == Funkcje pełnych nazw jednostki drugiej wersji == === {{Code|p["Pełna nazwa dyskusji jednostki 2"](frame,i)}} === === {{Code|p["Pełna nazwa przedmiotowa jednostki 2"](frame,i)}} === === {{Code|p["Pełna nazwa jednostki 2"](frame,i)}} === == Funkcje pełnych nazw jednostki trzeciej wersji == === {{Code|p["Pełna nazwa dyskusji jednostki 3"](frame,i)}} === === {{Code|p["Pełna nazwa przedmiotowa jednostki 3"](frame,i)}} === === {{Code|p["Pełna nazwa jednostki 3"](frame,i)}} === == Funkcje nazw jednostki == === {{Code|p["Nazwa jednostki"](frame,i)}} === == Funkcje nazw jednostki drugiej wersji == === {{Code|p["Nazwa jednostki 2"](frame,i)}} === === {{Code|p["Nazwa przedmiotowa jednostki 2"](frame,i)}} === === {{Code|p["Nazwa dyskusji jednostki 2"](frame,i)}} === == Funkcje nazw przestrzeni nazw trzeciej wersji == === {{Code|p["Nazwa przestrzeni nazw 3"](frame,i)}} === Funkcja pisze nazwę przestrzeni nazw, niezależnie, czy to jest przedmiotowa, czy dyskusji, według, i nie zawsze tylko, podanej w zmiennej {{Code|nazwa przestrzeni nazw}} dla pozycja bazowej w podanych parametrach szablonu rodzicu ramki dziecka, lub dla innej pozycji należy parametr podawać w formie {{Code|nazwa przestrzeni nazw 1}}, {{Code|Nazwa przestrzeni nazw 3}}, {{Code|nazwa przestrzeni nazw 3}},..., lub te parametry można podać w postaci ogólnej {{Code|nazwa przestrzeni nazw i}}. W tej funkcji trzeba też podawać parametry nazwy jednostek {{Code|nazwa jednostki}}, {{Code|nazwa jednostki 1}}, {{Code|nazwa jednostki 2}}, {{Code|nazwa jednostki 3}},... Parametry podaje się w parametrach rodzica wywołania tej funkcji {{Code|{{m|Pudełko|Nazwa przestrzeni nazw 3}}}} (ale ich nie trzeba podawać w dziecku, ale można) i w parametrach dziecka, jeśli chodzi o zmienną {{Code|numer jednostki}}, czyli np.: {{Code|{{m|Pudełko|Nazwa przestrzeni nazw 3|numer jednostki{{=}}<jakaś liczba całkowita dodatnia>}}}}. Te parametry przestrzenne zamiast w rodzicu w szablonie można podać w ramce dziecka, wtedy parametry dziecka mają pierwszeństwo. Przestrzeń nazw z parametrów nazw przestrzennych bazowych (bez numerka) może odpowiadać wartości przestrzeni głównej, to wtedy odpowiednia przestrzeń nazw z parametru nazwy jednostki się nie liczy w tej funkcji, aby się liczyła należy użyć funkcji {{Code|{{sr|#p["Nazwa przestrzeni nazw"](frame,...)|p=Pudełko}}}}. Przestrzeń nazw z parametrów nazw przestrzennych numerkowych może odpowiadać wartości przestrzeni głównej, to wtedy odpowiednia przestrzeń nazw z parametru nazwy jednostki się liczy w tej funkcji, wtedy jest liczona nazwa przestrzeni nazw z tego parametru. Gdy parametry przestrzenne lub typ jednostki w drugim podejściu nie wskazują na przestrzeń główną, to wtedy działanie tej funkcji jest podobne do {{Code|{{sr|#p["Nazwa przestrzeni nazw 2"](frame,...)|p=Pudełko}}}}. Definicja skrótowa funkcji: <syntaxhighlight lang="lua"> p["Nazwa przestrzeni nazw 3"]=function(frame,czy_uwzglednic_alternatywna_nazwe,i)...end; </syntaxhighlight> Wtedy ciało funkcji tej, czyli jego definicja w środku, jest: <syntaxhighlight lang="lua"> -- Jest liczony numer parametru nazwy przestrzeni nazw, domyslnie chodzi tu o numer bazowy parametrów przestrzennych; local numer_jednostki=i or frame.args["numer jednostki"]; local liczba_numeru_jednostki=((numer_jednostki)and(tonumber(numer_jednostki)) or 0); local pudelko_pomocne_modul=require("Module:Pudełko/Pomocne"); -- Liczy nazwę przestrzeni nazw dyskusji na podstawie podanych parametrów; return pudelko_pomocne_modul.Uzyskanie_nazw_jednostki(frame,0,liczba_numeru_jednostki,nil,2); </syntaxhighlight> Parametry funkcji: * {{Code|frame}} - tablica ramki tablicy transportu, * {{Code|czy_uwzglednic_alternatywna_nazwe}} - czy ma uwzględniać nazwę przestrzeni nazw domyślną szablonu, dostępne wartości: {{Code|false}}, w której nazwa domyślna nie jest uwzględniana wtedy, oraz {{Code|nil}} i {{Code|true}}, które oznaczają to samo, w tym jeżeli ona jest uwzględniana, wtedy jest brany parametr pierwszy dziecka, który musi istnieć przy takiej wartości tego parametru, tzn. {{Code|{{m|Pudełko|Nazwa przestrzeni nazw 3|Szablon}}}}, a nazwa uzyskana nazwy przestrzeni nazw jest w takim przypadku błędna, a jeżeli nazwa domyślna jest błędna, czyli {{Code|{{m|Pudełko|Nazwa przestrzeni nazw 3|Moja przestrzeń}}}}, wtedy funkcja zwraca stan błędu {{Code|(błąd)}}. * {{Code|i}} - numer zmiennej nazwy przestrzeni nazw. Funkcja wykorzystuje {{Code|{{sr|#p.Uzyskanie_nazw_jednostki(frame,...)|p=Pudełko/Pomocne}}}} do wyznaczania ogólnego nazwy przestrzeni nazw dla pozycji bazowej i numerkowej, tzn. dla pozycji: jeden, dwa, trzy,..., itd, i ich ogólnej. Parametr ramki tablicy transportu rodzica szablonu: * {{Code|nazwa przestrzeni nazw}}, {{Code|nazwa przestrzeni nazw 1}}, {{Code|Nazwa przestrzeni nazw 3}}, {{Code|nazwa przestrzeni nazw 3}},..., {{Code|nazwa przestrzeni nazw i}} - nazwy przestrzeni nazw dla pozycji bazowej oraz zwykłej i ogólnej numerkowej, * {{Code|nazwa jednostki}}, {{Code|nazwa jednostki 1}}, {{Code|nazwa jednostki 2}}, {{Code|nazwa jednostki 3}},... - nazwy jednostek dla pozycji bazowej i numerkowej, * {{Code|typ jednostki}}, {{Code|typ jednostki 1}}, {{Code|typ jednostki 2}}, {{Code|typ jednostki 3}},..., {{Code|typ jednostki i}} - typy jednostek, którym odpowiadają pewne przestrzenie przedmiotowe, dla pozycji bazowej, numerkowej i ogólnej, ** {{Code|dyskusja typu jednostki}}, {{Code|dyskusja typu jednostki 1}}, {{Code|dyskusja typ jednostki 2}}, {{Code|dyskusja typ jednostki 3}},..., {{Code|dyskusja typ jednostki i}} - czy dany typ jednostki ma przedstawiać, jeśli niepusta, przestrzeń dyskusji dla pozycji bazowej, numerkowej i ogólnej. Parametry ramki tablicy transportu dziecka: * Parametry dziecka są takie same jak rodzica dla funkcji pudełkowej plus tu wymienione, * {{Code|numer jednostki}} - jak parametr {{Code|i}} nie został ustawiony, to wtedy liczy się ta zmienna. Przykłady: <syntaxhighlight lang="mediawiki"> {{Nazwa szablonu 1|nazwa przestrzeni nazw=Wikibooks|nazwa przestrzeni nazw=|nazwa przestrzeni nazw i=|nazwa jednostki=Szablon:Strona}} ---- {{Nazwa szablonu 2|nazwa przestrzeni nazw=Wikibooks|nazwa przestrzeni nazw 1=Szablon|nazwa przestrzeni nazw i=|nazwa jednostki 2=Wikibooks:Strona}} </syntaxhighlight> W pierwszym wywołaniu {{Code|nazwa przestrzeni nazw}} jest puste, ale dla tego bazowego (bez numerka) szukamy przestrzeni nazw, a więc ta nazwa jest ostateczna. ---- W drugim wywołaniu w dziecku powiedzmy jest wywołanie, i szukamy nazwy przestrzeni nazw o numerze dwa, która została podana, ale istnieje za to jej wersji ogólna {{Code|nazwa przestrzeni nazw i}} i domyślna {{Code|nazwa przestrzeni nazw}}, ale wtedy dla tego numerkowego liczy się to ogólne z {{Code| i}}, a ponieważ ta nazwa jest pusta, więc będziemy liczyli nazwę przestrzeni nazw z {{Code|nazwa jednostki 2}}. Odpowiadająca powyższemu kodowi, powiedzmy wikikod, według ich zawartości, przedstawia się: <syntaxhighlight lang="mediawiki"> {{#invoke:Pudełko|Nazwa przestrzeni nazw 3}} ---- {{#invoke:Pudełko|Nazwa przestrzeni nazw 3|numer jednostki=2}} </syntaxhighlight> Na podstawie powyższego przykładu otrzymamy wynik o schemacie, nie wyniku, bo tam nie ma zmiennej {{Code|nazwa przestrzeni nazw 1}}, ale jest {{Code|nazwa przestrzeni nazw i}}: <syntaxhighlight lang="mediawiki"> <!-- nazwa przestrzeni nazw=""; --> <!-- Czyli wynik: --> <!-- wynik pusty --> <!-- Widzimy, że wygenerowała się nazwa przestrzeni nazw, którą jest przestrzeń nazw główna, jest ciągiem pustym: ""; --> ---- <!-- Ale nie "nazwa przestrzeni nazw 2", bo jej nie ma, ale za to istnieje "nazwa przestrzeni nazw i"; --> <!-- nazwa przestrzeni nazw 2=nazwa przestrzeni nazw i="", a nazwa jednostki 2="Wikibooks:Strona"; --> <!-- Czyli wynik: --> Wikibooks <!-- Widzimy, że wygenerowała się nazwa przestrzeni nazw, którą jest przestrzeń nieprogramowa, ale projektu, wychodząca z nazwy jednostek w tym przypadku z "nazwa jednostki 2"; --> </syntaxhighlight> Dla parametrów numerkowych nie jest brana w tym powyższym przykładzie zmienna {{Code|nazwa przestrzeni nazw 2}}, bo jej nie ma, ale za to jest {{Code|nazwa przestrzeni nazw i}}, bo ona występuje jako parametr domyślny ogólny dla parametrów numerkowych. Tytaj jest używana jest zmienna {{Code|nazwa jednostki 2}} do wygenerowania ostatecznego wyniku, bo jak można zauważyć, parametry przestrzenne wskazują na przestrzeń główną, a nazwy jednostek już nie. Dla parametrów bazowych mamy zmienną {{Code|nazwa przestrzeni nazw}}, ona jest pusta, więc to zostanie wziete do ostatecznego wyniku. Przykłady w wikikodzie: * {{Code|{{m|Pudełko|Nazwa przestrzeni nazw 3|nazwa przestrzeni nazw{{=}}|nazwa jednostki{{=}}Wikibooks:Strona}}}} → {{Tt|{{#invoke:Pudełko|Nazwa przestrzeni nazw 3|nazwa przestrzeni nazw=|nazwa jednostki=Wikibooks:Szablon}}}} * {{Code|{{m|Pudełko|Nazwa przestrzeni nazw 3|nazwa przestrzeni nazw 2{{=}}|nazwa jednostki 2{{=}}Wikibooks:Strona|numer jednostki{{=}}2}}}} → {{Tt|{{#invoke:Pudełko|Nazwa przestrzeni nazw 3|nazwa przestrzeni nazw 2=|nazwa jednostki 2=Wikibooks:Szablon|numer jednostki=2}}}} Powyżej dla przykładu podano parametry nie w rodzicu w szablonie, tylko w dziecku, jeśli chodzi o parametry nazw przestrzeni nazw i nazw jednostek, ale ich się za to nie powinno podawać w tych ramach, tylko w szablonach, w których wywoływane są te ramki pudełek {{Code|{{m|Pudełko}}}}, ale tak tutaj tak zrobiono by było najłatwiej sprawdzić działanie tego typu funkcji. Analogicznie możemy podawać parametry typu jednostki, np.: wywołaniu modułowym {{Code|{{m|Pudełko|Nazwa przestrzeni nazw 3|typ jednostki 2{{=}}Podręcznik|nazwa jednostki 2{{=}}Szablon:Strona|numer jednostki{{=}}2}}}} (ale wtedy jest brana przestrzeń nazw z nazwy jednostki), ale o tym więcej w rozdziałach {{Code|{{sr|#p["Typ jednostki 3"](frame,i)|p=Pudełko}}}} w „{{sr|#Funkcje typu jednostki|p=Pudełko}}”, on definiuje przestrzenie przedmiotowe, ale można użyć parametru dyskusji typu jednostki z wartością niepustą, wtedy wyświetli się nazwa przestrzeni nazw dyskusji. Jeżeli typ jednostki bazowy wskazuje na przestrzeń nazw główną, wtedy się nie liczą parametry nazw jednostek, a na numerkowy, wtedy się liczy. Również parametry typu jednostki nie powinno się podawać w dziecku w ramce, tylko w rodzicu w szablonie jako parametry, w którym ta ramka jest wywoływana, ale tutaj podano jedynie dla przykładu, jak najłatwiej sprawdzić działanie tych parametrów tej funkcji. Najpierw w funkcji nagłówku brane są parametry nazw przestrzeni nazw, a jeżeli ich nie ma, to parametry typu jednostki, a jeżeli nie ma lub parametry przestrzenne wskazują na przestrzeń główną, i nie ma nazwy jednostki, to generowane są nazwy tej funkcji na podstawie aktualnej strony. === {{Code|p["Nazwa przedmiotowej przestrzeni nazw 3"](frame,i)}} === Funkcja pisze przedmiotową nazwę przestrzeni nazw jakikolwiek nazwy przestrzeni nazw (tzn. nazwę przedmiotową nazwy przestrzenie nazw, czyli nie dyskusji, zamieniana jest na nią samą, czyli identyfikator przestrzeni się nie zmienia, a dyskusji, nie przedmiotową, przekształca się na przedmiotową jej odpowiadającą, czyli w tym przypadku identyfikator przestrzeni zmniejsza się o numer mniej), według podanej w zmiennej {{Code|nazwa przestrzeni nazw}} dla pozycja bazowej w podanych parametrach szablonu rodzicu ramki dziecka, lub dla innej pozycji należy parametr podawać w formie {{Code|nazwa przestrzeni nazw 1}}, {{Code|nazwa przestrzeni nazw 2}}, {{Code|nazwa przestrzeni nazw 3}},..., lub te parametry można podać w postaci ogólnej {{Code|nazwa przestrzeni nazw i}}. Parametry podaje się w parametrach rodzica wywołania tej funkcji {{Code|{{m|Pudełko|Nazwa przedmiotowej przestrzeni nazw 3}}}} (ale ich nie trzeba podawać w dziecku, ale można) i w parametrach dziecka, jeśli chodzi o zmienną {{Code|numer jednostki}}, czyli np.: {{Code|{{m|Pudełko|Nazwa przedmiotowej przestrzeni nazw 3|numer jednostki{{=}}<jakaś liczba całkowita dodatnia>}}}}. Te parametry przestrzenne zamiast w rodzicu w szablonie można podać w ramce dziecka, wtedy parametry dziecka mają pierwszeństwo. Parametry przestrzenne mogą mogą być podane w postaci przestrzeni przedmiotowej lub dyskusji, ale ta funkcja zawsze ją zamienia na przedmiotową. Przestrzeń nazw z parametrów nazw przestrzennych bazowych (bez numerka) może odpowiadać wartości przestrzeni głównej, to wtedy odpowiednia przestrzeń nazw z parametru nazwy jednostki się nie liczy w tej funkcji, aby się liczyła należy użyć funkcji {{Code|{{sr|#p["Nazwa przedmiotowej przestrzeni nazw"](frame,...)|p=Pudełko}}}}. Przestrzeń nazw z parametrów nazw przestrzennych numerkowych może odpowiadać wartości przestrzeni głównej, to wtedy odpowiednia przestrzeń nazw z parametru nazwy jednostki się liczy w tej funkcji, wtedy jest liczona nazwa przestrzeni nazw z tego parametru. Gdy parametry przestrzenne lub typ jednostki w drugim podejściu nie wskazują na przestrzeń główną, to wtedy działanie tej funkcji jest podobne do {{Code|{{sr|#p["Nazwa przedmiotowej przestrzeni nazw 2"](frame,...)|p=Pudełko}}}}. Definicja skrótowa funkcji: <syntaxhighlight lang="lua"> p["Nazwa przedmiotowej przestrzeni nazw 3"]=function(frame,czy_uwzglednic_alternatywna_nazwe,i)...end; </syntaxhighlight> Wtedy ciało funkcji tej, czyli jego definicja w środku, jest: <syntaxhighlight lang="lua"> -- Jest liczony numer parametru nazwy przestrzeni nazw, domyslnie chodzi tu o numer bazowy parametrów przestrzennych; local numer_jednostki=i or frame.args["numer jednostki"]; local liczba_numeru_jednostki=((numer_jednostki)and(tonumber(numer_jednostki)) or 0); local pudelko_pomocne_modul=require("Module:Pudełko/Pomocne"); -- Liczy nazwę przestrzeni nazw przedmiotową na podstawie podanych parametrów; return pudelko_pomocne_modul.Uzyskanie_nazw_jednostki(frame,1,liczba_numeru_jednostki,nil,1); </syntaxhighlight> Parametry funkcji: * {{Code|frame}} - tablica ramki tablicy transportu, * {{Code|czy_uwzglednic_alternatywna_nazwe}} - czy ma uwzględniać nazwę przestrzeni nazw domyślną szablonu, dostępne wartości: {{Code|false}}, w której nazwa domyślna nie jest uwzględniana wtedy, oraz {{Code|nil}} i {{Code|true}}, które oznaczają to samo, w tym jeżeli ona jest uwzględniana, wtedy jest brany parametr pierwszy dziecka, który musi istnieć przy takiej wartości tego parametru, tzn. {{Code|{{m|Pudełko|Nazwa przedmiotowej przestrzeni nazw 3|Dyskusja szablonu}}}} - ta nazwa domyślna zostanie zamieniona na przedmiotową, a jak ona by była przedmiotowa, to żadnej zamiany by nie było, a nazwa uzyskana z nazwy przestrzeni nazw z parametrów przestrzennych jest w takim przypadku błędna, to w takim razie brany jest ten parametr, a jeżeli ta nazwa domyślna jest błędna, czyli {{Code|{{m|Pudełko|Nazwa przedmiotowej przestrzeni nazw 3|Moja przestrzeń}}}}, wtedy funkcja zwraca stan błędu {{Code|(błąd)}}. * {{Code|i}} - numer zmiennej nazwy przestrzeni nazw. Funkcja wykorzystuje {{Code|{{sr|#p.Uzyskanie_nazw_jednostki(frame,...)|p=Pudełko/Pomocne}}}} do wyznaczania ogólnego nazwy przestrzeni nazw dla pozycji bazowej i numerkowej, tzn. dla pozycji: jeden, dwa, trzy,..., itd, i ich ogólnej. Parametr ramki tablicy transportu rodzica szablonu: * {{Code|nazwa przestrzeni nazw}}, {{Code|nazwa przestrzeni nazw 1}}, {{Code|nazwa przestrzeni nazw 2}}, {{Code|nazwa przestrzeni nazw 3}},..., {{Code|nazwa przestrzeni nazw i}} - nazwy przestrzeni nazw dla pozycji bazowej oraz zwykłej i ogólnej numerkowej, * {{Code|typ jednostki}}, {{Code|typ jednostki 1}}, {{Code|typ jednostki 2}}, {{Code|typ jednostki 3}},..., {{Code|typ jednostki i}} - typy jednostek, którym odpowiadają pewne przestrzenie przedmiotowe, dla pozycji bazowej, numerkowej i ogólnej. Parametry ramki tablicy transportu dziecka: * Parametry dziecka są takie same jak rodzica dla funkcji pudełkowej plus tu wymienione, * {{Code|numer jednostki}} - jak parametr {{Code|i}} nie został ustawiony, to wtedy liczy się ta zmienna. Przykłady: <syntaxhighlight lang="mediawiki"> {{Nazwa szablonu 1|nazwa przestrzeni nazw=Wikibooks|nazwa przestrzeni nazw=|nazwa przestrzeni nazw i=|nazwa jednostki=Dyskusja Wikibooks:Strona}} ---- {{Nazwa szablonu 2|nazwa przestrzeni nazw=Wikibooks|nazwa przestrzeni nazw 1=Szablon|nazwa przestrzeni nazw i=|nazwa jednostki 2=Dyskusja Wikibooks:Strona}} </syntaxhighlight> W pierwszym wywołaniu {{Code|nazwa przestrzeni nazw}} jest puste, ale dla tego bazowego (bez numerka) szukamy przestrzeni nazw, a więc ta nazwa jest ostateczna. ---- W drugim wywołaniu w dziecku powiedzmy jest wywołanie, i szukamy nazwy przestrzeni nazw o numerze dwa, która została podana, ale istnieje za to jej wersji ogólna {{Code|nazwa przestrzeni nazw i}} i domyślna {{Code|nazwa przestrzeni nazw}}, ale wtedy dla tego numerkowego liczy się to ogólne z {{Code| i}}, a ponieważ ta nazwa jest pusta, więc będziemy liczyli nazwę przestrzeni nazw z {{Code|nazwa jednostki 2}}. Odpowiadająca powyższemu kodowi, powiedzmy wikikod, według ich zawartości, przedstawia się: <syntaxhighlight lang="mediawiki"> {{#invoke:Pudełko|Nazwa przedmiotowej przestrzeni nazw 3}} ---- {{#invoke:Pudełko|Nazwa przedmiotowej przestrzeni nazw 3|numer jednostki=2}} </syntaxhighlight> Na podstawie powyższego przykładu otrzymamy wynik o schemacie, nie wyniku, bo tam nie ma zmiennej {{Code|nazwa przestrzeni nazw 1}}, ale jest {{Code|nazwa przestrzeni nazw i}}: <syntaxhighlight lang="mediawiki"> <!-- nazwa przestrzeni nazw=""; --> <!-- Czyli wynik: --> <!-- wynik pusty --> <!-- Widzimy, że wygenerowała się nazwa przestrzeni nazw, którą jest przestrzeń nazw główna, jest ciągiem pustym: ""; --> ---- <!-- Ale nie "nazwa przestrzeni nazw 2", bo jej nie ma, ale za to istnieje "nazwa przestrzeni nazw i"; --> <!-- nazwa przestrzeni nazw 2=nazwa przestrzeni nazw i="", a nazwa jednostki 2="Dyskusja Wikibooks:Strona"; --> <!-- Czyli wynik: --> Wikibooks <!-- Widzimy, że wygenerowała się nazwa przestrzeni nazw, którą jest przestrzeń nieprogramowa, ale projektu, wychodząca z nazwy jednostek w tym przypadku z "nazwa jednostki 2"; --> </syntaxhighlight> Dla parametrów numerkowych nie jest brana w tym powyższym przykładzie zmienna {{Code|nazwa przestrzeni nazw 2}}, bo jej nie ma, ale za to jest {{Code|nazwa przestrzeni nazw i}}, bo ona występuje jako parametr domyślny ogólny dla parametrów numerkowych. Tytaj jest używana jest zmienna {{Code|nazwa jednostki 2}} do wygenerowania ostatecznego wyniku, bo jak można zauważyć, parametry przestrzenne wskazują na przestrzeń główną, a nazwy jednostek już nie. Dla parametrów bazowych mamy zmienną {{Code|nazwa przestrzeni nazw}}, ona jest pusta, więc to zostanie wziete do ostatecznego wyniku. Przykłady w wikikodzie: * {{Code|{{m|Pudełko|Nazwa przestrzeni nazw 3|nazwa przestrzeni nazw{{=}}|nazwa jednostki{{=}}Dyskusja Wikibooks:Strona}}}} → {{Tt|{{#invoke:Pudełko|Nazwa przestrzeni nazw 3|nazwa przestrzeni nazw=|nazwa jednostki=Dyskusja Wikibooks:Szablon}}}} * {{Code|{{m|Pudełko|Nazwa przestrzeni nazw 3|nazwa przestrzeni nazw 2{{=}}|nazwa jednostki 2{{=}}Dyskusja Wikibooks:Strona|numer jednostki{{=}}2}}}} → {{Tt|{{#invoke:Pudełko|Nazwa przestrzeni nazw 3|nazwa przestrzeni nazw 2=|nazwa jednostki 2=Dyskusja Wikibooks:Szablon|numer jednostki=2}}}} Powyżej dla przykładu podano parametry nie w rodzicu w szablonie, tylko w dziecku, jeśli chodzi o parametry nazw przestrzeni nazw, ale ich się za to nie powinno podawać w tych ramach, tylko w szablonach, w których wywoływane są te ramki pudełek {{Code|{{m|Pudełko}}}}, ale tak tutaj tak zrobiono by było najłatwiej sprawdzić działanie tego typu funkcji. Analogicznie możemy podawać parametry typu jednostki, np.: wywołaniu modułowym {{Code|{{m|Pudełko|Nazwa przedmiotowej przestrzeni nazw 3|typ jednostki 2{{=}}strona szablonu|numer jednostki{{=}}2}}}}, ale o tym więcej w rozdziałach {{Code|{{sr|# p["Przedmiotowy typ jednostki 3"](frame,i)|p=Pudełko}}}} w „{{sr|#Funkcje typu jednostki|p=Pudełko}}”, ale wtedy ta sama nazwa przestrzeni nazw reprezentowana przez {{Parametr|typ jednostki 2|strona szablonu}}, jest zamieniana na to samo, lepiej jest tutaj używać parametrów przestrzennych nazw niż typu jednostki, bo typ jednostki ma taką samą wartość dla przestrzeni przedmiotowej, co dyskusji. Tutaj parametr dyskusji typu jednostki bazowy i numerkowy ogólny, czy szczegółowy, nie gra roli, bo nawet, gdy wygenerujemy nazwę przestrzeni dyskusji za pomoca tego parametru, to i tak otrzymamy na samym końcu jego nazwę przedmiotową. Jeżeli typ jednostki bazowy wskazuje na przestrzeń nazw główną, wtedy się nie liczą parametry nazw jednostek, a na numerkowy, wtedy się liczy. Również parametry typu jednostki nie powinno się podawać w dziecku w ramce, tylko w rodzicu w szablonie jako parametry, w którym ta ramka jest wywoływana, ale tutaj podano jedynie dla przykładu, jak najłatwiej sprawdzić działanie tych parametrów tej funkcji. Najpierw w funkcji nagłówku brane są parametry nazw przestrzeni nazw, a jeżeli ich nie ma, to parametry typu jednostki, a jeżeli nie ma, to generowane są nazwy na podstawie aktualnego modułu. === {{Code|p["Nazwa przestrzeni nazw dyskusji 3"](frame,i)}} === Funkcja pisze nazwę przestrzeni nazw dyskusji jakikolwiek nazwy przestrzeni nazw (tzn. nazwę dyskusji nazwy przestrzenie nazw, czyli nie przedmiotowej, zamieniana jest na nią samą, czyli identyfikator przestrzeni się nie zmienia, a przedmiotową, nie dyskusji, przekształca się na dyskusji jej odpowiadającą, czyli w tym przypadku identyfikator przestrzeni zwiększa się o numer więcej), według, i nie zawsze tylko, podanej w zmiennej {{Code|nazwa przestrzeni nazw}} dla pozycja bazowej w podanych parametrach szablonu rodzicu ramki dziecka, lub dla innej pozycji należy parametr podawać w formie {{Code|nazwa przestrzeni nazw 1}}, {{Code|nazwa przestrzeni nazw 2}}, {{Code|nazwa przestrzeni nazw 3}},..., lub te parametry można podać w postaci ogólnej {{Code|nazwa przestrzeni nazw i}}. W tej funkcji trzeba też podawać parametry nazwy jednostek {{Code|nazwa jednostki}}, {{Code|nazwa jednostki 1}}, {{Code|nazwa jednostki 2}}, {{Code|nazwa jednostki 3}},... Parametry podaje się w parametrach rodzica wywołania tej funkcji {{Code|{{m|Pudełko|Nazwa przestrzeni nazw dyskusji 3}}}} (ale ich nie trzeba podawać w dziecku, ale można) i w parametrach dziecka, jeśli chodzi o zmienną {{Code|numer jednostki}}, czyli np.: {{Code|{{m|Pudełko|Nazwa przestrzeni nazw dyskusji 3|numer jednostki{{=}}<jakaś liczba całkowita dodatnia>}}}}. Te parametry przestrzenne zamiast w rodzicu w szablonie można podać w ramce dziecka, wtedy parametry dziecka mają pierwszeństwo. Przestrzeń nazw z parametrów nazw przestrzennych bazowych (bez numerka) może odpowiadać wartości przestrzeni głównej, to wtedy odpowiednia przestrzeń nazw z parametru nazwy jednostki się nie liczy w tej funkcji, aby się liczyła należy użyć funkcji {{Code|{{sr|#p["Nazwa przestrzeni nazw dyskusji"](frame,...)|p=Pudełko}}}}. Przestrzeń nazw z parametrów nazw przestrzennych numerkowych może odpowiadać wartości przestrzeni głównej, to wtedy odpowiednia przestrzeń nazw z parametru nazwy jednostki się liczy w tej funkcji, wtedy jest liczona nazwa przestrzeni nazw z tego parametru. Gdy parametry przestrzenne lub typ jednostki w drugim podejściu nie wskazują na przestrzeń główną, to wtedy działanie tej funkcji jest podobne do {{Code|{{sr|#p["Nazwa przestrzeni nazw dysskusji 2"](frame,...)|p=Pudełko}}}}. Definicja skrótowa funkcji: <syntaxhighlight lang="lua"> p["Nazwa przestrzeni nazw dyskusji 3"]=function(frame,czy_uwzglednic_alternatywna_nazwe,i)...end; </syntaxhighlight> Wtedy ciało funkcji tej, czyli jego definicja w środku, jest: <syntaxhighlight lang="lua"> -- Jest liczony numer parametru nazwy przestrzeni nazw, domyslnie chodzi tu o numer bazowy parametrów przestrzennych; local numer_jednostki=i or frame.args["numer jednostki"]; local liczba_numeru_jednostki=((numer_jednostki)and(tonumber(numer_jednostki)) or 0); local pudelko_pomocne_modul=require("Module:Pudełko/Pomocne"); -- Liczy nazwę przestrzeni nazw dyskusji na podstawie podanych parametrów; return pudelko_pomocne_modul.Uzyskanie_nazw_jednostki(frame,2,liczba_numeru_jednostki,nil,1); </syntaxhighlight> Parametry funkcji: * {{Code|frame}} - tablica ramki tablicy transportu, * {{Code|czy_uwzglednic_alternatywna_nazwe}} - czy ma uwzględniać nazwę przestrzeni nazw domyślną szablonu, dostępne wartości: {{Code|false}}, w której nazwa domyślna nie jest uwzględniana wtedy, oraz {{Code|nil}} i {{Code|true}}, które oznaczają to samo, w tym jeżeli ona jest uwzględniana, wtedy jest brany parametr pierwszy dziecka, który musi istnieć przy takiej wartości tego parametru, tzn. {{Code|{{m|Pudełko|Nazwa przestrzeni nazw dyskusji 3|Szablon}}}}, a nazwa uzyskana nazwy przestrzeni nazw jest w takim przypadku błędna, a jeżeli nazwa domyślna jest błędna, czyli {{Code|{{m|Pudełko|Nazwa przestrzeni nazw dyskusji 3|Moja przestrzeń}}}}, wtedy funkcja zwraca stan błędu {{Code|(błąd)}}. * {{Code|i}} - numer zmiennej nazwy przestrzeni nazw. Funkcja wykorzystuje {{Code|{{sr|#p.Uzyskanie_nazw_jednostki(frame,...)|p=Pudełko/Pomocne}}}} do wyznaczania ogólnego nazwy przestrzeni nazw dla pozycji bazowej i numerkowej, tzn. dla pozycji: jeden, dwa, trzy,..., itd, i ich ogólnej. Parametr ramki tablicy transportu rodzica szablonu: * {{Code|nazwa przestrzeni nazw}}, {{Code|nazwa przestrzeni nazw 1}}, {{Code|nazwa przestrzeni nazw 2}}, {{Code|nazwa przestrzeni nazw 3}},..., {{Code|nazwa przestrzeni nazw i}} - nazwy przestrzeni nazw dla pozycji bazowej oraz zwykłej i ogólnej numerkowej, * {{Code|nazwa jednostki}}, {{Code|nazwa jednostki 1}}, {{Code|nazwa jednostki 2}}, {{Code|nazwa jednostki 3}},... - nazwy jednostek dla pozycji bazowej i numerkowej, * {{Code|typ jednostki}}, {{Code|typ jednostki 1}}, {{Code|typ jednostki 2}}, {{Code|typ jednostki 3}},..., {{Code|typ jednostki i}} - typy jednostek, którym odpowiadają pewne przestrzenie przedmiotowe, dla pozycji bazowej, numerkowej i ogólnej. Parametry ramki tablicy transportu dziecka: * Parametry dziecka są takie same jak rodzica dla funkcji pudełkowej plus tu wymienione, * {{Code|numer jednostki}} - jak parametr {{Code|i}} nie został ustawiony, to wtedy liczy się ta zmienna. Przykłady: <syntaxhighlight lang="mediawiki"> {{Nazwa szablonu 1|nazwa przestrzeni nazw=Wikibooks|nazwa przestrzeni nazw=|nazwa przestrzeni nazw i=|nazwa jednostki=Szablon:Strona}} ---- {{Nazwa szablonu 2|nazwa przestrzeni nazw=Wikibooks|nazwa przestrzeni nazw 1=Szablon|nazwa przestrzeni nazw i=|nazwa jednostki 2=Wikibooks:Strona}} </syntaxhighlight> W pierwszym wywołaniu {{Code|nazwa przestrzeni nazw}} jest puste, ale dla tego bazowego (bez numerka) szukamy przestrzeni nazw, a więc ta nazwa jest ostateczna. ---- W drugim wywołaniu w dziecku powiedzmy jest wywołanie, i szukamy nazwy przestrzeni nazw o numerze dwa, która została podana, ale istnieje za to jej wersji ogólna {{Code|nazwa przestrzeni nazw i}} i domyślna {{Code|nazwa przestrzeni nazw}}, ale wtedy dla tego numerkowego liczy się to ogólne z {{Code| i}}, a ponieważ ta nazwa jest pusta, więc będziemy liczyli nazwę przestrzeni nazw z {{Code|nazwa jednostki 2}}. Odpowiadająca powyższemu kodowi, powiedzmy wikikod, według ich zawartości, przedstawia się: <syntaxhighlight lang="mediawiki"> {{#invoke:Pudełko|Nazwa przestrzeni nazw 3}} ---- {{#invoke:Pudełko|Nazwa przestrzeni nazw 3|numer jednostki=2}} </syntaxhighlight> Na podstawie powyższego przykładu otrzymamy wynik o schemacie, nie wyniku, bo tam nie ma zmiennej {{Code|nazwa przestrzeni nazw 1}}, ale jest {{Code|nazwa przestrzeni nazw i}}: <syntaxhighlight lang="mediawiki"> <!-- nazwa przestrzeni nazw=""; --> <!-- Czyli wynik: --> Dyskusja <!-- Widzimy, że wygenerowała się nazwa przestrzeni nazw, którą jest przestrzeń nazw niegłówna, jest ciągiem niepustym; --> ---- <!-- Ale nie "nazwa przestrzeni nazw 2", bo jej nie ma, ale za to istnieje "nazwa przestrzeni nazw i"; --> <!-- nazwa przestrzeni nazw 2=nazwa przestrzeni nazw i="", a nazwa jednostki 2="Wikibooks:Strona"; --> <!-- Czyli wynik: --> Dyskusja Wikibooks <!-- Widzimy, że wygenerowała się nazwa przestrzeni nazw, którą jest przestrzeń nieprogramowa, ale projektu, wychodząca z nazwy jednostek w tym przypadku z "nazwa jednostki 2"; --> </syntaxhighlight> Dla parametrów numerkowych nie jest brana w tym powyższym przykładzie zmienna {{Code|nazwa przestrzeni nazw 2}}, bo jej nie ma, ale za to jest {{Code|nazwa przestrzeni nazw i}}, bo ona występuje jako parametr domyślny ogólny dla parametrów numerkowych. Tytaj jest używana jest zmienna {{Code|nazwa jednostki 2}} do wygenerowania ostatecznego wyniku, bo jak można zauważyć, parametry przestrzenne wskazują na przestrzeń główną, a nazwy jednostek już nie. Dla parametrów bazowych mamy zmienną {{Code|nazwa przestrzeni nazw}}, ona jest pusta, więc to zostanie wziete do ostatecznego wyniku. Przykłady w wikikodzie: * {{Code|{{m|Pudełko|Nazwa przestrzeni nazw dyskusji 3|nazwa przestrzeni nazw{{=}}|nazwa jednostki{{=}}Wikibooks:Strona}}}} → {{Tt|{{#invoke:Pudełko|Nazwa przestrzeni nazw dyskusji 3|nazwa przestrzeni nazw=|nazwa jednostki=Wikibooks:Szablon}}}} * {{Code|{{m|Pudełko|Nazwa przestrzeni nazw dyskusji 3|nazwa przestrzeni nazw 2{{=}}|nazwa jednostki 2{{=}}Wikibooks:Strona|numer jednostki{{=}}2}}}} → {{Tt|{{#invoke:Pudełko|Nazwa przestrzeni nazw dyskusji 3|nazwa przestrzeni nazw 2=|nazwa jednostki 2=Wikibooks:Szablon|numer jednostki=2}}}} Powyżej dla przykładu podano parametry nie w rodzicu w szablonie, tylko w dziecku, jeśli chodzi o parametry nazw przestrzeni nazw i nazw jednostek, ale ich się za to nie powinno podawać w tych ramach, tylko w szablonach, w których wywoływane są te ramki pudełek {{Code|{{m|Pudełko}}}}, ale tak tutaj tak zrobiono by było najłatwiej sprawdzić działanie tego typu funkcji. Analogicznie możemy podawać parametry typu jednostki, np.: wywołaniu modułowym {{Code|{{m|Pudełko|Nazwa przestrzeni nazw dyskusji 3|typ jednostki 2{{=}}Podręcznik|nazwa jednostki 2{{=}}Szablon:Strona|numer jednostki{{=}}2}}}} (ale wtedy jest brana przestrzeń nazw z nazwy jednostki), ale o tym więcej w rozdziałach {{Code|{{sr|# p["Dyskusyjny typ jednostki 3"](frame,i)|p=Pudełko}}}} w „{{sr|#Funkcje typu jednostki|p=Pudełko}}”, one definiują przestrzenie dyskusji, ale można użyć parametru dyskusji typu jednostki z obojętnie jaką wartością niepustą, czy pustą, czy nawet jej nie podamy, wtedy wyświetli się nazwa przestrzeni nazw dyskusji. Jeżeli typ jednostki bazowy wskazuje na przestrzeń nazw główną, wtedy się nie liczą parametry nazw jednostek, a na numerkowy, wtedy się liczy. Również parametry typu jednostki nie powinno się podawać w dziecku w ramce, tylko w rodzicu w szablonie jako parametry, w którym ta ramka jest wywoływana, ale tutaj podano jedynie dla przykładu, jak najłatwiej sprawdzić działanie tych parametrów tej funkcji. Najpierw w funkcji nagłówku brane są parametry nazw przestrzeni nazw, a jeżeli ich nie ma, to parametry typu jednostki, a jeżeli nie ma lub parametry przestrzenne wskazują na przestrzeń główną, i nie ma nazwy jednostki, to generowane są nazwy tej funkcji na podstawie aktualnej strony. == Funkcje nazw jednostki trzeciej wersji == === {{Code|p["Nazwa jednostki 3"](frame,i)}} === === {{Code|p["Nazwa przedmiotowa jednostki 3"](frame,i)}} === === {{Code|p["Nazwa dyskusji jednostki 3"](frame,i)}} === == Funkcje typu jednostki == === {{Code|p["Typ jednostki"](frame,i)}} === === {{Code|p["Typ jednostki 2"](frame,i)}} === === {{Code|p["Typ jednostki 3"](frame,i)}} === === Funkcje typu jednostki przedmiotowe === ==== {{Code|p["Przedmiotowy typ jednostki"](frame,i)}} ==== ==== {{Code|p["Przedmiotowy typ jednostki 2"](frame,i)}} ==== ==== {{Code|p["Przedmiotowy typ jednostki 3"](frame,i)}} ==== === Fukcje typu jednostki dyskusji === ==== {{Code|p["Dyskusyjny typ jednostki"](frame,i)}} ==== ==== {{Code|p["Dyskusyjny typ jednostki 2"](frame,i)}} ==== ==== {{Code|p["Dyskusyjny typ jednostki 3"](frame,i)}} ==== == Funkcje chech pudełka == === {{Code|p["Cecha pudełka"](frame)}} === === {{Code|p["Przedmiotowa cecha pudełka"](frame)}} === === {{Code|p["Dyskusyjna cecha pudełka"](frame)}} === == Fukcje ogólnego pudełka == === {{Code|p["Ogólne pudełko"](frame)}} === == Funkcje ogólne == === {{Code|p["Tekst pudełka"](frame)}} === == Funkcje błędów pudełka == === {{Code|p["Błędy pudełka"](frame)}} === === {{Code|p["Przedmiotowe błędy pudełka"](frame)}} === === {{Code|p["Dyskusyjne błędy pudełka"](frame)}} === == Funkcje nazw stron == === {{Code|p["Nazwa strony głównej projektu"](frame,i)}} === === {{Code|p["Nazwa strony głównej dla dzieci projektu"](frame,i)}} === == Funkcje kodów == === {{Code|p["Kod języka"](frame,i)}} === === {{Code|p["Kod projektu"](frame,i)}} === === {{Code|p["Klucz projektu"](frame,i)}} === == Funkcje wiki == === {{Code|p["Inny niż język bieżący wiki"](frame)}} === === {{Code|p["Inne niż lokalne wiki"](frame)}} === === {{Code|p["Inne niż bieżące wiki"](frame)}} === == Funkcje typów parametrów, czy podane je == === {{Code|p["Podano parametry nienazwane"](frame)}} === === {{Code|p["Podano parametry numerowane"](frame)}} === === {{Code|p["Podano parametry nazwane"](frame)}} === == Funkcje kodów tego projektu == === {{Code|p["Kod projektu tego projektu"](frame)}} === === {{Code|p["Kod języka tego projektu"](frame)}} === === {{Code|p["Klucz projektu tego projektu"](frame)}} === == Funkcje stron == === {{Code|p["Strona główna tego projektu"](frame)}} === === {{Code|p["Strona główna dla dzieci tego projektu"](frame)}} === == Funkcje nazw stron drugiej wersji == === {{Code|p["Nazwa strony głównej dla dzieci projektu 2"](frame)}} === === {{Code| p["Nazwa strony głównej projektu 2"](frame)}} === {{BrClear}} <noinclude><!-- -->{{ProstaStronaKoniec}}<!-- -->{{Kategoria|Opisy funkcji, w Lua w Scribunto, w modułach}}<!-- --></noinclude> qk2upxrlzg1b4mbjz1cvfnuw044p77z 540441 540440 2026-04-24T02:53:10Z Persino 2851 540441 wikitext text/x-wiki <noinclude>{{ProstaStronaStart | nagłówek = {{Podrozdział|{{ld2|Pudełko}}|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 pudelko_modul=require("Module:Pudełko"); </syntaxhighlight> dzięki, któremu można wypisywać funkcje należącego do niego. Posługuje się na parametrach pudełkowych {{Parametr|nazwa przestrzeni nazw}} (czy też bez numerka {{Parametr|nazwa przestrzeni nazw i}} dla tego numerowanego) lub te z numerkiem po jednej spacji w nich (ale nie dla tego z końcówką {{Code| i}}) mogą zostać użyte jako parametry szablonu. Moduł {{Code|{{ld2|Pudełko}}}} przedstawia funkcje nazw w oparciu o funkcje nazw {{Code|{{ld2|Nazwy}}}}, generuje on nazwy za pomocą parametrów pudełkowych podanych poniżej. Parametr {{Parametr|nazwa jednostki}} (lub parametr {{Parametr|cel}} dla numerka tego pierwszego, tego alternatywnego), lub te z numerkiem po jednej spacji w nazwie parametru, albo numerowane numerkami {{Code|1}}, {{Code|2}},..., mogą zostać użyte jako parametry szablonu. Parametry określające rodzaj jednostki {{Parametr|typ jednostki}} z {{Parametr|dyskusja typu jednostki}}, itp. w wersjach z numerkiem po jednej spacji w nich mogą zostać użyte jako parametry szablonu. A te tymi numerowanymi liczbami naturalnymi {{Tt|nazwy jednostki}} od jedynki wzwyż poprzez szablon, w którym są one użyte, one też mogą być użyte z dwukropkiem, te numerowane, na samym początku nazwy, wtedy one są traktowane jako pełne nazwy strony, i wtedy one nie zostaną z interpretowane, że do nich trzeba użyć parametr odpowiedni z nazwą przetrzeni nazw z tego numerowanego, czy ogólny, aby utworzyć znów inną pełną nazwę strony dla tego numerka. Zestawienie: * {{Code|nazwa przestrzeni nazw}} i {{Code|nazwa przestrzeni nazw i}} (ogólna nazwa przestrzeni nazw dla wszystkich numerków, i tych numerowanych jednostek) - i to pierwsze z numerkiem, tzn. {{Code|nazwa przestrzeni nazw 1}}, {{Code|nazwa przestrzeni nazw 2}}, ..., * {{Code|nazwa jednostki}} - i te z numerkiem: {{Code|nazwa jednostki 1}}, {{Code|nazwa jednostki 2}}, ..., lub gdy jest zamiast tego parametrem numerowany, {{Code|1}}, {{Code|2}},..., który dla tego pierwszego może być uznany jako: {{Code|cel}} {{=}} {{Code|1}}, * {{Code|typ jednostki}} (parametr bazowy) i {{Code|typ jednostki i}} (parametr domyślny numerkowy) - i te z numerkiem: {{Code|typ jednostki 1}}, {{Code|typ jednostki 2}}, ..., tzn. gdy chcemy określić z jakim typem jednostki mamy do czynienia w zależności do jakiej przestrzeni nazw należy, a w danej, czy jest on np. programowy, czy tylko jest opisem, jak to bywa w szablonach {{Np|Template|link=tak}}, podobnie jest w przypadku {{Np|Module|link=tak}}, czy jak jest w innych przestrzeniach nazw, ** {{Code|dyskusja typu jednostki}} (parametr bazowy) i {{Code|dyskusja typu jednostki i}} (parametr domyślny numerkowy) - i te z numerkiem: {{Code|dyskusja typu jednostki 1}}, {{Code|dyskusja typu jednostki 2}}, ..., gdy chcemy określić wartością niepustą,że chodzi tutaj o typ jednostki. == {{Code|p.CzyNiepoprawnaNazwa(nazwa_jednostki)}} == Funkcja sprawdzajaca, czy jest poprawnie podana nazwa jednostki, czy ma poprawną nazwę. Znakami tymi, z których nie powinna składać się nazwa jest {{Code|<nowiki>{}<>|[]#\n</nowiki>}} i dodatkowo znak {{Code|&#127;}} (kod {{Code|{{Nowiki|&#127;}}}}). Też nie może składać się z trzech znaków tyldy, tzn. {{Code|<nowiki>~~~</nowiki>}}. Również w swojej budowie nie może składać się ze kodów {{Strong|HTML}} literowych o wzorze {{Code|{{Nowiki|&(%a+);}}}}. Natomiast może składać się z {{Code|{{Nowiki|&#(%d+);}}}} i {{Code|{{Nowiki|&#x(%x+);}}}}, ale w pierw te kody muszą być zamienione na normalne znaki. Skrótowa definicja funkcji: <syntaxhighlight lang="lua"> function p.CzyNiepoprawnaNazwa(nazwa_jednostki)...end; </syntaxhighlight> Wtedy ciało funkcji tej, czyli jego definicja w środku, jest: <syntaxhighlight lang="lua"> -- Moduł: "Moduł:Html/dane", służy do ładowania znaku o kodzie HTML "&#127;"; local html_dane_modul=mw.loadData("Module:Html/dane"); return mw.ustring.match(nazwa_jednostki,"[{}<>|%[%]#\n"..html_dane_modul.znak_127.."]+") or mw.ustring.match(nazwa_jednostki,"~~~") or mw.ustring.match(nazwa_jednostki,"&(%a+);"); </syntaxhighlight> Parametry: * {{Code|nazwa_jednostki}} - nazwa jednostki do sprawdzenia. Przykłady: <syntaxhighlight lang="lua"> local pudelko_modul=require("Module:Pudełko"); -- Podana przykładowa niepoprawna nazwa jedostki local nazwa_jednostki="Nazwa pliku [[Nazwa linku w pliku]]"; -- Fukcja zwróci wartość: local czy_poprawna_nazwa=true; local czy_poprawna_nazwa=pudelko_modul.CzyNiepoprawnaNazwa(nazwa_jednostki); </syntaxhighlight> == Funkcje nazw przestrzeni nazw == === {{Code|p["Nazwa przestrzeni nazw"](frame,...)}} === Funkcja pisze nazwę przestrzeni nazw, niezależnie, czy to jest przedmiotowa, czy dyskusji, według podanej w zmiennej {{Code|nazwa przestrzeni nazw}} dla pozycja bazowej w podanych parametrach szablonu rodzicu ramki dziecka, lub dla innej pozycji należy parametr podawać w formie {{Code|nazwa przestrzeni nazw 1}}, {{Code|nazwa przestrzeni nazw 2}}, {{Code|nazwa przestrzeni nazw 3}},..., lub te parametry można podać w postaci ogólnej {{Code|nazwa przestrzeni nazw i}}. Parametry podaje się w parametrach rodzica wywołania tej funkcji {{Code|{{m|Pudełko|Nazwa przestrzeni nazw}}}} (ale ich nie trzeba podawać w dziecku, ale można) i w parametrach dziecka, jeśli chodzi o zmienną {{Code|numer jednostki}}, czyli np.: {{Code|{{m|Pudełko|Nazwa przestrzeni nazw|numer jednostki{{=}}<jakaś liczba całkowita dodatnia>}}}}. Te parametry przestrzenne zamiast w rodzicu w szablonie można podać w ramce dziecka, wtedy parametry dziecka mają pierwszeństwo. Przestrzeń nazw z parametrów nazw przestrzennych może odpowiadać wartości przestrzeni głównej, to wtedy odpowiednia przestrzeń nazw z parametru nazwy jednostki się nie liczy w tej funkcji, aby się liczyła należy użyć funkcji {{Code|{{sr|#p["Nazwa przestrzeni nazw 2"](frame,...)|p=Pudełko}}}}. Definicja skrótowa funkcji: <syntaxhighlight lang="lua"> p["Nazwa przestrzeni nazw"]=function(frame,czy_uwzglednic_alternatywna_nazwe,i)...end; </syntaxhighlight> Wtedy ciało funkcji tej, czyli jego definicja w środku, jest: <syntaxhighlight lang="lua"> -- Jest liczony numer parametru nazwy przestrzeni nazw, domyslnie chodzi tu o numer bazowy parametrów przestrzennych; local numer_jednostki=i or frame.args["numer jednostki"]; local liczba_numer_jednostki=((numer_jednostki)and(tonumber(numer_jednostki))or 0); local pudelko_pomocne_modul=require("Module:Pudełko/Pomocne"); -- Liczy nazwę przestrzeni nazw na podstawie podanych parametrów; return pudelko_pomocne_modul.Nazwa_przestrzeni_nazw(frame,0, czy_uwzglednic_alternatywna_nazwe,liczba_numer_jednostki); </syntaxhighlight> Parametry funkcji: * {{Code|frame}} - tablica ramki tablicy transportu, * {{Code|czy_uwzglednic_alternatywna_nazwe}} - czy ma uwzględniać nazwę przestrzeni nazw domyślną szablonu, dostępne wartości: {{Code|false}}, w której nazwa domyślna nie jest uwzględniana wtedy, oraz {{Code|nil}} i {{Code|true}}, które oznaczają to samo, w tym jeżeli ona jest uwzględniana, wtedy jest brany parametr pierwszy dziecka, który musi istnieć przy takiej wartości tego parametru, tzn. {{Code|{{m|Pudełko|Nazwa przestrzeni nazw|Szablon}}}}, a nazwa uzyskana nazwy przestrzeni nazw jest w takim przypadku błędna, a jeżeli nazwa domyślna jest błędna, czyli {{Code|{{m|Pudełko|Nazwa przestrzeni nazw|Moja przestrzeń}}}}, wtedy funkcja zwraca stan błędu {{Code|(błąd)}}. * {{Code|i}} - numer zmiennej nazwy przestrzeni nazw. Funkcja wykorzystuje {{Code|{{sr|#p.Nazwa_przestrzeni_nazw(frame,...)|p=Pudełko/Pomocne}}}} do wyznaczania ogólnego nazwy przestrzeni nazw dla pozycji bazowej i numerkowej, tzn. dla pozycji: jeden, dwa, trzy,..., itd, i ich ogólnej. Parametr ramki tablicy transportu rodzica szablonu: * {{Code|nazwa przestrzeni nazw}}, {{Code|nazwa przestrzeni nazw 1}}, {{Code|nazwa przestrzeni nazw 2}}, {{Code|nazwa przestrzeni nazw 3}},..., {{Code|nazwa przestrzeni nazw i}} - nazwy przestrzeni nazw dla pozycji bazowej oraz zwykłej i ogólnej numerkowej, * {{Code|typ jednostki}}, {{Code|typ jednostki 1}}, {{Code|typ jednostki 2}}, {{Code|typ jednostki 3}},..., {{Code|typ jednostki i}} - typy jednostek, którym odpowiadają pewne przestrzenie przedmiotowe, dla pozycji bazowej, numerkowej i ogólnej, ** {{Code|dyskusja typu jednostki}}, {{Code|dyskusja typu jednostki 1}}, {{Code|dyskusja typ jednostki 2}}, {{Code|dyskusja typ jednostki 3}},..., {{Code|dyskusja typ jednostki i}} - czy dany typ jednostki ma przedstawiać, jeśli niepusta, przestrzeń dyskusji dla pozycji bazowej, numerkowej i ogólnej. Parametry ramki tablicy transportu dziecka: * Parametry dziecka są takie same jak rodzica dla funkcji pudełkowej plus tu wymienione, * {{Code|numer jednostki}} - jak parametr {{Code|i}} nie został ustawiony, to wtedy liczy się ta zmienna. Przykłady: <syntaxhighlight lang="mediawiki"> {{Nazwa szablonu|nazwa przestrzeni nazw=Wikibooks|nazwa przestrzeni nazw 2=Szablon|nazwa przestrzeni nazw i=Moduł}} </syntaxhighlight> W dziecku powiedzmy jest wywołanie, i szukamy nazwy przestrzeni nazw o numerze dwa, która nie została podana, ale istnieje za to jej wersji ogólna {{Code|nazwa przestrzeni nazw i}} i domyślna {{Code|nazwa przestrzeni nazw}}: <syntaxhighlight lang="mediawiki"> {{#invoke:Pudełko|Nazwa przestrzeni nazw|numer jednostki=1}} </syntaxhighlight> Na podstawie powyższego przykładu otrzymamy wynik o schemacie, nie wyniku, bo tam nie ma zmiennej {{Code|nazwa przestrzeni nazw 1}}, ale jest {{Code|nazwa przestrzeni nazw i}}: <syntaxhighlight lang="mediawiki"> <!-- Ale nie "nazwa przestrzeni nazw", bo jej nie ma, ale za to istnieje "nazwa przestrzeni nazw i"; --> <!-- nazwa przestrzeni nazw 2=nazwa przestrzeni nazw i=Moduł; --> <!-- Czyli wynik: --> Moduł <!-- Widzimy, że wygenerowała się nazwa przestrzeni nazw, którą jest przestrzeń programowa, którą również jest "Szablon"; --> </syntaxhighlight> Nie jest brana w tym powyższym przykładzie zmienna {{Code|nazwa przestrzeni nazw}}, bo jej nie ma, ale za to jest {{Code|nazwa przestrzeni nazw i}}, bo ona występuje jako parametr domyślny ogólny dla parametrów numerkowych. Przykłady w wikikodzie: * {{Code|{{m|Pudełko|Nazwa przestrzeni nazw|numer jednostki{{=}}2}}}} → {{Tt|{{#invoke:Pudełko|Nazwa przestrzeni nazw|numer jednostki=2}}}} * {{Code|{{m|Pudełko|Nazwa przestrzeni nazw|Szablon|nazwa przestrzeni nazw i{{=}}Moja przestrzeń|numer jednostki{{=}}2}}}} → {{Tt|{{#invoke:Pudełko|Nazwa przestrzeni nazw|Szablon|nazwa przestrzeni nazw i=Moja przestrzeń|numer jednostki=2}}}} * {{Code|{{m|Pudełko|Nazwa przestrzeni nazw|nazwa przestrzeni nazw 2{{=}}Szablon|numer jednostki{{=}}2}}}} → {{Tt|{{#invoke:Pudełko|Nazwa przestrzeni nazw|nazwa przestrzeni nazw 2=Szablon|numer jednostki=2}}}} * {{Code|{{m|Pudełko|Nazwa przestrzeni nazw|nazwa przestrzeni nazw 2{{=}}Szablon|numer jednostki{{=}}2}}}} → {{Tt|{{#invoke:Pudełko|Nazwa przestrzeni nazw|nazwa przestrzeni nazw i=Szablon|numer jednostki=2}}}} * {{Code|{{m|Pudełko|Nazwa przestrzeni nazw|nazwa przestrzeni nazw{{=}}Szablon|numer jednostki{{=}}2}}}} → {{Tt|{{#invoke:Pudełko|Nazwa przestrzeni nazw|nazwa przestrzeni nazw=Szablon|numer jednostki=2}}}} Powyżej dla przykładu podano parametry nie w rodzicu w szablonie, tylko w dziecku, jeśli chodzi o parametry nazw przestrzeni nazw, ale ich się za to nie powinno podawać w tych ramach, tylko w szablonach, w których wywoływane są te ramki pudełek {{Code|{{m|Pudełko}}}}, ale tak tutaj tak zrobiono by było najłatwiej sprawdzić działanie tego typu funkcji. Analogicznie możemy podawać parametry typu jednostki, np.: wywołaniu modułowym {{Code|{{m|Pudełko|Nazwa przestrzeni nazw|typ jednostki 2{{=}}strona szablonu|numer jednostki{{=}}2}}}}, ale o tym więcej w rozdziałach {{Code|{{sr|# p["Typ jednostki"](frame,i)|p=Pudełko}}}} w „{{sr|#Funkcje typu jednostki|p=Pudełko}}”, on definiuje przestrzenie przedmiotowe, ale można użyć parametru dyskusji typu jednostki z wartością niepustą, wtedy wyświetli się nazwa przestrzeni nazw dyskusji. Również parametry typu jednostki nie powinno się podawać w dziecku w ramce, tylko w rodzicu w szablonie jako parametry, w którym ta ramka jest wywoływana, ale tutaj podano jedynie dla przykładu, jak najłatwiej sprawdzić działanie tych parametrów tej funkcji. Najpierw w funkcji nagłówku brane są parametry nazw przestrzeni nazw, a jeżeli ich nie ma, to parametry typu jednostki, a jeżeli nie ma, to generowane są nazwy na podstawie aktualnego modułu. === {{Code|p["Nazwa przedmiotowej przestrzeni nazw"](frame,...)}} === Funkcja pisze przedmiotową nazwę przestrzeni nazw jakikolwiek nazwy przestrzeni nazw (tzn. nazwę przedmiotową nazwy przestrzenie nazw, czyli nie dyskusji, zamieniana jest na nią samą, czyli identyfikator przestrzeni się nie zmienia, a dyskusji, nie przedmiotową, przekształca się na przedmiotową jej odpowiadającą, czyli w tym przypadku identyfikator przestrzeni zmniejsza się o numer mniej), według podanej w zmiennej {{Code|nazwa przestrzeni nazw}} dla pozycja bazowej w podanych parametrach szablonu rodzicu ramki dziecka, lub dla innej pozycji należy parametr podawać w formie {{Code|nazwa przestrzeni nazw 1}}, {{Code|nazwa przestrzeni nazw 2}}, {{Code|nazwa przestrzeni nazw 3}},..., lub te parametry można podać w postaci ogólnej {{Code|nazwa przestrzeni nazw i}}. Parametry podaje się w parametrach rodzica wywołania tej funkcji {{Code|{{m|Pudełko|Nazwa przedmiotowej przestrzeni nazw}}}} (ale ich nie trzeba podawać w dziecku, ale można) i w parametrach dziecka, jeśli chodzi o zmienną {{Code|numer jednostki}}, czyli np.: {{Code|{{m|Pudełko|Nazwa przedmiotowej przestrzeni nazw|numer jednostki{{=}}<jakaś liczba całkowita dodatnia>}}}}. Te parametry przestrzenne zamiast w rodzicu w szablonie można podać w ramce dziecka, wtedy parametry dziecka mają pierwszeństwo. Parametry przestrzenne mogą mogą być podane w postaci przestrzeni przedmiotowej lub dyskusji, ale ta funkcja zawsze ją zamienia na przedmiotową. Przestrzeń nazw z parametrów nazw przestrzennych może odpowiadać wartości przestrzeni głównej, to wtedy odpowiednia przestrzeń nazw z parametru nazwy jednostki się nie liczy w tej funkcji, aby się liczyła należy użyć funkcji {{Code|{{sr|#p["Nazwa przedmiotowej przestrzeni nazw 2"](frame,...)|p=Pudełko}}}}. Definicja skrótowa funkcji: <syntaxhighlight lang="lua"> p["Nazwa przedmiotowej przestrzeni nazw"]=function(frame,czy_uwzglednic_alternatywna_nazwe,i)...end; </syntaxhighlight> Wtedy ciało funkcji tej, czyli jego definicja w środku, jest: <syntaxhighlight lang="lua"> -- Jest liczony numer parametru nazwy przestrzeni nazw, domyslnie chodzi tu o numer bazowy parametrów przestrzennych; local numer_jednostki=i or frame.args["numer jednostki"]; local liczba_numer_jednostki=((numer_jednostki)and(tonumber(numer_jednostki))or 0); local pudelko_pomocne_modul=require("Module:Pudełko/Pomocne"); -- Liczy nazwę przestrzeni nazw przedmiotową na podstawie podanych parametrów; return pudelko_pomocne_modul.Nazwa_przestrzeni_nazw(frame,1, czy_uwzglednic_alternatywna_nazwe,liczba_numer_jednostki); </syntaxhighlight> Parametry funkcji: * {{Code|frame}} - tablica ramki tablicy transportu, * {{Code|czy_uwzglednic_alternatywna_nazwe}} - czy ma uwzględniać nazwę przestrzeni nazw domyślną szablonu, dostępne wartości: {{Code|false}}, w której nazwa domyślna nie jest uwzględniana wtedy, oraz {{Code|nil}} i {{Code|true}}, które oznaczają to samo, w tym jeżeli ona jest uwzględniana, wtedy jest brany parametr pierwszy dziecka, który musi istnieć przy takiej wartości tego parametru, tzn. {{Code|{{m|Pudełko|Nazwa przedmiotowej przestrzeni nazw|Dyskusja szablonu}}}} - ta nazwa domyślna zostanie zamieniona na przedmiotową, a jak ona by była przedmiotowa, to żadnej zamiany by nie było, a nazwa uzyskana z nazwy przestrzeni nazw z parametrów przestrzennych jest w takim przypadku błędna, to w takim razie brany jest ten parametr, a jeżeli ta nazwa domyślna jest błędna, czyli {{Code|{{m|Pudełko|Nazwa przedmiotowej przestrzeni nazw|Moja przestrzeń}}}}, wtedy funkcja zwraca stan błędu {{Code|(błąd)}}. * {{Code|i}} - numer zmiennej nazwy przestrzeni nazw. Funkcja wykorzystuje {{Code|{{sr|#p.Nazwa_przestrzeni_nazw(frame,...)|p=Pudełko/Pomocne}}}} do wyznaczania ogólnego nazwy przestrzeni nazw dla pozycji bazowej i numerkowej, tzn. dla pozycji: jeden, dwa, trzy,..., itd, i ich ogólnej. Parametr ramki tablicy transportu rodzica szablonu: * {{Code|nazwa przestrzeni nazw}}, {{Code|nazwa przestrzeni nazw 1}}, {{Code|nazwa przestrzeni nazw 2}}, {{Code|nazwa przestrzeni nazw 3}},..., {{Code|nazwa przestrzeni nazw i}} - nazwy przestrzeni nazw dla pozycji bazowej oraz zwykłej i ogólnej numerkowej, * {{Code|typ jednostki}}, {{Code|typ jednostki 1}}, {{Code|typ jednostki 2}}, {{Code|typ jednostki 3}},..., {{Code|typ jednostki i}} - typy jednostek, którym odpowiadają pewne przestrzenie przedmiotowe, dla pozycji bazowej, numerkowej i ogólnej. Parametry ramki tablicy transportu dziecka: * Parametry dziecka są takie same jak rodzica dla funkcji pudełkowej plus tu wymienione, * {{Code|numer jednostki}} - jak parametr {{Code|i}} nie został ustawiony, to wtedy liczy się ta zmienna. Przykłady: <syntaxhighlight lang="mediawiki"> {{Nazwa szablonu|nazwa przestrzeni nazw=Dyskusja Wikibooks|nazwa przestrzeni nazw 2=Dyskusja szablonu|nazwa przestrzeni nazw i=Dyskusja modułu}} </syntaxhighlight> W dziecku powiedzmy jest wywołanie, i szukamy nazwy przestrzeni nazw o numerze dwa, która nie została podana, ale istnieje za to jej wersji ogólna {{Code|nazwa przestrzeni nazw i}} i domyślna {{Code|nazwa przestrzeni nazw}}: <syntaxhighlight lang="mediawiki"> {{#invoke:Pudełko|Nazwa przedmiotowej przestrzeni nazw|numer jednostki=1}} </syntaxhighlight> Na podstawie powyższego przykładu otrzymamy wynik o schemacie, nie wyniku, bo tam nie ma zmiennej {{Code|nazwa przestrzeni nazw 1}}, ale jest {{Code|nazwa przestrzeni nazw i}}: <syntaxhighlight lang="mediawiki"> <!-- Ale nie "nazwa przestrzeni nazw", bo jej nie ma, ale za to istnieje "nazwa przestrzeni nazw i"; --> <!-- nazwa przestrzeni nazw 2=nazwa przestrzeni nazw i=Dyskusja modułu; --> <!-- Czyli wynik: --> Moduł <!-- Widzimy, że wygenerowała się nazwa przestrzeni nazw, którą jest przestrzeń przedmiotowa programowa przestrzeni dyskusji "Dyskusja modułu", którą również jest "Szablon" jego przestrzeni dyskusji "Dyskusja szablonu", a dla ich przestrzeni przedmiotowej, zamiast dyskusji, to samo przekształca się na to samo; --> </syntaxhighlight> Nie jest brana w tym powyższym przykładzie zmienna {{Code|nazwa przestrzeni nazw}}, bo jej nie ma, ale za to jest {{Code|nazwa przestrzeni nazw i}}, bo ona występuje jako parametr domyślny ogólny dla parametrów numerkowych. Przykłady w wikikodzie: * {{Code|{{m|Pudełko|Nazwa przedmiotowej przestrzeni nazw|numer jednostki{{=}}2}}}} → {{Tt|{{#invoke:Pudełko|Nazwa przedmiotowej przestrzeni nazw|numer jednostki=2}}}} * {{Code|{{m|Pudełko|Nazwa przedmiotowej przestrzeni nazw|Dyskusja szablonu|nazwa przestrzeni nazw i{{=}}Moja przestrzeń|numer jednostki{{=}}2}}}} → {{Tt|{{#invoke:Pudełko|Nazwa przedmiotowej przestrzeni nazw|Dyskusja szablonu|nazwa przestrzeni nazw i=Moja przestrzeń|numer jednostki=2}}}} * {{Code|{{m|Pudełko|Nazwa przedmiotowej przestrzeni nazw|nazwa przestrzeni nazw 2{{=}}Dyskusja szablonu|numer jednostki{{=}}2}}}} → {{Tt|{{#invoke:Pudełko|Nazwa przedmiotowej przestrzeni nazw|nazwa przestrzeni nazw 2=Dyskusja szablonu|numer jednostki=2}}}} * {{Code|{{m|Pudełko|Nazwa przedmiotowej przestrzeni nazw|nazwa przestrzeni nazw 2{{=}}Dyskusja szablonu|numer jednostki{{=}}2}}}} → {{Tt|{{#invoke:Pudełko|Nazwa przedmiotowej przestrzeni nazw|nazwa przestrzeni nazw i=Dyskusja szablonu|numer jednostki=2}}}} * {{Code|{{m|Pudełko|Nazwa przedmiotowej przestrzeni nazw|nazwa przestrzeni nazw{{=}}Dyskusja szablonu|numer jednostki{{=}}2}}}} → {{Tt|{{#invoke:Pudełko|Nazwa przedmiotowej przestrzeni nazw|nazwa przestrzeni nazw=Dyskusja szablonu|numer jednostki=2}}}} Powyżej dla przykładu podano parametry nie w rodzicu w szablonie, tylko w dziecku, jeśli chodzi o parametry nazw przestrzeni nazw, ale ich się za to nie powinno podawać w tych ramach, tylko w szablonach, w których wywoływane są te ramki pudełek {{Code|{{m|Pudełko}}}}, ale tak tutaj tak zrobiono by było najłatwiej sprawdzić działanie tego typu funkcji. Analogicznie możemy podawać parametry typu jednostki, np.: wywołaniu modułowym {{Code|{{m|Pudełko|Nazwa przedmiotowej przestrzeni nazw|typ jednostki 2{{=}}strona szablonu|numer jednostki{{=}}2}}}}, ale o tym więcej w rozdziałach {{Code|{{sr|# p["Przedmiotowy typ jednostki"](frame,i)|p=Pudełko}}}} w „{{sr|#Funkcje typu jednostki|p=Pudełko}}”, ale wtedy ta sama nazwa przestrzeni nazw reprezentowana przez {{Parametr|typ jednostki 2|strona szablonu}}, jest zamieniana na to samo, lepiej jest tutaj używać parametrów przestrzennych nazw niż typu jednostki, bo typ jednostki ma taką samą wartość dla przestrzeni przedmiotowej, co dyskusji. Tutaj parametr dyskusji typu jednostki bazowy i numerkowy ogólny, czy szczegółowy, nie gra roli, bo nawet, gdy wygenerujemy nazwę przestrzeni dyskusji za pomoca tego parametru, to i tak otrzymamy na samym końcu jego nazwę przedmiotową. Również parametry typu jednostki nie powinno się podawać w dziecku w ramce, tylko w rodzicu w szablonie jako parametry, w którym ta ramka jest wywoływana, ale tutaj podano jedynie dla przykładu, jak najłatwiej sprawdzić działanie tych parametrów tej funkcji. Najpierw w funkcji nagłówku brane są parametry nazw przestrzeni nazw, a jeżeli ich nie ma, to parametry typu jednostki, a jeżeli nie ma, to generowane są nazwy na podstawie aktualnego modułu. === {{Code|p["Nazwa przestrzeni nazw dyskusji"](frame,...)}} === Funkcja pisze nazwę przestrzeni nazw dyskusji jakikolwiek nazwy przestrzeni nazw (tzn. nazwę przedmiotową nazwy przestrzenie nazw, czyli nie dyskusji, zamieniana jest na dyskusji, czyli identyfikator przestrzeni się zmienia jeden wyżej, a dyskusji, nie przedmiotową, przekształca się na tą samą), według podanej w zmiennej {{Code|nazwa przestrzeni nazw}} dla pozycja bazowej w podanych parametrach szablonu rodzicu ramki dziecka, lub dla innej pozycji należy parametr podawać w formie {{Code|nazwa przestrzeni nazw 1}}, {{Code|nazwa przestrzeni nazw 2}}, {{Code|nazwa przestrzeni nazw 3}},..., lub te parametry można podać w postaci ogólnej {{Code|nazwa przestrzeni nazw i}}. Parametry podaje się w parametrach rodzica wywołania tej funkcji {{Code|{{m|Pudełko|Nazwa przestrzeni nazw dyskusji}}}} (ale ich nie trzeba podawać w dziecku, ale można) i w parametrach dziecka, jeśli chodzi o zmienną {{Code|numer jednostki}}, czyli np.: {{Code|{{m|Pudełko|Nazwa przestrzeni nazw dyskusji|numer jednostki{{=}}<jakaś liczba całkowita dodatnia>}}}}. Te parametry przestrzenne zamiast w rodzicu w szablonie można podać w ramce dziecka, wtedy parametry dziecka mają pierwszeństwo. Parametry przestrzenne mogą mogą być podane w postaci przestrzeni przedmiotowej lub dyskusji, ale ta funkcja zawsze ją zamienia na dyskusji. Przestrzeń nazw z parametrów nazw przestrzennych może odpowiadać wartości przestrzeni głównej, to wtedy odpowiednia przestrzeń nazw z parametru nazwy jednostki się nie liczy w tej funkcji, aby się liczyła należy użyć funkcji {{Code|{{sr|#p["Nazwa przestrzeni nazw dyskusji 2"](frame,...)|p=Pudełko}}}}. Definicja skrótowa funkcji: <syntaxhighlight lang="lua"> p["Nazwa przestrzeni nazw dyskusji"]=function(frame,czy_uwzglednic_alternatywna_nazwe,i)...end; </syntaxhighlight> Wtedy ciało funkcji tej, czyli jego definicja w środku, jest: <syntaxhighlight lang="lua"> -- Jest liczony numer parametru nazwy przestrzeni nazw, domyslnie chodzi tu o numer bazowy parametrów przestrzennych; local numer_jednostki=i or frame.args["numer jednostki"]; local liczba_numer_jednostki=((numer_jednostki)and(tonumber(numer_jednostki))or 0); local pudelko_pomocne_modul=require("Module:Pudełko/Pomocne"); -- Liczy nazwę przestrzeni nazw dyskusji na podstawie podanych parametrów; return pudelko_pomocne_modul.Nazwa_przestrzeni_nazw(frame,2, czy_uwzglednic_alternatywna_nazwe,liczba_numer_jednostki); </syntaxhighlight> Parametry funkcji: * {{Code|frame}} - tablica ramki tablicy transportu, * {{Code|czy_uwzglednic_alternatywna_nazwe}} - czy ma uwzględniać nazwę przestrzeni nazw domyślną szablonu, dostępne wartości: {{Code|false}}, w której nazwa domyślna nie jest uwzględniana wtedy, oraz {{Code|nil}} i {{Code|true}}, które oznaczają to samo, w tym jeżeli ona jest uwzględniana, wtedy jest brany parametr pierwszy dziecka, który musi istnieć przy takiej wartości tego parametru, tzn. {{Code|{{m|Pudełko|Nazwa przestrzeni nazw dyskusji|Szablon}}}} - ta nazwa domyślna zostanie przekształcona na dyskusji, a jeżeli ona by była dyskusji, to nie byłoby żadnego przekształcenia, a nazwa uzyskana nazwy przestrzeni nazw z parametrów przestrzennych jest w takim przypadku błędna, to w takim razie brany jest ten parametr, a jeżeli nazwa domyślna jest błędna, czyli {{Code|{{m|Pudełko|Nazwa przestrzeni nazw dyskusji|Moja przestrzeń}}}}, wtedy funkcja zwraca stan błędu {{Code|(błąd)}}. * {{Code|i}} - numer zmiennej nazwy przestrzeni nazw. Funkcja wykorzystuje {{Code|{{sr|#p.Nazwa_przestrzeni_nazw(frame,...)|p=Pudełko/Pomocne}}}} do wyznaczania ogólnego nazwy przestrzeni nazw dla pozycji bazowej i numerkowej, tzn. dla pozycji: jeden, dwa, trzy,..., itd, i ich ogólnej. Parametr ramki tablicy transportu rodzica szablonu: * {{Code|nazwa przestrzeni nazw}}, {{Code|nazwa przestrzeni nazw 1}}, {{Code|nazwa przestrzeni nazw 2}}, {{Code|nazwa przestrzeni nazw 3}},..., {{Code|nazwa przestrzeni nazw i}} - nazwy przestrzeni nazw dla pozycji bazowej oraz zwykłej i ogólnej numerkowej, * {{Code|typ jednostki}}, {{Code|typ jednostki 1}}, {{Code|typ jednostki 2}}, {{Code|typ jednostki 3}},..., {{Code|typ jednostki i}} - typy jednostek, którym odpowiadają pewne przestrzenie przedmiotowe, dla pozycji bazowej, numerkowej i ogólnej. Parametry ramki tablicy transportu dziecka: * Parametry dziecka są takie same jak rodzica dla funkcji pudełkowej plus tu wymienione, * {{Code|numer jednostki}} - jak parametr {{Code|i}} nie został ustawiony, to wtedy liczy się ta zmienna. Przykłady: <syntaxhighlight lang="mediawiki"> {{Nazwa szablonu|nazwa przestrzeni nazw=Wikibooks|nazwa przestrzeni nazw 2=Szablon|nazwa przestrzeni nazw i=Moduł}} </syntaxhighlight> W dziecku powiedzmy jest wywołanie, i szukamy nazwy przestrzeni nazw o numerze dwa, która nie została podana, ale istnieje za to jej wersji ogólna {{Code|nazwa przestrzeni nazw i}} i domyślna {{Code|nazwa przestrzeni nazw}}: <syntaxhighlight lang="mediawiki"> {{#invoke:Pudełko|Nazwa przestrzeni nazw dyskusji|numer jednostki=1}} </syntaxhighlight> Na podstawie powyższego przykładu otrzymamy wynik o schemacie, nie wyniku, bo tam nie ma zmiennej {{Code|nazwa przestrzeni nazw 1}}, ale jest {{Code|nazwa przestrzeni nazw i}}: <syntaxhighlight lang="mediawiki"> <!-- Ale nie "nazwa przestrzeni nazw", bo jej nie ma, ale za to istnieje "nazwa przestrzeni nazw i"; --> <!-- nazwa przestrzeni nazw 2=nazwa przestrzeni nazw i=Moduł; --> <!-- Czyli wynik: --> Dyskusja modułu <!-- Widzimy, że wygenerowała się nazwa przestrzeni nazw, którą jest przestrzeń dyskusji przestrzeni programowej przestrzeni przedmiotowej "Moduł", którą również jest "Szablon" jego przestrzeni dyskusji "Dyskusja szablonu", a dla ich przestrzeni przedmiotowej, zamiast dyskusji, to przekształca się na dyskusji jej odpowiadającą; --> </syntaxhighlight> Nie jest brana w tym powyższym przykładzie zmienna {{Code|nazwa przestrzeni nazw}}, bo jej nie ma, ale za to jest {{Code|nazwa przestrzeni nazw i}}, bo ona występuje jako parametr domyślny ogólny dla parametrów numerkowych. Przykłady w wikikodzie: * {{Code|{{m|Pudełko|Nazwa przestrzeni nazw dyskusji|numer jednostki{{=}}2}}}} → {{Tt|{{#invoke:Pudełko|Nazwa przestrzeni nazw dyskusji|numer jednostki=2}}}} * {{Code|{{m|Pudełko|Nazwa przestrzeni nazw dyskusji|Szablon|nazwa przestrzeni nazw i{{=}}Moja przestrzeń|numer jednostki{{=}}2}}}} → {{Tt|{{#invoke:Pudełko|Nazwa przestrzeni nazw dyskusji|Szablon|nazwa przestrzeni nazw i=Moja przestrzeń|numer jednostki=2}}}} * {{Code|{{m|Pudełko|Nazwa przestrzeni nazw dyskusji|nazwa przestrzeni nazw 2{{=}}Szablon|numer jednostki{{=}}2}}}} → {{Tt|{{#invoke:Pudełko|Nazwa przestrzeni nazw dyskusji|nazwa przestrzeni nazw 2=Szablon|numer jednostki=2}}}} * {{Code|{{m|Pudełko|Nazwa przestrzeni nazw dyskusji|nazwa przestrzeni nazw 2{{=}}Szablon|numer jednostki{{=}}2}}}} → {{Tt|{{#invoke:Pudełko|Nazwa przestrzeni nazw dyskusji|nazwa przestrzeni nazw i=Szablon|numer jednostki=2}}}} * {{Code|{{m|Pudełko|Nazwa przestrzeni nazw dyskusji|nazwa przestrzeni nazw{{=}}Szablon|numer jednostki{{=}}2}}}} → {{Tt|{{#invoke:Pudełko|Nazwa przestrzeni nazw dyskusji|nazwa przestrzeni nazw=Szablon|numer jednostki=2}}}} Powyżej dla przykładu podano parametry nie w rodzicu w szablonie, tylko w dziecku, jeśli chodzi o parametry nazw przestrzeni nazw, ale ich się za to nie powinno podawać w tych ramach, tylko w szablonach, w których wywoływane są te ramki pudełek {{Code|{{m|Pudełko}}}}, ale tak tutaj tak zrobiono by było najłatwiej sprawdzić działanie tego typu funkcji. Analogicznie możemy podawać parametry typu jednostki, np.: wywołaniu modułowym {{Code|{{m|Pudełko|Nazwa przestrzeni nazw dyskusji|typ jednostki 2{{=}}strona szablonu|numer jednostki{{=}}2}}}}, ale o tym więcej w rozdziałach {{Code|{{sr|# p["Dyskusyjny typ jednostki"](frame,i)|p=Pudełko}}}} w „{{sr|#Funkcje typu jednostki|p=Pudełko}}”, ale wtedy nazwa przestrzeni nazw reprezentowana przez {{Parametr|typ jednostki 2|strona szablonu}}, jest zamieniana na nazwę przestrzeni nazw dyskusji. Parametr dyskusji typu jednostki bazowy lub dla danego numerka ogólny, czy szczegółowy, nie gra roli. Również parametry typu jednostki nie powinno się podawać w dziecku w ramce, tylko w rodzicu w szablonie jako parametry, w którym ta ramka jest wywoływana, ale tutaj podano jedynie dla przykładu, jak najłatwiej sprawdzić działanie tych parametrów tej funkcji. Najpierw w funkcji nagłówku brane są parametry nazw przestrzeni nazw, a jeżeli ich nie ma, to parametry typu jednostki, a jeżeli nie ma, to generowane są nazwy na podstawie aktualnego modułu. == Funkcje nazw przestrzeni nazw drugiej wersji == === {{Code|p["Nazwa przestrzeni nazw 2"](frame,...)}} === Funkcja pisze nazwę przestrzeni nazw, niezależnie, czy to jest przedmiotowa, czy dyskusji, według, i nie zawsze tylko, podanej w zmiennej {{Code|nazwa przestrzeni nazw}} dla pozycja bazowej w podanych parametrach szablonu rodzicu ramki dziecka, lub dla innej pozycji należy parametr podawać w formie {{Code|nazwa przestrzeni nazw 1}}, {{Code|nazwa przestrzeni nazw 2}}, {{Code|nazwa przestrzeni nazw 3}},..., lub te parametry można podać w postaci ogólnej {{Code|nazwa przestrzeni nazw i}}. W tej funkcji trzeba też podawać parametry nazwy jednostek {{Code|nazwa jednostki}}, {{Code|nazwa jednostki 1}}, {{Code|nazwa jednostki 2}}, {{Code|nazwa jednostki 3}},... Parametry podaje się w parametrach rodzica wywołania tej funkcji {{Code|{{m|Pudełko|Nazwa przestrzeni nazw 2}}}} (ale ich nie trzeba podawać w dziecku, ale można) i w parametrach dziecka, jeśli chodzi o zmienną {{Code|numer jednostki}}, czyli np.: {{Code|{{m|Pudełko|Nazwa przestrzeni nazw 2|numer jednostki{{=}}<jakaś liczba całkowita dodatnia>}}}}. Te parametry przestrzenne zamiast w rodzicu w szablonie można podać w ramce dziecka, wtedy parametry dziecka mają pierwszeństwo. Przestrzeń nazw z parametrów nazw przestrzennych może odpowiadać wartości przestrzeni głównej, to wtedy odpowiednia przestrzeń nazw z parametru nazwy jednostki się liczy w tej funkcji, wtedy jest liczona nazwa przestrzeni nazw z tego parametru. Gdy parametry przestrzenne lub typ jednostki w drugim podejściu nie wskazują na przestrzeń główną, to wtedy działanie tej funkcji jest podobne do {{Code|{{sr|#p["Nazwa przestrzeni nazw"](frame,...)|p=Pudełko}}}}. Definicja skrótowa funkcji: <syntaxhighlight lang="lua"> p["Nazwa przestrzeni nazw 2"]=function(frame,czy_uwzglednic_alternatywna_nazwe,i)...end; </syntaxhighlight> Wtedy ciało funkcji tej, czyli jego definicja w środku, jest: <syntaxhighlight lang="lua"> local pudelko_pomocne_modul=require("Module:Pudełko/Pomocne"); -- Liczy nazwę przestrzeni nazw, jeżeli z parametrów przestrzennych przestrzeń wskazuje na główną, to wtedy jest liczona przestrzeń nazw z nazwy jednostki; return pudelko_pomocne_modul.Nazwa_przestrzeni_nazw_2(frame,czy_uwzglednic_alternatywna_nazwe,i) </syntaxhighlight> Parametry funkcji: * {{Code|frame}} - tablica ramki tablicy transportu, * {{Code|czy_uwzglednic_alternatywna_nazwe}} - czy ma uwzględniać nazwę przestrzeni nazw domyślną szablonu, dostępne wartości: {{Code|false}}, w której nazwa domyślna nie jest uwzględniana wtedy, oraz {{Code|nil}} i {{Code|true}}, które oznaczają to samo, w tym jeżeli ona jest uwzględniana, wtedy jest brany parametr pierwszy dziecka, który musi istnieć przy takiej wartości tego parametru, tzn. {{Code|{{m|Pudełko|Nazwa przestrzeni nazw 2|Szablon}}}}, a nazwa uzyskana nazwy przestrzeni nazw jest w takim przypadku błędna, a jeżeli nazwa domyślna jest błędna, czyli {{Code|{{m|Pudełko|Nazwa przestrzeni nazw 2|Moja przestrzeń}}}}, wtedy funkcja zwraca stan błędu {{Code|(błąd)}}. * {{Code|i}} - numer zmiennej nazwy przestrzeni nazw. Funkcja wykorzystuje {{Code|{{sr|#p.Nazwa_przestrzeni_nazw_2(frame,...)|p=Pudełko/Pomocne}}}} do wyznaczania ogólnego nazwy przestrzeni nazw dla pozycji bazowej i numerkowej, tzn. dla pozycji: jeden, dwa, trzy,..., itd, i ich ogólnej. Parametr ramki tablicy transportu rodzica szablonu: * {{Code|nazwa przestrzeni nazw}}, {{Code|nazwa przestrzeni nazw 1}}, {{Code|nazwa przestrzeni nazw 2}}, {{Code|nazwa przestrzeni nazw 3}},..., {{Code|nazwa przestrzeni nazw i}} - nazwy przestrzeni nazw dla pozycji bazowej oraz zwykłej i ogólnej numerkowej, * {{Code|nazwa jednostki}}, {{Code|nazwa jednostki 1}}, {{Code|nazwa jednostki 2}}, {{Code|nazwa jednostki 3}},... - nazwy jednostek dla pozycji bazowej i numerkowej, * {{Code|typ jednostki}}, {{Code|typ jednostki 1}}, {{Code|typ jednostki 2}}, {{Code|typ jednostki 3}},..., {{Code|typ jednostki i}} - typy jednostek, którym odpowiadają pewne przestrzenie przedmiotowe, dla pozycji bazowej, numerkowej i ogólnej, ** {{Code|dyskusja typu jednostki}}, {{Code|dyskusja typu jednostki 1}}, {{Code|dyskusja typ jednostki 2}}, {{Code|dyskusja typ jednostki 3}},..., {{Code|dyskusja typ jednostki i}} - czy dany typ jednostki ma przedstawiać, jeśli niepusta, przestrzeń dyskusji dla pozycji bazowej, numerkowej i ogólnej. Parametry ramki tablicy transportu dziecka: * Parametry dziecka są takie same jak rodzica dla funkcji pudełkowej plus tu wymienione, * {{Code|numer jednostki}} - jak parametr {{Code|i}} nie został ustawiony, to wtedy liczy się ta zmienna. Przykłady: <syntaxhighlight lang="mediawiki"> {{Nazwa szablonu|nazwa przestrzeni nazw=Wikibooks|nazwa przestrzeni nazw 1=Szablon|nazwa przestrzeni nazw i=|nazwa jednostki 2=Wikibooks:Strona}} </syntaxhighlight> W dziecku powiedzmy jest wywołanie, i szukamy nazwy przestrzeni nazw o numerze dwa, która została podana, ale istnieje za to jej wersji ogólna {{Code|nazwa przestrzeni nazw i}} i domyślna {{Code|nazwa przestrzeni nazw}}, ale wtedy dla tego numerkowego liczy się to ogólne z {{Code| i}}, a ponieważ ta nazwa jest pusta, więc będziemy liczyli nazwę przestrzeni nazw z {{Code|nazwa jednostki 2}}: <syntaxhighlight lang="mediawiki"> {{#invoke:Pudełko|Nazwa przestrzeni nazw 2|numer jednostki=2}} </syntaxhighlight> Na podstawie powyższego przykładu otrzymamy wynik o schemacie, nie wyniku, bo tam nie ma zmiennej {{Code|nazwa przestrzeni nazw 1}}, ale jest {{Code|nazwa przestrzeni nazw i}}: <syntaxhighlight lang="mediawiki"> <!-- Ale nie "nazwa przestrzeni nazw 2", bo jej nie ma, ale za to istnieje "nazwa przestrzeni nazw i"; --> <!-- nazwa przestrzeni nazw 2=nazwa przestrzeni nazw i="", a nazwa jednostki 2="Wikibooks:Strona"; --> <!-- Czyli wynik: --> Wikibooks <!-- Widzimy, że wygenerowała się nazwa przestrzeni nazw, którą jest przestrzeń nieprogramowa, ale projektu, wychodząca z nazwy jednostek w tym przypadku z "nazwa jednostki 2"; --> </syntaxhighlight> Nie jest brana w tym powyższym przykładzie zmienna {{Code|nazwa przestrzeni nazw}}, bo jej nie ma, ale za to jest {{Code|nazwa przestrzeni nazw i}}, bo ona występuje jako parametr domyślny ogólny dla parametrów numerkowych. Tytaj jest używana jest zmienna {{Code|nazwa jednostki 2}} do wygenerowania ostatecznego wyniku, bo jak można zauważyć, parametry przestrzenne wskazują na przestrzeń główną, a nazwy jednostek już nie. Przykłady w wikikodzie: * {{Code|{{m|Pudełko|Nazwa przestrzeni nazw 2|numer jednostki{{=}}2}}}} → {{Tt|{{#invoke:Pudełko|Nazwa przestrzeni nazw 2|numer jednostki=2}}}} * {{Code|{{m|Pudełko|Nazwa przestrzeni nazw 2|Szablon|nazwa przestrzeni nazw i{{=}}Moja przestrzeń|numer jednostki{{=}}2}}}} → {{Tt|{{#invoke:Pudełko|Nazwa przestrzeni nazw 2|Szablon|nazwa przestrzeni nazw i=Moja przestrzeń|numer jednostki=2}}}} * {{Code|{{m|Pudełko|Nazwa przestrzeni nazw 2|nazwa przestrzeni nazw 2{{=}}|nazwa jednostki 2{{=}}Szablon:Strona|numer jednostki{{=}}2}}}} → {{Tt|{{#invoke:Pudełko|Nazwa przestrzeni nazw 2|nazwa przestrzeni nazw 2=|nazwa jednostki 2=Szablon:Strona|numer jednostki=2}}}} * {{Code|{{m|Pudełko|Nazwa przestrzeni nazw 2|nazwa przestrzeni nazw i{{=}}|nazwa jednostki 2{{=}}Szablon:Strona|numer jednostki{{=}}2}}}} → {{Tt|{{#invoke:Pudełko|Nazwa przestrzeni nazw 2|nazwa przestrzeni nazw i=|nazwa jednostki 2=Szablon:Strona|numer jednostki=2}}}} * {{Code|{{m|Pudełko|Nazwa przestrzeni nazw 2|Szablon|nazwa przestrzeni nazw{{=}}|nazwa jednostki 2{{=}}Wikibooks:Strona|numer jednostki{{=}}2}}}} → {{Tt|{{#invoke:Pudełko|Nazwa przestrzeni nazw 2|Szablon|nazwa przestrzeni nazw=|nazwa jednostki 2=Wikibooks:Strona|numer jednostki=2}}}} Powyżej dla przykładu podano parametry nie w rodzicu w szablonie, tylko w dziecku, jeśli chodzi o parametry nazw przestrzeni nazw i nazw jednostek, ale ich się za to nie powinno podawać w tych ramach, tylko w szablonach, w których wywoływane są te ramki pudełek {{Code|{{m|Pudełko}}}}, ale tak tutaj tak zrobiono by było najłatwiej sprawdzić działanie tego typu funkcji. Analogicznie możemy podawać parametry typu jednostki, np.: wywołaniu modułowym {{Code|{{m|Pudełko|Nazwa przestrzeni nazw 2|typ jednostki 2{{=}}Podręcznik|nazwa jednostki 2{{=}}Szablon:Strona|numer jednostki{{=}}2}}}} (ale wtedy jest brana przestrzeń nazw z nazwy jednostki), ale o tym więcej w rozdziałach {{Code|{{sr|#p["Typ jednostki 2"](frame,i)|p=Pudełko}}}} w „{{sr|#Funkcje typu jednostki|p=Pudełko}}”, on definiuje przestrzenie przedmiotowe, ale można użyć parametru dyskusji typu jednostki z wartością niepustą, wtedy wyświetli się nazwa przestrzeni nazw dyskusji. Jeżeli typ jednostki wskazuje na przestrzeń nazw główną, wtedy się liczą parametry nazw jednostek. Również parametry typu jednostki nie powinno się podawać w dziecku w ramce, tylko w rodzicu w szablonie jako parametry, w którym ta ramka jest wywoływana, ale tutaj podano jedynie dla przykładu, jak najłatwiej sprawdzić działanie tych parametrów tej funkcji. Najpierw w funkcji nagłówku brane są parametry nazw przestrzeni nazw, a jeżeli ich nie ma, to parametry typu jednostki, a jeżeli nie ma lub parametry przestrzenne wskazują na przestrzeń główną, i nie ma nazwy jednostki, to generowane są nazwy tej funkcji na podstawie aktualnej strony. === {{Code|p["Nazwa przedmiotowej przestrzeni nazw 2"](frame,...)}} === Funkcja pisze przedmiotową nazwę przestrzeni nazw jakikolwiek nazwy przestrzeni nazw (tzn. nazwę przedmiotową nazwy przestrzenie nazw, czyli nie dyskusji, zamieniana jest na nią samą, czyli identyfikator przestrzeni się nie zmienia, a dyskusji, nie przedmiotową, przekształca się na przedmiotową jej odpowiadającą, czyli w tym przypadku identyfikator przestrzeni zmniejsza się o numer mniej), według, i nie zawsze tylko, podanej w zmiennej {{Code|nazwa przestrzeni nazw}} dla pozycja bazowej w podanych parametrach szablonu rodzicu ramki dziecka, lub dla innej pozycji należy parametr podawać w formie {{Code|nazwa przestrzeni nazw 1}}, {{Code|nazwa przestrzeni nazw 2}}, {{Code|nazwa przestrzeni nazw 3}},..., lub te parametry można podać w postaci ogólnej {{Code|nazwa przestrzeni nazw i}}. W tej funkcji trzeba też podawać parametry nazwy jednostek {{Code|nazwa jednostki}}, {{Code|nazwa jednostki 1}}, {{Code|nazwa jednostki 2}}, {{Code|nazwa jednostki 3}},... Parametry podaje się w parametrach rodzica wywołania tej funkcji {{Code|{{m|Pudełko|Nazwa przedmiotowej przestrzeni nazw 2}}}} (ale ich nie trzeba podawać w dziecku, ale można) i w parametrach dziecka, jeśli chodzi o zmienną {{Code|numer jednostki}}, czyli np.: {{Code|{{m|Pudełko|Nazwa przedmiotowej przestrzeni nazw 2|numer jednostki{{=}}<jakaś liczba całkowita dodatnia>}}}}. Te parametry przestrzenne zamiast w rodzicu w szablonie można podać w ramce dziecka, wtedy parametry dziecka mają pierwszeństwo. Przestrzeń nazw z parametrów nazw przestrzennych po przekształceniu na przedmiotową może odpowiadać wartości przestrzeni głównej, to wtedy odpowiednia przestrzeń nazw z parametru nazwy jednostki się liczy w tej funkcji, wtedy jest liczona nazwa przestrzeni nazw z tego parametru. Gdy parametry przestrzenne lub typ jednostki w drugim podejściu nie wskazują na przestrzeń główną, to wtedy działanie tej funkcji jest podobne do {{Code|{{sr|#p["Nazwa przedmiotowej przestrzeni nazw"](frame,...)|p=Pudełko}}}}. Definicja skrótowa funkcji: <syntaxhighlight lang="lua"> p["Nazwa przedmiotowej przestrzeni nazw 2"]=function(frame,czy_uwzglednic_alternatywna_nazwe,i)...end; </syntaxhighlight> Wtedy ciało funkcji tej, czyli jego definicja w środku, jest: <syntaxhighlight lang="lua"> local pudelko_pomocne_modul=require("Module:Pudełko/Pomocne"); return pudelko_pomocne_modul.Nazwa_przestrzeni_nazw_przedmiotowa_dyskusji_2(frame,czy_uwzglednic_alternatywna_nazwe,i,"przedmiotowa"); </syntaxhighlight> Parametry funkcji: * {{Code|frame}} - tablica ramki tablicy transportu, * {{Code|czy_uwzglednic_alternatywna_nazwe}} - czy ma uwzględniać nazwę przestrzeni nazw domyślną szablonu, dostępne wartości: {{Code|false}}, w której nazwa domyślna nie jest uwzględniana wtedy, oraz {{Code|nil}} i {{Code|true}}, które oznaczają to samo, w tym jeżeli ona jest uwzględniana, wtedy jest brany parametr pierwszy dziecka, który musi istnieć przy takiej wartości tego parametru, tzn. {{Code|{{m|Pudełko|Nazwa przedmiotowej przestrzeni nazw 2|Szablon}}}}, a nazwa uzyskana nazwy przestrzeni nazw jest w takim przypadku błędna, a jeżeli nazwa domyślna jest błędna, czyli {{Code|{{m|Pudełko|Nazwa przedmiotowej przestrzeni nazw 2|Moja przestrzeń}}}}, wtedy funkcja zwraca stan błędu {{Code|(błąd)}}. * {{Code|i}} - numer zmiennej nazwy przestrzeni nazw. Funkcja wykorzystuje {{Code|{{sr|#p.Nazwa_przestrzeni_nazw_przedmiotowa_dyskusji_2(frame,...)|p=Pudełko/Pomocne}}}} do wyznaczania ogólnego nazwy przestrzeni nazw dla pozycji bazowej i numerkowej, tzn. dla pozycji: jeden, dwa, trzy,..., itd, i ich ogólnej. Parametr ramki tablicy transportu rodzica szablonu: * {{Code|nazwa przestrzeni nazw}}, {{Code|nazwa przestrzeni nazw 1}}, {{Code|nazwa przestrzeni nazw 2}}, {{Code|nazwa przestrzeni nazw 3}},..., {{Code|nazwa przestrzeni nazw i}} - nazwy przestrzeni nazw dla pozycji bazowej oraz zwykłej i ogólnej numerkowej, * {{Code|nazwa jednostki}}, {{Code|nazwa jednostki 1}}, {{Code|nazwa jednostki 2}}, {{Code|nazwa jednostki 3}},... - nazwy jednostek dla pozycji bazowej i numerkowej, * {{Code|typ jednostki}}, {{Code|typ jednostki 1}}, {{Code|typ jednostki 2}}, {{Code|typ jednostki 3}},..., {{Code|typ jednostki i}} - typy jednostek, którym odpowiadają pewne przestrzenie przedmiotowe, dla pozycji bazowej, numerkowej i ogólnej. Parametry ramki tablicy transportu dziecka: * Parametry dziecka są takie same jak rodzica dla funkcji pudełkowej plus tu wymienione, * {{Code|numer jednostki}} - jak parametr {{Code|i}} nie został ustawiony, to wtedy liczy się ta zmienna. Przykłady: <syntaxhighlight lang="mediawiki"> {{Nazwa szablonu|nazwa przestrzeni nazw=Wikibooks|nazwa przestrzeni nazw 1=Szablon|nazwa przestrzeni nazw i=|nazwa jednostki 2=Dyskusja Wikibooks:Strona}} </syntaxhighlight> W dziecku powiedzmy jest wywołanie, i szukamy nazwy przestrzeni nazw o numerze dwa, która została podana, ale istnieje za to jej wersji ogólna {{Code|nazwa przestrzeni nazw i}} i domyślna {{Code|nazwa przestrzeni nazw}}, ale wtedy dla tego numerkowego liczy się to ogólne z {{Code| i}}, a ponieważ ta nazwa jest pusta, więc będziemy liczyli nazwę przestrzeni nazw z {{Code|nazwa jednostki 2}}: <syntaxhighlight lang="mediawiki"> {{#invoke:Pudełko|Nazwa przedmiotowej przestrzeni nazw 2|numer jednostki=2}} </syntaxhighlight> Na podstawie powyższego przykładu otrzymamy wynik o schemacie, nie wyniku, bo tam nie ma zmiennej {{Code|nazwa przestrzeni nazw 1}}, ale jest {{Code|nazwa przestrzeni nazw i}}: <syntaxhighlight lang="mediawiki"> <!-- Ale nie "nazwa przestrzeni nazw 2", bo jej nie ma, ale za to istnieje "nazwa przestrzeni nazw i"; --> <!-- nazwa przestrzeni nazw 2=nazwa przestrzeni nazw i="", a nazwa jednostki 2="Dyskusja Wikibooks:Strona"; --> <!-- Czyli wynik: --> Wikibooks <!-- Widzimy, że wygenerowała się nazwa przestrzeni nazw, którą jest przestrzeń nieprogramowa, ale projektu, wychodząca z nazwy jednostek w tym przypadku z "nazwa jednostki 2"; --> </syntaxhighlight> Nie jest brana w tym powyższym przykładzie zmienna {{Code|nazwa przestrzeni nazw}}, bo jej nie ma, ale za to jest {{Code|nazwa przestrzeni nazw i}}, bo ona występuje jako parametr domyślny ogólny dla parametrów numerkowych. Tytaj jest używana jest zmienna {{Code|nazwa jednostki 2}} do wygenerowania ostatecznego wyniku, bo jak można zauważyć, parametry przestrzenne wskazują na przestrzeń główną, a nazwy jednostek już nie. Przykłady w wikikodzie: * {{Code|{{m|Pudełko|Nazwa przedmiotowej przestrzeni nazw 2|numer jednostki{{=}}2}}}} → {{Tt|{{#invoke:Pudełko|Nazwa przedmiotowej przestrzeni nazw 2|numer jednostki=2}}}} * {{Code|{{m|Pudełko|Nazwa przedmiotowej przestrzeni nazw 2|Dyskusja szablonu|nazwa przestrzeni nazw i{{=}}Moja przestrzeń|numer jednostki{{=}}2}}}} → {{Tt|{{#invoke:Pudełko|Nazwa przedmiotowej przestrzeni nazw 2|Dyskusja szablonu|nazwa przestrzeni nazw i=Moja przestrzeń|numer jednostki=2}}}} * {{Code|{{m|Pudełko|Nazwa przedmiotowej przestrzeni nazw 2|nazwa przestrzeni nazw 2{{=}}Dyskusja|nazwa jednostki 2{{=}}Dyskusja szablonu:Strona|numer jednostki{{=}}2}}}} → {{Tt|{{#invoke:Pudełko|Nazwa przedmiotowej przestrzeni nazw 2|nazwa przestrzeni nazw 2=Dyskusja|nazwa jednostki 2=Dyskusja szablonu:Strona|numer jednostki=2}}}} * {{Code|{{m|Pudełko|Nazwa przedmiotowej przestrzeni nazw 2|nazwa przestrzeni nazw i{{=}}Dyskusja|nazwa jednostki 2{{=}}Dyskusja szablonu:Strona|numer jednostki{{=}}2}}}} → {{Tt|{{#invoke:Pudełko|Nazwa przedmiotowej przestrzeni nazw 2|nazwa przestrzeni nazw i=Dyskusja|nazwa jednostki 2=Dyskusja szablonu:Strona|numer jednostki=2}}}} * {{Code|{{m|Pudełko|Nazwa przedmiotowej przestrzeni nazw 2|Dyskusja szablonu|nazwa przestrzeni nazw{{=}}Dyskusja|nazwa jednostki 2{{=}}Wikibooks:Strona|numer jednostki{{=}}2}}}} → {{Tt|{{#invoke:Pudełko|Nazwa przedmiotowej przestrzeni nazw 2|Dyskusja szablonu|nazwa przestrzeni nazw=Dyskusja|nazwa jednostki 2=Dyskusja Wikibooks:Strona|numer jednostki=2}}}} Powyżej dla przykładu podano parametry nie w rodzicu w szablonie, tylko w dziecku, jeśli chodzi o parametry nazw przestrzeni nazw i nazw jednostek, ale ich się za to nie powinno podawać w tych ramach, tylko w szablonach, w których wywoływane są te ramki pudełek {{Code|{{m|Pudełko}}}}, ale tak tutaj tak zrobiono by było najłatwiej sprawdzić działanie tego typu funkcji. Analogicznie możemy podawać parametry typu jednostki, np.: wywołaniu modułowym {{Code|{{m|Pudełko|Nazwa przedmiotowej przestrzeni nazw 2|typ jednostki 2{{=}}Podręcznik|nazwa jednostki 2{{=}}Dyskusja szablonu:Strona|numer jednostki{{=}}2}}}} (ale wtedy jest brana przestrzeń nazw z nazwy jednostki), ale o tym więcej w rozdziałach {{Code|{{sr|# p["Przedmiotowy typ jednostki 2"](frame,i)|p=Pudełko}}}} w „{{sr|#Funkcje typu jednostki|p=Pudełko}}”, on definiuje przestrzenie przedmiotowe, ale można użyć parametru dyskusji typu jednostki z wartością niepustą, pustą, czy nawet jej nie podamy, wtedy wyświetli się nazwa przestrzeni nazw przedmiotowej. Jeżeli typ jednostki wskazuje na przestrzeń nazw główną, wtedy się liczą parametry nazw jednostek. Również parametry typu jednostki nie powinno się podawać w dziecku w ramce, tylko w rodzicu w szablonie jako parametry, w którym ta ramka jest wywoływana, ale tutaj podano jedynie dla przykładu, jak najłatwiej sprawdzić działanie tych parametrów tej funkcji. Najpierw w funkcji nagłówku brane są parametry nazw przestrzeni nazw, a jeżeli ich nie ma, to parametry typu jednostki, a jeżeli nie ma lub parametry przestrzenne wskazują na przestrzeń główną, i nie ma nazwy jednostki, to generowane są nazwy tej funkcji na podstawie aktualnej strony. === {{Code|p["Nazwa przestrzeni nazw dyskusji 2"](frame,...)}} === Funkcja pisze nazwę przestrzeni nazw dyskusji jakikolwiek nazwy przestrzeni nazw (tzn. nazwę dyskusji nazwy przestrzenie nazw, czyli nie przedmiotowej, zamieniana jest na nią samą, czyli identyfikator przestrzeni się nie zmienia, a przedmiotową, nie dyskusji, przekształca się na dyskusji jej odpowiadającą, czyli w tym przypadku identyfikator przestrzeni zwiększa się o numer więcej), według, i nie zawsze tylko, podanej w zmiennej {{Code|nazwa przestrzeni nazw}} dla pozycja bazowej w podanych parametrach szablonu rodzicu ramki dziecka, lub dla innej pozycji należy parametr podawać w formie {{Code|nazwa przestrzeni nazw 1}}, {{Code|nazwa przestrzeni nazw 2}}, {{Code|nazwa przestrzeni nazw 3}},..., lub te parametry można podać w postaci ogólnej {{Code|nazwa przestrzeni nazw i}}. W tej funkcji trzeba też podawać parametry nazwy jednostek {{Code|nazwa jednostki}}, {{Code|nazwa jednostki 1}}, {{Code|nazwa jednostki 2}}, {{Code|nazwa jednostki 3}},... Parametry podaje się w parametrach rodzica wywołania tej funkcji {{Code|{{m|Pudełko|Nazwa przestrzeni nazw dyskusji 2}}}} (ale ich nie trzeba podawać w dziecku, ale można) i w parametrach dziecka, jeśli chodzi o zmienną {{Code|numer jednostki}}, czyli np.: {{Code|{{m|Pudełko|Nazwa przestrzeni nazw dyskusji 2|numer jednostki{{=}}<jakaś liczba całkowita dodatnia>}}}}. Te parametry przestrzenne zamiast w rodzicu w szablonie można podać w ramce dziecka, wtedy parametry dziecka mają pierwszeństwo. Przestrzeń nazw z parametrów nazw przestrzennych po przekształceniu na przedmiotową może odpowiadać wartości przestrzeni głównej, to wtedy odpowiednia przestrzeń nazw z parametru nazwy jednostki się liczy w tej funkcji, wtedy jest liczona nazwa przestrzeni nazw z tego parametru. Gdy parametry przestrzenne lub typ jednostki w drugim podejściu nie wskazują na przestrzeń główną, to wtedy działanie tej funkcji jest podobne do {{Code|{{sr|#p["Nazwa dyskusji przestrzeni nazw"](frame,...)|p=Pudełko}}}}. Definicja skrótowa funkcji: <syntaxhighlight lang="lua"> p["Nazwa przestrzeni nazw dyskusji 2"]=function(frame,czy_uwzglednic_alternatywna_nazwe,i)...end; </syntaxhighlight> Wtedy ciało funkcji tej, czyli jego definicja w środku, jest: <syntaxhighlight lang="lua"> local pudelko_pomocne_modul=require("Module:Pudełko/Pomocne"); return pudelko_pomocne_modul.Nazwa_przestrzeni_nazw_przedmiotowa_dyskusji_2(frame,czy_uwzglednic_alternatywna_nazwe,i,"dyskusja"); </syntaxhighlight> Parametry funkcji: * {{Code|frame}} - tablica ramki tablicy transportu, * {{Code|czy_uwzglednic_alternatywna_nazwe}} - czy ma uwzględniać nazwę przestrzeni nazw domyślną szablonu, dostępne wartości: {{Code|false}}, w której nazwa domyślna nie jest uwzględniana wtedy, oraz {{Code|nil}} i {{Code|true}}, które oznaczają to samo, w tym jeżeli ona jest uwzględniana, wtedy jest brany parametr pierwszy dziecka, który musi istnieć przy takiej wartości tego parametru, tzn. {{Code|{{m|Pudełko|Nazwa przestrzeni nazw dyskusji 2|Szablon}}}}, a nazwa uzyskana nazwy przestrzeni nazw jest w takim przypadku błędna, a jeżeli nazwa domyślna jest błędna, czyli {{Code|{{m|Pudełko|Nazwa przestrzeni nazw dyskusji 2|Moja przestrzeń}}}}, wtedy funkcja zwraca stan błędu {{Code|(błąd)}}. * {{Code|i}} - numer zmiennej nazwy przestrzeni nazw. Funkcja wykorzystuje {{Code|{{sr|#p.Nazwa_przestrzeni_nazw_przedmiotowa_dyskusji_2(frame,...)|p=Pudełko/Pomocne}}}} do wyznaczania ogólnego nazwy przestrzeni nazw dla pozycji bazowej i numerkowej, tzn. dla pozycji: jeden, dwa, trzy,..., itd, i ich ogólnej. Parametr ramki tablicy transportu rodzica szablonu: * {{Code|nazwa przestrzeni nazw}}, {{Code|nazwa przestrzeni nazw 1}}, {{Code|nazwa przestrzeni nazw 2}}, {{Code|nazwa przestrzeni nazw 3}},..., {{Code|nazwa przestrzeni nazw i}} - nazwy przestrzeni nazw dla pozycji bazowej oraz zwykłej i ogólnej numerkowej, * {{Code|nazwa jednostki}}, {{Code|nazwa jednostki 1}}, {{Code|nazwa jednostki 2}}, {{Code|nazwa jednostki 3}},... - nazwy jednostek dla pozycji bazowej i numerkowej, * {{Code|typ jednostki}}, {{Code|typ jednostki 1}}, {{Code|typ jednostki 2}}, {{Code|typ jednostki 3}},..., {{Code|typ jednostki i}} - typy jednostek, którym odpowiadają pewne przestrzenie przedmiotowe, dla pozycji bazowej, numerkowej i ogólnej. Parametry ramki tablicy transportu dziecka: * Parametry dziecka są takie same jak rodzica dla funkcji pudełkowej plus tu wymienione, * {{Code|numer jednostki}} - jak parametr {{Code|i}} nie został ustawiony, to wtedy liczy się ta zmienna. Przykłady: <syntaxhighlight lang="mediawiki"> {{Nazwa szablonu|nazwa przestrzeni nazw=Wikibooks|nazwa przestrzeni nazw 1=Szablon|nazwa przestrzeni nazw i=|nazwa jednostki 2=Wikibooks:Strona}} </syntaxhighlight> W dziecku powiedzmy jest wywołanie, i szukamy nazwy przestrzeni nazw o numerze dwa, która została podana, ale istnieje za to jej wersji ogólna {{Code|nazwa przestrzeni nazw i}} i domyślna {{Code|nazwa przestrzeni nazw}}, ale wtedy dla tego numerkowego liczy się to ogólne z {{Code| i}}, a ponieważ ta nazwa jest pusta, więc będziemy liczyli nazwę przestrzeni nazw z {{Code|nazwa jednostki 2}}: <syntaxhighlight lang="mediawiki"> {{#invoke:Pudełko|Nazwa przestrzeni nazw dyskusji 2|numer jednostki=2}} </syntaxhighlight> Na podstawie powyższego przykładu otrzymamy wynik o schemacie, nie wyniku, bo tam nie ma zmiennej {{Code|nazwa przestrzeni nazw 1}}, ale jest {{Code|nazwa przestrzeni nazw i}}: <syntaxhighlight lang="mediawiki"> <!-- Ale nie "nazwa przestrzeni nazw 2", bo jej nie ma, ale za to istnieje "nazwa przestrzeni nazw i"; --> <!-- nazwa przestrzeni nazw 2=nazwa przestrzeni nazw i="", a nazwa jednostki 2="Wikibooks:Strona"; --> <!-- Czyli wynik: --> Dyskusja Wikibooks <!-- Widzimy, że wygenerowała się nazwa przestrzeni nazw, którą jest przestrzeń nieprogramowa, ale dyskusji projektu, wychodząca z nazwy jednostek w tym przypadku z "nazwa jednostki 2"; --> </syntaxhighlight> Nie jest brana w tym powyższym przykładzie zmienna {{Code|nazwa przestrzeni nazw}}, bo jej nie ma, ale za to jest {{Code|nazwa przestrzeni nazw i}}, bo ona występuje jako parametr domyślny ogólny dla parametrów numerkowych. Tytaj jest używana jest zmienna {{Code|nazwa jednostki 2}} do wygenerowania ostatecznego wyniku, bo jak można zauważyć, parametry przestrzenne wskazują na przestrzeń główną, a nazwy jednostek już nie. Przykłady w wikikodzie: * {{Code|{{m|Pudełko|Nazwa przestrzeni nazw dyskusji 2|numer jednostki{{=}}2}}}} → {{Tt|{{#invoke:Pudełko|Nazwa przestrzeni nazw dyskusji 2|numer jednostki=2}}}} * {{Code|{{m|Pudełko|Nazwa przestrzeni nazw dyskusji 2|Szablon|nazwa przestrzeni nazw i{{=}}Moja przestrzeń|numer jednostki{{=}}2}}}} → {{Tt|{{#invoke:Pudełko|Nazwa przestrzeni nazw dyskusji 2|Szablon|nazwa przestrzeni nazw i=Moja przestrzeń|numer jednostki=2}}}} * {{Code|{{m|Pudełko|Nazwa przestrzeni nazw dyskusji 2|nazwa przestrzeni nazw 2{{=}}|nazwa jednostki 2{{=}}Szablon:Strona|numer jednostki{{=}}2}}}} → {{Tt|{{#invoke:Pudełko|Nazwa przestrzeni nazw dyskusji 2|nazwa przestrzeni nazw 2=|nazwa jednostki 2=Szablon:Strona|numer jednostki=2}}}} * {{Code|{{m|Pudełko|Nazwa przestrzeni nazw dyskusji 2|nazwa przestrzeni nazw i{{=}}|nazwa jednostki 2{{=}}Szablon:Strona|numer jednostki{{=}}2}}}} → {{Tt|{{#invoke:Pudełko|Nazwa przestrzeni nazw dyskusji 2|nazwa przestrzeni nazw i=|nazwa jednostki 2=Szablon:Strona|numer jednostki=2}}}} * {{Code|{{m|Pudełko|Nazwa przestrzeni nazw dyskusji 2|Szablon|nazwa przestrzeni nazw{{=}}|nazwa jednostki 2{{=}}Wikibooks:Strona|numer jednostki{{=}}2}}}} → {{Tt|{{#invoke:Pudełko|Nazwa przestrzeni nazw dyskusji 2|Szablon|nazwa przestrzeni nazw=|nazwa jednostki 2=Dyskusja Wikibooks:Strona|numer jednostki=2}}}} Powyżej dla przykładu podano parametry nie w rodzicu w szablonie, tylko w dziecku, jeśli chodzi o parametry nazw przestrzeni nazw i nazw jednostek, ale ich się za to nie powinno podawać w tych ramach, tylko w szablonach, w których wywoływane są te ramki pudełek {{Code|{{m|Pudełko}}}}, ale tak tutaj tak zrobiono by było najłatwiej sprawdzić działanie tego typu funkcji. Analogicznie możemy podawać parametry typu jednostki, np.: wywołaniu modułowym {{Code|{{m|Pudełko|Nazwa przestrzeni nazw dyskusji 2|typ jednostki 2{{=}}Podręcznik|nazwa jednostki 2{{=}}Szablon:Strona|numer jednostki{{=}}2}}}} (ale wtedy jest brana przestrzeń nazw z nazwy jednostki), ale o tym więcej w rozdziałach {{Code|{{sr|# p["Dyskusyjny typ jednostki 2"](frame,i)|p=Pudełko}}}} w „{{sr|#Funkcje typu jednostki|p=Pudełko}}”, one definiują przestrzenie dyskusji, ale można użyć parametru dyskusji typu jednostki z obojętnie jaką wartością niepustą, czy pustą, czy nawet jej nie podamy, wtedy wyświetli się nazwa przestrzeni nazw dyskusji. Jeżeli typ jednostki wskazuje na przestrzeń nazw główną, wtedy się liczą parametry nazw jednostek. Również parametry typu jednostki nie powinno się podawać w dziecku w ramce, tylko w rodzicu w szablonie jako parametry, w którym ta ramka jest wywoływana, ale tutaj podano jedynie dla przykładu, jak najłatwiej sprawdzić działanie tych parametrów tej funkcji. Najpierw w funkcji nagłówku brane są parametry nazw przestrzeni nazw, a jeżeli ich nie ma, to parametry typu jednostki, a jeżeli nie ma lub parametry przestrzenne wskazują na przestrzeń główną, i nie ma nazwy jednostki, to generowane są nazwy tej funkcji na podstawie aktualnej strony. == Funkcje pełnych nazw jednostki == === {{Code|p["Pełna nazwa dyskusji jednostki"](frame,i)}} === === {{Code|p["Pełna nazwa przedmiotowa jednostki"](frame,i)}} === === {{Code|p["Pełna nazwa jednostki"](frame,i)}} === == Funkcje pełnych nazw jednostki drugiej wersji == === {{Code|p["Pełna nazwa dyskusji jednostki 2"](frame,i)}} === === {{Code|p["Pełna nazwa przedmiotowa jednostki 2"](frame,i)}} === === {{Code|p["Pełna nazwa jednostki 2"](frame,i)}} === == Funkcje pełnych nazw jednostki trzeciej wersji == === {{Code|p["Pełna nazwa dyskusji jednostki 3"](frame,i)}} === === {{Code|p["Pełna nazwa przedmiotowa jednostki 3"](frame,i)}} === === {{Code|p["Pełna nazwa jednostki 3"](frame,i)}} === == Funkcje nazw jednostki == === {{Code|p["Nazwa jednostki"](frame,i)}} === == Funkcje nazw jednostki drugiej wersji == === {{Code|p["Nazwa jednostki 2"](frame,i)}} === === {{Code|p["Nazwa przedmiotowa jednostki 2"](frame,i)}} === === {{Code|p["Nazwa dyskusji jednostki 2"](frame,i)}} === == Funkcje nazw przestrzeni nazw trzeciej wersji == === {{Code|p["Nazwa przestrzeni nazw 3"](frame,i)}} === Funkcja pisze nazwę przestrzeni nazw, niezależnie, czy to jest przedmiotowa, czy dyskusji, według, i nie zawsze tylko, podanej w zmiennej {{Code|nazwa przestrzeni nazw}} dla pozycja bazowej w podanych parametrach szablonu rodzicu ramki dziecka, lub dla innej pozycji należy parametr podawać w formie {{Code|nazwa przestrzeni nazw 1}}, {{Code|Nazwa przestrzeni nazw 3}}, {{Code|nazwa przestrzeni nazw 3}},..., lub te parametry można podać w postaci ogólnej {{Code|nazwa przestrzeni nazw i}}. W tej funkcji trzeba też podawać parametry nazwy jednostek {{Code|nazwa jednostki}}, {{Code|nazwa jednostki 1}}, {{Code|nazwa jednostki 2}}, {{Code|nazwa jednostki 3}},... Parametry podaje się w parametrach rodzica wywołania tej funkcji {{Code|{{m|Pudełko|Nazwa przestrzeni nazw 3}}}} (ale ich nie trzeba podawać w dziecku, ale można) i w parametrach dziecka, jeśli chodzi o zmienną {{Code|numer jednostki}}, czyli np.: {{Code|{{m|Pudełko|Nazwa przestrzeni nazw 3|numer jednostki{{=}}<jakaś liczba całkowita dodatnia>}}}}. Te parametry przestrzenne zamiast w rodzicu w szablonie można podać w ramce dziecka, wtedy parametry dziecka mają pierwszeństwo. Przestrzeń nazw z parametrów nazw przestrzennych bazowych (bez numerka) może odpowiadać wartości przestrzeni głównej, to wtedy odpowiednia przestrzeń nazw z parametru nazwy jednostki się nie liczy w tej funkcji, aby się liczyła należy użyć funkcji {{Code|{{sr|#p["Nazwa przestrzeni nazw"](frame,...)|p=Pudełko}}}}. Przestrzeń nazw z parametrów nazw przestrzennych numerkowych może odpowiadać wartości przestrzeni głównej, to wtedy odpowiednia przestrzeń nazw z parametru nazwy jednostki się liczy w tej funkcji, wtedy jest liczona nazwa przestrzeni nazw z tego parametru. Gdy parametry przestrzenne lub typ jednostki w drugim podejściu nie wskazują na przestrzeń główną, to wtedy działanie tej funkcji jest podobne do {{Code|{{sr|#p["Nazwa przestrzeni nazw 2"](frame,...)|p=Pudełko}}}}. Definicja skrótowa funkcji: <syntaxhighlight lang="lua"> p["Nazwa przestrzeni nazw 3"]=function(frame,czy_uwzglednic_alternatywna_nazwe,i)...end; </syntaxhighlight> Wtedy ciało funkcji tej, czyli jego definicja w środku, jest: <syntaxhighlight lang="lua"> -- Jest liczony numer parametru nazwy przestrzeni nazw, domyslnie chodzi tu o numer bazowy parametrów przestrzennych; local numer_jednostki=i or frame.args["numer jednostki"]; local liczba_numeru_jednostki=((numer_jednostki)and(tonumber(numer_jednostki)) or 0); local pudelko_pomocne_modul=require("Module:Pudełko/Pomocne"); -- Liczy nazwę przestrzeni nazw dyskusji na podstawie podanych parametrów; return pudelko_pomocne_modul.Uzyskanie_nazw_jednostki(frame,0,liczba_numeru_jednostki,nil,2); </syntaxhighlight> Parametry funkcji: * {{Code|frame}} - tablica ramki tablicy transportu, * {{Code|czy_uwzglednic_alternatywna_nazwe}} - czy ma uwzględniać nazwę przestrzeni nazw domyślną szablonu, dostępne wartości: {{Code|false}}, w której nazwa domyślna nie jest uwzględniana wtedy, oraz {{Code|nil}} i {{Code|true}}, które oznaczają to samo, w tym jeżeli ona jest uwzględniana, wtedy jest brany parametr pierwszy dziecka, który musi istnieć przy takiej wartości tego parametru, tzn. {{Code|{{m|Pudełko|Nazwa przestrzeni nazw 3|Szablon}}}}, a nazwa uzyskana nazwy przestrzeni nazw jest w takim przypadku błędna, a jeżeli nazwa domyślna jest błędna, czyli {{Code|{{m|Pudełko|Nazwa przestrzeni nazw 3|Moja przestrzeń}}}}, wtedy funkcja zwraca stan błędu {{Code|(błąd)}}. * {{Code|i}} - numer zmiennej nazwy przestrzeni nazw. Funkcja wykorzystuje {{Code|{{sr|#p.Uzyskanie_nazw_jednostki(frame,...)|p=Pudełko/Pomocne}}}} do wyznaczania ogólnego nazwy przestrzeni nazw dla pozycji bazowej i numerkowej, tzn. dla pozycji: jeden, dwa, trzy,..., itd, i ich ogólnej. Parametr ramki tablicy transportu rodzica szablonu: * {{Code|nazwa przestrzeni nazw}}, {{Code|nazwa przestrzeni nazw 1}}, {{Code|Nazwa przestrzeni nazw 3}}, {{Code|nazwa przestrzeni nazw 3}},..., {{Code|nazwa przestrzeni nazw i}} - nazwy przestrzeni nazw dla pozycji bazowej oraz zwykłej i ogólnej numerkowej, * {{Code|nazwa jednostki}}, {{Code|nazwa jednostki 1}}, {{Code|nazwa jednostki 2}}, {{Code|nazwa jednostki 3}},... - nazwy jednostek dla pozycji bazowej i numerkowej, * {{Code|typ jednostki}}, {{Code|typ jednostki 1}}, {{Code|typ jednostki 2}}, {{Code|typ jednostki 3}},..., {{Code|typ jednostki i}} - typy jednostek, którym odpowiadają pewne przestrzenie przedmiotowe, dla pozycji bazowej, numerkowej i ogólnej, ** {{Code|dyskusja typu jednostki}}, {{Code|dyskusja typu jednostki 1}}, {{Code|dyskusja typ jednostki 2}}, {{Code|dyskusja typ jednostki 3}},..., {{Code|dyskusja typ jednostki i}} - czy dany typ jednostki ma przedstawiać, jeśli niepusta, przestrzeń dyskusji dla pozycji bazowej, numerkowej i ogólnej. Parametry ramki tablicy transportu dziecka: * Parametry dziecka są takie same jak rodzica dla funkcji pudełkowej plus tu wymienione, * {{Code|numer jednostki}} - jak parametr {{Code|i}} nie został ustawiony, to wtedy liczy się ta zmienna. Przykłady: <syntaxhighlight lang="mediawiki"> {{Nazwa szablonu 1|nazwa przestrzeni nazw=Wikibooks|nazwa przestrzeni nazw=|nazwa przestrzeni nazw i=|nazwa jednostki=Szablon:Strona}} ---- {{Nazwa szablonu 2|nazwa przestrzeni nazw=Wikibooks|nazwa przestrzeni nazw 1=Szablon|nazwa przestrzeni nazw i=|nazwa jednostki 2=Wikibooks:Strona}} </syntaxhighlight> W pierwszym wywołaniu {{Code|nazwa przestrzeni nazw}} jest puste, ale dla tego bazowego (bez numerka) szukamy przestrzeni nazw, a więc ta nazwa jest ostateczna. ---- W drugim wywołaniu w dziecku powiedzmy jest wywołanie, i szukamy nazwy przestrzeni nazw o numerze dwa, która została podana, ale istnieje za to jej wersji ogólna {{Code|nazwa przestrzeni nazw i}} i domyślna {{Code|nazwa przestrzeni nazw}}, ale wtedy dla tego numerkowego liczy się to ogólne z {{Code| i}}, a ponieważ ta nazwa jest pusta, więc będziemy liczyli nazwę przestrzeni nazw z {{Code|nazwa jednostki 2}}. Odpowiadająca powyższemu kodowi, powiedzmy wikikod, według ich zawartości, przedstawia się: <syntaxhighlight lang="mediawiki"> {{#invoke:Pudełko|Nazwa przestrzeni nazw 3}} ---- {{#invoke:Pudełko|Nazwa przestrzeni nazw 3|numer jednostki=2}} </syntaxhighlight> Na podstawie powyższego przykładu otrzymamy wynik o schemacie, nie wyniku, bo tam nie ma zmiennej {{Code|nazwa przestrzeni nazw 1}}, ale jest {{Code|nazwa przestrzeni nazw i}}: <syntaxhighlight lang="mediawiki"> <!-- nazwa przestrzeni nazw=""; --> <!-- Czyli wynik: --> <!-- wynik pusty --> <!-- Widzimy, że wygenerowała się nazwa przestrzeni nazw, którą jest przestrzeń nazw główna, jest ciągiem pustym: ""; --> ---- <!-- Ale nie "nazwa przestrzeni nazw 2", bo jej nie ma, ale za to istnieje "nazwa przestrzeni nazw i"; --> <!-- nazwa przestrzeni nazw 2=nazwa przestrzeni nazw i="", a nazwa jednostki 2="Wikibooks:Strona"; --> <!-- Czyli wynik: --> Wikibooks <!-- Widzimy, że wygenerowała się nazwa przestrzeni nazw, którą jest przestrzeń nieprogramowa, ale projektu, wychodząca z nazwy jednostek w tym przypadku z "nazwa jednostki 2"; --> </syntaxhighlight> Dla parametrów numerkowych nie jest brana w tym powyższym przykładzie zmienna {{Code|nazwa przestrzeni nazw 2}}, bo jej nie ma, ale za to jest {{Code|nazwa przestrzeni nazw i}}, bo ona występuje jako parametr domyślny ogólny dla parametrów numerkowych. Tytaj jest używana jest zmienna {{Code|nazwa jednostki 2}} do wygenerowania ostatecznego wyniku, bo jak można zauważyć, parametry przestrzenne wskazują na przestrzeń główną, a nazwy jednostek już nie. Dla parametrów bazowych mamy zmienną {{Code|nazwa przestrzeni nazw}}, ona jest pusta, więc to zostanie wziete do ostatecznego wyniku. Przykłady w wikikodzie: * {{Code|{{m|Pudełko|Nazwa przestrzeni nazw 3|nazwa przestrzeni nazw{{=}}|nazwa jednostki{{=}}Wikibooks:Strona}}}} → {{Tt|{{#invoke:Pudełko|Nazwa przestrzeni nazw 3|nazwa przestrzeni nazw=|nazwa jednostki=Wikibooks:Szablon}}}} * {{Code|{{m|Pudełko|Nazwa przestrzeni nazw 3|nazwa przestrzeni nazw 2{{=}}|nazwa jednostki 2{{=}}Wikibooks:Strona|numer jednostki{{=}}2}}}} → {{Tt|{{#invoke:Pudełko|Nazwa przestrzeni nazw 3|nazwa przestrzeni nazw 2=|nazwa jednostki 2=Wikibooks:Szablon|numer jednostki=2}}}} Powyżej dla przykładu podano parametry nie w rodzicu w szablonie, tylko w dziecku, jeśli chodzi o parametry nazw przestrzeni nazw i nazw jednostek, ale ich się za to nie powinno podawać w tych ramach, tylko w szablonach, w których wywoływane są te ramki pudełek {{Code|{{m|Pudełko}}}}, ale tak tutaj tak zrobiono by było najłatwiej sprawdzić działanie tego typu funkcji. Analogicznie możemy podawać parametry typu jednostki, np.: wywołaniu modułowym {{Code|{{m|Pudełko|Nazwa przestrzeni nazw 3|typ jednostki 2{{=}}Podręcznik|nazwa jednostki 2{{=}}Szablon:Strona|numer jednostki{{=}}2}}}} (ale wtedy jest brana przestrzeń nazw z nazwy jednostki), ale o tym więcej w rozdziałach {{Code|{{sr|#p["Typ jednostki 3"](frame,i)|p=Pudełko}}}} w „{{sr|#Funkcje typu jednostki|p=Pudełko}}”, on definiuje przestrzenie przedmiotowe, ale można użyć parametru dyskusji typu jednostki z wartością niepustą, wtedy wyświetli się nazwa przestrzeni nazw dyskusji. Jeżeli typ jednostki bazowy wskazuje na przestrzeń nazw główną, wtedy się nie liczą parametry nazw jednostek, a na numerkowy, wtedy się liczy. Również parametry typu jednostki nie powinno się podawać w dziecku w ramce, tylko w rodzicu w szablonie jako parametry, w którym ta ramka jest wywoływana, ale tutaj podano jedynie dla przykładu, jak najłatwiej sprawdzić działanie tych parametrów tej funkcji. Najpierw w funkcji nagłówku brane są parametry nazw przestrzeni nazw, a jeżeli ich nie ma, to parametry typu jednostki, a jeżeli nie ma lub parametry przestrzenne wskazują na przestrzeń główną, i nie ma nazwy jednostki, to generowane są nazwy tej funkcji na podstawie aktualnej strony. === {{Code|p["Nazwa przedmiotowej przestrzeni nazw 3"](frame,i)}} === Funkcja pisze przedmiotową nazwę przestrzeni nazw jakikolwiek nazwy przestrzeni nazw (tzn. nazwę przedmiotową nazwy przestrzenie nazw, czyli nie dyskusji, zamieniana jest na nią samą, czyli identyfikator przestrzeni się nie zmienia, a dyskusji, nie przedmiotową, przekształca się na przedmiotową jej odpowiadającą, czyli w tym przypadku identyfikator przestrzeni zmniejsza się o numer mniej), według podanej w zmiennej {{Code|nazwa przestrzeni nazw}} dla pozycja bazowej w podanych parametrach szablonu rodzicu ramki dziecka, lub dla innej pozycji należy parametr podawać w formie {{Code|nazwa przestrzeni nazw 1}}, {{Code|nazwa przestrzeni nazw 2}}, {{Code|nazwa przestrzeni nazw 3}},..., lub te parametry można podać w postaci ogólnej {{Code|nazwa przestrzeni nazw i}}. Parametry podaje się w parametrach rodzica wywołania tej funkcji {{Code|{{m|Pudełko|Nazwa przedmiotowej przestrzeni nazw 3}}}} (ale ich nie trzeba podawać w dziecku, ale można) i w parametrach dziecka, jeśli chodzi o zmienną {{Code|numer jednostki}}, czyli np.: {{Code|{{m|Pudełko|Nazwa przedmiotowej przestrzeni nazw 3|numer jednostki{{=}}<jakaś liczba całkowita dodatnia>}}}}. Te parametry przestrzenne zamiast w rodzicu w szablonie można podać w ramce dziecka, wtedy parametry dziecka mają pierwszeństwo. Parametry przestrzenne mogą mogą być podane w postaci przestrzeni przedmiotowej lub dyskusji, ale ta funkcja zawsze ją zamienia na przedmiotową. Przestrzeń nazw z parametrów nazw przestrzennych bazowych (bez numerka) może odpowiadać wartości przestrzeni głównej, to wtedy odpowiednia przestrzeń nazw z parametru nazwy jednostki się nie liczy w tej funkcji, aby się liczyła należy użyć funkcji {{Code|{{sr|#p["Nazwa przedmiotowej przestrzeni nazw"](frame,...)|p=Pudełko}}}}. Przestrzeń nazw z parametrów nazw przestrzennych numerkowych może odpowiadać wartości przestrzeni głównej, to wtedy odpowiednia przestrzeń nazw z parametru nazwy jednostki się liczy w tej funkcji, wtedy jest liczona nazwa przestrzeni nazw z tego parametru. Gdy parametry przestrzenne lub typ jednostki w drugim podejściu nie wskazują na przestrzeń główną, to wtedy działanie tej funkcji jest podobne do {{Code|{{sr|#p["Nazwa przedmiotowej przestrzeni nazw 2"](frame,...)|p=Pudełko}}}}. Definicja skrótowa funkcji: <syntaxhighlight lang="lua"> p["Nazwa przedmiotowej przestrzeni nazw 3"]=function(frame,czy_uwzglednic_alternatywna_nazwe,i)...end; </syntaxhighlight> Wtedy ciało funkcji tej, czyli jego definicja w środku, jest: <syntaxhighlight lang="lua"> -- Jest liczony numer parametru nazwy przestrzeni nazw, domyslnie chodzi tu o numer bazowy parametrów przestrzennych; local numer_jednostki=i or frame.args["numer jednostki"]; local liczba_numeru_jednostki=((numer_jednostki)and(tonumber(numer_jednostki)) or 0); local pudelko_pomocne_modul=require("Module:Pudełko/Pomocne"); -- Liczy nazwę przestrzeni nazw przedmiotową na podstawie podanych parametrów; return pudelko_pomocne_modul.Uzyskanie_nazw_jednostki(frame,1,liczba_numeru_jednostki,nil,1); </syntaxhighlight> Parametry funkcji: * {{Code|frame}} - tablica ramki tablicy transportu, * {{Code|czy_uwzglednic_alternatywna_nazwe}} - czy ma uwzględniać nazwę przestrzeni nazw domyślną szablonu, dostępne wartości: {{Code|false}}, w której nazwa domyślna nie jest uwzględniana wtedy, oraz {{Code|nil}} i {{Code|true}}, które oznaczają to samo, w tym jeżeli ona jest uwzględniana, wtedy jest brany parametr pierwszy dziecka, który musi istnieć przy takiej wartości tego parametru, tzn. {{Code|{{m|Pudełko|Nazwa przedmiotowej przestrzeni nazw 3|Dyskusja szablonu}}}} - ta nazwa domyślna zostanie zamieniona na przedmiotową, a jak ona by była przedmiotowa, to żadnej zamiany by nie było, a nazwa uzyskana z nazwy przestrzeni nazw z parametrów przestrzennych jest w takim przypadku błędna, to w takim razie brany jest ten parametr, a jeżeli ta nazwa domyślna jest błędna, czyli {{Code|{{m|Pudełko|Nazwa przedmiotowej przestrzeni nazw 3|Moja przestrzeń}}}}, wtedy funkcja zwraca stan błędu {{Code|(błąd)}}. * {{Code|i}} - numer zmiennej nazwy przestrzeni nazw. Funkcja wykorzystuje {{Code|{{sr|#p.Uzyskanie_nazw_jednostki(frame,...)|p=Pudełko/Pomocne}}}} do wyznaczania ogólnego nazwy przestrzeni nazw dla pozycji bazowej i numerkowej, tzn. dla pozycji: jeden, dwa, trzy,..., itd, i ich ogólnej. Parametr ramki tablicy transportu rodzica szablonu: * {{Code|nazwa przestrzeni nazw}}, {{Code|nazwa przestrzeni nazw 1}}, {{Code|nazwa przestrzeni nazw 2}}, {{Code|nazwa przestrzeni nazw 3}},..., {{Code|nazwa przestrzeni nazw i}} - nazwy przestrzeni nazw dla pozycji bazowej oraz zwykłej i ogólnej numerkowej, * {{Code|typ jednostki}}, {{Code|typ jednostki 1}}, {{Code|typ jednostki 2}}, {{Code|typ jednostki 3}},..., {{Code|typ jednostki i}} - typy jednostek, którym odpowiadają pewne przestrzenie przedmiotowe, dla pozycji bazowej, numerkowej i ogólnej. Parametry ramki tablicy transportu dziecka: * Parametry dziecka są takie same jak rodzica dla funkcji pudełkowej plus tu wymienione, * {{Code|numer jednostki}} - jak parametr {{Code|i}} nie został ustawiony, to wtedy liczy się ta zmienna. Przykłady: <syntaxhighlight lang="mediawiki"> {{Nazwa szablonu 1|nazwa przestrzeni nazw=Wikibooks|nazwa przestrzeni nazw=|nazwa przestrzeni nazw i=|nazwa jednostki=Dyskusja Wikibooks:Strona}} ---- {{Nazwa szablonu 2|nazwa przestrzeni nazw=Wikibooks|nazwa przestrzeni nazw 1=Szablon|nazwa przestrzeni nazw i=|nazwa jednostki 2=Dyskusja Wikibooks:Strona}} </syntaxhighlight> W pierwszym wywołaniu {{Code|nazwa przestrzeni nazw}} jest puste, ale dla tego bazowego (bez numerka) szukamy przestrzeni nazw, a więc ta nazwa jest ostateczna. ---- W drugim wywołaniu w dziecku powiedzmy jest wywołanie, i szukamy nazwy przestrzeni nazw o numerze dwa, która została podana, ale istnieje za to jej wersji ogólna {{Code|nazwa przestrzeni nazw i}} i domyślna {{Code|nazwa przestrzeni nazw}}, ale wtedy dla tego numerkowego liczy się to ogólne z {{Code| i}}, a ponieważ ta nazwa jest pusta, więc będziemy liczyli nazwę przestrzeni nazw z {{Code|nazwa jednostki 2}}. Odpowiadająca powyższemu kodowi, powiedzmy wikikod, według ich zawartości, przedstawia się: <syntaxhighlight lang="mediawiki"> {{#invoke:Pudełko|Nazwa przedmiotowej przestrzeni nazw 3}} ---- {{#invoke:Pudełko|Nazwa przedmiotowej przestrzeni nazw 3|numer jednostki=2}} </syntaxhighlight> Na podstawie powyższego przykładu otrzymamy wynik o schemacie, nie wyniku, bo tam nie ma zmiennej {{Code|nazwa przestrzeni nazw 1}}, ale jest {{Code|nazwa przestrzeni nazw i}}: <syntaxhighlight lang="mediawiki"> <!-- nazwa przestrzeni nazw=""; --> <!-- Czyli wynik: --> <!-- wynik pusty --> <!-- Widzimy, że wygenerowała się nazwa przestrzeni nazw, którą jest przestrzeń nazw główna, jest ciągiem pustym: ""; --> ---- <!-- Ale nie "nazwa przestrzeni nazw 2", bo jej nie ma, ale za to istnieje "nazwa przestrzeni nazw i"; --> <!-- nazwa przestrzeni nazw 2=nazwa przestrzeni nazw i="", a nazwa jednostki 2="Dyskusja Wikibooks:Strona"; --> <!-- Czyli wynik: --> Wikibooks <!-- Widzimy, że wygenerowała się nazwa przestrzeni nazw, którą jest przestrzeń nieprogramowa, ale projektu, wychodząca z nazwy jednostek w tym przypadku z "nazwa jednostki 2"; --> </syntaxhighlight> Dla parametrów numerkowych nie jest brana w tym powyższym przykładzie zmienna {{Code|nazwa przestrzeni nazw 2}}, bo jej nie ma, ale za to jest {{Code|nazwa przestrzeni nazw i}}, bo ona występuje jako parametr domyślny ogólny dla parametrów numerkowych. Tytaj jest używana jest zmienna {{Code|nazwa jednostki 2}} do wygenerowania ostatecznego wyniku, bo jak można zauważyć, parametry przestrzenne wskazują na przestrzeń główną, a nazwy jednostek już nie. Dla parametrów bazowych mamy zmienną {{Code|nazwa przestrzeni nazw}}, ona jest pusta, więc to zostanie wziete do ostatecznego wyniku. Przykłady w wikikodzie: * {{Code|{{m|Pudełko|Nazwa przestrzeni nazw 3|nazwa przestrzeni nazw{{=}}|nazwa jednostki{{=}}Dyskusja Wikibooks:Strona}}}} → {{Tt|{{#invoke:Pudełko|Nazwa przestrzeni nazw 3|nazwa przestrzeni nazw=|nazwa jednostki=Dyskusja Wikibooks:Szablon}}}} * {{Code|{{m|Pudełko|Nazwa przestrzeni nazw 3|nazwa przestrzeni nazw 2{{=}}|nazwa jednostki 2{{=}}Dyskusja Wikibooks:Strona|numer jednostki{{=}}2}}}} → {{Tt|{{#invoke:Pudełko|Nazwa przestrzeni nazw 3|nazwa przestrzeni nazw 2=|nazwa jednostki 2=Dyskusja Wikibooks:Szablon|numer jednostki=2}}}} Powyżej dla przykładu podano parametry nie w rodzicu w szablonie, tylko w dziecku, jeśli chodzi o parametry nazw przestrzeni nazw, ale ich się za to nie powinno podawać w tych ramach, tylko w szablonach, w których wywoływane są te ramki pudełek {{Code|{{m|Pudełko}}}}, ale tak tutaj tak zrobiono by było najłatwiej sprawdzić działanie tego typu funkcji. Analogicznie możemy podawać parametry typu jednostki, np.: wywołaniu modułowym {{Code|{{m|Pudełko|Nazwa przedmiotowej przestrzeni nazw 3|typ jednostki 2{{=}}strona szablonu|numer jednostki{{=}}2}}}}, ale o tym więcej w rozdziałach {{Code|{{sr|# p["Przedmiotowy typ jednostki 3"](frame,i)|p=Pudełko}}}} w „{{sr|#Funkcje typu jednostki|p=Pudełko}}”, ale wtedy ta sama nazwa przestrzeni nazw reprezentowana przez {{Parametr|typ jednostki 2|strona szablonu}}, jest zamieniana na to samo, lepiej jest tutaj używać parametrów przestrzennych nazw niż typu jednostki, bo typ jednostki ma taką samą wartość dla przestrzeni przedmiotowej, co dyskusji. Tutaj parametr dyskusji typu jednostki bazowy i numerkowy ogólny, czy szczegółowy, nie gra roli, bo nawet, gdy wygenerujemy nazwę przestrzeni dyskusji za pomoca tego parametru, to i tak otrzymamy na samym końcu jego nazwę przedmiotową. Jeżeli typ jednostki bazowy wskazuje na przestrzeń nazw główną, wtedy się nie liczą parametry nazw jednostek, a na numerkowy, wtedy się liczy. Również parametry typu jednostki nie powinno się podawać w dziecku w ramce, tylko w rodzicu w szablonie jako parametry, w którym ta ramka jest wywoływana, ale tutaj podano jedynie dla przykładu, jak najłatwiej sprawdzić działanie tych parametrów tej funkcji. Najpierw w funkcji nagłówku brane są parametry nazw przestrzeni nazw, a jeżeli ich nie ma, to parametry typu jednostki, a jeżeli nie ma, to generowane są nazwy na podstawie aktualnego modułu. === {{Code|p["Nazwa przestrzeni nazw dyskusji 3"](frame,i)}} === Funkcja pisze nazwę przestrzeni nazw dyskusji jakikolwiek nazwy przestrzeni nazw (tzn. nazwę dyskusji nazwy przestrzenie nazw, czyli nie przedmiotowej, zamieniana jest na nią samą, czyli identyfikator przestrzeni się nie zmienia, a przedmiotową, nie dyskusji, przekształca się na dyskusji jej odpowiadającą, czyli w tym przypadku identyfikator przestrzeni zwiększa się o numer więcej), według, i nie zawsze tylko, podanej w zmiennej {{Code|nazwa przestrzeni nazw}} dla pozycja bazowej w podanych parametrach szablonu rodzicu ramki dziecka, lub dla innej pozycji należy parametr podawać w formie {{Code|nazwa przestrzeni nazw 1}}, {{Code|nazwa przestrzeni nazw 2}}, {{Code|nazwa przestrzeni nazw 3}},..., lub te parametry można podać w postaci ogólnej {{Code|nazwa przestrzeni nazw i}}. W tej funkcji trzeba też podawać parametry nazwy jednostek {{Code|nazwa jednostki}}, {{Code|nazwa jednostki 1}}, {{Code|nazwa jednostki 2}}, {{Code|nazwa jednostki 3}},... Parametry podaje się w parametrach rodzica wywołania tej funkcji {{Code|{{m|Pudełko|Nazwa przestrzeni nazw dyskusji 3}}}} (ale ich nie trzeba podawać w dziecku, ale można) i w parametrach dziecka, jeśli chodzi o zmienną {{Code|numer jednostki}}, czyli np.: {{Code|{{m|Pudełko|Nazwa przestrzeni nazw dyskusji 3|numer jednostki{{=}}<jakaś liczba całkowita dodatnia>}}}}. Te parametry przestrzenne zamiast w rodzicu w szablonie można podać w ramce dziecka, wtedy parametry dziecka mają pierwszeństwo. Przestrzeń nazw z parametrów nazw przestrzennych bazowych (bez numerka) może odpowiadać wartości przestrzeni głównej, to wtedy odpowiednia przestrzeń nazw z parametru nazwy jednostki się nie liczy w tej funkcji, aby się liczyła należy użyć funkcji {{Code|{{sr|#p["Nazwa przestrzeni nazw dyskusji"](frame,...)|p=Pudełko}}}}. Przestrzeń nazw z parametrów nazw przestrzennych numerkowych może odpowiadać wartości przestrzeni głównej, to wtedy odpowiednia przestrzeń nazw z parametru nazwy jednostki się liczy w tej funkcji, wtedy jest liczona nazwa przestrzeni nazw z tego parametru. Gdy parametry przestrzenne lub typ jednostki w drugim podejściu nie wskazują na przestrzeń główną, to wtedy działanie tej funkcji jest podobne do {{Code|{{sr|#p["Nazwa przestrzeni nazw dyskusji 2"](frame,...)|p=Pudełko}}}}. Definicja skrótowa funkcji: <syntaxhighlight lang="lua"> p["Nazwa przestrzeni nazw dyskusji 3"]=function(frame,czy_uwzglednic_alternatywna_nazwe,i)...end; </syntaxhighlight> Wtedy ciało funkcji tej, czyli jego definicja w środku, jest: <syntaxhighlight lang="lua"> -- Jest liczony numer parametru nazwy przestrzeni nazw, domyslnie chodzi tu o numer bazowy parametrów przestrzennych; local numer_jednostki=i or frame.args["numer jednostki"]; local liczba_numeru_jednostki=((numer_jednostki)and(tonumber(numer_jednostki)) or 0); local pudelko_pomocne_modul=require("Module:Pudełko/Pomocne"); -- Liczy nazwę przestrzeni nazw dyskusji na podstawie podanych parametrów; return pudelko_pomocne_modul.Uzyskanie_nazw_jednostki(frame,2,liczba_numeru_jednostki,nil,1); </syntaxhighlight> Parametry funkcji: * {{Code|frame}} - tablica ramki tablicy transportu, * {{Code|czy_uwzglednic_alternatywna_nazwe}} - czy ma uwzględniać nazwę przestrzeni nazw domyślną szablonu, dostępne wartości: {{Code|false}}, w której nazwa domyślna nie jest uwzględniana wtedy, oraz {{Code|nil}} i {{Code|true}}, które oznaczają to samo, w tym jeżeli ona jest uwzględniana, wtedy jest brany parametr pierwszy dziecka, który musi istnieć przy takiej wartości tego parametru, tzn. {{Code|{{m|Pudełko|Nazwa przestrzeni nazw dyskusji 3|Szablon}}}}, a nazwa uzyskana nazwy przestrzeni nazw jest w takim przypadku błędna, a jeżeli nazwa domyślna jest błędna, czyli {{Code|{{m|Pudełko|Nazwa przestrzeni nazw dyskusji 3|Moja przestrzeń}}}}, wtedy funkcja zwraca stan błędu {{Code|(błąd)}}. * {{Code|i}} - numer zmiennej nazwy przestrzeni nazw. Funkcja wykorzystuje {{Code|{{sr|#p.Uzyskanie_nazw_jednostki(frame,...)|p=Pudełko/Pomocne}}}} do wyznaczania ogólnego nazwy przestrzeni nazw dla pozycji bazowej i numerkowej, tzn. dla pozycji: jeden, dwa, trzy,..., itd, i ich ogólnej. Parametr ramki tablicy transportu rodzica szablonu: * {{Code|nazwa przestrzeni nazw}}, {{Code|nazwa przestrzeni nazw 1}}, {{Code|nazwa przestrzeni nazw 2}}, {{Code|nazwa przestrzeni nazw 3}},..., {{Code|nazwa przestrzeni nazw i}} - nazwy przestrzeni nazw dla pozycji bazowej oraz zwykłej i ogólnej numerkowej, * {{Code|nazwa jednostki}}, {{Code|nazwa jednostki 1}}, {{Code|nazwa jednostki 2}}, {{Code|nazwa jednostki 3}},... - nazwy jednostek dla pozycji bazowej i numerkowej, * {{Code|typ jednostki}}, {{Code|typ jednostki 1}}, {{Code|typ jednostki 2}}, {{Code|typ jednostki 3}},..., {{Code|typ jednostki i}} - typy jednostek, którym odpowiadają pewne przestrzenie przedmiotowe, dla pozycji bazowej, numerkowej i ogólnej. Parametry ramki tablicy transportu dziecka: * Parametry dziecka są takie same jak rodzica dla funkcji pudełkowej plus tu wymienione, * {{Code|numer jednostki}} - jak parametr {{Code|i}} nie został ustawiony, to wtedy liczy się ta zmienna. Przykłady: <syntaxhighlight lang="mediawiki"> {{Nazwa szablonu 1|nazwa przestrzeni nazw=Wikibooks|nazwa przestrzeni nazw=|nazwa przestrzeni nazw i=|nazwa jednostki=Szablon:Strona}} ---- {{Nazwa szablonu 2|nazwa przestrzeni nazw=Wikibooks|nazwa przestrzeni nazw 1=Szablon|nazwa przestrzeni nazw i=|nazwa jednostki 2=Wikibooks:Strona}} </syntaxhighlight> W pierwszym wywołaniu {{Code|nazwa przestrzeni nazw}} jest puste, ale dla tego bazowego (bez numerka) szukamy przestrzeni nazw, a więc ta nazwa jest ostateczna. ---- W drugim wywołaniu w dziecku powiedzmy jest wywołanie, i szukamy nazwy przestrzeni nazw o numerze dwa, która została podana, ale istnieje za to jej wersji ogólna {{Code|nazwa przestrzeni nazw i}} i domyślna {{Code|nazwa przestrzeni nazw}}, ale wtedy dla tego numerkowego liczy się to ogólne z {{Code| i}}, a ponieważ ta nazwa jest pusta, więc będziemy liczyli nazwę przestrzeni nazw z {{Code|nazwa jednostki 2}}. Odpowiadająca powyższemu kodowi, powiedzmy wikikod, według ich zawartości, przedstawia się: <syntaxhighlight lang="mediawiki"> {{#invoke:Pudełko|Nazwa przestrzeni nazw 3}} ---- {{#invoke:Pudełko|Nazwa przestrzeni nazw 3|numer jednostki=2}} </syntaxhighlight> Na podstawie powyższego przykładu otrzymamy wynik o schemacie, nie wyniku, bo tam nie ma zmiennej {{Code|nazwa przestrzeni nazw 1}}, ale jest {{Code|nazwa przestrzeni nazw i}}: <syntaxhighlight lang="mediawiki"> <!-- nazwa przestrzeni nazw=""; --> <!-- Czyli wynik: --> Dyskusja <!-- Widzimy, że wygenerowała się nazwa przestrzeni nazw, którą jest przestrzeń nazw niegłówna, jest ciągiem niepustym; --> ---- <!-- Ale nie "nazwa przestrzeni nazw 2", bo jej nie ma, ale za to istnieje "nazwa przestrzeni nazw i"; --> <!-- nazwa przestrzeni nazw 2=nazwa przestrzeni nazw i="", a nazwa jednostki 2="Wikibooks:Strona"; --> <!-- Czyli wynik: --> Dyskusja Wikibooks <!-- Widzimy, że wygenerowała się nazwa przestrzeni nazw, którą jest przestrzeń nieprogramowa, ale projektu, wychodząca z nazwy jednostek w tym przypadku z "nazwa jednostki 2"; --> </syntaxhighlight> Dla parametrów numerkowych nie jest brana w tym powyższym przykładzie zmienna {{Code|nazwa przestrzeni nazw 2}}, bo jej nie ma, ale za to jest {{Code|nazwa przestrzeni nazw i}}, bo ona występuje jako parametr domyślny ogólny dla parametrów numerkowych. Tytaj jest używana jest zmienna {{Code|nazwa jednostki 2}} do wygenerowania ostatecznego wyniku, bo jak można zauważyć, parametry przestrzenne wskazują na przestrzeń główną, a nazwy jednostek już nie. Dla parametrów bazowych mamy zmienną {{Code|nazwa przestrzeni nazw}}, ona jest pusta, więc to zostanie wziete do ostatecznego wyniku. Przykłady w wikikodzie: * {{Code|{{m|Pudełko|Nazwa przestrzeni nazw dyskusji 3|nazwa przestrzeni nazw{{=}}|nazwa jednostki{{=}}Wikibooks:Strona}}}} → {{Tt|{{#invoke:Pudełko|Nazwa przestrzeni nazw dyskusji 3|nazwa przestrzeni nazw=|nazwa jednostki=Wikibooks:Szablon}}}} * {{Code|{{m|Pudełko|Nazwa przestrzeni nazw dyskusji 3|nazwa przestrzeni nazw 2{{=}}|nazwa jednostki 2{{=}}Wikibooks:Strona|numer jednostki{{=}}2}}}} → {{Tt|{{#invoke:Pudełko|Nazwa przestrzeni nazw dyskusji 3|nazwa przestrzeni nazw 2=|nazwa jednostki 2=Wikibooks:Szablon|numer jednostki=2}}}} Powyżej dla przykładu podano parametry nie w rodzicu w szablonie, tylko w dziecku, jeśli chodzi o parametry nazw przestrzeni nazw i nazw jednostek, ale ich się za to nie powinno podawać w tych ramach, tylko w szablonach, w których wywoływane są te ramki pudełek {{Code|{{m|Pudełko}}}}, ale tak tutaj tak zrobiono by było najłatwiej sprawdzić działanie tego typu funkcji. Analogicznie możemy podawać parametry typu jednostki, np.: wywołaniu modułowym {{Code|{{m|Pudełko|Nazwa przestrzeni nazw dyskusji 3|typ jednostki 2{{=}}Podręcznik|nazwa jednostki 2{{=}}Szablon:Strona|numer jednostki{{=}}2}}}} (ale wtedy jest brana przestrzeń nazw z nazwy jednostki), ale o tym więcej w rozdziałach {{Code|{{sr|# p["Dyskusyjny typ jednostki 3"](frame,i)|p=Pudełko}}}} w „{{sr|#Funkcje typu jednostki|p=Pudełko}}”, one definiują przestrzenie dyskusji, ale można użyć parametru dyskusji typu jednostki z obojętnie jaką wartością niepustą, czy pustą, czy nawet jej nie podamy, wtedy wyświetli się nazwa przestrzeni nazw dyskusji. Jeżeli typ jednostki bazowy wskazuje na przestrzeń nazw główną, wtedy się nie liczą parametry nazw jednostek, a na numerkowy, wtedy się liczy. Również parametry typu jednostki nie powinno się podawać w dziecku w ramce, tylko w rodzicu w szablonie jako parametry, w którym ta ramka jest wywoływana, ale tutaj podano jedynie dla przykładu, jak najłatwiej sprawdzić działanie tych parametrów tej funkcji. Najpierw w funkcji nagłówku brane są parametry nazw przestrzeni nazw, a jeżeli ich nie ma, to parametry typu jednostki, a jeżeli nie ma lub parametry przestrzenne wskazują na przestrzeń główną, i nie ma nazwy jednostki, to generowane są nazwy tej funkcji na podstawie aktualnej strony. == Funkcje nazw jednostki trzeciej wersji == === {{Code|p["Nazwa jednostki 3"](frame,i)}} === === {{Code|p["Nazwa przedmiotowa jednostki 3"](frame,i)}} === === {{Code|p["Nazwa dyskusji jednostki 3"](frame,i)}} === == Funkcje typu jednostki == === {{Code|p["Typ jednostki"](frame,i)}} === === {{Code|p["Typ jednostki 2"](frame,i)}} === === {{Code|p["Typ jednostki 3"](frame,i)}} === === Funkcje typu jednostki przedmiotowe === ==== {{Code|p["Przedmiotowy typ jednostki"](frame,i)}} ==== ==== {{Code|p["Przedmiotowy typ jednostki 2"](frame,i)}} ==== ==== {{Code|p["Przedmiotowy typ jednostki 3"](frame,i)}} ==== === Fukcje typu jednostki dyskusji === ==== {{Code|p["Dyskusyjny typ jednostki"](frame,i)}} ==== ==== {{Code|p["Dyskusyjny typ jednostki 2"](frame,i)}} ==== ==== {{Code|p["Dyskusyjny typ jednostki 3"](frame,i)}} ==== == Funkcje chech pudełka == === {{Code|p["Cecha pudełka"](frame)}} === === {{Code|p["Przedmiotowa cecha pudełka"](frame)}} === === {{Code|p["Dyskusyjna cecha pudełka"](frame)}} === == Fukcje ogólnego pudełka == === {{Code|p["Ogólne pudełko"](frame)}} === == Funkcje ogólne == === {{Code|p["Tekst pudełka"](frame)}} === == Funkcje błędów pudełka == === {{Code|p["Błędy pudełka"](frame)}} === === {{Code|p["Przedmiotowe błędy pudełka"](frame)}} === === {{Code|p["Dyskusyjne błędy pudełka"](frame)}} === == Funkcje nazw stron == === {{Code|p["Nazwa strony głównej projektu"](frame,i)}} === === {{Code|p["Nazwa strony głównej dla dzieci projektu"](frame,i)}} === == Funkcje kodów == === {{Code|p["Kod języka"](frame,i)}} === === {{Code|p["Kod projektu"](frame,i)}} === === {{Code|p["Klucz projektu"](frame,i)}} === == Funkcje wiki == === {{Code|p["Inny niż język bieżący wiki"](frame)}} === === {{Code|p["Inne niż lokalne wiki"](frame)}} === === {{Code|p["Inne niż bieżące wiki"](frame)}} === == Funkcje typów parametrów, czy podane je == === {{Code|p["Podano parametry nienazwane"](frame)}} === === {{Code|p["Podano parametry numerowane"](frame)}} === === {{Code|p["Podano parametry nazwane"](frame)}} === == Funkcje kodów tego projektu == === {{Code|p["Kod projektu tego projektu"](frame)}} === === {{Code|p["Kod języka tego projektu"](frame)}} === === {{Code|p["Klucz projektu tego projektu"](frame)}} === == Funkcje stron == === {{Code|p["Strona główna tego projektu"](frame)}} === === {{Code|p["Strona główna dla dzieci tego projektu"](frame)}} === == Funkcje nazw stron drugiej wersji == === {{Code|p["Nazwa strony głównej dla dzieci projektu 2"](frame)}} === === {{Code| p["Nazwa strony głównej projektu 2"](frame)}} === {{BrClear}} <noinclude><!-- -->{{ProstaStronaKoniec}}<!-- -->{{Kategoria|Opisy funkcji, w Lua w Scribunto, w modułach}}<!-- --></noinclude> sehc1kn0yiswj9hrxdnwmphfvfl3dnq 540442 540441 2026-04-24T02:55:10Z Persino 2851 /* Funkcje nazw przestrzeni nazw drugiej wersji */ 540442 wikitext text/x-wiki <noinclude>{{ProstaStronaStart | nagłówek = {{Podrozdział|{{ld2|Pudełko}}|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 pudelko_modul=require("Module:Pudełko"); </syntaxhighlight> dzięki, któremu można wypisywać funkcje należącego do niego. Posługuje się na parametrach pudełkowych {{Parametr|nazwa przestrzeni nazw}} (czy też bez numerka {{Parametr|nazwa przestrzeni nazw i}} dla tego numerowanego) lub te z numerkiem po jednej spacji w nich (ale nie dla tego z końcówką {{Code| i}}) mogą zostać użyte jako parametry szablonu. Moduł {{Code|{{ld2|Pudełko}}}} przedstawia funkcje nazw w oparciu o funkcje nazw {{Code|{{ld2|Nazwy}}}}, generuje on nazwy za pomocą parametrów pudełkowych podanych poniżej. Parametr {{Parametr|nazwa jednostki}} (lub parametr {{Parametr|cel}} dla numerka tego pierwszego, tego alternatywnego), lub te z numerkiem po jednej spacji w nazwie parametru, albo numerowane numerkami {{Code|1}}, {{Code|2}},..., mogą zostać użyte jako parametry szablonu. Parametry określające rodzaj jednostki {{Parametr|typ jednostki}} z {{Parametr|dyskusja typu jednostki}}, itp. w wersjach z numerkiem po jednej spacji w nich mogą zostać użyte jako parametry szablonu. A te tymi numerowanymi liczbami naturalnymi {{Tt|nazwy jednostki}} od jedynki wzwyż poprzez szablon, w którym są one użyte, one też mogą być użyte z dwukropkiem, te numerowane, na samym początku nazwy, wtedy one są traktowane jako pełne nazwy strony, i wtedy one nie zostaną z interpretowane, że do nich trzeba użyć parametr odpowiedni z nazwą przetrzeni nazw z tego numerowanego, czy ogólny, aby utworzyć znów inną pełną nazwę strony dla tego numerka. Zestawienie: * {{Code|nazwa przestrzeni nazw}} i {{Code|nazwa przestrzeni nazw i}} (ogólna nazwa przestrzeni nazw dla wszystkich numerków, i tych numerowanych jednostek) - i to pierwsze z numerkiem, tzn. {{Code|nazwa przestrzeni nazw 1}}, {{Code|nazwa przestrzeni nazw 2}}, ..., * {{Code|nazwa jednostki}} - i te z numerkiem: {{Code|nazwa jednostki 1}}, {{Code|nazwa jednostki 2}}, ..., lub gdy jest zamiast tego parametrem numerowany, {{Code|1}}, {{Code|2}},..., który dla tego pierwszego może być uznany jako: {{Code|cel}} {{=}} {{Code|1}}, * {{Code|typ jednostki}} (parametr bazowy) i {{Code|typ jednostki i}} (parametr domyślny numerkowy) - i te z numerkiem: {{Code|typ jednostki 1}}, {{Code|typ jednostki 2}}, ..., tzn. gdy chcemy określić z jakim typem jednostki mamy do czynienia w zależności do jakiej przestrzeni nazw należy, a w danej, czy jest on np. programowy, czy tylko jest opisem, jak to bywa w szablonach {{Np|Template|link=tak}}, podobnie jest w przypadku {{Np|Module|link=tak}}, czy jak jest w innych przestrzeniach nazw, ** {{Code|dyskusja typu jednostki}} (parametr bazowy) i {{Code|dyskusja typu jednostki i}} (parametr domyślny numerkowy) - i te z numerkiem: {{Code|dyskusja typu jednostki 1}}, {{Code|dyskusja typu jednostki 2}}, ..., gdy chcemy określić wartością niepustą,że chodzi tutaj o typ jednostki. == {{Code|p.CzyNiepoprawnaNazwa(nazwa_jednostki)}} == Funkcja sprawdzajaca, czy jest poprawnie podana nazwa jednostki, czy ma poprawną nazwę. Znakami tymi, z których nie powinna składać się nazwa jest {{Code|<nowiki>{}<>|[]#\n</nowiki>}} i dodatkowo znak {{Code|&#127;}} (kod {{Code|{{Nowiki|&#127;}}}}). Też nie może składać się z trzech znaków tyldy, tzn. {{Code|<nowiki>~~~</nowiki>}}. Również w swojej budowie nie może składać się ze kodów {{Strong|HTML}} literowych o wzorze {{Code|{{Nowiki|&(%a+);}}}}. Natomiast może składać się z {{Code|{{Nowiki|&#(%d+);}}}} i {{Code|{{Nowiki|&#x(%x+);}}}}, ale w pierw te kody muszą być zamienione na normalne znaki. Skrótowa definicja funkcji: <syntaxhighlight lang="lua"> function p.CzyNiepoprawnaNazwa(nazwa_jednostki)...end; </syntaxhighlight> Wtedy ciało funkcji tej, czyli jego definicja w środku, jest: <syntaxhighlight lang="lua"> -- Moduł: "Moduł:Html/dane", służy do ładowania znaku o kodzie HTML "&#127;"; local html_dane_modul=mw.loadData("Module:Html/dane"); return mw.ustring.match(nazwa_jednostki,"[{}<>|%[%]#\n"..html_dane_modul.znak_127.."]+") or mw.ustring.match(nazwa_jednostki,"~~~") or mw.ustring.match(nazwa_jednostki,"&(%a+);"); </syntaxhighlight> Parametry: * {{Code|nazwa_jednostki}} - nazwa jednostki do sprawdzenia. Przykłady: <syntaxhighlight lang="lua"> local pudelko_modul=require("Module:Pudełko"); -- Podana przykładowa niepoprawna nazwa jedostki local nazwa_jednostki="Nazwa pliku [[Nazwa linku w pliku]]"; -- Fukcja zwróci wartość: local czy_poprawna_nazwa=true; local czy_poprawna_nazwa=pudelko_modul.CzyNiepoprawnaNazwa(nazwa_jednostki); </syntaxhighlight> == Funkcje nazw przestrzeni nazw == === {{Code|p["Nazwa przestrzeni nazw"](frame,...)}} === Funkcja pisze nazwę przestrzeni nazw, niezależnie, czy to jest przedmiotowa, czy dyskusji, według podanej w zmiennej {{Code|nazwa przestrzeni nazw}} dla pozycja bazowej w podanych parametrach szablonu rodzicu ramki dziecka, lub dla innej pozycji należy parametr podawać w formie {{Code|nazwa przestrzeni nazw 1}}, {{Code|nazwa przestrzeni nazw 2}}, {{Code|nazwa przestrzeni nazw 3}},..., lub te parametry można podać w postaci ogólnej {{Code|nazwa przestrzeni nazw i}}. Parametry podaje się w parametrach rodzica wywołania tej funkcji {{Code|{{m|Pudełko|Nazwa przestrzeni nazw}}}} (ale ich nie trzeba podawać w dziecku, ale można) i w parametrach dziecka, jeśli chodzi o zmienną {{Code|numer jednostki}}, czyli np.: {{Code|{{m|Pudełko|Nazwa przestrzeni nazw|numer jednostki{{=}}<jakaś liczba całkowita dodatnia>}}}}. Te parametry przestrzenne zamiast w rodzicu w szablonie można podać w ramce dziecka, wtedy parametry dziecka mają pierwszeństwo. Przestrzeń nazw z parametrów nazw przestrzennych może odpowiadać wartości przestrzeni głównej, to wtedy odpowiednia przestrzeń nazw z parametru nazwy jednostki się nie liczy w tej funkcji, aby się liczyła należy użyć funkcji {{Code|{{sr|#p["Nazwa przestrzeni nazw 2"](frame,...)|p=Pudełko}}}}. Definicja skrótowa funkcji: <syntaxhighlight lang="lua"> p["Nazwa przestrzeni nazw"]=function(frame,czy_uwzglednic_alternatywna_nazwe,i)...end; </syntaxhighlight> Wtedy ciało funkcji tej, czyli jego definicja w środku, jest: <syntaxhighlight lang="lua"> -- Jest liczony numer parametru nazwy przestrzeni nazw, domyslnie chodzi tu o numer bazowy parametrów przestrzennych; local numer_jednostki=i or frame.args["numer jednostki"]; local liczba_numer_jednostki=((numer_jednostki)and(tonumber(numer_jednostki))or 0); local pudelko_pomocne_modul=require("Module:Pudełko/Pomocne"); -- Liczy nazwę przestrzeni nazw na podstawie podanych parametrów; return pudelko_pomocne_modul.Nazwa_przestrzeni_nazw(frame,0, czy_uwzglednic_alternatywna_nazwe,liczba_numer_jednostki); </syntaxhighlight> Parametry funkcji: * {{Code|frame}} - tablica ramki tablicy transportu, * {{Code|czy_uwzglednic_alternatywna_nazwe}} - czy ma uwzględniać nazwę przestrzeni nazw domyślną szablonu, dostępne wartości: {{Code|false}}, w której nazwa domyślna nie jest uwzględniana wtedy, oraz {{Code|nil}} i {{Code|true}}, które oznaczają to samo, w tym jeżeli ona jest uwzględniana, wtedy jest brany parametr pierwszy dziecka, który musi istnieć przy takiej wartości tego parametru, tzn. {{Code|{{m|Pudełko|Nazwa przestrzeni nazw|Szablon}}}}, a nazwa uzyskana nazwy przestrzeni nazw jest w takim przypadku błędna, a jeżeli nazwa domyślna jest błędna, czyli {{Code|{{m|Pudełko|Nazwa przestrzeni nazw|Moja przestrzeń}}}}, wtedy funkcja zwraca stan błędu {{Code|(błąd)}}. * {{Code|i}} - numer zmiennej nazwy przestrzeni nazw. Funkcja wykorzystuje {{Code|{{sr|#p.Nazwa_przestrzeni_nazw(frame,...)|p=Pudełko/Pomocne}}}} do wyznaczania ogólnego nazwy przestrzeni nazw dla pozycji bazowej i numerkowej, tzn. dla pozycji: jeden, dwa, trzy,..., itd, i ich ogólnej. Parametr ramki tablicy transportu rodzica szablonu: * {{Code|nazwa przestrzeni nazw}}, {{Code|nazwa przestrzeni nazw 1}}, {{Code|nazwa przestrzeni nazw 2}}, {{Code|nazwa przestrzeni nazw 3}},..., {{Code|nazwa przestrzeni nazw i}} - nazwy przestrzeni nazw dla pozycji bazowej oraz zwykłej i ogólnej numerkowej, * {{Code|typ jednostki}}, {{Code|typ jednostki 1}}, {{Code|typ jednostki 2}}, {{Code|typ jednostki 3}},..., {{Code|typ jednostki i}} - typy jednostek, którym odpowiadają pewne przestrzenie przedmiotowe, dla pozycji bazowej, numerkowej i ogólnej, ** {{Code|dyskusja typu jednostki}}, {{Code|dyskusja typu jednostki 1}}, {{Code|dyskusja typ jednostki 2}}, {{Code|dyskusja typ jednostki 3}},..., {{Code|dyskusja typ jednostki i}} - czy dany typ jednostki ma przedstawiać, jeśli niepusta, przestrzeń dyskusji dla pozycji bazowej, numerkowej i ogólnej. Parametry ramki tablicy transportu dziecka: * Parametry dziecka są takie same jak rodzica dla funkcji pudełkowej plus tu wymienione, * {{Code|numer jednostki}} - jak parametr {{Code|i}} nie został ustawiony, to wtedy liczy się ta zmienna. Przykłady: <syntaxhighlight lang="mediawiki"> {{Nazwa szablonu|nazwa przestrzeni nazw=Wikibooks|nazwa przestrzeni nazw 2=Szablon|nazwa przestrzeni nazw i=Moduł}} </syntaxhighlight> W dziecku powiedzmy jest wywołanie, i szukamy nazwy przestrzeni nazw o numerze dwa, która nie została podana, ale istnieje za to jej wersji ogólna {{Code|nazwa przestrzeni nazw i}} i domyślna {{Code|nazwa przestrzeni nazw}}: <syntaxhighlight lang="mediawiki"> {{#invoke:Pudełko|Nazwa przestrzeni nazw|numer jednostki=1}} </syntaxhighlight> Na podstawie powyższego przykładu otrzymamy wynik o schemacie, nie wyniku, bo tam nie ma zmiennej {{Code|nazwa przestrzeni nazw 1}}, ale jest {{Code|nazwa przestrzeni nazw i}}: <syntaxhighlight lang="mediawiki"> <!-- Ale nie "nazwa przestrzeni nazw", bo jej nie ma, ale za to istnieje "nazwa przestrzeni nazw i"; --> <!-- nazwa przestrzeni nazw 2=nazwa przestrzeni nazw i=Moduł; --> <!-- Czyli wynik: --> Moduł <!-- Widzimy, że wygenerowała się nazwa przestrzeni nazw, którą jest przestrzeń programowa, którą również jest "Szablon"; --> </syntaxhighlight> Nie jest brana w tym powyższym przykładzie zmienna {{Code|nazwa przestrzeni nazw}}, bo jej nie ma, ale za to jest {{Code|nazwa przestrzeni nazw i}}, bo ona występuje jako parametr domyślny ogólny dla parametrów numerkowych. Przykłady w wikikodzie: * {{Code|{{m|Pudełko|Nazwa przestrzeni nazw|numer jednostki{{=}}2}}}} → {{Tt|{{#invoke:Pudełko|Nazwa przestrzeni nazw|numer jednostki=2}}}} * {{Code|{{m|Pudełko|Nazwa przestrzeni nazw|Szablon|nazwa przestrzeni nazw i{{=}}Moja przestrzeń|numer jednostki{{=}}2}}}} → {{Tt|{{#invoke:Pudełko|Nazwa przestrzeni nazw|Szablon|nazwa przestrzeni nazw i=Moja przestrzeń|numer jednostki=2}}}} * {{Code|{{m|Pudełko|Nazwa przestrzeni nazw|nazwa przestrzeni nazw 2{{=}}Szablon|numer jednostki{{=}}2}}}} → {{Tt|{{#invoke:Pudełko|Nazwa przestrzeni nazw|nazwa przestrzeni nazw 2=Szablon|numer jednostki=2}}}} * {{Code|{{m|Pudełko|Nazwa przestrzeni nazw|nazwa przestrzeni nazw 2{{=}}Szablon|numer jednostki{{=}}2}}}} → {{Tt|{{#invoke:Pudełko|Nazwa przestrzeni nazw|nazwa przestrzeni nazw i=Szablon|numer jednostki=2}}}} * {{Code|{{m|Pudełko|Nazwa przestrzeni nazw|nazwa przestrzeni nazw{{=}}Szablon|numer jednostki{{=}}2}}}} → {{Tt|{{#invoke:Pudełko|Nazwa przestrzeni nazw|nazwa przestrzeni nazw=Szablon|numer jednostki=2}}}} Powyżej dla przykładu podano parametry nie w rodzicu w szablonie, tylko w dziecku, jeśli chodzi o parametry nazw przestrzeni nazw, ale ich się za to nie powinno podawać w tych ramach, tylko w szablonach, w których wywoływane są te ramki pudełek {{Code|{{m|Pudełko}}}}, ale tak tutaj tak zrobiono by było najłatwiej sprawdzić działanie tego typu funkcji. Analogicznie możemy podawać parametry typu jednostki, np.: wywołaniu modułowym {{Code|{{m|Pudełko|Nazwa przestrzeni nazw|typ jednostki 2{{=}}strona szablonu|numer jednostki{{=}}2}}}}, ale o tym więcej w rozdziałach {{Code|{{sr|# p["Typ jednostki"](frame,i)|p=Pudełko}}}} w „{{sr|#Funkcje typu jednostki|p=Pudełko}}”, on definiuje przestrzenie przedmiotowe, ale można użyć parametru dyskusji typu jednostki z wartością niepustą, wtedy wyświetli się nazwa przestrzeni nazw dyskusji. Również parametry typu jednostki nie powinno się podawać w dziecku w ramce, tylko w rodzicu w szablonie jako parametry, w którym ta ramka jest wywoływana, ale tutaj podano jedynie dla przykładu, jak najłatwiej sprawdzić działanie tych parametrów tej funkcji. Najpierw w funkcji nagłówku brane są parametry nazw przestrzeni nazw, a jeżeli ich nie ma, to parametry typu jednostki, a jeżeli nie ma, to generowane są nazwy na podstawie aktualnego modułu. === {{Code|p["Nazwa przedmiotowej przestrzeni nazw"](frame,...)}} === Funkcja pisze przedmiotową nazwę przestrzeni nazw jakikolwiek nazwy przestrzeni nazw (tzn. nazwę przedmiotową nazwy przestrzenie nazw, czyli nie dyskusji, zamieniana jest na nią samą, czyli identyfikator przestrzeni się nie zmienia, a dyskusji, nie przedmiotową, przekształca się na przedmiotową jej odpowiadającą, czyli w tym przypadku identyfikator przestrzeni zmniejsza się o numer mniej), według podanej w zmiennej {{Code|nazwa przestrzeni nazw}} dla pozycja bazowej w podanych parametrach szablonu rodzicu ramki dziecka, lub dla innej pozycji należy parametr podawać w formie {{Code|nazwa przestrzeni nazw 1}}, {{Code|nazwa przestrzeni nazw 2}}, {{Code|nazwa przestrzeni nazw 3}},..., lub te parametry można podać w postaci ogólnej {{Code|nazwa przestrzeni nazw i}}. Parametry podaje się w parametrach rodzica wywołania tej funkcji {{Code|{{m|Pudełko|Nazwa przedmiotowej przestrzeni nazw}}}} (ale ich nie trzeba podawać w dziecku, ale można) i w parametrach dziecka, jeśli chodzi o zmienną {{Code|numer jednostki}}, czyli np.: {{Code|{{m|Pudełko|Nazwa przedmiotowej przestrzeni nazw|numer jednostki{{=}}<jakaś liczba całkowita dodatnia>}}}}. Te parametry przestrzenne zamiast w rodzicu w szablonie można podać w ramce dziecka, wtedy parametry dziecka mają pierwszeństwo. Parametry przestrzenne mogą mogą być podane w postaci przestrzeni przedmiotowej lub dyskusji, ale ta funkcja zawsze ją zamienia na przedmiotową. Przestrzeń nazw z parametrów nazw przestrzennych może odpowiadać wartości przestrzeni głównej, to wtedy odpowiednia przestrzeń nazw z parametru nazwy jednostki się nie liczy w tej funkcji, aby się liczyła należy użyć funkcji {{Code|{{sr|#p["Nazwa przedmiotowej przestrzeni nazw 2"](frame,...)|p=Pudełko}}}}. Definicja skrótowa funkcji: <syntaxhighlight lang="lua"> p["Nazwa przedmiotowej przestrzeni nazw"]=function(frame,czy_uwzglednic_alternatywna_nazwe,i)...end; </syntaxhighlight> Wtedy ciało funkcji tej, czyli jego definicja w środku, jest: <syntaxhighlight lang="lua"> -- Jest liczony numer parametru nazwy przestrzeni nazw, domyslnie chodzi tu o numer bazowy parametrów przestrzennych; local numer_jednostki=i or frame.args["numer jednostki"]; local liczba_numer_jednostki=((numer_jednostki)and(tonumber(numer_jednostki))or 0); local pudelko_pomocne_modul=require("Module:Pudełko/Pomocne"); -- Liczy nazwę przestrzeni nazw przedmiotową na podstawie podanych parametrów; return pudelko_pomocne_modul.Nazwa_przestrzeni_nazw(frame,1, czy_uwzglednic_alternatywna_nazwe,liczba_numer_jednostki); </syntaxhighlight> Parametry funkcji: * {{Code|frame}} - tablica ramki tablicy transportu, * {{Code|czy_uwzglednic_alternatywna_nazwe}} - czy ma uwzględniać nazwę przestrzeni nazw domyślną szablonu, dostępne wartości: {{Code|false}}, w której nazwa domyślna nie jest uwzględniana wtedy, oraz {{Code|nil}} i {{Code|true}}, które oznaczają to samo, w tym jeżeli ona jest uwzględniana, wtedy jest brany parametr pierwszy dziecka, który musi istnieć przy takiej wartości tego parametru, tzn. {{Code|{{m|Pudełko|Nazwa przedmiotowej przestrzeni nazw|Dyskusja szablonu}}}} - ta nazwa domyślna zostanie zamieniona na przedmiotową, a jak ona by była przedmiotowa, to żadnej zamiany by nie było, a nazwa uzyskana z nazwy przestrzeni nazw z parametrów przestrzennych jest w takim przypadku błędna, to w takim razie brany jest ten parametr, a jeżeli ta nazwa domyślna jest błędna, czyli {{Code|{{m|Pudełko|Nazwa przedmiotowej przestrzeni nazw|Moja przestrzeń}}}}, wtedy funkcja zwraca stan błędu {{Code|(błąd)}}. * {{Code|i}} - numer zmiennej nazwy przestrzeni nazw. Funkcja wykorzystuje {{Code|{{sr|#p.Nazwa_przestrzeni_nazw(frame,...)|p=Pudełko/Pomocne}}}} do wyznaczania ogólnego nazwy przestrzeni nazw dla pozycji bazowej i numerkowej, tzn. dla pozycji: jeden, dwa, trzy,..., itd, i ich ogólnej. Parametr ramki tablicy transportu rodzica szablonu: * {{Code|nazwa przestrzeni nazw}}, {{Code|nazwa przestrzeni nazw 1}}, {{Code|nazwa przestrzeni nazw 2}}, {{Code|nazwa przestrzeni nazw 3}},..., {{Code|nazwa przestrzeni nazw i}} - nazwy przestrzeni nazw dla pozycji bazowej oraz zwykłej i ogólnej numerkowej, * {{Code|typ jednostki}}, {{Code|typ jednostki 1}}, {{Code|typ jednostki 2}}, {{Code|typ jednostki 3}},..., {{Code|typ jednostki i}} - typy jednostek, którym odpowiadają pewne przestrzenie przedmiotowe, dla pozycji bazowej, numerkowej i ogólnej. Parametry ramki tablicy transportu dziecka: * Parametry dziecka są takie same jak rodzica dla funkcji pudełkowej plus tu wymienione, * {{Code|numer jednostki}} - jak parametr {{Code|i}} nie został ustawiony, to wtedy liczy się ta zmienna. Przykłady: <syntaxhighlight lang="mediawiki"> {{Nazwa szablonu|nazwa przestrzeni nazw=Dyskusja Wikibooks|nazwa przestrzeni nazw 2=Dyskusja szablonu|nazwa przestrzeni nazw i=Dyskusja modułu}} </syntaxhighlight> W dziecku powiedzmy jest wywołanie, i szukamy nazwy przestrzeni nazw o numerze dwa, która nie została podana, ale istnieje za to jej wersji ogólna {{Code|nazwa przestrzeni nazw i}} i domyślna {{Code|nazwa przestrzeni nazw}}: <syntaxhighlight lang="mediawiki"> {{#invoke:Pudełko|Nazwa przedmiotowej przestrzeni nazw|numer jednostki=1}} </syntaxhighlight> Na podstawie powyższego przykładu otrzymamy wynik o schemacie, nie wyniku, bo tam nie ma zmiennej {{Code|nazwa przestrzeni nazw 1}}, ale jest {{Code|nazwa przestrzeni nazw i}}: <syntaxhighlight lang="mediawiki"> <!-- Ale nie "nazwa przestrzeni nazw", bo jej nie ma, ale za to istnieje "nazwa przestrzeni nazw i"; --> <!-- nazwa przestrzeni nazw 2=nazwa przestrzeni nazw i=Dyskusja modułu; --> <!-- Czyli wynik: --> Moduł <!-- Widzimy, że wygenerowała się nazwa przestrzeni nazw, którą jest przestrzeń przedmiotowa programowa przestrzeni dyskusji "Dyskusja modułu", którą również jest "Szablon" jego przestrzeni dyskusji "Dyskusja szablonu", a dla ich przestrzeni przedmiotowej, zamiast dyskusji, to samo przekształca się na to samo; --> </syntaxhighlight> Nie jest brana w tym powyższym przykładzie zmienna {{Code|nazwa przestrzeni nazw}}, bo jej nie ma, ale za to jest {{Code|nazwa przestrzeni nazw i}}, bo ona występuje jako parametr domyślny ogólny dla parametrów numerkowych. Przykłady w wikikodzie: * {{Code|{{m|Pudełko|Nazwa przedmiotowej przestrzeni nazw|numer jednostki{{=}}2}}}} → {{Tt|{{#invoke:Pudełko|Nazwa przedmiotowej przestrzeni nazw|numer jednostki=2}}}} * {{Code|{{m|Pudełko|Nazwa przedmiotowej przestrzeni nazw|Dyskusja szablonu|nazwa przestrzeni nazw i{{=}}Moja przestrzeń|numer jednostki{{=}}2}}}} → {{Tt|{{#invoke:Pudełko|Nazwa przedmiotowej przestrzeni nazw|Dyskusja szablonu|nazwa przestrzeni nazw i=Moja przestrzeń|numer jednostki=2}}}} * {{Code|{{m|Pudełko|Nazwa przedmiotowej przestrzeni nazw|nazwa przestrzeni nazw 2{{=}}Dyskusja szablonu|numer jednostki{{=}}2}}}} → {{Tt|{{#invoke:Pudełko|Nazwa przedmiotowej przestrzeni nazw|nazwa przestrzeni nazw 2=Dyskusja szablonu|numer jednostki=2}}}} * {{Code|{{m|Pudełko|Nazwa przedmiotowej przestrzeni nazw|nazwa przestrzeni nazw 2{{=}}Dyskusja szablonu|numer jednostki{{=}}2}}}} → {{Tt|{{#invoke:Pudełko|Nazwa przedmiotowej przestrzeni nazw|nazwa przestrzeni nazw i=Dyskusja szablonu|numer jednostki=2}}}} * {{Code|{{m|Pudełko|Nazwa przedmiotowej przestrzeni nazw|nazwa przestrzeni nazw{{=}}Dyskusja szablonu|numer jednostki{{=}}2}}}} → {{Tt|{{#invoke:Pudełko|Nazwa przedmiotowej przestrzeni nazw|nazwa przestrzeni nazw=Dyskusja szablonu|numer jednostki=2}}}} Powyżej dla przykładu podano parametry nie w rodzicu w szablonie, tylko w dziecku, jeśli chodzi o parametry nazw przestrzeni nazw, ale ich się za to nie powinno podawać w tych ramach, tylko w szablonach, w których wywoływane są te ramki pudełek {{Code|{{m|Pudełko}}}}, ale tak tutaj tak zrobiono by było najłatwiej sprawdzić działanie tego typu funkcji. Analogicznie możemy podawać parametry typu jednostki, np.: wywołaniu modułowym {{Code|{{m|Pudełko|Nazwa przedmiotowej przestrzeni nazw|typ jednostki 2{{=}}strona szablonu|numer jednostki{{=}}2}}}}, ale o tym więcej w rozdziałach {{Code|{{sr|# p["Przedmiotowy typ jednostki"](frame,i)|p=Pudełko}}}} w „{{sr|#Funkcje typu jednostki|p=Pudełko}}”, ale wtedy ta sama nazwa przestrzeni nazw reprezentowana przez {{Parametr|typ jednostki 2|strona szablonu}}, jest zamieniana na to samo, lepiej jest tutaj używać parametrów przestrzennych nazw niż typu jednostki, bo typ jednostki ma taką samą wartość dla przestrzeni przedmiotowej, co dyskusji. Tutaj parametr dyskusji typu jednostki bazowy i numerkowy ogólny, czy szczegółowy, nie gra roli, bo nawet, gdy wygenerujemy nazwę przestrzeni dyskusji za pomoca tego parametru, to i tak otrzymamy na samym końcu jego nazwę przedmiotową. Również parametry typu jednostki nie powinno się podawać w dziecku w ramce, tylko w rodzicu w szablonie jako parametry, w którym ta ramka jest wywoływana, ale tutaj podano jedynie dla przykładu, jak najłatwiej sprawdzić działanie tych parametrów tej funkcji. Najpierw w funkcji nagłówku brane są parametry nazw przestrzeni nazw, a jeżeli ich nie ma, to parametry typu jednostki, a jeżeli nie ma, to generowane są nazwy na podstawie aktualnego modułu. === {{Code|p["Nazwa przestrzeni nazw dyskusji"](frame,...)}} === Funkcja pisze nazwę przestrzeni nazw dyskusji jakikolwiek nazwy przestrzeni nazw (tzn. nazwę przedmiotową nazwy przestrzenie nazw, czyli nie dyskusji, zamieniana jest na dyskusji, czyli identyfikator przestrzeni się zmienia jeden wyżej, a dyskusji, nie przedmiotową, przekształca się na tą samą), według podanej w zmiennej {{Code|nazwa przestrzeni nazw}} dla pozycja bazowej w podanych parametrach szablonu rodzicu ramki dziecka, lub dla innej pozycji należy parametr podawać w formie {{Code|nazwa przestrzeni nazw 1}}, {{Code|nazwa przestrzeni nazw 2}}, {{Code|nazwa przestrzeni nazw 3}},..., lub te parametry można podać w postaci ogólnej {{Code|nazwa przestrzeni nazw i}}. Parametry podaje się w parametrach rodzica wywołania tej funkcji {{Code|{{m|Pudełko|Nazwa przestrzeni nazw dyskusji}}}} (ale ich nie trzeba podawać w dziecku, ale można) i w parametrach dziecka, jeśli chodzi o zmienną {{Code|numer jednostki}}, czyli np.: {{Code|{{m|Pudełko|Nazwa przestrzeni nazw dyskusji|numer jednostki{{=}}<jakaś liczba całkowita dodatnia>}}}}. Te parametry przestrzenne zamiast w rodzicu w szablonie można podać w ramce dziecka, wtedy parametry dziecka mają pierwszeństwo. Parametry przestrzenne mogą mogą być podane w postaci przestrzeni przedmiotowej lub dyskusji, ale ta funkcja zawsze ją zamienia na dyskusji. Przestrzeń nazw z parametrów nazw przestrzennych może odpowiadać wartości przestrzeni głównej, to wtedy odpowiednia przestrzeń nazw z parametru nazwy jednostki się nie liczy w tej funkcji, aby się liczyła należy użyć funkcji {{Code|{{sr|#p["Nazwa przestrzeni nazw dyskusji 2"](frame,...)|p=Pudełko}}}}. Definicja skrótowa funkcji: <syntaxhighlight lang="lua"> p["Nazwa przestrzeni nazw dyskusji"]=function(frame,czy_uwzglednic_alternatywna_nazwe,i)...end; </syntaxhighlight> Wtedy ciało funkcji tej, czyli jego definicja w środku, jest: <syntaxhighlight lang="lua"> -- Jest liczony numer parametru nazwy przestrzeni nazw, domyslnie chodzi tu o numer bazowy parametrów przestrzennych; local numer_jednostki=i or frame.args["numer jednostki"]; local liczba_numer_jednostki=((numer_jednostki)and(tonumber(numer_jednostki))or 0); local pudelko_pomocne_modul=require("Module:Pudełko/Pomocne"); -- Liczy nazwę przestrzeni nazw dyskusji na podstawie podanych parametrów; return pudelko_pomocne_modul.Nazwa_przestrzeni_nazw(frame,2, czy_uwzglednic_alternatywna_nazwe,liczba_numer_jednostki); </syntaxhighlight> Parametry funkcji: * {{Code|frame}} - tablica ramki tablicy transportu, * {{Code|czy_uwzglednic_alternatywna_nazwe}} - czy ma uwzględniać nazwę przestrzeni nazw domyślną szablonu, dostępne wartości: {{Code|false}}, w której nazwa domyślna nie jest uwzględniana wtedy, oraz {{Code|nil}} i {{Code|true}}, które oznaczają to samo, w tym jeżeli ona jest uwzględniana, wtedy jest brany parametr pierwszy dziecka, który musi istnieć przy takiej wartości tego parametru, tzn. {{Code|{{m|Pudełko|Nazwa przestrzeni nazw dyskusji|Szablon}}}} - ta nazwa domyślna zostanie przekształcona na dyskusji, a jeżeli ona by była dyskusji, to nie byłoby żadnego przekształcenia, a nazwa uzyskana nazwy przestrzeni nazw z parametrów przestrzennych jest w takim przypadku błędna, to w takim razie brany jest ten parametr, a jeżeli nazwa domyślna jest błędna, czyli {{Code|{{m|Pudełko|Nazwa przestrzeni nazw dyskusji|Moja przestrzeń}}}}, wtedy funkcja zwraca stan błędu {{Code|(błąd)}}. * {{Code|i}} - numer zmiennej nazwy przestrzeni nazw. Funkcja wykorzystuje {{Code|{{sr|#p.Nazwa_przestrzeni_nazw(frame,...)|p=Pudełko/Pomocne}}}} do wyznaczania ogólnego nazwy przestrzeni nazw dla pozycji bazowej i numerkowej, tzn. dla pozycji: jeden, dwa, trzy,..., itd, i ich ogólnej. Parametr ramki tablicy transportu rodzica szablonu: * {{Code|nazwa przestrzeni nazw}}, {{Code|nazwa przestrzeni nazw 1}}, {{Code|nazwa przestrzeni nazw 2}}, {{Code|nazwa przestrzeni nazw 3}},..., {{Code|nazwa przestrzeni nazw i}} - nazwy przestrzeni nazw dla pozycji bazowej oraz zwykłej i ogólnej numerkowej, * {{Code|typ jednostki}}, {{Code|typ jednostki 1}}, {{Code|typ jednostki 2}}, {{Code|typ jednostki 3}},..., {{Code|typ jednostki i}} - typy jednostek, którym odpowiadają pewne przestrzenie przedmiotowe, dla pozycji bazowej, numerkowej i ogólnej. Parametry ramki tablicy transportu dziecka: * Parametry dziecka są takie same jak rodzica dla funkcji pudełkowej plus tu wymienione, * {{Code|numer jednostki}} - jak parametr {{Code|i}} nie został ustawiony, to wtedy liczy się ta zmienna. Przykłady: <syntaxhighlight lang="mediawiki"> {{Nazwa szablonu|nazwa przestrzeni nazw=Wikibooks|nazwa przestrzeni nazw 2=Szablon|nazwa przestrzeni nazw i=Moduł}} </syntaxhighlight> W dziecku powiedzmy jest wywołanie, i szukamy nazwy przestrzeni nazw o numerze dwa, która nie została podana, ale istnieje za to jej wersji ogólna {{Code|nazwa przestrzeni nazw i}} i domyślna {{Code|nazwa przestrzeni nazw}}: <syntaxhighlight lang="mediawiki"> {{#invoke:Pudełko|Nazwa przestrzeni nazw dyskusji|numer jednostki=1}} </syntaxhighlight> Na podstawie powyższego przykładu otrzymamy wynik o schemacie, nie wyniku, bo tam nie ma zmiennej {{Code|nazwa przestrzeni nazw 1}}, ale jest {{Code|nazwa przestrzeni nazw i}}: <syntaxhighlight lang="mediawiki"> <!-- Ale nie "nazwa przestrzeni nazw", bo jej nie ma, ale za to istnieje "nazwa przestrzeni nazw i"; --> <!-- nazwa przestrzeni nazw 2=nazwa przestrzeni nazw i=Moduł; --> <!-- Czyli wynik: --> Dyskusja modułu <!-- Widzimy, że wygenerowała się nazwa przestrzeni nazw, którą jest przestrzeń dyskusji przestrzeni programowej przestrzeni przedmiotowej "Moduł", którą również jest "Szablon" jego przestrzeni dyskusji "Dyskusja szablonu", a dla ich przestrzeni przedmiotowej, zamiast dyskusji, to przekształca się na dyskusji jej odpowiadającą; --> </syntaxhighlight> Nie jest brana w tym powyższym przykładzie zmienna {{Code|nazwa przestrzeni nazw}}, bo jej nie ma, ale za to jest {{Code|nazwa przestrzeni nazw i}}, bo ona występuje jako parametr domyślny ogólny dla parametrów numerkowych. Przykłady w wikikodzie: * {{Code|{{m|Pudełko|Nazwa przestrzeni nazw dyskusji|numer jednostki{{=}}2}}}} → {{Tt|{{#invoke:Pudełko|Nazwa przestrzeni nazw dyskusji|numer jednostki=2}}}} * {{Code|{{m|Pudełko|Nazwa przestrzeni nazw dyskusji|Szablon|nazwa przestrzeni nazw i{{=}}Moja przestrzeń|numer jednostki{{=}}2}}}} → {{Tt|{{#invoke:Pudełko|Nazwa przestrzeni nazw dyskusji|Szablon|nazwa przestrzeni nazw i=Moja przestrzeń|numer jednostki=2}}}} * {{Code|{{m|Pudełko|Nazwa przestrzeni nazw dyskusji|nazwa przestrzeni nazw 2{{=}}Szablon|numer jednostki{{=}}2}}}} → {{Tt|{{#invoke:Pudełko|Nazwa przestrzeni nazw dyskusji|nazwa przestrzeni nazw 2=Szablon|numer jednostki=2}}}} * {{Code|{{m|Pudełko|Nazwa przestrzeni nazw dyskusji|nazwa przestrzeni nazw 2{{=}}Szablon|numer jednostki{{=}}2}}}} → {{Tt|{{#invoke:Pudełko|Nazwa przestrzeni nazw dyskusji|nazwa przestrzeni nazw i=Szablon|numer jednostki=2}}}} * {{Code|{{m|Pudełko|Nazwa przestrzeni nazw dyskusji|nazwa przestrzeni nazw{{=}}Szablon|numer jednostki{{=}}2}}}} → {{Tt|{{#invoke:Pudełko|Nazwa przestrzeni nazw dyskusji|nazwa przestrzeni nazw=Szablon|numer jednostki=2}}}} Powyżej dla przykładu podano parametry nie w rodzicu w szablonie, tylko w dziecku, jeśli chodzi o parametry nazw przestrzeni nazw, ale ich się za to nie powinno podawać w tych ramach, tylko w szablonach, w których wywoływane są te ramki pudełek {{Code|{{m|Pudełko}}}}, ale tak tutaj tak zrobiono by było najłatwiej sprawdzić działanie tego typu funkcji. Analogicznie możemy podawać parametry typu jednostki, np.: wywołaniu modułowym {{Code|{{m|Pudełko|Nazwa przestrzeni nazw dyskusji|typ jednostki 2{{=}}strona szablonu|numer jednostki{{=}}2}}}}, ale o tym więcej w rozdziałach {{Code|{{sr|# p["Dyskusyjny typ jednostki"](frame,i)|p=Pudełko}}}} w „{{sr|#Funkcje typu jednostki|p=Pudełko}}”, ale wtedy nazwa przestrzeni nazw reprezentowana przez {{Parametr|typ jednostki 2|strona szablonu}}, jest zamieniana na nazwę przestrzeni nazw dyskusji. Parametr dyskusji typu jednostki bazowy lub dla danego numerka ogólny, czy szczegółowy, nie gra roli. Również parametry typu jednostki nie powinno się podawać w dziecku w ramce, tylko w rodzicu w szablonie jako parametry, w którym ta ramka jest wywoływana, ale tutaj podano jedynie dla przykładu, jak najłatwiej sprawdzić działanie tych parametrów tej funkcji. Najpierw w funkcji nagłówku brane są parametry nazw przestrzeni nazw, a jeżeli ich nie ma, to parametry typu jednostki, a jeżeli nie ma, to generowane są nazwy na podstawie aktualnego modułu. == Funkcje nazw przestrzeni nazw drugiej wersji == === {{Code|p["Nazwa przestrzeni nazw 2"](frame,...)}} === Funkcja pisze nazwę przestrzeni nazw, niezależnie, czy to jest przedmiotowa, czy dyskusji, według, i nie zawsze tylko, podanej w zmiennej {{Code|nazwa przestrzeni nazw}} dla pozycja bazowej w podanych parametrach szablonu rodzicu ramki dziecka, lub dla innej pozycji należy parametr podawać w formie {{Code|nazwa przestrzeni nazw 1}}, {{Code|nazwa przestrzeni nazw 2}}, {{Code|nazwa przestrzeni nazw 3}},..., lub te parametry można podać w postaci ogólnej {{Code|nazwa przestrzeni nazw i}}. W tej funkcji trzeba też podawać parametry nazwy jednostek {{Code|nazwa jednostki}}, {{Code|nazwa jednostki 1}}, {{Code|nazwa jednostki 2}}, {{Code|nazwa jednostki 3}},... Parametry podaje się w parametrach rodzica wywołania tej funkcji {{Code|{{m|Pudełko|Nazwa przestrzeni nazw 2}}}} (ale ich nie trzeba podawać w dziecku, ale można) i w parametrach dziecka, jeśli chodzi o zmienną {{Code|numer jednostki}}, czyli np.: {{Code|{{m|Pudełko|Nazwa przestrzeni nazw 2|numer jednostki{{=}}<jakaś liczba całkowita dodatnia>}}}}. Te parametry przestrzenne zamiast w rodzicu w szablonie można podać w ramce dziecka, wtedy parametry dziecka mają pierwszeństwo. Przestrzeń nazw z parametrów nazw przestrzennych może odpowiadać wartości przestrzeni głównej, to wtedy odpowiednia przestrzeń nazw z parametru nazwy jednostki się liczy w tej funkcji, wtedy jest liczona nazwa przestrzeni nazw z tego parametru. Gdy parametry przestrzenne lub typ jednostki w drugim podejściu nie wskazują na przestrzeń główną, to wtedy działanie tej funkcji jest podobne do {{Code|{{sr|#p["Nazwa przestrzeni nazw"](frame,...)|p=Pudełko}}}}. Definicja skrótowa funkcji: <syntaxhighlight lang="lua"> p["Nazwa przestrzeni nazw 2"]=function(frame,czy_uwzglednic_alternatywna_nazwe,i)...end; </syntaxhighlight> Wtedy ciało funkcji tej, czyli jego definicja w środku, jest: <syntaxhighlight lang="lua"> local pudelko_pomocne_modul=require("Module:Pudełko/Pomocne"); -- Liczy nazwę przestrzeni nazw, jeżeli z parametrów przestrzennych przestrzeń wskazuje na główną, to wtedy jest liczona przestrzeń nazw z nazwy jednostki; return pudelko_pomocne_modul.Nazwa_przestrzeni_nazw_2(frame,czy_uwzglednic_alternatywna_nazwe,i) </syntaxhighlight> Parametry funkcji: * {{Code|frame}} - tablica ramki tablicy transportu, * {{Code|czy_uwzglednic_alternatywna_nazwe}} - czy ma uwzględniać nazwę przestrzeni nazw domyślną szablonu, dostępne wartości: {{Code|false}}, w której nazwa domyślna nie jest uwzględniana wtedy, oraz {{Code|nil}} i {{Code|true}}, które oznaczają to samo, w tym jeżeli ona jest uwzględniana, wtedy jest brany parametr pierwszy dziecka, który musi istnieć przy takiej wartości tego parametru, tzn. {{Code|{{m|Pudełko|Nazwa przestrzeni nazw 2|Szablon}}}}, a nazwa uzyskana nazwy przestrzeni nazw jest w takim przypadku błędna, a jeżeli nazwa domyślna jest błędna, czyli {{Code|{{m|Pudełko|Nazwa przestrzeni nazw 2|Moja przestrzeń}}}}, wtedy funkcja zwraca stan błędu {{Code|(błąd)}}. * {{Code|i}} - numer zmiennej nazwy przestrzeni nazw. Funkcja wykorzystuje {{Code|{{sr|#p.Nazwa_przestrzeni_nazw_2(frame,...)|p=Pudełko/Pomocne}}}} do wyznaczania ogólnego nazwy przestrzeni nazw dla pozycji bazowej i numerkowej, tzn. dla pozycji: jeden, dwa, trzy,..., itd, i ich ogólnej. Parametr ramki tablicy transportu rodzica szablonu: * {{Code|nazwa przestrzeni nazw}}, {{Code|nazwa przestrzeni nazw 1}}, {{Code|nazwa przestrzeni nazw 2}}, {{Code|nazwa przestrzeni nazw 3}},..., {{Code|nazwa przestrzeni nazw i}} - nazwy przestrzeni nazw dla pozycji bazowej oraz zwykłej i ogólnej numerkowej, * {{Code|nazwa jednostki}}, {{Code|nazwa jednostki 1}}, {{Code|nazwa jednostki 2}}, {{Code|nazwa jednostki 3}},... - nazwy jednostek dla pozycji bazowej i numerkowej, * {{Code|typ jednostki}}, {{Code|typ jednostki 1}}, {{Code|typ jednostki 2}}, {{Code|typ jednostki 3}},..., {{Code|typ jednostki i}} - typy jednostek, którym odpowiadają pewne przestrzenie przedmiotowe, dla pozycji bazowej, numerkowej i ogólnej, ** {{Code|dyskusja typu jednostki}}, {{Code|dyskusja typu jednostki 1}}, {{Code|dyskusja typ jednostki 2}}, {{Code|dyskusja typ jednostki 3}},..., {{Code|dyskusja typ jednostki i}} - czy dany typ jednostki ma przedstawiać, jeśli niepusta, przestrzeń dyskusji dla pozycji bazowej, numerkowej i ogólnej. Parametry ramki tablicy transportu dziecka: * Parametry dziecka są takie same jak rodzica dla funkcji pudełkowej plus tu wymienione, * {{Code|numer jednostki}} - jak parametr {{Code|i}} nie został ustawiony, to wtedy liczy się ta zmienna. Przykłady: <syntaxhighlight lang="mediawiki"> {{Nazwa szablonu|nazwa przestrzeni nazw=Wikibooks|nazwa przestrzeni nazw 1=Szablon|nazwa przestrzeni nazw i=|nazwa jednostki 2=Wikibooks:Strona}} </syntaxhighlight> W dziecku powiedzmy jest wywołanie, i szukamy nazwy przestrzeni nazw o numerze dwa, która została podana, ale istnieje za to jej wersji ogólna {{Code|nazwa przestrzeni nazw i}} i domyślna {{Code|nazwa przestrzeni nazw}}, ale wtedy dla tego numerkowego liczy się to ogólne z {{Code| i}}, a ponieważ ta nazwa jest pusta, więc będziemy liczyli nazwę przestrzeni nazw z {{Code|nazwa jednostki 2}}: <syntaxhighlight lang="mediawiki"> {{#invoke:Pudełko|Nazwa przestrzeni nazw 2|numer jednostki=2}} </syntaxhighlight> Na podstawie powyższego przykładu otrzymamy wynik o schemacie, nie wyniku, bo tam nie ma zmiennej {{Code|nazwa przestrzeni nazw 1}}, ale jest {{Code|nazwa przestrzeni nazw i}}: <syntaxhighlight lang="mediawiki"> <!-- Ale nie "nazwa przestrzeni nazw 2", bo jej nie ma, ale za to istnieje "nazwa przestrzeni nazw i"; --> <!-- nazwa przestrzeni nazw 2=nazwa przestrzeni nazw i="", a nazwa jednostki 2="Wikibooks:Strona"; --> <!-- Czyli wynik: --> Wikibooks <!-- Widzimy, że wygenerowała się nazwa przestrzeni nazw, którą jest przestrzeń nieprogramowa, ale projektu, wychodząca z nazwy jednostek w tym przypadku z "nazwa jednostki 2"; --> </syntaxhighlight> Nie jest brana w tym powyższym przykładzie zmienna {{Code|nazwa przestrzeni nazw}}, bo jej nie ma, ale za to jest {{Code|nazwa przestrzeni nazw i}}, bo ona występuje jako parametr domyślny ogólny dla parametrów numerkowych. Tytaj jest używana jest zmienna {{Code|nazwa jednostki 2}} do wygenerowania ostatecznego wyniku, bo jak można zauważyć, parametry przestrzenne wskazują na przestrzeń główną, a nazwy jednostek już nie. Przykłady w wikikodzie: * {{Code|{{m|Pudełko|Nazwa przestrzeni nazw 2|numer jednostki{{=}}2}}}} → {{Tt|{{#invoke:Pudełko|Nazwa przestrzeni nazw 2|numer jednostki=2}}}} * {{Code|{{m|Pudełko|Nazwa przestrzeni nazw 2|Szablon|nazwa przestrzeni nazw i{{=}}Moja przestrzeń|numer jednostki{{=}}2}}}} → {{Tt|{{#invoke:Pudełko|Nazwa przestrzeni nazw 2|Szablon|nazwa przestrzeni nazw i=Moja przestrzeń|numer jednostki=2}}}} * {{Code|{{m|Pudełko|Nazwa przestrzeni nazw 2|nazwa przestrzeni nazw 2{{=}}|nazwa jednostki 2{{=}}Szablon:Strona|numer jednostki{{=}}2}}}} → {{Tt|{{#invoke:Pudełko|Nazwa przestrzeni nazw 2|nazwa przestrzeni nazw 2=|nazwa jednostki 2=Szablon:Strona|numer jednostki=2}}}} * {{Code|{{m|Pudełko|Nazwa przestrzeni nazw 2|nazwa przestrzeni nazw i{{=}}|nazwa jednostki 2{{=}}Szablon:Strona|numer jednostki{{=}}2}}}} → {{Tt|{{#invoke:Pudełko|Nazwa przestrzeni nazw 2|nazwa przestrzeni nazw i=|nazwa jednostki 2=Szablon:Strona|numer jednostki=2}}}} * {{Code|{{m|Pudełko|Nazwa przestrzeni nazw 2|Szablon|nazwa przestrzeni nazw{{=}}|nazwa jednostki 2{{=}}Wikibooks:Strona|numer jednostki{{=}}2}}}} → {{Tt|{{#invoke:Pudełko|Nazwa przestrzeni nazw 2|Szablon|nazwa przestrzeni nazw=|nazwa jednostki 2=Wikibooks:Strona|numer jednostki=2}}}} Powyżej dla przykładu podano parametry nie w rodzicu w szablonie, tylko w dziecku, jeśli chodzi o parametry nazw przestrzeni nazw i nazw jednostek, ale ich się za to nie powinno podawać w tych ramach, tylko w szablonach, w których wywoływane są te ramki pudełek {{Code|{{m|Pudełko}}}}, ale tak tutaj tak zrobiono by było najłatwiej sprawdzić działanie tego typu funkcji. Analogicznie możemy podawać parametry typu jednostki, np.: wywołaniu modułowym {{Code|{{m|Pudełko|Nazwa przestrzeni nazw 2|typ jednostki 2{{=}}Podręcznik|nazwa jednostki 2{{=}}Szablon:Strona|numer jednostki{{=}}2}}}} (ale wtedy jest brana przestrzeń nazw z nazwy jednostki), ale o tym więcej w rozdziałach {{Code|{{sr|#p["Typ jednostki 2"](frame,i)|p=Pudełko}}}} w „{{sr|#Funkcje typu jednostki|p=Pudełko}}”, on definiuje przestrzenie przedmiotowe, ale można użyć parametru dyskusji typu jednostki z wartością niepustą, wtedy wyświetli się nazwa przestrzeni nazw dyskusji. Jeżeli typ jednostki wskazuje na przestrzeń nazw główną, wtedy się liczą parametry nazw jednostek. Również parametry typu jednostki nie powinno się podawać w dziecku w ramce, tylko w rodzicu w szablonie jako parametry, w którym ta ramka jest wywoływana, ale tutaj podano jedynie dla przykładu, jak najłatwiej sprawdzić działanie tych parametrów tej funkcji. Najpierw w funkcji nagłówku brane są parametry nazw przestrzeni nazw, a jeżeli ich nie ma, to parametry typu jednostki, a jeżeli nie ma lub parametry przestrzenne wskazują na przestrzeń główną, i nie ma nazwy jednostki, to generowane są nazwy tej funkcji na podstawie aktualnej strony. === {{Code|p["Nazwa przedmiotowej przestrzeni nazw 2"](frame,...)}} === Funkcja pisze przedmiotową nazwę przestrzeni nazw jakikolwiek nazwy przestrzeni nazw (tzn. nazwę przedmiotową nazwy przestrzenie nazw, czyli nie dyskusji, zamieniana jest na nią samą, czyli identyfikator przestrzeni się nie zmienia, a dyskusji, nie przedmiotową, przekształca się na przedmiotową jej odpowiadającą, czyli w tym przypadku identyfikator przestrzeni zmniejsza się o numer mniej), według, i nie zawsze tylko, podanej w zmiennej {{Code|nazwa przestrzeni nazw}} dla pozycja bazowej w podanych parametrach szablonu rodzicu ramki dziecka, lub dla innej pozycji należy parametr podawać w formie {{Code|nazwa przestrzeni nazw 1}}, {{Code|nazwa przestrzeni nazw 2}}, {{Code|nazwa przestrzeni nazw 3}},..., lub te parametry można podać w postaci ogólnej {{Code|nazwa przestrzeni nazw i}}. W tej funkcji trzeba też podawać parametry nazwy jednostek {{Code|nazwa jednostki}}, {{Code|nazwa jednostki 1}}, {{Code|nazwa jednostki 2}}, {{Code|nazwa jednostki 3}},... Parametry podaje się w parametrach rodzica wywołania tej funkcji {{Code|{{m|Pudełko|Nazwa przedmiotowej przestrzeni nazw 2}}}} (ale ich nie trzeba podawać w dziecku, ale można) i w parametrach dziecka, jeśli chodzi o zmienną {{Code|numer jednostki}}, czyli np.: {{Code|{{m|Pudełko|Nazwa przedmiotowej przestrzeni nazw 2|numer jednostki{{=}}<jakaś liczba całkowita dodatnia>}}}}. Te parametry przestrzenne zamiast w rodzicu w szablonie można podać w ramce dziecka, wtedy parametry dziecka mają pierwszeństwo. Przestrzeń nazw z parametrów nazw przestrzennych po przekształceniu na przedmiotową może odpowiadać wartości przestrzeni głównej, to wtedy odpowiednia przestrzeń nazw z parametru nazwy jednostki się liczy w tej funkcji, wtedy jest liczona nazwa przestrzeni nazw z tego parametru. Gdy parametry przestrzenne lub typ jednostki w drugim podejściu nie wskazują na przestrzeń główną, to wtedy działanie tej funkcji jest podobne do {{Code|{{sr|#p["Nazwa przedmiotowej przestrzeni nazw"](frame,...)|p=Pudełko}}}}. Definicja skrótowa funkcji: <syntaxhighlight lang="lua"> p["Nazwa przedmiotowej przestrzeni nazw 2"]=function(frame,czy_uwzglednic_alternatywna_nazwe,i)...end; </syntaxhighlight> Wtedy ciało funkcji tej, czyli jego definicja w środku, jest: <syntaxhighlight lang="lua"> local pudelko_pomocne_modul=require("Module:Pudełko/Pomocne"); return pudelko_pomocne_modul.Nazwa_przestrzeni_nazw_przedmiotowa_dyskusji_2(frame,czy_uwzglednic_alternatywna_nazwe,i,"przedmiotowa"); </syntaxhighlight> Parametry funkcji: * {{Code|frame}} - tablica ramki tablicy transportu, * {{Code|czy_uwzglednic_alternatywna_nazwe}} - czy ma uwzględniać nazwę przestrzeni nazw domyślną szablonu, dostępne wartości: {{Code|false}}, w której nazwa domyślna nie jest uwzględniana wtedy, oraz {{Code|nil}} i {{Code|true}}, które oznaczają to samo, w tym jeżeli ona jest uwzględniana, wtedy jest brany parametr pierwszy dziecka, który musi istnieć przy takiej wartości tego parametru, tzn. {{Code|{{m|Pudełko|Nazwa przedmiotowej przestrzeni nazw 2|Szablon}}}}, a nazwa uzyskana nazwy przestrzeni nazw jest w takim przypadku błędna, a jeżeli nazwa domyślna jest błędna, czyli {{Code|{{m|Pudełko|Nazwa przedmiotowej przestrzeni nazw 2|Moja przestrzeń}}}}, wtedy funkcja zwraca stan błędu {{Code|(błąd)}}. * {{Code|i}} - numer zmiennej nazwy przestrzeni nazw. Funkcja wykorzystuje {{Code|{{sr|#p.Nazwa_przestrzeni_nazw_przedmiotowa_dyskusji_2(frame,...)|p=Pudełko/Pomocne}}}} do wyznaczania ogólnego nazwy przestrzeni nazw dla pozycji bazowej i numerkowej, tzn. dla pozycji: jeden, dwa, trzy,..., itd, i ich ogólnej. Parametr ramki tablicy transportu rodzica szablonu: * {{Code|nazwa przestrzeni nazw}}, {{Code|nazwa przestrzeni nazw 1}}, {{Code|nazwa przestrzeni nazw 2}}, {{Code|nazwa przestrzeni nazw 3}},..., {{Code|nazwa przestrzeni nazw i}} - nazwy przestrzeni nazw dla pozycji bazowej oraz zwykłej i ogólnej numerkowej, * {{Code|nazwa jednostki}}, {{Code|nazwa jednostki 1}}, {{Code|nazwa jednostki 2}}, {{Code|nazwa jednostki 3}},... - nazwy jednostek dla pozycji bazowej i numerkowej, * {{Code|typ jednostki}}, {{Code|typ jednostki 1}}, {{Code|typ jednostki 2}}, {{Code|typ jednostki 3}},..., {{Code|typ jednostki i}} - typy jednostek, którym odpowiadają pewne przestrzenie przedmiotowe, dla pozycji bazowej, numerkowej i ogólnej. Parametry ramki tablicy transportu dziecka: * Parametry dziecka są takie same jak rodzica dla funkcji pudełkowej plus tu wymienione, * {{Code|numer jednostki}} - jak parametr {{Code|i}} nie został ustawiony, to wtedy liczy się ta zmienna. Przykłady: <syntaxhighlight lang="mediawiki"> {{Nazwa szablonu|nazwa przestrzeni nazw=Wikibooks|nazwa przestrzeni nazw 1=Szablon|nazwa przestrzeni nazw i=|nazwa jednostki 2=Dyskusja Wikibooks:Strona}} </syntaxhighlight> W dziecku powiedzmy jest wywołanie, i szukamy nazwy przestrzeni nazw o numerze dwa, która została podana, ale istnieje za to jej wersji ogólna {{Code|nazwa przestrzeni nazw i}} i domyślna {{Code|nazwa przestrzeni nazw}}, ale wtedy dla tego numerkowego liczy się to ogólne z {{Code| i}}, a ponieważ ta nazwa jest pusta, więc będziemy liczyli nazwę przestrzeni nazw z {{Code|nazwa jednostki 2}}: <syntaxhighlight lang="mediawiki"> {{#invoke:Pudełko|Nazwa przedmiotowej przestrzeni nazw 2|numer jednostki=2}} </syntaxhighlight> Na podstawie powyższego przykładu otrzymamy wynik o schemacie, nie wyniku, bo tam nie ma zmiennej {{Code|nazwa przestrzeni nazw 1}}, ale jest {{Code|nazwa przestrzeni nazw i}}: <syntaxhighlight lang="mediawiki"> <!-- Ale nie "nazwa przestrzeni nazw 2", bo jej nie ma, ale za to istnieje "nazwa przestrzeni nazw i"; --> <!-- nazwa przestrzeni nazw 2=nazwa przestrzeni nazw i="", a nazwa jednostki 2="Dyskusja Wikibooks:Strona"; --> <!-- Czyli wynik: --> Wikibooks <!-- Widzimy, że wygenerowała się nazwa przestrzeni nazw, którą jest przestrzeń nieprogramowa, ale projektu, wychodząca z nazwy jednostek w tym przypadku z "nazwa jednostki 2"; --> </syntaxhighlight> Nie jest brana w tym powyższym przykładzie zmienna {{Code|nazwa przestrzeni nazw}}, bo jej nie ma, ale za to jest {{Code|nazwa przestrzeni nazw i}}, bo ona występuje jako parametr domyślny ogólny dla parametrów numerkowych. Tytaj jest używana jest zmienna {{Code|nazwa jednostki 2}} do wygenerowania ostatecznego wyniku, bo jak można zauważyć, parametry przestrzenne wskazują na przestrzeń główną, a nazwy jednostek już nie. Przykłady w wikikodzie: * {{Code|{{m|Pudełko|Nazwa przedmiotowej przestrzeni nazw 2|numer jednostki{{=}}2}}}} → {{Tt|{{#invoke:Pudełko|Nazwa przedmiotowej przestrzeni nazw 2|numer jednostki=2}}}} * {{Code|{{m|Pudełko|Nazwa przedmiotowej przestrzeni nazw 2|Dyskusja szablonu|nazwa przestrzeni nazw i{{=}}Moja przestrzeń|numer jednostki{{=}}2}}}} → {{Tt|{{#invoke:Pudełko|Nazwa przedmiotowej przestrzeni nazw 2|Dyskusja szablonu|nazwa przestrzeni nazw i=Moja przestrzeń|numer jednostki=2}}}} * {{Code|{{m|Pudełko|Nazwa przedmiotowej przestrzeni nazw 2|nazwa przestrzeni nazw 2{{=}}Dyskusja|nazwa jednostki 2{{=}}Dyskusja szablonu:Strona|numer jednostki{{=}}2}}}} → {{Tt|{{#invoke:Pudełko|Nazwa przedmiotowej przestrzeni nazw 2|nazwa przestrzeni nazw 2=Dyskusja|nazwa jednostki 2=Dyskusja szablonu:Strona|numer jednostki=2}}}} * {{Code|{{m|Pudełko|Nazwa przedmiotowej przestrzeni nazw 2|nazwa przestrzeni nazw i{{=}}Dyskusja|nazwa jednostki 2{{=}}Dyskusja szablonu:Strona|numer jednostki{{=}}2}}}} → {{Tt|{{#invoke:Pudełko|Nazwa przedmiotowej przestrzeni nazw 2|nazwa przestrzeni nazw i=Dyskusja|nazwa jednostki 2=Dyskusja szablonu:Strona|numer jednostki=2}}}} * {{Code|{{m|Pudełko|Nazwa przedmiotowej przestrzeni nazw 2|Dyskusja szablonu|nazwa przestrzeni nazw{{=}}Dyskusja|nazwa jednostki 2{{=}}Wikibooks:Strona|numer jednostki{{=}}2}}}} → {{Tt|{{#invoke:Pudełko|Nazwa przedmiotowej przestrzeni nazw 2|Dyskusja szablonu|nazwa przestrzeni nazw=Dyskusja|nazwa jednostki 2=Dyskusja Wikibooks:Strona|numer jednostki=2}}}} Powyżej dla przykładu podano parametry nie w rodzicu w szablonie, tylko w dziecku, jeśli chodzi o parametry nazw przestrzeni nazw i nazw jednostek, ale ich się za to nie powinno podawać w tych ramach, tylko w szablonach, w których wywoływane są te ramki pudełek {{Code|{{m|Pudełko}}}}, ale tak tutaj tak zrobiono by było najłatwiej sprawdzić działanie tego typu funkcji. Analogicznie możemy podawać parametry typu jednostki, np.: wywołaniu modułowym {{Code|{{m|Pudełko|Nazwa przedmiotowej przestrzeni nazw 2|typ jednostki 2{{=}}Podręcznik|nazwa jednostki 2{{=}}Dyskusja szablonu:Strona|numer jednostki{{=}}2}}}} (ale wtedy jest brana przestrzeń nazw z nazwy jednostki), ale o tym więcej w rozdziałach {{Code|{{sr|# p["Przedmiotowy typ jednostki 2"](frame,i)|p=Pudełko}}}} w „{{sr|#Funkcje typu jednostki|p=Pudełko}}”, on definiuje przestrzenie przedmiotowe, ale można użyć parametru dyskusji typu jednostki z wartością niepustą, pustą, czy nawet jej nie podamy, wtedy wyświetli się nazwa przestrzeni nazw przedmiotowej. Jeżeli typ jednostki wskazuje na przestrzeń nazw główną, wtedy się liczą parametry nazw jednostek. Również parametry typu jednostki nie powinno się podawać w dziecku w ramce, tylko w rodzicu w szablonie jako parametry, w którym ta ramka jest wywoływana, ale tutaj podano jedynie dla przykładu, jak najłatwiej sprawdzić działanie tych parametrów tej funkcji. Najpierw w funkcji nagłówku brane są parametry nazw przestrzeni nazw, a jeżeli ich nie ma, to parametry typu jednostki, a jeżeli nie ma lub parametry przestrzenne wskazują na przestrzeń główną, i nie ma nazwy jednostki, to generowane są nazwy tej funkcji na podstawie aktualnej strony. === {{Code|p["Nazwa przestrzeni nazw dyskusji 2"](frame,...)}} === Funkcja pisze nazwę przestrzeni nazw dyskusji jakikolwiek nazwy przestrzeni nazw (tzn. nazwę dyskusji nazwy przestrzenie nazw, czyli nie przedmiotowej, zamieniana jest na nią samą, czyli identyfikator przestrzeni się nie zmienia, a przedmiotową, nie dyskusji, przekształca się na dyskusji jej odpowiadającą, czyli w tym przypadku identyfikator przestrzeni zwiększa się o numer więcej), według, i nie zawsze tylko, podanej w zmiennej {{Code|nazwa przestrzeni nazw}} dla pozycja bazowej w podanych parametrach szablonu rodzicu ramki dziecka, lub dla innej pozycji należy parametr podawać w formie {{Code|nazwa przestrzeni nazw 1}}, {{Code|nazwa przestrzeni nazw 2}}, {{Code|nazwa przestrzeni nazw 3}},..., lub te parametry można podać w postaci ogólnej {{Code|nazwa przestrzeni nazw i}}. W tej funkcji trzeba też podawać parametry nazwy jednostek {{Code|nazwa jednostki}}, {{Code|nazwa jednostki 1}}, {{Code|nazwa jednostki 2}}, {{Code|nazwa jednostki 3}},... Parametry podaje się w parametrach rodzica wywołania tej funkcji {{Code|{{m|Pudełko|Nazwa przestrzeni nazw dyskusji 2}}}} (ale ich nie trzeba podawać w dziecku, ale można) i w parametrach dziecka, jeśli chodzi o zmienną {{Code|numer jednostki}}, czyli np.: {{Code|{{m|Pudełko|Nazwa przestrzeni nazw dyskusji 2|numer jednostki{{=}}<jakaś liczba całkowita dodatnia>}}}}. Te parametry przestrzenne zamiast w rodzicu w szablonie można podać w ramce dziecka, wtedy parametry dziecka mają pierwszeństwo. Przestrzeń nazw z parametrów nazw przestrzennych po przekształceniu na przedmiotową może odpowiadać wartości przestrzeni głównej, to wtedy odpowiednia przestrzeń nazw z parametru nazwy jednostki się liczy w tej funkcji, wtedy jest liczona nazwa przestrzeni nazw z tego parametru. Gdy parametry przestrzenne lub typ jednostki w drugim podejściu nie wskazują na przestrzeń główną, to wtedy działanie tej funkcji jest podobne do {{Code|{{sr|#p["Nazwa dyskusji przestrzeni nazw"](frame,...)|p=Pudełko}}}}. Definicja skrótowa funkcji: <syntaxhighlight lang="lua"> p["Nazwa przestrzeni nazw dyskusji 2"]=function(frame,czy_uwzglednic_alternatywna_nazwe,i)...end; </syntaxhighlight> Wtedy ciało funkcji tej, czyli jego definicja w środku, jest: <syntaxhighlight lang="lua"> local pudelko_pomocne_modul=require("Module:Pudełko/Pomocne"); return pudelko_pomocne_modul.Nazwa_przestrzeni_nazw_przedmiotowa_dyskusji_2(frame,czy_uwzglednic_alternatywna_nazwe,i,"dyskusja"); </syntaxhighlight> Parametry funkcji: * {{Code|frame}} - tablica ramki tablicy transportu, * {{Code|czy_uwzglednic_alternatywna_nazwe}} - czy ma uwzględniać nazwę przestrzeni nazw domyślną szablonu, dostępne wartości: {{Code|false}}, w której nazwa domyślna nie jest uwzględniana wtedy, oraz {{Code|nil}} i {{Code|true}}, które oznaczają to samo, w tym jeżeli ona jest uwzględniana, wtedy jest brany parametr pierwszy dziecka, który musi istnieć przy takiej wartości tego parametru, tzn. {{Code|{{m|Pudełko|Nazwa przestrzeni nazw dyskusji 2|Szablon}}}}, a nazwa uzyskana nazwy przestrzeni nazw jest w takim przypadku błędna, a jeżeli nazwa domyślna jest błędna, czyli {{Code|{{m|Pudełko|Nazwa przestrzeni nazw dyskusji 2|Moja przestrzeń}}}}, wtedy funkcja zwraca stan błędu {{Code|(błąd)}}. * {{Code|i}} - numer zmiennej nazwy przestrzeni nazw. Funkcja wykorzystuje {{Code|{{sr|#p.Nazwa_przestrzeni_nazw_przedmiotowa_dyskusji_2(frame,...)|p=Pudełko/Pomocne}}}} do wyznaczania ogólnego nazwy przestrzeni nazw dla pozycji bazowej i numerkowej, tzn. dla pozycji: jeden, dwa, trzy,..., itd, i ich ogólnej. Parametr ramki tablicy transportu rodzica szablonu: * {{Code|nazwa przestrzeni nazw}}, {{Code|nazwa przestrzeni nazw 1}}, {{Code|nazwa przestrzeni nazw 2}}, {{Code|nazwa przestrzeni nazw 3}},..., {{Code|nazwa przestrzeni nazw i}} - nazwy przestrzeni nazw dla pozycji bazowej oraz zwykłej i ogólnej numerkowej, * {{Code|nazwa jednostki}}, {{Code|nazwa jednostki 1}}, {{Code|nazwa jednostki 2}}, {{Code|nazwa jednostki 3}},... - nazwy jednostek dla pozycji bazowej i numerkowej, * {{Code|typ jednostki}}, {{Code|typ jednostki 1}}, {{Code|typ jednostki 2}}, {{Code|typ jednostki 3}},..., {{Code|typ jednostki i}} - typy jednostek, którym odpowiadają pewne przestrzenie przedmiotowe, dla pozycji bazowej, numerkowej i ogólnej. Parametry ramki tablicy transportu dziecka: * Parametry dziecka są takie same jak rodzica dla funkcji pudełkowej plus tu wymienione, * {{Code|numer jednostki}} - jak parametr {{Code|i}} nie został ustawiony, to wtedy liczy się ta zmienna. Przykłady: <syntaxhighlight lang="mediawiki"> {{Nazwa szablonu|nazwa przestrzeni nazw=Wikibooks|nazwa przestrzeni nazw 1=Szablon|nazwa przestrzeni nazw i=|nazwa jednostki 2=Wikibooks:Strona}} </syntaxhighlight> W dziecku powiedzmy jest wywołanie, i szukamy nazwy przestrzeni nazw o numerze dwa, która została podana, ale istnieje za to jej wersji ogólna {{Code|nazwa przestrzeni nazw i}} i domyślna {{Code|nazwa przestrzeni nazw}}, ale wtedy dla tego numerkowego liczy się to ogólne z {{Code| i}}, a ponieważ ta nazwa jest pusta, więc będziemy liczyli nazwę przestrzeni nazw z {{Code|nazwa jednostki 2}}: <syntaxhighlight lang="mediawiki"> {{#invoke:Pudełko|Nazwa przestrzeni nazw dyskusji 2|numer jednostki=2}} </syntaxhighlight> Na podstawie powyższego przykładu otrzymamy wynik o schemacie, nie wyniku, bo tam nie ma zmiennej {{Code|nazwa przestrzeni nazw 1}}, ale jest {{Code|nazwa przestrzeni nazw i}}: <syntaxhighlight lang="mediawiki"> <!-- Ale nie "nazwa przestrzeni nazw 2", bo jej nie ma, ale za to istnieje "nazwa przestrzeni nazw i"; --> <!-- nazwa przestrzeni nazw 2=nazwa przestrzeni nazw i="", a nazwa jednostki 2="Wikibooks:Strona"; --> <!-- Czyli wynik: --> Dyskusja Wikibooks <!-- Widzimy, że wygenerowała się nazwa przestrzeni nazw, którą jest przestrzeń nieprogramowa, ale dyskusji projektu, wychodząca z nazwy jednostek w tym przypadku z "nazwa jednostki 2"; --> </syntaxhighlight> Nie jest brana w tym powyższym przykładzie zmienna {{Code|nazwa przestrzeni nazw}}, bo jej nie ma, ale za to jest {{Code|nazwa przestrzeni nazw i}}, bo ona występuje jako parametr domyślny ogólny dla parametrów numerkowych. Tytaj jest używana jest zmienna {{Code|nazwa jednostki 2}} do wygenerowania ostatecznego wyniku, bo jak można zauważyć, parametry przestrzenne wskazują na przestrzeń główną, a nazwy jednostek już nie. Przykłady w wikikodzie: * {{Code|{{m|Pudełko|Nazwa przestrzeni nazw dyskusji 2|numer jednostki{{=}}2}}}} → {{Tt|{{#invoke:Pudełko|Nazwa przestrzeni nazw dyskusji 2|numer jednostki=2}}}} * {{Code|{{m|Pudełko|Nazwa przestrzeni nazw dyskusji 2|Szablon|nazwa przestrzeni nazw i{{=}}Moja przestrzeń|numer jednostki{{=}}2}}}} → {{Tt|{{#invoke:Pudełko|Nazwa przestrzeni nazw dyskusji 2|Szablon|nazwa przestrzeni nazw i=Moja przestrzeń|numer jednostki=2}}}} * {{Code|{{m|Pudełko|Nazwa przestrzeni nazw dyskusji 2|nazwa przestrzeni nazw 2{{=}}|nazwa jednostki 2{{=}}Szablon:Strona|numer jednostki{{=}}2}}}} → {{Tt|{{#invoke:Pudełko|Nazwa przestrzeni nazw dyskusji 2|nazwa przestrzeni nazw 2=|nazwa jednostki 2=Szablon:Strona|numer jednostki=2}}}} * {{Code|{{m|Pudełko|Nazwa przestrzeni nazw dyskusji 2|nazwa przestrzeni nazw i{{=}}|nazwa jednostki 2{{=}}Szablon:Strona|numer jednostki{{=}}2}}}} → {{Tt|{{#invoke:Pudełko|Nazwa przestrzeni nazw dyskusji 2|nazwa przestrzeni nazw i=|nazwa jednostki 2=Szablon:Strona|numer jednostki=2}}}} * {{Code|{{m|Pudełko|Nazwa przestrzeni nazw dyskusji 2|Szablon|nazwa przestrzeni nazw{{=}}|nazwa jednostki 2{{=}}Wikibooks:Strona|numer jednostki{{=}}2}}}} → {{Tt|{{#invoke:Pudełko|Nazwa przestrzeni nazw dyskusji 2|Szablon|nazwa przestrzeni nazw=|nazwa jednostki 2=Dyskusja Wikibooks:Strona|numer jednostki=2}}}} Powyżej dla przykładu podano parametry nie w rodzicu w szablonie, tylko w dziecku, jeśli chodzi o parametry nazw przestrzeni nazw i nazw jednostek, ale ich się za to nie powinno podawać w tych ramach, tylko w szablonach, w których wywoływane są te ramki pudełek {{Code|{{m|Pudełko}}}}, ale tak tutaj tak zrobiono by było najłatwiej sprawdzić działanie tego typu funkcji. Analogicznie możemy podawać parametry typu jednostki, np.: wywołaniu modułowym {{Code|{{m|Pudełko|Nazwa przestrzeni nazw dyskusji 2|typ jednostki 2{{=}}Podręcznik|nazwa jednostki 2{{=}}Szablon:Strona|numer jednostki{{=}}2}}}} (ale wtedy jest brana przestrzeń nazw z nazwy jednostki), ale o tym więcej w rozdziałach {{Code|{{sr|# p["Dyskusyjny typ jednostki 3"](frame,i)|p=Pudełko}}}} w „{{sr|#Funkcje typu jednostki|p=Pudełko}}”, one definiują przestrzenie dyskusji, ale można użyć parametru dyskusji typu jednostki z obojętnie jaką wartością niepustą, czy pustą, czy nawet jej nie podamy, wtedy wyświetli się nazwa przestrzeni nazw dyskusji. Jeżeli typ jednostki wskazuje na przestrzeń nazw główną, wtedy się liczą parametry nazw jednostek. Również parametry typu jednostki nie powinno się podawać w dziecku w ramce, tylko w rodzicu w szablonie jako parametry, w którym ta ramka jest wywoływana, ale tutaj podano jedynie dla przykładu, jak najłatwiej sprawdzić działanie tych parametrów tej funkcji. Najpierw w funkcji nagłówku brane są parametry nazw przestrzeni nazw, a jeżeli ich nie ma, to parametry typu jednostki, a jeżeli nie ma lub parametry przestrzenne wskazują na przestrzeń główną, i nie ma nazwy jednostki, to generowane są nazwy tej funkcji na podstawie aktualnej strony. == Funkcje pełnych nazw jednostki == === {{Code|p["Pełna nazwa dyskusji jednostki"](frame,i)}} === === {{Code|p["Pełna nazwa przedmiotowa jednostki"](frame,i)}} === === {{Code|p["Pełna nazwa jednostki"](frame,i)}} === == Funkcje pełnych nazw jednostki drugiej wersji == === {{Code|p["Pełna nazwa dyskusji jednostki 2"](frame,i)}} === === {{Code|p["Pełna nazwa przedmiotowa jednostki 2"](frame,i)}} === === {{Code|p["Pełna nazwa jednostki 2"](frame,i)}} === == Funkcje pełnych nazw jednostki trzeciej wersji == === {{Code|p["Pełna nazwa dyskusji jednostki 3"](frame,i)}} === === {{Code|p["Pełna nazwa przedmiotowa jednostki 3"](frame,i)}} === === {{Code|p["Pełna nazwa jednostki 3"](frame,i)}} === == Funkcje nazw jednostki == === {{Code|p["Nazwa jednostki"](frame,i)}} === == Funkcje nazw jednostki drugiej wersji == === {{Code|p["Nazwa jednostki 2"](frame,i)}} === === {{Code|p["Nazwa przedmiotowa jednostki 2"](frame,i)}} === === {{Code|p["Nazwa dyskusji jednostki 2"](frame,i)}} === == Funkcje nazw przestrzeni nazw trzeciej wersji == === {{Code|p["Nazwa przestrzeni nazw 3"](frame,i)}} === Funkcja pisze nazwę przestrzeni nazw, niezależnie, czy to jest przedmiotowa, czy dyskusji, według, i nie zawsze tylko, podanej w zmiennej {{Code|nazwa przestrzeni nazw}} dla pozycja bazowej w podanych parametrach szablonu rodzicu ramki dziecka, lub dla innej pozycji należy parametr podawać w formie {{Code|nazwa przestrzeni nazw 1}}, {{Code|Nazwa przestrzeni nazw 3}}, {{Code|nazwa przestrzeni nazw 3}},..., lub te parametry można podać w postaci ogólnej {{Code|nazwa przestrzeni nazw i}}. W tej funkcji trzeba też podawać parametry nazwy jednostek {{Code|nazwa jednostki}}, {{Code|nazwa jednostki 1}}, {{Code|nazwa jednostki 2}}, {{Code|nazwa jednostki 3}},... Parametry podaje się w parametrach rodzica wywołania tej funkcji {{Code|{{m|Pudełko|Nazwa przestrzeni nazw 3}}}} (ale ich nie trzeba podawać w dziecku, ale można) i w parametrach dziecka, jeśli chodzi o zmienną {{Code|numer jednostki}}, czyli np.: {{Code|{{m|Pudełko|Nazwa przestrzeni nazw 3|numer jednostki{{=}}<jakaś liczba całkowita dodatnia>}}}}. Te parametry przestrzenne zamiast w rodzicu w szablonie można podać w ramce dziecka, wtedy parametry dziecka mają pierwszeństwo. Przestrzeń nazw z parametrów nazw przestrzennych bazowych (bez numerka) może odpowiadać wartości przestrzeni głównej, to wtedy odpowiednia przestrzeń nazw z parametru nazwy jednostki się nie liczy w tej funkcji, aby się liczyła należy użyć funkcji {{Code|{{sr|#p["Nazwa przestrzeni nazw"](frame,...)|p=Pudełko}}}}. Przestrzeń nazw z parametrów nazw przestrzennych numerkowych może odpowiadać wartości przestrzeni głównej, to wtedy odpowiednia przestrzeń nazw z parametru nazwy jednostki się liczy w tej funkcji, wtedy jest liczona nazwa przestrzeni nazw z tego parametru. Gdy parametry przestrzenne lub typ jednostki w drugim podejściu nie wskazują na przestrzeń główną, to wtedy działanie tej funkcji jest podobne do {{Code|{{sr|#p["Nazwa przestrzeni nazw 2"](frame,...)|p=Pudełko}}}}. Definicja skrótowa funkcji: <syntaxhighlight lang="lua"> p["Nazwa przestrzeni nazw 3"]=function(frame,czy_uwzglednic_alternatywna_nazwe,i)...end; </syntaxhighlight> Wtedy ciało funkcji tej, czyli jego definicja w środku, jest: <syntaxhighlight lang="lua"> -- Jest liczony numer parametru nazwy przestrzeni nazw, domyslnie chodzi tu o numer bazowy parametrów przestrzennych; local numer_jednostki=i or frame.args["numer jednostki"]; local liczba_numeru_jednostki=((numer_jednostki)and(tonumber(numer_jednostki)) or 0); local pudelko_pomocne_modul=require("Module:Pudełko/Pomocne"); -- Liczy nazwę przestrzeni nazw dyskusji na podstawie podanych parametrów; return pudelko_pomocne_modul.Uzyskanie_nazw_jednostki(frame,0,liczba_numeru_jednostki,nil,2); </syntaxhighlight> Parametry funkcji: * {{Code|frame}} - tablica ramki tablicy transportu, * {{Code|czy_uwzglednic_alternatywna_nazwe}} - czy ma uwzględniać nazwę przestrzeni nazw domyślną szablonu, dostępne wartości: {{Code|false}}, w której nazwa domyślna nie jest uwzględniana wtedy, oraz {{Code|nil}} i {{Code|true}}, które oznaczają to samo, w tym jeżeli ona jest uwzględniana, wtedy jest brany parametr pierwszy dziecka, który musi istnieć przy takiej wartości tego parametru, tzn. {{Code|{{m|Pudełko|Nazwa przestrzeni nazw 3|Szablon}}}}, a nazwa uzyskana nazwy przestrzeni nazw jest w takim przypadku błędna, a jeżeli nazwa domyślna jest błędna, czyli {{Code|{{m|Pudełko|Nazwa przestrzeni nazw 3|Moja przestrzeń}}}}, wtedy funkcja zwraca stan błędu {{Code|(błąd)}}. * {{Code|i}} - numer zmiennej nazwy przestrzeni nazw. Funkcja wykorzystuje {{Code|{{sr|#p.Uzyskanie_nazw_jednostki(frame,...)|p=Pudełko/Pomocne}}}} do wyznaczania ogólnego nazwy przestrzeni nazw dla pozycji bazowej i numerkowej, tzn. dla pozycji: jeden, dwa, trzy,..., itd, i ich ogólnej. Parametr ramki tablicy transportu rodzica szablonu: * {{Code|nazwa przestrzeni nazw}}, {{Code|nazwa przestrzeni nazw 1}}, {{Code|Nazwa przestrzeni nazw 3}}, {{Code|nazwa przestrzeni nazw 3}},..., {{Code|nazwa przestrzeni nazw i}} - nazwy przestrzeni nazw dla pozycji bazowej oraz zwykłej i ogólnej numerkowej, * {{Code|nazwa jednostki}}, {{Code|nazwa jednostki 1}}, {{Code|nazwa jednostki 2}}, {{Code|nazwa jednostki 3}},... - nazwy jednostek dla pozycji bazowej i numerkowej, * {{Code|typ jednostki}}, {{Code|typ jednostki 1}}, {{Code|typ jednostki 2}}, {{Code|typ jednostki 3}},..., {{Code|typ jednostki i}} - typy jednostek, którym odpowiadają pewne przestrzenie przedmiotowe, dla pozycji bazowej, numerkowej i ogólnej, ** {{Code|dyskusja typu jednostki}}, {{Code|dyskusja typu jednostki 1}}, {{Code|dyskusja typ jednostki 2}}, {{Code|dyskusja typ jednostki 3}},..., {{Code|dyskusja typ jednostki i}} - czy dany typ jednostki ma przedstawiać, jeśli niepusta, przestrzeń dyskusji dla pozycji bazowej, numerkowej i ogólnej. Parametry ramki tablicy transportu dziecka: * Parametry dziecka są takie same jak rodzica dla funkcji pudełkowej plus tu wymienione, * {{Code|numer jednostki}} - jak parametr {{Code|i}} nie został ustawiony, to wtedy liczy się ta zmienna. Przykłady: <syntaxhighlight lang="mediawiki"> {{Nazwa szablonu 1|nazwa przestrzeni nazw=Wikibooks|nazwa przestrzeni nazw=|nazwa przestrzeni nazw i=|nazwa jednostki=Szablon:Strona}} ---- {{Nazwa szablonu 2|nazwa przestrzeni nazw=Wikibooks|nazwa przestrzeni nazw 1=Szablon|nazwa przestrzeni nazw i=|nazwa jednostki 2=Wikibooks:Strona}} </syntaxhighlight> W pierwszym wywołaniu {{Code|nazwa przestrzeni nazw}} jest puste, ale dla tego bazowego (bez numerka) szukamy przestrzeni nazw, a więc ta nazwa jest ostateczna. ---- W drugim wywołaniu w dziecku powiedzmy jest wywołanie, i szukamy nazwy przestrzeni nazw o numerze dwa, która została podana, ale istnieje za to jej wersji ogólna {{Code|nazwa przestrzeni nazw i}} i domyślna {{Code|nazwa przestrzeni nazw}}, ale wtedy dla tego numerkowego liczy się to ogólne z {{Code| i}}, a ponieważ ta nazwa jest pusta, więc będziemy liczyli nazwę przestrzeni nazw z {{Code|nazwa jednostki 2}}. Odpowiadająca powyższemu kodowi, powiedzmy wikikod, według ich zawartości, przedstawia się: <syntaxhighlight lang="mediawiki"> {{#invoke:Pudełko|Nazwa przestrzeni nazw 3}} ---- {{#invoke:Pudełko|Nazwa przestrzeni nazw 3|numer jednostki=2}} </syntaxhighlight> Na podstawie powyższego przykładu otrzymamy wynik o schemacie, nie wyniku, bo tam nie ma zmiennej {{Code|nazwa przestrzeni nazw 1}}, ale jest {{Code|nazwa przestrzeni nazw i}}: <syntaxhighlight lang="mediawiki"> <!-- nazwa przestrzeni nazw=""; --> <!-- Czyli wynik: --> <!-- wynik pusty --> <!-- Widzimy, że wygenerowała się nazwa przestrzeni nazw, którą jest przestrzeń nazw główna, jest ciągiem pustym: ""; --> ---- <!-- Ale nie "nazwa przestrzeni nazw 2", bo jej nie ma, ale za to istnieje "nazwa przestrzeni nazw i"; --> <!-- nazwa przestrzeni nazw 2=nazwa przestrzeni nazw i="", a nazwa jednostki 2="Wikibooks:Strona"; --> <!-- Czyli wynik: --> Wikibooks <!-- Widzimy, że wygenerowała się nazwa przestrzeni nazw, którą jest przestrzeń nieprogramowa, ale projektu, wychodząca z nazwy jednostek w tym przypadku z "nazwa jednostki 2"; --> </syntaxhighlight> Dla parametrów numerkowych nie jest brana w tym powyższym przykładzie zmienna {{Code|nazwa przestrzeni nazw 2}}, bo jej nie ma, ale za to jest {{Code|nazwa przestrzeni nazw i}}, bo ona występuje jako parametr domyślny ogólny dla parametrów numerkowych. Tytaj jest używana jest zmienna {{Code|nazwa jednostki 2}} do wygenerowania ostatecznego wyniku, bo jak można zauważyć, parametry przestrzenne wskazują na przestrzeń główną, a nazwy jednostek już nie. Dla parametrów bazowych mamy zmienną {{Code|nazwa przestrzeni nazw}}, ona jest pusta, więc to zostanie wziete do ostatecznego wyniku. Przykłady w wikikodzie: * {{Code|{{m|Pudełko|Nazwa przestrzeni nazw 3|nazwa przestrzeni nazw{{=}}|nazwa jednostki{{=}}Wikibooks:Strona}}}} → {{Tt|{{#invoke:Pudełko|Nazwa przestrzeni nazw 3|nazwa przestrzeni nazw=|nazwa jednostki=Wikibooks:Szablon}}}} * {{Code|{{m|Pudełko|Nazwa przestrzeni nazw 3|nazwa przestrzeni nazw 2{{=}}|nazwa jednostki 2{{=}}Wikibooks:Strona|numer jednostki{{=}}2}}}} → {{Tt|{{#invoke:Pudełko|Nazwa przestrzeni nazw 3|nazwa przestrzeni nazw 2=|nazwa jednostki 2=Wikibooks:Szablon|numer jednostki=2}}}} Powyżej dla przykładu podano parametry nie w rodzicu w szablonie, tylko w dziecku, jeśli chodzi o parametry nazw przestrzeni nazw i nazw jednostek, ale ich się za to nie powinno podawać w tych ramach, tylko w szablonach, w których wywoływane są te ramki pudełek {{Code|{{m|Pudełko}}}}, ale tak tutaj tak zrobiono by było najłatwiej sprawdzić działanie tego typu funkcji. Analogicznie możemy podawać parametry typu jednostki, np.: wywołaniu modułowym {{Code|{{m|Pudełko|Nazwa przestrzeni nazw 3|typ jednostki 2{{=}}Podręcznik|nazwa jednostki 2{{=}}Szablon:Strona|numer jednostki{{=}}2}}}} (ale wtedy jest brana przestrzeń nazw z nazwy jednostki), ale o tym więcej w rozdziałach {{Code|{{sr|#p["Typ jednostki 3"](frame,i)|p=Pudełko}}}} w „{{sr|#Funkcje typu jednostki|p=Pudełko}}”, on definiuje przestrzenie przedmiotowe, ale można użyć parametru dyskusji typu jednostki z wartością niepustą, wtedy wyświetli się nazwa przestrzeni nazw dyskusji. Jeżeli typ jednostki bazowy wskazuje na przestrzeń nazw główną, wtedy się nie liczą parametry nazw jednostek, a na numerkowy, wtedy się liczy. Również parametry typu jednostki nie powinno się podawać w dziecku w ramce, tylko w rodzicu w szablonie jako parametry, w którym ta ramka jest wywoływana, ale tutaj podano jedynie dla przykładu, jak najłatwiej sprawdzić działanie tych parametrów tej funkcji. Najpierw w funkcji nagłówku brane są parametry nazw przestrzeni nazw, a jeżeli ich nie ma, to parametry typu jednostki, a jeżeli nie ma lub parametry przestrzenne wskazują na przestrzeń główną, i nie ma nazwy jednostki, to generowane są nazwy tej funkcji na podstawie aktualnej strony. === {{Code|p["Nazwa przedmiotowej przestrzeni nazw 3"](frame,i)}} === Funkcja pisze przedmiotową nazwę przestrzeni nazw jakikolwiek nazwy przestrzeni nazw (tzn. nazwę przedmiotową nazwy przestrzenie nazw, czyli nie dyskusji, zamieniana jest na nią samą, czyli identyfikator przestrzeni się nie zmienia, a dyskusji, nie przedmiotową, przekształca się na przedmiotową jej odpowiadającą, czyli w tym przypadku identyfikator przestrzeni zmniejsza się o numer mniej), według podanej w zmiennej {{Code|nazwa przestrzeni nazw}} dla pozycja bazowej w podanych parametrach szablonu rodzicu ramki dziecka, lub dla innej pozycji należy parametr podawać w formie {{Code|nazwa przestrzeni nazw 1}}, {{Code|nazwa przestrzeni nazw 2}}, {{Code|nazwa przestrzeni nazw 3}},..., lub te parametry można podać w postaci ogólnej {{Code|nazwa przestrzeni nazw i}}. Parametry podaje się w parametrach rodzica wywołania tej funkcji {{Code|{{m|Pudełko|Nazwa przedmiotowej przestrzeni nazw 3}}}} (ale ich nie trzeba podawać w dziecku, ale można) i w parametrach dziecka, jeśli chodzi o zmienną {{Code|numer jednostki}}, czyli np.: {{Code|{{m|Pudełko|Nazwa przedmiotowej przestrzeni nazw 3|numer jednostki{{=}}<jakaś liczba całkowita dodatnia>}}}}. Te parametry przestrzenne zamiast w rodzicu w szablonie można podać w ramce dziecka, wtedy parametry dziecka mają pierwszeństwo. Parametry przestrzenne mogą mogą być podane w postaci przestrzeni przedmiotowej lub dyskusji, ale ta funkcja zawsze ją zamienia na przedmiotową. Przestrzeń nazw z parametrów nazw przestrzennych bazowych (bez numerka) może odpowiadać wartości przestrzeni głównej, to wtedy odpowiednia przestrzeń nazw z parametru nazwy jednostki się nie liczy w tej funkcji, aby się liczyła należy użyć funkcji {{Code|{{sr|#p["Nazwa przedmiotowej przestrzeni nazw"](frame,...)|p=Pudełko}}}}. Przestrzeń nazw z parametrów nazw przestrzennych numerkowych może odpowiadać wartości przestrzeni głównej, to wtedy odpowiednia przestrzeń nazw z parametru nazwy jednostki się liczy w tej funkcji, wtedy jest liczona nazwa przestrzeni nazw z tego parametru. Gdy parametry przestrzenne lub typ jednostki w drugim podejściu nie wskazują na przestrzeń główną, to wtedy działanie tej funkcji jest podobne do {{Code|{{sr|#p["Nazwa przedmiotowej przestrzeni nazw 2"](frame,...)|p=Pudełko}}}}. Definicja skrótowa funkcji: <syntaxhighlight lang="lua"> p["Nazwa przedmiotowej przestrzeni nazw 3"]=function(frame,czy_uwzglednic_alternatywna_nazwe,i)...end; </syntaxhighlight> Wtedy ciało funkcji tej, czyli jego definicja w środku, jest: <syntaxhighlight lang="lua"> -- Jest liczony numer parametru nazwy przestrzeni nazw, domyslnie chodzi tu o numer bazowy parametrów przestrzennych; local numer_jednostki=i or frame.args["numer jednostki"]; local liczba_numeru_jednostki=((numer_jednostki)and(tonumber(numer_jednostki)) or 0); local pudelko_pomocne_modul=require("Module:Pudełko/Pomocne"); -- Liczy nazwę przestrzeni nazw przedmiotową na podstawie podanych parametrów; return pudelko_pomocne_modul.Uzyskanie_nazw_jednostki(frame,1,liczba_numeru_jednostki,nil,1); </syntaxhighlight> Parametry funkcji: * {{Code|frame}} - tablica ramki tablicy transportu, * {{Code|czy_uwzglednic_alternatywna_nazwe}} - czy ma uwzględniać nazwę przestrzeni nazw domyślną szablonu, dostępne wartości: {{Code|false}}, w której nazwa domyślna nie jest uwzględniana wtedy, oraz {{Code|nil}} i {{Code|true}}, które oznaczają to samo, w tym jeżeli ona jest uwzględniana, wtedy jest brany parametr pierwszy dziecka, który musi istnieć przy takiej wartości tego parametru, tzn. {{Code|{{m|Pudełko|Nazwa przedmiotowej przestrzeni nazw 3|Dyskusja szablonu}}}} - ta nazwa domyślna zostanie zamieniona na przedmiotową, a jak ona by była przedmiotowa, to żadnej zamiany by nie było, a nazwa uzyskana z nazwy przestrzeni nazw z parametrów przestrzennych jest w takim przypadku błędna, to w takim razie brany jest ten parametr, a jeżeli ta nazwa domyślna jest błędna, czyli {{Code|{{m|Pudełko|Nazwa przedmiotowej przestrzeni nazw 3|Moja przestrzeń}}}}, wtedy funkcja zwraca stan błędu {{Code|(błąd)}}. * {{Code|i}} - numer zmiennej nazwy przestrzeni nazw. Funkcja wykorzystuje {{Code|{{sr|#p.Uzyskanie_nazw_jednostki(frame,...)|p=Pudełko/Pomocne}}}} do wyznaczania ogólnego nazwy przestrzeni nazw dla pozycji bazowej i numerkowej, tzn. dla pozycji: jeden, dwa, trzy,..., itd, i ich ogólnej. Parametr ramki tablicy transportu rodzica szablonu: * {{Code|nazwa przestrzeni nazw}}, {{Code|nazwa przestrzeni nazw 1}}, {{Code|nazwa przestrzeni nazw 2}}, {{Code|nazwa przestrzeni nazw 3}},..., {{Code|nazwa przestrzeni nazw i}} - nazwy przestrzeni nazw dla pozycji bazowej oraz zwykłej i ogólnej numerkowej, * {{Code|typ jednostki}}, {{Code|typ jednostki 1}}, {{Code|typ jednostki 2}}, {{Code|typ jednostki 3}},..., {{Code|typ jednostki i}} - typy jednostek, którym odpowiadają pewne przestrzenie przedmiotowe, dla pozycji bazowej, numerkowej i ogólnej. Parametry ramki tablicy transportu dziecka: * Parametry dziecka są takie same jak rodzica dla funkcji pudełkowej plus tu wymienione, * {{Code|numer jednostki}} - jak parametr {{Code|i}} nie został ustawiony, to wtedy liczy się ta zmienna. Przykłady: <syntaxhighlight lang="mediawiki"> {{Nazwa szablonu 1|nazwa przestrzeni nazw=Wikibooks|nazwa przestrzeni nazw=|nazwa przestrzeni nazw i=|nazwa jednostki=Dyskusja Wikibooks:Strona}} ---- {{Nazwa szablonu 2|nazwa przestrzeni nazw=Wikibooks|nazwa przestrzeni nazw 1=Szablon|nazwa przestrzeni nazw i=|nazwa jednostki 2=Dyskusja Wikibooks:Strona}} </syntaxhighlight> W pierwszym wywołaniu {{Code|nazwa przestrzeni nazw}} jest puste, ale dla tego bazowego (bez numerka) szukamy przestrzeni nazw, a więc ta nazwa jest ostateczna. ---- W drugim wywołaniu w dziecku powiedzmy jest wywołanie, i szukamy nazwy przestrzeni nazw o numerze dwa, która została podana, ale istnieje za to jej wersji ogólna {{Code|nazwa przestrzeni nazw i}} i domyślna {{Code|nazwa przestrzeni nazw}}, ale wtedy dla tego numerkowego liczy się to ogólne z {{Code| i}}, a ponieważ ta nazwa jest pusta, więc będziemy liczyli nazwę przestrzeni nazw z {{Code|nazwa jednostki 2}}. Odpowiadająca powyższemu kodowi, powiedzmy wikikod, według ich zawartości, przedstawia się: <syntaxhighlight lang="mediawiki"> {{#invoke:Pudełko|Nazwa przedmiotowej przestrzeni nazw 3}} ---- {{#invoke:Pudełko|Nazwa przedmiotowej przestrzeni nazw 3|numer jednostki=2}} </syntaxhighlight> Na podstawie powyższego przykładu otrzymamy wynik o schemacie, nie wyniku, bo tam nie ma zmiennej {{Code|nazwa przestrzeni nazw 1}}, ale jest {{Code|nazwa przestrzeni nazw i}}: <syntaxhighlight lang="mediawiki"> <!-- nazwa przestrzeni nazw=""; --> <!-- Czyli wynik: --> <!-- wynik pusty --> <!-- Widzimy, że wygenerowała się nazwa przestrzeni nazw, którą jest przestrzeń nazw główna, jest ciągiem pustym: ""; --> ---- <!-- Ale nie "nazwa przestrzeni nazw 2", bo jej nie ma, ale za to istnieje "nazwa przestrzeni nazw i"; --> <!-- nazwa przestrzeni nazw 2=nazwa przestrzeni nazw i="", a nazwa jednostki 2="Dyskusja Wikibooks:Strona"; --> <!-- Czyli wynik: --> Wikibooks <!-- Widzimy, że wygenerowała się nazwa przestrzeni nazw, którą jest przestrzeń nieprogramowa, ale projektu, wychodząca z nazwy jednostek w tym przypadku z "nazwa jednostki 2"; --> </syntaxhighlight> Dla parametrów numerkowych nie jest brana w tym powyższym przykładzie zmienna {{Code|nazwa przestrzeni nazw 2}}, bo jej nie ma, ale za to jest {{Code|nazwa przestrzeni nazw i}}, bo ona występuje jako parametr domyślny ogólny dla parametrów numerkowych. Tytaj jest używana jest zmienna {{Code|nazwa jednostki 2}} do wygenerowania ostatecznego wyniku, bo jak można zauważyć, parametry przestrzenne wskazują na przestrzeń główną, a nazwy jednostek już nie. Dla parametrów bazowych mamy zmienną {{Code|nazwa przestrzeni nazw}}, ona jest pusta, więc to zostanie wziete do ostatecznego wyniku. Przykłady w wikikodzie: * {{Code|{{m|Pudełko|Nazwa przestrzeni nazw 3|nazwa przestrzeni nazw{{=}}|nazwa jednostki{{=}}Dyskusja Wikibooks:Strona}}}} → {{Tt|{{#invoke:Pudełko|Nazwa przestrzeni nazw 3|nazwa przestrzeni nazw=|nazwa jednostki=Dyskusja Wikibooks:Szablon}}}} * {{Code|{{m|Pudełko|Nazwa przestrzeni nazw 3|nazwa przestrzeni nazw 2{{=}}|nazwa jednostki 2{{=}}Dyskusja Wikibooks:Strona|numer jednostki{{=}}2}}}} → {{Tt|{{#invoke:Pudełko|Nazwa przestrzeni nazw 3|nazwa przestrzeni nazw 2=|nazwa jednostki 2=Dyskusja Wikibooks:Szablon|numer jednostki=2}}}} Powyżej dla przykładu podano parametry nie w rodzicu w szablonie, tylko w dziecku, jeśli chodzi o parametry nazw przestrzeni nazw, ale ich się za to nie powinno podawać w tych ramach, tylko w szablonach, w których wywoływane są te ramki pudełek {{Code|{{m|Pudełko}}}}, ale tak tutaj tak zrobiono by było najłatwiej sprawdzić działanie tego typu funkcji. Analogicznie możemy podawać parametry typu jednostki, np.: wywołaniu modułowym {{Code|{{m|Pudełko|Nazwa przedmiotowej przestrzeni nazw 3|typ jednostki 2{{=}}strona szablonu|numer jednostki{{=}}2}}}}, ale o tym więcej w rozdziałach {{Code|{{sr|# p["Przedmiotowy typ jednostki 3"](frame,i)|p=Pudełko}}}} w „{{sr|#Funkcje typu jednostki|p=Pudełko}}”, ale wtedy ta sama nazwa przestrzeni nazw reprezentowana przez {{Parametr|typ jednostki 2|strona szablonu}}, jest zamieniana na to samo, lepiej jest tutaj używać parametrów przestrzennych nazw niż typu jednostki, bo typ jednostki ma taką samą wartość dla przestrzeni przedmiotowej, co dyskusji. Tutaj parametr dyskusji typu jednostki bazowy i numerkowy ogólny, czy szczegółowy, nie gra roli, bo nawet, gdy wygenerujemy nazwę przestrzeni dyskusji za pomoca tego parametru, to i tak otrzymamy na samym końcu jego nazwę przedmiotową. Jeżeli typ jednostki bazowy wskazuje na przestrzeń nazw główną, wtedy się nie liczą parametry nazw jednostek, a na numerkowy, wtedy się liczy. Również parametry typu jednostki nie powinno się podawać w dziecku w ramce, tylko w rodzicu w szablonie jako parametry, w którym ta ramka jest wywoływana, ale tutaj podano jedynie dla przykładu, jak najłatwiej sprawdzić działanie tych parametrów tej funkcji. Najpierw w funkcji nagłówku brane są parametry nazw przestrzeni nazw, a jeżeli ich nie ma, to parametry typu jednostki, a jeżeli nie ma, to generowane są nazwy na podstawie aktualnego modułu. === {{Code|p["Nazwa przestrzeni nazw dyskusji 3"](frame,i)}} === Funkcja pisze nazwę przestrzeni nazw dyskusji jakikolwiek nazwy przestrzeni nazw (tzn. nazwę dyskusji nazwy przestrzenie nazw, czyli nie przedmiotowej, zamieniana jest na nią samą, czyli identyfikator przestrzeni się nie zmienia, a przedmiotową, nie dyskusji, przekształca się na dyskusji jej odpowiadającą, czyli w tym przypadku identyfikator przestrzeni zwiększa się o numer więcej), według, i nie zawsze tylko, podanej w zmiennej {{Code|nazwa przestrzeni nazw}} dla pozycja bazowej w podanych parametrach szablonu rodzicu ramki dziecka, lub dla innej pozycji należy parametr podawać w formie {{Code|nazwa przestrzeni nazw 1}}, {{Code|nazwa przestrzeni nazw 2}}, {{Code|nazwa przestrzeni nazw 3}},..., lub te parametry można podać w postaci ogólnej {{Code|nazwa przestrzeni nazw i}}. W tej funkcji trzeba też podawać parametry nazwy jednostek {{Code|nazwa jednostki}}, {{Code|nazwa jednostki 1}}, {{Code|nazwa jednostki 2}}, {{Code|nazwa jednostki 3}},... Parametry podaje się w parametrach rodzica wywołania tej funkcji {{Code|{{m|Pudełko|Nazwa przestrzeni nazw dyskusji 3}}}} (ale ich nie trzeba podawać w dziecku, ale można) i w parametrach dziecka, jeśli chodzi o zmienną {{Code|numer jednostki}}, czyli np.: {{Code|{{m|Pudełko|Nazwa przestrzeni nazw dyskusji 3|numer jednostki{{=}}<jakaś liczba całkowita dodatnia>}}}}. Te parametry przestrzenne zamiast w rodzicu w szablonie można podać w ramce dziecka, wtedy parametry dziecka mają pierwszeństwo. Przestrzeń nazw z parametrów nazw przestrzennych bazowych (bez numerka) może odpowiadać wartości przestrzeni głównej, to wtedy odpowiednia przestrzeń nazw z parametru nazwy jednostki się nie liczy w tej funkcji, aby się liczyła należy użyć funkcji {{Code|{{sr|#p["Nazwa przestrzeni nazw dyskusji"](frame,...)|p=Pudełko}}}}. Przestrzeń nazw z parametrów nazw przestrzennych numerkowych może odpowiadać wartości przestrzeni głównej, to wtedy odpowiednia przestrzeń nazw z parametru nazwy jednostki się liczy w tej funkcji, wtedy jest liczona nazwa przestrzeni nazw z tego parametru. Gdy parametry przestrzenne lub typ jednostki w drugim podejściu nie wskazują na przestrzeń główną, to wtedy działanie tej funkcji jest podobne do {{Code|{{sr|#p["Nazwa przestrzeni nazw dyskusji 2"](frame,...)|p=Pudełko}}}}. Definicja skrótowa funkcji: <syntaxhighlight lang="lua"> p["Nazwa przestrzeni nazw dyskusji 3"]=function(frame,czy_uwzglednic_alternatywna_nazwe,i)...end; </syntaxhighlight> Wtedy ciało funkcji tej, czyli jego definicja w środku, jest: <syntaxhighlight lang="lua"> -- Jest liczony numer parametru nazwy przestrzeni nazw, domyslnie chodzi tu o numer bazowy parametrów przestrzennych; local numer_jednostki=i or frame.args["numer jednostki"]; local liczba_numeru_jednostki=((numer_jednostki)and(tonumber(numer_jednostki)) or 0); local pudelko_pomocne_modul=require("Module:Pudełko/Pomocne"); -- Liczy nazwę przestrzeni nazw dyskusji na podstawie podanych parametrów; return pudelko_pomocne_modul.Uzyskanie_nazw_jednostki(frame,2,liczba_numeru_jednostki,nil,1); </syntaxhighlight> Parametry funkcji: * {{Code|frame}} - tablica ramki tablicy transportu, * {{Code|czy_uwzglednic_alternatywna_nazwe}} - czy ma uwzględniać nazwę przestrzeni nazw domyślną szablonu, dostępne wartości: {{Code|false}}, w której nazwa domyślna nie jest uwzględniana wtedy, oraz {{Code|nil}} i {{Code|true}}, które oznaczają to samo, w tym jeżeli ona jest uwzględniana, wtedy jest brany parametr pierwszy dziecka, który musi istnieć przy takiej wartości tego parametru, tzn. {{Code|{{m|Pudełko|Nazwa przestrzeni nazw dyskusji 3|Szablon}}}}, a nazwa uzyskana nazwy przestrzeni nazw jest w takim przypadku błędna, a jeżeli nazwa domyślna jest błędna, czyli {{Code|{{m|Pudełko|Nazwa przestrzeni nazw dyskusji 3|Moja przestrzeń}}}}, wtedy funkcja zwraca stan błędu {{Code|(błąd)}}. * {{Code|i}} - numer zmiennej nazwy przestrzeni nazw. Funkcja wykorzystuje {{Code|{{sr|#p.Uzyskanie_nazw_jednostki(frame,...)|p=Pudełko/Pomocne}}}} do wyznaczania ogólnego nazwy przestrzeni nazw dla pozycji bazowej i numerkowej, tzn. dla pozycji: jeden, dwa, trzy,..., itd, i ich ogólnej. Parametr ramki tablicy transportu rodzica szablonu: * {{Code|nazwa przestrzeni nazw}}, {{Code|nazwa przestrzeni nazw 1}}, {{Code|nazwa przestrzeni nazw 2}}, {{Code|nazwa przestrzeni nazw 3}},..., {{Code|nazwa przestrzeni nazw i}} - nazwy przestrzeni nazw dla pozycji bazowej oraz zwykłej i ogólnej numerkowej, * {{Code|nazwa jednostki}}, {{Code|nazwa jednostki 1}}, {{Code|nazwa jednostki 2}}, {{Code|nazwa jednostki 3}},... - nazwy jednostek dla pozycji bazowej i numerkowej, * {{Code|typ jednostki}}, {{Code|typ jednostki 1}}, {{Code|typ jednostki 2}}, {{Code|typ jednostki 3}},..., {{Code|typ jednostki i}} - typy jednostek, którym odpowiadają pewne przestrzenie przedmiotowe, dla pozycji bazowej, numerkowej i ogólnej. Parametry ramki tablicy transportu dziecka: * Parametry dziecka są takie same jak rodzica dla funkcji pudełkowej plus tu wymienione, * {{Code|numer jednostki}} - jak parametr {{Code|i}} nie został ustawiony, to wtedy liczy się ta zmienna. Przykłady: <syntaxhighlight lang="mediawiki"> {{Nazwa szablonu 1|nazwa przestrzeni nazw=Wikibooks|nazwa przestrzeni nazw=|nazwa przestrzeni nazw i=|nazwa jednostki=Szablon:Strona}} ---- {{Nazwa szablonu 2|nazwa przestrzeni nazw=Wikibooks|nazwa przestrzeni nazw 1=Szablon|nazwa przestrzeni nazw i=|nazwa jednostki 2=Wikibooks:Strona}} </syntaxhighlight> W pierwszym wywołaniu {{Code|nazwa przestrzeni nazw}} jest puste, ale dla tego bazowego (bez numerka) szukamy przestrzeni nazw, a więc ta nazwa jest ostateczna. ---- W drugim wywołaniu w dziecku powiedzmy jest wywołanie, i szukamy nazwy przestrzeni nazw o numerze dwa, która została podana, ale istnieje za to jej wersji ogólna {{Code|nazwa przestrzeni nazw i}} i domyślna {{Code|nazwa przestrzeni nazw}}, ale wtedy dla tego numerkowego liczy się to ogólne z {{Code| i}}, a ponieważ ta nazwa jest pusta, więc będziemy liczyli nazwę przestrzeni nazw z {{Code|nazwa jednostki 2}}. Odpowiadająca powyższemu kodowi, powiedzmy wikikod, według ich zawartości, przedstawia się: <syntaxhighlight lang="mediawiki"> {{#invoke:Pudełko|Nazwa przestrzeni nazw 3}} ---- {{#invoke:Pudełko|Nazwa przestrzeni nazw 3|numer jednostki=2}} </syntaxhighlight> Na podstawie powyższego przykładu otrzymamy wynik o schemacie, nie wyniku, bo tam nie ma zmiennej {{Code|nazwa przestrzeni nazw 1}}, ale jest {{Code|nazwa przestrzeni nazw i}}: <syntaxhighlight lang="mediawiki"> <!-- nazwa przestrzeni nazw=""; --> <!-- Czyli wynik: --> Dyskusja <!-- Widzimy, że wygenerowała się nazwa przestrzeni nazw, którą jest przestrzeń nazw niegłówna, jest ciągiem niepustym; --> ---- <!-- Ale nie "nazwa przestrzeni nazw 2", bo jej nie ma, ale za to istnieje "nazwa przestrzeni nazw i"; --> <!-- nazwa przestrzeni nazw 2=nazwa przestrzeni nazw i="", a nazwa jednostki 2="Wikibooks:Strona"; --> <!-- Czyli wynik: --> Dyskusja Wikibooks <!-- Widzimy, że wygenerowała się nazwa przestrzeni nazw, którą jest przestrzeń nieprogramowa, ale projektu, wychodząca z nazwy jednostek w tym przypadku z "nazwa jednostki 2"; --> </syntaxhighlight> Dla parametrów numerkowych nie jest brana w tym powyższym przykładzie zmienna {{Code|nazwa przestrzeni nazw 2}}, bo jej nie ma, ale za to jest {{Code|nazwa przestrzeni nazw i}}, bo ona występuje jako parametr domyślny ogólny dla parametrów numerkowych. Tytaj jest używana jest zmienna {{Code|nazwa jednostki 2}} do wygenerowania ostatecznego wyniku, bo jak można zauważyć, parametry przestrzenne wskazują na przestrzeń główną, a nazwy jednostek już nie. Dla parametrów bazowych mamy zmienną {{Code|nazwa przestrzeni nazw}}, ona jest pusta, więc to zostanie wziete do ostatecznego wyniku. Przykłady w wikikodzie: * {{Code|{{m|Pudełko|Nazwa przestrzeni nazw dyskusji 3|nazwa przestrzeni nazw{{=}}|nazwa jednostki{{=}}Wikibooks:Strona}}}} → {{Tt|{{#invoke:Pudełko|Nazwa przestrzeni nazw dyskusji 3|nazwa przestrzeni nazw=|nazwa jednostki=Wikibooks:Szablon}}}} * {{Code|{{m|Pudełko|Nazwa przestrzeni nazw dyskusji 3|nazwa przestrzeni nazw 2{{=}}|nazwa jednostki 2{{=}}Wikibooks:Strona|numer jednostki{{=}}2}}}} → {{Tt|{{#invoke:Pudełko|Nazwa przestrzeni nazw dyskusji 3|nazwa przestrzeni nazw 2=|nazwa jednostki 2=Wikibooks:Szablon|numer jednostki=2}}}} Powyżej dla przykładu podano parametry nie w rodzicu w szablonie, tylko w dziecku, jeśli chodzi o parametry nazw przestrzeni nazw i nazw jednostek, ale ich się za to nie powinno podawać w tych ramach, tylko w szablonach, w których wywoływane są te ramki pudełek {{Code|{{m|Pudełko}}}}, ale tak tutaj tak zrobiono by było najłatwiej sprawdzić działanie tego typu funkcji. Analogicznie możemy podawać parametry typu jednostki, np.: wywołaniu modułowym {{Code|{{m|Pudełko|Nazwa przestrzeni nazw dyskusji 3|typ jednostki 2{{=}}Podręcznik|nazwa jednostki 2{{=}}Szablon:Strona|numer jednostki{{=}}2}}}} (ale wtedy jest brana przestrzeń nazw z nazwy jednostki), ale o tym więcej w rozdziałach {{Code|{{sr|# p["Dyskusyjny typ jednostki 3"](frame,i)|p=Pudełko}}}} w „{{sr|#Funkcje typu jednostki|p=Pudełko}}”, one definiują przestrzenie dyskusji, ale można użyć parametru dyskusji typu jednostki z obojętnie jaką wartością niepustą, czy pustą, czy nawet jej nie podamy, wtedy wyświetli się nazwa przestrzeni nazw dyskusji. Jeżeli typ jednostki bazowy wskazuje na przestrzeń nazw główną, wtedy się nie liczą parametry nazw jednostek, a na numerkowy, wtedy się liczy. Również parametry typu jednostki nie powinno się podawać w dziecku w ramce, tylko w rodzicu w szablonie jako parametry, w którym ta ramka jest wywoływana, ale tutaj podano jedynie dla przykładu, jak najłatwiej sprawdzić działanie tych parametrów tej funkcji. Najpierw w funkcji nagłówku brane są parametry nazw przestrzeni nazw, a jeżeli ich nie ma, to parametry typu jednostki, a jeżeli nie ma lub parametry przestrzenne wskazują na przestrzeń główną, i nie ma nazwy jednostki, to generowane są nazwy tej funkcji na podstawie aktualnej strony. == Funkcje nazw jednostki trzeciej wersji == === {{Code|p["Nazwa jednostki 3"](frame,i)}} === === {{Code|p["Nazwa przedmiotowa jednostki 3"](frame,i)}} === === {{Code|p["Nazwa dyskusji jednostki 3"](frame,i)}} === == Funkcje typu jednostki == === {{Code|p["Typ jednostki"](frame,i)}} === === {{Code|p["Typ jednostki 2"](frame,i)}} === === {{Code|p["Typ jednostki 3"](frame,i)}} === === Funkcje typu jednostki przedmiotowe === ==== {{Code|p["Przedmiotowy typ jednostki"](frame,i)}} ==== ==== {{Code|p["Przedmiotowy typ jednostki 2"](frame,i)}} ==== ==== {{Code|p["Przedmiotowy typ jednostki 3"](frame,i)}} ==== === Fukcje typu jednostki dyskusji === ==== {{Code|p["Dyskusyjny typ jednostki"](frame,i)}} ==== ==== {{Code|p["Dyskusyjny typ jednostki 2"](frame,i)}} ==== ==== {{Code|p["Dyskusyjny typ jednostki 3"](frame,i)}} ==== == Funkcje chech pudełka == === {{Code|p["Cecha pudełka"](frame)}} === === {{Code|p["Przedmiotowa cecha pudełka"](frame)}} === === {{Code|p["Dyskusyjna cecha pudełka"](frame)}} === == Fukcje ogólnego pudełka == === {{Code|p["Ogólne pudełko"](frame)}} === == Funkcje ogólne == === {{Code|p["Tekst pudełka"](frame)}} === == Funkcje błędów pudełka == === {{Code|p["Błędy pudełka"](frame)}} === === {{Code|p["Przedmiotowe błędy pudełka"](frame)}} === === {{Code|p["Dyskusyjne błędy pudełka"](frame)}} === == Funkcje nazw stron == === {{Code|p["Nazwa strony głównej projektu"](frame,i)}} === === {{Code|p["Nazwa strony głównej dla dzieci projektu"](frame,i)}} === == Funkcje kodów == === {{Code|p["Kod języka"](frame,i)}} === === {{Code|p["Kod projektu"](frame,i)}} === === {{Code|p["Klucz projektu"](frame,i)}} === == Funkcje wiki == === {{Code|p["Inny niż język bieżący wiki"](frame)}} === === {{Code|p["Inne niż lokalne wiki"](frame)}} === === {{Code|p["Inne niż bieżące wiki"](frame)}} === == Funkcje typów parametrów, czy podane je == === {{Code|p["Podano parametry nienazwane"](frame)}} === === {{Code|p["Podano parametry numerowane"](frame)}} === === {{Code|p["Podano parametry nazwane"](frame)}} === == Funkcje kodów tego projektu == === {{Code|p["Kod projektu tego projektu"](frame)}} === === {{Code|p["Kod języka tego projektu"](frame)}} === === {{Code|p["Klucz projektu tego projektu"](frame)}} === == Funkcje stron == === {{Code|p["Strona główna tego projektu"](frame)}} === === {{Code|p["Strona główna dla dzieci tego projektu"](frame)}} === == Funkcje nazw stron drugiej wersji == === {{Code|p["Nazwa strony głównej dla dzieci projektu 2"](frame)}} === === {{Code| p["Nazwa strony głównej projektu 2"](frame)}} === {{BrClear}} <noinclude><!-- -->{{ProstaStronaKoniec}}<!-- -->{{Kategoria|Opisy funkcji, w Lua w Scribunto, w modułach}}<!-- --></noinclude> ov1lxc7nae82o4epkxyy6m78kfeuctr 540446 540442 2026-04-24T03:17:45Z Persino 2851 /* {{Code|p["Nazwa przedmiotowej przestrzeni nazw 3"](frame,i)}} */ 540446 wikitext text/x-wiki <noinclude>{{ProstaStronaStart | nagłówek = {{Podrozdział|{{ld2|Pudełko}}|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 pudelko_modul=require("Module:Pudełko"); </syntaxhighlight> dzięki, któremu można wypisywać funkcje należącego do niego. Posługuje się na parametrach pudełkowych {{Parametr|nazwa przestrzeni nazw}} (czy też bez numerka {{Parametr|nazwa przestrzeni nazw i}} dla tego numerowanego) lub te z numerkiem po jednej spacji w nich (ale nie dla tego z końcówką {{Code| i}}) mogą zostać użyte jako parametry szablonu. Moduł {{Code|{{ld2|Pudełko}}}} przedstawia funkcje nazw w oparciu o funkcje nazw {{Code|{{ld2|Nazwy}}}}, generuje on nazwy za pomocą parametrów pudełkowych podanych poniżej. Parametr {{Parametr|nazwa jednostki}} (lub parametr {{Parametr|cel}} dla numerka tego pierwszego, tego alternatywnego), lub te z numerkiem po jednej spacji w nazwie parametru, albo numerowane numerkami {{Code|1}}, {{Code|2}},..., mogą zostać użyte jako parametry szablonu. Parametry określające rodzaj jednostki {{Parametr|typ jednostki}} z {{Parametr|dyskusja typu jednostki}}, itp. w wersjach z numerkiem po jednej spacji w nich mogą zostać użyte jako parametry szablonu. A te tymi numerowanymi liczbami naturalnymi {{Tt|nazwy jednostki}} od jedynki wzwyż poprzez szablon, w którym są one użyte, one też mogą być użyte z dwukropkiem, te numerowane, na samym początku nazwy, wtedy one są traktowane jako pełne nazwy strony, i wtedy one nie zostaną z interpretowane, że do nich trzeba użyć parametr odpowiedni z nazwą przetrzeni nazw z tego numerowanego, czy ogólny, aby utworzyć znów inną pełną nazwę strony dla tego numerka. Zestawienie: * {{Code|nazwa przestrzeni nazw}} i {{Code|nazwa przestrzeni nazw i}} (ogólna nazwa przestrzeni nazw dla wszystkich numerków, i tych numerowanych jednostek) - i to pierwsze z numerkiem, tzn. {{Code|nazwa przestrzeni nazw 1}}, {{Code|nazwa przestrzeni nazw 2}}, ..., * {{Code|nazwa jednostki}} - i te z numerkiem: {{Code|nazwa jednostki 1}}, {{Code|nazwa jednostki 2}}, ..., lub gdy jest zamiast tego parametrem numerowany, {{Code|1}}, {{Code|2}},..., który dla tego pierwszego może być uznany jako: {{Code|cel}} {{=}} {{Code|1}}, * {{Code|typ jednostki}} (parametr bazowy) i {{Code|typ jednostki i}} (parametr domyślny numerkowy) - i te z numerkiem: {{Code|typ jednostki 1}}, {{Code|typ jednostki 2}}, ..., tzn. gdy chcemy określić z jakim typem jednostki mamy do czynienia w zależności do jakiej przestrzeni nazw należy, a w danej, czy jest on np. programowy, czy tylko jest opisem, jak to bywa w szablonach {{Np|Template|link=tak}}, podobnie jest w przypadku {{Np|Module|link=tak}}, czy jak jest w innych przestrzeniach nazw, ** {{Code|dyskusja typu jednostki}} (parametr bazowy) i {{Code|dyskusja typu jednostki i}} (parametr domyślny numerkowy) - i te z numerkiem: {{Code|dyskusja typu jednostki 1}}, {{Code|dyskusja typu jednostki 2}}, ..., gdy chcemy określić wartością niepustą,że chodzi tutaj o typ jednostki. == {{Code|p.CzyNiepoprawnaNazwa(nazwa_jednostki)}} == Funkcja sprawdzajaca, czy jest poprawnie podana nazwa jednostki, czy ma poprawną nazwę. Znakami tymi, z których nie powinna składać się nazwa jest {{Code|<nowiki>{}<>|[]#\n</nowiki>}} i dodatkowo znak {{Code|&#127;}} (kod {{Code|{{Nowiki|&#127;}}}}). Też nie może składać się z trzech znaków tyldy, tzn. {{Code|<nowiki>~~~</nowiki>}}. Również w swojej budowie nie może składać się ze kodów {{Strong|HTML}} literowych o wzorze {{Code|{{Nowiki|&(%a+);}}}}. Natomiast może składać się z {{Code|{{Nowiki|&#(%d+);}}}} i {{Code|{{Nowiki|&#x(%x+);}}}}, ale w pierw te kody muszą być zamienione na normalne znaki. Skrótowa definicja funkcji: <syntaxhighlight lang="lua"> function p.CzyNiepoprawnaNazwa(nazwa_jednostki)...end; </syntaxhighlight> Wtedy ciało funkcji tej, czyli jego definicja w środku, jest: <syntaxhighlight lang="lua"> -- Moduł: "Moduł:Html/dane", służy do ładowania znaku o kodzie HTML "&#127;"; local html_dane_modul=mw.loadData("Module:Html/dane"); return mw.ustring.match(nazwa_jednostki,"[{}<>|%[%]#\n"..html_dane_modul.znak_127.."]+") or mw.ustring.match(nazwa_jednostki,"~~~") or mw.ustring.match(nazwa_jednostki,"&(%a+);"); </syntaxhighlight> Parametry: * {{Code|nazwa_jednostki}} - nazwa jednostki do sprawdzenia. Przykłady: <syntaxhighlight lang="lua"> local pudelko_modul=require("Module:Pudełko"); -- Podana przykładowa niepoprawna nazwa jedostki local nazwa_jednostki="Nazwa pliku [[Nazwa linku w pliku]]"; -- Fukcja zwróci wartość: local czy_poprawna_nazwa=true; local czy_poprawna_nazwa=pudelko_modul.CzyNiepoprawnaNazwa(nazwa_jednostki); </syntaxhighlight> == Funkcje nazw przestrzeni nazw == === {{Code|p["Nazwa przestrzeni nazw"](frame,...)}} === Funkcja pisze nazwę przestrzeni nazw, niezależnie, czy to jest przedmiotowa, czy dyskusji, według podanej w zmiennej {{Code|nazwa przestrzeni nazw}} dla pozycja bazowej w podanych parametrach szablonu rodzicu ramki dziecka, lub dla innej pozycji należy parametr podawać w formie {{Code|nazwa przestrzeni nazw 1}}, {{Code|nazwa przestrzeni nazw 2}}, {{Code|nazwa przestrzeni nazw 3}},..., lub te parametry można podać w postaci ogólnej {{Code|nazwa przestrzeni nazw i}}. Parametry podaje się w parametrach rodzica wywołania tej funkcji {{Code|{{m|Pudełko|Nazwa przestrzeni nazw}}}} (ale ich nie trzeba podawać w dziecku, ale można) i w parametrach dziecka, jeśli chodzi o zmienną {{Code|numer jednostki}}, czyli np.: {{Code|{{m|Pudełko|Nazwa przestrzeni nazw|numer jednostki{{=}}<jakaś liczba całkowita dodatnia>}}}}. Te parametry przestrzenne zamiast w rodzicu w szablonie można podać w ramce dziecka, wtedy parametry dziecka mają pierwszeństwo. Przestrzeń nazw z parametrów nazw przestrzennych może odpowiadać wartości przestrzeni głównej, to wtedy odpowiednia przestrzeń nazw z parametru nazwy jednostki się nie liczy w tej funkcji, aby się liczyła należy użyć funkcji {{Code|{{sr|#p["Nazwa przestrzeni nazw 2"](frame,...)|p=Pudełko}}}}. Definicja skrótowa funkcji: <syntaxhighlight lang="lua"> p["Nazwa przestrzeni nazw"]=function(frame,czy_uwzglednic_alternatywna_nazwe,i)...end; </syntaxhighlight> Wtedy ciało funkcji tej, czyli jego definicja w środku, jest: <syntaxhighlight lang="lua"> -- Jest liczony numer parametru nazwy przestrzeni nazw, domyslnie chodzi tu o numer bazowy parametrów przestrzennych; local numer_jednostki=i or frame.args["numer jednostki"]; local liczba_numer_jednostki=((numer_jednostki)and(tonumber(numer_jednostki))or 0); local pudelko_pomocne_modul=require("Module:Pudełko/Pomocne"); -- Liczy nazwę przestrzeni nazw na podstawie podanych parametrów; return pudelko_pomocne_modul.Nazwa_przestrzeni_nazw(frame,0, czy_uwzglednic_alternatywna_nazwe,liczba_numer_jednostki); </syntaxhighlight> Parametry funkcji: * {{Code|frame}} - tablica ramki tablicy transportu, * {{Code|czy_uwzglednic_alternatywna_nazwe}} - czy ma uwzględniać nazwę przestrzeni nazw domyślną szablonu, dostępne wartości: {{Code|false}}, w której nazwa domyślna nie jest uwzględniana wtedy, oraz {{Code|nil}} i {{Code|true}}, które oznaczają to samo, w tym jeżeli ona jest uwzględniana, wtedy jest brany parametr pierwszy dziecka, który musi istnieć przy takiej wartości tego parametru, tzn. {{Code|{{m|Pudełko|Nazwa przestrzeni nazw|Szablon}}}}, a nazwa uzyskana nazwy przestrzeni nazw jest w takim przypadku błędna, a jeżeli nazwa domyślna jest błędna, czyli {{Code|{{m|Pudełko|Nazwa przestrzeni nazw|Moja przestrzeń}}}}, wtedy funkcja zwraca stan błędu {{Code|(błąd)}}. * {{Code|i}} - numer zmiennej nazwy przestrzeni nazw. Funkcja wykorzystuje {{Code|{{sr|#p.Nazwa_przestrzeni_nazw(frame,...)|p=Pudełko/Pomocne}}}} do wyznaczania ogólnego nazwy przestrzeni nazw dla pozycji bazowej i numerkowej, tzn. dla pozycji: jeden, dwa, trzy,..., itd, i ich ogólnej. Parametr ramki tablicy transportu rodzica szablonu: * {{Code|nazwa przestrzeni nazw}}, {{Code|nazwa przestrzeni nazw 1}}, {{Code|nazwa przestrzeni nazw 2}}, {{Code|nazwa przestrzeni nazw 3}},..., {{Code|nazwa przestrzeni nazw i}} - nazwy przestrzeni nazw dla pozycji bazowej oraz zwykłej i ogólnej numerkowej, * {{Code|typ jednostki}}, {{Code|typ jednostki 1}}, {{Code|typ jednostki 2}}, {{Code|typ jednostki 3}},..., {{Code|typ jednostki i}} - typy jednostek, którym odpowiadają pewne przestrzenie przedmiotowe, dla pozycji bazowej, numerkowej i ogólnej, ** {{Code|dyskusja typu jednostki}}, {{Code|dyskusja typu jednostki 1}}, {{Code|dyskusja typ jednostki 2}}, {{Code|dyskusja typ jednostki 3}},..., {{Code|dyskusja typ jednostki i}} - czy dany typ jednostki ma przedstawiać, jeśli niepusta, przestrzeń dyskusji dla pozycji bazowej, numerkowej i ogólnej. Parametry ramki tablicy transportu dziecka: * Parametry dziecka są takie same jak rodzica dla funkcji pudełkowej plus tu wymienione, * {{Code|numer jednostki}} - jak parametr {{Code|i}} nie został ustawiony, to wtedy liczy się ta zmienna. Przykłady: <syntaxhighlight lang="mediawiki"> {{Nazwa szablonu|nazwa przestrzeni nazw=Wikibooks|nazwa przestrzeni nazw 2=Szablon|nazwa przestrzeni nazw i=Moduł}} </syntaxhighlight> W dziecku powiedzmy jest wywołanie, i szukamy nazwy przestrzeni nazw o numerze dwa, która nie została podana, ale istnieje za to jej wersji ogólna {{Code|nazwa przestrzeni nazw i}} i domyślna {{Code|nazwa przestrzeni nazw}}: <syntaxhighlight lang="mediawiki"> {{#invoke:Pudełko|Nazwa przestrzeni nazw|numer jednostki=1}} </syntaxhighlight> Na podstawie powyższego przykładu otrzymamy wynik o schemacie, nie wyniku, bo tam nie ma zmiennej {{Code|nazwa przestrzeni nazw 1}}, ale jest {{Code|nazwa przestrzeni nazw i}}: <syntaxhighlight lang="mediawiki"> <!-- Ale nie "nazwa przestrzeni nazw", bo jej nie ma, ale za to istnieje "nazwa przestrzeni nazw i"; --> <!-- nazwa przestrzeni nazw 2=nazwa przestrzeni nazw i=Moduł; --> <!-- Czyli wynik: --> Moduł <!-- Widzimy, że wygenerowała się nazwa przestrzeni nazw, którą jest przestrzeń programowa, którą również jest "Szablon"; --> </syntaxhighlight> Nie jest brana w tym powyższym przykładzie zmienna {{Code|nazwa przestrzeni nazw}}, bo jej nie ma, ale za to jest {{Code|nazwa przestrzeni nazw i}}, bo ona występuje jako parametr domyślny ogólny dla parametrów numerkowych. Przykłady w wikikodzie: * {{Code|{{m|Pudełko|Nazwa przestrzeni nazw|numer jednostki{{=}}2}}}} → {{Tt|{{#invoke:Pudełko|Nazwa przestrzeni nazw|numer jednostki=2}}}} * {{Code|{{m|Pudełko|Nazwa przestrzeni nazw|Szablon|nazwa przestrzeni nazw i{{=}}Moja przestrzeń|numer jednostki{{=}}2}}}} → {{Tt|{{#invoke:Pudełko|Nazwa przestrzeni nazw|Szablon|nazwa przestrzeni nazw i=Moja przestrzeń|numer jednostki=2}}}} * {{Code|{{m|Pudełko|Nazwa przestrzeni nazw|nazwa przestrzeni nazw 2{{=}}Szablon|numer jednostki{{=}}2}}}} → {{Tt|{{#invoke:Pudełko|Nazwa przestrzeni nazw|nazwa przestrzeni nazw 2=Szablon|numer jednostki=2}}}} * {{Code|{{m|Pudełko|Nazwa przestrzeni nazw|nazwa przestrzeni nazw 2{{=}}Szablon|numer jednostki{{=}}2}}}} → {{Tt|{{#invoke:Pudełko|Nazwa przestrzeni nazw|nazwa przestrzeni nazw i=Szablon|numer jednostki=2}}}} * {{Code|{{m|Pudełko|Nazwa przestrzeni nazw|nazwa przestrzeni nazw{{=}}Szablon|numer jednostki{{=}}2}}}} → {{Tt|{{#invoke:Pudełko|Nazwa przestrzeni nazw|nazwa przestrzeni nazw=Szablon|numer jednostki=2}}}} Powyżej dla przykładu podano parametry nie w rodzicu w szablonie, tylko w dziecku, jeśli chodzi o parametry nazw przestrzeni nazw, ale ich się za to nie powinno podawać w tych ramach, tylko w szablonach, w których wywoływane są te ramki pudełek {{Code|{{m|Pudełko}}}}, ale tak tutaj tak zrobiono by było najłatwiej sprawdzić działanie tego typu funkcji. Analogicznie możemy podawać parametry typu jednostki, np.: wywołaniu modułowym {{Code|{{m|Pudełko|Nazwa przestrzeni nazw|typ jednostki 2{{=}}strona szablonu|numer jednostki{{=}}2}}}}, ale o tym więcej w rozdziałach {{Code|{{sr|# p["Typ jednostki"](frame,i)|p=Pudełko}}}} w „{{sr|#Funkcje typu jednostki|p=Pudełko}}”, on definiuje przestrzenie przedmiotowe, ale można użyć parametru dyskusji typu jednostki z wartością niepustą, wtedy wyświetli się nazwa przestrzeni nazw dyskusji. Również parametry typu jednostki nie powinno się podawać w dziecku w ramce, tylko w rodzicu w szablonie jako parametry, w którym ta ramka jest wywoływana, ale tutaj podano jedynie dla przykładu, jak najłatwiej sprawdzić działanie tych parametrów tej funkcji. Najpierw w funkcji nagłówku brane są parametry nazw przestrzeni nazw, a jeżeli ich nie ma, to parametry typu jednostki, a jeżeli nie ma, to generowane są nazwy na podstawie aktualnego modułu. === {{Code|p["Nazwa przedmiotowej przestrzeni nazw"](frame,...)}} === Funkcja pisze przedmiotową nazwę przestrzeni nazw jakikolwiek nazwy przestrzeni nazw (tzn. nazwę przedmiotową nazwy przestrzenie nazw, czyli nie dyskusji, zamieniana jest na nią samą, czyli identyfikator przestrzeni się nie zmienia, a dyskusji, nie przedmiotową, przekształca się na przedmiotową jej odpowiadającą, czyli w tym przypadku identyfikator przestrzeni zmniejsza się o numer mniej), według podanej w zmiennej {{Code|nazwa przestrzeni nazw}} dla pozycja bazowej w podanych parametrach szablonu rodzicu ramki dziecka, lub dla innej pozycji należy parametr podawać w formie {{Code|nazwa przestrzeni nazw 1}}, {{Code|nazwa przestrzeni nazw 2}}, {{Code|nazwa przestrzeni nazw 3}},..., lub te parametry można podać w postaci ogólnej {{Code|nazwa przestrzeni nazw i}}. Parametry podaje się w parametrach rodzica wywołania tej funkcji {{Code|{{m|Pudełko|Nazwa przedmiotowej przestrzeni nazw}}}} (ale ich nie trzeba podawać w dziecku, ale można) i w parametrach dziecka, jeśli chodzi o zmienną {{Code|numer jednostki}}, czyli np.: {{Code|{{m|Pudełko|Nazwa przedmiotowej przestrzeni nazw|numer jednostki{{=}}<jakaś liczba całkowita dodatnia>}}}}. Te parametry przestrzenne zamiast w rodzicu w szablonie można podać w ramce dziecka, wtedy parametry dziecka mają pierwszeństwo. Parametry przestrzenne mogą mogą być podane w postaci przestrzeni przedmiotowej lub dyskusji, ale ta funkcja zawsze ją zamienia na przedmiotową. Przestrzeń nazw z parametrów nazw przestrzennych może odpowiadać wartości przestrzeni głównej, to wtedy odpowiednia przestrzeń nazw z parametru nazwy jednostki się nie liczy w tej funkcji, aby się liczyła należy użyć funkcji {{Code|{{sr|#p["Nazwa przedmiotowej przestrzeni nazw 2"](frame,...)|p=Pudełko}}}}. Definicja skrótowa funkcji: <syntaxhighlight lang="lua"> p["Nazwa przedmiotowej przestrzeni nazw"]=function(frame,czy_uwzglednic_alternatywna_nazwe,i)...end; </syntaxhighlight> Wtedy ciało funkcji tej, czyli jego definicja w środku, jest: <syntaxhighlight lang="lua"> -- Jest liczony numer parametru nazwy przestrzeni nazw, domyslnie chodzi tu o numer bazowy parametrów przestrzennych; local numer_jednostki=i or frame.args["numer jednostki"]; local liczba_numer_jednostki=((numer_jednostki)and(tonumber(numer_jednostki))or 0); local pudelko_pomocne_modul=require("Module:Pudełko/Pomocne"); -- Liczy nazwę przestrzeni nazw przedmiotową na podstawie podanych parametrów; return pudelko_pomocne_modul.Nazwa_przestrzeni_nazw(frame,1, czy_uwzglednic_alternatywna_nazwe,liczba_numer_jednostki); </syntaxhighlight> Parametry funkcji: * {{Code|frame}} - tablica ramki tablicy transportu, * {{Code|czy_uwzglednic_alternatywna_nazwe}} - czy ma uwzględniać nazwę przestrzeni nazw domyślną szablonu, dostępne wartości: {{Code|false}}, w której nazwa domyślna nie jest uwzględniana wtedy, oraz {{Code|nil}} i {{Code|true}}, które oznaczają to samo, w tym jeżeli ona jest uwzględniana, wtedy jest brany parametr pierwszy dziecka, który musi istnieć przy takiej wartości tego parametru, tzn. {{Code|{{m|Pudełko|Nazwa przedmiotowej przestrzeni nazw|Dyskusja szablonu}}}} - ta nazwa domyślna zostanie zamieniona na przedmiotową, a jak ona by była przedmiotowa, to żadnej zamiany by nie było, a nazwa uzyskana z nazwy przestrzeni nazw z parametrów przestrzennych jest w takim przypadku błędna, to w takim razie brany jest ten parametr, a jeżeli ta nazwa domyślna jest błędna, czyli {{Code|{{m|Pudełko|Nazwa przedmiotowej przestrzeni nazw|Moja przestrzeń}}}}, wtedy funkcja zwraca stan błędu {{Code|(błąd)}}. * {{Code|i}} - numer zmiennej nazwy przestrzeni nazw. Funkcja wykorzystuje {{Code|{{sr|#p.Nazwa_przestrzeni_nazw(frame,...)|p=Pudełko/Pomocne}}}} do wyznaczania ogólnego nazwy przestrzeni nazw dla pozycji bazowej i numerkowej, tzn. dla pozycji: jeden, dwa, trzy,..., itd, i ich ogólnej. Parametr ramki tablicy transportu rodzica szablonu: * {{Code|nazwa przestrzeni nazw}}, {{Code|nazwa przestrzeni nazw 1}}, {{Code|nazwa przestrzeni nazw 2}}, {{Code|nazwa przestrzeni nazw 3}},..., {{Code|nazwa przestrzeni nazw i}} - nazwy przestrzeni nazw dla pozycji bazowej oraz zwykłej i ogólnej numerkowej, * {{Code|typ jednostki}}, {{Code|typ jednostki 1}}, {{Code|typ jednostki 2}}, {{Code|typ jednostki 3}},..., {{Code|typ jednostki i}} - typy jednostek, którym odpowiadają pewne przestrzenie przedmiotowe, dla pozycji bazowej, numerkowej i ogólnej. Parametry ramki tablicy transportu dziecka: * Parametry dziecka są takie same jak rodzica dla funkcji pudełkowej plus tu wymienione, * {{Code|numer jednostki}} - jak parametr {{Code|i}} nie został ustawiony, to wtedy liczy się ta zmienna. Przykłady: <syntaxhighlight lang="mediawiki"> {{Nazwa szablonu|nazwa przestrzeni nazw=Dyskusja Wikibooks|nazwa przestrzeni nazw 2=Dyskusja szablonu|nazwa przestrzeni nazw i=Dyskusja modułu}} </syntaxhighlight> W dziecku powiedzmy jest wywołanie, i szukamy nazwy przestrzeni nazw o numerze dwa, która nie została podana, ale istnieje za to jej wersji ogólna {{Code|nazwa przestrzeni nazw i}} i domyślna {{Code|nazwa przestrzeni nazw}}: <syntaxhighlight lang="mediawiki"> {{#invoke:Pudełko|Nazwa przedmiotowej przestrzeni nazw|numer jednostki=1}} </syntaxhighlight> Na podstawie powyższego przykładu otrzymamy wynik o schemacie, nie wyniku, bo tam nie ma zmiennej {{Code|nazwa przestrzeni nazw 1}}, ale jest {{Code|nazwa przestrzeni nazw i}}: <syntaxhighlight lang="mediawiki"> <!-- Ale nie "nazwa przestrzeni nazw", bo jej nie ma, ale za to istnieje "nazwa przestrzeni nazw i"; --> <!-- nazwa przestrzeni nazw 2=nazwa przestrzeni nazw i=Dyskusja modułu; --> <!-- Czyli wynik: --> Moduł <!-- Widzimy, że wygenerowała się nazwa przestrzeni nazw, którą jest przestrzeń przedmiotowa programowa przestrzeni dyskusji "Dyskusja modułu", którą również jest "Szablon" jego przestrzeni dyskusji "Dyskusja szablonu", a dla ich przestrzeni przedmiotowej, zamiast dyskusji, to samo przekształca się na to samo; --> </syntaxhighlight> Nie jest brana w tym powyższym przykładzie zmienna {{Code|nazwa przestrzeni nazw}}, bo jej nie ma, ale za to jest {{Code|nazwa przestrzeni nazw i}}, bo ona występuje jako parametr domyślny ogólny dla parametrów numerkowych. Przykłady w wikikodzie: * {{Code|{{m|Pudełko|Nazwa przedmiotowej przestrzeni nazw|numer jednostki{{=}}2}}}} → {{Tt|{{#invoke:Pudełko|Nazwa przedmiotowej przestrzeni nazw|numer jednostki=2}}}} * {{Code|{{m|Pudełko|Nazwa przedmiotowej przestrzeni nazw|Dyskusja szablonu|nazwa przestrzeni nazw i{{=}}Moja przestrzeń|numer jednostki{{=}}2}}}} → {{Tt|{{#invoke:Pudełko|Nazwa przedmiotowej przestrzeni nazw|Dyskusja szablonu|nazwa przestrzeni nazw i=Moja przestrzeń|numer jednostki=2}}}} * {{Code|{{m|Pudełko|Nazwa przedmiotowej przestrzeni nazw|nazwa przestrzeni nazw 2{{=}}Dyskusja szablonu|numer jednostki{{=}}2}}}} → {{Tt|{{#invoke:Pudełko|Nazwa przedmiotowej przestrzeni nazw|nazwa przestrzeni nazw 2=Dyskusja szablonu|numer jednostki=2}}}} * {{Code|{{m|Pudełko|Nazwa przedmiotowej przestrzeni nazw|nazwa przestrzeni nazw 2{{=}}Dyskusja szablonu|numer jednostki{{=}}2}}}} → {{Tt|{{#invoke:Pudełko|Nazwa przedmiotowej przestrzeni nazw|nazwa przestrzeni nazw i=Dyskusja szablonu|numer jednostki=2}}}} * {{Code|{{m|Pudełko|Nazwa przedmiotowej przestrzeni nazw|nazwa przestrzeni nazw{{=}}Dyskusja szablonu|numer jednostki{{=}}2}}}} → {{Tt|{{#invoke:Pudełko|Nazwa przedmiotowej przestrzeni nazw|nazwa przestrzeni nazw=Dyskusja szablonu|numer jednostki=2}}}} Powyżej dla przykładu podano parametry nie w rodzicu w szablonie, tylko w dziecku, jeśli chodzi o parametry nazw przestrzeni nazw, ale ich się za to nie powinno podawać w tych ramach, tylko w szablonach, w których wywoływane są te ramki pudełek {{Code|{{m|Pudełko}}}}, ale tak tutaj tak zrobiono by było najłatwiej sprawdzić działanie tego typu funkcji. Analogicznie możemy podawać parametry typu jednostki, np.: wywołaniu modułowym {{Code|{{m|Pudełko|Nazwa przedmiotowej przestrzeni nazw|typ jednostki 2{{=}}strona szablonu|numer jednostki{{=}}2}}}}, ale o tym więcej w rozdziałach {{Code|{{sr|# p["Przedmiotowy typ jednostki"](frame,i)|p=Pudełko}}}} w „{{sr|#Funkcje typu jednostki|p=Pudełko}}”, ale wtedy ta sama nazwa przestrzeni nazw reprezentowana przez {{Parametr|typ jednostki 2|strona szablonu}}, jest zamieniana na to samo, lepiej jest tutaj używać parametrów przestrzennych nazw niż typu jednostki, bo typ jednostki ma taką samą wartość dla przestrzeni przedmiotowej, co dyskusji. Tutaj parametr dyskusji typu jednostki bazowy i numerkowy ogólny, czy szczegółowy, nie gra roli, bo nawet, gdy wygenerujemy nazwę przestrzeni dyskusji za pomoca tego parametru, to i tak otrzymamy na samym końcu jego nazwę przedmiotową. Również parametry typu jednostki nie powinno się podawać w dziecku w ramce, tylko w rodzicu w szablonie jako parametry, w którym ta ramka jest wywoływana, ale tutaj podano jedynie dla przykładu, jak najłatwiej sprawdzić działanie tych parametrów tej funkcji. Najpierw w funkcji nagłówku brane są parametry nazw przestrzeni nazw, a jeżeli ich nie ma, to parametry typu jednostki, a jeżeli nie ma, to generowane są nazwy na podstawie aktualnego modułu. === {{Code|p["Nazwa przestrzeni nazw dyskusji"](frame,...)}} === Funkcja pisze nazwę przestrzeni nazw dyskusji jakikolwiek nazwy przestrzeni nazw (tzn. nazwę przedmiotową nazwy przestrzenie nazw, czyli nie dyskusji, zamieniana jest na dyskusji, czyli identyfikator przestrzeni się zmienia jeden wyżej, a dyskusji, nie przedmiotową, przekształca się na tą samą), według podanej w zmiennej {{Code|nazwa przestrzeni nazw}} dla pozycja bazowej w podanych parametrach szablonu rodzicu ramki dziecka, lub dla innej pozycji należy parametr podawać w formie {{Code|nazwa przestrzeni nazw 1}}, {{Code|nazwa przestrzeni nazw 2}}, {{Code|nazwa przestrzeni nazw 3}},..., lub te parametry można podać w postaci ogólnej {{Code|nazwa przestrzeni nazw i}}. Parametry podaje się w parametrach rodzica wywołania tej funkcji {{Code|{{m|Pudełko|Nazwa przestrzeni nazw dyskusji}}}} (ale ich nie trzeba podawać w dziecku, ale można) i w parametrach dziecka, jeśli chodzi o zmienną {{Code|numer jednostki}}, czyli np.: {{Code|{{m|Pudełko|Nazwa przestrzeni nazw dyskusji|numer jednostki{{=}}<jakaś liczba całkowita dodatnia>}}}}. Te parametry przestrzenne zamiast w rodzicu w szablonie można podać w ramce dziecka, wtedy parametry dziecka mają pierwszeństwo. Parametry przestrzenne mogą mogą być podane w postaci przestrzeni przedmiotowej lub dyskusji, ale ta funkcja zawsze ją zamienia na dyskusji. Przestrzeń nazw z parametrów nazw przestrzennych może odpowiadać wartości przestrzeni głównej, to wtedy odpowiednia przestrzeń nazw z parametru nazwy jednostki się nie liczy w tej funkcji, aby się liczyła należy użyć funkcji {{Code|{{sr|#p["Nazwa przestrzeni nazw dyskusji 2"](frame,...)|p=Pudełko}}}}. Definicja skrótowa funkcji: <syntaxhighlight lang="lua"> p["Nazwa przestrzeni nazw dyskusji"]=function(frame,czy_uwzglednic_alternatywna_nazwe,i)...end; </syntaxhighlight> Wtedy ciało funkcji tej, czyli jego definicja w środku, jest: <syntaxhighlight lang="lua"> -- Jest liczony numer parametru nazwy przestrzeni nazw, domyslnie chodzi tu o numer bazowy parametrów przestrzennych; local numer_jednostki=i or frame.args["numer jednostki"]; local liczba_numer_jednostki=((numer_jednostki)and(tonumber(numer_jednostki))or 0); local pudelko_pomocne_modul=require("Module:Pudełko/Pomocne"); -- Liczy nazwę przestrzeni nazw dyskusji na podstawie podanych parametrów; return pudelko_pomocne_modul.Nazwa_przestrzeni_nazw(frame,2, czy_uwzglednic_alternatywna_nazwe,liczba_numer_jednostki); </syntaxhighlight> Parametry funkcji: * {{Code|frame}} - tablica ramki tablicy transportu, * {{Code|czy_uwzglednic_alternatywna_nazwe}} - czy ma uwzględniać nazwę przestrzeni nazw domyślną szablonu, dostępne wartości: {{Code|false}}, w której nazwa domyślna nie jest uwzględniana wtedy, oraz {{Code|nil}} i {{Code|true}}, które oznaczają to samo, w tym jeżeli ona jest uwzględniana, wtedy jest brany parametr pierwszy dziecka, który musi istnieć przy takiej wartości tego parametru, tzn. {{Code|{{m|Pudełko|Nazwa przestrzeni nazw dyskusji|Szablon}}}} - ta nazwa domyślna zostanie przekształcona na dyskusji, a jeżeli ona by była dyskusji, to nie byłoby żadnego przekształcenia, a nazwa uzyskana nazwy przestrzeni nazw z parametrów przestrzennych jest w takim przypadku błędna, to w takim razie brany jest ten parametr, a jeżeli nazwa domyślna jest błędna, czyli {{Code|{{m|Pudełko|Nazwa przestrzeni nazw dyskusji|Moja przestrzeń}}}}, wtedy funkcja zwraca stan błędu {{Code|(błąd)}}. * {{Code|i}} - numer zmiennej nazwy przestrzeni nazw. Funkcja wykorzystuje {{Code|{{sr|#p.Nazwa_przestrzeni_nazw(frame,...)|p=Pudełko/Pomocne}}}} do wyznaczania ogólnego nazwy przestrzeni nazw dla pozycji bazowej i numerkowej, tzn. dla pozycji: jeden, dwa, trzy,..., itd, i ich ogólnej. Parametr ramki tablicy transportu rodzica szablonu: * {{Code|nazwa przestrzeni nazw}}, {{Code|nazwa przestrzeni nazw 1}}, {{Code|nazwa przestrzeni nazw 2}}, {{Code|nazwa przestrzeni nazw 3}},..., {{Code|nazwa przestrzeni nazw i}} - nazwy przestrzeni nazw dla pozycji bazowej oraz zwykłej i ogólnej numerkowej, * {{Code|typ jednostki}}, {{Code|typ jednostki 1}}, {{Code|typ jednostki 2}}, {{Code|typ jednostki 3}},..., {{Code|typ jednostki i}} - typy jednostek, którym odpowiadają pewne przestrzenie przedmiotowe, dla pozycji bazowej, numerkowej i ogólnej. Parametry ramki tablicy transportu dziecka: * Parametry dziecka są takie same jak rodzica dla funkcji pudełkowej plus tu wymienione, * {{Code|numer jednostki}} - jak parametr {{Code|i}} nie został ustawiony, to wtedy liczy się ta zmienna. Przykłady: <syntaxhighlight lang="mediawiki"> {{Nazwa szablonu|nazwa przestrzeni nazw=Wikibooks|nazwa przestrzeni nazw 2=Szablon|nazwa przestrzeni nazw i=Moduł}} </syntaxhighlight> W dziecku powiedzmy jest wywołanie, i szukamy nazwy przestrzeni nazw o numerze dwa, która nie została podana, ale istnieje za to jej wersji ogólna {{Code|nazwa przestrzeni nazw i}} i domyślna {{Code|nazwa przestrzeni nazw}}: <syntaxhighlight lang="mediawiki"> {{#invoke:Pudełko|Nazwa przestrzeni nazw dyskusji|numer jednostki=1}} </syntaxhighlight> Na podstawie powyższego przykładu otrzymamy wynik o schemacie, nie wyniku, bo tam nie ma zmiennej {{Code|nazwa przestrzeni nazw 1}}, ale jest {{Code|nazwa przestrzeni nazw i}}: <syntaxhighlight lang="mediawiki"> <!-- Ale nie "nazwa przestrzeni nazw", bo jej nie ma, ale za to istnieje "nazwa przestrzeni nazw i"; --> <!-- nazwa przestrzeni nazw 2=nazwa przestrzeni nazw i=Moduł; --> <!-- Czyli wynik: --> Dyskusja modułu <!-- Widzimy, że wygenerowała się nazwa przestrzeni nazw, którą jest przestrzeń dyskusji przestrzeni programowej przestrzeni przedmiotowej "Moduł", którą również jest "Szablon" jego przestrzeni dyskusji "Dyskusja szablonu", a dla ich przestrzeni przedmiotowej, zamiast dyskusji, to przekształca się na dyskusji jej odpowiadającą; --> </syntaxhighlight> Nie jest brana w tym powyższym przykładzie zmienna {{Code|nazwa przestrzeni nazw}}, bo jej nie ma, ale za to jest {{Code|nazwa przestrzeni nazw i}}, bo ona występuje jako parametr domyślny ogólny dla parametrów numerkowych. Przykłady w wikikodzie: * {{Code|{{m|Pudełko|Nazwa przestrzeni nazw dyskusji|numer jednostki{{=}}2}}}} → {{Tt|{{#invoke:Pudełko|Nazwa przestrzeni nazw dyskusji|numer jednostki=2}}}} * {{Code|{{m|Pudełko|Nazwa przestrzeni nazw dyskusji|Szablon|nazwa przestrzeni nazw i{{=}}Moja przestrzeń|numer jednostki{{=}}2}}}} → {{Tt|{{#invoke:Pudełko|Nazwa przestrzeni nazw dyskusji|Szablon|nazwa przestrzeni nazw i=Moja przestrzeń|numer jednostki=2}}}} * {{Code|{{m|Pudełko|Nazwa przestrzeni nazw dyskusji|nazwa przestrzeni nazw 2{{=}}Szablon|numer jednostki{{=}}2}}}} → {{Tt|{{#invoke:Pudełko|Nazwa przestrzeni nazw dyskusji|nazwa przestrzeni nazw 2=Szablon|numer jednostki=2}}}} * {{Code|{{m|Pudełko|Nazwa przestrzeni nazw dyskusji|nazwa przestrzeni nazw 2{{=}}Szablon|numer jednostki{{=}}2}}}} → {{Tt|{{#invoke:Pudełko|Nazwa przestrzeni nazw dyskusji|nazwa przestrzeni nazw i=Szablon|numer jednostki=2}}}} * {{Code|{{m|Pudełko|Nazwa przestrzeni nazw dyskusji|nazwa przestrzeni nazw{{=}}Szablon|numer jednostki{{=}}2}}}} → {{Tt|{{#invoke:Pudełko|Nazwa przestrzeni nazw dyskusji|nazwa przestrzeni nazw=Szablon|numer jednostki=2}}}} Powyżej dla przykładu podano parametry nie w rodzicu w szablonie, tylko w dziecku, jeśli chodzi o parametry nazw przestrzeni nazw, ale ich się za to nie powinno podawać w tych ramach, tylko w szablonach, w których wywoływane są te ramki pudełek {{Code|{{m|Pudełko}}}}, ale tak tutaj tak zrobiono by było najłatwiej sprawdzić działanie tego typu funkcji. Analogicznie możemy podawać parametry typu jednostki, np.: wywołaniu modułowym {{Code|{{m|Pudełko|Nazwa przestrzeni nazw dyskusji|typ jednostki 2{{=}}strona szablonu|numer jednostki{{=}}2}}}}, ale o tym więcej w rozdziałach {{Code|{{sr|# p["Dyskusyjny typ jednostki"](frame,i)|p=Pudełko}}}} w „{{sr|#Funkcje typu jednostki|p=Pudełko}}”, ale wtedy nazwa przestrzeni nazw reprezentowana przez {{Parametr|typ jednostki 2|strona szablonu}}, jest zamieniana na nazwę przestrzeni nazw dyskusji. Parametr dyskusji typu jednostki bazowy lub dla danego numerka ogólny, czy szczegółowy, nie gra roli. Również parametry typu jednostki nie powinno się podawać w dziecku w ramce, tylko w rodzicu w szablonie jako parametry, w którym ta ramka jest wywoływana, ale tutaj podano jedynie dla przykładu, jak najłatwiej sprawdzić działanie tych parametrów tej funkcji. Najpierw w funkcji nagłówku brane są parametry nazw przestrzeni nazw, a jeżeli ich nie ma, to parametry typu jednostki, a jeżeli nie ma, to generowane są nazwy na podstawie aktualnego modułu. == Funkcje nazw przestrzeni nazw drugiej wersji == === {{Code|p["Nazwa przestrzeni nazw 2"](frame,...)}} === Funkcja pisze nazwę przestrzeni nazw, niezależnie, czy to jest przedmiotowa, czy dyskusji, według, i nie zawsze tylko, podanej w zmiennej {{Code|nazwa przestrzeni nazw}} dla pozycja bazowej w podanych parametrach szablonu rodzicu ramki dziecka, lub dla innej pozycji należy parametr podawać w formie {{Code|nazwa przestrzeni nazw 1}}, {{Code|nazwa przestrzeni nazw 2}}, {{Code|nazwa przestrzeni nazw 3}},..., lub te parametry można podać w postaci ogólnej {{Code|nazwa przestrzeni nazw i}}. W tej funkcji trzeba też podawać parametry nazwy jednostek {{Code|nazwa jednostki}}, {{Code|nazwa jednostki 1}}, {{Code|nazwa jednostki 2}}, {{Code|nazwa jednostki 3}},... Parametry podaje się w parametrach rodzica wywołania tej funkcji {{Code|{{m|Pudełko|Nazwa przestrzeni nazw 2}}}} (ale ich nie trzeba podawać w dziecku, ale można) i w parametrach dziecka, jeśli chodzi o zmienną {{Code|numer jednostki}}, czyli np.: {{Code|{{m|Pudełko|Nazwa przestrzeni nazw 2|numer jednostki{{=}}<jakaś liczba całkowita dodatnia>}}}}. Te parametry przestrzenne zamiast w rodzicu w szablonie można podać w ramce dziecka, wtedy parametry dziecka mają pierwszeństwo. Przestrzeń nazw z parametrów nazw przestrzennych może odpowiadać wartości przestrzeni głównej, to wtedy odpowiednia przestrzeń nazw z parametru nazwy jednostki się liczy w tej funkcji, wtedy jest liczona nazwa przestrzeni nazw z tego parametru. Gdy parametry przestrzenne lub typ jednostki w drugim podejściu nie wskazują na przestrzeń główną, to wtedy działanie tej funkcji jest podobne do {{Code|{{sr|#p["Nazwa przestrzeni nazw"](frame,...)|p=Pudełko}}}}. Definicja skrótowa funkcji: <syntaxhighlight lang="lua"> p["Nazwa przestrzeni nazw 2"]=function(frame,czy_uwzglednic_alternatywna_nazwe,i)...end; </syntaxhighlight> Wtedy ciało funkcji tej, czyli jego definicja w środku, jest: <syntaxhighlight lang="lua"> local pudelko_pomocne_modul=require("Module:Pudełko/Pomocne"); -- Liczy nazwę przestrzeni nazw, jeżeli z parametrów przestrzennych przestrzeń wskazuje na główną, to wtedy jest liczona przestrzeń nazw z nazwy jednostki; return pudelko_pomocne_modul.Nazwa_przestrzeni_nazw_2(frame,czy_uwzglednic_alternatywna_nazwe,i) </syntaxhighlight> Parametry funkcji: * {{Code|frame}} - tablica ramki tablicy transportu, * {{Code|czy_uwzglednic_alternatywna_nazwe}} - czy ma uwzględniać nazwę przestrzeni nazw domyślną szablonu, dostępne wartości: {{Code|false}}, w której nazwa domyślna nie jest uwzględniana wtedy, oraz {{Code|nil}} i {{Code|true}}, które oznaczają to samo, w tym jeżeli ona jest uwzględniana, wtedy jest brany parametr pierwszy dziecka, który musi istnieć przy takiej wartości tego parametru, tzn. {{Code|{{m|Pudełko|Nazwa przestrzeni nazw 2|Szablon}}}}, a nazwa uzyskana nazwy przestrzeni nazw jest w takim przypadku błędna, a jeżeli nazwa domyślna jest błędna, czyli {{Code|{{m|Pudełko|Nazwa przestrzeni nazw 2|Moja przestrzeń}}}}, wtedy funkcja zwraca stan błędu {{Code|(błąd)}}. * {{Code|i}} - numer zmiennej nazwy przestrzeni nazw. Funkcja wykorzystuje {{Code|{{sr|#p.Nazwa_przestrzeni_nazw_2(frame,...)|p=Pudełko/Pomocne}}}} do wyznaczania ogólnego nazwy przestrzeni nazw dla pozycji bazowej i numerkowej, tzn. dla pozycji: jeden, dwa, trzy,..., itd, i ich ogólnej. Parametr ramki tablicy transportu rodzica szablonu: * {{Code|nazwa przestrzeni nazw}}, {{Code|nazwa przestrzeni nazw 1}}, {{Code|nazwa przestrzeni nazw 2}}, {{Code|nazwa przestrzeni nazw 3}},..., {{Code|nazwa przestrzeni nazw i}} - nazwy przestrzeni nazw dla pozycji bazowej oraz zwykłej i ogólnej numerkowej, * {{Code|nazwa jednostki}}, {{Code|nazwa jednostki 1}}, {{Code|nazwa jednostki 2}}, {{Code|nazwa jednostki 3}},... - nazwy jednostek dla pozycji bazowej i numerkowej, * {{Code|typ jednostki}}, {{Code|typ jednostki 1}}, {{Code|typ jednostki 2}}, {{Code|typ jednostki 3}},..., {{Code|typ jednostki i}} - typy jednostek, którym odpowiadają pewne przestrzenie przedmiotowe, dla pozycji bazowej, numerkowej i ogólnej, ** {{Code|dyskusja typu jednostki}}, {{Code|dyskusja typu jednostki 1}}, {{Code|dyskusja typ jednostki 2}}, {{Code|dyskusja typ jednostki 3}},..., {{Code|dyskusja typ jednostki i}} - czy dany typ jednostki ma przedstawiać, jeśli niepusta, przestrzeń dyskusji dla pozycji bazowej, numerkowej i ogólnej. Parametry ramki tablicy transportu dziecka: * Parametry dziecka są takie same jak rodzica dla funkcji pudełkowej plus tu wymienione, * {{Code|numer jednostki}} - jak parametr {{Code|i}} nie został ustawiony, to wtedy liczy się ta zmienna. Przykłady: <syntaxhighlight lang="mediawiki"> {{Nazwa szablonu|nazwa przestrzeni nazw=Wikibooks|nazwa przestrzeni nazw 1=Szablon|nazwa przestrzeni nazw i=|nazwa jednostki 2=Wikibooks:Strona}} </syntaxhighlight> W dziecku powiedzmy jest wywołanie, i szukamy nazwy przestrzeni nazw o numerze dwa, która została podana, ale istnieje za to jej wersji ogólna {{Code|nazwa przestrzeni nazw i}} i domyślna {{Code|nazwa przestrzeni nazw}}, ale wtedy dla tego numerkowego liczy się to ogólne z {{Code| i}}, a ponieważ ta nazwa jest pusta, więc będziemy liczyli nazwę przestrzeni nazw z {{Code|nazwa jednostki 2}}: <syntaxhighlight lang="mediawiki"> {{#invoke:Pudełko|Nazwa przestrzeni nazw 2|numer jednostki=2}} </syntaxhighlight> Na podstawie powyższego przykładu otrzymamy wynik o schemacie, nie wyniku, bo tam nie ma zmiennej {{Code|nazwa przestrzeni nazw 1}}, ale jest {{Code|nazwa przestrzeni nazw i}}: <syntaxhighlight lang="mediawiki"> <!-- Ale nie "nazwa przestrzeni nazw 2", bo jej nie ma, ale za to istnieje "nazwa przestrzeni nazw i"; --> <!-- nazwa przestrzeni nazw 2=nazwa przestrzeni nazw i="", a nazwa jednostki 2="Wikibooks:Strona"; --> <!-- Czyli wynik: --> Wikibooks <!-- Widzimy, że wygenerowała się nazwa przestrzeni nazw, którą jest przestrzeń nieprogramowa, ale projektu, wychodząca z nazwy jednostek w tym przypadku z "nazwa jednostki 2"; --> </syntaxhighlight> Nie jest brana w tym powyższym przykładzie zmienna {{Code|nazwa przestrzeni nazw}}, bo jej nie ma, ale za to jest {{Code|nazwa przestrzeni nazw i}}, bo ona występuje jako parametr domyślny ogólny dla parametrów numerkowych. Tytaj jest używana jest zmienna {{Code|nazwa jednostki 2}} do wygenerowania ostatecznego wyniku, bo jak można zauważyć, parametry przestrzenne wskazują na przestrzeń główną, a nazwy jednostek już nie. Przykłady w wikikodzie: * {{Code|{{m|Pudełko|Nazwa przestrzeni nazw 2|numer jednostki{{=}}2}}}} → {{Tt|{{#invoke:Pudełko|Nazwa przestrzeni nazw 2|numer jednostki=2}}}} * {{Code|{{m|Pudełko|Nazwa przestrzeni nazw 2|Szablon|nazwa przestrzeni nazw i{{=}}Moja przestrzeń|numer jednostki{{=}}2}}}} → {{Tt|{{#invoke:Pudełko|Nazwa przestrzeni nazw 2|Szablon|nazwa przestrzeni nazw i=Moja przestrzeń|numer jednostki=2}}}} * {{Code|{{m|Pudełko|Nazwa przestrzeni nazw 2|nazwa przestrzeni nazw 2{{=}}|nazwa jednostki 2{{=}}Szablon:Strona|numer jednostki{{=}}2}}}} → {{Tt|{{#invoke:Pudełko|Nazwa przestrzeni nazw 2|nazwa przestrzeni nazw 2=|nazwa jednostki 2=Szablon:Strona|numer jednostki=2}}}} * {{Code|{{m|Pudełko|Nazwa przestrzeni nazw 2|nazwa przestrzeni nazw i{{=}}|nazwa jednostki 2{{=}}Szablon:Strona|numer jednostki{{=}}2}}}} → {{Tt|{{#invoke:Pudełko|Nazwa przestrzeni nazw 2|nazwa przestrzeni nazw i=|nazwa jednostki 2=Szablon:Strona|numer jednostki=2}}}} * {{Code|{{m|Pudełko|Nazwa przestrzeni nazw 2|Szablon|nazwa przestrzeni nazw{{=}}|nazwa jednostki 2{{=}}Wikibooks:Strona|numer jednostki{{=}}2}}}} → {{Tt|{{#invoke:Pudełko|Nazwa przestrzeni nazw 2|Szablon|nazwa przestrzeni nazw=|nazwa jednostki 2=Wikibooks:Strona|numer jednostki=2}}}} Powyżej dla przykładu podano parametry nie w rodzicu w szablonie, tylko w dziecku, jeśli chodzi o parametry nazw przestrzeni nazw i nazw jednostek, ale ich się za to nie powinno podawać w tych ramach, tylko w szablonach, w których wywoływane są te ramki pudełek {{Code|{{m|Pudełko}}}}, ale tak tutaj tak zrobiono by było najłatwiej sprawdzić działanie tego typu funkcji. Analogicznie możemy podawać parametry typu jednostki, np.: wywołaniu modułowym {{Code|{{m|Pudełko|Nazwa przestrzeni nazw 2|typ jednostki 2{{=}}Podręcznik|nazwa jednostki 2{{=}}Szablon:Strona|numer jednostki{{=}}2}}}} (ale wtedy jest brana przestrzeń nazw z nazwy jednostki), ale o tym więcej w rozdziałach {{Code|{{sr|#p["Typ jednostki 2"](frame,i)|p=Pudełko}}}} w „{{sr|#Funkcje typu jednostki|p=Pudełko}}”, on definiuje przestrzenie przedmiotowe, ale można użyć parametru dyskusji typu jednostki z wartością niepustą, wtedy wyświetli się nazwa przestrzeni nazw dyskusji. Jeżeli typ jednostki wskazuje na przestrzeń nazw główną, wtedy się liczą parametry nazw jednostek. Również parametry typu jednostki nie powinno się podawać w dziecku w ramce, tylko w rodzicu w szablonie jako parametry, w którym ta ramka jest wywoływana, ale tutaj podano jedynie dla przykładu, jak najłatwiej sprawdzić działanie tych parametrów tej funkcji. Najpierw w funkcji nagłówku brane są parametry nazw przestrzeni nazw, a jeżeli ich nie ma, to parametry typu jednostki, a jeżeli nie ma lub parametry przestrzenne wskazują na przestrzeń główną, i nie ma nazwy jednostki, to generowane są nazwy tej funkcji na podstawie aktualnej strony. === {{Code|p["Nazwa przedmiotowej przestrzeni nazw 2"](frame,...)}} === Funkcja pisze przedmiotową nazwę przestrzeni nazw jakikolwiek nazwy przestrzeni nazw (tzn. nazwę przedmiotową nazwy przestrzenie nazw, czyli nie dyskusji, zamieniana jest na nią samą, czyli identyfikator przestrzeni się nie zmienia, a dyskusji, nie przedmiotową, przekształca się na przedmiotową jej odpowiadającą, czyli w tym przypadku identyfikator przestrzeni zmniejsza się o numer mniej), według, i nie zawsze tylko, podanej w zmiennej {{Code|nazwa przestrzeni nazw}} dla pozycja bazowej w podanych parametrach szablonu rodzicu ramki dziecka, lub dla innej pozycji należy parametr podawać w formie {{Code|nazwa przestrzeni nazw 1}}, {{Code|nazwa przestrzeni nazw 2}}, {{Code|nazwa przestrzeni nazw 3}},..., lub te parametry można podać w postaci ogólnej {{Code|nazwa przestrzeni nazw i}}. W tej funkcji trzeba też podawać parametry nazwy jednostek {{Code|nazwa jednostki}}, {{Code|nazwa jednostki 1}}, {{Code|nazwa jednostki 2}}, {{Code|nazwa jednostki 3}},... Parametry podaje się w parametrach rodzica wywołania tej funkcji {{Code|{{m|Pudełko|Nazwa przedmiotowej przestrzeni nazw 2}}}} (ale ich nie trzeba podawać w dziecku, ale można) i w parametrach dziecka, jeśli chodzi o zmienną {{Code|numer jednostki}}, czyli np.: {{Code|{{m|Pudełko|Nazwa przedmiotowej przestrzeni nazw 2|numer jednostki{{=}}<jakaś liczba całkowita dodatnia>}}}}. Te parametry przestrzenne zamiast w rodzicu w szablonie można podać w ramce dziecka, wtedy parametry dziecka mają pierwszeństwo. Przestrzeń nazw z parametrów nazw przestrzennych po przekształceniu na przedmiotową może odpowiadać wartości przestrzeni głównej, to wtedy odpowiednia przestrzeń nazw z parametru nazwy jednostki się liczy w tej funkcji, wtedy jest liczona nazwa przestrzeni nazw z tego parametru. Gdy parametry przestrzenne lub typ jednostki w drugim podejściu nie wskazują na przestrzeń główną, to wtedy działanie tej funkcji jest podobne do {{Code|{{sr|#p["Nazwa przedmiotowej przestrzeni nazw"](frame,...)|p=Pudełko}}}}. Definicja skrótowa funkcji: <syntaxhighlight lang="lua"> p["Nazwa przedmiotowej przestrzeni nazw 2"]=function(frame,czy_uwzglednic_alternatywna_nazwe,i)...end; </syntaxhighlight> Wtedy ciało funkcji tej, czyli jego definicja w środku, jest: <syntaxhighlight lang="lua"> local pudelko_pomocne_modul=require("Module:Pudełko/Pomocne"); return pudelko_pomocne_modul.Nazwa_przestrzeni_nazw_przedmiotowa_dyskusji_2(frame,czy_uwzglednic_alternatywna_nazwe,i,"przedmiotowa"); </syntaxhighlight> Parametry funkcji: * {{Code|frame}} - tablica ramki tablicy transportu, * {{Code|czy_uwzglednic_alternatywna_nazwe}} - czy ma uwzględniać nazwę przestrzeni nazw domyślną szablonu, dostępne wartości: {{Code|false}}, w której nazwa domyślna nie jest uwzględniana wtedy, oraz {{Code|nil}} i {{Code|true}}, które oznaczają to samo, w tym jeżeli ona jest uwzględniana, wtedy jest brany parametr pierwszy dziecka, który musi istnieć przy takiej wartości tego parametru, tzn. {{Code|{{m|Pudełko|Nazwa przedmiotowej przestrzeni nazw 2|Szablon}}}}, a nazwa uzyskana nazwy przestrzeni nazw jest w takim przypadku błędna, a jeżeli nazwa domyślna jest błędna, czyli {{Code|{{m|Pudełko|Nazwa przedmiotowej przestrzeni nazw 2|Moja przestrzeń}}}}, wtedy funkcja zwraca stan błędu {{Code|(błąd)}}. * {{Code|i}} - numer zmiennej nazwy przestrzeni nazw. Funkcja wykorzystuje {{Code|{{sr|#p.Nazwa_przestrzeni_nazw_przedmiotowa_dyskusji_2(frame,...)|p=Pudełko/Pomocne}}}} do wyznaczania ogólnego nazwy przestrzeni nazw dla pozycji bazowej i numerkowej, tzn. dla pozycji: jeden, dwa, trzy,..., itd, i ich ogólnej. Parametr ramki tablicy transportu rodzica szablonu: * {{Code|nazwa przestrzeni nazw}}, {{Code|nazwa przestrzeni nazw 1}}, {{Code|nazwa przestrzeni nazw 2}}, {{Code|nazwa przestrzeni nazw 3}},..., {{Code|nazwa przestrzeni nazw i}} - nazwy przestrzeni nazw dla pozycji bazowej oraz zwykłej i ogólnej numerkowej, * {{Code|nazwa jednostki}}, {{Code|nazwa jednostki 1}}, {{Code|nazwa jednostki 2}}, {{Code|nazwa jednostki 3}},... - nazwy jednostek dla pozycji bazowej i numerkowej, * {{Code|typ jednostki}}, {{Code|typ jednostki 1}}, {{Code|typ jednostki 2}}, {{Code|typ jednostki 3}},..., {{Code|typ jednostki i}} - typy jednostek, którym odpowiadają pewne przestrzenie przedmiotowe, dla pozycji bazowej, numerkowej i ogólnej. Parametry ramki tablicy transportu dziecka: * Parametry dziecka są takie same jak rodzica dla funkcji pudełkowej plus tu wymienione, * {{Code|numer jednostki}} - jak parametr {{Code|i}} nie został ustawiony, to wtedy liczy się ta zmienna. Przykłady: <syntaxhighlight lang="mediawiki"> {{Nazwa szablonu|nazwa przestrzeni nazw=Wikibooks|nazwa przestrzeni nazw 1=Szablon|nazwa przestrzeni nazw i=|nazwa jednostki 2=Dyskusja Wikibooks:Strona}} </syntaxhighlight> W dziecku powiedzmy jest wywołanie, i szukamy nazwy przestrzeni nazw o numerze dwa, która została podana, ale istnieje za to jej wersji ogólna {{Code|nazwa przestrzeni nazw i}} i domyślna {{Code|nazwa przestrzeni nazw}}, ale wtedy dla tego numerkowego liczy się to ogólne z {{Code| i}}, a ponieważ ta nazwa jest pusta, więc będziemy liczyli nazwę przestrzeni nazw z {{Code|nazwa jednostki 2}}: <syntaxhighlight lang="mediawiki"> {{#invoke:Pudełko|Nazwa przedmiotowej przestrzeni nazw 2|numer jednostki=2}} </syntaxhighlight> Na podstawie powyższego przykładu otrzymamy wynik o schemacie, nie wyniku, bo tam nie ma zmiennej {{Code|nazwa przestrzeni nazw 1}}, ale jest {{Code|nazwa przestrzeni nazw i}}: <syntaxhighlight lang="mediawiki"> <!-- Ale nie "nazwa przestrzeni nazw 2", bo jej nie ma, ale za to istnieje "nazwa przestrzeni nazw i"; --> <!-- nazwa przestrzeni nazw 2=nazwa przestrzeni nazw i="", a nazwa jednostki 2="Dyskusja Wikibooks:Strona"; --> <!-- Czyli wynik: --> Wikibooks <!-- Widzimy, że wygenerowała się nazwa przestrzeni nazw, którą jest przestrzeń nieprogramowa, ale projektu, wychodząca z nazwy jednostek w tym przypadku z "nazwa jednostki 2"; --> </syntaxhighlight> Nie jest brana w tym powyższym przykładzie zmienna {{Code|nazwa przestrzeni nazw}}, bo jej nie ma, ale za to jest {{Code|nazwa przestrzeni nazw i}}, bo ona występuje jako parametr domyślny ogólny dla parametrów numerkowych. Tytaj jest używana jest zmienna {{Code|nazwa jednostki 2}} do wygenerowania ostatecznego wyniku, bo jak można zauważyć, parametry przestrzenne wskazują na przestrzeń główną, a nazwy jednostek już nie. Przykłady w wikikodzie: * {{Code|{{m|Pudełko|Nazwa przedmiotowej przestrzeni nazw 2|numer jednostki{{=}}2}}}} → {{Tt|{{#invoke:Pudełko|Nazwa przedmiotowej przestrzeni nazw 2|numer jednostki=2}}}} * {{Code|{{m|Pudełko|Nazwa przedmiotowej przestrzeni nazw 2|Dyskusja szablonu|nazwa przestrzeni nazw i{{=}}Moja przestrzeń|numer jednostki{{=}}2}}}} → {{Tt|{{#invoke:Pudełko|Nazwa przedmiotowej przestrzeni nazw 2|Dyskusja szablonu|nazwa przestrzeni nazw i=Moja przestrzeń|numer jednostki=2}}}} * {{Code|{{m|Pudełko|Nazwa przedmiotowej przestrzeni nazw 2|nazwa przestrzeni nazw 2{{=}}Dyskusja|nazwa jednostki 2{{=}}Dyskusja szablonu:Strona|numer jednostki{{=}}2}}}} → {{Tt|{{#invoke:Pudełko|Nazwa przedmiotowej przestrzeni nazw 2|nazwa przestrzeni nazw 2=Dyskusja|nazwa jednostki 2=Dyskusja szablonu:Strona|numer jednostki=2}}}} * {{Code|{{m|Pudełko|Nazwa przedmiotowej przestrzeni nazw 2|nazwa przestrzeni nazw i{{=}}Dyskusja|nazwa jednostki 2{{=}}Dyskusja szablonu:Strona|numer jednostki{{=}}2}}}} → {{Tt|{{#invoke:Pudełko|Nazwa przedmiotowej przestrzeni nazw 2|nazwa przestrzeni nazw i=Dyskusja|nazwa jednostki 2=Dyskusja szablonu:Strona|numer jednostki=2}}}} * {{Code|{{m|Pudełko|Nazwa przedmiotowej przestrzeni nazw 2|Dyskusja szablonu|nazwa przestrzeni nazw{{=}}Dyskusja|nazwa jednostki 2{{=}}Wikibooks:Strona|numer jednostki{{=}}2}}}} → {{Tt|{{#invoke:Pudełko|Nazwa przedmiotowej przestrzeni nazw 2|Dyskusja szablonu|nazwa przestrzeni nazw=Dyskusja|nazwa jednostki 2=Dyskusja Wikibooks:Strona|numer jednostki=2}}}} Powyżej dla przykładu podano parametry nie w rodzicu w szablonie, tylko w dziecku, jeśli chodzi o parametry nazw przestrzeni nazw i nazw jednostek, ale ich się za to nie powinno podawać w tych ramach, tylko w szablonach, w których wywoływane są te ramki pudełek {{Code|{{m|Pudełko}}}}, ale tak tutaj tak zrobiono by było najłatwiej sprawdzić działanie tego typu funkcji. Analogicznie możemy podawać parametry typu jednostki, np.: wywołaniu modułowym {{Code|{{m|Pudełko|Nazwa przedmiotowej przestrzeni nazw 2|typ jednostki 2{{=}}Podręcznik|nazwa jednostki 2{{=}}Dyskusja szablonu:Strona|numer jednostki{{=}}2}}}} (ale wtedy jest brana przestrzeń nazw z nazwy jednostki), ale o tym więcej w rozdziałach {{Code|{{sr|# p["Przedmiotowy typ jednostki 2"](frame,i)|p=Pudełko}}}} w „{{sr|#Funkcje typu jednostki|p=Pudełko}}”, on definiuje przestrzenie przedmiotowe, ale można użyć parametru dyskusji typu jednostki z wartością niepustą, pustą, czy nawet jej nie podamy, wtedy wyświetli się nazwa przestrzeni nazw przedmiotowej. Jeżeli typ jednostki wskazuje na przestrzeń nazw główną, wtedy się liczą parametry nazw jednostek. Również parametry typu jednostki nie powinno się podawać w dziecku w ramce, tylko w rodzicu w szablonie jako parametry, w którym ta ramka jest wywoływana, ale tutaj podano jedynie dla przykładu, jak najłatwiej sprawdzić działanie tych parametrów tej funkcji. Najpierw w funkcji nagłówku brane są parametry nazw przestrzeni nazw, a jeżeli ich nie ma, to parametry typu jednostki, a jeżeli nie ma lub parametry przestrzenne wskazują na przestrzeń główną, i nie ma nazwy jednostki, to generowane są nazwy tej funkcji na podstawie aktualnej strony. === {{Code|p["Nazwa przestrzeni nazw dyskusji 2"](frame,...)}} === Funkcja pisze nazwę przestrzeni nazw dyskusji jakikolwiek nazwy przestrzeni nazw (tzn. nazwę dyskusji nazwy przestrzenie nazw, czyli nie przedmiotowej, zamieniana jest na nią samą, czyli identyfikator przestrzeni się nie zmienia, a przedmiotową, nie dyskusji, przekształca się na dyskusji jej odpowiadającą, czyli w tym przypadku identyfikator przestrzeni zwiększa się o numer więcej), według, i nie zawsze tylko, podanej w zmiennej {{Code|nazwa przestrzeni nazw}} dla pozycja bazowej w podanych parametrach szablonu rodzicu ramki dziecka, lub dla innej pozycji należy parametr podawać w formie {{Code|nazwa przestrzeni nazw 1}}, {{Code|nazwa przestrzeni nazw 2}}, {{Code|nazwa przestrzeni nazw 3}},..., lub te parametry można podać w postaci ogólnej {{Code|nazwa przestrzeni nazw i}}. W tej funkcji trzeba też podawać parametry nazwy jednostek {{Code|nazwa jednostki}}, {{Code|nazwa jednostki 1}}, {{Code|nazwa jednostki 2}}, {{Code|nazwa jednostki 3}},... Parametry podaje się w parametrach rodzica wywołania tej funkcji {{Code|{{m|Pudełko|Nazwa przestrzeni nazw dyskusji 2}}}} (ale ich nie trzeba podawać w dziecku, ale można) i w parametrach dziecka, jeśli chodzi o zmienną {{Code|numer jednostki}}, czyli np.: {{Code|{{m|Pudełko|Nazwa przestrzeni nazw dyskusji 2|numer jednostki{{=}}<jakaś liczba całkowita dodatnia>}}}}. Te parametry przestrzenne zamiast w rodzicu w szablonie można podać w ramce dziecka, wtedy parametry dziecka mają pierwszeństwo. Przestrzeń nazw z parametrów nazw przestrzennych po przekształceniu na przedmiotową może odpowiadać wartości przestrzeni głównej, to wtedy odpowiednia przestrzeń nazw z parametru nazwy jednostki się liczy w tej funkcji, wtedy jest liczona nazwa przestrzeni nazw z tego parametru. Gdy parametry przestrzenne lub typ jednostki w drugim podejściu nie wskazują na przestrzeń główną, to wtedy działanie tej funkcji jest podobne do {{Code|{{sr|#p["Nazwa dyskusji przestrzeni nazw"](frame,...)|p=Pudełko}}}}. Definicja skrótowa funkcji: <syntaxhighlight lang="lua"> p["Nazwa przestrzeni nazw dyskusji 2"]=function(frame,czy_uwzglednic_alternatywna_nazwe,i)...end; </syntaxhighlight> Wtedy ciało funkcji tej, czyli jego definicja w środku, jest: <syntaxhighlight lang="lua"> local pudelko_pomocne_modul=require("Module:Pudełko/Pomocne"); return pudelko_pomocne_modul.Nazwa_przestrzeni_nazw_przedmiotowa_dyskusji_2(frame,czy_uwzglednic_alternatywna_nazwe,i,"dyskusja"); </syntaxhighlight> Parametry funkcji: * {{Code|frame}} - tablica ramki tablicy transportu, * {{Code|czy_uwzglednic_alternatywna_nazwe}} - czy ma uwzględniać nazwę przestrzeni nazw domyślną szablonu, dostępne wartości: {{Code|false}}, w której nazwa domyślna nie jest uwzględniana wtedy, oraz {{Code|nil}} i {{Code|true}}, które oznaczają to samo, w tym jeżeli ona jest uwzględniana, wtedy jest brany parametr pierwszy dziecka, który musi istnieć przy takiej wartości tego parametru, tzn. {{Code|{{m|Pudełko|Nazwa przestrzeni nazw dyskusji 2|Szablon}}}}, a nazwa uzyskana nazwy przestrzeni nazw jest w takim przypadku błędna, a jeżeli nazwa domyślna jest błędna, czyli {{Code|{{m|Pudełko|Nazwa przestrzeni nazw dyskusji 2|Moja przestrzeń}}}}, wtedy funkcja zwraca stan błędu {{Code|(błąd)}}. * {{Code|i}} - numer zmiennej nazwy przestrzeni nazw. Funkcja wykorzystuje {{Code|{{sr|#p.Nazwa_przestrzeni_nazw_przedmiotowa_dyskusji_2(frame,...)|p=Pudełko/Pomocne}}}} do wyznaczania ogólnego nazwy przestrzeni nazw dla pozycji bazowej i numerkowej, tzn. dla pozycji: jeden, dwa, trzy,..., itd, i ich ogólnej. Parametr ramki tablicy transportu rodzica szablonu: * {{Code|nazwa przestrzeni nazw}}, {{Code|nazwa przestrzeni nazw 1}}, {{Code|nazwa przestrzeni nazw 2}}, {{Code|nazwa przestrzeni nazw 3}},..., {{Code|nazwa przestrzeni nazw i}} - nazwy przestrzeni nazw dla pozycji bazowej oraz zwykłej i ogólnej numerkowej, * {{Code|nazwa jednostki}}, {{Code|nazwa jednostki 1}}, {{Code|nazwa jednostki 2}}, {{Code|nazwa jednostki 3}},... - nazwy jednostek dla pozycji bazowej i numerkowej, * {{Code|typ jednostki}}, {{Code|typ jednostki 1}}, {{Code|typ jednostki 2}}, {{Code|typ jednostki 3}},..., {{Code|typ jednostki i}} - typy jednostek, którym odpowiadają pewne przestrzenie przedmiotowe, dla pozycji bazowej, numerkowej i ogólnej. Parametry ramki tablicy transportu dziecka: * Parametry dziecka są takie same jak rodzica dla funkcji pudełkowej plus tu wymienione, * {{Code|numer jednostki}} - jak parametr {{Code|i}} nie został ustawiony, to wtedy liczy się ta zmienna. Przykłady: <syntaxhighlight lang="mediawiki"> {{Nazwa szablonu|nazwa przestrzeni nazw=Wikibooks|nazwa przestrzeni nazw 1=Szablon|nazwa przestrzeni nazw i=|nazwa jednostki 2=Wikibooks:Strona}} </syntaxhighlight> W dziecku powiedzmy jest wywołanie, i szukamy nazwy przestrzeni nazw o numerze dwa, która została podana, ale istnieje za to jej wersji ogólna {{Code|nazwa przestrzeni nazw i}} i domyślna {{Code|nazwa przestrzeni nazw}}, ale wtedy dla tego numerkowego liczy się to ogólne z {{Code| i}}, a ponieważ ta nazwa jest pusta, więc będziemy liczyli nazwę przestrzeni nazw z {{Code|nazwa jednostki 2}}: <syntaxhighlight lang="mediawiki"> {{#invoke:Pudełko|Nazwa przestrzeni nazw dyskusji 2|numer jednostki=2}} </syntaxhighlight> Na podstawie powyższego przykładu otrzymamy wynik o schemacie, nie wyniku, bo tam nie ma zmiennej {{Code|nazwa przestrzeni nazw 1}}, ale jest {{Code|nazwa przestrzeni nazw i}}: <syntaxhighlight lang="mediawiki"> <!-- Ale nie "nazwa przestrzeni nazw 2", bo jej nie ma, ale za to istnieje "nazwa przestrzeni nazw i"; --> <!-- nazwa przestrzeni nazw 2=nazwa przestrzeni nazw i="", a nazwa jednostki 2="Wikibooks:Strona"; --> <!-- Czyli wynik: --> Dyskusja Wikibooks <!-- Widzimy, że wygenerowała się nazwa przestrzeni nazw, którą jest przestrzeń nieprogramowa, ale dyskusji projektu, wychodząca z nazwy jednostek w tym przypadku z "nazwa jednostki 2"; --> </syntaxhighlight> Nie jest brana w tym powyższym przykładzie zmienna {{Code|nazwa przestrzeni nazw}}, bo jej nie ma, ale za to jest {{Code|nazwa przestrzeni nazw i}}, bo ona występuje jako parametr domyślny ogólny dla parametrów numerkowych. Tytaj jest używana jest zmienna {{Code|nazwa jednostki 2}} do wygenerowania ostatecznego wyniku, bo jak można zauważyć, parametry przestrzenne wskazują na przestrzeń główną, a nazwy jednostek już nie. Przykłady w wikikodzie: * {{Code|{{m|Pudełko|Nazwa przestrzeni nazw dyskusji 2|numer jednostki{{=}}2}}}} → {{Tt|{{#invoke:Pudełko|Nazwa przestrzeni nazw dyskusji 2|numer jednostki=2}}}} * {{Code|{{m|Pudełko|Nazwa przestrzeni nazw dyskusji 2|Szablon|nazwa przestrzeni nazw i{{=}}Moja przestrzeń|numer jednostki{{=}}2}}}} → {{Tt|{{#invoke:Pudełko|Nazwa przestrzeni nazw dyskusji 2|Szablon|nazwa przestrzeni nazw i=Moja przestrzeń|numer jednostki=2}}}} * {{Code|{{m|Pudełko|Nazwa przestrzeni nazw dyskusji 2|nazwa przestrzeni nazw 2{{=}}|nazwa jednostki 2{{=}}Szablon:Strona|numer jednostki{{=}}2}}}} → {{Tt|{{#invoke:Pudełko|Nazwa przestrzeni nazw dyskusji 2|nazwa przestrzeni nazw 2=|nazwa jednostki 2=Szablon:Strona|numer jednostki=2}}}} * {{Code|{{m|Pudełko|Nazwa przestrzeni nazw dyskusji 2|nazwa przestrzeni nazw i{{=}}|nazwa jednostki 2{{=}}Szablon:Strona|numer jednostki{{=}}2}}}} → {{Tt|{{#invoke:Pudełko|Nazwa przestrzeni nazw dyskusji 2|nazwa przestrzeni nazw i=|nazwa jednostki 2=Szablon:Strona|numer jednostki=2}}}} * {{Code|{{m|Pudełko|Nazwa przestrzeni nazw dyskusji 2|Szablon|nazwa przestrzeni nazw{{=}}|nazwa jednostki 2{{=}}Wikibooks:Strona|numer jednostki{{=}}2}}}} → {{Tt|{{#invoke:Pudełko|Nazwa przestrzeni nazw dyskusji 2|Szablon|nazwa przestrzeni nazw=|nazwa jednostki 2=Dyskusja Wikibooks:Strona|numer jednostki=2}}}} Powyżej dla przykładu podano parametry nie w rodzicu w szablonie, tylko w dziecku, jeśli chodzi o parametry nazw przestrzeni nazw i nazw jednostek, ale ich się za to nie powinno podawać w tych ramach, tylko w szablonach, w których wywoływane są te ramki pudełek {{Code|{{m|Pudełko}}}}, ale tak tutaj tak zrobiono by było najłatwiej sprawdzić działanie tego typu funkcji. Analogicznie możemy podawać parametry typu jednostki, np.: wywołaniu modułowym {{Code|{{m|Pudełko|Nazwa przestrzeni nazw dyskusji 2|typ jednostki 2{{=}}Podręcznik|nazwa jednostki 2{{=}}Szablon:Strona|numer jednostki{{=}}2}}}} (ale wtedy jest brana przestrzeń nazw z nazwy jednostki), ale o tym więcej w rozdziałach {{Code|{{sr|# p["Dyskusyjny typ jednostki 3"](frame,i)|p=Pudełko}}}} w „{{sr|#Funkcje typu jednostki|p=Pudełko}}”, one definiują przestrzenie dyskusji, ale można użyć parametru dyskusji typu jednostki z obojętnie jaką wartością niepustą, czy pustą, czy nawet jej nie podamy, wtedy wyświetli się nazwa przestrzeni nazw dyskusji. Jeżeli typ jednostki wskazuje na przestrzeń nazw główną, wtedy się liczą parametry nazw jednostek. Również parametry typu jednostki nie powinno się podawać w dziecku w ramce, tylko w rodzicu w szablonie jako parametry, w którym ta ramka jest wywoływana, ale tutaj podano jedynie dla przykładu, jak najłatwiej sprawdzić działanie tych parametrów tej funkcji. Najpierw w funkcji nagłówku brane są parametry nazw przestrzeni nazw, a jeżeli ich nie ma, to parametry typu jednostki, a jeżeli nie ma lub parametry przestrzenne wskazują na przestrzeń główną, i nie ma nazwy jednostki, to generowane są nazwy tej funkcji na podstawie aktualnej strony. == Funkcje pełnych nazw jednostki == === {{Code|p["Pełna nazwa dyskusji jednostki"](frame,i)}} === === {{Code|p["Pełna nazwa przedmiotowa jednostki"](frame,i)}} === === {{Code|p["Pełna nazwa jednostki"](frame,i)}} === == Funkcje pełnych nazw jednostki drugiej wersji == === {{Code|p["Pełna nazwa dyskusji jednostki 2"](frame,i)}} === === {{Code|p["Pełna nazwa przedmiotowa jednostki 2"](frame,i)}} === === {{Code|p["Pełna nazwa jednostki 2"](frame,i)}} === == Funkcje pełnych nazw jednostki trzeciej wersji == === {{Code|p["Pełna nazwa dyskusji jednostki 3"](frame,i)}} === === {{Code|p["Pełna nazwa przedmiotowa jednostki 3"](frame,i)}} === === {{Code|p["Pełna nazwa jednostki 3"](frame,i)}} === == Funkcje nazw jednostki == === {{Code|p["Nazwa jednostki"](frame,i)}} === == Funkcje nazw jednostki drugiej wersji == === {{Code|p["Nazwa jednostki 2"](frame,i)}} === === {{Code|p["Nazwa przedmiotowa jednostki 2"](frame,i)}} === === {{Code|p["Nazwa dyskusji jednostki 2"](frame,i)}} === == Funkcje nazw przestrzeni nazw trzeciej wersji == === {{Code|p["Nazwa przestrzeni nazw 3"](frame,i)}} === Funkcja pisze nazwę przestrzeni nazw, niezależnie, czy to jest przedmiotowa, czy dyskusji, według, i nie zawsze tylko, podanej w zmiennej {{Code|nazwa przestrzeni nazw}} dla pozycja bazowej w podanych parametrach szablonu rodzicu ramki dziecka, lub dla innej pozycji należy parametr podawać w formie {{Code|nazwa przestrzeni nazw 1}}, {{Code|Nazwa przestrzeni nazw 3}}, {{Code|nazwa przestrzeni nazw 3}},..., lub te parametry można podać w postaci ogólnej {{Code|nazwa przestrzeni nazw i}}. W tej funkcji trzeba też podawać parametry nazwy jednostek {{Code|nazwa jednostki}}, {{Code|nazwa jednostki 1}}, {{Code|nazwa jednostki 2}}, {{Code|nazwa jednostki 3}},... Parametry podaje się w parametrach rodzica wywołania tej funkcji {{Code|{{m|Pudełko|Nazwa przestrzeni nazw 3}}}} (ale ich nie trzeba podawać w dziecku, ale można) i w parametrach dziecka, jeśli chodzi o zmienną {{Code|numer jednostki}}, czyli np.: {{Code|{{m|Pudełko|Nazwa przestrzeni nazw 3|numer jednostki{{=}}<jakaś liczba całkowita dodatnia>}}}}. Te parametry przestrzenne zamiast w rodzicu w szablonie można podać w ramce dziecka, wtedy parametry dziecka mają pierwszeństwo. Przestrzeń nazw z parametrów nazw przestrzennych bazowych (bez numerka) może odpowiadać wartości przestrzeni głównej, to wtedy odpowiednia przestrzeń nazw z parametru nazwy jednostki się nie liczy w tej funkcji, aby się liczyła należy użyć funkcji {{Code|{{sr|#p["Nazwa przestrzeni nazw"](frame,...)|p=Pudełko}}}}. Przestrzeń nazw z parametrów nazw przestrzennych numerkowych może odpowiadać wartości przestrzeni głównej, to wtedy odpowiednia przestrzeń nazw z parametru nazwy jednostki się liczy w tej funkcji, wtedy jest liczona nazwa przestrzeni nazw z tego parametru. Gdy parametry przestrzenne lub typ jednostki w drugim podejściu nie wskazują na przestrzeń główną, to wtedy działanie tej funkcji jest podobne do {{Code|{{sr|#p["Nazwa przestrzeni nazw 2"](frame,...)|p=Pudełko}}}}. Definicja skrótowa funkcji: <syntaxhighlight lang="lua"> p["Nazwa przestrzeni nazw 3"]=function(frame,czy_uwzglednic_alternatywna_nazwe,i)...end; </syntaxhighlight> Wtedy ciało funkcji tej, czyli jego definicja w środku, jest: <syntaxhighlight lang="lua"> -- Jest liczony numer parametru nazwy przestrzeni nazw, domyslnie chodzi tu o numer bazowy parametrów przestrzennych; local numer_jednostki=i or frame.args["numer jednostki"]; local liczba_numeru_jednostki=((numer_jednostki)and(tonumber(numer_jednostki)) or 0); local pudelko_pomocne_modul=require("Module:Pudełko/Pomocne"); -- Liczy nazwę przestrzeni nazw dyskusji na podstawie podanych parametrów; return pudelko_pomocne_modul.Uzyskanie_nazw_jednostki(frame,0,liczba_numeru_jednostki,nil,2); </syntaxhighlight> Parametry funkcji: * {{Code|frame}} - tablica ramki tablicy transportu, * {{Code|czy_uwzglednic_alternatywna_nazwe}} - czy ma uwzględniać nazwę przestrzeni nazw domyślną szablonu, dostępne wartości: {{Code|false}}, w której nazwa domyślna nie jest uwzględniana wtedy, oraz {{Code|nil}} i {{Code|true}}, które oznaczają to samo, w tym jeżeli ona jest uwzględniana, wtedy jest brany parametr pierwszy dziecka, który musi istnieć przy takiej wartości tego parametru, tzn. {{Code|{{m|Pudełko|Nazwa przestrzeni nazw 3|Szablon}}}}, a nazwa uzyskana nazwy przestrzeni nazw jest w takim przypadku błędna, a jeżeli nazwa domyślna jest błędna, czyli {{Code|{{m|Pudełko|Nazwa przestrzeni nazw 3|Moja przestrzeń}}}}, wtedy funkcja zwraca stan błędu {{Code|(błąd)}}. * {{Code|i}} - numer zmiennej nazwy przestrzeni nazw. Funkcja wykorzystuje {{Code|{{sr|#p.Uzyskanie_nazw_jednostki(frame,...)|p=Pudełko/Pomocne}}}} do wyznaczania ogólnego nazwy przestrzeni nazw dla pozycji bazowej i numerkowej, tzn. dla pozycji: jeden, dwa, trzy,..., itd, i ich ogólnej. Parametr ramki tablicy transportu rodzica szablonu: * {{Code|nazwa przestrzeni nazw}}, {{Code|nazwa przestrzeni nazw 1}}, {{Code|Nazwa przestrzeni nazw 3}}, {{Code|nazwa przestrzeni nazw 3}},..., {{Code|nazwa przestrzeni nazw i}} - nazwy przestrzeni nazw dla pozycji bazowej oraz zwykłej i ogólnej numerkowej, * {{Code|nazwa jednostki}}, {{Code|nazwa jednostki 1}}, {{Code|nazwa jednostki 2}}, {{Code|nazwa jednostki 3}},... - nazwy jednostek dla pozycji bazowej i numerkowej, * {{Code|typ jednostki}}, {{Code|typ jednostki 1}}, {{Code|typ jednostki 2}}, {{Code|typ jednostki 3}},..., {{Code|typ jednostki i}} - typy jednostek, którym odpowiadają pewne przestrzenie przedmiotowe, dla pozycji bazowej, numerkowej i ogólnej, ** {{Code|dyskusja typu jednostki}}, {{Code|dyskusja typu jednostki 1}}, {{Code|dyskusja typ jednostki 2}}, {{Code|dyskusja typ jednostki 3}},..., {{Code|dyskusja typ jednostki i}} - czy dany typ jednostki ma przedstawiać, jeśli niepusta, przestrzeń dyskusji dla pozycji bazowej, numerkowej i ogólnej. Parametry ramki tablicy transportu dziecka: * Parametry dziecka są takie same jak rodzica dla funkcji pudełkowej plus tu wymienione, * {{Code|numer jednostki}} - jak parametr {{Code|i}} nie został ustawiony, to wtedy liczy się ta zmienna. Przykłady: <syntaxhighlight lang="mediawiki"> {{Nazwa szablonu 1|nazwa przestrzeni nazw=Wikibooks|nazwa przestrzeni nazw=|nazwa przestrzeni nazw i=|nazwa jednostki=Szablon:Strona}} ---- {{Nazwa szablonu 2|nazwa przestrzeni nazw=Wikibooks|nazwa przestrzeni nazw 1=Szablon|nazwa przestrzeni nazw i=|nazwa jednostki 2=Wikibooks:Strona}} </syntaxhighlight> W pierwszym wywołaniu {{Code|nazwa przestrzeni nazw}} jest puste, ale dla tego bazowego (bez numerka) szukamy przestrzeni nazw, a więc ta nazwa jest ostateczna. ---- W drugim wywołaniu w dziecku powiedzmy jest wywołanie, i szukamy nazwy przestrzeni nazw o numerze dwa, która została podana, ale istnieje za to jej wersji ogólna {{Code|nazwa przestrzeni nazw i}} i domyślna {{Code|nazwa przestrzeni nazw}}, ale wtedy dla tego numerkowego liczy się to ogólne z {{Code| i}}, a ponieważ ta nazwa jest pusta, więc będziemy liczyli nazwę przestrzeni nazw z {{Code|nazwa jednostki 2}}. Odpowiadająca powyższemu kodowi, powiedzmy wikikod, według ich zawartości, przedstawia się: <syntaxhighlight lang="mediawiki"> {{#invoke:Pudełko|Nazwa przestrzeni nazw 3}} ---- {{#invoke:Pudełko|Nazwa przestrzeni nazw 3|numer jednostki=2}} </syntaxhighlight> Na podstawie powyższego przykładu otrzymamy wynik o schemacie, nie wyniku, bo tam nie ma zmiennej {{Code|nazwa przestrzeni nazw 1}}, ale jest {{Code|nazwa przestrzeni nazw i}}: <syntaxhighlight lang="mediawiki"> <!-- nazwa przestrzeni nazw=""; --> <!-- Czyli wynik: --> <!-- wynik pusty --> <!-- Widzimy, że wygenerowała się nazwa przestrzeni nazw, którą jest przestrzeń nazw główna, jest ciągiem pustym: ""; --> ---- <!-- Ale nie "nazwa przestrzeni nazw 2", bo jej nie ma, ale za to istnieje "nazwa przestrzeni nazw i"; --> <!-- nazwa przestrzeni nazw 2=nazwa przestrzeni nazw i="", a nazwa jednostki 2="Wikibooks:Strona"; --> <!-- Czyli wynik: --> Wikibooks <!-- Widzimy, że wygenerowała się nazwa przestrzeni nazw, którą jest przestrzeń nieprogramowa, ale projektu, wychodząca z nazwy jednostek w tym przypadku z "nazwa jednostki 2"; --> </syntaxhighlight> Dla parametrów numerkowych nie jest brana w tym powyższym przykładzie zmienna {{Code|nazwa przestrzeni nazw 2}}, bo jej nie ma, ale za to jest {{Code|nazwa przestrzeni nazw i}}, bo ona występuje jako parametr domyślny ogólny dla parametrów numerkowych. Tytaj jest używana jest zmienna {{Code|nazwa jednostki 2}} do wygenerowania ostatecznego wyniku, bo jak można zauważyć, parametry przestrzenne wskazują na przestrzeń główną, a nazwy jednostek już nie. Dla parametrów bazowych mamy zmienną {{Code|nazwa przestrzeni nazw}}, ona jest pusta, więc to zostanie wziete do ostatecznego wyniku. Przykłady w wikikodzie: * {{Code|{{m|Pudełko|Nazwa przestrzeni nazw 3|nazwa przestrzeni nazw{{=}}|nazwa jednostki{{=}}Wikibooks:Strona}}}} → {{Tt|{{#invoke:Pudełko|Nazwa przestrzeni nazw 3|nazwa przestrzeni nazw=|nazwa jednostki=Wikibooks:Szablon}}}} * {{Code|{{m|Pudełko|Nazwa przestrzeni nazw 3|nazwa przestrzeni nazw 2{{=}}|nazwa jednostki 2{{=}}Wikibooks:Strona|numer jednostki{{=}}2}}}} → {{Tt|{{#invoke:Pudełko|Nazwa przestrzeni nazw 3|nazwa przestrzeni nazw 2=|nazwa jednostki 2=Wikibooks:Szablon|numer jednostki=2}}}} Powyżej dla przykładu podano parametry nie w rodzicu w szablonie, tylko w dziecku, jeśli chodzi o parametry nazw przestrzeni nazw i nazw jednostek, ale ich się za to nie powinno podawać w tych ramach, tylko w szablonach, w których wywoływane są te ramki pudełek {{Code|{{m|Pudełko}}}}, ale tak tutaj tak zrobiono by było najłatwiej sprawdzić działanie tego typu funkcji. Analogicznie możemy podawać parametry typu jednostki, np.: wywołaniu modułowym {{Code|{{m|Pudełko|Nazwa przestrzeni nazw 3|typ jednostki 2{{=}}Podręcznik|nazwa jednostki 2{{=}}Szablon:Strona|numer jednostki{{=}}2}}}} (ale wtedy jest brana przestrzeń nazw z nazwy jednostki), ale o tym więcej w rozdziałach {{Code|{{sr|#p["Typ jednostki 3"](frame,i)|p=Pudełko}}}} w „{{sr|#Funkcje typu jednostki|p=Pudełko}}”, on definiuje przestrzenie przedmiotowe, ale można użyć parametru dyskusji typu jednostki z wartością niepustą, wtedy wyświetli się nazwa przestrzeni nazw dyskusji. Jeżeli typ jednostki bazowy wskazuje na przestrzeń nazw główną, wtedy się nie liczą parametry nazw jednostek, a na numerkowy, wtedy się liczy. Również parametry typu jednostki nie powinno się podawać w dziecku w ramce, tylko w rodzicu w szablonie jako parametry, w którym ta ramka jest wywoływana, ale tutaj podano jedynie dla przykładu, jak najłatwiej sprawdzić działanie tych parametrów tej funkcji. Najpierw w funkcji nagłówku brane są parametry nazw przestrzeni nazw, a jeżeli ich nie ma, to parametry typu jednostki, a jeżeli nie ma lub parametry przestrzenne wskazują na przestrzeń główną, i nie ma nazwy jednostki, to generowane są nazwy tej funkcji na podstawie aktualnej strony. === {{Code|p["Nazwa przedmiotowej przestrzeni nazw 3"](frame,i)}} === Funkcja pisze przedmiotową nazwę przestrzeni nazw jakikolwiek nazwy przestrzeni nazw (tzn. nazwę przedmiotową nazwy przestrzenie nazw, czyli nie dyskusji, zamieniana jest na nią samą, czyli identyfikator przestrzeni się nie zmienia, a dyskusji, nie przedmiotową, przekształca się na przedmiotową jej odpowiadającą, czyli w tym przypadku identyfikator przestrzeni zmniejsza się o numer mniej), według podanej w zmiennej {{Code|nazwa przestrzeni nazw}} dla pozycja bazowej w podanych parametrach szablonu rodzicu ramki dziecka, lub dla innej pozycji należy parametr podawać w formie {{Code|nazwa przestrzeni nazw 1}}, {{Code|nazwa przestrzeni nazw 2}}, {{Code|nazwa przestrzeni nazw 3}},..., lub te parametry można podać w postaci ogólnej {{Code|nazwa przestrzeni nazw i}}. Parametry podaje się w parametrach rodzica wywołania tej funkcji {{Code|{{m|Pudełko|Nazwa przedmiotowej przestrzeni nazw 3}}}} (ale ich nie trzeba podawać w dziecku, ale można) i w parametrach dziecka, jeśli chodzi o zmienną {{Code|numer jednostki}}, czyli np.: {{Code|{{m|Pudełko|Nazwa przedmiotowej przestrzeni nazw 3|numer jednostki{{=}}<jakaś liczba całkowita dodatnia>}}}}. Te parametry przestrzenne zamiast w rodzicu w szablonie można podać w ramce dziecka, wtedy parametry dziecka mają pierwszeństwo. Parametry przestrzenne mogą mogą być podane w postaci przestrzeni przedmiotowej lub dyskusji, ale ta funkcja zawsze ją zamienia na przedmiotową. Przestrzeń nazw z parametrów nazw przestrzennych bazowych (bez numerka) może odpowiadać wartości przestrzeni głównej, to wtedy odpowiednia przestrzeń nazw z parametru nazwy jednostki się nie liczy w tej funkcji, aby się liczyła należy użyć funkcji {{Code|{{sr|#p["Nazwa przedmiotowej przestrzeni nazw"](frame,...)|p=Pudełko}}}}. Przestrzeń nazw z parametrów nazw przestrzennych numerkowych może odpowiadać wartości przestrzeni głównej, to wtedy odpowiednia przestrzeń nazw z parametru nazwy jednostki się liczy w tej funkcji, wtedy jest liczona nazwa przestrzeni nazw z tego parametru. Gdy parametry przestrzenne lub typ jednostki w drugim podejściu nie wskazują na przestrzeń główną, to wtedy działanie tej funkcji jest podobne do {{Code|{{sr|#p["Nazwa przedmiotowej przestrzeni nazw 2"](frame,...)|p=Pudełko}}}}. Definicja skrótowa funkcji: <syntaxhighlight lang="lua"> p["Nazwa przedmiotowej przestrzeni nazw 3"]=function(frame,czy_uwzglednic_alternatywna_nazwe,i)...end; </syntaxhighlight> Wtedy ciało funkcji tej, czyli jego definicja w środku, jest: <syntaxhighlight lang="lua"> -- Jest liczony numer parametru nazwy przestrzeni nazw, domyslnie chodzi tu o numer bazowy parametrów przestrzennych; local numer_jednostki=i or frame.args["numer jednostki"]; local liczba_numeru_jednostki=((numer_jednostki)and(tonumber(numer_jednostki)) or 0); local pudelko_pomocne_modul=require("Module:Pudełko/Pomocne"); -- Liczy nazwę przestrzeni nazw przedmiotową na podstawie podanych parametrów; return pudelko_pomocne_modul.Uzyskanie_nazw_jednostki(frame,1,liczba_numeru_jednostki,nil,1); </syntaxhighlight> Parametry funkcji: * {{Code|frame}} - tablica ramki tablicy transportu, * {{Code|czy_uwzglednic_alternatywna_nazwe}} - czy ma uwzględniać nazwę przestrzeni nazw domyślną szablonu, dostępne wartości: {{Code|false}}, w której nazwa domyślna nie jest uwzględniana wtedy, oraz {{Code|nil}} i {{Code|true}}, które oznaczają to samo, w tym jeżeli ona jest uwzględniana, wtedy jest brany parametr pierwszy dziecka, który musi istnieć przy takiej wartości tego parametru, tzn. {{Code|{{m|Pudełko|Nazwa przedmiotowej przestrzeni nazw 3|Dyskusja szablonu}}}} - ta nazwa domyślna zostanie zamieniona na przedmiotową, a jak ona by była przedmiotowa, to żadnej zamiany by nie było, a nazwa uzyskana z nazwy przestrzeni nazw z parametrów przestrzennych jest w takim przypadku błędna, to w takim razie brany jest ten parametr, a jeżeli ta nazwa domyślna jest błędna, czyli {{Code|{{m|Pudełko|Nazwa przedmiotowej przestrzeni nazw 3|Moja przestrzeń}}}}, wtedy funkcja zwraca stan błędu {{Code|(błąd)}}. * {{Code|i}} - numer zmiennej nazwy przestrzeni nazw. Funkcja wykorzystuje {{Code|{{sr|#p.Uzyskanie_nazw_jednostki(frame,...)|p=Pudełko/Pomocne}}}} do wyznaczania ogólnego nazwy przestrzeni nazw dla pozycji bazowej i numerkowej, tzn. dla pozycji: jeden, dwa, trzy,..., itd, i ich ogólnej. Parametr ramki tablicy transportu rodzica szablonu: * {{Code|nazwa przestrzeni nazw}}, {{Code|nazwa przestrzeni nazw 1}}, {{Code|nazwa przestrzeni nazw 2}}, {{Code|nazwa przestrzeni nazw 3}},..., {{Code|nazwa przestrzeni nazw i}} - nazwy przestrzeni nazw dla pozycji bazowej oraz zwykłej i ogólnej numerkowej, * {{Code|typ jednostki}}, {{Code|typ jednostki 1}}, {{Code|typ jednostki 2}}, {{Code|typ jednostki 3}},..., {{Code|typ jednostki i}} - typy jednostek, którym odpowiadają pewne przestrzenie przedmiotowe, dla pozycji bazowej, numerkowej i ogólnej. Parametry ramki tablicy transportu dziecka: * Parametry dziecka są takie same jak rodzica dla funkcji pudełkowej plus tu wymienione, * {{Code|numer jednostki}} - jak parametr {{Code|i}} nie został ustawiony, to wtedy liczy się ta zmienna. Przykłady: <syntaxhighlight lang="mediawiki"> {{Nazwa szablonu 1|nazwa przestrzeni nazw=Wikibooks|nazwa przestrzeni nazw=|nazwa przestrzeni nazw i=|nazwa jednostki=Dyskusja Wikibooks:Strona}} ---- {{Nazwa szablonu 2|nazwa przestrzeni nazw=Wikibooks|nazwa przestrzeni nazw 1=Szablon|nazwa przestrzeni nazw i=|nazwa jednostki 2=Dyskusja Wikibooks:Strona}} </syntaxhighlight> W pierwszym wywołaniu {{Code|nazwa przestrzeni nazw}} jest puste, ale dla tego bazowego (bez numerka) szukamy przestrzeni nazw, a więc ta nazwa jest ostateczna. ---- W drugim wywołaniu w dziecku powiedzmy jest wywołanie, i szukamy nazwy przestrzeni nazw o numerze dwa, która została podana, ale istnieje za to jej wersji ogólna {{Code|nazwa przestrzeni nazw i}} i domyślna {{Code|nazwa przestrzeni nazw}}, ale wtedy dla tego numerkowego liczy się to ogólne z {{Code| i}}, a ponieważ ta nazwa jest pusta, więc będziemy liczyli nazwę przestrzeni nazw z {{Code|nazwa jednostki 2}}. Odpowiadająca powyższemu kodowi, powiedzmy wikikod, według ich zawartości, przedstawia się: <syntaxhighlight lang="mediawiki"> {{#invoke:Pudełko|Nazwa przedmiotowej przestrzeni nazw 3}} ---- {{#invoke:Pudełko|Nazwa przedmiotowej przestrzeni nazw 3|numer jednostki=2}} </syntaxhighlight> Na podstawie powyższego przykładu otrzymamy wynik o schemacie, nie wyniku, bo tam nie ma zmiennej {{Code|nazwa przestrzeni nazw 1}}, ale jest {{Code|nazwa przestrzeni nazw i}}: <syntaxhighlight lang="mediawiki"> <!-- nazwa przestrzeni nazw=""; --> <!-- Czyli wynik: --> <!-- wynik pusty --> <!-- Widzimy, że wygenerowała się nazwa przestrzeni nazw, którą jest przestrzeń nazw główna, jest ciągiem pustym: ""; --> ---- <!-- Ale nie "nazwa przestrzeni nazw 2", bo jej nie ma, ale za to istnieje "nazwa przestrzeni nazw i"; --> <!-- nazwa przestrzeni nazw 2=nazwa przestrzeni nazw i="", a nazwa jednostki 2="Dyskusja Wikibooks:Strona"; --> <!-- Czyli wynik: --> Wikibooks <!-- Widzimy, że wygenerowała się nazwa przestrzeni nazw, którą jest przestrzeń nieprogramowa, ale projektu, wychodząca z nazwy jednostek w tym przypadku z "nazwa jednostki 2"; --> </syntaxhighlight> Dla parametrów numerkowych nie jest brana w tym powyższym przykładzie zmienna {{Code|nazwa przestrzeni nazw 2}}, bo jej nie ma, ale za to jest {{Code|nazwa przestrzeni nazw i}}, bo ona występuje jako parametr domyślny ogólny dla parametrów numerkowych. Tytaj jest używana jest zmienna {{Code|nazwa jednostki 2}} do wygenerowania ostatecznego wyniku, bo jak można zauważyć, parametry przestrzenne wskazują na przestrzeń główną, a nazwy jednostek już nie. Dla parametrów bazowych mamy zmienną {{Code|nazwa przestrzeni nazw}}, ona jest pusta, więc to zostanie wziete do ostatecznego wyniku. Przykłady w wikikodzie: * {{Code|{{m|Pudełko|Nazwa przedmiotowej przestrzeni nazw 3|nazwa przestrzeni nazw{{=}}|nazwa jednostki{{=}}Dyskusja Wikibooks:Strona}}}} → {{Tt|{{#invoke:Pudełko|Nazwa przedmiotowej przestrzeni nazw 3|nazwa przestrzeni nazw=|nazwa jednostki=Dyskusja Wikibooks:Szablon}}}} * {{Code|{{m|Pudełko|Nazwa przedmiotowej przestrzeni nazw 3|nazwa przestrzeni nazw 2{{=}}|nazwa jednostki 2{{=}}Dyskusja Wikibooks:Strona|numer jednostki{{=}}2}}}} → {{Tt|{{#invoke:Pudełko|Nazwa przedmiotowej przestrzeni nazw 3|nazwa przestrzeni nazw 2=|nazwa jednostki 2=Dyskusja Wikibooks:Szablon|numer jednostki=2}}}} Powyżej dla przykładu podano parametry nie w rodzicu w szablonie, tylko w dziecku, jeśli chodzi o parametry nazw przestrzeni nazw, ale ich się za to nie powinno podawać w tych ramach, tylko w szablonach, w których wywoływane są te ramki pudełek {{Code|{{m|Pudełko}}}}, ale tak tutaj tak zrobiono by było najłatwiej sprawdzić działanie tego typu funkcji. Analogicznie możemy podawać parametry typu jednostki, np.: wywołaniu modułowym {{Code|{{m|Pudełko|Nazwa przedmiotowej przestrzeni nazw 3|typ jednostki 2{{=}}strona szablonu|numer jednostki{{=}}2}}}}, ale o tym więcej w rozdziałach {{Code|{{sr|# p["Przedmiotowy typ jednostki 3"](frame,i)|p=Pudełko}}}} w „{{sr|#Funkcje typu jednostki|p=Pudełko}}”, ale wtedy ta sama nazwa przestrzeni nazw reprezentowana przez {{Parametr|typ jednostki 2|strona szablonu}}, jest zamieniana na to samo, lepiej jest tutaj używać parametrów przestrzennych nazw niż typu jednostki, bo typ jednostki ma taką samą wartość dla przestrzeni przedmiotowej, co dyskusji. Tutaj parametr dyskusji typu jednostki bazowy i numerkowy ogólny, czy szczegółowy, nie gra roli, bo nawet, gdy wygenerujemy nazwę przestrzeni dyskusji za pomoca tego parametru, to i tak otrzymamy na samym końcu jego nazwę przedmiotową. Jeżeli typ jednostki bazowy wskazuje na przestrzeń nazw główną, wtedy się nie liczą parametry nazw jednostek, a na numerkowy, wtedy się liczy. Również parametry typu jednostki nie powinno się podawać w dziecku w ramce, tylko w rodzicu w szablonie jako parametry, w którym ta ramka jest wywoływana, ale tutaj podano jedynie dla przykładu, jak najłatwiej sprawdzić działanie tych parametrów tej funkcji. Najpierw w funkcji nagłówku brane są parametry nazw przestrzeni nazw, a jeżeli ich nie ma, to parametry typu jednostki, a jeżeli nie ma, to generowane są nazwy na podstawie aktualnego modułu. === {{Code|p["Nazwa przestrzeni nazw dyskusji 3"](frame,i)}} === Funkcja pisze nazwę przestrzeni nazw dyskusji jakikolwiek nazwy przestrzeni nazw (tzn. nazwę dyskusji nazwy przestrzenie nazw, czyli nie przedmiotowej, zamieniana jest na nią samą, czyli identyfikator przestrzeni się nie zmienia, a przedmiotową, nie dyskusji, przekształca się na dyskusji jej odpowiadającą, czyli w tym przypadku identyfikator przestrzeni zwiększa się o numer więcej), według, i nie zawsze tylko, podanej w zmiennej {{Code|nazwa przestrzeni nazw}} dla pozycja bazowej w podanych parametrach szablonu rodzicu ramki dziecka, lub dla innej pozycji należy parametr podawać w formie {{Code|nazwa przestrzeni nazw 1}}, {{Code|nazwa przestrzeni nazw 2}}, {{Code|nazwa przestrzeni nazw 3}},..., lub te parametry można podać w postaci ogólnej {{Code|nazwa przestrzeni nazw i}}. W tej funkcji trzeba też podawać parametry nazwy jednostek {{Code|nazwa jednostki}}, {{Code|nazwa jednostki 1}}, {{Code|nazwa jednostki 2}}, {{Code|nazwa jednostki 3}},... Parametry podaje się w parametrach rodzica wywołania tej funkcji {{Code|{{m|Pudełko|Nazwa przestrzeni nazw dyskusji 3}}}} (ale ich nie trzeba podawać w dziecku, ale można) i w parametrach dziecka, jeśli chodzi o zmienną {{Code|numer jednostki}}, czyli np.: {{Code|{{m|Pudełko|Nazwa przestrzeni nazw dyskusji 3|numer jednostki{{=}}<jakaś liczba całkowita dodatnia>}}}}. Te parametry przestrzenne zamiast w rodzicu w szablonie można podać w ramce dziecka, wtedy parametry dziecka mają pierwszeństwo. Przestrzeń nazw z parametrów nazw przestrzennych bazowych (bez numerka) może odpowiadać wartości przestrzeni głównej, to wtedy odpowiednia przestrzeń nazw z parametru nazwy jednostki się nie liczy w tej funkcji, aby się liczyła należy użyć funkcji {{Code|{{sr|#p["Nazwa przestrzeni nazw dyskusji"](frame,...)|p=Pudełko}}}}. Przestrzeń nazw z parametrów nazw przestrzennych numerkowych może odpowiadać wartości przestrzeni głównej, to wtedy odpowiednia przestrzeń nazw z parametru nazwy jednostki się liczy w tej funkcji, wtedy jest liczona nazwa przestrzeni nazw z tego parametru. Gdy parametry przestrzenne lub typ jednostki w drugim podejściu nie wskazują na przestrzeń główną, to wtedy działanie tej funkcji jest podobne do {{Code|{{sr|#p["Nazwa przestrzeni nazw dyskusji 2"](frame,...)|p=Pudełko}}}}. Definicja skrótowa funkcji: <syntaxhighlight lang="lua"> p["Nazwa przestrzeni nazw dyskusji 3"]=function(frame,czy_uwzglednic_alternatywna_nazwe,i)...end; </syntaxhighlight> Wtedy ciało funkcji tej, czyli jego definicja w środku, jest: <syntaxhighlight lang="lua"> -- Jest liczony numer parametru nazwy przestrzeni nazw, domyslnie chodzi tu o numer bazowy parametrów przestrzennych; local numer_jednostki=i or frame.args["numer jednostki"]; local liczba_numeru_jednostki=((numer_jednostki)and(tonumber(numer_jednostki)) or 0); local pudelko_pomocne_modul=require("Module:Pudełko/Pomocne"); -- Liczy nazwę przestrzeni nazw dyskusji na podstawie podanych parametrów; return pudelko_pomocne_modul.Uzyskanie_nazw_jednostki(frame,2,liczba_numeru_jednostki,nil,1); </syntaxhighlight> Parametry funkcji: * {{Code|frame}} - tablica ramki tablicy transportu, * {{Code|czy_uwzglednic_alternatywna_nazwe}} - czy ma uwzględniać nazwę przestrzeni nazw domyślną szablonu, dostępne wartości: {{Code|false}}, w której nazwa domyślna nie jest uwzględniana wtedy, oraz {{Code|nil}} i {{Code|true}}, które oznaczają to samo, w tym jeżeli ona jest uwzględniana, wtedy jest brany parametr pierwszy dziecka, który musi istnieć przy takiej wartości tego parametru, tzn. {{Code|{{m|Pudełko|Nazwa przestrzeni nazw dyskusji 3|Szablon}}}}, a nazwa uzyskana nazwy przestrzeni nazw jest w takim przypadku błędna, a jeżeli nazwa domyślna jest błędna, czyli {{Code|{{m|Pudełko|Nazwa przestrzeni nazw dyskusji 3|Moja przestrzeń}}}}, wtedy funkcja zwraca stan błędu {{Code|(błąd)}}. * {{Code|i}} - numer zmiennej nazwy przestrzeni nazw. Funkcja wykorzystuje {{Code|{{sr|#p.Uzyskanie_nazw_jednostki(frame,...)|p=Pudełko/Pomocne}}}} do wyznaczania ogólnego nazwy przestrzeni nazw dla pozycji bazowej i numerkowej, tzn. dla pozycji: jeden, dwa, trzy,..., itd, i ich ogólnej. Parametr ramki tablicy transportu rodzica szablonu: * {{Code|nazwa przestrzeni nazw}}, {{Code|nazwa przestrzeni nazw 1}}, {{Code|nazwa przestrzeni nazw 2}}, {{Code|nazwa przestrzeni nazw 3}},..., {{Code|nazwa przestrzeni nazw i}} - nazwy przestrzeni nazw dla pozycji bazowej oraz zwykłej i ogólnej numerkowej, * {{Code|nazwa jednostki}}, {{Code|nazwa jednostki 1}}, {{Code|nazwa jednostki 2}}, {{Code|nazwa jednostki 3}},... - nazwy jednostek dla pozycji bazowej i numerkowej, * {{Code|typ jednostki}}, {{Code|typ jednostki 1}}, {{Code|typ jednostki 2}}, {{Code|typ jednostki 3}},..., {{Code|typ jednostki i}} - typy jednostek, którym odpowiadają pewne przestrzenie przedmiotowe, dla pozycji bazowej, numerkowej i ogólnej. Parametry ramki tablicy transportu dziecka: * Parametry dziecka są takie same jak rodzica dla funkcji pudełkowej plus tu wymienione, * {{Code|numer jednostki}} - jak parametr {{Code|i}} nie został ustawiony, to wtedy liczy się ta zmienna. Przykłady: <syntaxhighlight lang="mediawiki"> {{Nazwa szablonu 1|nazwa przestrzeni nazw=Wikibooks|nazwa przestrzeni nazw=|nazwa przestrzeni nazw i=|nazwa jednostki=Szablon:Strona}} ---- {{Nazwa szablonu 2|nazwa przestrzeni nazw=Wikibooks|nazwa przestrzeni nazw 1=Szablon|nazwa przestrzeni nazw i=|nazwa jednostki 2=Wikibooks:Strona}} </syntaxhighlight> W pierwszym wywołaniu {{Code|nazwa przestrzeni nazw}} jest puste, ale dla tego bazowego (bez numerka) szukamy przestrzeni nazw, a więc ta nazwa jest ostateczna. ---- W drugim wywołaniu w dziecku powiedzmy jest wywołanie, i szukamy nazwy przestrzeni nazw o numerze dwa, która została podana, ale istnieje za to jej wersji ogólna {{Code|nazwa przestrzeni nazw i}} i domyślna {{Code|nazwa przestrzeni nazw}}, ale wtedy dla tego numerkowego liczy się to ogólne z {{Code| i}}, a ponieważ ta nazwa jest pusta, więc będziemy liczyli nazwę przestrzeni nazw z {{Code|nazwa jednostki 2}}. Odpowiadająca powyższemu kodowi, powiedzmy wikikod, według ich zawartości, przedstawia się: <syntaxhighlight lang="mediawiki"> {{#invoke:Pudełko|Nazwa przestrzeni nazw 3}} ---- {{#invoke:Pudełko|Nazwa przestrzeni nazw 3|numer jednostki=2}} </syntaxhighlight> Na podstawie powyższego przykładu otrzymamy wynik o schemacie, nie wyniku, bo tam nie ma zmiennej {{Code|nazwa przestrzeni nazw 1}}, ale jest {{Code|nazwa przestrzeni nazw i}}: <syntaxhighlight lang="mediawiki"> <!-- nazwa przestrzeni nazw=""; --> <!-- Czyli wynik: --> Dyskusja <!-- Widzimy, że wygenerowała się nazwa przestrzeni nazw, którą jest przestrzeń nazw niegłówna, jest ciągiem niepustym; --> ---- <!-- Ale nie "nazwa przestrzeni nazw 2", bo jej nie ma, ale za to istnieje "nazwa przestrzeni nazw i"; --> <!-- nazwa przestrzeni nazw 2=nazwa przestrzeni nazw i="", a nazwa jednostki 2="Wikibooks:Strona"; --> <!-- Czyli wynik: --> Dyskusja Wikibooks <!-- Widzimy, że wygenerowała się nazwa przestrzeni nazw, którą jest przestrzeń nieprogramowa, ale projektu, wychodząca z nazwy jednostek w tym przypadku z "nazwa jednostki 2"; --> </syntaxhighlight> Dla parametrów numerkowych nie jest brana w tym powyższym przykładzie zmienna {{Code|nazwa przestrzeni nazw 2}}, bo jej nie ma, ale za to jest {{Code|nazwa przestrzeni nazw i}}, bo ona występuje jako parametr domyślny ogólny dla parametrów numerkowych. Tytaj jest używana jest zmienna {{Code|nazwa jednostki 2}} do wygenerowania ostatecznego wyniku, bo jak można zauważyć, parametry przestrzenne wskazują na przestrzeń główną, a nazwy jednostek już nie. Dla parametrów bazowych mamy zmienną {{Code|nazwa przestrzeni nazw}}, ona jest pusta, więc to zostanie wziete do ostatecznego wyniku. Przykłady w wikikodzie: * {{Code|{{m|Pudełko|Nazwa przestrzeni nazw dyskusji 3|nazwa przestrzeni nazw{{=}}|nazwa jednostki{{=}}Wikibooks:Strona}}}} → {{Tt|{{#invoke:Pudełko|Nazwa przestrzeni nazw dyskusji 3|nazwa przestrzeni nazw=|nazwa jednostki=Wikibooks:Szablon}}}} * {{Code|{{m|Pudełko|Nazwa przestrzeni nazw dyskusji 3|nazwa przestrzeni nazw 2{{=}}|nazwa jednostki 2{{=}}Wikibooks:Strona|numer jednostki{{=}}2}}}} → {{Tt|{{#invoke:Pudełko|Nazwa przestrzeni nazw dyskusji 3|nazwa przestrzeni nazw 2=|nazwa jednostki 2=Wikibooks:Szablon|numer jednostki=2}}}} Powyżej dla przykładu podano parametry nie w rodzicu w szablonie, tylko w dziecku, jeśli chodzi o parametry nazw przestrzeni nazw i nazw jednostek, ale ich się za to nie powinno podawać w tych ramach, tylko w szablonach, w których wywoływane są te ramki pudełek {{Code|{{m|Pudełko}}}}, ale tak tutaj tak zrobiono by było najłatwiej sprawdzić działanie tego typu funkcji. Analogicznie możemy podawać parametry typu jednostki, np.: wywołaniu modułowym {{Code|{{m|Pudełko|Nazwa przestrzeni nazw dyskusji 3|typ jednostki 2{{=}}Podręcznik|nazwa jednostki 2{{=}}Szablon:Strona|numer jednostki{{=}}2}}}} (ale wtedy jest brana przestrzeń nazw z nazwy jednostki), ale o tym więcej w rozdziałach {{Code|{{sr|# p["Dyskusyjny typ jednostki 3"](frame,i)|p=Pudełko}}}} w „{{sr|#Funkcje typu jednostki|p=Pudełko}}”, one definiują przestrzenie dyskusji, ale można użyć parametru dyskusji typu jednostki z obojętnie jaką wartością niepustą, czy pustą, czy nawet jej nie podamy, wtedy wyświetli się nazwa przestrzeni nazw dyskusji. Jeżeli typ jednostki bazowy wskazuje na przestrzeń nazw główną, wtedy się nie liczą parametry nazw jednostek, a na numerkowy, wtedy się liczy. Również parametry typu jednostki nie powinno się podawać w dziecku w ramce, tylko w rodzicu w szablonie jako parametry, w którym ta ramka jest wywoływana, ale tutaj podano jedynie dla przykładu, jak najłatwiej sprawdzić działanie tych parametrów tej funkcji. Najpierw w funkcji nagłówku brane są parametry nazw przestrzeni nazw, a jeżeli ich nie ma, to parametry typu jednostki, a jeżeli nie ma lub parametry przestrzenne wskazują na przestrzeń główną, i nie ma nazwy jednostki, to generowane są nazwy tej funkcji na podstawie aktualnej strony. == Funkcje nazw jednostki trzeciej wersji == === {{Code|p["Nazwa jednostki 3"](frame,i)}} === === {{Code|p["Nazwa przedmiotowa jednostki 3"](frame,i)}} === === {{Code|p["Nazwa dyskusji jednostki 3"](frame,i)}} === == Funkcje typu jednostki == === {{Code|p["Typ jednostki"](frame,i)}} === === {{Code|p["Typ jednostki 2"](frame,i)}} === === {{Code|p["Typ jednostki 3"](frame,i)}} === === Funkcje typu jednostki przedmiotowe === ==== {{Code|p["Przedmiotowy typ jednostki"](frame,i)}} ==== ==== {{Code|p["Przedmiotowy typ jednostki 2"](frame,i)}} ==== ==== {{Code|p["Przedmiotowy typ jednostki 3"](frame,i)}} ==== === Fukcje typu jednostki dyskusji === ==== {{Code|p["Dyskusyjny typ jednostki"](frame,i)}} ==== ==== {{Code|p["Dyskusyjny typ jednostki 2"](frame,i)}} ==== ==== {{Code|p["Dyskusyjny typ jednostki 3"](frame,i)}} ==== == Funkcje chech pudełka == === {{Code|p["Cecha pudełka"](frame)}} === === {{Code|p["Przedmiotowa cecha pudełka"](frame)}} === === {{Code|p["Dyskusyjna cecha pudełka"](frame)}} === == Fukcje ogólnego pudełka == === {{Code|p["Ogólne pudełko"](frame)}} === == Funkcje ogólne == === {{Code|p["Tekst pudełka"](frame)}} === == Funkcje błędów pudełka == === {{Code|p["Błędy pudełka"](frame)}} === === {{Code|p["Przedmiotowe błędy pudełka"](frame)}} === === {{Code|p["Dyskusyjne błędy pudełka"](frame)}} === == Funkcje nazw stron == === {{Code|p["Nazwa strony głównej projektu"](frame,i)}} === === {{Code|p["Nazwa strony głównej dla dzieci projektu"](frame,i)}} === == Funkcje kodów == === {{Code|p["Kod języka"](frame,i)}} === === {{Code|p["Kod projektu"](frame,i)}} === === {{Code|p["Klucz projektu"](frame,i)}} === == Funkcje wiki == === {{Code|p["Inny niż język bieżący wiki"](frame)}} === === {{Code|p["Inne niż lokalne wiki"](frame)}} === === {{Code|p["Inne niż bieżące wiki"](frame)}} === == Funkcje typów parametrów, czy podane je == === {{Code|p["Podano parametry nienazwane"](frame)}} === === {{Code|p["Podano parametry numerowane"](frame)}} === === {{Code|p["Podano parametry nazwane"](frame)}} === == Funkcje kodów tego projektu == === {{Code|p["Kod projektu tego projektu"](frame)}} === === {{Code|p["Kod języka tego projektu"](frame)}} === === {{Code|p["Klucz projektu tego projektu"](frame)}} === == Funkcje stron == === {{Code|p["Strona główna tego projektu"](frame)}} === === {{Code|p["Strona główna dla dzieci tego projektu"](frame)}} === == Funkcje nazw stron drugiej wersji == === {{Code|p["Nazwa strony głównej dla dzieci projektu 2"](frame)}} === === {{Code| p["Nazwa strony głównej projektu 2"](frame)}} === {{BrClear}} <noinclude><!-- -->{{ProstaStronaKoniec}}<!-- -->{{Kategoria|Opisy funkcji, w Lua w Scribunto, w modułach}}<!-- --></noinclude> e57qg6pjfcsn5kpno1wbpbdp8syhr7d 540448 540446 2026-04-24T04:12:05Z Persino 2851 /* Funkcje nazw przestrzeni nazw trzeciej wersji */ 540448 wikitext text/x-wiki <noinclude>{{ProstaStronaStart | nagłówek = {{Podrozdział|{{ld2|Pudełko}}|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 pudelko_modul=require("Module:Pudełko"); </syntaxhighlight> dzięki, któremu można wypisywać funkcje należącego do niego. Posługuje się na parametrach pudełkowych {{Parametr|nazwa przestrzeni nazw}} (czy też bez numerka {{Parametr|nazwa przestrzeni nazw i}} dla tego numerowanego) lub te z numerkiem po jednej spacji w nich (ale nie dla tego z końcówką {{Code| i}}) mogą zostać użyte jako parametry szablonu. Moduł {{Code|{{ld2|Pudełko}}}} przedstawia funkcje nazw w oparciu o funkcje nazw {{Code|{{ld2|Nazwy}}}}, generuje on nazwy za pomocą parametrów pudełkowych podanych poniżej. Parametr {{Parametr|nazwa jednostki}} (lub parametr {{Parametr|cel}} dla numerka tego pierwszego, tego alternatywnego), lub te z numerkiem po jednej spacji w nazwie parametru, albo numerowane numerkami {{Code|1}}, {{Code|2}},..., mogą zostać użyte jako parametry szablonu. Parametry określające rodzaj jednostki {{Parametr|typ jednostki}} z {{Parametr|dyskusja typu jednostki}}, itp. w wersjach z numerkiem po jednej spacji w nich mogą zostać użyte jako parametry szablonu. A te tymi numerowanymi liczbami naturalnymi {{Tt|nazwy jednostki}} od jedynki wzwyż poprzez szablon, w którym są one użyte, one też mogą być użyte z dwukropkiem, te numerowane, na samym początku nazwy, wtedy one są traktowane jako pełne nazwy strony, i wtedy one nie zostaną z interpretowane, że do nich trzeba użyć parametr odpowiedni z nazwą przetrzeni nazw z tego numerowanego, czy ogólny, aby utworzyć znów inną pełną nazwę strony dla tego numerka. Zestawienie: * {{Code|nazwa przestrzeni nazw}} i {{Code|nazwa przestrzeni nazw i}} (ogólna nazwa przestrzeni nazw dla wszystkich numerków, i tych numerowanych jednostek) - i to pierwsze z numerkiem, tzn. {{Code|nazwa przestrzeni nazw 1}}, {{Code|nazwa przestrzeni nazw 2}}, ..., * {{Code|nazwa jednostki}} - i te z numerkiem: {{Code|nazwa jednostki 1}}, {{Code|nazwa jednostki 2}}, ..., lub gdy jest zamiast tego parametrem numerowany, {{Code|1}}, {{Code|2}},..., który dla tego pierwszego może być uznany jako: {{Code|cel}} {{=}} {{Code|1}}, * {{Code|typ jednostki}} (parametr bazowy) i {{Code|typ jednostki i}} (parametr domyślny numerkowy) - i te z numerkiem: {{Code|typ jednostki 1}}, {{Code|typ jednostki 2}}, ..., tzn. gdy chcemy określić z jakim typem jednostki mamy do czynienia w zależności do jakiej przestrzeni nazw należy, a w danej, czy jest on np. programowy, czy tylko jest opisem, jak to bywa w szablonach {{Np|Template|link=tak}}, podobnie jest w przypadku {{Np|Module|link=tak}}, czy jak jest w innych przestrzeniach nazw, ** {{Code|dyskusja typu jednostki}} (parametr bazowy) i {{Code|dyskusja typu jednostki i}} (parametr domyślny numerkowy) - i te z numerkiem: {{Code|dyskusja typu jednostki 1}}, {{Code|dyskusja typu jednostki 2}}, ..., gdy chcemy określić wartością niepustą,że chodzi tutaj o typ jednostki. == {{Code|p.CzyNiepoprawnaNazwa(nazwa_jednostki)}} == Funkcja sprawdzajaca, czy jest poprawnie podana nazwa jednostki, czy ma poprawną nazwę. Znakami tymi, z których nie powinna składać się nazwa jest {{Code|<nowiki>{}<>|[]#\n</nowiki>}} i dodatkowo znak {{Code|&#127;}} (kod {{Code|{{Nowiki|&#127;}}}}). Też nie może składać się z trzech znaków tyldy, tzn. {{Code|<nowiki>~~~</nowiki>}}. Również w swojej budowie nie może składać się ze kodów {{Strong|HTML}} literowych o wzorze {{Code|{{Nowiki|&(%a+);}}}}. Natomiast może składać się z {{Code|{{Nowiki|&#(%d+);}}}} i {{Code|{{Nowiki|&#x(%x+);}}}}, ale w pierw te kody muszą być zamienione na normalne znaki. Skrótowa definicja funkcji: <syntaxhighlight lang="lua"> function p.CzyNiepoprawnaNazwa(nazwa_jednostki)...end; </syntaxhighlight> Wtedy ciało funkcji tej, czyli jego definicja w środku, jest: <syntaxhighlight lang="lua"> -- Moduł: "Moduł:Html/dane", służy do ładowania znaku o kodzie HTML "&#127;"; local html_dane_modul=mw.loadData("Module:Html/dane"); return mw.ustring.match(nazwa_jednostki,"[{}<>|%[%]#\n"..html_dane_modul.znak_127.."]+") or mw.ustring.match(nazwa_jednostki,"~~~") or mw.ustring.match(nazwa_jednostki,"&(%a+);"); </syntaxhighlight> Parametry: * {{Code|nazwa_jednostki}} - nazwa jednostki do sprawdzenia. Przykłady: <syntaxhighlight lang="lua"> local pudelko_modul=require("Module:Pudełko"); -- Podana przykładowa niepoprawna nazwa jedostki local nazwa_jednostki="Nazwa pliku [[Nazwa linku w pliku]]"; -- Fukcja zwróci wartość: local czy_poprawna_nazwa=true; local czy_poprawna_nazwa=pudelko_modul.CzyNiepoprawnaNazwa(nazwa_jednostki); </syntaxhighlight> == Funkcje nazw przestrzeni nazw == === {{Code|p["Nazwa przestrzeni nazw"](frame,...)}} === Funkcja pisze nazwę przestrzeni nazw, niezależnie, czy to jest przedmiotowa, czy dyskusji, według podanej w zmiennej {{Code|nazwa przestrzeni nazw}} dla pozycja bazowej w podanych parametrach szablonu rodzicu ramki dziecka, lub dla innej pozycji należy parametr podawać w formie {{Code|nazwa przestrzeni nazw 1}}, {{Code|nazwa przestrzeni nazw 2}}, {{Code|nazwa przestrzeni nazw 3}},..., lub te parametry można podać w postaci ogólnej {{Code|nazwa przestrzeni nazw i}}. Parametry podaje się w parametrach rodzica wywołania tej funkcji {{Code|{{m|Pudełko|Nazwa przestrzeni nazw}}}} (ale ich nie trzeba podawać w dziecku, ale można) i w parametrach dziecka, jeśli chodzi o zmienną {{Code|numer jednostki}}, czyli np.: {{Code|{{m|Pudełko|Nazwa przestrzeni nazw|numer jednostki{{=}}<jakaś liczba całkowita dodatnia>}}}}. Te parametry przestrzenne zamiast w rodzicu w szablonie można podać w ramce dziecka, wtedy parametry dziecka mają pierwszeństwo. Przestrzeń nazw z parametrów nazw przestrzennych może odpowiadać wartości przestrzeni głównej, to wtedy odpowiednia przestrzeń nazw z parametru nazwy jednostki się nie liczy w tej funkcji, aby się liczyła należy użyć funkcji {{Code|{{sr|#p["Nazwa przestrzeni nazw 2"](frame,...)|p=Pudełko}}}}. Definicja skrótowa funkcji: <syntaxhighlight lang="lua"> p["Nazwa przestrzeni nazw"]=function(frame,czy_uwzglednic_alternatywna_nazwe,i)...end; </syntaxhighlight> Wtedy ciało funkcji tej, czyli jego definicja w środku, jest: <syntaxhighlight lang="lua"> -- Jest liczony numer parametru nazwy przestrzeni nazw, domyslnie chodzi tu o numer bazowy parametrów przestrzennych; local numer_jednostki=i or frame.args["numer jednostki"]; local liczba_numer_jednostki=((numer_jednostki)and(tonumber(numer_jednostki))or 0); local pudelko_pomocne_modul=require("Module:Pudełko/Pomocne"); -- Liczy nazwę przestrzeni nazw na podstawie podanych parametrów; return pudelko_pomocne_modul.Nazwa_przestrzeni_nazw(frame,0, czy_uwzglednic_alternatywna_nazwe,liczba_numer_jednostki); </syntaxhighlight> Parametry funkcji: * {{Code|frame}} - tablica ramki tablicy transportu, * {{Code|czy_uwzglednic_alternatywna_nazwe}} - czy ma uwzględniać nazwę przestrzeni nazw domyślną szablonu, dostępne wartości: {{Code|false}}, w której nazwa domyślna nie jest uwzględniana wtedy, oraz {{Code|nil}} i {{Code|true}}, które oznaczają to samo, w tym jeżeli ona jest uwzględniana, wtedy jest brany parametr pierwszy dziecka, który musi istnieć przy takiej wartości tego parametru, tzn. {{Code|{{m|Pudełko|Nazwa przestrzeni nazw|Szablon}}}}, a nazwa uzyskana nazwy przestrzeni nazw jest w takim przypadku błędna, a jeżeli nazwa domyślna jest błędna, czyli {{Code|{{m|Pudełko|Nazwa przestrzeni nazw|Moja przestrzeń}}}}, wtedy funkcja zwraca stan błędu {{Code|(błąd)}}. * {{Code|i}} - numer zmiennej nazwy przestrzeni nazw. Funkcja wykorzystuje {{Code|{{sr|#p.Nazwa_przestrzeni_nazw(frame,...)|p=Pudełko/Pomocne}}}} do wyznaczania ogólnego nazwy przestrzeni nazw dla pozycji bazowej i numerkowej, tzn. dla pozycji: jeden, dwa, trzy,..., itd, i ich ogólnej. Parametr ramki tablicy transportu rodzica szablonu: * {{Code|nazwa przestrzeni nazw}}, {{Code|nazwa przestrzeni nazw 1}}, {{Code|nazwa przestrzeni nazw 2}}, {{Code|nazwa przestrzeni nazw 3}},..., {{Code|nazwa przestrzeni nazw i}} - nazwy przestrzeni nazw dla pozycji bazowej oraz zwykłej i ogólnej numerkowej, * {{Code|typ jednostki}}, {{Code|typ jednostki 1}}, {{Code|typ jednostki 2}}, {{Code|typ jednostki 3}},..., {{Code|typ jednostki i}} - typy jednostek, którym odpowiadają pewne przestrzenie przedmiotowe, dla pozycji bazowej, numerkowej i ogólnej, ** {{Code|dyskusja typu jednostki}}, {{Code|dyskusja typu jednostki 1}}, {{Code|dyskusja typ jednostki 2}}, {{Code|dyskusja typ jednostki 3}},..., {{Code|dyskusja typ jednostki i}} - czy dany typ jednostki ma przedstawiać, jeśli niepusta, przestrzeń dyskusji dla pozycji bazowej, numerkowej i ogólnej. Parametry ramki tablicy transportu dziecka: * Parametry dziecka są takie same jak rodzica dla funkcji pudełkowej plus tu wymienione, * {{Code|numer jednostki}} - jak parametr {{Code|i}} nie został ustawiony, to wtedy liczy się ta zmienna. Przykłady: <syntaxhighlight lang="mediawiki"> {{Nazwa szablonu|nazwa przestrzeni nazw=Wikibooks|nazwa przestrzeni nazw 2=Szablon|nazwa przestrzeni nazw i=Moduł}} </syntaxhighlight> W dziecku powiedzmy jest wywołanie, i szukamy nazwy przestrzeni nazw o numerze dwa, która nie została podana, ale istnieje za to jej wersji ogólna {{Code|nazwa przestrzeni nazw i}} i domyślna {{Code|nazwa przestrzeni nazw}}: <syntaxhighlight lang="mediawiki"> {{#invoke:Pudełko|Nazwa przestrzeni nazw|numer jednostki=1}} </syntaxhighlight> Na podstawie powyższego przykładu otrzymamy wynik o schemacie, nie wyniku, bo tam nie ma zmiennej {{Code|nazwa przestrzeni nazw 1}}, ale jest {{Code|nazwa przestrzeni nazw i}}: <syntaxhighlight lang="mediawiki"> <!-- Ale nie "nazwa przestrzeni nazw", bo jej nie ma, ale za to istnieje "nazwa przestrzeni nazw i"; --> <!-- nazwa przestrzeni nazw 2=nazwa przestrzeni nazw i=Moduł; --> <!-- Czyli wynik: --> Moduł <!-- Widzimy, że wygenerowała się nazwa przestrzeni nazw, którą jest przestrzeń programowa, którą również jest "Szablon"; --> </syntaxhighlight> Nie jest brana w tym powyższym przykładzie zmienna {{Code|nazwa przestrzeni nazw}}, bo jej nie ma, ale za to jest {{Code|nazwa przestrzeni nazw i}}, bo ona występuje jako parametr domyślny ogólny dla parametrów numerkowych. Przykłady w wikikodzie: * {{Code|{{m|Pudełko|Nazwa przestrzeni nazw|numer jednostki{{=}}2}}}} → {{Tt|{{#invoke:Pudełko|Nazwa przestrzeni nazw|numer jednostki=2}}}} * {{Code|{{m|Pudełko|Nazwa przestrzeni nazw|Szablon|nazwa przestrzeni nazw i{{=}}Moja przestrzeń|numer jednostki{{=}}2}}}} → {{Tt|{{#invoke:Pudełko|Nazwa przestrzeni nazw|Szablon|nazwa przestrzeni nazw i=Moja przestrzeń|numer jednostki=2}}}} * {{Code|{{m|Pudełko|Nazwa przestrzeni nazw|nazwa przestrzeni nazw 2{{=}}Szablon|numer jednostki{{=}}2}}}} → {{Tt|{{#invoke:Pudełko|Nazwa przestrzeni nazw|nazwa przestrzeni nazw 2=Szablon|numer jednostki=2}}}} * {{Code|{{m|Pudełko|Nazwa przestrzeni nazw|nazwa przestrzeni nazw 2{{=}}Szablon|numer jednostki{{=}}2}}}} → {{Tt|{{#invoke:Pudełko|Nazwa przestrzeni nazw|nazwa przestrzeni nazw i=Szablon|numer jednostki=2}}}} * {{Code|{{m|Pudełko|Nazwa przestrzeni nazw|nazwa przestrzeni nazw{{=}}Szablon|numer jednostki{{=}}2}}}} → {{Tt|{{#invoke:Pudełko|Nazwa przestrzeni nazw|nazwa przestrzeni nazw=Szablon|numer jednostki=2}}}} Powyżej dla przykładu podano parametry nie w rodzicu w szablonie, tylko w dziecku, jeśli chodzi o parametry nazw przestrzeni nazw, ale ich się za to nie powinno podawać w tych ramach, tylko w szablonach, w których wywoływane są te ramki pudełek {{Code|{{m|Pudełko}}}}, ale tak tutaj tak zrobiono by było najłatwiej sprawdzić działanie tego typu funkcji. Analogicznie możemy podawać parametry typu jednostki, np.: wywołaniu modułowym {{Code|{{m|Pudełko|Nazwa przestrzeni nazw|typ jednostki 2{{=}}strona szablonu|numer jednostki{{=}}2}}}}, ale o tym więcej w rozdziałach {{Code|{{sr|# p["Typ jednostki"](frame,i)|p=Pudełko}}}} w „{{sr|#Funkcje typu jednostki|p=Pudełko}}”, on definiuje przestrzenie przedmiotowe, ale można użyć parametru dyskusji typu jednostki z wartością niepustą, wtedy wyświetli się nazwa przestrzeni nazw dyskusji. Również parametry typu jednostki nie powinno się podawać w dziecku w ramce, tylko w rodzicu w szablonie jako parametry, w którym ta ramka jest wywoływana, ale tutaj podano jedynie dla przykładu, jak najłatwiej sprawdzić działanie tych parametrów tej funkcji. Najpierw w funkcji nagłówku brane są parametry nazw przestrzeni nazw, a jeżeli ich nie ma, to parametry typu jednostki, a jeżeli nie ma, to generowane są nazwy na podstawie aktualnego modułu. === {{Code|p["Nazwa przedmiotowej przestrzeni nazw"](frame,...)}} === Funkcja pisze przedmiotową nazwę przestrzeni nazw jakikolwiek nazwy przestrzeni nazw (tzn. nazwę przedmiotową nazwy przestrzenie nazw, czyli nie dyskusji, zamieniana jest na nią samą, czyli identyfikator przestrzeni się nie zmienia, a dyskusji, nie przedmiotową, przekształca się na przedmiotową jej odpowiadającą, czyli w tym przypadku identyfikator przestrzeni zmniejsza się o numer mniej), według podanej w zmiennej {{Code|nazwa przestrzeni nazw}} dla pozycja bazowej w podanych parametrach szablonu rodzicu ramki dziecka, lub dla innej pozycji należy parametr podawać w formie {{Code|nazwa przestrzeni nazw 1}}, {{Code|nazwa przestrzeni nazw 2}}, {{Code|nazwa przestrzeni nazw 3}},..., lub te parametry można podać w postaci ogólnej {{Code|nazwa przestrzeni nazw i}}. Parametry podaje się w parametrach rodzica wywołania tej funkcji {{Code|{{m|Pudełko|Nazwa przedmiotowej przestrzeni nazw}}}} (ale ich nie trzeba podawać w dziecku, ale można) i w parametrach dziecka, jeśli chodzi o zmienną {{Code|numer jednostki}}, czyli np.: {{Code|{{m|Pudełko|Nazwa przedmiotowej przestrzeni nazw|numer jednostki{{=}}<jakaś liczba całkowita dodatnia>}}}}. Te parametry przestrzenne zamiast w rodzicu w szablonie można podać w ramce dziecka, wtedy parametry dziecka mają pierwszeństwo. Parametry przestrzenne mogą mogą być podane w postaci przestrzeni przedmiotowej lub dyskusji, ale ta funkcja zawsze ją zamienia na przedmiotową. Przestrzeń nazw z parametrów nazw przestrzennych może odpowiadać wartości przestrzeni głównej, to wtedy odpowiednia przestrzeń nazw z parametru nazwy jednostki się nie liczy w tej funkcji, aby się liczyła należy użyć funkcji {{Code|{{sr|#p["Nazwa przedmiotowej przestrzeni nazw 2"](frame,...)|p=Pudełko}}}}. Definicja skrótowa funkcji: <syntaxhighlight lang="lua"> p["Nazwa przedmiotowej przestrzeni nazw"]=function(frame,czy_uwzglednic_alternatywna_nazwe,i)...end; </syntaxhighlight> Wtedy ciało funkcji tej, czyli jego definicja w środku, jest: <syntaxhighlight lang="lua"> -- Jest liczony numer parametru nazwy przestrzeni nazw, domyslnie chodzi tu o numer bazowy parametrów przestrzennych; local numer_jednostki=i or frame.args["numer jednostki"]; local liczba_numer_jednostki=((numer_jednostki)and(tonumber(numer_jednostki))or 0); local pudelko_pomocne_modul=require("Module:Pudełko/Pomocne"); -- Liczy nazwę przestrzeni nazw przedmiotową na podstawie podanych parametrów; return pudelko_pomocne_modul.Nazwa_przestrzeni_nazw(frame,1, czy_uwzglednic_alternatywna_nazwe,liczba_numer_jednostki); </syntaxhighlight> Parametry funkcji: * {{Code|frame}} - tablica ramki tablicy transportu, * {{Code|czy_uwzglednic_alternatywna_nazwe}} - czy ma uwzględniać nazwę przestrzeni nazw domyślną szablonu, dostępne wartości: {{Code|false}}, w której nazwa domyślna nie jest uwzględniana wtedy, oraz {{Code|nil}} i {{Code|true}}, które oznaczają to samo, w tym jeżeli ona jest uwzględniana, wtedy jest brany parametr pierwszy dziecka, który musi istnieć przy takiej wartości tego parametru, tzn. {{Code|{{m|Pudełko|Nazwa przedmiotowej przestrzeni nazw|Dyskusja szablonu}}}} - ta nazwa domyślna zostanie zamieniona na przedmiotową, a jak ona by była przedmiotowa, to żadnej zamiany by nie było, a nazwa uzyskana z nazwy przestrzeni nazw z parametrów przestrzennych jest w takim przypadku błędna, to w takim razie brany jest ten parametr, a jeżeli ta nazwa domyślna jest błędna, czyli {{Code|{{m|Pudełko|Nazwa przedmiotowej przestrzeni nazw|Moja przestrzeń}}}}, wtedy funkcja zwraca stan błędu {{Code|(błąd)}}. * {{Code|i}} - numer zmiennej nazwy przestrzeni nazw. Funkcja wykorzystuje {{Code|{{sr|#p.Nazwa_przestrzeni_nazw(frame,...)|p=Pudełko/Pomocne}}}} do wyznaczania ogólnego nazwy przestrzeni nazw dla pozycji bazowej i numerkowej, tzn. dla pozycji: jeden, dwa, trzy,..., itd, i ich ogólnej. Parametr ramki tablicy transportu rodzica szablonu: * {{Code|nazwa przestrzeni nazw}}, {{Code|nazwa przestrzeni nazw 1}}, {{Code|nazwa przestrzeni nazw 2}}, {{Code|nazwa przestrzeni nazw 3}},..., {{Code|nazwa przestrzeni nazw i}} - nazwy przestrzeni nazw dla pozycji bazowej oraz zwykłej i ogólnej numerkowej, * {{Code|typ jednostki}}, {{Code|typ jednostki 1}}, {{Code|typ jednostki 2}}, {{Code|typ jednostki 3}},..., {{Code|typ jednostki i}} - typy jednostek, którym odpowiadają pewne przestrzenie przedmiotowe, dla pozycji bazowej, numerkowej i ogólnej. Parametry ramki tablicy transportu dziecka: * Parametry dziecka są takie same jak rodzica dla funkcji pudełkowej plus tu wymienione, * {{Code|numer jednostki}} - jak parametr {{Code|i}} nie został ustawiony, to wtedy liczy się ta zmienna. Przykłady: <syntaxhighlight lang="mediawiki"> {{Nazwa szablonu|nazwa przestrzeni nazw=Dyskusja Wikibooks|nazwa przestrzeni nazw 2=Dyskusja szablonu|nazwa przestrzeni nazw i=Dyskusja modułu}} </syntaxhighlight> W dziecku powiedzmy jest wywołanie, i szukamy nazwy przestrzeni nazw o numerze dwa, która nie została podana, ale istnieje za to jej wersji ogólna {{Code|nazwa przestrzeni nazw i}} i domyślna {{Code|nazwa przestrzeni nazw}}: <syntaxhighlight lang="mediawiki"> {{#invoke:Pudełko|Nazwa przedmiotowej przestrzeni nazw|numer jednostki=1}} </syntaxhighlight> Na podstawie powyższego przykładu otrzymamy wynik o schemacie, nie wyniku, bo tam nie ma zmiennej {{Code|nazwa przestrzeni nazw 1}}, ale jest {{Code|nazwa przestrzeni nazw i}}: <syntaxhighlight lang="mediawiki"> <!-- Ale nie "nazwa przestrzeni nazw", bo jej nie ma, ale za to istnieje "nazwa przestrzeni nazw i"; --> <!-- nazwa przestrzeni nazw 2=nazwa przestrzeni nazw i=Dyskusja modułu; --> <!-- Czyli wynik: --> Moduł <!-- Widzimy, że wygenerowała się nazwa przestrzeni nazw, którą jest przestrzeń przedmiotowa programowa przestrzeni dyskusji "Dyskusja modułu", którą również jest "Szablon" jego przestrzeni dyskusji "Dyskusja szablonu", a dla ich przestrzeni przedmiotowej, zamiast dyskusji, to samo przekształca się na to samo; --> </syntaxhighlight> Nie jest brana w tym powyższym przykładzie zmienna {{Code|nazwa przestrzeni nazw}}, bo jej nie ma, ale za to jest {{Code|nazwa przestrzeni nazw i}}, bo ona występuje jako parametr domyślny ogólny dla parametrów numerkowych. Przykłady w wikikodzie: * {{Code|{{m|Pudełko|Nazwa przedmiotowej przestrzeni nazw|numer jednostki{{=}}2}}}} → {{Tt|{{#invoke:Pudełko|Nazwa przedmiotowej przestrzeni nazw|numer jednostki=2}}}} * {{Code|{{m|Pudełko|Nazwa przedmiotowej przestrzeni nazw|Dyskusja szablonu|nazwa przestrzeni nazw i{{=}}Moja przestrzeń|numer jednostki{{=}}2}}}} → {{Tt|{{#invoke:Pudełko|Nazwa przedmiotowej przestrzeni nazw|Dyskusja szablonu|nazwa przestrzeni nazw i=Moja przestrzeń|numer jednostki=2}}}} * {{Code|{{m|Pudełko|Nazwa przedmiotowej przestrzeni nazw|nazwa przestrzeni nazw 2{{=}}Dyskusja szablonu|numer jednostki{{=}}2}}}} → {{Tt|{{#invoke:Pudełko|Nazwa przedmiotowej przestrzeni nazw|nazwa przestrzeni nazw 2=Dyskusja szablonu|numer jednostki=2}}}} * {{Code|{{m|Pudełko|Nazwa przedmiotowej przestrzeni nazw|nazwa przestrzeni nazw 2{{=}}Dyskusja szablonu|numer jednostki{{=}}2}}}} → {{Tt|{{#invoke:Pudełko|Nazwa przedmiotowej przestrzeni nazw|nazwa przestrzeni nazw i=Dyskusja szablonu|numer jednostki=2}}}} * {{Code|{{m|Pudełko|Nazwa przedmiotowej przestrzeni nazw|nazwa przestrzeni nazw{{=}}Dyskusja szablonu|numer jednostki{{=}}2}}}} → {{Tt|{{#invoke:Pudełko|Nazwa przedmiotowej przestrzeni nazw|nazwa przestrzeni nazw=Dyskusja szablonu|numer jednostki=2}}}} Powyżej dla przykładu podano parametry nie w rodzicu w szablonie, tylko w dziecku, jeśli chodzi o parametry nazw przestrzeni nazw, ale ich się za to nie powinno podawać w tych ramach, tylko w szablonach, w których wywoływane są te ramki pudełek {{Code|{{m|Pudełko}}}}, ale tak tutaj tak zrobiono by było najłatwiej sprawdzić działanie tego typu funkcji. Analogicznie możemy podawać parametry typu jednostki, np.: wywołaniu modułowym {{Code|{{m|Pudełko|Nazwa przedmiotowej przestrzeni nazw|typ jednostki 2{{=}}strona szablonu|numer jednostki{{=}}2}}}}, ale o tym więcej w rozdziałach {{Code|{{sr|# p["Przedmiotowy typ jednostki"](frame,i)|p=Pudełko}}}} w „{{sr|#Funkcje typu jednostki|p=Pudełko}}”, ale wtedy ta sama nazwa przestrzeni nazw reprezentowana przez {{Parametr|typ jednostki 2|strona szablonu}}, jest zamieniana na to samo, lepiej jest tutaj używać parametrów przestrzennych nazw niż typu jednostki, bo typ jednostki ma taką samą wartość dla przestrzeni przedmiotowej, co dyskusji. Tutaj parametr dyskusji typu jednostki bazowy i numerkowy ogólny, czy szczegółowy, nie gra roli, bo nawet, gdy wygenerujemy nazwę przestrzeni dyskusji za pomoca tego parametru, to i tak otrzymamy na samym końcu jego nazwę przedmiotową. Również parametry typu jednostki nie powinno się podawać w dziecku w ramce, tylko w rodzicu w szablonie jako parametry, w którym ta ramka jest wywoływana, ale tutaj podano jedynie dla przykładu, jak najłatwiej sprawdzić działanie tych parametrów tej funkcji. Najpierw w funkcji nagłówku brane są parametry nazw przestrzeni nazw, a jeżeli ich nie ma, to parametry typu jednostki, a jeżeli nie ma, to generowane są nazwy na podstawie aktualnego modułu. === {{Code|p["Nazwa przestrzeni nazw dyskusji"](frame,...)}} === Funkcja pisze nazwę przestrzeni nazw dyskusji jakikolwiek nazwy przestrzeni nazw (tzn. nazwę przedmiotową nazwy przestrzenie nazw, czyli nie dyskusji, zamieniana jest na dyskusji, czyli identyfikator przestrzeni się zmienia jeden wyżej, a dyskusji, nie przedmiotową, przekształca się na tą samą), według podanej w zmiennej {{Code|nazwa przestrzeni nazw}} dla pozycja bazowej w podanych parametrach szablonu rodzicu ramki dziecka, lub dla innej pozycji należy parametr podawać w formie {{Code|nazwa przestrzeni nazw 1}}, {{Code|nazwa przestrzeni nazw 2}}, {{Code|nazwa przestrzeni nazw 3}},..., lub te parametry można podać w postaci ogólnej {{Code|nazwa przestrzeni nazw i}}. Parametry podaje się w parametrach rodzica wywołania tej funkcji {{Code|{{m|Pudełko|Nazwa przestrzeni nazw dyskusji}}}} (ale ich nie trzeba podawać w dziecku, ale można) i w parametrach dziecka, jeśli chodzi o zmienną {{Code|numer jednostki}}, czyli np.: {{Code|{{m|Pudełko|Nazwa przestrzeni nazw dyskusji|numer jednostki{{=}}<jakaś liczba całkowita dodatnia>}}}}. Te parametry przestrzenne zamiast w rodzicu w szablonie można podać w ramce dziecka, wtedy parametry dziecka mają pierwszeństwo. Parametry przestrzenne mogą mogą być podane w postaci przestrzeni przedmiotowej lub dyskusji, ale ta funkcja zawsze ją zamienia na dyskusji. Przestrzeń nazw z parametrów nazw przestrzennych może odpowiadać wartości przestrzeni głównej, to wtedy odpowiednia przestrzeń nazw z parametru nazwy jednostki się nie liczy w tej funkcji, aby się liczyła należy użyć funkcji {{Code|{{sr|#p["Nazwa przestrzeni nazw dyskusji 2"](frame,...)|p=Pudełko}}}}. Definicja skrótowa funkcji: <syntaxhighlight lang="lua"> p["Nazwa przestrzeni nazw dyskusji"]=function(frame,czy_uwzglednic_alternatywna_nazwe,i)...end; </syntaxhighlight> Wtedy ciało funkcji tej, czyli jego definicja w środku, jest: <syntaxhighlight lang="lua"> -- Jest liczony numer parametru nazwy przestrzeni nazw, domyslnie chodzi tu o numer bazowy parametrów przestrzennych; local numer_jednostki=i or frame.args["numer jednostki"]; local liczba_numer_jednostki=((numer_jednostki)and(tonumber(numer_jednostki))or 0); local pudelko_pomocne_modul=require("Module:Pudełko/Pomocne"); -- Liczy nazwę przestrzeni nazw dyskusji na podstawie podanych parametrów; return pudelko_pomocne_modul.Nazwa_przestrzeni_nazw(frame,2, czy_uwzglednic_alternatywna_nazwe,liczba_numer_jednostki); </syntaxhighlight> Parametry funkcji: * {{Code|frame}} - tablica ramki tablicy transportu, * {{Code|czy_uwzglednic_alternatywna_nazwe}} - czy ma uwzględniać nazwę przestrzeni nazw domyślną szablonu, dostępne wartości: {{Code|false}}, w której nazwa domyślna nie jest uwzględniana wtedy, oraz {{Code|nil}} i {{Code|true}}, które oznaczają to samo, w tym jeżeli ona jest uwzględniana, wtedy jest brany parametr pierwszy dziecka, który musi istnieć przy takiej wartości tego parametru, tzn. {{Code|{{m|Pudełko|Nazwa przestrzeni nazw dyskusji|Szablon}}}} - ta nazwa domyślna zostanie przekształcona na dyskusji, a jeżeli ona by była dyskusji, to nie byłoby żadnego przekształcenia, a nazwa uzyskana nazwy przestrzeni nazw z parametrów przestrzennych jest w takim przypadku błędna, to w takim razie brany jest ten parametr, a jeżeli nazwa domyślna jest błędna, czyli {{Code|{{m|Pudełko|Nazwa przestrzeni nazw dyskusji|Moja przestrzeń}}}}, wtedy funkcja zwraca stan błędu {{Code|(błąd)}}. * {{Code|i}} - numer zmiennej nazwy przestrzeni nazw. Funkcja wykorzystuje {{Code|{{sr|#p.Nazwa_przestrzeni_nazw(frame,...)|p=Pudełko/Pomocne}}}} do wyznaczania ogólnego nazwy przestrzeni nazw dla pozycji bazowej i numerkowej, tzn. dla pozycji: jeden, dwa, trzy,..., itd, i ich ogólnej. Parametr ramki tablicy transportu rodzica szablonu: * {{Code|nazwa przestrzeni nazw}}, {{Code|nazwa przestrzeni nazw 1}}, {{Code|nazwa przestrzeni nazw 2}}, {{Code|nazwa przestrzeni nazw 3}},..., {{Code|nazwa przestrzeni nazw i}} - nazwy przestrzeni nazw dla pozycji bazowej oraz zwykłej i ogólnej numerkowej, * {{Code|typ jednostki}}, {{Code|typ jednostki 1}}, {{Code|typ jednostki 2}}, {{Code|typ jednostki 3}},..., {{Code|typ jednostki i}} - typy jednostek, którym odpowiadają pewne przestrzenie przedmiotowe, dla pozycji bazowej, numerkowej i ogólnej. Parametry ramki tablicy transportu dziecka: * Parametry dziecka są takie same jak rodzica dla funkcji pudełkowej plus tu wymienione, * {{Code|numer jednostki}} - jak parametr {{Code|i}} nie został ustawiony, to wtedy liczy się ta zmienna. Przykłady: <syntaxhighlight lang="mediawiki"> {{Nazwa szablonu|nazwa przestrzeni nazw=Wikibooks|nazwa przestrzeni nazw 2=Szablon|nazwa przestrzeni nazw i=Moduł}} </syntaxhighlight> W dziecku powiedzmy jest wywołanie, i szukamy nazwy przestrzeni nazw o numerze dwa, która nie została podana, ale istnieje za to jej wersji ogólna {{Code|nazwa przestrzeni nazw i}} i domyślna {{Code|nazwa przestrzeni nazw}}: <syntaxhighlight lang="mediawiki"> {{#invoke:Pudełko|Nazwa przestrzeni nazw dyskusji|numer jednostki=1}} </syntaxhighlight> Na podstawie powyższego przykładu otrzymamy wynik o schemacie, nie wyniku, bo tam nie ma zmiennej {{Code|nazwa przestrzeni nazw 1}}, ale jest {{Code|nazwa przestrzeni nazw i}}: <syntaxhighlight lang="mediawiki"> <!-- Ale nie "nazwa przestrzeni nazw", bo jej nie ma, ale za to istnieje "nazwa przestrzeni nazw i"; --> <!-- nazwa przestrzeni nazw 2=nazwa przestrzeni nazw i=Moduł; --> <!-- Czyli wynik: --> Dyskusja modułu <!-- Widzimy, że wygenerowała się nazwa przestrzeni nazw, którą jest przestrzeń dyskusji przestrzeni programowej przestrzeni przedmiotowej "Moduł", którą również jest "Szablon" jego przestrzeni dyskusji "Dyskusja szablonu", a dla ich przestrzeni przedmiotowej, zamiast dyskusji, to przekształca się na dyskusji jej odpowiadającą; --> </syntaxhighlight> Nie jest brana w tym powyższym przykładzie zmienna {{Code|nazwa przestrzeni nazw}}, bo jej nie ma, ale za to jest {{Code|nazwa przestrzeni nazw i}}, bo ona występuje jako parametr domyślny ogólny dla parametrów numerkowych. Przykłady w wikikodzie: * {{Code|{{m|Pudełko|Nazwa przestrzeni nazw dyskusji|numer jednostki{{=}}2}}}} → {{Tt|{{#invoke:Pudełko|Nazwa przestrzeni nazw dyskusji|numer jednostki=2}}}} * {{Code|{{m|Pudełko|Nazwa przestrzeni nazw dyskusji|Szablon|nazwa przestrzeni nazw i{{=}}Moja przestrzeń|numer jednostki{{=}}2}}}} → {{Tt|{{#invoke:Pudełko|Nazwa przestrzeni nazw dyskusji|Szablon|nazwa przestrzeni nazw i=Moja przestrzeń|numer jednostki=2}}}} * {{Code|{{m|Pudełko|Nazwa przestrzeni nazw dyskusji|nazwa przestrzeni nazw 2{{=}}Szablon|numer jednostki{{=}}2}}}} → {{Tt|{{#invoke:Pudełko|Nazwa przestrzeni nazw dyskusji|nazwa przestrzeni nazw 2=Szablon|numer jednostki=2}}}} * {{Code|{{m|Pudełko|Nazwa przestrzeni nazw dyskusji|nazwa przestrzeni nazw 2{{=}}Szablon|numer jednostki{{=}}2}}}} → {{Tt|{{#invoke:Pudełko|Nazwa przestrzeni nazw dyskusji|nazwa przestrzeni nazw i=Szablon|numer jednostki=2}}}} * {{Code|{{m|Pudełko|Nazwa przestrzeni nazw dyskusji|nazwa przestrzeni nazw{{=}}Szablon|numer jednostki{{=}}2}}}} → {{Tt|{{#invoke:Pudełko|Nazwa przestrzeni nazw dyskusji|nazwa przestrzeni nazw=Szablon|numer jednostki=2}}}} Powyżej dla przykładu podano parametry nie w rodzicu w szablonie, tylko w dziecku, jeśli chodzi o parametry nazw przestrzeni nazw, ale ich się za to nie powinno podawać w tych ramach, tylko w szablonach, w których wywoływane są te ramki pudełek {{Code|{{m|Pudełko}}}}, ale tak tutaj tak zrobiono by było najłatwiej sprawdzić działanie tego typu funkcji. Analogicznie możemy podawać parametry typu jednostki, np.: wywołaniu modułowym {{Code|{{m|Pudełko|Nazwa przestrzeni nazw dyskusji|typ jednostki 2{{=}}strona szablonu|numer jednostki{{=}}2}}}}, ale o tym więcej w rozdziałach {{Code|{{sr|# p["Dyskusyjny typ jednostki"](frame,i)|p=Pudełko}}}} w „{{sr|#Funkcje typu jednostki|p=Pudełko}}”, ale wtedy nazwa przestrzeni nazw reprezentowana przez {{Parametr|typ jednostki 2|strona szablonu}}, jest zamieniana na nazwę przestrzeni nazw dyskusji. Parametr dyskusji typu jednostki bazowy lub dla danego numerka ogólny, czy szczegółowy, nie gra roli. Również parametry typu jednostki nie powinno się podawać w dziecku w ramce, tylko w rodzicu w szablonie jako parametry, w którym ta ramka jest wywoływana, ale tutaj podano jedynie dla przykładu, jak najłatwiej sprawdzić działanie tych parametrów tej funkcji. Najpierw w funkcji nagłówku brane są parametry nazw przestrzeni nazw, a jeżeli ich nie ma, to parametry typu jednostki, a jeżeli nie ma, to generowane są nazwy na podstawie aktualnego modułu. == Funkcje nazw przestrzeni nazw drugiej wersji == === {{Code|p["Nazwa przestrzeni nazw 2"](frame,...)}} === Funkcja pisze nazwę przestrzeni nazw, niezależnie, czy to jest przedmiotowa, czy dyskusji, według, i nie zawsze tylko, podanej w zmiennej {{Code|nazwa przestrzeni nazw}} dla pozycja bazowej w podanych parametrach szablonu rodzicu ramki dziecka, lub dla innej pozycji należy parametr podawać w formie {{Code|nazwa przestrzeni nazw 1}}, {{Code|nazwa przestrzeni nazw 2}}, {{Code|nazwa przestrzeni nazw 3}},..., lub te parametry można podać w postaci ogólnej {{Code|nazwa przestrzeni nazw i}}. W tej funkcji trzeba też podawać parametry nazwy jednostek {{Code|nazwa jednostki}}, {{Code|nazwa jednostki 1}}, {{Code|nazwa jednostki 2}}, {{Code|nazwa jednostki 3}},... Parametry podaje się w parametrach rodzica wywołania tej funkcji {{Code|{{m|Pudełko|Nazwa przestrzeni nazw 2}}}} (ale ich nie trzeba podawać w dziecku, ale można) i w parametrach dziecka, jeśli chodzi o zmienną {{Code|numer jednostki}}, czyli np.: {{Code|{{m|Pudełko|Nazwa przestrzeni nazw 2|numer jednostki{{=}}<jakaś liczba całkowita dodatnia>}}}}. Te parametry przestrzenne zamiast w rodzicu w szablonie można podać w ramce dziecka, wtedy parametry dziecka mają pierwszeństwo. Przestrzeń nazw z parametrów nazw przestrzennych może odpowiadać wartości przestrzeni głównej, to wtedy odpowiednia przestrzeń nazw z parametru nazwy jednostki się liczy w tej funkcji, wtedy jest liczona nazwa przestrzeni nazw z tego parametru. Gdy parametry przestrzenne lub typ jednostki w drugim podejściu nie wskazują na przestrzeń główną, to wtedy działanie tej funkcji jest podobne do {{Code|{{sr|#p["Nazwa przestrzeni nazw"](frame,...)|p=Pudełko}}}}. Definicja skrótowa funkcji: <syntaxhighlight lang="lua"> p["Nazwa przestrzeni nazw 2"]=function(frame,czy_uwzglednic_alternatywna_nazwe,i)...end; </syntaxhighlight> Wtedy ciało funkcji tej, czyli jego definicja w środku, jest: <syntaxhighlight lang="lua"> local pudelko_pomocne_modul=require("Module:Pudełko/Pomocne"); -- Liczy nazwę przestrzeni nazw, jeżeli z parametrów przestrzennych przestrzeń wskazuje na główną, to wtedy jest liczona przestrzeń nazw z nazwy jednostki; return pudelko_pomocne_modul.Nazwa_przestrzeni_nazw_2(frame,czy_uwzglednic_alternatywna_nazwe,i) </syntaxhighlight> Parametry funkcji: * {{Code|frame}} - tablica ramki tablicy transportu, * {{Code|czy_uwzglednic_alternatywna_nazwe}} - czy ma uwzględniać nazwę przestrzeni nazw domyślną szablonu, dostępne wartości: {{Code|false}}, w której nazwa domyślna nie jest uwzględniana wtedy, oraz {{Code|nil}} i {{Code|true}}, które oznaczają to samo, w tym jeżeli ona jest uwzględniana, wtedy jest brany parametr pierwszy dziecka, który musi istnieć przy takiej wartości tego parametru, tzn. {{Code|{{m|Pudełko|Nazwa przestrzeni nazw 2|Szablon}}}}, a nazwa uzyskana nazwy przestrzeni nazw jest w takim przypadku błędna, a jeżeli nazwa domyślna jest błędna, czyli {{Code|{{m|Pudełko|Nazwa przestrzeni nazw 2|Moja przestrzeń}}}}, wtedy funkcja zwraca stan błędu {{Code|(błąd)}}. * {{Code|i}} - numer zmiennej nazwy przestrzeni nazw. Funkcja wykorzystuje {{Code|{{sr|#p.Nazwa_przestrzeni_nazw_2(frame,...)|p=Pudełko/Pomocne}}}} do wyznaczania ogólnego nazwy przestrzeni nazw dla pozycji bazowej i numerkowej, tzn. dla pozycji: jeden, dwa, trzy,..., itd, i ich ogólnej. Parametr ramki tablicy transportu rodzica szablonu: * {{Code|nazwa przestrzeni nazw}}, {{Code|nazwa przestrzeni nazw 1}}, {{Code|nazwa przestrzeni nazw 2}}, {{Code|nazwa przestrzeni nazw 3}},..., {{Code|nazwa przestrzeni nazw i}} - nazwy przestrzeni nazw dla pozycji bazowej oraz zwykłej i ogólnej numerkowej, * {{Code|nazwa jednostki}}, {{Code|nazwa jednostki 1}}, {{Code|nazwa jednostki 2}}, {{Code|nazwa jednostki 3}},... - nazwy jednostek dla pozycji bazowej i numerkowej, * {{Code|typ jednostki}}, {{Code|typ jednostki 1}}, {{Code|typ jednostki 2}}, {{Code|typ jednostki 3}},..., {{Code|typ jednostki i}} - typy jednostek, którym odpowiadają pewne przestrzenie przedmiotowe, dla pozycji bazowej, numerkowej i ogólnej, ** {{Code|dyskusja typu jednostki}}, {{Code|dyskusja typu jednostki 1}}, {{Code|dyskusja typ jednostki 2}}, {{Code|dyskusja typ jednostki 3}},..., {{Code|dyskusja typ jednostki i}} - czy dany typ jednostki ma przedstawiać, jeśli niepusta, przestrzeń dyskusji dla pozycji bazowej, numerkowej i ogólnej. Parametry ramki tablicy transportu dziecka: * Parametry dziecka są takie same jak rodzica dla funkcji pudełkowej plus tu wymienione, * {{Code|numer jednostki}} - jak parametr {{Code|i}} nie został ustawiony, to wtedy liczy się ta zmienna. Przykłady: <syntaxhighlight lang="mediawiki"> {{Nazwa szablonu|nazwa przestrzeni nazw=Wikibooks|nazwa przestrzeni nazw 1=Szablon|nazwa przestrzeni nazw i=|nazwa jednostki 2=Wikibooks:Strona}} </syntaxhighlight> W dziecku powiedzmy jest wywołanie, i szukamy nazwy przestrzeni nazw o numerze dwa, która została podana, ale istnieje za to jej wersji ogólna {{Code|nazwa przestrzeni nazw i}} i domyślna {{Code|nazwa przestrzeni nazw}}, ale wtedy dla tego numerkowego liczy się to ogólne z {{Code| i}}, a ponieważ ta nazwa jest pusta, więc będziemy liczyli nazwę przestrzeni nazw z {{Code|nazwa jednostki 2}}: <syntaxhighlight lang="mediawiki"> {{#invoke:Pudełko|Nazwa przestrzeni nazw 2|numer jednostki=2}} </syntaxhighlight> Na podstawie powyższego przykładu otrzymamy wynik o schemacie, nie wyniku, bo tam nie ma zmiennej {{Code|nazwa przestrzeni nazw 1}}, ale jest {{Code|nazwa przestrzeni nazw i}}: <syntaxhighlight lang="mediawiki"> <!-- Ale nie "nazwa przestrzeni nazw 2", bo jej nie ma, ale za to istnieje "nazwa przestrzeni nazw i"; --> <!-- nazwa przestrzeni nazw 2=nazwa przestrzeni nazw i="", a nazwa jednostki 2="Wikibooks:Strona"; --> <!-- Czyli wynik: --> Wikibooks <!-- Widzimy, że wygenerowała się nazwa przestrzeni nazw, którą jest przestrzeń nieprogramowa, ale projektu, wychodząca z nazwy jednostek w tym przypadku z "nazwa jednostki 2"; --> </syntaxhighlight> Nie jest brana w tym powyższym przykładzie zmienna {{Code|nazwa przestrzeni nazw}}, bo jej nie ma, ale za to jest {{Code|nazwa przestrzeni nazw i}}, bo ona występuje jako parametr domyślny ogólny dla parametrów numerkowych. Tytaj jest używana jest zmienna {{Code|nazwa jednostki 2}} do wygenerowania ostatecznego wyniku, bo jak można zauważyć, parametry przestrzenne wskazują na przestrzeń główną, a nazwy jednostek już nie. Przykłady w wikikodzie: * {{Code|{{m|Pudełko|Nazwa przestrzeni nazw 2|numer jednostki{{=}}2}}}} → {{Tt|{{#invoke:Pudełko|Nazwa przestrzeni nazw 2|numer jednostki=2}}}} * {{Code|{{m|Pudełko|Nazwa przestrzeni nazw 2|Szablon|nazwa przestrzeni nazw i{{=}}Moja przestrzeń|numer jednostki{{=}}2}}}} → {{Tt|{{#invoke:Pudełko|Nazwa przestrzeni nazw 2|Szablon|nazwa przestrzeni nazw i=Moja przestrzeń|numer jednostki=2}}}} * {{Code|{{m|Pudełko|Nazwa przestrzeni nazw 2|nazwa przestrzeni nazw 2{{=}}|nazwa jednostki 2{{=}}Szablon:Strona|numer jednostki{{=}}2}}}} → {{Tt|{{#invoke:Pudełko|Nazwa przestrzeni nazw 2|nazwa przestrzeni nazw 2=|nazwa jednostki 2=Szablon:Strona|numer jednostki=2}}}} * {{Code|{{m|Pudełko|Nazwa przestrzeni nazw 2|nazwa przestrzeni nazw i{{=}}|nazwa jednostki 2{{=}}Szablon:Strona|numer jednostki{{=}}2}}}} → {{Tt|{{#invoke:Pudełko|Nazwa przestrzeni nazw 2|nazwa przestrzeni nazw i=|nazwa jednostki 2=Szablon:Strona|numer jednostki=2}}}} * {{Code|{{m|Pudełko|Nazwa przestrzeni nazw 2|Szablon|nazwa przestrzeni nazw{{=}}|nazwa jednostki 2{{=}}Wikibooks:Strona|numer jednostki{{=}}2}}}} → {{Tt|{{#invoke:Pudełko|Nazwa przestrzeni nazw 2|Szablon|nazwa przestrzeni nazw=|nazwa jednostki 2=Wikibooks:Strona|numer jednostki=2}}}} Powyżej dla przykładu podano parametry nie w rodzicu w szablonie, tylko w dziecku, jeśli chodzi o parametry nazw przestrzeni nazw i nazw jednostek, ale ich się za to nie powinno podawać w tych ramach, tylko w szablonach, w których wywoływane są te ramki pudełek {{Code|{{m|Pudełko}}}}, ale tak tutaj tak zrobiono by było najłatwiej sprawdzić działanie tego typu funkcji. Analogicznie możemy podawać parametry typu jednostki, np.: wywołaniu modułowym {{Code|{{m|Pudełko|Nazwa przestrzeni nazw 2|typ jednostki 2{{=}}Podręcznik|nazwa jednostki 2{{=}}Szablon:Strona|numer jednostki{{=}}2}}}} (ale wtedy jest brana przestrzeń nazw z nazwy jednostki), ale o tym więcej w rozdziałach {{Code|{{sr|#p["Typ jednostki 2"](frame,i)|p=Pudełko}}}} w „{{sr|#Funkcje typu jednostki|p=Pudełko}}”, on definiuje przestrzenie przedmiotowe, ale można użyć parametru dyskusji typu jednostki z wartością niepustą, wtedy wyświetli się nazwa przestrzeni nazw dyskusji. Jeżeli typ jednostki wskazuje na przestrzeń nazw główną, wtedy się liczą parametry nazw jednostek. Również parametry typu jednostki nie powinno się podawać w dziecku w ramce, tylko w rodzicu w szablonie jako parametry, w którym ta ramka jest wywoływana, ale tutaj podano jedynie dla przykładu, jak najłatwiej sprawdzić działanie tych parametrów tej funkcji. Najpierw w funkcji nagłówku brane są parametry nazw przestrzeni nazw, a jeżeli ich nie ma, to parametry typu jednostki, a jeżeli nie ma lub parametry przestrzenne wskazują na przestrzeń główną, i nie ma nazwy jednostki, to generowane są nazwy tej funkcji na podstawie aktualnej strony. === {{Code|p["Nazwa przedmiotowej przestrzeni nazw 2"](frame,...)}} === Funkcja pisze przedmiotową nazwę przestrzeni nazw jakikolwiek nazwy przestrzeni nazw (tzn. nazwę przedmiotową nazwy przestrzenie nazw, czyli nie dyskusji, zamieniana jest na nią samą, czyli identyfikator przestrzeni się nie zmienia, a dyskusji, nie przedmiotową, przekształca się na przedmiotową jej odpowiadającą, czyli w tym przypadku identyfikator przestrzeni zmniejsza się o numer mniej), według, i nie zawsze tylko, podanej w zmiennej {{Code|nazwa przestrzeni nazw}} dla pozycja bazowej w podanych parametrach szablonu rodzicu ramki dziecka, lub dla innej pozycji należy parametr podawać w formie {{Code|nazwa przestrzeni nazw 1}}, {{Code|nazwa przestrzeni nazw 2}}, {{Code|nazwa przestrzeni nazw 3}},..., lub te parametry można podać w postaci ogólnej {{Code|nazwa przestrzeni nazw i}}. W tej funkcji trzeba też podawać parametry nazwy jednostek {{Code|nazwa jednostki}}, {{Code|nazwa jednostki 1}}, {{Code|nazwa jednostki 2}}, {{Code|nazwa jednostki 3}},... Parametry podaje się w parametrach rodzica wywołania tej funkcji {{Code|{{m|Pudełko|Nazwa przedmiotowej przestrzeni nazw 2}}}} (ale ich nie trzeba podawać w dziecku, ale można) i w parametrach dziecka, jeśli chodzi o zmienną {{Code|numer jednostki}}, czyli np.: {{Code|{{m|Pudełko|Nazwa przedmiotowej przestrzeni nazw 2|numer jednostki{{=}}<jakaś liczba całkowita dodatnia>}}}}. Te parametry przestrzenne zamiast w rodzicu w szablonie można podać w ramce dziecka, wtedy parametry dziecka mają pierwszeństwo. Przestrzeń nazw z parametrów nazw przestrzennych po przekształceniu na przedmiotową może odpowiadać wartości przestrzeni głównej, to wtedy odpowiednia przestrzeń nazw z parametru nazwy jednostki się liczy w tej funkcji, wtedy jest liczona nazwa przestrzeni nazw z tego parametru. Gdy parametry przestrzenne lub typ jednostki w drugim podejściu nie wskazują na przestrzeń główną, to wtedy działanie tej funkcji jest podobne do {{Code|{{sr|#p["Nazwa przedmiotowej przestrzeni nazw"](frame,...)|p=Pudełko}}}}. Definicja skrótowa funkcji: <syntaxhighlight lang="lua"> p["Nazwa przedmiotowej przestrzeni nazw 2"]=function(frame,czy_uwzglednic_alternatywna_nazwe,i)...end; </syntaxhighlight> Wtedy ciało funkcji tej, czyli jego definicja w środku, jest: <syntaxhighlight lang="lua"> local pudelko_pomocne_modul=require("Module:Pudełko/Pomocne"); return pudelko_pomocne_modul.Nazwa_przestrzeni_nazw_przedmiotowa_dyskusji_2(frame,czy_uwzglednic_alternatywna_nazwe,i,"przedmiotowa"); </syntaxhighlight> Parametry funkcji: * {{Code|frame}} - tablica ramki tablicy transportu, * {{Code|czy_uwzglednic_alternatywna_nazwe}} - czy ma uwzględniać nazwę przestrzeni nazw domyślną szablonu, dostępne wartości: {{Code|false}}, w której nazwa domyślna nie jest uwzględniana wtedy, oraz {{Code|nil}} i {{Code|true}}, które oznaczają to samo, w tym jeżeli ona jest uwzględniana, wtedy jest brany parametr pierwszy dziecka, który musi istnieć przy takiej wartości tego parametru, tzn. {{Code|{{m|Pudełko|Nazwa przedmiotowej przestrzeni nazw 2|Szablon}}}}, a nazwa uzyskana nazwy przestrzeni nazw jest w takim przypadku błędna, a jeżeli nazwa domyślna jest błędna, czyli {{Code|{{m|Pudełko|Nazwa przedmiotowej przestrzeni nazw 2|Moja przestrzeń}}}}, wtedy funkcja zwraca stan błędu {{Code|(błąd)}}. * {{Code|i}} - numer zmiennej nazwy przestrzeni nazw. Funkcja wykorzystuje {{Code|{{sr|#p.Nazwa_przestrzeni_nazw_przedmiotowa_dyskusji_2(frame,...)|p=Pudełko/Pomocne}}}} do wyznaczania ogólnego nazwy przestrzeni nazw dla pozycji bazowej i numerkowej, tzn. dla pozycji: jeden, dwa, trzy,..., itd, i ich ogólnej. Parametr ramki tablicy transportu rodzica szablonu: * {{Code|nazwa przestrzeni nazw}}, {{Code|nazwa przestrzeni nazw 1}}, {{Code|nazwa przestrzeni nazw 2}}, {{Code|nazwa przestrzeni nazw 3}},..., {{Code|nazwa przestrzeni nazw i}} - nazwy przestrzeni nazw dla pozycji bazowej oraz zwykłej i ogólnej numerkowej, * {{Code|nazwa jednostki}}, {{Code|nazwa jednostki 1}}, {{Code|nazwa jednostki 2}}, {{Code|nazwa jednostki 3}},... - nazwy jednostek dla pozycji bazowej i numerkowej, * {{Code|typ jednostki}}, {{Code|typ jednostki 1}}, {{Code|typ jednostki 2}}, {{Code|typ jednostki 3}},..., {{Code|typ jednostki i}} - typy jednostek, którym odpowiadają pewne przestrzenie przedmiotowe, dla pozycji bazowej, numerkowej i ogólnej. Parametry ramki tablicy transportu dziecka: * Parametry dziecka są takie same jak rodzica dla funkcji pudełkowej plus tu wymienione, * {{Code|numer jednostki}} - jak parametr {{Code|i}} nie został ustawiony, to wtedy liczy się ta zmienna. Przykłady: <syntaxhighlight lang="mediawiki"> {{Nazwa szablonu|nazwa przestrzeni nazw=Wikibooks|nazwa przestrzeni nazw 1=Szablon|nazwa przestrzeni nazw i=|nazwa jednostki 2=Dyskusja Wikibooks:Strona}} </syntaxhighlight> W dziecku powiedzmy jest wywołanie, i szukamy nazwy przestrzeni nazw o numerze dwa, która została podana, ale istnieje za to jej wersji ogólna {{Code|nazwa przestrzeni nazw i}} i domyślna {{Code|nazwa przestrzeni nazw}}, ale wtedy dla tego numerkowego liczy się to ogólne z {{Code| i}}, a ponieważ ta nazwa jest pusta, więc będziemy liczyli nazwę przestrzeni nazw z {{Code|nazwa jednostki 2}}: <syntaxhighlight lang="mediawiki"> {{#invoke:Pudełko|Nazwa przedmiotowej przestrzeni nazw 2|numer jednostki=2}} </syntaxhighlight> Na podstawie powyższego przykładu otrzymamy wynik o schemacie, nie wyniku, bo tam nie ma zmiennej {{Code|nazwa przestrzeni nazw 1}}, ale jest {{Code|nazwa przestrzeni nazw i}}: <syntaxhighlight lang="mediawiki"> <!-- Ale nie "nazwa przestrzeni nazw 2", bo jej nie ma, ale za to istnieje "nazwa przestrzeni nazw i"; --> <!-- nazwa przestrzeni nazw 2=nazwa przestrzeni nazw i="", a nazwa jednostki 2="Dyskusja Wikibooks:Strona"; --> <!-- Czyli wynik: --> Wikibooks <!-- Widzimy, że wygenerowała się nazwa przestrzeni nazw, którą jest przestrzeń nieprogramowa, ale projektu, wychodząca z nazwy jednostek w tym przypadku z "nazwa jednostki 2"; --> </syntaxhighlight> Nie jest brana w tym powyższym przykładzie zmienna {{Code|nazwa przestrzeni nazw}}, bo jej nie ma, ale za to jest {{Code|nazwa przestrzeni nazw i}}, bo ona występuje jako parametr domyślny ogólny dla parametrów numerkowych. Tytaj jest używana jest zmienna {{Code|nazwa jednostki 2}} do wygenerowania ostatecznego wyniku, bo jak można zauważyć, parametry przestrzenne wskazują na przestrzeń główną, a nazwy jednostek już nie. Przykłady w wikikodzie: * {{Code|{{m|Pudełko|Nazwa przedmiotowej przestrzeni nazw 2|numer jednostki{{=}}2}}}} → {{Tt|{{#invoke:Pudełko|Nazwa przedmiotowej przestrzeni nazw 2|numer jednostki=2}}}} * {{Code|{{m|Pudełko|Nazwa przedmiotowej przestrzeni nazw 2|Dyskusja szablonu|nazwa przestrzeni nazw i{{=}}Moja przestrzeń|numer jednostki{{=}}2}}}} → {{Tt|{{#invoke:Pudełko|Nazwa przedmiotowej przestrzeni nazw 2|Dyskusja szablonu|nazwa przestrzeni nazw i=Moja przestrzeń|numer jednostki=2}}}} * {{Code|{{m|Pudełko|Nazwa przedmiotowej przestrzeni nazw 2|nazwa przestrzeni nazw 2{{=}}Dyskusja|nazwa jednostki 2{{=}}Dyskusja szablonu:Strona|numer jednostki{{=}}2}}}} → {{Tt|{{#invoke:Pudełko|Nazwa przedmiotowej przestrzeni nazw 2|nazwa przestrzeni nazw 2=Dyskusja|nazwa jednostki 2=Dyskusja szablonu:Strona|numer jednostki=2}}}} * {{Code|{{m|Pudełko|Nazwa przedmiotowej przestrzeni nazw 2|nazwa przestrzeni nazw i{{=}}Dyskusja|nazwa jednostki 2{{=}}Dyskusja szablonu:Strona|numer jednostki{{=}}2}}}} → {{Tt|{{#invoke:Pudełko|Nazwa przedmiotowej przestrzeni nazw 2|nazwa przestrzeni nazw i=Dyskusja|nazwa jednostki 2=Dyskusja szablonu:Strona|numer jednostki=2}}}} * {{Code|{{m|Pudełko|Nazwa przedmiotowej przestrzeni nazw 2|Dyskusja szablonu|nazwa przestrzeni nazw{{=}}Dyskusja|nazwa jednostki 2{{=}}Wikibooks:Strona|numer jednostki{{=}}2}}}} → {{Tt|{{#invoke:Pudełko|Nazwa przedmiotowej przestrzeni nazw 2|Dyskusja szablonu|nazwa przestrzeni nazw=Dyskusja|nazwa jednostki 2=Dyskusja Wikibooks:Strona|numer jednostki=2}}}} Powyżej dla przykładu podano parametry nie w rodzicu w szablonie, tylko w dziecku, jeśli chodzi o parametry nazw przestrzeni nazw i nazw jednostek, ale ich się za to nie powinno podawać w tych ramach, tylko w szablonach, w których wywoływane są te ramki pudełek {{Code|{{m|Pudełko}}}}, ale tak tutaj tak zrobiono by było najłatwiej sprawdzić działanie tego typu funkcji. Analogicznie możemy podawać parametry typu jednostki, np.: wywołaniu modułowym {{Code|{{m|Pudełko|Nazwa przedmiotowej przestrzeni nazw 2|typ jednostki 2{{=}}Podręcznik|nazwa jednostki 2{{=}}Dyskusja szablonu:Strona|numer jednostki{{=}}2}}}} (ale wtedy jest brana przestrzeń nazw z nazwy jednostki), ale o tym więcej w rozdziałach {{Code|{{sr|# p["Przedmiotowy typ jednostki 2"](frame,i)|p=Pudełko}}}} w „{{sr|#Funkcje typu jednostki|p=Pudełko}}”, on definiuje przestrzenie przedmiotowe, ale można użyć parametru dyskusji typu jednostki z wartością niepustą, pustą, czy nawet jej nie podamy, wtedy wyświetli się nazwa przestrzeni nazw przedmiotowej. Jeżeli typ jednostki wskazuje na przestrzeń nazw główną, wtedy się liczą parametry nazw jednostek. Również parametry typu jednostki nie powinno się podawać w dziecku w ramce, tylko w rodzicu w szablonie jako parametry, w którym ta ramka jest wywoływana, ale tutaj podano jedynie dla przykładu, jak najłatwiej sprawdzić działanie tych parametrów tej funkcji. Najpierw w funkcji nagłówku brane są parametry nazw przestrzeni nazw, a jeżeli ich nie ma, to parametry typu jednostki, a jeżeli nie ma lub parametry przestrzenne wskazują na przestrzeń główną, i nie ma nazwy jednostki, to generowane są nazwy tej funkcji na podstawie aktualnej strony. === {{Code|p["Nazwa przestrzeni nazw dyskusji 2"](frame,...)}} === Funkcja pisze nazwę przestrzeni nazw dyskusji jakikolwiek nazwy przestrzeni nazw (tzn. nazwę dyskusji nazwy przestrzenie nazw, czyli nie przedmiotowej, zamieniana jest na nią samą, czyli identyfikator przestrzeni się nie zmienia, a przedmiotową, nie dyskusji, przekształca się na dyskusji jej odpowiadającą, czyli w tym przypadku identyfikator przestrzeni zwiększa się o numer więcej), według, i nie zawsze tylko, podanej w zmiennej {{Code|nazwa przestrzeni nazw}} dla pozycja bazowej w podanych parametrach szablonu rodzicu ramki dziecka, lub dla innej pozycji należy parametr podawać w formie {{Code|nazwa przestrzeni nazw 1}}, {{Code|nazwa przestrzeni nazw 2}}, {{Code|nazwa przestrzeni nazw 3}},..., lub te parametry można podać w postaci ogólnej {{Code|nazwa przestrzeni nazw i}}. W tej funkcji trzeba też podawać parametry nazwy jednostek {{Code|nazwa jednostki}}, {{Code|nazwa jednostki 1}}, {{Code|nazwa jednostki 2}}, {{Code|nazwa jednostki 3}},... Parametry podaje się w parametrach rodzica wywołania tej funkcji {{Code|{{m|Pudełko|Nazwa przestrzeni nazw dyskusji 2}}}} (ale ich nie trzeba podawać w dziecku, ale można) i w parametrach dziecka, jeśli chodzi o zmienną {{Code|numer jednostki}}, czyli np.: {{Code|{{m|Pudełko|Nazwa przestrzeni nazw dyskusji 2|numer jednostki{{=}}<jakaś liczba całkowita dodatnia>}}}}. Te parametry przestrzenne zamiast w rodzicu w szablonie można podać w ramce dziecka, wtedy parametry dziecka mają pierwszeństwo. Przestrzeń nazw z parametrów nazw przestrzennych po przekształceniu na przedmiotową może odpowiadać wartości przestrzeni głównej, to wtedy odpowiednia przestrzeń nazw z parametru nazwy jednostki się liczy w tej funkcji, wtedy jest liczona nazwa przestrzeni nazw z tego parametru. Gdy parametry przestrzenne lub typ jednostki w drugim podejściu nie wskazują na przestrzeń główną, to wtedy działanie tej funkcji jest podobne do {{Code|{{sr|#p["Nazwa dyskusji przestrzeni nazw"](frame,...)|p=Pudełko}}}}. Definicja skrótowa funkcji: <syntaxhighlight lang="lua"> p["Nazwa przestrzeni nazw dyskusji 2"]=function(frame,czy_uwzglednic_alternatywna_nazwe,i)...end; </syntaxhighlight> Wtedy ciało funkcji tej, czyli jego definicja w środku, jest: <syntaxhighlight lang="lua"> local pudelko_pomocne_modul=require("Module:Pudełko/Pomocne"); return pudelko_pomocne_modul.Nazwa_przestrzeni_nazw_przedmiotowa_dyskusji_2(frame,czy_uwzglednic_alternatywna_nazwe,i,"dyskusja"); </syntaxhighlight> Parametry funkcji: * {{Code|frame}} - tablica ramki tablicy transportu, * {{Code|czy_uwzglednic_alternatywna_nazwe}} - czy ma uwzględniać nazwę przestrzeni nazw domyślną szablonu, dostępne wartości: {{Code|false}}, w której nazwa domyślna nie jest uwzględniana wtedy, oraz {{Code|nil}} i {{Code|true}}, które oznaczają to samo, w tym jeżeli ona jest uwzględniana, wtedy jest brany parametr pierwszy dziecka, który musi istnieć przy takiej wartości tego parametru, tzn. {{Code|{{m|Pudełko|Nazwa przestrzeni nazw dyskusji 2|Szablon}}}}, a nazwa uzyskana nazwy przestrzeni nazw jest w takim przypadku błędna, a jeżeli nazwa domyślna jest błędna, czyli {{Code|{{m|Pudełko|Nazwa przestrzeni nazw dyskusji 2|Moja przestrzeń}}}}, wtedy funkcja zwraca stan błędu {{Code|(błąd)}}. * {{Code|i}} - numer zmiennej nazwy przestrzeni nazw. Funkcja wykorzystuje {{Code|{{sr|#p.Nazwa_przestrzeni_nazw_przedmiotowa_dyskusji_2(frame,...)|p=Pudełko/Pomocne}}}} do wyznaczania ogólnego nazwy przestrzeni nazw dla pozycji bazowej i numerkowej, tzn. dla pozycji: jeden, dwa, trzy,..., itd, i ich ogólnej. Parametr ramki tablicy transportu rodzica szablonu: * {{Code|nazwa przestrzeni nazw}}, {{Code|nazwa przestrzeni nazw 1}}, {{Code|nazwa przestrzeni nazw 2}}, {{Code|nazwa przestrzeni nazw 3}},..., {{Code|nazwa przestrzeni nazw i}} - nazwy przestrzeni nazw dla pozycji bazowej oraz zwykłej i ogólnej numerkowej, * {{Code|nazwa jednostki}}, {{Code|nazwa jednostki 1}}, {{Code|nazwa jednostki 2}}, {{Code|nazwa jednostki 3}},... - nazwy jednostek dla pozycji bazowej i numerkowej, * {{Code|typ jednostki}}, {{Code|typ jednostki 1}}, {{Code|typ jednostki 2}}, {{Code|typ jednostki 3}},..., {{Code|typ jednostki i}} - typy jednostek, którym odpowiadają pewne przestrzenie przedmiotowe, dla pozycji bazowej, numerkowej i ogólnej. Parametry ramki tablicy transportu dziecka: * Parametry dziecka są takie same jak rodzica dla funkcji pudełkowej plus tu wymienione, * {{Code|numer jednostki}} - jak parametr {{Code|i}} nie został ustawiony, to wtedy liczy się ta zmienna. Przykłady: <syntaxhighlight lang="mediawiki"> {{Nazwa szablonu|nazwa przestrzeni nazw=Wikibooks|nazwa przestrzeni nazw 1=Szablon|nazwa przestrzeni nazw i=|nazwa jednostki 2=Wikibooks:Strona}} </syntaxhighlight> W dziecku powiedzmy jest wywołanie, i szukamy nazwy przestrzeni nazw o numerze dwa, która została podana, ale istnieje za to jej wersji ogólna {{Code|nazwa przestrzeni nazw i}} i domyślna {{Code|nazwa przestrzeni nazw}}, ale wtedy dla tego numerkowego liczy się to ogólne z {{Code| i}}, a ponieważ ta nazwa jest pusta, więc będziemy liczyli nazwę przestrzeni nazw z {{Code|nazwa jednostki 2}}: <syntaxhighlight lang="mediawiki"> {{#invoke:Pudełko|Nazwa przestrzeni nazw dyskusji 2|numer jednostki=2}} </syntaxhighlight> Na podstawie powyższego przykładu otrzymamy wynik o schemacie, nie wyniku, bo tam nie ma zmiennej {{Code|nazwa przestrzeni nazw 1}}, ale jest {{Code|nazwa przestrzeni nazw i}}: <syntaxhighlight lang="mediawiki"> <!-- Ale nie "nazwa przestrzeni nazw 2", bo jej nie ma, ale za to istnieje "nazwa przestrzeni nazw i"; --> <!-- nazwa przestrzeni nazw 2=nazwa przestrzeni nazw i="", a nazwa jednostki 2="Wikibooks:Strona"; --> <!-- Czyli wynik: --> Dyskusja Wikibooks <!-- Widzimy, że wygenerowała się nazwa przestrzeni nazw, którą jest przestrzeń nieprogramowa, ale dyskusji projektu, wychodząca z nazwy jednostek w tym przypadku z "nazwa jednostki 2"; --> </syntaxhighlight> Nie jest brana w tym powyższym przykładzie zmienna {{Code|nazwa przestrzeni nazw}}, bo jej nie ma, ale za to jest {{Code|nazwa przestrzeni nazw i}}, bo ona występuje jako parametr domyślny ogólny dla parametrów numerkowych. Tytaj jest używana jest zmienna {{Code|nazwa jednostki 2}} do wygenerowania ostatecznego wyniku, bo jak można zauważyć, parametry przestrzenne wskazują na przestrzeń główną, a nazwy jednostek już nie. Przykłady w wikikodzie: * {{Code|{{m|Pudełko|Nazwa przestrzeni nazw dyskusji 2|numer jednostki{{=}}2}}}} → {{Tt|{{#invoke:Pudełko|Nazwa przestrzeni nazw dyskusji 2|numer jednostki=2}}}} * {{Code|{{m|Pudełko|Nazwa przestrzeni nazw dyskusji 2|Szablon|nazwa przestrzeni nazw i{{=}}Moja przestrzeń|numer jednostki{{=}}2}}}} → {{Tt|{{#invoke:Pudełko|Nazwa przestrzeni nazw dyskusji 2|Szablon|nazwa przestrzeni nazw i=Moja przestrzeń|numer jednostki=2}}}} * {{Code|{{m|Pudełko|Nazwa przestrzeni nazw dyskusji 2|nazwa przestrzeni nazw 2{{=}}|nazwa jednostki 2{{=}}Szablon:Strona|numer jednostki{{=}}2}}}} → {{Tt|{{#invoke:Pudełko|Nazwa przestrzeni nazw dyskusji 2|nazwa przestrzeni nazw 2=|nazwa jednostki 2=Szablon:Strona|numer jednostki=2}}}} * {{Code|{{m|Pudełko|Nazwa przestrzeni nazw dyskusji 2|nazwa przestrzeni nazw i{{=}}|nazwa jednostki 2{{=}}Szablon:Strona|numer jednostki{{=}}2}}}} → {{Tt|{{#invoke:Pudełko|Nazwa przestrzeni nazw dyskusji 2|nazwa przestrzeni nazw i=|nazwa jednostki 2=Szablon:Strona|numer jednostki=2}}}} * {{Code|{{m|Pudełko|Nazwa przestrzeni nazw dyskusji 2|Szablon|nazwa przestrzeni nazw{{=}}|nazwa jednostki 2{{=}}Wikibooks:Strona|numer jednostki{{=}}2}}}} → {{Tt|{{#invoke:Pudełko|Nazwa przestrzeni nazw dyskusji 2|Szablon|nazwa przestrzeni nazw=|nazwa jednostki 2=Dyskusja Wikibooks:Strona|numer jednostki=2}}}} Powyżej dla przykładu podano parametry nie w rodzicu w szablonie, tylko w dziecku, jeśli chodzi o parametry nazw przestrzeni nazw i nazw jednostek, ale ich się za to nie powinno podawać w tych ramach, tylko w szablonach, w których wywoływane są te ramki pudełek {{Code|{{m|Pudełko}}}}, ale tak tutaj tak zrobiono by było najłatwiej sprawdzić działanie tego typu funkcji. Analogicznie możemy podawać parametry typu jednostki, np.: wywołaniu modułowym {{Code|{{m|Pudełko|Nazwa przestrzeni nazw dyskusji 2|typ jednostki 2{{=}}Podręcznik|nazwa jednostki 2{{=}}Szablon:Strona|numer jednostki{{=}}2}}}} (ale wtedy jest brana przestrzeń nazw z nazwy jednostki), ale o tym więcej w rozdziałach {{Code|{{sr|# p["Dyskusyjny typ jednostki 3"](frame,i)|p=Pudełko}}}} w „{{sr|#Funkcje typu jednostki|p=Pudełko}}”, one definiują przestrzenie dyskusji, ale można użyć parametru dyskusji typu jednostki z obojętnie jaką wartością niepustą, czy pustą, czy nawet jej nie podamy, wtedy wyświetli się nazwa przestrzeni nazw dyskusji. Jeżeli typ jednostki wskazuje na przestrzeń nazw główną, wtedy się liczą parametry nazw jednostek. Również parametry typu jednostki nie powinno się podawać w dziecku w ramce, tylko w rodzicu w szablonie jako parametry, w którym ta ramka jest wywoływana, ale tutaj podano jedynie dla przykładu, jak najłatwiej sprawdzić działanie tych parametrów tej funkcji. Najpierw w funkcji nagłówku brane są parametry nazw przestrzeni nazw, a jeżeli ich nie ma, to parametry typu jednostki, a jeżeli nie ma lub parametry przestrzenne wskazują na przestrzeń główną, i nie ma nazwy jednostki, to generowane są nazwy tej funkcji na podstawie aktualnej strony. == Funkcje pełnych nazw jednostki == === {{Code|p["Pełna nazwa dyskusji jednostki"](frame,i)}} === === {{Code|p["Pełna nazwa przedmiotowa jednostki"](frame,i)}} === === {{Code|p["Pełna nazwa jednostki"](frame,i)}} === == Funkcje pełnych nazw jednostki drugiej wersji == === {{Code|p["Pełna nazwa dyskusji jednostki 2"](frame,i)}} === === {{Code|p["Pełna nazwa przedmiotowa jednostki 2"](frame,i)}} === === {{Code|p["Pełna nazwa jednostki 2"](frame,i)}} === == Funkcje pełnych nazw jednostki trzeciej wersji == === {{Code|p["Pełna nazwa dyskusji jednostki 3"](frame,i)}} === === {{Code|p["Pełna nazwa przedmiotowa jednostki 3"](frame,i)}} === === {{Code|p["Pełna nazwa jednostki 3"](frame,i)}} === == Funkcje nazw jednostki == === {{Code|p["Nazwa jednostki"](frame,i)}} === == Funkcje nazw jednostki drugiej wersji == === {{Code|p["Nazwa jednostki 2"](frame,i)}} === === {{Code|p["Nazwa przedmiotowa jednostki 2"](frame,i)}} === === {{Code|p["Nazwa dyskusji jednostki 2"](frame,i)}} === == Funkcje nazw przestrzeni nazw trzeciej wersji == === {{Code|p["Nazwa przestrzeni nazw 3"](frame,i)}} === Funkcja pisze nazwę przestrzeni nazw, niezależnie, czy to jest przedmiotowa, czy dyskusji, według, i nie zawsze tylko, podanej w zmiennej {{Code|nazwa przestrzeni nazw}} dla pozycja bazowej w podanych parametrach szablonu rodzicu ramki dziecka, lub dla innej pozycji należy parametr podawać w formie {{Code|nazwa przestrzeni nazw 1}}, {{Code|Nazwa przestrzeni nazw 3}}, {{Code|nazwa przestrzeni nazw 3}},..., lub te parametry można podać w postaci ogólnej {{Code|nazwa przestrzeni nazw i}}. W tej funkcji trzeba też podawać parametry nazwy jednostek {{Code|nazwa jednostki}}, {{Code|nazwa jednostki 1}}, {{Code|nazwa jednostki 2}}, {{Code|nazwa jednostki 3}},... Parametry podaje się w parametrach rodzica wywołania tej funkcji {{Code|{{m|Pudełko|Nazwa przestrzeni nazw 3}}}} (ale ich nie trzeba podawać w dziecku, ale można) i w parametrach dziecka, jeśli chodzi o zmienną {{Code|numer jednostki}}, czyli np.: {{Code|{{m|Pudełko|Nazwa przestrzeni nazw 3|numer jednostki{{=}}<jakaś liczba całkowita dodatnia>}}}}. Te parametry przestrzenne zamiast w rodzicu w szablonie można podać w ramce dziecka, wtedy parametry dziecka mają pierwszeństwo. Przestrzeń nazw z parametrów nazw przestrzennych bazowych (bez numerka) może odpowiadać wartości przestrzeni głównej, to wtedy odpowiednia przestrzeń nazw z parametru nazwy jednostki się nie liczy w tej funkcji, aby się liczyła należy użyć funkcji {{Code|{{sr|#p["Nazwa przestrzeni nazw 2"](frame,...)|p=Pudełko}}}}. Przestrzeń nazw z parametrów nazw przestrzennych numerkowych może odpowiadać wartości przestrzeni głównej, to wtedy odpowiednia przestrzeń nazw z parametru nazwy jednostki się liczy w tej funkcji, wtedy jest liczona nazwa przestrzeni nazw z tego parametru. Gdy parametry przestrzenne lub typ jednostki w drugim podejściu nie wskazują na przestrzeń główną, to wtedy działanie tej funkcji jest podobne do {{Code|{{sr|#p["Nazwa przestrzeni nazw 2"](frame,...)|p=Pudełko}}}}. Definicja skrótowa funkcji: <syntaxhighlight lang="lua"> p["Nazwa przestrzeni nazw 3"]=function(frame,czy_uwzglednic_alternatywna_nazwe,i)...end; </syntaxhighlight> Wtedy ciało funkcji tej, czyli jego definicja w środku, jest: <syntaxhighlight lang="lua"> -- Jest liczony numer parametru nazwy przestrzeni nazw, domyslnie chodzi tu o numer bazowy parametrów przestrzennych; local numer_jednostki=i or frame.args["numer jednostki"]; local liczba_numeru_jednostki=((numer_jednostki)and(tonumber(numer_jednostki)) or 0); local pudelko_pomocne_modul=require("Module:Pudełko/Pomocne"); -- Liczy nazwę przestrzeni nazw dyskusji na podstawie podanych parametrów; return pudelko_pomocne_modul.Uzyskanie_nazw_jednostki(frame,0,liczba_numeru_jednostki,nil,2); </syntaxhighlight> Parametry funkcji: * {{Code|frame}} - tablica ramki tablicy transportu, * {{Code|czy_uwzglednic_alternatywna_nazwe}} - czy ma uwzględniać nazwę przestrzeni nazw domyślną szablonu, dostępne wartości: {{Code|false}}, w której nazwa domyślna nie jest uwzględniana wtedy, oraz {{Code|nil}} i {{Code|true}}, które oznaczają to samo, w tym jeżeli ona jest uwzględniana, wtedy jest brany parametr pierwszy dziecka, który musi istnieć przy takiej wartości tego parametru, tzn. {{Code|{{m|Pudełko|Nazwa przestrzeni nazw 3|Szablon}}}}, a nazwa uzyskana nazwy przestrzeni nazw jest w takim przypadku błędna, a jeżeli nazwa domyślna jest błędna, czyli {{Code|{{m|Pudełko|Nazwa przestrzeni nazw 3|Moja przestrzeń}}}}, wtedy funkcja zwraca stan błędu {{Code|(błąd)}}. * {{Code|i}} - numer zmiennej nazwy przestrzeni nazw. Funkcja wykorzystuje {{Code|{{sr|#p.Uzyskanie_nazw_jednostki(frame,...)|p=Pudełko/Pomocne}}}} do wyznaczania ogólnego nazwy przestrzeni nazw dla pozycji bazowej i numerkowej, tzn. dla pozycji: jeden, dwa, trzy,..., itd, i ich ogólnej. Parametr ramki tablicy transportu rodzica szablonu: * {{Code|nazwa przestrzeni nazw}}, {{Code|nazwa przestrzeni nazw 1}}, {{Code|Nazwa przestrzeni nazw 3}}, {{Code|nazwa przestrzeni nazw 3}},..., {{Code|nazwa przestrzeni nazw i}} - nazwy przestrzeni nazw dla pozycji bazowej oraz zwykłej i ogólnej numerkowej, * {{Code|nazwa jednostki}}, {{Code|nazwa jednostki 1}}, {{Code|nazwa jednostki 2}}, {{Code|nazwa jednostki 3}},... - nazwy jednostek dla pozycji bazowej i numerkowej, * {{Code|typ jednostki}}, {{Code|typ jednostki 1}}, {{Code|typ jednostki 2}}, {{Code|typ jednostki 3}},..., {{Code|typ jednostki i}} - typy jednostek, którym odpowiadają pewne przestrzenie przedmiotowe, dla pozycji bazowej, numerkowej i ogólnej, ** {{Code|dyskusja typu jednostki}}, {{Code|dyskusja typu jednostki 1}}, {{Code|dyskusja typ jednostki 2}}, {{Code|dyskusja typ jednostki 3}},..., {{Code|dyskusja typ jednostki i}} - czy dany typ jednostki ma przedstawiać, jeśli niepusta, przestrzeń dyskusji dla pozycji bazowej, numerkowej i ogólnej. Parametry ramki tablicy transportu dziecka: * Parametry dziecka są takie same jak rodzica dla funkcji pudełkowej plus tu wymienione, * {{Code|numer jednostki}} - jak parametr {{Code|i}} nie został ustawiony, to wtedy liczy się ta zmienna. Przykłady: <syntaxhighlight lang="mediawiki"> {{Nazwa szablonu 1|nazwa przestrzeni nazw=Wikibooks|nazwa przestrzeni nazw=|nazwa przestrzeni nazw i=|nazwa jednostki=Szablon:Strona}} ---- {{Nazwa szablonu 2|nazwa przestrzeni nazw=Wikibooks|nazwa przestrzeni nazw 1=Szablon|nazwa przestrzeni nazw i=|nazwa jednostki 2=Wikibooks:Strona}} </syntaxhighlight> W pierwszym wywołaniu {{Code|nazwa przestrzeni nazw}} jest puste, ale dla tego bazowego (bez numerka) szukamy przestrzeni nazw, a więc ta nazwa jest ostateczna. ---- W drugim wywołaniu w dziecku powiedzmy jest wywołanie, i szukamy nazwy przestrzeni nazw o numerze dwa, która została podana, ale istnieje za to jej wersji ogólna {{Code|nazwa przestrzeni nazw i}} i domyślna {{Code|nazwa przestrzeni nazw}}, ale wtedy dla tego numerkowego liczy się to ogólne z {{Code| i}}, a ponieważ ta nazwa jest pusta, więc będziemy liczyli nazwę przestrzeni nazw z {{Code|nazwa jednostki 2}}. Odpowiadająca powyższemu kodowi, powiedzmy wikikod, według ich zawartości, przedstawia się: <syntaxhighlight lang="mediawiki"> {{#invoke:Pudełko|Nazwa przestrzeni nazw 3}} ---- {{#invoke:Pudełko|Nazwa przestrzeni nazw 3|numer jednostki=2}} </syntaxhighlight> Na podstawie powyższego przykładu otrzymamy wynik o schemacie, nie wyniku, bo tam nie ma zmiennej {{Code|nazwa przestrzeni nazw 1}}, ale jest {{Code|nazwa przestrzeni nazw i}}: <syntaxhighlight lang="mediawiki"> <!-- nazwa przestrzeni nazw=""; --> <!-- Czyli wynik: --> <!-- wynik pusty --> <!-- Widzimy, że wygenerowała się nazwa przestrzeni nazw, którą jest przestrzeń nazw główna, jest ciągiem pustym: ""; --> ---- <!-- Ale nie "nazwa przestrzeni nazw 2", bo jej nie ma, ale za to istnieje "nazwa przestrzeni nazw i"; --> <!-- nazwa przestrzeni nazw 2=nazwa przestrzeni nazw i="", a nazwa jednostki 2="Wikibooks:Strona"; --> <!-- Czyli wynik: --> Wikibooks <!-- Widzimy, że wygenerowała się nazwa przestrzeni nazw, którą jest przestrzeń nieprogramowa, ale projektu, wychodząca z nazwy jednostek w tym przypadku z "nazwa jednostki 2"; --> </syntaxhighlight> Dla parametrów numerkowych nie jest brana w tym powyższym przykładzie zmienna {{Code|nazwa przestrzeni nazw 2}}, bo jej nie ma, ale za to jest {{Code|nazwa przestrzeni nazw i}}, bo ona występuje jako parametr domyślny ogólny dla parametrów numerkowych. Tytaj jest używana jest zmienna {{Code|nazwa jednostki 2}} do wygenerowania ostatecznego wyniku, bo jak można zauważyć, parametry przestrzenne wskazują na przestrzeń główną, a nazwy jednostek już nie. Dla parametrów bazowych mamy zmienną {{Code|nazwa przestrzeni nazw}}, ona jest pusta, więc to zostanie wziete do ostatecznego wyniku. Przykłady w wikikodzie: * {{Code|{{m|Pudełko|Nazwa przestrzeni nazw 3|nazwa przestrzeni nazw{{=}}|nazwa jednostki{{=}}Wikibooks:Strona}}}} → {{Tt|{{#invoke:Pudełko|Nazwa przestrzeni nazw 3|nazwa przestrzeni nazw=|nazwa jednostki=Wikibooks:Szablon}}}} * {{Code|{{m|Pudełko|Nazwa przestrzeni nazw 3|nazwa przestrzeni nazw 2{{=}}|nazwa jednostki 2{{=}}Wikibooks:Strona|numer jednostki{{=}}2}}}} → {{Tt|{{#invoke:Pudełko|Nazwa przestrzeni nazw 3|nazwa przestrzeni nazw 2=|nazwa jednostki 2=Wikibooks:Szablon|numer jednostki=2}}}} Powyżej dla przykładu podano parametry nie w rodzicu w szablonie, tylko w dziecku, jeśli chodzi o parametry nazw przestrzeni nazw i nazw jednostek, ale ich się za to nie powinno podawać w tych ramach, tylko w szablonach, w których wywoływane są te ramki pudełek {{Code|{{m|Pudełko}}}}, ale tak tutaj tak zrobiono by było najłatwiej sprawdzić działanie tego typu funkcji. Analogicznie możemy podawać parametry typu jednostki, np.: wywołaniu modułowym {{Code|{{m|Pudełko|Nazwa przestrzeni nazw 3|typ jednostki 2{{=}}Podręcznik|nazwa jednostki 2{{=}}Szablon:Strona|numer jednostki{{=}}2}}}} (ale wtedy jest brana przestrzeń nazw z nazwy jednostki), ale o tym więcej w rozdziałach {{Code|{{sr|#p["Typ jednostki 3"](frame,i)|p=Pudełko}}}} w „{{sr|#Funkcje typu jednostki|p=Pudełko}}”, on definiuje przestrzenie przedmiotowe, ale można użyć parametru dyskusji typu jednostki z wartością niepustą, wtedy wyświetli się nazwa przestrzeni nazw dyskusji. Jeżeli typ jednostki bazowy wskazuje na przestrzeń nazw główną, wtedy się nie liczą parametry nazw jednostek, a na numerkowy, wtedy się liczy. Również parametry typu jednostki nie powinno się podawać w dziecku w ramce, tylko w rodzicu w szablonie jako parametry, w którym ta ramka jest wywoływana, ale tutaj podano jedynie dla przykładu, jak najłatwiej sprawdzić działanie tych parametrów tej funkcji. Najpierw w funkcji nagłówku brane są parametry nazw przestrzeni nazw, a jeżeli ich nie ma, to parametry typu jednostki, a jeżeli nie ma lub parametry przestrzenne wskazują na przestrzeń główną, i nie ma nazwy jednostki, to generowane są nazwy tej funkcji na podstawie aktualnej strony. === {{Code|p["Nazwa przedmiotowej przestrzeni nazw 3"](frame,i)}} === Funkcja pisze przedmiotową nazwę przestrzeni nazw jakikolwiek nazwy przestrzeni nazw (tzn. nazwę przedmiotową nazwy przestrzenie nazw, czyli nie dyskusji, zamieniana jest na nią samą, czyli identyfikator przestrzeni się nie zmienia, a dyskusji, nie przedmiotową, przekształca się na przedmiotową jej odpowiadającą, czyli w tym przypadku identyfikator przestrzeni zmniejsza się o numer mniej), według podanej w zmiennej {{Code|nazwa przestrzeni nazw}} dla pozycja bazowej w podanych parametrach szablonu rodzicu ramki dziecka, lub dla innej pozycji należy parametr podawać w formie {{Code|nazwa przestrzeni nazw 1}}, {{Code|nazwa przestrzeni nazw 2}}, {{Code|nazwa przestrzeni nazw 3}},..., lub te parametry można podać w postaci ogólnej {{Code|nazwa przestrzeni nazw i}}. Parametry podaje się w parametrach rodzica wywołania tej funkcji {{Code|{{m|Pudełko|Nazwa przedmiotowej przestrzeni nazw 3}}}} (ale ich nie trzeba podawać w dziecku, ale można) i w parametrach dziecka, jeśli chodzi o zmienną {{Code|numer jednostki}}, czyli np.: {{Code|{{m|Pudełko|Nazwa przedmiotowej przestrzeni nazw 3|numer jednostki{{=}}<jakaś liczba całkowita dodatnia>}}}}. Te parametry przestrzenne zamiast w rodzicu w szablonie można podać w ramce dziecka, wtedy parametry dziecka mają pierwszeństwo. Parametry przestrzenne mogą mogą być podane w postaci przestrzeni przedmiotowej lub dyskusji, ale ta funkcja zawsze ją zamienia na przedmiotową. Przestrzeń nazw z parametrów nazw przestrzennych bazowych (bez numerka) może odpowiadać wartości przestrzeni głównej, to wtedy odpowiednia przestrzeń nazw z parametru nazwy jednostki się nie liczy w tej funkcji, aby się liczyła należy użyć funkcji {{Code|{{sr|#p["Nazwa przedmiotowej przestrzeni nazw 2"](frame,...)|p=Pudełko}}}}. Przestrzeń nazw z parametrów nazw przestrzennych numerkowych może odpowiadać wartości przestrzeni głównej, to wtedy odpowiednia przestrzeń nazw z parametru nazwy jednostki się liczy w tej funkcji, wtedy jest liczona nazwa przestrzeni nazw z tego parametru. Gdy parametry przestrzenne lub typ jednostki w drugim podejściu nie wskazują na przestrzeń główną, to wtedy działanie tej funkcji jest podobne do {{Code|{{sr|#p["Nazwa przedmiotowej przestrzeni nazw 2"](frame,...)|p=Pudełko}}}}. Definicja skrótowa funkcji: <syntaxhighlight lang="lua"> p["Nazwa przedmiotowej przestrzeni nazw 3"]=function(frame,czy_uwzglednic_alternatywna_nazwe,i)...end; </syntaxhighlight> Wtedy ciało funkcji tej, czyli jego definicja w środku, jest: <syntaxhighlight lang="lua"> -- Jest liczony numer parametru nazwy przestrzeni nazw, domyslnie chodzi tu o numer bazowy parametrów przestrzennych; local numer_jednostki=i or frame.args["numer jednostki"]; local liczba_numeru_jednostki=((numer_jednostki)and(tonumber(numer_jednostki)) or 0); local pudelko_pomocne_modul=require("Module:Pudełko/Pomocne"); -- Liczy nazwę przestrzeni nazw przedmiotową na podstawie podanych parametrów; return pudelko_pomocne_modul.Uzyskanie_nazw_jednostki(frame,1,liczba_numeru_jednostki,nil,1); </syntaxhighlight> Parametry funkcji: * {{Code|frame}} - tablica ramki tablicy transportu, * {{Code|czy_uwzglednic_alternatywna_nazwe}} - czy ma uwzględniać nazwę przestrzeni nazw domyślną szablonu, dostępne wartości: {{Code|false}}, w której nazwa domyślna nie jest uwzględniana wtedy, oraz {{Code|nil}} i {{Code|true}}, które oznaczają to samo, w tym jeżeli ona jest uwzględniana, wtedy jest brany parametr pierwszy dziecka, który musi istnieć przy takiej wartości tego parametru, tzn. {{Code|{{m|Pudełko|Nazwa przedmiotowej przestrzeni nazw 3|Dyskusja szablonu}}}} - ta nazwa domyślna zostanie zamieniona na przedmiotową, a jak ona by była przedmiotowa, to żadnej zamiany by nie było, a nazwa uzyskana z nazwy przestrzeni nazw z parametrów przestrzennych jest w takim przypadku błędna, to w takim razie brany jest ten parametr, a jeżeli ta nazwa domyślna jest błędna, czyli {{Code|{{m|Pudełko|Nazwa przedmiotowej przestrzeni nazw 3|Moja przestrzeń}}}}, wtedy funkcja zwraca stan błędu {{Code|(błąd)}}. * {{Code|i}} - numer zmiennej nazwy przestrzeni nazw. Funkcja wykorzystuje {{Code|{{sr|#p.Uzyskanie_nazw_jednostki(frame,...)|p=Pudełko/Pomocne}}}} do wyznaczania ogólnego nazwy przestrzeni nazw dla pozycji bazowej i numerkowej, tzn. dla pozycji: jeden, dwa, trzy,..., itd, i ich ogólnej. Parametr ramki tablicy transportu rodzica szablonu: * {{Code|nazwa przestrzeni nazw}}, {{Code|nazwa przestrzeni nazw 1}}, {{Code|nazwa przestrzeni nazw 2}}, {{Code|nazwa przestrzeni nazw 3}},..., {{Code|nazwa przestrzeni nazw i}} - nazwy przestrzeni nazw dla pozycji bazowej oraz zwykłej i ogólnej numerkowej, * {{Code|typ jednostki}}, {{Code|typ jednostki 1}}, {{Code|typ jednostki 2}}, {{Code|typ jednostki 3}},..., {{Code|typ jednostki i}} - typy jednostek, którym odpowiadają pewne przestrzenie przedmiotowe, dla pozycji bazowej, numerkowej i ogólnej. Parametry ramki tablicy transportu dziecka: * Parametry dziecka są takie same jak rodzica dla funkcji pudełkowej plus tu wymienione, * {{Code|numer jednostki}} - jak parametr {{Code|i}} nie został ustawiony, to wtedy liczy się ta zmienna. Przykłady: <syntaxhighlight lang="mediawiki"> {{Nazwa szablonu 1|nazwa przestrzeni nazw=Wikibooks|nazwa przestrzeni nazw=|nazwa przestrzeni nazw i=|nazwa jednostki=Dyskusja Wikibooks:Strona}} ---- {{Nazwa szablonu 2|nazwa przestrzeni nazw=Wikibooks|nazwa przestrzeni nazw 1=Szablon|nazwa przestrzeni nazw i=|nazwa jednostki 2=Dyskusja Wikibooks:Strona}} </syntaxhighlight> W pierwszym wywołaniu {{Code|nazwa przestrzeni nazw}} jest puste, ale dla tego bazowego (bez numerka) szukamy przestrzeni nazw, a więc ta nazwa jest ostateczna. ---- W drugim wywołaniu w dziecku powiedzmy jest wywołanie, i szukamy nazwy przestrzeni nazw o numerze dwa, która została podana, ale istnieje za to jej wersji ogólna {{Code|nazwa przestrzeni nazw i}} i domyślna {{Code|nazwa przestrzeni nazw}}, ale wtedy dla tego numerkowego liczy się to ogólne z {{Code| i}}, a ponieważ ta nazwa jest pusta, więc będziemy liczyli nazwę przestrzeni nazw z {{Code|nazwa jednostki 2}}. Odpowiadająca powyższemu kodowi, powiedzmy wikikod, według ich zawartości, przedstawia się: <syntaxhighlight lang="mediawiki"> {{#invoke:Pudełko|Nazwa przedmiotowej przestrzeni nazw 3}} ---- {{#invoke:Pudełko|Nazwa przedmiotowej przestrzeni nazw 3|numer jednostki=2}} </syntaxhighlight> Na podstawie powyższego przykładu otrzymamy wynik o schemacie, nie wyniku, bo tam nie ma zmiennej {{Code|nazwa przestrzeni nazw 1}}, ale jest {{Code|nazwa przestrzeni nazw i}}: <syntaxhighlight lang="mediawiki"> <!-- nazwa przestrzeni nazw=""; --> <!-- Czyli wynik: --> <!-- wynik pusty --> <!-- Widzimy, że wygenerowała się nazwa przestrzeni nazw, którą jest przestrzeń nazw główna, jest ciągiem pustym: ""; --> ---- <!-- Ale nie "nazwa przestrzeni nazw 2", bo jej nie ma, ale za to istnieje "nazwa przestrzeni nazw i"; --> <!-- nazwa przestrzeni nazw 2=nazwa przestrzeni nazw i="", a nazwa jednostki 2="Dyskusja Wikibooks:Strona"; --> <!-- Czyli wynik: --> Wikibooks <!-- Widzimy, że wygenerowała się nazwa przestrzeni nazw, którą jest przestrzeń nieprogramowa, ale projektu, wychodząca z nazwy jednostek w tym przypadku z "nazwa jednostki 2"; --> </syntaxhighlight> Dla parametrów numerkowych nie jest brana w tym powyższym przykładzie zmienna {{Code|nazwa przestrzeni nazw 2}}, bo jej nie ma, ale za to jest {{Code|nazwa przestrzeni nazw i}}, bo ona występuje jako parametr domyślny ogólny dla parametrów numerkowych. Tytaj jest używana jest zmienna {{Code|nazwa jednostki 2}} do wygenerowania ostatecznego wyniku, bo jak można zauważyć, parametry przestrzenne wskazują na przestrzeń główną, a nazwy jednostek już nie. Dla parametrów bazowych mamy zmienną {{Code|nazwa przestrzeni nazw}}, ona jest pusta, więc to zostanie wziete do ostatecznego wyniku. Przykłady w wikikodzie: * {{Code|{{m|Pudełko|Nazwa przedmiotowej przestrzeni nazw 3|nazwa przestrzeni nazw{{=}}|nazwa jednostki{{=}}Dyskusja Wikibooks:Strona}}}} → {{Tt|{{#invoke:Pudełko|Nazwa przedmiotowej przestrzeni nazw 3|nazwa przestrzeni nazw=|nazwa jednostki=Dyskusja Wikibooks:Szablon}}}} * {{Code|{{m|Pudełko|Nazwa przedmiotowej przestrzeni nazw 3|nazwa przestrzeni nazw 2{{=}}|nazwa jednostki 2{{=}}Dyskusja Wikibooks:Strona|numer jednostki{{=}}2}}}} → {{Tt|{{#invoke:Pudełko|Nazwa przedmiotowej przestrzeni nazw 3|nazwa przestrzeni nazw 2=|nazwa jednostki 2=Dyskusja Wikibooks:Szablon|numer jednostki=2}}}} Powyżej dla przykładu podano parametry nie w rodzicu w szablonie, tylko w dziecku, jeśli chodzi o parametry nazw przestrzeni nazw, ale ich się za to nie powinno podawać w tych ramach, tylko w szablonach, w których wywoływane są te ramki pudełek {{Code|{{m|Pudełko}}}}, ale tak tutaj tak zrobiono by było najłatwiej sprawdzić działanie tego typu funkcji. Analogicznie możemy podawać parametry typu jednostki, np.: wywołaniu modułowym {{Code|{{m|Pudełko|Nazwa przedmiotowej przestrzeni nazw 3|typ jednostki 2{{=}}strona szablonu|numer jednostki{{=}}2}}}}, ale o tym więcej w rozdziałach {{Code|{{sr|# p["Przedmiotowy typ jednostki 3"](frame,i)|p=Pudełko}}}} w „{{sr|#Funkcje typu jednostki|p=Pudełko}}”, ale wtedy ta sama nazwa przestrzeni nazw reprezentowana przez {{Parametr|typ jednostki 2|strona szablonu}}, jest zamieniana na to samo, lepiej jest tutaj używać parametrów przestrzennych nazw niż typu jednostki, bo typ jednostki ma taką samą wartość dla przestrzeni przedmiotowej, co dyskusji. Tutaj parametr dyskusji typu jednostki bazowy i numerkowy ogólny, czy szczegółowy, nie gra roli, bo nawet, gdy wygenerujemy nazwę przestrzeni dyskusji za pomoca tego parametru, to i tak otrzymamy na samym końcu jego nazwę przedmiotową. Jeżeli typ jednostki bazowy wskazuje na przestrzeń nazw główną, wtedy się nie liczą parametry nazw jednostek, a na numerkowy, wtedy się liczy. Również parametry typu jednostki nie powinno się podawać w dziecku w ramce, tylko w rodzicu w szablonie jako parametry, w którym ta ramka jest wywoływana, ale tutaj podano jedynie dla przykładu, jak najłatwiej sprawdzić działanie tych parametrów tej funkcji. Najpierw w funkcji nagłówku brane są parametry nazw przestrzeni nazw, a jeżeli ich nie ma, to parametry typu jednostki, a jeżeli nie ma, to generowane są nazwy na podstawie aktualnego modułu. === {{Code|p["Nazwa przestrzeni nazw dyskusji 3"](frame,i)}} === Funkcja pisze nazwę przestrzeni nazw dyskusji jakikolwiek nazwy przestrzeni nazw (tzn. nazwę dyskusji nazwy przestrzenie nazw, czyli nie przedmiotowej, zamieniana jest na nią samą, czyli identyfikator przestrzeni się nie zmienia, a przedmiotową, nie dyskusji, przekształca się na dyskusji jej odpowiadającą, czyli w tym przypadku identyfikator przestrzeni zwiększa się o numer więcej), według, i nie zawsze tylko, podanej w zmiennej {{Code|nazwa przestrzeni nazw}} dla pozycja bazowej w podanych parametrach szablonu rodzicu ramki dziecka, lub dla innej pozycji należy parametr podawać w formie {{Code|nazwa przestrzeni nazw 1}}, {{Code|nazwa przestrzeni nazw 2}}, {{Code|nazwa przestrzeni nazw 3}},..., lub te parametry można podać w postaci ogólnej {{Code|nazwa przestrzeni nazw i}}. W tej funkcji trzeba też podawać parametry nazwy jednostek {{Code|nazwa jednostki}}, {{Code|nazwa jednostki 1}}, {{Code|nazwa jednostki 2}}, {{Code|nazwa jednostki 3}},... Parametry podaje się w parametrach rodzica wywołania tej funkcji {{Code|{{m|Pudełko|Nazwa przestrzeni nazw dyskusji 3}}}} (ale ich nie trzeba podawać w dziecku, ale można) i w parametrach dziecka, jeśli chodzi o zmienną {{Code|numer jednostki}}, czyli np.: {{Code|{{m|Pudełko|Nazwa przestrzeni nazw dyskusji 3|numer jednostki{{=}}<jakaś liczba całkowita dodatnia>}}}}. Te parametry przestrzenne zamiast w rodzicu w szablonie można podać w ramce dziecka, wtedy parametry dziecka mają pierwszeństwo. Przestrzeń nazw z parametrów nazw przestrzennych bazowych (bez numerka) może odpowiadać wartości przestrzeni głównej, to wtedy odpowiednia przestrzeń nazw z parametru nazwy jednostki się nie liczy w tej funkcji, aby się liczyła należy użyć funkcji {{Code|{{sr|#p["Nazwa przestrzeni nazw dyskusji 2"](frame,...)|p=Pudełko}}}}. Przestrzeń nazw z parametrów nazw przestrzennych numerkowych może odpowiadać wartości przestrzeni głównej, to wtedy odpowiednia przestrzeń nazw z parametru nazwy jednostki się liczy w tej funkcji, wtedy jest liczona nazwa przestrzeni nazw z tego parametru. Gdy parametry przestrzenne lub typ jednostki w drugim podejściu nie wskazują na przestrzeń główną, to wtedy działanie tej funkcji jest podobne do {{Code|{{sr|#p["Nazwa przestrzeni nazw dyskusji 2"](frame,...)|p=Pudełko}}}}. Definicja skrótowa funkcji: <syntaxhighlight lang="lua"> p["Nazwa przestrzeni nazw dyskusji 3"]=function(frame,czy_uwzglednic_alternatywna_nazwe,i)...end; </syntaxhighlight> Wtedy ciało funkcji tej, czyli jego definicja w środku, jest: <syntaxhighlight lang="lua"> -- Jest liczony numer parametru nazwy przestrzeni nazw, domyslnie chodzi tu o numer bazowy parametrów przestrzennych; local numer_jednostki=i or frame.args["numer jednostki"]; local liczba_numeru_jednostki=((numer_jednostki)and(tonumber(numer_jednostki)) or 0); local pudelko_pomocne_modul=require("Module:Pudełko/Pomocne"); -- Liczy nazwę przestrzeni nazw dyskusji na podstawie podanych parametrów; return pudelko_pomocne_modul.Uzyskanie_nazw_jednostki(frame,2,liczba_numeru_jednostki,nil,1); </syntaxhighlight> Parametry funkcji: * {{Code|frame}} - tablica ramki tablicy transportu, * {{Code|czy_uwzglednic_alternatywna_nazwe}} - czy ma uwzględniać nazwę przestrzeni nazw domyślną szablonu, dostępne wartości: {{Code|false}}, w której nazwa domyślna nie jest uwzględniana wtedy, oraz {{Code|nil}} i {{Code|true}}, które oznaczają to samo, w tym jeżeli ona jest uwzględniana, wtedy jest brany parametr pierwszy dziecka, który musi istnieć przy takiej wartości tego parametru, tzn. {{Code|{{m|Pudełko|Nazwa przestrzeni nazw dyskusji 3|Szablon}}}}, a nazwa uzyskana nazwy przestrzeni nazw jest w takim przypadku błędna, a jeżeli nazwa domyślna jest błędna, czyli {{Code|{{m|Pudełko|Nazwa przestrzeni nazw dyskusji 3|Moja przestrzeń}}}}, wtedy funkcja zwraca stan błędu {{Code|(błąd)}}. * {{Code|i}} - numer zmiennej nazwy przestrzeni nazw. Funkcja wykorzystuje {{Code|{{sr|#p.Uzyskanie_nazw_jednostki(frame,...)|p=Pudełko/Pomocne}}}} do wyznaczania ogólnego nazwy przestrzeni nazw dla pozycji bazowej i numerkowej, tzn. dla pozycji: jeden, dwa, trzy,..., itd, i ich ogólnej. Parametr ramki tablicy transportu rodzica szablonu: * {{Code|nazwa przestrzeni nazw}}, {{Code|nazwa przestrzeni nazw 1}}, {{Code|nazwa przestrzeni nazw 2}}, {{Code|nazwa przestrzeni nazw 3}},..., {{Code|nazwa przestrzeni nazw i}} - nazwy przestrzeni nazw dla pozycji bazowej oraz zwykłej i ogólnej numerkowej, * {{Code|nazwa jednostki}}, {{Code|nazwa jednostki 1}}, {{Code|nazwa jednostki 2}}, {{Code|nazwa jednostki 3}},... - nazwy jednostek dla pozycji bazowej i numerkowej, * {{Code|typ jednostki}}, {{Code|typ jednostki 1}}, {{Code|typ jednostki 2}}, {{Code|typ jednostki 3}},..., {{Code|typ jednostki i}} - typy jednostek, którym odpowiadają pewne przestrzenie przedmiotowe, dla pozycji bazowej, numerkowej i ogólnej. Parametry ramki tablicy transportu dziecka: * Parametry dziecka są takie same jak rodzica dla funkcji pudełkowej plus tu wymienione, * {{Code|numer jednostki}} - jak parametr {{Code|i}} nie został ustawiony, to wtedy liczy się ta zmienna. Przykłady: <syntaxhighlight lang="mediawiki"> {{Nazwa szablonu 1|nazwa przestrzeni nazw=Wikibooks|nazwa przestrzeni nazw=|nazwa przestrzeni nazw i=|nazwa jednostki=Szablon:Strona}} ---- {{Nazwa szablonu 2|nazwa przestrzeni nazw=Wikibooks|nazwa przestrzeni nazw 1=Szablon|nazwa przestrzeni nazw i=|nazwa jednostki 2=Wikibooks:Strona}} </syntaxhighlight> W pierwszym wywołaniu {{Code|nazwa przestrzeni nazw}} jest puste, ale dla tego bazowego (bez numerka) szukamy przestrzeni nazw, a więc ta nazwa jest ostateczna. ---- W drugim wywołaniu w dziecku powiedzmy jest wywołanie, i szukamy nazwy przestrzeni nazw o numerze dwa, która została podana, ale istnieje za to jej wersji ogólna {{Code|nazwa przestrzeni nazw i}} i domyślna {{Code|nazwa przestrzeni nazw}}, ale wtedy dla tego numerkowego liczy się to ogólne z {{Code| i}}, a ponieważ ta nazwa jest pusta, więc będziemy liczyli nazwę przestrzeni nazw z {{Code|nazwa jednostki 2}}. Odpowiadająca powyższemu kodowi, powiedzmy wikikod, według ich zawartości, przedstawia się: <syntaxhighlight lang="mediawiki"> {{#invoke:Pudełko|Nazwa przestrzeni nazw 3}} ---- {{#invoke:Pudełko|Nazwa przestrzeni nazw 3|numer jednostki=2}} </syntaxhighlight> Na podstawie powyższego przykładu otrzymamy wynik o schemacie, nie wyniku, bo tam nie ma zmiennej {{Code|nazwa przestrzeni nazw 1}}, ale jest {{Code|nazwa przestrzeni nazw i}}: <syntaxhighlight lang="mediawiki"> <!-- nazwa przestrzeni nazw=""; --> <!-- Czyli wynik: --> Dyskusja <!-- Widzimy, że wygenerowała się nazwa przestrzeni nazw, którą jest przestrzeń nazw niegłówna, jest ciągiem niepustym; --> ---- <!-- Ale nie "nazwa przestrzeni nazw 2", bo jej nie ma, ale za to istnieje "nazwa przestrzeni nazw i"; --> <!-- nazwa przestrzeni nazw 2=nazwa przestrzeni nazw i="", a nazwa jednostki 2="Wikibooks:Strona"; --> <!-- Czyli wynik: --> Dyskusja Wikibooks <!-- Widzimy, że wygenerowała się nazwa przestrzeni nazw, którą jest przestrzeń nieprogramowa, ale projektu, wychodząca z nazwy jednostek w tym przypadku z "nazwa jednostki 2"; --> </syntaxhighlight> Dla parametrów numerkowych nie jest brana w tym powyższym przykładzie zmienna {{Code|nazwa przestrzeni nazw 2}}, bo jej nie ma, ale za to jest {{Code|nazwa przestrzeni nazw i}}, bo ona występuje jako parametr domyślny ogólny dla parametrów numerkowych. Tytaj jest używana jest zmienna {{Code|nazwa jednostki 2}} do wygenerowania ostatecznego wyniku, bo jak można zauważyć, parametry przestrzenne wskazują na przestrzeń główną, a nazwy jednostek już nie. Dla parametrów bazowych mamy zmienną {{Code|nazwa przestrzeni nazw}}, ona jest pusta, więc to zostanie wziete do ostatecznego wyniku. Przykłady w wikikodzie: * {{Code|{{m|Pudełko|Nazwa przestrzeni nazw dyskusji 3|nazwa przestrzeni nazw{{=}}|nazwa jednostki{{=}}Wikibooks:Strona}}}} → {{Tt|{{#invoke:Pudełko|Nazwa przestrzeni nazw dyskusji 3|nazwa przestrzeni nazw=|nazwa jednostki=Wikibooks:Szablon}}}} * {{Code|{{m|Pudełko|Nazwa przestrzeni nazw dyskusji 3|nazwa przestrzeni nazw 2{{=}}|nazwa jednostki 2{{=}}Wikibooks:Strona|numer jednostki{{=}}2}}}} → {{Tt|{{#invoke:Pudełko|Nazwa przestrzeni nazw dyskusji 3|nazwa przestrzeni nazw 2=|nazwa jednostki 2=Wikibooks:Szablon|numer jednostki=2}}}} Powyżej dla przykładu podano parametry nie w rodzicu w szablonie, tylko w dziecku, jeśli chodzi o parametry nazw przestrzeni nazw i nazw jednostek, ale ich się za to nie powinno podawać w tych ramach, tylko w szablonach, w których wywoływane są te ramki pudełek {{Code|{{m|Pudełko}}}}, ale tak tutaj tak zrobiono by było najłatwiej sprawdzić działanie tego typu funkcji. Analogicznie możemy podawać parametry typu jednostki, np.: wywołaniu modułowym {{Code|{{m|Pudełko|Nazwa przestrzeni nazw dyskusji 3|typ jednostki 2{{=}}Podręcznik|nazwa jednostki 2{{=}}Szablon:Strona|numer jednostki{{=}}2}}}} (ale wtedy jest brana przestrzeń nazw z nazwy jednostki), ale o tym więcej w rozdziałach {{Code|{{sr|# p["Dyskusyjny typ jednostki 3"](frame,i)|p=Pudełko}}}} w „{{sr|#Funkcje typu jednostki|p=Pudełko}}”, one definiują przestrzenie dyskusji, ale można użyć parametru dyskusji typu jednostki z obojętnie jaką wartością niepustą, czy pustą, czy nawet jej nie podamy, wtedy wyświetli się nazwa przestrzeni nazw dyskusji. Jeżeli typ jednostki bazowy wskazuje na przestrzeń nazw główną, wtedy się nie liczą parametry nazw jednostek, a na numerkowy, wtedy się liczy. Również parametry typu jednostki nie powinno się podawać w dziecku w ramce, tylko w rodzicu w szablonie jako parametry, w którym ta ramka jest wywoływana, ale tutaj podano jedynie dla przykładu, jak najłatwiej sprawdzić działanie tych parametrów tej funkcji. Najpierw w funkcji nagłówku brane są parametry nazw przestrzeni nazw, a jeżeli ich nie ma, to parametry typu jednostki, a jeżeli nie ma lub parametry przestrzenne wskazują na przestrzeń główną, i nie ma nazwy jednostki, to generowane są nazwy tej funkcji na podstawie aktualnej strony. == Funkcje nazw jednostki trzeciej wersji == === {{Code|p["Nazwa jednostki 3"](frame,i)}} === === {{Code|p["Nazwa przedmiotowa jednostki 3"](frame,i)}} === === {{Code|p["Nazwa dyskusji jednostki 3"](frame,i)}} === == Funkcje typu jednostki == === {{Code|p["Typ jednostki"](frame,i)}} === === {{Code|p["Typ jednostki 2"](frame,i)}} === === {{Code|p["Typ jednostki 3"](frame,i)}} === === Funkcje typu jednostki przedmiotowe === ==== {{Code|p["Przedmiotowy typ jednostki"](frame,i)}} ==== ==== {{Code|p["Przedmiotowy typ jednostki 2"](frame,i)}} ==== ==== {{Code|p["Przedmiotowy typ jednostki 3"](frame,i)}} ==== === Fukcje typu jednostki dyskusji === ==== {{Code|p["Dyskusyjny typ jednostki"](frame,i)}} ==== ==== {{Code|p["Dyskusyjny typ jednostki 2"](frame,i)}} ==== ==== {{Code|p["Dyskusyjny typ jednostki 3"](frame,i)}} ==== == Funkcje chech pudełka == === {{Code|p["Cecha pudełka"](frame)}} === === {{Code|p["Przedmiotowa cecha pudełka"](frame)}} === === {{Code|p["Dyskusyjna cecha pudełka"](frame)}} === == Fukcje ogólnego pudełka == === {{Code|p["Ogólne pudełko"](frame)}} === == Funkcje ogólne == === {{Code|p["Tekst pudełka"](frame)}} === == Funkcje błędów pudełka == === {{Code|p["Błędy pudełka"](frame)}} === === {{Code|p["Przedmiotowe błędy pudełka"](frame)}} === === {{Code|p["Dyskusyjne błędy pudełka"](frame)}} === == Funkcje nazw stron == === {{Code|p["Nazwa strony głównej projektu"](frame,i)}} === === {{Code|p["Nazwa strony głównej dla dzieci projektu"](frame,i)}} === == Funkcje kodów == === {{Code|p["Kod języka"](frame,i)}} === === {{Code|p["Kod projektu"](frame,i)}} === === {{Code|p["Klucz projektu"](frame,i)}} === == Funkcje wiki == === {{Code|p["Inny niż język bieżący wiki"](frame)}} === === {{Code|p["Inne niż lokalne wiki"](frame)}} === === {{Code|p["Inne niż bieżące wiki"](frame)}} === == Funkcje typów parametrów, czy podane je == === {{Code|p["Podano parametry nienazwane"](frame)}} === === {{Code|p["Podano parametry numerowane"](frame)}} === === {{Code|p["Podano parametry nazwane"](frame)}} === == Funkcje kodów tego projektu == === {{Code|p["Kod projektu tego projektu"](frame)}} === === {{Code|p["Kod języka tego projektu"](frame)}} === === {{Code|p["Klucz projektu tego projektu"](frame)}} === == Funkcje stron == === {{Code|p["Strona główna tego projektu"](frame)}} === === {{Code|p["Strona główna dla dzieci tego projektu"](frame)}} === == Funkcje nazw stron drugiej wersji == === {{Code|p["Nazwa strony głównej dla dzieci projektu 2"](frame)}} === === {{Code| p["Nazwa strony głównej projektu 2"](frame)}} === {{BrClear}} <noinclude><!-- -->{{ProstaStronaKoniec}}<!-- -->{{Kategoria|Opisy funkcji, w Lua w Scribunto, w modułach}}<!-- --></noinclude> c5gjo5nlh0ub8x7sf6hqhos8gi4snwn 540449 540448 2026-04-24T04:15:59Z Persino 2851 /* {{Code|p["Nazwa przestrzeni nazw dyskusji 2"](frame,...)}} */ 540449 wikitext text/x-wiki <noinclude>{{ProstaStronaStart | nagłówek = {{Podrozdział|{{ld2|Pudełko}}|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 pudelko_modul=require("Module:Pudełko"); </syntaxhighlight> dzięki, któremu można wypisywać funkcje należącego do niego. Posługuje się na parametrach pudełkowych {{Parametr|nazwa przestrzeni nazw}} (czy też bez numerka {{Parametr|nazwa przestrzeni nazw i}} dla tego numerowanego) lub te z numerkiem po jednej spacji w nich (ale nie dla tego z końcówką {{Code| i}}) mogą zostać użyte jako parametry szablonu. Moduł {{Code|{{ld2|Pudełko}}}} przedstawia funkcje nazw w oparciu o funkcje nazw {{Code|{{ld2|Nazwy}}}}, generuje on nazwy za pomocą parametrów pudełkowych podanych poniżej. Parametr {{Parametr|nazwa jednostki}} (lub parametr {{Parametr|cel}} dla numerka tego pierwszego, tego alternatywnego), lub te z numerkiem po jednej spacji w nazwie parametru, albo numerowane numerkami {{Code|1}}, {{Code|2}},..., mogą zostać użyte jako parametry szablonu. Parametry określające rodzaj jednostki {{Parametr|typ jednostki}} z {{Parametr|dyskusja typu jednostki}}, itp. w wersjach z numerkiem po jednej spacji w nich mogą zostać użyte jako parametry szablonu. A te tymi numerowanymi liczbami naturalnymi {{Tt|nazwy jednostki}} od jedynki wzwyż poprzez szablon, w którym są one użyte, one też mogą być użyte z dwukropkiem, te numerowane, na samym początku nazwy, wtedy one są traktowane jako pełne nazwy strony, i wtedy one nie zostaną z interpretowane, że do nich trzeba użyć parametr odpowiedni z nazwą przetrzeni nazw z tego numerowanego, czy ogólny, aby utworzyć znów inną pełną nazwę strony dla tego numerka. Zestawienie: * {{Code|nazwa przestrzeni nazw}} i {{Code|nazwa przestrzeni nazw i}} (ogólna nazwa przestrzeni nazw dla wszystkich numerków, i tych numerowanych jednostek) - i to pierwsze z numerkiem, tzn. {{Code|nazwa przestrzeni nazw 1}}, {{Code|nazwa przestrzeni nazw 2}}, ..., * {{Code|nazwa jednostki}} - i te z numerkiem: {{Code|nazwa jednostki 1}}, {{Code|nazwa jednostki 2}}, ..., lub gdy jest zamiast tego parametrem numerowany, {{Code|1}}, {{Code|2}},..., który dla tego pierwszego może być uznany jako: {{Code|cel}} {{=}} {{Code|1}}, * {{Code|typ jednostki}} (parametr bazowy) i {{Code|typ jednostki i}} (parametr domyślny numerkowy) - i te z numerkiem: {{Code|typ jednostki 1}}, {{Code|typ jednostki 2}}, ..., tzn. gdy chcemy określić z jakim typem jednostki mamy do czynienia w zależności do jakiej przestrzeni nazw należy, a w danej, czy jest on np. programowy, czy tylko jest opisem, jak to bywa w szablonach {{Np|Template|link=tak}}, podobnie jest w przypadku {{Np|Module|link=tak}}, czy jak jest w innych przestrzeniach nazw, ** {{Code|dyskusja typu jednostki}} (parametr bazowy) i {{Code|dyskusja typu jednostki i}} (parametr domyślny numerkowy) - i te z numerkiem: {{Code|dyskusja typu jednostki 1}}, {{Code|dyskusja typu jednostki 2}}, ..., gdy chcemy określić wartością niepustą,że chodzi tutaj o typ jednostki. == {{Code|p.CzyNiepoprawnaNazwa(nazwa_jednostki)}} == Funkcja sprawdzajaca, czy jest poprawnie podana nazwa jednostki, czy ma poprawną nazwę. Znakami tymi, z których nie powinna składać się nazwa jest {{Code|<nowiki>{}<>|[]#\n</nowiki>}} i dodatkowo znak {{Code|&#127;}} (kod {{Code|{{Nowiki|&#127;}}}}). Też nie może składać się z trzech znaków tyldy, tzn. {{Code|<nowiki>~~~</nowiki>}}. Również w swojej budowie nie może składać się ze kodów {{Strong|HTML}} literowych o wzorze {{Code|{{Nowiki|&(%a+);}}}}. Natomiast może składać się z {{Code|{{Nowiki|&#(%d+);}}}} i {{Code|{{Nowiki|&#x(%x+);}}}}, ale w pierw te kody muszą być zamienione na normalne znaki. Skrótowa definicja funkcji: <syntaxhighlight lang="lua"> function p.CzyNiepoprawnaNazwa(nazwa_jednostki)...end; </syntaxhighlight> Wtedy ciało funkcji tej, czyli jego definicja w środku, jest: <syntaxhighlight lang="lua"> -- Moduł: "Moduł:Html/dane", służy do ładowania znaku o kodzie HTML "&#127;"; local html_dane_modul=mw.loadData("Module:Html/dane"); return mw.ustring.match(nazwa_jednostki,"[{}<>|%[%]#\n"..html_dane_modul.znak_127.."]+") or mw.ustring.match(nazwa_jednostki,"~~~") or mw.ustring.match(nazwa_jednostki,"&(%a+);"); </syntaxhighlight> Parametry: * {{Code|nazwa_jednostki}} - nazwa jednostki do sprawdzenia. Przykłady: <syntaxhighlight lang="lua"> local pudelko_modul=require("Module:Pudełko"); -- Podana przykładowa niepoprawna nazwa jedostki local nazwa_jednostki="Nazwa pliku [[Nazwa linku w pliku]]"; -- Fukcja zwróci wartość: local czy_poprawna_nazwa=true; local czy_poprawna_nazwa=pudelko_modul.CzyNiepoprawnaNazwa(nazwa_jednostki); </syntaxhighlight> == Funkcje nazw przestrzeni nazw == === {{Code|p["Nazwa przestrzeni nazw"](frame,...)}} === Funkcja pisze nazwę przestrzeni nazw, niezależnie, czy to jest przedmiotowa, czy dyskusji, według podanej w zmiennej {{Code|nazwa przestrzeni nazw}} dla pozycja bazowej w podanych parametrach szablonu rodzicu ramki dziecka, lub dla innej pozycji należy parametr podawać w formie {{Code|nazwa przestrzeni nazw 1}}, {{Code|nazwa przestrzeni nazw 2}}, {{Code|nazwa przestrzeni nazw 3}},..., lub te parametry można podać w postaci ogólnej {{Code|nazwa przestrzeni nazw i}}. Parametry podaje się w parametrach rodzica wywołania tej funkcji {{Code|{{m|Pudełko|Nazwa przestrzeni nazw}}}} (ale ich nie trzeba podawać w dziecku, ale można) i w parametrach dziecka, jeśli chodzi o zmienną {{Code|numer jednostki}}, czyli np.: {{Code|{{m|Pudełko|Nazwa przestrzeni nazw|numer jednostki{{=}}<jakaś liczba całkowita dodatnia>}}}}. Te parametry przestrzenne zamiast w rodzicu w szablonie można podać w ramce dziecka, wtedy parametry dziecka mają pierwszeństwo. Przestrzeń nazw z parametrów nazw przestrzennych może odpowiadać wartości przestrzeni głównej, to wtedy odpowiednia przestrzeń nazw z parametru nazwy jednostki się nie liczy w tej funkcji, aby się liczyła należy użyć funkcji {{Code|{{sr|#p["Nazwa przestrzeni nazw 2"](frame,...)|p=Pudełko}}}}. Definicja skrótowa funkcji: <syntaxhighlight lang="lua"> p["Nazwa przestrzeni nazw"]=function(frame,czy_uwzglednic_alternatywna_nazwe,i)...end; </syntaxhighlight> Wtedy ciało funkcji tej, czyli jego definicja w środku, jest: <syntaxhighlight lang="lua"> -- Jest liczony numer parametru nazwy przestrzeni nazw, domyslnie chodzi tu o numer bazowy parametrów przestrzennych; local numer_jednostki=i or frame.args["numer jednostki"]; local liczba_numer_jednostki=((numer_jednostki)and(tonumber(numer_jednostki))or 0); local pudelko_pomocne_modul=require("Module:Pudełko/Pomocne"); -- Liczy nazwę przestrzeni nazw na podstawie podanych parametrów; return pudelko_pomocne_modul.Nazwa_przestrzeni_nazw(frame,0, czy_uwzglednic_alternatywna_nazwe,liczba_numer_jednostki); </syntaxhighlight> Parametry funkcji: * {{Code|frame}} - tablica ramki tablicy transportu, * {{Code|czy_uwzglednic_alternatywna_nazwe}} - czy ma uwzględniać nazwę przestrzeni nazw domyślną szablonu, dostępne wartości: {{Code|false}}, w której nazwa domyślna nie jest uwzględniana wtedy, oraz {{Code|nil}} i {{Code|true}}, które oznaczają to samo, w tym jeżeli ona jest uwzględniana, wtedy jest brany parametr pierwszy dziecka, który musi istnieć przy takiej wartości tego parametru, tzn. {{Code|{{m|Pudełko|Nazwa przestrzeni nazw|Szablon}}}}, a nazwa uzyskana nazwy przestrzeni nazw jest w takim przypadku błędna, a jeżeli nazwa domyślna jest błędna, czyli {{Code|{{m|Pudełko|Nazwa przestrzeni nazw|Moja przestrzeń}}}}, wtedy funkcja zwraca stan błędu {{Code|(błąd)}}. * {{Code|i}} - numer zmiennej nazwy przestrzeni nazw. Funkcja wykorzystuje {{Code|{{sr|#p.Nazwa_przestrzeni_nazw(frame,...)|p=Pudełko/Pomocne}}}} do wyznaczania ogólnego nazwy przestrzeni nazw dla pozycji bazowej i numerkowej, tzn. dla pozycji: jeden, dwa, trzy,..., itd, i ich ogólnej. Parametr ramki tablicy transportu rodzica szablonu: * {{Code|nazwa przestrzeni nazw}}, {{Code|nazwa przestrzeni nazw 1}}, {{Code|nazwa przestrzeni nazw 2}}, {{Code|nazwa przestrzeni nazw 3}},..., {{Code|nazwa przestrzeni nazw i}} - nazwy przestrzeni nazw dla pozycji bazowej oraz zwykłej i ogólnej numerkowej, * {{Code|typ jednostki}}, {{Code|typ jednostki 1}}, {{Code|typ jednostki 2}}, {{Code|typ jednostki 3}},..., {{Code|typ jednostki i}} - typy jednostek, którym odpowiadają pewne przestrzenie przedmiotowe, dla pozycji bazowej, numerkowej i ogólnej, ** {{Code|dyskusja typu jednostki}}, {{Code|dyskusja typu jednostki 1}}, {{Code|dyskusja typ jednostki 2}}, {{Code|dyskusja typ jednostki 3}},..., {{Code|dyskusja typ jednostki i}} - czy dany typ jednostki ma przedstawiać, jeśli niepusta, przestrzeń dyskusji dla pozycji bazowej, numerkowej i ogólnej. Parametry ramki tablicy transportu dziecka: * Parametry dziecka są takie same jak rodzica dla funkcji pudełkowej plus tu wymienione, * {{Code|numer jednostki}} - jak parametr {{Code|i}} nie został ustawiony, to wtedy liczy się ta zmienna. Przykłady: <syntaxhighlight lang="mediawiki"> {{Nazwa szablonu|nazwa przestrzeni nazw=Wikibooks|nazwa przestrzeni nazw 2=Szablon|nazwa przestrzeni nazw i=Moduł}} </syntaxhighlight> W dziecku powiedzmy jest wywołanie, i szukamy nazwy przestrzeni nazw o numerze dwa, która nie została podana, ale istnieje za to jej wersji ogólna {{Code|nazwa przestrzeni nazw i}} i domyślna {{Code|nazwa przestrzeni nazw}}: <syntaxhighlight lang="mediawiki"> {{#invoke:Pudełko|Nazwa przestrzeni nazw|numer jednostki=1}} </syntaxhighlight> Na podstawie powyższego przykładu otrzymamy wynik o schemacie, nie wyniku, bo tam nie ma zmiennej {{Code|nazwa przestrzeni nazw 1}}, ale jest {{Code|nazwa przestrzeni nazw i}}: <syntaxhighlight lang="mediawiki"> <!-- Ale nie "nazwa przestrzeni nazw", bo jej nie ma, ale za to istnieje "nazwa przestrzeni nazw i"; --> <!-- nazwa przestrzeni nazw 2=nazwa przestrzeni nazw i=Moduł; --> <!-- Czyli wynik: --> Moduł <!-- Widzimy, że wygenerowała się nazwa przestrzeni nazw, którą jest przestrzeń programowa, którą również jest "Szablon"; --> </syntaxhighlight> Nie jest brana w tym powyższym przykładzie zmienna {{Code|nazwa przestrzeni nazw}}, bo jej nie ma, ale za to jest {{Code|nazwa przestrzeni nazw i}}, bo ona występuje jako parametr domyślny ogólny dla parametrów numerkowych. Przykłady w wikikodzie: * {{Code|{{m|Pudełko|Nazwa przestrzeni nazw|numer jednostki{{=}}2}}}} → {{Tt|{{#invoke:Pudełko|Nazwa przestrzeni nazw|numer jednostki=2}}}} * {{Code|{{m|Pudełko|Nazwa przestrzeni nazw|Szablon|nazwa przestrzeni nazw i{{=}}Moja przestrzeń|numer jednostki{{=}}2}}}} → {{Tt|{{#invoke:Pudełko|Nazwa przestrzeni nazw|Szablon|nazwa przestrzeni nazw i=Moja przestrzeń|numer jednostki=2}}}} * {{Code|{{m|Pudełko|Nazwa przestrzeni nazw|nazwa przestrzeni nazw 2{{=}}Szablon|numer jednostki{{=}}2}}}} → {{Tt|{{#invoke:Pudełko|Nazwa przestrzeni nazw|nazwa przestrzeni nazw 2=Szablon|numer jednostki=2}}}} * {{Code|{{m|Pudełko|Nazwa przestrzeni nazw|nazwa przestrzeni nazw 2{{=}}Szablon|numer jednostki{{=}}2}}}} → {{Tt|{{#invoke:Pudełko|Nazwa przestrzeni nazw|nazwa przestrzeni nazw i=Szablon|numer jednostki=2}}}} * {{Code|{{m|Pudełko|Nazwa przestrzeni nazw|nazwa przestrzeni nazw{{=}}Szablon|numer jednostki{{=}}2}}}} → {{Tt|{{#invoke:Pudełko|Nazwa przestrzeni nazw|nazwa przestrzeni nazw=Szablon|numer jednostki=2}}}} Powyżej dla przykładu podano parametry nie w rodzicu w szablonie, tylko w dziecku, jeśli chodzi o parametry nazw przestrzeni nazw, ale ich się za to nie powinno podawać w tych ramach, tylko w szablonach, w których wywoływane są te ramki pudełek {{Code|{{m|Pudełko}}}}, ale tak tutaj tak zrobiono by było najłatwiej sprawdzić działanie tego typu funkcji. Analogicznie możemy podawać parametry typu jednostki, np.: wywołaniu modułowym {{Code|{{m|Pudełko|Nazwa przestrzeni nazw|typ jednostki 2{{=}}strona szablonu|numer jednostki{{=}}2}}}}, ale o tym więcej w rozdziałach {{Code|{{sr|# p["Typ jednostki"](frame,i)|p=Pudełko}}}} w „{{sr|#Funkcje typu jednostki|p=Pudełko}}”, on definiuje przestrzenie przedmiotowe, ale można użyć parametru dyskusji typu jednostki z wartością niepustą, wtedy wyświetli się nazwa przestrzeni nazw dyskusji. Również parametry typu jednostki nie powinno się podawać w dziecku w ramce, tylko w rodzicu w szablonie jako parametry, w którym ta ramka jest wywoływana, ale tutaj podano jedynie dla przykładu, jak najłatwiej sprawdzić działanie tych parametrów tej funkcji. Najpierw w funkcji nagłówku brane są parametry nazw przestrzeni nazw, a jeżeli ich nie ma, to parametry typu jednostki, a jeżeli nie ma, to generowane są nazwy na podstawie aktualnego modułu. === {{Code|p["Nazwa przedmiotowej przestrzeni nazw"](frame,...)}} === Funkcja pisze przedmiotową nazwę przestrzeni nazw jakikolwiek nazwy przestrzeni nazw (tzn. nazwę przedmiotową nazwy przestrzenie nazw, czyli nie dyskusji, zamieniana jest na nią samą, czyli identyfikator przestrzeni się nie zmienia, a dyskusji, nie przedmiotową, przekształca się na przedmiotową jej odpowiadającą, czyli w tym przypadku identyfikator przestrzeni zmniejsza się o numer mniej), według podanej w zmiennej {{Code|nazwa przestrzeni nazw}} dla pozycja bazowej w podanych parametrach szablonu rodzicu ramki dziecka, lub dla innej pozycji należy parametr podawać w formie {{Code|nazwa przestrzeni nazw 1}}, {{Code|nazwa przestrzeni nazw 2}}, {{Code|nazwa przestrzeni nazw 3}},..., lub te parametry można podać w postaci ogólnej {{Code|nazwa przestrzeni nazw i}}. Parametry podaje się w parametrach rodzica wywołania tej funkcji {{Code|{{m|Pudełko|Nazwa przedmiotowej przestrzeni nazw}}}} (ale ich nie trzeba podawać w dziecku, ale można) i w parametrach dziecka, jeśli chodzi o zmienną {{Code|numer jednostki}}, czyli np.: {{Code|{{m|Pudełko|Nazwa przedmiotowej przestrzeni nazw|numer jednostki{{=}}<jakaś liczba całkowita dodatnia>}}}}. Te parametry przestrzenne zamiast w rodzicu w szablonie można podać w ramce dziecka, wtedy parametry dziecka mają pierwszeństwo. Parametry przestrzenne mogą mogą być podane w postaci przestrzeni przedmiotowej lub dyskusji, ale ta funkcja zawsze ją zamienia na przedmiotową. Przestrzeń nazw z parametrów nazw przestrzennych może odpowiadać wartości przestrzeni głównej, to wtedy odpowiednia przestrzeń nazw z parametru nazwy jednostki się nie liczy w tej funkcji, aby się liczyła należy użyć funkcji {{Code|{{sr|#p["Nazwa przedmiotowej przestrzeni nazw 2"](frame,...)|p=Pudełko}}}}. Definicja skrótowa funkcji: <syntaxhighlight lang="lua"> p["Nazwa przedmiotowej przestrzeni nazw"]=function(frame,czy_uwzglednic_alternatywna_nazwe,i)...end; </syntaxhighlight> Wtedy ciało funkcji tej, czyli jego definicja w środku, jest: <syntaxhighlight lang="lua"> -- Jest liczony numer parametru nazwy przestrzeni nazw, domyslnie chodzi tu o numer bazowy parametrów przestrzennych; local numer_jednostki=i or frame.args["numer jednostki"]; local liczba_numer_jednostki=((numer_jednostki)and(tonumber(numer_jednostki))or 0); local pudelko_pomocne_modul=require("Module:Pudełko/Pomocne"); -- Liczy nazwę przestrzeni nazw przedmiotową na podstawie podanych parametrów; return pudelko_pomocne_modul.Nazwa_przestrzeni_nazw(frame,1, czy_uwzglednic_alternatywna_nazwe,liczba_numer_jednostki); </syntaxhighlight> Parametry funkcji: * {{Code|frame}} - tablica ramki tablicy transportu, * {{Code|czy_uwzglednic_alternatywna_nazwe}} - czy ma uwzględniać nazwę przestrzeni nazw domyślną szablonu, dostępne wartości: {{Code|false}}, w której nazwa domyślna nie jest uwzględniana wtedy, oraz {{Code|nil}} i {{Code|true}}, które oznaczają to samo, w tym jeżeli ona jest uwzględniana, wtedy jest brany parametr pierwszy dziecka, który musi istnieć przy takiej wartości tego parametru, tzn. {{Code|{{m|Pudełko|Nazwa przedmiotowej przestrzeni nazw|Dyskusja szablonu}}}} - ta nazwa domyślna zostanie zamieniona na przedmiotową, a jak ona by była przedmiotowa, to żadnej zamiany by nie było, a nazwa uzyskana z nazwy przestrzeni nazw z parametrów przestrzennych jest w takim przypadku błędna, to w takim razie brany jest ten parametr, a jeżeli ta nazwa domyślna jest błędna, czyli {{Code|{{m|Pudełko|Nazwa przedmiotowej przestrzeni nazw|Moja przestrzeń}}}}, wtedy funkcja zwraca stan błędu {{Code|(błąd)}}. * {{Code|i}} - numer zmiennej nazwy przestrzeni nazw. Funkcja wykorzystuje {{Code|{{sr|#p.Nazwa_przestrzeni_nazw(frame,...)|p=Pudełko/Pomocne}}}} do wyznaczania ogólnego nazwy przestrzeni nazw dla pozycji bazowej i numerkowej, tzn. dla pozycji: jeden, dwa, trzy,..., itd, i ich ogólnej. Parametr ramki tablicy transportu rodzica szablonu: * {{Code|nazwa przestrzeni nazw}}, {{Code|nazwa przestrzeni nazw 1}}, {{Code|nazwa przestrzeni nazw 2}}, {{Code|nazwa przestrzeni nazw 3}},..., {{Code|nazwa przestrzeni nazw i}} - nazwy przestrzeni nazw dla pozycji bazowej oraz zwykłej i ogólnej numerkowej, * {{Code|typ jednostki}}, {{Code|typ jednostki 1}}, {{Code|typ jednostki 2}}, {{Code|typ jednostki 3}},..., {{Code|typ jednostki i}} - typy jednostek, którym odpowiadają pewne przestrzenie przedmiotowe, dla pozycji bazowej, numerkowej i ogólnej. Parametry ramki tablicy transportu dziecka: * Parametry dziecka są takie same jak rodzica dla funkcji pudełkowej plus tu wymienione, * {{Code|numer jednostki}} - jak parametr {{Code|i}} nie został ustawiony, to wtedy liczy się ta zmienna. Przykłady: <syntaxhighlight lang="mediawiki"> {{Nazwa szablonu|nazwa przestrzeni nazw=Dyskusja Wikibooks|nazwa przestrzeni nazw 2=Dyskusja szablonu|nazwa przestrzeni nazw i=Dyskusja modułu}} </syntaxhighlight> W dziecku powiedzmy jest wywołanie, i szukamy nazwy przestrzeni nazw o numerze dwa, która nie została podana, ale istnieje za to jej wersji ogólna {{Code|nazwa przestrzeni nazw i}} i domyślna {{Code|nazwa przestrzeni nazw}}: <syntaxhighlight lang="mediawiki"> {{#invoke:Pudełko|Nazwa przedmiotowej przestrzeni nazw|numer jednostki=1}} </syntaxhighlight> Na podstawie powyższego przykładu otrzymamy wynik o schemacie, nie wyniku, bo tam nie ma zmiennej {{Code|nazwa przestrzeni nazw 1}}, ale jest {{Code|nazwa przestrzeni nazw i}}: <syntaxhighlight lang="mediawiki"> <!-- Ale nie "nazwa przestrzeni nazw", bo jej nie ma, ale za to istnieje "nazwa przestrzeni nazw i"; --> <!-- nazwa przestrzeni nazw 2=nazwa przestrzeni nazw i=Dyskusja modułu; --> <!-- Czyli wynik: --> Moduł <!-- Widzimy, że wygenerowała się nazwa przestrzeni nazw, którą jest przestrzeń przedmiotowa programowa przestrzeni dyskusji "Dyskusja modułu", którą również jest "Szablon" jego przestrzeni dyskusji "Dyskusja szablonu", a dla ich przestrzeni przedmiotowej, zamiast dyskusji, to samo przekształca się na to samo; --> </syntaxhighlight> Nie jest brana w tym powyższym przykładzie zmienna {{Code|nazwa przestrzeni nazw}}, bo jej nie ma, ale za to jest {{Code|nazwa przestrzeni nazw i}}, bo ona występuje jako parametr domyślny ogólny dla parametrów numerkowych. Przykłady w wikikodzie: * {{Code|{{m|Pudełko|Nazwa przedmiotowej przestrzeni nazw|numer jednostki{{=}}2}}}} → {{Tt|{{#invoke:Pudełko|Nazwa przedmiotowej przestrzeni nazw|numer jednostki=2}}}} * {{Code|{{m|Pudełko|Nazwa przedmiotowej przestrzeni nazw|Dyskusja szablonu|nazwa przestrzeni nazw i{{=}}Moja przestrzeń|numer jednostki{{=}}2}}}} → {{Tt|{{#invoke:Pudełko|Nazwa przedmiotowej przestrzeni nazw|Dyskusja szablonu|nazwa przestrzeni nazw i=Moja przestrzeń|numer jednostki=2}}}} * {{Code|{{m|Pudełko|Nazwa przedmiotowej przestrzeni nazw|nazwa przestrzeni nazw 2{{=}}Dyskusja szablonu|numer jednostki{{=}}2}}}} → {{Tt|{{#invoke:Pudełko|Nazwa przedmiotowej przestrzeni nazw|nazwa przestrzeni nazw 2=Dyskusja szablonu|numer jednostki=2}}}} * {{Code|{{m|Pudełko|Nazwa przedmiotowej przestrzeni nazw|nazwa przestrzeni nazw 2{{=}}Dyskusja szablonu|numer jednostki{{=}}2}}}} → {{Tt|{{#invoke:Pudełko|Nazwa przedmiotowej przestrzeni nazw|nazwa przestrzeni nazw i=Dyskusja szablonu|numer jednostki=2}}}} * {{Code|{{m|Pudełko|Nazwa przedmiotowej przestrzeni nazw|nazwa przestrzeni nazw{{=}}Dyskusja szablonu|numer jednostki{{=}}2}}}} → {{Tt|{{#invoke:Pudełko|Nazwa przedmiotowej przestrzeni nazw|nazwa przestrzeni nazw=Dyskusja szablonu|numer jednostki=2}}}} Powyżej dla przykładu podano parametry nie w rodzicu w szablonie, tylko w dziecku, jeśli chodzi o parametry nazw przestrzeni nazw, ale ich się za to nie powinno podawać w tych ramach, tylko w szablonach, w których wywoływane są te ramki pudełek {{Code|{{m|Pudełko}}}}, ale tak tutaj tak zrobiono by było najłatwiej sprawdzić działanie tego typu funkcji. Analogicznie możemy podawać parametry typu jednostki, np.: wywołaniu modułowym {{Code|{{m|Pudełko|Nazwa przedmiotowej przestrzeni nazw|typ jednostki 2{{=}}strona szablonu|numer jednostki{{=}}2}}}}, ale o tym więcej w rozdziałach {{Code|{{sr|# p["Przedmiotowy typ jednostki"](frame,i)|p=Pudełko}}}} w „{{sr|#Funkcje typu jednostki|p=Pudełko}}”, ale wtedy ta sama nazwa przestrzeni nazw reprezentowana przez {{Parametr|typ jednostki 2|strona szablonu}}, jest zamieniana na to samo, lepiej jest tutaj używać parametrów przestrzennych nazw niż typu jednostki, bo typ jednostki ma taką samą wartość dla przestrzeni przedmiotowej, co dyskusji. Tutaj parametr dyskusji typu jednostki bazowy i numerkowy ogólny, czy szczegółowy, nie gra roli, bo nawet, gdy wygenerujemy nazwę przestrzeni dyskusji za pomoca tego parametru, to i tak otrzymamy na samym końcu jego nazwę przedmiotową. Również parametry typu jednostki nie powinno się podawać w dziecku w ramce, tylko w rodzicu w szablonie jako parametry, w którym ta ramka jest wywoływana, ale tutaj podano jedynie dla przykładu, jak najłatwiej sprawdzić działanie tych parametrów tej funkcji. Najpierw w funkcji nagłówku brane są parametry nazw przestrzeni nazw, a jeżeli ich nie ma, to parametry typu jednostki, a jeżeli nie ma, to generowane są nazwy na podstawie aktualnego modułu. === {{Code|p["Nazwa przestrzeni nazw dyskusji"](frame,...)}} === Funkcja pisze nazwę przestrzeni nazw dyskusji jakikolwiek nazwy przestrzeni nazw (tzn. nazwę przedmiotową nazwy przestrzenie nazw, czyli nie dyskusji, zamieniana jest na dyskusji, czyli identyfikator przestrzeni się zmienia jeden wyżej, a dyskusji, nie przedmiotową, przekształca się na tą samą), według podanej w zmiennej {{Code|nazwa przestrzeni nazw}} dla pozycja bazowej w podanych parametrach szablonu rodzicu ramki dziecka, lub dla innej pozycji należy parametr podawać w formie {{Code|nazwa przestrzeni nazw 1}}, {{Code|nazwa przestrzeni nazw 2}}, {{Code|nazwa przestrzeni nazw 3}},..., lub te parametry można podać w postaci ogólnej {{Code|nazwa przestrzeni nazw i}}. Parametry podaje się w parametrach rodzica wywołania tej funkcji {{Code|{{m|Pudełko|Nazwa przestrzeni nazw dyskusji}}}} (ale ich nie trzeba podawać w dziecku, ale można) i w parametrach dziecka, jeśli chodzi o zmienną {{Code|numer jednostki}}, czyli np.: {{Code|{{m|Pudełko|Nazwa przestrzeni nazw dyskusji|numer jednostki{{=}}<jakaś liczba całkowita dodatnia>}}}}. Te parametry przestrzenne zamiast w rodzicu w szablonie można podać w ramce dziecka, wtedy parametry dziecka mają pierwszeństwo. Parametry przestrzenne mogą mogą być podane w postaci przestrzeni przedmiotowej lub dyskusji, ale ta funkcja zawsze ją zamienia na dyskusji. Przestrzeń nazw z parametrów nazw przestrzennych może odpowiadać wartości przestrzeni głównej, to wtedy odpowiednia przestrzeń nazw z parametru nazwy jednostki się nie liczy w tej funkcji, aby się liczyła należy użyć funkcji {{Code|{{sr|#p["Nazwa przestrzeni nazw dyskusji 2"](frame,...)|p=Pudełko}}}}. Definicja skrótowa funkcji: <syntaxhighlight lang="lua"> p["Nazwa przestrzeni nazw dyskusji"]=function(frame,czy_uwzglednic_alternatywna_nazwe,i)...end; </syntaxhighlight> Wtedy ciało funkcji tej, czyli jego definicja w środku, jest: <syntaxhighlight lang="lua"> -- Jest liczony numer parametru nazwy przestrzeni nazw, domyslnie chodzi tu o numer bazowy parametrów przestrzennych; local numer_jednostki=i or frame.args["numer jednostki"]; local liczba_numer_jednostki=((numer_jednostki)and(tonumber(numer_jednostki))or 0); local pudelko_pomocne_modul=require("Module:Pudełko/Pomocne"); -- Liczy nazwę przestrzeni nazw dyskusji na podstawie podanych parametrów; return pudelko_pomocne_modul.Nazwa_przestrzeni_nazw(frame,2, czy_uwzglednic_alternatywna_nazwe,liczba_numer_jednostki); </syntaxhighlight> Parametry funkcji: * {{Code|frame}} - tablica ramki tablicy transportu, * {{Code|czy_uwzglednic_alternatywna_nazwe}} - czy ma uwzględniać nazwę przestrzeni nazw domyślną szablonu, dostępne wartości: {{Code|false}}, w której nazwa domyślna nie jest uwzględniana wtedy, oraz {{Code|nil}} i {{Code|true}}, które oznaczają to samo, w tym jeżeli ona jest uwzględniana, wtedy jest brany parametr pierwszy dziecka, który musi istnieć przy takiej wartości tego parametru, tzn. {{Code|{{m|Pudełko|Nazwa przestrzeni nazw dyskusji|Szablon}}}} - ta nazwa domyślna zostanie przekształcona na dyskusji, a jeżeli ona by była dyskusji, to nie byłoby żadnego przekształcenia, a nazwa uzyskana nazwy przestrzeni nazw z parametrów przestrzennych jest w takim przypadku błędna, to w takim razie brany jest ten parametr, a jeżeli nazwa domyślna jest błędna, czyli {{Code|{{m|Pudełko|Nazwa przestrzeni nazw dyskusji|Moja przestrzeń}}}}, wtedy funkcja zwraca stan błędu {{Code|(błąd)}}. * {{Code|i}} - numer zmiennej nazwy przestrzeni nazw. Funkcja wykorzystuje {{Code|{{sr|#p.Nazwa_przestrzeni_nazw(frame,...)|p=Pudełko/Pomocne}}}} do wyznaczania ogólnego nazwy przestrzeni nazw dla pozycji bazowej i numerkowej, tzn. dla pozycji: jeden, dwa, trzy,..., itd, i ich ogólnej. Parametr ramki tablicy transportu rodzica szablonu: * {{Code|nazwa przestrzeni nazw}}, {{Code|nazwa przestrzeni nazw 1}}, {{Code|nazwa przestrzeni nazw 2}}, {{Code|nazwa przestrzeni nazw 3}},..., {{Code|nazwa przestrzeni nazw i}} - nazwy przestrzeni nazw dla pozycji bazowej oraz zwykłej i ogólnej numerkowej, * {{Code|typ jednostki}}, {{Code|typ jednostki 1}}, {{Code|typ jednostki 2}}, {{Code|typ jednostki 3}},..., {{Code|typ jednostki i}} - typy jednostek, którym odpowiadają pewne przestrzenie przedmiotowe, dla pozycji bazowej, numerkowej i ogólnej. Parametry ramki tablicy transportu dziecka: * Parametry dziecka są takie same jak rodzica dla funkcji pudełkowej plus tu wymienione, * {{Code|numer jednostki}} - jak parametr {{Code|i}} nie został ustawiony, to wtedy liczy się ta zmienna. Przykłady: <syntaxhighlight lang="mediawiki"> {{Nazwa szablonu|nazwa przestrzeni nazw=Wikibooks|nazwa przestrzeni nazw 2=Szablon|nazwa przestrzeni nazw i=Moduł}} </syntaxhighlight> W dziecku powiedzmy jest wywołanie, i szukamy nazwy przestrzeni nazw o numerze dwa, która nie została podana, ale istnieje za to jej wersji ogólna {{Code|nazwa przestrzeni nazw i}} i domyślna {{Code|nazwa przestrzeni nazw}}: <syntaxhighlight lang="mediawiki"> {{#invoke:Pudełko|Nazwa przestrzeni nazw dyskusji|numer jednostki=1}} </syntaxhighlight> Na podstawie powyższego przykładu otrzymamy wynik o schemacie, nie wyniku, bo tam nie ma zmiennej {{Code|nazwa przestrzeni nazw 1}}, ale jest {{Code|nazwa przestrzeni nazw i}}: <syntaxhighlight lang="mediawiki"> <!-- Ale nie "nazwa przestrzeni nazw", bo jej nie ma, ale za to istnieje "nazwa przestrzeni nazw i"; --> <!-- nazwa przestrzeni nazw 2=nazwa przestrzeni nazw i=Moduł; --> <!-- Czyli wynik: --> Dyskusja modułu <!-- Widzimy, że wygenerowała się nazwa przestrzeni nazw, którą jest przestrzeń dyskusji przestrzeni programowej przestrzeni przedmiotowej "Moduł", którą również jest "Szablon" jego przestrzeni dyskusji "Dyskusja szablonu", a dla ich przestrzeni przedmiotowej, zamiast dyskusji, to przekształca się na dyskusji jej odpowiadającą; --> </syntaxhighlight> Nie jest brana w tym powyższym przykładzie zmienna {{Code|nazwa przestrzeni nazw}}, bo jej nie ma, ale za to jest {{Code|nazwa przestrzeni nazw i}}, bo ona występuje jako parametr domyślny ogólny dla parametrów numerkowych. Przykłady w wikikodzie: * {{Code|{{m|Pudełko|Nazwa przestrzeni nazw dyskusji|numer jednostki{{=}}2}}}} → {{Tt|{{#invoke:Pudełko|Nazwa przestrzeni nazw dyskusji|numer jednostki=2}}}} * {{Code|{{m|Pudełko|Nazwa przestrzeni nazw dyskusji|Szablon|nazwa przestrzeni nazw i{{=}}Moja przestrzeń|numer jednostki{{=}}2}}}} → {{Tt|{{#invoke:Pudełko|Nazwa przestrzeni nazw dyskusji|Szablon|nazwa przestrzeni nazw i=Moja przestrzeń|numer jednostki=2}}}} * {{Code|{{m|Pudełko|Nazwa przestrzeni nazw dyskusji|nazwa przestrzeni nazw 2{{=}}Szablon|numer jednostki{{=}}2}}}} → {{Tt|{{#invoke:Pudełko|Nazwa przestrzeni nazw dyskusji|nazwa przestrzeni nazw 2=Szablon|numer jednostki=2}}}} * {{Code|{{m|Pudełko|Nazwa przestrzeni nazw dyskusji|nazwa przestrzeni nazw 2{{=}}Szablon|numer jednostki{{=}}2}}}} → {{Tt|{{#invoke:Pudełko|Nazwa przestrzeni nazw dyskusji|nazwa przestrzeni nazw i=Szablon|numer jednostki=2}}}} * {{Code|{{m|Pudełko|Nazwa przestrzeni nazw dyskusji|nazwa przestrzeni nazw{{=}}Szablon|numer jednostki{{=}}2}}}} → {{Tt|{{#invoke:Pudełko|Nazwa przestrzeni nazw dyskusji|nazwa przestrzeni nazw=Szablon|numer jednostki=2}}}} Powyżej dla przykładu podano parametry nie w rodzicu w szablonie, tylko w dziecku, jeśli chodzi o parametry nazw przestrzeni nazw, ale ich się za to nie powinno podawać w tych ramach, tylko w szablonach, w których wywoływane są te ramki pudełek {{Code|{{m|Pudełko}}}}, ale tak tutaj tak zrobiono by było najłatwiej sprawdzić działanie tego typu funkcji. Analogicznie możemy podawać parametry typu jednostki, np.: wywołaniu modułowym {{Code|{{m|Pudełko|Nazwa przestrzeni nazw dyskusji|typ jednostki 2{{=}}strona szablonu|numer jednostki{{=}}2}}}}, ale o tym więcej w rozdziałach {{Code|{{sr|# p["Dyskusyjny typ jednostki"](frame,i)|p=Pudełko}}}} w „{{sr|#Funkcje typu jednostki|p=Pudełko}}”, ale wtedy nazwa przestrzeni nazw reprezentowana przez {{Parametr|typ jednostki 2|strona szablonu}}, jest zamieniana na nazwę przestrzeni nazw dyskusji. Parametr dyskusji typu jednostki bazowy lub dla danego numerka ogólny, czy szczegółowy, nie gra roli. Również parametry typu jednostki nie powinno się podawać w dziecku w ramce, tylko w rodzicu w szablonie jako parametry, w którym ta ramka jest wywoływana, ale tutaj podano jedynie dla przykładu, jak najłatwiej sprawdzić działanie tych parametrów tej funkcji. Najpierw w funkcji nagłówku brane są parametry nazw przestrzeni nazw, a jeżeli ich nie ma, to parametry typu jednostki, a jeżeli nie ma, to generowane są nazwy na podstawie aktualnego modułu. == Funkcje nazw przestrzeni nazw drugiej wersji == === {{Code|p["Nazwa przestrzeni nazw 2"](frame,...)}} === Funkcja pisze nazwę przestrzeni nazw, niezależnie, czy to jest przedmiotowa, czy dyskusji, według, i nie zawsze tylko, podanej w zmiennej {{Code|nazwa przestrzeni nazw}} dla pozycja bazowej w podanych parametrach szablonu rodzicu ramki dziecka, lub dla innej pozycji należy parametr podawać w formie {{Code|nazwa przestrzeni nazw 1}}, {{Code|nazwa przestrzeni nazw 2}}, {{Code|nazwa przestrzeni nazw 3}},..., lub te parametry można podać w postaci ogólnej {{Code|nazwa przestrzeni nazw i}}. W tej funkcji trzeba też podawać parametry nazwy jednostek {{Code|nazwa jednostki}}, {{Code|nazwa jednostki 1}}, {{Code|nazwa jednostki 2}}, {{Code|nazwa jednostki 3}},... Parametry podaje się w parametrach rodzica wywołania tej funkcji {{Code|{{m|Pudełko|Nazwa przestrzeni nazw 2}}}} (ale ich nie trzeba podawać w dziecku, ale można) i w parametrach dziecka, jeśli chodzi o zmienną {{Code|numer jednostki}}, czyli np.: {{Code|{{m|Pudełko|Nazwa przestrzeni nazw 2|numer jednostki{{=}}<jakaś liczba całkowita dodatnia>}}}}. Te parametry przestrzenne zamiast w rodzicu w szablonie można podać w ramce dziecka, wtedy parametry dziecka mają pierwszeństwo. Przestrzeń nazw z parametrów nazw przestrzennych może odpowiadać wartości przestrzeni głównej, to wtedy odpowiednia przestrzeń nazw z parametru nazwy jednostki się liczy w tej funkcji, wtedy jest liczona nazwa przestrzeni nazw z tego parametru. Gdy parametry przestrzenne lub typ jednostki w drugim podejściu nie wskazują na przestrzeń główną, to wtedy działanie tej funkcji jest podobne do {{Code|{{sr|#p["Nazwa przestrzeni nazw"](frame,...)|p=Pudełko}}}}. Definicja skrótowa funkcji: <syntaxhighlight lang="lua"> p["Nazwa przestrzeni nazw 2"]=function(frame,czy_uwzglednic_alternatywna_nazwe,i)...end; </syntaxhighlight> Wtedy ciało funkcji tej, czyli jego definicja w środku, jest: <syntaxhighlight lang="lua"> local pudelko_pomocne_modul=require("Module:Pudełko/Pomocne"); -- Liczy nazwę przestrzeni nazw, jeżeli z parametrów przestrzennych przestrzeń wskazuje na główną, to wtedy jest liczona przestrzeń nazw z nazwy jednostki; return pudelko_pomocne_modul.Nazwa_przestrzeni_nazw_2(frame,czy_uwzglednic_alternatywna_nazwe,i) </syntaxhighlight> Parametry funkcji: * {{Code|frame}} - tablica ramki tablicy transportu, * {{Code|czy_uwzglednic_alternatywna_nazwe}} - czy ma uwzględniać nazwę przestrzeni nazw domyślną szablonu, dostępne wartości: {{Code|false}}, w której nazwa domyślna nie jest uwzględniana wtedy, oraz {{Code|nil}} i {{Code|true}}, które oznaczają to samo, w tym jeżeli ona jest uwzględniana, wtedy jest brany parametr pierwszy dziecka, który musi istnieć przy takiej wartości tego parametru, tzn. {{Code|{{m|Pudełko|Nazwa przestrzeni nazw 2|Szablon}}}}, a nazwa uzyskana nazwy przestrzeni nazw jest w takim przypadku błędna, a jeżeli nazwa domyślna jest błędna, czyli {{Code|{{m|Pudełko|Nazwa przestrzeni nazw 2|Moja przestrzeń}}}}, wtedy funkcja zwraca stan błędu {{Code|(błąd)}}. * {{Code|i}} - numer zmiennej nazwy przestrzeni nazw. Funkcja wykorzystuje {{Code|{{sr|#p.Nazwa_przestrzeni_nazw_2(frame,...)|p=Pudełko/Pomocne}}}} do wyznaczania ogólnego nazwy przestrzeni nazw dla pozycji bazowej i numerkowej, tzn. dla pozycji: jeden, dwa, trzy,..., itd, i ich ogólnej. Parametr ramki tablicy transportu rodzica szablonu: * {{Code|nazwa przestrzeni nazw}}, {{Code|nazwa przestrzeni nazw 1}}, {{Code|nazwa przestrzeni nazw 2}}, {{Code|nazwa przestrzeni nazw 3}},..., {{Code|nazwa przestrzeni nazw i}} - nazwy przestrzeni nazw dla pozycji bazowej oraz zwykłej i ogólnej numerkowej, * {{Code|nazwa jednostki}}, {{Code|nazwa jednostki 1}}, {{Code|nazwa jednostki 2}}, {{Code|nazwa jednostki 3}},... - nazwy jednostek dla pozycji bazowej i numerkowej, * {{Code|typ jednostki}}, {{Code|typ jednostki 1}}, {{Code|typ jednostki 2}}, {{Code|typ jednostki 3}},..., {{Code|typ jednostki i}} - typy jednostek, którym odpowiadają pewne przestrzenie przedmiotowe, dla pozycji bazowej, numerkowej i ogólnej, ** {{Code|dyskusja typu jednostki}}, {{Code|dyskusja typu jednostki 1}}, {{Code|dyskusja typ jednostki 2}}, {{Code|dyskusja typ jednostki 3}},..., {{Code|dyskusja typ jednostki i}} - czy dany typ jednostki ma przedstawiać, jeśli niepusta, przestrzeń dyskusji dla pozycji bazowej, numerkowej i ogólnej. Parametry ramki tablicy transportu dziecka: * Parametry dziecka są takie same jak rodzica dla funkcji pudełkowej plus tu wymienione, * {{Code|numer jednostki}} - jak parametr {{Code|i}} nie został ustawiony, to wtedy liczy się ta zmienna. Przykłady: <syntaxhighlight lang="mediawiki"> {{Nazwa szablonu|nazwa przestrzeni nazw=Wikibooks|nazwa przestrzeni nazw 1=Szablon|nazwa przestrzeni nazw i=|nazwa jednostki 2=Wikibooks:Strona}} </syntaxhighlight> W dziecku powiedzmy jest wywołanie, i szukamy nazwy przestrzeni nazw o numerze dwa, która została podana, ale istnieje za to jej wersji ogólna {{Code|nazwa przestrzeni nazw i}} i domyślna {{Code|nazwa przestrzeni nazw}}, ale wtedy dla tego numerkowego liczy się to ogólne z {{Code| i}}, a ponieważ ta nazwa jest pusta, więc będziemy liczyli nazwę przestrzeni nazw z {{Code|nazwa jednostki 2}}: <syntaxhighlight lang="mediawiki"> {{#invoke:Pudełko|Nazwa przestrzeni nazw 2|numer jednostki=2}} </syntaxhighlight> Na podstawie powyższego przykładu otrzymamy wynik o schemacie, nie wyniku, bo tam nie ma zmiennej {{Code|nazwa przestrzeni nazw 1}}, ale jest {{Code|nazwa przestrzeni nazw i}}: <syntaxhighlight lang="mediawiki"> <!-- Ale nie "nazwa przestrzeni nazw 2", bo jej nie ma, ale za to istnieje "nazwa przestrzeni nazw i"; --> <!-- nazwa przestrzeni nazw 2=nazwa przestrzeni nazw i="", a nazwa jednostki 2="Wikibooks:Strona"; --> <!-- Czyli wynik: --> Wikibooks <!-- Widzimy, że wygenerowała się nazwa przestrzeni nazw, którą jest przestrzeń nieprogramowa, ale projektu, wychodząca z nazwy jednostek w tym przypadku z "nazwa jednostki 2"; --> </syntaxhighlight> Nie jest brana w tym powyższym przykładzie zmienna {{Code|nazwa przestrzeni nazw}}, bo jej nie ma, ale za to jest {{Code|nazwa przestrzeni nazw i}}, bo ona występuje jako parametr domyślny ogólny dla parametrów numerkowych. Tytaj jest używana jest zmienna {{Code|nazwa jednostki 2}} do wygenerowania ostatecznego wyniku, bo jak można zauważyć, parametry przestrzenne wskazują na przestrzeń główną, a nazwy jednostek już nie. Przykłady w wikikodzie: * {{Code|{{m|Pudełko|Nazwa przestrzeni nazw 2|numer jednostki{{=}}2}}}} → {{Tt|{{#invoke:Pudełko|Nazwa przestrzeni nazw 2|numer jednostki=2}}}} * {{Code|{{m|Pudełko|Nazwa przestrzeni nazw 2|Szablon|nazwa przestrzeni nazw i{{=}}Moja przestrzeń|numer jednostki{{=}}2}}}} → {{Tt|{{#invoke:Pudełko|Nazwa przestrzeni nazw 2|Szablon|nazwa przestrzeni nazw i=Moja przestrzeń|numer jednostki=2}}}} * {{Code|{{m|Pudełko|Nazwa przestrzeni nazw 2|nazwa przestrzeni nazw 2{{=}}|nazwa jednostki 2{{=}}Szablon:Strona|numer jednostki{{=}}2}}}} → {{Tt|{{#invoke:Pudełko|Nazwa przestrzeni nazw 2|nazwa przestrzeni nazw 2=|nazwa jednostki 2=Szablon:Strona|numer jednostki=2}}}} * {{Code|{{m|Pudełko|Nazwa przestrzeni nazw 2|nazwa przestrzeni nazw i{{=}}|nazwa jednostki 2{{=}}Szablon:Strona|numer jednostki{{=}}2}}}} → {{Tt|{{#invoke:Pudełko|Nazwa przestrzeni nazw 2|nazwa przestrzeni nazw i=|nazwa jednostki 2=Szablon:Strona|numer jednostki=2}}}} * {{Code|{{m|Pudełko|Nazwa przestrzeni nazw 2|Szablon|nazwa przestrzeni nazw{{=}}|nazwa jednostki 2{{=}}Wikibooks:Strona|numer jednostki{{=}}2}}}} → {{Tt|{{#invoke:Pudełko|Nazwa przestrzeni nazw 2|Szablon|nazwa przestrzeni nazw=|nazwa jednostki 2=Wikibooks:Strona|numer jednostki=2}}}} Powyżej dla przykładu podano parametry nie w rodzicu w szablonie, tylko w dziecku, jeśli chodzi o parametry nazw przestrzeni nazw i nazw jednostek, ale ich się za to nie powinno podawać w tych ramach, tylko w szablonach, w których wywoływane są te ramki pudełek {{Code|{{m|Pudełko}}}}, ale tak tutaj tak zrobiono by było najłatwiej sprawdzić działanie tego typu funkcji. Analogicznie możemy podawać parametry typu jednostki, np.: wywołaniu modułowym {{Code|{{m|Pudełko|Nazwa przestrzeni nazw 2|typ jednostki 2{{=}}Podręcznik|nazwa jednostki 2{{=}}Szablon:Strona|numer jednostki{{=}}2}}}} (ale wtedy jest brana przestrzeń nazw z nazwy jednostki), ale o tym więcej w rozdziałach {{Code|{{sr|#p["Typ jednostki 2"](frame,i)|p=Pudełko}}}} w „{{sr|#Funkcje typu jednostki|p=Pudełko}}”, on definiuje przestrzenie przedmiotowe, ale można użyć parametru dyskusji typu jednostki z wartością niepustą, wtedy wyświetli się nazwa przestrzeni nazw dyskusji. Jeżeli typ jednostki wskazuje na przestrzeń nazw główną, wtedy się liczą parametry nazw jednostek. Również parametry typu jednostki nie powinno się podawać w dziecku w ramce, tylko w rodzicu w szablonie jako parametry, w którym ta ramka jest wywoływana, ale tutaj podano jedynie dla przykładu, jak najłatwiej sprawdzić działanie tych parametrów tej funkcji. Najpierw w funkcji nagłówku brane są parametry nazw przestrzeni nazw, a jeżeli ich nie ma, to parametry typu jednostki, a jeżeli nie ma lub parametry przestrzenne wskazują na przestrzeń główną, i nie ma nazwy jednostki, to generowane są nazwy tej funkcji na podstawie aktualnej strony. === {{Code|p["Nazwa przedmiotowej przestrzeni nazw 2"](frame,...)}} === Funkcja pisze przedmiotową nazwę przestrzeni nazw jakikolwiek nazwy przestrzeni nazw (tzn. nazwę przedmiotową nazwy przestrzenie nazw, czyli nie dyskusji, zamieniana jest na nią samą, czyli identyfikator przestrzeni się nie zmienia, a dyskusji, nie przedmiotową, przekształca się na przedmiotową jej odpowiadającą, czyli w tym przypadku identyfikator przestrzeni zmniejsza się o numer mniej), według, i nie zawsze tylko, podanej w zmiennej {{Code|nazwa przestrzeni nazw}} dla pozycja bazowej w podanych parametrach szablonu rodzicu ramki dziecka, lub dla innej pozycji należy parametr podawać w formie {{Code|nazwa przestrzeni nazw 1}}, {{Code|nazwa przestrzeni nazw 2}}, {{Code|nazwa przestrzeni nazw 3}},..., lub te parametry można podać w postaci ogólnej {{Code|nazwa przestrzeni nazw i}}. W tej funkcji trzeba też podawać parametry nazwy jednostek {{Code|nazwa jednostki}}, {{Code|nazwa jednostki 1}}, {{Code|nazwa jednostki 2}}, {{Code|nazwa jednostki 3}},... Parametry podaje się w parametrach rodzica wywołania tej funkcji {{Code|{{m|Pudełko|Nazwa przedmiotowej przestrzeni nazw 2}}}} (ale ich nie trzeba podawać w dziecku, ale można) i w parametrach dziecka, jeśli chodzi o zmienną {{Code|numer jednostki}}, czyli np.: {{Code|{{m|Pudełko|Nazwa przedmiotowej przestrzeni nazw 2|numer jednostki{{=}}<jakaś liczba całkowita dodatnia>}}}}. Te parametry przestrzenne zamiast w rodzicu w szablonie można podać w ramce dziecka, wtedy parametry dziecka mają pierwszeństwo. Przestrzeń nazw z parametrów nazw przestrzennych po przekształceniu na przedmiotową może odpowiadać wartości przestrzeni głównej, to wtedy odpowiednia przestrzeń nazw z parametru nazwy jednostki się liczy w tej funkcji, wtedy jest liczona nazwa przestrzeni nazw z tego parametru. Gdy parametry przestrzenne lub typ jednostki w drugim podejściu nie wskazują na przestrzeń główną, to wtedy działanie tej funkcji jest podobne do {{Code|{{sr|#p["Nazwa przedmiotowej przestrzeni nazw"](frame,...)|p=Pudełko}}}}. Definicja skrótowa funkcji: <syntaxhighlight lang="lua"> p["Nazwa przedmiotowej przestrzeni nazw 2"]=function(frame,czy_uwzglednic_alternatywna_nazwe,i)...end; </syntaxhighlight> Wtedy ciało funkcji tej, czyli jego definicja w środku, jest: <syntaxhighlight lang="lua"> local pudelko_pomocne_modul=require("Module:Pudełko/Pomocne"); return pudelko_pomocne_modul.Nazwa_przestrzeni_nazw_przedmiotowa_dyskusji_2(frame,czy_uwzglednic_alternatywna_nazwe,i,"przedmiotowa"); </syntaxhighlight> Parametry funkcji: * {{Code|frame}} - tablica ramki tablicy transportu, * {{Code|czy_uwzglednic_alternatywna_nazwe}} - czy ma uwzględniać nazwę przestrzeni nazw domyślną szablonu, dostępne wartości: {{Code|false}}, w której nazwa domyślna nie jest uwzględniana wtedy, oraz {{Code|nil}} i {{Code|true}}, które oznaczają to samo, w tym jeżeli ona jest uwzględniana, wtedy jest brany parametr pierwszy dziecka, który musi istnieć przy takiej wartości tego parametru, tzn. {{Code|{{m|Pudełko|Nazwa przedmiotowej przestrzeni nazw 2|Szablon}}}}, a nazwa uzyskana nazwy przestrzeni nazw jest w takim przypadku błędna, a jeżeli nazwa domyślna jest błędna, czyli {{Code|{{m|Pudełko|Nazwa przedmiotowej przestrzeni nazw 2|Moja przestrzeń}}}}, wtedy funkcja zwraca stan błędu {{Code|(błąd)}}. * {{Code|i}} - numer zmiennej nazwy przestrzeni nazw. Funkcja wykorzystuje {{Code|{{sr|#p.Nazwa_przestrzeni_nazw_przedmiotowa_dyskusji_2(frame,...)|p=Pudełko/Pomocne}}}} do wyznaczania ogólnego nazwy przestrzeni nazw dla pozycji bazowej i numerkowej, tzn. dla pozycji: jeden, dwa, trzy,..., itd, i ich ogólnej. Parametr ramki tablicy transportu rodzica szablonu: * {{Code|nazwa przestrzeni nazw}}, {{Code|nazwa przestrzeni nazw 1}}, {{Code|nazwa przestrzeni nazw 2}}, {{Code|nazwa przestrzeni nazw 3}},..., {{Code|nazwa przestrzeni nazw i}} - nazwy przestrzeni nazw dla pozycji bazowej oraz zwykłej i ogólnej numerkowej, * {{Code|nazwa jednostki}}, {{Code|nazwa jednostki 1}}, {{Code|nazwa jednostki 2}}, {{Code|nazwa jednostki 3}},... - nazwy jednostek dla pozycji bazowej i numerkowej, * {{Code|typ jednostki}}, {{Code|typ jednostki 1}}, {{Code|typ jednostki 2}}, {{Code|typ jednostki 3}},..., {{Code|typ jednostki i}} - typy jednostek, którym odpowiadają pewne przestrzenie przedmiotowe, dla pozycji bazowej, numerkowej i ogólnej. Parametry ramki tablicy transportu dziecka: * Parametry dziecka są takie same jak rodzica dla funkcji pudełkowej plus tu wymienione, * {{Code|numer jednostki}} - jak parametr {{Code|i}} nie został ustawiony, to wtedy liczy się ta zmienna. Przykłady: <syntaxhighlight lang="mediawiki"> {{Nazwa szablonu|nazwa przestrzeni nazw=Wikibooks|nazwa przestrzeni nazw 1=Szablon|nazwa przestrzeni nazw i=|nazwa jednostki 2=Dyskusja Wikibooks:Strona}} </syntaxhighlight> W dziecku powiedzmy jest wywołanie, i szukamy nazwy przestrzeni nazw o numerze dwa, która została podana, ale istnieje za to jej wersji ogólna {{Code|nazwa przestrzeni nazw i}} i domyślna {{Code|nazwa przestrzeni nazw}}, ale wtedy dla tego numerkowego liczy się to ogólne z {{Code| i}}, a ponieważ ta nazwa jest pusta, więc będziemy liczyli nazwę przestrzeni nazw z {{Code|nazwa jednostki 2}}: <syntaxhighlight lang="mediawiki"> {{#invoke:Pudełko|Nazwa przedmiotowej przestrzeni nazw 2|numer jednostki=2}} </syntaxhighlight> Na podstawie powyższego przykładu otrzymamy wynik o schemacie, nie wyniku, bo tam nie ma zmiennej {{Code|nazwa przestrzeni nazw 1}}, ale jest {{Code|nazwa przestrzeni nazw i}}: <syntaxhighlight lang="mediawiki"> <!-- Ale nie "nazwa przestrzeni nazw 2", bo jej nie ma, ale za to istnieje "nazwa przestrzeni nazw i"; --> <!-- nazwa przestrzeni nazw 2=nazwa przestrzeni nazw i="", a nazwa jednostki 2="Dyskusja Wikibooks:Strona"; --> <!-- Czyli wynik: --> Wikibooks <!-- Widzimy, że wygenerowała się nazwa przestrzeni nazw, którą jest przestrzeń nieprogramowa, ale projektu, wychodząca z nazwy jednostek w tym przypadku z "nazwa jednostki 2"; --> </syntaxhighlight> Nie jest brana w tym powyższym przykładzie zmienna {{Code|nazwa przestrzeni nazw}}, bo jej nie ma, ale za to jest {{Code|nazwa przestrzeni nazw i}}, bo ona występuje jako parametr domyślny ogólny dla parametrów numerkowych. Tytaj jest używana jest zmienna {{Code|nazwa jednostki 2}} do wygenerowania ostatecznego wyniku, bo jak można zauważyć, parametry przestrzenne wskazują na przestrzeń główną, a nazwy jednostek już nie. Przykłady w wikikodzie: * {{Code|{{m|Pudełko|Nazwa przedmiotowej przestrzeni nazw 2|numer jednostki{{=}}2}}}} → {{Tt|{{#invoke:Pudełko|Nazwa przedmiotowej przestrzeni nazw 2|numer jednostki=2}}}} * {{Code|{{m|Pudełko|Nazwa przedmiotowej przestrzeni nazw 2|Dyskusja szablonu|nazwa przestrzeni nazw i{{=}}Moja przestrzeń|numer jednostki{{=}}2}}}} → {{Tt|{{#invoke:Pudełko|Nazwa przedmiotowej przestrzeni nazw 2|Dyskusja szablonu|nazwa przestrzeni nazw i=Moja przestrzeń|numer jednostki=2}}}} * {{Code|{{m|Pudełko|Nazwa przedmiotowej przestrzeni nazw 2|nazwa przestrzeni nazw 2{{=}}Dyskusja|nazwa jednostki 2{{=}}Dyskusja szablonu:Strona|numer jednostki{{=}}2}}}} → {{Tt|{{#invoke:Pudełko|Nazwa przedmiotowej przestrzeni nazw 2|nazwa przestrzeni nazw 2=Dyskusja|nazwa jednostki 2=Dyskusja szablonu:Strona|numer jednostki=2}}}} * {{Code|{{m|Pudełko|Nazwa przedmiotowej przestrzeni nazw 2|nazwa przestrzeni nazw i{{=}}Dyskusja|nazwa jednostki 2{{=}}Dyskusja szablonu:Strona|numer jednostki{{=}}2}}}} → {{Tt|{{#invoke:Pudełko|Nazwa przedmiotowej przestrzeni nazw 2|nazwa przestrzeni nazw i=Dyskusja|nazwa jednostki 2=Dyskusja szablonu:Strona|numer jednostki=2}}}} * {{Code|{{m|Pudełko|Nazwa przedmiotowej przestrzeni nazw 2|Dyskusja szablonu|nazwa przestrzeni nazw{{=}}Dyskusja|nazwa jednostki 2{{=}}Wikibooks:Strona|numer jednostki{{=}}2}}}} → {{Tt|{{#invoke:Pudełko|Nazwa przedmiotowej przestrzeni nazw 2|Dyskusja szablonu|nazwa przestrzeni nazw=Dyskusja|nazwa jednostki 2=Dyskusja Wikibooks:Strona|numer jednostki=2}}}} Powyżej dla przykładu podano parametry nie w rodzicu w szablonie, tylko w dziecku, jeśli chodzi o parametry nazw przestrzeni nazw i nazw jednostek, ale ich się za to nie powinno podawać w tych ramach, tylko w szablonach, w których wywoływane są te ramki pudełek {{Code|{{m|Pudełko}}}}, ale tak tutaj tak zrobiono by było najłatwiej sprawdzić działanie tego typu funkcji. Analogicznie możemy podawać parametry typu jednostki, np.: wywołaniu modułowym {{Code|{{m|Pudełko|Nazwa przedmiotowej przestrzeni nazw 2|typ jednostki 2{{=}}Podręcznik|nazwa jednostki 2{{=}}Dyskusja szablonu:Strona|numer jednostki{{=}}2}}}} (ale wtedy jest brana przestrzeń nazw z nazwy jednostki), ale o tym więcej w rozdziałach {{Code|{{sr|# p["Przedmiotowy typ jednostki 2"](frame,i)|p=Pudełko}}}} w „{{sr|#Funkcje typu jednostki|p=Pudełko}}”, on definiuje przestrzenie przedmiotowe, ale można użyć parametru dyskusji typu jednostki z wartością niepustą, pustą, czy nawet jej nie podamy, wtedy wyświetli się nazwa przestrzeni nazw przedmiotowej. Jeżeli typ jednostki wskazuje na przestrzeń nazw główną, wtedy się liczą parametry nazw jednostek. Również parametry typu jednostki nie powinno się podawać w dziecku w ramce, tylko w rodzicu w szablonie jako parametry, w którym ta ramka jest wywoływana, ale tutaj podano jedynie dla przykładu, jak najłatwiej sprawdzić działanie tych parametrów tej funkcji. Najpierw w funkcji nagłówku brane są parametry nazw przestrzeni nazw, a jeżeli ich nie ma, to parametry typu jednostki, a jeżeli nie ma lub parametry przestrzenne wskazują na przestrzeń główną, i nie ma nazwy jednostki, to generowane są nazwy tej funkcji na podstawie aktualnej strony. === {{Code|p["Nazwa przestrzeni nazw dyskusji 2"](frame,...)}} === Funkcja pisze nazwę przestrzeni nazw dyskusji jakikolwiek nazwy przestrzeni nazw (tzn. nazwę dyskusji nazwy przestrzenie nazw, czyli nie przedmiotowej, zamieniana jest na nią samą, czyli identyfikator przestrzeni się nie zmienia, a przedmiotową, nie dyskusji, przekształca się na dyskusji jej odpowiadającą, czyli w tym przypadku identyfikator przestrzeni zwiększa się o numer więcej), według, i nie zawsze tylko, podanej w zmiennej {{Code|nazwa przestrzeni nazw}} dla pozycja bazowej w podanych parametrach szablonu rodzicu ramki dziecka, lub dla innej pozycji należy parametr podawać w formie {{Code|nazwa przestrzeni nazw 1}}, {{Code|nazwa przestrzeni nazw 2}}, {{Code|nazwa przestrzeni nazw 3}},..., lub te parametry można podać w postaci ogólnej {{Code|nazwa przestrzeni nazw i}}. W tej funkcji trzeba też podawać parametry nazwy jednostek {{Code|nazwa jednostki}}, {{Code|nazwa jednostki 1}}, {{Code|nazwa jednostki 2}}, {{Code|nazwa jednostki 3}},... Parametry podaje się w parametrach rodzica wywołania tej funkcji {{Code|{{m|Pudełko|Nazwa przestrzeni nazw dyskusji 2}}}} (ale ich nie trzeba podawać w dziecku, ale można) i w parametrach dziecka, jeśli chodzi o zmienną {{Code|numer jednostki}}, czyli np.: {{Code|{{m|Pudełko|Nazwa przestrzeni nazw dyskusji 2|numer jednostki{{=}}<jakaś liczba całkowita dodatnia>}}}}. Te parametry przestrzenne zamiast w rodzicu w szablonie można podać w ramce dziecka, wtedy parametry dziecka mają pierwszeństwo. Przestrzeń nazw z parametrów nazw przestrzennych po przekształceniu może odpowiadać wartości przestrzeni głównej, to wtedy odpowiednia przestrzeń nazw z parametru nazwy jednostki się liczy w tej funkcji, wtedy jest liczona nazwa przestrzeni nazw dyskusji z tego parametru. Gdy parametry przestrzenne lub typ jednostki w drugim podejściu nie wskazują na przestrzeń główną, to wtedy działanie tej funkcji jest podobne do {{Code|{{sr|#p["Nazwa dyskusji przestrzeni nazw"](frame,...)|p=Pudełko}}}}. Definicja skrótowa funkcji: <syntaxhighlight lang="lua"> p["Nazwa przestrzeni nazw dyskusji 2"]=function(frame,czy_uwzglednic_alternatywna_nazwe,i)...end; </syntaxhighlight> Wtedy ciało funkcji tej, czyli jego definicja w środku, jest: <syntaxhighlight lang="lua"> local pudelko_pomocne_modul=require("Module:Pudełko/Pomocne"); return pudelko_pomocne_modul.Nazwa_przestrzeni_nazw_przedmiotowa_dyskusji_2(frame,czy_uwzglednic_alternatywna_nazwe,i,"dyskusja"); </syntaxhighlight> Parametry funkcji: * {{Code|frame}} - tablica ramki tablicy transportu, * {{Code|czy_uwzglednic_alternatywna_nazwe}} - czy ma uwzględniać nazwę przestrzeni nazw domyślną szablonu, dostępne wartości: {{Code|false}}, w której nazwa domyślna nie jest uwzględniana wtedy, oraz {{Code|nil}} i {{Code|true}}, które oznaczają to samo, w tym jeżeli ona jest uwzględniana, wtedy jest brany parametr pierwszy dziecka, który musi istnieć przy takiej wartości tego parametru, tzn. {{Code|{{m|Pudełko|Nazwa przestrzeni nazw dyskusji 2|Szablon}}}}, a nazwa uzyskana nazwy przestrzeni nazw jest w takim przypadku błędna, a jeżeli nazwa domyślna jest błędna, czyli {{Code|{{m|Pudełko|Nazwa przestrzeni nazw dyskusji 2|Moja przestrzeń}}}}, wtedy funkcja zwraca stan błędu {{Code|(błąd)}}. * {{Code|i}} - numer zmiennej nazwy przestrzeni nazw. Funkcja wykorzystuje {{Code|{{sr|#p.Nazwa_przestrzeni_nazw_przedmiotowa_dyskusji_2(frame,...)|p=Pudełko/Pomocne}}}} do wyznaczania ogólnego nazwy przestrzeni nazw dla pozycji bazowej i numerkowej, tzn. dla pozycji: jeden, dwa, trzy,..., itd, i ich ogólnej. Parametr ramki tablicy transportu rodzica szablonu: * {{Code|nazwa przestrzeni nazw}}, {{Code|nazwa przestrzeni nazw 1}}, {{Code|nazwa przestrzeni nazw 2}}, {{Code|nazwa przestrzeni nazw 3}},..., {{Code|nazwa przestrzeni nazw i}} - nazwy przestrzeni nazw dla pozycji bazowej oraz zwykłej i ogólnej numerkowej, * {{Code|nazwa jednostki}}, {{Code|nazwa jednostki 1}}, {{Code|nazwa jednostki 2}}, {{Code|nazwa jednostki 3}},... - nazwy jednostek dla pozycji bazowej i numerkowej, * {{Code|typ jednostki}}, {{Code|typ jednostki 1}}, {{Code|typ jednostki 2}}, {{Code|typ jednostki 3}},..., {{Code|typ jednostki i}} - typy jednostek, którym odpowiadają pewne przestrzenie przedmiotowe, dla pozycji bazowej, numerkowej i ogólnej. Parametry ramki tablicy transportu dziecka: * Parametry dziecka są takie same jak rodzica dla funkcji pudełkowej plus tu wymienione, * {{Code|numer jednostki}} - jak parametr {{Code|i}} nie został ustawiony, to wtedy liczy się ta zmienna. Przykłady: <syntaxhighlight lang="mediawiki"> {{Nazwa szablonu|nazwa przestrzeni nazw=Wikibooks|nazwa przestrzeni nazw 1=Szablon|nazwa przestrzeni nazw i=|nazwa jednostki 2=Wikibooks:Strona}} </syntaxhighlight> W dziecku powiedzmy jest wywołanie, i szukamy nazwy przestrzeni nazw o numerze dwa, która została podana, ale istnieje za to jej wersji ogólna {{Code|nazwa przestrzeni nazw i}} i domyślna {{Code|nazwa przestrzeni nazw}}, ale wtedy dla tego numerkowego liczy się to ogólne z {{Code| i}}, a ponieważ ta nazwa jest pusta, więc będziemy liczyli nazwę przestrzeni nazw z {{Code|nazwa jednostki 2}}: <syntaxhighlight lang="mediawiki"> {{#invoke:Pudełko|Nazwa przestrzeni nazw dyskusji 2|numer jednostki=2}} </syntaxhighlight> Na podstawie powyższego przykładu otrzymamy wynik o schemacie, nie wyniku, bo tam nie ma zmiennej {{Code|nazwa przestrzeni nazw 1}}, ale jest {{Code|nazwa przestrzeni nazw i}}: <syntaxhighlight lang="mediawiki"> <!-- Ale nie "nazwa przestrzeni nazw 2", bo jej nie ma, ale za to istnieje "nazwa przestrzeni nazw i"; --> <!-- nazwa przestrzeni nazw 2=nazwa przestrzeni nazw i="", a nazwa jednostki 2="Wikibooks:Strona"; --> <!-- Czyli wynik: --> Dyskusja Wikibooks <!-- Widzimy, że wygenerowała się nazwa przestrzeni nazw, którą jest przestrzeń nieprogramowa, ale dyskusji projektu, wychodząca z nazwy jednostek w tym przypadku z "nazwa jednostki 2"; --> </syntaxhighlight> Nie jest brana w tym powyższym przykładzie zmienna {{Code|nazwa przestrzeni nazw}}, bo jej nie ma, ale za to jest {{Code|nazwa przestrzeni nazw i}}, bo ona występuje jako parametr domyślny ogólny dla parametrów numerkowych. Tytaj jest używana jest zmienna {{Code|nazwa jednostki 2}} do wygenerowania ostatecznego wyniku, bo jak można zauważyć, parametry przestrzenne wskazują na przestrzeń główną, a nazwy jednostek już nie. Przykłady w wikikodzie: * {{Code|{{m|Pudełko|Nazwa przestrzeni nazw dyskusji 2|numer jednostki{{=}}2}}}} → {{Tt|{{#invoke:Pudełko|Nazwa przestrzeni nazw dyskusji 2|numer jednostki=2}}}} * {{Code|{{m|Pudełko|Nazwa przestrzeni nazw dyskusji 2|Szablon|nazwa przestrzeni nazw i{{=}}Moja przestrzeń|numer jednostki{{=}}2}}}} → {{Tt|{{#invoke:Pudełko|Nazwa przestrzeni nazw dyskusji 2|Szablon|nazwa przestrzeni nazw i=Moja przestrzeń|numer jednostki=2}}}} * {{Code|{{m|Pudełko|Nazwa przestrzeni nazw dyskusji 2|nazwa przestrzeni nazw 2{{=}}|nazwa jednostki 2{{=}}Szablon:Strona|numer jednostki{{=}}2}}}} → {{Tt|{{#invoke:Pudełko|Nazwa przestrzeni nazw dyskusji 2|nazwa przestrzeni nazw 2=|nazwa jednostki 2=Szablon:Strona|numer jednostki=2}}}} * {{Code|{{m|Pudełko|Nazwa przestrzeni nazw dyskusji 2|nazwa przestrzeni nazw i{{=}}|nazwa jednostki 2{{=}}Szablon:Strona|numer jednostki{{=}}2}}}} → {{Tt|{{#invoke:Pudełko|Nazwa przestrzeni nazw dyskusji 2|nazwa przestrzeni nazw i=|nazwa jednostki 2=Szablon:Strona|numer jednostki=2}}}} * {{Code|{{m|Pudełko|Nazwa przestrzeni nazw dyskusji 2|Szablon|nazwa przestrzeni nazw{{=}}|nazwa jednostki 2{{=}}Wikibooks:Strona|numer jednostki{{=}}2}}}} → {{Tt|{{#invoke:Pudełko|Nazwa przestrzeni nazw dyskusji 2|Szablon|nazwa przestrzeni nazw=|nazwa jednostki 2=Dyskusja Wikibooks:Strona|numer jednostki=2}}}} Powyżej dla przykładu podano parametry nie w rodzicu w szablonie, tylko w dziecku, jeśli chodzi o parametry nazw przestrzeni nazw i nazw jednostek, ale ich się za to nie powinno podawać w tych ramach, tylko w szablonach, w których wywoływane są te ramki pudełek {{Code|{{m|Pudełko}}}}, ale tak tutaj tak zrobiono by było najłatwiej sprawdzić działanie tego typu funkcji. Analogicznie możemy podawać parametry typu jednostki, np.: wywołaniu modułowym {{Code|{{m|Pudełko|Nazwa przestrzeni nazw dyskusji 2|typ jednostki 2{{=}}Podręcznik|nazwa jednostki 2{{=}}Szablon:Strona|numer jednostki{{=}}2}}}} (ale wtedy jest brana przestrzeń nazw z nazwy jednostki), ale o tym więcej w rozdziałach {{Code|{{sr|# p["Dyskusyjny typ jednostki 3"](frame,i)|p=Pudełko}}}} w „{{sr|#Funkcje typu jednostki|p=Pudełko}}”, one definiują przestrzenie dyskusji, ale można użyć parametru dyskusji typu jednostki z obojętnie jaką wartością niepustą, czy pustą, czy nawet jej nie podamy, wtedy wyświetli się nazwa przestrzeni nazw dyskusji. Jeżeli typ jednostki wskazuje na przestrzeń nazw główną, wtedy się liczą parametry nazw jednostek. Również parametry typu jednostki nie powinno się podawać w dziecku w ramce, tylko w rodzicu w szablonie jako parametry, w którym ta ramka jest wywoływana, ale tutaj podano jedynie dla przykładu, jak najłatwiej sprawdzić działanie tych parametrów tej funkcji. Najpierw w funkcji nagłówku brane są parametry nazw przestrzeni nazw, a jeżeli ich nie ma, to parametry typu jednostki, a jeżeli nie ma lub parametry przestrzenne wskazują na przestrzeń główną, i nie ma nazwy jednostki, to generowane są nazwy tej funkcji na podstawie aktualnej strony. == Funkcje pełnych nazw jednostki == === {{Code|p["Pełna nazwa dyskusji jednostki"](frame,i)}} === === {{Code|p["Pełna nazwa przedmiotowa jednostki"](frame,i)}} === === {{Code|p["Pełna nazwa jednostki"](frame,i)}} === == Funkcje pełnych nazw jednostki drugiej wersji == === {{Code|p["Pełna nazwa dyskusji jednostki 2"](frame,i)}} === === {{Code|p["Pełna nazwa przedmiotowa jednostki 2"](frame,i)}} === === {{Code|p["Pełna nazwa jednostki 2"](frame,i)}} === == Funkcje pełnych nazw jednostki trzeciej wersji == === {{Code|p["Pełna nazwa dyskusji jednostki 3"](frame,i)}} === === {{Code|p["Pełna nazwa przedmiotowa jednostki 3"](frame,i)}} === === {{Code|p["Pełna nazwa jednostki 3"](frame,i)}} === == Funkcje nazw jednostki == === {{Code|p["Nazwa jednostki"](frame,i)}} === == Funkcje nazw jednostki drugiej wersji == === {{Code|p["Nazwa jednostki 2"](frame,i)}} === === {{Code|p["Nazwa przedmiotowa jednostki 2"](frame,i)}} === === {{Code|p["Nazwa dyskusji jednostki 2"](frame,i)}} === == Funkcje nazw przestrzeni nazw trzeciej wersji == === {{Code|p["Nazwa przestrzeni nazw 3"](frame,i)}} === Funkcja pisze nazwę przestrzeni nazw, niezależnie, czy to jest przedmiotowa, czy dyskusji, według, i nie zawsze tylko, podanej w zmiennej {{Code|nazwa przestrzeni nazw}} dla pozycja bazowej w podanych parametrach szablonu rodzicu ramki dziecka, lub dla innej pozycji należy parametr podawać w formie {{Code|nazwa przestrzeni nazw 1}}, {{Code|Nazwa przestrzeni nazw 3}}, {{Code|nazwa przestrzeni nazw 3}},..., lub te parametry można podać w postaci ogólnej {{Code|nazwa przestrzeni nazw i}}. W tej funkcji trzeba też podawać parametry nazwy jednostek {{Code|nazwa jednostki}}, {{Code|nazwa jednostki 1}}, {{Code|nazwa jednostki 2}}, {{Code|nazwa jednostki 3}},... Parametry podaje się w parametrach rodzica wywołania tej funkcji {{Code|{{m|Pudełko|Nazwa przestrzeni nazw 3}}}} (ale ich nie trzeba podawać w dziecku, ale można) i w parametrach dziecka, jeśli chodzi o zmienną {{Code|numer jednostki}}, czyli np.: {{Code|{{m|Pudełko|Nazwa przestrzeni nazw 3|numer jednostki{{=}}<jakaś liczba całkowita dodatnia>}}}}. Te parametry przestrzenne zamiast w rodzicu w szablonie można podać w ramce dziecka, wtedy parametry dziecka mają pierwszeństwo. Przestrzeń nazw z parametrów nazw przestrzennych bazowych (bez numerka) może odpowiadać wartości przestrzeni głównej, to wtedy odpowiednia przestrzeń nazw z parametru nazwy jednostki się nie liczy w tej funkcji, aby się liczyła należy użyć funkcji {{Code|{{sr|#p["Nazwa przestrzeni nazw 2"](frame,...)|p=Pudełko}}}}. Przestrzeń nazw z parametrów nazw przestrzennych numerkowych może odpowiadać wartości przestrzeni głównej, to wtedy odpowiednia przestrzeń nazw z parametru nazwy jednostki się liczy w tej funkcji, wtedy jest liczona nazwa przestrzeni nazw z tego parametru. Gdy parametry przestrzenne lub typ jednostki w drugim podejściu nie wskazują na przestrzeń główną, to wtedy działanie tej funkcji jest podobne do {{Code|{{sr|#p["Nazwa przestrzeni nazw 2"](frame,...)|p=Pudełko}}}}. Definicja skrótowa funkcji: <syntaxhighlight lang="lua"> p["Nazwa przestrzeni nazw 3"]=function(frame,czy_uwzglednic_alternatywna_nazwe,i)...end; </syntaxhighlight> Wtedy ciało funkcji tej, czyli jego definicja w środku, jest: <syntaxhighlight lang="lua"> -- Jest liczony numer parametru nazwy przestrzeni nazw, domyslnie chodzi tu o numer bazowy parametrów przestrzennych; local numer_jednostki=i or frame.args["numer jednostki"]; local liczba_numeru_jednostki=((numer_jednostki)and(tonumber(numer_jednostki)) or 0); local pudelko_pomocne_modul=require("Module:Pudełko/Pomocne"); -- Liczy nazwę przestrzeni nazw dyskusji na podstawie podanych parametrów; return pudelko_pomocne_modul.Uzyskanie_nazw_jednostki(frame,0,liczba_numeru_jednostki,nil,2); </syntaxhighlight> Parametry funkcji: * {{Code|frame}} - tablica ramki tablicy transportu, * {{Code|czy_uwzglednic_alternatywna_nazwe}} - czy ma uwzględniać nazwę przestrzeni nazw domyślną szablonu, dostępne wartości: {{Code|false}}, w której nazwa domyślna nie jest uwzględniana wtedy, oraz {{Code|nil}} i {{Code|true}}, które oznaczają to samo, w tym jeżeli ona jest uwzględniana, wtedy jest brany parametr pierwszy dziecka, który musi istnieć przy takiej wartości tego parametru, tzn. {{Code|{{m|Pudełko|Nazwa przestrzeni nazw 3|Szablon}}}}, a nazwa uzyskana nazwy przestrzeni nazw jest w takim przypadku błędna, a jeżeli nazwa domyślna jest błędna, czyli {{Code|{{m|Pudełko|Nazwa przestrzeni nazw 3|Moja przestrzeń}}}}, wtedy funkcja zwraca stan błędu {{Code|(błąd)}}. * {{Code|i}} - numer zmiennej nazwy przestrzeni nazw. Funkcja wykorzystuje {{Code|{{sr|#p.Uzyskanie_nazw_jednostki(frame,...)|p=Pudełko/Pomocne}}}} do wyznaczania ogólnego nazwy przestrzeni nazw dla pozycji bazowej i numerkowej, tzn. dla pozycji: jeden, dwa, trzy,..., itd, i ich ogólnej. Parametr ramki tablicy transportu rodzica szablonu: * {{Code|nazwa przestrzeni nazw}}, {{Code|nazwa przestrzeni nazw 1}}, {{Code|Nazwa przestrzeni nazw 3}}, {{Code|nazwa przestrzeni nazw 3}},..., {{Code|nazwa przestrzeni nazw i}} - nazwy przestrzeni nazw dla pozycji bazowej oraz zwykłej i ogólnej numerkowej, * {{Code|nazwa jednostki}}, {{Code|nazwa jednostki 1}}, {{Code|nazwa jednostki 2}}, {{Code|nazwa jednostki 3}},... - nazwy jednostek dla pozycji bazowej i numerkowej, * {{Code|typ jednostki}}, {{Code|typ jednostki 1}}, {{Code|typ jednostki 2}}, {{Code|typ jednostki 3}},..., {{Code|typ jednostki i}} - typy jednostek, którym odpowiadają pewne przestrzenie przedmiotowe, dla pozycji bazowej, numerkowej i ogólnej, ** {{Code|dyskusja typu jednostki}}, {{Code|dyskusja typu jednostki 1}}, {{Code|dyskusja typ jednostki 2}}, {{Code|dyskusja typ jednostki 3}},..., {{Code|dyskusja typ jednostki i}} - czy dany typ jednostki ma przedstawiać, jeśli niepusta, przestrzeń dyskusji dla pozycji bazowej, numerkowej i ogólnej. Parametry ramki tablicy transportu dziecka: * Parametry dziecka są takie same jak rodzica dla funkcji pudełkowej plus tu wymienione, * {{Code|numer jednostki}} - jak parametr {{Code|i}} nie został ustawiony, to wtedy liczy się ta zmienna. Przykłady: <syntaxhighlight lang="mediawiki"> {{Nazwa szablonu 1|nazwa przestrzeni nazw=Wikibooks|nazwa przestrzeni nazw=|nazwa przestrzeni nazw i=|nazwa jednostki=Szablon:Strona}} ---- {{Nazwa szablonu 2|nazwa przestrzeni nazw=Wikibooks|nazwa przestrzeni nazw 1=Szablon|nazwa przestrzeni nazw i=|nazwa jednostki 2=Wikibooks:Strona}} </syntaxhighlight> W pierwszym wywołaniu {{Code|nazwa przestrzeni nazw}} jest puste, ale dla tego bazowego (bez numerka) szukamy przestrzeni nazw, a więc ta nazwa jest ostateczna. ---- W drugim wywołaniu w dziecku powiedzmy jest wywołanie, i szukamy nazwy przestrzeni nazw o numerze dwa, która została podana, ale istnieje za to jej wersji ogólna {{Code|nazwa przestrzeni nazw i}} i domyślna {{Code|nazwa przestrzeni nazw}}, ale wtedy dla tego numerkowego liczy się to ogólne z {{Code| i}}, a ponieważ ta nazwa jest pusta, więc będziemy liczyli nazwę przestrzeni nazw z {{Code|nazwa jednostki 2}}. Odpowiadająca powyższemu kodowi, powiedzmy wikikod, według ich zawartości, przedstawia się: <syntaxhighlight lang="mediawiki"> {{#invoke:Pudełko|Nazwa przestrzeni nazw 3}} ---- {{#invoke:Pudełko|Nazwa przestrzeni nazw 3|numer jednostki=2}} </syntaxhighlight> Na podstawie powyższego przykładu otrzymamy wynik o schemacie, nie wyniku, bo tam nie ma zmiennej {{Code|nazwa przestrzeni nazw 1}}, ale jest {{Code|nazwa przestrzeni nazw i}}: <syntaxhighlight lang="mediawiki"> <!-- nazwa przestrzeni nazw=""; --> <!-- Czyli wynik: --> <!-- wynik pusty --> <!-- Widzimy, że wygenerowała się nazwa przestrzeni nazw, którą jest przestrzeń nazw główna, jest ciągiem pustym: ""; --> ---- <!-- Ale nie "nazwa przestrzeni nazw 2", bo jej nie ma, ale za to istnieje "nazwa przestrzeni nazw i"; --> <!-- nazwa przestrzeni nazw 2=nazwa przestrzeni nazw i="", a nazwa jednostki 2="Wikibooks:Strona"; --> <!-- Czyli wynik: --> Wikibooks <!-- Widzimy, że wygenerowała się nazwa przestrzeni nazw, którą jest przestrzeń nieprogramowa, ale projektu, wychodząca z nazwy jednostek w tym przypadku z "nazwa jednostki 2"; --> </syntaxhighlight> Dla parametrów numerkowych nie jest brana w tym powyższym przykładzie zmienna {{Code|nazwa przestrzeni nazw 2}}, bo jej nie ma, ale za to jest {{Code|nazwa przestrzeni nazw i}}, bo ona występuje jako parametr domyślny ogólny dla parametrów numerkowych. Tytaj jest używana jest zmienna {{Code|nazwa jednostki 2}} do wygenerowania ostatecznego wyniku, bo jak można zauważyć, parametry przestrzenne wskazują na przestrzeń główną, a nazwy jednostek już nie. Dla parametrów bazowych mamy zmienną {{Code|nazwa przestrzeni nazw}}, ona jest pusta, więc to zostanie wziete do ostatecznego wyniku. Przykłady w wikikodzie: * {{Code|{{m|Pudełko|Nazwa przestrzeni nazw 3|nazwa przestrzeni nazw{{=}}|nazwa jednostki{{=}}Wikibooks:Strona}}}} → {{Tt|{{#invoke:Pudełko|Nazwa przestrzeni nazw 3|nazwa przestrzeni nazw=|nazwa jednostki=Wikibooks:Szablon}}}} * {{Code|{{m|Pudełko|Nazwa przestrzeni nazw 3|nazwa przestrzeni nazw 2{{=}}|nazwa jednostki 2{{=}}Wikibooks:Strona|numer jednostki{{=}}2}}}} → {{Tt|{{#invoke:Pudełko|Nazwa przestrzeni nazw 3|nazwa przestrzeni nazw 2=|nazwa jednostki 2=Wikibooks:Szablon|numer jednostki=2}}}} Powyżej dla przykładu podano parametry nie w rodzicu w szablonie, tylko w dziecku, jeśli chodzi o parametry nazw przestrzeni nazw i nazw jednostek, ale ich się za to nie powinno podawać w tych ramach, tylko w szablonach, w których wywoływane są te ramki pudełek {{Code|{{m|Pudełko}}}}, ale tak tutaj tak zrobiono by było najłatwiej sprawdzić działanie tego typu funkcji. Analogicznie możemy podawać parametry typu jednostki, np.: wywołaniu modułowym {{Code|{{m|Pudełko|Nazwa przestrzeni nazw 3|typ jednostki 2{{=}}Podręcznik|nazwa jednostki 2{{=}}Szablon:Strona|numer jednostki{{=}}2}}}} (ale wtedy jest brana przestrzeń nazw z nazwy jednostki), ale o tym więcej w rozdziałach {{Code|{{sr|#p["Typ jednostki 3"](frame,i)|p=Pudełko}}}} w „{{sr|#Funkcje typu jednostki|p=Pudełko}}”, on definiuje przestrzenie przedmiotowe, ale można użyć parametru dyskusji typu jednostki z wartością niepustą, wtedy wyświetli się nazwa przestrzeni nazw dyskusji. Jeżeli typ jednostki bazowy wskazuje na przestrzeń nazw główną, wtedy się nie liczą parametry nazw jednostek, a na numerkowy, wtedy się liczy. Również parametry typu jednostki nie powinno się podawać w dziecku w ramce, tylko w rodzicu w szablonie jako parametry, w którym ta ramka jest wywoływana, ale tutaj podano jedynie dla przykładu, jak najłatwiej sprawdzić działanie tych parametrów tej funkcji. Najpierw w funkcji nagłówku brane są parametry nazw przestrzeni nazw, a jeżeli ich nie ma, to parametry typu jednostki, a jeżeli nie ma lub parametry przestrzenne wskazują na przestrzeń główną, i nie ma nazwy jednostki, to generowane są nazwy tej funkcji na podstawie aktualnej strony. === {{Code|p["Nazwa przedmiotowej przestrzeni nazw 3"](frame,i)}} === Funkcja pisze przedmiotową nazwę przestrzeni nazw jakikolwiek nazwy przestrzeni nazw (tzn. nazwę przedmiotową nazwy przestrzenie nazw, czyli nie dyskusji, zamieniana jest na nią samą, czyli identyfikator przestrzeni się nie zmienia, a dyskusji, nie przedmiotową, przekształca się na przedmiotową jej odpowiadającą, czyli w tym przypadku identyfikator przestrzeni zmniejsza się o numer mniej), według podanej w zmiennej {{Code|nazwa przestrzeni nazw}} dla pozycja bazowej w podanych parametrach szablonu rodzicu ramki dziecka, lub dla innej pozycji należy parametr podawać w formie {{Code|nazwa przestrzeni nazw 1}}, {{Code|nazwa przestrzeni nazw 2}}, {{Code|nazwa przestrzeni nazw 3}},..., lub te parametry można podać w postaci ogólnej {{Code|nazwa przestrzeni nazw i}}. Parametry podaje się w parametrach rodzica wywołania tej funkcji {{Code|{{m|Pudełko|Nazwa przedmiotowej przestrzeni nazw 3}}}} (ale ich nie trzeba podawać w dziecku, ale można) i w parametrach dziecka, jeśli chodzi o zmienną {{Code|numer jednostki}}, czyli np.: {{Code|{{m|Pudełko|Nazwa przedmiotowej przestrzeni nazw 3|numer jednostki{{=}}<jakaś liczba całkowita dodatnia>}}}}. Te parametry przestrzenne zamiast w rodzicu w szablonie można podać w ramce dziecka, wtedy parametry dziecka mają pierwszeństwo. Parametry przestrzenne mogą mogą być podane w postaci przestrzeni przedmiotowej lub dyskusji, ale ta funkcja zawsze ją zamienia na przedmiotową. Przestrzeń nazw z parametrów nazw przestrzennych bazowych (bez numerka) może odpowiadać wartości przestrzeni głównej, to wtedy odpowiednia przestrzeń nazw z parametru nazwy jednostki się nie liczy w tej funkcji, aby się liczyła należy użyć funkcji {{Code|{{sr|#p["Nazwa przedmiotowej przestrzeni nazw 2"](frame,...)|p=Pudełko}}}}. Przestrzeń nazw z parametrów nazw przestrzennych numerkowych może odpowiadać wartości przestrzeni głównej, to wtedy odpowiednia przestrzeń nazw z parametru nazwy jednostki się liczy w tej funkcji, wtedy jest liczona nazwa przestrzeni nazw z tego parametru. Gdy parametry przestrzenne lub typ jednostki w drugim podejściu nie wskazują na przestrzeń główną, to wtedy działanie tej funkcji jest podobne do {{Code|{{sr|#p["Nazwa przedmiotowej przestrzeni nazw 2"](frame,...)|p=Pudełko}}}}. Definicja skrótowa funkcji: <syntaxhighlight lang="lua"> p["Nazwa przedmiotowej przestrzeni nazw 3"]=function(frame,czy_uwzglednic_alternatywna_nazwe,i)...end; </syntaxhighlight> Wtedy ciało funkcji tej, czyli jego definicja w środku, jest: <syntaxhighlight lang="lua"> -- Jest liczony numer parametru nazwy przestrzeni nazw, domyslnie chodzi tu o numer bazowy parametrów przestrzennych; local numer_jednostki=i or frame.args["numer jednostki"]; local liczba_numeru_jednostki=((numer_jednostki)and(tonumber(numer_jednostki)) or 0); local pudelko_pomocne_modul=require("Module:Pudełko/Pomocne"); -- Liczy nazwę przestrzeni nazw przedmiotową na podstawie podanych parametrów; return pudelko_pomocne_modul.Uzyskanie_nazw_jednostki(frame,1,liczba_numeru_jednostki,nil,1); </syntaxhighlight> Parametry funkcji: * {{Code|frame}} - tablica ramki tablicy transportu, * {{Code|czy_uwzglednic_alternatywna_nazwe}} - czy ma uwzględniać nazwę przestrzeni nazw domyślną szablonu, dostępne wartości: {{Code|false}}, w której nazwa domyślna nie jest uwzględniana wtedy, oraz {{Code|nil}} i {{Code|true}}, które oznaczają to samo, w tym jeżeli ona jest uwzględniana, wtedy jest brany parametr pierwszy dziecka, który musi istnieć przy takiej wartości tego parametru, tzn. {{Code|{{m|Pudełko|Nazwa przedmiotowej przestrzeni nazw 3|Dyskusja szablonu}}}} - ta nazwa domyślna zostanie zamieniona na przedmiotową, a jak ona by była przedmiotowa, to żadnej zamiany by nie było, a nazwa uzyskana z nazwy przestrzeni nazw z parametrów przestrzennych jest w takim przypadku błędna, to w takim razie brany jest ten parametr, a jeżeli ta nazwa domyślna jest błędna, czyli {{Code|{{m|Pudełko|Nazwa przedmiotowej przestrzeni nazw 3|Moja przestrzeń}}}}, wtedy funkcja zwraca stan błędu {{Code|(błąd)}}. * {{Code|i}} - numer zmiennej nazwy przestrzeni nazw. Funkcja wykorzystuje {{Code|{{sr|#p.Uzyskanie_nazw_jednostki(frame,...)|p=Pudełko/Pomocne}}}} do wyznaczania ogólnego nazwy przestrzeni nazw dla pozycji bazowej i numerkowej, tzn. dla pozycji: jeden, dwa, trzy,..., itd, i ich ogólnej. Parametr ramki tablicy transportu rodzica szablonu: * {{Code|nazwa przestrzeni nazw}}, {{Code|nazwa przestrzeni nazw 1}}, {{Code|nazwa przestrzeni nazw 2}}, {{Code|nazwa przestrzeni nazw 3}},..., {{Code|nazwa przestrzeni nazw i}} - nazwy przestrzeni nazw dla pozycji bazowej oraz zwykłej i ogólnej numerkowej, * {{Code|typ jednostki}}, {{Code|typ jednostki 1}}, {{Code|typ jednostki 2}}, {{Code|typ jednostki 3}},..., {{Code|typ jednostki i}} - typy jednostek, którym odpowiadają pewne przestrzenie przedmiotowe, dla pozycji bazowej, numerkowej i ogólnej. Parametry ramki tablicy transportu dziecka: * Parametry dziecka są takie same jak rodzica dla funkcji pudełkowej plus tu wymienione, * {{Code|numer jednostki}} - jak parametr {{Code|i}} nie został ustawiony, to wtedy liczy się ta zmienna. Przykłady: <syntaxhighlight lang="mediawiki"> {{Nazwa szablonu 1|nazwa przestrzeni nazw=Wikibooks|nazwa przestrzeni nazw=|nazwa przestrzeni nazw i=|nazwa jednostki=Dyskusja Wikibooks:Strona}} ---- {{Nazwa szablonu 2|nazwa przestrzeni nazw=Wikibooks|nazwa przestrzeni nazw 1=Szablon|nazwa przestrzeni nazw i=|nazwa jednostki 2=Dyskusja Wikibooks:Strona}} </syntaxhighlight> W pierwszym wywołaniu {{Code|nazwa przestrzeni nazw}} jest puste, ale dla tego bazowego (bez numerka) szukamy przestrzeni nazw, a więc ta nazwa jest ostateczna. ---- W drugim wywołaniu w dziecku powiedzmy jest wywołanie, i szukamy nazwy przestrzeni nazw o numerze dwa, która została podana, ale istnieje za to jej wersji ogólna {{Code|nazwa przestrzeni nazw i}} i domyślna {{Code|nazwa przestrzeni nazw}}, ale wtedy dla tego numerkowego liczy się to ogólne z {{Code| i}}, a ponieważ ta nazwa jest pusta, więc będziemy liczyli nazwę przestrzeni nazw z {{Code|nazwa jednostki 2}}. Odpowiadająca powyższemu kodowi, powiedzmy wikikod, według ich zawartości, przedstawia się: <syntaxhighlight lang="mediawiki"> {{#invoke:Pudełko|Nazwa przedmiotowej przestrzeni nazw 3}} ---- {{#invoke:Pudełko|Nazwa przedmiotowej przestrzeni nazw 3|numer jednostki=2}} </syntaxhighlight> Na podstawie powyższego przykładu otrzymamy wynik o schemacie, nie wyniku, bo tam nie ma zmiennej {{Code|nazwa przestrzeni nazw 1}}, ale jest {{Code|nazwa przestrzeni nazw i}}: <syntaxhighlight lang="mediawiki"> <!-- nazwa przestrzeni nazw=""; --> <!-- Czyli wynik: --> <!-- wynik pusty --> <!-- Widzimy, że wygenerowała się nazwa przestrzeni nazw, którą jest przestrzeń nazw główna, jest ciągiem pustym: ""; --> ---- <!-- Ale nie "nazwa przestrzeni nazw 2", bo jej nie ma, ale za to istnieje "nazwa przestrzeni nazw i"; --> <!-- nazwa przestrzeni nazw 2=nazwa przestrzeni nazw i="", a nazwa jednostki 2="Dyskusja Wikibooks:Strona"; --> <!-- Czyli wynik: --> Wikibooks <!-- Widzimy, że wygenerowała się nazwa przestrzeni nazw, którą jest przestrzeń nieprogramowa, ale projektu, wychodząca z nazwy jednostek w tym przypadku z "nazwa jednostki 2"; --> </syntaxhighlight> Dla parametrów numerkowych nie jest brana w tym powyższym przykładzie zmienna {{Code|nazwa przestrzeni nazw 2}}, bo jej nie ma, ale za to jest {{Code|nazwa przestrzeni nazw i}}, bo ona występuje jako parametr domyślny ogólny dla parametrów numerkowych. Tytaj jest używana jest zmienna {{Code|nazwa jednostki 2}} do wygenerowania ostatecznego wyniku, bo jak można zauważyć, parametry przestrzenne wskazują na przestrzeń główną, a nazwy jednostek już nie. Dla parametrów bazowych mamy zmienną {{Code|nazwa przestrzeni nazw}}, ona jest pusta, więc to zostanie wziete do ostatecznego wyniku. Przykłady w wikikodzie: * {{Code|{{m|Pudełko|Nazwa przedmiotowej przestrzeni nazw 3|nazwa przestrzeni nazw{{=}}|nazwa jednostki{{=}}Dyskusja Wikibooks:Strona}}}} → {{Tt|{{#invoke:Pudełko|Nazwa przedmiotowej przestrzeni nazw 3|nazwa przestrzeni nazw=|nazwa jednostki=Dyskusja Wikibooks:Szablon}}}} * {{Code|{{m|Pudełko|Nazwa przedmiotowej przestrzeni nazw 3|nazwa przestrzeni nazw 2{{=}}|nazwa jednostki 2{{=}}Dyskusja Wikibooks:Strona|numer jednostki{{=}}2}}}} → {{Tt|{{#invoke:Pudełko|Nazwa przedmiotowej przestrzeni nazw 3|nazwa przestrzeni nazw 2=|nazwa jednostki 2=Dyskusja Wikibooks:Szablon|numer jednostki=2}}}} Powyżej dla przykładu podano parametry nie w rodzicu w szablonie, tylko w dziecku, jeśli chodzi o parametry nazw przestrzeni nazw, ale ich się za to nie powinno podawać w tych ramach, tylko w szablonach, w których wywoływane są te ramki pudełek {{Code|{{m|Pudełko}}}}, ale tak tutaj tak zrobiono by było najłatwiej sprawdzić działanie tego typu funkcji. Analogicznie możemy podawać parametry typu jednostki, np.: wywołaniu modułowym {{Code|{{m|Pudełko|Nazwa przedmiotowej przestrzeni nazw 3|typ jednostki 2{{=}}strona szablonu|numer jednostki{{=}}2}}}}, ale o tym więcej w rozdziałach {{Code|{{sr|# p["Przedmiotowy typ jednostki 3"](frame,i)|p=Pudełko}}}} w „{{sr|#Funkcje typu jednostki|p=Pudełko}}”, ale wtedy ta sama nazwa przestrzeni nazw reprezentowana przez {{Parametr|typ jednostki 2|strona szablonu}}, jest zamieniana na to samo, lepiej jest tutaj używać parametrów przestrzennych nazw niż typu jednostki, bo typ jednostki ma taką samą wartość dla przestrzeni przedmiotowej, co dyskusji. Tutaj parametr dyskusji typu jednostki bazowy i numerkowy ogólny, czy szczegółowy, nie gra roli, bo nawet, gdy wygenerujemy nazwę przestrzeni dyskusji za pomoca tego parametru, to i tak otrzymamy na samym końcu jego nazwę przedmiotową. Jeżeli typ jednostki bazowy wskazuje na przestrzeń nazw główną, wtedy się nie liczą parametry nazw jednostek, a na numerkowy, wtedy się liczy. Również parametry typu jednostki nie powinno się podawać w dziecku w ramce, tylko w rodzicu w szablonie jako parametry, w którym ta ramka jest wywoływana, ale tutaj podano jedynie dla przykładu, jak najłatwiej sprawdzić działanie tych parametrów tej funkcji. Najpierw w funkcji nagłówku brane są parametry nazw przestrzeni nazw, a jeżeli ich nie ma, to parametry typu jednostki, a jeżeli nie ma, to generowane są nazwy na podstawie aktualnego modułu. === {{Code|p["Nazwa przestrzeni nazw dyskusji 3"](frame,i)}} === Funkcja pisze nazwę przestrzeni nazw dyskusji jakikolwiek nazwy przestrzeni nazw (tzn. nazwę dyskusji nazwy przestrzenie nazw, czyli nie przedmiotowej, zamieniana jest na nią samą, czyli identyfikator przestrzeni się nie zmienia, a przedmiotową, nie dyskusji, przekształca się na dyskusji jej odpowiadającą, czyli w tym przypadku identyfikator przestrzeni zwiększa się o numer więcej), według, i nie zawsze tylko, podanej w zmiennej {{Code|nazwa przestrzeni nazw}} dla pozycja bazowej w podanych parametrach szablonu rodzicu ramki dziecka, lub dla innej pozycji należy parametr podawać w formie {{Code|nazwa przestrzeni nazw 1}}, {{Code|nazwa przestrzeni nazw 2}}, {{Code|nazwa przestrzeni nazw 3}},..., lub te parametry można podać w postaci ogólnej {{Code|nazwa przestrzeni nazw i}}. W tej funkcji trzeba też podawać parametry nazwy jednostek {{Code|nazwa jednostki}}, {{Code|nazwa jednostki 1}}, {{Code|nazwa jednostki 2}}, {{Code|nazwa jednostki 3}},... Parametry podaje się w parametrach rodzica wywołania tej funkcji {{Code|{{m|Pudełko|Nazwa przestrzeni nazw dyskusji 3}}}} (ale ich nie trzeba podawać w dziecku, ale można) i w parametrach dziecka, jeśli chodzi o zmienną {{Code|numer jednostki}}, czyli np.: {{Code|{{m|Pudełko|Nazwa przestrzeni nazw dyskusji 3|numer jednostki{{=}}<jakaś liczba całkowita dodatnia>}}}}. Te parametry przestrzenne zamiast w rodzicu w szablonie można podać w ramce dziecka, wtedy parametry dziecka mają pierwszeństwo. Przestrzeń nazw z parametrów nazw przestrzennych bazowych (bez numerka) może odpowiadać wartości przestrzeni głównej, to wtedy odpowiednia przestrzeń nazw z parametru nazwy jednostki się nie liczy w tej funkcji, aby się liczyła należy użyć funkcji {{Code|{{sr|#p["Nazwa przestrzeni nazw dyskusji 2"](frame,...)|p=Pudełko}}}}. Przestrzeń nazw z parametrów nazw przestrzennych numerkowych może odpowiadać wartości przestrzeni głównej, to wtedy odpowiednia przestrzeń nazw z parametru nazwy jednostki się liczy w tej funkcji, wtedy jest liczona nazwa przestrzeni nazw z tego parametru. Gdy parametry przestrzenne lub typ jednostki w drugim podejściu nie wskazują na przestrzeń główną, to wtedy działanie tej funkcji jest podobne do {{Code|{{sr|#p["Nazwa przestrzeni nazw dyskusji 2"](frame,...)|p=Pudełko}}}}. Definicja skrótowa funkcji: <syntaxhighlight lang="lua"> p["Nazwa przestrzeni nazw dyskusji 3"]=function(frame,czy_uwzglednic_alternatywna_nazwe,i)...end; </syntaxhighlight> Wtedy ciało funkcji tej, czyli jego definicja w środku, jest: <syntaxhighlight lang="lua"> -- Jest liczony numer parametru nazwy przestrzeni nazw, domyslnie chodzi tu o numer bazowy parametrów przestrzennych; local numer_jednostki=i or frame.args["numer jednostki"]; local liczba_numeru_jednostki=((numer_jednostki)and(tonumber(numer_jednostki)) or 0); local pudelko_pomocne_modul=require("Module:Pudełko/Pomocne"); -- Liczy nazwę przestrzeni nazw dyskusji na podstawie podanych parametrów; return pudelko_pomocne_modul.Uzyskanie_nazw_jednostki(frame,2,liczba_numeru_jednostki,nil,1); </syntaxhighlight> Parametry funkcji: * {{Code|frame}} - tablica ramki tablicy transportu, * {{Code|czy_uwzglednic_alternatywna_nazwe}} - czy ma uwzględniać nazwę przestrzeni nazw domyślną szablonu, dostępne wartości: {{Code|false}}, w której nazwa domyślna nie jest uwzględniana wtedy, oraz {{Code|nil}} i {{Code|true}}, które oznaczają to samo, w tym jeżeli ona jest uwzględniana, wtedy jest brany parametr pierwszy dziecka, który musi istnieć przy takiej wartości tego parametru, tzn. {{Code|{{m|Pudełko|Nazwa przestrzeni nazw dyskusji 3|Szablon}}}}, a nazwa uzyskana nazwy przestrzeni nazw jest w takim przypadku błędna, a jeżeli nazwa domyślna jest błędna, czyli {{Code|{{m|Pudełko|Nazwa przestrzeni nazw dyskusji 3|Moja przestrzeń}}}}, wtedy funkcja zwraca stan błędu {{Code|(błąd)}}. * {{Code|i}} - numer zmiennej nazwy przestrzeni nazw. Funkcja wykorzystuje {{Code|{{sr|#p.Uzyskanie_nazw_jednostki(frame,...)|p=Pudełko/Pomocne}}}} do wyznaczania ogólnego nazwy przestrzeni nazw dla pozycji bazowej i numerkowej, tzn. dla pozycji: jeden, dwa, trzy,..., itd, i ich ogólnej. Parametr ramki tablicy transportu rodzica szablonu: * {{Code|nazwa przestrzeni nazw}}, {{Code|nazwa przestrzeni nazw 1}}, {{Code|nazwa przestrzeni nazw 2}}, {{Code|nazwa przestrzeni nazw 3}},..., {{Code|nazwa przestrzeni nazw i}} - nazwy przestrzeni nazw dla pozycji bazowej oraz zwykłej i ogólnej numerkowej, * {{Code|nazwa jednostki}}, {{Code|nazwa jednostki 1}}, {{Code|nazwa jednostki 2}}, {{Code|nazwa jednostki 3}},... - nazwy jednostek dla pozycji bazowej i numerkowej, * {{Code|typ jednostki}}, {{Code|typ jednostki 1}}, {{Code|typ jednostki 2}}, {{Code|typ jednostki 3}},..., {{Code|typ jednostki i}} - typy jednostek, którym odpowiadają pewne przestrzenie przedmiotowe, dla pozycji bazowej, numerkowej i ogólnej. Parametry ramki tablicy transportu dziecka: * Parametry dziecka są takie same jak rodzica dla funkcji pudełkowej plus tu wymienione, * {{Code|numer jednostki}} - jak parametr {{Code|i}} nie został ustawiony, to wtedy liczy się ta zmienna. Przykłady: <syntaxhighlight lang="mediawiki"> {{Nazwa szablonu 1|nazwa przestrzeni nazw=Wikibooks|nazwa przestrzeni nazw=|nazwa przestrzeni nazw i=|nazwa jednostki=Szablon:Strona}} ---- {{Nazwa szablonu 2|nazwa przestrzeni nazw=Wikibooks|nazwa przestrzeni nazw 1=Szablon|nazwa przestrzeni nazw i=|nazwa jednostki 2=Wikibooks:Strona}} </syntaxhighlight> W pierwszym wywołaniu {{Code|nazwa przestrzeni nazw}} jest puste, ale dla tego bazowego (bez numerka) szukamy przestrzeni nazw, a więc ta nazwa jest ostateczna. ---- W drugim wywołaniu w dziecku powiedzmy jest wywołanie, i szukamy nazwy przestrzeni nazw o numerze dwa, która została podana, ale istnieje za to jej wersji ogólna {{Code|nazwa przestrzeni nazw i}} i domyślna {{Code|nazwa przestrzeni nazw}}, ale wtedy dla tego numerkowego liczy się to ogólne z {{Code| i}}, a ponieważ ta nazwa jest pusta, więc będziemy liczyli nazwę przestrzeni nazw z {{Code|nazwa jednostki 2}}. Odpowiadająca powyższemu kodowi, powiedzmy wikikod, według ich zawartości, przedstawia się: <syntaxhighlight lang="mediawiki"> {{#invoke:Pudełko|Nazwa przestrzeni nazw 3}} ---- {{#invoke:Pudełko|Nazwa przestrzeni nazw 3|numer jednostki=2}} </syntaxhighlight> Na podstawie powyższego przykładu otrzymamy wynik o schemacie, nie wyniku, bo tam nie ma zmiennej {{Code|nazwa przestrzeni nazw 1}}, ale jest {{Code|nazwa przestrzeni nazw i}}: <syntaxhighlight lang="mediawiki"> <!-- nazwa przestrzeni nazw=""; --> <!-- Czyli wynik: --> Dyskusja <!-- Widzimy, że wygenerowała się nazwa przestrzeni nazw, którą jest przestrzeń nazw niegłówna, jest ciągiem niepustym; --> ---- <!-- Ale nie "nazwa przestrzeni nazw 2", bo jej nie ma, ale za to istnieje "nazwa przestrzeni nazw i"; --> <!-- nazwa przestrzeni nazw 2=nazwa przestrzeni nazw i="", a nazwa jednostki 2="Wikibooks:Strona"; --> <!-- Czyli wynik: --> Dyskusja Wikibooks <!-- Widzimy, że wygenerowała się nazwa przestrzeni nazw, którą jest przestrzeń nieprogramowa, ale projektu, wychodząca z nazwy jednostek w tym przypadku z "nazwa jednostki 2"; --> </syntaxhighlight> Dla parametrów numerkowych nie jest brana w tym powyższym przykładzie zmienna {{Code|nazwa przestrzeni nazw 2}}, bo jej nie ma, ale za to jest {{Code|nazwa przestrzeni nazw i}}, bo ona występuje jako parametr domyślny ogólny dla parametrów numerkowych. Tytaj jest używana jest zmienna {{Code|nazwa jednostki 2}} do wygenerowania ostatecznego wyniku, bo jak można zauważyć, parametry przestrzenne wskazują na przestrzeń główną, a nazwy jednostek już nie. Dla parametrów bazowych mamy zmienną {{Code|nazwa przestrzeni nazw}}, ona jest pusta, więc to zostanie wziete do ostatecznego wyniku. Przykłady w wikikodzie: * {{Code|{{m|Pudełko|Nazwa przestrzeni nazw dyskusji 3|nazwa przestrzeni nazw{{=}}|nazwa jednostki{{=}}Wikibooks:Strona}}}} → {{Tt|{{#invoke:Pudełko|Nazwa przestrzeni nazw dyskusji 3|nazwa przestrzeni nazw=|nazwa jednostki=Wikibooks:Szablon}}}} * {{Code|{{m|Pudełko|Nazwa przestrzeni nazw dyskusji 3|nazwa przestrzeni nazw 2{{=}}|nazwa jednostki 2{{=}}Wikibooks:Strona|numer jednostki{{=}}2}}}} → {{Tt|{{#invoke:Pudełko|Nazwa przestrzeni nazw dyskusji 3|nazwa przestrzeni nazw 2=|nazwa jednostki 2=Wikibooks:Szablon|numer jednostki=2}}}} Powyżej dla przykładu podano parametry nie w rodzicu w szablonie, tylko w dziecku, jeśli chodzi o parametry nazw przestrzeni nazw i nazw jednostek, ale ich się za to nie powinno podawać w tych ramach, tylko w szablonach, w których wywoływane są te ramki pudełek {{Code|{{m|Pudełko}}}}, ale tak tutaj tak zrobiono by było najłatwiej sprawdzić działanie tego typu funkcji. Analogicznie możemy podawać parametry typu jednostki, np.: wywołaniu modułowym {{Code|{{m|Pudełko|Nazwa przestrzeni nazw dyskusji 3|typ jednostki 2{{=}}Podręcznik|nazwa jednostki 2{{=}}Szablon:Strona|numer jednostki{{=}}2}}}} (ale wtedy jest brana przestrzeń nazw z nazwy jednostki), ale o tym więcej w rozdziałach {{Code|{{sr|# p["Dyskusyjny typ jednostki 3"](frame,i)|p=Pudełko}}}} w „{{sr|#Funkcje typu jednostki|p=Pudełko}}”, one definiują przestrzenie dyskusji, ale można użyć parametru dyskusji typu jednostki z obojętnie jaką wartością niepustą, czy pustą, czy nawet jej nie podamy, wtedy wyświetli się nazwa przestrzeni nazw dyskusji. Jeżeli typ jednostki bazowy wskazuje na przestrzeń nazw główną, wtedy się nie liczą parametry nazw jednostek, a na numerkowy, wtedy się liczy. Również parametry typu jednostki nie powinno się podawać w dziecku w ramce, tylko w rodzicu w szablonie jako parametry, w którym ta ramka jest wywoływana, ale tutaj podano jedynie dla przykładu, jak najłatwiej sprawdzić działanie tych parametrów tej funkcji. Najpierw w funkcji nagłówku brane są parametry nazw przestrzeni nazw, a jeżeli ich nie ma, to parametry typu jednostki, a jeżeli nie ma lub parametry przestrzenne wskazują na przestrzeń główną, i nie ma nazwy jednostki, to generowane są nazwy tej funkcji na podstawie aktualnej strony. == Funkcje nazw jednostki trzeciej wersji == === {{Code|p["Nazwa jednostki 3"](frame,i)}} === === {{Code|p["Nazwa przedmiotowa jednostki 3"](frame,i)}} === === {{Code|p["Nazwa dyskusji jednostki 3"](frame,i)}} === == Funkcje typu jednostki == === {{Code|p["Typ jednostki"](frame,i)}} === === {{Code|p["Typ jednostki 2"](frame,i)}} === === {{Code|p["Typ jednostki 3"](frame,i)}} === === Funkcje typu jednostki przedmiotowe === ==== {{Code|p["Przedmiotowy typ jednostki"](frame,i)}} ==== ==== {{Code|p["Przedmiotowy typ jednostki 2"](frame,i)}} ==== ==== {{Code|p["Przedmiotowy typ jednostki 3"](frame,i)}} ==== === Fukcje typu jednostki dyskusji === ==== {{Code|p["Dyskusyjny typ jednostki"](frame,i)}} ==== ==== {{Code|p["Dyskusyjny typ jednostki 2"](frame,i)}} ==== ==== {{Code|p["Dyskusyjny typ jednostki 3"](frame,i)}} ==== == Funkcje chech pudełka == === {{Code|p["Cecha pudełka"](frame)}} === === {{Code|p["Przedmiotowa cecha pudełka"](frame)}} === === {{Code|p["Dyskusyjna cecha pudełka"](frame)}} === == Fukcje ogólnego pudełka == === {{Code|p["Ogólne pudełko"](frame)}} === == Funkcje ogólne == === {{Code|p["Tekst pudełka"](frame)}} === == Funkcje błędów pudełka == === {{Code|p["Błędy pudełka"](frame)}} === === {{Code|p["Przedmiotowe błędy pudełka"](frame)}} === === {{Code|p["Dyskusyjne błędy pudełka"](frame)}} === == Funkcje nazw stron == === {{Code|p["Nazwa strony głównej projektu"](frame,i)}} === === {{Code|p["Nazwa strony głównej dla dzieci projektu"](frame,i)}} === == Funkcje kodów == === {{Code|p["Kod języka"](frame,i)}} === === {{Code|p["Kod projektu"](frame,i)}} === === {{Code|p["Klucz projektu"](frame,i)}} === == Funkcje wiki == === {{Code|p["Inny niż język bieżący wiki"](frame)}} === === {{Code|p["Inne niż lokalne wiki"](frame)}} === === {{Code|p["Inne niż bieżące wiki"](frame)}} === == Funkcje typów parametrów, czy podane je == === {{Code|p["Podano parametry nienazwane"](frame)}} === === {{Code|p["Podano parametry numerowane"](frame)}} === === {{Code|p["Podano parametry nazwane"](frame)}} === == Funkcje kodów tego projektu == === {{Code|p["Kod projektu tego projektu"](frame)}} === === {{Code|p["Kod języka tego projektu"](frame)}} === === {{Code|p["Klucz projektu tego projektu"](frame)}} === == Funkcje stron == === {{Code|p["Strona główna tego projektu"](frame)}} === === {{Code|p["Strona główna dla dzieci tego projektu"](frame)}} === == Funkcje nazw stron drugiej wersji == === {{Code|p["Nazwa strony głównej dla dzieci projektu 2"](frame)}} === === {{Code| p["Nazwa strony głównej projektu 2"](frame)}} === {{BrClear}} <noinclude><!-- -->{{ProstaStronaKoniec}}<!-- -->{{Kategoria|Opisy funkcji, w Lua w Scribunto, w modułach}}<!-- --></noinclude> gx7ggz0ifvt9bru8rzndqm979bmahjw 540450 540449 2026-04-24T04:21:04Z Persino 2851 /* Funkcje nazw przestrzeni nazw trzeciej wersji */ 540450 wikitext text/x-wiki <noinclude>{{ProstaStronaStart | nagłówek = {{Podrozdział|{{ld2|Pudełko}}|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 pudelko_modul=require("Module:Pudełko"); </syntaxhighlight> dzięki, któremu można wypisywać funkcje należącego do niego. Posługuje się na parametrach pudełkowych {{Parametr|nazwa przestrzeni nazw}} (czy też bez numerka {{Parametr|nazwa przestrzeni nazw i}} dla tego numerowanego) lub te z numerkiem po jednej spacji w nich (ale nie dla tego z końcówką {{Code| i}}) mogą zostać użyte jako parametry szablonu. Moduł {{Code|{{ld2|Pudełko}}}} przedstawia funkcje nazw w oparciu o funkcje nazw {{Code|{{ld2|Nazwy}}}}, generuje on nazwy za pomocą parametrów pudełkowych podanych poniżej. Parametr {{Parametr|nazwa jednostki}} (lub parametr {{Parametr|cel}} dla numerka tego pierwszego, tego alternatywnego), lub te z numerkiem po jednej spacji w nazwie parametru, albo numerowane numerkami {{Code|1}}, {{Code|2}},..., mogą zostać użyte jako parametry szablonu. Parametry określające rodzaj jednostki {{Parametr|typ jednostki}} z {{Parametr|dyskusja typu jednostki}}, itp. w wersjach z numerkiem po jednej spacji w nich mogą zostać użyte jako parametry szablonu. A te tymi numerowanymi liczbami naturalnymi {{Tt|nazwy jednostki}} od jedynki wzwyż poprzez szablon, w którym są one użyte, one też mogą być użyte z dwukropkiem, te numerowane, na samym początku nazwy, wtedy one są traktowane jako pełne nazwy strony, i wtedy one nie zostaną z interpretowane, że do nich trzeba użyć parametr odpowiedni z nazwą przetrzeni nazw z tego numerowanego, czy ogólny, aby utworzyć znów inną pełną nazwę strony dla tego numerka. Zestawienie: * {{Code|nazwa przestrzeni nazw}} i {{Code|nazwa przestrzeni nazw i}} (ogólna nazwa przestrzeni nazw dla wszystkich numerków, i tych numerowanych jednostek) - i to pierwsze z numerkiem, tzn. {{Code|nazwa przestrzeni nazw 1}}, {{Code|nazwa przestrzeni nazw 2}}, ..., * {{Code|nazwa jednostki}} - i te z numerkiem: {{Code|nazwa jednostki 1}}, {{Code|nazwa jednostki 2}}, ..., lub gdy jest zamiast tego parametrem numerowany, {{Code|1}}, {{Code|2}},..., który dla tego pierwszego może być uznany jako: {{Code|cel}} {{=}} {{Code|1}}, * {{Code|typ jednostki}} (parametr bazowy) i {{Code|typ jednostki i}} (parametr domyślny numerkowy) - i te z numerkiem: {{Code|typ jednostki 1}}, {{Code|typ jednostki 2}}, ..., tzn. gdy chcemy określić z jakim typem jednostki mamy do czynienia w zależności do jakiej przestrzeni nazw należy, a w danej, czy jest on np. programowy, czy tylko jest opisem, jak to bywa w szablonach {{Np|Template|link=tak}}, podobnie jest w przypadku {{Np|Module|link=tak}}, czy jak jest w innych przestrzeniach nazw, ** {{Code|dyskusja typu jednostki}} (parametr bazowy) i {{Code|dyskusja typu jednostki i}} (parametr domyślny numerkowy) - i te z numerkiem: {{Code|dyskusja typu jednostki 1}}, {{Code|dyskusja typu jednostki 2}}, ..., gdy chcemy określić wartością niepustą,że chodzi tutaj o typ jednostki. == {{Code|p.CzyNiepoprawnaNazwa(nazwa_jednostki)}} == Funkcja sprawdzajaca, czy jest poprawnie podana nazwa jednostki, czy ma poprawną nazwę. Znakami tymi, z których nie powinna składać się nazwa jest {{Code|<nowiki>{}<>|[]#\n</nowiki>}} i dodatkowo znak {{Code|&#127;}} (kod {{Code|{{Nowiki|&#127;}}}}). Też nie może składać się z trzech znaków tyldy, tzn. {{Code|<nowiki>~~~</nowiki>}}. Również w swojej budowie nie może składać się ze kodów {{Strong|HTML}} literowych o wzorze {{Code|{{Nowiki|&(%a+);}}}}. Natomiast może składać się z {{Code|{{Nowiki|&#(%d+);}}}} i {{Code|{{Nowiki|&#x(%x+);}}}}, ale w pierw te kody muszą być zamienione na normalne znaki. Skrótowa definicja funkcji: <syntaxhighlight lang="lua"> function p.CzyNiepoprawnaNazwa(nazwa_jednostki)...end; </syntaxhighlight> Wtedy ciało funkcji tej, czyli jego definicja w środku, jest: <syntaxhighlight lang="lua"> -- Moduł: "Moduł:Html/dane", służy do ładowania znaku o kodzie HTML "&#127;"; local html_dane_modul=mw.loadData("Module:Html/dane"); return mw.ustring.match(nazwa_jednostki,"[{}<>|%[%]#\n"..html_dane_modul.znak_127.."]+") or mw.ustring.match(nazwa_jednostki,"~~~") or mw.ustring.match(nazwa_jednostki,"&(%a+);"); </syntaxhighlight> Parametry: * {{Code|nazwa_jednostki}} - nazwa jednostki do sprawdzenia. Przykłady: <syntaxhighlight lang="lua"> local pudelko_modul=require("Module:Pudełko"); -- Podana przykładowa niepoprawna nazwa jedostki local nazwa_jednostki="Nazwa pliku [[Nazwa linku w pliku]]"; -- Fukcja zwróci wartość: local czy_poprawna_nazwa=true; local czy_poprawna_nazwa=pudelko_modul.CzyNiepoprawnaNazwa(nazwa_jednostki); </syntaxhighlight> == Funkcje nazw przestrzeni nazw == === {{Code|p["Nazwa przestrzeni nazw"](frame,...)}} === Funkcja pisze nazwę przestrzeni nazw, niezależnie, czy to jest przedmiotowa, czy dyskusji, według podanej w zmiennej {{Code|nazwa przestrzeni nazw}} dla pozycja bazowej w podanych parametrach szablonu rodzicu ramki dziecka, lub dla innej pozycji należy parametr podawać w formie {{Code|nazwa przestrzeni nazw 1}}, {{Code|nazwa przestrzeni nazw 2}}, {{Code|nazwa przestrzeni nazw 3}},..., lub te parametry można podać w postaci ogólnej {{Code|nazwa przestrzeni nazw i}}. Parametry podaje się w parametrach rodzica wywołania tej funkcji {{Code|{{m|Pudełko|Nazwa przestrzeni nazw}}}} (ale ich nie trzeba podawać w dziecku, ale można) i w parametrach dziecka, jeśli chodzi o zmienną {{Code|numer jednostki}}, czyli np.: {{Code|{{m|Pudełko|Nazwa przestrzeni nazw|numer jednostki{{=}}<jakaś liczba całkowita dodatnia>}}}}. Te parametry przestrzenne zamiast w rodzicu w szablonie można podać w ramce dziecka, wtedy parametry dziecka mają pierwszeństwo. Przestrzeń nazw z parametrów nazw przestrzennych może odpowiadać wartości przestrzeni głównej, to wtedy odpowiednia przestrzeń nazw z parametru nazwy jednostki się nie liczy w tej funkcji, aby się liczyła należy użyć funkcji {{Code|{{sr|#p["Nazwa przestrzeni nazw 2"](frame,...)|p=Pudełko}}}}. Definicja skrótowa funkcji: <syntaxhighlight lang="lua"> p["Nazwa przestrzeni nazw"]=function(frame,czy_uwzglednic_alternatywna_nazwe,i)...end; </syntaxhighlight> Wtedy ciało funkcji tej, czyli jego definicja w środku, jest: <syntaxhighlight lang="lua"> -- Jest liczony numer parametru nazwy przestrzeni nazw, domyslnie chodzi tu o numer bazowy parametrów przestrzennych; local numer_jednostki=i or frame.args["numer jednostki"]; local liczba_numer_jednostki=((numer_jednostki)and(tonumber(numer_jednostki))or 0); local pudelko_pomocne_modul=require("Module:Pudełko/Pomocne"); -- Liczy nazwę przestrzeni nazw na podstawie podanych parametrów; return pudelko_pomocne_modul.Nazwa_przestrzeni_nazw(frame,0, czy_uwzglednic_alternatywna_nazwe,liczba_numer_jednostki); </syntaxhighlight> Parametry funkcji: * {{Code|frame}} - tablica ramki tablicy transportu, * {{Code|czy_uwzglednic_alternatywna_nazwe}} - czy ma uwzględniać nazwę przestrzeni nazw domyślną szablonu, dostępne wartości: {{Code|false}}, w której nazwa domyślna nie jest uwzględniana wtedy, oraz {{Code|nil}} i {{Code|true}}, które oznaczają to samo, w tym jeżeli ona jest uwzględniana, wtedy jest brany parametr pierwszy dziecka, który musi istnieć przy takiej wartości tego parametru, tzn. {{Code|{{m|Pudełko|Nazwa przestrzeni nazw|Szablon}}}}, a nazwa uzyskana nazwy przestrzeni nazw jest w takim przypadku błędna, a jeżeli nazwa domyślna jest błędna, czyli {{Code|{{m|Pudełko|Nazwa przestrzeni nazw|Moja przestrzeń}}}}, wtedy funkcja zwraca stan błędu {{Code|(błąd)}}. * {{Code|i}} - numer zmiennej nazwy przestrzeni nazw. Funkcja wykorzystuje {{Code|{{sr|#p.Nazwa_przestrzeni_nazw(frame,...)|p=Pudełko/Pomocne}}}} do wyznaczania ogólnego nazwy przestrzeni nazw dla pozycji bazowej i numerkowej, tzn. dla pozycji: jeden, dwa, trzy,..., itd, i ich ogólnej. Parametr ramki tablicy transportu rodzica szablonu: * {{Code|nazwa przestrzeni nazw}}, {{Code|nazwa przestrzeni nazw 1}}, {{Code|nazwa przestrzeni nazw 2}}, {{Code|nazwa przestrzeni nazw 3}},..., {{Code|nazwa przestrzeni nazw i}} - nazwy przestrzeni nazw dla pozycji bazowej oraz zwykłej i ogólnej numerkowej, * {{Code|typ jednostki}}, {{Code|typ jednostki 1}}, {{Code|typ jednostki 2}}, {{Code|typ jednostki 3}},..., {{Code|typ jednostki i}} - typy jednostek, którym odpowiadają pewne przestrzenie przedmiotowe, dla pozycji bazowej, numerkowej i ogólnej, ** {{Code|dyskusja typu jednostki}}, {{Code|dyskusja typu jednostki 1}}, {{Code|dyskusja typ jednostki 2}}, {{Code|dyskusja typ jednostki 3}},..., {{Code|dyskusja typ jednostki i}} - czy dany typ jednostki ma przedstawiać, jeśli niepusta, przestrzeń dyskusji dla pozycji bazowej, numerkowej i ogólnej. Parametry ramki tablicy transportu dziecka: * Parametry dziecka są takie same jak rodzica dla funkcji pudełkowej plus tu wymienione, * {{Code|numer jednostki}} - jak parametr {{Code|i}} nie został ustawiony, to wtedy liczy się ta zmienna. Przykłady: <syntaxhighlight lang="mediawiki"> {{Nazwa szablonu|nazwa przestrzeni nazw=Wikibooks|nazwa przestrzeni nazw 2=Szablon|nazwa przestrzeni nazw i=Moduł}} </syntaxhighlight> W dziecku powiedzmy jest wywołanie, i szukamy nazwy przestrzeni nazw o numerze dwa, która nie została podana, ale istnieje za to jej wersji ogólna {{Code|nazwa przestrzeni nazw i}} i domyślna {{Code|nazwa przestrzeni nazw}}: <syntaxhighlight lang="mediawiki"> {{#invoke:Pudełko|Nazwa przestrzeni nazw|numer jednostki=1}} </syntaxhighlight> Na podstawie powyższego przykładu otrzymamy wynik o schemacie, nie wyniku, bo tam nie ma zmiennej {{Code|nazwa przestrzeni nazw 1}}, ale jest {{Code|nazwa przestrzeni nazw i}}: <syntaxhighlight lang="mediawiki"> <!-- Ale nie "nazwa przestrzeni nazw", bo jej nie ma, ale za to istnieje "nazwa przestrzeni nazw i"; --> <!-- nazwa przestrzeni nazw 2=nazwa przestrzeni nazw i=Moduł; --> <!-- Czyli wynik: --> Moduł <!-- Widzimy, że wygenerowała się nazwa przestrzeni nazw, którą jest przestrzeń programowa, którą również jest "Szablon"; --> </syntaxhighlight> Nie jest brana w tym powyższym przykładzie zmienna {{Code|nazwa przestrzeni nazw}}, bo jej nie ma, ale za to jest {{Code|nazwa przestrzeni nazw i}}, bo ona występuje jako parametr domyślny ogólny dla parametrów numerkowych. Przykłady w wikikodzie: * {{Code|{{m|Pudełko|Nazwa przestrzeni nazw|numer jednostki{{=}}2}}}} → {{Tt|{{#invoke:Pudełko|Nazwa przestrzeni nazw|numer jednostki=2}}}} * {{Code|{{m|Pudełko|Nazwa przestrzeni nazw|Szablon|nazwa przestrzeni nazw i{{=}}Moja przestrzeń|numer jednostki{{=}}2}}}} → {{Tt|{{#invoke:Pudełko|Nazwa przestrzeni nazw|Szablon|nazwa przestrzeni nazw i=Moja przestrzeń|numer jednostki=2}}}} * {{Code|{{m|Pudełko|Nazwa przestrzeni nazw|nazwa przestrzeni nazw 2{{=}}Szablon|numer jednostki{{=}}2}}}} → {{Tt|{{#invoke:Pudełko|Nazwa przestrzeni nazw|nazwa przestrzeni nazw 2=Szablon|numer jednostki=2}}}} * {{Code|{{m|Pudełko|Nazwa przestrzeni nazw|nazwa przestrzeni nazw 2{{=}}Szablon|numer jednostki{{=}}2}}}} → {{Tt|{{#invoke:Pudełko|Nazwa przestrzeni nazw|nazwa przestrzeni nazw i=Szablon|numer jednostki=2}}}} * {{Code|{{m|Pudełko|Nazwa przestrzeni nazw|nazwa przestrzeni nazw{{=}}Szablon|numer jednostki{{=}}2}}}} → {{Tt|{{#invoke:Pudełko|Nazwa przestrzeni nazw|nazwa przestrzeni nazw=Szablon|numer jednostki=2}}}} Powyżej dla przykładu podano parametry nie w rodzicu w szablonie, tylko w dziecku, jeśli chodzi o parametry nazw przestrzeni nazw, ale ich się za to nie powinno podawać w tych ramach, tylko w szablonach, w których wywoływane są te ramki pudełek {{Code|{{m|Pudełko}}}}, ale tak tutaj tak zrobiono by było najłatwiej sprawdzić działanie tego typu funkcji. Analogicznie możemy podawać parametry typu jednostki, np.: wywołaniu modułowym {{Code|{{m|Pudełko|Nazwa przestrzeni nazw|typ jednostki 2{{=}}strona szablonu|numer jednostki{{=}}2}}}}, ale o tym więcej w rozdziałach {{Code|{{sr|# p["Typ jednostki"](frame,i)|p=Pudełko}}}} w „{{sr|#Funkcje typu jednostki|p=Pudełko}}”, on definiuje przestrzenie przedmiotowe, ale można użyć parametru dyskusji typu jednostki z wartością niepustą, wtedy wyświetli się nazwa przestrzeni nazw dyskusji. Również parametry typu jednostki nie powinno się podawać w dziecku w ramce, tylko w rodzicu w szablonie jako parametry, w którym ta ramka jest wywoływana, ale tutaj podano jedynie dla przykładu, jak najłatwiej sprawdzić działanie tych parametrów tej funkcji. Najpierw w funkcji nagłówku brane są parametry nazw przestrzeni nazw, a jeżeli ich nie ma, to parametry typu jednostki, a jeżeli nie ma, to generowane są nazwy na podstawie aktualnego modułu. === {{Code|p["Nazwa przedmiotowej przestrzeni nazw"](frame,...)}} === Funkcja pisze przedmiotową nazwę przestrzeni nazw jakikolwiek nazwy przestrzeni nazw (tzn. nazwę przedmiotową nazwy przestrzenie nazw, czyli nie dyskusji, zamieniana jest na nią samą, czyli identyfikator przestrzeni się nie zmienia, a dyskusji, nie przedmiotową, przekształca się na przedmiotową jej odpowiadającą, czyli w tym przypadku identyfikator przestrzeni zmniejsza się o numer mniej), według podanej w zmiennej {{Code|nazwa przestrzeni nazw}} dla pozycja bazowej w podanych parametrach szablonu rodzicu ramki dziecka, lub dla innej pozycji należy parametr podawać w formie {{Code|nazwa przestrzeni nazw 1}}, {{Code|nazwa przestrzeni nazw 2}}, {{Code|nazwa przestrzeni nazw 3}},..., lub te parametry można podać w postaci ogólnej {{Code|nazwa przestrzeni nazw i}}. Parametry podaje się w parametrach rodzica wywołania tej funkcji {{Code|{{m|Pudełko|Nazwa przedmiotowej przestrzeni nazw}}}} (ale ich nie trzeba podawać w dziecku, ale można) i w parametrach dziecka, jeśli chodzi o zmienną {{Code|numer jednostki}}, czyli np.: {{Code|{{m|Pudełko|Nazwa przedmiotowej przestrzeni nazw|numer jednostki{{=}}<jakaś liczba całkowita dodatnia>}}}}. Te parametry przestrzenne zamiast w rodzicu w szablonie można podać w ramce dziecka, wtedy parametry dziecka mają pierwszeństwo. Parametry przestrzenne mogą mogą być podane w postaci przestrzeni przedmiotowej lub dyskusji, ale ta funkcja zawsze ją zamienia na przedmiotową. Przestrzeń nazw z parametrów nazw przestrzennych może odpowiadać wartości przestrzeni głównej, to wtedy odpowiednia przestrzeń nazw z parametru nazwy jednostki się nie liczy w tej funkcji, aby się liczyła należy użyć funkcji {{Code|{{sr|#p["Nazwa przedmiotowej przestrzeni nazw 2"](frame,...)|p=Pudełko}}}}. Definicja skrótowa funkcji: <syntaxhighlight lang="lua"> p["Nazwa przedmiotowej przestrzeni nazw"]=function(frame,czy_uwzglednic_alternatywna_nazwe,i)...end; </syntaxhighlight> Wtedy ciało funkcji tej, czyli jego definicja w środku, jest: <syntaxhighlight lang="lua"> -- Jest liczony numer parametru nazwy przestrzeni nazw, domyslnie chodzi tu o numer bazowy parametrów przestrzennych; local numer_jednostki=i or frame.args["numer jednostki"]; local liczba_numer_jednostki=((numer_jednostki)and(tonumber(numer_jednostki))or 0); local pudelko_pomocne_modul=require("Module:Pudełko/Pomocne"); -- Liczy nazwę przestrzeni nazw przedmiotową na podstawie podanych parametrów; return pudelko_pomocne_modul.Nazwa_przestrzeni_nazw(frame,1, czy_uwzglednic_alternatywna_nazwe,liczba_numer_jednostki); </syntaxhighlight> Parametry funkcji: * {{Code|frame}} - tablica ramki tablicy transportu, * {{Code|czy_uwzglednic_alternatywna_nazwe}} - czy ma uwzględniać nazwę przestrzeni nazw domyślną szablonu, dostępne wartości: {{Code|false}}, w której nazwa domyślna nie jest uwzględniana wtedy, oraz {{Code|nil}} i {{Code|true}}, które oznaczają to samo, w tym jeżeli ona jest uwzględniana, wtedy jest brany parametr pierwszy dziecka, który musi istnieć przy takiej wartości tego parametru, tzn. {{Code|{{m|Pudełko|Nazwa przedmiotowej przestrzeni nazw|Dyskusja szablonu}}}} - ta nazwa domyślna zostanie zamieniona na przedmiotową, a jak ona by była przedmiotowa, to żadnej zamiany by nie było, a nazwa uzyskana z nazwy przestrzeni nazw z parametrów przestrzennych jest w takim przypadku błędna, to w takim razie brany jest ten parametr, a jeżeli ta nazwa domyślna jest błędna, czyli {{Code|{{m|Pudełko|Nazwa przedmiotowej przestrzeni nazw|Moja przestrzeń}}}}, wtedy funkcja zwraca stan błędu {{Code|(błąd)}}. * {{Code|i}} - numer zmiennej nazwy przestrzeni nazw. Funkcja wykorzystuje {{Code|{{sr|#p.Nazwa_przestrzeni_nazw(frame,...)|p=Pudełko/Pomocne}}}} do wyznaczania ogólnego nazwy przestrzeni nazw dla pozycji bazowej i numerkowej, tzn. dla pozycji: jeden, dwa, trzy,..., itd, i ich ogólnej. Parametr ramki tablicy transportu rodzica szablonu: * {{Code|nazwa przestrzeni nazw}}, {{Code|nazwa przestrzeni nazw 1}}, {{Code|nazwa przestrzeni nazw 2}}, {{Code|nazwa przestrzeni nazw 3}},..., {{Code|nazwa przestrzeni nazw i}} - nazwy przestrzeni nazw dla pozycji bazowej oraz zwykłej i ogólnej numerkowej, * {{Code|typ jednostki}}, {{Code|typ jednostki 1}}, {{Code|typ jednostki 2}}, {{Code|typ jednostki 3}},..., {{Code|typ jednostki i}} - typy jednostek, którym odpowiadają pewne przestrzenie przedmiotowe, dla pozycji bazowej, numerkowej i ogólnej. Parametry ramki tablicy transportu dziecka: * Parametry dziecka są takie same jak rodzica dla funkcji pudełkowej plus tu wymienione, * {{Code|numer jednostki}} - jak parametr {{Code|i}} nie został ustawiony, to wtedy liczy się ta zmienna. Przykłady: <syntaxhighlight lang="mediawiki"> {{Nazwa szablonu|nazwa przestrzeni nazw=Dyskusja Wikibooks|nazwa przestrzeni nazw 2=Dyskusja szablonu|nazwa przestrzeni nazw i=Dyskusja modułu}} </syntaxhighlight> W dziecku powiedzmy jest wywołanie, i szukamy nazwy przestrzeni nazw o numerze dwa, która nie została podana, ale istnieje za to jej wersji ogólna {{Code|nazwa przestrzeni nazw i}} i domyślna {{Code|nazwa przestrzeni nazw}}: <syntaxhighlight lang="mediawiki"> {{#invoke:Pudełko|Nazwa przedmiotowej przestrzeni nazw|numer jednostki=1}} </syntaxhighlight> Na podstawie powyższego przykładu otrzymamy wynik o schemacie, nie wyniku, bo tam nie ma zmiennej {{Code|nazwa przestrzeni nazw 1}}, ale jest {{Code|nazwa przestrzeni nazw i}}: <syntaxhighlight lang="mediawiki"> <!-- Ale nie "nazwa przestrzeni nazw", bo jej nie ma, ale za to istnieje "nazwa przestrzeni nazw i"; --> <!-- nazwa przestrzeni nazw 2=nazwa przestrzeni nazw i=Dyskusja modułu; --> <!-- Czyli wynik: --> Moduł <!-- Widzimy, że wygenerowała się nazwa przestrzeni nazw, którą jest przestrzeń przedmiotowa programowa przestrzeni dyskusji "Dyskusja modułu", którą również jest "Szablon" jego przestrzeni dyskusji "Dyskusja szablonu", a dla ich przestrzeni przedmiotowej, zamiast dyskusji, to samo przekształca się na to samo; --> </syntaxhighlight> Nie jest brana w tym powyższym przykładzie zmienna {{Code|nazwa przestrzeni nazw}}, bo jej nie ma, ale za to jest {{Code|nazwa przestrzeni nazw i}}, bo ona występuje jako parametr domyślny ogólny dla parametrów numerkowych. Przykłady w wikikodzie: * {{Code|{{m|Pudełko|Nazwa przedmiotowej przestrzeni nazw|numer jednostki{{=}}2}}}} → {{Tt|{{#invoke:Pudełko|Nazwa przedmiotowej przestrzeni nazw|numer jednostki=2}}}} * {{Code|{{m|Pudełko|Nazwa przedmiotowej przestrzeni nazw|Dyskusja szablonu|nazwa przestrzeni nazw i{{=}}Moja przestrzeń|numer jednostki{{=}}2}}}} → {{Tt|{{#invoke:Pudełko|Nazwa przedmiotowej przestrzeni nazw|Dyskusja szablonu|nazwa przestrzeni nazw i=Moja przestrzeń|numer jednostki=2}}}} * {{Code|{{m|Pudełko|Nazwa przedmiotowej przestrzeni nazw|nazwa przestrzeni nazw 2{{=}}Dyskusja szablonu|numer jednostki{{=}}2}}}} → {{Tt|{{#invoke:Pudełko|Nazwa przedmiotowej przestrzeni nazw|nazwa przestrzeni nazw 2=Dyskusja szablonu|numer jednostki=2}}}} * {{Code|{{m|Pudełko|Nazwa przedmiotowej przestrzeni nazw|nazwa przestrzeni nazw 2{{=}}Dyskusja szablonu|numer jednostki{{=}}2}}}} → {{Tt|{{#invoke:Pudełko|Nazwa przedmiotowej przestrzeni nazw|nazwa przestrzeni nazw i=Dyskusja szablonu|numer jednostki=2}}}} * {{Code|{{m|Pudełko|Nazwa przedmiotowej przestrzeni nazw|nazwa przestrzeni nazw{{=}}Dyskusja szablonu|numer jednostki{{=}}2}}}} → {{Tt|{{#invoke:Pudełko|Nazwa przedmiotowej przestrzeni nazw|nazwa przestrzeni nazw=Dyskusja szablonu|numer jednostki=2}}}} Powyżej dla przykładu podano parametry nie w rodzicu w szablonie, tylko w dziecku, jeśli chodzi o parametry nazw przestrzeni nazw, ale ich się za to nie powinno podawać w tych ramach, tylko w szablonach, w których wywoływane są te ramki pudełek {{Code|{{m|Pudełko}}}}, ale tak tutaj tak zrobiono by było najłatwiej sprawdzić działanie tego typu funkcji. Analogicznie możemy podawać parametry typu jednostki, np.: wywołaniu modułowym {{Code|{{m|Pudełko|Nazwa przedmiotowej przestrzeni nazw|typ jednostki 2{{=}}strona szablonu|numer jednostki{{=}}2}}}}, ale o tym więcej w rozdziałach {{Code|{{sr|# p["Przedmiotowy typ jednostki"](frame,i)|p=Pudełko}}}} w „{{sr|#Funkcje typu jednostki|p=Pudełko}}”, ale wtedy ta sama nazwa przestrzeni nazw reprezentowana przez {{Parametr|typ jednostki 2|strona szablonu}}, jest zamieniana na to samo, lepiej jest tutaj używać parametrów przestrzennych nazw niż typu jednostki, bo typ jednostki ma taką samą wartość dla przestrzeni przedmiotowej, co dyskusji. Tutaj parametr dyskusji typu jednostki bazowy i numerkowy ogólny, czy szczegółowy, nie gra roli, bo nawet, gdy wygenerujemy nazwę przestrzeni dyskusji za pomoca tego parametru, to i tak otrzymamy na samym końcu jego nazwę przedmiotową. Również parametry typu jednostki nie powinno się podawać w dziecku w ramce, tylko w rodzicu w szablonie jako parametry, w którym ta ramka jest wywoływana, ale tutaj podano jedynie dla przykładu, jak najłatwiej sprawdzić działanie tych parametrów tej funkcji. Najpierw w funkcji nagłówku brane są parametry nazw przestrzeni nazw, a jeżeli ich nie ma, to parametry typu jednostki, a jeżeli nie ma, to generowane są nazwy na podstawie aktualnego modułu. === {{Code|p["Nazwa przestrzeni nazw dyskusji"](frame,...)}} === Funkcja pisze nazwę przestrzeni nazw dyskusji jakikolwiek nazwy przestrzeni nazw (tzn. nazwę przedmiotową nazwy przestrzenie nazw, czyli nie dyskusji, zamieniana jest na dyskusji, czyli identyfikator przestrzeni się zmienia jeden wyżej, a dyskusji, nie przedmiotową, przekształca się na tą samą), według podanej w zmiennej {{Code|nazwa przestrzeni nazw}} dla pozycja bazowej w podanych parametrach szablonu rodzicu ramki dziecka, lub dla innej pozycji należy parametr podawać w formie {{Code|nazwa przestrzeni nazw 1}}, {{Code|nazwa przestrzeni nazw 2}}, {{Code|nazwa przestrzeni nazw 3}},..., lub te parametry można podać w postaci ogólnej {{Code|nazwa przestrzeni nazw i}}. Parametry podaje się w parametrach rodzica wywołania tej funkcji {{Code|{{m|Pudełko|Nazwa przestrzeni nazw dyskusji}}}} (ale ich nie trzeba podawać w dziecku, ale można) i w parametrach dziecka, jeśli chodzi o zmienną {{Code|numer jednostki}}, czyli np.: {{Code|{{m|Pudełko|Nazwa przestrzeni nazw dyskusji|numer jednostki{{=}}<jakaś liczba całkowita dodatnia>}}}}. Te parametry przestrzenne zamiast w rodzicu w szablonie można podać w ramce dziecka, wtedy parametry dziecka mają pierwszeństwo. Parametry przestrzenne mogą mogą być podane w postaci przestrzeni przedmiotowej lub dyskusji, ale ta funkcja zawsze ją zamienia na dyskusji. Przestrzeń nazw z parametrów nazw przestrzennych może odpowiadać wartości przestrzeni głównej, to wtedy odpowiednia przestrzeń nazw z parametru nazwy jednostki się nie liczy w tej funkcji, aby się liczyła należy użyć funkcji {{Code|{{sr|#p["Nazwa przestrzeni nazw dyskusji 2"](frame,...)|p=Pudełko}}}}. Definicja skrótowa funkcji: <syntaxhighlight lang="lua"> p["Nazwa przestrzeni nazw dyskusji"]=function(frame,czy_uwzglednic_alternatywna_nazwe,i)...end; </syntaxhighlight> Wtedy ciało funkcji tej, czyli jego definicja w środku, jest: <syntaxhighlight lang="lua"> -- Jest liczony numer parametru nazwy przestrzeni nazw, domyslnie chodzi tu o numer bazowy parametrów przestrzennych; local numer_jednostki=i or frame.args["numer jednostki"]; local liczba_numer_jednostki=((numer_jednostki)and(tonumber(numer_jednostki))or 0); local pudelko_pomocne_modul=require("Module:Pudełko/Pomocne"); -- Liczy nazwę przestrzeni nazw dyskusji na podstawie podanych parametrów; return pudelko_pomocne_modul.Nazwa_przestrzeni_nazw(frame,2, czy_uwzglednic_alternatywna_nazwe,liczba_numer_jednostki); </syntaxhighlight> Parametry funkcji: * {{Code|frame}} - tablica ramki tablicy transportu, * {{Code|czy_uwzglednic_alternatywna_nazwe}} - czy ma uwzględniać nazwę przestrzeni nazw domyślną szablonu, dostępne wartości: {{Code|false}}, w której nazwa domyślna nie jest uwzględniana wtedy, oraz {{Code|nil}} i {{Code|true}}, które oznaczają to samo, w tym jeżeli ona jest uwzględniana, wtedy jest brany parametr pierwszy dziecka, który musi istnieć przy takiej wartości tego parametru, tzn. {{Code|{{m|Pudełko|Nazwa przestrzeni nazw dyskusji|Szablon}}}} - ta nazwa domyślna zostanie przekształcona na dyskusji, a jeżeli ona by była dyskusji, to nie byłoby żadnego przekształcenia, a nazwa uzyskana nazwy przestrzeni nazw z parametrów przestrzennych jest w takim przypadku błędna, to w takim razie brany jest ten parametr, a jeżeli nazwa domyślna jest błędna, czyli {{Code|{{m|Pudełko|Nazwa przestrzeni nazw dyskusji|Moja przestrzeń}}}}, wtedy funkcja zwraca stan błędu {{Code|(błąd)}}. * {{Code|i}} - numer zmiennej nazwy przestrzeni nazw. Funkcja wykorzystuje {{Code|{{sr|#p.Nazwa_przestrzeni_nazw(frame,...)|p=Pudełko/Pomocne}}}} do wyznaczania ogólnego nazwy przestrzeni nazw dla pozycji bazowej i numerkowej, tzn. dla pozycji: jeden, dwa, trzy,..., itd, i ich ogólnej. Parametr ramki tablicy transportu rodzica szablonu: * {{Code|nazwa przestrzeni nazw}}, {{Code|nazwa przestrzeni nazw 1}}, {{Code|nazwa przestrzeni nazw 2}}, {{Code|nazwa przestrzeni nazw 3}},..., {{Code|nazwa przestrzeni nazw i}} - nazwy przestrzeni nazw dla pozycji bazowej oraz zwykłej i ogólnej numerkowej, * {{Code|typ jednostki}}, {{Code|typ jednostki 1}}, {{Code|typ jednostki 2}}, {{Code|typ jednostki 3}},..., {{Code|typ jednostki i}} - typy jednostek, którym odpowiadają pewne przestrzenie przedmiotowe, dla pozycji bazowej, numerkowej i ogólnej. Parametry ramki tablicy transportu dziecka: * Parametry dziecka są takie same jak rodzica dla funkcji pudełkowej plus tu wymienione, * {{Code|numer jednostki}} - jak parametr {{Code|i}} nie został ustawiony, to wtedy liczy się ta zmienna. Przykłady: <syntaxhighlight lang="mediawiki"> {{Nazwa szablonu|nazwa przestrzeni nazw=Wikibooks|nazwa przestrzeni nazw 2=Szablon|nazwa przestrzeni nazw i=Moduł}} </syntaxhighlight> W dziecku powiedzmy jest wywołanie, i szukamy nazwy przestrzeni nazw o numerze dwa, która nie została podana, ale istnieje za to jej wersji ogólna {{Code|nazwa przestrzeni nazw i}} i domyślna {{Code|nazwa przestrzeni nazw}}: <syntaxhighlight lang="mediawiki"> {{#invoke:Pudełko|Nazwa przestrzeni nazw dyskusji|numer jednostki=1}} </syntaxhighlight> Na podstawie powyższego przykładu otrzymamy wynik o schemacie, nie wyniku, bo tam nie ma zmiennej {{Code|nazwa przestrzeni nazw 1}}, ale jest {{Code|nazwa przestrzeni nazw i}}: <syntaxhighlight lang="mediawiki"> <!-- Ale nie "nazwa przestrzeni nazw", bo jej nie ma, ale za to istnieje "nazwa przestrzeni nazw i"; --> <!-- nazwa przestrzeni nazw 2=nazwa przestrzeni nazw i=Moduł; --> <!-- Czyli wynik: --> Dyskusja modułu <!-- Widzimy, że wygenerowała się nazwa przestrzeni nazw, którą jest przestrzeń dyskusji przestrzeni programowej przestrzeni przedmiotowej "Moduł", którą również jest "Szablon" jego przestrzeni dyskusji "Dyskusja szablonu", a dla ich przestrzeni przedmiotowej, zamiast dyskusji, to przekształca się na dyskusji jej odpowiadającą; --> </syntaxhighlight> Nie jest brana w tym powyższym przykładzie zmienna {{Code|nazwa przestrzeni nazw}}, bo jej nie ma, ale za to jest {{Code|nazwa przestrzeni nazw i}}, bo ona występuje jako parametr domyślny ogólny dla parametrów numerkowych. Przykłady w wikikodzie: * {{Code|{{m|Pudełko|Nazwa przestrzeni nazw dyskusji|numer jednostki{{=}}2}}}} → {{Tt|{{#invoke:Pudełko|Nazwa przestrzeni nazw dyskusji|numer jednostki=2}}}} * {{Code|{{m|Pudełko|Nazwa przestrzeni nazw dyskusji|Szablon|nazwa przestrzeni nazw i{{=}}Moja przestrzeń|numer jednostki{{=}}2}}}} → {{Tt|{{#invoke:Pudełko|Nazwa przestrzeni nazw dyskusji|Szablon|nazwa przestrzeni nazw i=Moja przestrzeń|numer jednostki=2}}}} * {{Code|{{m|Pudełko|Nazwa przestrzeni nazw dyskusji|nazwa przestrzeni nazw 2{{=}}Szablon|numer jednostki{{=}}2}}}} → {{Tt|{{#invoke:Pudełko|Nazwa przestrzeni nazw dyskusji|nazwa przestrzeni nazw 2=Szablon|numer jednostki=2}}}} * {{Code|{{m|Pudełko|Nazwa przestrzeni nazw dyskusji|nazwa przestrzeni nazw 2{{=}}Szablon|numer jednostki{{=}}2}}}} → {{Tt|{{#invoke:Pudełko|Nazwa przestrzeni nazw dyskusji|nazwa przestrzeni nazw i=Szablon|numer jednostki=2}}}} * {{Code|{{m|Pudełko|Nazwa przestrzeni nazw dyskusji|nazwa przestrzeni nazw{{=}}Szablon|numer jednostki{{=}}2}}}} → {{Tt|{{#invoke:Pudełko|Nazwa przestrzeni nazw dyskusji|nazwa przestrzeni nazw=Szablon|numer jednostki=2}}}} Powyżej dla przykładu podano parametry nie w rodzicu w szablonie, tylko w dziecku, jeśli chodzi o parametry nazw przestrzeni nazw, ale ich się za to nie powinno podawać w tych ramach, tylko w szablonach, w których wywoływane są te ramki pudełek {{Code|{{m|Pudełko}}}}, ale tak tutaj tak zrobiono by było najłatwiej sprawdzić działanie tego typu funkcji. Analogicznie możemy podawać parametry typu jednostki, np.: wywołaniu modułowym {{Code|{{m|Pudełko|Nazwa przestrzeni nazw dyskusji|typ jednostki 2{{=}}strona szablonu|numer jednostki{{=}}2}}}}, ale o tym więcej w rozdziałach {{Code|{{sr|# p["Dyskusyjny typ jednostki"](frame,i)|p=Pudełko}}}} w „{{sr|#Funkcje typu jednostki|p=Pudełko}}”, ale wtedy nazwa przestrzeni nazw reprezentowana przez {{Parametr|typ jednostki 2|strona szablonu}}, jest zamieniana na nazwę przestrzeni nazw dyskusji. Parametr dyskusji typu jednostki bazowy lub dla danego numerka ogólny, czy szczegółowy, nie gra roli. Również parametry typu jednostki nie powinno się podawać w dziecku w ramce, tylko w rodzicu w szablonie jako parametry, w którym ta ramka jest wywoływana, ale tutaj podano jedynie dla przykładu, jak najłatwiej sprawdzić działanie tych parametrów tej funkcji. Najpierw w funkcji nagłówku brane są parametry nazw przestrzeni nazw, a jeżeli ich nie ma, to parametry typu jednostki, a jeżeli nie ma, to generowane są nazwy na podstawie aktualnego modułu. == Funkcje nazw przestrzeni nazw drugiej wersji == === {{Code|p["Nazwa przestrzeni nazw 2"](frame,...)}} === Funkcja pisze nazwę przestrzeni nazw, niezależnie, czy to jest przedmiotowa, czy dyskusji, według, i nie zawsze tylko, podanej w zmiennej {{Code|nazwa przestrzeni nazw}} dla pozycja bazowej w podanych parametrach szablonu rodzicu ramki dziecka, lub dla innej pozycji należy parametr podawać w formie {{Code|nazwa przestrzeni nazw 1}}, {{Code|nazwa przestrzeni nazw 2}}, {{Code|nazwa przestrzeni nazw 3}},..., lub te parametry można podać w postaci ogólnej {{Code|nazwa przestrzeni nazw i}}. W tej funkcji trzeba też podawać parametry nazwy jednostek {{Code|nazwa jednostki}}, {{Code|nazwa jednostki 1}}, {{Code|nazwa jednostki 2}}, {{Code|nazwa jednostki 3}},... Parametry podaje się w parametrach rodzica wywołania tej funkcji {{Code|{{m|Pudełko|Nazwa przestrzeni nazw 2}}}} (ale ich nie trzeba podawać w dziecku, ale można) i w parametrach dziecka, jeśli chodzi o zmienną {{Code|numer jednostki}}, czyli np.: {{Code|{{m|Pudełko|Nazwa przestrzeni nazw 2|numer jednostki{{=}}<jakaś liczba całkowita dodatnia>}}}}. Te parametry przestrzenne zamiast w rodzicu w szablonie można podać w ramce dziecka, wtedy parametry dziecka mają pierwszeństwo. Przestrzeń nazw z parametrów nazw przestrzennych może odpowiadać wartości przestrzeni głównej, to wtedy odpowiednia przestrzeń nazw z parametru nazwy jednostki się liczy w tej funkcji, wtedy jest liczona nazwa przestrzeni nazw z tego parametru. Gdy parametry przestrzenne lub typ jednostki w drugim podejściu nie wskazują na przestrzeń główną, to wtedy działanie tej funkcji jest podobne do {{Code|{{sr|#p["Nazwa przestrzeni nazw"](frame,...)|p=Pudełko}}}}. Definicja skrótowa funkcji: <syntaxhighlight lang="lua"> p["Nazwa przestrzeni nazw 2"]=function(frame,czy_uwzglednic_alternatywna_nazwe,i)...end; </syntaxhighlight> Wtedy ciało funkcji tej, czyli jego definicja w środku, jest: <syntaxhighlight lang="lua"> local pudelko_pomocne_modul=require("Module:Pudełko/Pomocne"); -- Liczy nazwę przestrzeni nazw, jeżeli z parametrów przestrzennych przestrzeń wskazuje na główną, to wtedy jest liczona przestrzeń nazw z nazwy jednostki; return pudelko_pomocne_modul.Nazwa_przestrzeni_nazw_2(frame,czy_uwzglednic_alternatywna_nazwe,i) </syntaxhighlight> Parametry funkcji: * {{Code|frame}} - tablica ramki tablicy transportu, * {{Code|czy_uwzglednic_alternatywna_nazwe}} - czy ma uwzględniać nazwę przestrzeni nazw domyślną szablonu, dostępne wartości: {{Code|false}}, w której nazwa domyślna nie jest uwzględniana wtedy, oraz {{Code|nil}} i {{Code|true}}, które oznaczają to samo, w tym jeżeli ona jest uwzględniana, wtedy jest brany parametr pierwszy dziecka, który musi istnieć przy takiej wartości tego parametru, tzn. {{Code|{{m|Pudełko|Nazwa przestrzeni nazw 2|Szablon}}}}, a nazwa uzyskana nazwy przestrzeni nazw jest w takim przypadku błędna, a jeżeli nazwa domyślna jest błędna, czyli {{Code|{{m|Pudełko|Nazwa przestrzeni nazw 2|Moja przestrzeń}}}}, wtedy funkcja zwraca stan błędu {{Code|(błąd)}}. * {{Code|i}} - numer zmiennej nazwy przestrzeni nazw. Funkcja wykorzystuje {{Code|{{sr|#p.Nazwa_przestrzeni_nazw_2(frame,...)|p=Pudełko/Pomocne}}}} do wyznaczania ogólnego nazwy przestrzeni nazw dla pozycji bazowej i numerkowej, tzn. dla pozycji: jeden, dwa, trzy,..., itd, i ich ogólnej. Parametr ramki tablicy transportu rodzica szablonu: * {{Code|nazwa przestrzeni nazw}}, {{Code|nazwa przestrzeni nazw 1}}, {{Code|nazwa przestrzeni nazw 2}}, {{Code|nazwa przestrzeni nazw 3}},..., {{Code|nazwa przestrzeni nazw i}} - nazwy przestrzeni nazw dla pozycji bazowej oraz zwykłej i ogólnej numerkowej, * {{Code|nazwa jednostki}}, {{Code|nazwa jednostki 1}}, {{Code|nazwa jednostki 2}}, {{Code|nazwa jednostki 3}},... - nazwy jednostek dla pozycji bazowej i numerkowej, * {{Code|typ jednostki}}, {{Code|typ jednostki 1}}, {{Code|typ jednostki 2}}, {{Code|typ jednostki 3}},..., {{Code|typ jednostki i}} - typy jednostek, którym odpowiadają pewne przestrzenie przedmiotowe, dla pozycji bazowej, numerkowej i ogólnej, ** {{Code|dyskusja typu jednostki}}, {{Code|dyskusja typu jednostki 1}}, {{Code|dyskusja typ jednostki 2}}, {{Code|dyskusja typ jednostki 3}},..., {{Code|dyskusja typ jednostki i}} - czy dany typ jednostki ma przedstawiać, jeśli niepusta, przestrzeń dyskusji dla pozycji bazowej, numerkowej i ogólnej. Parametry ramki tablicy transportu dziecka: * Parametry dziecka są takie same jak rodzica dla funkcji pudełkowej plus tu wymienione, * {{Code|numer jednostki}} - jak parametr {{Code|i}} nie został ustawiony, to wtedy liczy się ta zmienna. Przykłady: <syntaxhighlight lang="mediawiki"> {{Nazwa szablonu|nazwa przestrzeni nazw=Wikibooks|nazwa przestrzeni nazw 1=Szablon|nazwa przestrzeni nazw i=|nazwa jednostki 2=Wikibooks:Strona}} </syntaxhighlight> W dziecku powiedzmy jest wywołanie, i szukamy nazwy przestrzeni nazw o numerze dwa, która została podana, ale istnieje za to jej wersji ogólna {{Code|nazwa przestrzeni nazw i}} i domyślna {{Code|nazwa przestrzeni nazw}}, ale wtedy dla tego numerkowego liczy się to ogólne z {{Code| i}}, a ponieważ ta nazwa jest pusta, więc będziemy liczyli nazwę przestrzeni nazw z {{Code|nazwa jednostki 2}}: <syntaxhighlight lang="mediawiki"> {{#invoke:Pudełko|Nazwa przestrzeni nazw 2|numer jednostki=2}} </syntaxhighlight> Na podstawie powyższego przykładu otrzymamy wynik o schemacie, nie wyniku, bo tam nie ma zmiennej {{Code|nazwa przestrzeni nazw 1}}, ale jest {{Code|nazwa przestrzeni nazw i}}: <syntaxhighlight lang="mediawiki"> <!-- Ale nie "nazwa przestrzeni nazw 2", bo jej nie ma, ale za to istnieje "nazwa przestrzeni nazw i"; --> <!-- nazwa przestrzeni nazw 2=nazwa przestrzeni nazw i="", a nazwa jednostki 2="Wikibooks:Strona"; --> <!-- Czyli wynik: --> Wikibooks <!-- Widzimy, że wygenerowała się nazwa przestrzeni nazw, którą jest przestrzeń nieprogramowa, ale projektu, wychodząca z nazwy jednostek w tym przypadku z "nazwa jednostki 2"; --> </syntaxhighlight> Nie jest brana w tym powyższym przykładzie zmienna {{Code|nazwa przestrzeni nazw}}, bo jej nie ma, ale za to jest {{Code|nazwa przestrzeni nazw i}}, bo ona występuje jako parametr domyślny ogólny dla parametrów numerkowych. Tytaj jest używana jest zmienna {{Code|nazwa jednostki 2}} do wygenerowania ostatecznego wyniku, bo jak można zauważyć, parametry przestrzenne wskazują na przestrzeń główną, a nazwy jednostek już nie. Przykłady w wikikodzie: * {{Code|{{m|Pudełko|Nazwa przestrzeni nazw 2|numer jednostki{{=}}2}}}} → {{Tt|{{#invoke:Pudełko|Nazwa przestrzeni nazw 2|numer jednostki=2}}}} * {{Code|{{m|Pudełko|Nazwa przestrzeni nazw 2|Szablon|nazwa przestrzeni nazw i{{=}}Moja przestrzeń|numer jednostki{{=}}2}}}} → {{Tt|{{#invoke:Pudełko|Nazwa przestrzeni nazw 2|Szablon|nazwa przestrzeni nazw i=Moja przestrzeń|numer jednostki=2}}}} * {{Code|{{m|Pudełko|Nazwa przestrzeni nazw 2|nazwa przestrzeni nazw 2{{=}}|nazwa jednostki 2{{=}}Szablon:Strona|numer jednostki{{=}}2}}}} → {{Tt|{{#invoke:Pudełko|Nazwa przestrzeni nazw 2|nazwa przestrzeni nazw 2=|nazwa jednostki 2=Szablon:Strona|numer jednostki=2}}}} * {{Code|{{m|Pudełko|Nazwa przestrzeni nazw 2|nazwa przestrzeni nazw i{{=}}|nazwa jednostki 2{{=}}Szablon:Strona|numer jednostki{{=}}2}}}} → {{Tt|{{#invoke:Pudełko|Nazwa przestrzeni nazw 2|nazwa przestrzeni nazw i=|nazwa jednostki 2=Szablon:Strona|numer jednostki=2}}}} * {{Code|{{m|Pudełko|Nazwa przestrzeni nazw 2|Szablon|nazwa przestrzeni nazw{{=}}|nazwa jednostki 2{{=}}Wikibooks:Strona|numer jednostki{{=}}2}}}} → {{Tt|{{#invoke:Pudełko|Nazwa przestrzeni nazw 2|Szablon|nazwa przestrzeni nazw=|nazwa jednostki 2=Wikibooks:Strona|numer jednostki=2}}}} Powyżej dla przykładu podano parametry nie w rodzicu w szablonie, tylko w dziecku, jeśli chodzi o parametry nazw przestrzeni nazw i nazw jednostek, ale ich się za to nie powinno podawać w tych ramach, tylko w szablonach, w których wywoływane są te ramki pudełek {{Code|{{m|Pudełko}}}}, ale tak tutaj tak zrobiono by było najłatwiej sprawdzić działanie tego typu funkcji. Analogicznie możemy podawać parametry typu jednostki, np.: wywołaniu modułowym {{Code|{{m|Pudełko|Nazwa przestrzeni nazw 2|typ jednostki 2{{=}}Podręcznik|nazwa jednostki 2{{=}}Szablon:Strona|numer jednostki{{=}}2}}}} (ale wtedy jest brana przestrzeń nazw z nazwy jednostki), ale o tym więcej w rozdziałach {{Code|{{sr|#p["Typ jednostki 2"](frame,i)|p=Pudełko}}}} w „{{sr|#Funkcje typu jednostki|p=Pudełko}}”, on definiuje przestrzenie przedmiotowe, ale można użyć parametru dyskusji typu jednostki z wartością niepustą, wtedy wyświetli się nazwa przestrzeni nazw dyskusji. Jeżeli typ jednostki wskazuje na przestrzeń nazw główną, wtedy się liczą parametry nazw jednostek. Również parametry typu jednostki nie powinno się podawać w dziecku w ramce, tylko w rodzicu w szablonie jako parametry, w którym ta ramka jest wywoływana, ale tutaj podano jedynie dla przykładu, jak najłatwiej sprawdzić działanie tych parametrów tej funkcji. Najpierw w funkcji nagłówku brane są parametry nazw przestrzeni nazw, a jeżeli ich nie ma, to parametry typu jednostki, a jeżeli nie ma lub parametry przestrzenne wskazują na przestrzeń główną, i nie ma nazwy jednostki, to generowane są nazwy tej funkcji na podstawie aktualnej strony. === {{Code|p["Nazwa przedmiotowej przestrzeni nazw 2"](frame,...)}} === Funkcja pisze przedmiotową nazwę przestrzeni nazw jakikolwiek nazwy przestrzeni nazw (tzn. nazwę przedmiotową nazwy przestrzenie nazw, czyli nie dyskusji, zamieniana jest na nią samą, czyli identyfikator przestrzeni się nie zmienia, a dyskusji, nie przedmiotową, przekształca się na przedmiotową jej odpowiadającą, czyli w tym przypadku identyfikator przestrzeni zmniejsza się o numer mniej), według, i nie zawsze tylko, podanej w zmiennej {{Code|nazwa przestrzeni nazw}} dla pozycja bazowej w podanych parametrach szablonu rodzicu ramki dziecka, lub dla innej pozycji należy parametr podawać w formie {{Code|nazwa przestrzeni nazw 1}}, {{Code|nazwa przestrzeni nazw 2}}, {{Code|nazwa przestrzeni nazw 3}},..., lub te parametry można podać w postaci ogólnej {{Code|nazwa przestrzeni nazw i}}. W tej funkcji trzeba też podawać parametry nazwy jednostek {{Code|nazwa jednostki}}, {{Code|nazwa jednostki 1}}, {{Code|nazwa jednostki 2}}, {{Code|nazwa jednostki 3}},... Parametry podaje się w parametrach rodzica wywołania tej funkcji {{Code|{{m|Pudełko|Nazwa przedmiotowej przestrzeni nazw 2}}}} (ale ich nie trzeba podawać w dziecku, ale można) i w parametrach dziecka, jeśli chodzi o zmienną {{Code|numer jednostki}}, czyli np.: {{Code|{{m|Pudełko|Nazwa przedmiotowej przestrzeni nazw 2|numer jednostki{{=}}<jakaś liczba całkowita dodatnia>}}}}. Te parametry przestrzenne zamiast w rodzicu w szablonie można podać w ramce dziecka, wtedy parametry dziecka mają pierwszeństwo. Przestrzeń nazw z parametrów nazw przestrzennych po przekształceniu na przedmiotową może odpowiadać wartości przestrzeni głównej, to wtedy odpowiednia przestrzeń nazw z parametru nazwy jednostki się liczy w tej funkcji, wtedy jest liczona nazwa przestrzeni nazw z tego parametru. Gdy parametry przestrzenne lub typ jednostki w drugim podejściu nie wskazują na przestrzeń główną, to wtedy działanie tej funkcji jest podobne do {{Code|{{sr|#p["Nazwa przedmiotowej przestrzeni nazw"](frame,...)|p=Pudełko}}}}. Definicja skrótowa funkcji: <syntaxhighlight lang="lua"> p["Nazwa przedmiotowej przestrzeni nazw 2"]=function(frame,czy_uwzglednic_alternatywna_nazwe,i)...end; </syntaxhighlight> Wtedy ciało funkcji tej, czyli jego definicja w środku, jest: <syntaxhighlight lang="lua"> local pudelko_pomocne_modul=require("Module:Pudełko/Pomocne"); return pudelko_pomocne_modul.Nazwa_przestrzeni_nazw_przedmiotowa_dyskusji_2(frame,czy_uwzglednic_alternatywna_nazwe,i,"przedmiotowa"); </syntaxhighlight> Parametry funkcji: * {{Code|frame}} - tablica ramki tablicy transportu, * {{Code|czy_uwzglednic_alternatywna_nazwe}} - czy ma uwzględniać nazwę przestrzeni nazw domyślną szablonu, dostępne wartości: {{Code|false}}, w której nazwa domyślna nie jest uwzględniana wtedy, oraz {{Code|nil}} i {{Code|true}}, które oznaczają to samo, w tym jeżeli ona jest uwzględniana, wtedy jest brany parametr pierwszy dziecka, który musi istnieć przy takiej wartości tego parametru, tzn. {{Code|{{m|Pudełko|Nazwa przedmiotowej przestrzeni nazw 2|Szablon}}}}, a nazwa uzyskana nazwy przestrzeni nazw jest w takim przypadku błędna, a jeżeli nazwa domyślna jest błędna, czyli {{Code|{{m|Pudełko|Nazwa przedmiotowej przestrzeni nazw 2|Moja przestrzeń}}}}, wtedy funkcja zwraca stan błędu {{Code|(błąd)}}. * {{Code|i}} - numer zmiennej nazwy przestrzeni nazw. Funkcja wykorzystuje {{Code|{{sr|#p.Nazwa_przestrzeni_nazw_przedmiotowa_dyskusji_2(frame,...)|p=Pudełko/Pomocne}}}} do wyznaczania ogólnego nazwy przestrzeni nazw dla pozycji bazowej i numerkowej, tzn. dla pozycji: jeden, dwa, trzy,..., itd, i ich ogólnej. Parametr ramki tablicy transportu rodzica szablonu: * {{Code|nazwa przestrzeni nazw}}, {{Code|nazwa przestrzeni nazw 1}}, {{Code|nazwa przestrzeni nazw 2}}, {{Code|nazwa przestrzeni nazw 3}},..., {{Code|nazwa przestrzeni nazw i}} - nazwy przestrzeni nazw dla pozycji bazowej oraz zwykłej i ogólnej numerkowej, * {{Code|nazwa jednostki}}, {{Code|nazwa jednostki 1}}, {{Code|nazwa jednostki 2}}, {{Code|nazwa jednostki 3}},... - nazwy jednostek dla pozycji bazowej i numerkowej, * {{Code|typ jednostki}}, {{Code|typ jednostki 1}}, {{Code|typ jednostki 2}}, {{Code|typ jednostki 3}},..., {{Code|typ jednostki i}} - typy jednostek, którym odpowiadają pewne przestrzenie przedmiotowe, dla pozycji bazowej, numerkowej i ogólnej. Parametry ramki tablicy transportu dziecka: * Parametry dziecka są takie same jak rodzica dla funkcji pudełkowej plus tu wymienione, * {{Code|numer jednostki}} - jak parametr {{Code|i}} nie został ustawiony, to wtedy liczy się ta zmienna. Przykłady: <syntaxhighlight lang="mediawiki"> {{Nazwa szablonu|nazwa przestrzeni nazw=Wikibooks|nazwa przestrzeni nazw 1=Szablon|nazwa przestrzeni nazw i=|nazwa jednostki 2=Dyskusja Wikibooks:Strona}} </syntaxhighlight> W dziecku powiedzmy jest wywołanie, i szukamy nazwy przestrzeni nazw o numerze dwa, która została podana, ale istnieje za to jej wersji ogólna {{Code|nazwa przestrzeni nazw i}} i domyślna {{Code|nazwa przestrzeni nazw}}, ale wtedy dla tego numerkowego liczy się to ogólne z {{Code| i}}, a ponieważ ta nazwa jest pusta, więc będziemy liczyli nazwę przestrzeni nazw z {{Code|nazwa jednostki 2}}: <syntaxhighlight lang="mediawiki"> {{#invoke:Pudełko|Nazwa przedmiotowej przestrzeni nazw 2|numer jednostki=2}} </syntaxhighlight> Na podstawie powyższego przykładu otrzymamy wynik o schemacie, nie wyniku, bo tam nie ma zmiennej {{Code|nazwa przestrzeni nazw 1}}, ale jest {{Code|nazwa przestrzeni nazw i}}: <syntaxhighlight lang="mediawiki"> <!-- Ale nie "nazwa przestrzeni nazw 2", bo jej nie ma, ale za to istnieje "nazwa przestrzeni nazw i"; --> <!-- nazwa przestrzeni nazw 2=nazwa przestrzeni nazw i="", a nazwa jednostki 2="Dyskusja Wikibooks:Strona"; --> <!-- Czyli wynik: --> Wikibooks <!-- Widzimy, że wygenerowała się nazwa przestrzeni nazw, którą jest przestrzeń nieprogramowa, ale projektu, wychodząca z nazwy jednostek w tym przypadku z "nazwa jednostki 2"; --> </syntaxhighlight> Nie jest brana w tym powyższym przykładzie zmienna {{Code|nazwa przestrzeni nazw}}, bo jej nie ma, ale za to jest {{Code|nazwa przestrzeni nazw i}}, bo ona występuje jako parametr domyślny ogólny dla parametrów numerkowych. Tytaj jest używana jest zmienna {{Code|nazwa jednostki 2}} do wygenerowania ostatecznego wyniku, bo jak można zauważyć, parametry przestrzenne wskazują na przestrzeń główną, a nazwy jednostek już nie. Przykłady w wikikodzie: * {{Code|{{m|Pudełko|Nazwa przedmiotowej przestrzeni nazw 2|numer jednostki{{=}}2}}}} → {{Tt|{{#invoke:Pudełko|Nazwa przedmiotowej przestrzeni nazw 2|numer jednostki=2}}}} * {{Code|{{m|Pudełko|Nazwa przedmiotowej przestrzeni nazw 2|Dyskusja szablonu|nazwa przestrzeni nazw i{{=}}Moja przestrzeń|numer jednostki{{=}}2}}}} → {{Tt|{{#invoke:Pudełko|Nazwa przedmiotowej przestrzeni nazw 2|Dyskusja szablonu|nazwa przestrzeni nazw i=Moja przestrzeń|numer jednostki=2}}}} * {{Code|{{m|Pudełko|Nazwa przedmiotowej przestrzeni nazw 2|nazwa przestrzeni nazw 2{{=}}Dyskusja|nazwa jednostki 2{{=}}Dyskusja szablonu:Strona|numer jednostki{{=}}2}}}} → {{Tt|{{#invoke:Pudełko|Nazwa przedmiotowej przestrzeni nazw 2|nazwa przestrzeni nazw 2=Dyskusja|nazwa jednostki 2=Dyskusja szablonu:Strona|numer jednostki=2}}}} * {{Code|{{m|Pudełko|Nazwa przedmiotowej przestrzeni nazw 2|nazwa przestrzeni nazw i{{=}}Dyskusja|nazwa jednostki 2{{=}}Dyskusja szablonu:Strona|numer jednostki{{=}}2}}}} → {{Tt|{{#invoke:Pudełko|Nazwa przedmiotowej przestrzeni nazw 2|nazwa przestrzeni nazw i=Dyskusja|nazwa jednostki 2=Dyskusja szablonu:Strona|numer jednostki=2}}}} * {{Code|{{m|Pudełko|Nazwa przedmiotowej przestrzeni nazw 2|Dyskusja szablonu|nazwa przestrzeni nazw{{=}}Dyskusja|nazwa jednostki 2{{=}}Wikibooks:Strona|numer jednostki{{=}}2}}}} → {{Tt|{{#invoke:Pudełko|Nazwa przedmiotowej przestrzeni nazw 2|Dyskusja szablonu|nazwa przestrzeni nazw=Dyskusja|nazwa jednostki 2=Dyskusja Wikibooks:Strona|numer jednostki=2}}}} Powyżej dla przykładu podano parametry nie w rodzicu w szablonie, tylko w dziecku, jeśli chodzi o parametry nazw przestrzeni nazw i nazw jednostek, ale ich się za to nie powinno podawać w tych ramach, tylko w szablonach, w których wywoływane są te ramki pudełek {{Code|{{m|Pudełko}}}}, ale tak tutaj tak zrobiono by było najłatwiej sprawdzić działanie tego typu funkcji. Analogicznie możemy podawać parametry typu jednostki, np.: wywołaniu modułowym {{Code|{{m|Pudełko|Nazwa przedmiotowej przestrzeni nazw 2|typ jednostki 2{{=}}Podręcznik|nazwa jednostki 2{{=}}Dyskusja szablonu:Strona|numer jednostki{{=}}2}}}} (ale wtedy jest brana przestrzeń nazw z nazwy jednostki), ale o tym więcej w rozdziałach {{Code|{{sr|# p["Przedmiotowy typ jednostki 2"](frame,i)|p=Pudełko}}}} w „{{sr|#Funkcje typu jednostki|p=Pudełko}}”, on definiuje przestrzenie przedmiotowe, ale można użyć parametru dyskusji typu jednostki z wartością niepustą, pustą, czy nawet jej nie podamy, wtedy wyświetli się nazwa przestrzeni nazw przedmiotowej. Jeżeli typ jednostki wskazuje na przestrzeń nazw główną, wtedy się liczą parametry nazw jednostek. Również parametry typu jednostki nie powinno się podawać w dziecku w ramce, tylko w rodzicu w szablonie jako parametry, w którym ta ramka jest wywoływana, ale tutaj podano jedynie dla przykładu, jak najłatwiej sprawdzić działanie tych parametrów tej funkcji. Najpierw w funkcji nagłówku brane są parametry nazw przestrzeni nazw, a jeżeli ich nie ma, to parametry typu jednostki, a jeżeli nie ma lub parametry przestrzenne wskazują na przestrzeń główną, i nie ma nazwy jednostki, to generowane są nazwy tej funkcji na podstawie aktualnej strony. === {{Code|p["Nazwa przestrzeni nazw dyskusji 2"](frame,...)}} === Funkcja pisze nazwę przestrzeni nazw dyskusji jakikolwiek nazwy przestrzeni nazw (tzn. nazwę dyskusji nazwy przestrzenie nazw, czyli nie przedmiotowej, zamieniana jest na nią samą, czyli identyfikator przestrzeni się nie zmienia, a przedmiotową, nie dyskusji, przekształca się na dyskusji jej odpowiadającą, czyli w tym przypadku identyfikator przestrzeni zwiększa się o numer więcej), według, i nie zawsze tylko, podanej w zmiennej {{Code|nazwa przestrzeni nazw}} dla pozycja bazowej w podanych parametrach szablonu rodzicu ramki dziecka, lub dla innej pozycji należy parametr podawać w formie {{Code|nazwa przestrzeni nazw 1}}, {{Code|nazwa przestrzeni nazw 2}}, {{Code|nazwa przestrzeni nazw 3}},..., lub te parametry można podać w postaci ogólnej {{Code|nazwa przestrzeni nazw i}}. W tej funkcji trzeba też podawać parametry nazwy jednostek {{Code|nazwa jednostki}}, {{Code|nazwa jednostki 1}}, {{Code|nazwa jednostki 2}}, {{Code|nazwa jednostki 3}},... Parametry podaje się w parametrach rodzica wywołania tej funkcji {{Code|{{m|Pudełko|Nazwa przestrzeni nazw dyskusji 2}}}} (ale ich nie trzeba podawać w dziecku, ale można) i w parametrach dziecka, jeśli chodzi o zmienną {{Code|numer jednostki}}, czyli np.: {{Code|{{m|Pudełko|Nazwa przestrzeni nazw dyskusji 2|numer jednostki{{=}}<jakaś liczba całkowita dodatnia>}}}}. Te parametry przestrzenne zamiast w rodzicu w szablonie można podać w ramce dziecka, wtedy parametry dziecka mają pierwszeństwo. Przestrzeń nazw z parametrów nazw przestrzennych po przekształceniu może odpowiadać wartości przestrzeni głównej, to wtedy odpowiednia przestrzeń nazw z parametru nazwy jednostki się liczy w tej funkcji, wtedy jest liczona nazwa przestrzeni nazw dyskusji z tego parametru. Gdy parametry przestrzenne lub typ jednostki w drugim podejściu nie wskazują na przestrzeń główną, to wtedy działanie tej funkcji jest podobne do {{Code|{{sr|#p["Nazwa dyskusji przestrzeni nazw"](frame,...)|p=Pudełko}}}}. Definicja skrótowa funkcji: <syntaxhighlight lang="lua"> p["Nazwa przestrzeni nazw dyskusji 2"]=function(frame,czy_uwzglednic_alternatywna_nazwe,i)...end; </syntaxhighlight> Wtedy ciało funkcji tej, czyli jego definicja w środku, jest: <syntaxhighlight lang="lua"> local pudelko_pomocne_modul=require("Module:Pudełko/Pomocne"); return pudelko_pomocne_modul.Nazwa_przestrzeni_nazw_przedmiotowa_dyskusji_2(frame,czy_uwzglednic_alternatywna_nazwe,i,"dyskusja"); </syntaxhighlight> Parametry funkcji: * {{Code|frame}} - tablica ramki tablicy transportu, * {{Code|czy_uwzglednic_alternatywna_nazwe}} - czy ma uwzględniać nazwę przestrzeni nazw domyślną szablonu, dostępne wartości: {{Code|false}}, w której nazwa domyślna nie jest uwzględniana wtedy, oraz {{Code|nil}} i {{Code|true}}, które oznaczają to samo, w tym jeżeli ona jest uwzględniana, wtedy jest brany parametr pierwszy dziecka, który musi istnieć przy takiej wartości tego parametru, tzn. {{Code|{{m|Pudełko|Nazwa przestrzeni nazw dyskusji 2|Szablon}}}}, a nazwa uzyskana nazwy przestrzeni nazw jest w takim przypadku błędna, a jeżeli nazwa domyślna jest błędna, czyli {{Code|{{m|Pudełko|Nazwa przestrzeni nazw dyskusji 2|Moja przestrzeń}}}}, wtedy funkcja zwraca stan błędu {{Code|(błąd)}}. * {{Code|i}} - numer zmiennej nazwy przestrzeni nazw. Funkcja wykorzystuje {{Code|{{sr|#p.Nazwa_przestrzeni_nazw_przedmiotowa_dyskusji_2(frame,...)|p=Pudełko/Pomocne}}}} do wyznaczania ogólnego nazwy przestrzeni nazw dla pozycji bazowej i numerkowej, tzn. dla pozycji: jeden, dwa, trzy,..., itd, i ich ogólnej. Parametr ramki tablicy transportu rodzica szablonu: * {{Code|nazwa przestrzeni nazw}}, {{Code|nazwa przestrzeni nazw 1}}, {{Code|nazwa przestrzeni nazw 2}}, {{Code|nazwa przestrzeni nazw 3}},..., {{Code|nazwa przestrzeni nazw i}} - nazwy przestrzeni nazw dla pozycji bazowej oraz zwykłej i ogólnej numerkowej, * {{Code|nazwa jednostki}}, {{Code|nazwa jednostki 1}}, {{Code|nazwa jednostki 2}}, {{Code|nazwa jednostki 3}},... - nazwy jednostek dla pozycji bazowej i numerkowej, * {{Code|typ jednostki}}, {{Code|typ jednostki 1}}, {{Code|typ jednostki 2}}, {{Code|typ jednostki 3}},..., {{Code|typ jednostki i}} - typy jednostek, którym odpowiadają pewne przestrzenie przedmiotowe, dla pozycji bazowej, numerkowej i ogólnej. Parametry ramki tablicy transportu dziecka: * Parametry dziecka są takie same jak rodzica dla funkcji pudełkowej plus tu wymienione, * {{Code|numer jednostki}} - jak parametr {{Code|i}} nie został ustawiony, to wtedy liczy się ta zmienna. Przykłady: <syntaxhighlight lang="mediawiki"> {{Nazwa szablonu|nazwa przestrzeni nazw=Wikibooks|nazwa przestrzeni nazw 1=Szablon|nazwa przestrzeni nazw i=|nazwa jednostki 2=Wikibooks:Strona}} </syntaxhighlight> W dziecku powiedzmy jest wywołanie, i szukamy nazwy przestrzeni nazw o numerze dwa, która została podana, ale istnieje za to jej wersji ogólna {{Code|nazwa przestrzeni nazw i}} i domyślna {{Code|nazwa przestrzeni nazw}}, ale wtedy dla tego numerkowego liczy się to ogólne z {{Code| i}}, a ponieważ ta nazwa jest pusta, więc będziemy liczyli nazwę przestrzeni nazw z {{Code|nazwa jednostki 2}}: <syntaxhighlight lang="mediawiki"> {{#invoke:Pudełko|Nazwa przestrzeni nazw dyskusji 2|numer jednostki=2}} </syntaxhighlight> Na podstawie powyższego przykładu otrzymamy wynik o schemacie, nie wyniku, bo tam nie ma zmiennej {{Code|nazwa przestrzeni nazw 1}}, ale jest {{Code|nazwa przestrzeni nazw i}}: <syntaxhighlight lang="mediawiki"> <!-- Ale nie "nazwa przestrzeni nazw 2", bo jej nie ma, ale za to istnieje "nazwa przestrzeni nazw i"; --> <!-- nazwa przestrzeni nazw 2=nazwa przestrzeni nazw i="", a nazwa jednostki 2="Wikibooks:Strona"; --> <!-- Czyli wynik: --> Dyskusja Wikibooks <!-- Widzimy, że wygenerowała się nazwa przestrzeni nazw, którą jest przestrzeń nieprogramowa, ale dyskusji projektu, wychodząca z nazwy jednostek w tym przypadku z "nazwa jednostki 2"; --> </syntaxhighlight> Nie jest brana w tym powyższym przykładzie zmienna {{Code|nazwa przestrzeni nazw}}, bo jej nie ma, ale za to jest {{Code|nazwa przestrzeni nazw i}}, bo ona występuje jako parametr domyślny ogólny dla parametrów numerkowych. Tytaj jest używana jest zmienna {{Code|nazwa jednostki 2}} do wygenerowania ostatecznego wyniku, bo jak można zauważyć, parametry przestrzenne wskazują na przestrzeń główną, a nazwy jednostek już nie. Przykłady w wikikodzie: * {{Code|{{m|Pudełko|Nazwa przestrzeni nazw dyskusji 2|numer jednostki{{=}}2}}}} → {{Tt|{{#invoke:Pudełko|Nazwa przestrzeni nazw dyskusji 2|numer jednostki=2}}}} * {{Code|{{m|Pudełko|Nazwa przestrzeni nazw dyskusji 2|Szablon|nazwa przestrzeni nazw i{{=}}Moja przestrzeń|numer jednostki{{=}}2}}}} → {{Tt|{{#invoke:Pudełko|Nazwa przestrzeni nazw dyskusji 2|Szablon|nazwa przestrzeni nazw i=Moja przestrzeń|numer jednostki=2}}}} * {{Code|{{m|Pudełko|Nazwa przestrzeni nazw dyskusji 2|nazwa przestrzeni nazw 2{{=}}|nazwa jednostki 2{{=}}Szablon:Strona|numer jednostki{{=}}2}}}} → {{Tt|{{#invoke:Pudełko|Nazwa przestrzeni nazw dyskusji 2|nazwa przestrzeni nazw 2=|nazwa jednostki 2=Szablon:Strona|numer jednostki=2}}}} * {{Code|{{m|Pudełko|Nazwa przestrzeni nazw dyskusji 2|nazwa przestrzeni nazw i{{=}}|nazwa jednostki 2{{=}}Szablon:Strona|numer jednostki{{=}}2}}}} → {{Tt|{{#invoke:Pudełko|Nazwa przestrzeni nazw dyskusji 2|nazwa przestrzeni nazw i=|nazwa jednostki 2=Szablon:Strona|numer jednostki=2}}}} * {{Code|{{m|Pudełko|Nazwa przestrzeni nazw dyskusji 2|Szablon|nazwa przestrzeni nazw{{=}}|nazwa jednostki 2{{=}}Wikibooks:Strona|numer jednostki{{=}}2}}}} → {{Tt|{{#invoke:Pudełko|Nazwa przestrzeni nazw dyskusji 2|Szablon|nazwa przestrzeni nazw=|nazwa jednostki 2=Dyskusja Wikibooks:Strona|numer jednostki=2}}}} Powyżej dla przykładu podano parametry nie w rodzicu w szablonie, tylko w dziecku, jeśli chodzi o parametry nazw przestrzeni nazw i nazw jednostek, ale ich się za to nie powinno podawać w tych ramach, tylko w szablonach, w których wywoływane są te ramki pudełek {{Code|{{m|Pudełko}}}}, ale tak tutaj tak zrobiono by było najłatwiej sprawdzić działanie tego typu funkcji. Analogicznie możemy podawać parametry typu jednostki, np.: wywołaniu modułowym {{Code|{{m|Pudełko|Nazwa przestrzeni nazw dyskusji 2|typ jednostki 2{{=}}Podręcznik|nazwa jednostki 2{{=}}Szablon:Strona|numer jednostki{{=}}2}}}} (ale wtedy jest brana przestrzeń nazw z nazwy jednostki), ale o tym więcej w rozdziałach {{Code|{{sr|# p["Dyskusyjny typ jednostki 3"](frame,i)|p=Pudełko}}}} w „{{sr|#Funkcje typu jednostki|p=Pudełko}}”, one definiują przestrzenie dyskusji, ale można użyć parametru dyskusji typu jednostki z obojętnie jaką wartością niepustą, czy pustą, czy nawet jej nie podamy, wtedy wyświetli się nazwa przestrzeni nazw dyskusji. Jeżeli typ jednostki wskazuje na przestrzeń nazw główną, wtedy się liczą parametry nazw jednostek. Również parametry typu jednostki nie powinno się podawać w dziecku w ramce, tylko w rodzicu w szablonie jako parametry, w którym ta ramka jest wywoływana, ale tutaj podano jedynie dla przykładu, jak najłatwiej sprawdzić działanie tych parametrów tej funkcji. Najpierw w funkcji nagłówku brane są parametry nazw przestrzeni nazw, a jeżeli ich nie ma, to parametry typu jednostki, a jeżeli nie ma lub parametry przestrzenne wskazują na przestrzeń główną, i nie ma nazwy jednostki, to generowane są nazwy tej funkcji na podstawie aktualnej strony. == Funkcje pełnych nazw jednostki == === {{Code|p["Pełna nazwa dyskusji jednostki"](frame,i)}} === === {{Code|p["Pełna nazwa przedmiotowa jednostki"](frame,i)}} === === {{Code|p["Pełna nazwa jednostki"](frame,i)}} === == Funkcje pełnych nazw jednostki drugiej wersji == === {{Code|p["Pełna nazwa dyskusji jednostki 2"](frame,i)}} === === {{Code|p["Pełna nazwa przedmiotowa jednostki 2"](frame,i)}} === === {{Code|p["Pełna nazwa jednostki 2"](frame,i)}} === == Funkcje pełnych nazw jednostki trzeciej wersji == === {{Code|p["Pełna nazwa dyskusji jednostki 3"](frame,i)}} === === {{Code|p["Pełna nazwa przedmiotowa jednostki 3"](frame,i)}} === === {{Code|p["Pełna nazwa jednostki 3"](frame,i)}} === == Funkcje nazw jednostki == === {{Code|p["Nazwa jednostki"](frame,i)}} === == Funkcje nazw jednostki drugiej wersji == === {{Code|p["Nazwa jednostki 2"](frame,i)}} === === {{Code|p["Nazwa przedmiotowa jednostki 2"](frame,i)}} === === {{Code|p["Nazwa dyskusji jednostki 2"](frame,i)}} === == Funkcje nazw przestrzeni nazw trzeciej wersji == === {{Code|p["Nazwa przestrzeni nazw 3"](frame,i)}} === Funkcja pisze nazwę przestrzeni nazw, niezależnie, czy to jest przedmiotowa, czy dyskusji, według, i nie zawsze tylko, podanej w zmiennej {{Code|nazwa przestrzeni nazw}} dla pozycja bazowej w podanych parametrach szablonu rodzicu ramki dziecka, lub dla innej pozycji należy parametr podawać w formie {{Code|nazwa przestrzeni nazw 1}}, {{Code|Nazwa przestrzeni nazw 3}}, {{Code|nazwa przestrzeni nazw 3}},..., lub te parametry można podać w postaci ogólnej {{Code|nazwa przestrzeni nazw i}}. W tej funkcji trzeba też podawać parametry nazwy jednostek {{Code|nazwa jednostki}}, {{Code|nazwa jednostki 1}}, {{Code|nazwa jednostki 2}}, {{Code|nazwa jednostki 3}},... Parametry podaje się w parametrach rodzica wywołania tej funkcji {{Code|{{m|Pudełko|Nazwa przestrzeni nazw 3}}}} (ale ich nie trzeba podawać w dziecku, ale można) i w parametrach dziecka, jeśli chodzi o zmienną {{Code|numer jednostki}}, czyli np.: {{Code|{{m|Pudełko|Nazwa przestrzeni nazw 3|numer jednostki{{=}}<jakaś liczba całkowita dodatnia>}}}}. Te parametry przestrzenne zamiast w rodzicu w szablonie można podać w ramce dziecka, wtedy parametry dziecka mają pierwszeństwo. Przestrzeń nazw z parametrów nazw przestrzennych bazowych (bez numerka) może odpowiadać wartości przestrzeni głównej, to wtedy odpowiednia przestrzeń nazw z parametru nazwy jednostki się nie liczy w tej funkcji, aby się liczyła należy użyć funkcji {{Code|{{sr|#p["Nazwa przestrzeni nazw 2"](frame,...)|p=Pudełko}}}}. W tym przypadku funkcja działa jak {{Code|{{sr|#p["Nazwa przestrzeni nazw"](frame,...)|p=Pudełko}}}}. Przestrzeń nazw z parametrów nazw przestrzennych numerkowych może odpowiadać wartości przestrzeni głównej, to wtedy odpowiednia przestrzeń nazw z parametru nazwy jednostki się liczy w tej funkcji, wtedy jest liczona nazwa przestrzeni nazw z tego parametru. Gdy parametry przestrzenne lub typ jednostki w drugim podejściu nie wskazują na przestrzeń główną, to wtedy działanie tej funkcji jest podobne do {{Code|{{sr|#p["Nazwa przestrzeni nazw 2"](frame,...)|p=Pudełko}}}}. Definicja skrótowa funkcji: <syntaxhighlight lang="lua"> p["Nazwa przestrzeni nazw 3"]=function(frame,czy_uwzglednic_alternatywna_nazwe,i)...end; </syntaxhighlight> Wtedy ciało funkcji tej, czyli jego definicja w środku, jest: <syntaxhighlight lang="lua"> -- Jest liczony numer parametru nazwy przestrzeni nazw, domyslnie chodzi tu o numer bazowy parametrów przestrzennych; local numer_jednostki=i or frame.args["numer jednostki"]; local liczba_numeru_jednostki=((numer_jednostki)and(tonumber(numer_jednostki)) or 0); local pudelko_pomocne_modul=require("Module:Pudełko/Pomocne"); -- Liczy nazwę przestrzeni nazw dyskusji na podstawie podanych parametrów; return pudelko_pomocne_modul.Uzyskanie_nazw_jednostki(frame,0,liczba_numeru_jednostki,nil,2); </syntaxhighlight> Parametry funkcji: * {{Code|frame}} - tablica ramki tablicy transportu, * {{Code|czy_uwzglednic_alternatywna_nazwe}} - czy ma uwzględniać nazwę przestrzeni nazw domyślną szablonu, dostępne wartości: {{Code|false}}, w której nazwa domyślna nie jest uwzględniana wtedy, oraz {{Code|nil}} i {{Code|true}}, które oznaczają to samo, w tym jeżeli ona jest uwzględniana, wtedy jest brany parametr pierwszy dziecka, który musi istnieć przy takiej wartości tego parametru, tzn. {{Code|{{m|Pudełko|Nazwa przestrzeni nazw 3|Szablon}}}}, a nazwa uzyskana nazwy przestrzeni nazw jest w takim przypadku błędna, a jeżeli nazwa domyślna jest błędna, czyli {{Code|{{m|Pudełko|Nazwa przestrzeni nazw 3|Moja przestrzeń}}}}, wtedy funkcja zwraca stan błędu {{Code|(błąd)}}. * {{Code|i}} - numer zmiennej nazwy przestrzeni nazw. Funkcja wykorzystuje {{Code|{{sr|#p.Uzyskanie_nazw_jednostki(frame,...)|p=Pudełko/Pomocne}}}} do wyznaczania ogólnego nazwy przestrzeni nazw dla pozycji bazowej i numerkowej, tzn. dla pozycji: jeden, dwa, trzy,..., itd, i ich ogólnej. Parametr ramki tablicy transportu rodzica szablonu: * {{Code|nazwa przestrzeni nazw}}, {{Code|nazwa przestrzeni nazw 1}}, {{Code|Nazwa przestrzeni nazw 3}}, {{Code|nazwa przestrzeni nazw 3}},..., {{Code|nazwa przestrzeni nazw i}} - nazwy przestrzeni nazw dla pozycji bazowej oraz zwykłej i ogólnej numerkowej, * {{Code|nazwa jednostki}}, {{Code|nazwa jednostki 1}}, {{Code|nazwa jednostki 2}}, {{Code|nazwa jednostki 3}},... - nazwy jednostek dla pozycji bazowej i numerkowej, * {{Code|typ jednostki}}, {{Code|typ jednostki 1}}, {{Code|typ jednostki 2}}, {{Code|typ jednostki 3}},..., {{Code|typ jednostki i}} - typy jednostek, którym odpowiadają pewne przestrzenie przedmiotowe, dla pozycji bazowej, numerkowej i ogólnej, ** {{Code|dyskusja typu jednostki}}, {{Code|dyskusja typu jednostki 1}}, {{Code|dyskusja typ jednostki 2}}, {{Code|dyskusja typ jednostki 3}},..., {{Code|dyskusja typ jednostki i}} - czy dany typ jednostki ma przedstawiać, jeśli niepusta, przestrzeń dyskusji dla pozycji bazowej, numerkowej i ogólnej. Parametry ramki tablicy transportu dziecka: * Parametry dziecka są takie same jak rodzica dla funkcji pudełkowej plus tu wymienione, * {{Code|numer jednostki}} - jak parametr {{Code|i}} nie został ustawiony, to wtedy liczy się ta zmienna. Przykłady: <syntaxhighlight lang="mediawiki"> {{Nazwa szablonu 1|nazwa przestrzeni nazw=Wikibooks|nazwa przestrzeni nazw=|nazwa przestrzeni nazw i=|nazwa jednostki=Szablon:Strona}} ---- {{Nazwa szablonu 2|nazwa przestrzeni nazw=Wikibooks|nazwa przestrzeni nazw 1=Szablon|nazwa przestrzeni nazw i=|nazwa jednostki 2=Wikibooks:Strona}} </syntaxhighlight> W pierwszym wywołaniu {{Code|nazwa przestrzeni nazw}} jest puste, ale dla tego bazowego (bez numerka) szukamy przestrzeni nazw, a więc ta nazwa jest ostateczna. ---- W drugim wywołaniu w dziecku powiedzmy jest wywołanie, i szukamy nazwy przestrzeni nazw o numerze dwa, która została podana, ale istnieje za to jej wersji ogólna {{Code|nazwa przestrzeni nazw i}} i domyślna {{Code|nazwa przestrzeni nazw}}, ale wtedy dla tego numerkowego liczy się to ogólne z {{Code| i}}, a ponieważ ta nazwa jest pusta, więc będziemy liczyli nazwę przestrzeni nazw z {{Code|nazwa jednostki 2}}. Odpowiadająca powyższemu kodowi, powiedzmy wikikod, według ich zawartości, przedstawia się: <syntaxhighlight lang="mediawiki"> {{#invoke:Pudełko|Nazwa przestrzeni nazw 3}} ---- {{#invoke:Pudełko|Nazwa przestrzeni nazw 3|numer jednostki=2}} </syntaxhighlight> Na podstawie powyższego przykładu otrzymamy wynik o schemacie, nie wyniku, bo tam nie ma zmiennej {{Code|nazwa przestrzeni nazw 1}}, ale jest {{Code|nazwa przestrzeni nazw i}}: <syntaxhighlight lang="mediawiki"> <!-- nazwa przestrzeni nazw=""; --> <!-- Czyli wynik: --> <!-- wynik pusty --> <!-- Widzimy, że wygenerowała się nazwa przestrzeni nazw, którą jest przestrzeń nazw główna, jest ciągiem pustym: ""; --> ---- <!-- Ale nie "nazwa przestrzeni nazw 2", bo jej nie ma, ale za to istnieje "nazwa przestrzeni nazw i"; --> <!-- nazwa przestrzeni nazw 2=nazwa przestrzeni nazw i="", a nazwa jednostki 2="Wikibooks:Strona"; --> <!-- Czyli wynik: --> Wikibooks <!-- Widzimy, że wygenerowała się nazwa przestrzeni nazw, którą jest przestrzeń nieprogramowa, ale projektu, wychodząca z nazwy jednostek w tym przypadku z "nazwa jednostki 2"; --> </syntaxhighlight> Dla parametrów numerkowych nie jest brana w tym powyższym przykładzie zmienna {{Code|nazwa przestrzeni nazw 2}}, bo jej nie ma, ale za to jest {{Code|nazwa przestrzeni nazw i}}, bo ona występuje jako parametr domyślny ogólny dla parametrów numerkowych. Tytaj jest używana jest zmienna {{Code|nazwa jednostki 2}} do wygenerowania ostatecznego wyniku, bo jak można zauważyć, parametry przestrzenne wskazują na przestrzeń główną, a nazwy jednostek już nie. Dla parametrów bazowych mamy zmienną {{Code|nazwa przestrzeni nazw}}, ona jest pusta, więc to zostanie wziete do ostatecznego wyniku. Przykłady w wikikodzie: * {{Code|{{m|Pudełko|Nazwa przestrzeni nazw 3|nazwa przestrzeni nazw{{=}}|nazwa jednostki{{=}}Wikibooks:Strona}}}} → {{Tt|{{#invoke:Pudełko|Nazwa przestrzeni nazw 3|nazwa przestrzeni nazw=|nazwa jednostki=Wikibooks:Szablon}}}} * {{Code|{{m|Pudełko|Nazwa przestrzeni nazw 3|nazwa przestrzeni nazw 2{{=}}|nazwa jednostki 2{{=}}Wikibooks:Strona|numer jednostki{{=}}2}}}} → {{Tt|{{#invoke:Pudełko|Nazwa przestrzeni nazw 3|nazwa przestrzeni nazw 2=|nazwa jednostki 2=Wikibooks:Szablon|numer jednostki=2}}}} Powyżej dla przykładu podano parametry nie w rodzicu w szablonie, tylko w dziecku, jeśli chodzi o parametry nazw przestrzeni nazw i nazw jednostek, ale ich się za to nie powinno podawać w tych ramach, tylko w szablonach, w których wywoływane są te ramki pudełek {{Code|{{m|Pudełko}}}}, ale tak tutaj tak zrobiono by było najłatwiej sprawdzić działanie tego typu funkcji. Analogicznie możemy podawać parametry typu jednostki, np.: wywołaniu modułowym {{Code|{{m|Pudełko|Nazwa przestrzeni nazw 3|typ jednostki 2{{=}}Podręcznik|nazwa jednostki 2{{=}}Szablon:Strona|numer jednostki{{=}}2}}}} (ale wtedy jest brana przestrzeń nazw z nazwy jednostki), ale o tym więcej w rozdziałach {{Code|{{sr|#p["Typ jednostki 3"](frame,i)|p=Pudełko}}}} w „{{sr|#Funkcje typu jednostki|p=Pudełko}}”, on definiuje przestrzenie przedmiotowe, ale można użyć parametru dyskusji typu jednostki z wartością niepustą, wtedy wyświetli się nazwa przestrzeni nazw dyskusji. Jeżeli typ jednostki bazowy wskazuje na przestrzeń nazw główną, wtedy się nie liczą parametry nazw jednostek, a na numerkowy, wtedy się liczy. Również parametry typu jednostki nie powinno się podawać w dziecku w ramce, tylko w rodzicu w szablonie jako parametry, w którym ta ramka jest wywoływana, ale tutaj podano jedynie dla przykładu, jak najłatwiej sprawdzić działanie tych parametrów tej funkcji. Najpierw w funkcji nagłówku brane są parametry nazw przestrzeni nazw, a jeżeli ich nie ma, to parametry typu jednostki, a jeżeli nie ma lub parametry przestrzenne wskazują na przestrzeń główną, i nie ma nazwy jednostki, to generowane są nazwy tej funkcji na podstawie aktualnej strony. === {{Code|p["Nazwa przedmiotowej przestrzeni nazw 3"](frame,i)}} === Funkcja pisze przedmiotową nazwę przestrzeni nazw jakikolwiek nazwy przestrzeni nazw (tzn. nazwę przedmiotową nazwy przestrzenie nazw, czyli nie dyskusji, zamieniana jest na nią samą, czyli identyfikator przestrzeni się nie zmienia, a dyskusji, nie przedmiotową, przekształca się na przedmiotową jej odpowiadającą, czyli w tym przypadku identyfikator przestrzeni zmniejsza się o numer mniej), według podanej w zmiennej {{Code|nazwa przestrzeni nazw}} dla pozycja bazowej w podanych parametrach szablonu rodzicu ramki dziecka, lub dla innej pozycji należy parametr podawać w formie {{Code|nazwa przestrzeni nazw 1}}, {{Code|nazwa przestrzeni nazw 2}}, {{Code|nazwa przestrzeni nazw 3}},..., lub te parametry można podać w postaci ogólnej {{Code|nazwa przestrzeni nazw i}}. Parametry podaje się w parametrach rodzica wywołania tej funkcji {{Code|{{m|Pudełko|Nazwa przedmiotowej przestrzeni nazw 3}}}} (ale ich nie trzeba podawać w dziecku, ale można) i w parametrach dziecka, jeśli chodzi o zmienną {{Code|numer jednostki}}, czyli np.: {{Code|{{m|Pudełko|Nazwa przedmiotowej przestrzeni nazw 3|numer jednostki{{=}}<jakaś liczba całkowita dodatnia>}}}}. Te parametry przestrzenne zamiast w rodzicu w szablonie można podać w ramce dziecka, wtedy parametry dziecka mają pierwszeństwo. Parametry przestrzenne mogą mogą być podane w postaci przestrzeni przedmiotowej lub dyskusji, ale ta funkcja zawsze ją zamienia na przedmiotową. Przestrzeń nazw z parametrów nazw przestrzennych bazowych (bez numerka) może odpowiadać wartości przestrzeni głównej, to wtedy odpowiednia przestrzeń nazw z parametru nazwy jednostki się nie liczy w tej funkcji, aby się liczyła należy użyć funkcji {{Code|{{sr|#p["Nazwa przedmiotowej przestrzeni nazw 2"](frame,...)|p=Pudełko}}}}. W tym przypadku funkcja działa jak {{Code|{{sr|#p["Nazwa przedmiotowej przestrzeni nazw"](frame,...)|p=Pudełko}}}}. Przestrzeń nazw z parametrów nazw przestrzennych numerkowych może odpowiadać wartości przestrzeni głównej, to wtedy odpowiednia przestrzeń nazw z parametru nazwy jednostki się liczy w tej funkcji, wtedy jest liczona nazwa przestrzeni nazw z tego parametru. Gdy parametry przestrzenne lub typ jednostki w drugim podejściu nie wskazują na przestrzeń główną, to wtedy działanie tej funkcji jest podobne do {{Code|{{sr|#p["Nazwa przedmiotowej przestrzeni nazw 2"](frame,...)|p=Pudełko}}}}. Definicja skrótowa funkcji: <syntaxhighlight lang="lua"> p["Nazwa przedmiotowej przestrzeni nazw 3"]=function(frame,czy_uwzglednic_alternatywna_nazwe,i)...end; </syntaxhighlight> Wtedy ciało funkcji tej, czyli jego definicja w środku, jest: <syntaxhighlight lang="lua"> -- Jest liczony numer parametru nazwy przestrzeni nazw, domyslnie chodzi tu o numer bazowy parametrów przestrzennych; local numer_jednostki=i or frame.args["numer jednostki"]; local liczba_numeru_jednostki=((numer_jednostki)and(tonumber(numer_jednostki)) or 0); local pudelko_pomocne_modul=require("Module:Pudełko/Pomocne"); -- Liczy nazwę przestrzeni nazw przedmiotową na podstawie podanych parametrów; return pudelko_pomocne_modul.Uzyskanie_nazw_jednostki(frame,1,liczba_numeru_jednostki,nil,1); </syntaxhighlight> Parametry funkcji: * {{Code|frame}} - tablica ramki tablicy transportu, * {{Code|czy_uwzglednic_alternatywna_nazwe}} - czy ma uwzględniać nazwę przestrzeni nazw domyślną szablonu, dostępne wartości: {{Code|false}}, w której nazwa domyślna nie jest uwzględniana wtedy, oraz {{Code|nil}} i {{Code|true}}, które oznaczają to samo, w tym jeżeli ona jest uwzględniana, wtedy jest brany parametr pierwszy dziecka, który musi istnieć przy takiej wartości tego parametru, tzn. {{Code|{{m|Pudełko|Nazwa przedmiotowej przestrzeni nazw 3|Dyskusja szablonu}}}} - ta nazwa domyślna zostanie zamieniona na przedmiotową, a jak ona by była przedmiotowa, to żadnej zamiany by nie było, a nazwa uzyskana z nazwy przestrzeni nazw z parametrów przestrzennych jest w takim przypadku błędna, to w takim razie brany jest ten parametr, a jeżeli ta nazwa domyślna jest błędna, czyli {{Code|{{m|Pudełko|Nazwa przedmiotowej przestrzeni nazw 3|Moja przestrzeń}}}}, wtedy funkcja zwraca stan błędu {{Code|(błąd)}}. * {{Code|i}} - numer zmiennej nazwy przestrzeni nazw. Funkcja wykorzystuje {{Code|{{sr|#p.Uzyskanie_nazw_jednostki(frame,...)|p=Pudełko/Pomocne}}}} do wyznaczania ogólnego nazwy przestrzeni nazw dla pozycji bazowej i numerkowej, tzn. dla pozycji: jeden, dwa, trzy,..., itd, i ich ogólnej. Parametr ramki tablicy transportu rodzica szablonu: * {{Code|nazwa przestrzeni nazw}}, {{Code|nazwa przestrzeni nazw 1}}, {{Code|nazwa przestrzeni nazw 2}}, {{Code|nazwa przestrzeni nazw 3}},..., {{Code|nazwa przestrzeni nazw i}} - nazwy przestrzeni nazw dla pozycji bazowej oraz zwykłej i ogólnej numerkowej, * {{Code|typ jednostki}}, {{Code|typ jednostki 1}}, {{Code|typ jednostki 2}}, {{Code|typ jednostki 3}},..., {{Code|typ jednostki i}} - typy jednostek, którym odpowiadają pewne przestrzenie przedmiotowe, dla pozycji bazowej, numerkowej i ogólnej. Parametry ramki tablicy transportu dziecka: * Parametry dziecka są takie same jak rodzica dla funkcji pudełkowej plus tu wymienione, * {{Code|numer jednostki}} - jak parametr {{Code|i}} nie został ustawiony, to wtedy liczy się ta zmienna. Przykłady: <syntaxhighlight lang="mediawiki"> {{Nazwa szablonu 1|nazwa przestrzeni nazw=Wikibooks|nazwa przestrzeni nazw=|nazwa przestrzeni nazw i=|nazwa jednostki=Dyskusja Wikibooks:Strona}} ---- {{Nazwa szablonu 2|nazwa przestrzeni nazw=Wikibooks|nazwa przestrzeni nazw 1=Szablon|nazwa przestrzeni nazw i=|nazwa jednostki 2=Dyskusja Wikibooks:Strona}} </syntaxhighlight> W pierwszym wywołaniu {{Code|nazwa przestrzeni nazw}} jest puste, ale dla tego bazowego (bez numerka) szukamy przestrzeni nazw, a więc ta nazwa jest ostateczna. ---- W drugim wywołaniu w dziecku powiedzmy jest wywołanie, i szukamy nazwy przestrzeni nazw o numerze dwa, która została podana, ale istnieje za to jej wersji ogólna {{Code|nazwa przestrzeni nazw i}} i domyślna {{Code|nazwa przestrzeni nazw}}, ale wtedy dla tego numerkowego liczy się to ogólne z {{Code| i}}, a ponieważ ta nazwa jest pusta, więc będziemy liczyli nazwę przestrzeni nazw z {{Code|nazwa jednostki 2}}. Odpowiadająca powyższemu kodowi, powiedzmy wikikod, według ich zawartości, przedstawia się: <syntaxhighlight lang="mediawiki"> {{#invoke:Pudełko|Nazwa przedmiotowej przestrzeni nazw 3}} ---- {{#invoke:Pudełko|Nazwa przedmiotowej przestrzeni nazw 3|numer jednostki=2}} </syntaxhighlight> Na podstawie powyższego przykładu otrzymamy wynik o schemacie, nie wyniku, bo tam nie ma zmiennej {{Code|nazwa przestrzeni nazw 1}}, ale jest {{Code|nazwa przestrzeni nazw i}}: <syntaxhighlight lang="mediawiki"> <!-- nazwa przestrzeni nazw=""; --> <!-- Czyli wynik: --> <!-- wynik pusty --> <!-- Widzimy, że wygenerowała się nazwa przestrzeni nazw, którą jest przestrzeń nazw główna, jest ciągiem pustym: ""; --> ---- <!-- Ale nie "nazwa przestrzeni nazw 2", bo jej nie ma, ale za to istnieje "nazwa przestrzeni nazw i"; --> <!-- nazwa przestrzeni nazw 2=nazwa przestrzeni nazw i="", a nazwa jednostki 2="Dyskusja Wikibooks:Strona"; --> <!-- Czyli wynik: --> Wikibooks <!-- Widzimy, że wygenerowała się nazwa przestrzeni nazw, którą jest przestrzeń nieprogramowa, ale projektu, wychodząca z nazwy jednostek w tym przypadku z "nazwa jednostki 2"; --> </syntaxhighlight> Dla parametrów numerkowych nie jest brana w tym powyższym przykładzie zmienna {{Code|nazwa przestrzeni nazw 2}}, bo jej nie ma, ale za to jest {{Code|nazwa przestrzeni nazw i}}, bo ona występuje jako parametr domyślny ogólny dla parametrów numerkowych. Tytaj jest używana jest zmienna {{Code|nazwa jednostki 2}} do wygenerowania ostatecznego wyniku, bo jak można zauważyć, parametry przestrzenne wskazują na przestrzeń główną, a nazwy jednostek już nie. Dla parametrów bazowych mamy zmienną {{Code|nazwa przestrzeni nazw}}, ona jest pusta, więc to zostanie wziete do ostatecznego wyniku. Przykłady w wikikodzie: * {{Code|{{m|Pudełko|Nazwa przedmiotowej przestrzeni nazw 3|nazwa przestrzeni nazw{{=}}|nazwa jednostki{{=}}Dyskusja Wikibooks:Strona}}}} → {{Tt|{{#invoke:Pudełko|Nazwa przedmiotowej przestrzeni nazw 3|nazwa przestrzeni nazw=|nazwa jednostki=Dyskusja Wikibooks:Szablon}}}} * {{Code|{{m|Pudełko|Nazwa przedmiotowej przestrzeni nazw 3|nazwa przestrzeni nazw 2{{=}}|nazwa jednostki 2{{=}}Dyskusja Wikibooks:Strona|numer jednostki{{=}}2}}}} → {{Tt|{{#invoke:Pudełko|Nazwa przedmiotowej przestrzeni nazw 3|nazwa przestrzeni nazw 2=|nazwa jednostki 2=Dyskusja Wikibooks:Szablon|numer jednostki=2}}}} Powyżej dla przykładu podano parametry nie w rodzicu w szablonie, tylko w dziecku, jeśli chodzi o parametry nazw przestrzeni nazw, ale ich się za to nie powinno podawać w tych ramach, tylko w szablonach, w których wywoływane są te ramki pudełek {{Code|{{m|Pudełko}}}}, ale tak tutaj tak zrobiono by było najłatwiej sprawdzić działanie tego typu funkcji. Analogicznie możemy podawać parametry typu jednostki, np.: wywołaniu modułowym {{Code|{{m|Pudełko|Nazwa przedmiotowej przestrzeni nazw 3|typ jednostki 2{{=}}strona szablonu|numer jednostki{{=}}2}}}}, ale o tym więcej w rozdziałach {{Code|{{sr|# p["Przedmiotowy typ jednostki 3"](frame,i)|p=Pudełko}}}} w „{{sr|#Funkcje typu jednostki|p=Pudełko}}”, ale wtedy ta sama nazwa przestrzeni nazw reprezentowana przez {{Parametr|typ jednostki 2|strona szablonu}}, jest zamieniana na to samo, lepiej jest tutaj używać parametrów przestrzennych nazw niż typu jednostki, bo typ jednostki ma taką samą wartość dla przestrzeni przedmiotowej, co dyskusji. Tutaj parametr dyskusji typu jednostki bazowy i numerkowy ogólny, czy szczegółowy, nie gra roli, bo nawet, gdy wygenerujemy nazwę przestrzeni dyskusji za pomoca tego parametru, to i tak otrzymamy na samym końcu jego nazwę przedmiotową. Jeżeli typ jednostki bazowy wskazuje na przestrzeń nazw główną, wtedy się nie liczą parametry nazw jednostek, a na numerkowy, wtedy się liczy. Również parametry typu jednostki nie powinno się podawać w dziecku w ramce, tylko w rodzicu w szablonie jako parametry, w którym ta ramka jest wywoływana, ale tutaj podano jedynie dla przykładu, jak najłatwiej sprawdzić działanie tych parametrów tej funkcji. Najpierw w funkcji nagłówku brane są parametry nazw przestrzeni nazw, a jeżeli ich nie ma, to parametry typu jednostki, a jeżeli nie ma, to generowane są nazwy na podstawie aktualnego modułu. === {{Code|p["Nazwa przestrzeni nazw dyskusji 3"](frame,i)}} === Funkcja pisze nazwę przestrzeni nazw dyskusji jakikolwiek nazwy przestrzeni nazw (tzn. nazwę dyskusji nazwy przestrzenie nazw, czyli nie przedmiotowej, zamieniana jest na nią samą, czyli identyfikator przestrzeni się nie zmienia, a przedmiotową, nie dyskusji, przekształca się na dyskusji jej odpowiadającą, czyli w tym przypadku identyfikator przestrzeni zwiększa się o numer więcej), według, i nie zawsze tylko, podanej w zmiennej {{Code|nazwa przestrzeni nazw}} dla pozycja bazowej w podanych parametrach szablonu rodzicu ramki dziecka, lub dla innej pozycji należy parametr podawać w formie {{Code|nazwa przestrzeni nazw 1}}, {{Code|nazwa przestrzeni nazw 2}}, {{Code|nazwa przestrzeni nazw 3}},..., lub te parametry można podać w postaci ogólnej {{Code|nazwa przestrzeni nazw i}}. W tej funkcji trzeba też podawać parametry nazwy jednostek {{Code|nazwa jednostki}}, {{Code|nazwa jednostki 1}}, {{Code|nazwa jednostki 2}}, {{Code|nazwa jednostki 3}},... Parametry podaje się w parametrach rodzica wywołania tej funkcji {{Code|{{m|Pudełko|Nazwa przestrzeni nazw dyskusji 3}}}} (ale ich nie trzeba podawać w dziecku, ale można) i w parametrach dziecka, jeśli chodzi o zmienną {{Code|numer jednostki}}, czyli np.: {{Code|{{m|Pudełko|Nazwa przestrzeni nazw dyskusji 3|numer jednostki{{=}}<jakaś liczba całkowita dodatnia>}}}}. Te parametry przestrzenne zamiast w rodzicu w szablonie można podać w ramce dziecka, wtedy parametry dziecka mają pierwszeństwo. Przestrzeń nazw z parametrów nazw przestrzennych bazowych (bez numerka) może odpowiadać wartości przestrzeni głównej, to wtedy odpowiednia przestrzeń nazw z parametru nazwy jednostki się nie liczy w tej funkcji, aby się liczyła należy użyć funkcji {{Code|{{sr|#p["Nazwa przestrzeni nazw dyskusji 2"](frame,...)|p=Pudełko}}}}. W tym przypadku funkcja działa jak {{Code|{{sr|#p["Nazwa przestrzeni nazw dyskusji"](frame,...)|p=Pudełko}}}}. Przestrzeń nazw z parametrów nazw przestrzennych numerkowych może odpowiadać wartości przestrzeni głównej, to wtedy odpowiednia przestrzeń nazw z parametru nazwy jednostki się liczy w tej funkcji, wtedy jest liczona nazwa przestrzeni nazw z tego parametru. Gdy parametry przestrzenne lub typ jednostki w drugim podejściu nie wskazują na przestrzeń główną, to wtedy działanie tej funkcji jest podobne do {{Code|{{sr|#p["Nazwa przestrzeni nazw dyskusji 2"](frame,...)|p=Pudełko}}}}. Definicja skrótowa funkcji: <syntaxhighlight lang="lua"> p["Nazwa przestrzeni nazw dyskusji 3"]=function(frame,czy_uwzglednic_alternatywna_nazwe,i)...end; </syntaxhighlight> Wtedy ciało funkcji tej, czyli jego definicja w środku, jest: <syntaxhighlight lang="lua"> -- Jest liczony numer parametru nazwy przestrzeni nazw, domyslnie chodzi tu o numer bazowy parametrów przestrzennych; local numer_jednostki=i or frame.args["numer jednostki"]; local liczba_numeru_jednostki=((numer_jednostki)and(tonumber(numer_jednostki)) or 0); local pudelko_pomocne_modul=require("Module:Pudełko/Pomocne"); -- Liczy nazwę przestrzeni nazw dyskusji na podstawie podanych parametrów; return pudelko_pomocne_modul.Uzyskanie_nazw_jednostki(frame,2,liczba_numeru_jednostki,nil,1); </syntaxhighlight> Parametry funkcji: * {{Code|frame}} - tablica ramki tablicy transportu, * {{Code|czy_uwzglednic_alternatywna_nazwe}} - czy ma uwzględniać nazwę przestrzeni nazw domyślną szablonu, dostępne wartości: {{Code|false}}, w której nazwa domyślna nie jest uwzględniana wtedy, oraz {{Code|nil}} i {{Code|true}}, które oznaczają to samo, w tym jeżeli ona jest uwzględniana, wtedy jest brany parametr pierwszy dziecka, który musi istnieć przy takiej wartości tego parametru, tzn. {{Code|{{m|Pudełko|Nazwa przestrzeni nazw dyskusji 3|Szablon}}}}, a nazwa uzyskana nazwy przestrzeni nazw jest w takim przypadku błędna, a jeżeli nazwa domyślna jest błędna, czyli {{Code|{{m|Pudełko|Nazwa przestrzeni nazw dyskusji 3|Moja przestrzeń}}}}, wtedy funkcja zwraca stan błędu {{Code|(błąd)}}. * {{Code|i}} - numer zmiennej nazwy przestrzeni nazw. Funkcja wykorzystuje {{Code|{{sr|#p.Uzyskanie_nazw_jednostki(frame,...)|p=Pudełko/Pomocne}}}} do wyznaczania ogólnego nazwy przestrzeni nazw dla pozycji bazowej i numerkowej, tzn. dla pozycji: jeden, dwa, trzy,..., itd, i ich ogólnej. Parametr ramki tablicy transportu rodzica szablonu: * {{Code|nazwa przestrzeni nazw}}, {{Code|nazwa przestrzeni nazw 1}}, {{Code|nazwa przestrzeni nazw 2}}, {{Code|nazwa przestrzeni nazw 3}},..., {{Code|nazwa przestrzeni nazw i}} - nazwy przestrzeni nazw dla pozycji bazowej oraz zwykłej i ogólnej numerkowej, * {{Code|nazwa jednostki}}, {{Code|nazwa jednostki 1}}, {{Code|nazwa jednostki 2}}, {{Code|nazwa jednostki 3}},... - nazwy jednostek dla pozycji bazowej i numerkowej, * {{Code|typ jednostki}}, {{Code|typ jednostki 1}}, {{Code|typ jednostki 2}}, {{Code|typ jednostki 3}},..., {{Code|typ jednostki i}} - typy jednostek, którym odpowiadają pewne przestrzenie przedmiotowe, dla pozycji bazowej, numerkowej i ogólnej. Parametry ramki tablicy transportu dziecka: * Parametry dziecka są takie same jak rodzica dla funkcji pudełkowej plus tu wymienione, * {{Code|numer jednostki}} - jak parametr {{Code|i}} nie został ustawiony, to wtedy liczy się ta zmienna. Przykłady: <syntaxhighlight lang="mediawiki"> {{Nazwa szablonu 1|nazwa przestrzeni nazw=Wikibooks|nazwa przestrzeni nazw=|nazwa przestrzeni nazw i=|nazwa jednostki=Szablon:Strona}} ---- {{Nazwa szablonu 2|nazwa przestrzeni nazw=Wikibooks|nazwa przestrzeni nazw 1=Szablon|nazwa przestrzeni nazw i=|nazwa jednostki 2=Wikibooks:Strona}} </syntaxhighlight> W pierwszym wywołaniu {{Code|nazwa przestrzeni nazw}} jest puste, ale dla tego bazowego (bez numerka) szukamy przestrzeni nazw, a więc ta nazwa jest ostateczna. ---- W drugim wywołaniu w dziecku powiedzmy jest wywołanie, i szukamy nazwy przestrzeni nazw o numerze dwa, która została podana, ale istnieje za to jej wersji ogólna {{Code|nazwa przestrzeni nazw i}} i domyślna {{Code|nazwa przestrzeni nazw}}, ale wtedy dla tego numerkowego liczy się to ogólne z {{Code| i}}, a ponieważ ta nazwa jest pusta, więc będziemy liczyli nazwę przestrzeni nazw z {{Code|nazwa jednostki 2}}. Odpowiadająca powyższemu kodowi, powiedzmy wikikod, według ich zawartości, przedstawia się: <syntaxhighlight lang="mediawiki"> {{#invoke:Pudełko|Nazwa przestrzeni nazw 3}} ---- {{#invoke:Pudełko|Nazwa przestrzeni nazw 3|numer jednostki=2}} </syntaxhighlight> Na podstawie powyższego przykładu otrzymamy wynik o schemacie, nie wyniku, bo tam nie ma zmiennej {{Code|nazwa przestrzeni nazw 1}}, ale jest {{Code|nazwa przestrzeni nazw i}}: <syntaxhighlight lang="mediawiki"> <!-- nazwa przestrzeni nazw=""; --> <!-- Czyli wynik: --> Dyskusja <!-- Widzimy, że wygenerowała się nazwa przestrzeni nazw, którą jest przestrzeń nazw niegłówna, jest ciągiem niepustym; --> ---- <!-- Ale nie "nazwa przestrzeni nazw 2", bo jej nie ma, ale za to istnieje "nazwa przestrzeni nazw i"; --> <!-- nazwa przestrzeni nazw 2=nazwa przestrzeni nazw i="", a nazwa jednostki 2="Wikibooks:Strona"; --> <!-- Czyli wynik: --> Dyskusja Wikibooks <!-- Widzimy, że wygenerowała się nazwa przestrzeni nazw, którą jest przestrzeń nieprogramowa, ale projektu, wychodząca z nazwy jednostek w tym przypadku z "nazwa jednostki 2"; --> </syntaxhighlight> Dla parametrów numerkowych nie jest brana w tym powyższym przykładzie zmienna {{Code|nazwa przestrzeni nazw 2}}, bo jej nie ma, ale za to jest {{Code|nazwa przestrzeni nazw i}}, bo ona występuje jako parametr domyślny ogólny dla parametrów numerkowych. Tytaj jest używana jest zmienna {{Code|nazwa jednostki 2}} do wygenerowania ostatecznego wyniku, bo jak można zauważyć, parametry przestrzenne wskazują na przestrzeń główną, a nazwy jednostek już nie. Dla parametrów bazowych mamy zmienną {{Code|nazwa przestrzeni nazw}}, ona jest pusta, więc to zostanie wziete do ostatecznego wyniku. Przykłady w wikikodzie: * {{Code|{{m|Pudełko|Nazwa przestrzeni nazw dyskusji 3|nazwa przestrzeni nazw{{=}}|nazwa jednostki{{=}}Wikibooks:Strona}}}} → {{Tt|{{#invoke:Pudełko|Nazwa przestrzeni nazw dyskusji 3|nazwa przestrzeni nazw=|nazwa jednostki=Wikibooks:Szablon}}}} * {{Code|{{m|Pudełko|Nazwa przestrzeni nazw dyskusji 3|nazwa przestrzeni nazw 2{{=}}|nazwa jednostki 2{{=}}Wikibooks:Strona|numer jednostki{{=}}2}}}} → {{Tt|{{#invoke:Pudełko|Nazwa przestrzeni nazw dyskusji 3|nazwa przestrzeni nazw 2=|nazwa jednostki 2=Wikibooks:Szablon|numer jednostki=2}}}} Powyżej dla przykładu podano parametry nie w rodzicu w szablonie, tylko w dziecku, jeśli chodzi o parametry nazw przestrzeni nazw i nazw jednostek, ale ich się za to nie powinno podawać w tych ramach, tylko w szablonach, w których wywoływane są te ramki pudełek {{Code|{{m|Pudełko}}}}, ale tak tutaj tak zrobiono by było najłatwiej sprawdzić działanie tego typu funkcji. Analogicznie możemy podawać parametry typu jednostki, np.: wywołaniu modułowym {{Code|{{m|Pudełko|Nazwa przestrzeni nazw dyskusji 3|typ jednostki 2{{=}}Podręcznik|nazwa jednostki 2{{=}}Szablon:Strona|numer jednostki{{=}}2}}}} (ale wtedy jest brana przestrzeń nazw z nazwy jednostki), ale o tym więcej w rozdziałach {{Code|{{sr|# p["Dyskusyjny typ jednostki 3"](frame,i)|p=Pudełko}}}} w „{{sr|#Funkcje typu jednostki|p=Pudełko}}”, one definiują przestrzenie dyskusji, ale można użyć parametru dyskusji typu jednostki z obojętnie jaką wartością niepustą, czy pustą, czy nawet jej nie podamy, wtedy wyświetli się nazwa przestrzeni nazw dyskusji. Jeżeli typ jednostki bazowy wskazuje na przestrzeń nazw główną, wtedy się nie liczą parametry nazw jednostek, a na numerkowy, wtedy się liczy. Również parametry typu jednostki nie powinno się podawać w dziecku w ramce, tylko w rodzicu w szablonie jako parametry, w którym ta ramka jest wywoływana, ale tutaj podano jedynie dla przykładu, jak najłatwiej sprawdzić działanie tych parametrów tej funkcji. Najpierw w funkcji nagłówku brane są parametry nazw przestrzeni nazw, a jeżeli ich nie ma, to parametry typu jednostki, a jeżeli nie ma lub parametry przestrzenne wskazują na przestrzeń główną, i nie ma nazwy jednostki, to generowane są nazwy tej funkcji na podstawie aktualnej strony. == Funkcje nazw jednostki trzeciej wersji == === {{Code|p["Nazwa jednostki 3"](frame,i)}} === === {{Code|p["Nazwa przedmiotowa jednostki 3"](frame,i)}} === === {{Code|p["Nazwa dyskusji jednostki 3"](frame,i)}} === == Funkcje typu jednostki == === {{Code|p["Typ jednostki"](frame,i)}} === === {{Code|p["Typ jednostki 2"](frame,i)}} === === {{Code|p["Typ jednostki 3"](frame,i)}} === === Funkcje typu jednostki przedmiotowe === ==== {{Code|p["Przedmiotowy typ jednostki"](frame,i)}} ==== ==== {{Code|p["Przedmiotowy typ jednostki 2"](frame,i)}} ==== ==== {{Code|p["Przedmiotowy typ jednostki 3"](frame,i)}} ==== === Fukcje typu jednostki dyskusji === ==== {{Code|p["Dyskusyjny typ jednostki"](frame,i)}} ==== ==== {{Code|p["Dyskusyjny typ jednostki 2"](frame,i)}} ==== ==== {{Code|p["Dyskusyjny typ jednostki 3"](frame,i)}} ==== == Funkcje chech pudełka == === {{Code|p["Cecha pudełka"](frame)}} === === {{Code|p["Przedmiotowa cecha pudełka"](frame)}} === === {{Code|p["Dyskusyjna cecha pudełka"](frame)}} === == Fukcje ogólnego pudełka == === {{Code|p["Ogólne pudełko"](frame)}} === == Funkcje ogólne == === {{Code|p["Tekst pudełka"](frame)}} === == Funkcje błędów pudełka == === {{Code|p["Błędy pudełka"](frame)}} === === {{Code|p["Przedmiotowe błędy pudełka"](frame)}} === === {{Code|p["Dyskusyjne błędy pudełka"](frame)}} === == Funkcje nazw stron == === {{Code|p["Nazwa strony głównej projektu"](frame,i)}} === === {{Code|p["Nazwa strony głównej dla dzieci projektu"](frame,i)}} === == Funkcje kodów == === {{Code|p["Kod języka"](frame,i)}} === === {{Code|p["Kod projektu"](frame,i)}} === === {{Code|p["Klucz projektu"](frame,i)}} === == Funkcje wiki == === {{Code|p["Inny niż język bieżący wiki"](frame)}} === === {{Code|p["Inne niż lokalne wiki"](frame)}} === === {{Code|p["Inne niż bieżące wiki"](frame)}} === == Funkcje typów parametrów, czy podane je == === {{Code|p["Podano parametry nienazwane"](frame)}} === === {{Code|p["Podano parametry numerowane"](frame)}} === === {{Code|p["Podano parametry nazwane"](frame)}} === == Funkcje kodów tego projektu == === {{Code|p["Kod projektu tego projektu"](frame)}} === === {{Code|p["Kod języka tego projektu"](frame)}} === === {{Code|p["Klucz projektu tego projektu"](frame)}} === == Funkcje stron == === {{Code|p["Strona główna tego projektu"](frame)}} === === {{Code|p["Strona główna dla dzieci tego projektu"](frame)}} === == Funkcje nazw stron drugiej wersji == === {{Code|p["Nazwa strony głównej dla dzieci projektu 2"](frame)}} === === {{Code| p["Nazwa strony głównej projektu 2"](frame)}} === {{BrClear}} <noinclude><!-- -->{{ProstaStronaKoniec}}<!-- -->{{Kategoria|Opisy funkcji, w Lua w Scribunto, w modułach}}<!-- --></noinclude> e8zy2hapwe6f0tpwpenzuhi5nfnidas 540451 540450 2026-04-24T05:12:46Z Persino 2851 /* Funkcje nazw przestrzeni nazw trzeciej wersji */ 540451 wikitext text/x-wiki <noinclude>{{ProstaStronaStart | nagłówek = {{Podrozdział|{{ld2|Pudełko}}|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 pudelko_modul=require("Module:Pudełko"); </syntaxhighlight> dzięki, któremu można wypisywać funkcje należącego do niego. Posługuje się na parametrach pudełkowych {{Parametr|nazwa przestrzeni nazw}} (czy też bez numerka {{Parametr|nazwa przestrzeni nazw i}} dla tego numerowanego) lub te z numerkiem po jednej spacji w nich (ale nie dla tego z końcówką {{Code| i}}) mogą zostać użyte jako parametry szablonu. Moduł {{Code|{{ld2|Pudełko}}}} przedstawia funkcje nazw w oparciu o funkcje nazw {{Code|{{ld2|Nazwy}}}}, generuje on nazwy za pomocą parametrów pudełkowych podanych poniżej. Parametr {{Parametr|nazwa jednostki}} (lub parametr {{Parametr|cel}} dla numerka tego pierwszego, tego alternatywnego), lub te z numerkiem po jednej spacji w nazwie parametru, albo numerowane numerkami {{Code|1}}, {{Code|2}},..., mogą zostać użyte jako parametry szablonu. Parametry określające rodzaj jednostki {{Parametr|typ jednostki}} z {{Parametr|dyskusja typu jednostki}}, itp. w wersjach z numerkiem po jednej spacji w nich mogą zostać użyte jako parametry szablonu. A te tymi numerowanymi liczbami naturalnymi {{Tt|nazwy jednostki}} od jedynki wzwyż poprzez szablon, w którym są one użyte, one też mogą być użyte z dwukropkiem, te numerowane, na samym początku nazwy, wtedy one są traktowane jako pełne nazwy strony, i wtedy one nie zostaną z interpretowane, że do nich trzeba użyć parametr odpowiedni z nazwą przetrzeni nazw z tego numerowanego, czy ogólny, aby utworzyć znów inną pełną nazwę strony dla tego numerka. Zestawienie: * {{Code|nazwa przestrzeni nazw}} i {{Code|nazwa przestrzeni nazw i}} (ogólna nazwa przestrzeni nazw dla wszystkich numerków, i tych numerowanych jednostek) - i to pierwsze z numerkiem, tzn. {{Code|nazwa przestrzeni nazw 1}}, {{Code|nazwa przestrzeni nazw 2}}, ..., * {{Code|nazwa jednostki}} - i te z numerkiem: {{Code|nazwa jednostki 1}}, {{Code|nazwa jednostki 2}}, ..., lub gdy jest zamiast tego parametrem numerowany, {{Code|1}}, {{Code|2}},..., który dla tego pierwszego może być uznany jako: {{Code|cel}} {{=}} {{Code|1}}, * {{Code|typ jednostki}} (parametr bazowy) i {{Code|typ jednostki i}} (parametr domyślny numerkowy) - i te z numerkiem: {{Code|typ jednostki 1}}, {{Code|typ jednostki 2}}, ..., tzn. gdy chcemy określić z jakim typem jednostki mamy do czynienia w zależności do jakiej przestrzeni nazw należy, a w danej, czy jest on np. programowy, czy tylko jest opisem, jak to bywa w szablonach {{Np|Template|link=tak}}, podobnie jest w przypadku {{Np|Module|link=tak}}, czy jak jest w innych przestrzeniach nazw, ** {{Code|dyskusja typu jednostki}} (parametr bazowy) i {{Code|dyskusja typu jednostki i}} (parametr domyślny numerkowy) - i te z numerkiem: {{Code|dyskusja typu jednostki 1}}, {{Code|dyskusja typu jednostki 2}}, ..., gdy chcemy określić wartością niepustą,że chodzi tutaj o typ jednostki. == {{Code|p.CzyNiepoprawnaNazwa(nazwa_jednostki)}} == Funkcja sprawdzajaca, czy jest poprawnie podana nazwa jednostki, czy ma poprawną nazwę. Znakami tymi, z których nie powinna składać się nazwa jest {{Code|<nowiki>{}<>|[]#\n</nowiki>}} i dodatkowo znak {{Code|&#127;}} (kod {{Code|{{Nowiki|&#127;}}}}). Też nie może składać się z trzech znaków tyldy, tzn. {{Code|<nowiki>~~~</nowiki>}}. Również w swojej budowie nie może składać się ze kodów {{Strong|HTML}} literowych o wzorze {{Code|{{Nowiki|&(%a+);}}}}. Natomiast może składać się z {{Code|{{Nowiki|&#(%d+);}}}} i {{Code|{{Nowiki|&#x(%x+);}}}}, ale w pierw te kody muszą być zamienione na normalne znaki. Skrótowa definicja funkcji: <syntaxhighlight lang="lua"> function p.CzyNiepoprawnaNazwa(nazwa_jednostki)...end; </syntaxhighlight> Wtedy ciało funkcji tej, czyli jego definicja w środku, jest: <syntaxhighlight lang="lua"> -- Moduł: "Moduł:Html/dane", służy do ładowania znaku o kodzie HTML "&#127;"; local html_dane_modul=mw.loadData("Module:Html/dane"); return mw.ustring.match(nazwa_jednostki,"[{}<>|%[%]#\n"..html_dane_modul.znak_127.."]+") or mw.ustring.match(nazwa_jednostki,"~~~") or mw.ustring.match(nazwa_jednostki,"&(%a+);"); </syntaxhighlight> Parametry: * {{Code|nazwa_jednostki}} - nazwa jednostki do sprawdzenia. Przykłady: <syntaxhighlight lang="lua"> local pudelko_modul=require("Module:Pudełko"); -- Podana przykładowa niepoprawna nazwa jedostki local nazwa_jednostki="Nazwa pliku [[Nazwa linku w pliku]]"; -- Fukcja zwróci wartość: local czy_poprawna_nazwa=true; local czy_poprawna_nazwa=pudelko_modul.CzyNiepoprawnaNazwa(nazwa_jednostki); </syntaxhighlight> == Funkcje nazw przestrzeni nazw == === {{Code|p["Nazwa przestrzeni nazw"](frame,...)}} === Funkcja pisze nazwę przestrzeni nazw, niezależnie, czy to jest przedmiotowa, czy dyskusji, według podanej w zmiennej {{Code|nazwa przestrzeni nazw}} dla pozycja bazowej w podanych parametrach szablonu rodzicu ramki dziecka, lub dla innej pozycji należy parametr podawać w formie {{Code|nazwa przestrzeni nazw 1}}, {{Code|nazwa przestrzeni nazw 2}}, {{Code|nazwa przestrzeni nazw 3}},..., lub te parametry można podać w postaci ogólnej {{Code|nazwa przestrzeni nazw i}}. Parametry podaje się w parametrach rodzica wywołania tej funkcji {{Code|{{m|Pudełko|Nazwa przestrzeni nazw}}}} (ale ich nie trzeba podawać w dziecku, ale można) i w parametrach dziecka, jeśli chodzi o zmienną {{Code|numer jednostki}}, czyli np.: {{Code|{{m|Pudełko|Nazwa przestrzeni nazw|numer jednostki{{=}}<jakaś liczba całkowita dodatnia>}}}}. Te parametry przestrzenne zamiast w rodzicu w szablonie można podać w ramce dziecka, wtedy parametry dziecka mają pierwszeństwo. Przestrzeń nazw z parametrów nazw przestrzennych może odpowiadać wartości przestrzeni głównej, to wtedy odpowiednia przestrzeń nazw z parametru nazwy jednostki się nie liczy w tej funkcji, aby się liczyła należy użyć funkcji {{Code|{{sr|#p["Nazwa przestrzeni nazw 2"](frame,...)|p=Pudełko}}}}. Definicja skrótowa funkcji: <syntaxhighlight lang="lua"> p["Nazwa przestrzeni nazw"]=function(frame,czy_uwzglednic_alternatywna_nazwe,i)...end; </syntaxhighlight> Wtedy ciało funkcji tej, czyli jego definicja w środku, jest: <syntaxhighlight lang="lua"> -- Jest liczony numer parametru nazwy przestrzeni nazw, domyslnie chodzi tu o numer bazowy parametrów przestrzennych; local numer_jednostki=i or frame.args["numer jednostki"]; local liczba_numer_jednostki=((numer_jednostki)and(tonumber(numer_jednostki))or 0); local pudelko_pomocne_modul=require("Module:Pudełko/Pomocne"); -- Liczy nazwę przestrzeni nazw na podstawie podanych parametrów; return pudelko_pomocne_modul.Nazwa_przestrzeni_nazw(frame,0, czy_uwzglednic_alternatywna_nazwe,liczba_numer_jednostki); </syntaxhighlight> Parametry funkcji: * {{Code|frame}} - tablica ramki tablicy transportu, * {{Code|czy_uwzglednic_alternatywna_nazwe}} - czy ma uwzględniać nazwę przestrzeni nazw domyślną szablonu, dostępne wartości: {{Code|false}}, w której nazwa domyślna nie jest uwzględniana wtedy, oraz {{Code|nil}} i {{Code|true}}, które oznaczają to samo, w tym jeżeli ona jest uwzględniana, wtedy jest brany parametr pierwszy dziecka, który musi istnieć przy takiej wartości tego parametru, tzn. {{Code|{{m|Pudełko|Nazwa przestrzeni nazw|Szablon}}}}, a nazwa uzyskana nazwy przestrzeni nazw jest w takim przypadku błędna, a jeżeli nazwa domyślna jest błędna, czyli {{Code|{{m|Pudełko|Nazwa przestrzeni nazw|Moja przestrzeń}}}}, wtedy funkcja zwraca stan błędu {{Code|(błąd)}}. * {{Code|i}} - numer zmiennej nazwy przestrzeni nazw. Funkcja wykorzystuje {{Code|{{sr|#p.Nazwa_przestrzeni_nazw(frame,...)|p=Pudełko/Pomocne}}}} do wyznaczania ogólnego nazwy przestrzeni nazw dla pozycji bazowej i numerkowej, tzn. dla pozycji: jeden, dwa, trzy,..., itd, i ich ogólnej. Parametr ramki tablicy transportu rodzica szablonu: * {{Code|nazwa przestrzeni nazw}}, {{Code|nazwa przestrzeni nazw 1}}, {{Code|nazwa przestrzeni nazw 2}}, {{Code|nazwa przestrzeni nazw 3}},..., {{Code|nazwa przestrzeni nazw i}} - nazwy przestrzeni nazw dla pozycji bazowej oraz zwykłej i ogólnej numerkowej, * {{Code|typ jednostki}}, {{Code|typ jednostki 1}}, {{Code|typ jednostki 2}}, {{Code|typ jednostki 3}},..., {{Code|typ jednostki i}} - typy jednostek, którym odpowiadają pewne przestrzenie przedmiotowe, dla pozycji bazowej, numerkowej i ogólnej, ** {{Code|dyskusja typu jednostki}}, {{Code|dyskusja typu jednostki 1}}, {{Code|dyskusja typ jednostki 2}}, {{Code|dyskusja typ jednostki 3}},..., {{Code|dyskusja typ jednostki i}} - czy dany typ jednostki ma przedstawiać, jeśli niepusta, przestrzeń dyskusji dla pozycji bazowej, numerkowej i ogólnej. Parametry ramki tablicy transportu dziecka: * Parametry dziecka są takie same jak rodzica dla funkcji pudełkowej plus tu wymienione, * {{Code|numer jednostki}} - jak parametr {{Code|i}} nie został ustawiony, to wtedy liczy się ta zmienna. Przykłady: <syntaxhighlight lang="mediawiki"> {{Nazwa szablonu|nazwa przestrzeni nazw=Wikibooks|nazwa przestrzeni nazw 2=Szablon|nazwa przestrzeni nazw i=Moduł}} </syntaxhighlight> W dziecku powiedzmy jest wywołanie, i szukamy nazwy przestrzeni nazw o numerze dwa, która nie została podana, ale istnieje za to jej wersji ogólna {{Code|nazwa przestrzeni nazw i}} i domyślna {{Code|nazwa przestrzeni nazw}}: <syntaxhighlight lang="mediawiki"> {{#invoke:Pudełko|Nazwa przestrzeni nazw|numer jednostki=1}} </syntaxhighlight> Na podstawie powyższego przykładu otrzymamy wynik o schemacie, nie wyniku, bo tam nie ma zmiennej {{Code|nazwa przestrzeni nazw 1}}, ale jest {{Code|nazwa przestrzeni nazw i}}: <syntaxhighlight lang="mediawiki"> <!-- Ale nie "nazwa przestrzeni nazw", bo jej nie ma, ale za to istnieje "nazwa przestrzeni nazw i"; --> <!-- nazwa przestrzeni nazw 2=nazwa przestrzeni nazw i=Moduł; --> <!-- Czyli wynik: --> Moduł <!-- Widzimy, że wygenerowała się nazwa przestrzeni nazw, którą jest przestrzeń programowa, którą również jest "Szablon"; --> </syntaxhighlight> Nie jest brana w tym powyższym przykładzie zmienna {{Code|nazwa przestrzeni nazw}}, bo jej nie ma, ale za to jest {{Code|nazwa przestrzeni nazw i}}, bo ona występuje jako parametr domyślny ogólny dla parametrów numerkowych. Przykłady w wikikodzie: * {{Code|{{m|Pudełko|Nazwa przestrzeni nazw|numer jednostki{{=}}2}}}} → {{Tt|{{#invoke:Pudełko|Nazwa przestrzeni nazw|numer jednostki=2}}}} * {{Code|{{m|Pudełko|Nazwa przestrzeni nazw|Szablon|nazwa przestrzeni nazw i{{=}}Moja przestrzeń|numer jednostki{{=}}2}}}} → {{Tt|{{#invoke:Pudełko|Nazwa przestrzeni nazw|Szablon|nazwa przestrzeni nazw i=Moja przestrzeń|numer jednostki=2}}}} * {{Code|{{m|Pudełko|Nazwa przestrzeni nazw|nazwa przestrzeni nazw 2{{=}}Szablon|numer jednostki{{=}}2}}}} → {{Tt|{{#invoke:Pudełko|Nazwa przestrzeni nazw|nazwa przestrzeni nazw 2=Szablon|numer jednostki=2}}}} * {{Code|{{m|Pudełko|Nazwa przestrzeni nazw|nazwa przestrzeni nazw 2{{=}}Szablon|numer jednostki{{=}}2}}}} → {{Tt|{{#invoke:Pudełko|Nazwa przestrzeni nazw|nazwa przestrzeni nazw i=Szablon|numer jednostki=2}}}} * {{Code|{{m|Pudełko|Nazwa przestrzeni nazw|nazwa przestrzeni nazw{{=}}Szablon|numer jednostki{{=}}2}}}} → {{Tt|{{#invoke:Pudełko|Nazwa przestrzeni nazw|nazwa przestrzeni nazw=Szablon|numer jednostki=2}}}} Powyżej dla przykładu podano parametry nie w rodzicu w szablonie, tylko w dziecku, jeśli chodzi o parametry nazw przestrzeni nazw, ale ich się za to nie powinno podawać w tych ramach, tylko w szablonach, w których wywoływane są te ramki pudełek {{Code|{{m|Pudełko}}}}, ale tak tutaj tak zrobiono by było najłatwiej sprawdzić działanie tego typu funkcji. Analogicznie możemy podawać parametry typu jednostki, np.: wywołaniu modułowym {{Code|{{m|Pudełko|Nazwa przestrzeni nazw|typ jednostki 2{{=}}strona szablonu|numer jednostki{{=}}2}}}}, ale o tym więcej w rozdziałach {{Code|{{sr|# p["Typ jednostki"](frame,i)|p=Pudełko}}}} w „{{sr|#Funkcje typu jednostki|p=Pudełko}}”, on definiuje przestrzenie przedmiotowe, ale można użyć parametru dyskusji typu jednostki z wartością niepustą, wtedy wyświetli się nazwa przestrzeni nazw dyskusji. Również parametry typu jednostki nie powinno się podawać w dziecku w ramce, tylko w rodzicu w szablonie jako parametry, w którym ta ramka jest wywoływana, ale tutaj podano jedynie dla przykładu, jak najłatwiej sprawdzić działanie tych parametrów tej funkcji. Najpierw w funkcji nagłówku brane są parametry nazw przestrzeni nazw, a jeżeli ich nie ma, to parametry typu jednostki, a jeżeli nie ma, to generowane są nazwy na podstawie aktualnego modułu. === {{Code|p["Nazwa przedmiotowej przestrzeni nazw"](frame,...)}} === Funkcja pisze przedmiotową nazwę przestrzeni nazw jakikolwiek nazwy przestrzeni nazw (tzn. nazwę przedmiotową nazwy przestrzenie nazw, czyli nie dyskusji, zamieniana jest na nią samą, czyli identyfikator przestrzeni się nie zmienia, a dyskusji, nie przedmiotową, przekształca się na przedmiotową jej odpowiadającą, czyli w tym przypadku identyfikator przestrzeni zmniejsza się o numer mniej), według podanej w zmiennej {{Code|nazwa przestrzeni nazw}} dla pozycja bazowej w podanych parametrach szablonu rodzicu ramki dziecka, lub dla innej pozycji należy parametr podawać w formie {{Code|nazwa przestrzeni nazw 1}}, {{Code|nazwa przestrzeni nazw 2}}, {{Code|nazwa przestrzeni nazw 3}},..., lub te parametry można podać w postaci ogólnej {{Code|nazwa przestrzeni nazw i}}. Parametry podaje się w parametrach rodzica wywołania tej funkcji {{Code|{{m|Pudełko|Nazwa przedmiotowej przestrzeni nazw}}}} (ale ich nie trzeba podawać w dziecku, ale można) i w parametrach dziecka, jeśli chodzi o zmienną {{Code|numer jednostki}}, czyli np.: {{Code|{{m|Pudełko|Nazwa przedmiotowej przestrzeni nazw|numer jednostki{{=}}<jakaś liczba całkowita dodatnia>}}}}. Te parametry przestrzenne zamiast w rodzicu w szablonie można podać w ramce dziecka, wtedy parametry dziecka mają pierwszeństwo. Parametry przestrzenne mogą mogą być podane w postaci przestrzeni przedmiotowej lub dyskusji, ale ta funkcja zawsze ją zamienia na przedmiotową. Przestrzeń nazw z parametrów nazw przestrzennych może odpowiadać wartości przestrzeni głównej, to wtedy odpowiednia przestrzeń nazw z parametru nazwy jednostki się nie liczy w tej funkcji, aby się liczyła należy użyć funkcji {{Code|{{sr|#p["Nazwa przedmiotowej przestrzeni nazw 2"](frame,...)|p=Pudełko}}}}. Definicja skrótowa funkcji: <syntaxhighlight lang="lua"> p["Nazwa przedmiotowej przestrzeni nazw"]=function(frame,czy_uwzglednic_alternatywna_nazwe,i)...end; </syntaxhighlight> Wtedy ciało funkcji tej, czyli jego definicja w środku, jest: <syntaxhighlight lang="lua"> -- Jest liczony numer parametru nazwy przestrzeni nazw, domyslnie chodzi tu o numer bazowy parametrów przestrzennych; local numer_jednostki=i or frame.args["numer jednostki"]; local liczba_numer_jednostki=((numer_jednostki)and(tonumber(numer_jednostki))or 0); local pudelko_pomocne_modul=require("Module:Pudełko/Pomocne"); -- Liczy nazwę przestrzeni nazw przedmiotową na podstawie podanych parametrów; return pudelko_pomocne_modul.Nazwa_przestrzeni_nazw(frame,1, czy_uwzglednic_alternatywna_nazwe,liczba_numer_jednostki); </syntaxhighlight> Parametry funkcji: * {{Code|frame}} - tablica ramki tablicy transportu, * {{Code|czy_uwzglednic_alternatywna_nazwe}} - czy ma uwzględniać nazwę przestrzeni nazw domyślną szablonu, dostępne wartości: {{Code|false}}, w której nazwa domyślna nie jest uwzględniana wtedy, oraz {{Code|nil}} i {{Code|true}}, które oznaczają to samo, w tym jeżeli ona jest uwzględniana, wtedy jest brany parametr pierwszy dziecka, który musi istnieć przy takiej wartości tego parametru, tzn. {{Code|{{m|Pudełko|Nazwa przedmiotowej przestrzeni nazw|Dyskusja szablonu}}}} - ta nazwa domyślna zostanie zamieniona na przedmiotową, a jak ona by była przedmiotowa, to żadnej zamiany by nie było, a nazwa uzyskana z nazwy przestrzeni nazw z parametrów przestrzennych jest w takim przypadku błędna, to w takim razie brany jest ten parametr, a jeżeli ta nazwa domyślna jest błędna, czyli {{Code|{{m|Pudełko|Nazwa przedmiotowej przestrzeni nazw|Moja przestrzeń}}}}, wtedy funkcja zwraca stan błędu {{Code|(błąd)}}. * {{Code|i}} - numer zmiennej nazwy przestrzeni nazw. Funkcja wykorzystuje {{Code|{{sr|#p.Nazwa_przestrzeni_nazw(frame,...)|p=Pudełko/Pomocne}}}} do wyznaczania ogólnego nazwy przestrzeni nazw dla pozycji bazowej i numerkowej, tzn. dla pozycji: jeden, dwa, trzy,..., itd, i ich ogólnej. Parametr ramki tablicy transportu rodzica szablonu: * {{Code|nazwa przestrzeni nazw}}, {{Code|nazwa przestrzeni nazw 1}}, {{Code|nazwa przestrzeni nazw 2}}, {{Code|nazwa przestrzeni nazw 3}},..., {{Code|nazwa przestrzeni nazw i}} - nazwy przestrzeni nazw dla pozycji bazowej oraz zwykłej i ogólnej numerkowej, * {{Code|typ jednostki}}, {{Code|typ jednostki 1}}, {{Code|typ jednostki 2}}, {{Code|typ jednostki 3}},..., {{Code|typ jednostki i}} - typy jednostek, którym odpowiadają pewne przestrzenie przedmiotowe, dla pozycji bazowej, numerkowej i ogólnej. Parametry ramki tablicy transportu dziecka: * Parametry dziecka są takie same jak rodzica dla funkcji pudełkowej plus tu wymienione, * {{Code|numer jednostki}} - jak parametr {{Code|i}} nie został ustawiony, to wtedy liczy się ta zmienna. Przykłady: <syntaxhighlight lang="mediawiki"> {{Nazwa szablonu|nazwa przestrzeni nazw=Dyskusja Wikibooks|nazwa przestrzeni nazw 2=Dyskusja szablonu|nazwa przestrzeni nazw i=Dyskusja modułu}} </syntaxhighlight> W dziecku powiedzmy jest wywołanie, i szukamy nazwy przestrzeni nazw o numerze dwa, która nie została podana, ale istnieje za to jej wersji ogólna {{Code|nazwa przestrzeni nazw i}} i domyślna {{Code|nazwa przestrzeni nazw}}: <syntaxhighlight lang="mediawiki"> {{#invoke:Pudełko|Nazwa przedmiotowej przestrzeni nazw|numer jednostki=1}} </syntaxhighlight> Na podstawie powyższego przykładu otrzymamy wynik o schemacie, nie wyniku, bo tam nie ma zmiennej {{Code|nazwa przestrzeni nazw 1}}, ale jest {{Code|nazwa przestrzeni nazw i}}: <syntaxhighlight lang="mediawiki"> <!-- Ale nie "nazwa przestrzeni nazw", bo jej nie ma, ale za to istnieje "nazwa przestrzeni nazw i"; --> <!-- nazwa przestrzeni nazw 2=nazwa przestrzeni nazw i=Dyskusja modułu; --> <!-- Czyli wynik: --> Moduł <!-- Widzimy, że wygenerowała się nazwa przestrzeni nazw, którą jest przestrzeń przedmiotowa programowa przestrzeni dyskusji "Dyskusja modułu", którą również jest "Szablon" jego przestrzeni dyskusji "Dyskusja szablonu", a dla ich przestrzeni przedmiotowej, zamiast dyskusji, to samo przekształca się na to samo; --> </syntaxhighlight> Nie jest brana w tym powyższym przykładzie zmienna {{Code|nazwa przestrzeni nazw}}, bo jej nie ma, ale za to jest {{Code|nazwa przestrzeni nazw i}}, bo ona występuje jako parametr domyślny ogólny dla parametrów numerkowych. Przykłady w wikikodzie: * {{Code|{{m|Pudełko|Nazwa przedmiotowej przestrzeni nazw|numer jednostki{{=}}2}}}} → {{Tt|{{#invoke:Pudełko|Nazwa przedmiotowej przestrzeni nazw|numer jednostki=2}}}} * {{Code|{{m|Pudełko|Nazwa przedmiotowej przestrzeni nazw|Dyskusja szablonu|nazwa przestrzeni nazw i{{=}}Moja przestrzeń|numer jednostki{{=}}2}}}} → {{Tt|{{#invoke:Pudełko|Nazwa przedmiotowej przestrzeni nazw|Dyskusja szablonu|nazwa przestrzeni nazw i=Moja przestrzeń|numer jednostki=2}}}} * {{Code|{{m|Pudełko|Nazwa przedmiotowej przestrzeni nazw|nazwa przestrzeni nazw 2{{=}}Dyskusja szablonu|numer jednostki{{=}}2}}}} → {{Tt|{{#invoke:Pudełko|Nazwa przedmiotowej przestrzeni nazw|nazwa przestrzeni nazw 2=Dyskusja szablonu|numer jednostki=2}}}} * {{Code|{{m|Pudełko|Nazwa przedmiotowej przestrzeni nazw|nazwa przestrzeni nazw 2{{=}}Dyskusja szablonu|numer jednostki{{=}}2}}}} → {{Tt|{{#invoke:Pudełko|Nazwa przedmiotowej przestrzeni nazw|nazwa przestrzeni nazw i=Dyskusja szablonu|numer jednostki=2}}}} * {{Code|{{m|Pudełko|Nazwa przedmiotowej przestrzeni nazw|nazwa przestrzeni nazw{{=}}Dyskusja szablonu|numer jednostki{{=}}2}}}} → {{Tt|{{#invoke:Pudełko|Nazwa przedmiotowej przestrzeni nazw|nazwa przestrzeni nazw=Dyskusja szablonu|numer jednostki=2}}}} Powyżej dla przykładu podano parametry nie w rodzicu w szablonie, tylko w dziecku, jeśli chodzi o parametry nazw przestrzeni nazw, ale ich się za to nie powinno podawać w tych ramach, tylko w szablonach, w których wywoływane są te ramki pudełek {{Code|{{m|Pudełko}}}}, ale tak tutaj tak zrobiono by było najłatwiej sprawdzić działanie tego typu funkcji. Analogicznie możemy podawać parametry typu jednostki, np.: wywołaniu modułowym {{Code|{{m|Pudełko|Nazwa przedmiotowej przestrzeni nazw|typ jednostki 2{{=}}strona szablonu|numer jednostki{{=}}2}}}}, ale o tym więcej w rozdziałach {{Code|{{sr|# p["Przedmiotowy typ jednostki"](frame,i)|p=Pudełko}}}} w „{{sr|#Funkcje typu jednostki|p=Pudełko}}”, ale wtedy ta sama nazwa przestrzeni nazw reprezentowana przez {{Parametr|typ jednostki 2|strona szablonu}}, jest zamieniana na to samo, lepiej jest tutaj używać parametrów przestrzennych nazw niż typu jednostki, bo typ jednostki ma taką samą wartość dla przestrzeni przedmiotowej, co dyskusji. Tutaj parametr dyskusji typu jednostki bazowy i numerkowy ogólny, czy szczegółowy, nie gra roli, bo nawet, gdy wygenerujemy nazwę przestrzeni dyskusji za pomoca tego parametru, to i tak otrzymamy na samym końcu jego nazwę przedmiotową. Również parametry typu jednostki nie powinno się podawać w dziecku w ramce, tylko w rodzicu w szablonie jako parametry, w którym ta ramka jest wywoływana, ale tutaj podano jedynie dla przykładu, jak najłatwiej sprawdzić działanie tych parametrów tej funkcji. Najpierw w funkcji nagłówku brane są parametry nazw przestrzeni nazw, a jeżeli ich nie ma, to parametry typu jednostki, a jeżeli nie ma, to generowane są nazwy na podstawie aktualnego modułu. === {{Code|p["Nazwa przestrzeni nazw dyskusji"](frame,...)}} === Funkcja pisze nazwę przestrzeni nazw dyskusji jakikolwiek nazwy przestrzeni nazw (tzn. nazwę przedmiotową nazwy przestrzenie nazw, czyli nie dyskusji, zamieniana jest na dyskusji, czyli identyfikator przestrzeni się zmienia jeden wyżej, a dyskusji, nie przedmiotową, przekształca się na tą samą), według podanej w zmiennej {{Code|nazwa przestrzeni nazw}} dla pozycja bazowej w podanych parametrach szablonu rodzicu ramki dziecka, lub dla innej pozycji należy parametr podawać w formie {{Code|nazwa przestrzeni nazw 1}}, {{Code|nazwa przestrzeni nazw 2}}, {{Code|nazwa przestrzeni nazw 3}},..., lub te parametry można podać w postaci ogólnej {{Code|nazwa przestrzeni nazw i}}. Parametry podaje się w parametrach rodzica wywołania tej funkcji {{Code|{{m|Pudełko|Nazwa przestrzeni nazw dyskusji}}}} (ale ich nie trzeba podawać w dziecku, ale można) i w parametrach dziecka, jeśli chodzi o zmienną {{Code|numer jednostki}}, czyli np.: {{Code|{{m|Pudełko|Nazwa przestrzeni nazw dyskusji|numer jednostki{{=}}<jakaś liczba całkowita dodatnia>}}}}. Te parametry przestrzenne zamiast w rodzicu w szablonie można podać w ramce dziecka, wtedy parametry dziecka mają pierwszeństwo. Parametry przestrzenne mogą mogą być podane w postaci przestrzeni przedmiotowej lub dyskusji, ale ta funkcja zawsze ją zamienia na dyskusji. Przestrzeń nazw z parametrów nazw przestrzennych może odpowiadać wartości przestrzeni głównej, to wtedy odpowiednia przestrzeń nazw z parametru nazwy jednostki się nie liczy w tej funkcji, aby się liczyła należy użyć funkcji {{Code|{{sr|#p["Nazwa przestrzeni nazw dyskusji 2"](frame,...)|p=Pudełko}}}}. Definicja skrótowa funkcji: <syntaxhighlight lang="lua"> p["Nazwa przestrzeni nazw dyskusji"]=function(frame,czy_uwzglednic_alternatywna_nazwe,i)...end; </syntaxhighlight> Wtedy ciało funkcji tej, czyli jego definicja w środku, jest: <syntaxhighlight lang="lua"> -- Jest liczony numer parametru nazwy przestrzeni nazw, domyslnie chodzi tu o numer bazowy parametrów przestrzennych; local numer_jednostki=i or frame.args["numer jednostki"]; local liczba_numer_jednostki=((numer_jednostki)and(tonumber(numer_jednostki))or 0); local pudelko_pomocne_modul=require("Module:Pudełko/Pomocne"); -- Liczy nazwę przestrzeni nazw dyskusji na podstawie podanych parametrów; return pudelko_pomocne_modul.Nazwa_przestrzeni_nazw(frame,2, czy_uwzglednic_alternatywna_nazwe,liczba_numer_jednostki); </syntaxhighlight> Parametry funkcji: * {{Code|frame}} - tablica ramki tablicy transportu, * {{Code|czy_uwzglednic_alternatywna_nazwe}} - czy ma uwzględniać nazwę przestrzeni nazw domyślną szablonu, dostępne wartości: {{Code|false}}, w której nazwa domyślna nie jest uwzględniana wtedy, oraz {{Code|nil}} i {{Code|true}}, które oznaczają to samo, w tym jeżeli ona jest uwzględniana, wtedy jest brany parametr pierwszy dziecka, który musi istnieć przy takiej wartości tego parametru, tzn. {{Code|{{m|Pudełko|Nazwa przestrzeni nazw dyskusji|Szablon}}}} - ta nazwa domyślna zostanie przekształcona na dyskusji, a jeżeli ona by była dyskusji, to nie byłoby żadnego przekształcenia, a nazwa uzyskana nazwy przestrzeni nazw z parametrów przestrzennych jest w takim przypadku błędna, to w takim razie brany jest ten parametr, a jeżeli nazwa domyślna jest błędna, czyli {{Code|{{m|Pudełko|Nazwa przestrzeni nazw dyskusji|Moja przestrzeń}}}}, wtedy funkcja zwraca stan błędu {{Code|(błąd)}}. * {{Code|i}} - numer zmiennej nazwy przestrzeni nazw. Funkcja wykorzystuje {{Code|{{sr|#p.Nazwa_przestrzeni_nazw(frame,...)|p=Pudełko/Pomocne}}}} do wyznaczania ogólnego nazwy przestrzeni nazw dla pozycji bazowej i numerkowej, tzn. dla pozycji: jeden, dwa, trzy,..., itd, i ich ogólnej. Parametr ramki tablicy transportu rodzica szablonu: * {{Code|nazwa przestrzeni nazw}}, {{Code|nazwa przestrzeni nazw 1}}, {{Code|nazwa przestrzeni nazw 2}}, {{Code|nazwa przestrzeni nazw 3}},..., {{Code|nazwa przestrzeni nazw i}} - nazwy przestrzeni nazw dla pozycji bazowej oraz zwykłej i ogólnej numerkowej, * {{Code|typ jednostki}}, {{Code|typ jednostki 1}}, {{Code|typ jednostki 2}}, {{Code|typ jednostki 3}},..., {{Code|typ jednostki i}} - typy jednostek, którym odpowiadają pewne przestrzenie przedmiotowe, dla pozycji bazowej, numerkowej i ogólnej. Parametry ramki tablicy transportu dziecka: * Parametry dziecka są takie same jak rodzica dla funkcji pudełkowej plus tu wymienione, * {{Code|numer jednostki}} - jak parametr {{Code|i}} nie został ustawiony, to wtedy liczy się ta zmienna. Przykłady: <syntaxhighlight lang="mediawiki"> {{Nazwa szablonu|nazwa przestrzeni nazw=Wikibooks|nazwa przestrzeni nazw 2=Szablon|nazwa przestrzeni nazw i=Moduł}} </syntaxhighlight> W dziecku powiedzmy jest wywołanie, i szukamy nazwy przestrzeni nazw o numerze dwa, która nie została podana, ale istnieje za to jej wersji ogólna {{Code|nazwa przestrzeni nazw i}} i domyślna {{Code|nazwa przestrzeni nazw}}: <syntaxhighlight lang="mediawiki"> {{#invoke:Pudełko|Nazwa przestrzeni nazw dyskusji|numer jednostki=1}} </syntaxhighlight> Na podstawie powyższego przykładu otrzymamy wynik o schemacie, nie wyniku, bo tam nie ma zmiennej {{Code|nazwa przestrzeni nazw 1}}, ale jest {{Code|nazwa przestrzeni nazw i}}: <syntaxhighlight lang="mediawiki"> <!-- Ale nie "nazwa przestrzeni nazw", bo jej nie ma, ale za to istnieje "nazwa przestrzeni nazw i"; --> <!-- nazwa przestrzeni nazw 2=nazwa przestrzeni nazw i=Moduł; --> <!-- Czyli wynik: --> Dyskusja modułu <!-- Widzimy, że wygenerowała się nazwa przestrzeni nazw, którą jest przestrzeń dyskusji przestrzeni programowej przestrzeni przedmiotowej "Moduł", którą również jest "Szablon" jego przestrzeni dyskusji "Dyskusja szablonu", a dla ich przestrzeni przedmiotowej, zamiast dyskusji, to przekształca się na dyskusji jej odpowiadającą; --> </syntaxhighlight> Nie jest brana w tym powyższym przykładzie zmienna {{Code|nazwa przestrzeni nazw}}, bo jej nie ma, ale za to jest {{Code|nazwa przestrzeni nazw i}}, bo ona występuje jako parametr domyślny ogólny dla parametrów numerkowych. Przykłady w wikikodzie: * {{Code|{{m|Pudełko|Nazwa przestrzeni nazw dyskusji|numer jednostki{{=}}2}}}} → {{Tt|{{#invoke:Pudełko|Nazwa przestrzeni nazw dyskusji|numer jednostki=2}}}} * {{Code|{{m|Pudełko|Nazwa przestrzeni nazw dyskusji|Szablon|nazwa przestrzeni nazw i{{=}}Moja przestrzeń|numer jednostki{{=}}2}}}} → {{Tt|{{#invoke:Pudełko|Nazwa przestrzeni nazw dyskusji|Szablon|nazwa przestrzeni nazw i=Moja przestrzeń|numer jednostki=2}}}} * {{Code|{{m|Pudełko|Nazwa przestrzeni nazw dyskusji|nazwa przestrzeni nazw 2{{=}}Szablon|numer jednostki{{=}}2}}}} → {{Tt|{{#invoke:Pudełko|Nazwa przestrzeni nazw dyskusji|nazwa przestrzeni nazw 2=Szablon|numer jednostki=2}}}} * {{Code|{{m|Pudełko|Nazwa przestrzeni nazw dyskusji|nazwa przestrzeni nazw 2{{=}}Szablon|numer jednostki{{=}}2}}}} → {{Tt|{{#invoke:Pudełko|Nazwa przestrzeni nazw dyskusji|nazwa przestrzeni nazw i=Szablon|numer jednostki=2}}}} * {{Code|{{m|Pudełko|Nazwa przestrzeni nazw dyskusji|nazwa przestrzeni nazw{{=}}Szablon|numer jednostki{{=}}2}}}} → {{Tt|{{#invoke:Pudełko|Nazwa przestrzeni nazw dyskusji|nazwa przestrzeni nazw=Szablon|numer jednostki=2}}}} Powyżej dla przykładu podano parametry nie w rodzicu w szablonie, tylko w dziecku, jeśli chodzi o parametry nazw przestrzeni nazw, ale ich się za to nie powinno podawać w tych ramach, tylko w szablonach, w których wywoływane są te ramki pudełek {{Code|{{m|Pudełko}}}}, ale tak tutaj tak zrobiono by było najłatwiej sprawdzić działanie tego typu funkcji. Analogicznie możemy podawać parametry typu jednostki, np.: wywołaniu modułowym {{Code|{{m|Pudełko|Nazwa przestrzeni nazw dyskusji|typ jednostki 2{{=}}strona szablonu|numer jednostki{{=}}2}}}}, ale o tym więcej w rozdziałach {{Code|{{sr|# p["Dyskusyjny typ jednostki"](frame,i)|p=Pudełko}}}} w „{{sr|#Funkcje typu jednostki|p=Pudełko}}”, ale wtedy nazwa przestrzeni nazw reprezentowana przez {{Parametr|typ jednostki 2|strona szablonu}}, jest zamieniana na nazwę przestrzeni nazw dyskusji. Parametr dyskusji typu jednostki bazowy lub dla danego numerka ogólny, czy szczegółowy, nie gra roli. Również parametry typu jednostki nie powinno się podawać w dziecku w ramce, tylko w rodzicu w szablonie jako parametry, w którym ta ramka jest wywoływana, ale tutaj podano jedynie dla przykładu, jak najłatwiej sprawdzić działanie tych parametrów tej funkcji. Najpierw w funkcji nagłówku brane są parametry nazw przestrzeni nazw, a jeżeli ich nie ma, to parametry typu jednostki, a jeżeli nie ma, to generowane są nazwy na podstawie aktualnego modułu. == Funkcje nazw przestrzeni nazw drugiej wersji == === {{Code|p["Nazwa przestrzeni nazw 2"](frame,...)}} === Funkcja pisze nazwę przestrzeni nazw, niezależnie, czy to jest przedmiotowa, czy dyskusji, według, i nie zawsze tylko, podanej w zmiennej {{Code|nazwa przestrzeni nazw}} dla pozycja bazowej w podanych parametrach szablonu rodzicu ramki dziecka, lub dla innej pozycji należy parametr podawać w formie {{Code|nazwa przestrzeni nazw 1}}, {{Code|nazwa przestrzeni nazw 2}}, {{Code|nazwa przestrzeni nazw 3}},..., lub te parametry można podać w postaci ogólnej {{Code|nazwa przestrzeni nazw i}}. W tej funkcji trzeba też podawać parametry nazwy jednostek {{Code|nazwa jednostki}}, {{Code|nazwa jednostki 1}}, {{Code|nazwa jednostki 2}}, {{Code|nazwa jednostki 3}},... Parametry podaje się w parametrach rodzica wywołania tej funkcji {{Code|{{m|Pudełko|Nazwa przestrzeni nazw 2}}}} (ale ich nie trzeba podawać w dziecku, ale można) i w parametrach dziecka, jeśli chodzi o zmienną {{Code|numer jednostki}}, czyli np.: {{Code|{{m|Pudełko|Nazwa przestrzeni nazw 2|numer jednostki{{=}}<jakaś liczba całkowita dodatnia>}}}}. Te parametry przestrzenne zamiast w rodzicu w szablonie można podać w ramce dziecka, wtedy parametry dziecka mają pierwszeństwo. Przestrzeń nazw z parametrów nazw przestrzennych może odpowiadać wartości przestrzeni głównej, to wtedy odpowiednia przestrzeń nazw z parametru nazwy jednostki się liczy w tej funkcji, wtedy jest liczona nazwa przestrzeni nazw z tego parametru. Gdy parametry przestrzenne lub typ jednostki w drugim podejściu nie wskazują na przestrzeń główną, to wtedy działanie tej funkcji jest podobne do {{Code|{{sr|#p["Nazwa przestrzeni nazw"](frame,...)|p=Pudełko}}}}. Definicja skrótowa funkcji: <syntaxhighlight lang="lua"> p["Nazwa przestrzeni nazw 2"]=function(frame,czy_uwzglednic_alternatywna_nazwe,i)...end; </syntaxhighlight> Wtedy ciało funkcji tej, czyli jego definicja w środku, jest: <syntaxhighlight lang="lua"> local pudelko_pomocne_modul=require("Module:Pudełko/Pomocne"); -- Liczy nazwę przestrzeni nazw, jeżeli z parametrów przestrzennych przestrzeń wskazuje na główną, to wtedy jest liczona przestrzeń nazw z nazwy jednostki; return pudelko_pomocne_modul.Nazwa_przestrzeni_nazw_2(frame,czy_uwzglednic_alternatywna_nazwe,i) </syntaxhighlight> Parametry funkcji: * {{Code|frame}} - tablica ramki tablicy transportu, * {{Code|czy_uwzglednic_alternatywna_nazwe}} - czy ma uwzględniać nazwę przestrzeni nazw domyślną szablonu, dostępne wartości: {{Code|false}}, w której nazwa domyślna nie jest uwzględniana wtedy, oraz {{Code|nil}} i {{Code|true}}, które oznaczają to samo, w tym jeżeli ona jest uwzględniana, wtedy jest brany parametr pierwszy dziecka, który musi istnieć przy takiej wartości tego parametru, tzn. {{Code|{{m|Pudełko|Nazwa przestrzeni nazw 2|Szablon}}}}, a nazwa uzyskana nazwy przestrzeni nazw jest w takim przypadku błędna, a jeżeli nazwa domyślna jest błędna, czyli {{Code|{{m|Pudełko|Nazwa przestrzeni nazw 2|Moja przestrzeń}}}}, wtedy funkcja zwraca stan błędu {{Code|(błąd)}}. * {{Code|i}} - numer zmiennej nazwy przestrzeni nazw. Funkcja wykorzystuje {{Code|{{sr|#p.Nazwa_przestrzeni_nazw_2(frame,...)|p=Pudełko/Pomocne}}}} do wyznaczania ogólnego nazwy przestrzeni nazw dla pozycji bazowej i numerkowej, tzn. dla pozycji: jeden, dwa, trzy,..., itd, i ich ogólnej. Parametr ramki tablicy transportu rodzica szablonu: * {{Code|nazwa przestrzeni nazw}}, {{Code|nazwa przestrzeni nazw 1}}, {{Code|nazwa przestrzeni nazw 2}}, {{Code|nazwa przestrzeni nazw 3}},..., {{Code|nazwa przestrzeni nazw i}} - nazwy przestrzeni nazw dla pozycji bazowej oraz zwykłej i ogólnej numerkowej, * {{Code|nazwa jednostki}}, {{Code|nazwa jednostki 1}}, {{Code|nazwa jednostki 2}}, {{Code|nazwa jednostki 3}},... - nazwy jednostek dla pozycji bazowej i numerkowej, * {{Code|typ jednostki}}, {{Code|typ jednostki 1}}, {{Code|typ jednostki 2}}, {{Code|typ jednostki 3}},..., {{Code|typ jednostki i}} - typy jednostek, którym odpowiadają pewne przestrzenie przedmiotowe, dla pozycji bazowej, numerkowej i ogólnej, ** {{Code|dyskusja typu jednostki}}, {{Code|dyskusja typu jednostki 1}}, {{Code|dyskusja typ jednostki 2}}, {{Code|dyskusja typ jednostki 3}},..., {{Code|dyskusja typ jednostki i}} - czy dany typ jednostki ma przedstawiać, jeśli niepusta, przestrzeń dyskusji dla pozycji bazowej, numerkowej i ogólnej. Parametry ramki tablicy transportu dziecka: * Parametry dziecka są takie same jak rodzica dla funkcji pudełkowej plus tu wymienione, * {{Code|numer jednostki}} - jak parametr {{Code|i}} nie został ustawiony, to wtedy liczy się ta zmienna. Przykłady: <syntaxhighlight lang="mediawiki"> {{Nazwa szablonu|nazwa przestrzeni nazw=Wikibooks|nazwa przestrzeni nazw 1=Szablon|nazwa przestrzeni nazw i=|nazwa jednostki 2=Wikibooks:Strona}} </syntaxhighlight> W dziecku powiedzmy jest wywołanie, i szukamy nazwy przestrzeni nazw o numerze dwa, która została podana, ale istnieje za to jej wersji ogólna {{Code|nazwa przestrzeni nazw i}} i domyślna {{Code|nazwa przestrzeni nazw}}, ale wtedy dla tego numerkowego liczy się to ogólne z {{Code| i}}, a ponieważ ta nazwa jest pusta, więc będziemy liczyli nazwę przestrzeni nazw z {{Code|nazwa jednostki 2}}: <syntaxhighlight lang="mediawiki"> {{#invoke:Pudełko|Nazwa przestrzeni nazw 2|numer jednostki=2}} </syntaxhighlight> Na podstawie powyższego przykładu otrzymamy wynik o schemacie, nie wyniku, bo tam nie ma zmiennej {{Code|nazwa przestrzeni nazw 1}}, ale jest {{Code|nazwa przestrzeni nazw i}}: <syntaxhighlight lang="mediawiki"> <!-- Ale nie "nazwa przestrzeni nazw 2", bo jej nie ma, ale za to istnieje "nazwa przestrzeni nazw i"; --> <!-- nazwa przestrzeni nazw 2=nazwa przestrzeni nazw i="", a nazwa jednostki 2="Wikibooks:Strona"; --> <!-- Czyli wynik: --> Wikibooks <!-- Widzimy, że wygenerowała się nazwa przestrzeni nazw, którą jest przestrzeń nieprogramowa, ale projektu, wychodząca z nazwy jednostek w tym przypadku z "nazwa jednostki 2"; --> </syntaxhighlight> Nie jest brana w tym powyższym przykładzie zmienna {{Code|nazwa przestrzeni nazw}}, bo jej nie ma, ale za to jest {{Code|nazwa przestrzeni nazw i}}, bo ona występuje jako parametr domyślny ogólny dla parametrów numerkowych. Tytaj jest używana jest zmienna {{Code|nazwa jednostki 2}} do wygenerowania ostatecznego wyniku, bo jak można zauważyć, parametry przestrzenne wskazują na przestrzeń główną, a nazwy jednostek już nie. Przykłady w wikikodzie: * {{Code|{{m|Pudełko|Nazwa przestrzeni nazw 2|numer jednostki{{=}}2}}}} → {{Tt|{{#invoke:Pudełko|Nazwa przestrzeni nazw 2|numer jednostki=2}}}} * {{Code|{{m|Pudełko|Nazwa przestrzeni nazw 2|Szablon|nazwa przestrzeni nazw i{{=}}Moja przestrzeń|numer jednostki{{=}}2}}}} → {{Tt|{{#invoke:Pudełko|Nazwa przestrzeni nazw 2|Szablon|nazwa przestrzeni nazw i=Moja przestrzeń|numer jednostki=2}}}} * {{Code|{{m|Pudełko|Nazwa przestrzeni nazw 2|nazwa przestrzeni nazw 2{{=}}|nazwa jednostki 2{{=}}Szablon:Strona|numer jednostki{{=}}2}}}} → {{Tt|{{#invoke:Pudełko|Nazwa przestrzeni nazw 2|nazwa przestrzeni nazw 2=|nazwa jednostki 2=Szablon:Strona|numer jednostki=2}}}} * {{Code|{{m|Pudełko|Nazwa przestrzeni nazw 2|nazwa przestrzeni nazw i{{=}}|nazwa jednostki 2{{=}}Szablon:Strona|numer jednostki{{=}}2}}}} → {{Tt|{{#invoke:Pudełko|Nazwa przestrzeni nazw 2|nazwa przestrzeni nazw i=|nazwa jednostki 2=Szablon:Strona|numer jednostki=2}}}} * {{Code|{{m|Pudełko|Nazwa przestrzeni nazw 2|Szablon|nazwa przestrzeni nazw{{=}}|nazwa jednostki 2{{=}}Wikibooks:Strona|numer jednostki{{=}}2}}}} → {{Tt|{{#invoke:Pudełko|Nazwa przestrzeni nazw 2|Szablon|nazwa przestrzeni nazw=|nazwa jednostki 2=Wikibooks:Strona|numer jednostki=2}}}} Powyżej dla przykładu podano parametry nie w rodzicu w szablonie, tylko w dziecku, jeśli chodzi o parametry nazw przestrzeni nazw i nazw jednostek, ale ich się za to nie powinno podawać w tych ramach, tylko w szablonach, w których wywoływane są te ramki pudełek {{Code|{{m|Pudełko}}}}, ale tak tutaj tak zrobiono by było najłatwiej sprawdzić działanie tego typu funkcji. Analogicznie możemy podawać parametry typu jednostki, np.: wywołaniu modułowym {{Code|{{m|Pudełko|Nazwa przestrzeni nazw 2|typ jednostki 2{{=}}Podręcznik|nazwa jednostki 2{{=}}Szablon:Strona|numer jednostki{{=}}2}}}} (ale wtedy jest brana przestrzeń nazw z nazwy jednostki), ale o tym więcej w rozdziałach {{Code|{{sr|#p["Typ jednostki 2"](frame,i)|p=Pudełko}}}} w „{{sr|#Funkcje typu jednostki|p=Pudełko}}”, on definiuje przestrzenie przedmiotowe, ale można użyć parametru dyskusji typu jednostki z wartością niepustą, wtedy wyświetli się nazwa przestrzeni nazw dyskusji. Jeżeli typ jednostki wskazuje na przestrzeń nazw główną, wtedy się liczą parametry nazw jednostek. Również parametry typu jednostki nie powinno się podawać w dziecku w ramce, tylko w rodzicu w szablonie jako parametry, w którym ta ramka jest wywoływana, ale tutaj podano jedynie dla przykładu, jak najłatwiej sprawdzić działanie tych parametrów tej funkcji. Najpierw w funkcji nagłówku brane są parametry nazw przestrzeni nazw, a jeżeli ich nie ma, to parametry typu jednostki, a jeżeli nie ma lub parametry przestrzenne wskazują na przestrzeń główną, i nie ma nazwy jednostki, to generowane są nazwy tej funkcji na podstawie aktualnej strony. === {{Code|p["Nazwa przedmiotowej przestrzeni nazw 2"](frame,...)}} === Funkcja pisze przedmiotową nazwę przestrzeni nazw jakikolwiek nazwy przestrzeni nazw (tzn. nazwę przedmiotową nazwy przestrzenie nazw, czyli nie dyskusji, zamieniana jest na nią samą, czyli identyfikator przestrzeni się nie zmienia, a dyskusji, nie przedmiotową, przekształca się na przedmiotową jej odpowiadającą, czyli w tym przypadku identyfikator przestrzeni zmniejsza się o numer mniej), według, i nie zawsze tylko, podanej w zmiennej {{Code|nazwa przestrzeni nazw}} dla pozycja bazowej w podanych parametrach szablonu rodzicu ramki dziecka, lub dla innej pozycji należy parametr podawać w formie {{Code|nazwa przestrzeni nazw 1}}, {{Code|nazwa przestrzeni nazw 2}}, {{Code|nazwa przestrzeni nazw 3}},..., lub te parametry można podać w postaci ogólnej {{Code|nazwa przestrzeni nazw i}}. W tej funkcji trzeba też podawać parametry nazwy jednostek {{Code|nazwa jednostki}}, {{Code|nazwa jednostki 1}}, {{Code|nazwa jednostki 2}}, {{Code|nazwa jednostki 3}},... Parametry podaje się w parametrach rodzica wywołania tej funkcji {{Code|{{m|Pudełko|Nazwa przedmiotowej przestrzeni nazw 2}}}} (ale ich nie trzeba podawać w dziecku, ale można) i w parametrach dziecka, jeśli chodzi o zmienną {{Code|numer jednostki}}, czyli np.: {{Code|{{m|Pudełko|Nazwa przedmiotowej przestrzeni nazw 2|numer jednostki{{=}}<jakaś liczba całkowita dodatnia>}}}}. Te parametry przestrzenne zamiast w rodzicu w szablonie można podać w ramce dziecka, wtedy parametry dziecka mają pierwszeństwo. Przestrzeń nazw z parametrów nazw przestrzennych po przekształceniu na przedmiotową może odpowiadać wartości przestrzeni głównej, to wtedy odpowiednia przestrzeń nazw z parametru nazwy jednostki się liczy w tej funkcji, wtedy jest liczona nazwa przestrzeni nazw z tego parametru. Gdy parametry przestrzenne lub typ jednostki w drugim podejściu nie wskazują na przestrzeń główną, to wtedy działanie tej funkcji jest podobne do {{Code|{{sr|#p["Nazwa przedmiotowej przestrzeni nazw"](frame,...)|p=Pudełko}}}}. Definicja skrótowa funkcji: <syntaxhighlight lang="lua"> p["Nazwa przedmiotowej przestrzeni nazw 2"]=function(frame,czy_uwzglednic_alternatywna_nazwe,i)...end; </syntaxhighlight> Wtedy ciało funkcji tej, czyli jego definicja w środku, jest: <syntaxhighlight lang="lua"> local pudelko_pomocne_modul=require("Module:Pudełko/Pomocne"); return pudelko_pomocne_modul.Nazwa_przestrzeni_nazw_przedmiotowa_dyskusji_2(frame,czy_uwzglednic_alternatywna_nazwe,i,"przedmiotowa"); </syntaxhighlight> Parametry funkcji: * {{Code|frame}} - tablica ramki tablicy transportu, * {{Code|czy_uwzglednic_alternatywna_nazwe}} - czy ma uwzględniać nazwę przestrzeni nazw domyślną szablonu, dostępne wartości: {{Code|false}}, w której nazwa domyślna nie jest uwzględniana wtedy, oraz {{Code|nil}} i {{Code|true}}, które oznaczają to samo, w tym jeżeli ona jest uwzględniana, wtedy jest brany parametr pierwszy dziecka, który musi istnieć przy takiej wartości tego parametru, tzn. {{Code|{{m|Pudełko|Nazwa przedmiotowej przestrzeni nazw 2|Szablon}}}}, a nazwa uzyskana nazwy przestrzeni nazw jest w takim przypadku błędna, a jeżeli nazwa domyślna jest błędna, czyli {{Code|{{m|Pudełko|Nazwa przedmiotowej przestrzeni nazw 2|Moja przestrzeń}}}}, wtedy funkcja zwraca stan błędu {{Code|(błąd)}}. * {{Code|i}} - numer zmiennej nazwy przestrzeni nazw. Funkcja wykorzystuje {{Code|{{sr|#p.Nazwa_przestrzeni_nazw_przedmiotowa_dyskusji_2(frame,...)|p=Pudełko/Pomocne}}}} do wyznaczania ogólnego nazwy przestrzeni nazw dla pozycji bazowej i numerkowej, tzn. dla pozycji: jeden, dwa, trzy,..., itd, i ich ogólnej. Parametr ramki tablicy transportu rodzica szablonu: * {{Code|nazwa przestrzeni nazw}}, {{Code|nazwa przestrzeni nazw 1}}, {{Code|nazwa przestrzeni nazw 2}}, {{Code|nazwa przestrzeni nazw 3}},..., {{Code|nazwa przestrzeni nazw i}} - nazwy przestrzeni nazw dla pozycji bazowej oraz zwykłej i ogólnej numerkowej, * {{Code|nazwa jednostki}}, {{Code|nazwa jednostki 1}}, {{Code|nazwa jednostki 2}}, {{Code|nazwa jednostki 3}},... - nazwy jednostek dla pozycji bazowej i numerkowej, * {{Code|typ jednostki}}, {{Code|typ jednostki 1}}, {{Code|typ jednostki 2}}, {{Code|typ jednostki 3}},..., {{Code|typ jednostki i}} - typy jednostek, którym odpowiadają pewne przestrzenie przedmiotowe, dla pozycji bazowej, numerkowej i ogólnej. Parametry ramki tablicy transportu dziecka: * Parametry dziecka są takie same jak rodzica dla funkcji pudełkowej plus tu wymienione, * {{Code|numer jednostki}} - jak parametr {{Code|i}} nie został ustawiony, to wtedy liczy się ta zmienna. Przykłady: <syntaxhighlight lang="mediawiki"> {{Nazwa szablonu|nazwa przestrzeni nazw=Wikibooks|nazwa przestrzeni nazw 1=Szablon|nazwa przestrzeni nazw i=|nazwa jednostki 2=Dyskusja Wikibooks:Strona}} </syntaxhighlight> W dziecku powiedzmy jest wywołanie, i szukamy nazwy przestrzeni nazw o numerze dwa, która została podana, ale istnieje za to jej wersji ogólna {{Code|nazwa przestrzeni nazw i}} i domyślna {{Code|nazwa przestrzeni nazw}}, ale wtedy dla tego numerkowego liczy się to ogólne z {{Code| i}}, a ponieważ ta nazwa jest pusta, więc będziemy liczyli nazwę przestrzeni nazw z {{Code|nazwa jednostki 2}}: <syntaxhighlight lang="mediawiki"> {{#invoke:Pudełko|Nazwa przedmiotowej przestrzeni nazw 2|numer jednostki=2}} </syntaxhighlight> Na podstawie powyższego przykładu otrzymamy wynik o schemacie, nie wyniku, bo tam nie ma zmiennej {{Code|nazwa przestrzeni nazw 1}}, ale jest {{Code|nazwa przestrzeni nazw i}}: <syntaxhighlight lang="mediawiki"> <!-- Ale nie "nazwa przestrzeni nazw 2", bo jej nie ma, ale za to istnieje "nazwa przestrzeni nazw i"; --> <!-- nazwa przestrzeni nazw 2=nazwa przestrzeni nazw i="", a nazwa jednostki 2="Dyskusja Wikibooks:Strona"; --> <!-- Czyli wynik: --> Wikibooks <!-- Widzimy, że wygenerowała się nazwa przestrzeni nazw, którą jest przestrzeń nieprogramowa, ale projektu, wychodząca z nazwy jednostek w tym przypadku z "nazwa jednostki 2"; --> </syntaxhighlight> Nie jest brana w tym powyższym przykładzie zmienna {{Code|nazwa przestrzeni nazw}}, bo jej nie ma, ale za to jest {{Code|nazwa przestrzeni nazw i}}, bo ona występuje jako parametr domyślny ogólny dla parametrów numerkowych. Tytaj jest używana jest zmienna {{Code|nazwa jednostki 2}} do wygenerowania ostatecznego wyniku, bo jak można zauważyć, parametry przestrzenne wskazują na przestrzeń główną, a nazwy jednostek już nie. Przykłady w wikikodzie: * {{Code|{{m|Pudełko|Nazwa przedmiotowej przestrzeni nazw 2|numer jednostki{{=}}2}}}} → {{Tt|{{#invoke:Pudełko|Nazwa przedmiotowej przestrzeni nazw 2|numer jednostki=2}}}} * {{Code|{{m|Pudełko|Nazwa przedmiotowej przestrzeni nazw 2|Dyskusja szablonu|nazwa przestrzeni nazw i{{=}}Moja przestrzeń|numer jednostki{{=}}2}}}} → {{Tt|{{#invoke:Pudełko|Nazwa przedmiotowej przestrzeni nazw 2|Dyskusja szablonu|nazwa przestrzeni nazw i=Moja przestrzeń|numer jednostki=2}}}} * {{Code|{{m|Pudełko|Nazwa przedmiotowej przestrzeni nazw 2|nazwa przestrzeni nazw 2{{=}}Dyskusja|nazwa jednostki 2{{=}}Dyskusja szablonu:Strona|numer jednostki{{=}}2}}}} → {{Tt|{{#invoke:Pudełko|Nazwa przedmiotowej przestrzeni nazw 2|nazwa przestrzeni nazw 2=Dyskusja|nazwa jednostki 2=Dyskusja szablonu:Strona|numer jednostki=2}}}} * {{Code|{{m|Pudełko|Nazwa przedmiotowej przestrzeni nazw 2|nazwa przestrzeni nazw i{{=}}Dyskusja|nazwa jednostki 2{{=}}Dyskusja szablonu:Strona|numer jednostki{{=}}2}}}} → {{Tt|{{#invoke:Pudełko|Nazwa przedmiotowej przestrzeni nazw 2|nazwa przestrzeni nazw i=Dyskusja|nazwa jednostki 2=Dyskusja szablonu:Strona|numer jednostki=2}}}} * {{Code|{{m|Pudełko|Nazwa przedmiotowej przestrzeni nazw 2|Dyskusja szablonu|nazwa przestrzeni nazw{{=}}Dyskusja|nazwa jednostki 2{{=}}Wikibooks:Strona|numer jednostki{{=}}2}}}} → {{Tt|{{#invoke:Pudełko|Nazwa przedmiotowej przestrzeni nazw 2|Dyskusja szablonu|nazwa przestrzeni nazw=Dyskusja|nazwa jednostki 2=Dyskusja Wikibooks:Strona|numer jednostki=2}}}} Powyżej dla przykładu podano parametry nie w rodzicu w szablonie, tylko w dziecku, jeśli chodzi o parametry nazw przestrzeni nazw i nazw jednostek, ale ich się za to nie powinno podawać w tych ramach, tylko w szablonach, w których wywoływane są te ramki pudełek {{Code|{{m|Pudełko}}}}, ale tak tutaj tak zrobiono by było najłatwiej sprawdzić działanie tego typu funkcji. Analogicznie możemy podawać parametry typu jednostki, np.: wywołaniu modułowym {{Code|{{m|Pudełko|Nazwa przedmiotowej przestrzeni nazw 2|typ jednostki 2{{=}}Podręcznik|nazwa jednostki 2{{=}}Dyskusja szablonu:Strona|numer jednostki{{=}}2}}}} (ale wtedy jest brana przestrzeń nazw z nazwy jednostki), ale o tym więcej w rozdziałach {{Code|{{sr|# p["Przedmiotowy typ jednostki 2"](frame,i)|p=Pudełko}}}} w „{{sr|#Funkcje typu jednostki|p=Pudełko}}”, on definiuje przestrzenie przedmiotowe, ale można użyć parametru dyskusji typu jednostki z wartością niepustą, pustą, czy nawet jej nie podamy, wtedy wyświetli się nazwa przestrzeni nazw przedmiotowej. Jeżeli typ jednostki wskazuje na przestrzeń nazw główną, wtedy się liczą parametry nazw jednostek. Również parametry typu jednostki nie powinno się podawać w dziecku w ramce, tylko w rodzicu w szablonie jako parametry, w którym ta ramka jest wywoływana, ale tutaj podano jedynie dla przykładu, jak najłatwiej sprawdzić działanie tych parametrów tej funkcji. Najpierw w funkcji nagłówku brane są parametry nazw przestrzeni nazw, a jeżeli ich nie ma, to parametry typu jednostki, a jeżeli nie ma lub parametry przestrzenne wskazują na przestrzeń główną, i nie ma nazwy jednostki, to generowane są nazwy tej funkcji na podstawie aktualnej strony. === {{Code|p["Nazwa przestrzeni nazw dyskusji 2"](frame,...)}} === Funkcja pisze nazwę przestrzeni nazw dyskusji jakikolwiek nazwy przestrzeni nazw (tzn. nazwę dyskusji nazwy przestrzenie nazw, czyli nie przedmiotowej, zamieniana jest na nią samą, czyli identyfikator przestrzeni się nie zmienia, a przedmiotową, nie dyskusji, przekształca się na dyskusji jej odpowiadającą, czyli w tym przypadku identyfikator przestrzeni zwiększa się o numer więcej), według, i nie zawsze tylko, podanej w zmiennej {{Code|nazwa przestrzeni nazw}} dla pozycja bazowej w podanych parametrach szablonu rodzicu ramki dziecka, lub dla innej pozycji należy parametr podawać w formie {{Code|nazwa przestrzeni nazw 1}}, {{Code|nazwa przestrzeni nazw 2}}, {{Code|nazwa przestrzeni nazw 3}},..., lub te parametry można podać w postaci ogólnej {{Code|nazwa przestrzeni nazw i}}. W tej funkcji trzeba też podawać parametry nazwy jednostek {{Code|nazwa jednostki}}, {{Code|nazwa jednostki 1}}, {{Code|nazwa jednostki 2}}, {{Code|nazwa jednostki 3}},... Parametry podaje się w parametrach rodzica wywołania tej funkcji {{Code|{{m|Pudełko|Nazwa przestrzeni nazw dyskusji 2}}}} (ale ich nie trzeba podawać w dziecku, ale można) i w parametrach dziecka, jeśli chodzi o zmienną {{Code|numer jednostki}}, czyli np.: {{Code|{{m|Pudełko|Nazwa przestrzeni nazw dyskusji 2|numer jednostki{{=}}<jakaś liczba całkowita dodatnia>}}}}. Te parametry przestrzenne zamiast w rodzicu w szablonie można podać w ramce dziecka, wtedy parametry dziecka mają pierwszeństwo. Przestrzeń nazw z parametrów nazw przestrzennych po przekształceniu może odpowiadać wartości przestrzeni głównej, to wtedy odpowiednia przestrzeń nazw z parametru nazwy jednostki się liczy w tej funkcji, wtedy jest liczona nazwa przestrzeni nazw dyskusji z tego parametru. Gdy parametry przestrzenne lub typ jednostki w drugim podejściu nie wskazują na przestrzeń główną, to wtedy działanie tej funkcji jest podobne do {{Code|{{sr|#p["Nazwa dyskusji przestrzeni nazw"](frame,...)|p=Pudełko}}}}. Definicja skrótowa funkcji: <syntaxhighlight lang="lua"> p["Nazwa przestrzeni nazw dyskusji 2"]=function(frame,czy_uwzglednic_alternatywna_nazwe,i)...end; </syntaxhighlight> Wtedy ciało funkcji tej, czyli jego definicja w środku, jest: <syntaxhighlight lang="lua"> local pudelko_pomocne_modul=require("Module:Pudełko/Pomocne"); return pudelko_pomocne_modul.Nazwa_przestrzeni_nazw_przedmiotowa_dyskusji_2(frame,czy_uwzglednic_alternatywna_nazwe,i,"dyskusja"); </syntaxhighlight> Parametry funkcji: * {{Code|frame}} - tablica ramki tablicy transportu, * {{Code|czy_uwzglednic_alternatywna_nazwe}} - czy ma uwzględniać nazwę przestrzeni nazw domyślną szablonu, dostępne wartości: {{Code|false}}, w której nazwa domyślna nie jest uwzględniana wtedy, oraz {{Code|nil}} i {{Code|true}}, które oznaczają to samo, w tym jeżeli ona jest uwzględniana, wtedy jest brany parametr pierwszy dziecka, który musi istnieć przy takiej wartości tego parametru, tzn. {{Code|{{m|Pudełko|Nazwa przestrzeni nazw dyskusji 2|Szablon}}}}, a nazwa uzyskana nazwy przestrzeni nazw jest w takim przypadku błędna, a jeżeli nazwa domyślna jest błędna, czyli {{Code|{{m|Pudełko|Nazwa przestrzeni nazw dyskusji 2|Moja przestrzeń}}}}, wtedy funkcja zwraca stan błędu {{Code|(błąd)}}. * {{Code|i}} - numer zmiennej nazwy przestrzeni nazw. Funkcja wykorzystuje {{Code|{{sr|#p.Nazwa_przestrzeni_nazw_przedmiotowa_dyskusji_2(frame,...)|p=Pudełko/Pomocne}}}} do wyznaczania ogólnego nazwy przestrzeni nazw dla pozycji bazowej i numerkowej, tzn. dla pozycji: jeden, dwa, trzy,..., itd, i ich ogólnej. Parametr ramki tablicy transportu rodzica szablonu: * {{Code|nazwa przestrzeni nazw}}, {{Code|nazwa przestrzeni nazw 1}}, {{Code|nazwa przestrzeni nazw 2}}, {{Code|nazwa przestrzeni nazw 3}},..., {{Code|nazwa przestrzeni nazw i}} - nazwy przestrzeni nazw dla pozycji bazowej oraz zwykłej i ogólnej numerkowej, * {{Code|nazwa jednostki}}, {{Code|nazwa jednostki 1}}, {{Code|nazwa jednostki 2}}, {{Code|nazwa jednostki 3}},... - nazwy jednostek dla pozycji bazowej i numerkowej, * {{Code|typ jednostki}}, {{Code|typ jednostki 1}}, {{Code|typ jednostki 2}}, {{Code|typ jednostki 3}},..., {{Code|typ jednostki i}} - typy jednostek, którym odpowiadają pewne przestrzenie przedmiotowe, dla pozycji bazowej, numerkowej i ogólnej. Parametry ramki tablicy transportu dziecka: * Parametry dziecka są takie same jak rodzica dla funkcji pudełkowej plus tu wymienione, * {{Code|numer jednostki}} - jak parametr {{Code|i}} nie został ustawiony, to wtedy liczy się ta zmienna. Przykłady: <syntaxhighlight lang="mediawiki"> {{Nazwa szablonu|nazwa przestrzeni nazw=Wikibooks|nazwa przestrzeni nazw 1=Szablon|nazwa przestrzeni nazw i=|nazwa jednostki 2=Wikibooks:Strona}} </syntaxhighlight> W dziecku powiedzmy jest wywołanie, i szukamy nazwy przestrzeni nazw o numerze dwa, która została podana, ale istnieje za to jej wersji ogólna {{Code|nazwa przestrzeni nazw i}} i domyślna {{Code|nazwa przestrzeni nazw}}, ale wtedy dla tego numerkowego liczy się to ogólne z {{Code| i}}, a ponieważ ta nazwa jest pusta, więc będziemy liczyli nazwę przestrzeni nazw z {{Code|nazwa jednostki 2}}: <syntaxhighlight lang="mediawiki"> {{#invoke:Pudełko|Nazwa przestrzeni nazw dyskusji 2|numer jednostki=2}} </syntaxhighlight> Na podstawie powyższego przykładu otrzymamy wynik o schemacie, nie wyniku, bo tam nie ma zmiennej {{Code|nazwa przestrzeni nazw 1}}, ale jest {{Code|nazwa przestrzeni nazw i}}: <syntaxhighlight lang="mediawiki"> <!-- Ale nie "nazwa przestrzeni nazw 2", bo jej nie ma, ale za to istnieje "nazwa przestrzeni nazw i"; --> <!-- nazwa przestrzeni nazw 2=nazwa przestrzeni nazw i="", a nazwa jednostki 2="Wikibooks:Strona"; --> <!-- Czyli wynik: --> Dyskusja Wikibooks <!-- Widzimy, że wygenerowała się nazwa przestrzeni nazw, którą jest przestrzeń nieprogramowa, ale dyskusji projektu, wychodząca z nazwy jednostek w tym przypadku z "nazwa jednostki 2"; --> </syntaxhighlight> Nie jest brana w tym powyższym przykładzie zmienna {{Code|nazwa przestrzeni nazw}}, bo jej nie ma, ale za to jest {{Code|nazwa przestrzeni nazw i}}, bo ona występuje jako parametr domyślny ogólny dla parametrów numerkowych. Tytaj jest używana jest zmienna {{Code|nazwa jednostki 2}} do wygenerowania ostatecznego wyniku, bo jak można zauważyć, parametry przestrzenne wskazują na przestrzeń główną, a nazwy jednostek już nie. Przykłady w wikikodzie: * {{Code|{{m|Pudełko|Nazwa przestrzeni nazw dyskusji 2|numer jednostki{{=}}2}}}} → {{Tt|{{#invoke:Pudełko|Nazwa przestrzeni nazw dyskusji 2|numer jednostki=2}}}} * {{Code|{{m|Pudełko|Nazwa przestrzeni nazw dyskusji 2|Szablon|nazwa przestrzeni nazw i{{=}}Moja przestrzeń|numer jednostki{{=}}2}}}} → {{Tt|{{#invoke:Pudełko|Nazwa przestrzeni nazw dyskusji 2|Szablon|nazwa przestrzeni nazw i=Moja przestrzeń|numer jednostki=2}}}} * {{Code|{{m|Pudełko|Nazwa przestrzeni nazw dyskusji 2|nazwa przestrzeni nazw 2{{=}}|nazwa jednostki 2{{=}}Szablon:Strona|numer jednostki{{=}}2}}}} → {{Tt|{{#invoke:Pudełko|Nazwa przestrzeni nazw dyskusji 2|nazwa przestrzeni nazw 2=|nazwa jednostki 2=Szablon:Strona|numer jednostki=2}}}} * {{Code|{{m|Pudełko|Nazwa przestrzeni nazw dyskusji 2|nazwa przestrzeni nazw i{{=}}|nazwa jednostki 2{{=}}Szablon:Strona|numer jednostki{{=}}2}}}} → {{Tt|{{#invoke:Pudełko|Nazwa przestrzeni nazw dyskusji 2|nazwa przestrzeni nazw i=|nazwa jednostki 2=Szablon:Strona|numer jednostki=2}}}} * {{Code|{{m|Pudełko|Nazwa przestrzeni nazw dyskusji 2|Szablon|nazwa przestrzeni nazw{{=}}|nazwa jednostki 2{{=}}Wikibooks:Strona|numer jednostki{{=}}2}}}} → {{Tt|{{#invoke:Pudełko|Nazwa przestrzeni nazw dyskusji 2|Szablon|nazwa przestrzeni nazw=|nazwa jednostki 2=Dyskusja Wikibooks:Strona|numer jednostki=2}}}} Powyżej dla przykładu podano parametry nie w rodzicu w szablonie, tylko w dziecku, jeśli chodzi o parametry nazw przestrzeni nazw i nazw jednostek, ale ich się za to nie powinno podawać w tych ramach, tylko w szablonach, w których wywoływane są te ramki pudełek {{Code|{{m|Pudełko}}}}, ale tak tutaj tak zrobiono by było najłatwiej sprawdzić działanie tego typu funkcji. Analogicznie możemy podawać parametry typu jednostki, np.: wywołaniu modułowym {{Code|{{m|Pudełko|Nazwa przestrzeni nazw dyskusji 2|typ jednostki 2{{=}}Podręcznik|nazwa jednostki 2{{=}}Szablon:Strona|numer jednostki{{=}}2}}}} (ale wtedy jest brana przestrzeń nazw z nazwy jednostki), ale o tym więcej w rozdziałach {{Code|{{sr|# p["Dyskusyjny typ jednostki 3"](frame,i)|p=Pudełko}}}} w „{{sr|#Funkcje typu jednostki|p=Pudełko}}”, one definiują przestrzenie dyskusji, ale można użyć parametru dyskusji typu jednostki z obojętnie jaką wartością niepustą, czy pustą, czy nawet jej nie podamy, wtedy wyświetli się nazwa przestrzeni nazw dyskusji. Jeżeli typ jednostki wskazuje na przestrzeń nazw główną, wtedy się liczą parametry nazw jednostek. Również parametry typu jednostki nie powinno się podawać w dziecku w ramce, tylko w rodzicu w szablonie jako parametry, w którym ta ramka jest wywoływana, ale tutaj podano jedynie dla przykładu, jak najłatwiej sprawdzić działanie tych parametrów tej funkcji. Najpierw w funkcji nagłówku brane są parametry nazw przestrzeni nazw, a jeżeli ich nie ma, to parametry typu jednostki, a jeżeli nie ma lub parametry przestrzenne wskazują na przestrzeń główną, i nie ma nazwy jednostki, to generowane są nazwy tej funkcji na podstawie aktualnej strony. == Funkcje pełnych nazw jednostki == === {{Code|p["Pełna nazwa dyskusji jednostki"](frame,i)}} === === {{Code|p["Pełna nazwa przedmiotowa jednostki"](frame,i)}} === === {{Code|p["Pełna nazwa jednostki"](frame,i)}} === == Funkcje pełnych nazw jednostki drugiej wersji == === {{Code|p["Pełna nazwa dyskusji jednostki 2"](frame,i)}} === === {{Code|p["Pełna nazwa przedmiotowa jednostki 2"](frame,i)}} === === {{Code|p["Pełna nazwa jednostki 2"](frame,i)}} === == Funkcje pełnych nazw jednostki trzeciej wersji == === {{Code|p["Pełna nazwa dyskusji jednostki 3"](frame,i)}} === === {{Code|p["Pełna nazwa przedmiotowa jednostki 3"](frame,i)}} === === {{Code|p["Pełna nazwa jednostki 3"](frame,i)}} === == Funkcje nazw jednostki == === {{Code|p["Nazwa jednostki"](frame,i)}} === == Funkcje nazw jednostki drugiej wersji == === {{Code|p["Nazwa jednostki 2"](frame,i)}} === === {{Code|p["Nazwa przedmiotowa jednostki 2"](frame,i)}} === === {{Code|p["Nazwa dyskusji jednostki 2"](frame,i)}} === == Funkcje nazw przestrzeni nazw trzeciej wersji == === {{Code|p["Nazwa przestrzeni nazw 3"](frame,i)}} === Funkcja pisze nazwę przestrzeni nazw, niezależnie, czy to jest przedmiotowa, czy dyskusji, według, i nie zawsze tylko, podanej w zmiennej {{Code|nazwa przestrzeni nazw}} dla pozycja bazowej w podanych parametrach szablonu rodzicu ramki dziecka, lub dla innej pozycji należy parametr podawać w formie {{Code|nazwa przestrzeni nazw 1}}, {{Code|Nazwa przestrzeni nazw 3}}, {{Code|nazwa przestrzeni nazw 3}},..., lub te parametry można podać w postaci ogólnej {{Code|nazwa przestrzeni nazw i}}. W tej funkcji trzeba też podawać parametry nazwy jednostek {{Code|nazwa jednostki}}, {{Code|nazwa jednostki 1}}, {{Code|nazwa jednostki 2}}, {{Code|nazwa jednostki 3}},... Parametry podaje się w parametrach rodzica wywołania tej funkcji {{Code|{{m|Pudełko|Nazwa przestrzeni nazw 3}}}} (ale ich nie trzeba podawać w dziecku, ale można) i w parametrach dziecka, jeśli chodzi o zmienną {{Code|numer jednostki}}, czyli np.: {{Code|{{m|Pudełko|Nazwa przestrzeni nazw 3|numer jednostki{{=}}<jakaś liczba całkowita dodatnia>}}}}. Te parametry przestrzenne zamiast w rodzicu w szablonie można podać w ramce dziecka, wtedy parametry dziecka mają pierwszeństwo. Przestrzeń nazw z parametrów nazw przestrzennych bazowych (bez numerka) może odpowiadać wartości przestrzeni głównej, to wtedy odpowiednia przestrzeń nazw z parametru nazwy jednostki się nie liczy w tej funkcji, aby się liczyła należy użyć funkcji {{Code|{{sr|#p["Nazwa przestrzeni nazw 2"](frame,...)|p=Pudełko}}}}. W tym przypadku funkcja działa jak {{Code|{{sr|#p["Nazwa przestrzeni nazw"](frame,...)|p=Pudełko}}}}. Przestrzeń nazw z parametrów nazw przestrzennych numerkowych może odpowiadać wartości przestrzeni głównej, to wtedy odpowiednia przestrzeń nazw z parametru nazwy jednostki się liczy w tej funkcji, wtedy jest liczona nazwa przestrzeni nazw z tego parametru. Gdy parametry przestrzenne lub typ jednostki w drugim podejściu nie wskazują na przestrzeń główną, to wtedy działanie tej funkcji jest podobne do {{Code|{{sr|#p["Nazwa przestrzeni nazw 2"](frame,...)|p=Pudełko}}}}. Definicja skrótowa funkcji: <syntaxhighlight lang="lua"> p["Nazwa przestrzeni nazw 3"]=function(frame,czy_uwzglednic_alternatywna_nazwe,i)...end; </syntaxhighlight> Wtedy ciało funkcji tej, czyli jego definicja w środku, jest: <syntaxhighlight lang="lua"> -- Jest liczony numer parametru nazwy przestrzeni nazw, domyslnie chodzi tu o numer bazowy parametrów przestrzennych; local numer_jednostki=i or frame.args["numer jednostki"]; local liczba_numeru_jednostki=((numer_jednostki)and(tonumber(numer_jednostki)) or 0); local pudelko_pomocne_modul=require("Module:Pudełko/Pomocne"); -- Liczy nazwę przestrzeni nazw dyskusji na podstawie podanych parametrów; return pudelko_pomocne_modul.Uzyskanie_nazw_jednostki(frame,0,liczba_numeru_jednostki,nil,2); </syntaxhighlight> Parametry funkcji: * {{Code|frame}} - tablica ramki tablicy transportu, * {{Code|czy_uwzglednic_alternatywna_nazwe}} - czy ma uwzględniać nazwę przestrzeni nazw domyślną szablonu, dostępne wartości: {{Code|false}}, w której nazwa domyślna nie jest uwzględniana wtedy, oraz {{Code|nil}} i {{Code|true}}, które oznaczają to samo, w tym jeżeli ona jest uwzględniana, wtedy jest brany parametr pierwszy dziecka, który musi istnieć przy takiej wartości tego parametru, tzn. {{Code|{{m|Pudełko|Nazwa przestrzeni nazw 3|Szablon}}}}, a nazwa uzyskana nazwy przestrzeni nazw jest w takim przypadku błędna, a jeżeli nazwa domyślna jest błędna, czyli {{Code|{{m|Pudełko|Nazwa przestrzeni nazw 3|Moja przestrzeń}}}}, wtedy funkcja zwraca stan błędu {{Code|(błąd)}}. * {{Code|i}} - numer zmiennej nazwy przestrzeni nazw. Funkcja wykorzystuje {{Code|{{sr|#p.Uzyskanie_nazw_jednostki(frame,...)|p=Pudełko/Pomocne}}}} do wyznaczania ogólnego nazwy przestrzeni nazw dla pozycji bazowej i numerkowej, tzn. dla pozycji: jeden, dwa, trzy,..., itd, i ich ogólnej. Parametr ramki tablicy transportu rodzica szablonu: * {{Code|nazwa przestrzeni nazw}}, {{Code|nazwa przestrzeni nazw 1}}, {{Code|Nazwa przestrzeni nazw 3}}, {{Code|nazwa przestrzeni nazw 3}},..., {{Code|nazwa przestrzeni nazw i}} - nazwy przestrzeni nazw dla pozycji bazowej oraz zwykłej i ogólnej numerkowej, * {{Code|nazwa jednostki}}, {{Code|nazwa jednostki 1}}, {{Code|nazwa jednostki 2}}, {{Code|nazwa jednostki 3}},... - nazwy jednostek dla pozycji bazowej i numerkowej, * {{Code|typ jednostki}}, {{Code|typ jednostki 1}}, {{Code|typ jednostki 2}}, {{Code|typ jednostki 3}},..., {{Code|typ jednostki i}} - typy jednostek, którym odpowiadają pewne przestrzenie przedmiotowe, dla pozycji bazowej, numerkowej i ogólnej, ** {{Code|dyskusja typu jednostki}}, {{Code|dyskusja typu jednostki 1}}, {{Code|dyskusja typ jednostki 2}}, {{Code|dyskusja typ jednostki 3}},..., {{Code|dyskusja typ jednostki i}} - czy dany typ jednostki ma przedstawiać, jeśli niepusta, przestrzeń dyskusji dla pozycji bazowej, numerkowej i ogólnej. Parametry ramki tablicy transportu dziecka: * Parametry dziecka są takie same jak rodzica dla funkcji pudełkowej plus tu wymienione, * {{Code|numer jednostki}} - jak parametr {{Code|i}} nie został ustawiony, to wtedy liczy się ta zmienna. Przykłady: <syntaxhighlight lang="mediawiki"> {{Nazwa szablonu 1|nazwa przestrzeni nazw=Wikibooks|nazwa przestrzeni nazw=|nazwa przestrzeni nazw i=|nazwa jednostki=Szablon:Strona}} ---- {{Nazwa szablonu 2|nazwa przestrzeni nazw=Wikibooks|nazwa przestrzeni nazw 1=Szablon|nazwa przestrzeni nazw i=|nazwa jednostki 2=Wikibooks:Strona}} </syntaxhighlight> W pierwszym wywołaniu {{Code|nazwa przestrzeni nazw}} jest puste, ale dla tego bazowego (bez numerka) szukamy przestrzeni nazw, a więc ta nazwa jest ostateczna. ---- W drugim wywołaniu w dziecku powiedzmy jest wywołanie, i szukamy nazwy przestrzeni nazw o numerze dwa, która została podana, ale istnieje za to jej wersji ogólna {{Code|nazwa przestrzeni nazw i}} i domyślna {{Code|nazwa przestrzeni nazw}}, ale wtedy dla tego numerkowego liczy się to ogólne z {{Code| i}}, a ponieważ ta nazwa jest pusta, więc będziemy liczyli nazwę przestrzeni nazw z {{Code|nazwa jednostki 2}}. Odpowiadająca powyższemu kodowi, powiedzmy wikikod, według ich zawartości, przedstawia się: <syntaxhighlight lang="mediawiki"> {{#invoke:Pudełko|Nazwa przestrzeni nazw 3}} ---- {{#invoke:Pudełko|Nazwa przestrzeni nazw 3|numer jednostki=2}} </syntaxhighlight> Na podstawie powyższego przykładu otrzymamy wynik o schemacie, nie wyniku, bo tam nie ma zmiennej {{Code|nazwa przestrzeni nazw 1}}, ale jest {{Code|nazwa przestrzeni nazw i}}: <syntaxhighlight lang="mediawiki"> <!-- nazwa przestrzeni nazw=""; --> <!-- Czyli wynik: --> <!-- wynik pusty --> <!-- Widzimy, że wygenerowała się nazwa przestrzeni nazw, którą jest przestrzeń nazw główna, jest ciągiem pustym: ""; --> ---- <!-- Ale nie "nazwa przestrzeni nazw 2", bo jej nie ma, ale za to istnieje "nazwa przestrzeni nazw i"; --> <!-- nazwa przestrzeni nazw 2=nazwa przestrzeni nazw i="", a nazwa jednostki 2="Wikibooks:Strona"; --> <!-- Czyli wynik: --> Wikibooks <!-- Widzimy, że wygenerowała się nazwa przestrzeni nazw, którą jest przestrzeń nieprogramowa, ale projektu, wychodząca z nazwy jednostek w tym przypadku z "nazwa jednostki 2"; --> </syntaxhighlight> Dla parametrów numerkowych nie jest brana w tym powyższym przykładzie zmienna {{Code|nazwa przestrzeni nazw 2}}, bo jej nie ma, ale za to jest {{Code|nazwa przestrzeni nazw i}}, bo ona występuje jako parametr domyślny ogólny dla parametrów numerkowych. Tytaj jest używana jest zmienna {{Code|nazwa jednostki 2}} do wygenerowania ostatecznego wyniku, bo jak można zauważyć, parametry przestrzenne wskazują na przestrzeń główną, a nazwy jednostek już nie. Dla parametrów bazowych mamy zmienną {{Code|nazwa przestrzeni nazw}}, ona jest pusta, więc to zostanie wziete do ostatecznego wyniku. Przykłady w wikikodzie: * {{Code|{{m|Pudełko|Nazwa przestrzeni nazw 3|Szablon|nazwa przestrzeni nazw{{=}}Moja przestrzeń|nazwa jednostki{{=}}Wikibooks:Strona}}}} → {{Tt|{{#invoke:Pudełko|Nazwa przestrzeni nazw 3|Szablon|nazwa przestrzeni nazw=Moja przestrzeń|nazwa jednostki=Wikibooks:Szablon}}}} * {{Code|{{m|Pudełko|Nazwa przestrzeni nazw 3|Szablon|nazwa przestrzeni nazw 2{{=}}Moja przestrzeń|nazwa jednostki 2{{=}}Wikibooks:Strona}|numer jednostki{{=}}2}}}} → {{Tt|{{#invoke:Pudełko|Nazwa przestrzeni nazw 3|Szablon|nazwa przestrzeni nazw 2=Moja przestrzeń|nazwa jednostki 2=Wikibooks:Szablon|numer jednostki=2}}}} * {{Code|{{m|Pudełko|Nazwa przestrzeni nazw 3|nazwa przestrzeni nazw{{=}}|nazwa jednostki{{=}}Wikibooks:Strona}}}} → {{Tt|{{#invoke:Pudełko|Nazwa przestrzeni nazw 3|nazwa przestrzeni nazw=|nazwa jednostki=Wikibooks:Szablon}}}} * {{Code|{{m|Pudełko|Nazwa przestrzeni nazw 3|nazwa przestrzeni nazw 2{{=}}|nazwa jednostki 2{{=}}Wikibooks:Strona|numer jednostki{{=}}2}}}} → {{Tt|{{#invoke:Pudełko|Nazwa przestrzeni nazw 3|nazwa przestrzeni nazw 2=|nazwa jednostki 2=Wikibooks:Szablon|numer jednostki=2}}}} Powyżej dla przykładu podano parametry nie w rodzicu w szablonie, tylko w dziecku, jeśli chodzi o parametry nazw przestrzeni nazw i nazw jednostek, ale ich się za to nie powinno podawać w tych ramach, tylko w szablonach, w których wywoływane są te ramki pudełek {{Code|{{m|Pudełko}}}}, ale tak tutaj tak zrobiono by było najłatwiej sprawdzić działanie tego typu funkcji. Analogicznie możemy podawać parametry typu jednostki, np.: wywołaniu modułowym {{Code|{{m|Pudełko|Nazwa przestrzeni nazw 3|typ jednostki 2{{=}}Podręcznik|nazwa jednostki 2{{=}}Szablon:Strona|numer jednostki{{=}}2}}}} (ale wtedy jest brana przestrzeń nazw z nazwy jednostki), ale o tym więcej w rozdziałach {{Code|{{sr|#p["Typ jednostki 3"](frame,i)|p=Pudełko}}}} w „{{sr|#Funkcje typu jednostki|p=Pudełko}}”, on definiuje przestrzenie przedmiotowe, ale można użyć parametru dyskusji typu jednostki z wartością niepustą, wtedy wyświetli się nazwa przestrzeni nazw dyskusji. Jeżeli typ jednostki bazowy wskazuje na przestrzeń nazw główną, wtedy się nie liczą parametry nazw jednostek, a na numerkowy, wtedy się liczy. Również parametry typu jednostki nie powinno się podawać w dziecku w ramce, tylko w rodzicu w szablonie jako parametry, w którym ta ramka jest wywoływana, ale tutaj podano jedynie dla przykładu, jak najłatwiej sprawdzić działanie tych parametrów tej funkcji. Najpierw w funkcji nagłówku brane są parametry nazw przestrzeni nazw, a jeżeli ich nie ma, to parametry typu jednostki, a jeżeli nie ma lub parametry przestrzenne wskazują na przestrzeń główną, i nie ma nazwy jednostki, to generowane są nazwy tej funkcji na podstawie aktualnej strony. === {{Code|p["Nazwa przedmiotowej przestrzeni nazw 3"](frame,i)}} === Funkcja pisze przedmiotową nazwę przestrzeni nazw jakikolwiek nazwy przestrzeni nazw (tzn. nazwę przedmiotową nazwy przestrzenie nazw, czyli nie dyskusji, zamieniana jest na nią samą, czyli identyfikator przestrzeni się nie zmienia, a dyskusji, nie przedmiotową, przekształca się na przedmiotową jej odpowiadającą, czyli w tym przypadku identyfikator przestrzeni zmniejsza się o numer mniej), według podanej w zmiennej {{Code|nazwa przestrzeni nazw}} dla pozycja bazowej w podanych parametrach szablonu rodzicu ramki dziecka, lub dla innej pozycji należy parametr podawać w formie {{Code|nazwa przestrzeni nazw 1}}, {{Code|nazwa przestrzeni nazw 2}}, {{Code|nazwa przestrzeni nazw 3}},..., lub te parametry można podać w postaci ogólnej {{Code|nazwa przestrzeni nazw i}}. Parametry podaje się w parametrach rodzica wywołania tej funkcji {{Code|{{m|Pudełko|Nazwa przedmiotowej przestrzeni nazw 3}}}} (ale ich nie trzeba podawać w dziecku, ale można) i w parametrach dziecka, jeśli chodzi o zmienną {{Code|numer jednostki}}, czyli np.: {{Code|{{m|Pudełko|Nazwa przedmiotowej przestrzeni nazw 3|numer jednostki{{=}}<jakaś liczba całkowita dodatnia>}}}}. Te parametry przestrzenne zamiast w rodzicu w szablonie można podać w ramce dziecka, wtedy parametry dziecka mają pierwszeństwo. Parametry przestrzenne mogą mogą być podane w postaci przestrzeni przedmiotowej lub dyskusji, ale ta funkcja zawsze ją zamienia na przedmiotową. Przestrzeń nazw z parametrów nazw przestrzennych bazowych (bez numerka) może odpowiadać wartości przestrzeni głównej, to wtedy odpowiednia przestrzeń nazw z parametru nazwy jednostki się nie liczy w tej funkcji, aby się liczyła należy użyć funkcji {{Code|{{sr|#p["Nazwa przedmiotowej przestrzeni nazw 2"](frame,...)|p=Pudełko}}}}. W tym przypadku funkcja działa jak {{Code|{{sr|#p["Nazwa przedmiotowej przestrzeni nazw"](frame,...)|p=Pudełko}}}}. Przestrzeń nazw z parametrów nazw przestrzennych numerkowych może odpowiadać wartości przestrzeni głównej, to wtedy odpowiednia przestrzeń nazw z parametru nazwy jednostki się liczy w tej funkcji, wtedy jest liczona nazwa przestrzeni nazw z tego parametru. Gdy parametry przestrzenne lub typ jednostki w drugim podejściu nie wskazują na przestrzeń główną, to wtedy działanie tej funkcji jest podobne do {{Code|{{sr|#p["Nazwa przedmiotowej przestrzeni nazw 2"](frame,...)|p=Pudełko}}}}. Definicja skrótowa funkcji: <syntaxhighlight lang="lua"> p["Nazwa przedmiotowej przestrzeni nazw 3"]=function(frame,czy_uwzglednic_alternatywna_nazwe,i)...end; </syntaxhighlight> Wtedy ciało funkcji tej, czyli jego definicja w środku, jest: <syntaxhighlight lang="lua"> -- Jest liczony numer parametru nazwy przestrzeni nazw, domyslnie chodzi tu o numer bazowy parametrów przestrzennych; local numer_jednostki=i or frame.args["numer jednostki"]; local liczba_numeru_jednostki=((numer_jednostki)and(tonumber(numer_jednostki)) or 0); local pudelko_pomocne_modul=require("Module:Pudełko/Pomocne"); -- Liczy nazwę przestrzeni nazw przedmiotową na podstawie podanych parametrów; return pudelko_pomocne_modul.Uzyskanie_nazw_jednostki(frame,1,liczba_numeru_jednostki,nil,1); </syntaxhighlight> Parametry funkcji: * {{Code|frame}} - tablica ramki tablicy transportu, * {{Code|czy_uwzglednic_alternatywna_nazwe}} - czy ma uwzględniać nazwę przestrzeni nazw domyślną szablonu, dostępne wartości: {{Code|false}}, w której nazwa domyślna nie jest uwzględniana wtedy, oraz {{Code|nil}} i {{Code|true}}, które oznaczają to samo, w tym jeżeli ona jest uwzględniana, wtedy jest brany parametr pierwszy dziecka, który musi istnieć przy takiej wartości tego parametru, tzn. {{Code|{{m|Pudełko|Nazwa przedmiotowej przestrzeni nazw 3|Dyskusja szablonu}}}} - ta nazwa domyślna zostanie zamieniona na przedmiotową, a jak ona by była przedmiotowa, to żadnej zamiany by nie było, a nazwa uzyskana z nazwy przestrzeni nazw z parametrów przestrzennych jest w takim przypadku błędna, to w takim razie brany jest ten parametr, a jeżeli ta nazwa domyślna jest błędna, czyli {{Code|{{m|Pudełko|Nazwa przedmiotowej przestrzeni nazw 3|Moja przestrzeń}}}}, wtedy funkcja zwraca stan błędu {{Code|(błąd)}}. * {{Code|i}} - numer zmiennej nazwy przestrzeni nazw. Funkcja wykorzystuje {{Code|{{sr|#p.Uzyskanie_nazw_jednostki(frame,...)|p=Pudełko/Pomocne}}}} do wyznaczania ogólnego nazwy przestrzeni nazw dla pozycji bazowej i numerkowej, tzn. dla pozycji: jeden, dwa, trzy,..., itd, i ich ogólnej. Parametr ramki tablicy transportu rodzica szablonu: * {{Code|nazwa przestrzeni nazw}}, {{Code|nazwa przestrzeni nazw 1}}, {{Code|nazwa przestrzeni nazw 2}}, {{Code|nazwa przestrzeni nazw 3}},..., {{Code|nazwa przestrzeni nazw i}} - nazwy przestrzeni nazw dla pozycji bazowej oraz zwykłej i ogólnej numerkowej, * {{Code|typ jednostki}}, {{Code|typ jednostki 1}}, {{Code|typ jednostki 2}}, {{Code|typ jednostki 3}},..., {{Code|typ jednostki i}} - typy jednostek, którym odpowiadają pewne przestrzenie przedmiotowe, dla pozycji bazowej, numerkowej i ogólnej. Parametry ramki tablicy transportu dziecka: * Parametry dziecka są takie same jak rodzica dla funkcji pudełkowej plus tu wymienione, * {{Code|numer jednostki}} - jak parametr {{Code|i}} nie został ustawiony, to wtedy liczy się ta zmienna. Przykłady: <syntaxhighlight lang="mediawiki"> {{Nazwa szablonu 1|nazwa przestrzeni nazw=Wikibooks|nazwa przestrzeni nazw=|nazwa przestrzeni nazw i=|nazwa jednostki=Dyskusja Wikibooks:Strona}} ---- {{Nazwa szablonu 2|nazwa przestrzeni nazw=Wikibooks|nazwa przestrzeni nazw 1=Szablon|nazwa przestrzeni nazw i=|nazwa jednostki 2=Dyskusja Wikibooks:Strona}} </syntaxhighlight> W pierwszym wywołaniu {{Code|nazwa przestrzeni nazw}} jest puste, ale dla tego bazowego (bez numerka) szukamy przestrzeni nazw, a więc ta nazwa jest ostateczna. ---- W drugim wywołaniu w dziecku powiedzmy jest wywołanie, i szukamy nazwy przestrzeni nazw o numerze dwa, która została podana, ale istnieje za to jej wersji ogólna {{Code|nazwa przestrzeni nazw i}} i domyślna {{Code|nazwa przestrzeni nazw}}, ale wtedy dla tego numerkowego liczy się to ogólne z {{Code| i}}, a ponieważ ta nazwa jest pusta, więc będziemy liczyli nazwę przestrzeni nazw z {{Code|nazwa jednostki 2}}. Odpowiadająca powyższemu kodowi, powiedzmy wikikod, według ich zawartości, przedstawia się: <syntaxhighlight lang="mediawiki"> {{#invoke:Pudełko|Nazwa przedmiotowej przestrzeni nazw 3}} ---- {{#invoke:Pudełko|Nazwa przedmiotowej przestrzeni nazw 3|numer jednostki=2}} </syntaxhighlight> Na podstawie powyższego przykładu otrzymamy wynik o schemacie, nie wyniku, bo tam nie ma zmiennej {{Code|nazwa przestrzeni nazw 1}}, ale jest {{Code|nazwa przestrzeni nazw i}}: <syntaxhighlight lang="mediawiki"> <!-- nazwa przestrzeni nazw=""; --> <!-- Czyli wynik: --> <!-- wynik pusty --> <!-- Widzimy, że wygenerowała się nazwa przestrzeni nazw, którą jest przestrzeń nazw główna, jest ciągiem pustym: ""; --> ---- <!-- Ale nie "nazwa przestrzeni nazw 2", bo jej nie ma, ale za to istnieje "nazwa przestrzeni nazw i"; --> <!-- nazwa przestrzeni nazw 2=nazwa przestrzeni nazw i="", a nazwa jednostki 2="Dyskusja Wikibooks:Strona"; --> <!-- Czyli wynik: --> Wikibooks <!-- Widzimy, że wygenerowała się nazwa przestrzeni nazw, którą jest przestrzeń nieprogramowa, ale projektu, wychodząca z nazwy jednostek w tym przypadku z "nazwa jednostki 2"; --> </syntaxhighlight> Dla parametrów numerkowych nie jest brana w tym powyższym przykładzie zmienna {{Code|nazwa przestrzeni nazw 2}}, bo jej nie ma, ale za to jest {{Code|nazwa przestrzeni nazw i}}, bo ona występuje jako parametr domyślny ogólny dla parametrów numerkowych. Tytaj jest używana jest zmienna {{Code|nazwa jednostki 2}} do wygenerowania ostatecznego wyniku, bo jak można zauważyć, parametry przestrzenne wskazują na przestrzeń główną, a nazwy jednostek już nie. Dla parametrów bazowych mamy zmienną {{Code|nazwa przestrzeni nazw}}, ona jest pusta, więc to zostanie wziete do ostatecznego wyniku. Przykłady w wikikodzie: * {{Code|{{m|Pudełko|Nazwa przedmiotowej przestrzeni nazw 3|Dyskusja szablonu|nazwa przestrzeni nazw{{=}}Moja przestrzeń|nazwa jednostki{{=}}Dyskusja Wikibooks:Strona}}}} → {{Tt|{{#invoke:Pudełko|Nazwa przedmiotowej przestrzeni nazw 3|Dyskusja szablonu|nazwa przestrzeni nazw=Moja przestrzeń||nazwa jednostki=Dyskusja Wikibooks:Szablon}}}} * {{Code|{{m|Pudełko|Nazwa przedmiotowej przestrzeni nazw 3|Dyskusja szablonu|nazwa przestrzeni nazw 2{{=}}Moja przestrzeń|nazwa jednostki 2{{=}}Dyskusja Wikibooks:Strona|numer jednostki{{=}}2}}}} → {{Tt|{{#invoke:Pudełko|Nazwa przedmiotowej przestrzeni nazw 3|Dyskusja szablonu|nazwa przestrzeni nazw 2=Moja przestrzeń||nazwa jednostki 2=Dyskusja Wikibooks:Szablon|numer jednostki=2}}}} * {{Code|{{m|Pudełko|Nazwa przedmiotowej przestrzeni nazw 3|nazwa przestrzeni nazw{{=}}|nazwa jednostki{{=}}Dyskusja Wikibooks:Strona}}}} → {{Tt|{{#invoke:Pudełko|Nazwa przedmiotowej przestrzeni nazw 3|nazwa przestrzeni nazw=|nazwa jednostki=Dyskusja Wikibooks:Szablon}}}} * {{Code|{{m|Pudełko|Nazwa przedmiotowej przestrzeni nazw 3|nazwa przestrzeni nazw 2{{=}}|nazwa jednostki 2{{=}}Dyskusja Wikibooks:Strona|numer jednostki{{=}}2}}}} → {{Tt|{{#invoke:Pudełko|Nazwa przedmiotowej przestrzeni nazw 3|nazwa przestrzeni nazw 2=|nazwa jednostki 2=Dyskusja Wikibooks:Szablon|numer jednostki=2}}}} Powyżej dla przykładu podano parametry nie w rodzicu w szablonie, tylko w dziecku, jeśli chodzi o parametry nazw przestrzeni nazw, ale ich się za to nie powinno podawać w tych ramach, tylko w szablonach, w których wywoływane są te ramki pudełek {{Code|{{m|Pudełko}}}}, ale tak tutaj tak zrobiono by było najłatwiej sprawdzić działanie tego typu funkcji. Analogicznie możemy podawać parametry typu jednostki, np.: wywołaniu modułowym {{Code|{{m|Pudełko|Nazwa przedmiotowej przestrzeni nazw 3|typ jednostki 2{{=}}strona szablonu|numer jednostki{{=}}2}}}}, ale o tym więcej w rozdziałach {{Code|{{sr|# p["Przedmiotowy typ jednostki 3"](frame,i)|p=Pudełko}}}} w „{{sr|#Funkcje typu jednostki|p=Pudełko}}”, ale wtedy ta sama nazwa przestrzeni nazw reprezentowana przez {{Parametr|typ jednostki 2|strona szablonu}}, jest zamieniana na to samo, lepiej jest tutaj używać parametrów przestrzennych nazw niż typu jednostki, bo typ jednostki ma taką samą wartość dla przestrzeni przedmiotowej, co dyskusji. Tutaj parametr dyskusji typu jednostki bazowy i numerkowy ogólny, czy szczegółowy, nie gra roli, bo nawet, gdy wygenerujemy nazwę przestrzeni dyskusji za pomoca tego parametru, to i tak otrzymamy na samym końcu jego nazwę przedmiotową. Jeżeli typ jednostki bazowy wskazuje na przestrzeń nazw główną, wtedy się nie liczą parametry nazw jednostek, a na numerkowy, wtedy się liczy. Również parametry typu jednostki nie powinno się podawać w dziecku w ramce, tylko w rodzicu w szablonie jako parametry, w którym ta ramka jest wywoływana, ale tutaj podano jedynie dla przykładu, jak najłatwiej sprawdzić działanie tych parametrów tej funkcji. Najpierw w funkcji nagłówku brane są parametry nazw przestrzeni nazw, a jeżeli ich nie ma, to parametry typu jednostki, a jeżeli nie ma, to generowane są nazwy na podstawie aktualnego modułu. === {{Code|p["Nazwa przestrzeni nazw dyskusji 3"](frame,i)}} === Funkcja pisze nazwę przestrzeni nazw dyskusji jakikolwiek nazwy przestrzeni nazw (tzn. nazwę dyskusji nazwy przestrzenie nazw, czyli nie przedmiotowej, zamieniana jest na nią samą, czyli identyfikator przestrzeni się nie zmienia, a przedmiotową, nie dyskusji, przekształca się na dyskusji jej odpowiadającą, czyli w tym przypadku identyfikator przestrzeni zwiększa się o numer więcej), według, i nie zawsze tylko, podanej w zmiennej {{Code|nazwa przestrzeni nazw}} dla pozycja bazowej w podanych parametrach szablonu rodzicu ramki dziecka, lub dla innej pozycji należy parametr podawać w formie {{Code|nazwa przestrzeni nazw 1}}, {{Code|nazwa przestrzeni nazw 2}}, {{Code|nazwa przestrzeni nazw 3}},..., lub te parametry można podać w postaci ogólnej {{Code|nazwa przestrzeni nazw i}}. W tej funkcji trzeba też podawać parametry nazwy jednostek {{Code|nazwa jednostki}}, {{Code|nazwa jednostki 1}}, {{Code|nazwa jednostki 2}}, {{Code|nazwa jednostki 3}},... Parametry podaje się w parametrach rodzica wywołania tej funkcji {{Code|{{m|Pudełko|Nazwa przestrzeni nazw dyskusji 3}}}} (ale ich nie trzeba podawać w dziecku, ale można) i w parametrach dziecka, jeśli chodzi o zmienną {{Code|numer jednostki}}, czyli np.: {{Code|{{m|Pudełko|Nazwa przestrzeni nazw dyskusji 3|numer jednostki{{=}}<jakaś liczba całkowita dodatnia>}}}}. Te parametry przestrzenne zamiast w rodzicu w szablonie można podać w ramce dziecka, wtedy parametry dziecka mają pierwszeństwo. Przestrzeń nazw z parametrów nazw przestrzennych bazowych (bez numerka) może odpowiadać wartości przestrzeni głównej, to wtedy odpowiednia przestrzeń nazw z parametru nazwy jednostki się nie liczy w tej funkcji, aby się liczyła należy użyć funkcji {{Code|{{sr|#p["Nazwa przestrzeni nazw dyskusji 2"](frame,...)|p=Pudełko}}}}. W tym przypadku funkcja działa jak {{Code|{{sr|#p["Nazwa przestrzeni nazw dyskusji"](frame,...)|p=Pudełko}}}}. Przestrzeń nazw z parametrów nazw przestrzennych numerkowych może odpowiadać wartości przestrzeni głównej, to wtedy odpowiednia przestrzeń nazw z parametru nazwy jednostki się liczy w tej funkcji, wtedy jest liczona nazwa przestrzeni nazw z tego parametru. Gdy parametry przestrzenne lub typ jednostki w drugim podejściu nie wskazują na przestrzeń główną, to wtedy działanie tej funkcji jest podobne do {{Code|{{sr|#p["Nazwa przestrzeni nazw dyskusji 2"](frame,...)|p=Pudełko}}}}. Definicja skrótowa funkcji: <syntaxhighlight lang="lua"> p["Nazwa przestrzeni nazw dyskusji 3"]=function(frame,czy_uwzglednic_alternatywna_nazwe,i)...end; </syntaxhighlight> Wtedy ciało funkcji tej, czyli jego definicja w środku, jest: <syntaxhighlight lang="lua"> -- Jest liczony numer parametru nazwy przestrzeni nazw, domyslnie chodzi tu o numer bazowy parametrów przestrzennych; local numer_jednostki=i or frame.args["numer jednostki"]; local liczba_numeru_jednostki=((numer_jednostki)and(tonumber(numer_jednostki)) or 0); local pudelko_pomocne_modul=require("Module:Pudełko/Pomocne"); -- Liczy nazwę przestrzeni nazw dyskusji na podstawie podanych parametrów; return pudelko_pomocne_modul.Uzyskanie_nazw_jednostki(frame,2,liczba_numeru_jednostki,nil,1); </syntaxhighlight> Parametry funkcji: * {{Code|frame}} - tablica ramki tablicy transportu, * {{Code|czy_uwzglednic_alternatywna_nazwe}} - czy ma uwzględniać nazwę przestrzeni nazw domyślną szablonu, dostępne wartości: {{Code|false}}, w której nazwa domyślna nie jest uwzględniana wtedy, oraz {{Code|nil}} i {{Code|true}}, które oznaczają to samo, w tym jeżeli ona jest uwzględniana, wtedy jest brany parametr pierwszy dziecka, który musi istnieć przy takiej wartości tego parametru, tzn. {{Code|{{m|Pudełko|Nazwa przestrzeni nazw dyskusji 3|Szablon}}}}, a nazwa uzyskana nazwy przestrzeni nazw jest w takim przypadku błędna, a jeżeli nazwa domyślna jest błędna, czyli {{Code|{{m|Pudełko|Nazwa przestrzeni nazw dyskusji 3|Moja przestrzeń}}}}, wtedy funkcja zwraca stan błędu {{Code|(błąd)}}. * {{Code|i}} - numer zmiennej nazwy przestrzeni nazw. Funkcja wykorzystuje {{Code|{{sr|#p.Uzyskanie_nazw_jednostki(frame,...)|p=Pudełko/Pomocne}}}} do wyznaczania ogólnego nazwy przestrzeni nazw dla pozycji bazowej i numerkowej, tzn. dla pozycji: jeden, dwa, trzy,..., itd, i ich ogólnej. Parametr ramki tablicy transportu rodzica szablonu: * {{Code|nazwa przestrzeni nazw}}, {{Code|nazwa przestrzeni nazw 1}}, {{Code|nazwa przestrzeni nazw 2}}, {{Code|nazwa przestrzeni nazw 3}},..., {{Code|nazwa przestrzeni nazw i}} - nazwy przestrzeni nazw dla pozycji bazowej oraz zwykłej i ogólnej numerkowej, * {{Code|nazwa jednostki}}, {{Code|nazwa jednostki 1}}, {{Code|nazwa jednostki 2}}, {{Code|nazwa jednostki 3}},... - nazwy jednostek dla pozycji bazowej i numerkowej, * {{Code|typ jednostki}}, {{Code|typ jednostki 1}}, {{Code|typ jednostki 2}}, {{Code|typ jednostki 3}},..., {{Code|typ jednostki i}} - typy jednostek, którym odpowiadają pewne przestrzenie przedmiotowe, dla pozycji bazowej, numerkowej i ogólnej. Parametry ramki tablicy transportu dziecka: * Parametry dziecka są takie same jak rodzica dla funkcji pudełkowej plus tu wymienione, * {{Code|numer jednostki}} - jak parametr {{Code|i}} nie został ustawiony, to wtedy liczy się ta zmienna. Przykłady: <syntaxhighlight lang="mediawiki"> {{Nazwa szablonu 1|nazwa przestrzeni nazw=Wikibooks|nazwa przestrzeni nazw=|nazwa przestrzeni nazw i=|nazwa jednostki=Szablon:Strona}} ---- {{Nazwa szablonu 2|nazwa przestrzeni nazw=Wikibooks|nazwa przestrzeni nazw 1=Szablon|nazwa przestrzeni nazw i=|nazwa jednostki 2=Wikibooks:Strona}} </syntaxhighlight> W pierwszym wywołaniu {{Code|nazwa przestrzeni nazw}} jest puste, ale dla tego bazowego (bez numerka) szukamy przestrzeni nazw, a więc ta nazwa jest ostateczna. ---- W drugim wywołaniu w dziecku powiedzmy jest wywołanie, i szukamy nazwy przestrzeni nazw o numerze dwa, która została podana, ale istnieje za to jej wersji ogólna {{Code|nazwa przestrzeni nazw i}} i domyślna {{Code|nazwa przestrzeni nazw}}, ale wtedy dla tego numerkowego liczy się to ogólne z {{Code| i}}, a ponieważ ta nazwa jest pusta, więc będziemy liczyli nazwę przestrzeni nazw z {{Code|nazwa jednostki 2}}. Odpowiadająca powyższemu kodowi, powiedzmy wikikod, według ich zawartości, przedstawia się: <syntaxhighlight lang="mediawiki"> {{#invoke:Pudełko|Nazwa przestrzeni nazw 3}} ---- {{#invoke:Pudełko|Nazwa przestrzeni nazw 3|numer jednostki=2}} </syntaxhighlight> Na podstawie powyższego przykładu otrzymamy wynik o schemacie, nie wyniku, bo tam nie ma zmiennej {{Code|nazwa przestrzeni nazw 1}}, ale jest {{Code|nazwa przestrzeni nazw i}}: <syntaxhighlight lang="mediawiki"> <!-- nazwa przestrzeni nazw=""; --> <!-- Czyli wynik: --> Dyskusja <!-- Widzimy, że wygenerowała się nazwa przestrzeni nazw, którą jest przestrzeń nazw niegłówna, jest ciągiem niepustym; --> ---- <!-- Ale nie "nazwa przestrzeni nazw 2", bo jej nie ma, ale za to istnieje "nazwa przestrzeni nazw i"; --> <!-- nazwa przestrzeni nazw 2=nazwa przestrzeni nazw i="", a nazwa jednostki 2="Wikibooks:Strona"; --> <!-- Czyli wynik: --> Dyskusja Wikibooks <!-- Widzimy, że wygenerowała się nazwa przestrzeni nazw, którą jest przestrzeń nieprogramowa, ale projektu, wychodząca z nazwy jednostek w tym przypadku z "nazwa jednostki 2"; --> </syntaxhighlight> Dla parametrów numerkowych nie jest brana w tym powyższym przykładzie zmienna {{Code|nazwa przestrzeni nazw 2}}, bo jej nie ma, ale za to jest {{Code|nazwa przestrzeni nazw i}}, bo ona występuje jako parametr domyślny ogólny dla parametrów numerkowych. Tytaj jest używana jest zmienna {{Code|nazwa jednostki 2}} do wygenerowania ostatecznego wyniku, bo jak można zauważyć, parametry przestrzenne wskazują na przestrzeń główną, a nazwy jednostek już nie. Dla parametrów bazowych mamy zmienną {{Code|nazwa przestrzeni nazw}}, ona jest pusta, więc to zostanie wziete do ostatecznego wyniku. Przykłady w wikikodzie: * {{Code|{{m|Pudełko|Nazwa przestrzeni nazw dyskusji 3|Szablon|nazwa przestrzeni nazw{{=}}Moja przestrzeń|nazwa jednostki{{=}}Wikibooks:Strona}}}} → {{Tt|{{#invoke:Pudełko|Nazwa przestrzeni nazw dyskusji 3|Szablon|nazwa przestrzeni nazw=Moja przestrzeń|nazwa jednostki=Wikibooks:Szablon}}}} * {{Code|{{m|Pudełko|Nazwa przestrzeni nazw dyskusji 3|Szablon|nazwa przestrzeni nazw 2{{=}}Moja przestrzeń|nazwa jednostki 2{{=}}Wikibooks:Strona|numer jednostki{{=}}2}}}} → {{Tt|{{#invoke:Pudełko|Nazwa przestrzeni nazw dyskusji 3|Szablon|nazwa przestrzeni nazw 2=Moja przestrzeń|nazwa jednostki 2=Wikibooks:Szablon|numer jednostki=2}}}} * {{Code|{{m|Pudełko|Nazwa przestrzeni nazw dyskusji 3|nazwa przestrzeni nazw{{=}}|nazwa jednostki{{=}}Wikibooks:Strona}}}} → {{Tt|{{#invoke:Pudełko|Nazwa przestrzeni nazw dyskusji 3|nazwa przestrzeni nazw=|nazwa jednostki=Wikibooks:Szablon}}}} * {{Code|{{m|Pudełko|Nazwa przestrzeni nazw dyskusji 3|nazwa przestrzeni nazw 2{{=}}|nazwa jednostki 2{{=}}Wikibooks:Strona|numer jednostki{{=}}2}}}} → {{Tt|{{#invoke:Pudełko|Nazwa przestrzeni nazw dyskusji 3|nazwa przestrzeni nazw 2=|nazwa jednostki 2=Wikibooks:Szablon|numer jednostki=2}}}} Powyżej dla przykładu podano parametry nie w rodzicu w szablonie, tylko w dziecku, jeśli chodzi o parametry nazw przestrzeni nazw i nazw jednostek, ale ich się za to nie powinno podawać w tych ramach, tylko w szablonach, w których wywoływane są te ramki pudełek {{Code|{{m|Pudełko}}}}, ale tak tutaj tak zrobiono by było najłatwiej sprawdzić działanie tego typu funkcji. Analogicznie możemy podawać parametry typu jednostki, np.: wywołaniu modułowym {{Code|{{m|Pudełko|Nazwa przestrzeni nazw dyskusji 3|typ jednostki 2{{=}}Podręcznik|nazwa jednostki 2{{=}}Szablon:Strona|numer jednostki{{=}}2}}}} (ale wtedy jest brana przestrzeń nazw z nazwy jednostki), ale o tym więcej w rozdziałach {{Code|{{sr|# p["Dyskusyjny typ jednostki 3"](frame,i)|p=Pudełko}}}} w „{{sr|#Funkcje typu jednostki|p=Pudełko}}”, one definiują przestrzenie dyskusji, ale można użyć parametru dyskusji typu jednostki z obojętnie jaką wartością niepustą, czy pustą, czy nawet jej nie podamy, wtedy wyświetli się nazwa przestrzeni nazw dyskusji. Jeżeli typ jednostki bazowy wskazuje na przestrzeń nazw główną, wtedy się nie liczą parametry nazw jednostek, a na numerkowy, wtedy się liczy. Również parametry typu jednostki nie powinno się podawać w dziecku w ramce, tylko w rodzicu w szablonie jako parametry, w którym ta ramka jest wywoływana, ale tutaj podano jedynie dla przykładu, jak najłatwiej sprawdzić działanie tych parametrów tej funkcji. Najpierw w funkcji nagłówku brane są parametry nazw przestrzeni nazw, a jeżeli ich nie ma, to parametry typu jednostki, a jeżeli nie ma lub parametry przestrzenne wskazują na przestrzeń główną, i nie ma nazwy jednostki, to generowane są nazwy tej funkcji na podstawie aktualnej strony. == Funkcje nazw jednostki trzeciej wersji == === {{Code|p["Nazwa jednostki 3"](frame,i)}} === === {{Code|p["Nazwa przedmiotowa jednostki 3"](frame,i)}} === === {{Code|p["Nazwa dyskusji jednostki 3"](frame,i)}} === == Funkcje typu jednostki == === {{Code|p["Typ jednostki"](frame,i)}} === === {{Code|p["Typ jednostki 2"](frame,i)}} === === {{Code|p["Typ jednostki 3"](frame,i)}} === === Funkcje typu jednostki przedmiotowe === ==== {{Code|p["Przedmiotowy typ jednostki"](frame,i)}} ==== ==== {{Code|p["Przedmiotowy typ jednostki 2"](frame,i)}} ==== ==== {{Code|p["Przedmiotowy typ jednostki 3"](frame,i)}} ==== === Fukcje typu jednostki dyskusji === ==== {{Code|p["Dyskusyjny typ jednostki"](frame,i)}} ==== ==== {{Code|p["Dyskusyjny typ jednostki 2"](frame,i)}} ==== ==== {{Code|p["Dyskusyjny typ jednostki 3"](frame,i)}} ==== == Funkcje chech pudełka == === {{Code|p["Cecha pudełka"](frame)}} === === {{Code|p["Przedmiotowa cecha pudełka"](frame)}} === === {{Code|p["Dyskusyjna cecha pudełka"](frame)}} === == Fukcje ogólnego pudełka == === {{Code|p["Ogólne pudełko"](frame)}} === == Funkcje ogólne == === {{Code|p["Tekst pudełka"](frame)}} === == Funkcje błędów pudełka == === {{Code|p["Błędy pudełka"](frame)}} === === {{Code|p["Przedmiotowe błędy pudełka"](frame)}} === === {{Code|p["Dyskusyjne błędy pudełka"](frame)}} === == Funkcje nazw stron == === {{Code|p["Nazwa strony głównej projektu"](frame,i)}} === === {{Code|p["Nazwa strony głównej dla dzieci projektu"](frame,i)}} === == Funkcje kodów == === {{Code|p["Kod języka"](frame,i)}} === === {{Code|p["Kod projektu"](frame,i)}} === === {{Code|p["Klucz projektu"](frame,i)}} === == Funkcje wiki == === {{Code|p["Inny niż język bieżący wiki"](frame)}} === === {{Code|p["Inne niż lokalne wiki"](frame)}} === === {{Code|p["Inne niż bieżące wiki"](frame)}} === == Funkcje typów parametrów, czy podane je == === {{Code|p["Podano parametry nienazwane"](frame)}} === === {{Code|p["Podano parametry numerowane"](frame)}} === === {{Code|p["Podano parametry nazwane"](frame)}} === == Funkcje kodów tego projektu == === {{Code|p["Kod projektu tego projektu"](frame)}} === === {{Code|p["Kod języka tego projektu"](frame)}} === === {{Code|p["Klucz projektu tego projektu"](frame)}} === == Funkcje stron == === {{Code|p["Strona główna tego projektu"](frame)}} === === {{Code|p["Strona główna dla dzieci tego projektu"](frame)}} === == Funkcje nazw stron drugiej wersji == === {{Code|p["Nazwa strony głównej dla dzieci projektu 2"](frame)}} === === {{Code| p["Nazwa strony głównej projektu 2"](frame)}} === {{BrClear}} <noinclude><!-- -->{{ProstaStronaKoniec}}<!-- -->{{Kategoria|Opisy funkcji, w Lua w Scribunto, w modułach}}<!-- --></noinclude> dorl1ftffepf6stbihk6oto19qjdtr9 540452 540451 2026-04-24T05:23:38Z Persino 2851 540452 wikitext text/x-wiki <noinclude>{{ProstaStronaStart | nagłówek = {{Podrozdział|{{ld2|Pudełko}}|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 pudelko_modul=require("Module:Pudełko"); </syntaxhighlight> dzięki, któremu można wypisywać funkcje należącego do niego. Posługuje się na parametrach pudełkowych {{Parametr|nazwa przestrzeni nazw}} (czy też bez numerka {{Parametr|nazwa przestrzeni nazw i}} dla tego numerowanego) lub te z numerkiem po jednej spacji w nich (ale nie dla tego z końcówką {{Code| i}}) mogą zostać użyte jako parametry szablonu. Moduł {{Code|{{ld2|Pudełko}}}} przedstawia funkcje nazw w oparciu o funkcje nazw {{Code|{{ld2|Nazwy}}}}, generuje on nazwy za pomocą parametrów pudełkowych podanych poniżej. Parametr {{Parametr|nazwa jednostki}} (lub parametr {{Parametr|cel}} dla numerka tego pierwszego, tego alternatywnego), lub te z numerkiem po jednej spacji w nazwie parametru, albo numerowane numerkami {{Code|1}}, {{Code|2}},..., mogą zostać użyte jako parametry szablonu. Parametry określające rodzaj jednostki {{Parametr|typ jednostki}} z {{Parametr|dyskusja typu jednostki}}, itp. w wersjach z numerkiem po jednej spacji w nich mogą zostać użyte jako parametry szablonu. A te tymi numerowanymi liczbami naturalnymi {{Tt|nazwy jednostki}} od jedynki wzwyż poprzez szablon, w którym są one użyte, one też mogą być użyte z dwukropkiem, te numerowane, na samym początku nazwy, wtedy one są traktowane jako pełne nazwy strony, i wtedy one nie zostaną z interpretowane, że do nich trzeba użyć parametr odpowiedni z nazwą przetrzeni nazw z tego numerowanego, czy ogólny, aby utworzyć znów inną pełną nazwę strony dla tego numerka. Zestawienie: * {{Code|nazwa przestrzeni nazw}} i {{Code|nazwa przestrzeni nazw i}} (ogólna nazwa przestrzeni nazw dla wszystkich numerków, i tych numerowanych jednostek) - i to pierwsze z numerkiem, tzn. {{Code|nazwa przestrzeni nazw 1}}, {{Code|nazwa przestrzeni nazw 2}}, ..., * {{Code|nazwa jednostki}} - i te z numerkiem: {{Code|nazwa jednostki 1}}, {{Code|nazwa jednostki 2}}, ..., lub gdy jest zamiast tego parametrem numerowany, {{Code|1}}, {{Code|2}},..., który dla tego pierwszego może być uznany jako: {{Code|cel}} {{=}} {{Code|1}}, * {{Code|typ jednostki}} (parametr bazowy) i {{Code|typ jednostki i}} (parametr domyślny numerkowy) - i te z numerkiem: {{Code|typ jednostki 1}}, {{Code|typ jednostki 2}}, ..., tzn. gdy chcemy określić z jakim typem jednostki mamy do czynienia w zależności do jakiej przestrzeni nazw należy, a w danej, czy jest on np. programowy, czy tylko jest opisem, jak to bywa w szablonach {{Np|Template|link=tak}}, podobnie jest w przypadku {{Np|Module|link=tak}}, czy jak jest w innych przestrzeniach nazw, ** {{Code|dyskusja typu jednostki}} (parametr bazowy) i {{Code|dyskusja typu jednostki i}} (parametr domyślny numerkowy) - i te z numerkiem: {{Code|dyskusja typu jednostki 1}}, {{Code|dyskusja typu jednostki 2}}, ..., gdy chcemy określić wartością niepustą,że chodzi tutaj o typ jednostki. == {{Code|p.CzyNiepoprawnaNazwa(nazwa_jednostki)}} == Funkcja sprawdzajaca, czy jest poprawnie podana nazwa jednostki, czy ma poprawną nazwę. Znakami tymi, z których nie powinna składać się nazwa jest {{Code|<nowiki>{}<>|[]#\n</nowiki>}} i dodatkowo znak {{Code|&#127;}} (kod {{Code|{{Nowiki|&#127;}}}}). Też nie może składać się z trzech znaków tyldy, tzn. {{Code|<nowiki>~~~</nowiki>}}. Również w swojej budowie nie może składać się ze kodów {{Strong|HTML}} literowych o wzorze {{Code|{{Nowiki|&(%a+);}}}}. Natomiast może składać się z {{Code|{{Nowiki|&#(%d+);}}}} i {{Code|{{Nowiki|&#x(%x+);}}}}, ale w pierw te kody muszą być zamienione na normalne znaki. Skrótowa definicja funkcji: <syntaxhighlight lang="lua"> function p.CzyNiepoprawnaNazwa(nazwa_jednostki)...end; </syntaxhighlight> Wtedy ciało funkcji tej, czyli jego definicja w środku, jest: <syntaxhighlight lang="lua"> -- Moduł: "Moduł:Html/dane", służy do ładowania znaku o kodzie HTML "&#127;"; local html_dane_modul=mw.loadData("Module:Html/dane"); return mw.ustring.match(nazwa_jednostki,"[{}<>|%[%]#\n"..html_dane_modul.znak_127.."]+") or mw.ustring.match(nazwa_jednostki,"~~~") or mw.ustring.match(nazwa_jednostki,"&(%a+);"); </syntaxhighlight> Parametry: * {{Code|nazwa_jednostki}} - nazwa jednostki do sprawdzenia. Przykłady: <syntaxhighlight lang="lua"> local pudelko_modul=require("Module:Pudełko"); -- Podana przykładowa niepoprawna nazwa jedostki local nazwa_jednostki="Nazwa pliku [[Nazwa linku w pliku]]"; -- Fukcja zwróci wartość: local czy_poprawna_nazwa=true; local czy_poprawna_nazwa=pudelko_modul.CzyNiepoprawnaNazwa(nazwa_jednostki); </syntaxhighlight> == Funkcje nazw przestrzeni nazw == === {{Code|p["Nazwa przestrzeni nazw"](frame,...)}} === Funkcja pisze nazwę przestrzeni nazw, niezależnie, czy to jest przedmiotowa, czy dyskusji, według podanej w zmiennej {{Code|nazwa przestrzeni nazw}} dla pozycja bazowej w podanych parametrach szablonu rodzicu ramki dziecka, lub dla innej pozycji należy parametr podawać w formie {{Code|nazwa przestrzeni nazw 1}}, {{Code|nazwa przestrzeni nazw 2}}, {{Code|nazwa przestrzeni nazw 3}},..., lub te parametry można podać w postaci ogólnej {{Code|nazwa przestrzeni nazw i}}. Parametry podaje się w parametrach rodzica wywołania tej funkcji {{Code|{{m|Pudełko|Nazwa przestrzeni nazw}}}} (ale ich nie trzeba podawać w dziecku, ale można) i w parametrach dziecka, jeśli chodzi o zmienną {{Code|numer jednostki}}, czyli np.: {{Code|{{m|Pudełko|Nazwa przestrzeni nazw|numer jednostki{{=}}<jakaś liczba całkowita dodatnia>}}}}. Te parametry przestrzenne zamiast w rodzicu w szablonie można podać w ramce dziecka, wtedy parametry dziecka mają pierwszeństwo. Przestrzeń nazw z parametrów nazw przestrzennych może odpowiadać wartości przestrzeni głównej, to wtedy odpowiednia przestrzeń nazw z parametru nazwy jednostki się nie liczy w tej funkcji, aby się liczyła należy użyć funkcji {{Code|{{sr|#p["Nazwa przestrzeni nazw 2"](frame,...)|p=Pudełko}}}}. Definicja skrótowa funkcji: <syntaxhighlight lang="lua"> p["Nazwa przestrzeni nazw"]=function(frame,czy_uwzglednic_alternatywna_nazwe,i)...end; </syntaxhighlight> Wtedy ciało funkcji tej, czyli jego definicja w środku, jest: <syntaxhighlight lang="lua"> -- Jest liczony numer parametru nazwy przestrzeni nazw, domyslnie chodzi tu o numer bazowy parametrów przestrzennych; local numer_jednostki=i or frame.args["numer jednostki"]; local liczba_numer_jednostki=((numer_jednostki)and(tonumber(numer_jednostki))or 0); local pudelko_pomocne_modul=require("Module:Pudełko/Pomocne"); -- Liczy nazwę przestrzeni nazw na podstawie podanych parametrów; return pudelko_pomocne_modul.Nazwa_przestrzeni_nazw(frame,0, czy_uwzglednic_alternatywna_nazwe,liczba_numer_jednostki); </syntaxhighlight> Parametry funkcji: * {{Code|frame}} - tablica ramki tablicy transportu, * {{Code|czy_uwzglednic_alternatywna_nazwe}} - czy ma uwzględniać nazwę przestrzeni nazw domyślną szablonu, dostępne wartości: {{Code|false}}, w której nazwa domyślna nie jest uwzględniana wtedy, oraz {{Code|nil}} i {{Code|true}}, które oznaczają to samo, w tym jeżeli ona jest uwzględniana, wtedy jest brany parametr pierwszy dziecka, który musi istnieć przy takiej wartości tego parametru, tzn. {{Code|{{m|Pudełko|Nazwa przestrzeni nazw|Szablon}}}}, a jeśli nazwa uzyskana nazwy przestrzeni nazw jest w takim przypadku błędna, a jeżeli nazwa domyślna jest błędna, czyli {{Code|{{m|Pudełko|Nazwa przestrzeni nazw|Moja przestrzeń}}}}, wtedy funkcja zwraca stan błędu {{Code|(błąd)}}. * {{Code|i}} - numer zmiennej nazwy przestrzeni nazw. Funkcja wykorzystuje {{Code|{{sr|#p.Nazwa_przestrzeni_nazw(frame,...)|p=Pudełko/Pomocne}}}} do wyznaczania ogólnego nazwy przestrzeni nazw dla pozycji bazowej i numerkowej, tzn. dla pozycji: jeden, dwa, trzy,..., itd, i ich ogólnej. Parametr ramki tablicy transportu rodzica szablonu: * {{Code|nazwa przestrzeni nazw}}, {{Code|nazwa przestrzeni nazw 1}}, {{Code|nazwa przestrzeni nazw 2}}, {{Code|nazwa przestrzeni nazw 3}},..., {{Code|nazwa przestrzeni nazw i}} - nazwy przestrzeni nazw dla pozycji bazowej oraz zwykłej i ogólnej numerkowej, * {{Code|typ jednostki}}, {{Code|typ jednostki 1}}, {{Code|typ jednostki 2}}, {{Code|typ jednostki 3}},..., {{Code|typ jednostki i}} - typy jednostek, którym odpowiadają pewne przestrzenie przedmiotowe, dla pozycji bazowej, numerkowej i ogólnej, ** {{Code|dyskusja typu jednostki}}, {{Code|dyskusja typu jednostki 1}}, {{Code|dyskusja typ jednostki 2}}, {{Code|dyskusja typ jednostki 3}},..., {{Code|dyskusja typ jednostki i}} - czy dany typ jednostki ma przedstawiać, jeśli niepusta, przestrzeń dyskusji dla pozycji bazowej, numerkowej i ogólnej. Parametry ramki tablicy transportu dziecka: * Parametry dziecka są takie same jak rodzica dla funkcji pudełkowej plus tu wymienione, * {{Code|numer jednostki}} - jak parametr {{Code|i}} nie został ustawiony, to wtedy liczy się ta zmienna. Przykłady: <syntaxhighlight lang="mediawiki"> {{Nazwa szablonu|nazwa przestrzeni nazw=Wikibooks|nazwa przestrzeni nazw 2=Szablon|nazwa przestrzeni nazw i=Moduł}} </syntaxhighlight> W dziecku powiedzmy jest wywołanie, i szukamy nazwy przestrzeni nazw o numerze dwa, która nie została podana, ale istnieje za to jej wersji ogólna {{Code|nazwa przestrzeni nazw i}} i domyślna {{Code|nazwa przestrzeni nazw}}: <syntaxhighlight lang="mediawiki"> {{#invoke:Pudełko|Nazwa przestrzeni nazw|numer jednostki=1}} </syntaxhighlight> Na podstawie powyższego przykładu otrzymamy wynik o schemacie, nie wyniku, bo tam nie ma zmiennej {{Code|nazwa przestrzeni nazw 1}}, ale jest {{Code|nazwa przestrzeni nazw i}}: <syntaxhighlight lang="mediawiki"> <!-- Ale nie "nazwa przestrzeni nazw", bo jej nie ma, ale za to istnieje "nazwa przestrzeni nazw i"; --> <!-- nazwa przestrzeni nazw 2=nazwa przestrzeni nazw i=Moduł; --> <!-- Czyli wynik: --> Moduł <!-- Widzimy, że wygenerowała się nazwa przestrzeni nazw, którą jest przestrzeń programowa, którą również jest "Szablon"; --> </syntaxhighlight> Nie jest brana w tym powyższym przykładzie zmienna {{Code|nazwa przestrzeni nazw}}, bo jej nie ma, ale za to jest {{Code|nazwa przestrzeni nazw i}}, bo ona występuje jako parametr domyślny ogólny dla parametrów numerkowych. Przykłady w wikikodzie: * {{Code|{{m|Pudełko|Nazwa przestrzeni nazw|numer jednostki{{=}}2}}}} → {{Tt|{{#invoke:Pudełko|Nazwa przestrzeni nazw|numer jednostki=2}}}} * {{Code|{{m|Pudełko|Nazwa przestrzeni nazw|Szablon|nazwa przestrzeni nazw i{{=}}Moja przestrzeń|numer jednostki{{=}}2}}}} → {{Tt|{{#invoke:Pudełko|Nazwa przestrzeni nazw|Szablon|nazwa przestrzeni nazw i=Moja przestrzeń|numer jednostki=2}}}} * {{Code|{{m|Pudełko|Nazwa przestrzeni nazw|nazwa przestrzeni nazw 2{{=}}Szablon|numer jednostki{{=}}2}}}} → {{Tt|{{#invoke:Pudełko|Nazwa przestrzeni nazw|nazwa przestrzeni nazw 2=Szablon|numer jednostki=2}}}} * {{Code|{{m|Pudełko|Nazwa przestrzeni nazw|nazwa przestrzeni nazw 2{{=}}Szablon|numer jednostki{{=}}2}}}} → {{Tt|{{#invoke:Pudełko|Nazwa przestrzeni nazw|nazwa przestrzeni nazw i=Szablon|numer jednostki=2}}}} * {{Code|{{m|Pudełko|Nazwa przestrzeni nazw|nazwa przestrzeni nazw{{=}}Szablon|numer jednostki{{=}}2}}}} → {{Tt|{{#invoke:Pudełko|Nazwa przestrzeni nazw|nazwa przestrzeni nazw=Szablon|numer jednostki=2}}}} Powyżej dla przykładu podano parametry nie w rodzicu w szablonie, tylko w dziecku, jeśli chodzi o parametry nazw przestrzeni nazw, ale ich się za to nie powinno podawać w tych ramach, tylko w szablonach, w których wywoływane są te ramki pudełek {{Code|{{m|Pudełko}}}}, ale tak tutaj tak zrobiono by było najłatwiej sprawdzić działanie tego typu funkcji. Analogicznie możemy podawać parametry typu jednostki, np.: wywołaniu modułowym {{Code|{{m|Pudełko|Nazwa przestrzeni nazw|typ jednostki 2{{=}}strona szablonu|numer jednostki{{=}}2}}}}, ale o tym więcej w rozdziałach {{Code|{{sr|# p["Typ jednostki"](frame,i)|p=Pudełko}}}} w „{{sr|#Funkcje typu jednostki|p=Pudełko}}”, on definiuje przestrzenie przedmiotowe, ale można użyć parametru dyskusji typu jednostki z wartością niepustą, wtedy wyświetli się nazwa przestrzeni nazw dyskusji. Również parametry typu jednostki nie powinno się podawać w dziecku w ramce, tylko w rodzicu w szablonie jako parametry, w którym ta ramka jest wywoływana, ale tutaj podano jedynie dla przykładu, jak najłatwiej sprawdzić działanie tych parametrów tej funkcji. Najpierw w funkcji nagłówku brane są parametry nazw przestrzeni nazw, a jeżeli ich nie ma, to parametry typu jednostki, a jeżeli nie ma, to generowane są nazwy na podstawie aktualnego modułu. === {{Code|p["Nazwa przedmiotowej przestrzeni nazw"](frame,...)}} === Funkcja pisze przedmiotową nazwę przestrzeni nazw jakikolwiek nazwy przestrzeni nazw (tzn. nazwę przedmiotową nazwy przestrzenie nazw, czyli nie dyskusji, zamieniana jest na nią samą, czyli identyfikator przestrzeni się nie zmienia, a dyskusji, nie przedmiotową, przekształca się na przedmiotową jej odpowiadającą, czyli w tym przypadku identyfikator przestrzeni zmniejsza się o numer mniej), według podanej w zmiennej {{Code|nazwa przestrzeni nazw}} dla pozycja bazowej w podanych parametrach szablonu rodzicu ramki dziecka, lub dla innej pozycji należy parametr podawać w formie {{Code|nazwa przestrzeni nazw 1}}, {{Code|nazwa przestrzeni nazw 2}}, {{Code|nazwa przestrzeni nazw 3}},..., lub te parametry można podać w postaci ogólnej {{Code|nazwa przestrzeni nazw i}}. Parametry podaje się w parametrach rodzica wywołania tej funkcji {{Code|{{m|Pudełko|Nazwa przedmiotowej przestrzeni nazw}}}} (ale ich nie trzeba podawać w dziecku, ale można) i w parametrach dziecka, jeśli chodzi o zmienną {{Code|numer jednostki}}, czyli np.: {{Code|{{m|Pudełko|Nazwa przedmiotowej przestrzeni nazw|numer jednostki{{=}}<jakaś liczba całkowita dodatnia>}}}}. Te parametry przestrzenne zamiast w rodzicu w szablonie można podać w ramce dziecka, wtedy parametry dziecka mają pierwszeństwo. Parametry przestrzenne mogą mogą być podane w postaci przestrzeni przedmiotowej lub dyskusji, ale ta funkcja zawsze ją zamienia na przedmiotową. Przestrzeń nazw z parametrów nazw przestrzennych może odpowiadać wartości przestrzeni głównej, to wtedy odpowiednia przestrzeń nazw z parametru nazwy jednostki się nie liczy w tej funkcji, aby się liczyła należy użyć funkcji {{Code|{{sr|#p["Nazwa przedmiotowej przestrzeni nazw 2"](frame,...)|p=Pudełko}}}}. Definicja skrótowa funkcji: <syntaxhighlight lang="lua"> p["Nazwa przedmiotowej przestrzeni nazw"]=function(frame,czy_uwzglednic_alternatywna_nazwe,i)...end; </syntaxhighlight> Wtedy ciało funkcji tej, czyli jego definicja w środku, jest: <syntaxhighlight lang="lua"> -- Jest liczony numer parametru nazwy przestrzeni nazw, domyslnie chodzi tu o numer bazowy parametrów przestrzennych; local numer_jednostki=i or frame.args["numer jednostki"]; local liczba_numer_jednostki=((numer_jednostki)and(tonumber(numer_jednostki))or 0); local pudelko_pomocne_modul=require("Module:Pudełko/Pomocne"); -- Liczy nazwę przestrzeni nazw przedmiotową na podstawie podanych parametrów; return pudelko_pomocne_modul.Nazwa_przestrzeni_nazw(frame,1, czy_uwzglednic_alternatywna_nazwe,liczba_numer_jednostki); </syntaxhighlight> Parametry funkcji: * {{Code|frame}} - tablica ramki tablicy transportu, * {{Code|czy_uwzglednic_alternatywna_nazwe}} - czy ma uwzględniać nazwę przestrzeni nazw domyślną szablonu, dostępne wartości: {{Code|false}}, w której nazwa domyślna nie jest uwzględniana wtedy, oraz {{Code|nil}} i {{Code|true}}, które oznaczają to samo, w tym jeżeli ona jest uwzględniana, wtedy jest brany parametr pierwszy dziecka, który musi istnieć przy takiej wartości tego parametru, tzn. {{Code|{{m|Pudełko|Nazwa przedmiotowej przestrzeni nazw|Dyskusja szablonu}}}} - ta nazwa domyślna zostanie zamieniona na przedmiotową, a jak ona by była przedmiotowa, to żadnej zamiany by nie było, a nazwa uzyskana z nazwy przestrzeni nazw z parametrów przestrzennych jest w takim przypadku błędna, to w takim razie brany jest ten parametr, a jeżeli ta nazwa domyślna jest błędna, czyli {{Code|{{m|Pudełko|Nazwa przedmiotowej przestrzeni nazw|Moja przestrzeń}}}}, wtedy funkcja zwraca stan błędu {{Code|(błąd)}}. * {{Code|i}} - numer zmiennej nazwy przestrzeni nazw. Funkcja wykorzystuje {{Code|{{sr|#p.Nazwa_przestrzeni_nazw(frame,...)|p=Pudełko/Pomocne}}}} do wyznaczania ogólnego nazwy przestrzeni nazw dla pozycji bazowej i numerkowej, tzn. dla pozycji: jeden, dwa, trzy,..., itd, i ich ogólnej. Parametr ramki tablicy transportu rodzica szablonu: * {{Code|nazwa przestrzeni nazw}}, {{Code|nazwa przestrzeni nazw 1}}, {{Code|nazwa przestrzeni nazw 2}}, {{Code|nazwa przestrzeni nazw 3}},..., {{Code|nazwa przestrzeni nazw i}} - nazwy przestrzeni nazw dla pozycji bazowej oraz zwykłej i ogólnej numerkowej, * {{Code|typ jednostki}}, {{Code|typ jednostki 1}}, {{Code|typ jednostki 2}}, {{Code|typ jednostki 3}},..., {{Code|typ jednostki i}} - typy jednostek, którym odpowiadają pewne przestrzenie przedmiotowe, dla pozycji bazowej, numerkowej i ogólnej. Parametry ramki tablicy transportu dziecka: * Parametry dziecka są takie same jak rodzica dla funkcji pudełkowej plus tu wymienione, * {{Code|numer jednostki}} - jak parametr {{Code|i}} nie został ustawiony, to wtedy liczy się ta zmienna. Przykłady: <syntaxhighlight lang="mediawiki"> {{Nazwa szablonu|nazwa przestrzeni nazw=Dyskusja Wikibooks|nazwa przestrzeni nazw 2=Dyskusja szablonu|nazwa przestrzeni nazw i=Dyskusja modułu}} </syntaxhighlight> W dziecku powiedzmy jest wywołanie, i szukamy nazwy przestrzeni nazw o numerze dwa, która nie została podana, ale istnieje za to jej wersji ogólna {{Code|nazwa przestrzeni nazw i}} i domyślna {{Code|nazwa przestrzeni nazw}}: <syntaxhighlight lang="mediawiki"> {{#invoke:Pudełko|Nazwa przedmiotowej przestrzeni nazw|numer jednostki=1}} </syntaxhighlight> Na podstawie powyższego przykładu otrzymamy wynik o schemacie, nie wyniku, bo tam nie ma zmiennej {{Code|nazwa przestrzeni nazw 1}}, ale jest {{Code|nazwa przestrzeni nazw i}}: <syntaxhighlight lang="mediawiki"> <!-- Ale nie "nazwa przestrzeni nazw", bo jej nie ma, ale za to istnieje "nazwa przestrzeni nazw i"; --> <!-- nazwa przestrzeni nazw 2=nazwa przestrzeni nazw i=Dyskusja modułu; --> <!-- Czyli wynik: --> Moduł <!-- Widzimy, że wygenerowała się nazwa przestrzeni nazw, którą jest przestrzeń przedmiotowa programowa przestrzeni dyskusji "Dyskusja modułu", którą również jest "Szablon" jego przestrzeni dyskusji "Dyskusja szablonu", a dla ich przestrzeni przedmiotowej, zamiast dyskusji, to samo przekształca się na to samo; --> </syntaxhighlight> Nie jest brana w tym powyższym przykładzie zmienna {{Code|nazwa przestrzeni nazw}}, bo jej nie ma, ale za to jest {{Code|nazwa przestrzeni nazw i}}, bo ona występuje jako parametr domyślny ogólny dla parametrów numerkowych. Przykłady w wikikodzie: * {{Code|{{m|Pudełko|Nazwa przedmiotowej przestrzeni nazw|numer jednostki{{=}}2}}}} → {{Tt|{{#invoke:Pudełko|Nazwa przedmiotowej przestrzeni nazw|numer jednostki=2}}}} * {{Code|{{m|Pudełko|Nazwa przedmiotowej przestrzeni nazw|Dyskusja szablonu|nazwa przestrzeni nazw i{{=}}Moja przestrzeń|numer jednostki{{=}}2}}}} → {{Tt|{{#invoke:Pudełko|Nazwa przedmiotowej przestrzeni nazw|Dyskusja szablonu|nazwa przestrzeni nazw i=Moja przestrzeń|numer jednostki=2}}}} * {{Code|{{m|Pudełko|Nazwa przedmiotowej przestrzeni nazw|nazwa przestrzeni nazw 2{{=}}Dyskusja szablonu|numer jednostki{{=}}2}}}} → {{Tt|{{#invoke:Pudełko|Nazwa przedmiotowej przestrzeni nazw|nazwa przestrzeni nazw 2=Dyskusja szablonu|numer jednostki=2}}}} * {{Code|{{m|Pudełko|Nazwa przedmiotowej przestrzeni nazw|nazwa przestrzeni nazw 2{{=}}Dyskusja szablonu|numer jednostki{{=}}2}}}} → {{Tt|{{#invoke:Pudełko|Nazwa przedmiotowej przestrzeni nazw|nazwa przestrzeni nazw i=Dyskusja szablonu|numer jednostki=2}}}} * {{Code|{{m|Pudełko|Nazwa przedmiotowej przestrzeni nazw|nazwa przestrzeni nazw{{=}}Dyskusja szablonu|numer jednostki{{=}}2}}}} → {{Tt|{{#invoke:Pudełko|Nazwa przedmiotowej przestrzeni nazw|nazwa przestrzeni nazw=Dyskusja szablonu|numer jednostki=2}}}} Powyżej dla przykładu podano parametry nie w rodzicu w szablonie, tylko w dziecku, jeśli chodzi o parametry nazw przestrzeni nazw, ale ich się za to nie powinno podawać w tych ramach, tylko w szablonach, w których wywoływane są te ramki pudełek {{Code|{{m|Pudełko}}}}, ale tak tutaj tak zrobiono by było najłatwiej sprawdzić działanie tego typu funkcji. Analogicznie możemy podawać parametry typu jednostki, np.: wywołaniu modułowym {{Code|{{m|Pudełko|Nazwa przedmiotowej przestrzeni nazw|typ jednostki 2{{=}}strona szablonu|numer jednostki{{=}}2}}}}, ale o tym więcej w rozdziałach {{Code|{{sr|# p["Przedmiotowy typ jednostki"](frame,i)|p=Pudełko}}}} w „{{sr|#Funkcje typu jednostki|p=Pudełko}}”, ale wtedy ta sama nazwa przestrzeni nazw reprezentowana przez {{Parametr|typ jednostki 2|strona szablonu}}, jest zamieniana na to samo, lepiej jest tutaj używać parametrów przestrzennych nazw niż typu jednostki, bo typ jednostki ma taką samą wartość dla przestrzeni przedmiotowej, co dyskusji. Tutaj parametr dyskusji typu jednostki bazowy i numerkowy ogólny, czy szczegółowy, nie gra roli, bo nawet, gdy wygenerujemy nazwę przestrzeni dyskusji za pomoca tego parametru, to i tak otrzymamy na samym końcu jego nazwę przedmiotową. Również parametry typu jednostki nie powinno się podawać w dziecku w ramce, tylko w rodzicu w szablonie jako parametry, w którym ta ramka jest wywoływana, ale tutaj podano jedynie dla przykładu, jak najłatwiej sprawdzić działanie tych parametrów tej funkcji. Najpierw w funkcji nagłówku brane są parametry nazw przestrzeni nazw, a jeżeli ich nie ma, to parametry typu jednostki, a jeżeli nie ma, to generowane są nazwy na podstawie aktualnego modułu. === {{Code|p["Nazwa przestrzeni nazw dyskusji"](frame,...)}} === Funkcja pisze nazwę przestrzeni nazw dyskusji jakikolwiek nazwy przestrzeni nazw (tzn. nazwę przedmiotową nazwy przestrzenie nazw, czyli nie dyskusji, zamieniana jest na dyskusji, czyli identyfikator przestrzeni się zmienia jeden wyżej, a dyskusji, nie przedmiotową, przekształca się na tą samą), według podanej w zmiennej {{Code|nazwa przestrzeni nazw}} dla pozycja bazowej w podanych parametrach szablonu rodzicu ramki dziecka, lub dla innej pozycji należy parametr podawać w formie {{Code|nazwa przestrzeni nazw 1}}, {{Code|nazwa przestrzeni nazw 2}}, {{Code|nazwa przestrzeni nazw 3}},..., lub te parametry można podać w postaci ogólnej {{Code|nazwa przestrzeni nazw i}}. Parametry podaje się w parametrach rodzica wywołania tej funkcji {{Code|{{m|Pudełko|Nazwa przestrzeni nazw dyskusji}}}} (ale ich nie trzeba podawać w dziecku, ale można) i w parametrach dziecka, jeśli chodzi o zmienną {{Code|numer jednostki}}, czyli np.: {{Code|{{m|Pudełko|Nazwa przestrzeni nazw dyskusji|numer jednostki{{=}}<jakaś liczba całkowita dodatnia>}}}}. Te parametry przestrzenne zamiast w rodzicu w szablonie można podać w ramce dziecka, wtedy parametry dziecka mają pierwszeństwo. Parametry przestrzenne mogą mogą być podane w postaci przestrzeni przedmiotowej lub dyskusji, ale ta funkcja zawsze ją zamienia na dyskusji. Przestrzeń nazw z parametrów nazw przestrzennych może odpowiadać wartości przestrzeni głównej, to wtedy odpowiednia przestrzeń nazw z parametru nazwy jednostki się nie liczy w tej funkcji, aby się liczyła należy użyć funkcji {{Code|{{sr|#p["Nazwa przestrzeni nazw dyskusji 2"](frame,...)|p=Pudełko}}}}. Definicja skrótowa funkcji: <syntaxhighlight lang="lua"> p["Nazwa przestrzeni nazw dyskusji"]=function(frame,czy_uwzglednic_alternatywna_nazwe,i)...end; </syntaxhighlight> Wtedy ciało funkcji tej, czyli jego definicja w środku, jest: <syntaxhighlight lang="lua"> -- Jest liczony numer parametru nazwy przestrzeni nazw, domyslnie chodzi tu o numer bazowy parametrów przestrzennych; local numer_jednostki=i or frame.args["numer jednostki"]; local liczba_numer_jednostki=((numer_jednostki)and(tonumber(numer_jednostki))or 0); local pudelko_pomocne_modul=require("Module:Pudełko/Pomocne"); -- Liczy nazwę przestrzeni nazw dyskusji na podstawie podanych parametrów; return pudelko_pomocne_modul.Nazwa_przestrzeni_nazw(frame,2, czy_uwzglednic_alternatywna_nazwe,liczba_numer_jednostki); </syntaxhighlight> Parametry funkcji: * {{Code|frame}} - tablica ramki tablicy transportu, * {{Code|czy_uwzglednic_alternatywna_nazwe}} - czy ma uwzględniać nazwę przestrzeni nazw domyślną szablonu, dostępne wartości: {{Code|false}}, w której nazwa domyślna nie jest uwzględniana wtedy, oraz {{Code|nil}} i {{Code|true}}, które oznaczają to samo, w tym jeżeli ona jest uwzględniana, wtedy jest brany parametr pierwszy dziecka, który musi istnieć przy takiej wartości tego parametru, tzn. {{Code|{{m|Pudełko|Nazwa przestrzeni nazw dyskusji|Szablon}}}} - ta nazwa domyślna zostanie przekształcona na dyskusji, a jeżeli ona by była dyskusji, to nie byłoby żadnego przekształcenia, a nazwa uzyskana nazwy przestrzeni nazw z parametrów przestrzennych jest w takim przypadku błędna, to w takim razie brany jest ten parametr, a jeżeli nazwa domyślna jest błędna, czyli {{Code|{{m|Pudełko|Nazwa przestrzeni nazw dyskusji|Moja przestrzeń}}}}, wtedy funkcja zwraca stan błędu {{Code|(błąd)}}. * {{Code|i}} - numer zmiennej nazwy przestrzeni nazw. Funkcja wykorzystuje {{Code|{{sr|#p.Nazwa_przestrzeni_nazw(frame,...)|p=Pudełko/Pomocne}}}} do wyznaczania ogólnego nazwy przestrzeni nazw dla pozycji bazowej i numerkowej, tzn. dla pozycji: jeden, dwa, trzy,..., itd, i ich ogólnej. Parametr ramki tablicy transportu rodzica szablonu: * {{Code|nazwa przestrzeni nazw}}, {{Code|nazwa przestrzeni nazw 1}}, {{Code|nazwa przestrzeni nazw 2}}, {{Code|nazwa przestrzeni nazw 3}},..., {{Code|nazwa przestrzeni nazw i}} - nazwy przestrzeni nazw dla pozycji bazowej oraz zwykłej i ogólnej numerkowej, * {{Code|typ jednostki}}, {{Code|typ jednostki 1}}, {{Code|typ jednostki 2}}, {{Code|typ jednostki 3}},..., {{Code|typ jednostki i}} - typy jednostek, którym odpowiadają pewne przestrzenie przedmiotowe, dla pozycji bazowej, numerkowej i ogólnej. Parametry ramki tablicy transportu dziecka: * Parametry dziecka są takie same jak rodzica dla funkcji pudełkowej plus tu wymienione, * {{Code|numer jednostki}} - jak parametr {{Code|i}} nie został ustawiony, to wtedy liczy się ta zmienna. Przykłady: <syntaxhighlight lang="mediawiki"> {{Nazwa szablonu|nazwa przestrzeni nazw=Wikibooks|nazwa przestrzeni nazw 2=Szablon|nazwa przestrzeni nazw i=Moduł}} </syntaxhighlight> W dziecku powiedzmy jest wywołanie, i szukamy nazwy przestrzeni nazw o numerze dwa, która nie została podana, ale istnieje za to jej wersji ogólna {{Code|nazwa przestrzeni nazw i}} i domyślna {{Code|nazwa przestrzeni nazw}}: <syntaxhighlight lang="mediawiki"> {{#invoke:Pudełko|Nazwa przestrzeni nazw dyskusji|numer jednostki=1}} </syntaxhighlight> Na podstawie powyższego przykładu otrzymamy wynik o schemacie, nie wyniku, bo tam nie ma zmiennej {{Code|nazwa przestrzeni nazw 1}}, ale jest {{Code|nazwa przestrzeni nazw i}}: <syntaxhighlight lang="mediawiki"> <!-- Ale nie "nazwa przestrzeni nazw", bo jej nie ma, ale za to istnieje "nazwa przestrzeni nazw i"; --> <!-- nazwa przestrzeni nazw 2=nazwa przestrzeni nazw i=Moduł; --> <!-- Czyli wynik: --> Dyskusja modułu <!-- Widzimy, że wygenerowała się nazwa przestrzeni nazw, którą jest przestrzeń dyskusji przestrzeni programowej przestrzeni przedmiotowej "Moduł", którą również jest "Szablon" jego przestrzeni dyskusji "Dyskusja szablonu", a dla ich przestrzeni przedmiotowej, zamiast dyskusji, to przekształca się na dyskusji jej odpowiadającą; --> </syntaxhighlight> Nie jest brana w tym powyższym przykładzie zmienna {{Code|nazwa przestrzeni nazw}}, bo jej nie ma, ale za to jest {{Code|nazwa przestrzeni nazw i}}, bo ona występuje jako parametr domyślny ogólny dla parametrów numerkowych. Przykłady w wikikodzie: * {{Code|{{m|Pudełko|Nazwa przestrzeni nazw dyskusji|numer jednostki{{=}}2}}}} → {{Tt|{{#invoke:Pudełko|Nazwa przestrzeni nazw dyskusji|numer jednostki=2}}}} * {{Code|{{m|Pudełko|Nazwa przestrzeni nazw dyskusji|Szablon|nazwa przestrzeni nazw i{{=}}Moja przestrzeń|numer jednostki{{=}}2}}}} → {{Tt|{{#invoke:Pudełko|Nazwa przestrzeni nazw dyskusji|Szablon|nazwa przestrzeni nazw i=Moja przestrzeń|numer jednostki=2}}}} * {{Code|{{m|Pudełko|Nazwa przestrzeni nazw dyskusji|nazwa przestrzeni nazw 2{{=}}Szablon|numer jednostki{{=}}2}}}} → {{Tt|{{#invoke:Pudełko|Nazwa przestrzeni nazw dyskusji|nazwa przestrzeni nazw 2=Szablon|numer jednostki=2}}}} * {{Code|{{m|Pudełko|Nazwa przestrzeni nazw dyskusji|nazwa przestrzeni nazw 2{{=}}Szablon|numer jednostki{{=}}2}}}} → {{Tt|{{#invoke:Pudełko|Nazwa przestrzeni nazw dyskusji|nazwa przestrzeni nazw i=Szablon|numer jednostki=2}}}} * {{Code|{{m|Pudełko|Nazwa przestrzeni nazw dyskusji|nazwa przestrzeni nazw{{=}}Szablon|numer jednostki{{=}}2}}}} → {{Tt|{{#invoke:Pudełko|Nazwa przestrzeni nazw dyskusji|nazwa przestrzeni nazw=Szablon|numer jednostki=2}}}} Powyżej dla przykładu podano parametry nie w rodzicu w szablonie, tylko w dziecku, jeśli chodzi o parametry nazw przestrzeni nazw, ale ich się za to nie powinno podawać w tych ramach, tylko w szablonach, w których wywoływane są te ramki pudełek {{Code|{{m|Pudełko}}}}, ale tak tutaj tak zrobiono by było najłatwiej sprawdzić działanie tego typu funkcji. Analogicznie możemy podawać parametry typu jednostki, np.: wywołaniu modułowym {{Code|{{m|Pudełko|Nazwa przestrzeni nazw dyskusji|typ jednostki 2{{=}}strona szablonu|numer jednostki{{=}}2}}}}, ale o tym więcej w rozdziałach {{Code|{{sr|# p["Dyskusyjny typ jednostki"](frame,i)|p=Pudełko}}}} w „{{sr|#Funkcje typu jednostki|p=Pudełko}}”, ale wtedy nazwa przestrzeni nazw reprezentowana przez {{Parametr|typ jednostki 2|strona szablonu}}, jest zamieniana na nazwę przestrzeni nazw dyskusji. Parametr dyskusji typu jednostki bazowy lub dla danego numerka ogólny, czy szczegółowy, nie gra roli. Również parametry typu jednostki nie powinno się podawać w dziecku w ramce, tylko w rodzicu w szablonie jako parametry, w którym ta ramka jest wywoływana, ale tutaj podano jedynie dla przykładu, jak najłatwiej sprawdzić działanie tych parametrów tej funkcji. Najpierw w funkcji nagłówku brane są parametry nazw przestrzeni nazw, a jeżeli ich nie ma, to parametry typu jednostki, a jeżeli nie ma, to generowane są nazwy na podstawie aktualnego modułu. == Funkcje nazw przestrzeni nazw drugiej wersji == === {{Code|p["Nazwa przestrzeni nazw 2"](frame,...)}} === Funkcja pisze nazwę przestrzeni nazw, niezależnie, czy to jest przedmiotowa, czy dyskusji, według, i nie zawsze tylko, podanej w zmiennej {{Code|nazwa przestrzeni nazw}} dla pozycja bazowej w podanych parametrach szablonu rodzicu ramki dziecka, lub dla innej pozycji należy parametr podawać w formie {{Code|nazwa przestrzeni nazw 1}}, {{Code|nazwa przestrzeni nazw 2}}, {{Code|nazwa przestrzeni nazw 3}},..., lub te parametry można podać w postaci ogólnej {{Code|nazwa przestrzeni nazw i}}. W tej funkcji trzeba też podawać parametry nazwy jednostek {{Code|nazwa jednostki}}, {{Code|nazwa jednostki 1}}, {{Code|nazwa jednostki 2}}, {{Code|nazwa jednostki 3}},... Parametry podaje się w parametrach rodzica wywołania tej funkcji {{Code|{{m|Pudełko|Nazwa przestrzeni nazw 2}}}} (ale ich nie trzeba podawać w dziecku, ale można) i w parametrach dziecka, jeśli chodzi o zmienną {{Code|numer jednostki}}, czyli np.: {{Code|{{m|Pudełko|Nazwa przestrzeni nazw 2|numer jednostki{{=}}<jakaś liczba całkowita dodatnia>}}}}. Te parametry przestrzenne zamiast w rodzicu w szablonie można podać w ramce dziecka, wtedy parametry dziecka mają pierwszeństwo. Przestrzeń nazw z parametrów nazw przestrzennych może odpowiadać wartości przestrzeni głównej, to wtedy odpowiednia przestrzeń nazw z parametru nazwy jednostki się liczy w tej funkcji, wtedy jest liczona nazwa przestrzeni nazw z tego parametru. Gdy parametry przestrzenne lub typ jednostki w drugim podejściu nie wskazują na przestrzeń główną, to wtedy działanie tej funkcji jest podobne do {{Code|{{sr|#p["Nazwa przestrzeni nazw"](frame,...)|p=Pudełko}}}}. Definicja skrótowa funkcji: <syntaxhighlight lang="lua"> p["Nazwa przestrzeni nazw 2"]=function(frame,czy_uwzglednic_alternatywna_nazwe,i)...end; </syntaxhighlight> Wtedy ciało funkcji tej, czyli jego definicja w środku, jest: <syntaxhighlight lang="lua"> local pudelko_pomocne_modul=require("Module:Pudełko/Pomocne"); -- Liczy nazwę przestrzeni nazw, jeżeli z parametrów przestrzennych przestrzeń wskazuje na główną, to wtedy jest liczona przestrzeń nazw z nazwy jednostki; return pudelko_pomocne_modul.Nazwa_przestrzeni_nazw_2(frame,czy_uwzglednic_alternatywna_nazwe,i) </syntaxhighlight> Parametry funkcji: * {{Code|frame}} - tablica ramki tablicy transportu, * {{Code|czy_uwzglednic_alternatywna_nazwe}} - czy ma uwzględniać nazwę przestrzeni nazw domyślną szablonu, dostępne wartości: {{Code|false}}, w której nazwa domyślna nie jest uwzględniana wtedy, oraz {{Code|nil}} i {{Code|true}}, które oznaczają to samo, w tym jeżeli ona jest uwzględniana, wtedy jest brany parametr pierwszy dziecka, który musi istnieć przy takiej wartości tego parametru, tzn. {{Code|{{m|Pudełko|Nazwa przestrzeni nazw 2|Szablon}}}}, a jeśli nazwa uzyskana nazwy przestrzeni nazw jest w takim przypadku błędna, a jeżeli nazwa domyślna jest błędna, czyli {{Code|{{m|Pudełko|Nazwa przestrzeni nazw 2|Moja przestrzeń}}}}, wtedy funkcja zwraca stan błędu {{Code|(błąd)}}. * {{Code|i}} - numer zmiennej nazwy przestrzeni nazw. Funkcja wykorzystuje {{Code|{{sr|#p.Nazwa_przestrzeni_nazw_2(frame,...)|p=Pudełko/Pomocne}}}} do wyznaczania ogólnego nazwy przestrzeni nazw dla pozycji bazowej i numerkowej, tzn. dla pozycji: jeden, dwa, trzy,..., itd, i ich ogólnej. Parametr ramki tablicy transportu rodzica szablonu: * {{Code|nazwa przestrzeni nazw}}, {{Code|nazwa przestrzeni nazw 1}}, {{Code|nazwa przestrzeni nazw 2}}, {{Code|nazwa przestrzeni nazw 3}},..., {{Code|nazwa przestrzeni nazw i}} - nazwy przestrzeni nazw dla pozycji bazowej oraz zwykłej i ogólnej numerkowej, * {{Code|nazwa jednostki}}, {{Code|nazwa jednostki 1}}, {{Code|nazwa jednostki 2}}, {{Code|nazwa jednostki 3}},... - nazwy jednostek dla pozycji bazowej i numerkowej, * {{Code|typ jednostki}}, {{Code|typ jednostki 1}}, {{Code|typ jednostki 2}}, {{Code|typ jednostki 3}},..., {{Code|typ jednostki i}} - typy jednostek, którym odpowiadają pewne przestrzenie przedmiotowe, dla pozycji bazowej, numerkowej i ogólnej, ** {{Code|dyskusja typu jednostki}}, {{Code|dyskusja typu jednostki 1}}, {{Code|dyskusja typ jednostki 2}}, {{Code|dyskusja typ jednostki 3}},..., {{Code|dyskusja typ jednostki i}} - czy dany typ jednostki ma przedstawiać, jeśli niepusta, przestrzeń dyskusji dla pozycji bazowej, numerkowej i ogólnej. Parametry ramki tablicy transportu dziecka: * Parametry dziecka są takie same jak rodzica dla funkcji pudełkowej plus tu wymienione, * {{Code|numer jednostki}} - jak parametr {{Code|i}} nie został ustawiony, to wtedy liczy się ta zmienna. Przykłady: <syntaxhighlight lang="mediawiki"> {{Nazwa szablonu|nazwa przestrzeni nazw=Wikibooks|nazwa przestrzeni nazw 1=Szablon|nazwa przestrzeni nazw i=|nazwa jednostki 2=Wikibooks:Strona}} </syntaxhighlight> W dziecku powiedzmy jest wywołanie, i szukamy nazwy przestrzeni nazw o numerze dwa, która została podana, ale istnieje za to jej wersji ogólna {{Code|nazwa przestrzeni nazw i}} i domyślna {{Code|nazwa przestrzeni nazw}}, ale wtedy dla tego numerkowego liczy się to ogólne z {{Code| i}}, a ponieważ ta nazwa jest pusta, więc będziemy liczyli nazwę przestrzeni nazw z {{Code|nazwa jednostki 2}}: <syntaxhighlight lang="mediawiki"> {{#invoke:Pudełko|Nazwa przestrzeni nazw 2|numer jednostki=2}} </syntaxhighlight> Na podstawie powyższego przykładu otrzymamy wynik o schemacie, nie wyniku, bo tam nie ma zmiennej {{Code|nazwa przestrzeni nazw 1}}, ale jest {{Code|nazwa przestrzeni nazw i}}: <syntaxhighlight lang="mediawiki"> <!-- Ale nie "nazwa przestrzeni nazw 2", bo jej nie ma, ale za to istnieje "nazwa przestrzeni nazw i"; --> <!-- nazwa przestrzeni nazw 2=nazwa przestrzeni nazw i="", a nazwa jednostki 2="Wikibooks:Strona"; --> <!-- Czyli wynik: --> Wikibooks <!-- Widzimy, że wygenerowała się nazwa przestrzeni nazw, którą jest przestrzeń nieprogramowa, ale projektu, wychodząca z nazwy jednostek w tym przypadku z "nazwa jednostki 2"; --> </syntaxhighlight> Nie jest brana w tym powyższym przykładzie zmienna {{Code|nazwa przestrzeni nazw}}, bo jej nie ma, ale za to jest {{Code|nazwa przestrzeni nazw i}}, bo ona występuje jako parametr domyślny ogólny dla parametrów numerkowych. Tytaj jest używana jest zmienna {{Code|nazwa jednostki 2}} do wygenerowania ostatecznego wyniku, bo jak można zauważyć, parametry przestrzenne wskazują na przestrzeń główną, a nazwy jednostek już nie. Przykłady w wikikodzie: * {{Code|{{m|Pudełko|Nazwa przestrzeni nazw 2|numer jednostki{{=}}2}}}} → {{Tt|{{#invoke:Pudełko|Nazwa przestrzeni nazw 2|numer jednostki=2}}}} * {{Code|{{m|Pudełko|Nazwa przestrzeni nazw 2|Szablon|nazwa przestrzeni nazw i{{=}}Moja przestrzeń|numer jednostki{{=}}2}}}} → {{Tt|{{#invoke:Pudełko|Nazwa przestrzeni nazw 2|Szablon|nazwa przestrzeni nazw i=Moja przestrzeń|numer jednostki=2}}}} * {{Code|{{m|Pudełko|Nazwa przestrzeni nazw 2|nazwa przestrzeni nazw 2{{=}}|nazwa jednostki 2{{=}}Szablon:Strona|numer jednostki{{=}}2}}}} → {{Tt|{{#invoke:Pudełko|Nazwa przestrzeni nazw 2|nazwa przestrzeni nazw 2=|nazwa jednostki 2=Szablon:Strona|numer jednostki=2}}}} * {{Code|{{m|Pudełko|Nazwa przestrzeni nazw 2|nazwa przestrzeni nazw i{{=}}|nazwa jednostki 2{{=}}Szablon:Strona|numer jednostki{{=}}2}}}} → {{Tt|{{#invoke:Pudełko|Nazwa przestrzeni nazw 2|nazwa przestrzeni nazw i=|nazwa jednostki 2=Szablon:Strona|numer jednostki=2}}}} * {{Code|{{m|Pudełko|Nazwa przestrzeni nazw 2|Szablon|nazwa przestrzeni nazw{{=}}|nazwa jednostki 2{{=}}Wikibooks:Strona|numer jednostki{{=}}2}}}} → {{Tt|{{#invoke:Pudełko|Nazwa przestrzeni nazw 2|Szablon|nazwa przestrzeni nazw=|nazwa jednostki 2=Wikibooks:Strona|numer jednostki=2}}}} Powyżej dla przykładu podano parametry nie w rodzicu w szablonie, tylko w dziecku, jeśli chodzi o parametry nazw przestrzeni nazw i nazw jednostek, ale ich się za to nie powinno podawać w tych ramach, tylko w szablonach, w których wywoływane są te ramki pudełek {{Code|{{m|Pudełko}}}}, ale tak tutaj tak zrobiono by było najłatwiej sprawdzić działanie tego typu funkcji. Analogicznie możemy podawać parametry typu jednostki, np.: wywołaniu modułowym {{Code|{{m|Pudełko|Nazwa przestrzeni nazw 2|typ jednostki 2{{=}}Podręcznik|nazwa jednostki 2{{=}}Szablon:Strona|numer jednostki{{=}}2}}}} (ale wtedy jest brana przestrzeń nazw z nazwy jednostki), ale o tym więcej w rozdziałach {{Code|{{sr|#p["Typ jednostki 2"](frame,i)|p=Pudełko}}}} w „{{sr|#Funkcje typu jednostki|p=Pudełko}}”, on definiuje przestrzenie przedmiotowe, ale można użyć parametru dyskusji typu jednostki z wartością niepustą, wtedy wyświetli się nazwa przestrzeni nazw dyskusji. Jeżeli typ jednostki wskazuje na przestrzeń nazw główną, wtedy się liczą parametry nazw jednostek. Również parametry typu jednostki nie powinno się podawać w dziecku w ramce, tylko w rodzicu w szablonie jako parametry, w którym ta ramka jest wywoływana, ale tutaj podano jedynie dla przykładu, jak najłatwiej sprawdzić działanie tych parametrów tej funkcji. Najpierw w funkcji nagłówku brane są parametry nazw przestrzeni nazw, a jeżeli ich nie ma, to parametry typu jednostki, a jeżeli nie ma lub parametry przestrzenne wskazują na przestrzeń główną, i nie ma nazwy jednostki, to generowane są nazwy tej funkcji na podstawie aktualnej strony. === {{Code|p["Nazwa przedmiotowej przestrzeni nazw 2"](frame,...)}} === Funkcja pisze przedmiotową nazwę przestrzeni nazw jakikolwiek nazwy przestrzeni nazw (tzn. nazwę przedmiotową nazwy przestrzenie nazw, czyli nie dyskusji, zamieniana jest na nią samą, czyli identyfikator przestrzeni się nie zmienia, a dyskusji, nie przedmiotową, przekształca się na przedmiotową jej odpowiadającą, czyli w tym przypadku identyfikator przestrzeni zmniejsza się o numer mniej), według, i nie zawsze tylko, podanej w zmiennej {{Code|nazwa przestrzeni nazw}} dla pozycja bazowej w podanych parametrach szablonu rodzicu ramki dziecka, lub dla innej pozycji należy parametr podawać w formie {{Code|nazwa przestrzeni nazw 1}}, {{Code|nazwa przestrzeni nazw 2}}, {{Code|nazwa przestrzeni nazw 3}},..., lub te parametry można podać w postaci ogólnej {{Code|nazwa przestrzeni nazw i}}. W tej funkcji trzeba też podawać parametry nazwy jednostek {{Code|nazwa jednostki}}, {{Code|nazwa jednostki 1}}, {{Code|nazwa jednostki 2}}, {{Code|nazwa jednostki 3}},... Parametry podaje się w parametrach rodzica wywołania tej funkcji {{Code|{{m|Pudełko|Nazwa przedmiotowej przestrzeni nazw 2}}}} (ale ich nie trzeba podawać w dziecku, ale można) i w parametrach dziecka, jeśli chodzi o zmienną {{Code|numer jednostki}}, czyli np.: {{Code|{{m|Pudełko|Nazwa przedmiotowej przestrzeni nazw 2|numer jednostki{{=}}<jakaś liczba całkowita dodatnia>}}}}. Te parametry przestrzenne zamiast w rodzicu w szablonie można podać w ramce dziecka, wtedy parametry dziecka mają pierwszeństwo. Przestrzeń nazw z parametrów nazw przestrzennych po przekształceniu na przedmiotową może odpowiadać wartości przestrzeni głównej, to wtedy odpowiednia przestrzeń nazw z parametru nazwy jednostki się liczy w tej funkcji, wtedy jest liczona nazwa przestrzeni nazw z tego parametru. Gdy parametry przestrzenne lub typ jednostki w drugim podejściu nie wskazują na przestrzeń główną, to wtedy działanie tej funkcji jest podobne do {{Code|{{sr|#p["Nazwa przedmiotowej przestrzeni nazw"](frame,...)|p=Pudełko}}}}. Definicja skrótowa funkcji: <syntaxhighlight lang="lua"> p["Nazwa przedmiotowej przestrzeni nazw 2"]=function(frame,czy_uwzglednic_alternatywna_nazwe,i)...end; </syntaxhighlight> Wtedy ciało funkcji tej, czyli jego definicja w środku, jest: <syntaxhighlight lang="lua"> local pudelko_pomocne_modul=require("Module:Pudełko/Pomocne"); return pudelko_pomocne_modul.Nazwa_przestrzeni_nazw_przedmiotowa_dyskusji_2(frame,czy_uwzglednic_alternatywna_nazwe,i,"przedmiotowa"); </syntaxhighlight> Parametry funkcji: * {{Code|frame}} - tablica ramki tablicy transportu, * {{Code|czy_uwzglednic_alternatywna_nazwe}} - czy ma uwzględniać nazwę przestrzeni nazw domyślną szablonu, dostępne wartości: {{Code|false}}, w której nazwa domyślna nie jest uwzględniana wtedy, oraz {{Code|nil}} i {{Code|true}}, które oznaczają to samo, w tym jeżeli ona jest uwzględniana, wtedy jest brany parametr pierwszy dziecka, który musi istnieć przy takiej wartości tego parametru, tzn. {{Code|{{m|Pudełko|Nazwa przedmiotowej przestrzeni nazw 2|Szablon}}}}, a jeśli nazwa uzyskana nazwy przestrzeni nazw jest w takim przypadku błędna, a jeżeli nazwa domyślna jest błędna, czyli {{Code|{{m|Pudełko|Nazwa przedmiotowej przestrzeni nazw 2|Moja przestrzeń}}}}, wtedy funkcja zwraca stan błędu {{Code|(błąd)}}. * {{Code|i}} - numer zmiennej nazwy przestrzeni nazw. Funkcja wykorzystuje {{Code|{{sr|#p.Nazwa_przestrzeni_nazw_przedmiotowa_dyskusji_2(frame,...)|p=Pudełko/Pomocne}}}} do wyznaczania ogólnego nazwy przestrzeni nazw dla pozycji bazowej i numerkowej, tzn. dla pozycji: jeden, dwa, trzy,..., itd, i ich ogólnej. Parametr ramki tablicy transportu rodzica szablonu: * {{Code|nazwa przestrzeni nazw}}, {{Code|nazwa przestrzeni nazw 1}}, {{Code|nazwa przestrzeni nazw 2}}, {{Code|nazwa przestrzeni nazw 3}},..., {{Code|nazwa przestrzeni nazw i}} - nazwy przestrzeni nazw dla pozycji bazowej oraz zwykłej i ogólnej numerkowej, * {{Code|nazwa jednostki}}, {{Code|nazwa jednostki 1}}, {{Code|nazwa jednostki 2}}, {{Code|nazwa jednostki 3}},... - nazwy jednostek dla pozycji bazowej i numerkowej, * {{Code|typ jednostki}}, {{Code|typ jednostki 1}}, {{Code|typ jednostki 2}}, {{Code|typ jednostki 3}},..., {{Code|typ jednostki i}} - typy jednostek, którym odpowiadają pewne przestrzenie przedmiotowe, dla pozycji bazowej, numerkowej i ogólnej. Parametry ramki tablicy transportu dziecka: * Parametry dziecka są takie same jak rodzica dla funkcji pudełkowej plus tu wymienione, * {{Code|numer jednostki}} - jak parametr {{Code|i}} nie został ustawiony, to wtedy liczy się ta zmienna. Przykłady: <syntaxhighlight lang="mediawiki"> {{Nazwa szablonu|nazwa przestrzeni nazw=Wikibooks|nazwa przestrzeni nazw 1=Szablon|nazwa przestrzeni nazw i=|nazwa jednostki 2=Dyskusja Wikibooks:Strona}} </syntaxhighlight> W dziecku powiedzmy jest wywołanie, i szukamy nazwy przestrzeni nazw o numerze dwa, która została podana, ale istnieje za to jej wersji ogólna {{Code|nazwa przestrzeni nazw i}} i domyślna {{Code|nazwa przestrzeni nazw}}, ale wtedy dla tego numerkowego liczy się to ogólne z {{Code| i}}, a ponieważ ta nazwa jest pusta, więc będziemy liczyli nazwę przestrzeni nazw z {{Code|nazwa jednostki 2}}: <syntaxhighlight lang="mediawiki"> {{#invoke:Pudełko|Nazwa przedmiotowej przestrzeni nazw 2|numer jednostki=2}} </syntaxhighlight> Na podstawie powyższego przykładu otrzymamy wynik o schemacie, nie wyniku, bo tam nie ma zmiennej {{Code|nazwa przestrzeni nazw 1}}, ale jest {{Code|nazwa przestrzeni nazw i}}: <syntaxhighlight lang="mediawiki"> <!-- Ale nie "nazwa przestrzeni nazw 2", bo jej nie ma, ale za to istnieje "nazwa przestrzeni nazw i"; --> <!-- nazwa przestrzeni nazw 2=nazwa przestrzeni nazw i="", a nazwa jednostki 2="Dyskusja Wikibooks:Strona"; --> <!-- Czyli wynik: --> Wikibooks <!-- Widzimy, że wygenerowała się nazwa przestrzeni nazw, którą jest przestrzeń nieprogramowa, ale projektu, wychodząca z nazwy jednostek w tym przypadku z "nazwa jednostki 2"; --> </syntaxhighlight> Nie jest brana w tym powyższym przykładzie zmienna {{Code|nazwa przestrzeni nazw}}, bo jej nie ma, ale za to jest {{Code|nazwa przestrzeni nazw i}}, bo ona występuje jako parametr domyślny ogólny dla parametrów numerkowych. Tytaj jest używana jest zmienna {{Code|nazwa jednostki 2}} do wygenerowania ostatecznego wyniku, bo jak można zauważyć, parametry przestrzenne wskazują na przestrzeń główną, a nazwy jednostek już nie. Przykłady w wikikodzie: * {{Code|{{m|Pudełko|Nazwa przedmiotowej przestrzeni nazw 2|numer jednostki{{=}}2}}}} → {{Tt|{{#invoke:Pudełko|Nazwa przedmiotowej przestrzeni nazw 2|numer jednostki=2}}}} * {{Code|{{m|Pudełko|Nazwa przedmiotowej przestrzeni nazw 2|Dyskusja szablonu|nazwa przestrzeni nazw i{{=}}Moja przestrzeń|numer jednostki{{=}}2}}}} → {{Tt|{{#invoke:Pudełko|Nazwa przedmiotowej przestrzeni nazw 2|Dyskusja szablonu|nazwa przestrzeni nazw i=Moja przestrzeń|numer jednostki=2}}}} * {{Code|{{m|Pudełko|Nazwa przedmiotowej przestrzeni nazw 2|nazwa przestrzeni nazw 2{{=}}Dyskusja|nazwa jednostki 2{{=}}Dyskusja szablonu:Strona|numer jednostki{{=}}2}}}} → {{Tt|{{#invoke:Pudełko|Nazwa przedmiotowej przestrzeni nazw 2|nazwa przestrzeni nazw 2=Dyskusja|nazwa jednostki 2=Dyskusja szablonu:Strona|numer jednostki=2}}}} * {{Code|{{m|Pudełko|Nazwa przedmiotowej przestrzeni nazw 2|nazwa przestrzeni nazw i{{=}}Dyskusja|nazwa jednostki 2{{=}}Dyskusja szablonu:Strona|numer jednostki{{=}}2}}}} → {{Tt|{{#invoke:Pudełko|Nazwa przedmiotowej przestrzeni nazw 2|nazwa przestrzeni nazw i=Dyskusja|nazwa jednostki 2=Dyskusja szablonu:Strona|numer jednostki=2}}}} * {{Code|{{m|Pudełko|Nazwa przedmiotowej przestrzeni nazw 2|Dyskusja szablonu|nazwa przestrzeni nazw{{=}}Dyskusja|nazwa jednostki 2{{=}}Wikibooks:Strona|numer jednostki{{=}}2}}}} → {{Tt|{{#invoke:Pudełko|Nazwa przedmiotowej przestrzeni nazw 2|Dyskusja szablonu|nazwa przestrzeni nazw=Dyskusja|nazwa jednostki 2=Dyskusja Wikibooks:Strona|numer jednostki=2}}}} Powyżej dla przykładu podano parametry nie w rodzicu w szablonie, tylko w dziecku, jeśli chodzi o parametry nazw przestrzeni nazw i nazw jednostek, ale ich się za to nie powinno podawać w tych ramach, tylko w szablonach, w których wywoływane są te ramki pudełek {{Code|{{m|Pudełko}}}}, ale tak tutaj tak zrobiono by było najłatwiej sprawdzić działanie tego typu funkcji. Analogicznie możemy podawać parametry typu jednostki, np.: wywołaniu modułowym {{Code|{{m|Pudełko|Nazwa przedmiotowej przestrzeni nazw 2|typ jednostki 2{{=}}Podręcznik|nazwa jednostki 2{{=}}Dyskusja szablonu:Strona|numer jednostki{{=}}2}}}} (ale wtedy jest brana przestrzeń nazw z nazwy jednostki), ale o tym więcej w rozdziałach {{Code|{{sr|# p["Przedmiotowy typ jednostki 2"](frame,i)|p=Pudełko}}}} w „{{sr|#Funkcje typu jednostki|p=Pudełko}}”, on definiuje przestrzenie przedmiotowe, ale można użyć parametru dyskusji typu jednostki z wartością niepustą, pustą, czy nawet jej nie podamy, wtedy wyświetli się nazwa przestrzeni nazw przedmiotowej. Jeżeli typ jednostki wskazuje na przestrzeń nazw główną, wtedy się liczą parametry nazw jednostek. Również parametry typu jednostki nie powinno się podawać w dziecku w ramce, tylko w rodzicu w szablonie jako parametry, w którym ta ramka jest wywoływana, ale tutaj podano jedynie dla przykładu, jak najłatwiej sprawdzić działanie tych parametrów tej funkcji. Najpierw w funkcji nagłówku brane są parametry nazw przestrzeni nazw, a jeżeli ich nie ma, to parametry typu jednostki, a jeżeli nie ma lub parametry przestrzenne wskazują na przestrzeń główną, i nie ma nazwy jednostki, to generowane są nazwy tej funkcji na podstawie aktualnej strony. === {{Code|p["Nazwa przestrzeni nazw dyskusji 2"](frame,...)}} === Funkcja pisze nazwę przestrzeni nazw dyskusji jakikolwiek nazwy przestrzeni nazw (tzn. nazwę dyskusji nazwy przestrzenie nazw, czyli nie przedmiotowej, zamieniana jest na nią samą, czyli identyfikator przestrzeni się nie zmienia, a przedmiotową, nie dyskusji, przekształca się na dyskusji jej odpowiadającą, czyli w tym przypadku identyfikator przestrzeni zwiększa się o numer więcej), według, i nie zawsze tylko, podanej w zmiennej {{Code|nazwa przestrzeni nazw}} dla pozycja bazowej w podanych parametrach szablonu rodzicu ramki dziecka, lub dla innej pozycji należy parametr podawać w formie {{Code|nazwa przestrzeni nazw 1}}, {{Code|nazwa przestrzeni nazw 2}}, {{Code|nazwa przestrzeni nazw 3}},..., lub te parametry można podać w postaci ogólnej {{Code|nazwa przestrzeni nazw i}}. W tej funkcji trzeba też podawać parametry nazwy jednostek {{Code|nazwa jednostki}}, {{Code|nazwa jednostki 1}}, {{Code|nazwa jednostki 2}}, {{Code|nazwa jednostki 3}},... Parametry podaje się w parametrach rodzica wywołania tej funkcji {{Code|{{m|Pudełko|Nazwa przestrzeni nazw dyskusji 2}}}} (ale ich nie trzeba podawać w dziecku, ale można) i w parametrach dziecka, jeśli chodzi o zmienną {{Code|numer jednostki}}, czyli np.: {{Code|{{m|Pudełko|Nazwa przestrzeni nazw dyskusji 2|numer jednostki{{=}}<jakaś liczba całkowita dodatnia>}}}}. Te parametry przestrzenne zamiast w rodzicu w szablonie można podać w ramce dziecka, wtedy parametry dziecka mają pierwszeństwo. Przestrzeń nazw z parametrów nazw przestrzennych po przekształceniu może odpowiadać wartości przestrzeni głównej, to wtedy odpowiednia przestrzeń nazw z parametru nazwy jednostki się liczy w tej funkcji, wtedy jest liczona nazwa przestrzeni nazw dyskusji z tego parametru. Gdy parametry przestrzenne lub typ jednostki w drugim podejściu nie wskazują na przestrzeń główną, to wtedy działanie tej funkcji jest podobne do {{Code|{{sr|#p["Nazwa dyskusji przestrzeni nazw"](frame,...)|p=Pudełko}}}}. Definicja skrótowa funkcji: <syntaxhighlight lang="lua"> p["Nazwa przestrzeni nazw dyskusji 2"]=function(frame,czy_uwzglednic_alternatywna_nazwe,i)...end; </syntaxhighlight> Wtedy ciało funkcji tej, czyli jego definicja w środku, jest: <syntaxhighlight lang="lua"> local pudelko_pomocne_modul=require("Module:Pudełko/Pomocne"); return pudelko_pomocne_modul.Nazwa_przestrzeni_nazw_przedmiotowa_dyskusji_2(frame,czy_uwzglednic_alternatywna_nazwe,i,"dyskusja"); </syntaxhighlight> Parametry funkcji: * {{Code|frame}} - tablica ramki tablicy transportu, * {{Code|czy_uwzglednic_alternatywna_nazwe}} - czy ma uwzględniać nazwę przestrzeni nazw domyślną szablonu, dostępne wartości: {{Code|false}}, w której nazwa domyślna nie jest uwzględniana wtedy, oraz {{Code|nil}} i {{Code|true}}, które oznaczają to samo, w tym jeżeli ona jest uwzględniana, wtedy jest brany parametr pierwszy dziecka, który musi istnieć przy takiej wartości tego parametru, tzn. {{Code|{{m|Pudełko|Nazwa przestrzeni nazw dyskusji 2|Szablon}}}}, a jeśli nazwa uzyskana nazwy przestrzeni nazw jest w takim przypadku błędna, a jeżeli nazwa domyślna jest błędna, czyli {{Code|{{m|Pudełko|Nazwa przestrzeni nazw dyskusji 2|Moja przestrzeń}}}}, wtedy funkcja zwraca stan błędu {{Code|(błąd)}}. * {{Code|i}} - numer zmiennej nazwy przestrzeni nazw. Funkcja wykorzystuje {{Code|{{sr|#p.Nazwa_przestrzeni_nazw_przedmiotowa_dyskusji_2(frame,...)|p=Pudełko/Pomocne}}}} do wyznaczania ogólnego nazwy przestrzeni nazw dla pozycji bazowej i numerkowej, tzn. dla pozycji: jeden, dwa, trzy,..., itd, i ich ogólnej. Parametr ramki tablicy transportu rodzica szablonu: * {{Code|nazwa przestrzeni nazw}}, {{Code|nazwa przestrzeni nazw 1}}, {{Code|nazwa przestrzeni nazw 2}}, {{Code|nazwa przestrzeni nazw 3}},..., {{Code|nazwa przestrzeni nazw i}} - nazwy przestrzeni nazw dla pozycji bazowej oraz zwykłej i ogólnej numerkowej, * {{Code|nazwa jednostki}}, {{Code|nazwa jednostki 1}}, {{Code|nazwa jednostki 2}}, {{Code|nazwa jednostki 3}},... - nazwy jednostek dla pozycji bazowej i numerkowej, * {{Code|typ jednostki}}, {{Code|typ jednostki 1}}, {{Code|typ jednostki 2}}, {{Code|typ jednostki 3}},..., {{Code|typ jednostki i}} - typy jednostek, którym odpowiadają pewne przestrzenie przedmiotowe, dla pozycji bazowej, numerkowej i ogólnej. Parametry ramki tablicy transportu dziecka: * Parametry dziecka są takie same jak rodzica dla funkcji pudełkowej plus tu wymienione, * {{Code|numer jednostki}} - jak parametr {{Code|i}} nie został ustawiony, to wtedy liczy się ta zmienna. Przykłady: <syntaxhighlight lang="mediawiki"> {{Nazwa szablonu|nazwa przestrzeni nazw=Wikibooks|nazwa przestrzeni nazw 1=Szablon|nazwa przestrzeni nazw i=|nazwa jednostki 2=Wikibooks:Strona}} </syntaxhighlight> W dziecku powiedzmy jest wywołanie, i szukamy nazwy przestrzeni nazw o numerze dwa, która została podana, ale istnieje za to jej wersji ogólna {{Code|nazwa przestrzeni nazw i}} i domyślna {{Code|nazwa przestrzeni nazw}}, ale wtedy dla tego numerkowego liczy się to ogólne z {{Code| i}}, a ponieważ ta nazwa jest pusta, więc będziemy liczyli nazwę przestrzeni nazw z {{Code|nazwa jednostki 2}}: <syntaxhighlight lang="mediawiki"> {{#invoke:Pudełko|Nazwa przestrzeni nazw dyskusji 2|numer jednostki=2}} </syntaxhighlight> Na podstawie powyższego przykładu otrzymamy wynik o schemacie, nie wyniku, bo tam nie ma zmiennej {{Code|nazwa przestrzeni nazw 1}}, ale jest {{Code|nazwa przestrzeni nazw i}}: <syntaxhighlight lang="mediawiki"> <!-- Ale nie "nazwa przestrzeni nazw 2", bo jej nie ma, ale za to istnieje "nazwa przestrzeni nazw i"; --> <!-- nazwa przestrzeni nazw 2=nazwa przestrzeni nazw i="", a nazwa jednostki 2="Wikibooks:Strona"; --> <!-- Czyli wynik: --> Dyskusja Wikibooks <!-- Widzimy, że wygenerowała się nazwa przestrzeni nazw, którą jest przestrzeń nieprogramowa, ale dyskusji projektu, wychodząca z nazwy jednostek w tym przypadku z "nazwa jednostki 2"; --> </syntaxhighlight> Nie jest brana w tym powyższym przykładzie zmienna {{Code|nazwa przestrzeni nazw}}, bo jej nie ma, ale za to jest {{Code|nazwa przestrzeni nazw i}}, bo ona występuje jako parametr domyślny ogólny dla parametrów numerkowych. Tytaj jest używana jest zmienna {{Code|nazwa jednostki 2}} do wygenerowania ostatecznego wyniku, bo jak można zauważyć, parametry przestrzenne wskazują na przestrzeń główną, a nazwy jednostek już nie. Przykłady w wikikodzie: * {{Code|{{m|Pudełko|Nazwa przestrzeni nazw dyskusji 2|numer jednostki{{=}}2}}}} → {{Tt|{{#invoke:Pudełko|Nazwa przestrzeni nazw dyskusji 2|numer jednostki=2}}}} * {{Code|{{m|Pudełko|Nazwa przestrzeni nazw dyskusji 2|Szablon|nazwa przestrzeni nazw i{{=}}Moja przestrzeń|numer jednostki{{=}}2}}}} → {{Tt|{{#invoke:Pudełko|Nazwa przestrzeni nazw dyskusji 2|Szablon|nazwa przestrzeni nazw i=Moja przestrzeń|numer jednostki=2}}}} * {{Code|{{m|Pudełko|Nazwa przestrzeni nazw dyskusji 2|nazwa przestrzeni nazw 2{{=}}|nazwa jednostki 2{{=}}Szablon:Strona|numer jednostki{{=}}2}}}} → {{Tt|{{#invoke:Pudełko|Nazwa przestrzeni nazw dyskusji 2|nazwa przestrzeni nazw 2=|nazwa jednostki 2=Szablon:Strona|numer jednostki=2}}}} * {{Code|{{m|Pudełko|Nazwa przestrzeni nazw dyskusji 2|nazwa przestrzeni nazw i{{=}}|nazwa jednostki 2{{=}}Szablon:Strona|numer jednostki{{=}}2}}}} → {{Tt|{{#invoke:Pudełko|Nazwa przestrzeni nazw dyskusji 2|nazwa przestrzeni nazw i=|nazwa jednostki 2=Szablon:Strona|numer jednostki=2}}}} * {{Code|{{m|Pudełko|Nazwa przestrzeni nazw dyskusji 2|Szablon|nazwa przestrzeni nazw{{=}}|nazwa jednostki 2{{=}}Wikibooks:Strona|numer jednostki{{=}}2}}}} → {{Tt|{{#invoke:Pudełko|Nazwa przestrzeni nazw dyskusji 2|Szablon|nazwa przestrzeni nazw=|nazwa jednostki 2=Dyskusja Wikibooks:Strona|numer jednostki=2}}}} Powyżej dla przykładu podano parametry nie w rodzicu w szablonie, tylko w dziecku, jeśli chodzi o parametry nazw przestrzeni nazw i nazw jednostek, ale ich się za to nie powinno podawać w tych ramach, tylko w szablonach, w których wywoływane są te ramki pudełek {{Code|{{m|Pudełko}}}}, ale tak tutaj tak zrobiono by było najłatwiej sprawdzić działanie tego typu funkcji. Analogicznie możemy podawać parametry typu jednostki, np.: wywołaniu modułowym {{Code|{{m|Pudełko|Nazwa przestrzeni nazw dyskusji 2|typ jednostki 2{{=}}Podręcznik|nazwa jednostki 2{{=}}Szablon:Strona|numer jednostki{{=}}2}}}} (ale wtedy jest brana przestrzeń nazw z nazwy jednostki), ale o tym więcej w rozdziałach {{Code|{{sr|# p["Dyskusyjny typ jednostki 3"](frame,i)|p=Pudełko}}}} w „{{sr|#Funkcje typu jednostki|p=Pudełko}}”, one definiują przestrzenie dyskusji, ale można użyć parametru dyskusji typu jednostki z obojętnie jaką wartością niepustą, czy pustą, czy nawet jej nie podamy, wtedy wyświetli się nazwa przestrzeni nazw dyskusji. Jeżeli typ jednostki wskazuje na przestrzeń nazw główną, wtedy się liczą parametry nazw jednostek. Również parametry typu jednostki nie powinno się podawać w dziecku w ramce, tylko w rodzicu w szablonie jako parametry, w którym ta ramka jest wywoływana, ale tutaj podano jedynie dla przykładu, jak najłatwiej sprawdzić działanie tych parametrów tej funkcji. Najpierw w funkcji nagłówku brane są parametry nazw przestrzeni nazw, a jeżeli ich nie ma, to parametry typu jednostki, a jeżeli nie ma lub parametry przestrzenne wskazują na przestrzeń główną, i nie ma nazwy jednostki, to generowane są nazwy tej funkcji na podstawie aktualnej strony. == Funkcje pełnych nazw jednostki == === {{Code|p["Pełna nazwa dyskusji jednostki"](frame,i)}} === === {{Code|p["Pełna nazwa przedmiotowa jednostki"](frame,i)}} === === {{Code|p["Pełna nazwa jednostki"](frame,i)}} === == Funkcje pełnych nazw jednostki drugiej wersji == === {{Code|p["Pełna nazwa dyskusji jednostki 2"](frame,i)}} === === {{Code|p["Pełna nazwa przedmiotowa jednostki 2"](frame,i)}} === === {{Code|p["Pełna nazwa jednostki 2"](frame,i)}} === == Funkcje pełnych nazw jednostki trzeciej wersji == === {{Code|p["Pełna nazwa dyskusji jednostki 3"](frame,i)}} === === {{Code|p["Pełna nazwa przedmiotowa jednostki 3"](frame,i)}} === === {{Code|p["Pełna nazwa jednostki 3"](frame,i)}} === == Funkcje nazw jednostki == === {{Code|p["Nazwa jednostki"](frame,i)}} === == Funkcje nazw jednostki drugiej wersji == === {{Code|p["Nazwa jednostki 2"](frame,i)}} === === {{Code|p["Nazwa przedmiotowa jednostki 2"](frame,i)}} === === {{Code|p["Nazwa dyskusji jednostki 2"](frame,i)}} === == Funkcje nazw przestrzeni nazw trzeciej wersji == === {{Code|p["Nazwa przestrzeni nazw 3"](frame,i)}} === Funkcja pisze nazwę przestrzeni nazw, niezależnie, czy to jest przedmiotowa, czy dyskusji, według, i nie zawsze tylko, podanej w zmiennej {{Code|nazwa przestrzeni nazw}} dla pozycja bazowej w podanych parametrach szablonu rodzicu ramki dziecka, lub dla innej pozycji należy parametr podawać w formie {{Code|nazwa przestrzeni nazw 1}}, {{Code|Nazwa przestrzeni nazw 3}}, {{Code|nazwa przestrzeni nazw 3}},..., lub te parametry można podać w postaci ogólnej {{Code|nazwa przestrzeni nazw i}}. W tej funkcji trzeba też podawać parametry nazwy jednostek {{Code|nazwa jednostki}}, {{Code|nazwa jednostki 1}}, {{Code|nazwa jednostki 2}}, {{Code|nazwa jednostki 3}},... Parametry podaje się w parametrach rodzica wywołania tej funkcji {{Code|{{m|Pudełko|Nazwa przestrzeni nazw 3}}}} (ale ich nie trzeba podawać w dziecku, ale można) i w parametrach dziecka, jeśli chodzi o zmienną {{Code|numer jednostki}}, czyli np.: {{Code|{{m|Pudełko|Nazwa przestrzeni nazw 3|numer jednostki{{=}}<jakaś liczba całkowita dodatnia>}}}}. Te parametry przestrzenne zamiast w rodzicu w szablonie można podać w ramce dziecka, wtedy parametry dziecka mają pierwszeństwo. Przestrzeń nazw z parametrów nazw przestrzennych bazowych (bez numerka) może odpowiadać wartości przestrzeni głównej, to wtedy odpowiednia przestrzeń nazw z parametru nazwy jednostki się nie liczy w tej funkcji, aby się liczyła należy użyć funkcji {{Code|{{sr|#p["Nazwa przestrzeni nazw 2"](frame,...)|p=Pudełko}}}}. W tym przypadku funkcja działa jak {{Code|{{sr|#p["Nazwa przestrzeni nazw"](frame,...)|p=Pudełko}}}}. Przestrzeń nazw z parametrów nazw przestrzennych numerkowych może odpowiadać wartości przestrzeni głównej, to wtedy odpowiednia przestrzeń nazw z parametru nazwy jednostki się liczy w tej funkcji, wtedy jest liczona nazwa przestrzeni nazw z tego parametru. Gdy parametry przestrzenne lub typ jednostki w drugim podejściu nie wskazują na przestrzeń główną, to wtedy działanie tej funkcji jest podobne do {{Code|{{sr|#p["Nazwa przestrzeni nazw 2"](frame,...)|p=Pudełko}}}}. Definicja skrótowa funkcji: <syntaxhighlight lang="lua"> p["Nazwa przestrzeni nazw 3"]=function(frame,czy_uwzglednic_alternatywna_nazwe,i)...end; </syntaxhighlight> Wtedy ciało funkcji tej, czyli jego definicja w środku, jest: <syntaxhighlight lang="lua"> -- Jest liczony numer parametru nazwy przestrzeni nazw, domyslnie chodzi tu o numer bazowy parametrów przestrzennych; local numer_jednostki=i or frame.args["numer jednostki"]; local liczba_numeru_jednostki=((numer_jednostki)and(tonumber(numer_jednostki)) or 0); local pudelko_pomocne_modul=require("Module:Pudełko/Pomocne"); -- Liczy nazwę przestrzeni nazw dyskusji na podstawie podanych parametrów; return pudelko_pomocne_modul.Uzyskanie_nazw_jednostki(frame,0,liczba_numeru_jednostki,nil,2); </syntaxhighlight> Parametry funkcji: * {{Code|frame}} - tablica ramki tablicy transportu, * {{Code|czy_uwzglednic_alternatywna_nazwe}} - czy ma uwzględniać nazwę przestrzeni nazw domyślną szablonu, dostępne wartości: {{Code|false}}, w której nazwa domyślna nie jest uwzględniana wtedy, oraz {{Code|nil}} i {{Code|true}}, które oznaczają to samo, w tym jeżeli ona jest uwzględniana, wtedy jest brany parametr pierwszy dziecka, który musi istnieć przy takiej wartości tego parametru, tzn. {{Code|{{m|Pudełko|Nazwa przestrzeni nazw 3|Szablon}}}}, a jeśli nazwa uzyskana nazwy przestrzeni nazw jest w takim przypadku błędna, a jeżeli nazwa domyślna jest błędna, czyli {{Code|{{m|Pudełko|Nazwa przestrzeni nazw 3|Moja przestrzeń}}}}, wtedy funkcja zwraca stan błędu {{Code|(błąd)}}. * {{Code|i}} - numer zmiennej nazwy przestrzeni nazw. Funkcja wykorzystuje {{Code|{{sr|#p.Uzyskanie_nazw_jednostki(frame,...)|p=Pudełko/Pomocne}}}} do wyznaczania ogólnego nazwy przestrzeni nazw dla pozycji bazowej i numerkowej, tzn. dla pozycji: jeden, dwa, trzy,..., itd, i ich ogólnej. Parametr ramki tablicy transportu rodzica szablonu: * {{Code|nazwa przestrzeni nazw}}, {{Code|nazwa przestrzeni nazw 1}}, {{Code|Nazwa przestrzeni nazw 3}}, {{Code|nazwa przestrzeni nazw 3}},..., {{Code|nazwa przestrzeni nazw i}} - nazwy przestrzeni nazw dla pozycji bazowej oraz zwykłej i ogólnej numerkowej, * {{Code|nazwa jednostki}}, {{Code|nazwa jednostki 1}}, {{Code|nazwa jednostki 2}}, {{Code|nazwa jednostki 3}},... - nazwy jednostek dla pozycji bazowej i numerkowej, * {{Code|typ jednostki}}, {{Code|typ jednostki 1}}, {{Code|typ jednostki 2}}, {{Code|typ jednostki 3}},..., {{Code|typ jednostki i}} - typy jednostek, którym odpowiadają pewne przestrzenie przedmiotowe, dla pozycji bazowej, numerkowej i ogólnej, ** {{Code|dyskusja typu jednostki}}, {{Code|dyskusja typu jednostki 1}}, {{Code|dyskusja typ jednostki 2}}, {{Code|dyskusja typ jednostki 3}},..., {{Code|dyskusja typ jednostki i}} - czy dany typ jednostki ma przedstawiać, jeśli niepusta, przestrzeń dyskusji dla pozycji bazowej, numerkowej i ogólnej. Parametry ramki tablicy transportu dziecka: * Parametry dziecka są takie same jak rodzica dla funkcji pudełkowej plus tu wymienione, * {{Code|numer jednostki}} - jak parametr {{Code|i}} nie został ustawiony, to wtedy liczy się ta zmienna. Przykłady: <syntaxhighlight lang="mediawiki"> {{Nazwa szablonu 1|nazwa przestrzeni nazw=Wikibooks|nazwa przestrzeni nazw=|nazwa przestrzeni nazw i=|nazwa jednostki=Szablon:Strona}} ---- {{Nazwa szablonu 2|nazwa przestrzeni nazw=Wikibooks|nazwa przestrzeni nazw 1=Szablon|nazwa przestrzeni nazw i=|nazwa jednostki 2=Wikibooks:Strona}} </syntaxhighlight> W pierwszym wywołaniu {{Code|nazwa przestrzeni nazw}} jest puste, ale dla tego bazowego (bez numerka) szukamy przestrzeni nazw, a więc ta nazwa jest ostateczna. ---- W drugim wywołaniu w dziecku powiedzmy jest wywołanie, i szukamy nazwy przestrzeni nazw o numerze dwa, która została podana, ale istnieje za to jej wersji ogólna {{Code|nazwa przestrzeni nazw i}} i domyślna {{Code|nazwa przestrzeni nazw}}, ale wtedy dla tego numerkowego liczy się to ogólne z {{Code| i}}, a ponieważ ta nazwa jest pusta, więc będziemy liczyli nazwę przestrzeni nazw z {{Code|nazwa jednostki 2}}. Odpowiadająca powyższemu kodowi, powiedzmy wikikod, według ich zawartości, przedstawia się: <syntaxhighlight lang="mediawiki"> {{#invoke:Pudełko|Nazwa przestrzeni nazw 3}} ---- {{#invoke:Pudełko|Nazwa przestrzeni nazw 3|numer jednostki=2}} </syntaxhighlight> Na podstawie powyższego przykładu otrzymamy wynik o schemacie, nie wyniku, bo tam nie ma zmiennej {{Code|nazwa przestrzeni nazw 1}}, ale jest {{Code|nazwa przestrzeni nazw i}}: <syntaxhighlight lang="mediawiki"> <!-- nazwa przestrzeni nazw=""; --> <!-- Czyli wynik: --> <!-- wynik pusty --> <!-- Widzimy, że wygenerowała się nazwa przestrzeni nazw, którą jest przestrzeń nazw główna, jest ciągiem pustym: ""; --> ---- <!-- Ale nie "nazwa przestrzeni nazw 2", bo jej nie ma, ale za to istnieje "nazwa przestrzeni nazw i"; --> <!-- nazwa przestrzeni nazw 2=nazwa przestrzeni nazw i="", a nazwa jednostki 2="Wikibooks:Strona"; --> <!-- Czyli wynik: --> Wikibooks <!-- Widzimy, że wygenerowała się nazwa przestrzeni nazw, którą jest przestrzeń nieprogramowa, ale projektu, wychodząca z nazwy jednostek w tym przypadku z "nazwa jednostki 2"; --> </syntaxhighlight> Dla parametrów numerkowych nie jest brana w tym powyższym przykładzie zmienna {{Code|nazwa przestrzeni nazw 2}}, bo jej nie ma, ale za to jest {{Code|nazwa przestrzeni nazw i}}, bo ona występuje jako parametr domyślny ogólny dla parametrów numerkowych. Tytaj jest używana jest zmienna {{Code|nazwa jednostki 2}} do wygenerowania ostatecznego wyniku, bo jak można zauważyć, parametry przestrzenne wskazują na przestrzeń główną, a nazwy jednostek już nie. Dla parametrów bazowych mamy zmienną {{Code|nazwa przestrzeni nazw}}, ona jest pusta, więc to zostanie wziete do ostatecznego wyniku. Przykłady w wikikodzie: * {{Code|{{m|Pudełko|Nazwa przestrzeni nazw 3|Szablon|nazwa przestrzeni nazw{{=}}Moja przestrzeń|nazwa jednostki{{=}}Wikibooks:Strona}}}} → {{Tt|{{#invoke:Pudełko|Nazwa przestrzeni nazw 3|Szablon|nazwa przestrzeni nazw=Moja przestrzeń|nazwa jednostki=Wikibooks:Szablon}}}} * {{Code|{{m|Pudełko|Nazwa przestrzeni nazw 3|Szablon|nazwa przestrzeni nazw 2{{=}}Moja przestrzeń|nazwa jednostki 2{{=}}Wikibooks:Strona}|numer jednostki{{=}}2}}}} → {{Tt|{{#invoke:Pudełko|Nazwa przestrzeni nazw 3|Szablon|nazwa przestrzeni nazw 2=Moja przestrzeń|nazwa jednostki 2=Wikibooks:Szablon|numer jednostki=2}}}} * {{Code|{{m|Pudełko|Nazwa przestrzeni nazw 3|nazwa przestrzeni nazw{{=}}|nazwa jednostki{{=}}Wikibooks:Strona}}}} → {{Tt|{{#invoke:Pudełko|Nazwa przestrzeni nazw 3|nazwa przestrzeni nazw=|nazwa jednostki=Wikibooks:Szablon}}}} * {{Code|{{m|Pudełko|Nazwa przestrzeni nazw 3|nazwa przestrzeni nazw 2{{=}}|nazwa jednostki 2{{=}}Wikibooks:Strona|numer jednostki{{=}}2}}}} → {{Tt|{{#invoke:Pudełko|Nazwa przestrzeni nazw 3|nazwa przestrzeni nazw 2=|nazwa jednostki 2=Wikibooks:Szablon|numer jednostki=2}}}} Powyżej dla przykładu podano parametry nie w rodzicu w szablonie, tylko w dziecku, jeśli chodzi o parametry nazw przestrzeni nazw i nazw jednostek, ale ich się za to nie powinno podawać w tych ramach, tylko w szablonach, w których wywoływane są te ramki pudełek {{Code|{{m|Pudełko}}}}, ale tak tutaj tak zrobiono by było najłatwiej sprawdzić działanie tego typu funkcji. Analogicznie możemy podawać parametry typu jednostki, np.: wywołaniu modułowym {{Code|{{m|Pudełko|Nazwa przestrzeni nazw 3|typ jednostki 2{{=}}Podręcznik|nazwa jednostki 2{{=}}Szablon:Strona|numer jednostki{{=}}2}}}} (ale wtedy jest brana przestrzeń nazw z nazwy jednostki), ale o tym więcej w rozdziałach {{Code|{{sr|#p["Typ jednostki 3"](frame,i)|p=Pudełko}}}} w „{{sr|#Funkcje typu jednostki|p=Pudełko}}”, on definiuje przestrzenie przedmiotowe, ale można użyć parametru dyskusji typu jednostki z wartością niepustą, wtedy wyświetli się nazwa przestrzeni nazw dyskusji. Jeżeli typ jednostki bazowy wskazuje na przestrzeń nazw główną, wtedy się nie liczą parametry nazw jednostek, a na numerkowy, wtedy się liczy. Również parametry typu jednostki nie powinno się podawać w dziecku w ramce, tylko w rodzicu w szablonie jako parametry, w którym ta ramka jest wywoływana, ale tutaj podano jedynie dla przykładu, jak najłatwiej sprawdzić działanie tych parametrów tej funkcji. Najpierw w funkcji nagłówku brane są parametry nazw przestrzeni nazw, a jeżeli ich nie ma, to parametry typu jednostki, a jeżeli nie ma lub parametry przestrzenne wskazują na przestrzeń główną, i nie ma nazwy jednostki, to generowane są nazwy tej funkcji na podstawie aktualnej strony. === {{Code|p["Nazwa przedmiotowej przestrzeni nazw 3"](frame,i)}} === Funkcja pisze przedmiotową nazwę przestrzeni nazw jakikolwiek nazwy przestrzeni nazw (tzn. nazwę przedmiotową nazwy przestrzenie nazw, czyli nie dyskusji, zamieniana jest na nią samą, czyli identyfikator przestrzeni się nie zmienia, a dyskusji, nie przedmiotową, przekształca się na przedmiotową jej odpowiadającą, czyli w tym przypadku identyfikator przestrzeni zmniejsza się o numer mniej), według podanej w zmiennej {{Code|nazwa przestrzeni nazw}} dla pozycja bazowej w podanych parametrach szablonu rodzicu ramki dziecka, lub dla innej pozycji należy parametr podawać w formie {{Code|nazwa przestrzeni nazw 1}}, {{Code|nazwa przestrzeni nazw 2}}, {{Code|nazwa przestrzeni nazw 3}},..., lub te parametry można podać w postaci ogólnej {{Code|nazwa przestrzeni nazw i}}. Parametry podaje się w parametrach rodzica wywołania tej funkcji {{Code|{{m|Pudełko|Nazwa przedmiotowej przestrzeni nazw 3}}}} (ale ich nie trzeba podawać w dziecku, ale można) i w parametrach dziecka, jeśli chodzi o zmienną {{Code|numer jednostki}}, czyli np.: {{Code|{{m|Pudełko|Nazwa przedmiotowej przestrzeni nazw 3|numer jednostki{{=}}<jakaś liczba całkowita dodatnia>}}}}. Te parametry przestrzenne zamiast w rodzicu w szablonie można podać w ramce dziecka, wtedy parametry dziecka mają pierwszeństwo. Parametry przestrzenne mogą mogą być podane w postaci przestrzeni przedmiotowej lub dyskusji, ale ta funkcja zawsze ją zamienia na przedmiotową. Przestrzeń nazw z parametrów nazw przestrzennych bazowych (bez numerka) może odpowiadać wartości przestrzeni głównej, to wtedy odpowiednia przestrzeń nazw z parametru nazwy jednostki się nie liczy w tej funkcji, aby się liczyła należy użyć funkcji {{Code|{{sr|#p["Nazwa przedmiotowej przestrzeni nazw 2"](frame,...)|p=Pudełko}}}}. W tym przypadku funkcja działa jak {{Code|{{sr|#p["Nazwa przedmiotowej przestrzeni nazw"](frame,...)|p=Pudełko}}}}. Przestrzeń nazw z parametrów nazw przestrzennych numerkowych może odpowiadać wartości przestrzeni głównej, to wtedy odpowiednia przestrzeń nazw z parametru nazwy jednostki się liczy w tej funkcji, wtedy jest liczona nazwa przestrzeni nazw z tego parametru. Gdy parametry przestrzenne lub typ jednostki w drugim podejściu nie wskazują na przestrzeń główną, to wtedy działanie tej funkcji jest podobne do {{Code|{{sr|#p["Nazwa przedmiotowej przestrzeni nazw 2"](frame,...)|p=Pudełko}}}}. Definicja skrótowa funkcji: <syntaxhighlight lang="lua"> p["Nazwa przedmiotowej przestrzeni nazw 3"]=function(frame,czy_uwzglednic_alternatywna_nazwe,i)...end; </syntaxhighlight> Wtedy ciało funkcji tej, czyli jego definicja w środku, jest: <syntaxhighlight lang="lua"> -- Jest liczony numer parametru nazwy przestrzeni nazw, domyslnie chodzi tu o numer bazowy parametrów przestrzennych; local numer_jednostki=i or frame.args["numer jednostki"]; local liczba_numeru_jednostki=((numer_jednostki)and(tonumber(numer_jednostki)) or 0); local pudelko_pomocne_modul=require("Module:Pudełko/Pomocne"); -- Liczy nazwę przestrzeni nazw przedmiotową na podstawie podanych parametrów; return pudelko_pomocne_modul.Uzyskanie_nazw_jednostki(frame,1,liczba_numeru_jednostki,nil,1); </syntaxhighlight> Parametry funkcji: * {{Code|frame}} - tablica ramki tablicy transportu, * {{Code|czy_uwzglednic_alternatywna_nazwe}} - czy ma uwzględniać nazwę przestrzeni nazw domyślną szablonu, dostępne wartości: {{Code|false}}, w której nazwa domyślna nie jest uwzględniana wtedy, oraz {{Code|nil}} i {{Code|true}}, które oznaczają to samo, w tym jeżeli ona jest uwzględniana, wtedy jest brany parametr pierwszy dziecka, który musi istnieć przy takiej wartości tego parametru, tzn. {{Code|{{m|Pudełko|Nazwa przedmiotowej przestrzeni nazw 3|Dyskusja szablonu}}}} - ta nazwa domyślna zostanie zamieniona na przedmiotową, a jak ona by była przedmiotowa, to żadnej zamiany by nie było, a nazwa uzyskana z nazwy przestrzeni nazw z parametrów przestrzennych jest w takim przypadku błędna, to w takim razie brany jest ten parametr, a jeżeli ta nazwa domyślna jest błędna, czyli {{Code|{{m|Pudełko|Nazwa przedmiotowej przestrzeni nazw 3|Moja przestrzeń}}}}, wtedy funkcja zwraca stan błędu {{Code|(błąd)}}. * {{Code|i}} - numer zmiennej nazwy przestrzeni nazw. Funkcja wykorzystuje {{Code|{{sr|#p.Uzyskanie_nazw_jednostki(frame,...)|p=Pudełko/Pomocne}}}} do wyznaczania ogólnego nazwy przestrzeni nazw dla pozycji bazowej i numerkowej, tzn. dla pozycji: jeden, dwa, trzy,..., itd, i ich ogólnej. Parametr ramki tablicy transportu rodzica szablonu: * {{Code|nazwa przestrzeni nazw}}, {{Code|nazwa przestrzeni nazw 1}}, {{Code|nazwa przestrzeni nazw 2}}, {{Code|nazwa przestrzeni nazw 3}},..., {{Code|nazwa przestrzeni nazw i}} - nazwy przestrzeni nazw dla pozycji bazowej oraz zwykłej i ogólnej numerkowej, * {{Code|typ jednostki}}, {{Code|typ jednostki 1}}, {{Code|typ jednostki 2}}, {{Code|typ jednostki 3}},..., {{Code|typ jednostki i}} - typy jednostek, którym odpowiadają pewne przestrzenie przedmiotowe, dla pozycji bazowej, numerkowej i ogólnej. Parametry ramki tablicy transportu dziecka: * Parametry dziecka są takie same jak rodzica dla funkcji pudełkowej plus tu wymienione, * {{Code|numer jednostki}} - jak parametr {{Code|i}} nie został ustawiony, to wtedy liczy się ta zmienna. Przykłady: <syntaxhighlight lang="mediawiki"> {{Nazwa szablonu 1|nazwa przestrzeni nazw=Wikibooks|nazwa przestrzeni nazw=|nazwa przestrzeni nazw i=|nazwa jednostki=Dyskusja Wikibooks:Strona}} ---- {{Nazwa szablonu 2|nazwa przestrzeni nazw=Wikibooks|nazwa przestrzeni nazw 1=Szablon|nazwa przestrzeni nazw i=|nazwa jednostki 2=Dyskusja Wikibooks:Strona}} </syntaxhighlight> W pierwszym wywołaniu {{Code|nazwa przestrzeni nazw}} jest puste, ale dla tego bazowego (bez numerka) szukamy przestrzeni nazw, a więc ta nazwa jest ostateczna. ---- W drugim wywołaniu w dziecku powiedzmy jest wywołanie, i szukamy nazwy przestrzeni nazw o numerze dwa, która została podana, ale istnieje za to jej wersji ogólna {{Code|nazwa przestrzeni nazw i}} i domyślna {{Code|nazwa przestrzeni nazw}}, ale wtedy dla tego numerkowego liczy się to ogólne z {{Code| i}}, a ponieważ ta nazwa jest pusta, więc będziemy liczyli nazwę przestrzeni nazw z {{Code|nazwa jednostki 2}}. Odpowiadająca powyższemu kodowi, powiedzmy wikikod, według ich zawartości, przedstawia się: <syntaxhighlight lang="mediawiki"> {{#invoke:Pudełko|Nazwa przedmiotowej przestrzeni nazw 3}} ---- {{#invoke:Pudełko|Nazwa przedmiotowej przestrzeni nazw 3|numer jednostki=2}} </syntaxhighlight> Na podstawie powyższego przykładu otrzymamy wynik o schemacie, nie wyniku, bo tam nie ma zmiennej {{Code|nazwa przestrzeni nazw 1}}, ale jest {{Code|nazwa przestrzeni nazw i}}: <syntaxhighlight lang="mediawiki"> <!-- nazwa przestrzeni nazw=""; --> <!-- Czyli wynik: --> <!-- wynik pusty --> <!-- Widzimy, że wygenerowała się nazwa przestrzeni nazw, którą jest przestrzeń nazw główna, jest ciągiem pustym: ""; --> ---- <!-- Ale nie "nazwa przestrzeni nazw 2", bo jej nie ma, ale za to istnieje "nazwa przestrzeni nazw i"; --> <!-- nazwa przestrzeni nazw 2=nazwa przestrzeni nazw i="", a nazwa jednostki 2="Dyskusja Wikibooks:Strona"; --> <!-- Czyli wynik: --> Wikibooks <!-- Widzimy, że wygenerowała się nazwa przestrzeni nazw, którą jest przestrzeń nieprogramowa, ale projektu, wychodząca z nazwy jednostek w tym przypadku z "nazwa jednostki 2"; --> </syntaxhighlight> Dla parametrów numerkowych nie jest brana w tym powyższym przykładzie zmienna {{Code|nazwa przestrzeni nazw 2}}, bo jej nie ma, ale za to jest {{Code|nazwa przestrzeni nazw i}}, bo ona występuje jako parametr domyślny ogólny dla parametrów numerkowych. Tytaj jest używana jest zmienna {{Code|nazwa jednostki 2}} do wygenerowania ostatecznego wyniku, bo jak można zauważyć, parametry przestrzenne wskazują na przestrzeń główną, a nazwy jednostek już nie. Dla parametrów bazowych mamy zmienną {{Code|nazwa przestrzeni nazw}}, ona jest pusta, więc to zostanie wziete do ostatecznego wyniku. Przykłady w wikikodzie: * {{Code|{{m|Pudełko|Nazwa przedmiotowej przestrzeni nazw 3|Dyskusja szablonu|nazwa przestrzeni nazw{{=}}Moja przestrzeń|nazwa jednostki{{=}}Dyskusja Wikibooks:Strona}}}} → {{Tt|{{#invoke:Pudełko|Nazwa przedmiotowej przestrzeni nazw 3|Dyskusja szablonu|nazwa przestrzeni nazw=Moja przestrzeń||nazwa jednostki=Dyskusja Wikibooks:Szablon}}}} * {{Code|{{m|Pudełko|Nazwa przedmiotowej przestrzeni nazw 3|Dyskusja szablonu|nazwa przestrzeni nazw 2{{=}}Moja przestrzeń|nazwa jednostki 2{{=}}Dyskusja Wikibooks:Strona|numer jednostki{{=}}2}}}} → {{Tt|{{#invoke:Pudełko|Nazwa przedmiotowej przestrzeni nazw 3|Dyskusja szablonu|nazwa przestrzeni nazw 2=Moja przestrzeń||nazwa jednostki 2=Dyskusja Wikibooks:Szablon|numer jednostki=2}}}} * {{Code|{{m|Pudełko|Nazwa przedmiotowej przestrzeni nazw 3|nazwa przestrzeni nazw{{=}}|nazwa jednostki{{=}}Dyskusja Wikibooks:Strona}}}} → {{Tt|{{#invoke:Pudełko|Nazwa przedmiotowej przestrzeni nazw 3|nazwa przestrzeni nazw=|nazwa jednostki=Dyskusja Wikibooks:Szablon}}}} * {{Code|{{m|Pudełko|Nazwa przedmiotowej przestrzeni nazw 3|nazwa przestrzeni nazw 2{{=}}|nazwa jednostki 2{{=}}Dyskusja Wikibooks:Strona|numer jednostki{{=}}2}}}} → {{Tt|{{#invoke:Pudełko|Nazwa przedmiotowej przestrzeni nazw 3|nazwa przestrzeni nazw 2=|nazwa jednostki 2=Dyskusja Wikibooks:Szablon|numer jednostki=2}}}} Powyżej dla przykładu podano parametry nie w rodzicu w szablonie, tylko w dziecku, jeśli chodzi o parametry nazw przestrzeni nazw, ale ich się za to nie powinno podawać w tych ramach, tylko w szablonach, w których wywoływane są te ramki pudełek {{Code|{{m|Pudełko}}}}, ale tak tutaj tak zrobiono by było najłatwiej sprawdzić działanie tego typu funkcji. Analogicznie możemy podawać parametry typu jednostki, np.: wywołaniu modułowym {{Code|{{m|Pudełko|Nazwa przedmiotowej przestrzeni nazw 3|typ jednostki 2{{=}}strona szablonu|numer jednostki{{=}}2}}}}, ale o tym więcej w rozdziałach {{Code|{{sr|# p["Przedmiotowy typ jednostki 3"](frame,i)|p=Pudełko}}}} w „{{sr|#Funkcje typu jednostki|p=Pudełko}}”, ale wtedy ta sama nazwa przestrzeni nazw reprezentowana przez {{Parametr|typ jednostki 2|strona szablonu}}, jest zamieniana na to samo, lepiej jest tutaj używać parametrów przestrzennych nazw niż typu jednostki, bo typ jednostki ma taką samą wartość dla przestrzeni przedmiotowej, co dyskusji. Tutaj parametr dyskusji typu jednostki bazowy i numerkowy ogólny, czy szczegółowy, nie gra roli, bo nawet, gdy wygenerujemy nazwę przestrzeni dyskusji za pomoca tego parametru, to i tak otrzymamy na samym końcu jego nazwę przedmiotową. Jeżeli typ jednostki bazowy wskazuje na przestrzeń nazw główną, wtedy się nie liczą parametry nazw jednostek, a na numerkowy, wtedy się liczy. Również parametry typu jednostki nie powinno się podawać w dziecku w ramce, tylko w rodzicu w szablonie jako parametry, w którym ta ramka jest wywoływana, ale tutaj podano jedynie dla przykładu, jak najłatwiej sprawdzić działanie tych parametrów tej funkcji. Najpierw w funkcji nagłówku brane są parametry nazw przestrzeni nazw, a jeżeli ich nie ma, to parametry typu jednostki, a jeżeli nie ma, to generowane są nazwy na podstawie aktualnego modułu. === {{Code|p["Nazwa przestrzeni nazw dyskusji 3"](frame,i)}} === Funkcja pisze nazwę przestrzeni nazw dyskusji jakikolwiek nazwy przestrzeni nazw (tzn. nazwę dyskusji nazwy przestrzenie nazw, czyli nie przedmiotowej, zamieniana jest na nią samą, czyli identyfikator przestrzeni się nie zmienia, a przedmiotową, nie dyskusji, przekształca się na dyskusji jej odpowiadającą, czyli w tym przypadku identyfikator przestrzeni zwiększa się o numer więcej), według, i nie zawsze tylko, podanej w zmiennej {{Code|nazwa przestrzeni nazw}} dla pozycja bazowej w podanych parametrach szablonu rodzicu ramki dziecka, lub dla innej pozycji należy parametr podawać w formie {{Code|nazwa przestrzeni nazw 1}}, {{Code|nazwa przestrzeni nazw 2}}, {{Code|nazwa przestrzeni nazw 3}},..., lub te parametry można podać w postaci ogólnej {{Code|nazwa przestrzeni nazw i}}. W tej funkcji trzeba też podawać parametry nazwy jednostek {{Code|nazwa jednostki}}, {{Code|nazwa jednostki 1}}, {{Code|nazwa jednostki 2}}, {{Code|nazwa jednostki 3}},... Parametry podaje się w parametrach rodzica wywołania tej funkcji {{Code|{{m|Pudełko|Nazwa przestrzeni nazw dyskusji 3}}}} (ale ich nie trzeba podawać w dziecku, ale można) i w parametrach dziecka, jeśli chodzi o zmienną {{Code|numer jednostki}}, czyli np.: {{Code|{{m|Pudełko|Nazwa przestrzeni nazw dyskusji 3|numer jednostki{{=}}<jakaś liczba całkowita dodatnia>}}}}. Te parametry przestrzenne zamiast w rodzicu w szablonie można podać w ramce dziecka, wtedy parametry dziecka mają pierwszeństwo. Przestrzeń nazw z parametrów nazw przestrzennych bazowych (bez numerka) może odpowiadać wartości przestrzeni głównej, to wtedy odpowiednia przestrzeń nazw z parametru nazwy jednostki się nie liczy w tej funkcji, aby się liczyła należy użyć funkcji {{Code|{{sr|#p["Nazwa przestrzeni nazw dyskusji 2"](frame,...)|p=Pudełko}}}}. W tym przypadku funkcja działa jak {{Code|{{sr|#p["Nazwa przestrzeni nazw dyskusji"](frame,...)|p=Pudełko}}}}. Przestrzeń nazw z parametrów nazw przestrzennych numerkowych może odpowiadać wartości przestrzeni głównej, to wtedy odpowiednia przestrzeń nazw z parametru nazwy jednostki się liczy w tej funkcji, wtedy jest liczona nazwa przestrzeni nazw z tego parametru. Gdy parametry przestrzenne lub typ jednostki w drugim podejściu nie wskazują na przestrzeń główną, to wtedy działanie tej funkcji jest podobne do {{Code|{{sr|#p["Nazwa przestrzeni nazw dyskusji 2"](frame,...)|p=Pudełko}}}}. Definicja skrótowa funkcji: <syntaxhighlight lang="lua"> p["Nazwa przestrzeni nazw dyskusji 3"]=function(frame,czy_uwzglednic_alternatywna_nazwe,i)...end; </syntaxhighlight> Wtedy ciało funkcji tej, czyli jego definicja w środku, jest: <syntaxhighlight lang="lua"> -- Jest liczony numer parametru nazwy przestrzeni nazw, domyslnie chodzi tu o numer bazowy parametrów przestrzennych; local numer_jednostki=i or frame.args["numer jednostki"]; local liczba_numeru_jednostki=((numer_jednostki)and(tonumber(numer_jednostki)) or 0); local pudelko_pomocne_modul=require("Module:Pudełko/Pomocne"); -- Liczy nazwę przestrzeni nazw dyskusji na podstawie podanych parametrów; return pudelko_pomocne_modul.Uzyskanie_nazw_jednostki(frame,2,liczba_numeru_jednostki,nil,1); </syntaxhighlight> Parametry funkcji: * {{Code|frame}} - tablica ramki tablicy transportu, * {{Code|czy_uwzglednic_alternatywna_nazwe}} - czy ma uwzględniać nazwę przestrzeni nazw domyślną szablonu, dostępne wartości: {{Code|false}}, w której nazwa domyślna nie jest uwzględniana wtedy, oraz {{Code|nil}} i {{Code|true}}, które oznaczają to samo, w tym jeżeli ona jest uwzględniana, wtedy jest brany parametr pierwszy dziecka, który musi istnieć przy takiej wartości tego parametru, tzn. {{Code|{{m|Pudełko|Nazwa przestrzeni nazw dyskusji 3|Szablon}}}}, a jeśli nazwa uzyskana nazwy przestrzeni nazw jest w takim przypadku błędna, a jeżeli nazwa domyślna jest błędna, czyli {{Code|{{m|Pudełko|Nazwa przestrzeni nazw dyskusji 3|Moja przestrzeń}}}}, wtedy funkcja zwraca stan błędu {{Code|(błąd)}}. * {{Code|i}} - numer zmiennej nazwy przestrzeni nazw. Funkcja wykorzystuje {{Code|{{sr|#p.Uzyskanie_nazw_jednostki(frame,...)|p=Pudełko/Pomocne}}}} do wyznaczania ogólnego nazwy przestrzeni nazw dla pozycji bazowej i numerkowej, tzn. dla pozycji: jeden, dwa, trzy,..., itd, i ich ogólnej. Parametr ramki tablicy transportu rodzica szablonu: * {{Code|nazwa przestrzeni nazw}}, {{Code|nazwa przestrzeni nazw 1}}, {{Code|nazwa przestrzeni nazw 2}}, {{Code|nazwa przestrzeni nazw 3}},..., {{Code|nazwa przestrzeni nazw i}} - nazwy przestrzeni nazw dla pozycji bazowej oraz zwykłej i ogólnej numerkowej, * {{Code|nazwa jednostki}}, {{Code|nazwa jednostki 1}}, {{Code|nazwa jednostki 2}}, {{Code|nazwa jednostki 3}},... - nazwy jednostek dla pozycji bazowej i numerkowej, * {{Code|typ jednostki}}, {{Code|typ jednostki 1}}, {{Code|typ jednostki 2}}, {{Code|typ jednostki 3}},..., {{Code|typ jednostki i}} - typy jednostek, którym odpowiadają pewne przestrzenie przedmiotowe, dla pozycji bazowej, numerkowej i ogólnej. Parametry ramki tablicy transportu dziecka: * Parametry dziecka są takie same jak rodzica dla funkcji pudełkowej plus tu wymienione, * {{Code|numer jednostki}} - jak parametr {{Code|i}} nie został ustawiony, to wtedy liczy się ta zmienna. Przykłady: <syntaxhighlight lang="mediawiki"> {{Nazwa szablonu 1|nazwa przestrzeni nazw=Wikibooks|nazwa przestrzeni nazw=|nazwa przestrzeni nazw i=|nazwa jednostki=Szablon:Strona}} ---- {{Nazwa szablonu 2|nazwa przestrzeni nazw=Wikibooks|nazwa przestrzeni nazw 1=Szablon|nazwa przestrzeni nazw i=|nazwa jednostki 2=Wikibooks:Strona}} </syntaxhighlight> W pierwszym wywołaniu {{Code|nazwa przestrzeni nazw}} jest puste, ale dla tego bazowego (bez numerka) szukamy przestrzeni nazw, a więc ta nazwa jest ostateczna. ---- W drugim wywołaniu w dziecku powiedzmy jest wywołanie, i szukamy nazwy przestrzeni nazw o numerze dwa, która została podana, ale istnieje za to jej wersji ogólna {{Code|nazwa przestrzeni nazw i}} i domyślna {{Code|nazwa przestrzeni nazw}}, ale wtedy dla tego numerkowego liczy się to ogólne z {{Code| i}}, a ponieważ ta nazwa jest pusta, więc będziemy liczyli nazwę przestrzeni nazw z {{Code|nazwa jednostki 2}}. Odpowiadająca powyższemu kodowi, powiedzmy wikikod, według ich zawartości, przedstawia się: <syntaxhighlight lang="mediawiki"> {{#invoke:Pudełko|Nazwa przestrzeni nazw 3}} ---- {{#invoke:Pudełko|Nazwa przestrzeni nazw 3|numer jednostki=2}} </syntaxhighlight> Na podstawie powyższego przykładu otrzymamy wynik o schemacie, nie wyniku, bo tam nie ma zmiennej {{Code|nazwa przestrzeni nazw 1}}, ale jest {{Code|nazwa przestrzeni nazw i}}: <syntaxhighlight lang="mediawiki"> <!-- nazwa przestrzeni nazw=""; --> <!-- Czyli wynik: --> Dyskusja <!-- Widzimy, że wygenerowała się nazwa przestrzeni nazw, którą jest przestrzeń nazw niegłówna, jest ciągiem niepustym; --> ---- <!-- Ale nie "nazwa przestrzeni nazw 2", bo jej nie ma, ale za to istnieje "nazwa przestrzeni nazw i"; --> <!-- nazwa przestrzeni nazw 2=nazwa przestrzeni nazw i="", a nazwa jednostki 2="Wikibooks:Strona"; --> <!-- Czyli wynik: --> Dyskusja Wikibooks <!-- Widzimy, że wygenerowała się nazwa przestrzeni nazw, którą jest przestrzeń nieprogramowa, ale projektu, wychodząca z nazwy jednostek w tym przypadku z "nazwa jednostki 2"; --> </syntaxhighlight> Dla parametrów numerkowych nie jest brana w tym powyższym przykładzie zmienna {{Code|nazwa przestrzeni nazw 2}}, bo jej nie ma, ale za to jest {{Code|nazwa przestrzeni nazw i}}, bo ona występuje jako parametr domyślny ogólny dla parametrów numerkowych. Tytaj jest używana jest zmienna {{Code|nazwa jednostki 2}} do wygenerowania ostatecznego wyniku, bo jak można zauważyć, parametry przestrzenne wskazują na przestrzeń główną, a nazwy jednostek już nie. Dla parametrów bazowych mamy zmienną {{Code|nazwa przestrzeni nazw}}, ona jest pusta, więc to zostanie wziete do ostatecznego wyniku. Przykłady w wikikodzie: * {{Code|{{m|Pudełko|Nazwa przestrzeni nazw dyskusji 3|Szablon|nazwa przestrzeni nazw{{=}}Moja przestrzeń|nazwa jednostki{{=}}Wikibooks:Strona}}}} → {{Tt|{{#invoke:Pudełko|Nazwa przestrzeni nazw dyskusji 3|Szablon|nazwa przestrzeni nazw=Moja przestrzeń|nazwa jednostki=Wikibooks:Szablon}}}} * {{Code|{{m|Pudełko|Nazwa przestrzeni nazw dyskusji 3|Szablon|nazwa przestrzeni nazw 2{{=}}Moja przestrzeń|nazwa jednostki 2{{=}}Wikibooks:Strona|numer jednostki{{=}}2}}}} → {{Tt|{{#invoke:Pudełko|Nazwa przestrzeni nazw dyskusji 3|Szablon|nazwa przestrzeni nazw 2=Moja przestrzeń|nazwa jednostki 2=Wikibooks:Szablon|numer jednostki=2}}}} * {{Code|{{m|Pudełko|Nazwa przestrzeni nazw dyskusji 3|nazwa przestrzeni nazw{{=}}|nazwa jednostki{{=}}Wikibooks:Strona}}}} → {{Tt|{{#invoke:Pudełko|Nazwa przestrzeni nazw dyskusji 3|nazwa przestrzeni nazw=|nazwa jednostki=Wikibooks:Szablon}}}} * {{Code|{{m|Pudełko|Nazwa przestrzeni nazw dyskusji 3|nazwa przestrzeni nazw 2{{=}}|nazwa jednostki 2{{=}}Wikibooks:Strona|numer jednostki{{=}}2}}}} → {{Tt|{{#invoke:Pudełko|Nazwa przestrzeni nazw dyskusji 3|nazwa przestrzeni nazw 2=|nazwa jednostki 2=Wikibooks:Szablon|numer jednostki=2}}}} Powyżej dla przykładu podano parametry nie w rodzicu w szablonie, tylko w dziecku, jeśli chodzi o parametry nazw przestrzeni nazw i nazw jednostek, ale ich się za to nie powinno podawać w tych ramach, tylko w szablonach, w których wywoływane są te ramki pudełek {{Code|{{m|Pudełko}}}}, ale tak tutaj tak zrobiono by było najłatwiej sprawdzić działanie tego typu funkcji. Analogicznie możemy podawać parametry typu jednostki, np.: wywołaniu modułowym {{Code|{{m|Pudełko|Nazwa przestrzeni nazw dyskusji 3|typ jednostki 2{{=}}Podręcznik|nazwa jednostki 2{{=}}Szablon:Strona|numer jednostki{{=}}2}}}} (ale wtedy jest brana przestrzeń nazw z nazwy jednostki), ale o tym więcej w rozdziałach {{Code|{{sr|# p["Dyskusyjny typ jednostki 3"](frame,i)|p=Pudełko}}}} w „{{sr|#Funkcje typu jednostki|p=Pudełko}}”, one definiują przestrzenie dyskusji, ale można użyć parametru dyskusji typu jednostki z obojętnie jaką wartością niepustą, czy pustą, czy nawet jej nie podamy, wtedy wyświetli się nazwa przestrzeni nazw dyskusji. Jeżeli typ jednostki bazowy wskazuje na przestrzeń nazw główną, wtedy się nie liczą parametry nazw jednostek, a na numerkowy, wtedy się liczy. Również parametry typu jednostki nie powinno się podawać w dziecku w ramce, tylko w rodzicu w szablonie jako parametry, w którym ta ramka jest wywoływana, ale tutaj podano jedynie dla przykładu, jak najłatwiej sprawdzić działanie tych parametrów tej funkcji. Najpierw w funkcji nagłówku brane są parametry nazw przestrzeni nazw, a jeżeli ich nie ma, to parametry typu jednostki, a jeżeli nie ma lub parametry przestrzenne wskazują na przestrzeń główną, i nie ma nazwy jednostki, to generowane są nazwy tej funkcji na podstawie aktualnej strony. == Funkcje nazw jednostki trzeciej wersji == === {{Code|p["Nazwa jednostki 3"](frame,i)}} === === {{Code|p["Nazwa przedmiotowa jednostki 3"](frame,i)}} === === {{Code|p["Nazwa dyskusji jednostki 3"](frame,i)}} === == Funkcje typu jednostki == === {{Code|p["Typ jednostki"](frame,i)}} === === {{Code|p["Typ jednostki 2"](frame,i)}} === === {{Code|p["Typ jednostki 3"](frame,i)}} === === Funkcje typu jednostki przedmiotowe === ==== {{Code|p["Przedmiotowy typ jednostki"](frame,i)}} ==== ==== {{Code|p["Przedmiotowy typ jednostki 2"](frame,i)}} ==== ==== {{Code|p["Przedmiotowy typ jednostki 3"](frame,i)}} ==== === Fukcje typu jednostki dyskusji === ==== {{Code|p["Dyskusyjny typ jednostki"](frame,i)}} ==== ==== {{Code|p["Dyskusyjny typ jednostki 2"](frame,i)}} ==== ==== {{Code|p["Dyskusyjny typ jednostki 3"](frame,i)}} ==== == Funkcje chech pudełka == === {{Code|p["Cecha pudełka"](frame)}} === === {{Code|p["Przedmiotowa cecha pudełka"](frame)}} === === {{Code|p["Dyskusyjna cecha pudełka"](frame)}} === == Fukcje ogólnego pudełka == === {{Code|p["Ogólne pudełko"](frame)}} === == Funkcje ogólne == === {{Code|p["Tekst pudełka"](frame)}} === == Funkcje błędów pudełka == === {{Code|p["Błędy pudełka"](frame)}} === === {{Code|p["Przedmiotowe błędy pudełka"](frame)}} === === {{Code|p["Dyskusyjne błędy pudełka"](frame)}} === == Funkcje nazw stron == === {{Code|p["Nazwa strony głównej projektu"](frame,i)}} === === {{Code|p["Nazwa strony głównej dla dzieci projektu"](frame,i)}} === == Funkcje kodów == === {{Code|p["Kod języka"](frame,i)}} === === {{Code|p["Kod projektu"](frame,i)}} === === {{Code|p["Klucz projektu"](frame,i)}} === == Funkcje wiki == === {{Code|p["Inny niż język bieżący wiki"](frame)}} === === {{Code|p["Inne niż lokalne wiki"](frame)}} === === {{Code|p["Inne niż bieżące wiki"](frame)}} === == Funkcje typów parametrów, czy podane je == === {{Code|p["Podano parametry nienazwane"](frame)}} === === {{Code|p["Podano parametry numerowane"](frame)}} === === {{Code|p["Podano parametry nazwane"](frame)}} === == Funkcje kodów tego projektu == === {{Code|p["Kod projektu tego projektu"](frame)}} === === {{Code|p["Kod języka tego projektu"](frame)}} === === {{Code|p["Klucz projektu tego projektu"](frame)}} === == Funkcje stron == === {{Code|p["Strona główna tego projektu"](frame)}} === === {{Code|p["Strona główna dla dzieci tego projektu"](frame)}} === == Funkcje nazw stron drugiej wersji == === {{Code|p["Nazwa strony głównej dla dzieci projektu 2"](frame)}} === === {{Code| p["Nazwa strony głównej projektu 2"](frame)}} === {{BrClear}} <noinclude><!-- -->{{ProstaStronaKoniec}}<!-- -->{{Kategoria|Opisy funkcji, w Lua w Scribunto, w modułach}}<!-- --></noinclude> 8niih8gag3zsbexlxuaawqq52i2kuuw 540453 540452 2026-04-24T05:25:06Z Persino 2851 /* {{Code|p["Nazwa przedmiotowej przestrzeni nazw"](frame,...)}} */ 540453 wikitext text/x-wiki <noinclude>{{ProstaStronaStart | nagłówek = {{Podrozdział|{{ld2|Pudełko}}|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 pudelko_modul=require("Module:Pudełko"); </syntaxhighlight> dzięki, któremu można wypisywać funkcje należącego do niego. Posługuje się na parametrach pudełkowych {{Parametr|nazwa przestrzeni nazw}} (czy też bez numerka {{Parametr|nazwa przestrzeni nazw i}} dla tego numerowanego) lub te z numerkiem po jednej spacji w nich (ale nie dla tego z końcówką {{Code| i}}) mogą zostać użyte jako parametry szablonu. Moduł {{Code|{{ld2|Pudełko}}}} przedstawia funkcje nazw w oparciu o funkcje nazw {{Code|{{ld2|Nazwy}}}}, generuje on nazwy za pomocą parametrów pudełkowych podanych poniżej. Parametr {{Parametr|nazwa jednostki}} (lub parametr {{Parametr|cel}} dla numerka tego pierwszego, tego alternatywnego), lub te z numerkiem po jednej spacji w nazwie parametru, albo numerowane numerkami {{Code|1}}, {{Code|2}},..., mogą zostać użyte jako parametry szablonu. Parametry określające rodzaj jednostki {{Parametr|typ jednostki}} z {{Parametr|dyskusja typu jednostki}}, itp. w wersjach z numerkiem po jednej spacji w nich mogą zostać użyte jako parametry szablonu. A te tymi numerowanymi liczbami naturalnymi {{Tt|nazwy jednostki}} od jedynki wzwyż poprzez szablon, w którym są one użyte, one też mogą być użyte z dwukropkiem, te numerowane, na samym początku nazwy, wtedy one są traktowane jako pełne nazwy strony, i wtedy one nie zostaną z interpretowane, że do nich trzeba użyć parametr odpowiedni z nazwą przetrzeni nazw z tego numerowanego, czy ogólny, aby utworzyć znów inną pełną nazwę strony dla tego numerka. Zestawienie: * {{Code|nazwa przestrzeni nazw}} i {{Code|nazwa przestrzeni nazw i}} (ogólna nazwa przestrzeni nazw dla wszystkich numerków, i tych numerowanych jednostek) - i to pierwsze z numerkiem, tzn. {{Code|nazwa przestrzeni nazw 1}}, {{Code|nazwa przestrzeni nazw 2}}, ..., * {{Code|nazwa jednostki}} - i te z numerkiem: {{Code|nazwa jednostki 1}}, {{Code|nazwa jednostki 2}}, ..., lub gdy jest zamiast tego parametrem numerowany, {{Code|1}}, {{Code|2}},..., który dla tego pierwszego może być uznany jako: {{Code|cel}} {{=}} {{Code|1}}, * {{Code|typ jednostki}} (parametr bazowy) i {{Code|typ jednostki i}} (parametr domyślny numerkowy) - i te z numerkiem: {{Code|typ jednostki 1}}, {{Code|typ jednostki 2}}, ..., tzn. gdy chcemy określić z jakim typem jednostki mamy do czynienia w zależności do jakiej przestrzeni nazw należy, a w danej, czy jest on np. programowy, czy tylko jest opisem, jak to bywa w szablonach {{Np|Template|link=tak}}, podobnie jest w przypadku {{Np|Module|link=tak}}, czy jak jest w innych przestrzeniach nazw, ** {{Code|dyskusja typu jednostki}} (parametr bazowy) i {{Code|dyskusja typu jednostki i}} (parametr domyślny numerkowy) - i te z numerkiem: {{Code|dyskusja typu jednostki 1}}, {{Code|dyskusja typu jednostki 2}}, ..., gdy chcemy określić wartością niepustą,że chodzi tutaj o typ jednostki. == {{Code|p.CzyNiepoprawnaNazwa(nazwa_jednostki)}} == Funkcja sprawdzajaca, czy jest poprawnie podana nazwa jednostki, czy ma poprawną nazwę. Znakami tymi, z których nie powinna składać się nazwa jest {{Code|<nowiki>{}<>|[]#\n</nowiki>}} i dodatkowo znak {{Code|&#127;}} (kod {{Code|{{Nowiki|&#127;}}}}). Też nie może składać się z trzech znaków tyldy, tzn. {{Code|<nowiki>~~~</nowiki>}}. Również w swojej budowie nie może składać się ze kodów {{Strong|HTML}} literowych o wzorze {{Code|{{Nowiki|&(%a+);}}}}. Natomiast może składać się z {{Code|{{Nowiki|&#(%d+);}}}} i {{Code|{{Nowiki|&#x(%x+);}}}}, ale w pierw te kody muszą być zamienione na normalne znaki. Skrótowa definicja funkcji: <syntaxhighlight lang="lua"> function p.CzyNiepoprawnaNazwa(nazwa_jednostki)...end; </syntaxhighlight> Wtedy ciało funkcji tej, czyli jego definicja w środku, jest: <syntaxhighlight lang="lua"> -- Moduł: "Moduł:Html/dane", służy do ładowania znaku o kodzie HTML "&#127;"; local html_dane_modul=mw.loadData("Module:Html/dane"); return mw.ustring.match(nazwa_jednostki,"[{}<>|%[%]#\n"..html_dane_modul.znak_127.."]+") or mw.ustring.match(nazwa_jednostki,"~~~") or mw.ustring.match(nazwa_jednostki,"&(%a+);"); </syntaxhighlight> Parametry: * {{Code|nazwa_jednostki}} - nazwa jednostki do sprawdzenia. Przykłady: <syntaxhighlight lang="lua"> local pudelko_modul=require("Module:Pudełko"); -- Podana przykładowa niepoprawna nazwa jedostki local nazwa_jednostki="Nazwa pliku [[Nazwa linku w pliku]]"; -- Fukcja zwróci wartość: local czy_poprawna_nazwa=true; local czy_poprawna_nazwa=pudelko_modul.CzyNiepoprawnaNazwa(nazwa_jednostki); </syntaxhighlight> == Funkcje nazw przestrzeni nazw == === {{Code|p["Nazwa przestrzeni nazw"](frame,...)}} === Funkcja pisze nazwę przestrzeni nazw, niezależnie, czy to jest przedmiotowa, czy dyskusji, według podanej w zmiennej {{Code|nazwa przestrzeni nazw}} dla pozycja bazowej w podanych parametrach szablonu rodzicu ramki dziecka, lub dla innej pozycji należy parametr podawać w formie {{Code|nazwa przestrzeni nazw 1}}, {{Code|nazwa przestrzeni nazw 2}}, {{Code|nazwa przestrzeni nazw 3}},..., lub te parametry można podać w postaci ogólnej {{Code|nazwa przestrzeni nazw i}}. Parametry podaje się w parametrach rodzica wywołania tej funkcji {{Code|{{m|Pudełko|Nazwa przestrzeni nazw}}}} (ale ich nie trzeba podawać w dziecku, ale można) i w parametrach dziecka, jeśli chodzi o zmienną {{Code|numer jednostki}}, czyli np.: {{Code|{{m|Pudełko|Nazwa przestrzeni nazw|numer jednostki{{=}}<jakaś liczba całkowita dodatnia>}}}}. Te parametry przestrzenne zamiast w rodzicu w szablonie można podać w ramce dziecka, wtedy parametry dziecka mają pierwszeństwo. Przestrzeń nazw z parametrów nazw przestrzennych może odpowiadać wartości przestrzeni głównej, to wtedy odpowiednia przestrzeń nazw z parametru nazwy jednostki się nie liczy w tej funkcji, aby się liczyła należy użyć funkcji {{Code|{{sr|#p["Nazwa przestrzeni nazw 2"](frame,...)|p=Pudełko}}}}. Definicja skrótowa funkcji: <syntaxhighlight lang="lua"> p["Nazwa przestrzeni nazw"]=function(frame,czy_uwzglednic_alternatywna_nazwe,i)...end; </syntaxhighlight> Wtedy ciało funkcji tej, czyli jego definicja w środku, jest: <syntaxhighlight lang="lua"> -- Jest liczony numer parametru nazwy przestrzeni nazw, domyslnie chodzi tu o numer bazowy parametrów przestrzennych; local numer_jednostki=i or frame.args["numer jednostki"]; local liczba_numer_jednostki=((numer_jednostki)and(tonumber(numer_jednostki))or 0); local pudelko_pomocne_modul=require("Module:Pudełko/Pomocne"); -- Liczy nazwę przestrzeni nazw na podstawie podanych parametrów; return pudelko_pomocne_modul.Nazwa_przestrzeni_nazw(frame,0, czy_uwzglednic_alternatywna_nazwe,liczba_numer_jednostki); </syntaxhighlight> Parametry funkcji: * {{Code|frame}} - tablica ramki tablicy transportu, * {{Code|czy_uwzglednic_alternatywna_nazwe}} - czy ma uwzględniać nazwę przestrzeni nazw domyślną szablonu, dostępne wartości: {{Code|false}}, w której nazwa domyślna nie jest uwzględniana wtedy, oraz {{Code|nil}} i {{Code|true}}, które oznaczają to samo, w tym jeżeli ona jest uwzględniana, wtedy jest brany parametr pierwszy dziecka, który musi istnieć przy takiej wartości tego parametru, tzn. {{Code|{{m|Pudełko|Nazwa przestrzeni nazw|Szablon}}}}, a jeśli nazwa uzyskana nazwy przestrzeni nazw jest w takim przypadku błędna, a jeżeli nazwa domyślna jest błędna, czyli {{Code|{{m|Pudełko|Nazwa przestrzeni nazw|Moja przestrzeń}}}}, wtedy funkcja zwraca stan błędu {{Code|(błąd)}}. * {{Code|i}} - numer zmiennej nazwy przestrzeni nazw. Funkcja wykorzystuje {{Code|{{sr|#p.Nazwa_przestrzeni_nazw(frame,...)|p=Pudełko/Pomocne}}}} do wyznaczania ogólnego nazwy przestrzeni nazw dla pozycji bazowej i numerkowej, tzn. dla pozycji: jeden, dwa, trzy,..., itd, i ich ogólnej. Parametr ramki tablicy transportu rodzica szablonu: * {{Code|nazwa przestrzeni nazw}}, {{Code|nazwa przestrzeni nazw 1}}, {{Code|nazwa przestrzeni nazw 2}}, {{Code|nazwa przestrzeni nazw 3}},..., {{Code|nazwa przestrzeni nazw i}} - nazwy przestrzeni nazw dla pozycji bazowej oraz zwykłej i ogólnej numerkowej, * {{Code|typ jednostki}}, {{Code|typ jednostki 1}}, {{Code|typ jednostki 2}}, {{Code|typ jednostki 3}},..., {{Code|typ jednostki i}} - typy jednostek, którym odpowiadają pewne przestrzenie przedmiotowe, dla pozycji bazowej, numerkowej i ogólnej, ** {{Code|dyskusja typu jednostki}}, {{Code|dyskusja typu jednostki 1}}, {{Code|dyskusja typ jednostki 2}}, {{Code|dyskusja typ jednostki 3}},..., {{Code|dyskusja typ jednostki i}} - czy dany typ jednostki ma przedstawiać, jeśli niepusta, przestrzeń dyskusji dla pozycji bazowej, numerkowej i ogólnej. Parametry ramki tablicy transportu dziecka: * Parametry dziecka są takie same jak rodzica dla funkcji pudełkowej plus tu wymienione, * {{Code|numer jednostki}} - jak parametr {{Code|i}} nie został ustawiony, to wtedy liczy się ta zmienna. Przykłady: <syntaxhighlight lang="mediawiki"> {{Nazwa szablonu|nazwa przestrzeni nazw=Wikibooks|nazwa przestrzeni nazw 2=Szablon|nazwa przestrzeni nazw i=Moduł}} </syntaxhighlight> W dziecku powiedzmy jest wywołanie, i szukamy nazwy przestrzeni nazw o numerze dwa, która nie została podana, ale istnieje za to jej wersji ogólna {{Code|nazwa przestrzeni nazw i}} i domyślna {{Code|nazwa przestrzeni nazw}}: <syntaxhighlight lang="mediawiki"> {{#invoke:Pudełko|Nazwa przestrzeni nazw|numer jednostki=1}} </syntaxhighlight> Na podstawie powyższego przykładu otrzymamy wynik o schemacie, nie wyniku, bo tam nie ma zmiennej {{Code|nazwa przestrzeni nazw 1}}, ale jest {{Code|nazwa przestrzeni nazw i}}: <syntaxhighlight lang="mediawiki"> <!-- Ale nie "nazwa przestrzeni nazw", bo jej nie ma, ale za to istnieje "nazwa przestrzeni nazw i"; --> <!-- nazwa przestrzeni nazw 2=nazwa przestrzeni nazw i=Moduł; --> <!-- Czyli wynik: --> Moduł <!-- Widzimy, że wygenerowała się nazwa przestrzeni nazw, którą jest przestrzeń programowa, którą również jest "Szablon"; --> </syntaxhighlight> Nie jest brana w tym powyższym przykładzie zmienna {{Code|nazwa przestrzeni nazw}}, bo jej nie ma, ale za to jest {{Code|nazwa przestrzeni nazw i}}, bo ona występuje jako parametr domyślny ogólny dla parametrów numerkowych. Przykłady w wikikodzie: * {{Code|{{m|Pudełko|Nazwa przestrzeni nazw|numer jednostki{{=}}2}}}} → {{Tt|{{#invoke:Pudełko|Nazwa przestrzeni nazw|numer jednostki=2}}}} * {{Code|{{m|Pudełko|Nazwa przestrzeni nazw|Szablon|nazwa przestrzeni nazw i{{=}}Moja przestrzeń|numer jednostki{{=}}2}}}} → {{Tt|{{#invoke:Pudełko|Nazwa przestrzeni nazw|Szablon|nazwa przestrzeni nazw i=Moja przestrzeń|numer jednostki=2}}}} * {{Code|{{m|Pudełko|Nazwa przestrzeni nazw|nazwa przestrzeni nazw 2{{=}}Szablon|numer jednostki{{=}}2}}}} → {{Tt|{{#invoke:Pudełko|Nazwa przestrzeni nazw|nazwa przestrzeni nazw 2=Szablon|numer jednostki=2}}}} * {{Code|{{m|Pudełko|Nazwa przestrzeni nazw|nazwa przestrzeni nazw 2{{=}}Szablon|numer jednostki{{=}}2}}}} → {{Tt|{{#invoke:Pudełko|Nazwa przestrzeni nazw|nazwa przestrzeni nazw i=Szablon|numer jednostki=2}}}} * {{Code|{{m|Pudełko|Nazwa przestrzeni nazw|nazwa przestrzeni nazw{{=}}Szablon|numer jednostki{{=}}2}}}} → {{Tt|{{#invoke:Pudełko|Nazwa przestrzeni nazw|nazwa przestrzeni nazw=Szablon|numer jednostki=2}}}} Powyżej dla przykładu podano parametry nie w rodzicu w szablonie, tylko w dziecku, jeśli chodzi o parametry nazw przestrzeni nazw, ale ich się za to nie powinno podawać w tych ramach, tylko w szablonach, w których wywoływane są te ramki pudełek {{Code|{{m|Pudełko}}}}, ale tak tutaj tak zrobiono by było najłatwiej sprawdzić działanie tego typu funkcji. Analogicznie możemy podawać parametry typu jednostki, np.: wywołaniu modułowym {{Code|{{m|Pudełko|Nazwa przestrzeni nazw|typ jednostki 2{{=}}strona szablonu|numer jednostki{{=}}2}}}}, ale o tym więcej w rozdziałach {{Code|{{sr|# p["Typ jednostki"](frame,i)|p=Pudełko}}}} w „{{sr|#Funkcje typu jednostki|p=Pudełko}}”, on definiuje przestrzenie przedmiotowe, ale można użyć parametru dyskusji typu jednostki z wartością niepustą, wtedy wyświetli się nazwa przestrzeni nazw dyskusji. Również parametry typu jednostki nie powinno się podawać w dziecku w ramce, tylko w rodzicu w szablonie jako parametry, w którym ta ramka jest wywoływana, ale tutaj podano jedynie dla przykładu, jak najłatwiej sprawdzić działanie tych parametrów tej funkcji. Najpierw w funkcji nagłówku brane są parametry nazw przestrzeni nazw, a jeżeli ich nie ma, to parametry typu jednostki, a jeżeli nie ma, to generowane są nazwy na podstawie aktualnego modułu. === {{Code|p["Nazwa przedmiotowej przestrzeni nazw"](frame,...)}} === Funkcja pisze przedmiotową nazwę przestrzeni nazw jakikolwiek nazwy przestrzeni nazw (tzn. nazwę przedmiotową nazwy przestrzenie nazw, czyli nie dyskusji, zamieniana jest na nią samą, czyli identyfikator przestrzeni się nie zmienia, a dyskusji, nie przedmiotową, przekształca się na przedmiotową jej odpowiadającą, czyli w tym przypadku identyfikator przestrzeni zmniejsza się o numer mniej), według podanej w zmiennej {{Code|nazwa przestrzeni nazw}} dla pozycja bazowej w podanych parametrach szablonu rodzicu ramki dziecka, lub dla innej pozycji należy parametr podawać w formie {{Code|nazwa przestrzeni nazw 1}}, {{Code|nazwa przestrzeni nazw 2}}, {{Code|nazwa przestrzeni nazw 3}},..., lub te parametry można podać w postaci ogólnej {{Code|nazwa przestrzeni nazw i}}. Parametry podaje się w parametrach rodzica wywołania tej funkcji {{Code|{{m|Pudełko|Nazwa przedmiotowej przestrzeni nazw}}}} (ale ich nie trzeba podawać w dziecku, ale można) i w parametrach dziecka, jeśli chodzi o zmienną {{Code|numer jednostki}}, czyli np.: {{Code|{{m|Pudełko|Nazwa przedmiotowej przestrzeni nazw|numer jednostki{{=}}<jakaś liczba całkowita dodatnia>}}}}. Te parametry przestrzenne zamiast w rodzicu w szablonie można podać w ramce dziecka, wtedy parametry dziecka mają pierwszeństwo. Parametry przestrzenne mogą mogą być podane w postaci przestrzeni przedmiotowej lub dyskusji, ale ta funkcja zawsze ją zamienia na przedmiotową. Przestrzeń nazw z parametrów nazw przestrzennych może odpowiadać wartości przestrzeni głównej, to wtedy odpowiednia przestrzeń nazw z parametru nazwy jednostki się nie liczy w tej funkcji, aby się liczyła należy użyć funkcji {{Code|{{sr|#p["Nazwa przedmiotowej przestrzeni nazw 2"](frame,...)|p=Pudełko}}}}. Definicja skrótowa funkcji: <syntaxhighlight lang="lua"> p["Nazwa przedmiotowej przestrzeni nazw"]=function(frame,czy_uwzglednic_alternatywna_nazwe,i)...end; </syntaxhighlight> Wtedy ciało funkcji tej, czyli jego definicja w środku, jest: <syntaxhighlight lang="lua"> -- Jest liczony numer parametru nazwy przestrzeni nazw, domyslnie chodzi tu o numer bazowy parametrów przestrzennych; local numer_jednostki=i or frame.args["numer jednostki"]; local liczba_numer_jednostki=((numer_jednostki)and(tonumber(numer_jednostki))or 0); local pudelko_pomocne_modul=require("Module:Pudełko/Pomocne"); -- Liczy nazwę przestrzeni nazw przedmiotową na podstawie podanych parametrów; return pudelko_pomocne_modul.Nazwa_przestrzeni_nazw(frame,1, czy_uwzglednic_alternatywna_nazwe,liczba_numer_jednostki); </syntaxhighlight> Parametry funkcji: * {{Code|frame}} - tablica ramki tablicy transportu, * {{Code|czy_uwzglednic_alternatywna_nazwe}} - czy ma uwzględniać nazwę przestrzeni nazw domyślną szablonu, dostępne wartości: {{Code|false}}, w której nazwa domyślna nie jest uwzględniana wtedy, oraz {{Code|nil}} i {{Code|true}}, które oznaczają to samo, w tym jeżeli ona jest uwzględniana, wtedy jest brany parametr pierwszy dziecka, który musi istnieć przy takiej wartości tego parametru, tzn. {{Code|{{m|Pudełko|Nazwa przedmiotowej przestrzeni nazw|Dyskusja szablonu}}}} - ta nazwa domyślna zostanie zamieniona na przedmiotową, a jak ona by była przedmiotowa, to żadnej zamiany, by nie było, a jeśli nazwa uzyskana z nazwy przestrzeni nazw z parametrów przestrzennych jest w takim przypadku błędna, to w takim razie brany jest ten parametr, a jeżeli ta nazwa domyślna jest błędna, czyli {{Code|{{m|Pudełko|Nazwa przedmiotowej przestrzeni nazw|Moja przestrzeń}}}}, wtedy funkcja zwraca stan błędu {{Code|(błąd)}}. * {{Code|i}} - numer zmiennej nazwy przestrzeni nazw. Funkcja wykorzystuje {{Code|{{sr|#p.Nazwa_przestrzeni_nazw(frame,...)|p=Pudełko/Pomocne}}}} do wyznaczania ogólnego nazwy przestrzeni nazw dla pozycji bazowej i numerkowej, tzn. dla pozycji: jeden, dwa, trzy,..., itd, i ich ogólnej. Parametr ramki tablicy transportu rodzica szablonu: * {{Code|nazwa przestrzeni nazw}}, {{Code|nazwa przestrzeni nazw 1}}, {{Code|nazwa przestrzeni nazw 2}}, {{Code|nazwa przestrzeni nazw 3}},..., {{Code|nazwa przestrzeni nazw i}} - nazwy przestrzeni nazw dla pozycji bazowej oraz zwykłej i ogólnej numerkowej, * {{Code|typ jednostki}}, {{Code|typ jednostki 1}}, {{Code|typ jednostki 2}}, {{Code|typ jednostki 3}},..., {{Code|typ jednostki i}} - typy jednostek, którym odpowiadają pewne przestrzenie przedmiotowe, dla pozycji bazowej, numerkowej i ogólnej. Parametry ramki tablicy transportu dziecka: * Parametry dziecka są takie same jak rodzica dla funkcji pudełkowej plus tu wymienione, * {{Code|numer jednostki}} - jak parametr {{Code|i}} nie został ustawiony, to wtedy liczy się ta zmienna. Przykłady: <syntaxhighlight lang="mediawiki"> {{Nazwa szablonu|nazwa przestrzeni nazw=Dyskusja Wikibooks|nazwa przestrzeni nazw 2=Dyskusja szablonu|nazwa przestrzeni nazw i=Dyskusja modułu}} </syntaxhighlight> W dziecku powiedzmy jest wywołanie, i szukamy nazwy przestrzeni nazw o numerze dwa, która nie została podana, ale istnieje za to jej wersji ogólna {{Code|nazwa przestrzeni nazw i}} i domyślna {{Code|nazwa przestrzeni nazw}}: <syntaxhighlight lang="mediawiki"> {{#invoke:Pudełko|Nazwa przedmiotowej przestrzeni nazw|numer jednostki=1}} </syntaxhighlight> Na podstawie powyższego przykładu otrzymamy wynik o schemacie, nie wyniku, bo tam nie ma zmiennej {{Code|nazwa przestrzeni nazw 1}}, ale jest {{Code|nazwa przestrzeni nazw i}}: <syntaxhighlight lang="mediawiki"> <!-- Ale nie "nazwa przestrzeni nazw", bo jej nie ma, ale za to istnieje "nazwa przestrzeni nazw i"; --> <!-- nazwa przestrzeni nazw 2=nazwa przestrzeni nazw i=Dyskusja modułu; --> <!-- Czyli wynik: --> Moduł <!-- Widzimy, że wygenerowała się nazwa przestrzeni nazw, którą jest przestrzeń przedmiotowa programowa przestrzeni dyskusji "Dyskusja modułu", którą również jest "Szablon" jego przestrzeni dyskusji "Dyskusja szablonu", a dla ich przestrzeni przedmiotowej, zamiast dyskusji, to samo przekształca się na to samo; --> </syntaxhighlight> Nie jest brana w tym powyższym przykładzie zmienna {{Code|nazwa przestrzeni nazw}}, bo jej nie ma, ale za to jest {{Code|nazwa przestrzeni nazw i}}, bo ona występuje jako parametr domyślny ogólny dla parametrów numerkowych. Przykłady w wikikodzie: * {{Code|{{m|Pudełko|Nazwa przedmiotowej przestrzeni nazw|numer jednostki{{=}}2}}}} → {{Tt|{{#invoke:Pudełko|Nazwa przedmiotowej przestrzeni nazw|numer jednostki=2}}}} * {{Code|{{m|Pudełko|Nazwa przedmiotowej przestrzeni nazw|Dyskusja szablonu|nazwa przestrzeni nazw i{{=}}Moja przestrzeń|numer jednostki{{=}}2}}}} → {{Tt|{{#invoke:Pudełko|Nazwa przedmiotowej przestrzeni nazw|Dyskusja szablonu|nazwa przestrzeni nazw i=Moja przestrzeń|numer jednostki=2}}}} * {{Code|{{m|Pudełko|Nazwa przedmiotowej przestrzeni nazw|nazwa przestrzeni nazw 2{{=}}Dyskusja szablonu|numer jednostki{{=}}2}}}} → {{Tt|{{#invoke:Pudełko|Nazwa przedmiotowej przestrzeni nazw|nazwa przestrzeni nazw 2=Dyskusja szablonu|numer jednostki=2}}}} * {{Code|{{m|Pudełko|Nazwa przedmiotowej przestrzeni nazw|nazwa przestrzeni nazw 2{{=}}Dyskusja szablonu|numer jednostki{{=}}2}}}} → {{Tt|{{#invoke:Pudełko|Nazwa przedmiotowej przestrzeni nazw|nazwa przestrzeni nazw i=Dyskusja szablonu|numer jednostki=2}}}} * {{Code|{{m|Pudełko|Nazwa przedmiotowej przestrzeni nazw|nazwa przestrzeni nazw{{=}}Dyskusja szablonu|numer jednostki{{=}}2}}}} → {{Tt|{{#invoke:Pudełko|Nazwa przedmiotowej przestrzeni nazw|nazwa przestrzeni nazw=Dyskusja szablonu|numer jednostki=2}}}} Powyżej dla przykładu podano parametry nie w rodzicu w szablonie, tylko w dziecku, jeśli chodzi o parametry nazw przestrzeni nazw, ale ich się za to nie powinno podawać w tych ramach, tylko w szablonach, w których wywoływane są te ramki pudełek {{Code|{{m|Pudełko}}}}, ale tak tutaj tak zrobiono by było najłatwiej sprawdzić działanie tego typu funkcji. Analogicznie możemy podawać parametry typu jednostki, np.: wywołaniu modułowym {{Code|{{m|Pudełko|Nazwa przedmiotowej przestrzeni nazw|typ jednostki 2{{=}}strona szablonu|numer jednostki{{=}}2}}}}, ale o tym więcej w rozdziałach {{Code|{{sr|# p["Przedmiotowy typ jednostki"](frame,i)|p=Pudełko}}}} w „{{sr|#Funkcje typu jednostki|p=Pudełko}}”, ale wtedy ta sama nazwa przestrzeni nazw reprezentowana przez {{Parametr|typ jednostki 2|strona szablonu}}, jest zamieniana na to samo, lepiej jest tutaj używać parametrów przestrzennych nazw niż typu jednostki, bo typ jednostki ma taką samą wartość dla przestrzeni przedmiotowej, co dyskusji. Tutaj parametr dyskusji typu jednostki bazowy i numerkowy ogólny, czy szczegółowy, nie gra roli, bo nawet, gdy wygenerujemy nazwę przestrzeni dyskusji za pomoca tego parametru, to i tak otrzymamy na samym końcu jego nazwę przedmiotową. Również parametry typu jednostki nie powinno się podawać w dziecku w ramce, tylko w rodzicu w szablonie jako parametry, w którym ta ramka jest wywoływana, ale tutaj podano jedynie dla przykładu, jak najłatwiej sprawdzić działanie tych parametrów tej funkcji. Najpierw w funkcji nagłówku brane są parametry nazw przestrzeni nazw, a jeżeli ich nie ma, to parametry typu jednostki, a jeżeli nie ma, to generowane są nazwy na podstawie aktualnego modułu. === {{Code|p["Nazwa przestrzeni nazw dyskusji"](frame,...)}} === Funkcja pisze nazwę przestrzeni nazw dyskusji jakikolwiek nazwy przestrzeni nazw (tzn. nazwę przedmiotową nazwy przestrzenie nazw, czyli nie dyskusji, zamieniana jest na dyskusji, czyli identyfikator przestrzeni się zmienia jeden wyżej, a dyskusji, nie przedmiotową, przekształca się na tą samą), według podanej w zmiennej {{Code|nazwa przestrzeni nazw}} dla pozycja bazowej w podanych parametrach szablonu rodzicu ramki dziecka, lub dla innej pozycji należy parametr podawać w formie {{Code|nazwa przestrzeni nazw 1}}, {{Code|nazwa przestrzeni nazw 2}}, {{Code|nazwa przestrzeni nazw 3}},..., lub te parametry można podać w postaci ogólnej {{Code|nazwa przestrzeni nazw i}}. Parametry podaje się w parametrach rodzica wywołania tej funkcji {{Code|{{m|Pudełko|Nazwa przestrzeni nazw dyskusji}}}} (ale ich nie trzeba podawać w dziecku, ale można) i w parametrach dziecka, jeśli chodzi o zmienną {{Code|numer jednostki}}, czyli np.: {{Code|{{m|Pudełko|Nazwa przestrzeni nazw dyskusji|numer jednostki{{=}}<jakaś liczba całkowita dodatnia>}}}}. Te parametry przestrzenne zamiast w rodzicu w szablonie można podać w ramce dziecka, wtedy parametry dziecka mają pierwszeństwo. Parametry przestrzenne mogą mogą być podane w postaci przestrzeni przedmiotowej lub dyskusji, ale ta funkcja zawsze ją zamienia na dyskusji. Przestrzeń nazw z parametrów nazw przestrzennych może odpowiadać wartości przestrzeni głównej, to wtedy odpowiednia przestrzeń nazw z parametru nazwy jednostki się nie liczy w tej funkcji, aby się liczyła należy użyć funkcji {{Code|{{sr|#p["Nazwa przestrzeni nazw dyskusji 2"](frame,...)|p=Pudełko}}}}. Definicja skrótowa funkcji: <syntaxhighlight lang="lua"> p["Nazwa przestrzeni nazw dyskusji"]=function(frame,czy_uwzglednic_alternatywna_nazwe,i)...end; </syntaxhighlight> Wtedy ciało funkcji tej, czyli jego definicja w środku, jest: <syntaxhighlight lang="lua"> -- Jest liczony numer parametru nazwy przestrzeni nazw, domyslnie chodzi tu o numer bazowy parametrów przestrzennych; local numer_jednostki=i or frame.args["numer jednostki"]; local liczba_numer_jednostki=((numer_jednostki)and(tonumber(numer_jednostki))or 0); local pudelko_pomocne_modul=require("Module:Pudełko/Pomocne"); -- Liczy nazwę przestrzeni nazw dyskusji na podstawie podanych parametrów; return pudelko_pomocne_modul.Nazwa_przestrzeni_nazw(frame,2, czy_uwzglednic_alternatywna_nazwe,liczba_numer_jednostki); </syntaxhighlight> Parametry funkcji: * {{Code|frame}} - tablica ramki tablicy transportu, * {{Code|czy_uwzglednic_alternatywna_nazwe}} - czy ma uwzględniać nazwę przestrzeni nazw domyślną szablonu, dostępne wartości: {{Code|false}}, w której nazwa domyślna nie jest uwzględniana wtedy, oraz {{Code|nil}} i {{Code|true}}, które oznaczają to samo, w tym jeżeli ona jest uwzględniana, wtedy jest brany parametr pierwszy dziecka, który musi istnieć przy takiej wartości tego parametru, tzn. {{Code|{{m|Pudełko|Nazwa przestrzeni nazw dyskusji|Szablon}}}} - ta nazwa domyślna zostanie przekształcona na dyskusji, a jeżeli ona by była dyskusji, to nie byłoby żadnego przekształcenia, a nazwa uzyskana nazwy przestrzeni nazw z parametrów przestrzennych jest w takim przypadku błędna, to w takim razie brany jest ten parametr, a jeżeli nazwa domyślna jest błędna, czyli {{Code|{{m|Pudełko|Nazwa przestrzeni nazw dyskusji|Moja przestrzeń}}}}, wtedy funkcja zwraca stan błędu {{Code|(błąd)}}. * {{Code|i}} - numer zmiennej nazwy przestrzeni nazw. Funkcja wykorzystuje {{Code|{{sr|#p.Nazwa_przestrzeni_nazw(frame,...)|p=Pudełko/Pomocne}}}} do wyznaczania ogólnego nazwy przestrzeni nazw dla pozycji bazowej i numerkowej, tzn. dla pozycji: jeden, dwa, trzy,..., itd, i ich ogólnej. Parametr ramki tablicy transportu rodzica szablonu: * {{Code|nazwa przestrzeni nazw}}, {{Code|nazwa przestrzeni nazw 1}}, {{Code|nazwa przestrzeni nazw 2}}, {{Code|nazwa przestrzeni nazw 3}},..., {{Code|nazwa przestrzeni nazw i}} - nazwy przestrzeni nazw dla pozycji bazowej oraz zwykłej i ogólnej numerkowej, * {{Code|typ jednostki}}, {{Code|typ jednostki 1}}, {{Code|typ jednostki 2}}, {{Code|typ jednostki 3}},..., {{Code|typ jednostki i}} - typy jednostek, którym odpowiadają pewne przestrzenie przedmiotowe, dla pozycji bazowej, numerkowej i ogólnej. Parametry ramki tablicy transportu dziecka: * Parametry dziecka są takie same jak rodzica dla funkcji pudełkowej plus tu wymienione, * {{Code|numer jednostki}} - jak parametr {{Code|i}} nie został ustawiony, to wtedy liczy się ta zmienna. Przykłady: <syntaxhighlight lang="mediawiki"> {{Nazwa szablonu|nazwa przestrzeni nazw=Wikibooks|nazwa przestrzeni nazw 2=Szablon|nazwa przestrzeni nazw i=Moduł}} </syntaxhighlight> W dziecku powiedzmy jest wywołanie, i szukamy nazwy przestrzeni nazw o numerze dwa, która nie została podana, ale istnieje za to jej wersji ogólna {{Code|nazwa przestrzeni nazw i}} i domyślna {{Code|nazwa przestrzeni nazw}}: <syntaxhighlight lang="mediawiki"> {{#invoke:Pudełko|Nazwa przestrzeni nazw dyskusji|numer jednostki=1}} </syntaxhighlight> Na podstawie powyższego przykładu otrzymamy wynik o schemacie, nie wyniku, bo tam nie ma zmiennej {{Code|nazwa przestrzeni nazw 1}}, ale jest {{Code|nazwa przestrzeni nazw i}}: <syntaxhighlight lang="mediawiki"> <!-- Ale nie "nazwa przestrzeni nazw", bo jej nie ma, ale za to istnieje "nazwa przestrzeni nazw i"; --> <!-- nazwa przestrzeni nazw 2=nazwa przestrzeni nazw i=Moduł; --> <!-- Czyli wynik: --> Dyskusja modułu <!-- Widzimy, że wygenerowała się nazwa przestrzeni nazw, którą jest przestrzeń dyskusji przestrzeni programowej przestrzeni przedmiotowej "Moduł", którą również jest "Szablon" jego przestrzeni dyskusji "Dyskusja szablonu", a dla ich przestrzeni przedmiotowej, zamiast dyskusji, to przekształca się na dyskusji jej odpowiadającą; --> </syntaxhighlight> Nie jest brana w tym powyższym przykładzie zmienna {{Code|nazwa przestrzeni nazw}}, bo jej nie ma, ale za to jest {{Code|nazwa przestrzeni nazw i}}, bo ona występuje jako parametr domyślny ogólny dla parametrów numerkowych. Przykłady w wikikodzie: * {{Code|{{m|Pudełko|Nazwa przestrzeni nazw dyskusji|numer jednostki{{=}}2}}}} → {{Tt|{{#invoke:Pudełko|Nazwa przestrzeni nazw dyskusji|numer jednostki=2}}}} * {{Code|{{m|Pudełko|Nazwa przestrzeni nazw dyskusji|Szablon|nazwa przestrzeni nazw i{{=}}Moja przestrzeń|numer jednostki{{=}}2}}}} → {{Tt|{{#invoke:Pudełko|Nazwa przestrzeni nazw dyskusji|Szablon|nazwa przestrzeni nazw i=Moja przestrzeń|numer jednostki=2}}}} * {{Code|{{m|Pudełko|Nazwa przestrzeni nazw dyskusji|nazwa przestrzeni nazw 2{{=}}Szablon|numer jednostki{{=}}2}}}} → {{Tt|{{#invoke:Pudełko|Nazwa przestrzeni nazw dyskusji|nazwa przestrzeni nazw 2=Szablon|numer jednostki=2}}}} * {{Code|{{m|Pudełko|Nazwa przestrzeni nazw dyskusji|nazwa przestrzeni nazw 2{{=}}Szablon|numer jednostki{{=}}2}}}} → {{Tt|{{#invoke:Pudełko|Nazwa przestrzeni nazw dyskusji|nazwa przestrzeni nazw i=Szablon|numer jednostki=2}}}} * {{Code|{{m|Pudełko|Nazwa przestrzeni nazw dyskusji|nazwa przestrzeni nazw{{=}}Szablon|numer jednostki{{=}}2}}}} → {{Tt|{{#invoke:Pudełko|Nazwa przestrzeni nazw dyskusji|nazwa przestrzeni nazw=Szablon|numer jednostki=2}}}} Powyżej dla przykładu podano parametry nie w rodzicu w szablonie, tylko w dziecku, jeśli chodzi o parametry nazw przestrzeni nazw, ale ich się za to nie powinno podawać w tych ramach, tylko w szablonach, w których wywoływane są te ramki pudełek {{Code|{{m|Pudełko}}}}, ale tak tutaj tak zrobiono by było najłatwiej sprawdzić działanie tego typu funkcji. Analogicznie możemy podawać parametry typu jednostki, np.: wywołaniu modułowym {{Code|{{m|Pudełko|Nazwa przestrzeni nazw dyskusji|typ jednostki 2{{=}}strona szablonu|numer jednostki{{=}}2}}}}, ale o tym więcej w rozdziałach {{Code|{{sr|# p["Dyskusyjny typ jednostki"](frame,i)|p=Pudełko}}}} w „{{sr|#Funkcje typu jednostki|p=Pudełko}}”, ale wtedy nazwa przestrzeni nazw reprezentowana przez {{Parametr|typ jednostki 2|strona szablonu}}, jest zamieniana na nazwę przestrzeni nazw dyskusji. Parametr dyskusji typu jednostki bazowy lub dla danego numerka ogólny, czy szczegółowy, nie gra roli. Również parametry typu jednostki nie powinno się podawać w dziecku w ramce, tylko w rodzicu w szablonie jako parametry, w którym ta ramka jest wywoływana, ale tutaj podano jedynie dla przykładu, jak najłatwiej sprawdzić działanie tych parametrów tej funkcji. Najpierw w funkcji nagłówku brane są parametry nazw przestrzeni nazw, a jeżeli ich nie ma, to parametry typu jednostki, a jeżeli nie ma, to generowane są nazwy na podstawie aktualnego modułu. == Funkcje nazw przestrzeni nazw drugiej wersji == === {{Code|p["Nazwa przestrzeni nazw 2"](frame,...)}} === Funkcja pisze nazwę przestrzeni nazw, niezależnie, czy to jest przedmiotowa, czy dyskusji, według, i nie zawsze tylko, podanej w zmiennej {{Code|nazwa przestrzeni nazw}} dla pozycja bazowej w podanych parametrach szablonu rodzicu ramki dziecka, lub dla innej pozycji należy parametr podawać w formie {{Code|nazwa przestrzeni nazw 1}}, {{Code|nazwa przestrzeni nazw 2}}, {{Code|nazwa przestrzeni nazw 3}},..., lub te parametry można podać w postaci ogólnej {{Code|nazwa przestrzeni nazw i}}. W tej funkcji trzeba też podawać parametry nazwy jednostek {{Code|nazwa jednostki}}, {{Code|nazwa jednostki 1}}, {{Code|nazwa jednostki 2}}, {{Code|nazwa jednostki 3}},... Parametry podaje się w parametrach rodzica wywołania tej funkcji {{Code|{{m|Pudełko|Nazwa przestrzeni nazw 2}}}} (ale ich nie trzeba podawać w dziecku, ale można) i w parametrach dziecka, jeśli chodzi o zmienną {{Code|numer jednostki}}, czyli np.: {{Code|{{m|Pudełko|Nazwa przestrzeni nazw 2|numer jednostki{{=}}<jakaś liczba całkowita dodatnia>}}}}. Te parametry przestrzenne zamiast w rodzicu w szablonie można podać w ramce dziecka, wtedy parametry dziecka mają pierwszeństwo. Przestrzeń nazw z parametrów nazw przestrzennych może odpowiadać wartości przestrzeni głównej, to wtedy odpowiednia przestrzeń nazw z parametru nazwy jednostki się liczy w tej funkcji, wtedy jest liczona nazwa przestrzeni nazw z tego parametru. Gdy parametry przestrzenne lub typ jednostki w drugim podejściu nie wskazują na przestrzeń główną, to wtedy działanie tej funkcji jest podobne do {{Code|{{sr|#p["Nazwa przestrzeni nazw"](frame,...)|p=Pudełko}}}}. Definicja skrótowa funkcji: <syntaxhighlight lang="lua"> p["Nazwa przestrzeni nazw 2"]=function(frame,czy_uwzglednic_alternatywna_nazwe,i)...end; </syntaxhighlight> Wtedy ciało funkcji tej, czyli jego definicja w środku, jest: <syntaxhighlight lang="lua"> local pudelko_pomocne_modul=require("Module:Pudełko/Pomocne"); -- Liczy nazwę przestrzeni nazw, jeżeli z parametrów przestrzennych przestrzeń wskazuje na główną, to wtedy jest liczona przestrzeń nazw z nazwy jednostki; return pudelko_pomocne_modul.Nazwa_przestrzeni_nazw_2(frame,czy_uwzglednic_alternatywna_nazwe,i) </syntaxhighlight> Parametry funkcji: * {{Code|frame}} - tablica ramki tablicy transportu, * {{Code|czy_uwzglednic_alternatywna_nazwe}} - czy ma uwzględniać nazwę przestrzeni nazw domyślną szablonu, dostępne wartości: {{Code|false}}, w której nazwa domyślna nie jest uwzględniana wtedy, oraz {{Code|nil}} i {{Code|true}}, które oznaczają to samo, w tym jeżeli ona jest uwzględniana, wtedy jest brany parametr pierwszy dziecka, który musi istnieć przy takiej wartości tego parametru, tzn. {{Code|{{m|Pudełko|Nazwa przestrzeni nazw 2|Szablon}}}}, a jeśli nazwa uzyskana nazwy przestrzeni nazw jest w takim przypadku błędna, a jeżeli nazwa domyślna jest błędna, czyli {{Code|{{m|Pudełko|Nazwa przestrzeni nazw 2|Moja przestrzeń}}}}, wtedy funkcja zwraca stan błędu {{Code|(błąd)}}. * {{Code|i}} - numer zmiennej nazwy przestrzeni nazw. Funkcja wykorzystuje {{Code|{{sr|#p.Nazwa_przestrzeni_nazw_2(frame,...)|p=Pudełko/Pomocne}}}} do wyznaczania ogólnego nazwy przestrzeni nazw dla pozycji bazowej i numerkowej, tzn. dla pozycji: jeden, dwa, trzy,..., itd, i ich ogólnej. Parametr ramki tablicy transportu rodzica szablonu: * {{Code|nazwa przestrzeni nazw}}, {{Code|nazwa przestrzeni nazw 1}}, {{Code|nazwa przestrzeni nazw 2}}, {{Code|nazwa przestrzeni nazw 3}},..., {{Code|nazwa przestrzeni nazw i}} - nazwy przestrzeni nazw dla pozycji bazowej oraz zwykłej i ogólnej numerkowej, * {{Code|nazwa jednostki}}, {{Code|nazwa jednostki 1}}, {{Code|nazwa jednostki 2}}, {{Code|nazwa jednostki 3}},... - nazwy jednostek dla pozycji bazowej i numerkowej, * {{Code|typ jednostki}}, {{Code|typ jednostki 1}}, {{Code|typ jednostki 2}}, {{Code|typ jednostki 3}},..., {{Code|typ jednostki i}} - typy jednostek, którym odpowiadają pewne przestrzenie przedmiotowe, dla pozycji bazowej, numerkowej i ogólnej, ** {{Code|dyskusja typu jednostki}}, {{Code|dyskusja typu jednostki 1}}, {{Code|dyskusja typ jednostki 2}}, {{Code|dyskusja typ jednostki 3}},..., {{Code|dyskusja typ jednostki i}} - czy dany typ jednostki ma przedstawiać, jeśli niepusta, przestrzeń dyskusji dla pozycji bazowej, numerkowej i ogólnej. Parametry ramki tablicy transportu dziecka: * Parametry dziecka są takie same jak rodzica dla funkcji pudełkowej plus tu wymienione, * {{Code|numer jednostki}} - jak parametr {{Code|i}} nie został ustawiony, to wtedy liczy się ta zmienna. Przykłady: <syntaxhighlight lang="mediawiki"> {{Nazwa szablonu|nazwa przestrzeni nazw=Wikibooks|nazwa przestrzeni nazw 1=Szablon|nazwa przestrzeni nazw i=|nazwa jednostki 2=Wikibooks:Strona}} </syntaxhighlight> W dziecku powiedzmy jest wywołanie, i szukamy nazwy przestrzeni nazw o numerze dwa, która została podana, ale istnieje za to jej wersji ogólna {{Code|nazwa przestrzeni nazw i}} i domyślna {{Code|nazwa przestrzeni nazw}}, ale wtedy dla tego numerkowego liczy się to ogólne z {{Code| i}}, a ponieważ ta nazwa jest pusta, więc będziemy liczyli nazwę przestrzeni nazw z {{Code|nazwa jednostki 2}}: <syntaxhighlight lang="mediawiki"> {{#invoke:Pudełko|Nazwa przestrzeni nazw 2|numer jednostki=2}} </syntaxhighlight> Na podstawie powyższego przykładu otrzymamy wynik o schemacie, nie wyniku, bo tam nie ma zmiennej {{Code|nazwa przestrzeni nazw 1}}, ale jest {{Code|nazwa przestrzeni nazw i}}: <syntaxhighlight lang="mediawiki"> <!-- Ale nie "nazwa przestrzeni nazw 2", bo jej nie ma, ale za to istnieje "nazwa przestrzeni nazw i"; --> <!-- nazwa przestrzeni nazw 2=nazwa przestrzeni nazw i="", a nazwa jednostki 2="Wikibooks:Strona"; --> <!-- Czyli wynik: --> Wikibooks <!-- Widzimy, że wygenerowała się nazwa przestrzeni nazw, którą jest przestrzeń nieprogramowa, ale projektu, wychodząca z nazwy jednostek w tym przypadku z "nazwa jednostki 2"; --> </syntaxhighlight> Nie jest brana w tym powyższym przykładzie zmienna {{Code|nazwa przestrzeni nazw}}, bo jej nie ma, ale za to jest {{Code|nazwa przestrzeni nazw i}}, bo ona występuje jako parametr domyślny ogólny dla parametrów numerkowych. Tytaj jest używana jest zmienna {{Code|nazwa jednostki 2}} do wygenerowania ostatecznego wyniku, bo jak można zauważyć, parametry przestrzenne wskazują na przestrzeń główną, a nazwy jednostek już nie. Przykłady w wikikodzie: * {{Code|{{m|Pudełko|Nazwa przestrzeni nazw 2|numer jednostki{{=}}2}}}} → {{Tt|{{#invoke:Pudełko|Nazwa przestrzeni nazw 2|numer jednostki=2}}}} * {{Code|{{m|Pudełko|Nazwa przestrzeni nazw 2|Szablon|nazwa przestrzeni nazw i{{=}}Moja przestrzeń|numer jednostki{{=}}2}}}} → {{Tt|{{#invoke:Pudełko|Nazwa przestrzeni nazw 2|Szablon|nazwa przestrzeni nazw i=Moja przestrzeń|numer jednostki=2}}}} * {{Code|{{m|Pudełko|Nazwa przestrzeni nazw 2|nazwa przestrzeni nazw 2{{=}}|nazwa jednostki 2{{=}}Szablon:Strona|numer jednostki{{=}}2}}}} → {{Tt|{{#invoke:Pudełko|Nazwa przestrzeni nazw 2|nazwa przestrzeni nazw 2=|nazwa jednostki 2=Szablon:Strona|numer jednostki=2}}}} * {{Code|{{m|Pudełko|Nazwa przestrzeni nazw 2|nazwa przestrzeni nazw i{{=}}|nazwa jednostki 2{{=}}Szablon:Strona|numer jednostki{{=}}2}}}} → {{Tt|{{#invoke:Pudełko|Nazwa przestrzeni nazw 2|nazwa przestrzeni nazw i=|nazwa jednostki 2=Szablon:Strona|numer jednostki=2}}}} * {{Code|{{m|Pudełko|Nazwa przestrzeni nazw 2|Szablon|nazwa przestrzeni nazw{{=}}|nazwa jednostki 2{{=}}Wikibooks:Strona|numer jednostki{{=}}2}}}} → {{Tt|{{#invoke:Pudełko|Nazwa przestrzeni nazw 2|Szablon|nazwa przestrzeni nazw=|nazwa jednostki 2=Wikibooks:Strona|numer jednostki=2}}}} Powyżej dla przykładu podano parametry nie w rodzicu w szablonie, tylko w dziecku, jeśli chodzi o parametry nazw przestrzeni nazw i nazw jednostek, ale ich się za to nie powinno podawać w tych ramach, tylko w szablonach, w których wywoływane są te ramki pudełek {{Code|{{m|Pudełko}}}}, ale tak tutaj tak zrobiono by było najłatwiej sprawdzić działanie tego typu funkcji. Analogicznie możemy podawać parametry typu jednostki, np.: wywołaniu modułowym {{Code|{{m|Pudełko|Nazwa przestrzeni nazw 2|typ jednostki 2{{=}}Podręcznik|nazwa jednostki 2{{=}}Szablon:Strona|numer jednostki{{=}}2}}}} (ale wtedy jest brana przestrzeń nazw z nazwy jednostki), ale o tym więcej w rozdziałach {{Code|{{sr|#p["Typ jednostki 2"](frame,i)|p=Pudełko}}}} w „{{sr|#Funkcje typu jednostki|p=Pudełko}}”, on definiuje przestrzenie przedmiotowe, ale można użyć parametru dyskusji typu jednostki z wartością niepustą, wtedy wyświetli się nazwa przestrzeni nazw dyskusji. Jeżeli typ jednostki wskazuje na przestrzeń nazw główną, wtedy się liczą parametry nazw jednostek. Również parametry typu jednostki nie powinno się podawać w dziecku w ramce, tylko w rodzicu w szablonie jako parametry, w którym ta ramka jest wywoływana, ale tutaj podano jedynie dla przykładu, jak najłatwiej sprawdzić działanie tych parametrów tej funkcji. Najpierw w funkcji nagłówku brane są parametry nazw przestrzeni nazw, a jeżeli ich nie ma, to parametry typu jednostki, a jeżeli nie ma lub parametry przestrzenne wskazują na przestrzeń główną, i nie ma nazwy jednostki, to generowane są nazwy tej funkcji na podstawie aktualnej strony. === {{Code|p["Nazwa przedmiotowej przestrzeni nazw 2"](frame,...)}} === Funkcja pisze przedmiotową nazwę przestrzeni nazw jakikolwiek nazwy przestrzeni nazw (tzn. nazwę przedmiotową nazwy przestrzenie nazw, czyli nie dyskusji, zamieniana jest na nią samą, czyli identyfikator przestrzeni się nie zmienia, a dyskusji, nie przedmiotową, przekształca się na przedmiotową jej odpowiadającą, czyli w tym przypadku identyfikator przestrzeni zmniejsza się o numer mniej), według, i nie zawsze tylko, podanej w zmiennej {{Code|nazwa przestrzeni nazw}} dla pozycja bazowej w podanych parametrach szablonu rodzicu ramki dziecka, lub dla innej pozycji należy parametr podawać w formie {{Code|nazwa przestrzeni nazw 1}}, {{Code|nazwa przestrzeni nazw 2}}, {{Code|nazwa przestrzeni nazw 3}},..., lub te parametry można podać w postaci ogólnej {{Code|nazwa przestrzeni nazw i}}. W tej funkcji trzeba też podawać parametry nazwy jednostek {{Code|nazwa jednostki}}, {{Code|nazwa jednostki 1}}, {{Code|nazwa jednostki 2}}, {{Code|nazwa jednostki 3}},... Parametry podaje się w parametrach rodzica wywołania tej funkcji {{Code|{{m|Pudełko|Nazwa przedmiotowej przestrzeni nazw 2}}}} (ale ich nie trzeba podawać w dziecku, ale można) i w parametrach dziecka, jeśli chodzi o zmienną {{Code|numer jednostki}}, czyli np.: {{Code|{{m|Pudełko|Nazwa przedmiotowej przestrzeni nazw 2|numer jednostki{{=}}<jakaś liczba całkowita dodatnia>}}}}. Te parametry przestrzenne zamiast w rodzicu w szablonie można podać w ramce dziecka, wtedy parametry dziecka mają pierwszeństwo. Przestrzeń nazw z parametrów nazw przestrzennych po przekształceniu na przedmiotową może odpowiadać wartości przestrzeni głównej, to wtedy odpowiednia przestrzeń nazw z parametru nazwy jednostki się liczy w tej funkcji, wtedy jest liczona nazwa przestrzeni nazw z tego parametru. Gdy parametry przestrzenne lub typ jednostki w drugim podejściu nie wskazują na przestrzeń główną, to wtedy działanie tej funkcji jest podobne do {{Code|{{sr|#p["Nazwa przedmiotowej przestrzeni nazw"](frame,...)|p=Pudełko}}}}. Definicja skrótowa funkcji: <syntaxhighlight lang="lua"> p["Nazwa przedmiotowej przestrzeni nazw 2"]=function(frame,czy_uwzglednic_alternatywna_nazwe,i)...end; </syntaxhighlight> Wtedy ciało funkcji tej, czyli jego definicja w środku, jest: <syntaxhighlight lang="lua"> local pudelko_pomocne_modul=require("Module:Pudełko/Pomocne"); return pudelko_pomocne_modul.Nazwa_przestrzeni_nazw_przedmiotowa_dyskusji_2(frame,czy_uwzglednic_alternatywna_nazwe,i,"przedmiotowa"); </syntaxhighlight> Parametry funkcji: * {{Code|frame}} - tablica ramki tablicy transportu, * {{Code|czy_uwzglednic_alternatywna_nazwe}} - czy ma uwzględniać nazwę przestrzeni nazw domyślną szablonu, dostępne wartości: {{Code|false}}, w której nazwa domyślna nie jest uwzględniana wtedy, oraz {{Code|nil}} i {{Code|true}}, które oznaczają to samo, w tym jeżeli ona jest uwzględniana, wtedy jest brany parametr pierwszy dziecka, który musi istnieć przy takiej wartości tego parametru, tzn. {{Code|{{m|Pudełko|Nazwa przedmiotowej przestrzeni nazw 2|Szablon}}}}, a jeśli nazwa uzyskana nazwy przestrzeni nazw jest w takim przypadku błędna, a jeżeli nazwa domyślna jest błędna, czyli {{Code|{{m|Pudełko|Nazwa przedmiotowej przestrzeni nazw 2|Moja przestrzeń}}}}, wtedy funkcja zwraca stan błędu {{Code|(błąd)}}. * {{Code|i}} - numer zmiennej nazwy przestrzeni nazw. Funkcja wykorzystuje {{Code|{{sr|#p.Nazwa_przestrzeni_nazw_przedmiotowa_dyskusji_2(frame,...)|p=Pudełko/Pomocne}}}} do wyznaczania ogólnego nazwy przestrzeni nazw dla pozycji bazowej i numerkowej, tzn. dla pozycji: jeden, dwa, trzy,..., itd, i ich ogólnej. Parametr ramki tablicy transportu rodzica szablonu: * {{Code|nazwa przestrzeni nazw}}, {{Code|nazwa przestrzeni nazw 1}}, {{Code|nazwa przestrzeni nazw 2}}, {{Code|nazwa przestrzeni nazw 3}},..., {{Code|nazwa przestrzeni nazw i}} - nazwy przestrzeni nazw dla pozycji bazowej oraz zwykłej i ogólnej numerkowej, * {{Code|nazwa jednostki}}, {{Code|nazwa jednostki 1}}, {{Code|nazwa jednostki 2}}, {{Code|nazwa jednostki 3}},... - nazwy jednostek dla pozycji bazowej i numerkowej, * {{Code|typ jednostki}}, {{Code|typ jednostki 1}}, {{Code|typ jednostki 2}}, {{Code|typ jednostki 3}},..., {{Code|typ jednostki i}} - typy jednostek, którym odpowiadają pewne przestrzenie przedmiotowe, dla pozycji bazowej, numerkowej i ogólnej. Parametry ramki tablicy transportu dziecka: * Parametry dziecka są takie same jak rodzica dla funkcji pudełkowej plus tu wymienione, * {{Code|numer jednostki}} - jak parametr {{Code|i}} nie został ustawiony, to wtedy liczy się ta zmienna. Przykłady: <syntaxhighlight lang="mediawiki"> {{Nazwa szablonu|nazwa przestrzeni nazw=Wikibooks|nazwa przestrzeni nazw 1=Szablon|nazwa przestrzeni nazw i=|nazwa jednostki 2=Dyskusja Wikibooks:Strona}} </syntaxhighlight> W dziecku powiedzmy jest wywołanie, i szukamy nazwy przestrzeni nazw o numerze dwa, która została podana, ale istnieje za to jej wersji ogólna {{Code|nazwa przestrzeni nazw i}} i domyślna {{Code|nazwa przestrzeni nazw}}, ale wtedy dla tego numerkowego liczy się to ogólne z {{Code| i}}, a ponieważ ta nazwa jest pusta, więc będziemy liczyli nazwę przestrzeni nazw z {{Code|nazwa jednostki 2}}: <syntaxhighlight lang="mediawiki"> {{#invoke:Pudełko|Nazwa przedmiotowej przestrzeni nazw 2|numer jednostki=2}} </syntaxhighlight> Na podstawie powyższego przykładu otrzymamy wynik o schemacie, nie wyniku, bo tam nie ma zmiennej {{Code|nazwa przestrzeni nazw 1}}, ale jest {{Code|nazwa przestrzeni nazw i}}: <syntaxhighlight lang="mediawiki"> <!-- Ale nie "nazwa przestrzeni nazw 2", bo jej nie ma, ale za to istnieje "nazwa przestrzeni nazw i"; --> <!-- nazwa przestrzeni nazw 2=nazwa przestrzeni nazw i="", a nazwa jednostki 2="Dyskusja Wikibooks:Strona"; --> <!-- Czyli wynik: --> Wikibooks <!-- Widzimy, że wygenerowała się nazwa przestrzeni nazw, którą jest przestrzeń nieprogramowa, ale projektu, wychodząca z nazwy jednostek w tym przypadku z "nazwa jednostki 2"; --> </syntaxhighlight> Nie jest brana w tym powyższym przykładzie zmienna {{Code|nazwa przestrzeni nazw}}, bo jej nie ma, ale za to jest {{Code|nazwa przestrzeni nazw i}}, bo ona występuje jako parametr domyślny ogólny dla parametrów numerkowych. Tytaj jest używana jest zmienna {{Code|nazwa jednostki 2}} do wygenerowania ostatecznego wyniku, bo jak można zauważyć, parametry przestrzenne wskazują na przestrzeń główną, a nazwy jednostek już nie. Przykłady w wikikodzie: * {{Code|{{m|Pudełko|Nazwa przedmiotowej przestrzeni nazw 2|numer jednostki{{=}}2}}}} → {{Tt|{{#invoke:Pudełko|Nazwa przedmiotowej przestrzeni nazw 2|numer jednostki=2}}}} * {{Code|{{m|Pudełko|Nazwa przedmiotowej przestrzeni nazw 2|Dyskusja szablonu|nazwa przestrzeni nazw i{{=}}Moja przestrzeń|numer jednostki{{=}}2}}}} → {{Tt|{{#invoke:Pudełko|Nazwa przedmiotowej przestrzeni nazw 2|Dyskusja szablonu|nazwa przestrzeni nazw i=Moja przestrzeń|numer jednostki=2}}}} * {{Code|{{m|Pudełko|Nazwa przedmiotowej przestrzeni nazw 2|nazwa przestrzeni nazw 2{{=}}Dyskusja|nazwa jednostki 2{{=}}Dyskusja szablonu:Strona|numer jednostki{{=}}2}}}} → {{Tt|{{#invoke:Pudełko|Nazwa przedmiotowej przestrzeni nazw 2|nazwa przestrzeni nazw 2=Dyskusja|nazwa jednostki 2=Dyskusja szablonu:Strona|numer jednostki=2}}}} * {{Code|{{m|Pudełko|Nazwa przedmiotowej przestrzeni nazw 2|nazwa przestrzeni nazw i{{=}}Dyskusja|nazwa jednostki 2{{=}}Dyskusja szablonu:Strona|numer jednostki{{=}}2}}}} → {{Tt|{{#invoke:Pudełko|Nazwa przedmiotowej przestrzeni nazw 2|nazwa przestrzeni nazw i=Dyskusja|nazwa jednostki 2=Dyskusja szablonu:Strona|numer jednostki=2}}}} * {{Code|{{m|Pudełko|Nazwa przedmiotowej przestrzeni nazw 2|Dyskusja szablonu|nazwa przestrzeni nazw{{=}}Dyskusja|nazwa jednostki 2{{=}}Wikibooks:Strona|numer jednostki{{=}}2}}}} → {{Tt|{{#invoke:Pudełko|Nazwa przedmiotowej przestrzeni nazw 2|Dyskusja szablonu|nazwa przestrzeni nazw=Dyskusja|nazwa jednostki 2=Dyskusja Wikibooks:Strona|numer jednostki=2}}}} Powyżej dla przykładu podano parametry nie w rodzicu w szablonie, tylko w dziecku, jeśli chodzi o parametry nazw przestrzeni nazw i nazw jednostek, ale ich się za to nie powinno podawać w tych ramach, tylko w szablonach, w których wywoływane są te ramki pudełek {{Code|{{m|Pudełko}}}}, ale tak tutaj tak zrobiono by było najłatwiej sprawdzić działanie tego typu funkcji. Analogicznie możemy podawać parametry typu jednostki, np.: wywołaniu modułowym {{Code|{{m|Pudełko|Nazwa przedmiotowej przestrzeni nazw 2|typ jednostki 2{{=}}Podręcznik|nazwa jednostki 2{{=}}Dyskusja szablonu:Strona|numer jednostki{{=}}2}}}} (ale wtedy jest brana przestrzeń nazw z nazwy jednostki), ale o tym więcej w rozdziałach {{Code|{{sr|# p["Przedmiotowy typ jednostki 2"](frame,i)|p=Pudełko}}}} w „{{sr|#Funkcje typu jednostki|p=Pudełko}}”, on definiuje przestrzenie przedmiotowe, ale można użyć parametru dyskusji typu jednostki z wartością niepustą, pustą, czy nawet jej nie podamy, wtedy wyświetli się nazwa przestrzeni nazw przedmiotowej. Jeżeli typ jednostki wskazuje na przestrzeń nazw główną, wtedy się liczą parametry nazw jednostek. Również parametry typu jednostki nie powinno się podawać w dziecku w ramce, tylko w rodzicu w szablonie jako parametry, w którym ta ramka jest wywoływana, ale tutaj podano jedynie dla przykładu, jak najłatwiej sprawdzić działanie tych parametrów tej funkcji. Najpierw w funkcji nagłówku brane są parametry nazw przestrzeni nazw, a jeżeli ich nie ma, to parametry typu jednostki, a jeżeli nie ma lub parametry przestrzenne wskazują na przestrzeń główną, i nie ma nazwy jednostki, to generowane są nazwy tej funkcji na podstawie aktualnej strony. === {{Code|p["Nazwa przestrzeni nazw dyskusji 2"](frame,...)}} === Funkcja pisze nazwę przestrzeni nazw dyskusji jakikolwiek nazwy przestrzeni nazw (tzn. nazwę dyskusji nazwy przestrzenie nazw, czyli nie przedmiotowej, zamieniana jest na nią samą, czyli identyfikator przestrzeni się nie zmienia, a przedmiotową, nie dyskusji, przekształca się na dyskusji jej odpowiadającą, czyli w tym przypadku identyfikator przestrzeni zwiększa się o numer więcej), według, i nie zawsze tylko, podanej w zmiennej {{Code|nazwa przestrzeni nazw}} dla pozycja bazowej w podanych parametrach szablonu rodzicu ramki dziecka, lub dla innej pozycji należy parametr podawać w formie {{Code|nazwa przestrzeni nazw 1}}, {{Code|nazwa przestrzeni nazw 2}}, {{Code|nazwa przestrzeni nazw 3}},..., lub te parametry można podać w postaci ogólnej {{Code|nazwa przestrzeni nazw i}}. W tej funkcji trzeba też podawać parametry nazwy jednostek {{Code|nazwa jednostki}}, {{Code|nazwa jednostki 1}}, {{Code|nazwa jednostki 2}}, {{Code|nazwa jednostki 3}},... Parametry podaje się w parametrach rodzica wywołania tej funkcji {{Code|{{m|Pudełko|Nazwa przestrzeni nazw dyskusji 2}}}} (ale ich nie trzeba podawać w dziecku, ale można) i w parametrach dziecka, jeśli chodzi o zmienną {{Code|numer jednostki}}, czyli np.: {{Code|{{m|Pudełko|Nazwa przestrzeni nazw dyskusji 2|numer jednostki{{=}}<jakaś liczba całkowita dodatnia>}}}}. Te parametry przestrzenne zamiast w rodzicu w szablonie można podać w ramce dziecka, wtedy parametry dziecka mają pierwszeństwo. Przestrzeń nazw z parametrów nazw przestrzennych po przekształceniu może odpowiadać wartości przestrzeni głównej, to wtedy odpowiednia przestrzeń nazw z parametru nazwy jednostki się liczy w tej funkcji, wtedy jest liczona nazwa przestrzeni nazw dyskusji z tego parametru. Gdy parametry przestrzenne lub typ jednostki w drugim podejściu nie wskazują na przestrzeń główną, to wtedy działanie tej funkcji jest podobne do {{Code|{{sr|#p["Nazwa dyskusji przestrzeni nazw"](frame,...)|p=Pudełko}}}}. Definicja skrótowa funkcji: <syntaxhighlight lang="lua"> p["Nazwa przestrzeni nazw dyskusji 2"]=function(frame,czy_uwzglednic_alternatywna_nazwe,i)...end; </syntaxhighlight> Wtedy ciało funkcji tej, czyli jego definicja w środku, jest: <syntaxhighlight lang="lua"> local pudelko_pomocne_modul=require("Module:Pudełko/Pomocne"); return pudelko_pomocne_modul.Nazwa_przestrzeni_nazw_przedmiotowa_dyskusji_2(frame,czy_uwzglednic_alternatywna_nazwe,i,"dyskusja"); </syntaxhighlight> Parametry funkcji: * {{Code|frame}} - tablica ramki tablicy transportu, * {{Code|czy_uwzglednic_alternatywna_nazwe}} - czy ma uwzględniać nazwę przestrzeni nazw domyślną szablonu, dostępne wartości: {{Code|false}}, w której nazwa domyślna nie jest uwzględniana wtedy, oraz {{Code|nil}} i {{Code|true}}, które oznaczają to samo, w tym jeżeli ona jest uwzględniana, wtedy jest brany parametr pierwszy dziecka, który musi istnieć przy takiej wartości tego parametru, tzn. {{Code|{{m|Pudełko|Nazwa przestrzeni nazw dyskusji 2|Szablon}}}}, a jeśli nazwa uzyskana nazwy przestrzeni nazw jest w takim przypadku błędna, a jeżeli nazwa domyślna jest błędna, czyli {{Code|{{m|Pudełko|Nazwa przestrzeni nazw dyskusji 2|Moja przestrzeń}}}}, wtedy funkcja zwraca stan błędu {{Code|(błąd)}}. * {{Code|i}} - numer zmiennej nazwy przestrzeni nazw. Funkcja wykorzystuje {{Code|{{sr|#p.Nazwa_przestrzeni_nazw_przedmiotowa_dyskusji_2(frame,...)|p=Pudełko/Pomocne}}}} do wyznaczania ogólnego nazwy przestrzeni nazw dla pozycji bazowej i numerkowej, tzn. dla pozycji: jeden, dwa, trzy,..., itd, i ich ogólnej. Parametr ramki tablicy transportu rodzica szablonu: * {{Code|nazwa przestrzeni nazw}}, {{Code|nazwa przestrzeni nazw 1}}, {{Code|nazwa przestrzeni nazw 2}}, {{Code|nazwa przestrzeni nazw 3}},..., {{Code|nazwa przestrzeni nazw i}} - nazwy przestrzeni nazw dla pozycji bazowej oraz zwykłej i ogólnej numerkowej, * {{Code|nazwa jednostki}}, {{Code|nazwa jednostki 1}}, {{Code|nazwa jednostki 2}}, {{Code|nazwa jednostki 3}},... - nazwy jednostek dla pozycji bazowej i numerkowej, * {{Code|typ jednostki}}, {{Code|typ jednostki 1}}, {{Code|typ jednostki 2}}, {{Code|typ jednostki 3}},..., {{Code|typ jednostki i}} - typy jednostek, którym odpowiadają pewne przestrzenie przedmiotowe, dla pozycji bazowej, numerkowej i ogólnej. Parametry ramki tablicy transportu dziecka: * Parametry dziecka są takie same jak rodzica dla funkcji pudełkowej plus tu wymienione, * {{Code|numer jednostki}} - jak parametr {{Code|i}} nie został ustawiony, to wtedy liczy się ta zmienna. Przykłady: <syntaxhighlight lang="mediawiki"> {{Nazwa szablonu|nazwa przestrzeni nazw=Wikibooks|nazwa przestrzeni nazw 1=Szablon|nazwa przestrzeni nazw i=|nazwa jednostki 2=Wikibooks:Strona}} </syntaxhighlight> W dziecku powiedzmy jest wywołanie, i szukamy nazwy przestrzeni nazw o numerze dwa, która została podana, ale istnieje za to jej wersji ogólna {{Code|nazwa przestrzeni nazw i}} i domyślna {{Code|nazwa przestrzeni nazw}}, ale wtedy dla tego numerkowego liczy się to ogólne z {{Code| i}}, a ponieważ ta nazwa jest pusta, więc będziemy liczyli nazwę przestrzeni nazw z {{Code|nazwa jednostki 2}}: <syntaxhighlight lang="mediawiki"> {{#invoke:Pudełko|Nazwa przestrzeni nazw dyskusji 2|numer jednostki=2}} </syntaxhighlight> Na podstawie powyższego przykładu otrzymamy wynik o schemacie, nie wyniku, bo tam nie ma zmiennej {{Code|nazwa przestrzeni nazw 1}}, ale jest {{Code|nazwa przestrzeni nazw i}}: <syntaxhighlight lang="mediawiki"> <!-- Ale nie "nazwa przestrzeni nazw 2", bo jej nie ma, ale za to istnieje "nazwa przestrzeni nazw i"; --> <!-- nazwa przestrzeni nazw 2=nazwa przestrzeni nazw i="", a nazwa jednostki 2="Wikibooks:Strona"; --> <!-- Czyli wynik: --> Dyskusja Wikibooks <!-- Widzimy, że wygenerowała się nazwa przestrzeni nazw, którą jest przestrzeń nieprogramowa, ale dyskusji projektu, wychodząca z nazwy jednostek w tym przypadku z "nazwa jednostki 2"; --> </syntaxhighlight> Nie jest brana w tym powyższym przykładzie zmienna {{Code|nazwa przestrzeni nazw}}, bo jej nie ma, ale za to jest {{Code|nazwa przestrzeni nazw i}}, bo ona występuje jako parametr domyślny ogólny dla parametrów numerkowych. Tytaj jest używana jest zmienna {{Code|nazwa jednostki 2}} do wygenerowania ostatecznego wyniku, bo jak można zauważyć, parametry przestrzenne wskazują na przestrzeń główną, a nazwy jednostek już nie. Przykłady w wikikodzie: * {{Code|{{m|Pudełko|Nazwa przestrzeni nazw dyskusji 2|numer jednostki{{=}}2}}}} → {{Tt|{{#invoke:Pudełko|Nazwa przestrzeni nazw dyskusji 2|numer jednostki=2}}}} * {{Code|{{m|Pudełko|Nazwa przestrzeni nazw dyskusji 2|Szablon|nazwa przestrzeni nazw i{{=}}Moja przestrzeń|numer jednostki{{=}}2}}}} → {{Tt|{{#invoke:Pudełko|Nazwa przestrzeni nazw dyskusji 2|Szablon|nazwa przestrzeni nazw i=Moja przestrzeń|numer jednostki=2}}}} * {{Code|{{m|Pudełko|Nazwa przestrzeni nazw dyskusji 2|nazwa przestrzeni nazw 2{{=}}|nazwa jednostki 2{{=}}Szablon:Strona|numer jednostki{{=}}2}}}} → {{Tt|{{#invoke:Pudełko|Nazwa przestrzeni nazw dyskusji 2|nazwa przestrzeni nazw 2=|nazwa jednostki 2=Szablon:Strona|numer jednostki=2}}}} * {{Code|{{m|Pudełko|Nazwa przestrzeni nazw dyskusji 2|nazwa przestrzeni nazw i{{=}}|nazwa jednostki 2{{=}}Szablon:Strona|numer jednostki{{=}}2}}}} → {{Tt|{{#invoke:Pudełko|Nazwa przestrzeni nazw dyskusji 2|nazwa przestrzeni nazw i=|nazwa jednostki 2=Szablon:Strona|numer jednostki=2}}}} * {{Code|{{m|Pudełko|Nazwa przestrzeni nazw dyskusji 2|Szablon|nazwa przestrzeni nazw{{=}}|nazwa jednostki 2{{=}}Wikibooks:Strona|numer jednostki{{=}}2}}}} → {{Tt|{{#invoke:Pudełko|Nazwa przestrzeni nazw dyskusji 2|Szablon|nazwa przestrzeni nazw=|nazwa jednostki 2=Dyskusja Wikibooks:Strona|numer jednostki=2}}}} Powyżej dla przykładu podano parametry nie w rodzicu w szablonie, tylko w dziecku, jeśli chodzi o parametry nazw przestrzeni nazw i nazw jednostek, ale ich się za to nie powinno podawać w tych ramach, tylko w szablonach, w których wywoływane są te ramki pudełek {{Code|{{m|Pudełko}}}}, ale tak tutaj tak zrobiono by było najłatwiej sprawdzić działanie tego typu funkcji. Analogicznie możemy podawać parametry typu jednostki, np.: wywołaniu modułowym {{Code|{{m|Pudełko|Nazwa przestrzeni nazw dyskusji 2|typ jednostki 2{{=}}Podręcznik|nazwa jednostki 2{{=}}Szablon:Strona|numer jednostki{{=}}2}}}} (ale wtedy jest brana przestrzeń nazw z nazwy jednostki), ale o tym więcej w rozdziałach {{Code|{{sr|# p["Dyskusyjny typ jednostki 3"](frame,i)|p=Pudełko}}}} w „{{sr|#Funkcje typu jednostki|p=Pudełko}}”, one definiują przestrzenie dyskusji, ale można użyć parametru dyskusji typu jednostki z obojętnie jaką wartością niepustą, czy pustą, czy nawet jej nie podamy, wtedy wyświetli się nazwa przestrzeni nazw dyskusji. Jeżeli typ jednostki wskazuje na przestrzeń nazw główną, wtedy się liczą parametry nazw jednostek. Również parametry typu jednostki nie powinno się podawać w dziecku w ramce, tylko w rodzicu w szablonie jako parametry, w którym ta ramka jest wywoływana, ale tutaj podano jedynie dla przykładu, jak najłatwiej sprawdzić działanie tych parametrów tej funkcji. Najpierw w funkcji nagłówku brane są parametry nazw przestrzeni nazw, a jeżeli ich nie ma, to parametry typu jednostki, a jeżeli nie ma lub parametry przestrzenne wskazują na przestrzeń główną, i nie ma nazwy jednostki, to generowane są nazwy tej funkcji na podstawie aktualnej strony. == Funkcje pełnych nazw jednostki == === {{Code|p["Pełna nazwa dyskusji jednostki"](frame,i)}} === === {{Code|p["Pełna nazwa przedmiotowa jednostki"](frame,i)}} === === {{Code|p["Pełna nazwa jednostki"](frame,i)}} === == Funkcje pełnych nazw jednostki drugiej wersji == === {{Code|p["Pełna nazwa dyskusji jednostki 2"](frame,i)}} === === {{Code|p["Pełna nazwa przedmiotowa jednostki 2"](frame,i)}} === === {{Code|p["Pełna nazwa jednostki 2"](frame,i)}} === == Funkcje pełnych nazw jednostki trzeciej wersji == === {{Code|p["Pełna nazwa dyskusji jednostki 3"](frame,i)}} === === {{Code|p["Pełna nazwa przedmiotowa jednostki 3"](frame,i)}} === === {{Code|p["Pełna nazwa jednostki 3"](frame,i)}} === == Funkcje nazw jednostki == === {{Code|p["Nazwa jednostki"](frame,i)}} === == Funkcje nazw jednostki drugiej wersji == === {{Code|p["Nazwa jednostki 2"](frame,i)}} === === {{Code|p["Nazwa przedmiotowa jednostki 2"](frame,i)}} === === {{Code|p["Nazwa dyskusji jednostki 2"](frame,i)}} === == Funkcje nazw przestrzeni nazw trzeciej wersji == === {{Code|p["Nazwa przestrzeni nazw 3"](frame,i)}} === Funkcja pisze nazwę przestrzeni nazw, niezależnie, czy to jest przedmiotowa, czy dyskusji, według, i nie zawsze tylko, podanej w zmiennej {{Code|nazwa przestrzeni nazw}} dla pozycja bazowej w podanych parametrach szablonu rodzicu ramki dziecka, lub dla innej pozycji należy parametr podawać w formie {{Code|nazwa przestrzeni nazw 1}}, {{Code|Nazwa przestrzeni nazw 3}}, {{Code|nazwa przestrzeni nazw 3}},..., lub te parametry można podać w postaci ogólnej {{Code|nazwa przestrzeni nazw i}}. W tej funkcji trzeba też podawać parametry nazwy jednostek {{Code|nazwa jednostki}}, {{Code|nazwa jednostki 1}}, {{Code|nazwa jednostki 2}}, {{Code|nazwa jednostki 3}},... Parametry podaje się w parametrach rodzica wywołania tej funkcji {{Code|{{m|Pudełko|Nazwa przestrzeni nazw 3}}}} (ale ich nie trzeba podawać w dziecku, ale można) i w parametrach dziecka, jeśli chodzi o zmienną {{Code|numer jednostki}}, czyli np.: {{Code|{{m|Pudełko|Nazwa przestrzeni nazw 3|numer jednostki{{=}}<jakaś liczba całkowita dodatnia>}}}}. Te parametry przestrzenne zamiast w rodzicu w szablonie można podać w ramce dziecka, wtedy parametry dziecka mają pierwszeństwo. Przestrzeń nazw z parametrów nazw przestrzennych bazowych (bez numerka) może odpowiadać wartości przestrzeni głównej, to wtedy odpowiednia przestrzeń nazw z parametru nazwy jednostki się nie liczy w tej funkcji, aby się liczyła należy użyć funkcji {{Code|{{sr|#p["Nazwa przestrzeni nazw 2"](frame,...)|p=Pudełko}}}}. W tym przypadku funkcja działa jak {{Code|{{sr|#p["Nazwa przestrzeni nazw"](frame,...)|p=Pudełko}}}}. Przestrzeń nazw z parametrów nazw przestrzennych numerkowych może odpowiadać wartości przestrzeni głównej, to wtedy odpowiednia przestrzeń nazw z parametru nazwy jednostki się liczy w tej funkcji, wtedy jest liczona nazwa przestrzeni nazw z tego parametru. Gdy parametry przestrzenne lub typ jednostki w drugim podejściu nie wskazują na przestrzeń główną, to wtedy działanie tej funkcji jest podobne do {{Code|{{sr|#p["Nazwa przestrzeni nazw 2"](frame,...)|p=Pudełko}}}}. Definicja skrótowa funkcji: <syntaxhighlight lang="lua"> p["Nazwa przestrzeni nazw 3"]=function(frame,czy_uwzglednic_alternatywna_nazwe,i)...end; </syntaxhighlight> Wtedy ciało funkcji tej, czyli jego definicja w środku, jest: <syntaxhighlight lang="lua"> -- Jest liczony numer parametru nazwy przestrzeni nazw, domyslnie chodzi tu o numer bazowy parametrów przestrzennych; local numer_jednostki=i or frame.args["numer jednostki"]; local liczba_numeru_jednostki=((numer_jednostki)and(tonumber(numer_jednostki)) or 0); local pudelko_pomocne_modul=require("Module:Pudełko/Pomocne"); -- Liczy nazwę przestrzeni nazw dyskusji na podstawie podanych parametrów; return pudelko_pomocne_modul.Uzyskanie_nazw_jednostki(frame,0,liczba_numeru_jednostki,nil,2); </syntaxhighlight> Parametry funkcji: * {{Code|frame}} - tablica ramki tablicy transportu, * {{Code|czy_uwzglednic_alternatywna_nazwe}} - czy ma uwzględniać nazwę przestrzeni nazw domyślną szablonu, dostępne wartości: {{Code|false}}, w której nazwa domyślna nie jest uwzględniana wtedy, oraz {{Code|nil}} i {{Code|true}}, które oznaczają to samo, w tym jeżeli ona jest uwzględniana, wtedy jest brany parametr pierwszy dziecka, który musi istnieć przy takiej wartości tego parametru, tzn. {{Code|{{m|Pudełko|Nazwa przestrzeni nazw 3|Szablon}}}}, a jeśli nazwa uzyskana nazwy przestrzeni nazw jest w takim przypadku błędna, a jeżeli nazwa domyślna jest błędna, czyli {{Code|{{m|Pudełko|Nazwa przestrzeni nazw 3|Moja przestrzeń}}}}, wtedy funkcja zwraca stan błędu {{Code|(błąd)}}. * {{Code|i}} - numer zmiennej nazwy przestrzeni nazw. Funkcja wykorzystuje {{Code|{{sr|#p.Uzyskanie_nazw_jednostki(frame,...)|p=Pudełko/Pomocne}}}} do wyznaczania ogólnego nazwy przestrzeni nazw dla pozycji bazowej i numerkowej, tzn. dla pozycji: jeden, dwa, trzy,..., itd, i ich ogólnej. Parametr ramki tablicy transportu rodzica szablonu: * {{Code|nazwa przestrzeni nazw}}, {{Code|nazwa przestrzeni nazw 1}}, {{Code|Nazwa przestrzeni nazw 3}}, {{Code|nazwa przestrzeni nazw 3}},..., {{Code|nazwa przestrzeni nazw i}} - nazwy przestrzeni nazw dla pozycji bazowej oraz zwykłej i ogólnej numerkowej, * {{Code|nazwa jednostki}}, {{Code|nazwa jednostki 1}}, {{Code|nazwa jednostki 2}}, {{Code|nazwa jednostki 3}},... - nazwy jednostek dla pozycji bazowej i numerkowej, * {{Code|typ jednostki}}, {{Code|typ jednostki 1}}, {{Code|typ jednostki 2}}, {{Code|typ jednostki 3}},..., {{Code|typ jednostki i}} - typy jednostek, którym odpowiadają pewne przestrzenie przedmiotowe, dla pozycji bazowej, numerkowej i ogólnej, ** {{Code|dyskusja typu jednostki}}, {{Code|dyskusja typu jednostki 1}}, {{Code|dyskusja typ jednostki 2}}, {{Code|dyskusja typ jednostki 3}},..., {{Code|dyskusja typ jednostki i}} - czy dany typ jednostki ma przedstawiać, jeśli niepusta, przestrzeń dyskusji dla pozycji bazowej, numerkowej i ogólnej. Parametry ramki tablicy transportu dziecka: * Parametry dziecka są takie same jak rodzica dla funkcji pudełkowej plus tu wymienione, * {{Code|numer jednostki}} - jak parametr {{Code|i}} nie został ustawiony, to wtedy liczy się ta zmienna. Przykłady: <syntaxhighlight lang="mediawiki"> {{Nazwa szablonu 1|nazwa przestrzeni nazw=Wikibooks|nazwa przestrzeni nazw=|nazwa przestrzeni nazw i=|nazwa jednostki=Szablon:Strona}} ---- {{Nazwa szablonu 2|nazwa przestrzeni nazw=Wikibooks|nazwa przestrzeni nazw 1=Szablon|nazwa przestrzeni nazw i=|nazwa jednostki 2=Wikibooks:Strona}} </syntaxhighlight> W pierwszym wywołaniu {{Code|nazwa przestrzeni nazw}} jest puste, ale dla tego bazowego (bez numerka) szukamy przestrzeni nazw, a więc ta nazwa jest ostateczna. ---- W drugim wywołaniu w dziecku powiedzmy jest wywołanie, i szukamy nazwy przestrzeni nazw o numerze dwa, która została podana, ale istnieje za to jej wersji ogólna {{Code|nazwa przestrzeni nazw i}} i domyślna {{Code|nazwa przestrzeni nazw}}, ale wtedy dla tego numerkowego liczy się to ogólne z {{Code| i}}, a ponieważ ta nazwa jest pusta, więc będziemy liczyli nazwę przestrzeni nazw z {{Code|nazwa jednostki 2}}. Odpowiadająca powyższemu kodowi, powiedzmy wikikod, według ich zawartości, przedstawia się: <syntaxhighlight lang="mediawiki"> {{#invoke:Pudełko|Nazwa przestrzeni nazw 3}} ---- {{#invoke:Pudełko|Nazwa przestrzeni nazw 3|numer jednostki=2}} </syntaxhighlight> Na podstawie powyższego przykładu otrzymamy wynik o schemacie, nie wyniku, bo tam nie ma zmiennej {{Code|nazwa przestrzeni nazw 1}}, ale jest {{Code|nazwa przestrzeni nazw i}}: <syntaxhighlight lang="mediawiki"> <!-- nazwa przestrzeni nazw=""; --> <!-- Czyli wynik: --> <!-- wynik pusty --> <!-- Widzimy, że wygenerowała się nazwa przestrzeni nazw, którą jest przestrzeń nazw główna, jest ciągiem pustym: ""; --> ---- <!-- Ale nie "nazwa przestrzeni nazw 2", bo jej nie ma, ale za to istnieje "nazwa przestrzeni nazw i"; --> <!-- nazwa przestrzeni nazw 2=nazwa przestrzeni nazw i="", a nazwa jednostki 2="Wikibooks:Strona"; --> <!-- Czyli wynik: --> Wikibooks <!-- Widzimy, że wygenerowała się nazwa przestrzeni nazw, którą jest przestrzeń nieprogramowa, ale projektu, wychodząca z nazwy jednostek w tym przypadku z "nazwa jednostki 2"; --> </syntaxhighlight> Dla parametrów numerkowych nie jest brana w tym powyższym przykładzie zmienna {{Code|nazwa przestrzeni nazw 2}}, bo jej nie ma, ale za to jest {{Code|nazwa przestrzeni nazw i}}, bo ona występuje jako parametr domyślny ogólny dla parametrów numerkowych. Tytaj jest używana jest zmienna {{Code|nazwa jednostki 2}} do wygenerowania ostatecznego wyniku, bo jak można zauważyć, parametry przestrzenne wskazują na przestrzeń główną, a nazwy jednostek już nie. Dla parametrów bazowych mamy zmienną {{Code|nazwa przestrzeni nazw}}, ona jest pusta, więc to zostanie wziete do ostatecznego wyniku. Przykłady w wikikodzie: * {{Code|{{m|Pudełko|Nazwa przestrzeni nazw 3|Szablon|nazwa przestrzeni nazw{{=}}Moja przestrzeń|nazwa jednostki{{=}}Wikibooks:Strona}}}} → {{Tt|{{#invoke:Pudełko|Nazwa przestrzeni nazw 3|Szablon|nazwa przestrzeni nazw=Moja przestrzeń|nazwa jednostki=Wikibooks:Szablon}}}} * {{Code|{{m|Pudełko|Nazwa przestrzeni nazw 3|Szablon|nazwa przestrzeni nazw 2{{=}}Moja przestrzeń|nazwa jednostki 2{{=}}Wikibooks:Strona}|numer jednostki{{=}}2}}}} → {{Tt|{{#invoke:Pudełko|Nazwa przestrzeni nazw 3|Szablon|nazwa przestrzeni nazw 2=Moja przestrzeń|nazwa jednostki 2=Wikibooks:Szablon|numer jednostki=2}}}} * {{Code|{{m|Pudełko|Nazwa przestrzeni nazw 3|nazwa przestrzeni nazw{{=}}|nazwa jednostki{{=}}Wikibooks:Strona}}}} → {{Tt|{{#invoke:Pudełko|Nazwa przestrzeni nazw 3|nazwa przestrzeni nazw=|nazwa jednostki=Wikibooks:Szablon}}}} * {{Code|{{m|Pudełko|Nazwa przestrzeni nazw 3|nazwa przestrzeni nazw 2{{=}}|nazwa jednostki 2{{=}}Wikibooks:Strona|numer jednostki{{=}}2}}}} → {{Tt|{{#invoke:Pudełko|Nazwa przestrzeni nazw 3|nazwa przestrzeni nazw 2=|nazwa jednostki 2=Wikibooks:Szablon|numer jednostki=2}}}} Powyżej dla przykładu podano parametry nie w rodzicu w szablonie, tylko w dziecku, jeśli chodzi o parametry nazw przestrzeni nazw i nazw jednostek, ale ich się za to nie powinno podawać w tych ramach, tylko w szablonach, w których wywoływane są te ramki pudełek {{Code|{{m|Pudełko}}}}, ale tak tutaj tak zrobiono by było najłatwiej sprawdzić działanie tego typu funkcji. Analogicznie możemy podawać parametry typu jednostki, np.: wywołaniu modułowym {{Code|{{m|Pudełko|Nazwa przestrzeni nazw 3|typ jednostki 2{{=}}Podręcznik|nazwa jednostki 2{{=}}Szablon:Strona|numer jednostki{{=}}2}}}} (ale wtedy jest brana przestrzeń nazw z nazwy jednostki), ale o tym więcej w rozdziałach {{Code|{{sr|#p["Typ jednostki 3"](frame,i)|p=Pudełko}}}} w „{{sr|#Funkcje typu jednostki|p=Pudełko}}”, on definiuje przestrzenie przedmiotowe, ale można użyć parametru dyskusji typu jednostki z wartością niepustą, wtedy wyświetli się nazwa przestrzeni nazw dyskusji. Jeżeli typ jednostki bazowy wskazuje na przestrzeń nazw główną, wtedy się nie liczą parametry nazw jednostek, a na numerkowy, wtedy się liczy. Również parametry typu jednostki nie powinno się podawać w dziecku w ramce, tylko w rodzicu w szablonie jako parametry, w którym ta ramka jest wywoływana, ale tutaj podano jedynie dla przykładu, jak najłatwiej sprawdzić działanie tych parametrów tej funkcji. Najpierw w funkcji nagłówku brane są parametry nazw przestrzeni nazw, a jeżeli ich nie ma, to parametry typu jednostki, a jeżeli nie ma lub parametry przestrzenne wskazują na przestrzeń główną, i nie ma nazwy jednostki, to generowane są nazwy tej funkcji na podstawie aktualnej strony. === {{Code|p["Nazwa przedmiotowej przestrzeni nazw 3"](frame,i)}} === Funkcja pisze przedmiotową nazwę przestrzeni nazw jakikolwiek nazwy przestrzeni nazw (tzn. nazwę przedmiotową nazwy przestrzenie nazw, czyli nie dyskusji, zamieniana jest na nią samą, czyli identyfikator przestrzeni się nie zmienia, a dyskusji, nie przedmiotową, przekształca się na przedmiotową jej odpowiadającą, czyli w tym przypadku identyfikator przestrzeni zmniejsza się o numer mniej), według podanej w zmiennej {{Code|nazwa przestrzeni nazw}} dla pozycja bazowej w podanych parametrach szablonu rodzicu ramki dziecka, lub dla innej pozycji należy parametr podawać w formie {{Code|nazwa przestrzeni nazw 1}}, {{Code|nazwa przestrzeni nazw 2}}, {{Code|nazwa przestrzeni nazw 3}},..., lub te parametry można podać w postaci ogólnej {{Code|nazwa przestrzeni nazw i}}. Parametry podaje się w parametrach rodzica wywołania tej funkcji {{Code|{{m|Pudełko|Nazwa przedmiotowej przestrzeni nazw 3}}}} (ale ich nie trzeba podawać w dziecku, ale można) i w parametrach dziecka, jeśli chodzi o zmienną {{Code|numer jednostki}}, czyli np.: {{Code|{{m|Pudełko|Nazwa przedmiotowej przestrzeni nazw 3|numer jednostki{{=}}<jakaś liczba całkowita dodatnia>}}}}. Te parametry przestrzenne zamiast w rodzicu w szablonie można podać w ramce dziecka, wtedy parametry dziecka mają pierwszeństwo. Parametry przestrzenne mogą mogą być podane w postaci przestrzeni przedmiotowej lub dyskusji, ale ta funkcja zawsze ją zamienia na przedmiotową. Przestrzeń nazw z parametrów nazw przestrzennych bazowych (bez numerka) może odpowiadać wartości przestrzeni głównej, to wtedy odpowiednia przestrzeń nazw z parametru nazwy jednostki się nie liczy w tej funkcji, aby się liczyła należy użyć funkcji {{Code|{{sr|#p["Nazwa przedmiotowej przestrzeni nazw 2"](frame,...)|p=Pudełko}}}}. W tym przypadku funkcja działa jak {{Code|{{sr|#p["Nazwa przedmiotowej przestrzeni nazw"](frame,...)|p=Pudełko}}}}. Przestrzeń nazw z parametrów nazw przestrzennych numerkowych może odpowiadać wartości przestrzeni głównej, to wtedy odpowiednia przestrzeń nazw z parametru nazwy jednostki się liczy w tej funkcji, wtedy jest liczona nazwa przestrzeni nazw z tego parametru. Gdy parametry przestrzenne lub typ jednostki w drugim podejściu nie wskazują na przestrzeń główną, to wtedy działanie tej funkcji jest podobne do {{Code|{{sr|#p["Nazwa przedmiotowej przestrzeni nazw 2"](frame,...)|p=Pudełko}}}}. Definicja skrótowa funkcji: <syntaxhighlight lang="lua"> p["Nazwa przedmiotowej przestrzeni nazw 3"]=function(frame,czy_uwzglednic_alternatywna_nazwe,i)...end; </syntaxhighlight> Wtedy ciało funkcji tej, czyli jego definicja w środku, jest: <syntaxhighlight lang="lua"> -- Jest liczony numer parametru nazwy przestrzeni nazw, domyslnie chodzi tu o numer bazowy parametrów przestrzennych; local numer_jednostki=i or frame.args["numer jednostki"]; local liczba_numeru_jednostki=((numer_jednostki)and(tonumber(numer_jednostki)) or 0); local pudelko_pomocne_modul=require("Module:Pudełko/Pomocne"); -- Liczy nazwę przestrzeni nazw przedmiotową na podstawie podanych parametrów; return pudelko_pomocne_modul.Uzyskanie_nazw_jednostki(frame,1,liczba_numeru_jednostki,nil,1); </syntaxhighlight> Parametry funkcji: * {{Code|frame}} - tablica ramki tablicy transportu, * {{Code|czy_uwzglednic_alternatywna_nazwe}} - czy ma uwzględniać nazwę przestrzeni nazw domyślną szablonu, dostępne wartości: {{Code|false}}, w której nazwa domyślna nie jest uwzględniana wtedy, oraz {{Code|nil}} i {{Code|true}}, które oznaczają to samo, w tym jeżeli ona jest uwzględniana, wtedy jest brany parametr pierwszy dziecka, który musi istnieć przy takiej wartości tego parametru, tzn. {{Code|{{m|Pudełko|Nazwa przedmiotowej przestrzeni nazw 3|Dyskusja szablonu}}}} - ta nazwa domyślna zostanie zamieniona na przedmiotową, a jak ona by była przedmiotowa, to żadnej zamiany by nie było, a nazwa uzyskana z nazwy przestrzeni nazw z parametrów przestrzennych jest w takim przypadku błędna, to w takim razie brany jest ten parametr, a jeżeli ta nazwa domyślna jest błędna, czyli {{Code|{{m|Pudełko|Nazwa przedmiotowej przestrzeni nazw 3|Moja przestrzeń}}}}, wtedy funkcja zwraca stan błędu {{Code|(błąd)}}. * {{Code|i}} - numer zmiennej nazwy przestrzeni nazw. Funkcja wykorzystuje {{Code|{{sr|#p.Uzyskanie_nazw_jednostki(frame,...)|p=Pudełko/Pomocne}}}} do wyznaczania ogólnego nazwy przestrzeni nazw dla pozycji bazowej i numerkowej, tzn. dla pozycji: jeden, dwa, trzy,..., itd, i ich ogólnej. Parametr ramki tablicy transportu rodzica szablonu: * {{Code|nazwa przestrzeni nazw}}, {{Code|nazwa przestrzeni nazw 1}}, {{Code|nazwa przestrzeni nazw 2}}, {{Code|nazwa przestrzeni nazw 3}},..., {{Code|nazwa przestrzeni nazw i}} - nazwy przestrzeni nazw dla pozycji bazowej oraz zwykłej i ogólnej numerkowej, * {{Code|typ jednostki}}, {{Code|typ jednostki 1}}, {{Code|typ jednostki 2}}, {{Code|typ jednostki 3}},..., {{Code|typ jednostki i}} - typy jednostek, którym odpowiadają pewne przestrzenie przedmiotowe, dla pozycji bazowej, numerkowej i ogólnej. Parametry ramki tablicy transportu dziecka: * Parametry dziecka są takie same jak rodzica dla funkcji pudełkowej plus tu wymienione, * {{Code|numer jednostki}} - jak parametr {{Code|i}} nie został ustawiony, to wtedy liczy się ta zmienna. Przykłady: <syntaxhighlight lang="mediawiki"> {{Nazwa szablonu 1|nazwa przestrzeni nazw=Wikibooks|nazwa przestrzeni nazw=|nazwa przestrzeni nazw i=|nazwa jednostki=Dyskusja Wikibooks:Strona}} ---- {{Nazwa szablonu 2|nazwa przestrzeni nazw=Wikibooks|nazwa przestrzeni nazw 1=Szablon|nazwa przestrzeni nazw i=|nazwa jednostki 2=Dyskusja Wikibooks:Strona}} </syntaxhighlight> W pierwszym wywołaniu {{Code|nazwa przestrzeni nazw}} jest puste, ale dla tego bazowego (bez numerka) szukamy przestrzeni nazw, a więc ta nazwa jest ostateczna. ---- W drugim wywołaniu w dziecku powiedzmy jest wywołanie, i szukamy nazwy przestrzeni nazw o numerze dwa, która została podana, ale istnieje za to jej wersji ogólna {{Code|nazwa przestrzeni nazw i}} i domyślna {{Code|nazwa przestrzeni nazw}}, ale wtedy dla tego numerkowego liczy się to ogólne z {{Code| i}}, a ponieważ ta nazwa jest pusta, więc będziemy liczyli nazwę przestrzeni nazw z {{Code|nazwa jednostki 2}}. Odpowiadająca powyższemu kodowi, powiedzmy wikikod, według ich zawartości, przedstawia się: <syntaxhighlight lang="mediawiki"> {{#invoke:Pudełko|Nazwa przedmiotowej przestrzeni nazw 3}} ---- {{#invoke:Pudełko|Nazwa przedmiotowej przestrzeni nazw 3|numer jednostki=2}} </syntaxhighlight> Na podstawie powyższego przykładu otrzymamy wynik o schemacie, nie wyniku, bo tam nie ma zmiennej {{Code|nazwa przestrzeni nazw 1}}, ale jest {{Code|nazwa przestrzeni nazw i}}: <syntaxhighlight lang="mediawiki"> <!-- nazwa przestrzeni nazw=""; --> <!-- Czyli wynik: --> <!-- wynik pusty --> <!-- Widzimy, że wygenerowała się nazwa przestrzeni nazw, którą jest przestrzeń nazw główna, jest ciągiem pustym: ""; --> ---- <!-- Ale nie "nazwa przestrzeni nazw 2", bo jej nie ma, ale za to istnieje "nazwa przestrzeni nazw i"; --> <!-- nazwa przestrzeni nazw 2=nazwa przestrzeni nazw i="", a nazwa jednostki 2="Dyskusja Wikibooks:Strona"; --> <!-- Czyli wynik: --> Wikibooks <!-- Widzimy, że wygenerowała się nazwa przestrzeni nazw, którą jest przestrzeń nieprogramowa, ale projektu, wychodząca z nazwy jednostek w tym przypadku z "nazwa jednostki 2"; --> </syntaxhighlight> Dla parametrów numerkowych nie jest brana w tym powyższym przykładzie zmienna {{Code|nazwa przestrzeni nazw 2}}, bo jej nie ma, ale za to jest {{Code|nazwa przestrzeni nazw i}}, bo ona występuje jako parametr domyślny ogólny dla parametrów numerkowych. Tytaj jest używana jest zmienna {{Code|nazwa jednostki 2}} do wygenerowania ostatecznego wyniku, bo jak można zauważyć, parametry przestrzenne wskazują na przestrzeń główną, a nazwy jednostek już nie. Dla parametrów bazowych mamy zmienną {{Code|nazwa przestrzeni nazw}}, ona jest pusta, więc to zostanie wziete do ostatecznego wyniku. Przykłady w wikikodzie: * {{Code|{{m|Pudełko|Nazwa przedmiotowej przestrzeni nazw 3|Dyskusja szablonu|nazwa przestrzeni nazw{{=}}Moja przestrzeń|nazwa jednostki{{=}}Dyskusja Wikibooks:Strona}}}} → {{Tt|{{#invoke:Pudełko|Nazwa przedmiotowej przestrzeni nazw 3|Dyskusja szablonu|nazwa przestrzeni nazw=Moja przestrzeń||nazwa jednostki=Dyskusja Wikibooks:Szablon}}}} * {{Code|{{m|Pudełko|Nazwa przedmiotowej przestrzeni nazw 3|Dyskusja szablonu|nazwa przestrzeni nazw 2{{=}}Moja przestrzeń|nazwa jednostki 2{{=}}Dyskusja Wikibooks:Strona|numer jednostki{{=}}2}}}} → {{Tt|{{#invoke:Pudełko|Nazwa przedmiotowej przestrzeni nazw 3|Dyskusja szablonu|nazwa przestrzeni nazw 2=Moja przestrzeń||nazwa jednostki 2=Dyskusja Wikibooks:Szablon|numer jednostki=2}}}} * {{Code|{{m|Pudełko|Nazwa przedmiotowej przestrzeni nazw 3|nazwa przestrzeni nazw{{=}}|nazwa jednostki{{=}}Dyskusja Wikibooks:Strona}}}} → {{Tt|{{#invoke:Pudełko|Nazwa przedmiotowej przestrzeni nazw 3|nazwa przestrzeni nazw=|nazwa jednostki=Dyskusja Wikibooks:Szablon}}}} * {{Code|{{m|Pudełko|Nazwa przedmiotowej przestrzeni nazw 3|nazwa przestrzeni nazw 2{{=}}|nazwa jednostki 2{{=}}Dyskusja Wikibooks:Strona|numer jednostki{{=}}2}}}} → {{Tt|{{#invoke:Pudełko|Nazwa przedmiotowej przestrzeni nazw 3|nazwa przestrzeni nazw 2=|nazwa jednostki 2=Dyskusja Wikibooks:Szablon|numer jednostki=2}}}} Powyżej dla przykładu podano parametry nie w rodzicu w szablonie, tylko w dziecku, jeśli chodzi o parametry nazw przestrzeni nazw, ale ich się za to nie powinno podawać w tych ramach, tylko w szablonach, w których wywoływane są te ramki pudełek {{Code|{{m|Pudełko}}}}, ale tak tutaj tak zrobiono by było najłatwiej sprawdzić działanie tego typu funkcji. Analogicznie możemy podawać parametry typu jednostki, np.: wywołaniu modułowym {{Code|{{m|Pudełko|Nazwa przedmiotowej przestrzeni nazw 3|typ jednostki 2{{=}}strona szablonu|numer jednostki{{=}}2}}}}, ale o tym więcej w rozdziałach {{Code|{{sr|# p["Przedmiotowy typ jednostki 3"](frame,i)|p=Pudełko}}}} w „{{sr|#Funkcje typu jednostki|p=Pudełko}}”, ale wtedy ta sama nazwa przestrzeni nazw reprezentowana przez {{Parametr|typ jednostki 2|strona szablonu}}, jest zamieniana na to samo, lepiej jest tutaj używać parametrów przestrzennych nazw niż typu jednostki, bo typ jednostki ma taką samą wartość dla przestrzeni przedmiotowej, co dyskusji. Tutaj parametr dyskusji typu jednostki bazowy i numerkowy ogólny, czy szczegółowy, nie gra roli, bo nawet, gdy wygenerujemy nazwę przestrzeni dyskusji za pomoca tego parametru, to i tak otrzymamy na samym końcu jego nazwę przedmiotową. Jeżeli typ jednostki bazowy wskazuje na przestrzeń nazw główną, wtedy się nie liczą parametry nazw jednostek, a na numerkowy, wtedy się liczy. Również parametry typu jednostki nie powinno się podawać w dziecku w ramce, tylko w rodzicu w szablonie jako parametry, w którym ta ramka jest wywoływana, ale tutaj podano jedynie dla przykładu, jak najłatwiej sprawdzić działanie tych parametrów tej funkcji. Najpierw w funkcji nagłówku brane są parametry nazw przestrzeni nazw, a jeżeli ich nie ma, to parametry typu jednostki, a jeżeli nie ma, to generowane są nazwy na podstawie aktualnego modułu. === {{Code|p["Nazwa przestrzeni nazw dyskusji 3"](frame,i)}} === Funkcja pisze nazwę przestrzeni nazw dyskusji jakikolwiek nazwy przestrzeni nazw (tzn. nazwę dyskusji nazwy przestrzenie nazw, czyli nie przedmiotowej, zamieniana jest na nią samą, czyli identyfikator przestrzeni się nie zmienia, a przedmiotową, nie dyskusji, przekształca się na dyskusji jej odpowiadającą, czyli w tym przypadku identyfikator przestrzeni zwiększa się o numer więcej), według, i nie zawsze tylko, podanej w zmiennej {{Code|nazwa przestrzeni nazw}} dla pozycja bazowej w podanych parametrach szablonu rodzicu ramki dziecka, lub dla innej pozycji należy parametr podawać w formie {{Code|nazwa przestrzeni nazw 1}}, {{Code|nazwa przestrzeni nazw 2}}, {{Code|nazwa przestrzeni nazw 3}},..., lub te parametry można podać w postaci ogólnej {{Code|nazwa przestrzeni nazw i}}. W tej funkcji trzeba też podawać parametry nazwy jednostek {{Code|nazwa jednostki}}, {{Code|nazwa jednostki 1}}, {{Code|nazwa jednostki 2}}, {{Code|nazwa jednostki 3}},... Parametry podaje się w parametrach rodzica wywołania tej funkcji {{Code|{{m|Pudełko|Nazwa przestrzeni nazw dyskusji 3}}}} (ale ich nie trzeba podawać w dziecku, ale można) i w parametrach dziecka, jeśli chodzi o zmienną {{Code|numer jednostki}}, czyli np.: {{Code|{{m|Pudełko|Nazwa przestrzeni nazw dyskusji 3|numer jednostki{{=}}<jakaś liczba całkowita dodatnia>}}}}. Te parametry przestrzenne zamiast w rodzicu w szablonie można podać w ramce dziecka, wtedy parametry dziecka mają pierwszeństwo. Przestrzeń nazw z parametrów nazw przestrzennych bazowych (bez numerka) może odpowiadać wartości przestrzeni głównej, to wtedy odpowiednia przestrzeń nazw z parametru nazwy jednostki się nie liczy w tej funkcji, aby się liczyła należy użyć funkcji {{Code|{{sr|#p["Nazwa przestrzeni nazw dyskusji 2"](frame,...)|p=Pudełko}}}}. W tym przypadku funkcja działa jak {{Code|{{sr|#p["Nazwa przestrzeni nazw dyskusji"](frame,...)|p=Pudełko}}}}. Przestrzeń nazw z parametrów nazw przestrzennych numerkowych może odpowiadać wartości przestrzeni głównej, to wtedy odpowiednia przestrzeń nazw z parametru nazwy jednostki się liczy w tej funkcji, wtedy jest liczona nazwa przestrzeni nazw z tego parametru. Gdy parametry przestrzenne lub typ jednostki w drugim podejściu nie wskazują na przestrzeń główną, to wtedy działanie tej funkcji jest podobne do {{Code|{{sr|#p["Nazwa przestrzeni nazw dyskusji 2"](frame,...)|p=Pudełko}}}}. Definicja skrótowa funkcji: <syntaxhighlight lang="lua"> p["Nazwa przestrzeni nazw dyskusji 3"]=function(frame,czy_uwzglednic_alternatywna_nazwe,i)...end; </syntaxhighlight> Wtedy ciało funkcji tej, czyli jego definicja w środku, jest: <syntaxhighlight lang="lua"> -- Jest liczony numer parametru nazwy przestrzeni nazw, domyslnie chodzi tu o numer bazowy parametrów przestrzennych; local numer_jednostki=i or frame.args["numer jednostki"]; local liczba_numeru_jednostki=((numer_jednostki)and(tonumber(numer_jednostki)) or 0); local pudelko_pomocne_modul=require("Module:Pudełko/Pomocne"); -- Liczy nazwę przestrzeni nazw dyskusji na podstawie podanych parametrów; return pudelko_pomocne_modul.Uzyskanie_nazw_jednostki(frame,2,liczba_numeru_jednostki,nil,1); </syntaxhighlight> Parametry funkcji: * {{Code|frame}} - tablica ramki tablicy transportu, * {{Code|czy_uwzglednic_alternatywna_nazwe}} - czy ma uwzględniać nazwę przestrzeni nazw domyślną szablonu, dostępne wartości: {{Code|false}}, w której nazwa domyślna nie jest uwzględniana wtedy, oraz {{Code|nil}} i {{Code|true}}, które oznaczają to samo, w tym jeżeli ona jest uwzględniana, wtedy jest brany parametr pierwszy dziecka, który musi istnieć przy takiej wartości tego parametru, tzn. {{Code|{{m|Pudełko|Nazwa przestrzeni nazw dyskusji 3|Szablon}}}}, a jeśli nazwa uzyskana nazwy przestrzeni nazw jest w takim przypadku błędna, a jeżeli nazwa domyślna jest błędna, czyli {{Code|{{m|Pudełko|Nazwa przestrzeni nazw dyskusji 3|Moja przestrzeń}}}}, wtedy funkcja zwraca stan błędu {{Code|(błąd)}}. * {{Code|i}} - numer zmiennej nazwy przestrzeni nazw. Funkcja wykorzystuje {{Code|{{sr|#p.Uzyskanie_nazw_jednostki(frame,...)|p=Pudełko/Pomocne}}}} do wyznaczania ogólnego nazwy przestrzeni nazw dla pozycji bazowej i numerkowej, tzn. dla pozycji: jeden, dwa, trzy,..., itd, i ich ogólnej. Parametr ramki tablicy transportu rodzica szablonu: * {{Code|nazwa przestrzeni nazw}}, {{Code|nazwa przestrzeni nazw 1}}, {{Code|nazwa przestrzeni nazw 2}}, {{Code|nazwa przestrzeni nazw 3}},..., {{Code|nazwa przestrzeni nazw i}} - nazwy przestrzeni nazw dla pozycji bazowej oraz zwykłej i ogólnej numerkowej, * {{Code|nazwa jednostki}}, {{Code|nazwa jednostki 1}}, {{Code|nazwa jednostki 2}}, {{Code|nazwa jednostki 3}},... - nazwy jednostek dla pozycji bazowej i numerkowej, * {{Code|typ jednostki}}, {{Code|typ jednostki 1}}, {{Code|typ jednostki 2}}, {{Code|typ jednostki 3}},..., {{Code|typ jednostki i}} - typy jednostek, którym odpowiadają pewne przestrzenie przedmiotowe, dla pozycji bazowej, numerkowej i ogólnej. Parametry ramki tablicy transportu dziecka: * Parametry dziecka są takie same jak rodzica dla funkcji pudełkowej plus tu wymienione, * {{Code|numer jednostki}} - jak parametr {{Code|i}} nie został ustawiony, to wtedy liczy się ta zmienna. Przykłady: <syntaxhighlight lang="mediawiki"> {{Nazwa szablonu 1|nazwa przestrzeni nazw=Wikibooks|nazwa przestrzeni nazw=|nazwa przestrzeni nazw i=|nazwa jednostki=Szablon:Strona}} ---- {{Nazwa szablonu 2|nazwa przestrzeni nazw=Wikibooks|nazwa przestrzeni nazw 1=Szablon|nazwa przestrzeni nazw i=|nazwa jednostki 2=Wikibooks:Strona}} </syntaxhighlight> W pierwszym wywołaniu {{Code|nazwa przestrzeni nazw}} jest puste, ale dla tego bazowego (bez numerka) szukamy przestrzeni nazw, a więc ta nazwa jest ostateczna. ---- W drugim wywołaniu w dziecku powiedzmy jest wywołanie, i szukamy nazwy przestrzeni nazw o numerze dwa, która została podana, ale istnieje za to jej wersji ogólna {{Code|nazwa przestrzeni nazw i}} i domyślna {{Code|nazwa przestrzeni nazw}}, ale wtedy dla tego numerkowego liczy się to ogólne z {{Code| i}}, a ponieważ ta nazwa jest pusta, więc będziemy liczyli nazwę przestrzeni nazw z {{Code|nazwa jednostki 2}}. Odpowiadająca powyższemu kodowi, powiedzmy wikikod, według ich zawartości, przedstawia się: <syntaxhighlight lang="mediawiki"> {{#invoke:Pudełko|Nazwa przestrzeni nazw 3}} ---- {{#invoke:Pudełko|Nazwa przestrzeni nazw 3|numer jednostki=2}} </syntaxhighlight> Na podstawie powyższego przykładu otrzymamy wynik o schemacie, nie wyniku, bo tam nie ma zmiennej {{Code|nazwa przestrzeni nazw 1}}, ale jest {{Code|nazwa przestrzeni nazw i}}: <syntaxhighlight lang="mediawiki"> <!-- nazwa przestrzeni nazw=""; --> <!-- Czyli wynik: --> Dyskusja <!-- Widzimy, że wygenerowała się nazwa przestrzeni nazw, którą jest przestrzeń nazw niegłówna, jest ciągiem niepustym; --> ---- <!-- Ale nie "nazwa przestrzeni nazw 2", bo jej nie ma, ale za to istnieje "nazwa przestrzeni nazw i"; --> <!-- nazwa przestrzeni nazw 2=nazwa przestrzeni nazw i="", a nazwa jednostki 2="Wikibooks:Strona"; --> <!-- Czyli wynik: --> Dyskusja Wikibooks <!-- Widzimy, że wygenerowała się nazwa przestrzeni nazw, którą jest przestrzeń nieprogramowa, ale projektu, wychodząca z nazwy jednostek w tym przypadku z "nazwa jednostki 2"; --> </syntaxhighlight> Dla parametrów numerkowych nie jest brana w tym powyższym przykładzie zmienna {{Code|nazwa przestrzeni nazw 2}}, bo jej nie ma, ale za to jest {{Code|nazwa przestrzeni nazw i}}, bo ona występuje jako parametr domyślny ogólny dla parametrów numerkowych. Tytaj jest używana jest zmienna {{Code|nazwa jednostki 2}} do wygenerowania ostatecznego wyniku, bo jak można zauważyć, parametry przestrzenne wskazują na przestrzeń główną, a nazwy jednostek już nie. Dla parametrów bazowych mamy zmienną {{Code|nazwa przestrzeni nazw}}, ona jest pusta, więc to zostanie wziete do ostatecznego wyniku. Przykłady w wikikodzie: * {{Code|{{m|Pudełko|Nazwa przestrzeni nazw dyskusji 3|Szablon|nazwa przestrzeni nazw{{=}}Moja przestrzeń|nazwa jednostki{{=}}Wikibooks:Strona}}}} → {{Tt|{{#invoke:Pudełko|Nazwa przestrzeni nazw dyskusji 3|Szablon|nazwa przestrzeni nazw=Moja przestrzeń|nazwa jednostki=Wikibooks:Szablon}}}} * {{Code|{{m|Pudełko|Nazwa przestrzeni nazw dyskusji 3|Szablon|nazwa przestrzeni nazw 2{{=}}Moja przestrzeń|nazwa jednostki 2{{=}}Wikibooks:Strona|numer jednostki{{=}}2}}}} → {{Tt|{{#invoke:Pudełko|Nazwa przestrzeni nazw dyskusji 3|Szablon|nazwa przestrzeni nazw 2=Moja przestrzeń|nazwa jednostki 2=Wikibooks:Szablon|numer jednostki=2}}}} * {{Code|{{m|Pudełko|Nazwa przestrzeni nazw dyskusji 3|nazwa przestrzeni nazw{{=}}|nazwa jednostki{{=}}Wikibooks:Strona}}}} → {{Tt|{{#invoke:Pudełko|Nazwa przestrzeni nazw dyskusji 3|nazwa przestrzeni nazw=|nazwa jednostki=Wikibooks:Szablon}}}} * {{Code|{{m|Pudełko|Nazwa przestrzeni nazw dyskusji 3|nazwa przestrzeni nazw 2{{=}}|nazwa jednostki 2{{=}}Wikibooks:Strona|numer jednostki{{=}}2}}}} → {{Tt|{{#invoke:Pudełko|Nazwa przestrzeni nazw dyskusji 3|nazwa przestrzeni nazw 2=|nazwa jednostki 2=Wikibooks:Szablon|numer jednostki=2}}}} Powyżej dla przykładu podano parametry nie w rodzicu w szablonie, tylko w dziecku, jeśli chodzi o parametry nazw przestrzeni nazw i nazw jednostek, ale ich się za to nie powinno podawać w tych ramach, tylko w szablonach, w których wywoływane są te ramki pudełek {{Code|{{m|Pudełko}}}}, ale tak tutaj tak zrobiono by było najłatwiej sprawdzić działanie tego typu funkcji. Analogicznie możemy podawać parametry typu jednostki, np.: wywołaniu modułowym {{Code|{{m|Pudełko|Nazwa przestrzeni nazw dyskusji 3|typ jednostki 2{{=}}Podręcznik|nazwa jednostki 2{{=}}Szablon:Strona|numer jednostki{{=}}2}}}} (ale wtedy jest brana przestrzeń nazw z nazwy jednostki), ale o tym więcej w rozdziałach {{Code|{{sr|# p["Dyskusyjny typ jednostki 3"](frame,i)|p=Pudełko}}}} w „{{sr|#Funkcje typu jednostki|p=Pudełko}}”, one definiują przestrzenie dyskusji, ale można użyć parametru dyskusji typu jednostki z obojętnie jaką wartością niepustą, czy pustą, czy nawet jej nie podamy, wtedy wyświetli się nazwa przestrzeni nazw dyskusji. Jeżeli typ jednostki bazowy wskazuje na przestrzeń nazw główną, wtedy się nie liczą parametry nazw jednostek, a na numerkowy, wtedy się liczy. Również parametry typu jednostki nie powinno się podawać w dziecku w ramce, tylko w rodzicu w szablonie jako parametry, w którym ta ramka jest wywoływana, ale tutaj podano jedynie dla przykładu, jak najłatwiej sprawdzić działanie tych parametrów tej funkcji. Najpierw w funkcji nagłówku brane są parametry nazw przestrzeni nazw, a jeżeli ich nie ma, to parametry typu jednostki, a jeżeli nie ma lub parametry przestrzenne wskazują na przestrzeń główną, i nie ma nazwy jednostki, to generowane są nazwy tej funkcji na podstawie aktualnej strony. == Funkcje nazw jednostki trzeciej wersji == === {{Code|p["Nazwa jednostki 3"](frame,i)}} === === {{Code|p["Nazwa przedmiotowa jednostki 3"](frame,i)}} === === {{Code|p["Nazwa dyskusji jednostki 3"](frame,i)}} === == Funkcje typu jednostki == === {{Code|p["Typ jednostki"](frame,i)}} === === {{Code|p["Typ jednostki 2"](frame,i)}} === === {{Code|p["Typ jednostki 3"](frame,i)}} === === Funkcje typu jednostki przedmiotowe === ==== {{Code|p["Przedmiotowy typ jednostki"](frame,i)}} ==== ==== {{Code|p["Przedmiotowy typ jednostki 2"](frame,i)}} ==== ==== {{Code|p["Przedmiotowy typ jednostki 3"](frame,i)}} ==== === Fukcje typu jednostki dyskusji === ==== {{Code|p["Dyskusyjny typ jednostki"](frame,i)}} ==== ==== {{Code|p["Dyskusyjny typ jednostki 2"](frame,i)}} ==== ==== {{Code|p["Dyskusyjny typ jednostki 3"](frame,i)}} ==== == Funkcje chech pudełka == === {{Code|p["Cecha pudełka"](frame)}} === === {{Code|p["Przedmiotowa cecha pudełka"](frame)}} === === {{Code|p["Dyskusyjna cecha pudełka"](frame)}} === == Fukcje ogólnego pudełka == === {{Code|p["Ogólne pudełko"](frame)}} === == Funkcje ogólne == === {{Code|p["Tekst pudełka"](frame)}} === == Funkcje błędów pudełka == === {{Code|p["Błędy pudełka"](frame)}} === === {{Code|p["Przedmiotowe błędy pudełka"](frame)}} === === {{Code|p["Dyskusyjne błędy pudełka"](frame)}} === == Funkcje nazw stron == === {{Code|p["Nazwa strony głównej projektu"](frame,i)}} === === {{Code|p["Nazwa strony głównej dla dzieci projektu"](frame,i)}} === == Funkcje kodów == === {{Code|p["Kod języka"](frame,i)}} === === {{Code|p["Kod projektu"](frame,i)}} === === {{Code|p["Klucz projektu"](frame,i)}} === == Funkcje wiki == === {{Code|p["Inny niż język bieżący wiki"](frame)}} === === {{Code|p["Inne niż lokalne wiki"](frame)}} === === {{Code|p["Inne niż bieżące wiki"](frame)}} === == Funkcje typów parametrów, czy podane je == === {{Code|p["Podano parametry nienazwane"](frame)}} === === {{Code|p["Podano parametry numerowane"](frame)}} === === {{Code|p["Podano parametry nazwane"](frame)}} === == Funkcje kodów tego projektu == === {{Code|p["Kod projektu tego projektu"](frame)}} === === {{Code|p["Kod języka tego projektu"](frame)}} === === {{Code|p["Klucz projektu tego projektu"](frame)}} === == Funkcje stron == === {{Code|p["Strona główna tego projektu"](frame)}} === === {{Code|p["Strona główna dla dzieci tego projektu"](frame)}} === == Funkcje nazw stron drugiej wersji == === {{Code|p["Nazwa strony głównej dla dzieci projektu 2"](frame)}} === === {{Code| p["Nazwa strony głównej projektu 2"](frame)}} === {{BrClear}} <noinclude><!-- -->{{ProstaStronaKoniec}}<!-- -->{{Kategoria|Opisy funkcji, w Lua w Scribunto, w modułach}}<!-- --></noinclude> 1qraiklsqy2947nosb8vv6qkmxwrsju 540454 540453 2026-04-24T05:35:05Z Persino 2851 540454 wikitext text/x-wiki <noinclude>{{ProstaStronaStart | nagłówek = {{Podrozdział|{{ld2|Pudełko}}|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 pudelko_modul=require("Module:Pudełko"); </syntaxhighlight> dzięki, któremu można wypisywać funkcje należącego do niego. Posługuje się na parametrach pudełkowych {{Parametr|nazwa przestrzeni nazw}} (czy też bez numerka {{Parametr|nazwa przestrzeni nazw i}} dla tego numerowanego) lub te z numerkiem po jednej spacji w nich (ale nie dla tego z końcówką {{Code| i}}) mogą zostać użyte jako parametry szablonu. Moduł {{Code|{{ld2|Pudełko}}}} przedstawia funkcje nazw w oparciu o funkcje nazw {{Code|{{ld2|Nazwy}}}}, generuje on nazwy za pomocą parametrów pudełkowych podanych poniżej. Parametr {{Parametr|nazwa jednostki}} (lub parametr {{Parametr|cel}} dla numerka tego pierwszego, tego alternatywnego), lub te z numerkiem po jednej spacji w nazwie parametru, albo numerowane numerkami {{Code|1}}, {{Code|2}},..., mogą zostać użyte jako parametry szablonu. Parametry określające rodzaj jednostki {{Parametr|typ jednostki}} z {{Parametr|dyskusja typu jednostki}}, itp. w wersjach z numerkiem po jednej spacji w nich mogą zostać użyte jako parametry szablonu. A te tymi numerowanymi liczbami naturalnymi {{Tt|nazwy jednostki}} od jedynki wzwyż poprzez szablon, w którym są one użyte, one też mogą być użyte z dwukropkiem, te numerowane, na samym początku nazwy, wtedy one są traktowane jako pełne nazwy strony, i wtedy one nie zostaną z interpretowane, że do nich trzeba użyć parametr odpowiedni z nazwą przetrzeni nazw z tego numerowanego, czy ogólny, aby utworzyć znów inną pełną nazwę strony dla tego numerka. Zestawienie: * {{Code|nazwa przestrzeni nazw}} i {{Code|nazwa przestrzeni nazw i}} (ogólna nazwa przestrzeni nazw dla wszystkich numerków, i tych numerowanych jednostek) - i to pierwsze z numerkiem, tzn. {{Code|nazwa przestrzeni nazw 1}}, {{Code|nazwa przestrzeni nazw 2}}, ..., * {{Code|nazwa jednostki}} - i te z numerkiem: {{Code|nazwa jednostki 1}}, {{Code|nazwa jednostki 2}}, ..., lub gdy jest zamiast tego parametrem numerowany, {{Code|1}}, {{Code|2}},..., który dla tego pierwszego może być uznany jako: {{Code|cel}} {{=}} {{Code|1}}, * {{Code|typ jednostki}} (parametr bazowy) i {{Code|typ jednostki i}} (parametr domyślny numerkowy) - i te z numerkiem: {{Code|typ jednostki 1}}, {{Code|typ jednostki 2}}, ..., tzn. gdy chcemy określić z jakim typem jednostki mamy do czynienia w zależności do jakiej przestrzeni nazw należy, a w danej, czy jest on np. programowy, czy tylko jest opisem, jak to bywa w szablonach {{Np|Template|link=tak}}, podobnie jest w przypadku {{Np|Module|link=tak}}, czy jak jest w innych przestrzeniach nazw, ** {{Code|dyskusja typu jednostki}} (parametr bazowy) i {{Code|dyskusja typu jednostki i}} (parametr domyślny numerkowy) - i te z numerkiem: {{Code|dyskusja typu jednostki 1}}, {{Code|dyskusja typu jednostki 2}}, ..., gdy chcemy określić wartością niepustą,że chodzi tutaj o typ jednostki. == {{Code|p.CzyNiepoprawnaNazwa(nazwa_jednostki)}} == Funkcja sprawdzajaca, czy jest poprawnie podana nazwa jednostki, czy ma poprawną nazwę. Znakami tymi, z których nie powinna składać się nazwa jest {{Code|<nowiki>{}<>|[]#\n</nowiki>}} i dodatkowo znak {{Code|&#127;}} (kod {{Code|{{Nowiki|&#127;}}}}). Też nie może składać się z trzech znaków tyldy, tzn. {{Code|<nowiki>~~~</nowiki>}}. Również w swojej budowie nie może składać się ze kodów {{Strong|HTML}} literowych o wzorze {{Code|{{Nowiki|&(%a+);}}}}. Natomiast może składać się z {{Code|{{Nowiki|&#(%d+);}}}} i {{Code|{{Nowiki|&#x(%x+);}}}}, ale w pierw te kody muszą być zamienione na normalne znaki. Skrótowa definicja funkcji: <syntaxhighlight lang="lua"> function p.CzyNiepoprawnaNazwa(nazwa_jednostki)...end; </syntaxhighlight> Wtedy ciało funkcji tej, czyli jego definicja w środku, jest: <syntaxhighlight lang="lua"> -- Moduł: "Moduł:Html/dane", służy do ładowania znaku o kodzie HTML "&#127;"; local html_dane_modul=mw.loadData("Module:Html/dane"); return mw.ustring.match(nazwa_jednostki,"[{}<>|%[%]#\n"..html_dane_modul.znak_127.."]+") or mw.ustring.match(nazwa_jednostki,"~~~") or mw.ustring.match(nazwa_jednostki,"&(%a+);"); </syntaxhighlight> Parametry: * {{Code|nazwa_jednostki}} - nazwa jednostki do sprawdzenia. Przykłady: <syntaxhighlight lang="lua"> local pudelko_modul=require("Module:Pudełko"); -- Podana przykładowa niepoprawna nazwa jedostki local nazwa_jednostki="Nazwa pliku [[Nazwa linku w pliku]]"; -- Fukcja zwróci wartość: local czy_poprawna_nazwa=true; local czy_poprawna_nazwa=pudelko_modul.CzyNiepoprawnaNazwa(nazwa_jednostki); </syntaxhighlight> == Funkcje nazw przestrzeni nazw == === {{Code|p["Nazwa przestrzeni nazw"](frame,...)}} === Funkcja pisze nazwę przestrzeni nazw, niezależnie, czy to jest przedmiotowa, czy dyskusji, według podanej w zmiennej {{Code|nazwa przestrzeni nazw}} dla pozycja bazowej w podanych parametrach szablonu rodzicu ramki dziecka, lub dla innej pozycji należy parametr podawać w formie {{Code|nazwa przestrzeni nazw 1}}, {{Code|nazwa przestrzeni nazw 2}}, {{Code|nazwa przestrzeni nazw 3}},..., lub te parametry można podać w postaci ogólnej {{Code|nazwa przestrzeni nazw i}}. Parametry podaje się w parametrach rodzica wywołania tej funkcji {{Code|{{m|Pudełko|Nazwa przestrzeni nazw}}}} (ale ich nie trzeba podawać w dziecku, ale można) i w parametrach dziecka, jeśli chodzi o zmienną {{Code|numer jednostki}}, czyli np.: {{Code|{{m|Pudełko|Nazwa przestrzeni nazw|numer jednostki{{=}}<jakaś liczba całkowita dodatnia>}}}}. Te parametry przestrzenne zamiast w rodzicu w szablonie można podać w ramce dziecka, wtedy parametry dziecka mają pierwszeństwo. Przestrzeń nazw z parametrów nazw przestrzennych może odpowiadać wartości przestrzeni głównej, to wtedy odpowiednia przestrzeń nazw z parametru nazwy jednostki się nie liczy w tej funkcji, aby się liczyła należy użyć funkcji {{Code|{{sr|#p["Nazwa przestrzeni nazw 2"](frame,...)|p=Pudełko}}}}. Definicja skrótowa funkcji: <syntaxhighlight lang="lua"> p["Nazwa przestrzeni nazw"]=function(frame,czy_uwzglednic_alternatywna_nazwe,i)...end; </syntaxhighlight> Wtedy ciało funkcji tej, czyli jego definicja w środku, jest: <syntaxhighlight lang="lua"> -- Jest liczony numer parametru nazwy przestrzeni nazw, domyslnie chodzi tu o numer bazowy parametrów przestrzennych; local numer_jednostki=i or frame.args["numer jednostki"]; local liczba_numer_jednostki=((numer_jednostki)and(tonumber(numer_jednostki))or 0); local pudelko_pomocne_modul=require("Module:Pudełko/Pomocne"); -- Liczy nazwę przestrzeni nazw na podstawie podanych parametrów; return pudelko_pomocne_modul.Nazwa_przestrzeni_nazw(frame,0, czy_uwzglednic_alternatywna_nazwe,liczba_numer_jednostki); </syntaxhighlight> Parametry funkcji: * {{Code|frame}} - tablica ramki tablicy transportu, * {{Code|czy_uwzglednic_alternatywna_nazwe}} - czy ma uwzględniać nazwę przestrzeni nazw domyślną szablonu, dostępne wartości: {{Code|false}}, w której nazwa domyślna nie jest uwzględniana wtedy, oraz {{Code|nil}} i {{Code|true}}, które oznaczają to samo, w tym jeżeli ona jest uwzględniana, wtedy jest brany parametr pierwszy dziecka, który musi istnieć przy takiej wartości tego parametru, tzn. {{Code|{{m|Pudełko|Nazwa przestrzeni nazw|Szablon}}}}, a jeśli nazwa uzyskana nazwy przestrzeni nazw jest w takim przypadku błędna, a jeżeli nazwa domyślna jest błędna, czyli {{Code|{{m|Pudełko|Nazwa przestrzeni nazw|Moja przestrzeń}}}}, wtedy funkcja zwraca stan błędu {{Code|(błąd)}}. * {{Code|i}} - numer zmiennej nazwy przestrzeni nazw. Funkcja wykorzystuje {{Code|{{sr|#p.Nazwa_przestrzeni_nazw(frame,...)|p=Pudełko/Pomocne}}}} do wyznaczania ogólnego nazwy przestrzeni nazw dla pozycji bazowej i numerkowej, tzn. dla pozycji: jeden, dwa, trzy,..., itd, i ich ogólnej. Parametr ramki tablicy transportu rodzica szablonu: * {{Code|nazwa przestrzeni nazw}}, {{Code|nazwa przestrzeni nazw 1}}, {{Code|nazwa przestrzeni nazw 2}}, {{Code|nazwa przestrzeni nazw 3}},..., {{Code|nazwa przestrzeni nazw i}} - nazwy przestrzeni nazw dla pozycji bazowej oraz zwykłej i ogólnej numerkowej, * {{Code|typ jednostki}}, {{Code|typ jednostki 1}}, {{Code|typ jednostki 2}}, {{Code|typ jednostki 3}},..., {{Code|typ jednostki i}} - typy jednostek, którym odpowiadają pewne przestrzenie przedmiotowe, dla pozycji bazowej, numerkowej i ogólnej, ** {{Code|dyskusja typu jednostki}}, {{Code|dyskusja typu jednostki 1}}, {{Code|dyskusja typ jednostki 2}}, {{Code|dyskusja typ jednostki 3}},..., {{Code|dyskusja typ jednostki i}} - czy dany typ jednostki ma przedstawiać, jeśli niepusta, przestrzeń dyskusji dla pozycji bazowej, numerkowej i ogólnej. Parametry ramki tablicy transportu dziecka: * Parametry dziecka są takie same jak rodzica dla funkcji pudełkowej plus tu wymienione, * {{Code|numer jednostki}} - jak parametr {{Code|i}} nie został ustawiony, to wtedy liczy się ta zmienna. Przykłady: <syntaxhighlight lang="mediawiki"> {{Nazwa szablonu|nazwa przestrzeni nazw=Wikibooks|nazwa przestrzeni nazw 2=Szablon|nazwa przestrzeni nazw i=Moduł}} </syntaxhighlight> W dziecku powiedzmy jest wywołanie, i szukamy nazwy przestrzeni nazw o numerze dwa, która nie została podana, ale istnieje za to jej wersji ogólna {{Code|nazwa przestrzeni nazw i}} i domyślna {{Code|nazwa przestrzeni nazw}}: <syntaxhighlight lang="mediawiki"> {{#invoke:Pudełko|Nazwa przestrzeni nazw|numer jednostki=1}} </syntaxhighlight> Na podstawie powyższego przykładu otrzymamy wynik o schemacie, nie wyniku, bo tam nie ma zmiennej {{Code|nazwa przestrzeni nazw 1}}, ale jest {{Code|nazwa przestrzeni nazw i}}: <syntaxhighlight lang="mediawiki"> <!-- Ale nie "nazwa przestrzeni nazw", bo jej nie ma, ale za to istnieje "nazwa przestrzeni nazw i"; --> <!-- nazwa przestrzeni nazw 2=nazwa przestrzeni nazw i=Moduł; --> <!-- Czyli wynik: --> Moduł <!-- Widzimy, że wygenerowała się nazwa przestrzeni nazw, którą jest przestrzeń programowa, którą również jest "Szablon"; --> </syntaxhighlight> Nie jest brana w tym powyższym przykładzie zmienna {{Code|nazwa przestrzeni nazw}}, bo jej nie ma, ale za to jest {{Code|nazwa przestrzeni nazw i}}, bo ona występuje jako parametr domyślny ogólny dla parametrów numerkowych. Przykłady w wikikodzie: * {{Code|{{m|Pudełko|Nazwa przestrzeni nazw|numer jednostki{{=}}2}}}} → {{Tt|{{#invoke:Pudełko|Nazwa przestrzeni nazw|numer jednostki=2}}}} * {{Code|{{m|Pudełko|Nazwa przestrzeni nazw|Szablon|nazwa przestrzeni nazw i{{=}}Moja przestrzeń|numer jednostki{{=}}2}}}} → {{Tt|{{#invoke:Pudełko|Nazwa przestrzeni nazw|Szablon|nazwa przestrzeni nazw i=Moja przestrzeń|numer jednostki=2}}}} * {{Code|{{m|Pudełko|Nazwa przestrzeni nazw|nazwa przestrzeni nazw 2{{=}}Szablon|numer jednostki{{=}}2}}}} → {{Tt|{{#invoke:Pudełko|Nazwa przestrzeni nazw|nazwa przestrzeni nazw 2=Szablon|numer jednostki=2}}}} * {{Code|{{m|Pudełko|Nazwa przestrzeni nazw|nazwa przestrzeni nazw 2{{=}}Szablon|numer jednostki{{=}}2}}}} → {{Tt|{{#invoke:Pudełko|Nazwa przestrzeni nazw|nazwa przestrzeni nazw i=Szablon|numer jednostki=2}}}} * {{Code|{{m|Pudełko|Nazwa przestrzeni nazw|nazwa przestrzeni nazw{{=}}Szablon|numer jednostki{{=}}2}}}} → {{Tt|{{#invoke:Pudełko|Nazwa przestrzeni nazw|nazwa przestrzeni nazw=Szablon|numer jednostki=2}}}} Powyżej dla przykładu podano parametry nie w rodzicu w szablonie, tylko w dziecku, jeśli chodzi o parametry nazw przestrzeni nazw, ale ich się za to nie powinno podawać w tych ramach, tylko w szablonach, w których wywoływane są te ramki pudełek {{Code|{{m|Pudełko}}}}, ale tak tutaj tak zrobiono by było najłatwiej sprawdzić działanie tego typu funkcji. Analogicznie możemy podawać parametry typu jednostki, np.: wywołaniu modułowym {{Code|{{m|Pudełko|Nazwa przestrzeni nazw|typ jednostki 2{{=}}strona szablonu|numer jednostki{{=}}2}}}}, ale o tym więcej w rozdziałach {{Code|{{sr|# p["Typ jednostki"](frame,i)|p=Pudełko}}}} w „{{sr|#Funkcje typu jednostki|p=Pudełko}}”, on definiuje przestrzenie przedmiotowe, ale można użyć parametru dyskusji typu jednostki z wartością niepustą, wtedy wyświetli się nazwa przestrzeni nazw dyskusji. Również parametry typu jednostki nie powinno się podawać w dziecku w ramce, tylko w rodzicu w szablonie jako parametry, w którym ta ramka jest wywoływana, ale tutaj podano jedynie dla przykładu, jak najłatwiej sprawdzić działanie tych parametrów tej funkcji. Najpierw w funkcji nagłówku brane są parametry nazw przestrzeni nazw, a jeżeli ich nie ma, to parametry typu jednostki, a jeżeli nie ma, to generowane są nazwy na podstawie aktualnego modułu. === {{Code|p["Nazwa przedmiotowej przestrzeni nazw"](frame,...)}} === Funkcja pisze przedmiotową nazwę przestrzeni nazw jakikolwiek nazwy przestrzeni nazw (tzn. nazwę przedmiotową nazwy przestrzenie nazw, czyli nie dyskusji, zamieniana jest na nią samą, czyli identyfikator przestrzeni się nie zmienia, a dyskusji, nie przedmiotową, przekształca się na przedmiotową jej odpowiadającą, czyli w tym przypadku identyfikator przestrzeni zmniejsza się o numer mniej), według podanej w zmiennej {{Code|nazwa przestrzeni nazw}} dla pozycja bazowej w podanych parametrach szablonu rodzicu ramki dziecka, lub dla innej pozycji należy parametr podawać w formie {{Code|nazwa przestrzeni nazw 1}}, {{Code|nazwa przestrzeni nazw 2}}, {{Code|nazwa przestrzeni nazw 3}},..., lub te parametry można podać w postaci ogólnej {{Code|nazwa przestrzeni nazw i}}. Parametry podaje się w parametrach rodzica wywołania tej funkcji {{Code|{{m|Pudełko|Nazwa przedmiotowej przestrzeni nazw}}}} (ale ich nie trzeba podawać w dziecku, ale można) i w parametrach dziecka, jeśli chodzi o zmienną {{Code|numer jednostki}}, czyli np.: {{Code|{{m|Pudełko|Nazwa przedmiotowej przestrzeni nazw|numer jednostki{{=}}<jakaś liczba całkowita dodatnia>}}}}. Te parametry przestrzenne zamiast w rodzicu w szablonie można podać w ramce dziecka, wtedy parametry dziecka mają pierwszeństwo. Parametry przestrzenne mogą mogą być podane w postaci przestrzeni przedmiotowej lub dyskusji, ale ta funkcja zawsze ją zamienia na przedmiotową. Przestrzeń nazw z parametrów nazw przestrzennych może odpowiadać wartości przestrzeni głównej, to wtedy odpowiednia przestrzeń nazw z parametru nazwy jednostki się nie liczy w tej funkcji, aby się liczyła należy użyć funkcji {{Code|{{sr|#p["Nazwa przedmiotowej przestrzeni nazw 2"](frame,...)|p=Pudełko}}}}. Definicja skrótowa funkcji: <syntaxhighlight lang="lua"> p["Nazwa przedmiotowej przestrzeni nazw"]=function(frame,czy_uwzglednic_alternatywna_nazwe,i)...end; </syntaxhighlight> Wtedy ciało funkcji tej, czyli jego definicja w środku, jest: <syntaxhighlight lang="lua"> -- Jest liczony numer parametru nazwy przestrzeni nazw, domyslnie chodzi tu o numer bazowy parametrów przestrzennych; local numer_jednostki=i or frame.args["numer jednostki"]; local liczba_numer_jednostki=((numer_jednostki)and(tonumber(numer_jednostki))or 0); local pudelko_pomocne_modul=require("Module:Pudełko/Pomocne"); -- Liczy nazwę przestrzeni nazw przedmiotową na podstawie podanych parametrów; return pudelko_pomocne_modul.Nazwa_przestrzeni_nazw(frame,1, czy_uwzglednic_alternatywna_nazwe,liczba_numer_jednostki); </syntaxhighlight> Parametry funkcji: * {{Code|frame}} - tablica ramki tablicy transportu, * {{Code|czy_uwzglednic_alternatywna_nazwe}} - czy ma uwzględniać nazwę przestrzeni nazw domyślną szablonu, dostępne wartości: {{Code|false}}, w której nazwa domyślna nie jest uwzględniana wtedy, oraz {{Code|nil}} i {{Code|true}}, które oznaczają to samo, w tym jeżeli ona jest uwzględniana, wtedy jest brany parametr pierwszy dziecka, który musi istnieć przy takiej wartości tego parametru, tzn. {{Code|{{m|Pudełko|Nazwa przedmiotowej przestrzeni nazw|Dyskusja szablonu}}}} - ta nazwa domyślna zostanie zamieniona na przedmiotową, a jak ona by była przedmiotowa, to żadnej zamiany, by nie było, a jeśli nazwa uzyskana z nazwy przestrzeni nazw z parametrów przestrzennych jest w takim przypadku błędna, to w takim razie brany jest ten parametr, a jeżeli ta nazwa domyślna jest błędna, czyli {{Code|{{m|Pudełko|Nazwa przedmiotowej przestrzeni nazw|Moja przestrzeń}}}}, wtedy funkcja zwraca stan błędu {{Code|(błąd)}}. * {{Code|i}} - numer zmiennej nazwy przestrzeni nazw. Funkcja wykorzystuje {{Code|{{sr|#p.Nazwa_przestrzeni_nazw(frame,...)|p=Pudełko/Pomocne}}}} do wyznaczania ogólnego nazwy przestrzeni nazw dla pozycji bazowej i numerkowej, tzn. dla pozycji: jeden, dwa, trzy,..., itd, i ich ogólnej. Parametr ramki tablicy transportu rodzica szablonu: * {{Code|nazwa przestrzeni nazw}}, {{Code|nazwa przestrzeni nazw 1}}, {{Code|nazwa przestrzeni nazw 2}}, {{Code|nazwa przestrzeni nazw 3}},..., {{Code|nazwa przestrzeni nazw i}} - nazwy przestrzeni nazw dla pozycji bazowej oraz zwykłej i ogólnej numerkowej, * {{Code|typ jednostki}}, {{Code|typ jednostki 1}}, {{Code|typ jednostki 2}}, {{Code|typ jednostki 3}},..., {{Code|typ jednostki i}} - typy jednostek, którym odpowiadają pewne przestrzenie przedmiotowe, dla pozycji bazowej, numerkowej i ogólnej. Parametry ramki tablicy transportu dziecka: * Parametry dziecka są takie same jak rodzica dla funkcji pudełkowej plus tu wymienione, * {{Code|numer jednostki}} - jak parametr {{Code|i}} nie został ustawiony, to wtedy liczy się ta zmienna. Przykłady: <syntaxhighlight lang="mediawiki"> {{Nazwa szablonu|nazwa przestrzeni nazw=Dyskusja Wikibooks|nazwa przestrzeni nazw 2=Dyskusja szablonu|nazwa przestrzeni nazw i=Dyskusja modułu}} </syntaxhighlight> W dziecku powiedzmy jest wywołanie, i szukamy nazwy przestrzeni nazw o numerze dwa, która nie została podana, ale istnieje za to jej wersji ogólna {{Code|nazwa przestrzeni nazw i}} i domyślna {{Code|nazwa przestrzeni nazw}}: <syntaxhighlight lang="mediawiki"> {{#invoke:Pudełko|Nazwa przedmiotowej przestrzeni nazw|numer jednostki=1}} </syntaxhighlight> Na podstawie powyższego przykładu otrzymamy wynik o schemacie, nie wyniku, bo tam nie ma zmiennej {{Code|nazwa przestrzeni nazw 1}}, ale jest {{Code|nazwa przestrzeni nazw i}}: <syntaxhighlight lang="mediawiki"> <!-- Ale nie "nazwa przestrzeni nazw", bo jej nie ma, ale za to istnieje "nazwa przestrzeni nazw i"; --> <!-- nazwa przestrzeni nazw 2=nazwa przestrzeni nazw i=Dyskusja modułu; --> <!-- Czyli wynik: --> Moduł <!-- Widzimy, że wygenerowała się nazwa przestrzeni nazw, którą jest przestrzeń przedmiotowa programowa przestrzeni dyskusji "Dyskusja modułu", którą również jest "Szablon" jego przestrzeni dyskusji "Dyskusja szablonu", a dla ich przestrzeni przedmiotowej, zamiast dyskusji, to samo przekształca się na to samo; --> </syntaxhighlight> Nie jest brana w tym powyższym przykładzie zmienna {{Code|nazwa przestrzeni nazw}}, bo jej nie ma, ale za to jest {{Code|nazwa przestrzeni nazw i}}, bo ona występuje jako parametr domyślny ogólny dla parametrów numerkowych. Przykłady w wikikodzie: * {{Code|{{m|Pudełko|Nazwa przedmiotowej przestrzeni nazw|numer jednostki{{=}}2}}}} → {{Tt|{{#invoke:Pudełko|Nazwa przedmiotowej przestrzeni nazw|numer jednostki=2}}}} * {{Code|{{m|Pudełko|Nazwa przedmiotowej przestrzeni nazw|Dyskusja szablonu|nazwa przestrzeni nazw i{{=}}Moja przestrzeń|numer jednostki{{=}}2}}}} → {{Tt|{{#invoke:Pudełko|Nazwa przedmiotowej przestrzeni nazw|Dyskusja szablonu|nazwa przestrzeni nazw i=Moja przestrzeń|numer jednostki=2}}}} * {{Code|{{m|Pudełko|Nazwa przedmiotowej przestrzeni nazw|nazwa przestrzeni nazw 2{{=}}Dyskusja szablonu|numer jednostki{{=}}2}}}} → {{Tt|{{#invoke:Pudełko|Nazwa przedmiotowej przestrzeni nazw|nazwa przestrzeni nazw 2=Dyskusja szablonu|numer jednostki=2}}}} * {{Code|{{m|Pudełko|Nazwa przedmiotowej przestrzeni nazw|nazwa przestrzeni nazw 2{{=}}Dyskusja szablonu|numer jednostki{{=}}2}}}} → {{Tt|{{#invoke:Pudełko|Nazwa przedmiotowej przestrzeni nazw|nazwa przestrzeni nazw i=Dyskusja szablonu|numer jednostki=2}}}} * {{Code|{{m|Pudełko|Nazwa przedmiotowej przestrzeni nazw|nazwa przestrzeni nazw{{=}}Dyskusja szablonu|numer jednostki{{=}}2}}}} → {{Tt|{{#invoke:Pudełko|Nazwa przedmiotowej przestrzeni nazw|nazwa przestrzeni nazw=Dyskusja szablonu|numer jednostki=2}}}} Powyżej dla przykładu podano parametry nie w rodzicu w szablonie, tylko w dziecku, jeśli chodzi o parametry nazw przestrzeni nazw, ale ich się za to nie powinno podawać w tych ramach, tylko w szablonach, w których wywoływane są te ramki pudełek {{Code|{{m|Pudełko}}}}, ale tak tutaj tak zrobiono by było najłatwiej sprawdzić działanie tego typu funkcji. Analogicznie możemy podawać parametry typu jednostki, np.: wywołaniu modułowym {{Code|{{m|Pudełko|Nazwa przedmiotowej przestrzeni nazw|typ jednostki 2{{=}}strona szablonu|numer jednostki{{=}}2}}}}, ale o tym więcej w rozdziałach {{Code|{{sr|# p["Przedmiotowy typ jednostki"](frame,i)|p=Pudełko}}}} w „{{sr|#Funkcje typu jednostki|p=Pudełko}}”, ale wtedy ta sama nazwa przestrzeni nazw reprezentowana przez {{Parametr|typ jednostki 2|strona szablonu}}, jest zamieniana na to samo, lepiej jest tutaj używać parametrów przestrzennych nazw niż typu jednostki, bo typ jednostki ma taką samą wartość dla przestrzeni przedmiotowej, co dyskusji. Tutaj parametr dyskusji typu jednostki bazowy i numerkowy ogólny, czy szczegółowy, nie gra roli, bo nawet, gdy wygenerujemy nazwę przestrzeni dyskusji za pomoca tego parametru, to i tak otrzymamy na samym końcu jego nazwę przedmiotową. Również parametry typu jednostki nie powinno się podawać w dziecku w ramce, tylko w rodzicu w szablonie jako parametry, w którym ta ramka jest wywoływana, ale tutaj podano jedynie dla przykładu, jak najłatwiej sprawdzić działanie tych parametrów tej funkcji. Najpierw w funkcji nagłówku brane są parametry nazw przestrzeni nazw, a jeżeli ich nie ma, to parametry typu jednostki, a jeżeli nie ma, to generowane są nazwy na podstawie aktualnego modułu. === {{Code|p["Nazwa przestrzeni nazw dyskusji"](frame,...)}} === Funkcja pisze nazwę przestrzeni nazw dyskusji jakikolwiek nazwy przestrzeni nazw (tzn. nazwę przedmiotową nazwy przestrzenie nazw, czyli nie dyskusji, zamieniana jest na dyskusji, czyli identyfikator przestrzeni się zmienia jeden wyżej, a dyskusji, nie przedmiotową, przekształca się na tą samą), według podanej w zmiennej {{Code|nazwa przestrzeni nazw}} dla pozycja bazowej w podanych parametrach szablonu rodzicu ramki dziecka, lub dla innej pozycji należy parametr podawać w formie {{Code|nazwa przestrzeni nazw 1}}, {{Code|nazwa przestrzeni nazw 2}}, {{Code|nazwa przestrzeni nazw 3}},..., lub te parametry można podać w postaci ogólnej {{Code|nazwa przestrzeni nazw i}}. Parametry podaje się w parametrach rodzica wywołania tej funkcji {{Code|{{m|Pudełko|Nazwa przestrzeni nazw dyskusji}}}} (ale ich nie trzeba podawać w dziecku, ale można) i w parametrach dziecka, jeśli chodzi o zmienną {{Code|numer jednostki}}, czyli np.: {{Code|{{m|Pudełko|Nazwa przestrzeni nazw dyskusji|numer jednostki{{=}}<jakaś liczba całkowita dodatnia>}}}}. Te parametry przestrzenne zamiast w rodzicu w szablonie można podać w ramce dziecka, wtedy parametry dziecka mają pierwszeństwo. Parametry przestrzenne mogą mogą być podane w postaci przestrzeni przedmiotowej lub dyskusji, ale ta funkcja zawsze ją zamienia na dyskusji. Przestrzeń nazw z parametrów nazw przestrzennych może odpowiadać wartości przestrzeni głównej, to wtedy odpowiednia przestrzeń nazw z parametru nazwy jednostki się nie liczy w tej funkcji, aby się liczyła należy użyć funkcji {{Code|{{sr|#p["Nazwa przestrzeni nazw dyskusji 2"](frame,...)|p=Pudełko}}}}. Definicja skrótowa funkcji: <syntaxhighlight lang="lua"> p["Nazwa przestrzeni nazw dyskusji"]=function(frame,czy_uwzglednic_alternatywna_nazwe,i)...end; </syntaxhighlight> Wtedy ciało funkcji tej, czyli jego definicja w środku, jest: <syntaxhighlight lang="lua"> -- Jest liczony numer parametru nazwy przestrzeni nazw, domyslnie chodzi tu o numer bazowy parametrów przestrzennych; local numer_jednostki=i or frame.args["numer jednostki"]; local liczba_numer_jednostki=((numer_jednostki)and(tonumber(numer_jednostki))or 0); local pudelko_pomocne_modul=require("Module:Pudełko/Pomocne"); -- Liczy nazwę przestrzeni nazw dyskusji na podstawie podanych parametrów; return pudelko_pomocne_modul.Nazwa_przestrzeni_nazw(frame,2, czy_uwzglednic_alternatywna_nazwe,liczba_numer_jednostki); </syntaxhighlight> Parametry funkcji: * {{Code|frame}} - tablica ramki tablicy transportu, * {{Code|czy_uwzglednic_alternatywna_nazwe}} - czy ma uwzględniać nazwę przestrzeni nazw domyślną szablonu, dostępne wartości: {{Code|false}}, w której nazwa domyślna nie jest uwzględniana wtedy, oraz {{Code|nil}} i {{Code|true}}, które oznaczają to samo, w tym jeżeli ona jest uwzględniana, wtedy jest brany parametr pierwszy dziecka, który musi istnieć przy takiej wartości tego parametru, tzn. {{Code|{{m|Pudełko|Nazwa przestrzeni nazw dyskusji|Szablon}}}} - ta nazwa domyślna zostanie przekształcona na dyskusji, a jeżeli ona by była dyskusji, to nie byłoby żadnego przekształcenia, a jeśli nazwa uzyskana nazwy przestrzeni nazw z parametrów przestrzennych jest w takim przypadku błędna, to w takim razie brany jest ten parametr, a jeżeli nazwa domyślna jest błędna, czyli {{Code|{{m|Pudełko|Nazwa przestrzeni nazw dyskusji|Moja przestrzeń}}}}, wtedy funkcja zwraca stan błędu {{Code|(błąd)}}. * {{Code|i}} - numer zmiennej nazwy przestrzeni nazw. Funkcja wykorzystuje {{Code|{{sr|#p.Nazwa_przestrzeni_nazw(frame,...)|p=Pudełko/Pomocne}}}} do wyznaczania ogólnego nazwy przestrzeni nazw dla pozycji bazowej i numerkowej, tzn. dla pozycji: jeden, dwa, trzy,..., itd, i ich ogólnej. Parametr ramki tablicy transportu rodzica szablonu: * {{Code|nazwa przestrzeni nazw}}, {{Code|nazwa przestrzeni nazw 1}}, {{Code|nazwa przestrzeni nazw 2}}, {{Code|nazwa przestrzeni nazw 3}},..., {{Code|nazwa przestrzeni nazw i}} - nazwy przestrzeni nazw dla pozycji bazowej oraz zwykłej i ogólnej numerkowej, * {{Code|typ jednostki}}, {{Code|typ jednostki 1}}, {{Code|typ jednostki 2}}, {{Code|typ jednostki 3}},..., {{Code|typ jednostki i}} - typy jednostek, którym odpowiadają pewne przestrzenie przedmiotowe, dla pozycji bazowej, numerkowej i ogólnej. Parametry ramki tablicy transportu dziecka: * Parametry dziecka są takie same jak rodzica dla funkcji pudełkowej plus tu wymienione, * {{Code|numer jednostki}} - jak parametr {{Code|i}} nie został ustawiony, to wtedy liczy się ta zmienna. Przykłady: <syntaxhighlight lang="mediawiki"> {{Nazwa szablonu|nazwa przestrzeni nazw=Wikibooks|nazwa przestrzeni nazw 2=Szablon|nazwa przestrzeni nazw i=Moduł}} </syntaxhighlight> W dziecku powiedzmy jest wywołanie, i szukamy nazwy przestrzeni nazw o numerze dwa, która nie została podana, ale istnieje za to jej wersji ogólna {{Code|nazwa przestrzeni nazw i}} i domyślna {{Code|nazwa przestrzeni nazw}}: <syntaxhighlight lang="mediawiki"> {{#invoke:Pudełko|Nazwa przestrzeni nazw dyskusji|numer jednostki=1}} </syntaxhighlight> Na podstawie powyższego przykładu otrzymamy wynik o schemacie, nie wyniku, bo tam nie ma zmiennej {{Code|nazwa przestrzeni nazw 1}}, ale jest {{Code|nazwa przestrzeni nazw i}}: <syntaxhighlight lang="mediawiki"> <!-- Ale nie "nazwa przestrzeni nazw", bo jej nie ma, ale za to istnieje "nazwa przestrzeni nazw i"; --> <!-- nazwa przestrzeni nazw 2=nazwa przestrzeni nazw i=Moduł; --> <!-- Czyli wynik: --> Dyskusja modułu <!-- Widzimy, że wygenerowała się nazwa przestrzeni nazw, którą jest przestrzeń dyskusji przestrzeni programowej przestrzeni przedmiotowej "Moduł", którą również jest "Szablon" jego przestrzeni dyskusji "Dyskusja szablonu", a dla ich przestrzeni przedmiotowej, zamiast dyskusji, to przekształca się na dyskusji jej odpowiadającą; --> </syntaxhighlight> Nie jest brana w tym powyższym przykładzie zmienna {{Code|nazwa przestrzeni nazw}}, bo jej nie ma, ale za to jest {{Code|nazwa przestrzeni nazw i}}, bo ona występuje jako parametr domyślny ogólny dla parametrów numerkowych. Przykłady w wikikodzie: * {{Code|{{m|Pudełko|Nazwa przestrzeni nazw dyskusji|numer jednostki{{=}}2}}}} → {{Tt|{{#invoke:Pudełko|Nazwa przestrzeni nazw dyskusji|numer jednostki=2}}}} * {{Code|{{m|Pudełko|Nazwa przestrzeni nazw dyskusji|Szablon|nazwa przestrzeni nazw i{{=}}Moja przestrzeń|numer jednostki{{=}}2}}}} → {{Tt|{{#invoke:Pudełko|Nazwa przestrzeni nazw dyskusji|Szablon|nazwa przestrzeni nazw i=Moja przestrzeń|numer jednostki=2}}}} * {{Code|{{m|Pudełko|Nazwa przestrzeni nazw dyskusji|nazwa przestrzeni nazw 2{{=}}Szablon|numer jednostki{{=}}2}}}} → {{Tt|{{#invoke:Pudełko|Nazwa przestrzeni nazw dyskusji|nazwa przestrzeni nazw 2=Szablon|numer jednostki=2}}}} * {{Code|{{m|Pudełko|Nazwa przestrzeni nazw dyskusji|nazwa przestrzeni nazw 2{{=}}Szablon|numer jednostki{{=}}2}}}} → {{Tt|{{#invoke:Pudełko|Nazwa przestrzeni nazw dyskusji|nazwa przestrzeni nazw i=Szablon|numer jednostki=2}}}} * {{Code|{{m|Pudełko|Nazwa przestrzeni nazw dyskusji|nazwa przestrzeni nazw{{=}}Szablon|numer jednostki{{=}}2}}}} → {{Tt|{{#invoke:Pudełko|Nazwa przestrzeni nazw dyskusji|nazwa przestrzeni nazw=Szablon|numer jednostki=2}}}} Powyżej dla przykładu podano parametry nie w rodzicu w szablonie, tylko w dziecku, jeśli chodzi o parametry nazw przestrzeni nazw, ale ich się za to nie powinno podawać w tych ramach, tylko w szablonach, w których wywoływane są te ramki pudełek {{Code|{{m|Pudełko}}}}, ale tak tutaj tak zrobiono by było najłatwiej sprawdzić działanie tego typu funkcji. Analogicznie możemy podawać parametry typu jednostki, np.: wywołaniu modułowym {{Code|{{m|Pudełko|Nazwa przestrzeni nazw dyskusji|typ jednostki 2{{=}}strona szablonu|numer jednostki{{=}}2}}}}, ale o tym więcej w rozdziałach {{Code|{{sr|# p["Dyskusyjny typ jednostki"](frame,i)|p=Pudełko}}}} w „{{sr|#Funkcje typu jednostki|p=Pudełko}}”, ale wtedy nazwa przestrzeni nazw reprezentowana przez {{Parametr|typ jednostki 2|strona szablonu}}, jest zamieniana na nazwę przestrzeni nazw dyskusji. Parametr dyskusji typu jednostki bazowy lub dla danego numerka ogólny, czy szczegółowy, nie gra roli. Również parametry typu jednostki nie powinno się podawać w dziecku w ramce, tylko w rodzicu w szablonie jako parametry, w którym ta ramka jest wywoływana, ale tutaj podano jedynie dla przykładu, jak najłatwiej sprawdzić działanie tych parametrów tej funkcji. Najpierw w funkcji nagłówku brane są parametry nazw przestrzeni nazw, a jeżeli ich nie ma, to parametry typu jednostki, a jeżeli nie ma, to generowane są nazwy na podstawie aktualnego modułu. == Funkcje nazw przestrzeni nazw drugiej wersji == === {{Code|p["Nazwa przestrzeni nazw 2"](frame,...)}} === Funkcja pisze nazwę przestrzeni nazw, niezależnie, czy to jest przedmiotowa, czy dyskusji, według, i nie zawsze tylko, podanej w zmiennej {{Code|nazwa przestrzeni nazw}} dla pozycja bazowej w podanych parametrach szablonu rodzicu ramki dziecka, lub dla innej pozycji należy parametr podawać w formie {{Code|nazwa przestrzeni nazw 1}}, {{Code|nazwa przestrzeni nazw 2}}, {{Code|nazwa przestrzeni nazw 3}},..., lub te parametry można podać w postaci ogólnej {{Code|nazwa przestrzeni nazw i}}. W tej funkcji trzeba też podawać parametry nazwy jednostek {{Code|nazwa jednostki}}, {{Code|nazwa jednostki 1}}, {{Code|nazwa jednostki 2}}, {{Code|nazwa jednostki 3}},... Parametry podaje się w parametrach rodzica wywołania tej funkcji {{Code|{{m|Pudełko|Nazwa przestrzeni nazw 2}}}} (ale ich nie trzeba podawać w dziecku, ale można) i w parametrach dziecka, jeśli chodzi o zmienną {{Code|numer jednostki}}, czyli np.: {{Code|{{m|Pudełko|Nazwa przestrzeni nazw 2|numer jednostki{{=}}<jakaś liczba całkowita dodatnia>}}}}. Te parametry przestrzenne zamiast w rodzicu w szablonie można podać w ramce dziecka, wtedy parametry dziecka mają pierwszeństwo. Przestrzeń nazw z parametrów nazw przestrzennych może odpowiadać wartości przestrzeni głównej, to wtedy odpowiednia przestrzeń nazw z parametru nazwy jednostki się liczy w tej funkcji, wtedy jest liczona nazwa przestrzeni nazw z tego parametru. Gdy parametry przestrzenne lub typ jednostki w drugim podejściu nie wskazują na przestrzeń główną, to wtedy działanie tej funkcji jest podobne do {{Code|{{sr|#p["Nazwa przestrzeni nazw"](frame,...)|p=Pudełko}}}}. Definicja skrótowa funkcji: <syntaxhighlight lang="lua"> p["Nazwa przestrzeni nazw 2"]=function(frame,czy_uwzglednic_alternatywna_nazwe,i)...end; </syntaxhighlight> Wtedy ciało funkcji tej, czyli jego definicja w środku, jest: <syntaxhighlight lang="lua"> local pudelko_pomocne_modul=require("Module:Pudełko/Pomocne"); -- Liczy nazwę przestrzeni nazw, jeżeli z parametrów przestrzennych przestrzeń wskazuje na główną, to wtedy jest liczona przestrzeń nazw z nazwy jednostki; return pudelko_pomocne_modul.Nazwa_przestrzeni_nazw_2(frame,czy_uwzglednic_alternatywna_nazwe,i) </syntaxhighlight> Parametry funkcji: * {{Code|frame}} - tablica ramki tablicy transportu, * {{Code|czy_uwzglednic_alternatywna_nazwe}} - czy ma uwzględniać nazwę przestrzeni nazw domyślną szablonu, dostępne wartości: {{Code|false}}, w której nazwa domyślna nie jest uwzględniana wtedy, oraz {{Code|nil}} i {{Code|true}}, które oznaczają to samo, w tym jeżeli ona jest uwzględniana, wtedy jest brany parametr pierwszy dziecka, który musi istnieć przy takiej wartości tego parametru, tzn. {{Code|{{m|Pudełko|Nazwa przestrzeni nazw 2|Szablon}}}}, a jeśli nazwa uzyskana nazwy przestrzeni nazw jest w takim przypadku błędna, a jeżeli nazwa domyślna jest błędna, czyli {{Code|{{m|Pudełko|Nazwa przestrzeni nazw 2|Moja przestrzeń}}}}, wtedy funkcja zwraca stan błędu {{Code|(błąd)}}. * {{Code|i}} - numer zmiennej nazwy przestrzeni nazw. Funkcja wykorzystuje {{Code|{{sr|#p.Nazwa_przestrzeni_nazw_2(frame,...)|p=Pudełko/Pomocne}}}} do wyznaczania ogólnego nazwy przestrzeni nazw dla pozycji bazowej i numerkowej, tzn. dla pozycji: jeden, dwa, trzy,..., itd, i ich ogólnej. Parametr ramki tablicy transportu rodzica szablonu: * {{Code|nazwa przestrzeni nazw}}, {{Code|nazwa przestrzeni nazw 1}}, {{Code|nazwa przestrzeni nazw 2}}, {{Code|nazwa przestrzeni nazw 3}},..., {{Code|nazwa przestrzeni nazw i}} - nazwy przestrzeni nazw dla pozycji bazowej oraz zwykłej i ogólnej numerkowej, * {{Code|nazwa jednostki}}, {{Code|nazwa jednostki 1}}, {{Code|nazwa jednostki 2}}, {{Code|nazwa jednostki 3}},... - nazwy jednostek dla pozycji bazowej i numerkowej, * {{Code|typ jednostki}}, {{Code|typ jednostki 1}}, {{Code|typ jednostki 2}}, {{Code|typ jednostki 3}},..., {{Code|typ jednostki i}} - typy jednostek, którym odpowiadają pewne przestrzenie przedmiotowe, dla pozycji bazowej, numerkowej i ogólnej, ** {{Code|dyskusja typu jednostki}}, {{Code|dyskusja typu jednostki 1}}, {{Code|dyskusja typ jednostki 2}}, {{Code|dyskusja typ jednostki 3}},..., {{Code|dyskusja typ jednostki i}} - czy dany typ jednostki ma przedstawiać, jeśli niepusta, przestrzeń dyskusji dla pozycji bazowej, numerkowej i ogólnej. Parametry ramki tablicy transportu dziecka: * Parametry dziecka są takie same jak rodzica dla funkcji pudełkowej plus tu wymienione, * {{Code|numer jednostki}} - jak parametr {{Code|i}} nie został ustawiony, to wtedy liczy się ta zmienna. Przykłady: <syntaxhighlight lang="mediawiki"> {{Nazwa szablonu|nazwa przestrzeni nazw=Wikibooks|nazwa przestrzeni nazw 1=Szablon|nazwa przestrzeni nazw i=|nazwa jednostki 2=Wikibooks:Strona}} </syntaxhighlight> W dziecku powiedzmy jest wywołanie, i szukamy nazwy przestrzeni nazw o numerze dwa, która została podana, ale istnieje za to jej wersji ogólna {{Code|nazwa przestrzeni nazw i}} i domyślna {{Code|nazwa przestrzeni nazw}}, ale wtedy dla tego numerkowego liczy się to ogólne z {{Code| i}}, a ponieważ ta nazwa jest pusta, więc będziemy liczyli nazwę przestrzeni nazw z {{Code|nazwa jednostki 2}}: <syntaxhighlight lang="mediawiki"> {{#invoke:Pudełko|Nazwa przestrzeni nazw 2|numer jednostki=2}} </syntaxhighlight> Na podstawie powyższego przykładu otrzymamy wynik o schemacie, nie wyniku, bo tam nie ma zmiennej {{Code|nazwa przestrzeni nazw 1}}, ale jest {{Code|nazwa przestrzeni nazw i}}: <syntaxhighlight lang="mediawiki"> <!-- Ale nie "nazwa przestrzeni nazw 2", bo jej nie ma, ale za to istnieje "nazwa przestrzeni nazw i"; --> <!-- nazwa przestrzeni nazw 2=nazwa przestrzeni nazw i="", a nazwa jednostki 2="Wikibooks:Strona"; --> <!-- Czyli wynik: --> Wikibooks <!-- Widzimy, że wygenerowała się nazwa przestrzeni nazw, którą jest przestrzeń nieprogramowa, ale projektu, wychodząca z nazwy jednostek w tym przypadku z "nazwa jednostki 2"; --> </syntaxhighlight> Nie jest brana w tym powyższym przykładzie zmienna {{Code|nazwa przestrzeni nazw}}, bo jej nie ma, ale za to jest {{Code|nazwa przestrzeni nazw i}}, bo ona występuje jako parametr domyślny ogólny dla parametrów numerkowych. Tytaj jest używana jest zmienna {{Code|nazwa jednostki 2}} do wygenerowania ostatecznego wyniku, bo jak można zauważyć, parametry przestrzenne wskazują na przestrzeń główną, a nazwy jednostek już nie. Przykłady w wikikodzie: * {{Code|{{m|Pudełko|Nazwa przestrzeni nazw 2|numer jednostki{{=}}2}}}} → {{Tt|{{#invoke:Pudełko|Nazwa przestrzeni nazw 2|numer jednostki=2}}}} * {{Code|{{m|Pudełko|Nazwa przestrzeni nazw 2|Szablon|nazwa przestrzeni nazw i{{=}}Moja przestrzeń|numer jednostki{{=}}2}}}} → {{Tt|{{#invoke:Pudełko|Nazwa przestrzeni nazw 2|Szablon|nazwa przestrzeni nazw i=Moja przestrzeń|numer jednostki=2}}}} * {{Code|{{m|Pudełko|Nazwa przestrzeni nazw 2|nazwa przestrzeni nazw 2{{=}}|nazwa jednostki 2{{=}}Szablon:Strona|numer jednostki{{=}}2}}}} → {{Tt|{{#invoke:Pudełko|Nazwa przestrzeni nazw 2|nazwa przestrzeni nazw 2=|nazwa jednostki 2=Szablon:Strona|numer jednostki=2}}}} * {{Code|{{m|Pudełko|Nazwa przestrzeni nazw 2|nazwa przestrzeni nazw i{{=}}|nazwa jednostki 2{{=}}Szablon:Strona|numer jednostki{{=}}2}}}} → {{Tt|{{#invoke:Pudełko|Nazwa przestrzeni nazw 2|nazwa przestrzeni nazw i=|nazwa jednostki 2=Szablon:Strona|numer jednostki=2}}}} * {{Code|{{m|Pudełko|Nazwa przestrzeni nazw 2|Szablon|nazwa przestrzeni nazw{{=}}|nazwa jednostki 2{{=}}Wikibooks:Strona|numer jednostki{{=}}2}}}} → {{Tt|{{#invoke:Pudełko|Nazwa przestrzeni nazw 2|Szablon|nazwa przestrzeni nazw=|nazwa jednostki 2=Wikibooks:Strona|numer jednostki=2}}}} Powyżej dla przykładu podano parametry nie w rodzicu w szablonie, tylko w dziecku, jeśli chodzi o parametry nazw przestrzeni nazw i nazw jednostek, ale ich się za to nie powinno podawać w tych ramach, tylko w szablonach, w których wywoływane są te ramki pudełek {{Code|{{m|Pudełko}}}}, ale tak tutaj tak zrobiono by było najłatwiej sprawdzić działanie tego typu funkcji. Analogicznie możemy podawać parametry typu jednostki, np.: wywołaniu modułowym {{Code|{{m|Pudełko|Nazwa przestrzeni nazw 2|typ jednostki 2{{=}}Podręcznik|nazwa jednostki 2{{=}}Szablon:Strona|numer jednostki{{=}}2}}}} (ale wtedy jest brana przestrzeń nazw z nazwy jednostki), ale o tym więcej w rozdziałach {{Code|{{sr|#p["Typ jednostki 2"](frame,i)|p=Pudełko}}}} w „{{sr|#Funkcje typu jednostki|p=Pudełko}}”, on definiuje przestrzenie przedmiotowe, ale można użyć parametru dyskusji typu jednostki z wartością niepustą, wtedy wyświetli się nazwa przestrzeni nazw dyskusji. Jeżeli typ jednostki wskazuje na przestrzeń nazw główną, wtedy się liczą parametry nazw jednostek. Również parametry typu jednostki nie powinno się podawać w dziecku w ramce, tylko w rodzicu w szablonie jako parametry, w którym ta ramka jest wywoływana, ale tutaj podano jedynie dla przykładu, jak najłatwiej sprawdzić działanie tych parametrów tej funkcji. Najpierw w funkcji nagłówku brane są parametry nazw przestrzeni nazw, a jeżeli ich nie ma, to parametry typu jednostki, a jeżeli nie ma lub parametry przestrzenne wskazują na przestrzeń główną, i nie ma nazwy jednostki, to generowane są nazwy tej funkcji na podstawie aktualnej strony. === {{Code|p["Nazwa przedmiotowej przestrzeni nazw 2"](frame,...)}} === Funkcja pisze przedmiotową nazwę przestrzeni nazw jakikolwiek nazwy przestrzeni nazw (tzn. nazwę przedmiotową nazwy przestrzenie nazw, czyli nie dyskusji, zamieniana jest na nią samą, czyli identyfikator przestrzeni się nie zmienia, a dyskusji, nie przedmiotową, przekształca się na przedmiotową jej odpowiadającą, czyli w tym przypadku identyfikator przestrzeni zmniejsza się o numer mniej), według, i nie zawsze tylko, podanej w zmiennej {{Code|nazwa przestrzeni nazw}} dla pozycja bazowej w podanych parametrach szablonu rodzicu ramki dziecka, lub dla innej pozycji należy parametr podawać w formie {{Code|nazwa przestrzeni nazw 1}}, {{Code|nazwa przestrzeni nazw 2}}, {{Code|nazwa przestrzeni nazw 3}},..., lub te parametry można podać w postaci ogólnej {{Code|nazwa przestrzeni nazw i}}. W tej funkcji trzeba też podawać parametry nazwy jednostek {{Code|nazwa jednostki}}, {{Code|nazwa jednostki 1}}, {{Code|nazwa jednostki 2}}, {{Code|nazwa jednostki 3}},... Parametry podaje się w parametrach rodzica wywołania tej funkcji {{Code|{{m|Pudełko|Nazwa przedmiotowej przestrzeni nazw 2}}}} (ale ich nie trzeba podawać w dziecku, ale można) i w parametrach dziecka, jeśli chodzi o zmienną {{Code|numer jednostki}}, czyli np.: {{Code|{{m|Pudełko|Nazwa przedmiotowej przestrzeni nazw 2|numer jednostki{{=}}<jakaś liczba całkowita dodatnia>}}}}. Te parametry przestrzenne zamiast w rodzicu w szablonie można podać w ramce dziecka, wtedy parametry dziecka mają pierwszeństwo. Przestrzeń nazw z parametrów nazw przestrzennych po przekształceniu na przedmiotową może odpowiadać wartości przestrzeni głównej, to wtedy odpowiednia przestrzeń nazw z parametru nazwy jednostki się liczy w tej funkcji, wtedy jest liczona nazwa przestrzeni nazw z tego parametru. Gdy parametry przestrzenne lub typ jednostki w drugim podejściu nie wskazują na przestrzeń główną, to wtedy działanie tej funkcji jest podobne do {{Code|{{sr|#p["Nazwa przedmiotowej przestrzeni nazw"](frame,...)|p=Pudełko}}}}. Definicja skrótowa funkcji: <syntaxhighlight lang="lua"> p["Nazwa przedmiotowej przestrzeni nazw 2"]=function(frame,czy_uwzglednic_alternatywna_nazwe,i)...end; </syntaxhighlight> Wtedy ciało funkcji tej, czyli jego definicja w środku, jest: <syntaxhighlight lang="lua"> local pudelko_pomocne_modul=require("Module:Pudełko/Pomocne"); return pudelko_pomocne_modul.Nazwa_przestrzeni_nazw_przedmiotowa_dyskusji_2(frame,czy_uwzglednic_alternatywna_nazwe,i,"przedmiotowa"); </syntaxhighlight> Parametry funkcji: * {{Code|frame}} - tablica ramki tablicy transportu, * {{Code|czy_uwzglednic_alternatywna_nazwe}} - czy ma uwzględniać nazwę przestrzeni nazw domyślną szablonu, dostępne wartości: {{Code|false}}, w której nazwa domyślna nie jest uwzględniana wtedy, oraz {{Code|nil}} i {{Code|true}}, które oznaczają to samo, w tym jeżeli ona jest uwzględniana, wtedy jest brany parametr pierwszy dziecka, który musi istnieć przy takiej wartości tego parametru, tzn. {{Code|{{m|Pudełko|Nazwa przedmiotowej przestrzeni nazw 2|Szablon}}}}, nazwa domyślna zostanie zamieniona na przedmiotową, a jeżeli jest już taka, to żadnej zamiany nie ma, a jeśli nazwa uzyskana nazwy przestrzeni nazw jest w takim przypadku błędna, a jeżeli nazwa domyślna jest błędna, czyli {{Code|{{m|Pudełko|Nazwa przedmiotowej przestrzeni nazw 2|Moja przestrzeń}}}}, wtedy funkcja zwraca stan błędu {{Code|(błąd)}}. * {{Code|i}} - numer zmiennej nazwy przestrzeni nazw. Funkcja wykorzystuje {{Code|{{sr|#p.Nazwa_przestrzeni_nazw_przedmiotowa_dyskusji_2(frame,...)|p=Pudełko/Pomocne}}}} do wyznaczania ogólnego nazwy przestrzeni nazw dla pozycji bazowej i numerkowej, tzn. dla pozycji: jeden, dwa, trzy,..., itd, i ich ogólnej. Parametr ramki tablicy transportu rodzica szablonu: * {{Code|nazwa przestrzeni nazw}}, {{Code|nazwa przestrzeni nazw 1}}, {{Code|nazwa przestrzeni nazw 2}}, {{Code|nazwa przestrzeni nazw 3}},..., {{Code|nazwa przestrzeni nazw i}} - nazwy przestrzeni nazw dla pozycji bazowej oraz zwykłej i ogólnej numerkowej, * {{Code|nazwa jednostki}}, {{Code|nazwa jednostki 1}}, {{Code|nazwa jednostki 2}}, {{Code|nazwa jednostki 3}},... - nazwy jednostek dla pozycji bazowej i numerkowej, * {{Code|typ jednostki}}, {{Code|typ jednostki 1}}, {{Code|typ jednostki 2}}, {{Code|typ jednostki 3}},..., {{Code|typ jednostki i}} - typy jednostek, którym odpowiadają pewne przestrzenie przedmiotowe, dla pozycji bazowej, numerkowej i ogólnej. Parametry ramki tablicy transportu dziecka: * Parametry dziecka są takie same jak rodzica dla funkcji pudełkowej plus tu wymienione, * {{Code|numer jednostki}} - jak parametr {{Code|i}} nie został ustawiony, to wtedy liczy się ta zmienna. Przykłady: <syntaxhighlight lang="mediawiki"> {{Nazwa szablonu|nazwa przestrzeni nazw=Wikibooks|nazwa przestrzeni nazw 1=Szablon|nazwa przestrzeni nazw i=|nazwa jednostki 2=Dyskusja Wikibooks:Strona}} </syntaxhighlight> W dziecku powiedzmy jest wywołanie, i szukamy nazwy przestrzeni nazw o numerze dwa, która została podana, ale istnieje za to jej wersji ogólna {{Code|nazwa przestrzeni nazw i}} i domyślna {{Code|nazwa przestrzeni nazw}}, ale wtedy dla tego numerkowego liczy się to ogólne z {{Code| i}}, a ponieważ ta nazwa jest pusta, więc będziemy liczyli nazwę przestrzeni nazw z {{Code|nazwa jednostki 2}}: <syntaxhighlight lang="mediawiki"> {{#invoke:Pudełko|Nazwa przedmiotowej przestrzeni nazw 2|numer jednostki=2}} </syntaxhighlight> Na podstawie powyższego przykładu otrzymamy wynik o schemacie, nie wyniku, bo tam nie ma zmiennej {{Code|nazwa przestrzeni nazw 1}}, ale jest {{Code|nazwa przestrzeni nazw i}}: <syntaxhighlight lang="mediawiki"> <!-- Ale nie "nazwa przestrzeni nazw 2", bo jej nie ma, ale za to istnieje "nazwa przestrzeni nazw i"; --> <!-- nazwa przestrzeni nazw 2=nazwa przestrzeni nazw i="", a nazwa jednostki 2="Dyskusja Wikibooks:Strona"; --> <!-- Czyli wynik: --> Wikibooks <!-- Widzimy, że wygenerowała się nazwa przestrzeni nazw, którą jest przestrzeń nieprogramowa, ale projektu, wychodząca z nazwy jednostek w tym przypadku z "nazwa jednostki 2"; --> </syntaxhighlight> Nie jest brana w tym powyższym przykładzie zmienna {{Code|nazwa przestrzeni nazw}}, bo jej nie ma, ale za to jest {{Code|nazwa przestrzeni nazw i}}, bo ona występuje jako parametr domyślny ogólny dla parametrów numerkowych. Tytaj jest używana jest zmienna {{Code|nazwa jednostki 2}} do wygenerowania ostatecznego wyniku, bo jak można zauważyć, parametry przestrzenne wskazują na przestrzeń główną, a nazwy jednostek już nie. Przykłady w wikikodzie: * {{Code|{{m|Pudełko|Nazwa przedmiotowej przestrzeni nazw 2|numer jednostki{{=}}2}}}} → {{Tt|{{#invoke:Pudełko|Nazwa przedmiotowej przestrzeni nazw 2|numer jednostki=2}}}} * {{Code|{{m|Pudełko|Nazwa przedmiotowej przestrzeni nazw 2|Dyskusja szablonu|nazwa przestrzeni nazw i{{=}}Moja przestrzeń|numer jednostki{{=}}2}}}} → {{Tt|{{#invoke:Pudełko|Nazwa przedmiotowej przestrzeni nazw 2|Dyskusja szablonu|nazwa przestrzeni nazw i=Moja przestrzeń|numer jednostki=2}}}} * {{Code|{{m|Pudełko|Nazwa przedmiotowej przestrzeni nazw 2|nazwa przestrzeni nazw 2{{=}}Dyskusja|nazwa jednostki 2{{=}}Dyskusja szablonu:Strona|numer jednostki{{=}}2}}}} → {{Tt|{{#invoke:Pudełko|Nazwa przedmiotowej przestrzeni nazw 2|nazwa przestrzeni nazw 2=Dyskusja|nazwa jednostki 2=Dyskusja szablonu:Strona|numer jednostki=2}}}} * {{Code|{{m|Pudełko|Nazwa przedmiotowej przestrzeni nazw 2|nazwa przestrzeni nazw i{{=}}Dyskusja|nazwa jednostki 2{{=}}Dyskusja szablonu:Strona|numer jednostki{{=}}2}}}} → {{Tt|{{#invoke:Pudełko|Nazwa przedmiotowej przestrzeni nazw 2|nazwa przestrzeni nazw i=Dyskusja|nazwa jednostki 2=Dyskusja szablonu:Strona|numer jednostki=2}}}} * {{Code|{{m|Pudełko|Nazwa przedmiotowej przestrzeni nazw 2|Dyskusja szablonu|nazwa przestrzeni nazw{{=}}Dyskusja|nazwa jednostki 2{{=}}Wikibooks:Strona|numer jednostki{{=}}2}}}} → {{Tt|{{#invoke:Pudełko|Nazwa przedmiotowej przestrzeni nazw 2|Dyskusja szablonu|nazwa przestrzeni nazw=Dyskusja|nazwa jednostki 2=Dyskusja Wikibooks:Strona|numer jednostki=2}}}} Powyżej dla przykładu podano parametry nie w rodzicu w szablonie, tylko w dziecku, jeśli chodzi o parametry nazw przestrzeni nazw i nazw jednostek, ale ich się za to nie powinno podawać w tych ramach, tylko w szablonach, w których wywoływane są te ramki pudełek {{Code|{{m|Pudełko}}}}, ale tak tutaj tak zrobiono by było najłatwiej sprawdzić działanie tego typu funkcji. Analogicznie możemy podawać parametry typu jednostki, np.: wywołaniu modułowym {{Code|{{m|Pudełko|Nazwa przedmiotowej przestrzeni nazw 2|typ jednostki 2{{=}}Podręcznik|nazwa jednostki 2{{=}}Dyskusja szablonu:Strona|numer jednostki{{=}}2}}}} (ale wtedy jest brana przestrzeń nazw z nazwy jednostki), ale o tym więcej w rozdziałach {{Code|{{sr|# p["Przedmiotowy typ jednostki 2"](frame,i)|p=Pudełko}}}} w „{{sr|#Funkcje typu jednostki|p=Pudełko}}”, on definiuje przestrzenie przedmiotowe, ale można użyć parametru dyskusji typu jednostki z wartością niepustą, pustą, czy nawet jej nie podamy, wtedy wyświetli się nazwa przestrzeni nazw przedmiotowej. Jeżeli typ jednostki wskazuje na przestrzeń nazw główną, wtedy się liczą parametry nazw jednostek. Również parametry typu jednostki nie powinno się podawać w dziecku w ramce, tylko w rodzicu w szablonie jako parametry, w którym ta ramka jest wywoływana, ale tutaj podano jedynie dla przykładu, jak najłatwiej sprawdzić działanie tych parametrów tej funkcji. Najpierw w funkcji nagłówku brane są parametry nazw przestrzeni nazw, a jeżeli ich nie ma, to parametry typu jednostki, a jeżeli nie ma lub parametry przestrzenne wskazują na przestrzeń główną, i nie ma nazwy jednostki, to generowane są nazwy tej funkcji na podstawie aktualnej strony. === {{Code|p["Nazwa przestrzeni nazw dyskusji 2"](frame,...)}} === Funkcja pisze nazwę przestrzeni nazw dyskusji jakikolwiek nazwy przestrzeni nazw (tzn. nazwę dyskusji nazwy przestrzenie nazw, czyli nie przedmiotowej, zamieniana jest na nią samą, czyli identyfikator przestrzeni się nie zmienia, a przedmiotową, nie dyskusji, przekształca się na dyskusji jej odpowiadającą, czyli w tym przypadku identyfikator przestrzeni zwiększa się o numer więcej), według, i nie zawsze tylko, podanej w zmiennej {{Code|nazwa przestrzeni nazw}} dla pozycja bazowej w podanych parametrach szablonu rodzicu ramki dziecka, lub dla innej pozycji należy parametr podawać w formie {{Code|nazwa przestrzeni nazw 1}}, {{Code|nazwa przestrzeni nazw 2}}, {{Code|nazwa przestrzeni nazw 3}},..., lub te parametry można podać w postaci ogólnej {{Code|nazwa przestrzeni nazw i}}. W tej funkcji trzeba też podawać parametry nazwy jednostek {{Code|nazwa jednostki}}, {{Code|nazwa jednostki 1}}, {{Code|nazwa jednostki 2}}, {{Code|nazwa jednostki 3}},... Parametry podaje się w parametrach rodzica wywołania tej funkcji {{Code|{{m|Pudełko|Nazwa przestrzeni nazw dyskusji 2}}}} (ale ich nie trzeba podawać w dziecku, ale można) i w parametrach dziecka, jeśli chodzi o zmienną {{Code|numer jednostki}}, czyli np.: {{Code|{{m|Pudełko|Nazwa przestrzeni nazw dyskusji 2|numer jednostki{{=}}<jakaś liczba całkowita dodatnia>}}}}. Te parametry przestrzenne zamiast w rodzicu w szablonie można podać w ramce dziecka, wtedy parametry dziecka mają pierwszeństwo. Przestrzeń nazw z parametrów nazw przestrzennych po przekształceniu może odpowiadać wartości przestrzeni głównej, to wtedy odpowiednia przestrzeń nazw z parametru nazwy jednostki się liczy w tej funkcji, wtedy jest liczona nazwa przestrzeni nazw dyskusji z tego parametru. Gdy parametry przestrzenne lub typ jednostki w drugim podejściu nie wskazują na przestrzeń główną, to wtedy działanie tej funkcji jest podobne do {{Code|{{sr|#p["Nazwa dyskusji przestrzeni nazw"](frame,...)|p=Pudełko}}}}. Definicja skrótowa funkcji: <syntaxhighlight lang="lua"> p["Nazwa przestrzeni nazw dyskusji 2"]=function(frame,czy_uwzglednic_alternatywna_nazwe,i)...end; </syntaxhighlight> Wtedy ciało funkcji tej, czyli jego definicja w środku, jest: <syntaxhighlight lang="lua"> local pudelko_pomocne_modul=require("Module:Pudełko/Pomocne"); return pudelko_pomocne_modul.Nazwa_przestrzeni_nazw_przedmiotowa_dyskusji_2(frame,czy_uwzglednic_alternatywna_nazwe,i,"dyskusja"); </syntaxhighlight> Parametry funkcji: * {{Code|frame}} - tablica ramki tablicy transportu, * {{Code|czy_uwzglednic_alternatywna_nazwe}} - czy ma uwzględniać nazwę przestrzeni nazw domyślną szablonu, dostępne wartości: {{Code|false}}, w której nazwa domyślna nie jest uwzględniana wtedy, oraz {{Code|nil}} i {{Code|true}}, które oznaczają to samo, w tym jeżeli ona jest uwzględniana, wtedy jest brany parametr pierwszy dziecka, który musi istnieć przy takiej wartości tego parametru, tzn. {{Code|{{m|Pudełko|Nazwa przestrzeni nazw dyskusji 2|Szablon}}}}, nazwa domyślna zostanie zamieniona na dyskusji, a jeżeli jest już taka, to nie ma takiej zamiany, a jeśli nazwa uzyskana nazwy przestrzeni nazw jest w takim przypadku błędna, a jeżeli nazwa domyślna jest błędna, czyli {{Code|{{m|Pudełko|Nazwa przestrzeni nazw dyskusji 2|Moja przestrzeń}}}}, wtedy funkcja zwraca stan błędu {{Code|(błąd)}}. * {{Code|i}} - numer zmiennej nazwy przestrzeni nazw. Funkcja wykorzystuje {{Code|{{sr|#p.Nazwa_przestrzeni_nazw_przedmiotowa_dyskusji_2(frame,...)|p=Pudełko/Pomocne}}}} do wyznaczania ogólnego nazwy przestrzeni nazw dla pozycji bazowej i numerkowej, tzn. dla pozycji: jeden, dwa, trzy,..., itd, i ich ogólnej. Parametr ramki tablicy transportu rodzica szablonu: * {{Code|nazwa przestrzeni nazw}}, {{Code|nazwa przestrzeni nazw 1}}, {{Code|nazwa przestrzeni nazw 2}}, {{Code|nazwa przestrzeni nazw 3}},..., {{Code|nazwa przestrzeni nazw i}} - nazwy przestrzeni nazw dla pozycji bazowej oraz zwykłej i ogólnej numerkowej, * {{Code|nazwa jednostki}}, {{Code|nazwa jednostki 1}}, {{Code|nazwa jednostki 2}}, {{Code|nazwa jednostki 3}},... - nazwy jednostek dla pozycji bazowej i numerkowej, * {{Code|typ jednostki}}, {{Code|typ jednostki 1}}, {{Code|typ jednostki 2}}, {{Code|typ jednostki 3}},..., {{Code|typ jednostki i}} - typy jednostek, którym odpowiadają pewne przestrzenie przedmiotowe, dla pozycji bazowej, numerkowej i ogólnej. Parametry ramki tablicy transportu dziecka: * Parametry dziecka są takie same jak rodzica dla funkcji pudełkowej plus tu wymienione, * {{Code|numer jednostki}} - jak parametr {{Code|i}} nie został ustawiony, to wtedy liczy się ta zmienna. Przykłady: <syntaxhighlight lang="mediawiki"> {{Nazwa szablonu|nazwa przestrzeni nazw=Wikibooks|nazwa przestrzeni nazw 1=Szablon|nazwa przestrzeni nazw i=|nazwa jednostki 2=Wikibooks:Strona}} </syntaxhighlight> W dziecku powiedzmy jest wywołanie, i szukamy nazwy przestrzeni nazw o numerze dwa, która została podana, ale istnieje za to jej wersji ogólna {{Code|nazwa przestrzeni nazw i}} i domyślna {{Code|nazwa przestrzeni nazw}}, ale wtedy dla tego numerkowego liczy się to ogólne z {{Code| i}}, a ponieważ ta nazwa jest pusta, więc będziemy liczyli nazwę przestrzeni nazw z {{Code|nazwa jednostki 2}}: <syntaxhighlight lang="mediawiki"> {{#invoke:Pudełko|Nazwa przestrzeni nazw dyskusji 2|numer jednostki=2}} </syntaxhighlight> Na podstawie powyższego przykładu otrzymamy wynik o schemacie, nie wyniku, bo tam nie ma zmiennej {{Code|nazwa przestrzeni nazw 1}}, ale jest {{Code|nazwa przestrzeni nazw i}}: <syntaxhighlight lang="mediawiki"> <!-- Ale nie "nazwa przestrzeni nazw 2", bo jej nie ma, ale za to istnieje "nazwa przestrzeni nazw i"; --> <!-- nazwa przestrzeni nazw 2=nazwa przestrzeni nazw i="", a nazwa jednostki 2="Wikibooks:Strona"; --> <!-- Czyli wynik: --> Dyskusja Wikibooks <!-- Widzimy, że wygenerowała się nazwa przestrzeni nazw, którą jest przestrzeń nieprogramowa, ale dyskusji projektu, wychodząca z nazwy jednostek w tym przypadku z "nazwa jednostki 2"; --> </syntaxhighlight> Nie jest brana w tym powyższym przykładzie zmienna {{Code|nazwa przestrzeni nazw}}, bo jej nie ma, ale za to jest {{Code|nazwa przestrzeni nazw i}}, bo ona występuje jako parametr domyślny ogólny dla parametrów numerkowych. Tytaj jest używana jest zmienna {{Code|nazwa jednostki 2}} do wygenerowania ostatecznego wyniku, bo jak można zauważyć, parametry przestrzenne wskazują na przestrzeń główną, a nazwy jednostek już nie. Przykłady w wikikodzie: * {{Code|{{m|Pudełko|Nazwa przestrzeni nazw dyskusji 2|numer jednostki{{=}}2}}}} → {{Tt|{{#invoke:Pudełko|Nazwa przestrzeni nazw dyskusji 2|numer jednostki=2}}}} * {{Code|{{m|Pudełko|Nazwa przestrzeni nazw dyskusji 2|Szablon|nazwa przestrzeni nazw i{{=}}Moja przestrzeń|numer jednostki{{=}}2}}}} → {{Tt|{{#invoke:Pudełko|Nazwa przestrzeni nazw dyskusji 2|Szablon|nazwa przestrzeni nazw i=Moja przestrzeń|numer jednostki=2}}}} * {{Code|{{m|Pudełko|Nazwa przestrzeni nazw dyskusji 2|nazwa przestrzeni nazw 2{{=}}|nazwa jednostki 2{{=}}Szablon:Strona|numer jednostki{{=}}2}}}} → {{Tt|{{#invoke:Pudełko|Nazwa przestrzeni nazw dyskusji 2|nazwa przestrzeni nazw 2=|nazwa jednostki 2=Szablon:Strona|numer jednostki=2}}}} * {{Code|{{m|Pudełko|Nazwa przestrzeni nazw dyskusji 2|nazwa przestrzeni nazw i{{=}}|nazwa jednostki 2{{=}}Szablon:Strona|numer jednostki{{=}}2}}}} → {{Tt|{{#invoke:Pudełko|Nazwa przestrzeni nazw dyskusji 2|nazwa przestrzeni nazw i=|nazwa jednostki 2=Szablon:Strona|numer jednostki=2}}}} * {{Code|{{m|Pudełko|Nazwa przestrzeni nazw dyskusji 2|Szablon|nazwa przestrzeni nazw{{=}}|nazwa jednostki 2{{=}}Wikibooks:Strona|numer jednostki{{=}}2}}}} → {{Tt|{{#invoke:Pudełko|Nazwa przestrzeni nazw dyskusji 2|Szablon|nazwa przestrzeni nazw=|nazwa jednostki 2=Dyskusja Wikibooks:Strona|numer jednostki=2}}}} Powyżej dla przykładu podano parametry nie w rodzicu w szablonie, tylko w dziecku, jeśli chodzi o parametry nazw przestrzeni nazw i nazw jednostek, ale ich się za to nie powinno podawać w tych ramach, tylko w szablonach, w których wywoływane są te ramki pudełek {{Code|{{m|Pudełko}}}}, ale tak tutaj tak zrobiono by było najłatwiej sprawdzić działanie tego typu funkcji. Analogicznie możemy podawać parametry typu jednostki, np.: wywołaniu modułowym {{Code|{{m|Pudełko|Nazwa przestrzeni nazw dyskusji 2|typ jednostki 2{{=}}Podręcznik|nazwa jednostki 2{{=}}Szablon:Strona|numer jednostki{{=}}2}}}} (ale wtedy jest brana przestrzeń nazw z nazwy jednostki), ale o tym więcej w rozdziałach {{Code|{{sr|# p["Dyskusyjny typ jednostki 3"](frame,i)|p=Pudełko}}}} w „{{sr|#Funkcje typu jednostki|p=Pudełko}}”, one definiują przestrzenie dyskusji, ale można użyć parametru dyskusji typu jednostki z obojętnie jaką wartością niepustą, czy pustą, czy nawet jej nie podamy, wtedy wyświetli się nazwa przestrzeni nazw dyskusji. Jeżeli typ jednostki wskazuje na przestrzeń nazw główną, wtedy się liczą parametry nazw jednostek. Również parametry typu jednostki nie powinno się podawać w dziecku w ramce, tylko w rodzicu w szablonie jako parametry, w którym ta ramka jest wywoływana, ale tutaj podano jedynie dla przykładu, jak najłatwiej sprawdzić działanie tych parametrów tej funkcji. Najpierw w funkcji nagłówku brane są parametry nazw przestrzeni nazw, a jeżeli ich nie ma, to parametry typu jednostki, a jeżeli nie ma lub parametry przestrzenne wskazują na przestrzeń główną, i nie ma nazwy jednostki, to generowane są nazwy tej funkcji na podstawie aktualnej strony. == Funkcje pełnych nazw jednostki == === {{Code|p["Pełna nazwa dyskusji jednostki"](frame,i)}} === === {{Code|p["Pełna nazwa przedmiotowa jednostki"](frame,i)}} === === {{Code|p["Pełna nazwa jednostki"](frame,i)}} === == Funkcje pełnych nazw jednostki drugiej wersji == === {{Code|p["Pełna nazwa dyskusji jednostki 2"](frame,i)}} === === {{Code|p["Pełna nazwa przedmiotowa jednostki 2"](frame,i)}} === === {{Code|p["Pełna nazwa jednostki 2"](frame,i)}} === == Funkcje pełnych nazw jednostki trzeciej wersji == === {{Code|p["Pełna nazwa dyskusji jednostki 3"](frame,i)}} === === {{Code|p["Pełna nazwa przedmiotowa jednostki 3"](frame,i)}} === === {{Code|p["Pełna nazwa jednostki 3"](frame,i)}} === == Funkcje nazw jednostki == === {{Code|p["Nazwa jednostki"](frame,i)}} === == Funkcje nazw jednostki drugiej wersji == === {{Code|p["Nazwa jednostki 2"](frame,i)}} === === {{Code|p["Nazwa przedmiotowa jednostki 2"](frame,i)}} === === {{Code|p["Nazwa dyskusji jednostki 2"](frame,i)}} === == Funkcje nazw przestrzeni nazw trzeciej wersji == === {{Code|p["Nazwa przestrzeni nazw 3"](frame,i)}} === Funkcja pisze nazwę przestrzeni nazw, niezależnie, czy to jest przedmiotowa, czy dyskusji, według, i nie zawsze tylko, podanej w zmiennej {{Code|nazwa przestrzeni nazw}} dla pozycja bazowej w podanych parametrach szablonu rodzicu ramki dziecka, lub dla innej pozycji należy parametr podawać w formie {{Code|nazwa przestrzeni nazw 1}}, {{Code|Nazwa przestrzeni nazw 3}}, {{Code|nazwa przestrzeni nazw 3}},..., lub te parametry można podać w postaci ogólnej {{Code|nazwa przestrzeni nazw i}}. W tej funkcji trzeba też podawać parametry nazwy jednostek {{Code|nazwa jednostki}}, {{Code|nazwa jednostki 1}}, {{Code|nazwa jednostki 2}}, {{Code|nazwa jednostki 3}},... Parametry podaje się w parametrach rodzica wywołania tej funkcji {{Code|{{m|Pudełko|Nazwa przestrzeni nazw 3}}}} (ale ich nie trzeba podawać w dziecku, ale można) i w parametrach dziecka, jeśli chodzi o zmienną {{Code|numer jednostki}}, czyli np.: {{Code|{{m|Pudełko|Nazwa przestrzeni nazw 3|numer jednostki{{=}}<jakaś liczba całkowita dodatnia>}}}}. Te parametry przestrzenne zamiast w rodzicu w szablonie można podać w ramce dziecka, wtedy parametry dziecka mają pierwszeństwo. Przestrzeń nazw z parametrów nazw przestrzennych bazowych (bez numerka) może odpowiadać wartości przestrzeni głównej, to wtedy odpowiednia przestrzeń nazw z parametru nazwy jednostki się nie liczy w tej funkcji, aby się liczyła należy użyć funkcji {{Code|{{sr|#p["Nazwa przestrzeni nazw 2"](frame,...)|p=Pudełko}}}}. W tym przypadku funkcja działa jak {{Code|{{sr|#p["Nazwa przestrzeni nazw"](frame,...)|p=Pudełko}}}}. Przestrzeń nazw z parametrów nazw przestrzennych numerkowych może odpowiadać wartości przestrzeni głównej, to wtedy odpowiednia przestrzeń nazw z parametru nazwy jednostki się liczy w tej funkcji, wtedy jest liczona nazwa przestrzeni nazw z tego parametru. Gdy parametry przestrzenne lub typ jednostki w drugim podejściu nie wskazują na przestrzeń główną, to wtedy działanie tej funkcji jest podobne do {{Code|{{sr|#p["Nazwa przestrzeni nazw 2"](frame,...)|p=Pudełko}}}}. Definicja skrótowa funkcji: <syntaxhighlight lang="lua"> p["Nazwa przestrzeni nazw 3"]=function(frame,czy_uwzglednic_alternatywna_nazwe,i)...end; </syntaxhighlight> Wtedy ciało funkcji tej, czyli jego definicja w środku, jest: <syntaxhighlight lang="lua"> -- Jest liczony numer parametru nazwy przestrzeni nazw, domyslnie chodzi tu o numer bazowy parametrów przestrzennych; local numer_jednostki=i or frame.args["numer jednostki"]; local liczba_numeru_jednostki=((numer_jednostki)and(tonumber(numer_jednostki)) or 0); local pudelko_pomocne_modul=require("Module:Pudełko/Pomocne"); -- Liczy nazwę przestrzeni nazw dyskusji na podstawie podanych parametrów; return pudelko_pomocne_modul.Uzyskanie_nazw_jednostki(frame,0,liczba_numeru_jednostki,nil,2); </syntaxhighlight> Parametry funkcji: * {{Code|frame}} - tablica ramki tablicy transportu, * {{Code|czy_uwzglednic_alternatywna_nazwe}} - czy ma uwzględniać nazwę przestrzeni nazw domyślną szablonu, dostępne wartości: {{Code|false}}, w której nazwa domyślna nie jest uwzględniana wtedy, oraz {{Code|nil}} i {{Code|true}}, które oznaczają to samo, w tym jeżeli ona jest uwzględniana, wtedy jest brany parametr pierwszy dziecka, który musi istnieć przy takiej wartości tego parametru, tzn. {{Code|{{m|Pudełko|Nazwa przestrzeni nazw 3|Szablon}}}}, a jeśli nazwa uzyskana nazwy przestrzeni nazw jest w takim przypadku błędna, a jeżeli nazwa domyślna jest błędna, czyli {{Code|{{m|Pudełko|Nazwa przestrzeni nazw 3|Moja przestrzeń}}}}, wtedy funkcja zwraca stan błędu {{Code|(błąd)}}. * {{Code|i}} - numer zmiennej nazwy przestrzeni nazw. Funkcja wykorzystuje {{Code|{{sr|#p.Uzyskanie_nazw_jednostki(frame,...)|p=Pudełko/Pomocne}}}} do wyznaczania ogólnego nazwy przestrzeni nazw dla pozycji bazowej i numerkowej, tzn. dla pozycji: jeden, dwa, trzy,..., itd, i ich ogólnej. Parametr ramki tablicy transportu rodzica szablonu: * {{Code|nazwa przestrzeni nazw}}, {{Code|nazwa przestrzeni nazw 1}}, {{Code|Nazwa przestrzeni nazw 3}}, {{Code|nazwa przestrzeni nazw 3}},..., {{Code|nazwa przestrzeni nazw i}} - nazwy przestrzeni nazw dla pozycji bazowej oraz zwykłej i ogólnej numerkowej, * {{Code|nazwa jednostki}}, {{Code|nazwa jednostki 1}}, {{Code|nazwa jednostki 2}}, {{Code|nazwa jednostki 3}},... - nazwy jednostek dla pozycji bazowej i numerkowej, * {{Code|typ jednostki}}, {{Code|typ jednostki 1}}, {{Code|typ jednostki 2}}, {{Code|typ jednostki 3}},..., {{Code|typ jednostki i}} - typy jednostek, którym odpowiadają pewne przestrzenie przedmiotowe, dla pozycji bazowej, numerkowej i ogólnej, ** {{Code|dyskusja typu jednostki}}, {{Code|dyskusja typu jednostki 1}}, {{Code|dyskusja typ jednostki 2}}, {{Code|dyskusja typ jednostki 3}},..., {{Code|dyskusja typ jednostki i}} - czy dany typ jednostki ma przedstawiać, jeśli niepusta, przestrzeń dyskusji dla pozycji bazowej, numerkowej i ogólnej. Parametry ramki tablicy transportu dziecka: * Parametry dziecka są takie same jak rodzica dla funkcji pudełkowej plus tu wymienione, * {{Code|numer jednostki}} - jak parametr {{Code|i}} nie został ustawiony, to wtedy liczy się ta zmienna. Przykłady: <syntaxhighlight lang="mediawiki"> {{Nazwa szablonu 1|nazwa przestrzeni nazw=Wikibooks|nazwa przestrzeni nazw=|nazwa przestrzeni nazw i=|nazwa jednostki=Szablon:Strona}} ---- {{Nazwa szablonu 2|nazwa przestrzeni nazw=Wikibooks|nazwa przestrzeni nazw 1=Szablon|nazwa przestrzeni nazw i=|nazwa jednostki 2=Wikibooks:Strona}} </syntaxhighlight> W pierwszym wywołaniu {{Code|nazwa przestrzeni nazw}} jest puste, ale dla tego bazowego (bez numerka) szukamy przestrzeni nazw, a więc ta nazwa jest ostateczna. ---- W drugim wywołaniu w dziecku powiedzmy jest wywołanie, i szukamy nazwy przestrzeni nazw o numerze dwa, która została podana, ale istnieje za to jej wersji ogólna {{Code|nazwa przestrzeni nazw i}} i domyślna {{Code|nazwa przestrzeni nazw}}, ale wtedy dla tego numerkowego liczy się to ogólne z {{Code| i}}, a ponieważ ta nazwa jest pusta, więc będziemy liczyli nazwę przestrzeni nazw z {{Code|nazwa jednostki 2}}. Odpowiadająca powyższemu kodowi, powiedzmy wikikod, według ich zawartości, przedstawia się: <syntaxhighlight lang="mediawiki"> {{#invoke:Pudełko|Nazwa przestrzeni nazw 3}} ---- {{#invoke:Pudełko|Nazwa przestrzeni nazw 3|numer jednostki=2}} </syntaxhighlight> Na podstawie powyższego przykładu otrzymamy wynik o schemacie, nie wyniku, bo tam nie ma zmiennej {{Code|nazwa przestrzeni nazw 1}}, ale jest {{Code|nazwa przestrzeni nazw i}}: <syntaxhighlight lang="mediawiki"> <!-- nazwa przestrzeni nazw=""; --> <!-- Czyli wynik: --> <!-- wynik pusty --> <!-- Widzimy, że wygenerowała się nazwa przestrzeni nazw, którą jest przestrzeń nazw główna, jest ciągiem pustym: ""; --> ---- <!-- Ale nie "nazwa przestrzeni nazw 2", bo jej nie ma, ale za to istnieje "nazwa przestrzeni nazw i"; --> <!-- nazwa przestrzeni nazw 2=nazwa przestrzeni nazw i="", a nazwa jednostki 2="Wikibooks:Strona"; --> <!-- Czyli wynik: --> Wikibooks <!-- Widzimy, że wygenerowała się nazwa przestrzeni nazw, którą jest przestrzeń nieprogramowa, ale projektu, wychodząca z nazwy jednostek w tym przypadku z "nazwa jednostki 2"; --> </syntaxhighlight> Dla parametrów numerkowych nie jest brana w tym powyższym przykładzie zmienna {{Code|nazwa przestrzeni nazw 2}}, bo jej nie ma, ale za to jest {{Code|nazwa przestrzeni nazw i}}, bo ona występuje jako parametr domyślny ogólny dla parametrów numerkowych. Tytaj jest używana jest zmienna {{Code|nazwa jednostki 2}} do wygenerowania ostatecznego wyniku, bo jak można zauważyć, parametry przestrzenne wskazują na przestrzeń główną, a nazwy jednostek już nie. Dla parametrów bazowych mamy zmienną {{Code|nazwa przestrzeni nazw}}, ona jest pusta, więc to zostanie wziete do ostatecznego wyniku. Przykłady w wikikodzie: * {{Code|{{m|Pudełko|Nazwa przestrzeni nazw 3|Szablon|nazwa przestrzeni nazw{{=}}Moja przestrzeń|nazwa jednostki{{=}}Wikibooks:Strona}}}} → {{Tt|{{#invoke:Pudełko|Nazwa przestrzeni nazw 3|Szablon|nazwa przestrzeni nazw=Moja przestrzeń|nazwa jednostki=Wikibooks:Szablon}}}} * {{Code|{{m|Pudełko|Nazwa przestrzeni nazw 3|Szablon|nazwa przestrzeni nazw 2{{=}}Moja przestrzeń|nazwa jednostki 2{{=}}Wikibooks:Strona}|numer jednostki{{=}}2}}}} → {{Tt|{{#invoke:Pudełko|Nazwa przestrzeni nazw 3|Szablon|nazwa przestrzeni nazw 2=Moja przestrzeń|nazwa jednostki 2=Wikibooks:Szablon|numer jednostki=2}}}} * {{Code|{{m|Pudełko|Nazwa przestrzeni nazw 3|nazwa przestrzeni nazw{{=}}|nazwa jednostki{{=}}Wikibooks:Strona}}}} → {{Tt|{{#invoke:Pudełko|Nazwa przestrzeni nazw 3|nazwa przestrzeni nazw=|nazwa jednostki=Wikibooks:Szablon}}}} * {{Code|{{m|Pudełko|Nazwa przestrzeni nazw 3|nazwa przestrzeni nazw 2{{=}}|nazwa jednostki 2{{=}}Wikibooks:Strona|numer jednostki{{=}}2}}}} → {{Tt|{{#invoke:Pudełko|Nazwa przestrzeni nazw 3|nazwa przestrzeni nazw 2=|nazwa jednostki 2=Wikibooks:Szablon|numer jednostki=2}}}} Powyżej dla przykładu podano parametry nie w rodzicu w szablonie, tylko w dziecku, jeśli chodzi o parametry nazw przestrzeni nazw i nazw jednostek, ale ich się za to nie powinno podawać w tych ramach, tylko w szablonach, w których wywoływane są te ramki pudełek {{Code|{{m|Pudełko}}}}, ale tak tutaj tak zrobiono by było najłatwiej sprawdzić działanie tego typu funkcji. Analogicznie możemy podawać parametry typu jednostki, np.: wywołaniu modułowym {{Code|{{m|Pudełko|Nazwa przestrzeni nazw 3|typ jednostki 2{{=}}Podręcznik|nazwa jednostki 2{{=}}Szablon:Strona|numer jednostki{{=}}2}}}} (ale wtedy jest brana przestrzeń nazw z nazwy jednostki), ale o tym więcej w rozdziałach {{Code|{{sr|#p["Typ jednostki 3"](frame,i)|p=Pudełko}}}} w „{{sr|#Funkcje typu jednostki|p=Pudełko}}”, on definiuje przestrzenie przedmiotowe, ale można użyć parametru dyskusji typu jednostki z wartością niepustą, wtedy wyświetli się nazwa przestrzeni nazw dyskusji. Jeżeli typ jednostki bazowy wskazuje na przestrzeń nazw główną, wtedy się nie liczą parametry nazw jednostek, a na numerkowy, wtedy się liczy. Również parametry typu jednostki nie powinno się podawać w dziecku w ramce, tylko w rodzicu w szablonie jako parametry, w którym ta ramka jest wywoływana, ale tutaj podano jedynie dla przykładu, jak najłatwiej sprawdzić działanie tych parametrów tej funkcji. Najpierw w funkcji nagłówku brane są parametry nazw przestrzeni nazw, a jeżeli ich nie ma, to parametry typu jednostki, a jeżeli nie ma lub parametry przestrzenne wskazują na przestrzeń główną, i nie ma nazwy jednostki, to generowane są nazwy tej funkcji na podstawie aktualnej strony. === {{Code|p["Nazwa przedmiotowej przestrzeni nazw 3"](frame,i)}} === Funkcja pisze przedmiotową nazwę przestrzeni nazw jakikolwiek nazwy przestrzeni nazw (tzn. nazwę przedmiotową nazwy przestrzenie nazw, czyli nie dyskusji, zamieniana jest na nią samą, czyli identyfikator przestrzeni się nie zmienia, a dyskusji, nie przedmiotową, przekształca się na przedmiotową jej odpowiadającą, czyli w tym przypadku identyfikator przestrzeni zmniejsza się o numer mniej), według podanej w zmiennej {{Code|nazwa przestrzeni nazw}} dla pozycja bazowej w podanych parametrach szablonu rodzicu ramki dziecka, lub dla innej pozycji należy parametr podawać w formie {{Code|nazwa przestrzeni nazw 1}}, {{Code|nazwa przestrzeni nazw 2}}, {{Code|nazwa przestrzeni nazw 3}},..., lub te parametry można podać w postaci ogólnej {{Code|nazwa przestrzeni nazw i}}. Parametry podaje się w parametrach rodzica wywołania tej funkcji {{Code|{{m|Pudełko|Nazwa przedmiotowej przestrzeni nazw 3}}}} (ale ich nie trzeba podawać w dziecku, ale można) i w parametrach dziecka, jeśli chodzi o zmienną {{Code|numer jednostki}}, czyli np.: {{Code|{{m|Pudełko|Nazwa przedmiotowej przestrzeni nazw 3|numer jednostki{{=}}<jakaś liczba całkowita dodatnia>}}}}. Te parametry przestrzenne zamiast w rodzicu w szablonie można podać w ramce dziecka, wtedy parametry dziecka mają pierwszeństwo. Parametry przestrzenne mogą mogą być podane w postaci przestrzeni przedmiotowej lub dyskusji, ale ta funkcja zawsze ją zamienia na przedmiotową. Przestrzeń nazw z parametrów nazw przestrzennych bazowych (bez numerka) może odpowiadać wartości przestrzeni głównej, to wtedy odpowiednia przestrzeń nazw z parametru nazwy jednostki się nie liczy w tej funkcji, aby się liczyła należy użyć funkcji {{Code|{{sr|#p["Nazwa przedmiotowej przestrzeni nazw 2"](frame,...)|p=Pudełko}}}}. W tym przypadku funkcja działa jak {{Code|{{sr|#p["Nazwa przedmiotowej przestrzeni nazw"](frame,...)|p=Pudełko}}}}. Przestrzeń nazw z parametrów nazw przestrzennych numerkowych może odpowiadać wartości przestrzeni głównej, to wtedy odpowiednia przestrzeń nazw z parametru nazwy jednostki się liczy w tej funkcji, wtedy jest liczona nazwa przestrzeni nazw z tego parametru. Gdy parametry przestrzenne lub typ jednostki w drugim podejściu nie wskazują na przestrzeń główną, to wtedy działanie tej funkcji jest podobne do {{Code|{{sr|#p["Nazwa przedmiotowej przestrzeni nazw 2"](frame,...)|p=Pudełko}}}}. Definicja skrótowa funkcji: <syntaxhighlight lang="lua"> p["Nazwa przedmiotowej przestrzeni nazw 3"]=function(frame,czy_uwzglednic_alternatywna_nazwe,i)...end; </syntaxhighlight> Wtedy ciało funkcji tej, czyli jego definicja w środku, jest: <syntaxhighlight lang="lua"> -- Jest liczony numer parametru nazwy przestrzeni nazw, domyslnie chodzi tu o numer bazowy parametrów przestrzennych; local numer_jednostki=i or frame.args["numer jednostki"]; local liczba_numeru_jednostki=((numer_jednostki)and(tonumber(numer_jednostki)) or 0); local pudelko_pomocne_modul=require("Module:Pudełko/Pomocne"); -- Liczy nazwę przestrzeni nazw przedmiotową na podstawie podanych parametrów; return pudelko_pomocne_modul.Uzyskanie_nazw_jednostki(frame,1,liczba_numeru_jednostki,nil,1); </syntaxhighlight> Parametry funkcji: * {{Code|frame}} - tablica ramki tablicy transportu, * {{Code|czy_uwzglednic_alternatywna_nazwe}} - czy ma uwzględniać nazwę przestrzeni nazw domyślną szablonu, dostępne wartości: {{Code|false}}, w której nazwa domyślna nie jest uwzględniana wtedy, oraz {{Code|nil}} i {{Code|true}}, które oznaczają to samo, w tym jeżeli ona jest uwzględniana, wtedy jest brany parametr pierwszy dziecka, który musi istnieć przy takiej wartości tego parametru, tzn. {{Code|{{m|Pudełko|Nazwa przedmiotowej przestrzeni nazw 3|Dyskusja szablonu}}}} - ta nazwa domyślna zostanie zamieniona na przedmiotową, a jak ona by była przedmiotowa, to żadnej zamiany by nie było, a nazwa uzyskana z nazwy przestrzeni nazw z parametrów przestrzennych jest w takim przypadku błędna, to w takim razie brany jest ten parametr, a jeżeli ta nazwa domyślna jest błędna, czyli {{Code|{{m|Pudełko|Nazwa przedmiotowej przestrzeni nazw 3|Moja przestrzeń}}}}, wtedy funkcja zwraca stan błędu {{Code|(błąd)}}. * {{Code|i}} - numer zmiennej nazwy przestrzeni nazw. Funkcja wykorzystuje {{Code|{{sr|#p.Uzyskanie_nazw_jednostki(frame,...)|p=Pudełko/Pomocne}}}} do wyznaczania ogólnego nazwy przestrzeni nazw dla pozycji bazowej i numerkowej, tzn. dla pozycji: jeden, dwa, trzy,..., itd, i ich ogólnej. Parametr ramki tablicy transportu rodzica szablonu: * {{Code|nazwa przestrzeni nazw}}, {{Code|nazwa przestrzeni nazw 1}}, {{Code|nazwa przestrzeni nazw 2}}, {{Code|nazwa przestrzeni nazw 3}},..., {{Code|nazwa przestrzeni nazw i}} - nazwy przestrzeni nazw dla pozycji bazowej oraz zwykłej i ogólnej numerkowej, * {{Code|typ jednostki}}, {{Code|typ jednostki 1}}, {{Code|typ jednostki 2}}, {{Code|typ jednostki 3}},..., {{Code|typ jednostki i}} - typy jednostek, którym odpowiadają pewne przestrzenie przedmiotowe, dla pozycji bazowej, numerkowej i ogólnej. Parametry ramki tablicy transportu dziecka: * Parametry dziecka są takie same jak rodzica dla funkcji pudełkowej plus tu wymienione, * {{Code|numer jednostki}} - jak parametr {{Code|i}} nie został ustawiony, to wtedy liczy się ta zmienna. Przykłady: <syntaxhighlight lang="mediawiki"> {{Nazwa szablonu 1|nazwa przestrzeni nazw=Wikibooks|nazwa przestrzeni nazw=|nazwa przestrzeni nazw i=|nazwa jednostki=Dyskusja Wikibooks:Strona}} ---- {{Nazwa szablonu 2|nazwa przestrzeni nazw=Wikibooks|nazwa przestrzeni nazw 1=Szablon|nazwa przestrzeni nazw i=|nazwa jednostki 2=Dyskusja Wikibooks:Strona}} </syntaxhighlight> W pierwszym wywołaniu {{Code|nazwa przestrzeni nazw}} jest puste, ale dla tego bazowego (bez numerka) szukamy przestrzeni nazw, a więc ta nazwa jest ostateczna. ---- W drugim wywołaniu w dziecku powiedzmy jest wywołanie, i szukamy nazwy przestrzeni nazw o numerze dwa, która została podana, ale istnieje za to jej wersji ogólna {{Code|nazwa przestrzeni nazw i}} i domyślna {{Code|nazwa przestrzeni nazw}}, ale wtedy dla tego numerkowego liczy się to ogólne z {{Code| i}}, a ponieważ ta nazwa jest pusta, więc będziemy liczyli nazwę przestrzeni nazw z {{Code|nazwa jednostki 2}}. Odpowiadająca powyższemu kodowi, powiedzmy wikikod, według ich zawartości, przedstawia się: <syntaxhighlight lang="mediawiki"> {{#invoke:Pudełko|Nazwa przedmiotowej przestrzeni nazw 3}} ---- {{#invoke:Pudełko|Nazwa przedmiotowej przestrzeni nazw 3|numer jednostki=2}} </syntaxhighlight> Na podstawie powyższego przykładu otrzymamy wynik o schemacie, nie wyniku, bo tam nie ma zmiennej {{Code|nazwa przestrzeni nazw 1}}, ale jest {{Code|nazwa przestrzeni nazw i}}: <syntaxhighlight lang="mediawiki"> <!-- nazwa przestrzeni nazw=""; --> <!-- Czyli wynik: --> <!-- wynik pusty --> <!-- Widzimy, że wygenerowała się nazwa przestrzeni nazw, którą jest przestrzeń nazw główna, jest ciągiem pustym: ""; --> ---- <!-- Ale nie "nazwa przestrzeni nazw 2", bo jej nie ma, ale za to istnieje "nazwa przestrzeni nazw i"; --> <!-- nazwa przestrzeni nazw 2=nazwa przestrzeni nazw i="", a nazwa jednostki 2="Dyskusja Wikibooks:Strona"; --> <!-- Czyli wynik: --> Wikibooks <!-- Widzimy, że wygenerowała się nazwa przestrzeni nazw, którą jest przestrzeń nieprogramowa, ale projektu, wychodząca z nazwy jednostek w tym przypadku z "nazwa jednostki 2"; --> </syntaxhighlight> Dla parametrów numerkowych nie jest brana w tym powyższym przykładzie zmienna {{Code|nazwa przestrzeni nazw 2}}, bo jej nie ma, ale za to jest {{Code|nazwa przestrzeni nazw i}}, bo ona występuje jako parametr domyślny ogólny dla parametrów numerkowych. Tytaj jest używana jest zmienna {{Code|nazwa jednostki 2}} do wygenerowania ostatecznego wyniku, bo jak można zauważyć, parametry przestrzenne wskazują na przestrzeń główną, a nazwy jednostek już nie. Dla parametrów bazowych mamy zmienną {{Code|nazwa przestrzeni nazw}}, ona jest pusta, więc to zostanie wziete do ostatecznego wyniku. Przykłady w wikikodzie: * {{Code|{{m|Pudełko|Nazwa przedmiotowej przestrzeni nazw 3|Dyskusja szablonu|nazwa przestrzeni nazw{{=}}Moja przestrzeń|nazwa jednostki{{=}}Dyskusja Wikibooks:Strona}}}} → {{Tt|{{#invoke:Pudełko|Nazwa przedmiotowej przestrzeni nazw 3|Dyskusja szablonu|nazwa przestrzeni nazw=Moja przestrzeń||nazwa jednostki=Dyskusja Wikibooks:Szablon}}}} * {{Code|{{m|Pudełko|Nazwa przedmiotowej przestrzeni nazw 3|Dyskusja szablonu|nazwa przestrzeni nazw 2{{=}}Moja przestrzeń|nazwa jednostki 2{{=}}Dyskusja Wikibooks:Strona|numer jednostki{{=}}2}}}} → {{Tt|{{#invoke:Pudełko|Nazwa przedmiotowej przestrzeni nazw 3|Dyskusja szablonu|nazwa przestrzeni nazw 2=Moja przestrzeń||nazwa jednostki 2=Dyskusja Wikibooks:Szablon|numer jednostki=2}}}} * {{Code|{{m|Pudełko|Nazwa przedmiotowej przestrzeni nazw 3|nazwa przestrzeni nazw{{=}}|nazwa jednostki{{=}}Dyskusja Wikibooks:Strona}}}} → {{Tt|{{#invoke:Pudełko|Nazwa przedmiotowej przestrzeni nazw 3|nazwa przestrzeni nazw=|nazwa jednostki=Dyskusja Wikibooks:Szablon}}}} * {{Code|{{m|Pudełko|Nazwa przedmiotowej przestrzeni nazw 3|nazwa przestrzeni nazw 2{{=}}|nazwa jednostki 2{{=}}Dyskusja Wikibooks:Strona|numer jednostki{{=}}2}}}} → {{Tt|{{#invoke:Pudełko|Nazwa przedmiotowej przestrzeni nazw 3|nazwa przestrzeni nazw 2=|nazwa jednostki 2=Dyskusja Wikibooks:Szablon|numer jednostki=2}}}} Powyżej dla przykładu podano parametry nie w rodzicu w szablonie, tylko w dziecku, jeśli chodzi o parametry nazw przestrzeni nazw, ale ich się za to nie powinno podawać w tych ramach, tylko w szablonach, w których wywoływane są te ramki pudełek {{Code|{{m|Pudełko}}}}, ale tak tutaj tak zrobiono by było najłatwiej sprawdzić działanie tego typu funkcji. Analogicznie możemy podawać parametry typu jednostki, np.: wywołaniu modułowym {{Code|{{m|Pudełko|Nazwa przedmiotowej przestrzeni nazw 3|typ jednostki 2{{=}}strona szablonu|numer jednostki{{=}}2}}}}, ale o tym więcej w rozdziałach {{Code|{{sr|# p["Przedmiotowy typ jednostki 3"](frame,i)|p=Pudełko}}}} w „{{sr|#Funkcje typu jednostki|p=Pudełko}}”, ale wtedy ta sama nazwa przestrzeni nazw reprezentowana przez {{Parametr|typ jednostki 2|strona szablonu}}, jest zamieniana na to samo, lepiej jest tutaj używać parametrów przestrzennych nazw niż typu jednostki, bo typ jednostki ma taką samą wartość dla przestrzeni przedmiotowej, co dyskusji. Tutaj parametr dyskusji typu jednostki bazowy i numerkowy ogólny, czy szczegółowy, nie gra roli, bo nawet, gdy wygenerujemy nazwę przestrzeni dyskusji za pomoca tego parametru, to i tak otrzymamy na samym końcu jego nazwę przedmiotową. Jeżeli typ jednostki bazowy wskazuje na przestrzeń nazw główną, wtedy się nie liczą parametry nazw jednostek, a na numerkowy, wtedy się liczy. Również parametry typu jednostki nie powinno się podawać w dziecku w ramce, tylko w rodzicu w szablonie jako parametry, w którym ta ramka jest wywoływana, ale tutaj podano jedynie dla przykładu, jak najłatwiej sprawdzić działanie tych parametrów tej funkcji. Najpierw w funkcji nagłówku brane są parametry nazw przestrzeni nazw, a jeżeli ich nie ma, to parametry typu jednostki, a jeżeli nie ma, to generowane są nazwy na podstawie aktualnego modułu. === {{Code|p["Nazwa przestrzeni nazw dyskusji 3"](frame,i)}} === Funkcja pisze nazwę przestrzeni nazw dyskusji jakikolwiek nazwy przestrzeni nazw (tzn. nazwę dyskusji nazwy przestrzenie nazw, czyli nie przedmiotowej, zamieniana jest na nią samą, czyli identyfikator przestrzeni się nie zmienia, a przedmiotową, nie dyskusji, przekształca się na dyskusji jej odpowiadającą, czyli w tym przypadku identyfikator przestrzeni zwiększa się o numer więcej), według, i nie zawsze tylko, podanej w zmiennej {{Code|nazwa przestrzeni nazw}} dla pozycja bazowej w podanych parametrach szablonu rodzicu ramki dziecka, lub dla innej pozycji należy parametr podawać w formie {{Code|nazwa przestrzeni nazw 1}}, {{Code|nazwa przestrzeni nazw 2}}, {{Code|nazwa przestrzeni nazw 3}},..., lub te parametry można podać w postaci ogólnej {{Code|nazwa przestrzeni nazw i}}. W tej funkcji trzeba też podawać parametry nazwy jednostek {{Code|nazwa jednostki}}, {{Code|nazwa jednostki 1}}, {{Code|nazwa jednostki 2}}, {{Code|nazwa jednostki 3}},... Parametry podaje się w parametrach rodzica wywołania tej funkcji {{Code|{{m|Pudełko|Nazwa przestrzeni nazw dyskusji 3}}}} (ale ich nie trzeba podawać w dziecku, ale można) i w parametrach dziecka, jeśli chodzi o zmienną {{Code|numer jednostki}}, czyli np.: {{Code|{{m|Pudełko|Nazwa przestrzeni nazw dyskusji 3|numer jednostki{{=}}<jakaś liczba całkowita dodatnia>}}}}. Te parametry przestrzenne zamiast w rodzicu w szablonie można podać w ramce dziecka, wtedy parametry dziecka mają pierwszeństwo. Przestrzeń nazw z parametrów nazw przestrzennych bazowych (bez numerka) może odpowiadać wartości przestrzeni głównej, to wtedy odpowiednia przestrzeń nazw z parametru nazwy jednostki się nie liczy w tej funkcji, aby się liczyła należy użyć funkcji {{Code|{{sr|#p["Nazwa przestrzeni nazw dyskusji 2"](frame,...)|p=Pudełko}}}}. W tym przypadku funkcja działa jak {{Code|{{sr|#p["Nazwa przestrzeni nazw dyskusji"](frame,...)|p=Pudełko}}}}. Przestrzeń nazw z parametrów nazw przestrzennych numerkowych może odpowiadać wartości przestrzeni głównej, to wtedy odpowiednia przestrzeń nazw z parametru nazwy jednostki się liczy w tej funkcji, wtedy jest liczona nazwa przestrzeni nazw z tego parametru. Gdy parametry przestrzenne lub typ jednostki w drugim podejściu nie wskazują na przestrzeń główną, to wtedy działanie tej funkcji jest podobne do {{Code|{{sr|#p["Nazwa przestrzeni nazw dyskusji 2"](frame,...)|p=Pudełko}}}}. Definicja skrótowa funkcji: <syntaxhighlight lang="lua"> p["Nazwa przestrzeni nazw dyskusji 3"]=function(frame,czy_uwzglednic_alternatywna_nazwe,i)...end; </syntaxhighlight> Wtedy ciało funkcji tej, czyli jego definicja w środku, jest: <syntaxhighlight lang="lua"> -- Jest liczony numer parametru nazwy przestrzeni nazw, domyslnie chodzi tu o numer bazowy parametrów przestrzennych; local numer_jednostki=i or frame.args["numer jednostki"]; local liczba_numeru_jednostki=((numer_jednostki)and(tonumber(numer_jednostki)) or 0); local pudelko_pomocne_modul=require("Module:Pudełko/Pomocne"); -- Liczy nazwę przestrzeni nazw dyskusji na podstawie podanych parametrów; return pudelko_pomocne_modul.Uzyskanie_nazw_jednostki(frame,2,liczba_numeru_jednostki,nil,1); </syntaxhighlight> Parametry funkcji: * {{Code|frame}} - tablica ramki tablicy transportu, * {{Code|czy_uwzglednic_alternatywna_nazwe}} - czy ma uwzględniać nazwę przestrzeni nazw domyślną szablonu, dostępne wartości: {{Code|false}}, w której nazwa domyślna nie jest uwzględniana wtedy, oraz {{Code|nil}} i {{Code|true}}, które oznaczają to samo, w tym jeżeli ona jest uwzględniana, wtedy jest brany parametr pierwszy dziecka, który musi istnieć przy takiej wartości tego parametru, tzn. {{Code|{{m|Pudełko|Nazwa przestrzeni nazw dyskusji 3|Szablon}}}}, nazwa domyślna zostatnie zamieniona na dyskusji, a jeśli jest już taka, to takiej transfomacji nie ma, a jeśli nazwa uzyskana nazwy przestrzeni nazw jest w takim przypadku błędna, a jeżeli nazwa domyślna jest błędna, czyli {{Code|{{m|Pudełko|Nazwa przestrzeni nazw dyskusji 3|Moja przestrzeń}}}}, wtedy funkcja zwraca stan błędu {{Code|(błąd)}}. * {{Code|i}} - numer zmiennej nazwy przestrzeni nazw. Funkcja wykorzystuje {{Code|{{sr|#p.Uzyskanie_nazw_jednostki(frame,...)|p=Pudełko/Pomocne}}}} do wyznaczania ogólnego nazwy przestrzeni nazw dla pozycji bazowej i numerkowej, tzn. dla pozycji: jeden, dwa, trzy,..., itd, i ich ogólnej. Parametr ramki tablicy transportu rodzica szablonu: * {{Code|nazwa przestrzeni nazw}}, {{Code|nazwa przestrzeni nazw 1}}, {{Code|nazwa przestrzeni nazw 2}}, {{Code|nazwa przestrzeni nazw 3}},..., {{Code|nazwa przestrzeni nazw i}} - nazwy przestrzeni nazw dla pozycji bazowej oraz zwykłej i ogólnej numerkowej, * {{Code|nazwa jednostki}}, {{Code|nazwa jednostki 1}}, {{Code|nazwa jednostki 2}}, {{Code|nazwa jednostki 3}},... - nazwy jednostek dla pozycji bazowej i numerkowej, * {{Code|typ jednostki}}, {{Code|typ jednostki 1}}, {{Code|typ jednostki 2}}, {{Code|typ jednostki 3}},..., {{Code|typ jednostki i}} - typy jednostek, którym odpowiadają pewne przestrzenie przedmiotowe, dla pozycji bazowej, numerkowej i ogólnej. Parametry ramki tablicy transportu dziecka: * Parametry dziecka są takie same jak rodzica dla funkcji pudełkowej plus tu wymienione, * {{Code|numer jednostki}} - jak parametr {{Code|i}} nie został ustawiony, to wtedy liczy się ta zmienna. Przykłady: <syntaxhighlight lang="mediawiki"> {{Nazwa szablonu 1|nazwa przestrzeni nazw=Wikibooks|nazwa przestrzeni nazw=|nazwa przestrzeni nazw i=|nazwa jednostki=Szablon:Strona}} ---- {{Nazwa szablonu 2|nazwa przestrzeni nazw=Wikibooks|nazwa przestrzeni nazw 1=Szablon|nazwa przestrzeni nazw i=|nazwa jednostki 2=Wikibooks:Strona}} </syntaxhighlight> W pierwszym wywołaniu {{Code|nazwa przestrzeni nazw}} jest puste, ale dla tego bazowego (bez numerka) szukamy przestrzeni nazw, a więc ta nazwa jest ostateczna. ---- W drugim wywołaniu w dziecku powiedzmy jest wywołanie, i szukamy nazwy przestrzeni nazw o numerze dwa, która została podana, ale istnieje za to jej wersji ogólna {{Code|nazwa przestrzeni nazw i}} i domyślna {{Code|nazwa przestrzeni nazw}}, ale wtedy dla tego numerkowego liczy się to ogólne z {{Code| i}}, a ponieważ ta nazwa jest pusta, więc będziemy liczyli nazwę przestrzeni nazw z {{Code|nazwa jednostki 2}}. Odpowiadająca powyższemu kodowi, powiedzmy wikikod, według ich zawartości, przedstawia się: <syntaxhighlight lang="mediawiki"> {{#invoke:Pudełko|Nazwa przestrzeni nazw 3}} ---- {{#invoke:Pudełko|Nazwa przestrzeni nazw 3|numer jednostki=2}} </syntaxhighlight> Na podstawie powyższego przykładu otrzymamy wynik o schemacie, nie wyniku, bo tam nie ma zmiennej {{Code|nazwa przestrzeni nazw 1}}, ale jest {{Code|nazwa przestrzeni nazw i}}: <syntaxhighlight lang="mediawiki"> <!-- nazwa przestrzeni nazw=""; --> <!-- Czyli wynik: --> Dyskusja <!-- Widzimy, że wygenerowała się nazwa przestrzeni nazw, którą jest przestrzeń nazw niegłówna, jest ciągiem niepustym; --> ---- <!-- Ale nie "nazwa przestrzeni nazw 2", bo jej nie ma, ale za to istnieje "nazwa przestrzeni nazw i"; --> <!-- nazwa przestrzeni nazw 2=nazwa przestrzeni nazw i="", a nazwa jednostki 2="Wikibooks:Strona"; --> <!-- Czyli wynik: --> Dyskusja Wikibooks <!-- Widzimy, że wygenerowała się nazwa przestrzeni nazw, którą jest przestrzeń nieprogramowa, ale projektu, wychodząca z nazwy jednostek w tym przypadku z "nazwa jednostki 2"; --> </syntaxhighlight> Dla parametrów numerkowych nie jest brana w tym powyższym przykładzie zmienna {{Code|nazwa przestrzeni nazw 2}}, bo jej nie ma, ale za to jest {{Code|nazwa przestrzeni nazw i}}, bo ona występuje jako parametr domyślny ogólny dla parametrów numerkowych. Tytaj jest używana jest zmienna {{Code|nazwa jednostki 2}} do wygenerowania ostatecznego wyniku, bo jak można zauważyć, parametry przestrzenne wskazują na przestrzeń główną, a nazwy jednostek już nie. Dla parametrów bazowych mamy zmienną {{Code|nazwa przestrzeni nazw}}, ona jest pusta, więc to zostanie wziete do ostatecznego wyniku. Przykłady w wikikodzie: * {{Code|{{m|Pudełko|Nazwa przestrzeni nazw dyskusji 3|Szablon|nazwa przestrzeni nazw{{=}}Moja przestrzeń|nazwa jednostki{{=}}Wikibooks:Strona}}}} → {{Tt|{{#invoke:Pudełko|Nazwa przestrzeni nazw dyskusji 3|Szablon|nazwa przestrzeni nazw=Moja przestrzeń|nazwa jednostki=Wikibooks:Szablon}}}} * {{Code|{{m|Pudełko|Nazwa przestrzeni nazw dyskusji 3|Szablon|nazwa przestrzeni nazw 2{{=}}Moja przestrzeń|nazwa jednostki 2{{=}}Wikibooks:Strona|numer jednostki{{=}}2}}}} → {{Tt|{{#invoke:Pudełko|Nazwa przestrzeni nazw dyskusji 3|Szablon|nazwa przestrzeni nazw 2=Moja przestrzeń|nazwa jednostki 2=Wikibooks:Szablon|numer jednostki=2}}}} * {{Code|{{m|Pudełko|Nazwa przestrzeni nazw dyskusji 3|nazwa przestrzeni nazw{{=}}|nazwa jednostki{{=}}Wikibooks:Strona}}}} → {{Tt|{{#invoke:Pudełko|Nazwa przestrzeni nazw dyskusji 3|nazwa przestrzeni nazw=|nazwa jednostki=Wikibooks:Szablon}}}} * {{Code|{{m|Pudełko|Nazwa przestrzeni nazw dyskusji 3|nazwa przestrzeni nazw 2{{=}}|nazwa jednostki 2{{=}}Wikibooks:Strona|numer jednostki{{=}}2}}}} → {{Tt|{{#invoke:Pudełko|Nazwa przestrzeni nazw dyskusji 3|nazwa przestrzeni nazw 2=|nazwa jednostki 2=Wikibooks:Szablon|numer jednostki=2}}}} Powyżej dla przykładu podano parametry nie w rodzicu w szablonie, tylko w dziecku, jeśli chodzi o parametry nazw przestrzeni nazw i nazw jednostek, ale ich się za to nie powinno podawać w tych ramach, tylko w szablonach, w których wywoływane są te ramki pudełek {{Code|{{m|Pudełko}}}}, ale tak tutaj tak zrobiono by było najłatwiej sprawdzić działanie tego typu funkcji. Analogicznie możemy podawać parametry typu jednostki, np.: wywołaniu modułowym {{Code|{{m|Pudełko|Nazwa przestrzeni nazw dyskusji 3|typ jednostki 2{{=}}Podręcznik|nazwa jednostki 2{{=}}Szablon:Strona|numer jednostki{{=}}2}}}} (ale wtedy jest brana przestrzeń nazw z nazwy jednostki), ale o tym więcej w rozdziałach {{Code|{{sr|# p["Dyskusyjny typ jednostki 3"](frame,i)|p=Pudełko}}}} w „{{sr|#Funkcje typu jednostki|p=Pudełko}}”, one definiują przestrzenie dyskusji, ale można użyć parametru dyskusji typu jednostki z obojętnie jaką wartością niepustą, czy pustą, czy nawet jej nie podamy, wtedy wyświetli się nazwa przestrzeni nazw dyskusji. Jeżeli typ jednostki bazowy wskazuje na przestrzeń nazw główną, wtedy się nie liczą parametry nazw jednostek, a na numerkowy, wtedy się liczy. Również parametry typu jednostki nie powinno się podawać w dziecku w ramce, tylko w rodzicu w szablonie jako parametry, w którym ta ramka jest wywoływana, ale tutaj podano jedynie dla przykładu, jak najłatwiej sprawdzić działanie tych parametrów tej funkcji. Najpierw w funkcji nagłówku brane są parametry nazw przestrzeni nazw, a jeżeli ich nie ma, to parametry typu jednostki, a jeżeli nie ma lub parametry przestrzenne wskazują na przestrzeń główną, i nie ma nazwy jednostki, to generowane są nazwy tej funkcji na podstawie aktualnej strony. == Funkcje nazw jednostki trzeciej wersji == === {{Code|p["Nazwa jednostki 3"](frame,i)}} === === {{Code|p["Nazwa przedmiotowa jednostki 3"](frame,i)}} === === {{Code|p["Nazwa dyskusji jednostki 3"](frame,i)}} === == Funkcje typu jednostki == === {{Code|p["Typ jednostki"](frame,i)}} === === {{Code|p["Typ jednostki 2"](frame,i)}} === === {{Code|p["Typ jednostki 3"](frame,i)}} === === Funkcje typu jednostki przedmiotowe === ==== {{Code|p["Przedmiotowy typ jednostki"](frame,i)}} ==== ==== {{Code|p["Przedmiotowy typ jednostki 2"](frame,i)}} ==== ==== {{Code|p["Przedmiotowy typ jednostki 3"](frame,i)}} ==== === Fukcje typu jednostki dyskusji === ==== {{Code|p["Dyskusyjny typ jednostki"](frame,i)}} ==== ==== {{Code|p["Dyskusyjny typ jednostki 2"](frame,i)}} ==== ==== {{Code|p["Dyskusyjny typ jednostki 3"](frame,i)}} ==== == Funkcje chech pudełka == === {{Code|p["Cecha pudełka"](frame)}} === === {{Code|p["Przedmiotowa cecha pudełka"](frame)}} === === {{Code|p["Dyskusyjna cecha pudełka"](frame)}} === == Fukcje ogólnego pudełka == === {{Code|p["Ogólne pudełko"](frame)}} === == Funkcje ogólne == === {{Code|p["Tekst pudełka"](frame)}} === == Funkcje błędów pudełka == === {{Code|p["Błędy pudełka"](frame)}} === === {{Code|p["Przedmiotowe błędy pudełka"](frame)}} === === {{Code|p["Dyskusyjne błędy pudełka"](frame)}} === == Funkcje nazw stron == === {{Code|p["Nazwa strony głównej projektu"](frame,i)}} === === {{Code|p["Nazwa strony głównej dla dzieci projektu"](frame,i)}} === == Funkcje kodów == === {{Code|p["Kod języka"](frame,i)}} === === {{Code|p["Kod projektu"](frame,i)}} === === {{Code|p["Klucz projektu"](frame,i)}} === == Funkcje wiki == === {{Code|p["Inny niż język bieżący wiki"](frame)}} === === {{Code|p["Inne niż lokalne wiki"](frame)}} === === {{Code|p["Inne niż bieżące wiki"](frame)}} === == Funkcje typów parametrów, czy podane je == === {{Code|p["Podano parametry nienazwane"](frame)}} === === {{Code|p["Podano parametry numerowane"](frame)}} === === {{Code|p["Podano parametry nazwane"](frame)}} === == Funkcje kodów tego projektu == === {{Code|p["Kod projektu tego projektu"](frame)}} === === {{Code|p["Kod języka tego projektu"](frame)}} === === {{Code|p["Klucz projektu tego projektu"](frame)}} === == Funkcje stron == === {{Code|p["Strona główna tego projektu"](frame)}} === === {{Code|p["Strona główna dla dzieci tego projektu"](frame)}} === == Funkcje nazw stron drugiej wersji == === {{Code|p["Nazwa strony głównej dla dzieci projektu 2"](frame)}} === === {{Code| p["Nazwa strony głównej projektu 2"](frame)}} === {{BrClear}} <noinclude><!-- -->{{ProstaStronaKoniec}}<!-- -->{{Kategoria|Opisy funkcji, w Lua w Scribunto, w modułach}}<!-- --></noinclude> q5jor2yodn3ksgtwxxzh0ul4eswaw1d 540455 540454 2026-04-24T05:51:39Z Persino 2851 /* {{Code|p["Nazwa przestrzeni nazw"](frame,...)}} */ 540455 wikitext text/x-wiki <noinclude>{{ProstaStronaStart | nagłówek = {{Podrozdział|{{ld2|Pudełko}}|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 pudelko_modul=require("Module:Pudełko"); </syntaxhighlight> dzięki, któremu można wypisywać funkcje należącego do niego. Posługuje się na parametrach pudełkowych {{Parametr|nazwa przestrzeni nazw}} (czy też bez numerka {{Parametr|nazwa przestrzeni nazw i}} dla tego numerowanego) lub te z numerkiem po jednej spacji w nich (ale nie dla tego z końcówką {{Code| i}}) mogą zostać użyte jako parametry szablonu. Moduł {{Code|{{ld2|Pudełko}}}} przedstawia funkcje nazw w oparciu o funkcje nazw {{Code|{{ld2|Nazwy}}}}, generuje on nazwy za pomocą parametrów pudełkowych podanych poniżej. Parametr {{Parametr|nazwa jednostki}} (lub parametr {{Parametr|cel}} dla numerka tego pierwszego, tego alternatywnego), lub te z numerkiem po jednej spacji w nazwie parametru, albo numerowane numerkami {{Code|1}}, {{Code|2}},..., mogą zostać użyte jako parametry szablonu. Parametry określające rodzaj jednostki {{Parametr|typ jednostki}} z {{Parametr|dyskusja typu jednostki}}, itp. w wersjach z numerkiem po jednej spacji w nich mogą zostać użyte jako parametry szablonu. A te tymi numerowanymi liczbami naturalnymi {{Tt|nazwy jednostki}} od jedynki wzwyż poprzez szablon, w którym są one użyte, one też mogą być użyte z dwukropkiem, te numerowane, na samym początku nazwy, wtedy one są traktowane jako pełne nazwy strony, i wtedy one nie zostaną z interpretowane, że do nich trzeba użyć parametr odpowiedni z nazwą przetrzeni nazw z tego numerowanego, czy ogólny, aby utworzyć znów inną pełną nazwę strony dla tego numerka. Zestawienie: * {{Code|nazwa przestrzeni nazw}} i {{Code|nazwa przestrzeni nazw i}} (ogólna nazwa przestrzeni nazw dla wszystkich numerków, i tych numerowanych jednostek) - i to pierwsze z numerkiem, tzn. {{Code|nazwa przestrzeni nazw 1}}, {{Code|nazwa przestrzeni nazw 2}}, ..., * {{Code|nazwa jednostki}} - i te z numerkiem: {{Code|nazwa jednostki 1}}, {{Code|nazwa jednostki 2}}, ..., lub gdy jest zamiast tego parametrem numerowany, {{Code|1}}, {{Code|2}},..., który dla tego pierwszego może być uznany jako: {{Code|cel}} {{=}} {{Code|1}}, * {{Code|typ jednostki}} (parametr bazowy) i {{Code|typ jednostki i}} (parametr domyślny numerkowy) - i te z numerkiem: {{Code|typ jednostki 1}}, {{Code|typ jednostki 2}}, ..., tzn. gdy chcemy określić z jakim typem jednostki mamy do czynienia w zależności do jakiej przestrzeni nazw należy, a w danej, czy jest on np. programowy, czy tylko jest opisem, jak to bywa w szablonach {{Np|Template|link=tak}}, podobnie jest w przypadku {{Np|Module|link=tak}}, czy jak jest w innych przestrzeniach nazw, ** {{Code|dyskusja typu jednostki}} (parametr bazowy) i {{Code|dyskusja typu jednostki i}} (parametr domyślny numerkowy) - i te z numerkiem: {{Code|dyskusja typu jednostki 1}}, {{Code|dyskusja typu jednostki 2}}, ..., gdy chcemy określić wartością niepustą,że chodzi tutaj o typ jednostki. == {{Code|p.CzyNiepoprawnaNazwa(nazwa_jednostki)}} == Funkcja sprawdzajaca, czy jest poprawnie podana nazwa jednostki, czy ma poprawną nazwę. Znakami tymi, z których nie powinna składać się nazwa jest {{Code|<nowiki>{}<>|[]#\n</nowiki>}} i dodatkowo znak {{Code|&#127;}} (kod {{Code|{{Nowiki|&#127;}}}}). Też nie może składać się z trzech znaków tyldy, tzn. {{Code|<nowiki>~~~</nowiki>}}. Również w swojej budowie nie może składać się ze kodów {{Strong|HTML}} literowych o wzorze {{Code|{{Nowiki|&(%a+);}}}}. Natomiast może składać się z {{Code|{{Nowiki|&#(%d+);}}}} i {{Code|{{Nowiki|&#x(%x+);}}}}, ale w pierw te kody muszą być zamienione na normalne znaki. Skrótowa definicja funkcji: <syntaxhighlight lang="lua"> function p.CzyNiepoprawnaNazwa(nazwa_jednostki)...end; </syntaxhighlight> Wtedy ciało funkcji tej, czyli jego definicja w środku, jest: <syntaxhighlight lang="lua"> -- Moduł: "Moduł:Html/dane", służy do ładowania znaku o kodzie HTML "&#127;"; local html_dane_modul=mw.loadData("Module:Html/dane"); return mw.ustring.match(nazwa_jednostki,"[{}<>|%[%]#\n"..html_dane_modul.znak_127.."]+") or mw.ustring.match(nazwa_jednostki,"~~~") or mw.ustring.match(nazwa_jednostki,"&(%a+);"); </syntaxhighlight> Parametry: * {{Code|nazwa_jednostki}} - nazwa jednostki do sprawdzenia. Przykłady: <syntaxhighlight lang="lua"> local pudelko_modul=require("Module:Pudełko"); -- Podana przykładowa niepoprawna nazwa jedostki local nazwa_jednostki="Nazwa pliku [[Nazwa linku w pliku]]"; -- Fukcja zwróci wartość: local czy_poprawna_nazwa=true; local czy_poprawna_nazwa=pudelko_modul.CzyNiepoprawnaNazwa(nazwa_jednostki); </syntaxhighlight> == Funkcje nazw przestrzeni nazw == === {{Code|p["Nazwa przestrzeni nazw"](frame,...)}} === Funkcja pisze nazwę przestrzeni nazw, niezależnie, czy to jest przedmiotowa, czy dyskusji, według podanej w zmiennej {{Code|nazwa przestrzeni nazw}} dla pozycja bazowej w podanych parametrach szablonu rodzicu ramki dziecka, lub dla innej pozycji należy parametr podawać w formie {{Code|nazwa przestrzeni nazw 1}}, {{Code|nazwa przestrzeni nazw 2}}, {{Code|nazwa przestrzeni nazw 3}},..., lub te parametry można podać w postaci ogólnej {{Code|nazwa przestrzeni nazw i}}. Parametry podaje się w parametrach rodzica wywołania tej funkcji {{Code|{{m|Pudełko|Nazwa przestrzeni nazw}}}} (ale ich nie trzeba podawać w dziecku, ale można) i w parametrach dziecka, jeśli chodzi o zmienną {{Code|numer jednostki}}, czyli np.: {{Code|{{m|Pudełko|Nazwa przestrzeni nazw|numer jednostki{{=}}<jakaś liczba całkowita dodatnia>}}}}. Te parametry przestrzenne zamiast w rodzicu w szablonie można podać w ramce dziecka, wtedy parametry dziecka mają pierwszeństwo. Przestrzeń nazw z parametrów nazw przestrzennych może odpowiadać wartości przestrzeni głównej, to wtedy odpowiednia przestrzeń nazw z parametru nazwy jednostki się nie liczy w tej funkcji, aby się liczyła należy użyć funkcji {{Code|{{sr|#p["Nazwa przestrzeni nazw 2"](frame,...)|p=Pudełko}}}}. Definicja skrótowa funkcji: <syntaxhighlight lang="lua"> p["Nazwa przestrzeni nazw"]=function(frame,czy_uwzglednic_alternatywna_nazwe,i)...end; </syntaxhighlight> Wtedy ciało funkcji tej, czyli jego definicja w środku, jest: <syntaxhighlight lang="lua"> -- Jest liczony numer parametru nazwy przestrzeni nazw, domyslnie chodzi tu o numer bazowy parametrów przestrzennych; local numer_jednostki=i or frame.args["numer jednostki"]; local liczba_numer_jednostki=((numer_jednostki)and(tonumber(numer_jednostki))or 0); local pudelko_pomocne_modul=require("Module:Pudełko/Pomocne"); -- Liczy nazwę przestrzeni nazw na podstawie podanych parametrów; return pudelko_pomocne_modul.Nazwa_przestrzeni_nazw(frame,0, czy_uwzglednic_alternatywna_nazwe,liczba_numer_jednostki); </syntaxhighlight> Parametry funkcji: * {{Code|frame}} - tablica ramki tablicy transportu, * {{Code|czy_uwzglednic_alternatywna_nazwe}} - czy ma uwzględniać nazwę przestrzeni nazw domyślną szablonu, dostępne wartości: {{Code|false}}, w której nazwa domyślna nie jest uwzględniana wtedy, oraz {{Code|nil}} i {{Code|true}}, które oznaczają to samo, w tym jeżeli ona jest uwzględniana, wtedy jest brany parametr pierwszy dziecka, który musi istnieć przy takiej wartości tego parametru, tzn. {{Code|{{m|Pudełko|Nazwa przestrzeni nazw|Szablon}}}}, a jeśli nazwa uzyskana nazwy przestrzeni nazw jest w takim przypadku błędna, czyli {{Code|{{m|Pudełko|Nazwa przestrzeni nazw|Moja przestrzeń}}}}, wtedy funkcja zwraca stan błędu {{Code|(błąd)}}. * {{Code|i}} - numer zmiennej nazwy przestrzeni nazw. Funkcja wykorzystuje {{Code|{{sr|#p.Nazwa_przestrzeni_nazw(frame,...)|p=Pudełko/Pomocne}}}} do wyznaczania ogólnego nazwy przestrzeni nazw dla pozycji bazowej i numerkowej, tzn. dla pozycji: jeden, dwa, trzy,..., itd, i ich ogólnej. Parametr ramki tablicy transportu rodzica szablonu: * {{Code|nazwa przestrzeni nazw}}, {{Code|nazwa przestrzeni nazw 1}}, {{Code|nazwa przestrzeni nazw 2}}, {{Code|nazwa przestrzeni nazw 3}},..., {{Code|nazwa przestrzeni nazw i}} - nazwy przestrzeni nazw dla pozycji bazowej oraz zwykłej i ogólnej numerkowej, * {{Code|typ jednostki}}, {{Code|typ jednostki 1}}, {{Code|typ jednostki 2}}, {{Code|typ jednostki 3}},..., {{Code|typ jednostki i}} - typy jednostek, którym odpowiadają pewne przestrzenie przedmiotowe, dla pozycji bazowej, numerkowej i ogólnej, ** {{Code|dyskusja typu jednostki}}, {{Code|dyskusja typu jednostki 1}}, {{Code|dyskusja typ jednostki 2}}, {{Code|dyskusja typ jednostki 3}},..., {{Code|dyskusja typ jednostki i}} - czy dany typ jednostki ma przedstawiać, jeśli niepusta, przestrzeń dyskusji dla pozycji bazowej, numerkowej i ogólnej. Parametry ramki tablicy transportu dziecka: * Parametry dziecka są takie same jak rodzica dla funkcji pudełkowej plus tu wymienione, * {{Code|numer jednostki}} - jak parametr {{Code|i}} nie został ustawiony, to wtedy liczy się ta zmienna. Przykłady: <syntaxhighlight lang="mediawiki"> {{Nazwa szablonu|nazwa przestrzeni nazw=Wikibooks|nazwa przestrzeni nazw 2=Szablon|nazwa przestrzeni nazw i=Moduł}} </syntaxhighlight> W dziecku powiedzmy jest wywołanie, i szukamy nazwy przestrzeni nazw o numerze dwa, która nie została podana, ale istnieje za to jej wersji ogólna {{Code|nazwa przestrzeni nazw i}} i domyślna {{Code|nazwa przestrzeni nazw}}: <syntaxhighlight lang="mediawiki"> {{#invoke:Pudełko|Nazwa przestrzeni nazw|numer jednostki=1}} </syntaxhighlight> Na podstawie powyższego przykładu otrzymamy wynik o schemacie, nie wyniku, bo tam nie ma zmiennej {{Code|nazwa przestrzeni nazw 1}}, ale jest {{Code|nazwa przestrzeni nazw i}}: <syntaxhighlight lang="mediawiki"> <!-- Ale nie "nazwa przestrzeni nazw", bo jej nie ma, ale za to istnieje "nazwa przestrzeni nazw i"; --> <!-- nazwa przestrzeni nazw 2=nazwa przestrzeni nazw i=Moduł; --> <!-- Czyli wynik: --> Moduł <!-- Widzimy, że wygenerowała się nazwa przestrzeni nazw, którą jest przestrzeń programowa, którą również jest "Szablon"; --> </syntaxhighlight> Nie jest brana w tym powyższym przykładzie zmienna {{Code|nazwa przestrzeni nazw}}, bo jej nie ma, ale za to jest {{Code|nazwa przestrzeni nazw i}}, bo ona występuje jako parametr domyślny ogólny dla parametrów numerkowych. Przykłady w wikikodzie: * {{Code|{{m|Pudełko|Nazwa przestrzeni nazw|numer jednostki{{=}}2}}}} → {{Tt|{{#invoke:Pudełko|Nazwa przestrzeni nazw|numer jednostki=2}}}} * {{Code|{{m|Pudełko|Nazwa przestrzeni nazw|Szablon|nazwa przestrzeni nazw i{{=}}Moja przestrzeń|numer jednostki{{=}}2}}}} → {{Tt|{{#invoke:Pudełko|Nazwa przestrzeni nazw|Szablon|nazwa przestrzeni nazw i=Moja przestrzeń|numer jednostki=2}}}} * {{Code|{{m|Pudełko|Nazwa przestrzeni nazw|nazwa przestrzeni nazw 2{{=}}Szablon|numer jednostki{{=}}2}}}} → {{Tt|{{#invoke:Pudełko|Nazwa przestrzeni nazw|nazwa przestrzeni nazw 2=Szablon|numer jednostki=2}}}} * {{Code|{{m|Pudełko|Nazwa przestrzeni nazw|nazwa przestrzeni nazw 2{{=}}Szablon|numer jednostki{{=}}2}}}} → {{Tt|{{#invoke:Pudełko|Nazwa przestrzeni nazw|nazwa przestrzeni nazw i=Szablon|numer jednostki=2}}}} * {{Code|{{m|Pudełko|Nazwa przestrzeni nazw|nazwa przestrzeni nazw{{=}}Szablon|numer jednostki{{=}}2}}}} → {{Tt|{{#invoke:Pudełko|Nazwa przestrzeni nazw|nazwa przestrzeni nazw=Szablon|numer jednostki=2}}}} Powyżej dla przykładu podano parametry nie w rodzicu w szablonie, tylko w dziecku, jeśli chodzi o parametry nazw przestrzeni nazw, ale ich się za to nie powinno podawać w tych ramach, tylko w szablonach, w których wywoływane są te ramki pudełek {{Code|{{m|Pudełko}}}}, ale tak tutaj tak zrobiono by było najłatwiej sprawdzić działanie tego typu funkcji. Analogicznie możemy podawać parametry typu jednostki, np.: wywołaniu modułowym {{Code|{{m|Pudełko|Nazwa przestrzeni nazw|typ jednostki 2{{=}}strona szablonu|numer jednostki{{=}}2}}}}, ale o tym więcej w rozdziałach {{Code|{{sr|# p["Typ jednostki"](frame,i)|p=Pudełko}}}} w „{{sr|#Funkcje typu jednostki|p=Pudełko}}”, on definiuje przestrzenie przedmiotowe, ale można użyć parametru dyskusji typu jednostki z wartością niepustą, wtedy wyświetli się nazwa przestrzeni nazw dyskusji. Również parametry typu jednostki nie powinno się podawać w dziecku w ramce, tylko w rodzicu w szablonie jako parametry, w którym ta ramka jest wywoływana, ale tutaj podano jedynie dla przykładu, jak najłatwiej sprawdzić działanie tych parametrów tej funkcji. Najpierw w funkcji nagłówku brane są parametry nazw przestrzeni nazw, a jeżeli ich nie ma, to parametry typu jednostki, a jeżeli nie ma, to generowane są nazwy na podstawie aktualnego modułu. === {{Code|p["Nazwa przedmiotowej przestrzeni nazw"](frame,...)}} === Funkcja pisze przedmiotową nazwę przestrzeni nazw jakikolwiek nazwy przestrzeni nazw (tzn. nazwę przedmiotową nazwy przestrzenie nazw, czyli nie dyskusji, zamieniana jest na nią samą, czyli identyfikator przestrzeni się nie zmienia, a dyskusji, nie przedmiotową, przekształca się na przedmiotową jej odpowiadającą, czyli w tym przypadku identyfikator przestrzeni zmniejsza się o numer mniej), według podanej w zmiennej {{Code|nazwa przestrzeni nazw}} dla pozycja bazowej w podanych parametrach szablonu rodzicu ramki dziecka, lub dla innej pozycji należy parametr podawać w formie {{Code|nazwa przestrzeni nazw 1}}, {{Code|nazwa przestrzeni nazw 2}}, {{Code|nazwa przestrzeni nazw 3}},..., lub te parametry można podać w postaci ogólnej {{Code|nazwa przestrzeni nazw i}}. Parametry podaje się w parametrach rodzica wywołania tej funkcji {{Code|{{m|Pudełko|Nazwa przedmiotowej przestrzeni nazw}}}} (ale ich nie trzeba podawać w dziecku, ale można) i w parametrach dziecka, jeśli chodzi o zmienną {{Code|numer jednostki}}, czyli np.: {{Code|{{m|Pudełko|Nazwa przedmiotowej przestrzeni nazw|numer jednostki{{=}}<jakaś liczba całkowita dodatnia>}}}}. Te parametry przestrzenne zamiast w rodzicu w szablonie można podać w ramce dziecka, wtedy parametry dziecka mają pierwszeństwo. Parametry przestrzenne mogą mogą być podane w postaci przestrzeni przedmiotowej lub dyskusji, ale ta funkcja zawsze ją zamienia na przedmiotową. Przestrzeń nazw z parametrów nazw przestrzennych może odpowiadać wartości przestrzeni głównej, to wtedy odpowiednia przestrzeń nazw z parametru nazwy jednostki się nie liczy w tej funkcji, aby się liczyła należy użyć funkcji {{Code|{{sr|#p["Nazwa przedmiotowej przestrzeni nazw 2"](frame,...)|p=Pudełko}}}}. Definicja skrótowa funkcji: <syntaxhighlight lang="lua"> p["Nazwa przedmiotowej przestrzeni nazw"]=function(frame,czy_uwzglednic_alternatywna_nazwe,i)...end; </syntaxhighlight> Wtedy ciało funkcji tej, czyli jego definicja w środku, jest: <syntaxhighlight lang="lua"> -- Jest liczony numer parametru nazwy przestrzeni nazw, domyslnie chodzi tu o numer bazowy parametrów przestrzennych; local numer_jednostki=i or frame.args["numer jednostki"]; local liczba_numer_jednostki=((numer_jednostki)and(tonumber(numer_jednostki))or 0); local pudelko_pomocne_modul=require("Module:Pudełko/Pomocne"); -- Liczy nazwę przestrzeni nazw przedmiotową na podstawie podanych parametrów; return pudelko_pomocne_modul.Nazwa_przestrzeni_nazw(frame,1, czy_uwzglednic_alternatywna_nazwe,liczba_numer_jednostki); </syntaxhighlight> Parametry funkcji: * {{Code|frame}} - tablica ramki tablicy transportu, * {{Code|czy_uwzglednic_alternatywna_nazwe}} - czy ma uwzględniać nazwę przestrzeni nazw domyślną szablonu, dostępne wartości: {{Code|false}}, w której nazwa domyślna nie jest uwzględniana wtedy, oraz {{Code|nil}} i {{Code|true}}, które oznaczają to samo, w tym jeżeli ona jest uwzględniana, wtedy jest brany parametr pierwszy dziecka, który musi istnieć przy takiej wartości tego parametru, tzn. {{Code|{{m|Pudełko|Nazwa przedmiotowej przestrzeni nazw|Dyskusja szablonu}}}} - ta nazwa domyślna zostanie zamieniona na przedmiotową, a jak ona by była przedmiotowa, to żadnej zamiany, by nie było, a jeśli nazwa uzyskana z nazwy przestrzeni nazw z parametrów przestrzennych jest w takim przypadku błędna, to w takim razie brany jest ten parametr, a jeżeli ta nazwa domyślna jest błędna, czyli {{Code|{{m|Pudełko|Nazwa przedmiotowej przestrzeni nazw|Moja przestrzeń}}}}, wtedy funkcja zwraca stan błędu {{Code|(błąd)}}. * {{Code|i}} - numer zmiennej nazwy przestrzeni nazw. Funkcja wykorzystuje {{Code|{{sr|#p.Nazwa_przestrzeni_nazw(frame,...)|p=Pudełko/Pomocne}}}} do wyznaczania ogólnego nazwy przestrzeni nazw dla pozycji bazowej i numerkowej, tzn. dla pozycji: jeden, dwa, trzy,..., itd, i ich ogólnej. Parametr ramki tablicy transportu rodzica szablonu: * {{Code|nazwa przestrzeni nazw}}, {{Code|nazwa przestrzeni nazw 1}}, {{Code|nazwa przestrzeni nazw 2}}, {{Code|nazwa przestrzeni nazw 3}},..., {{Code|nazwa przestrzeni nazw i}} - nazwy przestrzeni nazw dla pozycji bazowej oraz zwykłej i ogólnej numerkowej, * {{Code|typ jednostki}}, {{Code|typ jednostki 1}}, {{Code|typ jednostki 2}}, {{Code|typ jednostki 3}},..., {{Code|typ jednostki i}} - typy jednostek, którym odpowiadają pewne przestrzenie przedmiotowe, dla pozycji bazowej, numerkowej i ogólnej. Parametry ramki tablicy transportu dziecka: * Parametry dziecka są takie same jak rodzica dla funkcji pudełkowej plus tu wymienione, * {{Code|numer jednostki}} - jak parametr {{Code|i}} nie został ustawiony, to wtedy liczy się ta zmienna. Przykłady: <syntaxhighlight lang="mediawiki"> {{Nazwa szablonu|nazwa przestrzeni nazw=Dyskusja Wikibooks|nazwa przestrzeni nazw 2=Dyskusja szablonu|nazwa przestrzeni nazw i=Dyskusja modułu}} </syntaxhighlight> W dziecku powiedzmy jest wywołanie, i szukamy nazwy przestrzeni nazw o numerze dwa, która nie została podana, ale istnieje za to jej wersji ogólna {{Code|nazwa przestrzeni nazw i}} i domyślna {{Code|nazwa przestrzeni nazw}}: <syntaxhighlight lang="mediawiki"> {{#invoke:Pudełko|Nazwa przedmiotowej przestrzeni nazw|numer jednostki=1}} </syntaxhighlight> Na podstawie powyższego przykładu otrzymamy wynik o schemacie, nie wyniku, bo tam nie ma zmiennej {{Code|nazwa przestrzeni nazw 1}}, ale jest {{Code|nazwa przestrzeni nazw i}}: <syntaxhighlight lang="mediawiki"> <!-- Ale nie "nazwa przestrzeni nazw", bo jej nie ma, ale za to istnieje "nazwa przestrzeni nazw i"; --> <!-- nazwa przestrzeni nazw 2=nazwa przestrzeni nazw i=Dyskusja modułu; --> <!-- Czyli wynik: --> Moduł <!-- Widzimy, że wygenerowała się nazwa przestrzeni nazw, którą jest przestrzeń przedmiotowa programowa przestrzeni dyskusji "Dyskusja modułu", którą również jest "Szablon" jego przestrzeni dyskusji "Dyskusja szablonu", a dla ich przestrzeni przedmiotowej, zamiast dyskusji, to samo przekształca się na to samo; --> </syntaxhighlight> Nie jest brana w tym powyższym przykładzie zmienna {{Code|nazwa przestrzeni nazw}}, bo jej nie ma, ale za to jest {{Code|nazwa przestrzeni nazw i}}, bo ona występuje jako parametr domyślny ogólny dla parametrów numerkowych. Przykłady w wikikodzie: * {{Code|{{m|Pudełko|Nazwa przedmiotowej przestrzeni nazw|numer jednostki{{=}}2}}}} → {{Tt|{{#invoke:Pudełko|Nazwa przedmiotowej przestrzeni nazw|numer jednostki=2}}}} * {{Code|{{m|Pudełko|Nazwa przedmiotowej przestrzeni nazw|Dyskusja szablonu|nazwa przestrzeni nazw i{{=}}Moja przestrzeń|numer jednostki{{=}}2}}}} → {{Tt|{{#invoke:Pudełko|Nazwa przedmiotowej przestrzeni nazw|Dyskusja szablonu|nazwa przestrzeni nazw i=Moja przestrzeń|numer jednostki=2}}}} * {{Code|{{m|Pudełko|Nazwa przedmiotowej przestrzeni nazw|nazwa przestrzeni nazw 2{{=}}Dyskusja szablonu|numer jednostki{{=}}2}}}} → {{Tt|{{#invoke:Pudełko|Nazwa przedmiotowej przestrzeni nazw|nazwa przestrzeni nazw 2=Dyskusja szablonu|numer jednostki=2}}}} * {{Code|{{m|Pudełko|Nazwa przedmiotowej przestrzeni nazw|nazwa przestrzeni nazw 2{{=}}Dyskusja szablonu|numer jednostki{{=}}2}}}} → {{Tt|{{#invoke:Pudełko|Nazwa przedmiotowej przestrzeni nazw|nazwa przestrzeni nazw i=Dyskusja szablonu|numer jednostki=2}}}} * {{Code|{{m|Pudełko|Nazwa przedmiotowej przestrzeni nazw|nazwa przestrzeni nazw{{=}}Dyskusja szablonu|numer jednostki{{=}}2}}}} → {{Tt|{{#invoke:Pudełko|Nazwa przedmiotowej przestrzeni nazw|nazwa przestrzeni nazw=Dyskusja szablonu|numer jednostki=2}}}} Powyżej dla przykładu podano parametry nie w rodzicu w szablonie, tylko w dziecku, jeśli chodzi o parametry nazw przestrzeni nazw, ale ich się za to nie powinno podawać w tych ramach, tylko w szablonach, w których wywoływane są te ramki pudełek {{Code|{{m|Pudełko}}}}, ale tak tutaj tak zrobiono by było najłatwiej sprawdzić działanie tego typu funkcji. Analogicznie możemy podawać parametry typu jednostki, np.: wywołaniu modułowym {{Code|{{m|Pudełko|Nazwa przedmiotowej przestrzeni nazw|typ jednostki 2{{=}}strona szablonu|numer jednostki{{=}}2}}}}, ale o tym więcej w rozdziałach {{Code|{{sr|# p["Przedmiotowy typ jednostki"](frame,i)|p=Pudełko}}}} w „{{sr|#Funkcje typu jednostki|p=Pudełko}}”, ale wtedy ta sama nazwa przestrzeni nazw reprezentowana przez {{Parametr|typ jednostki 2|strona szablonu}}, jest zamieniana na to samo, lepiej jest tutaj używać parametrów przestrzennych nazw niż typu jednostki, bo typ jednostki ma taką samą wartość dla przestrzeni przedmiotowej, co dyskusji. Tutaj parametr dyskusji typu jednostki bazowy i numerkowy ogólny, czy szczegółowy, nie gra roli, bo nawet, gdy wygenerujemy nazwę przestrzeni dyskusji za pomoca tego parametru, to i tak otrzymamy na samym końcu jego nazwę przedmiotową. Również parametry typu jednostki nie powinno się podawać w dziecku w ramce, tylko w rodzicu w szablonie jako parametry, w którym ta ramka jest wywoływana, ale tutaj podano jedynie dla przykładu, jak najłatwiej sprawdzić działanie tych parametrów tej funkcji. Najpierw w funkcji nagłówku brane są parametry nazw przestrzeni nazw, a jeżeli ich nie ma, to parametry typu jednostki, a jeżeli nie ma, to generowane są nazwy na podstawie aktualnego modułu. === {{Code|p["Nazwa przestrzeni nazw dyskusji"](frame,...)}} === Funkcja pisze nazwę przestrzeni nazw dyskusji jakikolwiek nazwy przestrzeni nazw (tzn. nazwę przedmiotową nazwy przestrzenie nazw, czyli nie dyskusji, zamieniana jest na dyskusji, czyli identyfikator przestrzeni się zmienia jeden wyżej, a dyskusji, nie przedmiotową, przekształca się na tą samą), według podanej w zmiennej {{Code|nazwa przestrzeni nazw}} dla pozycja bazowej w podanych parametrach szablonu rodzicu ramki dziecka, lub dla innej pozycji należy parametr podawać w formie {{Code|nazwa przestrzeni nazw 1}}, {{Code|nazwa przestrzeni nazw 2}}, {{Code|nazwa przestrzeni nazw 3}},..., lub te parametry można podać w postaci ogólnej {{Code|nazwa przestrzeni nazw i}}. Parametry podaje się w parametrach rodzica wywołania tej funkcji {{Code|{{m|Pudełko|Nazwa przestrzeni nazw dyskusji}}}} (ale ich nie trzeba podawać w dziecku, ale można) i w parametrach dziecka, jeśli chodzi o zmienną {{Code|numer jednostki}}, czyli np.: {{Code|{{m|Pudełko|Nazwa przestrzeni nazw dyskusji|numer jednostki{{=}}<jakaś liczba całkowita dodatnia>}}}}. Te parametry przestrzenne zamiast w rodzicu w szablonie można podać w ramce dziecka, wtedy parametry dziecka mają pierwszeństwo. Parametry przestrzenne mogą mogą być podane w postaci przestrzeni przedmiotowej lub dyskusji, ale ta funkcja zawsze ją zamienia na dyskusji. Przestrzeń nazw z parametrów nazw przestrzennych może odpowiadać wartości przestrzeni głównej, to wtedy odpowiednia przestrzeń nazw z parametru nazwy jednostki się nie liczy w tej funkcji, aby się liczyła należy użyć funkcji {{Code|{{sr|#p["Nazwa przestrzeni nazw dyskusji 2"](frame,...)|p=Pudełko}}}}. Definicja skrótowa funkcji: <syntaxhighlight lang="lua"> p["Nazwa przestrzeni nazw dyskusji"]=function(frame,czy_uwzglednic_alternatywna_nazwe,i)...end; </syntaxhighlight> Wtedy ciało funkcji tej, czyli jego definicja w środku, jest: <syntaxhighlight lang="lua"> -- Jest liczony numer parametru nazwy przestrzeni nazw, domyslnie chodzi tu o numer bazowy parametrów przestrzennych; local numer_jednostki=i or frame.args["numer jednostki"]; local liczba_numer_jednostki=((numer_jednostki)and(tonumber(numer_jednostki))or 0); local pudelko_pomocne_modul=require("Module:Pudełko/Pomocne"); -- Liczy nazwę przestrzeni nazw dyskusji na podstawie podanych parametrów; return pudelko_pomocne_modul.Nazwa_przestrzeni_nazw(frame,2, czy_uwzglednic_alternatywna_nazwe,liczba_numer_jednostki); </syntaxhighlight> Parametry funkcji: * {{Code|frame}} - tablica ramki tablicy transportu, * {{Code|czy_uwzglednic_alternatywna_nazwe}} - czy ma uwzględniać nazwę przestrzeni nazw domyślną szablonu, dostępne wartości: {{Code|false}}, w której nazwa domyślna nie jest uwzględniana wtedy, oraz {{Code|nil}} i {{Code|true}}, które oznaczają to samo, w tym jeżeli ona jest uwzględniana, wtedy jest brany parametr pierwszy dziecka, który musi istnieć przy takiej wartości tego parametru, tzn. {{Code|{{m|Pudełko|Nazwa przestrzeni nazw dyskusji|Szablon}}}} - ta nazwa domyślna zostanie przekształcona na dyskusji, a jeżeli ona by była dyskusji, to nie byłoby żadnego przekształcenia, a jeśli nazwa uzyskana nazwy przestrzeni nazw z parametrów przestrzennych jest w takim przypadku błędna, to w takim razie brany jest ten parametr, a jeżeli nazwa domyślna jest błędna, czyli {{Code|{{m|Pudełko|Nazwa przestrzeni nazw dyskusji|Moja przestrzeń}}}}, wtedy funkcja zwraca stan błędu {{Code|(błąd)}}. * {{Code|i}} - numer zmiennej nazwy przestrzeni nazw. Funkcja wykorzystuje {{Code|{{sr|#p.Nazwa_przestrzeni_nazw(frame,...)|p=Pudełko/Pomocne}}}} do wyznaczania ogólnego nazwy przestrzeni nazw dla pozycji bazowej i numerkowej, tzn. dla pozycji: jeden, dwa, trzy,..., itd, i ich ogólnej. Parametr ramki tablicy transportu rodzica szablonu: * {{Code|nazwa przestrzeni nazw}}, {{Code|nazwa przestrzeni nazw 1}}, {{Code|nazwa przestrzeni nazw 2}}, {{Code|nazwa przestrzeni nazw 3}},..., {{Code|nazwa przestrzeni nazw i}} - nazwy przestrzeni nazw dla pozycji bazowej oraz zwykłej i ogólnej numerkowej, * {{Code|typ jednostki}}, {{Code|typ jednostki 1}}, {{Code|typ jednostki 2}}, {{Code|typ jednostki 3}},..., {{Code|typ jednostki i}} - typy jednostek, którym odpowiadają pewne przestrzenie przedmiotowe, dla pozycji bazowej, numerkowej i ogólnej. Parametry ramki tablicy transportu dziecka: * Parametry dziecka są takie same jak rodzica dla funkcji pudełkowej plus tu wymienione, * {{Code|numer jednostki}} - jak parametr {{Code|i}} nie został ustawiony, to wtedy liczy się ta zmienna. Przykłady: <syntaxhighlight lang="mediawiki"> {{Nazwa szablonu|nazwa przestrzeni nazw=Wikibooks|nazwa przestrzeni nazw 2=Szablon|nazwa przestrzeni nazw i=Moduł}} </syntaxhighlight> W dziecku powiedzmy jest wywołanie, i szukamy nazwy przestrzeni nazw o numerze dwa, która nie została podana, ale istnieje za to jej wersji ogólna {{Code|nazwa przestrzeni nazw i}} i domyślna {{Code|nazwa przestrzeni nazw}}: <syntaxhighlight lang="mediawiki"> {{#invoke:Pudełko|Nazwa przestrzeni nazw dyskusji|numer jednostki=1}} </syntaxhighlight> Na podstawie powyższego przykładu otrzymamy wynik o schemacie, nie wyniku, bo tam nie ma zmiennej {{Code|nazwa przestrzeni nazw 1}}, ale jest {{Code|nazwa przestrzeni nazw i}}: <syntaxhighlight lang="mediawiki"> <!-- Ale nie "nazwa przestrzeni nazw", bo jej nie ma, ale za to istnieje "nazwa przestrzeni nazw i"; --> <!-- nazwa przestrzeni nazw 2=nazwa przestrzeni nazw i=Moduł; --> <!-- Czyli wynik: --> Dyskusja modułu <!-- Widzimy, że wygenerowała się nazwa przestrzeni nazw, którą jest przestrzeń dyskusji przestrzeni programowej przestrzeni przedmiotowej "Moduł", którą również jest "Szablon" jego przestrzeni dyskusji "Dyskusja szablonu", a dla ich przestrzeni przedmiotowej, zamiast dyskusji, to przekształca się na dyskusji jej odpowiadającą; --> </syntaxhighlight> Nie jest brana w tym powyższym przykładzie zmienna {{Code|nazwa przestrzeni nazw}}, bo jej nie ma, ale za to jest {{Code|nazwa przestrzeni nazw i}}, bo ona występuje jako parametr domyślny ogólny dla parametrów numerkowych. Przykłady w wikikodzie: * {{Code|{{m|Pudełko|Nazwa przestrzeni nazw dyskusji|numer jednostki{{=}}2}}}} → {{Tt|{{#invoke:Pudełko|Nazwa przestrzeni nazw dyskusji|numer jednostki=2}}}} * {{Code|{{m|Pudełko|Nazwa przestrzeni nazw dyskusji|Szablon|nazwa przestrzeni nazw i{{=}}Moja przestrzeń|numer jednostki{{=}}2}}}} → {{Tt|{{#invoke:Pudełko|Nazwa przestrzeni nazw dyskusji|Szablon|nazwa przestrzeni nazw i=Moja przestrzeń|numer jednostki=2}}}} * {{Code|{{m|Pudełko|Nazwa przestrzeni nazw dyskusji|nazwa przestrzeni nazw 2{{=}}Szablon|numer jednostki{{=}}2}}}} → {{Tt|{{#invoke:Pudełko|Nazwa przestrzeni nazw dyskusji|nazwa przestrzeni nazw 2=Szablon|numer jednostki=2}}}} * {{Code|{{m|Pudełko|Nazwa przestrzeni nazw dyskusji|nazwa przestrzeni nazw 2{{=}}Szablon|numer jednostki{{=}}2}}}} → {{Tt|{{#invoke:Pudełko|Nazwa przestrzeni nazw dyskusji|nazwa przestrzeni nazw i=Szablon|numer jednostki=2}}}} * {{Code|{{m|Pudełko|Nazwa przestrzeni nazw dyskusji|nazwa przestrzeni nazw{{=}}Szablon|numer jednostki{{=}}2}}}} → {{Tt|{{#invoke:Pudełko|Nazwa przestrzeni nazw dyskusji|nazwa przestrzeni nazw=Szablon|numer jednostki=2}}}} Powyżej dla przykładu podano parametry nie w rodzicu w szablonie, tylko w dziecku, jeśli chodzi o parametry nazw przestrzeni nazw, ale ich się za to nie powinno podawać w tych ramach, tylko w szablonach, w których wywoływane są te ramki pudełek {{Code|{{m|Pudełko}}}}, ale tak tutaj tak zrobiono by było najłatwiej sprawdzić działanie tego typu funkcji. Analogicznie możemy podawać parametry typu jednostki, np.: wywołaniu modułowym {{Code|{{m|Pudełko|Nazwa przestrzeni nazw dyskusji|typ jednostki 2{{=}}strona szablonu|numer jednostki{{=}}2}}}}, ale o tym więcej w rozdziałach {{Code|{{sr|# p["Dyskusyjny typ jednostki"](frame,i)|p=Pudełko}}}} w „{{sr|#Funkcje typu jednostki|p=Pudełko}}”, ale wtedy nazwa przestrzeni nazw reprezentowana przez {{Parametr|typ jednostki 2|strona szablonu}}, jest zamieniana na nazwę przestrzeni nazw dyskusji. Parametr dyskusji typu jednostki bazowy lub dla danego numerka ogólny, czy szczegółowy, nie gra roli. Również parametry typu jednostki nie powinno się podawać w dziecku w ramce, tylko w rodzicu w szablonie jako parametry, w którym ta ramka jest wywoływana, ale tutaj podano jedynie dla przykładu, jak najłatwiej sprawdzić działanie tych parametrów tej funkcji. Najpierw w funkcji nagłówku brane są parametry nazw przestrzeni nazw, a jeżeli ich nie ma, to parametry typu jednostki, a jeżeli nie ma, to generowane są nazwy na podstawie aktualnego modułu. == Funkcje nazw przestrzeni nazw drugiej wersji == === {{Code|p["Nazwa przestrzeni nazw 2"](frame,...)}} === Funkcja pisze nazwę przestrzeni nazw, niezależnie, czy to jest przedmiotowa, czy dyskusji, według, i nie zawsze tylko, podanej w zmiennej {{Code|nazwa przestrzeni nazw}} dla pozycja bazowej w podanych parametrach szablonu rodzicu ramki dziecka, lub dla innej pozycji należy parametr podawać w formie {{Code|nazwa przestrzeni nazw 1}}, {{Code|nazwa przestrzeni nazw 2}}, {{Code|nazwa przestrzeni nazw 3}},..., lub te parametry można podać w postaci ogólnej {{Code|nazwa przestrzeni nazw i}}. W tej funkcji trzeba też podawać parametry nazwy jednostek {{Code|nazwa jednostki}}, {{Code|nazwa jednostki 1}}, {{Code|nazwa jednostki 2}}, {{Code|nazwa jednostki 3}},... Parametry podaje się w parametrach rodzica wywołania tej funkcji {{Code|{{m|Pudełko|Nazwa przestrzeni nazw 2}}}} (ale ich nie trzeba podawać w dziecku, ale można) i w parametrach dziecka, jeśli chodzi o zmienną {{Code|numer jednostki}}, czyli np.: {{Code|{{m|Pudełko|Nazwa przestrzeni nazw 2|numer jednostki{{=}}<jakaś liczba całkowita dodatnia>}}}}. Te parametry przestrzenne zamiast w rodzicu w szablonie można podać w ramce dziecka, wtedy parametry dziecka mają pierwszeństwo. Przestrzeń nazw z parametrów nazw przestrzennych może odpowiadać wartości przestrzeni głównej, to wtedy odpowiednia przestrzeń nazw z parametru nazwy jednostki się liczy w tej funkcji, wtedy jest liczona nazwa przestrzeni nazw z tego parametru. Gdy parametry przestrzenne lub typ jednostki w drugim podejściu nie wskazują na przestrzeń główną, to wtedy działanie tej funkcji jest podobne do {{Code|{{sr|#p["Nazwa przestrzeni nazw"](frame,...)|p=Pudełko}}}}. Definicja skrótowa funkcji: <syntaxhighlight lang="lua"> p["Nazwa przestrzeni nazw 2"]=function(frame,czy_uwzglednic_alternatywna_nazwe,i)...end; </syntaxhighlight> Wtedy ciało funkcji tej, czyli jego definicja w środku, jest: <syntaxhighlight lang="lua"> local pudelko_pomocne_modul=require("Module:Pudełko/Pomocne"); -- Liczy nazwę przestrzeni nazw, jeżeli z parametrów przestrzennych przestrzeń wskazuje na główną, to wtedy jest liczona przestrzeń nazw z nazwy jednostki; return pudelko_pomocne_modul.Nazwa_przestrzeni_nazw_2(frame,czy_uwzglednic_alternatywna_nazwe,i) </syntaxhighlight> Parametry funkcji: * {{Code|frame}} - tablica ramki tablicy transportu, * {{Code|czy_uwzglednic_alternatywna_nazwe}} - czy ma uwzględniać nazwę przestrzeni nazw domyślną szablonu, dostępne wartości: {{Code|false}}, w której nazwa domyślna nie jest uwzględniana wtedy, oraz {{Code|nil}} i {{Code|true}}, które oznaczają to samo, w tym jeżeli ona jest uwzględniana, wtedy jest brany parametr pierwszy dziecka, który musi istnieć przy takiej wartości tego parametru, tzn. {{Code|{{m|Pudełko|Nazwa przestrzeni nazw 2|Szablon}}}}, a jeśli nazwa uzyskana nazwy przestrzeni nazw jest w takim przypadku błędna, a jeżeli nazwa domyślna jest błędna, czyli {{Code|{{m|Pudełko|Nazwa przestrzeni nazw 2|Moja przestrzeń}}}}, wtedy funkcja zwraca stan błędu {{Code|(błąd)}}. * {{Code|i}} - numer zmiennej nazwy przestrzeni nazw. Funkcja wykorzystuje {{Code|{{sr|#p.Nazwa_przestrzeni_nazw_2(frame,...)|p=Pudełko/Pomocne}}}} do wyznaczania ogólnego nazwy przestrzeni nazw dla pozycji bazowej i numerkowej, tzn. dla pozycji: jeden, dwa, trzy,..., itd, i ich ogólnej. Parametr ramki tablicy transportu rodzica szablonu: * {{Code|nazwa przestrzeni nazw}}, {{Code|nazwa przestrzeni nazw 1}}, {{Code|nazwa przestrzeni nazw 2}}, {{Code|nazwa przestrzeni nazw 3}},..., {{Code|nazwa przestrzeni nazw i}} - nazwy przestrzeni nazw dla pozycji bazowej oraz zwykłej i ogólnej numerkowej, * {{Code|nazwa jednostki}}, {{Code|nazwa jednostki 1}}, {{Code|nazwa jednostki 2}}, {{Code|nazwa jednostki 3}},... - nazwy jednostek dla pozycji bazowej i numerkowej, * {{Code|typ jednostki}}, {{Code|typ jednostki 1}}, {{Code|typ jednostki 2}}, {{Code|typ jednostki 3}},..., {{Code|typ jednostki i}} - typy jednostek, którym odpowiadają pewne przestrzenie przedmiotowe, dla pozycji bazowej, numerkowej i ogólnej, ** {{Code|dyskusja typu jednostki}}, {{Code|dyskusja typu jednostki 1}}, {{Code|dyskusja typ jednostki 2}}, {{Code|dyskusja typ jednostki 3}},..., {{Code|dyskusja typ jednostki i}} - czy dany typ jednostki ma przedstawiać, jeśli niepusta, przestrzeń dyskusji dla pozycji bazowej, numerkowej i ogólnej. Parametry ramki tablicy transportu dziecka: * Parametry dziecka są takie same jak rodzica dla funkcji pudełkowej plus tu wymienione, * {{Code|numer jednostki}} - jak parametr {{Code|i}} nie został ustawiony, to wtedy liczy się ta zmienna. Przykłady: <syntaxhighlight lang="mediawiki"> {{Nazwa szablonu|nazwa przestrzeni nazw=Wikibooks|nazwa przestrzeni nazw 1=Szablon|nazwa przestrzeni nazw i=|nazwa jednostki 2=Wikibooks:Strona}} </syntaxhighlight> W dziecku powiedzmy jest wywołanie, i szukamy nazwy przestrzeni nazw o numerze dwa, która została podana, ale istnieje za to jej wersji ogólna {{Code|nazwa przestrzeni nazw i}} i domyślna {{Code|nazwa przestrzeni nazw}}, ale wtedy dla tego numerkowego liczy się to ogólne z {{Code| i}}, a ponieważ ta nazwa jest pusta, więc będziemy liczyli nazwę przestrzeni nazw z {{Code|nazwa jednostki 2}}: <syntaxhighlight lang="mediawiki"> {{#invoke:Pudełko|Nazwa przestrzeni nazw 2|numer jednostki=2}} </syntaxhighlight> Na podstawie powyższego przykładu otrzymamy wynik o schemacie, nie wyniku, bo tam nie ma zmiennej {{Code|nazwa przestrzeni nazw 1}}, ale jest {{Code|nazwa przestrzeni nazw i}}: <syntaxhighlight lang="mediawiki"> <!-- Ale nie "nazwa przestrzeni nazw 2", bo jej nie ma, ale za to istnieje "nazwa przestrzeni nazw i"; --> <!-- nazwa przestrzeni nazw 2=nazwa przestrzeni nazw i="", a nazwa jednostki 2="Wikibooks:Strona"; --> <!-- Czyli wynik: --> Wikibooks <!-- Widzimy, że wygenerowała się nazwa przestrzeni nazw, którą jest przestrzeń nieprogramowa, ale projektu, wychodząca z nazwy jednostek w tym przypadku z "nazwa jednostki 2"; --> </syntaxhighlight> Nie jest brana w tym powyższym przykładzie zmienna {{Code|nazwa przestrzeni nazw}}, bo jej nie ma, ale za to jest {{Code|nazwa przestrzeni nazw i}}, bo ona występuje jako parametr domyślny ogólny dla parametrów numerkowych. Tytaj jest używana jest zmienna {{Code|nazwa jednostki 2}} do wygenerowania ostatecznego wyniku, bo jak można zauważyć, parametry przestrzenne wskazują na przestrzeń główną, a nazwy jednostek już nie. Przykłady w wikikodzie: * {{Code|{{m|Pudełko|Nazwa przestrzeni nazw 2|numer jednostki{{=}}2}}}} → {{Tt|{{#invoke:Pudełko|Nazwa przestrzeni nazw 2|numer jednostki=2}}}} * {{Code|{{m|Pudełko|Nazwa przestrzeni nazw 2|Szablon|nazwa przestrzeni nazw i{{=}}Moja przestrzeń|numer jednostki{{=}}2}}}} → {{Tt|{{#invoke:Pudełko|Nazwa przestrzeni nazw 2|Szablon|nazwa przestrzeni nazw i=Moja przestrzeń|numer jednostki=2}}}} * {{Code|{{m|Pudełko|Nazwa przestrzeni nazw 2|nazwa przestrzeni nazw 2{{=}}|nazwa jednostki 2{{=}}Szablon:Strona|numer jednostki{{=}}2}}}} → {{Tt|{{#invoke:Pudełko|Nazwa przestrzeni nazw 2|nazwa przestrzeni nazw 2=|nazwa jednostki 2=Szablon:Strona|numer jednostki=2}}}} * {{Code|{{m|Pudełko|Nazwa przestrzeni nazw 2|nazwa przestrzeni nazw i{{=}}|nazwa jednostki 2{{=}}Szablon:Strona|numer jednostki{{=}}2}}}} → {{Tt|{{#invoke:Pudełko|Nazwa przestrzeni nazw 2|nazwa przestrzeni nazw i=|nazwa jednostki 2=Szablon:Strona|numer jednostki=2}}}} * {{Code|{{m|Pudełko|Nazwa przestrzeni nazw 2|Szablon|nazwa przestrzeni nazw{{=}}|nazwa jednostki 2{{=}}Wikibooks:Strona|numer jednostki{{=}}2}}}} → {{Tt|{{#invoke:Pudełko|Nazwa przestrzeni nazw 2|Szablon|nazwa przestrzeni nazw=|nazwa jednostki 2=Wikibooks:Strona|numer jednostki=2}}}} Powyżej dla przykładu podano parametry nie w rodzicu w szablonie, tylko w dziecku, jeśli chodzi o parametry nazw przestrzeni nazw i nazw jednostek, ale ich się za to nie powinno podawać w tych ramach, tylko w szablonach, w których wywoływane są te ramki pudełek {{Code|{{m|Pudełko}}}}, ale tak tutaj tak zrobiono by było najłatwiej sprawdzić działanie tego typu funkcji. Analogicznie możemy podawać parametry typu jednostki, np.: wywołaniu modułowym {{Code|{{m|Pudełko|Nazwa przestrzeni nazw 2|typ jednostki 2{{=}}Podręcznik|nazwa jednostki 2{{=}}Szablon:Strona|numer jednostki{{=}}2}}}} (ale wtedy jest brana przestrzeń nazw z nazwy jednostki), ale o tym więcej w rozdziałach {{Code|{{sr|#p["Typ jednostki 2"](frame,i)|p=Pudełko}}}} w „{{sr|#Funkcje typu jednostki|p=Pudełko}}”, on definiuje przestrzenie przedmiotowe, ale można użyć parametru dyskusji typu jednostki z wartością niepustą, wtedy wyświetli się nazwa przestrzeni nazw dyskusji. Jeżeli typ jednostki wskazuje na przestrzeń nazw główną, wtedy się liczą parametry nazw jednostek. Również parametry typu jednostki nie powinno się podawać w dziecku w ramce, tylko w rodzicu w szablonie jako parametry, w którym ta ramka jest wywoływana, ale tutaj podano jedynie dla przykładu, jak najłatwiej sprawdzić działanie tych parametrów tej funkcji. Najpierw w funkcji nagłówku brane są parametry nazw przestrzeni nazw, a jeżeli ich nie ma, to parametry typu jednostki, a jeżeli nie ma lub parametry przestrzenne wskazują na przestrzeń główną, i nie ma nazwy jednostki, to generowane są nazwy tej funkcji na podstawie aktualnej strony. === {{Code|p["Nazwa przedmiotowej przestrzeni nazw 2"](frame,...)}} === Funkcja pisze przedmiotową nazwę przestrzeni nazw jakikolwiek nazwy przestrzeni nazw (tzn. nazwę przedmiotową nazwy przestrzenie nazw, czyli nie dyskusji, zamieniana jest na nią samą, czyli identyfikator przestrzeni się nie zmienia, a dyskusji, nie przedmiotową, przekształca się na przedmiotową jej odpowiadającą, czyli w tym przypadku identyfikator przestrzeni zmniejsza się o numer mniej), według, i nie zawsze tylko, podanej w zmiennej {{Code|nazwa przestrzeni nazw}} dla pozycja bazowej w podanych parametrach szablonu rodzicu ramki dziecka, lub dla innej pozycji należy parametr podawać w formie {{Code|nazwa przestrzeni nazw 1}}, {{Code|nazwa przestrzeni nazw 2}}, {{Code|nazwa przestrzeni nazw 3}},..., lub te parametry można podać w postaci ogólnej {{Code|nazwa przestrzeni nazw i}}. W tej funkcji trzeba też podawać parametry nazwy jednostek {{Code|nazwa jednostki}}, {{Code|nazwa jednostki 1}}, {{Code|nazwa jednostki 2}}, {{Code|nazwa jednostki 3}},... Parametry podaje się w parametrach rodzica wywołania tej funkcji {{Code|{{m|Pudełko|Nazwa przedmiotowej przestrzeni nazw 2}}}} (ale ich nie trzeba podawać w dziecku, ale można) i w parametrach dziecka, jeśli chodzi o zmienną {{Code|numer jednostki}}, czyli np.: {{Code|{{m|Pudełko|Nazwa przedmiotowej przestrzeni nazw 2|numer jednostki{{=}}<jakaś liczba całkowita dodatnia>}}}}. Te parametry przestrzenne zamiast w rodzicu w szablonie można podać w ramce dziecka, wtedy parametry dziecka mają pierwszeństwo. Przestrzeń nazw z parametrów nazw przestrzennych po przekształceniu na przedmiotową może odpowiadać wartości przestrzeni głównej, to wtedy odpowiednia przestrzeń nazw z parametru nazwy jednostki się liczy w tej funkcji, wtedy jest liczona nazwa przestrzeni nazw z tego parametru. Gdy parametry przestrzenne lub typ jednostki w drugim podejściu nie wskazują na przestrzeń główną, to wtedy działanie tej funkcji jest podobne do {{Code|{{sr|#p["Nazwa przedmiotowej przestrzeni nazw"](frame,...)|p=Pudełko}}}}. Definicja skrótowa funkcji: <syntaxhighlight lang="lua"> p["Nazwa przedmiotowej przestrzeni nazw 2"]=function(frame,czy_uwzglednic_alternatywna_nazwe,i)...end; </syntaxhighlight> Wtedy ciało funkcji tej, czyli jego definicja w środku, jest: <syntaxhighlight lang="lua"> local pudelko_pomocne_modul=require("Module:Pudełko/Pomocne"); return pudelko_pomocne_modul.Nazwa_przestrzeni_nazw_przedmiotowa_dyskusji_2(frame,czy_uwzglednic_alternatywna_nazwe,i,"przedmiotowa"); </syntaxhighlight> Parametry funkcji: * {{Code|frame}} - tablica ramki tablicy transportu, * {{Code|czy_uwzglednic_alternatywna_nazwe}} - czy ma uwzględniać nazwę przestrzeni nazw domyślną szablonu, dostępne wartości: {{Code|false}}, w której nazwa domyślna nie jest uwzględniana wtedy, oraz {{Code|nil}} i {{Code|true}}, które oznaczają to samo, w tym jeżeli ona jest uwzględniana, wtedy jest brany parametr pierwszy dziecka, który musi istnieć przy takiej wartości tego parametru, tzn. {{Code|{{m|Pudełko|Nazwa przedmiotowej przestrzeni nazw 2|Szablon}}}}, nazwa domyślna zostanie zamieniona na przedmiotową, a jeżeli jest już taka, to żadnej zamiany nie ma, a jeśli nazwa uzyskana nazwy przestrzeni nazw jest w takim przypadku błędna, a jeżeli nazwa domyślna jest błędna, czyli {{Code|{{m|Pudełko|Nazwa przedmiotowej przestrzeni nazw 2|Moja przestrzeń}}}}, wtedy funkcja zwraca stan błędu {{Code|(błąd)}}. * {{Code|i}} - numer zmiennej nazwy przestrzeni nazw. Funkcja wykorzystuje {{Code|{{sr|#p.Nazwa_przestrzeni_nazw_przedmiotowa_dyskusji_2(frame,...)|p=Pudełko/Pomocne}}}} do wyznaczania ogólnego nazwy przestrzeni nazw dla pozycji bazowej i numerkowej, tzn. dla pozycji: jeden, dwa, trzy,..., itd, i ich ogólnej. Parametr ramki tablicy transportu rodzica szablonu: * {{Code|nazwa przestrzeni nazw}}, {{Code|nazwa przestrzeni nazw 1}}, {{Code|nazwa przestrzeni nazw 2}}, {{Code|nazwa przestrzeni nazw 3}},..., {{Code|nazwa przestrzeni nazw i}} - nazwy przestrzeni nazw dla pozycji bazowej oraz zwykłej i ogólnej numerkowej, * {{Code|nazwa jednostki}}, {{Code|nazwa jednostki 1}}, {{Code|nazwa jednostki 2}}, {{Code|nazwa jednostki 3}},... - nazwy jednostek dla pozycji bazowej i numerkowej, * {{Code|typ jednostki}}, {{Code|typ jednostki 1}}, {{Code|typ jednostki 2}}, {{Code|typ jednostki 3}},..., {{Code|typ jednostki i}} - typy jednostek, którym odpowiadają pewne przestrzenie przedmiotowe, dla pozycji bazowej, numerkowej i ogólnej. Parametry ramki tablicy transportu dziecka: * Parametry dziecka są takie same jak rodzica dla funkcji pudełkowej plus tu wymienione, * {{Code|numer jednostki}} - jak parametr {{Code|i}} nie został ustawiony, to wtedy liczy się ta zmienna. Przykłady: <syntaxhighlight lang="mediawiki"> {{Nazwa szablonu|nazwa przestrzeni nazw=Wikibooks|nazwa przestrzeni nazw 1=Szablon|nazwa przestrzeni nazw i=|nazwa jednostki 2=Dyskusja Wikibooks:Strona}} </syntaxhighlight> W dziecku powiedzmy jest wywołanie, i szukamy nazwy przestrzeni nazw o numerze dwa, która została podana, ale istnieje za to jej wersji ogólna {{Code|nazwa przestrzeni nazw i}} i domyślna {{Code|nazwa przestrzeni nazw}}, ale wtedy dla tego numerkowego liczy się to ogólne z {{Code| i}}, a ponieważ ta nazwa jest pusta, więc będziemy liczyli nazwę przestrzeni nazw z {{Code|nazwa jednostki 2}}: <syntaxhighlight lang="mediawiki"> {{#invoke:Pudełko|Nazwa przedmiotowej przestrzeni nazw 2|numer jednostki=2}} </syntaxhighlight> Na podstawie powyższego przykładu otrzymamy wynik o schemacie, nie wyniku, bo tam nie ma zmiennej {{Code|nazwa przestrzeni nazw 1}}, ale jest {{Code|nazwa przestrzeni nazw i}}: <syntaxhighlight lang="mediawiki"> <!-- Ale nie "nazwa przestrzeni nazw 2", bo jej nie ma, ale za to istnieje "nazwa przestrzeni nazw i"; --> <!-- nazwa przestrzeni nazw 2=nazwa przestrzeni nazw i="", a nazwa jednostki 2="Dyskusja Wikibooks:Strona"; --> <!-- Czyli wynik: --> Wikibooks <!-- Widzimy, że wygenerowała się nazwa przestrzeni nazw, którą jest przestrzeń nieprogramowa, ale projektu, wychodząca z nazwy jednostek w tym przypadku z "nazwa jednostki 2"; --> </syntaxhighlight> Nie jest brana w tym powyższym przykładzie zmienna {{Code|nazwa przestrzeni nazw}}, bo jej nie ma, ale za to jest {{Code|nazwa przestrzeni nazw i}}, bo ona występuje jako parametr domyślny ogólny dla parametrów numerkowych. Tytaj jest używana jest zmienna {{Code|nazwa jednostki 2}} do wygenerowania ostatecznego wyniku, bo jak można zauważyć, parametry przestrzenne wskazują na przestrzeń główną, a nazwy jednostek już nie. Przykłady w wikikodzie: * {{Code|{{m|Pudełko|Nazwa przedmiotowej przestrzeni nazw 2|numer jednostki{{=}}2}}}} → {{Tt|{{#invoke:Pudełko|Nazwa przedmiotowej przestrzeni nazw 2|numer jednostki=2}}}} * {{Code|{{m|Pudełko|Nazwa przedmiotowej przestrzeni nazw 2|Dyskusja szablonu|nazwa przestrzeni nazw i{{=}}Moja przestrzeń|numer jednostki{{=}}2}}}} → {{Tt|{{#invoke:Pudełko|Nazwa przedmiotowej przestrzeni nazw 2|Dyskusja szablonu|nazwa przestrzeni nazw i=Moja przestrzeń|numer jednostki=2}}}} * {{Code|{{m|Pudełko|Nazwa przedmiotowej przestrzeni nazw 2|nazwa przestrzeni nazw 2{{=}}Dyskusja|nazwa jednostki 2{{=}}Dyskusja szablonu:Strona|numer jednostki{{=}}2}}}} → {{Tt|{{#invoke:Pudełko|Nazwa przedmiotowej przestrzeni nazw 2|nazwa przestrzeni nazw 2=Dyskusja|nazwa jednostki 2=Dyskusja szablonu:Strona|numer jednostki=2}}}} * {{Code|{{m|Pudełko|Nazwa przedmiotowej przestrzeni nazw 2|nazwa przestrzeni nazw i{{=}}Dyskusja|nazwa jednostki 2{{=}}Dyskusja szablonu:Strona|numer jednostki{{=}}2}}}} → {{Tt|{{#invoke:Pudełko|Nazwa przedmiotowej przestrzeni nazw 2|nazwa przestrzeni nazw i=Dyskusja|nazwa jednostki 2=Dyskusja szablonu:Strona|numer jednostki=2}}}} * {{Code|{{m|Pudełko|Nazwa przedmiotowej przestrzeni nazw 2|Dyskusja szablonu|nazwa przestrzeni nazw{{=}}Dyskusja|nazwa jednostki 2{{=}}Wikibooks:Strona|numer jednostki{{=}}2}}}} → {{Tt|{{#invoke:Pudełko|Nazwa przedmiotowej przestrzeni nazw 2|Dyskusja szablonu|nazwa przestrzeni nazw=Dyskusja|nazwa jednostki 2=Dyskusja Wikibooks:Strona|numer jednostki=2}}}} Powyżej dla przykładu podano parametry nie w rodzicu w szablonie, tylko w dziecku, jeśli chodzi o parametry nazw przestrzeni nazw i nazw jednostek, ale ich się za to nie powinno podawać w tych ramach, tylko w szablonach, w których wywoływane są te ramki pudełek {{Code|{{m|Pudełko}}}}, ale tak tutaj tak zrobiono by było najłatwiej sprawdzić działanie tego typu funkcji. Analogicznie możemy podawać parametry typu jednostki, np.: wywołaniu modułowym {{Code|{{m|Pudełko|Nazwa przedmiotowej przestrzeni nazw 2|typ jednostki 2{{=}}Podręcznik|nazwa jednostki 2{{=}}Dyskusja szablonu:Strona|numer jednostki{{=}}2}}}} (ale wtedy jest brana przestrzeń nazw z nazwy jednostki), ale o tym więcej w rozdziałach {{Code|{{sr|# p["Przedmiotowy typ jednostki 2"](frame,i)|p=Pudełko}}}} w „{{sr|#Funkcje typu jednostki|p=Pudełko}}”, on definiuje przestrzenie przedmiotowe, ale można użyć parametru dyskusji typu jednostki z wartością niepustą, pustą, czy nawet jej nie podamy, wtedy wyświetli się nazwa przestrzeni nazw przedmiotowej. Jeżeli typ jednostki wskazuje na przestrzeń nazw główną, wtedy się liczą parametry nazw jednostek. Również parametry typu jednostki nie powinno się podawać w dziecku w ramce, tylko w rodzicu w szablonie jako parametry, w którym ta ramka jest wywoływana, ale tutaj podano jedynie dla przykładu, jak najłatwiej sprawdzić działanie tych parametrów tej funkcji. Najpierw w funkcji nagłówku brane są parametry nazw przestrzeni nazw, a jeżeli ich nie ma, to parametry typu jednostki, a jeżeli nie ma lub parametry przestrzenne wskazują na przestrzeń główną, i nie ma nazwy jednostki, to generowane są nazwy tej funkcji na podstawie aktualnej strony. === {{Code|p["Nazwa przestrzeni nazw dyskusji 2"](frame,...)}} === Funkcja pisze nazwę przestrzeni nazw dyskusji jakikolwiek nazwy przestrzeni nazw (tzn. nazwę dyskusji nazwy przestrzenie nazw, czyli nie przedmiotowej, zamieniana jest na nią samą, czyli identyfikator przestrzeni się nie zmienia, a przedmiotową, nie dyskusji, przekształca się na dyskusji jej odpowiadającą, czyli w tym przypadku identyfikator przestrzeni zwiększa się o numer więcej), według, i nie zawsze tylko, podanej w zmiennej {{Code|nazwa przestrzeni nazw}} dla pozycja bazowej w podanych parametrach szablonu rodzicu ramki dziecka, lub dla innej pozycji należy parametr podawać w formie {{Code|nazwa przestrzeni nazw 1}}, {{Code|nazwa przestrzeni nazw 2}}, {{Code|nazwa przestrzeni nazw 3}},..., lub te parametry można podać w postaci ogólnej {{Code|nazwa przestrzeni nazw i}}. W tej funkcji trzeba też podawać parametry nazwy jednostek {{Code|nazwa jednostki}}, {{Code|nazwa jednostki 1}}, {{Code|nazwa jednostki 2}}, {{Code|nazwa jednostki 3}},... Parametry podaje się w parametrach rodzica wywołania tej funkcji {{Code|{{m|Pudełko|Nazwa przestrzeni nazw dyskusji 2}}}} (ale ich nie trzeba podawać w dziecku, ale można) i w parametrach dziecka, jeśli chodzi o zmienną {{Code|numer jednostki}}, czyli np.: {{Code|{{m|Pudełko|Nazwa przestrzeni nazw dyskusji 2|numer jednostki{{=}}<jakaś liczba całkowita dodatnia>}}}}. Te parametry przestrzenne zamiast w rodzicu w szablonie można podać w ramce dziecka, wtedy parametry dziecka mają pierwszeństwo. Przestrzeń nazw z parametrów nazw przestrzennych po przekształceniu może odpowiadać wartości przestrzeni głównej, to wtedy odpowiednia przestrzeń nazw z parametru nazwy jednostki się liczy w tej funkcji, wtedy jest liczona nazwa przestrzeni nazw dyskusji z tego parametru. Gdy parametry przestrzenne lub typ jednostki w drugim podejściu nie wskazują na przestrzeń główną, to wtedy działanie tej funkcji jest podobne do {{Code|{{sr|#p["Nazwa dyskusji przestrzeni nazw"](frame,...)|p=Pudełko}}}}. Definicja skrótowa funkcji: <syntaxhighlight lang="lua"> p["Nazwa przestrzeni nazw dyskusji 2"]=function(frame,czy_uwzglednic_alternatywna_nazwe,i)...end; </syntaxhighlight> Wtedy ciało funkcji tej, czyli jego definicja w środku, jest: <syntaxhighlight lang="lua"> local pudelko_pomocne_modul=require("Module:Pudełko/Pomocne"); return pudelko_pomocne_modul.Nazwa_przestrzeni_nazw_przedmiotowa_dyskusji_2(frame,czy_uwzglednic_alternatywna_nazwe,i,"dyskusja"); </syntaxhighlight> Parametry funkcji: * {{Code|frame}} - tablica ramki tablicy transportu, * {{Code|czy_uwzglednic_alternatywna_nazwe}} - czy ma uwzględniać nazwę przestrzeni nazw domyślną szablonu, dostępne wartości: {{Code|false}}, w której nazwa domyślna nie jest uwzględniana wtedy, oraz {{Code|nil}} i {{Code|true}}, które oznaczają to samo, w tym jeżeli ona jest uwzględniana, wtedy jest brany parametr pierwszy dziecka, który musi istnieć przy takiej wartości tego parametru, tzn. {{Code|{{m|Pudełko|Nazwa przestrzeni nazw dyskusji 2|Szablon}}}}, nazwa domyślna zostanie zamieniona na dyskusji, a jeżeli jest już taka, to nie ma takiej zamiany, a jeśli nazwa uzyskana nazwy przestrzeni nazw jest w takim przypadku błędna, a jeżeli nazwa domyślna jest błędna, czyli {{Code|{{m|Pudełko|Nazwa przestrzeni nazw dyskusji 2|Moja przestrzeń}}}}, wtedy funkcja zwraca stan błędu {{Code|(błąd)}}. * {{Code|i}} - numer zmiennej nazwy przestrzeni nazw. Funkcja wykorzystuje {{Code|{{sr|#p.Nazwa_przestrzeni_nazw_przedmiotowa_dyskusji_2(frame,...)|p=Pudełko/Pomocne}}}} do wyznaczania ogólnego nazwy przestrzeni nazw dla pozycji bazowej i numerkowej, tzn. dla pozycji: jeden, dwa, trzy,..., itd, i ich ogólnej. Parametr ramki tablicy transportu rodzica szablonu: * {{Code|nazwa przestrzeni nazw}}, {{Code|nazwa przestrzeni nazw 1}}, {{Code|nazwa przestrzeni nazw 2}}, {{Code|nazwa przestrzeni nazw 3}},..., {{Code|nazwa przestrzeni nazw i}} - nazwy przestrzeni nazw dla pozycji bazowej oraz zwykłej i ogólnej numerkowej, * {{Code|nazwa jednostki}}, {{Code|nazwa jednostki 1}}, {{Code|nazwa jednostki 2}}, {{Code|nazwa jednostki 3}},... - nazwy jednostek dla pozycji bazowej i numerkowej, * {{Code|typ jednostki}}, {{Code|typ jednostki 1}}, {{Code|typ jednostki 2}}, {{Code|typ jednostki 3}},..., {{Code|typ jednostki i}} - typy jednostek, którym odpowiadają pewne przestrzenie przedmiotowe, dla pozycji bazowej, numerkowej i ogólnej. Parametry ramki tablicy transportu dziecka: * Parametry dziecka są takie same jak rodzica dla funkcji pudełkowej plus tu wymienione, * {{Code|numer jednostki}} - jak parametr {{Code|i}} nie został ustawiony, to wtedy liczy się ta zmienna. Przykłady: <syntaxhighlight lang="mediawiki"> {{Nazwa szablonu|nazwa przestrzeni nazw=Wikibooks|nazwa przestrzeni nazw 1=Szablon|nazwa przestrzeni nazw i=|nazwa jednostki 2=Wikibooks:Strona}} </syntaxhighlight> W dziecku powiedzmy jest wywołanie, i szukamy nazwy przestrzeni nazw o numerze dwa, która została podana, ale istnieje za to jej wersji ogólna {{Code|nazwa przestrzeni nazw i}} i domyślna {{Code|nazwa przestrzeni nazw}}, ale wtedy dla tego numerkowego liczy się to ogólne z {{Code| i}}, a ponieważ ta nazwa jest pusta, więc będziemy liczyli nazwę przestrzeni nazw z {{Code|nazwa jednostki 2}}: <syntaxhighlight lang="mediawiki"> {{#invoke:Pudełko|Nazwa przestrzeni nazw dyskusji 2|numer jednostki=2}} </syntaxhighlight> Na podstawie powyższego przykładu otrzymamy wynik o schemacie, nie wyniku, bo tam nie ma zmiennej {{Code|nazwa przestrzeni nazw 1}}, ale jest {{Code|nazwa przestrzeni nazw i}}: <syntaxhighlight lang="mediawiki"> <!-- Ale nie "nazwa przestrzeni nazw 2", bo jej nie ma, ale za to istnieje "nazwa przestrzeni nazw i"; --> <!-- nazwa przestrzeni nazw 2=nazwa przestrzeni nazw i="", a nazwa jednostki 2="Wikibooks:Strona"; --> <!-- Czyli wynik: --> Dyskusja Wikibooks <!-- Widzimy, że wygenerowała się nazwa przestrzeni nazw, którą jest przestrzeń nieprogramowa, ale dyskusji projektu, wychodząca z nazwy jednostek w tym przypadku z "nazwa jednostki 2"; --> </syntaxhighlight> Nie jest brana w tym powyższym przykładzie zmienna {{Code|nazwa przestrzeni nazw}}, bo jej nie ma, ale za to jest {{Code|nazwa przestrzeni nazw i}}, bo ona występuje jako parametr domyślny ogólny dla parametrów numerkowych. Tytaj jest używana jest zmienna {{Code|nazwa jednostki 2}} do wygenerowania ostatecznego wyniku, bo jak można zauważyć, parametry przestrzenne wskazują na przestrzeń główną, a nazwy jednostek już nie. Przykłady w wikikodzie: * {{Code|{{m|Pudełko|Nazwa przestrzeni nazw dyskusji 2|numer jednostki{{=}}2}}}} → {{Tt|{{#invoke:Pudełko|Nazwa przestrzeni nazw dyskusji 2|numer jednostki=2}}}} * {{Code|{{m|Pudełko|Nazwa przestrzeni nazw dyskusji 2|Szablon|nazwa przestrzeni nazw i{{=}}Moja przestrzeń|numer jednostki{{=}}2}}}} → {{Tt|{{#invoke:Pudełko|Nazwa przestrzeni nazw dyskusji 2|Szablon|nazwa przestrzeni nazw i=Moja przestrzeń|numer jednostki=2}}}} * {{Code|{{m|Pudełko|Nazwa przestrzeni nazw dyskusji 2|nazwa przestrzeni nazw 2{{=}}|nazwa jednostki 2{{=}}Szablon:Strona|numer jednostki{{=}}2}}}} → {{Tt|{{#invoke:Pudełko|Nazwa przestrzeni nazw dyskusji 2|nazwa przestrzeni nazw 2=|nazwa jednostki 2=Szablon:Strona|numer jednostki=2}}}} * {{Code|{{m|Pudełko|Nazwa przestrzeni nazw dyskusji 2|nazwa przestrzeni nazw i{{=}}|nazwa jednostki 2{{=}}Szablon:Strona|numer jednostki{{=}}2}}}} → {{Tt|{{#invoke:Pudełko|Nazwa przestrzeni nazw dyskusji 2|nazwa przestrzeni nazw i=|nazwa jednostki 2=Szablon:Strona|numer jednostki=2}}}} * {{Code|{{m|Pudełko|Nazwa przestrzeni nazw dyskusji 2|Szablon|nazwa przestrzeni nazw{{=}}|nazwa jednostki 2{{=}}Wikibooks:Strona|numer jednostki{{=}}2}}}} → {{Tt|{{#invoke:Pudełko|Nazwa przestrzeni nazw dyskusji 2|Szablon|nazwa przestrzeni nazw=|nazwa jednostki 2=Dyskusja Wikibooks:Strona|numer jednostki=2}}}} Powyżej dla przykładu podano parametry nie w rodzicu w szablonie, tylko w dziecku, jeśli chodzi o parametry nazw przestrzeni nazw i nazw jednostek, ale ich się za to nie powinno podawać w tych ramach, tylko w szablonach, w których wywoływane są te ramki pudełek {{Code|{{m|Pudełko}}}}, ale tak tutaj tak zrobiono by było najłatwiej sprawdzić działanie tego typu funkcji. Analogicznie możemy podawać parametry typu jednostki, np.: wywołaniu modułowym {{Code|{{m|Pudełko|Nazwa przestrzeni nazw dyskusji 2|typ jednostki 2{{=}}Podręcznik|nazwa jednostki 2{{=}}Szablon:Strona|numer jednostki{{=}}2}}}} (ale wtedy jest brana przestrzeń nazw z nazwy jednostki), ale o tym więcej w rozdziałach {{Code|{{sr|# p["Dyskusyjny typ jednostki 3"](frame,i)|p=Pudełko}}}} w „{{sr|#Funkcje typu jednostki|p=Pudełko}}”, one definiują przestrzenie dyskusji, ale można użyć parametru dyskusji typu jednostki z obojętnie jaką wartością niepustą, czy pustą, czy nawet jej nie podamy, wtedy wyświetli się nazwa przestrzeni nazw dyskusji. Jeżeli typ jednostki wskazuje na przestrzeń nazw główną, wtedy się liczą parametry nazw jednostek. Również parametry typu jednostki nie powinno się podawać w dziecku w ramce, tylko w rodzicu w szablonie jako parametry, w którym ta ramka jest wywoływana, ale tutaj podano jedynie dla przykładu, jak najłatwiej sprawdzić działanie tych parametrów tej funkcji. Najpierw w funkcji nagłówku brane są parametry nazw przestrzeni nazw, a jeżeli ich nie ma, to parametry typu jednostki, a jeżeli nie ma lub parametry przestrzenne wskazują na przestrzeń główną, i nie ma nazwy jednostki, to generowane są nazwy tej funkcji na podstawie aktualnej strony. == Funkcje pełnych nazw jednostki == === {{Code|p["Pełna nazwa dyskusji jednostki"](frame,i)}} === === {{Code|p["Pełna nazwa przedmiotowa jednostki"](frame,i)}} === === {{Code|p["Pełna nazwa jednostki"](frame,i)}} === == Funkcje pełnych nazw jednostki drugiej wersji == === {{Code|p["Pełna nazwa dyskusji jednostki 2"](frame,i)}} === === {{Code|p["Pełna nazwa przedmiotowa jednostki 2"](frame,i)}} === === {{Code|p["Pełna nazwa jednostki 2"](frame,i)}} === == Funkcje pełnych nazw jednostki trzeciej wersji == === {{Code|p["Pełna nazwa dyskusji jednostki 3"](frame,i)}} === === {{Code|p["Pełna nazwa przedmiotowa jednostki 3"](frame,i)}} === === {{Code|p["Pełna nazwa jednostki 3"](frame,i)}} === == Funkcje nazw jednostki == === {{Code|p["Nazwa jednostki"](frame,i)}} === == Funkcje nazw jednostki drugiej wersji == === {{Code|p["Nazwa jednostki 2"](frame,i)}} === === {{Code|p["Nazwa przedmiotowa jednostki 2"](frame,i)}} === === {{Code|p["Nazwa dyskusji jednostki 2"](frame,i)}} === == Funkcje nazw przestrzeni nazw trzeciej wersji == === {{Code|p["Nazwa przestrzeni nazw 3"](frame,i)}} === Funkcja pisze nazwę przestrzeni nazw, niezależnie, czy to jest przedmiotowa, czy dyskusji, według, i nie zawsze tylko, podanej w zmiennej {{Code|nazwa przestrzeni nazw}} dla pozycja bazowej w podanych parametrach szablonu rodzicu ramki dziecka, lub dla innej pozycji należy parametr podawać w formie {{Code|nazwa przestrzeni nazw 1}}, {{Code|Nazwa przestrzeni nazw 3}}, {{Code|nazwa przestrzeni nazw 3}},..., lub te parametry można podać w postaci ogólnej {{Code|nazwa przestrzeni nazw i}}. W tej funkcji trzeba też podawać parametry nazwy jednostek {{Code|nazwa jednostki}}, {{Code|nazwa jednostki 1}}, {{Code|nazwa jednostki 2}}, {{Code|nazwa jednostki 3}},... Parametry podaje się w parametrach rodzica wywołania tej funkcji {{Code|{{m|Pudełko|Nazwa przestrzeni nazw 3}}}} (ale ich nie trzeba podawać w dziecku, ale można) i w parametrach dziecka, jeśli chodzi o zmienną {{Code|numer jednostki}}, czyli np.: {{Code|{{m|Pudełko|Nazwa przestrzeni nazw 3|numer jednostki{{=}}<jakaś liczba całkowita dodatnia>}}}}. Te parametry przestrzenne zamiast w rodzicu w szablonie można podać w ramce dziecka, wtedy parametry dziecka mają pierwszeństwo. Przestrzeń nazw z parametrów nazw przestrzennych bazowych (bez numerka) może odpowiadać wartości przestrzeni głównej, to wtedy odpowiednia przestrzeń nazw z parametru nazwy jednostki się nie liczy w tej funkcji, aby się liczyła należy użyć funkcji {{Code|{{sr|#p["Nazwa przestrzeni nazw 2"](frame,...)|p=Pudełko}}}}. W tym przypadku funkcja działa jak {{Code|{{sr|#p["Nazwa przestrzeni nazw"](frame,...)|p=Pudełko}}}}. Przestrzeń nazw z parametrów nazw przestrzennych numerkowych może odpowiadać wartości przestrzeni głównej, to wtedy odpowiednia przestrzeń nazw z parametru nazwy jednostki się liczy w tej funkcji, wtedy jest liczona nazwa przestrzeni nazw z tego parametru. Gdy parametry przestrzenne lub typ jednostki w drugim podejściu nie wskazują na przestrzeń główną, to wtedy działanie tej funkcji jest podobne do {{Code|{{sr|#p["Nazwa przestrzeni nazw 2"](frame,...)|p=Pudełko}}}}. Definicja skrótowa funkcji: <syntaxhighlight lang="lua"> p["Nazwa przestrzeni nazw 3"]=function(frame,czy_uwzglednic_alternatywna_nazwe,i)...end; </syntaxhighlight> Wtedy ciało funkcji tej, czyli jego definicja w środku, jest: <syntaxhighlight lang="lua"> -- Jest liczony numer parametru nazwy przestrzeni nazw, domyslnie chodzi tu o numer bazowy parametrów przestrzennych; local numer_jednostki=i or frame.args["numer jednostki"]; local liczba_numeru_jednostki=((numer_jednostki)and(tonumber(numer_jednostki)) or 0); local pudelko_pomocne_modul=require("Module:Pudełko/Pomocne"); -- Liczy nazwę przestrzeni nazw dyskusji na podstawie podanych parametrów; return pudelko_pomocne_modul.Uzyskanie_nazw_jednostki(frame,0,liczba_numeru_jednostki,nil,2); </syntaxhighlight> Parametry funkcji: * {{Code|frame}} - tablica ramki tablicy transportu, * {{Code|czy_uwzglednic_alternatywna_nazwe}} - czy ma uwzględniać nazwę przestrzeni nazw domyślną szablonu, dostępne wartości: {{Code|false}}, w której nazwa domyślna nie jest uwzględniana wtedy, oraz {{Code|nil}} i {{Code|true}}, które oznaczają to samo, w tym jeżeli ona jest uwzględniana, wtedy jest brany parametr pierwszy dziecka, który musi istnieć przy takiej wartości tego parametru, tzn. {{Code|{{m|Pudełko|Nazwa przestrzeni nazw 3|Szablon}}}}, a jeśli nazwa uzyskana nazwy przestrzeni nazw jest w takim przypadku błędna, a jeżeli nazwa domyślna jest błędna, czyli {{Code|{{m|Pudełko|Nazwa przestrzeni nazw 3|Moja przestrzeń}}}}, wtedy funkcja zwraca stan błędu {{Code|(błąd)}}. * {{Code|i}} - numer zmiennej nazwy przestrzeni nazw. Funkcja wykorzystuje {{Code|{{sr|#p.Uzyskanie_nazw_jednostki(frame,...)|p=Pudełko/Pomocne}}}} do wyznaczania ogólnego nazwy przestrzeni nazw dla pozycji bazowej i numerkowej, tzn. dla pozycji: jeden, dwa, trzy,..., itd, i ich ogólnej. Parametr ramki tablicy transportu rodzica szablonu: * {{Code|nazwa przestrzeni nazw}}, {{Code|nazwa przestrzeni nazw 1}}, {{Code|Nazwa przestrzeni nazw 3}}, {{Code|nazwa przestrzeni nazw 3}},..., {{Code|nazwa przestrzeni nazw i}} - nazwy przestrzeni nazw dla pozycji bazowej oraz zwykłej i ogólnej numerkowej, * {{Code|nazwa jednostki}}, {{Code|nazwa jednostki 1}}, {{Code|nazwa jednostki 2}}, {{Code|nazwa jednostki 3}},... - nazwy jednostek dla pozycji bazowej i numerkowej, * {{Code|typ jednostki}}, {{Code|typ jednostki 1}}, {{Code|typ jednostki 2}}, {{Code|typ jednostki 3}},..., {{Code|typ jednostki i}} - typy jednostek, którym odpowiadają pewne przestrzenie przedmiotowe, dla pozycji bazowej, numerkowej i ogólnej, ** {{Code|dyskusja typu jednostki}}, {{Code|dyskusja typu jednostki 1}}, {{Code|dyskusja typ jednostki 2}}, {{Code|dyskusja typ jednostki 3}},..., {{Code|dyskusja typ jednostki i}} - czy dany typ jednostki ma przedstawiać, jeśli niepusta, przestrzeń dyskusji dla pozycji bazowej, numerkowej i ogólnej. Parametry ramki tablicy transportu dziecka: * Parametry dziecka są takie same jak rodzica dla funkcji pudełkowej plus tu wymienione, * {{Code|numer jednostki}} - jak parametr {{Code|i}} nie został ustawiony, to wtedy liczy się ta zmienna. Przykłady: <syntaxhighlight lang="mediawiki"> {{Nazwa szablonu 1|nazwa przestrzeni nazw=Wikibooks|nazwa przestrzeni nazw=|nazwa przestrzeni nazw i=|nazwa jednostki=Szablon:Strona}} ---- {{Nazwa szablonu 2|nazwa przestrzeni nazw=Wikibooks|nazwa przestrzeni nazw 1=Szablon|nazwa przestrzeni nazw i=|nazwa jednostki 2=Wikibooks:Strona}} </syntaxhighlight> W pierwszym wywołaniu {{Code|nazwa przestrzeni nazw}} jest puste, ale dla tego bazowego (bez numerka) szukamy przestrzeni nazw, a więc ta nazwa jest ostateczna. ---- W drugim wywołaniu w dziecku powiedzmy jest wywołanie, i szukamy nazwy przestrzeni nazw o numerze dwa, która została podana, ale istnieje za to jej wersji ogólna {{Code|nazwa przestrzeni nazw i}} i domyślna {{Code|nazwa przestrzeni nazw}}, ale wtedy dla tego numerkowego liczy się to ogólne z {{Code| i}}, a ponieważ ta nazwa jest pusta, więc będziemy liczyli nazwę przestrzeni nazw z {{Code|nazwa jednostki 2}}. Odpowiadająca powyższemu kodowi, powiedzmy wikikod, według ich zawartości, przedstawia się: <syntaxhighlight lang="mediawiki"> {{#invoke:Pudełko|Nazwa przestrzeni nazw 3}} ---- {{#invoke:Pudełko|Nazwa przestrzeni nazw 3|numer jednostki=2}} </syntaxhighlight> Na podstawie powyższego przykładu otrzymamy wynik o schemacie, nie wyniku, bo tam nie ma zmiennej {{Code|nazwa przestrzeni nazw 1}}, ale jest {{Code|nazwa przestrzeni nazw i}}: <syntaxhighlight lang="mediawiki"> <!-- nazwa przestrzeni nazw=""; --> <!-- Czyli wynik: --> <!-- wynik pusty --> <!-- Widzimy, że wygenerowała się nazwa przestrzeni nazw, którą jest przestrzeń nazw główna, jest ciągiem pustym: ""; --> ---- <!-- Ale nie "nazwa przestrzeni nazw 2", bo jej nie ma, ale za to istnieje "nazwa przestrzeni nazw i"; --> <!-- nazwa przestrzeni nazw 2=nazwa przestrzeni nazw i="", a nazwa jednostki 2="Wikibooks:Strona"; --> <!-- Czyli wynik: --> Wikibooks <!-- Widzimy, że wygenerowała się nazwa przestrzeni nazw, którą jest przestrzeń nieprogramowa, ale projektu, wychodząca z nazwy jednostek w tym przypadku z "nazwa jednostki 2"; --> </syntaxhighlight> Dla parametrów numerkowych nie jest brana w tym powyższym przykładzie zmienna {{Code|nazwa przestrzeni nazw 2}}, bo jej nie ma, ale za to jest {{Code|nazwa przestrzeni nazw i}}, bo ona występuje jako parametr domyślny ogólny dla parametrów numerkowych. Tytaj jest używana jest zmienna {{Code|nazwa jednostki 2}} do wygenerowania ostatecznego wyniku, bo jak można zauważyć, parametry przestrzenne wskazują na przestrzeń główną, a nazwy jednostek już nie. Dla parametrów bazowych mamy zmienną {{Code|nazwa przestrzeni nazw}}, ona jest pusta, więc to zostanie wziete do ostatecznego wyniku. Przykłady w wikikodzie: * {{Code|{{m|Pudełko|Nazwa przestrzeni nazw 3|Szablon|nazwa przestrzeni nazw{{=}}Moja przestrzeń|nazwa jednostki{{=}}Wikibooks:Strona}}}} → {{Tt|{{#invoke:Pudełko|Nazwa przestrzeni nazw 3|Szablon|nazwa przestrzeni nazw=Moja przestrzeń|nazwa jednostki=Wikibooks:Szablon}}}} * {{Code|{{m|Pudełko|Nazwa przestrzeni nazw 3|Szablon|nazwa przestrzeni nazw 2{{=}}Moja przestrzeń|nazwa jednostki 2{{=}}Wikibooks:Strona}|numer jednostki{{=}}2}}}} → {{Tt|{{#invoke:Pudełko|Nazwa przestrzeni nazw 3|Szablon|nazwa przestrzeni nazw 2=Moja przestrzeń|nazwa jednostki 2=Wikibooks:Szablon|numer jednostki=2}}}} * {{Code|{{m|Pudełko|Nazwa przestrzeni nazw 3|nazwa przestrzeni nazw{{=}}|nazwa jednostki{{=}}Wikibooks:Strona}}}} → {{Tt|{{#invoke:Pudełko|Nazwa przestrzeni nazw 3|nazwa przestrzeni nazw=|nazwa jednostki=Wikibooks:Szablon}}}} * {{Code|{{m|Pudełko|Nazwa przestrzeni nazw 3|nazwa przestrzeni nazw 2{{=}}|nazwa jednostki 2{{=}}Wikibooks:Strona|numer jednostki{{=}}2}}}} → {{Tt|{{#invoke:Pudełko|Nazwa przestrzeni nazw 3|nazwa przestrzeni nazw 2=|nazwa jednostki 2=Wikibooks:Szablon|numer jednostki=2}}}} Powyżej dla przykładu podano parametry nie w rodzicu w szablonie, tylko w dziecku, jeśli chodzi o parametry nazw przestrzeni nazw i nazw jednostek, ale ich się za to nie powinno podawać w tych ramach, tylko w szablonach, w których wywoływane są te ramki pudełek {{Code|{{m|Pudełko}}}}, ale tak tutaj tak zrobiono by było najłatwiej sprawdzić działanie tego typu funkcji. Analogicznie możemy podawać parametry typu jednostki, np.: wywołaniu modułowym {{Code|{{m|Pudełko|Nazwa przestrzeni nazw 3|typ jednostki 2{{=}}Podręcznik|nazwa jednostki 2{{=}}Szablon:Strona|numer jednostki{{=}}2}}}} (ale wtedy jest brana przestrzeń nazw z nazwy jednostki), ale o tym więcej w rozdziałach {{Code|{{sr|#p["Typ jednostki 3"](frame,i)|p=Pudełko}}}} w „{{sr|#Funkcje typu jednostki|p=Pudełko}}”, on definiuje przestrzenie przedmiotowe, ale można użyć parametru dyskusji typu jednostki z wartością niepustą, wtedy wyświetli się nazwa przestrzeni nazw dyskusji. Jeżeli typ jednostki bazowy wskazuje na przestrzeń nazw główną, wtedy się nie liczą parametry nazw jednostek, a na numerkowy, wtedy się liczy. Również parametry typu jednostki nie powinno się podawać w dziecku w ramce, tylko w rodzicu w szablonie jako parametry, w którym ta ramka jest wywoływana, ale tutaj podano jedynie dla przykładu, jak najłatwiej sprawdzić działanie tych parametrów tej funkcji. Najpierw w funkcji nagłówku brane są parametry nazw przestrzeni nazw, a jeżeli ich nie ma, to parametry typu jednostki, a jeżeli nie ma lub parametry przestrzenne wskazują na przestrzeń główną, i nie ma nazwy jednostki, to generowane są nazwy tej funkcji na podstawie aktualnej strony. === {{Code|p["Nazwa przedmiotowej przestrzeni nazw 3"](frame,i)}} === Funkcja pisze przedmiotową nazwę przestrzeni nazw jakikolwiek nazwy przestrzeni nazw (tzn. nazwę przedmiotową nazwy przestrzenie nazw, czyli nie dyskusji, zamieniana jest na nią samą, czyli identyfikator przestrzeni się nie zmienia, a dyskusji, nie przedmiotową, przekształca się na przedmiotową jej odpowiadającą, czyli w tym przypadku identyfikator przestrzeni zmniejsza się o numer mniej), według podanej w zmiennej {{Code|nazwa przestrzeni nazw}} dla pozycja bazowej w podanych parametrach szablonu rodzicu ramki dziecka, lub dla innej pozycji należy parametr podawać w formie {{Code|nazwa przestrzeni nazw 1}}, {{Code|nazwa przestrzeni nazw 2}}, {{Code|nazwa przestrzeni nazw 3}},..., lub te parametry można podać w postaci ogólnej {{Code|nazwa przestrzeni nazw i}}. Parametry podaje się w parametrach rodzica wywołania tej funkcji {{Code|{{m|Pudełko|Nazwa przedmiotowej przestrzeni nazw 3}}}} (ale ich nie trzeba podawać w dziecku, ale można) i w parametrach dziecka, jeśli chodzi o zmienną {{Code|numer jednostki}}, czyli np.: {{Code|{{m|Pudełko|Nazwa przedmiotowej przestrzeni nazw 3|numer jednostki{{=}}<jakaś liczba całkowita dodatnia>}}}}. Te parametry przestrzenne zamiast w rodzicu w szablonie można podać w ramce dziecka, wtedy parametry dziecka mają pierwszeństwo. Parametry przestrzenne mogą mogą być podane w postaci przestrzeni przedmiotowej lub dyskusji, ale ta funkcja zawsze ją zamienia na przedmiotową. Przestrzeń nazw z parametrów nazw przestrzennych bazowych (bez numerka) może odpowiadać wartości przestrzeni głównej, to wtedy odpowiednia przestrzeń nazw z parametru nazwy jednostki się nie liczy w tej funkcji, aby się liczyła należy użyć funkcji {{Code|{{sr|#p["Nazwa przedmiotowej przestrzeni nazw 2"](frame,...)|p=Pudełko}}}}. W tym przypadku funkcja działa jak {{Code|{{sr|#p["Nazwa przedmiotowej przestrzeni nazw"](frame,...)|p=Pudełko}}}}. Przestrzeń nazw z parametrów nazw przestrzennych numerkowych może odpowiadać wartości przestrzeni głównej, to wtedy odpowiednia przestrzeń nazw z parametru nazwy jednostki się liczy w tej funkcji, wtedy jest liczona nazwa przestrzeni nazw z tego parametru. Gdy parametry przestrzenne lub typ jednostki w drugim podejściu nie wskazują na przestrzeń główną, to wtedy działanie tej funkcji jest podobne do {{Code|{{sr|#p["Nazwa przedmiotowej przestrzeni nazw 2"](frame,...)|p=Pudełko}}}}. Definicja skrótowa funkcji: <syntaxhighlight lang="lua"> p["Nazwa przedmiotowej przestrzeni nazw 3"]=function(frame,czy_uwzglednic_alternatywna_nazwe,i)...end; </syntaxhighlight> Wtedy ciało funkcji tej, czyli jego definicja w środku, jest: <syntaxhighlight lang="lua"> -- Jest liczony numer parametru nazwy przestrzeni nazw, domyslnie chodzi tu o numer bazowy parametrów przestrzennych; local numer_jednostki=i or frame.args["numer jednostki"]; local liczba_numeru_jednostki=((numer_jednostki)and(tonumber(numer_jednostki)) or 0); local pudelko_pomocne_modul=require("Module:Pudełko/Pomocne"); -- Liczy nazwę przestrzeni nazw przedmiotową na podstawie podanych parametrów; return pudelko_pomocne_modul.Uzyskanie_nazw_jednostki(frame,1,liczba_numeru_jednostki,nil,1); </syntaxhighlight> Parametry funkcji: * {{Code|frame}} - tablica ramki tablicy transportu, * {{Code|czy_uwzglednic_alternatywna_nazwe}} - czy ma uwzględniać nazwę przestrzeni nazw domyślną szablonu, dostępne wartości: {{Code|false}}, w której nazwa domyślna nie jest uwzględniana wtedy, oraz {{Code|nil}} i {{Code|true}}, które oznaczają to samo, w tym jeżeli ona jest uwzględniana, wtedy jest brany parametr pierwszy dziecka, który musi istnieć przy takiej wartości tego parametru, tzn. {{Code|{{m|Pudełko|Nazwa przedmiotowej przestrzeni nazw 3|Dyskusja szablonu}}}} - ta nazwa domyślna zostanie zamieniona na przedmiotową, a jak ona by była przedmiotowa, to żadnej zamiany by nie było, a nazwa uzyskana z nazwy przestrzeni nazw z parametrów przestrzennych jest w takim przypadku błędna, to w takim razie brany jest ten parametr, a jeżeli ta nazwa domyślna jest błędna, czyli {{Code|{{m|Pudełko|Nazwa przedmiotowej przestrzeni nazw 3|Moja przestrzeń}}}}, wtedy funkcja zwraca stan błędu {{Code|(błąd)}}. * {{Code|i}} - numer zmiennej nazwy przestrzeni nazw. Funkcja wykorzystuje {{Code|{{sr|#p.Uzyskanie_nazw_jednostki(frame,...)|p=Pudełko/Pomocne}}}} do wyznaczania ogólnego nazwy przestrzeni nazw dla pozycji bazowej i numerkowej, tzn. dla pozycji: jeden, dwa, trzy,..., itd, i ich ogólnej. Parametr ramki tablicy transportu rodzica szablonu: * {{Code|nazwa przestrzeni nazw}}, {{Code|nazwa przestrzeni nazw 1}}, {{Code|nazwa przestrzeni nazw 2}}, {{Code|nazwa przestrzeni nazw 3}},..., {{Code|nazwa przestrzeni nazw i}} - nazwy przestrzeni nazw dla pozycji bazowej oraz zwykłej i ogólnej numerkowej, * {{Code|typ jednostki}}, {{Code|typ jednostki 1}}, {{Code|typ jednostki 2}}, {{Code|typ jednostki 3}},..., {{Code|typ jednostki i}} - typy jednostek, którym odpowiadają pewne przestrzenie przedmiotowe, dla pozycji bazowej, numerkowej i ogólnej. Parametry ramki tablicy transportu dziecka: * Parametry dziecka są takie same jak rodzica dla funkcji pudełkowej plus tu wymienione, * {{Code|numer jednostki}} - jak parametr {{Code|i}} nie został ustawiony, to wtedy liczy się ta zmienna. Przykłady: <syntaxhighlight lang="mediawiki"> {{Nazwa szablonu 1|nazwa przestrzeni nazw=Wikibooks|nazwa przestrzeni nazw=|nazwa przestrzeni nazw i=|nazwa jednostki=Dyskusja Wikibooks:Strona}} ---- {{Nazwa szablonu 2|nazwa przestrzeni nazw=Wikibooks|nazwa przestrzeni nazw 1=Szablon|nazwa przestrzeni nazw i=|nazwa jednostki 2=Dyskusja Wikibooks:Strona}} </syntaxhighlight> W pierwszym wywołaniu {{Code|nazwa przestrzeni nazw}} jest puste, ale dla tego bazowego (bez numerka) szukamy przestrzeni nazw, a więc ta nazwa jest ostateczna. ---- W drugim wywołaniu w dziecku powiedzmy jest wywołanie, i szukamy nazwy przestrzeni nazw o numerze dwa, która została podana, ale istnieje za to jej wersji ogólna {{Code|nazwa przestrzeni nazw i}} i domyślna {{Code|nazwa przestrzeni nazw}}, ale wtedy dla tego numerkowego liczy się to ogólne z {{Code| i}}, a ponieważ ta nazwa jest pusta, więc będziemy liczyli nazwę przestrzeni nazw z {{Code|nazwa jednostki 2}}. Odpowiadająca powyższemu kodowi, powiedzmy wikikod, według ich zawartości, przedstawia się: <syntaxhighlight lang="mediawiki"> {{#invoke:Pudełko|Nazwa przedmiotowej przestrzeni nazw 3}} ---- {{#invoke:Pudełko|Nazwa przedmiotowej przestrzeni nazw 3|numer jednostki=2}} </syntaxhighlight> Na podstawie powyższego przykładu otrzymamy wynik o schemacie, nie wyniku, bo tam nie ma zmiennej {{Code|nazwa przestrzeni nazw 1}}, ale jest {{Code|nazwa przestrzeni nazw i}}: <syntaxhighlight lang="mediawiki"> <!-- nazwa przestrzeni nazw=""; --> <!-- Czyli wynik: --> <!-- wynik pusty --> <!-- Widzimy, że wygenerowała się nazwa przestrzeni nazw, którą jest przestrzeń nazw główna, jest ciągiem pustym: ""; --> ---- <!-- Ale nie "nazwa przestrzeni nazw 2", bo jej nie ma, ale za to istnieje "nazwa przestrzeni nazw i"; --> <!-- nazwa przestrzeni nazw 2=nazwa przestrzeni nazw i="", a nazwa jednostki 2="Dyskusja Wikibooks:Strona"; --> <!-- Czyli wynik: --> Wikibooks <!-- Widzimy, że wygenerowała się nazwa przestrzeni nazw, którą jest przestrzeń nieprogramowa, ale projektu, wychodząca z nazwy jednostek w tym przypadku z "nazwa jednostki 2"; --> </syntaxhighlight> Dla parametrów numerkowych nie jest brana w tym powyższym przykładzie zmienna {{Code|nazwa przestrzeni nazw 2}}, bo jej nie ma, ale za to jest {{Code|nazwa przestrzeni nazw i}}, bo ona występuje jako parametr domyślny ogólny dla parametrów numerkowych. Tytaj jest używana jest zmienna {{Code|nazwa jednostki 2}} do wygenerowania ostatecznego wyniku, bo jak można zauważyć, parametry przestrzenne wskazują na przestrzeń główną, a nazwy jednostek już nie. Dla parametrów bazowych mamy zmienną {{Code|nazwa przestrzeni nazw}}, ona jest pusta, więc to zostanie wziete do ostatecznego wyniku. Przykłady w wikikodzie: * {{Code|{{m|Pudełko|Nazwa przedmiotowej przestrzeni nazw 3|Dyskusja szablonu|nazwa przestrzeni nazw{{=}}Moja przestrzeń|nazwa jednostki{{=}}Dyskusja Wikibooks:Strona}}}} → {{Tt|{{#invoke:Pudełko|Nazwa przedmiotowej przestrzeni nazw 3|Dyskusja szablonu|nazwa przestrzeni nazw=Moja przestrzeń||nazwa jednostki=Dyskusja Wikibooks:Szablon}}}} * {{Code|{{m|Pudełko|Nazwa przedmiotowej przestrzeni nazw 3|Dyskusja szablonu|nazwa przestrzeni nazw 2{{=}}Moja przestrzeń|nazwa jednostki 2{{=}}Dyskusja Wikibooks:Strona|numer jednostki{{=}}2}}}} → {{Tt|{{#invoke:Pudełko|Nazwa przedmiotowej przestrzeni nazw 3|Dyskusja szablonu|nazwa przestrzeni nazw 2=Moja przestrzeń||nazwa jednostki 2=Dyskusja Wikibooks:Szablon|numer jednostki=2}}}} * {{Code|{{m|Pudełko|Nazwa przedmiotowej przestrzeni nazw 3|nazwa przestrzeni nazw{{=}}|nazwa jednostki{{=}}Dyskusja Wikibooks:Strona}}}} → {{Tt|{{#invoke:Pudełko|Nazwa przedmiotowej przestrzeni nazw 3|nazwa przestrzeni nazw=|nazwa jednostki=Dyskusja Wikibooks:Szablon}}}} * {{Code|{{m|Pudełko|Nazwa przedmiotowej przestrzeni nazw 3|nazwa przestrzeni nazw 2{{=}}|nazwa jednostki 2{{=}}Dyskusja Wikibooks:Strona|numer jednostki{{=}}2}}}} → {{Tt|{{#invoke:Pudełko|Nazwa przedmiotowej przestrzeni nazw 3|nazwa przestrzeni nazw 2=|nazwa jednostki 2=Dyskusja Wikibooks:Szablon|numer jednostki=2}}}} Powyżej dla przykładu podano parametry nie w rodzicu w szablonie, tylko w dziecku, jeśli chodzi o parametry nazw przestrzeni nazw, ale ich się za to nie powinno podawać w tych ramach, tylko w szablonach, w których wywoływane są te ramki pudełek {{Code|{{m|Pudełko}}}}, ale tak tutaj tak zrobiono by było najłatwiej sprawdzić działanie tego typu funkcji. Analogicznie możemy podawać parametry typu jednostki, np.: wywołaniu modułowym {{Code|{{m|Pudełko|Nazwa przedmiotowej przestrzeni nazw 3|typ jednostki 2{{=}}strona szablonu|numer jednostki{{=}}2}}}}, ale o tym więcej w rozdziałach {{Code|{{sr|# p["Przedmiotowy typ jednostki 3"](frame,i)|p=Pudełko}}}} w „{{sr|#Funkcje typu jednostki|p=Pudełko}}”, ale wtedy ta sama nazwa przestrzeni nazw reprezentowana przez {{Parametr|typ jednostki 2|strona szablonu}}, jest zamieniana na to samo, lepiej jest tutaj używać parametrów przestrzennych nazw niż typu jednostki, bo typ jednostki ma taką samą wartość dla przestrzeni przedmiotowej, co dyskusji. Tutaj parametr dyskusji typu jednostki bazowy i numerkowy ogólny, czy szczegółowy, nie gra roli, bo nawet, gdy wygenerujemy nazwę przestrzeni dyskusji za pomoca tego parametru, to i tak otrzymamy na samym końcu jego nazwę przedmiotową. Jeżeli typ jednostki bazowy wskazuje na przestrzeń nazw główną, wtedy się nie liczą parametry nazw jednostek, a na numerkowy, wtedy się liczy. Również parametry typu jednostki nie powinno się podawać w dziecku w ramce, tylko w rodzicu w szablonie jako parametry, w którym ta ramka jest wywoływana, ale tutaj podano jedynie dla przykładu, jak najłatwiej sprawdzić działanie tych parametrów tej funkcji. Najpierw w funkcji nagłówku brane są parametry nazw przestrzeni nazw, a jeżeli ich nie ma, to parametry typu jednostki, a jeżeli nie ma, to generowane są nazwy na podstawie aktualnego modułu. === {{Code|p["Nazwa przestrzeni nazw dyskusji 3"](frame,i)}} === Funkcja pisze nazwę przestrzeni nazw dyskusji jakikolwiek nazwy przestrzeni nazw (tzn. nazwę dyskusji nazwy przestrzenie nazw, czyli nie przedmiotowej, zamieniana jest na nią samą, czyli identyfikator przestrzeni się nie zmienia, a przedmiotową, nie dyskusji, przekształca się na dyskusji jej odpowiadającą, czyli w tym przypadku identyfikator przestrzeni zwiększa się o numer więcej), według, i nie zawsze tylko, podanej w zmiennej {{Code|nazwa przestrzeni nazw}} dla pozycja bazowej w podanych parametrach szablonu rodzicu ramki dziecka, lub dla innej pozycji należy parametr podawać w formie {{Code|nazwa przestrzeni nazw 1}}, {{Code|nazwa przestrzeni nazw 2}}, {{Code|nazwa przestrzeni nazw 3}},..., lub te parametry można podać w postaci ogólnej {{Code|nazwa przestrzeni nazw i}}. W tej funkcji trzeba też podawać parametry nazwy jednostek {{Code|nazwa jednostki}}, {{Code|nazwa jednostki 1}}, {{Code|nazwa jednostki 2}}, {{Code|nazwa jednostki 3}},... Parametry podaje się w parametrach rodzica wywołania tej funkcji {{Code|{{m|Pudełko|Nazwa przestrzeni nazw dyskusji 3}}}} (ale ich nie trzeba podawać w dziecku, ale można) i w parametrach dziecka, jeśli chodzi o zmienną {{Code|numer jednostki}}, czyli np.: {{Code|{{m|Pudełko|Nazwa przestrzeni nazw dyskusji 3|numer jednostki{{=}}<jakaś liczba całkowita dodatnia>}}}}. Te parametry przestrzenne zamiast w rodzicu w szablonie można podać w ramce dziecka, wtedy parametry dziecka mają pierwszeństwo. Przestrzeń nazw z parametrów nazw przestrzennych bazowych (bez numerka) może odpowiadać wartości przestrzeni głównej, to wtedy odpowiednia przestrzeń nazw z parametru nazwy jednostki się nie liczy w tej funkcji, aby się liczyła należy użyć funkcji {{Code|{{sr|#p["Nazwa przestrzeni nazw dyskusji 2"](frame,...)|p=Pudełko}}}}. W tym przypadku funkcja działa jak {{Code|{{sr|#p["Nazwa przestrzeni nazw dyskusji"](frame,...)|p=Pudełko}}}}. Przestrzeń nazw z parametrów nazw przestrzennych numerkowych może odpowiadać wartości przestrzeni głównej, to wtedy odpowiednia przestrzeń nazw z parametru nazwy jednostki się liczy w tej funkcji, wtedy jest liczona nazwa przestrzeni nazw z tego parametru. Gdy parametry przestrzenne lub typ jednostki w drugim podejściu nie wskazują na przestrzeń główną, to wtedy działanie tej funkcji jest podobne do {{Code|{{sr|#p["Nazwa przestrzeni nazw dyskusji 2"](frame,...)|p=Pudełko}}}}. Definicja skrótowa funkcji: <syntaxhighlight lang="lua"> p["Nazwa przestrzeni nazw dyskusji 3"]=function(frame,czy_uwzglednic_alternatywna_nazwe,i)...end; </syntaxhighlight> Wtedy ciało funkcji tej, czyli jego definicja w środku, jest: <syntaxhighlight lang="lua"> -- Jest liczony numer parametru nazwy przestrzeni nazw, domyslnie chodzi tu o numer bazowy parametrów przestrzennych; local numer_jednostki=i or frame.args["numer jednostki"]; local liczba_numeru_jednostki=((numer_jednostki)and(tonumber(numer_jednostki)) or 0); local pudelko_pomocne_modul=require("Module:Pudełko/Pomocne"); -- Liczy nazwę przestrzeni nazw dyskusji na podstawie podanych parametrów; return pudelko_pomocne_modul.Uzyskanie_nazw_jednostki(frame,2,liczba_numeru_jednostki,nil,1); </syntaxhighlight> Parametry funkcji: * {{Code|frame}} - tablica ramki tablicy transportu, * {{Code|czy_uwzglednic_alternatywna_nazwe}} - czy ma uwzględniać nazwę przestrzeni nazw domyślną szablonu, dostępne wartości: {{Code|false}}, w której nazwa domyślna nie jest uwzględniana wtedy, oraz {{Code|nil}} i {{Code|true}}, które oznaczają to samo, w tym jeżeli ona jest uwzględniana, wtedy jest brany parametr pierwszy dziecka, który musi istnieć przy takiej wartości tego parametru, tzn. {{Code|{{m|Pudełko|Nazwa przestrzeni nazw dyskusji 3|Szablon}}}}, nazwa domyślna zostatnie zamieniona na dyskusji, a jeśli jest już taka, to takiej transfomacji nie ma, a jeśli nazwa uzyskana nazwy przestrzeni nazw jest w takim przypadku błędna, a jeżeli nazwa domyślna jest błędna, czyli {{Code|{{m|Pudełko|Nazwa przestrzeni nazw dyskusji 3|Moja przestrzeń}}}}, wtedy funkcja zwraca stan błędu {{Code|(błąd)}}. * {{Code|i}} - numer zmiennej nazwy przestrzeni nazw. Funkcja wykorzystuje {{Code|{{sr|#p.Uzyskanie_nazw_jednostki(frame,...)|p=Pudełko/Pomocne}}}} do wyznaczania ogólnego nazwy przestrzeni nazw dla pozycji bazowej i numerkowej, tzn. dla pozycji: jeden, dwa, trzy,..., itd, i ich ogólnej. Parametr ramki tablicy transportu rodzica szablonu: * {{Code|nazwa przestrzeni nazw}}, {{Code|nazwa przestrzeni nazw 1}}, {{Code|nazwa przestrzeni nazw 2}}, {{Code|nazwa przestrzeni nazw 3}},..., {{Code|nazwa przestrzeni nazw i}} - nazwy przestrzeni nazw dla pozycji bazowej oraz zwykłej i ogólnej numerkowej, * {{Code|nazwa jednostki}}, {{Code|nazwa jednostki 1}}, {{Code|nazwa jednostki 2}}, {{Code|nazwa jednostki 3}},... - nazwy jednostek dla pozycji bazowej i numerkowej, * {{Code|typ jednostki}}, {{Code|typ jednostki 1}}, {{Code|typ jednostki 2}}, {{Code|typ jednostki 3}},..., {{Code|typ jednostki i}} - typy jednostek, którym odpowiadają pewne przestrzenie przedmiotowe, dla pozycji bazowej, numerkowej i ogólnej. Parametry ramki tablicy transportu dziecka: * Parametry dziecka są takie same jak rodzica dla funkcji pudełkowej plus tu wymienione, * {{Code|numer jednostki}} - jak parametr {{Code|i}} nie został ustawiony, to wtedy liczy się ta zmienna. Przykłady: <syntaxhighlight lang="mediawiki"> {{Nazwa szablonu 1|nazwa przestrzeni nazw=Wikibooks|nazwa przestrzeni nazw=|nazwa przestrzeni nazw i=|nazwa jednostki=Szablon:Strona}} ---- {{Nazwa szablonu 2|nazwa przestrzeni nazw=Wikibooks|nazwa przestrzeni nazw 1=Szablon|nazwa przestrzeni nazw i=|nazwa jednostki 2=Wikibooks:Strona}} </syntaxhighlight> W pierwszym wywołaniu {{Code|nazwa przestrzeni nazw}} jest puste, ale dla tego bazowego (bez numerka) szukamy przestrzeni nazw, a więc ta nazwa jest ostateczna. ---- W drugim wywołaniu w dziecku powiedzmy jest wywołanie, i szukamy nazwy przestrzeni nazw o numerze dwa, która została podana, ale istnieje za to jej wersji ogólna {{Code|nazwa przestrzeni nazw i}} i domyślna {{Code|nazwa przestrzeni nazw}}, ale wtedy dla tego numerkowego liczy się to ogólne z {{Code| i}}, a ponieważ ta nazwa jest pusta, więc będziemy liczyli nazwę przestrzeni nazw z {{Code|nazwa jednostki 2}}. Odpowiadająca powyższemu kodowi, powiedzmy wikikod, według ich zawartości, przedstawia się: <syntaxhighlight lang="mediawiki"> {{#invoke:Pudełko|Nazwa przestrzeni nazw 3}} ---- {{#invoke:Pudełko|Nazwa przestrzeni nazw 3|numer jednostki=2}} </syntaxhighlight> Na podstawie powyższego przykładu otrzymamy wynik o schemacie, nie wyniku, bo tam nie ma zmiennej {{Code|nazwa przestrzeni nazw 1}}, ale jest {{Code|nazwa przestrzeni nazw i}}: <syntaxhighlight lang="mediawiki"> <!-- nazwa przestrzeni nazw=""; --> <!-- Czyli wynik: --> Dyskusja <!-- Widzimy, że wygenerowała się nazwa przestrzeni nazw, którą jest przestrzeń nazw niegłówna, jest ciągiem niepustym; --> ---- <!-- Ale nie "nazwa przestrzeni nazw 2", bo jej nie ma, ale za to istnieje "nazwa przestrzeni nazw i"; --> <!-- nazwa przestrzeni nazw 2=nazwa przestrzeni nazw i="", a nazwa jednostki 2="Wikibooks:Strona"; --> <!-- Czyli wynik: --> Dyskusja Wikibooks <!-- Widzimy, że wygenerowała się nazwa przestrzeni nazw, którą jest przestrzeń nieprogramowa, ale projektu, wychodząca z nazwy jednostek w tym przypadku z "nazwa jednostki 2"; --> </syntaxhighlight> Dla parametrów numerkowych nie jest brana w tym powyższym przykładzie zmienna {{Code|nazwa przestrzeni nazw 2}}, bo jej nie ma, ale za to jest {{Code|nazwa przestrzeni nazw i}}, bo ona występuje jako parametr domyślny ogólny dla parametrów numerkowych. Tytaj jest używana jest zmienna {{Code|nazwa jednostki 2}} do wygenerowania ostatecznego wyniku, bo jak można zauważyć, parametry przestrzenne wskazują na przestrzeń główną, a nazwy jednostek już nie. Dla parametrów bazowych mamy zmienną {{Code|nazwa przestrzeni nazw}}, ona jest pusta, więc to zostanie wziete do ostatecznego wyniku. Przykłady w wikikodzie: * {{Code|{{m|Pudełko|Nazwa przestrzeni nazw dyskusji 3|Szablon|nazwa przestrzeni nazw{{=}}Moja przestrzeń|nazwa jednostki{{=}}Wikibooks:Strona}}}} → {{Tt|{{#invoke:Pudełko|Nazwa przestrzeni nazw dyskusji 3|Szablon|nazwa przestrzeni nazw=Moja przestrzeń|nazwa jednostki=Wikibooks:Szablon}}}} * {{Code|{{m|Pudełko|Nazwa przestrzeni nazw dyskusji 3|Szablon|nazwa przestrzeni nazw 2{{=}}Moja przestrzeń|nazwa jednostki 2{{=}}Wikibooks:Strona|numer jednostki{{=}}2}}}} → {{Tt|{{#invoke:Pudełko|Nazwa przestrzeni nazw dyskusji 3|Szablon|nazwa przestrzeni nazw 2=Moja przestrzeń|nazwa jednostki 2=Wikibooks:Szablon|numer jednostki=2}}}} * {{Code|{{m|Pudełko|Nazwa przestrzeni nazw dyskusji 3|nazwa przestrzeni nazw{{=}}|nazwa jednostki{{=}}Wikibooks:Strona}}}} → {{Tt|{{#invoke:Pudełko|Nazwa przestrzeni nazw dyskusji 3|nazwa przestrzeni nazw=|nazwa jednostki=Wikibooks:Szablon}}}} * {{Code|{{m|Pudełko|Nazwa przestrzeni nazw dyskusji 3|nazwa przestrzeni nazw 2{{=}}|nazwa jednostki 2{{=}}Wikibooks:Strona|numer jednostki{{=}}2}}}} → {{Tt|{{#invoke:Pudełko|Nazwa przestrzeni nazw dyskusji 3|nazwa przestrzeni nazw 2=|nazwa jednostki 2=Wikibooks:Szablon|numer jednostki=2}}}} Powyżej dla przykładu podano parametry nie w rodzicu w szablonie, tylko w dziecku, jeśli chodzi o parametry nazw przestrzeni nazw i nazw jednostek, ale ich się za to nie powinno podawać w tych ramach, tylko w szablonach, w których wywoływane są te ramki pudełek {{Code|{{m|Pudełko}}}}, ale tak tutaj tak zrobiono by było najłatwiej sprawdzić działanie tego typu funkcji. Analogicznie możemy podawać parametry typu jednostki, np.: wywołaniu modułowym {{Code|{{m|Pudełko|Nazwa przestrzeni nazw dyskusji 3|typ jednostki 2{{=}}Podręcznik|nazwa jednostki 2{{=}}Szablon:Strona|numer jednostki{{=}}2}}}} (ale wtedy jest brana przestrzeń nazw z nazwy jednostki), ale o tym więcej w rozdziałach {{Code|{{sr|# p["Dyskusyjny typ jednostki 3"](frame,i)|p=Pudełko}}}} w „{{sr|#Funkcje typu jednostki|p=Pudełko}}”, one definiują przestrzenie dyskusji, ale można użyć parametru dyskusji typu jednostki z obojętnie jaką wartością niepustą, czy pustą, czy nawet jej nie podamy, wtedy wyświetli się nazwa przestrzeni nazw dyskusji. Jeżeli typ jednostki bazowy wskazuje na przestrzeń nazw główną, wtedy się nie liczą parametry nazw jednostek, a na numerkowy, wtedy się liczy. Również parametry typu jednostki nie powinno się podawać w dziecku w ramce, tylko w rodzicu w szablonie jako parametry, w którym ta ramka jest wywoływana, ale tutaj podano jedynie dla przykładu, jak najłatwiej sprawdzić działanie tych parametrów tej funkcji. Najpierw w funkcji nagłówku brane są parametry nazw przestrzeni nazw, a jeżeli ich nie ma, to parametry typu jednostki, a jeżeli nie ma lub parametry przestrzenne wskazują na przestrzeń główną, i nie ma nazwy jednostki, to generowane są nazwy tej funkcji na podstawie aktualnej strony. == Funkcje nazw jednostki trzeciej wersji == === {{Code|p["Nazwa jednostki 3"](frame,i)}} === === {{Code|p["Nazwa przedmiotowa jednostki 3"](frame,i)}} === === {{Code|p["Nazwa dyskusji jednostki 3"](frame,i)}} === == Funkcje typu jednostki == === {{Code|p["Typ jednostki"](frame,i)}} === === {{Code|p["Typ jednostki 2"](frame,i)}} === === {{Code|p["Typ jednostki 3"](frame,i)}} === === Funkcje typu jednostki przedmiotowe === ==== {{Code|p["Przedmiotowy typ jednostki"](frame,i)}} ==== ==== {{Code|p["Przedmiotowy typ jednostki 2"](frame,i)}} ==== ==== {{Code|p["Przedmiotowy typ jednostki 3"](frame,i)}} ==== === Fukcje typu jednostki dyskusji === ==== {{Code|p["Dyskusyjny typ jednostki"](frame,i)}} ==== ==== {{Code|p["Dyskusyjny typ jednostki 2"](frame,i)}} ==== ==== {{Code|p["Dyskusyjny typ jednostki 3"](frame,i)}} ==== == Funkcje chech pudełka == === {{Code|p["Cecha pudełka"](frame)}} === === {{Code|p["Przedmiotowa cecha pudełka"](frame)}} === === {{Code|p["Dyskusyjna cecha pudełka"](frame)}} === == Fukcje ogólnego pudełka == === {{Code|p["Ogólne pudełko"](frame)}} === == Funkcje ogólne == === {{Code|p["Tekst pudełka"](frame)}} === == Funkcje błędów pudełka == === {{Code|p["Błędy pudełka"](frame)}} === === {{Code|p["Przedmiotowe błędy pudełka"](frame)}} === === {{Code|p["Dyskusyjne błędy pudełka"](frame)}} === == Funkcje nazw stron == === {{Code|p["Nazwa strony głównej projektu"](frame,i)}} === === {{Code|p["Nazwa strony głównej dla dzieci projektu"](frame,i)}} === == Funkcje kodów == === {{Code|p["Kod języka"](frame,i)}} === === {{Code|p["Kod projektu"](frame,i)}} === === {{Code|p["Klucz projektu"](frame,i)}} === == Funkcje wiki == === {{Code|p["Inny niż język bieżący wiki"](frame)}} === === {{Code|p["Inne niż lokalne wiki"](frame)}} === === {{Code|p["Inne niż bieżące wiki"](frame)}} === == Funkcje typów parametrów, czy podane je == === {{Code|p["Podano parametry nienazwane"](frame)}} === === {{Code|p["Podano parametry numerowane"](frame)}} === === {{Code|p["Podano parametry nazwane"](frame)}} === == Funkcje kodów tego projektu == === {{Code|p["Kod projektu tego projektu"](frame)}} === === {{Code|p["Kod języka tego projektu"](frame)}} === === {{Code|p["Klucz projektu tego projektu"](frame)}} === == Funkcje stron == === {{Code|p["Strona główna tego projektu"](frame)}} === === {{Code|p["Strona główna dla dzieci tego projektu"](frame)}} === == Funkcje nazw stron drugiej wersji == === {{Code|p["Nazwa strony głównej dla dzieci projektu 2"](frame)}} === === {{Code| p["Nazwa strony głównej projektu 2"](frame)}} === {{BrClear}} <noinclude><!-- -->{{ProstaStronaKoniec}}<!-- -->{{Kategoria|Opisy funkcji, w Lua w Scribunto, w modułach}}<!-- --></noinclude> 8tyxfdu9s71yysypsuey9yqp738w8tj 540456 540455 2026-04-24T05:55:06Z Persino 2851 540456 wikitext text/x-wiki <noinclude>{{ProstaStronaStart | nagłówek = {{Podrozdział|{{ld2|Pudełko}}|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 pudelko_modul=require("Module:Pudełko"); </syntaxhighlight> dzięki, któremu można wypisywać funkcje należącego do niego. Posługuje się na parametrach pudełkowych {{Parametr|nazwa przestrzeni nazw}} (czy też bez numerka {{Parametr|nazwa przestrzeni nazw i}} dla tego numerowanego) lub te z numerkiem po jednej spacji w nich (ale nie dla tego z końcówką {{Code| i}}) mogą zostać użyte jako parametry szablonu. Moduł {{Code|{{ld2|Pudełko}}}} przedstawia funkcje nazw w oparciu o funkcje nazw {{Code|{{ld2|Nazwy}}}}, generuje on nazwy za pomocą parametrów pudełkowych podanych poniżej. Parametr {{Parametr|nazwa jednostki}} (lub parametr {{Parametr|cel}} dla numerka tego pierwszego, tego alternatywnego), lub te z numerkiem po jednej spacji w nazwie parametru, albo numerowane numerkami {{Code|1}}, {{Code|2}},..., mogą zostać użyte jako parametry szablonu. Parametry określające rodzaj jednostki {{Parametr|typ jednostki}} z {{Parametr|dyskusja typu jednostki}}, itp. w wersjach z numerkiem po jednej spacji w nich mogą zostać użyte jako parametry szablonu. A te tymi numerowanymi liczbami naturalnymi {{Tt|nazwy jednostki}} od jedynki wzwyż poprzez szablon, w którym są one użyte, one też mogą być użyte z dwukropkiem, te numerowane, na samym początku nazwy, wtedy one są traktowane jako pełne nazwy strony, i wtedy one nie zostaną z interpretowane, że do nich trzeba użyć parametr odpowiedni z nazwą przetrzeni nazw z tego numerowanego, czy ogólny, aby utworzyć znów inną pełną nazwę strony dla tego numerka. Zestawienie: * {{Code|nazwa przestrzeni nazw}} i {{Code|nazwa przestrzeni nazw i}} (ogólna nazwa przestrzeni nazw dla wszystkich numerków, i tych numerowanych jednostek) - i to pierwsze z numerkiem, tzn. {{Code|nazwa przestrzeni nazw 1}}, {{Code|nazwa przestrzeni nazw 2}}, ..., * {{Code|nazwa jednostki}} - i te z numerkiem: {{Code|nazwa jednostki 1}}, {{Code|nazwa jednostki 2}}, ..., lub gdy jest zamiast tego parametrem numerowany, {{Code|1}}, {{Code|2}},..., który dla tego pierwszego może być uznany jako: {{Code|cel}} {{=}} {{Code|1}}, * {{Code|typ jednostki}} (parametr bazowy) i {{Code|typ jednostki i}} (parametr domyślny numerkowy) - i te z numerkiem: {{Code|typ jednostki 1}}, {{Code|typ jednostki 2}}, ..., tzn. gdy chcemy określić z jakim typem jednostki mamy do czynienia w zależności do jakiej przestrzeni nazw należy, a w danej, czy jest on np. programowy, czy tylko jest opisem, jak to bywa w szablonach {{Np|Template|link=tak}}, podobnie jest w przypadku {{Np|Module|link=tak}}, czy jak jest w innych przestrzeniach nazw, ** {{Code|dyskusja typu jednostki}} (parametr bazowy) i {{Code|dyskusja typu jednostki i}} (parametr domyślny numerkowy) - i te z numerkiem: {{Code|dyskusja typu jednostki 1}}, {{Code|dyskusja typu jednostki 2}}, ..., gdy chcemy określić wartością niepustą,że chodzi tutaj o typ jednostki. == {{Code|p.CzyNiepoprawnaNazwa(nazwa_jednostki)}} == Funkcja sprawdzajaca, czy jest poprawnie podana nazwa jednostki, czy ma poprawną nazwę. Znakami tymi, z których nie powinna składać się nazwa jest {{Code|<nowiki>{}<>|[]#\n</nowiki>}} i dodatkowo znak {{Code|&#127;}} (kod {{Code|{{Nowiki|&#127;}}}}). Też nie może składać się z trzech znaków tyldy, tzn. {{Code|<nowiki>~~~</nowiki>}}. Również w swojej budowie nie może składać się ze kodów {{Strong|HTML}} literowych o wzorze {{Code|{{Nowiki|&(%a+);}}}}. Natomiast może składać się z {{Code|{{Nowiki|&#(%d+);}}}} i {{Code|{{Nowiki|&#x(%x+);}}}}, ale w pierw te kody muszą być zamienione na normalne znaki. Skrótowa definicja funkcji: <syntaxhighlight lang="lua"> function p.CzyNiepoprawnaNazwa(nazwa_jednostki)...end; </syntaxhighlight> Wtedy ciało funkcji tej, czyli jego definicja w środku, jest: <syntaxhighlight lang="lua"> -- Moduł: "Moduł:Html/dane", służy do ładowania znaku o kodzie HTML "&#127;"; local html_dane_modul=mw.loadData("Module:Html/dane"); return mw.ustring.match(nazwa_jednostki,"[{}<>|%[%]#\n"..html_dane_modul.znak_127.."]+") or mw.ustring.match(nazwa_jednostki,"~~~") or mw.ustring.match(nazwa_jednostki,"&(%a+);"); </syntaxhighlight> Parametry: * {{Code|nazwa_jednostki}} - nazwa jednostki do sprawdzenia. Przykłady: <syntaxhighlight lang="lua"> local pudelko_modul=require("Module:Pudełko"); -- Podana przykładowa niepoprawna nazwa jedostki local nazwa_jednostki="Nazwa pliku [[Nazwa linku w pliku]]"; -- Fukcja zwróci wartość: local czy_poprawna_nazwa=true; local czy_poprawna_nazwa=pudelko_modul.CzyNiepoprawnaNazwa(nazwa_jednostki); </syntaxhighlight> == Funkcje nazw przestrzeni nazw == === {{Code|p["Nazwa przestrzeni nazw"](frame,...)}} === Funkcja pisze nazwę przestrzeni nazw, niezależnie, czy to jest przedmiotowa, czy dyskusji, według podanej w zmiennej {{Code|nazwa przestrzeni nazw}} dla pozycja bazowej w podanych parametrach szablonu rodzicu ramki dziecka, lub dla innej pozycji należy parametr podawać w formie {{Code|nazwa przestrzeni nazw 1}}, {{Code|nazwa przestrzeni nazw 2}}, {{Code|nazwa przestrzeni nazw 3}},..., lub te parametry można podać w postaci ogólnej {{Code|nazwa przestrzeni nazw i}}. Parametry podaje się w parametrach rodzica wywołania tej funkcji {{Code|{{m|Pudełko|Nazwa przestrzeni nazw}}}} (ale ich nie trzeba podawać w dziecku, ale można) i w parametrach dziecka, jeśli chodzi o zmienną {{Code|numer jednostki}}, czyli np.: {{Code|{{m|Pudełko|Nazwa przestrzeni nazw|numer jednostki{{=}}<jakaś liczba całkowita dodatnia>}}}}. Te parametry przestrzenne zamiast w rodzicu w szablonie można podać w ramce dziecka, wtedy parametry dziecka mają pierwszeństwo. Przestrzeń nazw z parametrów nazw przestrzennych może odpowiadać wartości przestrzeni głównej, to wtedy odpowiednia przestrzeń nazw z parametru nazwy jednostki się nie liczy w tej funkcji, aby się liczyła należy użyć funkcji {{Code|{{sr|#p["Nazwa przestrzeni nazw 2"](frame,...)|p=Pudełko}}}}. Definicja skrótowa funkcji: <syntaxhighlight lang="lua"> p["Nazwa przestrzeni nazw"]=function(frame,czy_uwzglednic_alternatywna_nazwe,i)...end; </syntaxhighlight> Wtedy ciało funkcji tej, czyli jego definicja w środku, jest: <syntaxhighlight lang="lua"> -- Jest liczony numer parametru nazwy przestrzeni nazw, domyslnie chodzi tu o numer bazowy parametrów przestrzennych; local numer_jednostki=i or frame.args["numer jednostki"]; local liczba_numer_jednostki=((numer_jednostki)and(tonumber(numer_jednostki))or 0); local pudelko_pomocne_modul=require("Module:Pudełko/Pomocne"); -- Liczy nazwę przestrzeni nazw na podstawie podanych parametrów; return pudelko_pomocne_modul.Nazwa_przestrzeni_nazw(frame,0, czy_uwzglednic_alternatywna_nazwe,liczba_numer_jednostki); </syntaxhighlight> Parametry funkcji: * {{Code|frame}} - tablica ramki tablicy transportu, * {{Code|czy_uwzglednic_alternatywna_nazwe}} - czy ma uwzględniać nazwę przestrzeni nazw domyślną szablonu, dostępne wartości: {{Code|false}}, w której nazwa domyślna nie jest uwzględniana wtedy, oraz {{Code|nil}} i {{Code|true}}, które oznaczają to samo, w tym jeżeli ona jest uwzględniana, wtedy jest brany parametr pierwszy dziecka, który musi istnieć przy takiej wartości tego parametru, tzn. {{Code|{{m|Pudełko|Nazwa przestrzeni nazw|Szablon}}}}, a ten element jest używany, gdy nazwa uzyskana nazwy przestrzeni nazw jest w takim przypadku błędna, a jeżeli wtedy nazwa domyślna jest błędna, czyli {{Code|{{m|Pudełko|Nazwa przestrzeni nazw|Moja przestrzeń}}}}, wtedy funkcja zwraca stan błędu {{Code|(błąd)}}. * {{Code|i}} - numer zmiennej nazwy przestrzeni nazw. Funkcja wykorzystuje {{Code|{{sr|#p.Nazwa_przestrzeni_nazw(frame,...)|p=Pudełko/Pomocne}}}} do wyznaczania ogólnego nazwy przestrzeni nazw dla pozycji bazowej i numerkowej, tzn. dla pozycji: jeden, dwa, trzy,..., itd, i ich ogólnej. Parametr ramki tablicy transportu rodzica szablonu: * {{Code|nazwa przestrzeni nazw}}, {{Code|nazwa przestrzeni nazw 1}}, {{Code|nazwa przestrzeni nazw 2}}, {{Code|nazwa przestrzeni nazw 3}},..., {{Code|nazwa przestrzeni nazw i}} - nazwy przestrzeni nazw dla pozycji bazowej oraz zwykłej i ogólnej numerkowej, * {{Code|typ jednostki}}, {{Code|typ jednostki 1}}, {{Code|typ jednostki 2}}, {{Code|typ jednostki 3}},..., {{Code|typ jednostki i}} - typy jednostek, którym odpowiadają pewne przestrzenie przedmiotowe, dla pozycji bazowej, numerkowej i ogólnej, ** {{Code|dyskusja typu jednostki}}, {{Code|dyskusja typu jednostki 1}}, {{Code|dyskusja typ jednostki 2}}, {{Code|dyskusja typ jednostki 3}},..., {{Code|dyskusja typ jednostki i}} - czy dany typ jednostki ma przedstawiać, jeśli niepusta, przestrzeń dyskusji dla pozycji bazowej, numerkowej i ogólnej. Parametry ramki tablicy transportu dziecka: * Parametry dziecka są takie same jak rodzica dla funkcji pudełkowej plus tu wymienione, * {{Code|numer jednostki}} - jak parametr {{Code|i}} nie został ustawiony, to wtedy liczy się ta zmienna. Przykłady: <syntaxhighlight lang="mediawiki"> {{Nazwa szablonu|nazwa przestrzeni nazw=Wikibooks|nazwa przestrzeni nazw 2=Szablon|nazwa przestrzeni nazw i=Moduł}} </syntaxhighlight> W dziecku powiedzmy jest wywołanie, i szukamy nazwy przestrzeni nazw o numerze dwa, która nie została podana, ale istnieje za to jej wersji ogólna {{Code|nazwa przestrzeni nazw i}} i domyślna {{Code|nazwa przestrzeni nazw}}: <syntaxhighlight lang="mediawiki"> {{#invoke:Pudełko|Nazwa przestrzeni nazw|numer jednostki=1}} </syntaxhighlight> Na podstawie powyższego przykładu otrzymamy wynik o schemacie, nie wyniku, bo tam nie ma zmiennej {{Code|nazwa przestrzeni nazw 1}}, ale jest {{Code|nazwa przestrzeni nazw i}}: <syntaxhighlight lang="mediawiki"> <!-- Ale nie "nazwa przestrzeni nazw", bo jej nie ma, ale za to istnieje "nazwa przestrzeni nazw i"; --> <!-- nazwa przestrzeni nazw 2=nazwa przestrzeni nazw i=Moduł; --> <!-- Czyli wynik: --> Moduł <!-- Widzimy, że wygenerowała się nazwa przestrzeni nazw, którą jest przestrzeń programowa, którą również jest "Szablon"; --> </syntaxhighlight> Nie jest brana w tym powyższym przykładzie zmienna {{Code|nazwa przestrzeni nazw}}, bo jej nie ma, ale za to jest {{Code|nazwa przestrzeni nazw i}}, bo ona występuje jako parametr domyślny ogólny dla parametrów numerkowych. Przykłady w wikikodzie: * {{Code|{{m|Pudełko|Nazwa przestrzeni nazw|numer jednostki{{=}}2}}}} → {{Tt|{{#invoke:Pudełko|Nazwa przestrzeni nazw|numer jednostki=2}}}} * {{Code|{{m|Pudełko|Nazwa przestrzeni nazw|Szablon|nazwa przestrzeni nazw i{{=}}Moja przestrzeń|numer jednostki{{=}}2}}}} → {{Tt|{{#invoke:Pudełko|Nazwa przestrzeni nazw|Szablon|nazwa przestrzeni nazw i=Moja przestrzeń|numer jednostki=2}}}} * {{Code|{{m|Pudełko|Nazwa przestrzeni nazw|nazwa przestrzeni nazw 2{{=}}Szablon|numer jednostki{{=}}2}}}} → {{Tt|{{#invoke:Pudełko|Nazwa przestrzeni nazw|nazwa przestrzeni nazw 2=Szablon|numer jednostki=2}}}} * {{Code|{{m|Pudełko|Nazwa przestrzeni nazw|nazwa przestrzeni nazw 2{{=}}Szablon|numer jednostki{{=}}2}}}} → {{Tt|{{#invoke:Pudełko|Nazwa przestrzeni nazw|nazwa przestrzeni nazw i=Szablon|numer jednostki=2}}}} * {{Code|{{m|Pudełko|Nazwa przestrzeni nazw|nazwa przestrzeni nazw{{=}}Szablon|numer jednostki{{=}}2}}}} → {{Tt|{{#invoke:Pudełko|Nazwa przestrzeni nazw|nazwa przestrzeni nazw=Szablon|numer jednostki=2}}}} Powyżej dla przykładu podano parametry nie w rodzicu w szablonie, tylko w dziecku, jeśli chodzi o parametry nazw przestrzeni nazw, ale ich się za to nie powinno podawać w tych ramach, tylko w szablonach, w których wywoływane są te ramki pudełek {{Code|{{m|Pudełko}}}}, ale tak tutaj tak zrobiono by było najłatwiej sprawdzić działanie tego typu funkcji. Analogicznie możemy podawać parametry typu jednostki, np.: wywołaniu modułowym {{Code|{{m|Pudełko|Nazwa przestrzeni nazw|typ jednostki 2{{=}}strona szablonu|numer jednostki{{=}}2}}}}, ale o tym więcej w rozdziałach {{Code|{{sr|# p["Typ jednostki"](frame,i)|p=Pudełko}}}} w „{{sr|#Funkcje typu jednostki|p=Pudełko}}”, on definiuje przestrzenie przedmiotowe, ale można użyć parametru dyskusji typu jednostki z wartością niepustą, wtedy wyświetli się nazwa przestrzeni nazw dyskusji. Również parametry typu jednostki nie powinno się podawać w dziecku w ramce, tylko w rodzicu w szablonie jako parametry, w którym ta ramka jest wywoływana, ale tutaj podano jedynie dla przykładu, jak najłatwiej sprawdzić działanie tych parametrów tej funkcji. Najpierw w funkcji nagłówku brane są parametry nazw przestrzeni nazw, a jeżeli ich nie ma, to parametry typu jednostki, a jeżeli nie ma, to generowane są nazwy na podstawie aktualnego modułu. === {{Code|p["Nazwa przedmiotowej przestrzeni nazw"](frame,...)}} === Funkcja pisze przedmiotową nazwę przestrzeni nazw jakikolwiek nazwy przestrzeni nazw (tzn. nazwę przedmiotową nazwy przestrzenie nazw, czyli nie dyskusji, zamieniana jest na nią samą, czyli identyfikator przestrzeni się nie zmienia, a dyskusji, nie przedmiotową, przekształca się na przedmiotową jej odpowiadającą, czyli w tym przypadku identyfikator przestrzeni zmniejsza się o numer mniej), według podanej w zmiennej {{Code|nazwa przestrzeni nazw}} dla pozycja bazowej w podanych parametrach szablonu rodzicu ramki dziecka, lub dla innej pozycji należy parametr podawać w formie {{Code|nazwa przestrzeni nazw 1}}, {{Code|nazwa przestrzeni nazw 2}}, {{Code|nazwa przestrzeni nazw 3}},..., lub te parametry można podać w postaci ogólnej {{Code|nazwa przestrzeni nazw i}}. Parametry podaje się w parametrach rodzica wywołania tej funkcji {{Code|{{m|Pudełko|Nazwa przedmiotowej przestrzeni nazw}}}} (ale ich nie trzeba podawać w dziecku, ale można) i w parametrach dziecka, jeśli chodzi o zmienną {{Code|numer jednostki}}, czyli np.: {{Code|{{m|Pudełko|Nazwa przedmiotowej przestrzeni nazw|numer jednostki{{=}}<jakaś liczba całkowita dodatnia>}}}}. Te parametry przestrzenne zamiast w rodzicu w szablonie można podać w ramce dziecka, wtedy parametry dziecka mają pierwszeństwo. Parametry przestrzenne mogą mogą być podane w postaci przestrzeni przedmiotowej lub dyskusji, ale ta funkcja zawsze ją zamienia na przedmiotową. Przestrzeń nazw z parametrów nazw przestrzennych może odpowiadać wartości przestrzeni głównej, to wtedy odpowiednia przestrzeń nazw z parametru nazwy jednostki się nie liczy w tej funkcji, aby się liczyła należy użyć funkcji {{Code|{{sr|#p["Nazwa przedmiotowej przestrzeni nazw 2"](frame,...)|p=Pudełko}}}}. Definicja skrótowa funkcji: <syntaxhighlight lang="lua"> p["Nazwa przedmiotowej przestrzeni nazw"]=function(frame,czy_uwzglednic_alternatywna_nazwe,i)...end; </syntaxhighlight> Wtedy ciało funkcji tej, czyli jego definicja w środku, jest: <syntaxhighlight lang="lua"> -- Jest liczony numer parametru nazwy przestrzeni nazw, domyslnie chodzi tu o numer bazowy parametrów przestrzennych; local numer_jednostki=i or frame.args["numer jednostki"]; local liczba_numer_jednostki=((numer_jednostki)and(tonumber(numer_jednostki))or 0); local pudelko_pomocne_modul=require("Module:Pudełko/Pomocne"); -- Liczy nazwę przestrzeni nazw przedmiotową na podstawie podanych parametrów; return pudelko_pomocne_modul.Nazwa_przestrzeni_nazw(frame,1, czy_uwzglednic_alternatywna_nazwe,liczba_numer_jednostki); </syntaxhighlight> Parametry funkcji: * {{Code|frame}} - tablica ramki tablicy transportu, * {{Code|czy_uwzglednic_alternatywna_nazwe}} - czy ma uwzględniać nazwę przestrzeni nazw domyślną szablonu, dostępne wartości: {{Code|false}}, w której nazwa domyślna nie jest uwzględniana wtedy, oraz {{Code|nil}} i {{Code|true}}, które oznaczają to samo, w tym jeżeli ona jest uwzględniana, wtedy jest brany parametr pierwszy dziecka, który musi istnieć przy takiej wartości tego parametru, tzn. {{Code|{{m|Pudełko|Nazwa przedmiotowej przestrzeni nazw|Dyskusja szablonu}}}} - ta nazwa domyślna zostanie zamieniona na przedmiotową, a jak ona by była przedmiotowa, to żadnej zamiany, by nie było, a jeśli nazwa uzyskana z nazwy przestrzeni nazw z parametrów przestrzennych jest w takim przypadku błędna, to w takim razie brany jest ten parametr, a jeżeli ta nazwa domyślna jest błędna, czyli {{Code|{{m|Pudełko|Nazwa przedmiotowej przestrzeni nazw|Moja przestrzeń}}}}, wtedy funkcja zwraca stan błędu {{Code|(błąd)}}. * {{Code|i}} - numer zmiennej nazwy przestrzeni nazw. Funkcja wykorzystuje {{Code|{{sr|#p.Nazwa_przestrzeni_nazw(frame,...)|p=Pudełko/Pomocne}}}} do wyznaczania ogólnego nazwy przestrzeni nazw dla pozycji bazowej i numerkowej, tzn. dla pozycji: jeden, dwa, trzy,..., itd, i ich ogólnej. Parametr ramki tablicy transportu rodzica szablonu: * {{Code|nazwa przestrzeni nazw}}, {{Code|nazwa przestrzeni nazw 1}}, {{Code|nazwa przestrzeni nazw 2}}, {{Code|nazwa przestrzeni nazw 3}},..., {{Code|nazwa przestrzeni nazw i}} - nazwy przestrzeni nazw dla pozycji bazowej oraz zwykłej i ogólnej numerkowej, * {{Code|typ jednostki}}, {{Code|typ jednostki 1}}, {{Code|typ jednostki 2}}, {{Code|typ jednostki 3}},..., {{Code|typ jednostki i}} - typy jednostek, którym odpowiadają pewne przestrzenie przedmiotowe, dla pozycji bazowej, numerkowej i ogólnej. Parametry ramki tablicy transportu dziecka: * Parametry dziecka są takie same jak rodzica dla funkcji pudełkowej plus tu wymienione, * {{Code|numer jednostki}} - jak parametr {{Code|i}} nie został ustawiony, to wtedy liczy się ta zmienna. Przykłady: <syntaxhighlight lang="mediawiki"> {{Nazwa szablonu|nazwa przestrzeni nazw=Dyskusja Wikibooks|nazwa przestrzeni nazw 2=Dyskusja szablonu|nazwa przestrzeni nazw i=Dyskusja modułu}} </syntaxhighlight> W dziecku powiedzmy jest wywołanie, i szukamy nazwy przestrzeni nazw o numerze dwa, która nie została podana, ale istnieje za to jej wersji ogólna {{Code|nazwa przestrzeni nazw i}} i domyślna {{Code|nazwa przestrzeni nazw}}: <syntaxhighlight lang="mediawiki"> {{#invoke:Pudełko|Nazwa przedmiotowej przestrzeni nazw|numer jednostki=1}} </syntaxhighlight> Na podstawie powyższego przykładu otrzymamy wynik o schemacie, nie wyniku, bo tam nie ma zmiennej {{Code|nazwa przestrzeni nazw 1}}, ale jest {{Code|nazwa przestrzeni nazw i}}: <syntaxhighlight lang="mediawiki"> <!-- Ale nie "nazwa przestrzeni nazw", bo jej nie ma, ale za to istnieje "nazwa przestrzeni nazw i"; --> <!-- nazwa przestrzeni nazw 2=nazwa przestrzeni nazw i=Dyskusja modułu; --> <!-- Czyli wynik: --> Moduł <!-- Widzimy, że wygenerowała się nazwa przestrzeni nazw, którą jest przestrzeń przedmiotowa programowa przestrzeni dyskusji "Dyskusja modułu", którą również jest "Szablon" jego przestrzeni dyskusji "Dyskusja szablonu", a dla ich przestrzeni przedmiotowej, zamiast dyskusji, to samo przekształca się na to samo; --> </syntaxhighlight> Nie jest brana w tym powyższym przykładzie zmienna {{Code|nazwa przestrzeni nazw}}, bo jej nie ma, ale za to jest {{Code|nazwa przestrzeni nazw i}}, bo ona występuje jako parametr domyślny ogólny dla parametrów numerkowych. Przykłady w wikikodzie: * {{Code|{{m|Pudełko|Nazwa przedmiotowej przestrzeni nazw|numer jednostki{{=}}2}}}} → {{Tt|{{#invoke:Pudełko|Nazwa przedmiotowej przestrzeni nazw|numer jednostki=2}}}} * {{Code|{{m|Pudełko|Nazwa przedmiotowej przestrzeni nazw|Dyskusja szablonu|nazwa przestrzeni nazw i{{=}}Moja przestrzeń|numer jednostki{{=}}2}}}} → {{Tt|{{#invoke:Pudełko|Nazwa przedmiotowej przestrzeni nazw|Dyskusja szablonu|nazwa przestrzeni nazw i=Moja przestrzeń|numer jednostki=2}}}} * {{Code|{{m|Pudełko|Nazwa przedmiotowej przestrzeni nazw|nazwa przestrzeni nazw 2{{=}}Dyskusja szablonu|numer jednostki{{=}}2}}}} → {{Tt|{{#invoke:Pudełko|Nazwa przedmiotowej przestrzeni nazw|nazwa przestrzeni nazw 2=Dyskusja szablonu|numer jednostki=2}}}} * {{Code|{{m|Pudełko|Nazwa przedmiotowej przestrzeni nazw|nazwa przestrzeni nazw 2{{=}}Dyskusja szablonu|numer jednostki{{=}}2}}}} → {{Tt|{{#invoke:Pudełko|Nazwa przedmiotowej przestrzeni nazw|nazwa przestrzeni nazw i=Dyskusja szablonu|numer jednostki=2}}}} * {{Code|{{m|Pudełko|Nazwa przedmiotowej przestrzeni nazw|nazwa przestrzeni nazw{{=}}Dyskusja szablonu|numer jednostki{{=}}2}}}} → {{Tt|{{#invoke:Pudełko|Nazwa przedmiotowej przestrzeni nazw|nazwa przestrzeni nazw=Dyskusja szablonu|numer jednostki=2}}}} Powyżej dla przykładu podano parametry nie w rodzicu w szablonie, tylko w dziecku, jeśli chodzi o parametry nazw przestrzeni nazw, ale ich się za to nie powinno podawać w tych ramach, tylko w szablonach, w których wywoływane są te ramki pudełek {{Code|{{m|Pudełko}}}}, ale tak tutaj tak zrobiono by było najłatwiej sprawdzić działanie tego typu funkcji. Analogicznie możemy podawać parametry typu jednostki, np.: wywołaniu modułowym {{Code|{{m|Pudełko|Nazwa przedmiotowej przestrzeni nazw|typ jednostki 2{{=}}strona szablonu|numer jednostki{{=}}2}}}}, ale o tym więcej w rozdziałach {{Code|{{sr|# p["Przedmiotowy typ jednostki"](frame,i)|p=Pudełko}}}} w „{{sr|#Funkcje typu jednostki|p=Pudełko}}”, ale wtedy ta sama nazwa przestrzeni nazw reprezentowana przez {{Parametr|typ jednostki 2|strona szablonu}}, jest zamieniana na to samo, lepiej jest tutaj używać parametrów przestrzennych nazw niż typu jednostki, bo typ jednostki ma taką samą wartość dla przestrzeni przedmiotowej, co dyskusji. Tutaj parametr dyskusji typu jednostki bazowy i numerkowy ogólny, czy szczegółowy, nie gra roli, bo nawet, gdy wygenerujemy nazwę przestrzeni dyskusji za pomoca tego parametru, to i tak otrzymamy na samym końcu jego nazwę przedmiotową. Również parametry typu jednostki nie powinno się podawać w dziecku w ramce, tylko w rodzicu w szablonie jako parametry, w którym ta ramka jest wywoływana, ale tutaj podano jedynie dla przykładu, jak najłatwiej sprawdzić działanie tych parametrów tej funkcji. Najpierw w funkcji nagłówku brane są parametry nazw przestrzeni nazw, a jeżeli ich nie ma, to parametry typu jednostki, a jeżeli nie ma, to generowane są nazwy na podstawie aktualnego modułu. === {{Code|p["Nazwa przestrzeni nazw dyskusji"](frame,...)}} === Funkcja pisze nazwę przestrzeni nazw dyskusji jakikolwiek nazwy przestrzeni nazw (tzn. nazwę przedmiotową nazwy przestrzenie nazw, czyli nie dyskusji, zamieniana jest na dyskusji, czyli identyfikator przestrzeni się zmienia jeden wyżej, a dyskusji, nie przedmiotową, przekształca się na tą samą), według podanej w zmiennej {{Code|nazwa przestrzeni nazw}} dla pozycja bazowej w podanych parametrach szablonu rodzicu ramki dziecka, lub dla innej pozycji należy parametr podawać w formie {{Code|nazwa przestrzeni nazw 1}}, {{Code|nazwa przestrzeni nazw 2}}, {{Code|nazwa przestrzeni nazw 3}},..., lub te parametry można podać w postaci ogólnej {{Code|nazwa przestrzeni nazw i}}. Parametry podaje się w parametrach rodzica wywołania tej funkcji {{Code|{{m|Pudełko|Nazwa przestrzeni nazw dyskusji}}}} (ale ich nie trzeba podawać w dziecku, ale można) i w parametrach dziecka, jeśli chodzi o zmienną {{Code|numer jednostki}}, czyli np.: {{Code|{{m|Pudełko|Nazwa przestrzeni nazw dyskusji|numer jednostki{{=}}<jakaś liczba całkowita dodatnia>}}}}. Te parametry przestrzenne zamiast w rodzicu w szablonie można podać w ramce dziecka, wtedy parametry dziecka mają pierwszeństwo. Parametry przestrzenne mogą mogą być podane w postaci przestrzeni przedmiotowej lub dyskusji, ale ta funkcja zawsze ją zamienia na dyskusji. Przestrzeń nazw z parametrów nazw przestrzennych może odpowiadać wartości przestrzeni głównej, to wtedy odpowiednia przestrzeń nazw z parametru nazwy jednostki się nie liczy w tej funkcji, aby się liczyła należy użyć funkcji {{Code|{{sr|#p["Nazwa przestrzeni nazw dyskusji 2"](frame,...)|p=Pudełko}}}}. Definicja skrótowa funkcji: <syntaxhighlight lang="lua"> p["Nazwa przestrzeni nazw dyskusji"]=function(frame,czy_uwzglednic_alternatywna_nazwe,i)...end; </syntaxhighlight> Wtedy ciało funkcji tej, czyli jego definicja w środku, jest: <syntaxhighlight lang="lua"> -- Jest liczony numer parametru nazwy przestrzeni nazw, domyslnie chodzi tu o numer bazowy parametrów przestrzennych; local numer_jednostki=i or frame.args["numer jednostki"]; local liczba_numer_jednostki=((numer_jednostki)and(tonumber(numer_jednostki))or 0); local pudelko_pomocne_modul=require("Module:Pudełko/Pomocne"); -- Liczy nazwę przestrzeni nazw dyskusji na podstawie podanych parametrów; return pudelko_pomocne_modul.Nazwa_przestrzeni_nazw(frame,2, czy_uwzglednic_alternatywna_nazwe,liczba_numer_jednostki); </syntaxhighlight> Parametry funkcji: * {{Code|frame}} - tablica ramki tablicy transportu, * {{Code|czy_uwzglednic_alternatywna_nazwe}} - czy ma uwzględniać nazwę przestrzeni nazw domyślną szablonu, dostępne wartości: {{Code|false}}, w której nazwa domyślna nie jest uwzględniana wtedy, oraz {{Code|nil}} i {{Code|true}}, które oznaczają to samo, w tym jeżeli ona jest uwzględniana, wtedy jest brany parametr pierwszy dziecka, który musi istnieć przy takiej wartości tego parametru, tzn. {{Code|{{m|Pudełko|Nazwa przestrzeni nazw dyskusji|Szablon}}}} - ta nazwa domyślna zostanie przekształcona na dyskusji, a jeżeli ona by była dyskusji, to nie byłoby żadnego przekształcenia, a jeśli nazwa uzyskana nazwy przestrzeni nazw z parametrów przestrzennych jest w takim przypadku błędna, to w takim razie brany jest ten parametr, a jeżeli nazwa domyślna jest błędna, czyli {{Code|{{m|Pudełko|Nazwa przestrzeni nazw dyskusji|Moja przestrzeń}}}}, wtedy funkcja zwraca stan błędu {{Code|(błąd)}}. * {{Code|i}} - numer zmiennej nazwy przestrzeni nazw. Funkcja wykorzystuje {{Code|{{sr|#p.Nazwa_przestrzeni_nazw(frame,...)|p=Pudełko/Pomocne}}}} do wyznaczania ogólnego nazwy przestrzeni nazw dla pozycji bazowej i numerkowej, tzn. dla pozycji: jeden, dwa, trzy,..., itd, i ich ogólnej. Parametr ramki tablicy transportu rodzica szablonu: * {{Code|nazwa przestrzeni nazw}}, {{Code|nazwa przestrzeni nazw 1}}, {{Code|nazwa przestrzeni nazw 2}}, {{Code|nazwa przestrzeni nazw 3}},..., {{Code|nazwa przestrzeni nazw i}} - nazwy przestrzeni nazw dla pozycji bazowej oraz zwykłej i ogólnej numerkowej, * {{Code|typ jednostki}}, {{Code|typ jednostki 1}}, {{Code|typ jednostki 2}}, {{Code|typ jednostki 3}},..., {{Code|typ jednostki i}} - typy jednostek, którym odpowiadają pewne przestrzenie przedmiotowe, dla pozycji bazowej, numerkowej i ogólnej. Parametry ramki tablicy transportu dziecka: * Parametry dziecka są takie same jak rodzica dla funkcji pudełkowej plus tu wymienione, * {{Code|numer jednostki}} - jak parametr {{Code|i}} nie został ustawiony, to wtedy liczy się ta zmienna. Przykłady: <syntaxhighlight lang="mediawiki"> {{Nazwa szablonu|nazwa przestrzeni nazw=Wikibooks|nazwa przestrzeni nazw 2=Szablon|nazwa przestrzeni nazw i=Moduł}} </syntaxhighlight> W dziecku powiedzmy jest wywołanie, i szukamy nazwy przestrzeni nazw o numerze dwa, która nie została podana, ale istnieje za to jej wersji ogólna {{Code|nazwa przestrzeni nazw i}} i domyślna {{Code|nazwa przestrzeni nazw}}: <syntaxhighlight lang="mediawiki"> {{#invoke:Pudełko|Nazwa przestrzeni nazw dyskusji|numer jednostki=1}} </syntaxhighlight> Na podstawie powyższego przykładu otrzymamy wynik o schemacie, nie wyniku, bo tam nie ma zmiennej {{Code|nazwa przestrzeni nazw 1}}, ale jest {{Code|nazwa przestrzeni nazw i}}: <syntaxhighlight lang="mediawiki"> <!-- Ale nie "nazwa przestrzeni nazw", bo jej nie ma, ale za to istnieje "nazwa przestrzeni nazw i"; --> <!-- nazwa przestrzeni nazw 2=nazwa przestrzeni nazw i=Moduł; --> <!-- Czyli wynik: --> Dyskusja modułu <!-- Widzimy, że wygenerowała się nazwa przestrzeni nazw, którą jest przestrzeń dyskusji przestrzeni programowej przestrzeni przedmiotowej "Moduł", którą również jest "Szablon" jego przestrzeni dyskusji "Dyskusja szablonu", a dla ich przestrzeni przedmiotowej, zamiast dyskusji, to przekształca się na dyskusji jej odpowiadającą; --> </syntaxhighlight> Nie jest brana w tym powyższym przykładzie zmienna {{Code|nazwa przestrzeni nazw}}, bo jej nie ma, ale za to jest {{Code|nazwa przestrzeni nazw i}}, bo ona występuje jako parametr domyślny ogólny dla parametrów numerkowych. Przykłady w wikikodzie: * {{Code|{{m|Pudełko|Nazwa przestrzeni nazw dyskusji|numer jednostki{{=}}2}}}} → {{Tt|{{#invoke:Pudełko|Nazwa przestrzeni nazw dyskusji|numer jednostki=2}}}} * {{Code|{{m|Pudełko|Nazwa przestrzeni nazw dyskusji|Szablon|nazwa przestrzeni nazw i{{=}}Moja przestrzeń|numer jednostki{{=}}2}}}} → {{Tt|{{#invoke:Pudełko|Nazwa przestrzeni nazw dyskusji|Szablon|nazwa przestrzeni nazw i=Moja przestrzeń|numer jednostki=2}}}} * {{Code|{{m|Pudełko|Nazwa przestrzeni nazw dyskusji|nazwa przestrzeni nazw 2{{=}}Szablon|numer jednostki{{=}}2}}}} → {{Tt|{{#invoke:Pudełko|Nazwa przestrzeni nazw dyskusji|nazwa przestrzeni nazw 2=Szablon|numer jednostki=2}}}} * {{Code|{{m|Pudełko|Nazwa przestrzeni nazw dyskusji|nazwa przestrzeni nazw 2{{=}}Szablon|numer jednostki{{=}}2}}}} → {{Tt|{{#invoke:Pudełko|Nazwa przestrzeni nazw dyskusji|nazwa przestrzeni nazw i=Szablon|numer jednostki=2}}}} * {{Code|{{m|Pudełko|Nazwa przestrzeni nazw dyskusji|nazwa przestrzeni nazw{{=}}Szablon|numer jednostki{{=}}2}}}} → {{Tt|{{#invoke:Pudełko|Nazwa przestrzeni nazw dyskusji|nazwa przestrzeni nazw=Szablon|numer jednostki=2}}}} Powyżej dla przykładu podano parametry nie w rodzicu w szablonie, tylko w dziecku, jeśli chodzi o parametry nazw przestrzeni nazw, ale ich się za to nie powinno podawać w tych ramach, tylko w szablonach, w których wywoływane są te ramki pudełek {{Code|{{m|Pudełko}}}}, ale tak tutaj tak zrobiono by było najłatwiej sprawdzić działanie tego typu funkcji. Analogicznie możemy podawać parametry typu jednostki, np.: wywołaniu modułowym {{Code|{{m|Pudełko|Nazwa przestrzeni nazw dyskusji|typ jednostki 2{{=}}strona szablonu|numer jednostki{{=}}2}}}}, ale o tym więcej w rozdziałach {{Code|{{sr|# p["Dyskusyjny typ jednostki"](frame,i)|p=Pudełko}}}} w „{{sr|#Funkcje typu jednostki|p=Pudełko}}”, ale wtedy nazwa przestrzeni nazw reprezentowana przez {{Parametr|typ jednostki 2|strona szablonu}}, jest zamieniana na nazwę przestrzeni nazw dyskusji. Parametr dyskusji typu jednostki bazowy lub dla danego numerka ogólny, czy szczegółowy, nie gra roli. Również parametry typu jednostki nie powinno się podawać w dziecku w ramce, tylko w rodzicu w szablonie jako parametry, w którym ta ramka jest wywoływana, ale tutaj podano jedynie dla przykładu, jak najłatwiej sprawdzić działanie tych parametrów tej funkcji. Najpierw w funkcji nagłówku brane są parametry nazw przestrzeni nazw, a jeżeli ich nie ma, to parametry typu jednostki, a jeżeli nie ma, to generowane są nazwy na podstawie aktualnego modułu. == Funkcje nazw przestrzeni nazw drugiej wersji == === {{Code|p["Nazwa przestrzeni nazw 2"](frame,...)}} === Funkcja pisze nazwę przestrzeni nazw, niezależnie, czy to jest przedmiotowa, czy dyskusji, według, i nie zawsze tylko, podanej w zmiennej {{Code|nazwa przestrzeni nazw}} dla pozycja bazowej w podanych parametrach szablonu rodzicu ramki dziecka, lub dla innej pozycji należy parametr podawać w formie {{Code|nazwa przestrzeni nazw 1}}, {{Code|nazwa przestrzeni nazw 2}}, {{Code|nazwa przestrzeni nazw 3}},..., lub te parametry można podać w postaci ogólnej {{Code|nazwa przestrzeni nazw i}}. W tej funkcji trzeba też podawać parametry nazwy jednostek {{Code|nazwa jednostki}}, {{Code|nazwa jednostki 1}}, {{Code|nazwa jednostki 2}}, {{Code|nazwa jednostki 3}},... Parametry podaje się w parametrach rodzica wywołania tej funkcji {{Code|{{m|Pudełko|Nazwa przestrzeni nazw 2}}}} (ale ich nie trzeba podawać w dziecku, ale można) i w parametrach dziecka, jeśli chodzi o zmienną {{Code|numer jednostki}}, czyli np.: {{Code|{{m|Pudełko|Nazwa przestrzeni nazw 2|numer jednostki{{=}}<jakaś liczba całkowita dodatnia>}}}}. Te parametry przestrzenne zamiast w rodzicu w szablonie można podać w ramce dziecka, wtedy parametry dziecka mają pierwszeństwo. Przestrzeń nazw z parametrów nazw przestrzennych może odpowiadać wartości przestrzeni głównej, to wtedy odpowiednia przestrzeń nazw z parametru nazwy jednostki się liczy w tej funkcji, wtedy jest liczona nazwa przestrzeni nazw z tego parametru. Gdy parametry przestrzenne lub typ jednostki w drugim podejściu nie wskazują na przestrzeń główną, to wtedy działanie tej funkcji jest podobne do {{Code|{{sr|#p["Nazwa przestrzeni nazw"](frame,...)|p=Pudełko}}}}. Definicja skrótowa funkcji: <syntaxhighlight lang="lua"> p["Nazwa przestrzeni nazw 2"]=function(frame,czy_uwzglednic_alternatywna_nazwe,i)...end; </syntaxhighlight> Wtedy ciało funkcji tej, czyli jego definicja w środku, jest: <syntaxhighlight lang="lua"> local pudelko_pomocne_modul=require("Module:Pudełko/Pomocne"); -- Liczy nazwę przestrzeni nazw, jeżeli z parametrów przestrzennych przestrzeń wskazuje na główną, to wtedy jest liczona przestrzeń nazw z nazwy jednostki; return pudelko_pomocne_modul.Nazwa_przestrzeni_nazw_2(frame,czy_uwzglednic_alternatywna_nazwe,i) </syntaxhighlight> Parametry funkcji: * {{Code|frame}} - tablica ramki tablicy transportu, * {{Code|czy_uwzglednic_alternatywna_nazwe}} - czy ma uwzględniać nazwę przestrzeni nazw domyślną szablonu, dostępne wartości: {{Code|false}}, w której nazwa domyślna nie jest uwzględniana wtedy, oraz {{Code|nil}} i {{Code|true}}, które oznaczają to samo, w tym jeżeli ona jest uwzględniana, wtedy jest brany parametr pierwszy dziecka, który musi istnieć przy takiej wartości tego parametru, tzn. {{Code|{{m|Pudełko|Nazwa przestrzeni nazw 2|Szablon}}}}, a jeśli nazwa uzyskana nazwy przestrzeni nazw jest w takim przypadku błędna, a jeżeli nazwa domyślna jest błędna, czyli {{Code|{{m|Pudełko|Nazwa przestrzeni nazw 2|Moja przestrzeń}}}}, wtedy funkcja zwraca stan błędu {{Code|(błąd)}}. * {{Code|i}} - numer zmiennej nazwy przestrzeni nazw. Funkcja wykorzystuje {{Code|{{sr|#p.Nazwa_przestrzeni_nazw_2(frame,...)|p=Pudełko/Pomocne}}}} do wyznaczania ogólnego nazwy przestrzeni nazw dla pozycji bazowej i numerkowej, tzn. dla pozycji: jeden, dwa, trzy,..., itd, i ich ogólnej. Parametr ramki tablicy transportu rodzica szablonu: * {{Code|nazwa przestrzeni nazw}}, {{Code|nazwa przestrzeni nazw 1}}, {{Code|nazwa przestrzeni nazw 2}}, {{Code|nazwa przestrzeni nazw 3}},..., {{Code|nazwa przestrzeni nazw i}} - nazwy przestrzeni nazw dla pozycji bazowej oraz zwykłej i ogólnej numerkowej, * {{Code|nazwa jednostki}}, {{Code|nazwa jednostki 1}}, {{Code|nazwa jednostki 2}}, {{Code|nazwa jednostki 3}},... - nazwy jednostek dla pozycji bazowej i numerkowej, * {{Code|typ jednostki}}, {{Code|typ jednostki 1}}, {{Code|typ jednostki 2}}, {{Code|typ jednostki 3}},..., {{Code|typ jednostki i}} - typy jednostek, którym odpowiadają pewne przestrzenie przedmiotowe, dla pozycji bazowej, numerkowej i ogólnej, ** {{Code|dyskusja typu jednostki}}, {{Code|dyskusja typu jednostki 1}}, {{Code|dyskusja typ jednostki 2}}, {{Code|dyskusja typ jednostki 3}},..., {{Code|dyskusja typ jednostki i}} - czy dany typ jednostki ma przedstawiać, jeśli niepusta, przestrzeń dyskusji dla pozycji bazowej, numerkowej i ogólnej. Parametry ramki tablicy transportu dziecka: * Parametry dziecka są takie same jak rodzica dla funkcji pudełkowej plus tu wymienione, * {{Code|numer jednostki}} - jak parametr {{Code|i}} nie został ustawiony, to wtedy liczy się ta zmienna. Przykłady: <syntaxhighlight lang="mediawiki"> {{Nazwa szablonu|nazwa przestrzeni nazw=Wikibooks|nazwa przestrzeni nazw 1=Szablon|nazwa przestrzeni nazw i=|nazwa jednostki 2=Wikibooks:Strona}} </syntaxhighlight> W dziecku powiedzmy jest wywołanie, i szukamy nazwy przestrzeni nazw o numerze dwa, która została podana, ale istnieje za to jej wersji ogólna {{Code|nazwa przestrzeni nazw i}} i domyślna {{Code|nazwa przestrzeni nazw}}, ale wtedy dla tego numerkowego liczy się to ogólne z {{Code| i}}, a ponieważ ta nazwa jest pusta, więc będziemy liczyli nazwę przestrzeni nazw z {{Code|nazwa jednostki 2}}: <syntaxhighlight lang="mediawiki"> {{#invoke:Pudełko|Nazwa przestrzeni nazw 2|numer jednostki=2}} </syntaxhighlight> Na podstawie powyższego przykładu otrzymamy wynik o schemacie, nie wyniku, bo tam nie ma zmiennej {{Code|nazwa przestrzeni nazw 1}}, ale jest {{Code|nazwa przestrzeni nazw i}}: <syntaxhighlight lang="mediawiki"> <!-- Ale nie "nazwa przestrzeni nazw 2", bo jej nie ma, ale za to istnieje "nazwa przestrzeni nazw i"; --> <!-- nazwa przestrzeni nazw 2=nazwa przestrzeni nazw i="", a nazwa jednostki 2="Wikibooks:Strona"; --> <!-- Czyli wynik: --> Wikibooks <!-- Widzimy, że wygenerowała się nazwa przestrzeni nazw, którą jest przestrzeń nieprogramowa, ale projektu, wychodząca z nazwy jednostek w tym przypadku z "nazwa jednostki 2"; --> </syntaxhighlight> Nie jest brana w tym powyższym przykładzie zmienna {{Code|nazwa przestrzeni nazw}}, bo jej nie ma, ale za to jest {{Code|nazwa przestrzeni nazw i}}, bo ona występuje jako parametr domyślny ogólny dla parametrów numerkowych. Tytaj jest używana jest zmienna {{Code|nazwa jednostki 2}} do wygenerowania ostatecznego wyniku, bo jak można zauważyć, parametry przestrzenne wskazują na przestrzeń główną, a nazwy jednostek już nie. Przykłady w wikikodzie: * {{Code|{{m|Pudełko|Nazwa przestrzeni nazw 2|numer jednostki{{=}}2}}}} → {{Tt|{{#invoke:Pudełko|Nazwa przestrzeni nazw 2|numer jednostki=2}}}} * {{Code|{{m|Pudełko|Nazwa przestrzeni nazw 2|Szablon|nazwa przestrzeni nazw i{{=}}Moja przestrzeń|numer jednostki{{=}}2}}}} → {{Tt|{{#invoke:Pudełko|Nazwa przestrzeni nazw 2|Szablon|nazwa przestrzeni nazw i=Moja przestrzeń|numer jednostki=2}}}} * {{Code|{{m|Pudełko|Nazwa przestrzeni nazw 2|nazwa przestrzeni nazw 2{{=}}|nazwa jednostki 2{{=}}Szablon:Strona|numer jednostki{{=}}2}}}} → {{Tt|{{#invoke:Pudełko|Nazwa przestrzeni nazw 2|nazwa przestrzeni nazw 2=|nazwa jednostki 2=Szablon:Strona|numer jednostki=2}}}} * {{Code|{{m|Pudełko|Nazwa przestrzeni nazw 2|nazwa przestrzeni nazw i{{=}}|nazwa jednostki 2{{=}}Szablon:Strona|numer jednostki{{=}}2}}}} → {{Tt|{{#invoke:Pudełko|Nazwa przestrzeni nazw 2|nazwa przestrzeni nazw i=|nazwa jednostki 2=Szablon:Strona|numer jednostki=2}}}} * {{Code|{{m|Pudełko|Nazwa przestrzeni nazw 2|Szablon|nazwa przestrzeni nazw{{=}}|nazwa jednostki 2{{=}}Wikibooks:Strona|numer jednostki{{=}}2}}}} → {{Tt|{{#invoke:Pudełko|Nazwa przestrzeni nazw 2|Szablon|nazwa przestrzeni nazw=|nazwa jednostki 2=Wikibooks:Strona|numer jednostki=2}}}} Powyżej dla przykładu podano parametry nie w rodzicu w szablonie, tylko w dziecku, jeśli chodzi o parametry nazw przestrzeni nazw i nazw jednostek, ale ich się za to nie powinno podawać w tych ramach, tylko w szablonach, w których wywoływane są te ramki pudełek {{Code|{{m|Pudełko}}}}, ale tak tutaj tak zrobiono by było najłatwiej sprawdzić działanie tego typu funkcji. Analogicznie możemy podawać parametry typu jednostki, np.: wywołaniu modułowym {{Code|{{m|Pudełko|Nazwa przestrzeni nazw 2|typ jednostki 2{{=}}Podręcznik|nazwa jednostki 2{{=}}Szablon:Strona|numer jednostki{{=}}2}}}} (ale wtedy jest brana przestrzeń nazw z nazwy jednostki), ale o tym więcej w rozdziałach {{Code|{{sr|#p["Typ jednostki 2"](frame,i)|p=Pudełko}}}} w „{{sr|#Funkcje typu jednostki|p=Pudełko}}”, on definiuje przestrzenie przedmiotowe, ale można użyć parametru dyskusji typu jednostki z wartością niepustą, wtedy wyświetli się nazwa przestrzeni nazw dyskusji. Jeżeli typ jednostki wskazuje na przestrzeń nazw główną, wtedy się liczą parametry nazw jednostek. Również parametry typu jednostki nie powinno się podawać w dziecku w ramce, tylko w rodzicu w szablonie jako parametry, w którym ta ramka jest wywoływana, ale tutaj podano jedynie dla przykładu, jak najłatwiej sprawdzić działanie tych parametrów tej funkcji. Najpierw w funkcji nagłówku brane są parametry nazw przestrzeni nazw, a jeżeli ich nie ma, to parametry typu jednostki, a jeżeli nie ma lub parametry przestrzenne wskazują na przestrzeń główną, i nie ma nazwy jednostki, to generowane są nazwy tej funkcji na podstawie aktualnej strony. === {{Code|p["Nazwa przedmiotowej przestrzeni nazw 2"](frame,...)}} === Funkcja pisze przedmiotową nazwę przestrzeni nazw jakikolwiek nazwy przestrzeni nazw (tzn. nazwę przedmiotową nazwy przestrzenie nazw, czyli nie dyskusji, zamieniana jest na nią samą, czyli identyfikator przestrzeni się nie zmienia, a dyskusji, nie przedmiotową, przekształca się na przedmiotową jej odpowiadającą, czyli w tym przypadku identyfikator przestrzeni zmniejsza się o numer mniej), według, i nie zawsze tylko, podanej w zmiennej {{Code|nazwa przestrzeni nazw}} dla pozycja bazowej w podanych parametrach szablonu rodzicu ramki dziecka, lub dla innej pozycji należy parametr podawać w formie {{Code|nazwa przestrzeni nazw 1}}, {{Code|nazwa przestrzeni nazw 2}}, {{Code|nazwa przestrzeni nazw 3}},..., lub te parametry można podać w postaci ogólnej {{Code|nazwa przestrzeni nazw i}}. W tej funkcji trzeba też podawać parametry nazwy jednostek {{Code|nazwa jednostki}}, {{Code|nazwa jednostki 1}}, {{Code|nazwa jednostki 2}}, {{Code|nazwa jednostki 3}},... Parametry podaje się w parametrach rodzica wywołania tej funkcji {{Code|{{m|Pudełko|Nazwa przedmiotowej przestrzeni nazw 2}}}} (ale ich nie trzeba podawać w dziecku, ale można) i w parametrach dziecka, jeśli chodzi o zmienną {{Code|numer jednostki}}, czyli np.: {{Code|{{m|Pudełko|Nazwa przedmiotowej przestrzeni nazw 2|numer jednostki{{=}}<jakaś liczba całkowita dodatnia>}}}}. Te parametry przestrzenne zamiast w rodzicu w szablonie można podać w ramce dziecka, wtedy parametry dziecka mają pierwszeństwo. Przestrzeń nazw z parametrów nazw przestrzennych po przekształceniu na przedmiotową może odpowiadać wartości przestrzeni głównej, to wtedy odpowiednia przestrzeń nazw z parametru nazwy jednostki się liczy w tej funkcji, wtedy jest liczona nazwa przestrzeni nazw z tego parametru. Gdy parametry przestrzenne lub typ jednostki w drugim podejściu nie wskazują na przestrzeń główną, to wtedy działanie tej funkcji jest podobne do {{Code|{{sr|#p["Nazwa przedmiotowej przestrzeni nazw"](frame,...)|p=Pudełko}}}}. Definicja skrótowa funkcji: <syntaxhighlight lang="lua"> p["Nazwa przedmiotowej przestrzeni nazw 2"]=function(frame,czy_uwzglednic_alternatywna_nazwe,i)...end; </syntaxhighlight> Wtedy ciało funkcji tej, czyli jego definicja w środku, jest: <syntaxhighlight lang="lua"> local pudelko_pomocne_modul=require("Module:Pudełko/Pomocne"); return pudelko_pomocne_modul.Nazwa_przestrzeni_nazw_przedmiotowa_dyskusji_2(frame,czy_uwzglednic_alternatywna_nazwe,i,"przedmiotowa"); </syntaxhighlight> Parametry funkcji: * {{Code|frame}} - tablica ramki tablicy transportu, * {{Code|czy_uwzglednic_alternatywna_nazwe}} - czy ma uwzględniać nazwę przestrzeni nazw domyślną szablonu, dostępne wartości: {{Code|false}}, w której nazwa domyślna nie jest uwzględniana wtedy, oraz {{Code|nil}} i {{Code|true}}, które oznaczają to samo, w tym jeżeli ona jest uwzględniana, wtedy jest brany parametr pierwszy dziecka, który musi istnieć przy takiej wartości tego parametru, tzn. {{Code|{{m|Pudełko|Nazwa przedmiotowej przestrzeni nazw 2|Szablon}}}}, nazwa domyślna zostanie zamieniona na przedmiotową, a jeżeli jest już taka, to żadnej zamiany nie ma, a jeśli nazwa uzyskana nazwy przestrzeni nazw jest w takim przypadku błędna, a jeżeli nazwa domyślna jest błędna, czyli {{Code|{{m|Pudełko|Nazwa przedmiotowej przestrzeni nazw 2|Moja przestrzeń}}}}, wtedy funkcja zwraca stan błędu {{Code|(błąd)}}. * {{Code|i}} - numer zmiennej nazwy przestrzeni nazw. Funkcja wykorzystuje {{Code|{{sr|#p.Nazwa_przestrzeni_nazw_przedmiotowa_dyskusji_2(frame,...)|p=Pudełko/Pomocne}}}} do wyznaczania ogólnego nazwy przestrzeni nazw dla pozycji bazowej i numerkowej, tzn. dla pozycji: jeden, dwa, trzy,..., itd, i ich ogólnej. Parametr ramki tablicy transportu rodzica szablonu: * {{Code|nazwa przestrzeni nazw}}, {{Code|nazwa przestrzeni nazw 1}}, {{Code|nazwa przestrzeni nazw 2}}, {{Code|nazwa przestrzeni nazw 3}},..., {{Code|nazwa przestrzeni nazw i}} - nazwy przestrzeni nazw dla pozycji bazowej oraz zwykłej i ogólnej numerkowej, * {{Code|nazwa jednostki}}, {{Code|nazwa jednostki 1}}, {{Code|nazwa jednostki 2}}, {{Code|nazwa jednostki 3}},... - nazwy jednostek dla pozycji bazowej i numerkowej, * {{Code|typ jednostki}}, {{Code|typ jednostki 1}}, {{Code|typ jednostki 2}}, {{Code|typ jednostki 3}},..., {{Code|typ jednostki i}} - typy jednostek, którym odpowiadają pewne przestrzenie przedmiotowe, dla pozycji bazowej, numerkowej i ogólnej. Parametry ramki tablicy transportu dziecka: * Parametry dziecka są takie same jak rodzica dla funkcji pudełkowej plus tu wymienione, * {{Code|numer jednostki}} - jak parametr {{Code|i}} nie został ustawiony, to wtedy liczy się ta zmienna. Przykłady: <syntaxhighlight lang="mediawiki"> {{Nazwa szablonu|nazwa przestrzeni nazw=Wikibooks|nazwa przestrzeni nazw 1=Szablon|nazwa przestrzeni nazw i=|nazwa jednostki 2=Dyskusja Wikibooks:Strona}} </syntaxhighlight> W dziecku powiedzmy jest wywołanie, i szukamy nazwy przestrzeni nazw o numerze dwa, która została podana, ale istnieje za to jej wersji ogólna {{Code|nazwa przestrzeni nazw i}} i domyślna {{Code|nazwa przestrzeni nazw}}, ale wtedy dla tego numerkowego liczy się to ogólne z {{Code| i}}, a ponieważ ta nazwa jest pusta, więc będziemy liczyli nazwę przestrzeni nazw z {{Code|nazwa jednostki 2}}: <syntaxhighlight lang="mediawiki"> {{#invoke:Pudełko|Nazwa przedmiotowej przestrzeni nazw 2|numer jednostki=2}} </syntaxhighlight> Na podstawie powyższego przykładu otrzymamy wynik o schemacie, nie wyniku, bo tam nie ma zmiennej {{Code|nazwa przestrzeni nazw 1}}, ale jest {{Code|nazwa przestrzeni nazw i}}: <syntaxhighlight lang="mediawiki"> <!-- Ale nie "nazwa przestrzeni nazw 2", bo jej nie ma, ale za to istnieje "nazwa przestrzeni nazw i"; --> <!-- nazwa przestrzeni nazw 2=nazwa przestrzeni nazw i="", a nazwa jednostki 2="Dyskusja Wikibooks:Strona"; --> <!-- Czyli wynik: --> Wikibooks <!-- Widzimy, że wygenerowała się nazwa przestrzeni nazw, którą jest przestrzeń nieprogramowa, ale projektu, wychodząca z nazwy jednostek w tym przypadku z "nazwa jednostki 2"; --> </syntaxhighlight> Nie jest brana w tym powyższym przykładzie zmienna {{Code|nazwa przestrzeni nazw}}, bo jej nie ma, ale za to jest {{Code|nazwa przestrzeni nazw i}}, bo ona występuje jako parametr domyślny ogólny dla parametrów numerkowych. Tytaj jest używana jest zmienna {{Code|nazwa jednostki 2}} do wygenerowania ostatecznego wyniku, bo jak można zauważyć, parametry przestrzenne wskazują na przestrzeń główną, a nazwy jednostek już nie. Przykłady w wikikodzie: * {{Code|{{m|Pudełko|Nazwa przedmiotowej przestrzeni nazw 2|numer jednostki{{=}}2}}}} → {{Tt|{{#invoke:Pudełko|Nazwa przedmiotowej przestrzeni nazw 2|numer jednostki=2}}}} * {{Code|{{m|Pudełko|Nazwa przedmiotowej przestrzeni nazw 2|Dyskusja szablonu|nazwa przestrzeni nazw i{{=}}Moja przestrzeń|numer jednostki{{=}}2}}}} → {{Tt|{{#invoke:Pudełko|Nazwa przedmiotowej przestrzeni nazw 2|Dyskusja szablonu|nazwa przestrzeni nazw i=Moja przestrzeń|numer jednostki=2}}}} * {{Code|{{m|Pudełko|Nazwa przedmiotowej przestrzeni nazw 2|nazwa przestrzeni nazw 2{{=}}Dyskusja|nazwa jednostki 2{{=}}Dyskusja szablonu:Strona|numer jednostki{{=}}2}}}} → {{Tt|{{#invoke:Pudełko|Nazwa przedmiotowej przestrzeni nazw 2|nazwa przestrzeni nazw 2=Dyskusja|nazwa jednostki 2=Dyskusja szablonu:Strona|numer jednostki=2}}}} * {{Code|{{m|Pudełko|Nazwa przedmiotowej przestrzeni nazw 2|nazwa przestrzeni nazw i{{=}}Dyskusja|nazwa jednostki 2{{=}}Dyskusja szablonu:Strona|numer jednostki{{=}}2}}}} → {{Tt|{{#invoke:Pudełko|Nazwa przedmiotowej przestrzeni nazw 2|nazwa przestrzeni nazw i=Dyskusja|nazwa jednostki 2=Dyskusja szablonu:Strona|numer jednostki=2}}}} * {{Code|{{m|Pudełko|Nazwa przedmiotowej przestrzeni nazw 2|Dyskusja szablonu|nazwa przestrzeni nazw{{=}}Dyskusja|nazwa jednostki 2{{=}}Wikibooks:Strona|numer jednostki{{=}}2}}}} → {{Tt|{{#invoke:Pudełko|Nazwa przedmiotowej przestrzeni nazw 2|Dyskusja szablonu|nazwa przestrzeni nazw=Dyskusja|nazwa jednostki 2=Dyskusja Wikibooks:Strona|numer jednostki=2}}}} Powyżej dla przykładu podano parametry nie w rodzicu w szablonie, tylko w dziecku, jeśli chodzi o parametry nazw przestrzeni nazw i nazw jednostek, ale ich się za to nie powinno podawać w tych ramach, tylko w szablonach, w których wywoływane są te ramki pudełek {{Code|{{m|Pudełko}}}}, ale tak tutaj tak zrobiono by było najłatwiej sprawdzić działanie tego typu funkcji. Analogicznie możemy podawać parametry typu jednostki, np.: wywołaniu modułowym {{Code|{{m|Pudełko|Nazwa przedmiotowej przestrzeni nazw 2|typ jednostki 2{{=}}Podręcznik|nazwa jednostki 2{{=}}Dyskusja szablonu:Strona|numer jednostki{{=}}2}}}} (ale wtedy jest brana przestrzeń nazw z nazwy jednostki), ale o tym więcej w rozdziałach {{Code|{{sr|# p["Przedmiotowy typ jednostki 2"](frame,i)|p=Pudełko}}}} w „{{sr|#Funkcje typu jednostki|p=Pudełko}}”, on definiuje przestrzenie przedmiotowe, ale można użyć parametru dyskusji typu jednostki z wartością niepustą, pustą, czy nawet jej nie podamy, wtedy wyświetli się nazwa przestrzeni nazw przedmiotowej. Jeżeli typ jednostki wskazuje na przestrzeń nazw główną, wtedy się liczą parametry nazw jednostek. Również parametry typu jednostki nie powinno się podawać w dziecku w ramce, tylko w rodzicu w szablonie jako parametry, w którym ta ramka jest wywoływana, ale tutaj podano jedynie dla przykładu, jak najłatwiej sprawdzić działanie tych parametrów tej funkcji. Najpierw w funkcji nagłówku brane są parametry nazw przestrzeni nazw, a jeżeli ich nie ma, to parametry typu jednostki, a jeżeli nie ma lub parametry przestrzenne wskazują na przestrzeń główną, i nie ma nazwy jednostki, to generowane są nazwy tej funkcji na podstawie aktualnej strony. === {{Code|p["Nazwa przestrzeni nazw dyskusji 2"](frame,...)}} === Funkcja pisze nazwę przestrzeni nazw dyskusji jakikolwiek nazwy przestrzeni nazw (tzn. nazwę dyskusji nazwy przestrzenie nazw, czyli nie przedmiotowej, zamieniana jest na nią samą, czyli identyfikator przestrzeni się nie zmienia, a przedmiotową, nie dyskusji, przekształca się na dyskusji jej odpowiadającą, czyli w tym przypadku identyfikator przestrzeni zwiększa się o numer więcej), według, i nie zawsze tylko, podanej w zmiennej {{Code|nazwa przestrzeni nazw}} dla pozycja bazowej w podanych parametrach szablonu rodzicu ramki dziecka, lub dla innej pozycji należy parametr podawać w formie {{Code|nazwa przestrzeni nazw 1}}, {{Code|nazwa przestrzeni nazw 2}}, {{Code|nazwa przestrzeni nazw 3}},..., lub te parametry można podać w postaci ogólnej {{Code|nazwa przestrzeni nazw i}}. W tej funkcji trzeba też podawać parametry nazwy jednostek {{Code|nazwa jednostki}}, {{Code|nazwa jednostki 1}}, {{Code|nazwa jednostki 2}}, {{Code|nazwa jednostki 3}},... Parametry podaje się w parametrach rodzica wywołania tej funkcji {{Code|{{m|Pudełko|Nazwa przestrzeni nazw dyskusji 2}}}} (ale ich nie trzeba podawać w dziecku, ale można) i w parametrach dziecka, jeśli chodzi o zmienną {{Code|numer jednostki}}, czyli np.: {{Code|{{m|Pudełko|Nazwa przestrzeni nazw dyskusji 2|numer jednostki{{=}}<jakaś liczba całkowita dodatnia>}}}}. Te parametry przestrzenne zamiast w rodzicu w szablonie można podać w ramce dziecka, wtedy parametry dziecka mają pierwszeństwo. Przestrzeń nazw z parametrów nazw przestrzennych po przekształceniu może odpowiadać wartości przestrzeni głównej, to wtedy odpowiednia przestrzeń nazw z parametru nazwy jednostki się liczy w tej funkcji, wtedy jest liczona nazwa przestrzeni nazw dyskusji z tego parametru. Gdy parametry przestrzenne lub typ jednostki w drugim podejściu nie wskazują na przestrzeń główną, to wtedy działanie tej funkcji jest podobne do {{Code|{{sr|#p["Nazwa dyskusji przestrzeni nazw"](frame,...)|p=Pudełko}}}}. Definicja skrótowa funkcji: <syntaxhighlight lang="lua"> p["Nazwa przestrzeni nazw dyskusji 2"]=function(frame,czy_uwzglednic_alternatywna_nazwe,i)...end; </syntaxhighlight> Wtedy ciało funkcji tej, czyli jego definicja w środku, jest: <syntaxhighlight lang="lua"> local pudelko_pomocne_modul=require("Module:Pudełko/Pomocne"); return pudelko_pomocne_modul.Nazwa_przestrzeni_nazw_przedmiotowa_dyskusji_2(frame,czy_uwzglednic_alternatywna_nazwe,i,"dyskusja"); </syntaxhighlight> Parametry funkcji: * {{Code|frame}} - tablica ramki tablicy transportu, * {{Code|czy_uwzglednic_alternatywna_nazwe}} - czy ma uwzględniać nazwę przestrzeni nazw domyślną szablonu, dostępne wartości: {{Code|false}}, w której nazwa domyślna nie jest uwzględniana wtedy, oraz {{Code|nil}} i {{Code|true}}, które oznaczają to samo, w tym jeżeli ona jest uwzględniana, wtedy jest brany parametr pierwszy dziecka, który musi istnieć przy takiej wartości tego parametru, tzn. {{Code|{{m|Pudełko|Nazwa przestrzeni nazw dyskusji 2|Szablon}}}}, nazwa domyślna zostanie zamieniona na dyskusji, a jeżeli jest już taka, to nie ma takiej zamiany, a jeśli nazwa uzyskana nazwy przestrzeni nazw jest w takim przypadku błędna, a jeżeli nazwa domyślna jest błędna, czyli {{Code|{{m|Pudełko|Nazwa przestrzeni nazw dyskusji 2|Moja przestrzeń}}}}, wtedy funkcja zwraca stan błędu {{Code|(błąd)}}. * {{Code|i}} - numer zmiennej nazwy przestrzeni nazw. Funkcja wykorzystuje {{Code|{{sr|#p.Nazwa_przestrzeni_nazw_przedmiotowa_dyskusji_2(frame,...)|p=Pudełko/Pomocne}}}} do wyznaczania ogólnego nazwy przestrzeni nazw dla pozycji bazowej i numerkowej, tzn. dla pozycji: jeden, dwa, trzy,..., itd, i ich ogólnej. Parametr ramki tablicy transportu rodzica szablonu: * {{Code|nazwa przestrzeni nazw}}, {{Code|nazwa przestrzeni nazw 1}}, {{Code|nazwa przestrzeni nazw 2}}, {{Code|nazwa przestrzeni nazw 3}},..., {{Code|nazwa przestrzeni nazw i}} - nazwy przestrzeni nazw dla pozycji bazowej oraz zwykłej i ogólnej numerkowej, * {{Code|nazwa jednostki}}, {{Code|nazwa jednostki 1}}, {{Code|nazwa jednostki 2}}, {{Code|nazwa jednostki 3}},... - nazwy jednostek dla pozycji bazowej i numerkowej, * {{Code|typ jednostki}}, {{Code|typ jednostki 1}}, {{Code|typ jednostki 2}}, {{Code|typ jednostki 3}},..., {{Code|typ jednostki i}} - typy jednostek, którym odpowiadają pewne przestrzenie przedmiotowe, dla pozycji bazowej, numerkowej i ogólnej. Parametry ramki tablicy transportu dziecka: * Parametry dziecka są takie same jak rodzica dla funkcji pudełkowej plus tu wymienione, * {{Code|numer jednostki}} - jak parametr {{Code|i}} nie został ustawiony, to wtedy liczy się ta zmienna. Przykłady: <syntaxhighlight lang="mediawiki"> {{Nazwa szablonu|nazwa przestrzeni nazw=Wikibooks|nazwa przestrzeni nazw 1=Szablon|nazwa przestrzeni nazw i=|nazwa jednostki 2=Wikibooks:Strona}} </syntaxhighlight> W dziecku powiedzmy jest wywołanie, i szukamy nazwy przestrzeni nazw o numerze dwa, która została podana, ale istnieje za to jej wersji ogólna {{Code|nazwa przestrzeni nazw i}} i domyślna {{Code|nazwa przestrzeni nazw}}, ale wtedy dla tego numerkowego liczy się to ogólne z {{Code| i}}, a ponieważ ta nazwa jest pusta, więc będziemy liczyli nazwę przestrzeni nazw z {{Code|nazwa jednostki 2}}: <syntaxhighlight lang="mediawiki"> {{#invoke:Pudełko|Nazwa przestrzeni nazw dyskusji 2|numer jednostki=2}} </syntaxhighlight> Na podstawie powyższego przykładu otrzymamy wynik o schemacie, nie wyniku, bo tam nie ma zmiennej {{Code|nazwa przestrzeni nazw 1}}, ale jest {{Code|nazwa przestrzeni nazw i}}: <syntaxhighlight lang="mediawiki"> <!-- Ale nie "nazwa przestrzeni nazw 2", bo jej nie ma, ale za to istnieje "nazwa przestrzeni nazw i"; --> <!-- nazwa przestrzeni nazw 2=nazwa przestrzeni nazw i="", a nazwa jednostki 2="Wikibooks:Strona"; --> <!-- Czyli wynik: --> Dyskusja Wikibooks <!-- Widzimy, że wygenerowała się nazwa przestrzeni nazw, którą jest przestrzeń nieprogramowa, ale dyskusji projektu, wychodząca z nazwy jednostek w tym przypadku z "nazwa jednostki 2"; --> </syntaxhighlight> Nie jest brana w tym powyższym przykładzie zmienna {{Code|nazwa przestrzeni nazw}}, bo jej nie ma, ale za to jest {{Code|nazwa przestrzeni nazw i}}, bo ona występuje jako parametr domyślny ogólny dla parametrów numerkowych. Tytaj jest używana jest zmienna {{Code|nazwa jednostki 2}} do wygenerowania ostatecznego wyniku, bo jak można zauważyć, parametry przestrzenne wskazują na przestrzeń główną, a nazwy jednostek już nie. Przykłady w wikikodzie: * {{Code|{{m|Pudełko|Nazwa przestrzeni nazw dyskusji 2|numer jednostki{{=}}2}}}} → {{Tt|{{#invoke:Pudełko|Nazwa przestrzeni nazw dyskusji 2|numer jednostki=2}}}} * {{Code|{{m|Pudełko|Nazwa przestrzeni nazw dyskusji 2|Szablon|nazwa przestrzeni nazw i{{=}}Moja przestrzeń|numer jednostki{{=}}2}}}} → {{Tt|{{#invoke:Pudełko|Nazwa przestrzeni nazw dyskusji 2|Szablon|nazwa przestrzeni nazw i=Moja przestrzeń|numer jednostki=2}}}} * {{Code|{{m|Pudełko|Nazwa przestrzeni nazw dyskusji 2|nazwa przestrzeni nazw 2{{=}}|nazwa jednostki 2{{=}}Szablon:Strona|numer jednostki{{=}}2}}}} → {{Tt|{{#invoke:Pudełko|Nazwa przestrzeni nazw dyskusji 2|nazwa przestrzeni nazw 2=|nazwa jednostki 2=Szablon:Strona|numer jednostki=2}}}} * {{Code|{{m|Pudełko|Nazwa przestrzeni nazw dyskusji 2|nazwa przestrzeni nazw i{{=}}|nazwa jednostki 2{{=}}Szablon:Strona|numer jednostki{{=}}2}}}} → {{Tt|{{#invoke:Pudełko|Nazwa przestrzeni nazw dyskusji 2|nazwa przestrzeni nazw i=|nazwa jednostki 2=Szablon:Strona|numer jednostki=2}}}} * {{Code|{{m|Pudełko|Nazwa przestrzeni nazw dyskusji 2|Szablon|nazwa przestrzeni nazw{{=}}|nazwa jednostki 2{{=}}Wikibooks:Strona|numer jednostki{{=}}2}}}} → {{Tt|{{#invoke:Pudełko|Nazwa przestrzeni nazw dyskusji 2|Szablon|nazwa przestrzeni nazw=|nazwa jednostki 2=Dyskusja Wikibooks:Strona|numer jednostki=2}}}} Powyżej dla przykładu podano parametry nie w rodzicu w szablonie, tylko w dziecku, jeśli chodzi o parametry nazw przestrzeni nazw i nazw jednostek, ale ich się za to nie powinno podawać w tych ramach, tylko w szablonach, w których wywoływane są te ramki pudełek {{Code|{{m|Pudełko}}}}, ale tak tutaj tak zrobiono by było najłatwiej sprawdzić działanie tego typu funkcji. Analogicznie możemy podawać parametry typu jednostki, np.: wywołaniu modułowym {{Code|{{m|Pudełko|Nazwa przestrzeni nazw dyskusji 2|typ jednostki 2{{=}}Podręcznik|nazwa jednostki 2{{=}}Szablon:Strona|numer jednostki{{=}}2}}}} (ale wtedy jest brana przestrzeń nazw z nazwy jednostki), ale o tym więcej w rozdziałach {{Code|{{sr|# p["Dyskusyjny typ jednostki 3"](frame,i)|p=Pudełko}}}} w „{{sr|#Funkcje typu jednostki|p=Pudełko}}”, one definiują przestrzenie dyskusji, ale można użyć parametru dyskusji typu jednostki z obojętnie jaką wartością niepustą, czy pustą, czy nawet jej nie podamy, wtedy wyświetli się nazwa przestrzeni nazw dyskusji. Jeżeli typ jednostki wskazuje na przestrzeń nazw główną, wtedy się liczą parametry nazw jednostek. Również parametry typu jednostki nie powinno się podawać w dziecku w ramce, tylko w rodzicu w szablonie jako parametry, w którym ta ramka jest wywoływana, ale tutaj podano jedynie dla przykładu, jak najłatwiej sprawdzić działanie tych parametrów tej funkcji. Najpierw w funkcji nagłówku brane są parametry nazw przestrzeni nazw, a jeżeli ich nie ma, to parametry typu jednostki, a jeżeli nie ma lub parametry przestrzenne wskazują na przestrzeń główną, i nie ma nazwy jednostki, to generowane są nazwy tej funkcji na podstawie aktualnej strony. == Funkcje pełnych nazw jednostki == === {{Code|p["Pełna nazwa dyskusji jednostki"](frame,i)}} === === {{Code|p["Pełna nazwa przedmiotowa jednostki"](frame,i)}} === === {{Code|p["Pełna nazwa jednostki"](frame,i)}} === == Funkcje pełnych nazw jednostki drugiej wersji == === {{Code|p["Pełna nazwa dyskusji jednostki 2"](frame,i)}} === === {{Code|p["Pełna nazwa przedmiotowa jednostki 2"](frame,i)}} === === {{Code|p["Pełna nazwa jednostki 2"](frame,i)}} === == Funkcje pełnych nazw jednostki trzeciej wersji == === {{Code|p["Pełna nazwa dyskusji jednostki 3"](frame,i)}} === === {{Code|p["Pełna nazwa przedmiotowa jednostki 3"](frame,i)}} === === {{Code|p["Pełna nazwa jednostki 3"](frame,i)}} === == Funkcje nazw jednostki == === {{Code|p["Nazwa jednostki"](frame,i)}} === == Funkcje nazw jednostki drugiej wersji == === {{Code|p["Nazwa jednostki 2"](frame,i)}} === === {{Code|p["Nazwa przedmiotowa jednostki 2"](frame,i)}} === === {{Code|p["Nazwa dyskusji jednostki 2"](frame,i)}} === == Funkcje nazw przestrzeni nazw trzeciej wersji == === {{Code|p["Nazwa przestrzeni nazw 3"](frame,i)}} === Funkcja pisze nazwę przestrzeni nazw, niezależnie, czy to jest przedmiotowa, czy dyskusji, według, i nie zawsze tylko, podanej w zmiennej {{Code|nazwa przestrzeni nazw}} dla pozycja bazowej w podanych parametrach szablonu rodzicu ramki dziecka, lub dla innej pozycji należy parametr podawać w formie {{Code|nazwa przestrzeni nazw 1}}, {{Code|Nazwa przestrzeni nazw 3}}, {{Code|nazwa przestrzeni nazw 3}},..., lub te parametry można podać w postaci ogólnej {{Code|nazwa przestrzeni nazw i}}. W tej funkcji trzeba też podawać parametry nazwy jednostek {{Code|nazwa jednostki}}, {{Code|nazwa jednostki 1}}, {{Code|nazwa jednostki 2}}, {{Code|nazwa jednostki 3}},... Parametry podaje się w parametrach rodzica wywołania tej funkcji {{Code|{{m|Pudełko|Nazwa przestrzeni nazw 3}}}} (ale ich nie trzeba podawać w dziecku, ale można) i w parametrach dziecka, jeśli chodzi o zmienną {{Code|numer jednostki}}, czyli np.: {{Code|{{m|Pudełko|Nazwa przestrzeni nazw 3|numer jednostki{{=}}<jakaś liczba całkowita dodatnia>}}}}. Te parametry przestrzenne zamiast w rodzicu w szablonie można podać w ramce dziecka, wtedy parametry dziecka mają pierwszeństwo. Przestrzeń nazw z parametrów nazw przestrzennych bazowych (bez numerka) może odpowiadać wartości przestrzeni głównej, to wtedy odpowiednia przestrzeń nazw z parametru nazwy jednostki się nie liczy w tej funkcji, aby się liczyła należy użyć funkcji {{Code|{{sr|#p["Nazwa przestrzeni nazw 2"](frame,...)|p=Pudełko}}}}. W tym przypadku funkcja działa jak {{Code|{{sr|#p["Nazwa przestrzeni nazw"](frame,...)|p=Pudełko}}}}. Przestrzeń nazw z parametrów nazw przestrzennych numerkowych może odpowiadać wartości przestrzeni głównej, to wtedy odpowiednia przestrzeń nazw z parametru nazwy jednostki się liczy w tej funkcji, wtedy jest liczona nazwa przestrzeni nazw z tego parametru. Gdy parametry przestrzenne lub typ jednostki w drugim podejściu nie wskazują na przestrzeń główną, to wtedy działanie tej funkcji jest podobne do {{Code|{{sr|#p["Nazwa przestrzeni nazw 2"](frame,...)|p=Pudełko}}}}. Definicja skrótowa funkcji: <syntaxhighlight lang="lua"> p["Nazwa przestrzeni nazw 3"]=function(frame,czy_uwzglednic_alternatywna_nazwe,i)...end; </syntaxhighlight> Wtedy ciało funkcji tej, czyli jego definicja w środku, jest: <syntaxhighlight lang="lua"> -- Jest liczony numer parametru nazwy przestrzeni nazw, domyslnie chodzi tu o numer bazowy parametrów przestrzennych; local numer_jednostki=i or frame.args["numer jednostki"]; local liczba_numeru_jednostki=((numer_jednostki)and(tonumber(numer_jednostki)) or 0); local pudelko_pomocne_modul=require("Module:Pudełko/Pomocne"); -- Liczy nazwę przestrzeni nazw dyskusji na podstawie podanych parametrów; return pudelko_pomocne_modul.Uzyskanie_nazw_jednostki(frame,0,liczba_numeru_jednostki,nil,2); </syntaxhighlight> Parametry funkcji: * {{Code|frame}} - tablica ramki tablicy transportu, * {{Code|czy_uwzglednic_alternatywna_nazwe}} - czy ma uwzględniać nazwę przestrzeni nazw domyślną szablonu, dostępne wartości: {{Code|false}}, w której nazwa domyślna nie jest uwzględniana wtedy, oraz {{Code|nil}} i {{Code|true}}, które oznaczają to samo, w tym jeżeli ona jest uwzględniana, wtedy jest brany parametr pierwszy dziecka, który musi istnieć przy takiej wartości tego parametru, tzn. {{Code|{{m|Pudełko|Nazwa przestrzeni nazw 3|Szablon}}}}, a jeśli nazwa uzyskana nazwy przestrzeni nazw jest w takim przypadku błędna, a jeżeli nazwa domyślna jest błędna, czyli {{Code|{{m|Pudełko|Nazwa przestrzeni nazw 3|Moja przestrzeń}}}}, wtedy funkcja zwraca stan błędu {{Code|(błąd)}}. * {{Code|i}} - numer zmiennej nazwy przestrzeni nazw. Funkcja wykorzystuje {{Code|{{sr|#p.Uzyskanie_nazw_jednostki(frame,...)|p=Pudełko/Pomocne}}}} do wyznaczania ogólnego nazwy przestrzeni nazw dla pozycji bazowej i numerkowej, tzn. dla pozycji: jeden, dwa, trzy,..., itd, i ich ogólnej. Parametr ramki tablicy transportu rodzica szablonu: * {{Code|nazwa przestrzeni nazw}}, {{Code|nazwa przestrzeni nazw 1}}, {{Code|Nazwa przestrzeni nazw 3}}, {{Code|nazwa przestrzeni nazw 3}},..., {{Code|nazwa przestrzeni nazw i}} - nazwy przestrzeni nazw dla pozycji bazowej oraz zwykłej i ogólnej numerkowej, * {{Code|nazwa jednostki}}, {{Code|nazwa jednostki 1}}, {{Code|nazwa jednostki 2}}, {{Code|nazwa jednostki 3}},... - nazwy jednostek dla pozycji bazowej i numerkowej, * {{Code|typ jednostki}}, {{Code|typ jednostki 1}}, {{Code|typ jednostki 2}}, {{Code|typ jednostki 3}},..., {{Code|typ jednostki i}} - typy jednostek, którym odpowiadają pewne przestrzenie przedmiotowe, dla pozycji bazowej, numerkowej i ogólnej, ** {{Code|dyskusja typu jednostki}}, {{Code|dyskusja typu jednostki 1}}, {{Code|dyskusja typ jednostki 2}}, {{Code|dyskusja typ jednostki 3}},..., {{Code|dyskusja typ jednostki i}} - czy dany typ jednostki ma przedstawiać, jeśli niepusta, przestrzeń dyskusji dla pozycji bazowej, numerkowej i ogólnej. Parametry ramki tablicy transportu dziecka: * Parametry dziecka są takie same jak rodzica dla funkcji pudełkowej plus tu wymienione, * {{Code|numer jednostki}} - jak parametr {{Code|i}} nie został ustawiony, to wtedy liczy się ta zmienna. Przykłady: <syntaxhighlight lang="mediawiki"> {{Nazwa szablonu 1|nazwa przestrzeni nazw=Wikibooks|nazwa przestrzeni nazw=|nazwa przestrzeni nazw i=|nazwa jednostki=Szablon:Strona}} ---- {{Nazwa szablonu 2|nazwa przestrzeni nazw=Wikibooks|nazwa przestrzeni nazw 1=Szablon|nazwa przestrzeni nazw i=|nazwa jednostki 2=Wikibooks:Strona}} </syntaxhighlight> W pierwszym wywołaniu {{Code|nazwa przestrzeni nazw}} jest puste, ale dla tego bazowego (bez numerka) szukamy przestrzeni nazw, a więc ta nazwa jest ostateczna. ---- W drugim wywołaniu w dziecku powiedzmy jest wywołanie, i szukamy nazwy przestrzeni nazw o numerze dwa, która została podana, ale istnieje za to jej wersji ogólna {{Code|nazwa przestrzeni nazw i}} i domyślna {{Code|nazwa przestrzeni nazw}}, ale wtedy dla tego numerkowego liczy się to ogólne z {{Code| i}}, a ponieważ ta nazwa jest pusta, więc będziemy liczyli nazwę przestrzeni nazw z {{Code|nazwa jednostki 2}}. Odpowiadająca powyższemu kodowi, powiedzmy wikikod, według ich zawartości, przedstawia się: <syntaxhighlight lang="mediawiki"> {{#invoke:Pudełko|Nazwa przestrzeni nazw 3}} ---- {{#invoke:Pudełko|Nazwa przestrzeni nazw 3|numer jednostki=2}} </syntaxhighlight> Na podstawie powyższego przykładu otrzymamy wynik o schemacie, nie wyniku, bo tam nie ma zmiennej {{Code|nazwa przestrzeni nazw 1}}, ale jest {{Code|nazwa przestrzeni nazw i}}: <syntaxhighlight lang="mediawiki"> <!-- nazwa przestrzeni nazw=""; --> <!-- Czyli wynik: --> <!-- wynik pusty --> <!-- Widzimy, że wygenerowała się nazwa przestrzeni nazw, którą jest przestrzeń nazw główna, jest ciągiem pustym: ""; --> ---- <!-- Ale nie "nazwa przestrzeni nazw 2", bo jej nie ma, ale za to istnieje "nazwa przestrzeni nazw i"; --> <!-- nazwa przestrzeni nazw 2=nazwa przestrzeni nazw i="", a nazwa jednostki 2="Wikibooks:Strona"; --> <!-- Czyli wynik: --> Wikibooks <!-- Widzimy, że wygenerowała się nazwa przestrzeni nazw, którą jest przestrzeń nieprogramowa, ale projektu, wychodząca z nazwy jednostek w tym przypadku z "nazwa jednostki 2"; --> </syntaxhighlight> Dla parametrów numerkowych nie jest brana w tym powyższym przykładzie zmienna {{Code|nazwa przestrzeni nazw 2}}, bo jej nie ma, ale za to jest {{Code|nazwa przestrzeni nazw i}}, bo ona występuje jako parametr domyślny ogólny dla parametrów numerkowych. Tytaj jest używana jest zmienna {{Code|nazwa jednostki 2}} do wygenerowania ostatecznego wyniku, bo jak można zauważyć, parametry przestrzenne wskazują na przestrzeń główną, a nazwy jednostek już nie. Dla parametrów bazowych mamy zmienną {{Code|nazwa przestrzeni nazw}}, ona jest pusta, więc to zostanie wziete do ostatecznego wyniku. Przykłady w wikikodzie: * {{Code|{{m|Pudełko|Nazwa przestrzeni nazw 3|Szablon|nazwa przestrzeni nazw{{=}}Moja przestrzeń|nazwa jednostki{{=}}Wikibooks:Strona}}}} → {{Tt|{{#invoke:Pudełko|Nazwa przestrzeni nazw 3|Szablon|nazwa przestrzeni nazw=Moja przestrzeń|nazwa jednostki=Wikibooks:Szablon}}}} * {{Code|{{m|Pudełko|Nazwa przestrzeni nazw 3|Szablon|nazwa przestrzeni nazw 2{{=}}Moja przestrzeń|nazwa jednostki 2{{=}}Wikibooks:Strona}|numer jednostki{{=}}2}}}} → {{Tt|{{#invoke:Pudełko|Nazwa przestrzeni nazw 3|Szablon|nazwa przestrzeni nazw 2=Moja przestrzeń|nazwa jednostki 2=Wikibooks:Szablon|numer jednostki=2}}}} * {{Code|{{m|Pudełko|Nazwa przestrzeni nazw 3|nazwa przestrzeni nazw{{=}}|nazwa jednostki{{=}}Wikibooks:Strona}}}} → {{Tt|{{#invoke:Pudełko|Nazwa przestrzeni nazw 3|nazwa przestrzeni nazw=|nazwa jednostki=Wikibooks:Szablon}}}} * {{Code|{{m|Pudełko|Nazwa przestrzeni nazw 3|nazwa przestrzeni nazw 2{{=}}|nazwa jednostki 2{{=}}Wikibooks:Strona|numer jednostki{{=}}2}}}} → {{Tt|{{#invoke:Pudełko|Nazwa przestrzeni nazw 3|nazwa przestrzeni nazw 2=|nazwa jednostki 2=Wikibooks:Szablon|numer jednostki=2}}}} Powyżej dla przykładu podano parametry nie w rodzicu w szablonie, tylko w dziecku, jeśli chodzi o parametry nazw przestrzeni nazw i nazw jednostek, ale ich się za to nie powinno podawać w tych ramach, tylko w szablonach, w których wywoływane są te ramki pudełek {{Code|{{m|Pudełko}}}}, ale tak tutaj tak zrobiono by było najłatwiej sprawdzić działanie tego typu funkcji. Analogicznie możemy podawać parametry typu jednostki, np.: wywołaniu modułowym {{Code|{{m|Pudełko|Nazwa przestrzeni nazw 3|typ jednostki 2{{=}}Podręcznik|nazwa jednostki 2{{=}}Szablon:Strona|numer jednostki{{=}}2}}}} (ale wtedy jest brana przestrzeń nazw z nazwy jednostki), ale o tym więcej w rozdziałach {{Code|{{sr|#p["Typ jednostki 3"](frame,i)|p=Pudełko}}}} w „{{sr|#Funkcje typu jednostki|p=Pudełko}}”, on definiuje przestrzenie przedmiotowe, ale można użyć parametru dyskusji typu jednostki z wartością niepustą, wtedy wyświetli się nazwa przestrzeni nazw dyskusji. Jeżeli typ jednostki bazowy wskazuje na przestrzeń nazw główną, wtedy się nie liczą parametry nazw jednostek, a na numerkowy, wtedy się liczy. Również parametry typu jednostki nie powinno się podawać w dziecku w ramce, tylko w rodzicu w szablonie jako parametry, w którym ta ramka jest wywoływana, ale tutaj podano jedynie dla przykładu, jak najłatwiej sprawdzić działanie tych parametrów tej funkcji. Najpierw w funkcji nagłówku brane są parametry nazw przestrzeni nazw, a jeżeli ich nie ma, to parametry typu jednostki, a jeżeli nie ma lub parametry przestrzenne wskazują na przestrzeń główną, i nie ma nazwy jednostki, to generowane są nazwy tej funkcji na podstawie aktualnej strony. === {{Code|p["Nazwa przedmiotowej przestrzeni nazw 3"](frame,i)}} === Funkcja pisze przedmiotową nazwę przestrzeni nazw jakikolwiek nazwy przestrzeni nazw (tzn. nazwę przedmiotową nazwy przestrzenie nazw, czyli nie dyskusji, zamieniana jest na nią samą, czyli identyfikator przestrzeni się nie zmienia, a dyskusji, nie przedmiotową, przekształca się na przedmiotową jej odpowiadającą, czyli w tym przypadku identyfikator przestrzeni zmniejsza się o numer mniej), według podanej w zmiennej {{Code|nazwa przestrzeni nazw}} dla pozycja bazowej w podanych parametrach szablonu rodzicu ramki dziecka, lub dla innej pozycji należy parametr podawać w formie {{Code|nazwa przestrzeni nazw 1}}, {{Code|nazwa przestrzeni nazw 2}}, {{Code|nazwa przestrzeni nazw 3}},..., lub te parametry można podać w postaci ogólnej {{Code|nazwa przestrzeni nazw i}}. Parametry podaje się w parametrach rodzica wywołania tej funkcji {{Code|{{m|Pudełko|Nazwa przedmiotowej przestrzeni nazw 3}}}} (ale ich nie trzeba podawać w dziecku, ale można) i w parametrach dziecka, jeśli chodzi o zmienną {{Code|numer jednostki}}, czyli np.: {{Code|{{m|Pudełko|Nazwa przedmiotowej przestrzeni nazw 3|numer jednostki{{=}}<jakaś liczba całkowita dodatnia>}}}}. Te parametry przestrzenne zamiast w rodzicu w szablonie można podać w ramce dziecka, wtedy parametry dziecka mają pierwszeństwo. Parametry przestrzenne mogą mogą być podane w postaci przestrzeni przedmiotowej lub dyskusji, ale ta funkcja zawsze ją zamienia na przedmiotową. Przestrzeń nazw z parametrów nazw przestrzennych bazowych (bez numerka) może odpowiadać wartości przestrzeni głównej, to wtedy odpowiednia przestrzeń nazw z parametru nazwy jednostki się nie liczy w tej funkcji, aby się liczyła należy użyć funkcji {{Code|{{sr|#p["Nazwa przedmiotowej przestrzeni nazw 2"](frame,...)|p=Pudełko}}}}. W tym przypadku funkcja działa jak {{Code|{{sr|#p["Nazwa przedmiotowej przestrzeni nazw"](frame,...)|p=Pudełko}}}}. Przestrzeń nazw z parametrów nazw przestrzennych numerkowych może odpowiadać wartości przestrzeni głównej, to wtedy odpowiednia przestrzeń nazw z parametru nazwy jednostki się liczy w tej funkcji, wtedy jest liczona nazwa przestrzeni nazw z tego parametru. Gdy parametry przestrzenne lub typ jednostki w drugim podejściu nie wskazują na przestrzeń główną, to wtedy działanie tej funkcji jest podobne do {{Code|{{sr|#p["Nazwa przedmiotowej przestrzeni nazw 2"](frame,...)|p=Pudełko}}}}. Definicja skrótowa funkcji: <syntaxhighlight lang="lua"> p["Nazwa przedmiotowej przestrzeni nazw 3"]=function(frame,czy_uwzglednic_alternatywna_nazwe,i)...end; </syntaxhighlight> Wtedy ciało funkcji tej, czyli jego definicja w środku, jest: <syntaxhighlight lang="lua"> -- Jest liczony numer parametru nazwy przestrzeni nazw, domyslnie chodzi tu o numer bazowy parametrów przestrzennych; local numer_jednostki=i or frame.args["numer jednostki"]; local liczba_numeru_jednostki=((numer_jednostki)and(tonumber(numer_jednostki)) or 0); local pudelko_pomocne_modul=require("Module:Pudełko/Pomocne"); -- Liczy nazwę przestrzeni nazw przedmiotową na podstawie podanych parametrów; return pudelko_pomocne_modul.Uzyskanie_nazw_jednostki(frame,1,liczba_numeru_jednostki,nil,1); </syntaxhighlight> Parametry funkcji: * {{Code|frame}} - tablica ramki tablicy transportu, * {{Code|czy_uwzglednic_alternatywna_nazwe}} - czy ma uwzględniać nazwę przestrzeni nazw domyślną szablonu, dostępne wartości: {{Code|false}}, w której nazwa domyślna nie jest uwzględniana wtedy, oraz {{Code|nil}} i {{Code|true}}, które oznaczają to samo, w tym jeżeli ona jest uwzględniana, wtedy jest brany parametr pierwszy dziecka, który musi istnieć przy takiej wartości tego parametru, tzn. {{Code|{{m|Pudełko|Nazwa przedmiotowej przestrzeni nazw 3|Dyskusja szablonu}}}} - ta nazwa domyślna zostanie zamieniona na przedmiotową, a jak ona by była przedmiotowa, to żadnej zamiany by nie było, a nazwa uzyskana z nazwy przestrzeni nazw z parametrów przestrzennych jest w takim przypadku błędna, to w takim razie brany jest ten parametr, a jeżeli ta nazwa domyślna jest błędna, czyli {{Code|{{m|Pudełko|Nazwa przedmiotowej przestrzeni nazw 3|Moja przestrzeń}}}}, wtedy funkcja zwraca stan błędu {{Code|(błąd)}}. * {{Code|i}} - numer zmiennej nazwy przestrzeni nazw. Funkcja wykorzystuje {{Code|{{sr|#p.Uzyskanie_nazw_jednostki(frame,...)|p=Pudełko/Pomocne}}}} do wyznaczania ogólnego nazwy przestrzeni nazw dla pozycji bazowej i numerkowej, tzn. dla pozycji: jeden, dwa, trzy,..., itd, i ich ogólnej. Parametr ramki tablicy transportu rodzica szablonu: * {{Code|nazwa przestrzeni nazw}}, {{Code|nazwa przestrzeni nazw 1}}, {{Code|nazwa przestrzeni nazw 2}}, {{Code|nazwa przestrzeni nazw 3}},..., {{Code|nazwa przestrzeni nazw i}} - nazwy przestrzeni nazw dla pozycji bazowej oraz zwykłej i ogólnej numerkowej, * {{Code|typ jednostki}}, {{Code|typ jednostki 1}}, {{Code|typ jednostki 2}}, {{Code|typ jednostki 3}},..., {{Code|typ jednostki i}} - typy jednostek, którym odpowiadają pewne przestrzenie przedmiotowe, dla pozycji bazowej, numerkowej i ogólnej. Parametry ramki tablicy transportu dziecka: * Parametry dziecka są takie same jak rodzica dla funkcji pudełkowej plus tu wymienione, * {{Code|numer jednostki}} - jak parametr {{Code|i}} nie został ustawiony, to wtedy liczy się ta zmienna. Przykłady: <syntaxhighlight lang="mediawiki"> {{Nazwa szablonu 1|nazwa przestrzeni nazw=Wikibooks|nazwa przestrzeni nazw=|nazwa przestrzeni nazw i=|nazwa jednostki=Dyskusja Wikibooks:Strona}} ---- {{Nazwa szablonu 2|nazwa przestrzeni nazw=Wikibooks|nazwa przestrzeni nazw 1=Szablon|nazwa przestrzeni nazw i=|nazwa jednostki 2=Dyskusja Wikibooks:Strona}} </syntaxhighlight> W pierwszym wywołaniu {{Code|nazwa przestrzeni nazw}} jest puste, ale dla tego bazowego (bez numerka) szukamy przestrzeni nazw, a więc ta nazwa jest ostateczna. ---- W drugim wywołaniu w dziecku powiedzmy jest wywołanie, i szukamy nazwy przestrzeni nazw o numerze dwa, która została podana, ale istnieje za to jej wersji ogólna {{Code|nazwa przestrzeni nazw i}} i domyślna {{Code|nazwa przestrzeni nazw}}, ale wtedy dla tego numerkowego liczy się to ogólne z {{Code| i}}, a ponieważ ta nazwa jest pusta, więc będziemy liczyli nazwę przestrzeni nazw z {{Code|nazwa jednostki 2}}. Odpowiadająca powyższemu kodowi, powiedzmy wikikod, według ich zawartości, przedstawia się: <syntaxhighlight lang="mediawiki"> {{#invoke:Pudełko|Nazwa przedmiotowej przestrzeni nazw 3}} ---- {{#invoke:Pudełko|Nazwa przedmiotowej przestrzeni nazw 3|numer jednostki=2}} </syntaxhighlight> Na podstawie powyższego przykładu otrzymamy wynik o schemacie, nie wyniku, bo tam nie ma zmiennej {{Code|nazwa przestrzeni nazw 1}}, ale jest {{Code|nazwa przestrzeni nazw i}}: <syntaxhighlight lang="mediawiki"> <!-- nazwa przestrzeni nazw=""; --> <!-- Czyli wynik: --> <!-- wynik pusty --> <!-- Widzimy, że wygenerowała się nazwa przestrzeni nazw, którą jest przestrzeń nazw główna, jest ciągiem pustym: ""; --> ---- <!-- Ale nie "nazwa przestrzeni nazw 2", bo jej nie ma, ale za to istnieje "nazwa przestrzeni nazw i"; --> <!-- nazwa przestrzeni nazw 2=nazwa przestrzeni nazw i="", a nazwa jednostki 2="Dyskusja Wikibooks:Strona"; --> <!-- Czyli wynik: --> Wikibooks <!-- Widzimy, że wygenerowała się nazwa przestrzeni nazw, którą jest przestrzeń nieprogramowa, ale projektu, wychodząca z nazwy jednostek w tym przypadku z "nazwa jednostki 2"; --> </syntaxhighlight> Dla parametrów numerkowych nie jest brana w tym powyższym przykładzie zmienna {{Code|nazwa przestrzeni nazw 2}}, bo jej nie ma, ale za to jest {{Code|nazwa przestrzeni nazw i}}, bo ona występuje jako parametr domyślny ogólny dla parametrów numerkowych. Tytaj jest używana jest zmienna {{Code|nazwa jednostki 2}} do wygenerowania ostatecznego wyniku, bo jak można zauważyć, parametry przestrzenne wskazują na przestrzeń główną, a nazwy jednostek już nie. Dla parametrów bazowych mamy zmienną {{Code|nazwa przestrzeni nazw}}, ona jest pusta, więc to zostanie wziete do ostatecznego wyniku. Przykłady w wikikodzie: * {{Code|{{m|Pudełko|Nazwa przedmiotowej przestrzeni nazw 3|Dyskusja szablonu|nazwa przestrzeni nazw{{=}}Moja przestrzeń|nazwa jednostki{{=}}Dyskusja Wikibooks:Strona}}}} → {{Tt|{{#invoke:Pudełko|Nazwa przedmiotowej przestrzeni nazw 3|Dyskusja szablonu|nazwa przestrzeni nazw=Moja przestrzeń||nazwa jednostki=Dyskusja Wikibooks:Szablon}}}} * {{Code|{{m|Pudełko|Nazwa przedmiotowej przestrzeni nazw 3|Dyskusja szablonu|nazwa przestrzeni nazw 2{{=}}Moja przestrzeń|nazwa jednostki 2{{=}}Dyskusja Wikibooks:Strona|numer jednostki{{=}}2}}}} → {{Tt|{{#invoke:Pudełko|Nazwa przedmiotowej przestrzeni nazw 3|Dyskusja szablonu|nazwa przestrzeni nazw 2=Moja przestrzeń||nazwa jednostki 2=Dyskusja Wikibooks:Szablon|numer jednostki=2}}}} * {{Code|{{m|Pudełko|Nazwa przedmiotowej przestrzeni nazw 3|nazwa przestrzeni nazw{{=}}|nazwa jednostki{{=}}Dyskusja Wikibooks:Strona}}}} → {{Tt|{{#invoke:Pudełko|Nazwa przedmiotowej przestrzeni nazw 3|nazwa przestrzeni nazw=|nazwa jednostki=Dyskusja Wikibooks:Szablon}}}} * {{Code|{{m|Pudełko|Nazwa przedmiotowej przestrzeni nazw 3|nazwa przestrzeni nazw 2{{=}}|nazwa jednostki 2{{=}}Dyskusja Wikibooks:Strona|numer jednostki{{=}}2}}}} → {{Tt|{{#invoke:Pudełko|Nazwa przedmiotowej przestrzeni nazw 3|nazwa przestrzeni nazw 2=|nazwa jednostki 2=Dyskusja Wikibooks:Szablon|numer jednostki=2}}}} Powyżej dla przykładu podano parametry nie w rodzicu w szablonie, tylko w dziecku, jeśli chodzi o parametry nazw przestrzeni nazw, ale ich się za to nie powinno podawać w tych ramach, tylko w szablonach, w których wywoływane są te ramki pudełek {{Code|{{m|Pudełko}}}}, ale tak tutaj tak zrobiono by było najłatwiej sprawdzić działanie tego typu funkcji. Analogicznie możemy podawać parametry typu jednostki, np.: wywołaniu modułowym {{Code|{{m|Pudełko|Nazwa przedmiotowej przestrzeni nazw 3|typ jednostki 2{{=}}strona szablonu|numer jednostki{{=}}2}}}}, ale o tym więcej w rozdziałach {{Code|{{sr|# p["Przedmiotowy typ jednostki 3"](frame,i)|p=Pudełko}}}} w „{{sr|#Funkcje typu jednostki|p=Pudełko}}”, ale wtedy ta sama nazwa przestrzeni nazw reprezentowana przez {{Parametr|typ jednostki 2|strona szablonu}}, jest zamieniana na to samo, lepiej jest tutaj używać parametrów przestrzennych nazw niż typu jednostki, bo typ jednostki ma taką samą wartość dla przestrzeni przedmiotowej, co dyskusji. Tutaj parametr dyskusji typu jednostki bazowy i numerkowy ogólny, czy szczegółowy, nie gra roli, bo nawet, gdy wygenerujemy nazwę przestrzeni dyskusji za pomoca tego parametru, to i tak otrzymamy na samym końcu jego nazwę przedmiotową. Jeżeli typ jednostki bazowy wskazuje na przestrzeń nazw główną, wtedy się nie liczą parametry nazw jednostek, a na numerkowy, wtedy się liczy. Również parametry typu jednostki nie powinno się podawać w dziecku w ramce, tylko w rodzicu w szablonie jako parametry, w którym ta ramka jest wywoływana, ale tutaj podano jedynie dla przykładu, jak najłatwiej sprawdzić działanie tych parametrów tej funkcji. Najpierw w funkcji nagłówku brane są parametry nazw przestrzeni nazw, a jeżeli ich nie ma, to parametry typu jednostki, a jeżeli nie ma, to generowane są nazwy na podstawie aktualnego modułu. === {{Code|p["Nazwa przestrzeni nazw dyskusji 3"](frame,i)}} === Funkcja pisze nazwę przestrzeni nazw dyskusji jakikolwiek nazwy przestrzeni nazw (tzn. nazwę dyskusji nazwy przestrzenie nazw, czyli nie przedmiotowej, zamieniana jest na nią samą, czyli identyfikator przestrzeni się nie zmienia, a przedmiotową, nie dyskusji, przekształca się na dyskusji jej odpowiadającą, czyli w tym przypadku identyfikator przestrzeni zwiększa się o numer więcej), według, i nie zawsze tylko, podanej w zmiennej {{Code|nazwa przestrzeni nazw}} dla pozycja bazowej w podanych parametrach szablonu rodzicu ramki dziecka, lub dla innej pozycji należy parametr podawać w formie {{Code|nazwa przestrzeni nazw 1}}, {{Code|nazwa przestrzeni nazw 2}}, {{Code|nazwa przestrzeni nazw 3}},..., lub te parametry można podać w postaci ogólnej {{Code|nazwa przestrzeni nazw i}}. W tej funkcji trzeba też podawać parametry nazwy jednostek {{Code|nazwa jednostki}}, {{Code|nazwa jednostki 1}}, {{Code|nazwa jednostki 2}}, {{Code|nazwa jednostki 3}},... Parametry podaje się w parametrach rodzica wywołania tej funkcji {{Code|{{m|Pudełko|Nazwa przestrzeni nazw dyskusji 3}}}} (ale ich nie trzeba podawać w dziecku, ale można) i w parametrach dziecka, jeśli chodzi o zmienną {{Code|numer jednostki}}, czyli np.: {{Code|{{m|Pudełko|Nazwa przestrzeni nazw dyskusji 3|numer jednostki{{=}}<jakaś liczba całkowita dodatnia>}}}}. Te parametry przestrzenne zamiast w rodzicu w szablonie można podać w ramce dziecka, wtedy parametry dziecka mają pierwszeństwo. Przestrzeń nazw z parametrów nazw przestrzennych bazowych (bez numerka) może odpowiadać wartości przestrzeni głównej, to wtedy odpowiednia przestrzeń nazw z parametru nazwy jednostki się nie liczy w tej funkcji, aby się liczyła należy użyć funkcji {{Code|{{sr|#p["Nazwa przestrzeni nazw dyskusji 2"](frame,...)|p=Pudełko}}}}. W tym przypadku funkcja działa jak {{Code|{{sr|#p["Nazwa przestrzeni nazw dyskusji"](frame,...)|p=Pudełko}}}}. Przestrzeń nazw z parametrów nazw przestrzennych numerkowych może odpowiadać wartości przestrzeni głównej, to wtedy odpowiednia przestrzeń nazw z parametru nazwy jednostki się liczy w tej funkcji, wtedy jest liczona nazwa przestrzeni nazw z tego parametru. Gdy parametry przestrzenne lub typ jednostki w drugim podejściu nie wskazują na przestrzeń główną, to wtedy działanie tej funkcji jest podobne do {{Code|{{sr|#p["Nazwa przestrzeni nazw dyskusji 2"](frame,...)|p=Pudełko}}}}. Definicja skrótowa funkcji: <syntaxhighlight lang="lua"> p["Nazwa przestrzeni nazw dyskusji 3"]=function(frame,czy_uwzglednic_alternatywna_nazwe,i)...end; </syntaxhighlight> Wtedy ciało funkcji tej, czyli jego definicja w środku, jest: <syntaxhighlight lang="lua"> -- Jest liczony numer parametru nazwy przestrzeni nazw, domyslnie chodzi tu o numer bazowy parametrów przestrzennych; local numer_jednostki=i or frame.args["numer jednostki"]; local liczba_numeru_jednostki=((numer_jednostki)and(tonumber(numer_jednostki)) or 0); local pudelko_pomocne_modul=require("Module:Pudełko/Pomocne"); -- Liczy nazwę przestrzeni nazw dyskusji na podstawie podanych parametrów; return pudelko_pomocne_modul.Uzyskanie_nazw_jednostki(frame,2,liczba_numeru_jednostki,nil,1); </syntaxhighlight> Parametry funkcji: * {{Code|frame}} - tablica ramki tablicy transportu, * {{Code|czy_uwzglednic_alternatywna_nazwe}} - czy ma uwzględniać nazwę przestrzeni nazw domyślną szablonu, dostępne wartości: {{Code|false}}, w której nazwa domyślna nie jest uwzględniana wtedy, oraz {{Code|nil}} i {{Code|true}}, które oznaczają to samo, w tym jeżeli ona jest uwzględniana, wtedy jest brany parametr pierwszy dziecka, który musi istnieć przy takiej wartości tego parametru, tzn. {{Code|{{m|Pudełko|Nazwa przestrzeni nazw dyskusji 3|Szablon}}}}, nazwa domyślna zostatnie zamieniona na dyskusji, a jeśli jest już taka, to takiej transfomacji nie ma, a jeśli nazwa uzyskana nazwy przestrzeni nazw jest w takim przypadku błędna, a jeżeli nazwa domyślna jest błędna, czyli {{Code|{{m|Pudełko|Nazwa przestrzeni nazw dyskusji 3|Moja przestrzeń}}}}, wtedy funkcja zwraca stan błędu {{Code|(błąd)}}. * {{Code|i}} - numer zmiennej nazwy przestrzeni nazw. Funkcja wykorzystuje {{Code|{{sr|#p.Uzyskanie_nazw_jednostki(frame,...)|p=Pudełko/Pomocne}}}} do wyznaczania ogólnego nazwy przestrzeni nazw dla pozycji bazowej i numerkowej, tzn. dla pozycji: jeden, dwa, trzy,..., itd, i ich ogólnej. Parametr ramki tablicy transportu rodzica szablonu: * {{Code|nazwa przestrzeni nazw}}, {{Code|nazwa przestrzeni nazw 1}}, {{Code|nazwa przestrzeni nazw 2}}, {{Code|nazwa przestrzeni nazw 3}},..., {{Code|nazwa przestrzeni nazw i}} - nazwy przestrzeni nazw dla pozycji bazowej oraz zwykłej i ogólnej numerkowej, * {{Code|nazwa jednostki}}, {{Code|nazwa jednostki 1}}, {{Code|nazwa jednostki 2}}, {{Code|nazwa jednostki 3}},... - nazwy jednostek dla pozycji bazowej i numerkowej, * {{Code|typ jednostki}}, {{Code|typ jednostki 1}}, {{Code|typ jednostki 2}}, {{Code|typ jednostki 3}},..., {{Code|typ jednostki i}} - typy jednostek, którym odpowiadają pewne przestrzenie przedmiotowe, dla pozycji bazowej, numerkowej i ogólnej. Parametry ramki tablicy transportu dziecka: * Parametry dziecka są takie same jak rodzica dla funkcji pudełkowej plus tu wymienione, * {{Code|numer jednostki}} - jak parametr {{Code|i}} nie został ustawiony, to wtedy liczy się ta zmienna. Przykłady: <syntaxhighlight lang="mediawiki"> {{Nazwa szablonu 1|nazwa przestrzeni nazw=Wikibooks|nazwa przestrzeni nazw=|nazwa przestrzeni nazw i=|nazwa jednostki=Szablon:Strona}} ---- {{Nazwa szablonu 2|nazwa przestrzeni nazw=Wikibooks|nazwa przestrzeni nazw 1=Szablon|nazwa przestrzeni nazw i=|nazwa jednostki 2=Wikibooks:Strona}} </syntaxhighlight> W pierwszym wywołaniu {{Code|nazwa przestrzeni nazw}} jest puste, ale dla tego bazowego (bez numerka) szukamy przestrzeni nazw, a więc ta nazwa jest ostateczna. ---- W drugim wywołaniu w dziecku powiedzmy jest wywołanie, i szukamy nazwy przestrzeni nazw o numerze dwa, która została podana, ale istnieje za to jej wersji ogólna {{Code|nazwa przestrzeni nazw i}} i domyślna {{Code|nazwa przestrzeni nazw}}, ale wtedy dla tego numerkowego liczy się to ogólne z {{Code| i}}, a ponieważ ta nazwa jest pusta, więc będziemy liczyli nazwę przestrzeni nazw z {{Code|nazwa jednostki 2}}. Odpowiadająca powyższemu kodowi, powiedzmy wikikod, według ich zawartości, przedstawia się: <syntaxhighlight lang="mediawiki"> {{#invoke:Pudełko|Nazwa przestrzeni nazw 3}} ---- {{#invoke:Pudełko|Nazwa przestrzeni nazw 3|numer jednostki=2}} </syntaxhighlight> Na podstawie powyższego przykładu otrzymamy wynik o schemacie, nie wyniku, bo tam nie ma zmiennej {{Code|nazwa przestrzeni nazw 1}}, ale jest {{Code|nazwa przestrzeni nazw i}}: <syntaxhighlight lang="mediawiki"> <!-- nazwa przestrzeni nazw=""; --> <!-- Czyli wynik: --> Dyskusja <!-- Widzimy, że wygenerowała się nazwa przestrzeni nazw, którą jest przestrzeń nazw niegłówna, jest ciągiem niepustym; --> ---- <!-- Ale nie "nazwa przestrzeni nazw 2", bo jej nie ma, ale za to istnieje "nazwa przestrzeni nazw i"; --> <!-- nazwa przestrzeni nazw 2=nazwa przestrzeni nazw i="", a nazwa jednostki 2="Wikibooks:Strona"; --> <!-- Czyli wynik: --> Dyskusja Wikibooks <!-- Widzimy, że wygenerowała się nazwa przestrzeni nazw, którą jest przestrzeń nieprogramowa, ale projektu, wychodząca z nazwy jednostek w tym przypadku z "nazwa jednostki 2"; --> </syntaxhighlight> Dla parametrów numerkowych nie jest brana w tym powyższym przykładzie zmienna {{Code|nazwa przestrzeni nazw 2}}, bo jej nie ma, ale za to jest {{Code|nazwa przestrzeni nazw i}}, bo ona występuje jako parametr domyślny ogólny dla parametrów numerkowych. Tytaj jest używana jest zmienna {{Code|nazwa jednostki 2}} do wygenerowania ostatecznego wyniku, bo jak można zauważyć, parametry przestrzenne wskazują na przestrzeń główną, a nazwy jednostek już nie. Dla parametrów bazowych mamy zmienną {{Code|nazwa przestrzeni nazw}}, ona jest pusta, więc to zostanie wziete do ostatecznego wyniku. Przykłady w wikikodzie: * {{Code|{{m|Pudełko|Nazwa przestrzeni nazw dyskusji 3|Szablon|nazwa przestrzeni nazw{{=}}Moja przestrzeń|nazwa jednostki{{=}}Wikibooks:Strona}}}} → {{Tt|{{#invoke:Pudełko|Nazwa przestrzeni nazw dyskusji 3|Szablon|nazwa przestrzeni nazw=Moja przestrzeń|nazwa jednostki=Wikibooks:Szablon}}}} * {{Code|{{m|Pudełko|Nazwa przestrzeni nazw dyskusji 3|Szablon|nazwa przestrzeni nazw 2{{=}}Moja przestrzeń|nazwa jednostki 2{{=}}Wikibooks:Strona|numer jednostki{{=}}2}}}} → {{Tt|{{#invoke:Pudełko|Nazwa przestrzeni nazw dyskusji 3|Szablon|nazwa przestrzeni nazw 2=Moja przestrzeń|nazwa jednostki 2=Wikibooks:Szablon|numer jednostki=2}}}} * {{Code|{{m|Pudełko|Nazwa przestrzeni nazw dyskusji 3|nazwa przestrzeni nazw{{=}}|nazwa jednostki{{=}}Wikibooks:Strona}}}} → {{Tt|{{#invoke:Pudełko|Nazwa przestrzeni nazw dyskusji 3|nazwa przestrzeni nazw=|nazwa jednostki=Wikibooks:Szablon}}}} * {{Code|{{m|Pudełko|Nazwa przestrzeni nazw dyskusji 3|nazwa przestrzeni nazw 2{{=}}|nazwa jednostki 2{{=}}Wikibooks:Strona|numer jednostki{{=}}2}}}} → {{Tt|{{#invoke:Pudełko|Nazwa przestrzeni nazw dyskusji 3|nazwa przestrzeni nazw 2=|nazwa jednostki 2=Wikibooks:Szablon|numer jednostki=2}}}} Powyżej dla przykładu podano parametry nie w rodzicu w szablonie, tylko w dziecku, jeśli chodzi o parametry nazw przestrzeni nazw i nazw jednostek, ale ich się za to nie powinno podawać w tych ramach, tylko w szablonach, w których wywoływane są te ramki pudełek {{Code|{{m|Pudełko}}}}, ale tak tutaj tak zrobiono by było najłatwiej sprawdzić działanie tego typu funkcji. Analogicznie możemy podawać parametry typu jednostki, np.: wywołaniu modułowym {{Code|{{m|Pudełko|Nazwa przestrzeni nazw dyskusji 3|typ jednostki 2{{=}}Podręcznik|nazwa jednostki 2{{=}}Szablon:Strona|numer jednostki{{=}}2}}}} (ale wtedy jest brana przestrzeń nazw z nazwy jednostki), ale o tym więcej w rozdziałach {{Code|{{sr|# p["Dyskusyjny typ jednostki 3"](frame,i)|p=Pudełko}}}} w „{{sr|#Funkcje typu jednostki|p=Pudełko}}”, one definiują przestrzenie dyskusji, ale można użyć parametru dyskusji typu jednostki z obojętnie jaką wartością niepustą, czy pustą, czy nawet jej nie podamy, wtedy wyświetli się nazwa przestrzeni nazw dyskusji. Jeżeli typ jednostki bazowy wskazuje na przestrzeń nazw główną, wtedy się nie liczą parametry nazw jednostek, a na numerkowy, wtedy się liczy. Również parametry typu jednostki nie powinno się podawać w dziecku w ramce, tylko w rodzicu w szablonie jako parametry, w którym ta ramka jest wywoływana, ale tutaj podano jedynie dla przykładu, jak najłatwiej sprawdzić działanie tych parametrów tej funkcji. Najpierw w funkcji nagłówku brane są parametry nazw przestrzeni nazw, a jeżeli ich nie ma, to parametry typu jednostki, a jeżeli nie ma lub parametry przestrzenne wskazują na przestrzeń główną, i nie ma nazwy jednostki, to generowane są nazwy tej funkcji na podstawie aktualnej strony. == Funkcje nazw jednostki trzeciej wersji == === {{Code|p["Nazwa jednostki 3"](frame,i)}} === === {{Code|p["Nazwa przedmiotowa jednostki 3"](frame,i)}} === === {{Code|p["Nazwa dyskusji jednostki 3"](frame,i)}} === == Funkcje typu jednostki == === {{Code|p["Typ jednostki"](frame,i)}} === === {{Code|p["Typ jednostki 2"](frame,i)}} === === {{Code|p["Typ jednostki 3"](frame,i)}} === === Funkcje typu jednostki przedmiotowe === ==== {{Code|p["Przedmiotowy typ jednostki"](frame,i)}} ==== ==== {{Code|p["Przedmiotowy typ jednostki 2"](frame,i)}} ==== ==== {{Code|p["Przedmiotowy typ jednostki 3"](frame,i)}} ==== === Fukcje typu jednostki dyskusji === ==== {{Code|p["Dyskusyjny typ jednostki"](frame,i)}} ==== ==== {{Code|p["Dyskusyjny typ jednostki 2"](frame,i)}} ==== ==== {{Code|p["Dyskusyjny typ jednostki 3"](frame,i)}} ==== == Funkcje chech pudełka == === {{Code|p["Cecha pudełka"](frame)}} === === {{Code|p["Przedmiotowa cecha pudełka"](frame)}} === === {{Code|p["Dyskusyjna cecha pudełka"](frame)}} === == Fukcje ogólnego pudełka == === {{Code|p["Ogólne pudełko"](frame)}} === == Funkcje ogólne == === {{Code|p["Tekst pudełka"](frame)}} === == Funkcje błędów pudełka == === {{Code|p["Błędy pudełka"](frame)}} === === {{Code|p["Przedmiotowe błędy pudełka"](frame)}} === === {{Code|p["Dyskusyjne błędy pudełka"](frame)}} === == Funkcje nazw stron == === {{Code|p["Nazwa strony głównej projektu"](frame,i)}} === === {{Code|p["Nazwa strony głównej dla dzieci projektu"](frame,i)}} === == Funkcje kodów == === {{Code|p["Kod języka"](frame,i)}} === === {{Code|p["Kod projektu"](frame,i)}} === === {{Code|p["Klucz projektu"](frame,i)}} === == Funkcje wiki == === {{Code|p["Inny niż język bieżący wiki"](frame)}} === === {{Code|p["Inne niż lokalne wiki"](frame)}} === === {{Code|p["Inne niż bieżące wiki"](frame)}} === == Funkcje typów parametrów, czy podane je == === {{Code|p["Podano parametry nienazwane"](frame)}} === === {{Code|p["Podano parametry numerowane"](frame)}} === === {{Code|p["Podano parametry nazwane"](frame)}} === == Funkcje kodów tego projektu == === {{Code|p["Kod projektu tego projektu"](frame)}} === === {{Code|p["Kod języka tego projektu"](frame)}} === === {{Code|p["Klucz projektu tego projektu"](frame)}} === == Funkcje stron == === {{Code|p["Strona główna tego projektu"](frame)}} === === {{Code|p["Strona główna dla dzieci tego projektu"](frame)}} === == Funkcje nazw stron drugiej wersji == === {{Code|p["Nazwa strony głównej dla dzieci projektu 2"](frame)}} === === {{Code| p["Nazwa strony głównej projektu 2"](frame)}} === {{BrClear}} <noinclude><!-- -->{{ProstaStronaKoniec}}<!-- -->{{Kategoria|Opisy funkcji, w Lua w Scribunto, w modułach}}<!-- --></noinclude> 4bvibo7wvgqwzqy1b9wu19t32cqx6tl 540457 540456 2026-04-24T05:59:02Z Persino 2851 /* {{Code|p["Nazwa przestrzeni nazw 2"](frame,...)}} */ 540457 wikitext text/x-wiki <noinclude>{{ProstaStronaStart | nagłówek = {{Podrozdział|{{ld2|Pudełko}}|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 pudelko_modul=require("Module:Pudełko"); </syntaxhighlight> dzięki, któremu można wypisywać funkcje należącego do niego. Posługuje się na parametrach pudełkowych {{Parametr|nazwa przestrzeni nazw}} (czy też bez numerka {{Parametr|nazwa przestrzeni nazw i}} dla tego numerowanego) lub te z numerkiem po jednej spacji w nich (ale nie dla tego z końcówką {{Code| i}}) mogą zostać użyte jako parametry szablonu. Moduł {{Code|{{ld2|Pudełko}}}} przedstawia funkcje nazw w oparciu o funkcje nazw {{Code|{{ld2|Nazwy}}}}, generuje on nazwy za pomocą parametrów pudełkowych podanych poniżej. Parametr {{Parametr|nazwa jednostki}} (lub parametr {{Parametr|cel}} dla numerka tego pierwszego, tego alternatywnego), lub te z numerkiem po jednej spacji w nazwie parametru, albo numerowane numerkami {{Code|1}}, {{Code|2}},..., mogą zostać użyte jako parametry szablonu. Parametry określające rodzaj jednostki {{Parametr|typ jednostki}} z {{Parametr|dyskusja typu jednostki}}, itp. w wersjach z numerkiem po jednej spacji w nich mogą zostać użyte jako parametry szablonu. A te tymi numerowanymi liczbami naturalnymi {{Tt|nazwy jednostki}} od jedynki wzwyż poprzez szablon, w którym są one użyte, one też mogą być użyte z dwukropkiem, te numerowane, na samym początku nazwy, wtedy one są traktowane jako pełne nazwy strony, i wtedy one nie zostaną z interpretowane, że do nich trzeba użyć parametr odpowiedni z nazwą przetrzeni nazw z tego numerowanego, czy ogólny, aby utworzyć znów inną pełną nazwę strony dla tego numerka. Zestawienie: * {{Code|nazwa przestrzeni nazw}} i {{Code|nazwa przestrzeni nazw i}} (ogólna nazwa przestrzeni nazw dla wszystkich numerków, i tych numerowanych jednostek) - i to pierwsze z numerkiem, tzn. {{Code|nazwa przestrzeni nazw 1}}, {{Code|nazwa przestrzeni nazw 2}}, ..., * {{Code|nazwa jednostki}} - i te z numerkiem: {{Code|nazwa jednostki 1}}, {{Code|nazwa jednostki 2}}, ..., lub gdy jest zamiast tego parametrem numerowany, {{Code|1}}, {{Code|2}},..., który dla tego pierwszego może być uznany jako: {{Code|cel}} {{=}} {{Code|1}}, * {{Code|typ jednostki}} (parametr bazowy) i {{Code|typ jednostki i}} (parametr domyślny numerkowy) - i te z numerkiem: {{Code|typ jednostki 1}}, {{Code|typ jednostki 2}}, ..., tzn. gdy chcemy określić z jakim typem jednostki mamy do czynienia w zależności do jakiej przestrzeni nazw należy, a w danej, czy jest on np. programowy, czy tylko jest opisem, jak to bywa w szablonach {{Np|Template|link=tak}}, podobnie jest w przypadku {{Np|Module|link=tak}}, czy jak jest w innych przestrzeniach nazw, ** {{Code|dyskusja typu jednostki}} (parametr bazowy) i {{Code|dyskusja typu jednostki i}} (parametr domyślny numerkowy) - i te z numerkiem: {{Code|dyskusja typu jednostki 1}}, {{Code|dyskusja typu jednostki 2}}, ..., gdy chcemy określić wartością niepustą,że chodzi tutaj o typ jednostki. == {{Code|p.CzyNiepoprawnaNazwa(nazwa_jednostki)}} == Funkcja sprawdzajaca, czy jest poprawnie podana nazwa jednostki, czy ma poprawną nazwę. Znakami tymi, z których nie powinna składać się nazwa jest {{Code|<nowiki>{}<>|[]#\n</nowiki>}} i dodatkowo znak {{Code|&#127;}} (kod {{Code|{{Nowiki|&#127;}}}}). Też nie może składać się z trzech znaków tyldy, tzn. {{Code|<nowiki>~~~</nowiki>}}. Również w swojej budowie nie może składać się ze kodów {{Strong|HTML}} literowych o wzorze {{Code|{{Nowiki|&(%a+);}}}}. Natomiast może składać się z {{Code|{{Nowiki|&#(%d+);}}}} i {{Code|{{Nowiki|&#x(%x+);}}}}, ale w pierw te kody muszą być zamienione na normalne znaki. Skrótowa definicja funkcji: <syntaxhighlight lang="lua"> function p.CzyNiepoprawnaNazwa(nazwa_jednostki)...end; </syntaxhighlight> Wtedy ciało funkcji tej, czyli jego definicja w środku, jest: <syntaxhighlight lang="lua"> -- Moduł: "Moduł:Html/dane", służy do ładowania znaku o kodzie HTML "&#127;"; local html_dane_modul=mw.loadData("Module:Html/dane"); return mw.ustring.match(nazwa_jednostki,"[{}<>|%[%]#\n"..html_dane_modul.znak_127.."]+") or mw.ustring.match(nazwa_jednostki,"~~~") or mw.ustring.match(nazwa_jednostki,"&(%a+);"); </syntaxhighlight> Parametry: * {{Code|nazwa_jednostki}} - nazwa jednostki do sprawdzenia. Przykłady: <syntaxhighlight lang="lua"> local pudelko_modul=require("Module:Pudełko"); -- Podana przykładowa niepoprawna nazwa jedostki local nazwa_jednostki="Nazwa pliku [[Nazwa linku w pliku]]"; -- Fukcja zwróci wartość: local czy_poprawna_nazwa=true; local czy_poprawna_nazwa=pudelko_modul.CzyNiepoprawnaNazwa(nazwa_jednostki); </syntaxhighlight> == Funkcje nazw przestrzeni nazw == === {{Code|p["Nazwa przestrzeni nazw"](frame,...)}} === Funkcja pisze nazwę przestrzeni nazw, niezależnie, czy to jest przedmiotowa, czy dyskusji, według podanej w zmiennej {{Code|nazwa przestrzeni nazw}} dla pozycja bazowej w podanych parametrach szablonu rodzicu ramki dziecka, lub dla innej pozycji należy parametr podawać w formie {{Code|nazwa przestrzeni nazw 1}}, {{Code|nazwa przestrzeni nazw 2}}, {{Code|nazwa przestrzeni nazw 3}},..., lub te parametry można podać w postaci ogólnej {{Code|nazwa przestrzeni nazw i}}. Parametry podaje się w parametrach rodzica wywołania tej funkcji {{Code|{{m|Pudełko|Nazwa przestrzeni nazw}}}} (ale ich nie trzeba podawać w dziecku, ale można) i w parametrach dziecka, jeśli chodzi o zmienną {{Code|numer jednostki}}, czyli np.: {{Code|{{m|Pudełko|Nazwa przestrzeni nazw|numer jednostki{{=}}<jakaś liczba całkowita dodatnia>}}}}. Te parametry przestrzenne zamiast w rodzicu w szablonie można podać w ramce dziecka, wtedy parametry dziecka mają pierwszeństwo. Przestrzeń nazw z parametrów nazw przestrzennych może odpowiadać wartości przestrzeni głównej, to wtedy odpowiednia przestrzeń nazw z parametru nazwy jednostki się nie liczy w tej funkcji, aby się liczyła należy użyć funkcji {{Code|{{sr|#p["Nazwa przestrzeni nazw 2"](frame,...)|p=Pudełko}}}}. Definicja skrótowa funkcji: <syntaxhighlight lang="lua"> p["Nazwa przestrzeni nazw"]=function(frame,czy_uwzglednic_alternatywna_nazwe,i)...end; </syntaxhighlight> Wtedy ciało funkcji tej, czyli jego definicja w środku, jest: <syntaxhighlight lang="lua"> -- Jest liczony numer parametru nazwy przestrzeni nazw, domyslnie chodzi tu o numer bazowy parametrów przestrzennych; local numer_jednostki=i or frame.args["numer jednostki"]; local liczba_numer_jednostki=((numer_jednostki)and(tonumber(numer_jednostki))or 0); local pudelko_pomocne_modul=require("Module:Pudełko/Pomocne"); -- Liczy nazwę przestrzeni nazw na podstawie podanych parametrów; return pudelko_pomocne_modul.Nazwa_przestrzeni_nazw(frame,0, czy_uwzglednic_alternatywna_nazwe,liczba_numer_jednostki); </syntaxhighlight> Parametry funkcji: * {{Code|frame}} - tablica ramki tablicy transportu, * {{Code|czy_uwzglednic_alternatywna_nazwe}} - czy ma uwzględniać nazwę przestrzeni nazw domyślną szablonu, dostępne wartości: {{Code|false}}, w której nazwa domyślna nie jest uwzględniana wtedy, oraz {{Code|nil}} i {{Code|true}}, które oznaczają to samo, w tym jeżeli ona jest uwzględniana, wtedy jest brany parametr pierwszy dziecka, który musi istnieć przy takiej wartości tego parametru, tzn. {{Code|{{m|Pudełko|Nazwa przestrzeni nazw|Szablon}}}}, a ten element jest używany, gdy nazwa uzyskana nazwy przestrzeni nazw jest w takim przypadku błędna, a jeżeli wtedy nazwa domyślna jest błędna, czyli {{Code|{{m|Pudełko|Nazwa przestrzeni nazw|Moja przestrzeń}}}}, wtedy funkcja zwraca stan błędu {{Code|(błąd)}}. * {{Code|i}} - numer zmiennej nazwy przestrzeni nazw. Funkcja wykorzystuje {{Code|{{sr|#p.Nazwa_przestrzeni_nazw(frame,...)|p=Pudełko/Pomocne}}}} do wyznaczania ogólnego nazwy przestrzeni nazw dla pozycji bazowej i numerkowej, tzn. dla pozycji: jeden, dwa, trzy,..., itd, i ich ogólnej. Parametr ramki tablicy transportu rodzica szablonu: * {{Code|nazwa przestrzeni nazw}}, {{Code|nazwa przestrzeni nazw 1}}, {{Code|nazwa przestrzeni nazw 2}}, {{Code|nazwa przestrzeni nazw 3}},..., {{Code|nazwa przestrzeni nazw i}} - nazwy przestrzeni nazw dla pozycji bazowej oraz zwykłej i ogólnej numerkowej, * {{Code|typ jednostki}}, {{Code|typ jednostki 1}}, {{Code|typ jednostki 2}}, {{Code|typ jednostki 3}},..., {{Code|typ jednostki i}} - typy jednostek, którym odpowiadają pewne przestrzenie przedmiotowe, dla pozycji bazowej, numerkowej i ogólnej, ** {{Code|dyskusja typu jednostki}}, {{Code|dyskusja typu jednostki 1}}, {{Code|dyskusja typ jednostki 2}}, {{Code|dyskusja typ jednostki 3}},..., {{Code|dyskusja typ jednostki i}} - czy dany typ jednostki ma przedstawiać, jeśli niepusta, przestrzeń dyskusji dla pozycji bazowej, numerkowej i ogólnej. Parametry ramki tablicy transportu dziecka: * Parametry dziecka są takie same jak rodzica dla funkcji pudełkowej plus tu wymienione, * {{Code|numer jednostki}} - jak parametr {{Code|i}} nie został ustawiony, to wtedy liczy się ta zmienna. Przykłady: <syntaxhighlight lang="mediawiki"> {{Nazwa szablonu|nazwa przestrzeni nazw=Wikibooks|nazwa przestrzeni nazw 2=Szablon|nazwa przestrzeni nazw i=Moduł}} </syntaxhighlight> W dziecku powiedzmy jest wywołanie, i szukamy nazwy przestrzeni nazw o numerze dwa, która nie została podana, ale istnieje za to jej wersji ogólna {{Code|nazwa przestrzeni nazw i}} i domyślna {{Code|nazwa przestrzeni nazw}}: <syntaxhighlight lang="mediawiki"> {{#invoke:Pudełko|Nazwa przestrzeni nazw|numer jednostki=1}} </syntaxhighlight> Na podstawie powyższego przykładu otrzymamy wynik o schemacie, nie wyniku, bo tam nie ma zmiennej {{Code|nazwa przestrzeni nazw 1}}, ale jest {{Code|nazwa przestrzeni nazw i}}: <syntaxhighlight lang="mediawiki"> <!-- Ale nie "nazwa przestrzeni nazw", bo jej nie ma, ale za to istnieje "nazwa przestrzeni nazw i"; --> <!-- nazwa przestrzeni nazw 2=nazwa przestrzeni nazw i=Moduł; --> <!-- Czyli wynik: --> Moduł <!-- Widzimy, że wygenerowała się nazwa przestrzeni nazw, którą jest przestrzeń programowa, którą również jest "Szablon"; --> </syntaxhighlight> Nie jest brana w tym powyższym przykładzie zmienna {{Code|nazwa przestrzeni nazw}}, bo jej nie ma, ale za to jest {{Code|nazwa przestrzeni nazw i}}, bo ona występuje jako parametr domyślny ogólny dla parametrów numerkowych. Przykłady w wikikodzie: * {{Code|{{m|Pudełko|Nazwa przestrzeni nazw|numer jednostki{{=}}2}}}} → {{Tt|{{#invoke:Pudełko|Nazwa przestrzeni nazw|numer jednostki=2}}}} * {{Code|{{m|Pudełko|Nazwa przestrzeni nazw|Szablon|nazwa przestrzeni nazw i{{=}}Moja przestrzeń|numer jednostki{{=}}2}}}} → {{Tt|{{#invoke:Pudełko|Nazwa przestrzeni nazw|Szablon|nazwa przestrzeni nazw i=Moja przestrzeń|numer jednostki=2}}}} * {{Code|{{m|Pudełko|Nazwa przestrzeni nazw|nazwa przestrzeni nazw 2{{=}}Szablon|numer jednostki{{=}}2}}}} → {{Tt|{{#invoke:Pudełko|Nazwa przestrzeni nazw|nazwa przestrzeni nazw 2=Szablon|numer jednostki=2}}}} * {{Code|{{m|Pudełko|Nazwa przestrzeni nazw|nazwa przestrzeni nazw 2{{=}}Szablon|numer jednostki{{=}}2}}}} → {{Tt|{{#invoke:Pudełko|Nazwa przestrzeni nazw|nazwa przestrzeni nazw i=Szablon|numer jednostki=2}}}} * {{Code|{{m|Pudełko|Nazwa przestrzeni nazw|nazwa przestrzeni nazw{{=}}Szablon|numer jednostki{{=}}2}}}} → {{Tt|{{#invoke:Pudełko|Nazwa przestrzeni nazw|nazwa przestrzeni nazw=Szablon|numer jednostki=2}}}} Powyżej dla przykładu podano parametry nie w rodzicu w szablonie, tylko w dziecku, jeśli chodzi o parametry nazw przestrzeni nazw, ale ich się za to nie powinno podawać w tych ramach, tylko w szablonach, w których wywoływane są te ramki pudełek {{Code|{{m|Pudełko}}}}, ale tak tutaj tak zrobiono by było najłatwiej sprawdzić działanie tego typu funkcji. Analogicznie możemy podawać parametry typu jednostki, np.: wywołaniu modułowym {{Code|{{m|Pudełko|Nazwa przestrzeni nazw|typ jednostki 2{{=}}strona szablonu|numer jednostki{{=}}2}}}}, ale o tym więcej w rozdziałach {{Code|{{sr|# p["Typ jednostki"](frame,i)|p=Pudełko}}}} w „{{sr|#Funkcje typu jednostki|p=Pudełko}}”, on definiuje przestrzenie przedmiotowe, ale można użyć parametru dyskusji typu jednostki z wartością niepustą, wtedy wyświetli się nazwa przestrzeni nazw dyskusji. Również parametry typu jednostki nie powinno się podawać w dziecku w ramce, tylko w rodzicu w szablonie jako parametry, w którym ta ramka jest wywoływana, ale tutaj podano jedynie dla przykładu, jak najłatwiej sprawdzić działanie tych parametrów tej funkcji. Najpierw w funkcji nagłówku brane są parametry nazw przestrzeni nazw, a jeżeli ich nie ma, to parametry typu jednostki, a jeżeli nie ma, to generowane są nazwy na podstawie aktualnego modułu. === {{Code|p["Nazwa przedmiotowej przestrzeni nazw"](frame,...)}} === Funkcja pisze przedmiotową nazwę przestrzeni nazw jakikolwiek nazwy przestrzeni nazw (tzn. nazwę przedmiotową nazwy przestrzenie nazw, czyli nie dyskusji, zamieniana jest na nią samą, czyli identyfikator przestrzeni się nie zmienia, a dyskusji, nie przedmiotową, przekształca się na przedmiotową jej odpowiadającą, czyli w tym przypadku identyfikator przestrzeni zmniejsza się o numer mniej), według podanej w zmiennej {{Code|nazwa przestrzeni nazw}} dla pozycja bazowej w podanych parametrach szablonu rodzicu ramki dziecka, lub dla innej pozycji należy parametr podawać w formie {{Code|nazwa przestrzeni nazw 1}}, {{Code|nazwa przestrzeni nazw 2}}, {{Code|nazwa przestrzeni nazw 3}},..., lub te parametry można podać w postaci ogólnej {{Code|nazwa przestrzeni nazw i}}. Parametry podaje się w parametrach rodzica wywołania tej funkcji {{Code|{{m|Pudełko|Nazwa przedmiotowej przestrzeni nazw}}}} (ale ich nie trzeba podawać w dziecku, ale można) i w parametrach dziecka, jeśli chodzi o zmienną {{Code|numer jednostki}}, czyli np.: {{Code|{{m|Pudełko|Nazwa przedmiotowej przestrzeni nazw|numer jednostki{{=}}<jakaś liczba całkowita dodatnia>}}}}. Te parametry przestrzenne zamiast w rodzicu w szablonie można podać w ramce dziecka, wtedy parametry dziecka mają pierwszeństwo. Parametry przestrzenne mogą mogą być podane w postaci przestrzeni przedmiotowej lub dyskusji, ale ta funkcja zawsze ją zamienia na przedmiotową. Przestrzeń nazw z parametrów nazw przestrzennych może odpowiadać wartości przestrzeni głównej, to wtedy odpowiednia przestrzeń nazw z parametru nazwy jednostki się nie liczy w tej funkcji, aby się liczyła należy użyć funkcji {{Code|{{sr|#p["Nazwa przedmiotowej przestrzeni nazw 2"](frame,...)|p=Pudełko}}}}. Definicja skrótowa funkcji: <syntaxhighlight lang="lua"> p["Nazwa przedmiotowej przestrzeni nazw"]=function(frame,czy_uwzglednic_alternatywna_nazwe,i)...end; </syntaxhighlight> Wtedy ciało funkcji tej, czyli jego definicja w środku, jest: <syntaxhighlight lang="lua"> -- Jest liczony numer parametru nazwy przestrzeni nazw, domyslnie chodzi tu o numer bazowy parametrów przestrzennych; local numer_jednostki=i or frame.args["numer jednostki"]; local liczba_numer_jednostki=((numer_jednostki)and(tonumber(numer_jednostki))or 0); local pudelko_pomocne_modul=require("Module:Pudełko/Pomocne"); -- Liczy nazwę przestrzeni nazw przedmiotową na podstawie podanych parametrów; return pudelko_pomocne_modul.Nazwa_przestrzeni_nazw(frame,1, czy_uwzglednic_alternatywna_nazwe,liczba_numer_jednostki); </syntaxhighlight> Parametry funkcji: * {{Code|frame}} - tablica ramki tablicy transportu, * {{Code|czy_uwzglednic_alternatywna_nazwe}} - czy ma uwzględniać nazwę przestrzeni nazw domyślną szablonu, dostępne wartości: {{Code|false}}, w której nazwa domyślna nie jest uwzględniana wtedy, oraz {{Code|nil}} i {{Code|true}}, które oznaczają to samo, w tym jeżeli ona jest uwzględniana, wtedy jest brany parametr pierwszy dziecka, który musi istnieć przy takiej wartości tego parametru, tzn. {{Code|{{m|Pudełko|Nazwa przedmiotowej przestrzeni nazw|Dyskusja szablonu}}}} - ta nazwa domyślna zostanie zamieniona na przedmiotową, a jak ona by była przedmiotowa, to żadnej zamiany, by nie było, a jeśli nazwa uzyskana z nazwy przestrzeni nazw z parametrów przestrzennych jest w takim przypadku błędna, to w takim razie brany jest ten parametr, a jeżeli ta nazwa domyślna jest błędna, czyli {{Code|{{m|Pudełko|Nazwa przedmiotowej przestrzeni nazw|Moja przestrzeń}}}}, wtedy funkcja zwraca stan błędu {{Code|(błąd)}}. * {{Code|i}} - numer zmiennej nazwy przestrzeni nazw. Funkcja wykorzystuje {{Code|{{sr|#p.Nazwa_przestrzeni_nazw(frame,...)|p=Pudełko/Pomocne}}}} do wyznaczania ogólnego nazwy przestrzeni nazw dla pozycji bazowej i numerkowej, tzn. dla pozycji: jeden, dwa, trzy,..., itd, i ich ogólnej. Parametr ramki tablicy transportu rodzica szablonu: * {{Code|nazwa przestrzeni nazw}}, {{Code|nazwa przestrzeni nazw 1}}, {{Code|nazwa przestrzeni nazw 2}}, {{Code|nazwa przestrzeni nazw 3}},..., {{Code|nazwa przestrzeni nazw i}} - nazwy przestrzeni nazw dla pozycji bazowej oraz zwykłej i ogólnej numerkowej, * {{Code|typ jednostki}}, {{Code|typ jednostki 1}}, {{Code|typ jednostki 2}}, {{Code|typ jednostki 3}},..., {{Code|typ jednostki i}} - typy jednostek, którym odpowiadają pewne przestrzenie przedmiotowe, dla pozycji bazowej, numerkowej i ogólnej. Parametry ramki tablicy transportu dziecka: * Parametry dziecka są takie same jak rodzica dla funkcji pudełkowej plus tu wymienione, * {{Code|numer jednostki}} - jak parametr {{Code|i}} nie został ustawiony, to wtedy liczy się ta zmienna. Przykłady: <syntaxhighlight lang="mediawiki"> {{Nazwa szablonu|nazwa przestrzeni nazw=Dyskusja Wikibooks|nazwa przestrzeni nazw 2=Dyskusja szablonu|nazwa przestrzeni nazw i=Dyskusja modułu}} </syntaxhighlight> W dziecku powiedzmy jest wywołanie, i szukamy nazwy przestrzeni nazw o numerze dwa, która nie została podana, ale istnieje za to jej wersji ogólna {{Code|nazwa przestrzeni nazw i}} i domyślna {{Code|nazwa przestrzeni nazw}}: <syntaxhighlight lang="mediawiki"> {{#invoke:Pudełko|Nazwa przedmiotowej przestrzeni nazw|numer jednostki=1}} </syntaxhighlight> Na podstawie powyższego przykładu otrzymamy wynik o schemacie, nie wyniku, bo tam nie ma zmiennej {{Code|nazwa przestrzeni nazw 1}}, ale jest {{Code|nazwa przestrzeni nazw i}}: <syntaxhighlight lang="mediawiki"> <!-- Ale nie "nazwa przestrzeni nazw", bo jej nie ma, ale za to istnieje "nazwa przestrzeni nazw i"; --> <!-- nazwa przestrzeni nazw 2=nazwa przestrzeni nazw i=Dyskusja modułu; --> <!-- Czyli wynik: --> Moduł <!-- Widzimy, że wygenerowała się nazwa przestrzeni nazw, którą jest przestrzeń przedmiotowa programowa przestrzeni dyskusji "Dyskusja modułu", którą również jest "Szablon" jego przestrzeni dyskusji "Dyskusja szablonu", a dla ich przestrzeni przedmiotowej, zamiast dyskusji, to samo przekształca się na to samo; --> </syntaxhighlight> Nie jest brana w tym powyższym przykładzie zmienna {{Code|nazwa przestrzeni nazw}}, bo jej nie ma, ale za to jest {{Code|nazwa przestrzeni nazw i}}, bo ona występuje jako parametr domyślny ogólny dla parametrów numerkowych. Przykłady w wikikodzie: * {{Code|{{m|Pudełko|Nazwa przedmiotowej przestrzeni nazw|numer jednostki{{=}}2}}}} → {{Tt|{{#invoke:Pudełko|Nazwa przedmiotowej przestrzeni nazw|numer jednostki=2}}}} * {{Code|{{m|Pudełko|Nazwa przedmiotowej przestrzeni nazw|Dyskusja szablonu|nazwa przestrzeni nazw i{{=}}Moja przestrzeń|numer jednostki{{=}}2}}}} → {{Tt|{{#invoke:Pudełko|Nazwa przedmiotowej przestrzeni nazw|Dyskusja szablonu|nazwa przestrzeni nazw i=Moja przestrzeń|numer jednostki=2}}}} * {{Code|{{m|Pudełko|Nazwa przedmiotowej przestrzeni nazw|nazwa przestrzeni nazw 2{{=}}Dyskusja szablonu|numer jednostki{{=}}2}}}} → {{Tt|{{#invoke:Pudełko|Nazwa przedmiotowej przestrzeni nazw|nazwa przestrzeni nazw 2=Dyskusja szablonu|numer jednostki=2}}}} * {{Code|{{m|Pudełko|Nazwa przedmiotowej przestrzeni nazw|nazwa przestrzeni nazw 2{{=}}Dyskusja szablonu|numer jednostki{{=}}2}}}} → {{Tt|{{#invoke:Pudełko|Nazwa przedmiotowej przestrzeni nazw|nazwa przestrzeni nazw i=Dyskusja szablonu|numer jednostki=2}}}} * {{Code|{{m|Pudełko|Nazwa przedmiotowej przestrzeni nazw|nazwa przestrzeni nazw{{=}}Dyskusja szablonu|numer jednostki{{=}}2}}}} → {{Tt|{{#invoke:Pudełko|Nazwa przedmiotowej przestrzeni nazw|nazwa przestrzeni nazw=Dyskusja szablonu|numer jednostki=2}}}} Powyżej dla przykładu podano parametry nie w rodzicu w szablonie, tylko w dziecku, jeśli chodzi o parametry nazw przestrzeni nazw, ale ich się za to nie powinno podawać w tych ramach, tylko w szablonach, w których wywoływane są te ramki pudełek {{Code|{{m|Pudełko}}}}, ale tak tutaj tak zrobiono by było najłatwiej sprawdzić działanie tego typu funkcji. Analogicznie możemy podawać parametry typu jednostki, np.: wywołaniu modułowym {{Code|{{m|Pudełko|Nazwa przedmiotowej przestrzeni nazw|typ jednostki 2{{=}}strona szablonu|numer jednostki{{=}}2}}}}, ale o tym więcej w rozdziałach {{Code|{{sr|# p["Przedmiotowy typ jednostki"](frame,i)|p=Pudełko}}}} w „{{sr|#Funkcje typu jednostki|p=Pudełko}}”, ale wtedy ta sama nazwa przestrzeni nazw reprezentowana przez {{Parametr|typ jednostki 2|strona szablonu}}, jest zamieniana na to samo, lepiej jest tutaj używać parametrów przestrzennych nazw niż typu jednostki, bo typ jednostki ma taką samą wartość dla przestrzeni przedmiotowej, co dyskusji. Tutaj parametr dyskusji typu jednostki bazowy i numerkowy ogólny, czy szczegółowy, nie gra roli, bo nawet, gdy wygenerujemy nazwę przestrzeni dyskusji za pomoca tego parametru, to i tak otrzymamy na samym końcu jego nazwę przedmiotową. Również parametry typu jednostki nie powinno się podawać w dziecku w ramce, tylko w rodzicu w szablonie jako parametry, w którym ta ramka jest wywoływana, ale tutaj podano jedynie dla przykładu, jak najłatwiej sprawdzić działanie tych parametrów tej funkcji. Najpierw w funkcji nagłówku brane są parametry nazw przestrzeni nazw, a jeżeli ich nie ma, to parametry typu jednostki, a jeżeli nie ma, to generowane są nazwy na podstawie aktualnego modułu. === {{Code|p["Nazwa przestrzeni nazw dyskusji"](frame,...)}} === Funkcja pisze nazwę przestrzeni nazw dyskusji jakikolwiek nazwy przestrzeni nazw (tzn. nazwę przedmiotową nazwy przestrzenie nazw, czyli nie dyskusji, zamieniana jest na dyskusji, czyli identyfikator przestrzeni się zmienia jeden wyżej, a dyskusji, nie przedmiotową, przekształca się na tą samą), według podanej w zmiennej {{Code|nazwa przestrzeni nazw}} dla pozycja bazowej w podanych parametrach szablonu rodzicu ramki dziecka, lub dla innej pozycji należy parametr podawać w formie {{Code|nazwa przestrzeni nazw 1}}, {{Code|nazwa przestrzeni nazw 2}}, {{Code|nazwa przestrzeni nazw 3}},..., lub te parametry można podać w postaci ogólnej {{Code|nazwa przestrzeni nazw i}}. Parametry podaje się w parametrach rodzica wywołania tej funkcji {{Code|{{m|Pudełko|Nazwa przestrzeni nazw dyskusji}}}} (ale ich nie trzeba podawać w dziecku, ale można) i w parametrach dziecka, jeśli chodzi o zmienną {{Code|numer jednostki}}, czyli np.: {{Code|{{m|Pudełko|Nazwa przestrzeni nazw dyskusji|numer jednostki{{=}}<jakaś liczba całkowita dodatnia>}}}}. Te parametry przestrzenne zamiast w rodzicu w szablonie można podać w ramce dziecka, wtedy parametry dziecka mają pierwszeństwo. Parametry przestrzenne mogą mogą być podane w postaci przestrzeni przedmiotowej lub dyskusji, ale ta funkcja zawsze ją zamienia na dyskusji. Przestrzeń nazw z parametrów nazw przestrzennych może odpowiadać wartości przestrzeni głównej, to wtedy odpowiednia przestrzeń nazw z parametru nazwy jednostki się nie liczy w tej funkcji, aby się liczyła należy użyć funkcji {{Code|{{sr|#p["Nazwa przestrzeni nazw dyskusji 2"](frame,...)|p=Pudełko}}}}. Definicja skrótowa funkcji: <syntaxhighlight lang="lua"> p["Nazwa przestrzeni nazw dyskusji"]=function(frame,czy_uwzglednic_alternatywna_nazwe,i)...end; </syntaxhighlight> Wtedy ciało funkcji tej, czyli jego definicja w środku, jest: <syntaxhighlight lang="lua"> -- Jest liczony numer parametru nazwy przestrzeni nazw, domyslnie chodzi tu o numer bazowy parametrów przestrzennych; local numer_jednostki=i or frame.args["numer jednostki"]; local liczba_numer_jednostki=((numer_jednostki)and(tonumber(numer_jednostki))or 0); local pudelko_pomocne_modul=require("Module:Pudełko/Pomocne"); -- Liczy nazwę przestrzeni nazw dyskusji na podstawie podanych parametrów; return pudelko_pomocne_modul.Nazwa_przestrzeni_nazw(frame,2, czy_uwzglednic_alternatywna_nazwe,liczba_numer_jednostki); </syntaxhighlight> Parametry funkcji: * {{Code|frame}} - tablica ramki tablicy transportu, * {{Code|czy_uwzglednic_alternatywna_nazwe}} - czy ma uwzględniać nazwę przestrzeni nazw domyślną szablonu, dostępne wartości: {{Code|false}}, w której nazwa domyślna nie jest uwzględniana wtedy, oraz {{Code|nil}} i {{Code|true}}, które oznaczają to samo, w tym jeżeli ona jest uwzględniana, wtedy jest brany parametr pierwszy dziecka, który musi istnieć przy takiej wartości tego parametru, tzn. {{Code|{{m|Pudełko|Nazwa przestrzeni nazw dyskusji|Szablon}}}} - ta nazwa domyślna zostanie przekształcona na dyskusji, a jeżeli ona by była dyskusji, to nie byłoby żadnego przekształcenia, a jeśli nazwa uzyskana nazwy przestrzeni nazw z parametrów przestrzennych jest w takim przypadku błędna, to w takim razie brany jest ten parametr, a jeżeli nazwa domyślna jest błędna, czyli {{Code|{{m|Pudełko|Nazwa przestrzeni nazw dyskusji|Moja przestrzeń}}}}, wtedy funkcja zwraca stan błędu {{Code|(błąd)}}. * {{Code|i}} - numer zmiennej nazwy przestrzeni nazw. Funkcja wykorzystuje {{Code|{{sr|#p.Nazwa_przestrzeni_nazw(frame,...)|p=Pudełko/Pomocne}}}} do wyznaczania ogólnego nazwy przestrzeni nazw dla pozycji bazowej i numerkowej, tzn. dla pozycji: jeden, dwa, trzy,..., itd, i ich ogólnej. Parametr ramki tablicy transportu rodzica szablonu: * {{Code|nazwa przestrzeni nazw}}, {{Code|nazwa przestrzeni nazw 1}}, {{Code|nazwa przestrzeni nazw 2}}, {{Code|nazwa przestrzeni nazw 3}},..., {{Code|nazwa przestrzeni nazw i}} - nazwy przestrzeni nazw dla pozycji bazowej oraz zwykłej i ogólnej numerkowej, * {{Code|typ jednostki}}, {{Code|typ jednostki 1}}, {{Code|typ jednostki 2}}, {{Code|typ jednostki 3}},..., {{Code|typ jednostki i}} - typy jednostek, którym odpowiadają pewne przestrzenie przedmiotowe, dla pozycji bazowej, numerkowej i ogólnej. Parametry ramki tablicy transportu dziecka: * Parametry dziecka są takie same jak rodzica dla funkcji pudełkowej plus tu wymienione, * {{Code|numer jednostki}} - jak parametr {{Code|i}} nie został ustawiony, to wtedy liczy się ta zmienna. Przykłady: <syntaxhighlight lang="mediawiki"> {{Nazwa szablonu|nazwa przestrzeni nazw=Wikibooks|nazwa przestrzeni nazw 2=Szablon|nazwa przestrzeni nazw i=Moduł}} </syntaxhighlight> W dziecku powiedzmy jest wywołanie, i szukamy nazwy przestrzeni nazw o numerze dwa, która nie została podana, ale istnieje za to jej wersji ogólna {{Code|nazwa przestrzeni nazw i}} i domyślna {{Code|nazwa przestrzeni nazw}}: <syntaxhighlight lang="mediawiki"> {{#invoke:Pudełko|Nazwa przestrzeni nazw dyskusji|numer jednostki=1}} </syntaxhighlight> Na podstawie powyższego przykładu otrzymamy wynik o schemacie, nie wyniku, bo tam nie ma zmiennej {{Code|nazwa przestrzeni nazw 1}}, ale jest {{Code|nazwa przestrzeni nazw i}}: <syntaxhighlight lang="mediawiki"> <!-- Ale nie "nazwa przestrzeni nazw", bo jej nie ma, ale za to istnieje "nazwa przestrzeni nazw i"; --> <!-- nazwa przestrzeni nazw 2=nazwa przestrzeni nazw i=Moduł; --> <!-- Czyli wynik: --> Dyskusja modułu <!-- Widzimy, że wygenerowała się nazwa przestrzeni nazw, którą jest przestrzeń dyskusji przestrzeni programowej przestrzeni przedmiotowej "Moduł", którą również jest "Szablon" jego przestrzeni dyskusji "Dyskusja szablonu", a dla ich przestrzeni przedmiotowej, zamiast dyskusji, to przekształca się na dyskusji jej odpowiadającą; --> </syntaxhighlight> Nie jest brana w tym powyższym przykładzie zmienna {{Code|nazwa przestrzeni nazw}}, bo jej nie ma, ale za to jest {{Code|nazwa przestrzeni nazw i}}, bo ona występuje jako parametr domyślny ogólny dla parametrów numerkowych. Przykłady w wikikodzie: * {{Code|{{m|Pudełko|Nazwa przestrzeni nazw dyskusji|numer jednostki{{=}}2}}}} → {{Tt|{{#invoke:Pudełko|Nazwa przestrzeni nazw dyskusji|numer jednostki=2}}}} * {{Code|{{m|Pudełko|Nazwa przestrzeni nazw dyskusji|Szablon|nazwa przestrzeni nazw i{{=}}Moja przestrzeń|numer jednostki{{=}}2}}}} → {{Tt|{{#invoke:Pudełko|Nazwa przestrzeni nazw dyskusji|Szablon|nazwa przestrzeni nazw i=Moja przestrzeń|numer jednostki=2}}}} * {{Code|{{m|Pudełko|Nazwa przestrzeni nazw dyskusji|nazwa przestrzeni nazw 2{{=}}Szablon|numer jednostki{{=}}2}}}} → {{Tt|{{#invoke:Pudełko|Nazwa przestrzeni nazw dyskusji|nazwa przestrzeni nazw 2=Szablon|numer jednostki=2}}}} * {{Code|{{m|Pudełko|Nazwa przestrzeni nazw dyskusji|nazwa przestrzeni nazw 2{{=}}Szablon|numer jednostki{{=}}2}}}} → {{Tt|{{#invoke:Pudełko|Nazwa przestrzeni nazw dyskusji|nazwa przestrzeni nazw i=Szablon|numer jednostki=2}}}} * {{Code|{{m|Pudełko|Nazwa przestrzeni nazw dyskusji|nazwa przestrzeni nazw{{=}}Szablon|numer jednostki{{=}}2}}}} → {{Tt|{{#invoke:Pudełko|Nazwa przestrzeni nazw dyskusji|nazwa przestrzeni nazw=Szablon|numer jednostki=2}}}} Powyżej dla przykładu podano parametry nie w rodzicu w szablonie, tylko w dziecku, jeśli chodzi o parametry nazw przestrzeni nazw, ale ich się za to nie powinno podawać w tych ramach, tylko w szablonach, w których wywoływane są te ramki pudełek {{Code|{{m|Pudełko}}}}, ale tak tutaj tak zrobiono by było najłatwiej sprawdzić działanie tego typu funkcji. Analogicznie możemy podawać parametry typu jednostki, np.: wywołaniu modułowym {{Code|{{m|Pudełko|Nazwa przestrzeni nazw dyskusji|typ jednostki 2{{=}}strona szablonu|numer jednostki{{=}}2}}}}, ale o tym więcej w rozdziałach {{Code|{{sr|# p["Dyskusyjny typ jednostki"](frame,i)|p=Pudełko}}}} w „{{sr|#Funkcje typu jednostki|p=Pudełko}}”, ale wtedy nazwa przestrzeni nazw reprezentowana przez {{Parametr|typ jednostki 2|strona szablonu}}, jest zamieniana na nazwę przestrzeni nazw dyskusji. Parametr dyskusji typu jednostki bazowy lub dla danego numerka ogólny, czy szczegółowy, nie gra roli. Również parametry typu jednostki nie powinno się podawać w dziecku w ramce, tylko w rodzicu w szablonie jako parametry, w którym ta ramka jest wywoływana, ale tutaj podano jedynie dla przykładu, jak najłatwiej sprawdzić działanie tych parametrów tej funkcji. Najpierw w funkcji nagłówku brane są parametry nazw przestrzeni nazw, a jeżeli ich nie ma, to parametry typu jednostki, a jeżeli nie ma, to generowane są nazwy na podstawie aktualnego modułu. == Funkcje nazw przestrzeni nazw drugiej wersji == === {{Code|p["Nazwa przestrzeni nazw 2"](frame,...)}} === Funkcja pisze nazwę przestrzeni nazw, niezależnie, czy to jest przedmiotowa, czy dyskusji, według, i nie zawsze tylko, podanej w zmiennej {{Code|nazwa przestrzeni nazw}} dla pozycja bazowej w podanych parametrach szablonu rodzicu ramki dziecka, lub dla innej pozycji należy parametr podawać w formie {{Code|nazwa przestrzeni nazw 1}}, {{Code|nazwa przestrzeni nazw 2}}, {{Code|nazwa przestrzeni nazw 3}},..., lub te parametry można podać w postaci ogólnej {{Code|nazwa przestrzeni nazw i}}. W tej funkcji trzeba też podawać parametry nazwy jednostek {{Code|nazwa jednostki}}, {{Code|nazwa jednostki 1}}, {{Code|nazwa jednostki 2}}, {{Code|nazwa jednostki 3}},... Parametry podaje się w parametrach rodzica wywołania tej funkcji {{Code|{{m|Pudełko|Nazwa przestrzeni nazw 2}}}} (ale ich nie trzeba podawać w dziecku, ale można) i w parametrach dziecka, jeśli chodzi o zmienną {{Code|numer jednostki}}, czyli np.: {{Code|{{m|Pudełko|Nazwa przestrzeni nazw 2|numer jednostki{{=}}<jakaś liczba całkowita dodatnia>}}}}. Te parametry przestrzenne zamiast w rodzicu w szablonie można podać w ramce dziecka, wtedy parametry dziecka mają pierwszeństwo. Przestrzeń nazw z parametrów nazw przestrzennych może odpowiadać wartości przestrzeni głównej, to wtedy odpowiednia przestrzeń nazw z parametru nazwy jednostki się liczy w tej funkcji, wtedy jest liczona nazwa przestrzeni nazw z tego parametru. Gdy parametry przestrzenne lub typ jednostki w drugim podejściu nie wskazują na przestrzeń główną, to wtedy działanie tej funkcji jest podobne do {{Code|{{sr|#p["Nazwa przestrzeni nazw"](frame,...)|p=Pudełko}}}}. Definicja skrótowa funkcji: <syntaxhighlight lang="lua"> p["Nazwa przestrzeni nazw 2"]=function(frame,czy_uwzglednic_alternatywna_nazwe,i)...end; </syntaxhighlight> Wtedy ciało funkcji tej, czyli jego definicja w środku, jest: <syntaxhighlight lang="lua"> local pudelko_pomocne_modul=require("Module:Pudełko/Pomocne"); -- Liczy nazwę przestrzeni nazw, jeżeli z parametrów przestrzennych przestrzeń wskazuje na główną, to wtedy jest liczona przestrzeń nazw z nazwy jednostki; return pudelko_pomocne_modul.Nazwa_przestrzeni_nazw_2(frame,czy_uwzglednic_alternatywna_nazwe,i) </syntaxhighlight> Parametry funkcji: * {{Code|frame}} - tablica ramki tablicy transportu, * {{Code|czy_uwzglednic_alternatywna_nazwe}} - czy ma uwzględniać nazwę przestrzeni nazw domyślną szablonu, dostępne wartości: {{Code|false}}, w której nazwa domyślna nie jest uwzględniana wtedy, oraz {{Code|nil}} i {{Code|true}}, które oznaczają to samo, w tym jeżeli ona jest uwzględniana, wtedy jest brany parametr pierwszy dziecka, który musi istnieć przy takiej wartości tego parametru, tzn. {{Code|{{m|Pudełko|Nazwa przestrzeni nazw 2|Szablon}}}}, a jeśli nazwa uzyskana nazwy przestrzeni nazw jest w takim przypadku błędna, to brany jest ten element, a jeżeli nazwa domyślna jest błędna, czyli {{Code|{{m|Pudełko|Nazwa przestrzeni nazw 2|Moja przestrzeń}}}}, wtedy funkcja zwraca stan błędu {{Code|(błąd)}}. * {{Code|i}} - numer zmiennej nazwy przestrzeni nazw. Funkcja wykorzystuje {{Code|{{sr|#p.Nazwa_przestrzeni_nazw_2(frame,...)|p=Pudełko/Pomocne}}}} do wyznaczania ogólnego nazwy przestrzeni nazw dla pozycji bazowej i numerkowej, tzn. dla pozycji: jeden, dwa, trzy,..., itd, i ich ogólnej. Parametr ramki tablicy transportu rodzica szablonu: * {{Code|nazwa przestrzeni nazw}}, {{Code|nazwa przestrzeni nazw 1}}, {{Code|nazwa przestrzeni nazw 2}}, {{Code|nazwa przestrzeni nazw 3}},..., {{Code|nazwa przestrzeni nazw i}} - nazwy przestrzeni nazw dla pozycji bazowej oraz zwykłej i ogólnej numerkowej, * {{Code|nazwa jednostki}}, {{Code|nazwa jednostki 1}}, {{Code|nazwa jednostki 2}}, {{Code|nazwa jednostki 3}},... - nazwy jednostek dla pozycji bazowej i numerkowej, * {{Code|typ jednostki}}, {{Code|typ jednostki 1}}, {{Code|typ jednostki 2}}, {{Code|typ jednostki 3}},..., {{Code|typ jednostki i}} - typy jednostek, którym odpowiadają pewne przestrzenie przedmiotowe, dla pozycji bazowej, numerkowej i ogólnej, ** {{Code|dyskusja typu jednostki}}, {{Code|dyskusja typu jednostki 1}}, {{Code|dyskusja typ jednostki 2}}, {{Code|dyskusja typ jednostki 3}},..., {{Code|dyskusja typ jednostki i}} - czy dany typ jednostki ma przedstawiać, jeśli niepusta, przestrzeń dyskusji dla pozycji bazowej, numerkowej i ogólnej. Parametry ramki tablicy transportu dziecka: * Parametry dziecka są takie same jak rodzica dla funkcji pudełkowej plus tu wymienione, * {{Code|numer jednostki}} - jak parametr {{Code|i}} nie został ustawiony, to wtedy liczy się ta zmienna. Przykłady: <syntaxhighlight lang="mediawiki"> {{Nazwa szablonu|nazwa przestrzeni nazw=Wikibooks|nazwa przestrzeni nazw 1=Szablon|nazwa przestrzeni nazw i=|nazwa jednostki 2=Wikibooks:Strona}} </syntaxhighlight> W dziecku powiedzmy jest wywołanie, i szukamy nazwy przestrzeni nazw o numerze dwa, która została podana, ale istnieje za to jej wersji ogólna {{Code|nazwa przestrzeni nazw i}} i domyślna {{Code|nazwa przestrzeni nazw}}, ale wtedy dla tego numerkowego liczy się to ogólne z {{Code| i}}, a ponieważ ta nazwa jest pusta, więc będziemy liczyli nazwę przestrzeni nazw z {{Code|nazwa jednostki 2}}: <syntaxhighlight lang="mediawiki"> {{#invoke:Pudełko|Nazwa przestrzeni nazw 2|numer jednostki=2}} </syntaxhighlight> Na podstawie powyższego przykładu otrzymamy wynik o schemacie, nie wyniku, bo tam nie ma zmiennej {{Code|nazwa przestrzeni nazw 1}}, ale jest {{Code|nazwa przestrzeni nazw i}}: <syntaxhighlight lang="mediawiki"> <!-- Ale nie "nazwa przestrzeni nazw 2", bo jej nie ma, ale za to istnieje "nazwa przestrzeni nazw i"; --> <!-- nazwa przestrzeni nazw 2=nazwa przestrzeni nazw i="", a nazwa jednostki 2="Wikibooks:Strona"; --> <!-- Czyli wynik: --> Wikibooks <!-- Widzimy, że wygenerowała się nazwa przestrzeni nazw, którą jest przestrzeń nieprogramowa, ale projektu, wychodząca z nazwy jednostek w tym przypadku z "nazwa jednostki 2"; --> </syntaxhighlight> Nie jest brana w tym powyższym przykładzie zmienna {{Code|nazwa przestrzeni nazw}}, bo jej nie ma, ale za to jest {{Code|nazwa przestrzeni nazw i}}, bo ona występuje jako parametr domyślny ogólny dla parametrów numerkowych. Tytaj jest używana jest zmienna {{Code|nazwa jednostki 2}} do wygenerowania ostatecznego wyniku, bo jak można zauważyć, parametry przestrzenne wskazują na przestrzeń główną, a nazwy jednostek już nie. Przykłady w wikikodzie: * {{Code|{{m|Pudełko|Nazwa przestrzeni nazw 2|numer jednostki{{=}}2}}}} → {{Tt|{{#invoke:Pudełko|Nazwa przestrzeni nazw 2|numer jednostki=2}}}} * {{Code|{{m|Pudełko|Nazwa przestrzeni nazw 2|Szablon|nazwa przestrzeni nazw i{{=}}Moja przestrzeń|numer jednostki{{=}}2}}}} → {{Tt|{{#invoke:Pudełko|Nazwa przestrzeni nazw 2|Szablon|nazwa przestrzeni nazw i=Moja przestrzeń|numer jednostki=2}}}} * {{Code|{{m|Pudełko|Nazwa przestrzeni nazw 2|nazwa przestrzeni nazw 2{{=}}|nazwa jednostki 2{{=}}Szablon:Strona|numer jednostki{{=}}2}}}} → {{Tt|{{#invoke:Pudełko|Nazwa przestrzeni nazw 2|nazwa przestrzeni nazw 2=|nazwa jednostki 2=Szablon:Strona|numer jednostki=2}}}} * {{Code|{{m|Pudełko|Nazwa przestrzeni nazw 2|nazwa przestrzeni nazw i{{=}}|nazwa jednostki 2{{=}}Szablon:Strona|numer jednostki{{=}}2}}}} → {{Tt|{{#invoke:Pudełko|Nazwa przestrzeni nazw 2|nazwa przestrzeni nazw i=|nazwa jednostki 2=Szablon:Strona|numer jednostki=2}}}} * {{Code|{{m|Pudełko|Nazwa przestrzeni nazw 2|Szablon|nazwa przestrzeni nazw{{=}}|nazwa jednostki 2{{=}}Wikibooks:Strona|numer jednostki{{=}}2}}}} → {{Tt|{{#invoke:Pudełko|Nazwa przestrzeni nazw 2|Szablon|nazwa przestrzeni nazw=|nazwa jednostki 2=Wikibooks:Strona|numer jednostki=2}}}} Powyżej dla przykładu podano parametry nie w rodzicu w szablonie, tylko w dziecku, jeśli chodzi o parametry nazw przestrzeni nazw i nazw jednostek, ale ich się za to nie powinno podawać w tych ramach, tylko w szablonach, w których wywoływane są te ramki pudełek {{Code|{{m|Pudełko}}}}, ale tak tutaj tak zrobiono by było najłatwiej sprawdzić działanie tego typu funkcji. Analogicznie możemy podawać parametry typu jednostki, np.: wywołaniu modułowym {{Code|{{m|Pudełko|Nazwa przestrzeni nazw 2|typ jednostki 2{{=}}Podręcznik|nazwa jednostki 2{{=}}Szablon:Strona|numer jednostki{{=}}2}}}} (ale wtedy jest brana przestrzeń nazw z nazwy jednostki), ale o tym więcej w rozdziałach {{Code|{{sr|#p["Typ jednostki 2"](frame,i)|p=Pudełko}}}} w „{{sr|#Funkcje typu jednostki|p=Pudełko}}”, on definiuje przestrzenie przedmiotowe, ale można użyć parametru dyskusji typu jednostki z wartością niepustą, wtedy wyświetli się nazwa przestrzeni nazw dyskusji. Jeżeli typ jednostki wskazuje na przestrzeń nazw główną, wtedy się liczą parametry nazw jednostek. Również parametry typu jednostki nie powinno się podawać w dziecku w ramce, tylko w rodzicu w szablonie jako parametry, w którym ta ramka jest wywoływana, ale tutaj podano jedynie dla przykładu, jak najłatwiej sprawdzić działanie tych parametrów tej funkcji. Najpierw w funkcji nagłówku brane są parametry nazw przestrzeni nazw, a jeżeli ich nie ma, to parametry typu jednostki, a jeżeli nie ma lub parametry przestrzenne wskazują na przestrzeń główną, i nie ma nazwy jednostki, to generowane są nazwy tej funkcji na podstawie aktualnej strony. === {{Code|p["Nazwa przedmiotowej przestrzeni nazw 2"](frame,...)}} === Funkcja pisze przedmiotową nazwę przestrzeni nazw jakikolwiek nazwy przestrzeni nazw (tzn. nazwę przedmiotową nazwy przestrzenie nazw, czyli nie dyskusji, zamieniana jest na nią samą, czyli identyfikator przestrzeni się nie zmienia, a dyskusji, nie przedmiotową, przekształca się na przedmiotową jej odpowiadającą, czyli w tym przypadku identyfikator przestrzeni zmniejsza się o numer mniej), według, i nie zawsze tylko, podanej w zmiennej {{Code|nazwa przestrzeni nazw}} dla pozycja bazowej w podanych parametrach szablonu rodzicu ramki dziecka, lub dla innej pozycji należy parametr podawać w formie {{Code|nazwa przestrzeni nazw 1}}, {{Code|nazwa przestrzeni nazw 2}}, {{Code|nazwa przestrzeni nazw 3}},..., lub te parametry można podać w postaci ogólnej {{Code|nazwa przestrzeni nazw i}}. W tej funkcji trzeba też podawać parametry nazwy jednostek {{Code|nazwa jednostki}}, {{Code|nazwa jednostki 1}}, {{Code|nazwa jednostki 2}}, {{Code|nazwa jednostki 3}},... Parametry podaje się w parametrach rodzica wywołania tej funkcji {{Code|{{m|Pudełko|Nazwa przedmiotowej przestrzeni nazw 2}}}} (ale ich nie trzeba podawać w dziecku, ale można) i w parametrach dziecka, jeśli chodzi o zmienną {{Code|numer jednostki}}, czyli np.: {{Code|{{m|Pudełko|Nazwa przedmiotowej przestrzeni nazw 2|numer jednostki{{=}}<jakaś liczba całkowita dodatnia>}}}}. Te parametry przestrzenne zamiast w rodzicu w szablonie można podać w ramce dziecka, wtedy parametry dziecka mają pierwszeństwo. Przestrzeń nazw z parametrów nazw przestrzennych po przekształceniu na przedmiotową może odpowiadać wartości przestrzeni głównej, to wtedy odpowiednia przestrzeń nazw z parametru nazwy jednostki się liczy w tej funkcji, wtedy jest liczona nazwa przestrzeni nazw z tego parametru. Gdy parametry przestrzenne lub typ jednostki w drugim podejściu nie wskazują na przestrzeń główną, to wtedy działanie tej funkcji jest podobne do {{Code|{{sr|#p["Nazwa przedmiotowej przestrzeni nazw"](frame,...)|p=Pudełko}}}}. Definicja skrótowa funkcji: <syntaxhighlight lang="lua"> p["Nazwa przedmiotowej przestrzeni nazw 2"]=function(frame,czy_uwzglednic_alternatywna_nazwe,i)...end; </syntaxhighlight> Wtedy ciało funkcji tej, czyli jego definicja w środku, jest: <syntaxhighlight lang="lua"> local pudelko_pomocne_modul=require("Module:Pudełko/Pomocne"); return pudelko_pomocne_modul.Nazwa_przestrzeni_nazw_przedmiotowa_dyskusji_2(frame,czy_uwzglednic_alternatywna_nazwe,i,"przedmiotowa"); </syntaxhighlight> Parametry funkcji: * {{Code|frame}} - tablica ramki tablicy transportu, * {{Code|czy_uwzglednic_alternatywna_nazwe}} - czy ma uwzględniać nazwę przestrzeni nazw domyślną szablonu, dostępne wartości: {{Code|false}}, w której nazwa domyślna nie jest uwzględniana wtedy, oraz {{Code|nil}} i {{Code|true}}, które oznaczają to samo, w tym jeżeli ona jest uwzględniana, wtedy jest brany parametr pierwszy dziecka, który musi istnieć przy takiej wartości tego parametru, tzn. {{Code|{{m|Pudełko|Nazwa przedmiotowej przestrzeni nazw 2|Szablon}}}}, nazwa domyślna zostanie zamieniona na przedmiotową, a jeżeli jest już taka, to żadnej zamiany nie ma, a jeśli nazwa uzyskana nazwy przestrzeni nazw jest w takim przypadku błędna, a jeżeli nazwa domyślna jest błędna, czyli {{Code|{{m|Pudełko|Nazwa przedmiotowej przestrzeni nazw 2|Moja przestrzeń}}}}, wtedy funkcja zwraca stan błędu {{Code|(błąd)}}. * {{Code|i}} - numer zmiennej nazwy przestrzeni nazw. Funkcja wykorzystuje {{Code|{{sr|#p.Nazwa_przestrzeni_nazw_przedmiotowa_dyskusji_2(frame,...)|p=Pudełko/Pomocne}}}} do wyznaczania ogólnego nazwy przestrzeni nazw dla pozycji bazowej i numerkowej, tzn. dla pozycji: jeden, dwa, trzy,..., itd, i ich ogólnej. Parametr ramki tablicy transportu rodzica szablonu: * {{Code|nazwa przestrzeni nazw}}, {{Code|nazwa przestrzeni nazw 1}}, {{Code|nazwa przestrzeni nazw 2}}, {{Code|nazwa przestrzeni nazw 3}},..., {{Code|nazwa przestrzeni nazw i}} - nazwy przestrzeni nazw dla pozycji bazowej oraz zwykłej i ogólnej numerkowej, * {{Code|nazwa jednostki}}, {{Code|nazwa jednostki 1}}, {{Code|nazwa jednostki 2}}, {{Code|nazwa jednostki 3}},... - nazwy jednostek dla pozycji bazowej i numerkowej, * {{Code|typ jednostki}}, {{Code|typ jednostki 1}}, {{Code|typ jednostki 2}}, {{Code|typ jednostki 3}},..., {{Code|typ jednostki i}} - typy jednostek, którym odpowiadają pewne przestrzenie przedmiotowe, dla pozycji bazowej, numerkowej i ogólnej. Parametry ramki tablicy transportu dziecka: * Parametry dziecka są takie same jak rodzica dla funkcji pudełkowej plus tu wymienione, * {{Code|numer jednostki}} - jak parametr {{Code|i}} nie został ustawiony, to wtedy liczy się ta zmienna. Przykłady: <syntaxhighlight lang="mediawiki"> {{Nazwa szablonu|nazwa przestrzeni nazw=Wikibooks|nazwa przestrzeni nazw 1=Szablon|nazwa przestrzeni nazw i=|nazwa jednostki 2=Dyskusja Wikibooks:Strona}} </syntaxhighlight> W dziecku powiedzmy jest wywołanie, i szukamy nazwy przestrzeni nazw o numerze dwa, która została podana, ale istnieje za to jej wersji ogólna {{Code|nazwa przestrzeni nazw i}} i domyślna {{Code|nazwa przestrzeni nazw}}, ale wtedy dla tego numerkowego liczy się to ogólne z {{Code| i}}, a ponieważ ta nazwa jest pusta, więc będziemy liczyli nazwę przestrzeni nazw z {{Code|nazwa jednostki 2}}: <syntaxhighlight lang="mediawiki"> {{#invoke:Pudełko|Nazwa przedmiotowej przestrzeni nazw 2|numer jednostki=2}} </syntaxhighlight> Na podstawie powyższego przykładu otrzymamy wynik o schemacie, nie wyniku, bo tam nie ma zmiennej {{Code|nazwa przestrzeni nazw 1}}, ale jest {{Code|nazwa przestrzeni nazw i}}: <syntaxhighlight lang="mediawiki"> <!-- Ale nie "nazwa przestrzeni nazw 2", bo jej nie ma, ale za to istnieje "nazwa przestrzeni nazw i"; --> <!-- nazwa przestrzeni nazw 2=nazwa przestrzeni nazw i="", a nazwa jednostki 2="Dyskusja Wikibooks:Strona"; --> <!-- Czyli wynik: --> Wikibooks <!-- Widzimy, że wygenerowała się nazwa przestrzeni nazw, którą jest przestrzeń nieprogramowa, ale projektu, wychodząca z nazwy jednostek w tym przypadku z "nazwa jednostki 2"; --> </syntaxhighlight> Nie jest brana w tym powyższym przykładzie zmienna {{Code|nazwa przestrzeni nazw}}, bo jej nie ma, ale za to jest {{Code|nazwa przestrzeni nazw i}}, bo ona występuje jako parametr domyślny ogólny dla parametrów numerkowych. Tytaj jest używana jest zmienna {{Code|nazwa jednostki 2}} do wygenerowania ostatecznego wyniku, bo jak można zauważyć, parametry przestrzenne wskazują na przestrzeń główną, a nazwy jednostek już nie. Przykłady w wikikodzie: * {{Code|{{m|Pudełko|Nazwa przedmiotowej przestrzeni nazw 2|numer jednostki{{=}}2}}}} → {{Tt|{{#invoke:Pudełko|Nazwa przedmiotowej przestrzeni nazw 2|numer jednostki=2}}}} * {{Code|{{m|Pudełko|Nazwa przedmiotowej przestrzeni nazw 2|Dyskusja szablonu|nazwa przestrzeni nazw i{{=}}Moja przestrzeń|numer jednostki{{=}}2}}}} → {{Tt|{{#invoke:Pudełko|Nazwa przedmiotowej przestrzeni nazw 2|Dyskusja szablonu|nazwa przestrzeni nazw i=Moja przestrzeń|numer jednostki=2}}}} * {{Code|{{m|Pudełko|Nazwa przedmiotowej przestrzeni nazw 2|nazwa przestrzeni nazw 2{{=}}Dyskusja|nazwa jednostki 2{{=}}Dyskusja szablonu:Strona|numer jednostki{{=}}2}}}} → {{Tt|{{#invoke:Pudełko|Nazwa przedmiotowej przestrzeni nazw 2|nazwa przestrzeni nazw 2=Dyskusja|nazwa jednostki 2=Dyskusja szablonu:Strona|numer jednostki=2}}}} * {{Code|{{m|Pudełko|Nazwa przedmiotowej przestrzeni nazw 2|nazwa przestrzeni nazw i{{=}}Dyskusja|nazwa jednostki 2{{=}}Dyskusja szablonu:Strona|numer jednostki{{=}}2}}}} → {{Tt|{{#invoke:Pudełko|Nazwa przedmiotowej przestrzeni nazw 2|nazwa przestrzeni nazw i=Dyskusja|nazwa jednostki 2=Dyskusja szablonu:Strona|numer jednostki=2}}}} * {{Code|{{m|Pudełko|Nazwa przedmiotowej przestrzeni nazw 2|Dyskusja szablonu|nazwa przestrzeni nazw{{=}}Dyskusja|nazwa jednostki 2{{=}}Wikibooks:Strona|numer jednostki{{=}}2}}}} → {{Tt|{{#invoke:Pudełko|Nazwa przedmiotowej przestrzeni nazw 2|Dyskusja szablonu|nazwa przestrzeni nazw=Dyskusja|nazwa jednostki 2=Dyskusja Wikibooks:Strona|numer jednostki=2}}}} Powyżej dla przykładu podano parametry nie w rodzicu w szablonie, tylko w dziecku, jeśli chodzi o parametry nazw przestrzeni nazw i nazw jednostek, ale ich się za to nie powinno podawać w tych ramach, tylko w szablonach, w których wywoływane są te ramki pudełek {{Code|{{m|Pudełko}}}}, ale tak tutaj tak zrobiono by było najłatwiej sprawdzić działanie tego typu funkcji. Analogicznie możemy podawać parametry typu jednostki, np.: wywołaniu modułowym {{Code|{{m|Pudełko|Nazwa przedmiotowej przestrzeni nazw 2|typ jednostki 2{{=}}Podręcznik|nazwa jednostki 2{{=}}Dyskusja szablonu:Strona|numer jednostki{{=}}2}}}} (ale wtedy jest brana przestrzeń nazw z nazwy jednostki), ale o tym więcej w rozdziałach {{Code|{{sr|# p["Przedmiotowy typ jednostki 2"](frame,i)|p=Pudełko}}}} w „{{sr|#Funkcje typu jednostki|p=Pudełko}}”, on definiuje przestrzenie przedmiotowe, ale można użyć parametru dyskusji typu jednostki z wartością niepustą, pustą, czy nawet jej nie podamy, wtedy wyświetli się nazwa przestrzeni nazw przedmiotowej. Jeżeli typ jednostki wskazuje na przestrzeń nazw główną, wtedy się liczą parametry nazw jednostek. Również parametry typu jednostki nie powinno się podawać w dziecku w ramce, tylko w rodzicu w szablonie jako parametry, w którym ta ramka jest wywoływana, ale tutaj podano jedynie dla przykładu, jak najłatwiej sprawdzić działanie tych parametrów tej funkcji. Najpierw w funkcji nagłówku brane są parametry nazw przestrzeni nazw, a jeżeli ich nie ma, to parametry typu jednostki, a jeżeli nie ma lub parametry przestrzenne wskazują na przestrzeń główną, i nie ma nazwy jednostki, to generowane są nazwy tej funkcji na podstawie aktualnej strony. === {{Code|p["Nazwa przestrzeni nazw dyskusji 2"](frame,...)}} === Funkcja pisze nazwę przestrzeni nazw dyskusji jakikolwiek nazwy przestrzeni nazw (tzn. nazwę dyskusji nazwy przestrzenie nazw, czyli nie przedmiotowej, zamieniana jest na nią samą, czyli identyfikator przestrzeni się nie zmienia, a przedmiotową, nie dyskusji, przekształca się na dyskusji jej odpowiadającą, czyli w tym przypadku identyfikator przestrzeni zwiększa się o numer więcej), według, i nie zawsze tylko, podanej w zmiennej {{Code|nazwa przestrzeni nazw}} dla pozycja bazowej w podanych parametrach szablonu rodzicu ramki dziecka, lub dla innej pozycji należy parametr podawać w formie {{Code|nazwa przestrzeni nazw 1}}, {{Code|nazwa przestrzeni nazw 2}}, {{Code|nazwa przestrzeni nazw 3}},..., lub te parametry można podać w postaci ogólnej {{Code|nazwa przestrzeni nazw i}}. W tej funkcji trzeba też podawać parametry nazwy jednostek {{Code|nazwa jednostki}}, {{Code|nazwa jednostki 1}}, {{Code|nazwa jednostki 2}}, {{Code|nazwa jednostki 3}},... Parametry podaje się w parametrach rodzica wywołania tej funkcji {{Code|{{m|Pudełko|Nazwa przestrzeni nazw dyskusji 2}}}} (ale ich nie trzeba podawać w dziecku, ale można) i w parametrach dziecka, jeśli chodzi o zmienną {{Code|numer jednostki}}, czyli np.: {{Code|{{m|Pudełko|Nazwa przestrzeni nazw dyskusji 2|numer jednostki{{=}}<jakaś liczba całkowita dodatnia>}}}}. Te parametry przestrzenne zamiast w rodzicu w szablonie można podać w ramce dziecka, wtedy parametry dziecka mają pierwszeństwo. Przestrzeń nazw z parametrów nazw przestrzennych po przekształceniu może odpowiadać wartości przestrzeni głównej, to wtedy odpowiednia przestrzeń nazw z parametru nazwy jednostki się liczy w tej funkcji, wtedy jest liczona nazwa przestrzeni nazw dyskusji z tego parametru. Gdy parametry przestrzenne lub typ jednostki w drugim podejściu nie wskazują na przestrzeń główną, to wtedy działanie tej funkcji jest podobne do {{Code|{{sr|#p["Nazwa dyskusji przestrzeni nazw"](frame,...)|p=Pudełko}}}}. Definicja skrótowa funkcji: <syntaxhighlight lang="lua"> p["Nazwa przestrzeni nazw dyskusji 2"]=function(frame,czy_uwzglednic_alternatywna_nazwe,i)...end; </syntaxhighlight> Wtedy ciało funkcji tej, czyli jego definicja w środku, jest: <syntaxhighlight lang="lua"> local pudelko_pomocne_modul=require("Module:Pudełko/Pomocne"); return pudelko_pomocne_modul.Nazwa_przestrzeni_nazw_przedmiotowa_dyskusji_2(frame,czy_uwzglednic_alternatywna_nazwe,i,"dyskusja"); </syntaxhighlight> Parametry funkcji: * {{Code|frame}} - tablica ramki tablicy transportu, * {{Code|czy_uwzglednic_alternatywna_nazwe}} - czy ma uwzględniać nazwę przestrzeni nazw domyślną szablonu, dostępne wartości: {{Code|false}}, w której nazwa domyślna nie jest uwzględniana wtedy, oraz {{Code|nil}} i {{Code|true}}, które oznaczają to samo, w tym jeżeli ona jest uwzględniana, wtedy jest brany parametr pierwszy dziecka, który musi istnieć przy takiej wartości tego parametru, tzn. {{Code|{{m|Pudełko|Nazwa przestrzeni nazw dyskusji 2|Szablon}}}}, nazwa domyślna zostanie zamieniona na dyskusji, a jeżeli jest już taka, to nie ma takiej zamiany, a jeśli nazwa uzyskana nazwy przestrzeni nazw jest w takim przypadku błędna, a jeżeli nazwa domyślna jest błędna, czyli {{Code|{{m|Pudełko|Nazwa przestrzeni nazw dyskusji 2|Moja przestrzeń}}}}, wtedy funkcja zwraca stan błędu {{Code|(błąd)}}. * {{Code|i}} - numer zmiennej nazwy przestrzeni nazw. Funkcja wykorzystuje {{Code|{{sr|#p.Nazwa_przestrzeni_nazw_przedmiotowa_dyskusji_2(frame,...)|p=Pudełko/Pomocne}}}} do wyznaczania ogólnego nazwy przestrzeni nazw dla pozycji bazowej i numerkowej, tzn. dla pozycji: jeden, dwa, trzy,..., itd, i ich ogólnej. Parametr ramki tablicy transportu rodzica szablonu: * {{Code|nazwa przestrzeni nazw}}, {{Code|nazwa przestrzeni nazw 1}}, {{Code|nazwa przestrzeni nazw 2}}, {{Code|nazwa przestrzeni nazw 3}},..., {{Code|nazwa przestrzeni nazw i}} - nazwy przestrzeni nazw dla pozycji bazowej oraz zwykłej i ogólnej numerkowej, * {{Code|nazwa jednostki}}, {{Code|nazwa jednostki 1}}, {{Code|nazwa jednostki 2}}, {{Code|nazwa jednostki 3}},... - nazwy jednostek dla pozycji bazowej i numerkowej, * {{Code|typ jednostki}}, {{Code|typ jednostki 1}}, {{Code|typ jednostki 2}}, {{Code|typ jednostki 3}},..., {{Code|typ jednostki i}} - typy jednostek, którym odpowiadają pewne przestrzenie przedmiotowe, dla pozycji bazowej, numerkowej i ogólnej. Parametry ramki tablicy transportu dziecka: * Parametry dziecka są takie same jak rodzica dla funkcji pudełkowej plus tu wymienione, * {{Code|numer jednostki}} - jak parametr {{Code|i}} nie został ustawiony, to wtedy liczy się ta zmienna. Przykłady: <syntaxhighlight lang="mediawiki"> {{Nazwa szablonu|nazwa przestrzeni nazw=Wikibooks|nazwa przestrzeni nazw 1=Szablon|nazwa przestrzeni nazw i=|nazwa jednostki 2=Wikibooks:Strona}} </syntaxhighlight> W dziecku powiedzmy jest wywołanie, i szukamy nazwy przestrzeni nazw o numerze dwa, która została podana, ale istnieje za to jej wersji ogólna {{Code|nazwa przestrzeni nazw i}} i domyślna {{Code|nazwa przestrzeni nazw}}, ale wtedy dla tego numerkowego liczy się to ogólne z {{Code| i}}, a ponieważ ta nazwa jest pusta, więc będziemy liczyli nazwę przestrzeni nazw z {{Code|nazwa jednostki 2}}: <syntaxhighlight lang="mediawiki"> {{#invoke:Pudełko|Nazwa przestrzeni nazw dyskusji 2|numer jednostki=2}} </syntaxhighlight> Na podstawie powyższego przykładu otrzymamy wynik o schemacie, nie wyniku, bo tam nie ma zmiennej {{Code|nazwa przestrzeni nazw 1}}, ale jest {{Code|nazwa przestrzeni nazw i}}: <syntaxhighlight lang="mediawiki"> <!-- Ale nie "nazwa przestrzeni nazw 2", bo jej nie ma, ale za to istnieje "nazwa przestrzeni nazw i"; --> <!-- nazwa przestrzeni nazw 2=nazwa przestrzeni nazw i="", a nazwa jednostki 2="Wikibooks:Strona"; --> <!-- Czyli wynik: --> Dyskusja Wikibooks <!-- Widzimy, że wygenerowała się nazwa przestrzeni nazw, którą jest przestrzeń nieprogramowa, ale dyskusji projektu, wychodząca z nazwy jednostek w tym przypadku z "nazwa jednostki 2"; --> </syntaxhighlight> Nie jest brana w tym powyższym przykładzie zmienna {{Code|nazwa przestrzeni nazw}}, bo jej nie ma, ale za to jest {{Code|nazwa przestrzeni nazw i}}, bo ona występuje jako parametr domyślny ogólny dla parametrów numerkowych. Tytaj jest używana jest zmienna {{Code|nazwa jednostki 2}} do wygenerowania ostatecznego wyniku, bo jak można zauważyć, parametry przestrzenne wskazują na przestrzeń główną, a nazwy jednostek już nie. Przykłady w wikikodzie: * {{Code|{{m|Pudełko|Nazwa przestrzeni nazw dyskusji 2|numer jednostki{{=}}2}}}} → {{Tt|{{#invoke:Pudełko|Nazwa przestrzeni nazw dyskusji 2|numer jednostki=2}}}} * {{Code|{{m|Pudełko|Nazwa przestrzeni nazw dyskusji 2|Szablon|nazwa przestrzeni nazw i{{=}}Moja przestrzeń|numer jednostki{{=}}2}}}} → {{Tt|{{#invoke:Pudełko|Nazwa przestrzeni nazw dyskusji 2|Szablon|nazwa przestrzeni nazw i=Moja przestrzeń|numer jednostki=2}}}} * {{Code|{{m|Pudełko|Nazwa przestrzeni nazw dyskusji 2|nazwa przestrzeni nazw 2{{=}}|nazwa jednostki 2{{=}}Szablon:Strona|numer jednostki{{=}}2}}}} → {{Tt|{{#invoke:Pudełko|Nazwa przestrzeni nazw dyskusji 2|nazwa przestrzeni nazw 2=|nazwa jednostki 2=Szablon:Strona|numer jednostki=2}}}} * {{Code|{{m|Pudełko|Nazwa przestrzeni nazw dyskusji 2|nazwa przestrzeni nazw i{{=}}|nazwa jednostki 2{{=}}Szablon:Strona|numer jednostki{{=}}2}}}} → {{Tt|{{#invoke:Pudełko|Nazwa przestrzeni nazw dyskusji 2|nazwa przestrzeni nazw i=|nazwa jednostki 2=Szablon:Strona|numer jednostki=2}}}} * {{Code|{{m|Pudełko|Nazwa przestrzeni nazw dyskusji 2|Szablon|nazwa przestrzeni nazw{{=}}|nazwa jednostki 2{{=}}Wikibooks:Strona|numer jednostki{{=}}2}}}} → {{Tt|{{#invoke:Pudełko|Nazwa przestrzeni nazw dyskusji 2|Szablon|nazwa przestrzeni nazw=|nazwa jednostki 2=Dyskusja Wikibooks:Strona|numer jednostki=2}}}} Powyżej dla przykładu podano parametry nie w rodzicu w szablonie, tylko w dziecku, jeśli chodzi o parametry nazw przestrzeni nazw i nazw jednostek, ale ich się za to nie powinno podawać w tych ramach, tylko w szablonach, w których wywoływane są te ramki pudełek {{Code|{{m|Pudełko}}}}, ale tak tutaj tak zrobiono by było najłatwiej sprawdzić działanie tego typu funkcji. Analogicznie możemy podawać parametry typu jednostki, np.: wywołaniu modułowym {{Code|{{m|Pudełko|Nazwa przestrzeni nazw dyskusji 2|typ jednostki 2{{=}}Podręcznik|nazwa jednostki 2{{=}}Szablon:Strona|numer jednostki{{=}}2}}}} (ale wtedy jest brana przestrzeń nazw z nazwy jednostki), ale o tym więcej w rozdziałach {{Code|{{sr|# p["Dyskusyjny typ jednostki 3"](frame,i)|p=Pudełko}}}} w „{{sr|#Funkcje typu jednostki|p=Pudełko}}”, one definiują przestrzenie dyskusji, ale można użyć parametru dyskusji typu jednostki z obojętnie jaką wartością niepustą, czy pustą, czy nawet jej nie podamy, wtedy wyświetli się nazwa przestrzeni nazw dyskusji. Jeżeli typ jednostki wskazuje na przestrzeń nazw główną, wtedy się liczą parametry nazw jednostek. Również parametry typu jednostki nie powinno się podawać w dziecku w ramce, tylko w rodzicu w szablonie jako parametry, w którym ta ramka jest wywoływana, ale tutaj podano jedynie dla przykładu, jak najłatwiej sprawdzić działanie tych parametrów tej funkcji. Najpierw w funkcji nagłówku brane są parametry nazw przestrzeni nazw, a jeżeli ich nie ma, to parametry typu jednostki, a jeżeli nie ma lub parametry przestrzenne wskazują na przestrzeń główną, i nie ma nazwy jednostki, to generowane są nazwy tej funkcji na podstawie aktualnej strony. == Funkcje pełnych nazw jednostki == === {{Code|p["Pełna nazwa dyskusji jednostki"](frame,i)}} === === {{Code|p["Pełna nazwa przedmiotowa jednostki"](frame,i)}} === === {{Code|p["Pełna nazwa jednostki"](frame,i)}} === == Funkcje pełnych nazw jednostki drugiej wersji == === {{Code|p["Pełna nazwa dyskusji jednostki 2"](frame,i)}} === === {{Code|p["Pełna nazwa przedmiotowa jednostki 2"](frame,i)}} === === {{Code|p["Pełna nazwa jednostki 2"](frame,i)}} === == Funkcje pełnych nazw jednostki trzeciej wersji == === {{Code|p["Pełna nazwa dyskusji jednostki 3"](frame,i)}} === === {{Code|p["Pełna nazwa przedmiotowa jednostki 3"](frame,i)}} === === {{Code|p["Pełna nazwa jednostki 3"](frame,i)}} === == Funkcje nazw jednostki == === {{Code|p["Nazwa jednostki"](frame,i)}} === == Funkcje nazw jednostki drugiej wersji == === {{Code|p["Nazwa jednostki 2"](frame,i)}} === === {{Code|p["Nazwa przedmiotowa jednostki 2"](frame,i)}} === === {{Code|p["Nazwa dyskusji jednostki 2"](frame,i)}} === == Funkcje nazw przestrzeni nazw trzeciej wersji == === {{Code|p["Nazwa przestrzeni nazw 3"](frame,i)}} === Funkcja pisze nazwę przestrzeni nazw, niezależnie, czy to jest przedmiotowa, czy dyskusji, według, i nie zawsze tylko, podanej w zmiennej {{Code|nazwa przestrzeni nazw}} dla pozycja bazowej w podanych parametrach szablonu rodzicu ramki dziecka, lub dla innej pozycji należy parametr podawać w formie {{Code|nazwa przestrzeni nazw 1}}, {{Code|Nazwa przestrzeni nazw 3}}, {{Code|nazwa przestrzeni nazw 3}},..., lub te parametry można podać w postaci ogólnej {{Code|nazwa przestrzeni nazw i}}. W tej funkcji trzeba też podawać parametry nazwy jednostek {{Code|nazwa jednostki}}, {{Code|nazwa jednostki 1}}, {{Code|nazwa jednostki 2}}, {{Code|nazwa jednostki 3}},... Parametry podaje się w parametrach rodzica wywołania tej funkcji {{Code|{{m|Pudełko|Nazwa przestrzeni nazw 3}}}} (ale ich nie trzeba podawać w dziecku, ale można) i w parametrach dziecka, jeśli chodzi o zmienną {{Code|numer jednostki}}, czyli np.: {{Code|{{m|Pudełko|Nazwa przestrzeni nazw 3|numer jednostki{{=}}<jakaś liczba całkowita dodatnia>}}}}. Te parametry przestrzenne zamiast w rodzicu w szablonie można podać w ramce dziecka, wtedy parametry dziecka mają pierwszeństwo. Przestrzeń nazw z parametrów nazw przestrzennych bazowych (bez numerka) może odpowiadać wartości przestrzeni głównej, to wtedy odpowiednia przestrzeń nazw z parametru nazwy jednostki się nie liczy w tej funkcji, aby się liczyła należy użyć funkcji {{Code|{{sr|#p["Nazwa przestrzeni nazw 2"](frame,...)|p=Pudełko}}}}. W tym przypadku funkcja działa jak {{Code|{{sr|#p["Nazwa przestrzeni nazw"](frame,...)|p=Pudełko}}}}. Przestrzeń nazw z parametrów nazw przestrzennych numerkowych może odpowiadać wartości przestrzeni głównej, to wtedy odpowiednia przestrzeń nazw z parametru nazwy jednostki się liczy w tej funkcji, wtedy jest liczona nazwa przestrzeni nazw z tego parametru. Gdy parametry przestrzenne lub typ jednostki w drugim podejściu nie wskazują na przestrzeń główną, to wtedy działanie tej funkcji jest podobne do {{Code|{{sr|#p["Nazwa przestrzeni nazw 2"](frame,...)|p=Pudełko}}}}. Definicja skrótowa funkcji: <syntaxhighlight lang="lua"> p["Nazwa przestrzeni nazw 3"]=function(frame,czy_uwzglednic_alternatywna_nazwe,i)...end; </syntaxhighlight> Wtedy ciało funkcji tej, czyli jego definicja w środku, jest: <syntaxhighlight lang="lua"> -- Jest liczony numer parametru nazwy przestrzeni nazw, domyslnie chodzi tu o numer bazowy parametrów przestrzennych; local numer_jednostki=i or frame.args["numer jednostki"]; local liczba_numeru_jednostki=((numer_jednostki)and(tonumber(numer_jednostki)) or 0); local pudelko_pomocne_modul=require("Module:Pudełko/Pomocne"); -- Liczy nazwę przestrzeni nazw dyskusji na podstawie podanych parametrów; return pudelko_pomocne_modul.Uzyskanie_nazw_jednostki(frame,0,liczba_numeru_jednostki,nil,2); </syntaxhighlight> Parametry funkcji: * {{Code|frame}} - tablica ramki tablicy transportu, * {{Code|czy_uwzglednic_alternatywna_nazwe}} - czy ma uwzględniać nazwę przestrzeni nazw domyślną szablonu, dostępne wartości: {{Code|false}}, w której nazwa domyślna nie jest uwzględniana wtedy, oraz {{Code|nil}} i {{Code|true}}, które oznaczają to samo, w tym jeżeli ona jest uwzględniana, wtedy jest brany parametr pierwszy dziecka, który musi istnieć przy takiej wartości tego parametru, tzn. {{Code|{{m|Pudełko|Nazwa przestrzeni nazw 3|Szablon}}}}, a jeśli nazwa uzyskana nazwy przestrzeni nazw jest w takim przypadku błędna, a jeżeli nazwa domyślna jest błędna, czyli {{Code|{{m|Pudełko|Nazwa przestrzeni nazw 3|Moja przestrzeń}}}}, wtedy funkcja zwraca stan błędu {{Code|(błąd)}}. * {{Code|i}} - numer zmiennej nazwy przestrzeni nazw. Funkcja wykorzystuje {{Code|{{sr|#p.Uzyskanie_nazw_jednostki(frame,...)|p=Pudełko/Pomocne}}}} do wyznaczania ogólnego nazwy przestrzeni nazw dla pozycji bazowej i numerkowej, tzn. dla pozycji: jeden, dwa, trzy,..., itd, i ich ogólnej. Parametr ramki tablicy transportu rodzica szablonu: * {{Code|nazwa przestrzeni nazw}}, {{Code|nazwa przestrzeni nazw 1}}, {{Code|Nazwa przestrzeni nazw 3}}, {{Code|nazwa przestrzeni nazw 3}},..., {{Code|nazwa przestrzeni nazw i}} - nazwy przestrzeni nazw dla pozycji bazowej oraz zwykłej i ogólnej numerkowej, * {{Code|nazwa jednostki}}, {{Code|nazwa jednostki 1}}, {{Code|nazwa jednostki 2}}, {{Code|nazwa jednostki 3}},... - nazwy jednostek dla pozycji bazowej i numerkowej, * {{Code|typ jednostki}}, {{Code|typ jednostki 1}}, {{Code|typ jednostki 2}}, {{Code|typ jednostki 3}},..., {{Code|typ jednostki i}} - typy jednostek, którym odpowiadają pewne przestrzenie przedmiotowe, dla pozycji bazowej, numerkowej i ogólnej, ** {{Code|dyskusja typu jednostki}}, {{Code|dyskusja typu jednostki 1}}, {{Code|dyskusja typ jednostki 2}}, {{Code|dyskusja typ jednostki 3}},..., {{Code|dyskusja typ jednostki i}} - czy dany typ jednostki ma przedstawiać, jeśli niepusta, przestrzeń dyskusji dla pozycji bazowej, numerkowej i ogólnej. Parametry ramki tablicy transportu dziecka: * Parametry dziecka są takie same jak rodzica dla funkcji pudełkowej plus tu wymienione, * {{Code|numer jednostki}} - jak parametr {{Code|i}} nie został ustawiony, to wtedy liczy się ta zmienna. Przykłady: <syntaxhighlight lang="mediawiki"> {{Nazwa szablonu 1|nazwa przestrzeni nazw=Wikibooks|nazwa przestrzeni nazw=|nazwa przestrzeni nazw i=|nazwa jednostki=Szablon:Strona}} ---- {{Nazwa szablonu 2|nazwa przestrzeni nazw=Wikibooks|nazwa przestrzeni nazw 1=Szablon|nazwa przestrzeni nazw i=|nazwa jednostki 2=Wikibooks:Strona}} </syntaxhighlight> W pierwszym wywołaniu {{Code|nazwa przestrzeni nazw}} jest puste, ale dla tego bazowego (bez numerka) szukamy przestrzeni nazw, a więc ta nazwa jest ostateczna. ---- W drugim wywołaniu w dziecku powiedzmy jest wywołanie, i szukamy nazwy przestrzeni nazw o numerze dwa, która została podana, ale istnieje za to jej wersji ogólna {{Code|nazwa przestrzeni nazw i}} i domyślna {{Code|nazwa przestrzeni nazw}}, ale wtedy dla tego numerkowego liczy się to ogólne z {{Code| i}}, a ponieważ ta nazwa jest pusta, więc będziemy liczyli nazwę przestrzeni nazw z {{Code|nazwa jednostki 2}}. Odpowiadająca powyższemu kodowi, powiedzmy wikikod, według ich zawartości, przedstawia się: <syntaxhighlight lang="mediawiki"> {{#invoke:Pudełko|Nazwa przestrzeni nazw 3}} ---- {{#invoke:Pudełko|Nazwa przestrzeni nazw 3|numer jednostki=2}} </syntaxhighlight> Na podstawie powyższego przykładu otrzymamy wynik o schemacie, nie wyniku, bo tam nie ma zmiennej {{Code|nazwa przestrzeni nazw 1}}, ale jest {{Code|nazwa przestrzeni nazw i}}: <syntaxhighlight lang="mediawiki"> <!-- nazwa przestrzeni nazw=""; --> <!-- Czyli wynik: --> <!-- wynik pusty --> <!-- Widzimy, że wygenerowała się nazwa przestrzeni nazw, którą jest przestrzeń nazw główna, jest ciągiem pustym: ""; --> ---- <!-- Ale nie "nazwa przestrzeni nazw 2", bo jej nie ma, ale za to istnieje "nazwa przestrzeni nazw i"; --> <!-- nazwa przestrzeni nazw 2=nazwa przestrzeni nazw i="", a nazwa jednostki 2="Wikibooks:Strona"; --> <!-- Czyli wynik: --> Wikibooks <!-- Widzimy, że wygenerowała się nazwa przestrzeni nazw, którą jest przestrzeń nieprogramowa, ale projektu, wychodząca z nazwy jednostek w tym przypadku z "nazwa jednostki 2"; --> </syntaxhighlight> Dla parametrów numerkowych nie jest brana w tym powyższym przykładzie zmienna {{Code|nazwa przestrzeni nazw 2}}, bo jej nie ma, ale za to jest {{Code|nazwa przestrzeni nazw i}}, bo ona występuje jako parametr domyślny ogólny dla parametrów numerkowych. Tytaj jest używana jest zmienna {{Code|nazwa jednostki 2}} do wygenerowania ostatecznego wyniku, bo jak można zauważyć, parametry przestrzenne wskazują na przestrzeń główną, a nazwy jednostek już nie. Dla parametrów bazowych mamy zmienną {{Code|nazwa przestrzeni nazw}}, ona jest pusta, więc to zostanie wziete do ostatecznego wyniku. Przykłady w wikikodzie: * {{Code|{{m|Pudełko|Nazwa przestrzeni nazw 3|Szablon|nazwa przestrzeni nazw{{=}}Moja przestrzeń|nazwa jednostki{{=}}Wikibooks:Strona}}}} → {{Tt|{{#invoke:Pudełko|Nazwa przestrzeni nazw 3|Szablon|nazwa przestrzeni nazw=Moja przestrzeń|nazwa jednostki=Wikibooks:Szablon}}}} * {{Code|{{m|Pudełko|Nazwa przestrzeni nazw 3|Szablon|nazwa przestrzeni nazw 2{{=}}Moja przestrzeń|nazwa jednostki 2{{=}}Wikibooks:Strona}|numer jednostki{{=}}2}}}} → {{Tt|{{#invoke:Pudełko|Nazwa przestrzeni nazw 3|Szablon|nazwa przestrzeni nazw 2=Moja przestrzeń|nazwa jednostki 2=Wikibooks:Szablon|numer jednostki=2}}}} * {{Code|{{m|Pudełko|Nazwa przestrzeni nazw 3|nazwa przestrzeni nazw{{=}}|nazwa jednostki{{=}}Wikibooks:Strona}}}} → {{Tt|{{#invoke:Pudełko|Nazwa przestrzeni nazw 3|nazwa przestrzeni nazw=|nazwa jednostki=Wikibooks:Szablon}}}} * {{Code|{{m|Pudełko|Nazwa przestrzeni nazw 3|nazwa przestrzeni nazw 2{{=}}|nazwa jednostki 2{{=}}Wikibooks:Strona|numer jednostki{{=}}2}}}} → {{Tt|{{#invoke:Pudełko|Nazwa przestrzeni nazw 3|nazwa przestrzeni nazw 2=|nazwa jednostki 2=Wikibooks:Szablon|numer jednostki=2}}}} Powyżej dla przykładu podano parametry nie w rodzicu w szablonie, tylko w dziecku, jeśli chodzi o parametry nazw przestrzeni nazw i nazw jednostek, ale ich się za to nie powinno podawać w tych ramach, tylko w szablonach, w których wywoływane są te ramki pudełek {{Code|{{m|Pudełko}}}}, ale tak tutaj tak zrobiono by było najłatwiej sprawdzić działanie tego typu funkcji. Analogicznie możemy podawać parametry typu jednostki, np.: wywołaniu modułowym {{Code|{{m|Pudełko|Nazwa przestrzeni nazw 3|typ jednostki 2{{=}}Podręcznik|nazwa jednostki 2{{=}}Szablon:Strona|numer jednostki{{=}}2}}}} (ale wtedy jest brana przestrzeń nazw z nazwy jednostki), ale o tym więcej w rozdziałach {{Code|{{sr|#p["Typ jednostki 3"](frame,i)|p=Pudełko}}}} w „{{sr|#Funkcje typu jednostki|p=Pudełko}}”, on definiuje przestrzenie przedmiotowe, ale można użyć parametru dyskusji typu jednostki z wartością niepustą, wtedy wyświetli się nazwa przestrzeni nazw dyskusji. Jeżeli typ jednostki bazowy wskazuje na przestrzeń nazw główną, wtedy się nie liczą parametry nazw jednostek, a na numerkowy, wtedy się liczy. Również parametry typu jednostki nie powinno się podawać w dziecku w ramce, tylko w rodzicu w szablonie jako parametry, w którym ta ramka jest wywoływana, ale tutaj podano jedynie dla przykładu, jak najłatwiej sprawdzić działanie tych parametrów tej funkcji. Najpierw w funkcji nagłówku brane są parametry nazw przestrzeni nazw, a jeżeli ich nie ma, to parametry typu jednostki, a jeżeli nie ma lub parametry przestrzenne wskazują na przestrzeń główną, i nie ma nazwy jednostki, to generowane są nazwy tej funkcji na podstawie aktualnej strony. === {{Code|p["Nazwa przedmiotowej przestrzeni nazw 3"](frame,i)}} === Funkcja pisze przedmiotową nazwę przestrzeni nazw jakikolwiek nazwy przestrzeni nazw (tzn. nazwę przedmiotową nazwy przestrzenie nazw, czyli nie dyskusji, zamieniana jest na nią samą, czyli identyfikator przestrzeni się nie zmienia, a dyskusji, nie przedmiotową, przekształca się na przedmiotową jej odpowiadającą, czyli w tym przypadku identyfikator przestrzeni zmniejsza się o numer mniej), według podanej w zmiennej {{Code|nazwa przestrzeni nazw}} dla pozycja bazowej w podanych parametrach szablonu rodzicu ramki dziecka, lub dla innej pozycji należy parametr podawać w formie {{Code|nazwa przestrzeni nazw 1}}, {{Code|nazwa przestrzeni nazw 2}}, {{Code|nazwa przestrzeni nazw 3}},..., lub te parametry można podać w postaci ogólnej {{Code|nazwa przestrzeni nazw i}}. Parametry podaje się w parametrach rodzica wywołania tej funkcji {{Code|{{m|Pudełko|Nazwa przedmiotowej przestrzeni nazw 3}}}} (ale ich nie trzeba podawać w dziecku, ale można) i w parametrach dziecka, jeśli chodzi o zmienną {{Code|numer jednostki}}, czyli np.: {{Code|{{m|Pudełko|Nazwa przedmiotowej przestrzeni nazw 3|numer jednostki{{=}}<jakaś liczba całkowita dodatnia>}}}}. Te parametry przestrzenne zamiast w rodzicu w szablonie można podać w ramce dziecka, wtedy parametry dziecka mają pierwszeństwo. Parametry przestrzenne mogą mogą być podane w postaci przestrzeni przedmiotowej lub dyskusji, ale ta funkcja zawsze ją zamienia na przedmiotową. Przestrzeń nazw z parametrów nazw przestrzennych bazowych (bez numerka) może odpowiadać wartości przestrzeni głównej, to wtedy odpowiednia przestrzeń nazw z parametru nazwy jednostki się nie liczy w tej funkcji, aby się liczyła należy użyć funkcji {{Code|{{sr|#p["Nazwa przedmiotowej przestrzeni nazw 2"](frame,...)|p=Pudełko}}}}. W tym przypadku funkcja działa jak {{Code|{{sr|#p["Nazwa przedmiotowej przestrzeni nazw"](frame,...)|p=Pudełko}}}}. Przestrzeń nazw z parametrów nazw przestrzennych numerkowych może odpowiadać wartości przestrzeni głównej, to wtedy odpowiednia przestrzeń nazw z parametru nazwy jednostki się liczy w tej funkcji, wtedy jest liczona nazwa przestrzeni nazw z tego parametru. Gdy parametry przestrzenne lub typ jednostki w drugim podejściu nie wskazują na przestrzeń główną, to wtedy działanie tej funkcji jest podobne do {{Code|{{sr|#p["Nazwa przedmiotowej przestrzeni nazw 2"](frame,...)|p=Pudełko}}}}. Definicja skrótowa funkcji: <syntaxhighlight lang="lua"> p["Nazwa przedmiotowej przestrzeni nazw 3"]=function(frame,czy_uwzglednic_alternatywna_nazwe,i)...end; </syntaxhighlight> Wtedy ciało funkcji tej, czyli jego definicja w środku, jest: <syntaxhighlight lang="lua"> -- Jest liczony numer parametru nazwy przestrzeni nazw, domyslnie chodzi tu o numer bazowy parametrów przestrzennych; local numer_jednostki=i or frame.args["numer jednostki"]; local liczba_numeru_jednostki=((numer_jednostki)and(tonumber(numer_jednostki)) or 0); local pudelko_pomocne_modul=require("Module:Pudełko/Pomocne"); -- Liczy nazwę przestrzeni nazw przedmiotową na podstawie podanych parametrów; return pudelko_pomocne_modul.Uzyskanie_nazw_jednostki(frame,1,liczba_numeru_jednostki,nil,1); </syntaxhighlight> Parametry funkcji: * {{Code|frame}} - tablica ramki tablicy transportu, * {{Code|czy_uwzglednic_alternatywna_nazwe}} - czy ma uwzględniać nazwę przestrzeni nazw domyślną szablonu, dostępne wartości: {{Code|false}}, w której nazwa domyślna nie jest uwzględniana wtedy, oraz {{Code|nil}} i {{Code|true}}, które oznaczają to samo, w tym jeżeli ona jest uwzględniana, wtedy jest brany parametr pierwszy dziecka, który musi istnieć przy takiej wartości tego parametru, tzn. {{Code|{{m|Pudełko|Nazwa przedmiotowej przestrzeni nazw 3|Dyskusja szablonu}}}} - ta nazwa domyślna zostanie zamieniona na przedmiotową, a jak ona by była przedmiotowa, to żadnej zamiany by nie było, a nazwa uzyskana z nazwy przestrzeni nazw z parametrów przestrzennych jest w takim przypadku błędna, to w takim razie brany jest ten parametr, a jeżeli ta nazwa domyślna jest błędna, czyli {{Code|{{m|Pudełko|Nazwa przedmiotowej przestrzeni nazw 3|Moja przestrzeń}}}}, wtedy funkcja zwraca stan błędu {{Code|(błąd)}}. * {{Code|i}} - numer zmiennej nazwy przestrzeni nazw. Funkcja wykorzystuje {{Code|{{sr|#p.Uzyskanie_nazw_jednostki(frame,...)|p=Pudełko/Pomocne}}}} do wyznaczania ogólnego nazwy przestrzeni nazw dla pozycji bazowej i numerkowej, tzn. dla pozycji: jeden, dwa, trzy,..., itd, i ich ogólnej. Parametr ramki tablicy transportu rodzica szablonu: * {{Code|nazwa przestrzeni nazw}}, {{Code|nazwa przestrzeni nazw 1}}, {{Code|nazwa przestrzeni nazw 2}}, {{Code|nazwa przestrzeni nazw 3}},..., {{Code|nazwa przestrzeni nazw i}} - nazwy przestrzeni nazw dla pozycji bazowej oraz zwykłej i ogólnej numerkowej, * {{Code|typ jednostki}}, {{Code|typ jednostki 1}}, {{Code|typ jednostki 2}}, {{Code|typ jednostki 3}},..., {{Code|typ jednostki i}} - typy jednostek, którym odpowiadają pewne przestrzenie przedmiotowe, dla pozycji bazowej, numerkowej i ogólnej. Parametry ramki tablicy transportu dziecka: * Parametry dziecka są takie same jak rodzica dla funkcji pudełkowej plus tu wymienione, * {{Code|numer jednostki}} - jak parametr {{Code|i}} nie został ustawiony, to wtedy liczy się ta zmienna. Przykłady: <syntaxhighlight lang="mediawiki"> {{Nazwa szablonu 1|nazwa przestrzeni nazw=Wikibooks|nazwa przestrzeni nazw=|nazwa przestrzeni nazw i=|nazwa jednostki=Dyskusja Wikibooks:Strona}} ---- {{Nazwa szablonu 2|nazwa przestrzeni nazw=Wikibooks|nazwa przestrzeni nazw 1=Szablon|nazwa przestrzeni nazw i=|nazwa jednostki 2=Dyskusja Wikibooks:Strona}} </syntaxhighlight> W pierwszym wywołaniu {{Code|nazwa przestrzeni nazw}} jest puste, ale dla tego bazowego (bez numerka) szukamy przestrzeni nazw, a więc ta nazwa jest ostateczna. ---- W drugim wywołaniu w dziecku powiedzmy jest wywołanie, i szukamy nazwy przestrzeni nazw o numerze dwa, która została podana, ale istnieje za to jej wersji ogólna {{Code|nazwa przestrzeni nazw i}} i domyślna {{Code|nazwa przestrzeni nazw}}, ale wtedy dla tego numerkowego liczy się to ogólne z {{Code| i}}, a ponieważ ta nazwa jest pusta, więc będziemy liczyli nazwę przestrzeni nazw z {{Code|nazwa jednostki 2}}. Odpowiadająca powyższemu kodowi, powiedzmy wikikod, według ich zawartości, przedstawia się: <syntaxhighlight lang="mediawiki"> {{#invoke:Pudełko|Nazwa przedmiotowej przestrzeni nazw 3}} ---- {{#invoke:Pudełko|Nazwa przedmiotowej przestrzeni nazw 3|numer jednostki=2}} </syntaxhighlight> Na podstawie powyższego przykładu otrzymamy wynik o schemacie, nie wyniku, bo tam nie ma zmiennej {{Code|nazwa przestrzeni nazw 1}}, ale jest {{Code|nazwa przestrzeni nazw i}}: <syntaxhighlight lang="mediawiki"> <!-- nazwa przestrzeni nazw=""; --> <!-- Czyli wynik: --> <!-- wynik pusty --> <!-- Widzimy, że wygenerowała się nazwa przestrzeni nazw, którą jest przestrzeń nazw główna, jest ciągiem pustym: ""; --> ---- <!-- Ale nie "nazwa przestrzeni nazw 2", bo jej nie ma, ale za to istnieje "nazwa przestrzeni nazw i"; --> <!-- nazwa przestrzeni nazw 2=nazwa przestrzeni nazw i="", a nazwa jednostki 2="Dyskusja Wikibooks:Strona"; --> <!-- Czyli wynik: --> Wikibooks <!-- Widzimy, że wygenerowała się nazwa przestrzeni nazw, którą jest przestrzeń nieprogramowa, ale projektu, wychodząca z nazwy jednostek w tym przypadku z "nazwa jednostki 2"; --> </syntaxhighlight> Dla parametrów numerkowych nie jest brana w tym powyższym przykładzie zmienna {{Code|nazwa przestrzeni nazw 2}}, bo jej nie ma, ale za to jest {{Code|nazwa przestrzeni nazw i}}, bo ona występuje jako parametr domyślny ogólny dla parametrów numerkowych. Tytaj jest używana jest zmienna {{Code|nazwa jednostki 2}} do wygenerowania ostatecznego wyniku, bo jak można zauważyć, parametry przestrzenne wskazują na przestrzeń główną, a nazwy jednostek już nie. Dla parametrów bazowych mamy zmienną {{Code|nazwa przestrzeni nazw}}, ona jest pusta, więc to zostanie wziete do ostatecznego wyniku. Przykłady w wikikodzie: * {{Code|{{m|Pudełko|Nazwa przedmiotowej przestrzeni nazw 3|Dyskusja szablonu|nazwa przestrzeni nazw{{=}}Moja przestrzeń|nazwa jednostki{{=}}Dyskusja Wikibooks:Strona}}}} → {{Tt|{{#invoke:Pudełko|Nazwa przedmiotowej przestrzeni nazw 3|Dyskusja szablonu|nazwa przestrzeni nazw=Moja przestrzeń||nazwa jednostki=Dyskusja Wikibooks:Szablon}}}} * {{Code|{{m|Pudełko|Nazwa przedmiotowej przestrzeni nazw 3|Dyskusja szablonu|nazwa przestrzeni nazw 2{{=}}Moja przestrzeń|nazwa jednostki 2{{=}}Dyskusja Wikibooks:Strona|numer jednostki{{=}}2}}}} → {{Tt|{{#invoke:Pudełko|Nazwa przedmiotowej przestrzeni nazw 3|Dyskusja szablonu|nazwa przestrzeni nazw 2=Moja przestrzeń||nazwa jednostki 2=Dyskusja Wikibooks:Szablon|numer jednostki=2}}}} * {{Code|{{m|Pudełko|Nazwa przedmiotowej przestrzeni nazw 3|nazwa przestrzeni nazw{{=}}|nazwa jednostki{{=}}Dyskusja Wikibooks:Strona}}}} → {{Tt|{{#invoke:Pudełko|Nazwa przedmiotowej przestrzeni nazw 3|nazwa przestrzeni nazw=|nazwa jednostki=Dyskusja Wikibooks:Szablon}}}} * {{Code|{{m|Pudełko|Nazwa przedmiotowej przestrzeni nazw 3|nazwa przestrzeni nazw 2{{=}}|nazwa jednostki 2{{=}}Dyskusja Wikibooks:Strona|numer jednostki{{=}}2}}}} → {{Tt|{{#invoke:Pudełko|Nazwa przedmiotowej przestrzeni nazw 3|nazwa przestrzeni nazw 2=|nazwa jednostki 2=Dyskusja Wikibooks:Szablon|numer jednostki=2}}}} Powyżej dla przykładu podano parametry nie w rodzicu w szablonie, tylko w dziecku, jeśli chodzi o parametry nazw przestrzeni nazw, ale ich się za to nie powinno podawać w tych ramach, tylko w szablonach, w których wywoływane są te ramki pudełek {{Code|{{m|Pudełko}}}}, ale tak tutaj tak zrobiono by było najłatwiej sprawdzić działanie tego typu funkcji. Analogicznie możemy podawać parametry typu jednostki, np.: wywołaniu modułowym {{Code|{{m|Pudełko|Nazwa przedmiotowej przestrzeni nazw 3|typ jednostki 2{{=}}strona szablonu|numer jednostki{{=}}2}}}}, ale o tym więcej w rozdziałach {{Code|{{sr|# p["Przedmiotowy typ jednostki 3"](frame,i)|p=Pudełko}}}} w „{{sr|#Funkcje typu jednostki|p=Pudełko}}”, ale wtedy ta sama nazwa przestrzeni nazw reprezentowana przez {{Parametr|typ jednostki 2|strona szablonu}}, jest zamieniana na to samo, lepiej jest tutaj używać parametrów przestrzennych nazw niż typu jednostki, bo typ jednostki ma taką samą wartość dla przestrzeni przedmiotowej, co dyskusji. Tutaj parametr dyskusji typu jednostki bazowy i numerkowy ogólny, czy szczegółowy, nie gra roli, bo nawet, gdy wygenerujemy nazwę przestrzeni dyskusji za pomoca tego parametru, to i tak otrzymamy na samym końcu jego nazwę przedmiotową. Jeżeli typ jednostki bazowy wskazuje na przestrzeń nazw główną, wtedy się nie liczą parametry nazw jednostek, a na numerkowy, wtedy się liczy. Również parametry typu jednostki nie powinno się podawać w dziecku w ramce, tylko w rodzicu w szablonie jako parametry, w którym ta ramka jest wywoływana, ale tutaj podano jedynie dla przykładu, jak najłatwiej sprawdzić działanie tych parametrów tej funkcji. Najpierw w funkcji nagłówku brane są parametry nazw przestrzeni nazw, a jeżeli ich nie ma, to parametry typu jednostki, a jeżeli nie ma, to generowane są nazwy na podstawie aktualnego modułu. === {{Code|p["Nazwa przestrzeni nazw dyskusji 3"](frame,i)}} === Funkcja pisze nazwę przestrzeni nazw dyskusji jakikolwiek nazwy przestrzeni nazw (tzn. nazwę dyskusji nazwy przestrzenie nazw, czyli nie przedmiotowej, zamieniana jest na nią samą, czyli identyfikator przestrzeni się nie zmienia, a przedmiotową, nie dyskusji, przekształca się na dyskusji jej odpowiadającą, czyli w tym przypadku identyfikator przestrzeni zwiększa się o numer więcej), według, i nie zawsze tylko, podanej w zmiennej {{Code|nazwa przestrzeni nazw}} dla pozycja bazowej w podanych parametrach szablonu rodzicu ramki dziecka, lub dla innej pozycji należy parametr podawać w formie {{Code|nazwa przestrzeni nazw 1}}, {{Code|nazwa przestrzeni nazw 2}}, {{Code|nazwa przestrzeni nazw 3}},..., lub te parametry można podać w postaci ogólnej {{Code|nazwa przestrzeni nazw i}}. W tej funkcji trzeba też podawać parametry nazwy jednostek {{Code|nazwa jednostki}}, {{Code|nazwa jednostki 1}}, {{Code|nazwa jednostki 2}}, {{Code|nazwa jednostki 3}},... Parametry podaje się w parametrach rodzica wywołania tej funkcji {{Code|{{m|Pudełko|Nazwa przestrzeni nazw dyskusji 3}}}} (ale ich nie trzeba podawać w dziecku, ale można) i w parametrach dziecka, jeśli chodzi o zmienną {{Code|numer jednostki}}, czyli np.: {{Code|{{m|Pudełko|Nazwa przestrzeni nazw dyskusji 3|numer jednostki{{=}}<jakaś liczba całkowita dodatnia>}}}}. Te parametry przestrzenne zamiast w rodzicu w szablonie można podać w ramce dziecka, wtedy parametry dziecka mają pierwszeństwo. Przestrzeń nazw z parametrów nazw przestrzennych bazowych (bez numerka) może odpowiadać wartości przestrzeni głównej, to wtedy odpowiednia przestrzeń nazw z parametru nazwy jednostki się nie liczy w tej funkcji, aby się liczyła należy użyć funkcji {{Code|{{sr|#p["Nazwa przestrzeni nazw dyskusji 2"](frame,...)|p=Pudełko}}}}. W tym przypadku funkcja działa jak {{Code|{{sr|#p["Nazwa przestrzeni nazw dyskusji"](frame,...)|p=Pudełko}}}}. Przestrzeń nazw z parametrów nazw przestrzennych numerkowych może odpowiadać wartości przestrzeni głównej, to wtedy odpowiednia przestrzeń nazw z parametru nazwy jednostki się liczy w tej funkcji, wtedy jest liczona nazwa przestrzeni nazw z tego parametru. Gdy parametry przestrzenne lub typ jednostki w drugim podejściu nie wskazują na przestrzeń główną, to wtedy działanie tej funkcji jest podobne do {{Code|{{sr|#p["Nazwa przestrzeni nazw dyskusji 2"](frame,...)|p=Pudełko}}}}. Definicja skrótowa funkcji: <syntaxhighlight lang="lua"> p["Nazwa przestrzeni nazw dyskusji 3"]=function(frame,czy_uwzglednic_alternatywna_nazwe,i)...end; </syntaxhighlight> Wtedy ciało funkcji tej, czyli jego definicja w środku, jest: <syntaxhighlight lang="lua"> -- Jest liczony numer parametru nazwy przestrzeni nazw, domyslnie chodzi tu o numer bazowy parametrów przestrzennych; local numer_jednostki=i or frame.args["numer jednostki"]; local liczba_numeru_jednostki=((numer_jednostki)and(tonumber(numer_jednostki)) or 0); local pudelko_pomocne_modul=require("Module:Pudełko/Pomocne"); -- Liczy nazwę przestrzeni nazw dyskusji na podstawie podanych parametrów; return pudelko_pomocne_modul.Uzyskanie_nazw_jednostki(frame,2,liczba_numeru_jednostki,nil,1); </syntaxhighlight> Parametry funkcji: * {{Code|frame}} - tablica ramki tablicy transportu, * {{Code|czy_uwzglednic_alternatywna_nazwe}} - czy ma uwzględniać nazwę przestrzeni nazw domyślną szablonu, dostępne wartości: {{Code|false}}, w której nazwa domyślna nie jest uwzględniana wtedy, oraz {{Code|nil}} i {{Code|true}}, które oznaczają to samo, w tym jeżeli ona jest uwzględniana, wtedy jest brany parametr pierwszy dziecka, który musi istnieć przy takiej wartości tego parametru, tzn. {{Code|{{m|Pudełko|Nazwa przestrzeni nazw dyskusji 3|Szablon}}}}, nazwa domyślna zostatnie zamieniona na dyskusji, a jeśli jest już taka, to takiej transfomacji nie ma, a jeśli nazwa uzyskana nazwy przestrzeni nazw jest w takim przypadku błędna, a jeżeli nazwa domyślna jest błędna, czyli {{Code|{{m|Pudełko|Nazwa przestrzeni nazw dyskusji 3|Moja przestrzeń}}}}, wtedy funkcja zwraca stan błędu {{Code|(błąd)}}. * {{Code|i}} - numer zmiennej nazwy przestrzeni nazw. Funkcja wykorzystuje {{Code|{{sr|#p.Uzyskanie_nazw_jednostki(frame,...)|p=Pudełko/Pomocne}}}} do wyznaczania ogólnego nazwy przestrzeni nazw dla pozycji bazowej i numerkowej, tzn. dla pozycji: jeden, dwa, trzy,..., itd, i ich ogólnej. Parametr ramki tablicy transportu rodzica szablonu: * {{Code|nazwa przestrzeni nazw}}, {{Code|nazwa przestrzeni nazw 1}}, {{Code|nazwa przestrzeni nazw 2}}, {{Code|nazwa przestrzeni nazw 3}},..., {{Code|nazwa przestrzeni nazw i}} - nazwy przestrzeni nazw dla pozycji bazowej oraz zwykłej i ogólnej numerkowej, * {{Code|nazwa jednostki}}, {{Code|nazwa jednostki 1}}, {{Code|nazwa jednostki 2}}, {{Code|nazwa jednostki 3}},... - nazwy jednostek dla pozycji bazowej i numerkowej, * {{Code|typ jednostki}}, {{Code|typ jednostki 1}}, {{Code|typ jednostki 2}}, {{Code|typ jednostki 3}},..., {{Code|typ jednostki i}} - typy jednostek, którym odpowiadają pewne przestrzenie przedmiotowe, dla pozycji bazowej, numerkowej i ogólnej. Parametry ramki tablicy transportu dziecka: * Parametry dziecka są takie same jak rodzica dla funkcji pudełkowej plus tu wymienione, * {{Code|numer jednostki}} - jak parametr {{Code|i}} nie został ustawiony, to wtedy liczy się ta zmienna. Przykłady: <syntaxhighlight lang="mediawiki"> {{Nazwa szablonu 1|nazwa przestrzeni nazw=Wikibooks|nazwa przestrzeni nazw=|nazwa przestrzeni nazw i=|nazwa jednostki=Szablon:Strona}} ---- {{Nazwa szablonu 2|nazwa przestrzeni nazw=Wikibooks|nazwa przestrzeni nazw 1=Szablon|nazwa przestrzeni nazw i=|nazwa jednostki 2=Wikibooks:Strona}} </syntaxhighlight> W pierwszym wywołaniu {{Code|nazwa przestrzeni nazw}} jest puste, ale dla tego bazowego (bez numerka) szukamy przestrzeni nazw, a więc ta nazwa jest ostateczna. ---- W drugim wywołaniu w dziecku powiedzmy jest wywołanie, i szukamy nazwy przestrzeni nazw o numerze dwa, która została podana, ale istnieje za to jej wersji ogólna {{Code|nazwa przestrzeni nazw i}} i domyślna {{Code|nazwa przestrzeni nazw}}, ale wtedy dla tego numerkowego liczy się to ogólne z {{Code| i}}, a ponieważ ta nazwa jest pusta, więc będziemy liczyli nazwę przestrzeni nazw z {{Code|nazwa jednostki 2}}. Odpowiadająca powyższemu kodowi, powiedzmy wikikod, według ich zawartości, przedstawia się: <syntaxhighlight lang="mediawiki"> {{#invoke:Pudełko|Nazwa przestrzeni nazw 3}} ---- {{#invoke:Pudełko|Nazwa przestrzeni nazw 3|numer jednostki=2}} </syntaxhighlight> Na podstawie powyższego przykładu otrzymamy wynik o schemacie, nie wyniku, bo tam nie ma zmiennej {{Code|nazwa przestrzeni nazw 1}}, ale jest {{Code|nazwa przestrzeni nazw i}}: <syntaxhighlight lang="mediawiki"> <!-- nazwa przestrzeni nazw=""; --> <!-- Czyli wynik: --> Dyskusja <!-- Widzimy, że wygenerowała się nazwa przestrzeni nazw, którą jest przestrzeń nazw niegłówna, jest ciągiem niepustym; --> ---- <!-- Ale nie "nazwa przestrzeni nazw 2", bo jej nie ma, ale za to istnieje "nazwa przestrzeni nazw i"; --> <!-- nazwa przestrzeni nazw 2=nazwa przestrzeni nazw i="", a nazwa jednostki 2="Wikibooks:Strona"; --> <!-- Czyli wynik: --> Dyskusja Wikibooks <!-- Widzimy, że wygenerowała się nazwa przestrzeni nazw, którą jest przestrzeń nieprogramowa, ale projektu, wychodząca z nazwy jednostek w tym przypadku z "nazwa jednostki 2"; --> </syntaxhighlight> Dla parametrów numerkowych nie jest brana w tym powyższym przykładzie zmienna {{Code|nazwa przestrzeni nazw 2}}, bo jej nie ma, ale za to jest {{Code|nazwa przestrzeni nazw i}}, bo ona występuje jako parametr domyślny ogólny dla parametrów numerkowych. Tytaj jest używana jest zmienna {{Code|nazwa jednostki 2}} do wygenerowania ostatecznego wyniku, bo jak można zauważyć, parametry przestrzenne wskazują na przestrzeń główną, a nazwy jednostek już nie. Dla parametrów bazowych mamy zmienną {{Code|nazwa przestrzeni nazw}}, ona jest pusta, więc to zostanie wziete do ostatecznego wyniku. Przykłady w wikikodzie: * {{Code|{{m|Pudełko|Nazwa przestrzeni nazw dyskusji 3|Szablon|nazwa przestrzeni nazw{{=}}Moja przestrzeń|nazwa jednostki{{=}}Wikibooks:Strona}}}} → {{Tt|{{#invoke:Pudełko|Nazwa przestrzeni nazw dyskusji 3|Szablon|nazwa przestrzeni nazw=Moja przestrzeń|nazwa jednostki=Wikibooks:Szablon}}}} * {{Code|{{m|Pudełko|Nazwa przestrzeni nazw dyskusji 3|Szablon|nazwa przestrzeni nazw 2{{=}}Moja przestrzeń|nazwa jednostki 2{{=}}Wikibooks:Strona|numer jednostki{{=}}2}}}} → {{Tt|{{#invoke:Pudełko|Nazwa przestrzeni nazw dyskusji 3|Szablon|nazwa przestrzeni nazw 2=Moja przestrzeń|nazwa jednostki 2=Wikibooks:Szablon|numer jednostki=2}}}} * {{Code|{{m|Pudełko|Nazwa przestrzeni nazw dyskusji 3|nazwa przestrzeni nazw{{=}}|nazwa jednostki{{=}}Wikibooks:Strona}}}} → {{Tt|{{#invoke:Pudełko|Nazwa przestrzeni nazw dyskusji 3|nazwa przestrzeni nazw=|nazwa jednostki=Wikibooks:Szablon}}}} * {{Code|{{m|Pudełko|Nazwa przestrzeni nazw dyskusji 3|nazwa przestrzeni nazw 2{{=}}|nazwa jednostki 2{{=}}Wikibooks:Strona|numer jednostki{{=}}2}}}} → {{Tt|{{#invoke:Pudełko|Nazwa przestrzeni nazw dyskusji 3|nazwa przestrzeni nazw 2=|nazwa jednostki 2=Wikibooks:Szablon|numer jednostki=2}}}} Powyżej dla przykładu podano parametry nie w rodzicu w szablonie, tylko w dziecku, jeśli chodzi o parametry nazw przestrzeni nazw i nazw jednostek, ale ich się za to nie powinno podawać w tych ramach, tylko w szablonach, w których wywoływane są te ramki pudełek {{Code|{{m|Pudełko}}}}, ale tak tutaj tak zrobiono by było najłatwiej sprawdzić działanie tego typu funkcji. Analogicznie możemy podawać parametry typu jednostki, np.: wywołaniu modułowym {{Code|{{m|Pudełko|Nazwa przestrzeni nazw dyskusji 3|typ jednostki 2{{=}}Podręcznik|nazwa jednostki 2{{=}}Szablon:Strona|numer jednostki{{=}}2}}}} (ale wtedy jest brana przestrzeń nazw z nazwy jednostki), ale o tym więcej w rozdziałach {{Code|{{sr|# p["Dyskusyjny typ jednostki 3"](frame,i)|p=Pudełko}}}} w „{{sr|#Funkcje typu jednostki|p=Pudełko}}”, one definiują przestrzenie dyskusji, ale można użyć parametru dyskusji typu jednostki z obojętnie jaką wartością niepustą, czy pustą, czy nawet jej nie podamy, wtedy wyświetli się nazwa przestrzeni nazw dyskusji. Jeżeli typ jednostki bazowy wskazuje na przestrzeń nazw główną, wtedy się nie liczą parametry nazw jednostek, a na numerkowy, wtedy się liczy. Również parametry typu jednostki nie powinno się podawać w dziecku w ramce, tylko w rodzicu w szablonie jako parametry, w którym ta ramka jest wywoływana, ale tutaj podano jedynie dla przykładu, jak najłatwiej sprawdzić działanie tych parametrów tej funkcji. Najpierw w funkcji nagłówku brane są parametry nazw przestrzeni nazw, a jeżeli ich nie ma, to parametry typu jednostki, a jeżeli nie ma lub parametry przestrzenne wskazują na przestrzeń główną, i nie ma nazwy jednostki, to generowane są nazwy tej funkcji na podstawie aktualnej strony. == Funkcje nazw jednostki trzeciej wersji == === {{Code|p["Nazwa jednostki 3"](frame,i)}} === === {{Code|p["Nazwa przedmiotowa jednostki 3"](frame,i)}} === === {{Code|p["Nazwa dyskusji jednostki 3"](frame,i)}} === == Funkcje typu jednostki == === {{Code|p["Typ jednostki"](frame,i)}} === === {{Code|p["Typ jednostki 2"](frame,i)}} === === {{Code|p["Typ jednostki 3"](frame,i)}} === === Funkcje typu jednostki przedmiotowe === ==== {{Code|p["Przedmiotowy typ jednostki"](frame,i)}} ==== ==== {{Code|p["Przedmiotowy typ jednostki 2"](frame,i)}} ==== ==== {{Code|p["Przedmiotowy typ jednostki 3"](frame,i)}} ==== === Fukcje typu jednostki dyskusji === ==== {{Code|p["Dyskusyjny typ jednostki"](frame,i)}} ==== ==== {{Code|p["Dyskusyjny typ jednostki 2"](frame,i)}} ==== ==== {{Code|p["Dyskusyjny typ jednostki 3"](frame,i)}} ==== == Funkcje chech pudełka == === {{Code|p["Cecha pudełka"](frame)}} === === {{Code|p["Przedmiotowa cecha pudełka"](frame)}} === === {{Code|p["Dyskusyjna cecha pudełka"](frame)}} === == Fukcje ogólnego pudełka == === {{Code|p["Ogólne pudełko"](frame)}} === == Funkcje ogólne == === {{Code|p["Tekst pudełka"](frame)}} === == Funkcje błędów pudełka == === {{Code|p["Błędy pudełka"](frame)}} === === {{Code|p["Przedmiotowe błędy pudełka"](frame)}} === === {{Code|p["Dyskusyjne błędy pudełka"](frame)}} === == Funkcje nazw stron == === {{Code|p["Nazwa strony głównej projektu"](frame,i)}} === === {{Code|p["Nazwa strony głównej dla dzieci projektu"](frame,i)}} === == Funkcje kodów == === {{Code|p["Kod języka"](frame,i)}} === === {{Code|p["Kod projektu"](frame,i)}} === === {{Code|p["Klucz projektu"](frame,i)}} === == Funkcje wiki == === {{Code|p["Inny niż język bieżący wiki"](frame)}} === === {{Code|p["Inne niż lokalne wiki"](frame)}} === === {{Code|p["Inne niż bieżące wiki"](frame)}} === == Funkcje typów parametrów, czy podane je == === {{Code|p["Podano parametry nienazwane"](frame)}} === === {{Code|p["Podano parametry numerowane"](frame)}} === === {{Code|p["Podano parametry nazwane"](frame)}} === == Funkcje kodów tego projektu == === {{Code|p["Kod projektu tego projektu"](frame)}} === === {{Code|p["Kod języka tego projektu"](frame)}} === === {{Code|p["Klucz projektu tego projektu"](frame)}} === == Funkcje stron == === {{Code|p["Strona główna tego projektu"](frame)}} === === {{Code|p["Strona główna dla dzieci tego projektu"](frame)}} === == Funkcje nazw stron drugiej wersji == === {{Code|p["Nazwa strony głównej dla dzieci projektu 2"](frame)}} === === {{Code| p["Nazwa strony głównej projektu 2"](frame)}} === {{BrClear}} <noinclude><!-- -->{{ProstaStronaKoniec}}<!-- -->{{Kategoria|Opisy funkcji, w Lua w Scribunto, w modułach}}<!-- --></noinclude> iikaj2ajuzhfjm9o2g7mi4125t4bq56 540458 540457 2026-04-24T06:02:24Z Persino 2851 /* {{Code|p["Nazwa przedmiotowej przestrzeni nazw 2"](frame,...)}} */ 540458 wikitext text/x-wiki <noinclude>{{ProstaStronaStart | nagłówek = {{Podrozdział|{{ld2|Pudełko}}|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 pudelko_modul=require("Module:Pudełko"); </syntaxhighlight> dzięki, któremu można wypisywać funkcje należącego do niego. Posługuje się na parametrach pudełkowych {{Parametr|nazwa przestrzeni nazw}} (czy też bez numerka {{Parametr|nazwa przestrzeni nazw i}} dla tego numerowanego) lub te z numerkiem po jednej spacji w nich (ale nie dla tego z końcówką {{Code| i}}) mogą zostać użyte jako parametry szablonu. Moduł {{Code|{{ld2|Pudełko}}}} przedstawia funkcje nazw w oparciu o funkcje nazw {{Code|{{ld2|Nazwy}}}}, generuje on nazwy za pomocą parametrów pudełkowych podanych poniżej. Parametr {{Parametr|nazwa jednostki}} (lub parametr {{Parametr|cel}} dla numerka tego pierwszego, tego alternatywnego), lub te z numerkiem po jednej spacji w nazwie parametru, albo numerowane numerkami {{Code|1}}, {{Code|2}},..., mogą zostać użyte jako parametry szablonu. Parametry określające rodzaj jednostki {{Parametr|typ jednostki}} z {{Parametr|dyskusja typu jednostki}}, itp. w wersjach z numerkiem po jednej spacji w nich mogą zostać użyte jako parametry szablonu. A te tymi numerowanymi liczbami naturalnymi {{Tt|nazwy jednostki}} od jedynki wzwyż poprzez szablon, w którym są one użyte, one też mogą być użyte z dwukropkiem, te numerowane, na samym początku nazwy, wtedy one są traktowane jako pełne nazwy strony, i wtedy one nie zostaną z interpretowane, że do nich trzeba użyć parametr odpowiedni z nazwą przetrzeni nazw z tego numerowanego, czy ogólny, aby utworzyć znów inną pełną nazwę strony dla tego numerka. Zestawienie: * {{Code|nazwa przestrzeni nazw}} i {{Code|nazwa przestrzeni nazw i}} (ogólna nazwa przestrzeni nazw dla wszystkich numerków, i tych numerowanych jednostek) - i to pierwsze z numerkiem, tzn. {{Code|nazwa przestrzeni nazw 1}}, {{Code|nazwa przestrzeni nazw 2}}, ..., * {{Code|nazwa jednostki}} - i te z numerkiem: {{Code|nazwa jednostki 1}}, {{Code|nazwa jednostki 2}}, ..., lub gdy jest zamiast tego parametrem numerowany, {{Code|1}}, {{Code|2}},..., który dla tego pierwszego może być uznany jako: {{Code|cel}} {{=}} {{Code|1}}, * {{Code|typ jednostki}} (parametr bazowy) i {{Code|typ jednostki i}} (parametr domyślny numerkowy) - i te z numerkiem: {{Code|typ jednostki 1}}, {{Code|typ jednostki 2}}, ..., tzn. gdy chcemy określić z jakim typem jednostki mamy do czynienia w zależności do jakiej przestrzeni nazw należy, a w danej, czy jest on np. programowy, czy tylko jest opisem, jak to bywa w szablonach {{Np|Template|link=tak}}, podobnie jest w przypadku {{Np|Module|link=tak}}, czy jak jest w innych przestrzeniach nazw, ** {{Code|dyskusja typu jednostki}} (parametr bazowy) i {{Code|dyskusja typu jednostki i}} (parametr domyślny numerkowy) - i te z numerkiem: {{Code|dyskusja typu jednostki 1}}, {{Code|dyskusja typu jednostki 2}}, ..., gdy chcemy określić wartością niepustą,że chodzi tutaj o typ jednostki. == {{Code|p.CzyNiepoprawnaNazwa(nazwa_jednostki)}} == Funkcja sprawdzajaca, czy jest poprawnie podana nazwa jednostki, czy ma poprawną nazwę. Znakami tymi, z których nie powinna składać się nazwa jest {{Code|<nowiki>{}<>|[]#\n</nowiki>}} i dodatkowo znak {{Code|&#127;}} (kod {{Code|{{Nowiki|&#127;}}}}). Też nie może składać się z trzech znaków tyldy, tzn. {{Code|<nowiki>~~~</nowiki>}}. Również w swojej budowie nie może składać się ze kodów {{Strong|HTML}} literowych o wzorze {{Code|{{Nowiki|&(%a+);}}}}. Natomiast może składać się z {{Code|{{Nowiki|&#(%d+);}}}} i {{Code|{{Nowiki|&#x(%x+);}}}}, ale w pierw te kody muszą być zamienione na normalne znaki. Skrótowa definicja funkcji: <syntaxhighlight lang="lua"> function p.CzyNiepoprawnaNazwa(nazwa_jednostki)...end; </syntaxhighlight> Wtedy ciało funkcji tej, czyli jego definicja w środku, jest: <syntaxhighlight lang="lua"> -- Moduł: "Moduł:Html/dane", służy do ładowania znaku o kodzie HTML "&#127;"; local html_dane_modul=mw.loadData("Module:Html/dane"); return mw.ustring.match(nazwa_jednostki,"[{}<>|%[%]#\n"..html_dane_modul.znak_127.."]+") or mw.ustring.match(nazwa_jednostki,"~~~") or mw.ustring.match(nazwa_jednostki,"&(%a+);"); </syntaxhighlight> Parametry: * {{Code|nazwa_jednostki}} - nazwa jednostki do sprawdzenia. Przykłady: <syntaxhighlight lang="lua"> local pudelko_modul=require("Module:Pudełko"); -- Podana przykładowa niepoprawna nazwa jedostki local nazwa_jednostki="Nazwa pliku [[Nazwa linku w pliku]]"; -- Fukcja zwróci wartość: local czy_poprawna_nazwa=true; local czy_poprawna_nazwa=pudelko_modul.CzyNiepoprawnaNazwa(nazwa_jednostki); </syntaxhighlight> == Funkcje nazw przestrzeni nazw == === {{Code|p["Nazwa przestrzeni nazw"](frame,...)}} === Funkcja pisze nazwę przestrzeni nazw, niezależnie, czy to jest przedmiotowa, czy dyskusji, według podanej w zmiennej {{Code|nazwa przestrzeni nazw}} dla pozycja bazowej w podanych parametrach szablonu rodzicu ramki dziecka, lub dla innej pozycji należy parametr podawać w formie {{Code|nazwa przestrzeni nazw 1}}, {{Code|nazwa przestrzeni nazw 2}}, {{Code|nazwa przestrzeni nazw 3}},..., lub te parametry można podać w postaci ogólnej {{Code|nazwa przestrzeni nazw i}}. Parametry podaje się w parametrach rodzica wywołania tej funkcji {{Code|{{m|Pudełko|Nazwa przestrzeni nazw}}}} (ale ich nie trzeba podawać w dziecku, ale można) i w parametrach dziecka, jeśli chodzi o zmienną {{Code|numer jednostki}}, czyli np.: {{Code|{{m|Pudełko|Nazwa przestrzeni nazw|numer jednostki{{=}}<jakaś liczba całkowita dodatnia>}}}}. Te parametry przestrzenne zamiast w rodzicu w szablonie można podać w ramce dziecka, wtedy parametry dziecka mają pierwszeństwo. Przestrzeń nazw z parametrów nazw przestrzennych może odpowiadać wartości przestrzeni głównej, to wtedy odpowiednia przestrzeń nazw z parametru nazwy jednostki się nie liczy w tej funkcji, aby się liczyła należy użyć funkcji {{Code|{{sr|#p["Nazwa przestrzeni nazw 2"](frame,...)|p=Pudełko}}}}. Definicja skrótowa funkcji: <syntaxhighlight lang="lua"> p["Nazwa przestrzeni nazw"]=function(frame,czy_uwzglednic_alternatywna_nazwe,i)...end; </syntaxhighlight> Wtedy ciało funkcji tej, czyli jego definicja w środku, jest: <syntaxhighlight lang="lua"> -- Jest liczony numer parametru nazwy przestrzeni nazw, domyslnie chodzi tu o numer bazowy parametrów przestrzennych; local numer_jednostki=i or frame.args["numer jednostki"]; local liczba_numer_jednostki=((numer_jednostki)and(tonumber(numer_jednostki))or 0); local pudelko_pomocne_modul=require("Module:Pudełko/Pomocne"); -- Liczy nazwę przestrzeni nazw na podstawie podanych parametrów; return pudelko_pomocne_modul.Nazwa_przestrzeni_nazw(frame,0, czy_uwzglednic_alternatywna_nazwe,liczba_numer_jednostki); </syntaxhighlight> Parametry funkcji: * {{Code|frame}} - tablica ramki tablicy transportu, * {{Code|czy_uwzglednic_alternatywna_nazwe}} - czy ma uwzględniać nazwę przestrzeni nazw domyślną szablonu, dostępne wartości: {{Code|false}}, w której nazwa domyślna nie jest uwzględniana wtedy, oraz {{Code|nil}} i {{Code|true}}, które oznaczają to samo, w tym jeżeli ona jest uwzględniana, wtedy jest brany parametr pierwszy dziecka, który musi istnieć przy takiej wartości tego parametru, tzn. {{Code|{{m|Pudełko|Nazwa przestrzeni nazw|Szablon}}}}, a ten element jest używany, gdy nazwa uzyskana nazwy przestrzeni nazw jest w takim przypadku błędna, a jeżeli wtedy nazwa domyślna jest błędna, czyli {{Code|{{m|Pudełko|Nazwa przestrzeni nazw|Moja przestrzeń}}}}, wtedy funkcja zwraca stan błędu {{Code|(błąd)}}. * {{Code|i}} - numer zmiennej nazwy przestrzeni nazw. Funkcja wykorzystuje {{Code|{{sr|#p.Nazwa_przestrzeni_nazw(frame,...)|p=Pudełko/Pomocne}}}} do wyznaczania ogólnego nazwy przestrzeni nazw dla pozycji bazowej i numerkowej, tzn. dla pozycji: jeden, dwa, trzy,..., itd, i ich ogólnej. Parametr ramki tablicy transportu rodzica szablonu: * {{Code|nazwa przestrzeni nazw}}, {{Code|nazwa przestrzeni nazw 1}}, {{Code|nazwa przestrzeni nazw 2}}, {{Code|nazwa przestrzeni nazw 3}},..., {{Code|nazwa przestrzeni nazw i}} - nazwy przestrzeni nazw dla pozycji bazowej oraz zwykłej i ogólnej numerkowej, * {{Code|typ jednostki}}, {{Code|typ jednostki 1}}, {{Code|typ jednostki 2}}, {{Code|typ jednostki 3}},..., {{Code|typ jednostki i}} - typy jednostek, którym odpowiadają pewne przestrzenie przedmiotowe, dla pozycji bazowej, numerkowej i ogólnej, ** {{Code|dyskusja typu jednostki}}, {{Code|dyskusja typu jednostki 1}}, {{Code|dyskusja typ jednostki 2}}, {{Code|dyskusja typ jednostki 3}},..., {{Code|dyskusja typ jednostki i}} - czy dany typ jednostki ma przedstawiać, jeśli niepusta, przestrzeń dyskusji dla pozycji bazowej, numerkowej i ogólnej. Parametry ramki tablicy transportu dziecka: * Parametry dziecka są takie same jak rodzica dla funkcji pudełkowej plus tu wymienione, * {{Code|numer jednostki}} - jak parametr {{Code|i}} nie został ustawiony, to wtedy liczy się ta zmienna. Przykłady: <syntaxhighlight lang="mediawiki"> {{Nazwa szablonu|nazwa przestrzeni nazw=Wikibooks|nazwa przestrzeni nazw 2=Szablon|nazwa przestrzeni nazw i=Moduł}} </syntaxhighlight> W dziecku powiedzmy jest wywołanie, i szukamy nazwy przestrzeni nazw o numerze dwa, która nie została podana, ale istnieje za to jej wersji ogólna {{Code|nazwa przestrzeni nazw i}} i domyślna {{Code|nazwa przestrzeni nazw}}: <syntaxhighlight lang="mediawiki"> {{#invoke:Pudełko|Nazwa przestrzeni nazw|numer jednostki=1}} </syntaxhighlight> Na podstawie powyższego przykładu otrzymamy wynik o schemacie, nie wyniku, bo tam nie ma zmiennej {{Code|nazwa przestrzeni nazw 1}}, ale jest {{Code|nazwa przestrzeni nazw i}}: <syntaxhighlight lang="mediawiki"> <!-- Ale nie "nazwa przestrzeni nazw", bo jej nie ma, ale za to istnieje "nazwa przestrzeni nazw i"; --> <!-- nazwa przestrzeni nazw 2=nazwa przestrzeni nazw i=Moduł; --> <!-- Czyli wynik: --> Moduł <!-- Widzimy, że wygenerowała się nazwa przestrzeni nazw, którą jest przestrzeń programowa, którą również jest "Szablon"; --> </syntaxhighlight> Nie jest brana w tym powyższym przykładzie zmienna {{Code|nazwa przestrzeni nazw}}, bo jej nie ma, ale za to jest {{Code|nazwa przestrzeni nazw i}}, bo ona występuje jako parametr domyślny ogólny dla parametrów numerkowych. Przykłady w wikikodzie: * {{Code|{{m|Pudełko|Nazwa przestrzeni nazw|numer jednostki{{=}}2}}}} → {{Tt|{{#invoke:Pudełko|Nazwa przestrzeni nazw|numer jednostki=2}}}} * {{Code|{{m|Pudełko|Nazwa przestrzeni nazw|Szablon|nazwa przestrzeni nazw i{{=}}Moja przestrzeń|numer jednostki{{=}}2}}}} → {{Tt|{{#invoke:Pudełko|Nazwa przestrzeni nazw|Szablon|nazwa przestrzeni nazw i=Moja przestrzeń|numer jednostki=2}}}} * {{Code|{{m|Pudełko|Nazwa przestrzeni nazw|nazwa przestrzeni nazw 2{{=}}Szablon|numer jednostki{{=}}2}}}} → {{Tt|{{#invoke:Pudełko|Nazwa przestrzeni nazw|nazwa przestrzeni nazw 2=Szablon|numer jednostki=2}}}} * {{Code|{{m|Pudełko|Nazwa przestrzeni nazw|nazwa przestrzeni nazw 2{{=}}Szablon|numer jednostki{{=}}2}}}} → {{Tt|{{#invoke:Pudełko|Nazwa przestrzeni nazw|nazwa przestrzeni nazw i=Szablon|numer jednostki=2}}}} * {{Code|{{m|Pudełko|Nazwa przestrzeni nazw|nazwa przestrzeni nazw{{=}}Szablon|numer jednostki{{=}}2}}}} → {{Tt|{{#invoke:Pudełko|Nazwa przestrzeni nazw|nazwa przestrzeni nazw=Szablon|numer jednostki=2}}}} Powyżej dla przykładu podano parametry nie w rodzicu w szablonie, tylko w dziecku, jeśli chodzi o parametry nazw przestrzeni nazw, ale ich się za to nie powinno podawać w tych ramach, tylko w szablonach, w których wywoływane są te ramki pudełek {{Code|{{m|Pudełko}}}}, ale tak tutaj tak zrobiono by było najłatwiej sprawdzić działanie tego typu funkcji. Analogicznie możemy podawać parametry typu jednostki, np.: wywołaniu modułowym {{Code|{{m|Pudełko|Nazwa przestrzeni nazw|typ jednostki 2{{=}}strona szablonu|numer jednostki{{=}}2}}}}, ale o tym więcej w rozdziałach {{Code|{{sr|# p["Typ jednostki"](frame,i)|p=Pudełko}}}} w „{{sr|#Funkcje typu jednostki|p=Pudełko}}”, on definiuje przestrzenie przedmiotowe, ale można użyć parametru dyskusji typu jednostki z wartością niepustą, wtedy wyświetli się nazwa przestrzeni nazw dyskusji. Również parametry typu jednostki nie powinno się podawać w dziecku w ramce, tylko w rodzicu w szablonie jako parametry, w którym ta ramka jest wywoływana, ale tutaj podano jedynie dla przykładu, jak najłatwiej sprawdzić działanie tych parametrów tej funkcji. Najpierw w funkcji nagłówku brane są parametry nazw przestrzeni nazw, a jeżeli ich nie ma, to parametry typu jednostki, a jeżeli nie ma, to generowane są nazwy na podstawie aktualnego modułu. === {{Code|p["Nazwa przedmiotowej przestrzeni nazw"](frame,...)}} === Funkcja pisze przedmiotową nazwę przestrzeni nazw jakikolwiek nazwy przestrzeni nazw (tzn. nazwę przedmiotową nazwy przestrzenie nazw, czyli nie dyskusji, zamieniana jest na nią samą, czyli identyfikator przestrzeni się nie zmienia, a dyskusji, nie przedmiotową, przekształca się na przedmiotową jej odpowiadającą, czyli w tym przypadku identyfikator przestrzeni zmniejsza się o numer mniej), według podanej w zmiennej {{Code|nazwa przestrzeni nazw}} dla pozycja bazowej w podanych parametrach szablonu rodzicu ramki dziecka, lub dla innej pozycji należy parametr podawać w formie {{Code|nazwa przestrzeni nazw 1}}, {{Code|nazwa przestrzeni nazw 2}}, {{Code|nazwa przestrzeni nazw 3}},..., lub te parametry można podać w postaci ogólnej {{Code|nazwa przestrzeni nazw i}}. Parametry podaje się w parametrach rodzica wywołania tej funkcji {{Code|{{m|Pudełko|Nazwa przedmiotowej przestrzeni nazw}}}} (ale ich nie trzeba podawać w dziecku, ale można) i w parametrach dziecka, jeśli chodzi o zmienną {{Code|numer jednostki}}, czyli np.: {{Code|{{m|Pudełko|Nazwa przedmiotowej przestrzeni nazw|numer jednostki{{=}}<jakaś liczba całkowita dodatnia>}}}}. Te parametry przestrzenne zamiast w rodzicu w szablonie można podać w ramce dziecka, wtedy parametry dziecka mają pierwszeństwo. Parametry przestrzenne mogą mogą być podane w postaci przestrzeni przedmiotowej lub dyskusji, ale ta funkcja zawsze ją zamienia na przedmiotową. Przestrzeń nazw z parametrów nazw przestrzennych może odpowiadać wartości przestrzeni głównej, to wtedy odpowiednia przestrzeń nazw z parametru nazwy jednostki się nie liczy w tej funkcji, aby się liczyła należy użyć funkcji {{Code|{{sr|#p["Nazwa przedmiotowej przestrzeni nazw 2"](frame,...)|p=Pudełko}}}}. Definicja skrótowa funkcji: <syntaxhighlight lang="lua"> p["Nazwa przedmiotowej przestrzeni nazw"]=function(frame,czy_uwzglednic_alternatywna_nazwe,i)...end; </syntaxhighlight> Wtedy ciało funkcji tej, czyli jego definicja w środku, jest: <syntaxhighlight lang="lua"> -- Jest liczony numer parametru nazwy przestrzeni nazw, domyslnie chodzi tu o numer bazowy parametrów przestrzennych; local numer_jednostki=i or frame.args["numer jednostki"]; local liczba_numer_jednostki=((numer_jednostki)and(tonumber(numer_jednostki))or 0); local pudelko_pomocne_modul=require("Module:Pudełko/Pomocne"); -- Liczy nazwę przestrzeni nazw przedmiotową na podstawie podanych parametrów; return pudelko_pomocne_modul.Nazwa_przestrzeni_nazw(frame,1, czy_uwzglednic_alternatywna_nazwe,liczba_numer_jednostki); </syntaxhighlight> Parametry funkcji: * {{Code|frame}} - tablica ramki tablicy transportu, * {{Code|czy_uwzglednic_alternatywna_nazwe}} - czy ma uwzględniać nazwę przestrzeni nazw domyślną szablonu, dostępne wartości: {{Code|false}}, w której nazwa domyślna nie jest uwzględniana wtedy, oraz {{Code|nil}} i {{Code|true}}, które oznaczają to samo, w tym jeżeli ona jest uwzględniana, wtedy jest brany parametr pierwszy dziecka, który musi istnieć przy takiej wartości tego parametru, tzn. {{Code|{{m|Pudełko|Nazwa przedmiotowej przestrzeni nazw|Dyskusja szablonu}}}} - ta nazwa domyślna zostanie zamieniona na przedmiotową, a jak ona by była przedmiotowa, to żadnej zamiany, by nie było, a jeśli nazwa uzyskana z nazwy przestrzeni nazw z parametrów przestrzennych jest w takim przypadku błędna, to w takim razie brany jest ten parametr, a jeżeli ta nazwa domyślna jest błędna, czyli {{Code|{{m|Pudełko|Nazwa przedmiotowej przestrzeni nazw|Moja przestrzeń}}}}, wtedy funkcja zwraca stan błędu {{Code|(błąd)}}. * {{Code|i}} - numer zmiennej nazwy przestrzeni nazw. Funkcja wykorzystuje {{Code|{{sr|#p.Nazwa_przestrzeni_nazw(frame,...)|p=Pudełko/Pomocne}}}} do wyznaczania ogólnego nazwy przestrzeni nazw dla pozycji bazowej i numerkowej, tzn. dla pozycji: jeden, dwa, trzy,..., itd, i ich ogólnej. Parametr ramki tablicy transportu rodzica szablonu: * {{Code|nazwa przestrzeni nazw}}, {{Code|nazwa przestrzeni nazw 1}}, {{Code|nazwa przestrzeni nazw 2}}, {{Code|nazwa przestrzeni nazw 3}},..., {{Code|nazwa przestrzeni nazw i}} - nazwy przestrzeni nazw dla pozycji bazowej oraz zwykłej i ogólnej numerkowej, * {{Code|typ jednostki}}, {{Code|typ jednostki 1}}, {{Code|typ jednostki 2}}, {{Code|typ jednostki 3}},..., {{Code|typ jednostki i}} - typy jednostek, którym odpowiadają pewne przestrzenie przedmiotowe, dla pozycji bazowej, numerkowej i ogólnej. Parametry ramki tablicy transportu dziecka: * Parametry dziecka są takie same jak rodzica dla funkcji pudełkowej plus tu wymienione, * {{Code|numer jednostki}} - jak parametr {{Code|i}} nie został ustawiony, to wtedy liczy się ta zmienna. Przykłady: <syntaxhighlight lang="mediawiki"> {{Nazwa szablonu|nazwa przestrzeni nazw=Dyskusja Wikibooks|nazwa przestrzeni nazw 2=Dyskusja szablonu|nazwa przestrzeni nazw i=Dyskusja modułu}} </syntaxhighlight> W dziecku powiedzmy jest wywołanie, i szukamy nazwy przestrzeni nazw o numerze dwa, która nie została podana, ale istnieje za to jej wersji ogólna {{Code|nazwa przestrzeni nazw i}} i domyślna {{Code|nazwa przestrzeni nazw}}: <syntaxhighlight lang="mediawiki"> {{#invoke:Pudełko|Nazwa przedmiotowej przestrzeni nazw|numer jednostki=1}} </syntaxhighlight> Na podstawie powyższego przykładu otrzymamy wynik o schemacie, nie wyniku, bo tam nie ma zmiennej {{Code|nazwa przestrzeni nazw 1}}, ale jest {{Code|nazwa przestrzeni nazw i}}: <syntaxhighlight lang="mediawiki"> <!-- Ale nie "nazwa przestrzeni nazw", bo jej nie ma, ale za to istnieje "nazwa przestrzeni nazw i"; --> <!-- nazwa przestrzeni nazw 2=nazwa przestrzeni nazw i=Dyskusja modułu; --> <!-- Czyli wynik: --> Moduł <!-- Widzimy, że wygenerowała się nazwa przestrzeni nazw, którą jest przestrzeń przedmiotowa programowa przestrzeni dyskusji "Dyskusja modułu", którą również jest "Szablon" jego przestrzeni dyskusji "Dyskusja szablonu", a dla ich przestrzeni przedmiotowej, zamiast dyskusji, to samo przekształca się na to samo; --> </syntaxhighlight> Nie jest brana w tym powyższym przykładzie zmienna {{Code|nazwa przestrzeni nazw}}, bo jej nie ma, ale za to jest {{Code|nazwa przestrzeni nazw i}}, bo ona występuje jako parametr domyślny ogólny dla parametrów numerkowych. Przykłady w wikikodzie: * {{Code|{{m|Pudełko|Nazwa przedmiotowej przestrzeni nazw|numer jednostki{{=}}2}}}} → {{Tt|{{#invoke:Pudełko|Nazwa przedmiotowej przestrzeni nazw|numer jednostki=2}}}} * {{Code|{{m|Pudełko|Nazwa przedmiotowej przestrzeni nazw|Dyskusja szablonu|nazwa przestrzeni nazw i{{=}}Moja przestrzeń|numer jednostki{{=}}2}}}} → {{Tt|{{#invoke:Pudełko|Nazwa przedmiotowej przestrzeni nazw|Dyskusja szablonu|nazwa przestrzeni nazw i=Moja przestrzeń|numer jednostki=2}}}} * {{Code|{{m|Pudełko|Nazwa przedmiotowej przestrzeni nazw|nazwa przestrzeni nazw 2{{=}}Dyskusja szablonu|numer jednostki{{=}}2}}}} → {{Tt|{{#invoke:Pudełko|Nazwa przedmiotowej przestrzeni nazw|nazwa przestrzeni nazw 2=Dyskusja szablonu|numer jednostki=2}}}} * {{Code|{{m|Pudełko|Nazwa przedmiotowej przestrzeni nazw|nazwa przestrzeni nazw 2{{=}}Dyskusja szablonu|numer jednostki{{=}}2}}}} → {{Tt|{{#invoke:Pudełko|Nazwa przedmiotowej przestrzeni nazw|nazwa przestrzeni nazw i=Dyskusja szablonu|numer jednostki=2}}}} * {{Code|{{m|Pudełko|Nazwa przedmiotowej przestrzeni nazw|nazwa przestrzeni nazw{{=}}Dyskusja szablonu|numer jednostki{{=}}2}}}} → {{Tt|{{#invoke:Pudełko|Nazwa przedmiotowej przestrzeni nazw|nazwa przestrzeni nazw=Dyskusja szablonu|numer jednostki=2}}}} Powyżej dla przykładu podano parametry nie w rodzicu w szablonie, tylko w dziecku, jeśli chodzi o parametry nazw przestrzeni nazw, ale ich się za to nie powinno podawać w tych ramach, tylko w szablonach, w których wywoływane są te ramki pudełek {{Code|{{m|Pudełko}}}}, ale tak tutaj tak zrobiono by było najłatwiej sprawdzić działanie tego typu funkcji. Analogicznie możemy podawać parametry typu jednostki, np.: wywołaniu modułowym {{Code|{{m|Pudełko|Nazwa przedmiotowej przestrzeni nazw|typ jednostki 2{{=}}strona szablonu|numer jednostki{{=}}2}}}}, ale o tym więcej w rozdziałach {{Code|{{sr|# p["Przedmiotowy typ jednostki"](frame,i)|p=Pudełko}}}} w „{{sr|#Funkcje typu jednostki|p=Pudełko}}”, ale wtedy ta sama nazwa przestrzeni nazw reprezentowana przez {{Parametr|typ jednostki 2|strona szablonu}}, jest zamieniana na to samo, lepiej jest tutaj używać parametrów przestrzennych nazw niż typu jednostki, bo typ jednostki ma taką samą wartość dla przestrzeni przedmiotowej, co dyskusji. Tutaj parametr dyskusji typu jednostki bazowy i numerkowy ogólny, czy szczegółowy, nie gra roli, bo nawet, gdy wygenerujemy nazwę przestrzeni dyskusji za pomoca tego parametru, to i tak otrzymamy na samym końcu jego nazwę przedmiotową. Również parametry typu jednostki nie powinno się podawać w dziecku w ramce, tylko w rodzicu w szablonie jako parametry, w którym ta ramka jest wywoływana, ale tutaj podano jedynie dla przykładu, jak najłatwiej sprawdzić działanie tych parametrów tej funkcji. Najpierw w funkcji nagłówku brane są parametry nazw przestrzeni nazw, a jeżeli ich nie ma, to parametry typu jednostki, a jeżeli nie ma, to generowane są nazwy na podstawie aktualnego modułu. === {{Code|p["Nazwa przestrzeni nazw dyskusji"](frame,...)}} === Funkcja pisze nazwę przestrzeni nazw dyskusji jakikolwiek nazwy przestrzeni nazw (tzn. nazwę przedmiotową nazwy przestrzenie nazw, czyli nie dyskusji, zamieniana jest na dyskusji, czyli identyfikator przestrzeni się zmienia jeden wyżej, a dyskusji, nie przedmiotową, przekształca się na tą samą), według podanej w zmiennej {{Code|nazwa przestrzeni nazw}} dla pozycja bazowej w podanych parametrach szablonu rodzicu ramki dziecka, lub dla innej pozycji należy parametr podawać w formie {{Code|nazwa przestrzeni nazw 1}}, {{Code|nazwa przestrzeni nazw 2}}, {{Code|nazwa przestrzeni nazw 3}},..., lub te parametry można podać w postaci ogólnej {{Code|nazwa przestrzeni nazw i}}. Parametry podaje się w parametrach rodzica wywołania tej funkcji {{Code|{{m|Pudełko|Nazwa przestrzeni nazw dyskusji}}}} (ale ich nie trzeba podawać w dziecku, ale można) i w parametrach dziecka, jeśli chodzi o zmienną {{Code|numer jednostki}}, czyli np.: {{Code|{{m|Pudełko|Nazwa przestrzeni nazw dyskusji|numer jednostki{{=}}<jakaś liczba całkowita dodatnia>}}}}. Te parametry przestrzenne zamiast w rodzicu w szablonie można podać w ramce dziecka, wtedy parametry dziecka mają pierwszeństwo. Parametry przestrzenne mogą mogą być podane w postaci przestrzeni przedmiotowej lub dyskusji, ale ta funkcja zawsze ją zamienia na dyskusji. Przestrzeń nazw z parametrów nazw przestrzennych może odpowiadać wartości przestrzeni głównej, to wtedy odpowiednia przestrzeń nazw z parametru nazwy jednostki się nie liczy w tej funkcji, aby się liczyła należy użyć funkcji {{Code|{{sr|#p["Nazwa przestrzeni nazw dyskusji 2"](frame,...)|p=Pudełko}}}}. Definicja skrótowa funkcji: <syntaxhighlight lang="lua"> p["Nazwa przestrzeni nazw dyskusji"]=function(frame,czy_uwzglednic_alternatywna_nazwe,i)...end; </syntaxhighlight> Wtedy ciało funkcji tej, czyli jego definicja w środku, jest: <syntaxhighlight lang="lua"> -- Jest liczony numer parametru nazwy przestrzeni nazw, domyslnie chodzi tu o numer bazowy parametrów przestrzennych; local numer_jednostki=i or frame.args["numer jednostki"]; local liczba_numer_jednostki=((numer_jednostki)and(tonumber(numer_jednostki))or 0); local pudelko_pomocne_modul=require("Module:Pudełko/Pomocne"); -- Liczy nazwę przestrzeni nazw dyskusji na podstawie podanych parametrów; return pudelko_pomocne_modul.Nazwa_przestrzeni_nazw(frame,2, czy_uwzglednic_alternatywna_nazwe,liczba_numer_jednostki); </syntaxhighlight> Parametry funkcji: * {{Code|frame}} - tablica ramki tablicy transportu, * {{Code|czy_uwzglednic_alternatywna_nazwe}} - czy ma uwzględniać nazwę przestrzeni nazw domyślną szablonu, dostępne wartości: {{Code|false}}, w której nazwa domyślna nie jest uwzględniana wtedy, oraz {{Code|nil}} i {{Code|true}}, które oznaczają to samo, w tym jeżeli ona jest uwzględniana, wtedy jest brany parametr pierwszy dziecka, który musi istnieć przy takiej wartości tego parametru, tzn. {{Code|{{m|Pudełko|Nazwa przestrzeni nazw dyskusji|Szablon}}}} - ta nazwa domyślna zostanie przekształcona na dyskusji, a jeżeli ona by była dyskusji, to nie byłoby żadnego przekształcenia, a jeśli nazwa uzyskana nazwy przestrzeni nazw z parametrów przestrzennych jest w takim przypadku błędna, to w takim razie brany jest ten parametr, a jeżeli nazwa domyślna jest błędna, czyli {{Code|{{m|Pudełko|Nazwa przestrzeni nazw dyskusji|Moja przestrzeń}}}}, wtedy funkcja zwraca stan błędu {{Code|(błąd)}}. * {{Code|i}} - numer zmiennej nazwy przestrzeni nazw. Funkcja wykorzystuje {{Code|{{sr|#p.Nazwa_przestrzeni_nazw(frame,...)|p=Pudełko/Pomocne}}}} do wyznaczania ogólnego nazwy przestrzeni nazw dla pozycji bazowej i numerkowej, tzn. dla pozycji: jeden, dwa, trzy,..., itd, i ich ogólnej. Parametr ramki tablicy transportu rodzica szablonu: * {{Code|nazwa przestrzeni nazw}}, {{Code|nazwa przestrzeni nazw 1}}, {{Code|nazwa przestrzeni nazw 2}}, {{Code|nazwa przestrzeni nazw 3}},..., {{Code|nazwa przestrzeni nazw i}} - nazwy przestrzeni nazw dla pozycji bazowej oraz zwykłej i ogólnej numerkowej, * {{Code|typ jednostki}}, {{Code|typ jednostki 1}}, {{Code|typ jednostki 2}}, {{Code|typ jednostki 3}},..., {{Code|typ jednostki i}} - typy jednostek, którym odpowiadają pewne przestrzenie przedmiotowe, dla pozycji bazowej, numerkowej i ogólnej. Parametry ramki tablicy transportu dziecka: * Parametry dziecka są takie same jak rodzica dla funkcji pudełkowej plus tu wymienione, * {{Code|numer jednostki}} - jak parametr {{Code|i}} nie został ustawiony, to wtedy liczy się ta zmienna. Przykłady: <syntaxhighlight lang="mediawiki"> {{Nazwa szablonu|nazwa przestrzeni nazw=Wikibooks|nazwa przestrzeni nazw 2=Szablon|nazwa przestrzeni nazw i=Moduł}} </syntaxhighlight> W dziecku powiedzmy jest wywołanie, i szukamy nazwy przestrzeni nazw o numerze dwa, która nie została podana, ale istnieje za to jej wersji ogólna {{Code|nazwa przestrzeni nazw i}} i domyślna {{Code|nazwa przestrzeni nazw}}: <syntaxhighlight lang="mediawiki"> {{#invoke:Pudełko|Nazwa przestrzeni nazw dyskusji|numer jednostki=1}} </syntaxhighlight> Na podstawie powyższego przykładu otrzymamy wynik o schemacie, nie wyniku, bo tam nie ma zmiennej {{Code|nazwa przestrzeni nazw 1}}, ale jest {{Code|nazwa przestrzeni nazw i}}: <syntaxhighlight lang="mediawiki"> <!-- Ale nie "nazwa przestrzeni nazw", bo jej nie ma, ale za to istnieje "nazwa przestrzeni nazw i"; --> <!-- nazwa przestrzeni nazw 2=nazwa przestrzeni nazw i=Moduł; --> <!-- Czyli wynik: --> Dyskusja modułu <!-- Widzimy, że wygenerowała się nazwa przestrzeni nazw, którą jest przestrzeń dyskusji przestrzeni programowej przestrzeni przedmiotowej "Moduł", którą również jest "Szablon" jego przestrzeni dyskusji "Dyskusja szablonu", a dla ich przestrzeni przedmiotowej, zamiast dyskusji, to przekształca się na dyskusji jej odpowiadającą; --> </syntaxhighlight> Nie jest brana w tym powyższym przykładzie zmienna {{Code|nazwa przestrzeni nazw}}, bo jej nie ma, ale za to jest {{Code|nazwa przestrzeni nazw i}}, bo ona występuje jako parametr domyślny ogólny dla parametrów numerkowych. Przykłady w wikikodzie: * {{Code|{{m|Pudełko|Nazwa przestrzeni nazw dyskusji|numer jednostki{{=}}2}}}} → {{Tt|{{#invoke:Pudełko|Nazwa przestrzeni nazw dyskusji|numer jednostki=2}}}} * {{Code|{{m|Pudełko|Nazwa przestrzeni nazw dyskusji|Szablon|nazwa przestrzeni nazw i{{=}}Moja przestrzeń|numer jednostki{{=}}2}}}} → {{Tt|{{#invoke:Pudełko|Nazwa przestrzeni nazw dyskusji|Szablon|nazwa przestrzeni nazw i=Moja przestrzeń|numer jednostki=2}}}} * {{Code|{{m|Pudełko|Nazwa przestrzeni nazw dyskusji|nazwa przestrzeni nazw 2{{=}}Szablon|numer jednostki{{=}}2}}}} → {{Tt|{{#invoke:Pudełko|Nazwa przestrzeni nazw dyskusji|nazwa przestrzeni nazw 2=Szablon|numer jednostki=2}}}} * {{Code|{{m|Pudełko|Nazwa przestrzeni nazw dyskusji|nazwa przestrzeni nazw 2{{=}}Szablon|numer jednostki{{=}}2}}}} → {{Tt|{{#invoke:Pudełko|Nazwa przestrzeni nazw dyskusji|nazwa przestrzeni nazw i=Szablon|numer jednostki=2}}}} * {{Code|{{m|Pudełko|Nazwa przestrzeni nazw dyskusji|nazwa przestrzeni nazw{{=}}Szablon|numer jednostki{{=}}2}}}} → {{Tt|{{#invoke:Pudełko|Nazwa przestrzeni nazw dyskusji|nazwa przestrzeni nazw=Szablon|numer jednostki=2}}}} Powyżej dla przykładu podano parametry nie w rodzicu w szablonie, tylko w dziecku, jeśli chodzi o parametry nazw przestrzeni nazw, ale ich się za to nie powinno podawać w tych ramach, tylko w szablonach, w których wywoływane są te ramki pudełek {{Code|{{m|Pudełko}}}}, ale tak tutaj tak zrobiono by było najłatwiej sprawdzić działanie tego typu funkcji. Analogicznie możemy podawać parametry typu jednostki, np.: wywołaniu modułowym {{Code|{{m|Pudełko|Nazwa przestrzeni nazw dyskusji|typ jednostki 2{{=}}strona szablonu|numer jednostki{{=}}2}}}}, ale o tym więcej w rozdziałach {{Code|{{sr|# p["Dyskusyjny typ jednostki"](frame,i)|p=Pudełko}}}} w „{{sr|#Funkcje typu jednostki|p=Pudełko}}”, ale wtedy nazwa przestrzeni nazw reprezentowana przez {{Parametr|typ jednostki 2|strona szablonu}}, jest zamieniana na nazwę przestrzeni nazw dyskusji. Parametr dyskusji typu jednostki bazowy lub dla danego numerka ogólny, czy szczegółowy, nie gra roli. Również parametry typu jednostki nie powinno się podawać w dziecku w ramce, tylko w rodzicu w szablonie jako parametry, w którym ta ramka jest wywoływana, ale tutaj podano jedynie dla przykładu, jak najłatwiej sprawdzić działanie tych parametrów tej funkcji. Najpierw w funkcji nagłówku brane są parametry nazw przestrzeni nazw, a jeżeli ich nie ma, to parametry typu jednostki, a jeżeli nie ma, to generowane są nazwy na podstawie aktualnego modułu. == Funkcje nazw przestrzeni nazw drugiej wersji == === {{Code|p["Nazwa przestrzeni nazw 2"](frame,...)}} === Funkcja pisze nazwę przestrzeni nazw, niezależnie, czy to jest przedmiotowa, czy dyskusji, według, i nie zawsze tylko, podanej w zmiennej {{Code|nazwa przestrzeni nazw}} dla pozycja bazowej w podanych parametrach szablonu rodzicu ramki dziecka, lub dla innej pozycji należy parametr podawać w formie {{Code|nazwa przestrzeni nazw 1}}, {{Code|nazwa przestrzeni nazw 2}}, {{Code|nazwa przestrzeni nazw 3}},..., lub te parametry można podać w postaci ogólnej {{Code|nazwa przestrzeni nazw i}}. W tej funkcji trzeba też podawać parametry nazwy jednostek {{Code|nazwa jednostki}}, {{Code|nazwa jednostki 1}}, {{Code|nazwa jednostki 2}}, {{Code|nazwa jednostki 3}},... Parametry podaje się w parametrach rodzica wywołania tej funkcji {{Code|{{m|Pudełko|Nazwa przestrzeni nazw 2}}}} (ale ich nie trzeba podawać w dziecku, ale można) i w parametrach dziecka, jeśli chodzi o zmienną {{Code|numer jednostki}}, czyli np.: {{Code|{{m|Pudełko|Nazwa przestrzeni nazw 2|numer jednostki{{=}}<jakaś liczba całkowita dodatnia>}}}}. Te parametry przestrzenne zamiast w rodzicu w szablonie można podać w ramce dziecka, wtedy parametry dziecka mają pierwszeństwo. Przestrzeń nazw z parametrów nazw przestrzennych może odpowiadać wartości przestrzeni głównej, to wtedy odpowiednia przestrzeń nazw z parametru nazwy jednostki się liczy w tej funkcji, wtedy jest liczona nazwa przestrzeni nazw z tego parametru. Gdy parametry przestrzenne lub typ jednostki w drugim podejściu nie wskazują na przestrzeń główną, to wtedy działanie tej funkcji jest podobne do {{Code|{{sr|#p["Nazwa przestrzeni nazw"](frame,...)|p=Pudełko}}}}. Definicja skrótowa funkcji: <syntaxhighlight lang="lua"> p["Nazwa przestrzeni nazw 2"]=function(frame,czy_uwzglednic_alternatywna_nazwe,i)...end; </syntaxhighlight> Wtedy ciało funkcji tej, czyli jego definicja w środku, jest: <syntaxhighlight lang="lua"> local pudelko_pomocne_modul=require("Module:Pudełko/Pomocne"); -- Liczy nazwę przestrzeni nazw, jeżeli z parametrów przestrzennych przestrzeń wskazuje na główną, to wtedy jest liczona przestrzeń nazw z nazwy jednostki; return pudelko_pomocne_modul.Nazwa_przestrzeni_nazw_2(frame,czy_uwzglednic_alternatywna_nazwe,i) </syntaxhighlight> Parametry funkcji: * {{Code|frame}} - tablica ramki tablicy transportu, * {{Code|czy_uwzglednic_alternatywna_nazwe}} - czy ma uwzględniać nazwę przestrzeni nazw domyślną szablonu, dostępne wartości: {{Code|false}}, w której nazwa domyślna nie jest uwzględniana wtedy, oraz {{Code|nil}} i {{Code|true}}, które oznaczają to samo, w tym jeżeli ona jest uwzględniana, wtedy jest brany parametr pierwszy dziecka, który musi istnieć przy takiej wartości tego parametru, tzn. {{Code|{{m|Pudełko|Nazwa przestrzeni nazw 2|Szablon}}}}, a jeśli nazwa uzyskana nazwy przestrzeni nazw jest w takim przypadku błędna, to brany jest ten element, a jeżeli nazwa domyślna jest błędna, czyli {{Code|{{m|Pudełko|Nazwa przestrzeni nazw 2|Moja przestrzeń}}}}, wtedy funkcja zwraca stan błędu {{Code|(błąd)}}. * {{Code|i}} - numer zmiennej nazwy przestrzeni nazw. Funkcja wykorzystuje {{Code|{{sr|#p.Nazwa_przestrzeni_nazw_2(frame,...)|p=Pudełko/Pomocne}}}} do wyznaczania ogólnego nazwy przestrzeni nazw dla pozycji bazowej i numerkowej, tzn. dla pozycji: jeden, dwa, trzy,..., itd, i ich ogólnej. Parametr ramki tablicy transportu rodzica szablonu: * {{Code|nazwa przestrzeni nazw}}, {{Code|nazwa przestrzeni nazw 1}}, {{Code|nazwa przestrzeni nazw 2}}, {{Code|nazwa przestrzeni nazw 3}},..., {{Code|nazwa przestrzeni nazw i}} - nazwy przestrzeni nazw dla pozycji bazowej oraz zwykłej i ogólnej numerkowej, * {{Code|nazwa jednostki}}, {{Code|nazwa jednostki 1}}, {{Code|nazwa jednostki 2}}, {{Code|nazwa jednostki 3}},... - nazwy jednostek dla pozycji bazowej i numerkowej, * {{Code|typ jednostki}}, {{Code|typ jednostki 1}}, {{Code|typ jednostki 2}}, {{Code|typ jednostki 3}},..., {{Code|typ jednostki i}} - typy jednostek, którym odpowiadają pewne przestrzenie przedmiotowe, dla pozycji bazowej, numerkowej i ogólnej, ** {{Code|dyskusja typu jednostki}}, {{Code|dyskusja typu jednostki 1}}, {{Code|dyskusja typ jednostki 2}}, {{Code|dyskusja typ jednostki 3}},..., {{Code|dyskusja typ jednostki i}} - czy dany typ jednostki ma przedstawiać, jeśli niepusta, przestrzeń dyskusji dla pozycji bazowej, numerkowej i ogólnej. Parametry ramki tablicy transportu dziecka: * Parametry dziecka są takie same jak rodzica dla funkcji pudełkowej plus tu wymienione, * {{Code|numer jednostki}} - jak parametr {{Code|i}} nie został ustawiony, to wtedy liczy się ta zmienna. Przykłady: <syntaxhighlight lang="mediawiki"> {{Nazwa szablonu|nazwa przestrzeni nazw=Wikibooks|nazwa przestrzeni nazw 1=Szablon|nazwa przestrzeni nazw i=|nazwa jednostki 2=Wikibooks:Strona}} </syntaxhighlight> W dziecku powiedzmy jest wywołanie, i szukamy nazwy przestrzeni nazw o numerze dwa, która została podana, ale istnieje za to jej wersji ogólna {{Code|nazwa przestrzeni nazw i}} i domyślna {{Code|nazwa przestrzeni nazw}}, ale wtedy dla tego numerkowego liczy się to ogólne z {{Code| i}}, a ponieważ ta nazwa jest pusta, więc będziemy liczyli nazwę przestrzeni nazw z {{Code|nazwa jednostki 2}}: <syntaxhighlight lang="mediawiki"> {{#invoke:Pudełko|Nazwa przestrzeni nazw 2|numer jednostki=2}} </syntaxhighlight> Na podstawie powyższego przykładu otrzymamy wynik o schemacie, nie wyniku, bo tam nie ma zmiennej {{Code|nazwa przestrzeni nazw 1}}, ale jest {{Code|nazwa przestrzeni nazw i}}: <syntaxhighlight lang="mediawiki"> <!-- Ale nie "nazwa przestrzeni nazw 2", bo jej nie ma, ale za to istnieje "nazwa przestrzeni nazw i"; --> <!-- nazwa przestrzeni nazw 2=nazwa przestrzeni nazw i="", a nazwa jednostki 2="Wikibooks:Strona"; --> <!-- Czyli wynik: --> Wikibooks <!-- Widzimy, że wygenerowała się nazwa przestrzeni nazw, którą jest przestrzeń nieprogramowa, ale projektu, wychodząca z nazwy jednostek w tym przypadku z "nazwa jednostki 2"; --> </syntaxhighlight> Nie jest brana w tym powyższym przykładzie zmienna {{Code|nazwa przestrzeni nazw}}, bo jej nie ma, ale za to jest {{Code|nazwa przestrzeni nazw i}}, bo ona występuje jako parametr domyślny ogólny dla parametrów numerkowych. Tytaj jest używana jest zmienna {{Code|nazwa jednostki 2}} do wygenerowania ostatecznego wyniku, bo jak można zauważyć, parametry przestrzenne wskazują na przestrzeń główną, a nazwy jednostek już nie. Przykłady w wikikodzie: * {{Code|{{m|Pudełko|Nazwa przestrzeni nazw 2|numer jednostki{{=}}2}}}} → {{Tt|{{#invoke:Pudełko|Nazwa przestrzeni nazw 2|numer jednostki=2}}}} * {{Code|{{m|Pudełko|Nazwa przestrzeni nazw 2|Szablon|nazwa przestrzeni nazw i{{=}}Moja przestrzeń|numer jednostki{{=}}2}}}} → {{Tt|{{#invoke:Pudełko|Nazwa przestrzeni nazw 2|Szablon|nazwa przestrzeni nazw i=Moja przestrzeń|numer jednostki=2}}}} * {{Code|{{m|Pudełko|Nazwa przestrzeni nazw 2|nazwa przestrzeni nazw 2{{=}}|nazwa jednostki 2{{=}}Szablon:Strona|numer jednostki{{=}}2}}}} → {{Tt|{{#invoke:Pudełko|Nazwa przestrzeni nazw 2|nazwa przestrzeni nazw 2=|nazwa jednostki 2=Szablon:Strona|numer jednostki=2}}}} * {{Code|{{m|Pudełko|Nazwa przestrzeni nazw 2|nazwa przestrzeni nazw i{{=}}|nazwa jednostki 2{{=}}Szablon:Strona|numer jednostki{{=}}2}}}} → {{Tt|{{#invoke:Pudełko|Nazwa przestrzeni nazw 2|nazwa przestrzeni nazw i=|nazwa jednostki 2=Szablon:Strona|numer jednostki=2}}}} * {{Code|{{m|Pudełko|Nazwa przestrzeni nazw 2|Szablon|nazwa przestrzeni nazw{{=}}|nazwa jednostki 2{{=}}Wikibooks:Strona|numer jednostki{{=}}2}}}} → {{Tt|{{#invoke:Pudełko|Nazwa przestrzeni nazw 2|Szablon|nazwa przestrzeni nazw=|nazwa jednostki 2=Wikibooks:Strona|numer jednostki=2}}}} Powyżej dla przykładu podano parametry nie w rodzicu w szablonie, tylko w dziecku, jeśli chodzi o parametry nazw przestrzeni nazw i nazw jednostek, ale ich się za to nie powinno podawać w tych ramach, tylko w szablonach, w których wywoływane są te ramki pudełek {{Code|{{m|Pudełko}}}}, ale tak tutaj tak zrobiono by było najłatwiej sprawdzić działanie tego typu funkcji. Analogicznie możemy podawać parametry typu jednostki, np.: wywołaniu modułowym {{Code|{{m|Pudełko|Nazwa przestrzeni nazw 2|typ jednostki 2{{=}}Podręcznik|nazwa jednostki 2{{=}}Szablon:Strona|numer jednostki{{=}}2}}}} (ale wtedy jest brana przestrzeń nazw z nazwy jednostki), ale o tym więcej w rozdziałach {{Code|{{sr|#p["Typ jednostki 2"](frame,i)|p=Pudełko}}}} w „{{sr|#Funkcje typu jednostki|p=Pudełko}}”, on definiuje przestrzenie przedmiotowe, ale można użyć parametru dyskusji typu jednostki z wartością niepustą, wtedy wyświetli się nazwa przestrzeni nazw dyskusji. Jeżeli typ jednostki wskazuje na przestrzeń nazw główną, wtedy się liczą parametry nazw jednostek. Również parametry typu jednostki nie powinno się podawać w dziecku w ramce, tylko w rodzicu w szablonie jako parametry, w którym ta ramka jest wywoływana, ale tutaj podano jedynie dla przykładu, jak najłatwiej sprawdzić działanie tych parametrów tej funkcji. Najpierw w funkcji nagłówku brane są parametry nazw przestrzeni nazw, a jeżeli ich nie ma, to parametry typu jednostki, a jeżeli nie ma lub parametry przestrzenne wskazują na przestrzeń główną, i nie ma nazwy jednostki, to generowane są nazwy tej funkcji na podstawie aktualnej strony. === {{Code|p["Nazwa przedmiotowej przestrzeni nazw 2"](frame,...)}} === Funkcja pisze przedmiotową nazwę przestrzeni nazw jakikolwiek nazwy przestrzeni nazw (tzn. nazwę przedmiotową nazwy przestrzenie nazw, czyli nie dyskusji, zamieniana jest na nią samą, czyli identyfikator przestrzeni się nie zmienia, a dyskusji, nie przedmiotową, przekształca się na przedmiotową jej odpowiadającą, czyli w tym przypadku identyfikator przestrzeni zmniejsza się o numer mniej), według, i nie zawsze tylko, podanej w zmiennej {{Code|nazwa przestrzeni nazw}} dla pozycja bazowej w podanych parametrach szablonu rodzicu ramki dziecka, lub dla innej pozycji należy parametr podawać w formie {{Code|nazwa przestrzeni nazw 1}}, {{Code|nazwa przestrzeni nazw 2}}, {{Code|nazwa przestrzeni nazw 3}},..., lub te parametry można podać w postaci ogólnej {{Code|nazwa przestrzeni nazw i}}. W tej funkcji trzeba też podawać parametry nazwy jednostek {{Code|nazwa jednostki}}, {{Code|nazwa jednostki 1}}, {{Code|nazwa jednostki 2}}, {{Code|nazwa jednostki 3}},... Parametry podaje się w parametrach rodzica wywołania tej funkcji {{Code|{{m|Pudełko|Nazwa przedmiotowej przestrzeni nazw 2}}}} (ale ich nie trzeba podawać w dziecku, ale można) i w parametrach dziecka, jeśli chodzi o zmienną {{Code|numer jednostki}}, czyli np.: {{Code|{{m|Pudełko|Nazwa przedmiotowej przestrzeni nazw 2|numer jednostki{{=}}<jakaś liczba całkowita dodatnia>}}}}. Te parametry przestrzenne zamiast w rodzicu w szablonie można podać w ramce dziecka, wtedy parametry dziecka mają pierwszeństwo. Przestrzeń nazw z parametrów nazw przestrzennych po przekształceniu na przedmiotową może odpowiadać wartości przestrzeni głównej, to wtedy odpowiednia przestrzeń nazw z parametru nazwy jednostki się liczy w tej funkcji, wtedy jest liczona nazwa przestrzeni nazw z tego parametru. Gdy parametry przestrzenne lub typ jednostki w drugim podejściu nie wskazują na przestrzeń główną, to wtedy działanie tej funkcji jest podobne do {{Code|{{sr|#p["Nazwa przedmiotowej przestrzeni nazw"](frame,...)|p=Pudełko}}}}. Definicja skrótowa funkcji: <syntaxhighlight lang="lua"> p["Nazwa przedmiotowej przestrzeni nazw 2"]=function(frame,czy_uwzglednic_alternatywna_nazwe,i)...end; </syntaxhighlight> Wtedy ciało funkcji tej, czyli jego definicja w środku, jest: <syntaxhighlight lang="lua"> local pudelko_pomocne_modul=require("Module:Pudełko/Pomocne"); return pudelko_pomocne_modul.Nazwa_przestrzeni_nazw_przedmiotowa_dyskusji_2(frame,czy_uwzglednic_alternatywna_nazwe,i,"przedmiotowa"); </syntaxhighlight> Parametry funkcji: * {{Code|frame}} - tablica ramki tablicy transportu, * {{Code|czy_uwzglednic_alternatywna_nazwe}} - czy ma uwzględniać nazwę przestrzeni nazw domyślną szablonu, dostępne wartości: {{Code|false}}, w której nazwa domyślna nie jest uwzględniana wtedy, oraz {{Code|nil}} i {{Code|true}}, które oznaczają to samo, w tym jeżeli ona jest uwzględniana, wtedy jest brany parametr pierwszy dziecka, który musi istnieć przy takiej wartości tego parametru, tzn. {{Code|{{m|Pudełko|Nazwa przedmiotowej przestrzeni nazw 2|Szablon}}}}, nazwa domyślna zostanie zamieniona na przedmiotową, a jeżeli jest już taka, to żadnej zamiany nie ma, a jeśli nazwa uzyskana nazwy przestrzeni nazw jest w takim przypadku błędna, to brany jest ten eleement, a jeżeli nazwa domyślna jest błędna, czyli {{Code|{{m|Pudełko|Nazwa przedmiotowej przestrzeni nazw 2|Moja przestrzeń}}}}, wtedy funkcja zwraca stan błędu {{Code|(błąd)}}. * {{Code|i}} - numer zmiennej nazwy przestrzeni nazw. Funkcja wykorzystuje {{Code|{{sr|#p.Nazwa_przestrzeni_nazw_przedmiotowa_dyskusji_2(frame,...)|p=Pudełko/Pomocne}}}} do wyznaczania ogólnego nazwy przestrzeni nazw dla pozycji bazowej i numerkowej, tzn. dla pozycji: jeden, dwa, trzy,..., itd, i ich ogólnej. Parametr ramki tablicy transportu rodzica szablonu: * {{Code|nazwa przestrzeni nazw}}, {{Code|nazwa przestrzeni nazw 1}}, {{Code|nazwa przestrzeni nazw 2}}, {{Code|nazwa przestrzeni nazw 3}},..., {{Code|nazwa przestrzeni nazw i}} - nazwy przestrzeni nazw dla pozycji bazowej oraz zwykłej i ogólnej numerkowej, * {{Code|nazwa jednostki}}, {{Code|nazwa jednostki 1}}, {{Code|nazwa jednostki 2}}, {{Code|nazwa jednostki 3}},... - nazwy jednostek dla pozycji bazowej i numerkowej, * {{Code|typ jednostki}}, {{Code|typ jednostki 1}}, {{Code|typ jednostki 2}}, {{Code|typ jednostki 3}},..., {{Code|typ jednostki i}} - typy jednostek, którym odpowiadają pewne przestrzenie przedmiotowe, dla pozycji bazowej, numerkowej i ogólnej. Parametry ramki tablicy transportu dziecka: * Parametry dziecka są takie same jak rodzica dla funkcji pudełkowej plus tu wymienione, * {{Code|numer jednostki}} - jak parametr {{Code|i}} nie został ustawiony, to wtedy liczy się ta zmienna. Przykłady: <syntaxhighlight lang="mediawiki"> {{Nazwa szablonu|nazwa przestrzeni nazw=Wikibooks|nazwa przestrzeni nazw 1=Szablon|nazwa przestrzeni nazw i=|nazwa jednostki 2=Dyskusja Wikibooks:Strona}} </syntaxhighlight> W dziecku powiedzmy jest wywołanie, i szukamy nazwy przestrzeni nazw o numerze dwa, która została podana, ale istnieje za to jej wersji ogólna {{Code|nazwa przestrzeni nazw i}} i domyślna {{Code|nazwa przestrzeni nazw}}, ale wtedy dla tego numerkowego liczy się to ogólne z {{Code| i}}, a ponieważ ta nazwa jest pusta, więc będziemy liczyli nazwę przestrzeni nazw z {{Code|nazwa jednostki 2}}: <syntaxhighlight lang="mediawiki"> {{#invoke:Pudełko|Nazwa przedmiotowej przestrzeni nazw 2|numer jednostki=2}} </syntaxhighlight> Na podstawie powyższego przykładu otrzymamy wynik o schemacie, nie wyniku, bo tam nie ma zmiennej {{Code|nazwa przestrzeni nazw 1}}, ale jest {{Code|nazwa przestrzeni nazw i}}: <syntaxhighlight lang="mediawiki"> <!-- Ale nie "nazwa przestrzeni nazw 2", bo jej nie ma, ale za to istnieje "nazwa przestrzeni nazw i"; --> <!-- nazwa przestrzeni nazw 2=nazwa przestrzeni nazw i="", a nazwa jednostki 2="Dyskusja Wikibooks:Strona"; --> <!-- Czyli wynik: --> Wikibooks <!-- Widzimy, że wygenerowała się nazwa przestrzeni nazw, którą jest przestrzeń nieprogramowa, ale projektu, wychodząca z nazwy jednostek w tym przypadku z "nazwa jednostki 2"; --> </syntaxhighlight> Nie jest brana w tym powyższym przykładzie zmienna {{Code|nazwa przestrzeni nazw}}, bo jej nie ma, ale za to jest {{Code|nazwa przestrzeni nazw i}}, bo ona występuje jako parametr domyślny ogólny dla parametrów numerkowych. Tytaj jest używana jest zmienna {{Code|nazwa jednostki 2}} do wygenerowania ostatecznego wyniku, bo jak można zauważyć, parametry przestrzenne wskazują na przestrzeń główną, a nazwy jednostek już nie. Przykłady w wikikodzie: * {{Code|{{m|Pudełko|Nazwa przedmiotowej przestrzeni nazw 2|numer jednostki{{=}}2}}}} → {{Tt|{{#invoke:Pudełko|Nazwa przedmiotowej przestrzeni nazw 2|numer jednostki=2}}}} * {{Code|{{m|Pudełko|Nazwa przedmiotowej przestrzeni nazw 2|Dyskusja szablonu|nazwa przestrzeni nazw i{{=}}Moja przestrzeń|numer jednostki{{=}}2}}}} → {{Tt|{{#invoke:Pudełko|Nazwa przedmiotowej przestrzeni nazw 2|Dyskusja szablonu|nazwa przestrzeni nazw i=Moja przestrzeń|numer jednostki=2}}}} * {{Code|{{m|Pudełko|Nazwa przedmiotowej przestrzeni nazw 2|nazwa przestrzeni nazw 2{{=}}Dyskusja|nazwa jednostki 2{{=}}Dyskusja szablonu:Strona|numer jednostki{{=}}2}}}} → {{Tt|{{#invoke:Pudełko|Nazwa przedmiotowej przestrzeni nazw 2|nazwa przestrzeni nazw 2=Dyskusja|nazwa jednostki 2=Dyskusja szablonu:Strona|numer jednostki=2}}}} * {{Code|{{m|Pudełko|Nazwa przedmiotowej przestrzeni nazw 2|nazwa przestrzeni nazw i{{=}}Dyskusja|nazwa jednostki 2{{=}}Dyskusja szablonu:Strona|numer jednostki{{=}}2}}}} → {{Tt|{{#invoke:Pudełko|Nazwa przedmiotowej przestrzeni nazw 2|nazwa przestrzeni nazw i=Dyskusja|nazwa jednostki 2=Dyskusja szablonu:Strona|numer jednostki=2}}}} * {{Code|{{m|Pudełko|Nazwa przedmiotowej przestrzeni nazw 2|Dyskusja szablonu|nazwa przestrzeni nazw{{=}}Dyskusja|nazwa jednostki 2{{=}}Wikibooks:Strona|numer jednostki{{=}}2}}}} → {{Tt|{{#invoke:Pudełko|Nazwa przedmiotowej przestrzeni nazw 2|Dyskusja szablonu|nazwa przestrzeni nazw=Dyskusja|nazwa jednostki 2=Dyskusja Wikibooks:Strona|numer jednostki=2}}}} Powyżej dla przykładu podano parametry nie w rodzicu w szablonie, tylko w dziecku, jeśli chodzi o parametry nazw przestrzeni nazw i nazw jednostek, ale ich się za to nie powinno podawać w tych ramach, tylko w szablonach, w których wywoływane są te ramki pudełek {{Code|{{m|Pudełko}}}}, ale tak tutaj tak zrobiono by było najłatwiej sprawdzić działanie tego typu funkcji. Analogicznie możemy podawać parametry typu jednostki, np.: wywołaniu modułowym {{Code|{{m|Pudełko|Nazwa przedmiotowej przestrzeni nazw 2|typ jednostki 2{{=}}Podręcznik|nazwa jednostki 2{{=}}Dyskusja szablonu:Strona|numer jednostki{{=}}2}}}} (ale wtedy jest brana przestrzeń nazw z nazwy jednostki), ale o tym więcej w rozdziałach {{Code|{{sr|# p["Przedmiotowy typ jednostki 2"](frame,i)|p=Pudełko}}}} w „{{sr|#Funkcje typu jednostki|p=Pudełko}}”, on definiuje przestrzenie przedmiotowe, ale można użyć parametru dyskusji typu jednostki z wartością niepustą, pustą, czy nawet jej nie podamy, wtedy wyświetli się nazwa przestrzeni nazw przedmiotowej. Jeżeli typ jednostki wskazuje na przestrzeń nazw główną, wtedy się liczą parametry nazw jednostek. Również parametry typu jednostki nie powinno się podawać w dziecku w ramce, tylko w rodzicu w szablonie jako parametry, w którym ta ramka jest wywoływana, ale tutaj podano jedynie dla przykładu, jak najłatwiej sprawdzić działanie tych parametrów tej funkcji. Najpierw w funkcji nagłówku brane są parametry nazw przestrzeni nazw, a jeżeli ich nie ma, to parametry typu jednostki, a jeżeli nie ma lub parametry przestrzenne wskazują na przestrzeń główną, i nie ma nazwy jednostki, to generowane są nazwy tej funkcji na podstawie aktualnej strony. === {{Code|p["Nazwa przestrzeni nazw dyskusji 2"](frame,...)}} === Funkcja pisze nazwę przestrzeni nazw dyskusji jakikolwiek nazwy przestrzeni nazw (tzn. nazwę dyskusji nazwy przestrzenie nazw, czyli nie przedmiotowej, zamieniana jest na nią samą, czyli identyfikator przestrzeni się nie zmienia, a przedmiotową, nie dyskusji, przekształca się na dyskusji jej odpowiadającą, czyli w tym przypadku identyfikator przestrzeni zwiększa się o numer więcej), według, i nie zawsze tylko, podanej w zmiennej {{Code|nazwa przestrzeni nazw}} dla pozycja bazowej w podanych parametrach szablonu rodzicu ramki dziecka, lub dla innej pozycji należy parametr podawać w formie {{Code|nazwa przestrzeni nazw 1}}, {{Code|nazwa przestrzeni nazw 2}}, {{Code|nazwa przestrzeni nazw 3}},..., lub te parametry można podać w postaci ogólnej {{Code|nazwa przestrzeni nazw i}}. W tej funkcji trzeba też podawać parametry nazwy jednostek {{Code|nazwa jednostki}}, {{Code|nazwa jednostki 1}}, {{Code|nazwa jednostki 2}}, {{Code|nazwa jednostki 3}},... Parametry podaje się w parametrach rodzica wywołania tej funkcji {{Code|{{m|Pudełko|Nazwa przestrzeni nazw dyskusji 2}}}} (ale ich nie trzeba podawać w dziecku, ale można) i w parametrach dziecka, jeśli chodzi o zmienną {{Code|numer jednostki}}, czyli np.: {{Code|{{m|Pudełko|Nazwa przestrzeni nazw dyskusji 2|numer jednostki{{=}}<jakaś liczba całkowita dodatnia>}}}}. Te parametry przestrzenne zamiast w rodzicu w szablonie można podać w ramce dziecka, wtedy parametry dziecka mają pierwszeństwo. Przestrzeń nazw z parametrów nazw przestrzennych po przekształceniu może odpowiadać wartości przestrzeni głównej, to wtedy odpowiednia przestrzeń nazw z parametru nazwy jednostki się liczy w tej funkcji, wtedy jest liczona nazwa przestrzeni nazw dyskusji z tego parametru. Gdy parametry przestrzenne lub typ jednostki w drugim podejściu nie wskazują na przestrzeń główną, to wtedy działanie tej funkcji jest podobne do {{Code|{{sr|#p["Nazwa dyskusji przestrzeni nazw"](frame,...)|p=Pudełko}}}}. Definicja skrótowa funkcji: <syntaxhighlight lang="lua"> p["Nazwa przestrzeni nazw dyskusji 2"]=function(frame,czy_uwzglednic_alternatywna_nazwe,i)...end; </syntaxhighlight> Wtedy ciało funkcji tej, czyli jego definicja w środku, jest: <syntaxhighlight lang="lua"> local pudelko_pomocne_modul=require("Module:Pudełko/Pomocne"); return pudelko_pomocne_modul.Nazwa_przestrzeni_nazw_przedmiotowa_dyskusji_2(frame,czy_uwzglednic_alternatywna_nazwe,i,"dyskusja"); </syntaxhighlight> Parametry funkcji: * {{Code|frame}} - tablica ramki tablicy transportu, * {{Code|czy_uwzglednic_alternatywna_nazwe}} - czy ma uwzględniać nazwę przestrzeni nazw domyślną szablonu, dostępne wartości: {{Code|false}}, w której nazwa domyślna nie jest uwzględniana wtedy, oraz {{Code|nil}} i {{Code|true}}, które oznaczają to samo, w tym jeżeli ona jest uwzględniana, wtedy jest brany parametr pierwszy dziecka, który musi istnieć przy takiej wartości tego parametru, tzn. {{Code|{{m|Pudełko|Nazwa przestrzeni nazw dyskusji 2|Szablon}}}}, nazwa domyślna zostanie zamieniona na dyskusji, a jeżeli jest już taka, to nie ma takiej zamiany, a jeśli nazwa uzyskana nazwy przestrzeni nazw jest w takim przypadku błędna, a jeżeli nazwa domyślna jest błędna, czyli {{Code|{{m|Pudełko|Nazwa przestrzeni nazw dyskusji 2|Moja przestrzeń}}}}, wtedy funkcja zwraca stan błędu {{Code|(błąd)}}. * {{Code|i}} - numer zmiennej nazwy przestrzeni nazw. Funkcja wykorzystuje {{Code|{{sr|#p.Nazwa_przestrzeni_nazw_przedmiotowa_dyskusji_2(frame,...)|p=Pudełko/Pomocne}}}} do wyznaczania ogólnego nazwy przestrzeni nazw dla pozycji bazowej i numerkowej, tzn. dla pozycji: jeden, dwa, trzy,..., itd, i ich ogólnej. Parametr ramki tablicy transportu rodzica szablonu: * {{Code|nazwa przestrzeni nazw}}, {{Code|nazwa przestrzeni nazw 1}}, {{Code|nazwa przestrzeni nazw 2}}, {{Code|nazwa przestrzeni nazw 3}},..., {{Code|nazwa przestrzeni nazw i}} - nazwy przestrzeni nazw dla pozycji bazowej oraz zwykłej i ogólnej numerkowej, * {{Code|nazwa jednostki}}, {{Code|nazwa jednostki 1}}, {{Code|nazwa jednostki 2}}, {{Code|nazwa jednostki 3}},... - nazwy jednostek dla pozycji bazowej i numerkowej, * {{Code|typ jednostki}}, {{Code|typ jednostki 1}}, {{Code|typ jednostki 2}}, {{Code|typ jednostki 3}},..., {{Code|typ jednostki i}} - typy jednostek, którym odpowiadają pewne przestrzenie przedmiotowe, dla pozycji bazowej, numerkowej i ogólnej. Parametry ramki tablicy transportu dziecka: * Parametry dziecka są takie same jak rodzica dla funkcji pudełkowej plus tu wymienione, * {{Code|numer jednostki}} - jak parametr {{Code|i}} nie został ustawiony, to wtedy liczy się ta zmienna. Przykłady: <syntaxhighlight lang="mediawiki"> {{Nazwa szablonu|nazwa przestrzeni nazw=Wikibooks|nazwa przestrzeni nazw 1=Szablon|nazwa przestrzeni nazw i=|nazwa jednostki 2=Wikibooks:Strona}} </syntaxhighlight> W dziecku powiedzmy jest wywołanie, i szukamy nazwy przestrzeni nazw o numerze dwa, która została podana, ale istnieje za to jej wersji ogólna {{Code|nazwa przestrzeni nazw i}} i domyślna {{Code|nazwa przestrzeni nazw}}, ale wtedy dla tego numerkowego liczy się to ogólne z {{Code| i}}, a ponieważ ta nazwa jest pusta, więc będziemy liczyli nazwę przestrzeni nazw z {{Code|nazwa jednostki 2}}: <syntaxhighlight lang="mediawiki"> {{#invoke:Pudełko|Nazwa przestrzeni nazw dyskusji 2|numer jednostki=2}} </syntaxhighlight> Na podstawie powyższego przykładu otrzymamy wynik o schemacie, nie wyniku, bo tam nie ma zmiennej {{Code|nazwa przestrzeni nazw 1}}, ale jest {{Code|nazwa przestrzeni nazw i}}: <syntaxhighlight lang="mediawiki"> <!-- Ale nie "nazwa przestrzeni nazw 2", bo jej nie ma, ale za to istnieje "nazwa przestrzeni nazw i"; --> <!-- nazwa przestrzeni nazw 2=nazwa przestrzeni nazw i="", a nazwa jednostki 2="Wikibooks:Strona"; --> <!-- Czyli wynik: --> Dyskusja Wikibooks <!-- Widzimy, że wygenerowała się nazwa przestrzeni nazw, którą jest przestrzeń nieprogramowa, ale dyskusji projektu, wychodząca z nazwy jednostek w tym przypadku z "nazwa jednostki 2"; --> </syntaxhighlight> Nie jest brana w tym powyższym przykładzie zmienna {{Code|nazwa przestrzeni nazw}}, bo jej nie ma, ale za to jest {{Code|nazwa przestrzeni nazw i}}, bo ona występuje jako parametr domyślny ogólny dla parametrów numerkowych. Tytaj jest używana jest zmienna {{Code|nazwa jednostki 2}} do wygenerowania ostatecznego wyniku, bo jak można zauważyć, parametry przestrzenne wskazują na przestrzeń główną, a nazwy jednostek już nie. Przykłady w wikikodzie: * {{Code|{{m|Pudełko|Nazwa przestrzeni nazw dyskusji 2|numer jednostki{{=}}2}}}} → {{Tt|{{#invoke:Pudełko|Nazwa przestrzeni nazw dyskusji 2|numer jednostki=2}}}} * {{Code|{{m|Pudełko|Nazwa przestrzeni nazw dyskusji 2|Szablon|nazwa przestrzeni nazw i{{=}}Moja przestrzeń|numer jednostki{{=}}2}}}} → {{Tt|{{#invoke:Pudełko|Nazwa przestrzeni nazw dyskusji 2|Szablon|nazwa przestrzeni nazw i=Moja przestrzeń|numer jednostki=2}}}} * {{Code|{{m|Pudełko|Nazwa przestrzeni nazw dyskusji 2|nazwa przestrzeni nazw 2{{=}}|nazwa jednostki 2{{=}}Szablon:Strona|numer jednostki{{=}}2}}}} → {{Tt|{{#invoke:Pudełko|Nazwa przestrzeni nazw dyskusji 2|nazwa przestrzeni nazw 2=|nazwa jednostki 2=Szablon:Strona|numer jednostki=2}}}} * {{Code|{{m|Pudełko|Nazwa przestrzeni nazw dyskusji 2|nazwa przestrzeni nazw i{{=}}|nazwa jednostki 2{{=}}Szablon:Strona|numer jednostki{{=}}2}}}} → {{Tt|{{#invoke:Pudełko|Nazwa przestrzeni nazw dyskusji 2|nazwa przestrzeni nazw i=|nazwa jednostki 2=Szablon:Strona|numer jednostki=2}}}} * {{Code|{{m|Pudełko|Nazwa przestrzeni nazw dyskusji 2|Szablon|nazwa przestrzeni nazw{{=}}|nazwa jednostki 2{{=}}Wikibooks:Strona|numer jednostki{{=}}2}}}} → {{Tt|{{#invoke:Pudełko|Nazwa przestrzeni nazw dyskusji 2|Szablon|nazwa przestrzeni nazw=|nazwa jednostki 2=Dyskusja Wikibooks:Strona|numer jednostki=2}}}} Powyżej dla przykładu podano parametry nie w rodzicu w szablonie, tylko w dziecku, jeśli chodzi o parametry nazw przestrzeni nazw i nazw jednostek, ale ich się za to nie powinno podawać w tych ramach, tylko w szablonach, w których wywoływane są te ramki pudełek {{Code|{{m|Pudełko}}}}, ale tak tutaj tak zrobiono by było najłatwiej sprawdzić działanie tego typu funkcji. Analogicznie możemy podawać parametry typu jednostki, np.: wywołaniu modułowym {{Code|{{m|Pudełko|Nazwa przestrzeni nazw dyskusji 2|typ jednostki 2{{=}}Podręcznik|nazwa jednostki 2{{=}}Szablon:Strona|numer jednostki{{=}}2}}}} (ale wtedy jest brana przestrzeń nazw z nazwy jednostki), ale o tym więcej w rozdziałach {{Code|{{sr|# p["Dyskusyjny typ jednostki 3"](frame,i)|p=Pudełko}}}} w „{{sr|#Funkcje typu jednostki|p=Pudełko}}”, one definiują przestrzenie dyskusji, ale można użyć parametru dyskusji typu jednostki z obojętnie jaką wartością niepustą, czy pustą, czy nawet jej nie podamy, wtedy wyświetli się nazwa przestrzeni nazw dyskusji. Jeżeli typ jednostki wskazuje na przestrzeń nazw główną, wtedy się liczą parametry nazw jednostek. Również parametry typu jednostki nie powinno się podawać w dziecku w ramce, tylko w rodzicu w szablonie jako parametry, w którym ta ramka jest wywoływana, ale tutaj podano jedynie dla przykładu, jak najłatwiej sprawdzić działanie tych parametrów tej funkcji. Najpierw w funkcji nagłówku brane są parametry nazw przestrzeni nazw, a jeżeli ich nie ma, to parametry typu jednostki, a jeżeli nie ma lub parametry przestrzenne wskazują na przestrzeń główną, i nie ma nazwy jednostki, to generowane są nazwy tej funkcji na podstawie aktualnej strony. == Funkcje pełnych nazw jednostki == === {{Code|p["Pełna nazwa dyskusji jednostki"](frame,i)}} === === {{Code|p["Pełna nazwa przedmiotowa jednostki"](frame,i)}} === === {{Code|p["Pełna nazwa jednostki"](frame,i)}} === == Funkcje pełnych nazw jednostki drugiej wersji == === {{Code|p["Pełna nazwa dyskusji jednostki 2"](frame,i)}} === === {{Code|p["Pełna nazwa przedmiotowa jednostki 2"](frame,i)}} === === {{Code|p["Pełna nazwa jednostki 2"](frame,i)}} === == Funkcje pełnych nazw jednostki trzeciej wersji == === {{Code|p["Pełna nazwa dyskusji jednostki 3"](frame,i)}} === === {{Code|p["Pełna nazwa przedmiotowa jednostki 3"](frame,i)}} === === {{Code|p["Pełna nazwa jednostki 3"](frame,i)}} === == Funkcje nazw jednostki == === {{Code|p["Nazwa jednostki"](frame,i)}} === == Funkcje nazw jednostki drugiej wersji == === {{Code|p["Nazwa jednostki 2"](frame,i)}} === === {{Code|p["Nazwa przedmiotowa jednostki 2"](frame,i)}} === === {{Code|p["Nazwa dyskusji jednostki 2"](frame,i)}} === == Funkcje nazw przestrzeni nazw trzeciej wersji == === {{Code|p["Nazwa przestrzeni nazw 3"](frame,i)}} === Funkcja pisze nazwę przestrzeni nazw, niezależnie, czy to jest przedmiotowa, czy dyskusji, według, i nie zawsze tylko, podanej w zmiennej {{Code|nazwa przestrzeni nazw}} dla pozycja bazowej w podanych parametrach szablonu rodzicu ramki dziecka, lub dla innej pozycji należy parametr podawać w formie {{Code|nazwa przestrzeni nazw 1}}, {{Code|Nazwa przestrzeni nazw 3}}, {{Code|nazwa przestrzeni nazw 3}},..., lub te parametry można podać w postaci ogólnej {{Code|nazwa przestrzeni nazw i}}. W tej funkcji trzeba też podawać parametry nazwy jednostek {{Code|nazwa jednostki}}, {{Code|nazwa jednostki 1}}, {{Code|nazwa jednostki 2}}, {{Code|nazwa jednostki 3}},... Parametry podaje się w parametrach rodzica wywołania tej funkcji {{Code|{{m|Pudełko|Nazwa przestrzeni nazw 3}}}} (ale ich nie trzeba podawać w dziecku, ale można) i w parametrach dziecka, jeśli chodzi o zmienną {{Code|numer jednostki}}, czyli np.: {{Code|{{m|Pudełko|Nazwa przestrzeni nazw 3|numer jednostki{{=}}<jakaś liczba całkowita dodatnia>}}}}. Te parametry przestrzenne zamiast w rodzicu w szablonie można podać w ramce dziecka, wtedy parametry dziecka mają pierwszeństwo. Przestrzeń nazw z parametrów nazw przestrzennych bazowych (bez numerka) może odpowiadać wartości przestrzeni głównej, to wtedy odpowiednia przestrzeń nazw z parametru nazwy jednostki się nie liczy w tej funkcji, aby się liczyła należy użyć funkcji {{Code|{{sr|#p["Nazwa przestrzeni nazw 2"](frame,...)|p=Pudełko}}}}. W tym przypadku funkcja działa jak {{Code|{{sr|#p["Nazwa przestrzeni nazw"](frame,...)|p=Pudełko}}}}. Przestrzeń nazw z parametrów nazw przestrzennych numerkowych może odpowiadać wartości przestrzeni głównej, to wtedy odpowiednia przestrzeń nazw z parametru nazwy jednostki się liczy w tej funkcji, wtedy jest liczona nazwa przestrzeni nazw z tego parametru. Gdy parametry przestrzenne lub typ jednostki w drugim podejściu nie wskazują na przestrzeń główną, to wtedy działanie tej funkcji jest podobne do {{Code|{{sr|#p["Nazwa przestrzeni nazw 2"](frame,...)|p=Pudełko}}}}. Definicja skrótowa funkcji: <syntaxhighlight lang="lua"> p["Nazwa przestrzeni nazw 3"]=function(frame,czy_uwzglednic_alternatywna_nazwe,i)...end; </syntaxhighlight> Wtedy ciało funkcji tej, czyli jego definicja w środku, jest: <syntaxhighlight lang="lua"> -- Jest liczony numer parametru nazwy przestrzeni nazw, domyslnie chodzi tu o numer bazowy parametrów przestrzennych; local numer_jednostki=i or frame.args["numer jednostki"]; local liczba_numeru_jednostki=((numer_jednostki)and(tonumber(numer_jednostki)) or 0); local pudelko_pomocne_modul=require("Module:Pudełko/Pomocne"); -- Liczy nazwę przestrzeni nazw dyskusji na podstawie podanych parametrów; return pudelko_pomocne_modul.Uzyskanie_nazw_jednostki(frame,0,liczba_numeru_jednostki,nil,2); </syntaxhighlight> Parametry funkcji: * {{Code|frame}} - tablica ramki tablicy transportu, * {{Code|czy_uwzglednic_alternatywna_nazwe}} - czy ma uwzględniać nazwę przestrzeni nazw domyślną szablonu, dostępne wartości: {{Code|false}}, w której nazwa domyślna nie jest uwzględniana wtedy, oraz {{Code|nil}} i {{Code|true}}, które oznaczają to samo, w tym jeżeli ona jest uwzględniana, wtedy jest brany parametr pierwszy dziecka, który musi istnieć przy takiej wartości tego parametru, tzn. {{Code|{{m|Pudełko|Nazwa przestrzeni nazw 3|Szablon}}}}, a jeśli nazwa uzyskana nazwy przestrzeni nazw jest w takim przypadku błędna, a jeżeli nazwa domyślna jest błędna, czyli {{Code|{{m|Pudełko|Nazwa przestrzeni nazw 3|Moja przestrzeń}}}}, wtedy funkcja zwraca stan błędu {{Code|(błąd)}}. * {{Code|i}} - numer zmiennej nazwy przestrzeni nazw. Funkcja wykorzystuje {{Code|{{sr|#p.Uzyskanie_nazw_jednostki(frame,...)|p=Pudełko/Pomocne}}}} do wyznaczania ogólnego nazwy przestrzeni nazw dla pozycji bazowej i numerkowej, tzn. dla pozycji: jeden, dwa, trzy,..., itd, i ich ogólnej. Parametr ramki tablicy transportu rodzica szablonu: * {{Code|nazwa przestrzeni nazw}}, {{Code|nazwa przestrzeni nazw 1}}, {{Code|Nazwa przestrzeni nazw 3}}, {{Code|nazwa przestrzeni nazw 3}},..., {{Code|nazwa przestrzeni nazw i}} - nazwy przestrzeni nazw dla pozycji bazowej oraz zwykłej i ogólnej numerkowej, * {{Code|nazwa jednostki}}, {{Code|nazwa jednostki 1}}, {{Code|nazwa jednostki 2}}, {{Code|nazwa jednostki 3}},... - nazwy jednostek dla pozycji bazowej i numerkowej, * {{Code|typ jednostki}}, {{Code|typ jednostki 1}}, {{Code|typ jednostki 2}}, {{Code|typ jednostki 3}},..., {{Code|typ jednostki i}} - typy jednostek, którym odpowiadają pewne przestrzenie przedmiotowe, dla pozycji bazowej, numerkowej i ogólnej, ** {{Code|dyskusja typu jednostki}}, {{Code|dyskusja typu jednostki 1}}, {{Code|dyskusja typ jednostki 2}}, {{Code|dyskusja typ jednostki 3}},..., {{Code|dyskusja typ jednostki i}} - czy dany typ jednostki ma przedstawiać, jeśli niepusta, przestrzeń dyskusji dla pozycji bazowej, numerkowej i ogólnej. Parametry ramki tablicy transportu dziecka: * Parametry dziecka są takie same jak rodzica dla funkcji pudełkowej plus tu wymienione, * {{Code|numer jednostki}} - jak parametr {{Code|i}} nie został ustawiony, to wtedy liczy się ta zmienna. Przykłady: <syntaxhighlight lang="mediawiki"> {{Nazwa szablonu 1|nazwa przestrzeni nazw=Wikibooks|nazwa przestrzeni nazw=|nazwa przestrzeni nazw i=|nazwa jednostki=Szablon:Strona}} ---- {{Nazwa szablonu 2|nazwa przestrzeni nazw=Wikibooks|nazwa przestrzeni nazw 1=Szablon|nazwa przestrzeni nazw i=|nazwa jednostki 2=Wikibooks:Strona}} </syntaxhighlight> W pierwszym wywołaniu {{Code|nazwa przestrzeni nazw}} jest puste, ale dla tego bazowego (bez numerka) szukamy przestrzeni nazw, a więc ta nazwa jest ostateczna. ---- W drugim wywołaniu w dziecku powiedzmy jest wywołanie, i szukamy nazwy przestrzeni nazw o numerze dwa, która została podana, ale istnieje za to jej wersji ogólna {{Code|nazwa przestrzeni nazw i}} i domyślna {{Code|nazwa przestrzeni nazw}}, ale wtedy dla tego numerkowego liczy się to ogólne z {{Code| i}}, a ponieważ ta nazwa jest pusta, więc będziemy liczyli nazwę przestrzeni nazw z {{Code|nazwa jednostki 2}}. Odpowiadająca powyższemu kodowi, powiedzmy wikikod, według ich zawartości, przedstawia się: <syntaxhighlight lang="mediawiki"> {{#invoke:Pudełko|Nazwa przestrzeni nazw 3}} ---- {{#invoke:Pudełko|Nazwa przestrzeni nazw 3|numer jednostki=2}} </syntaxhighlight> Na podstawie powyższego przykładu otrzymamy wynik o schemacie, nie wyniku, bo tam nie ma zmiennej {{Code|nazwa przestrzeni nazw 1}}, ale jest {{Code|nazwa przestrzeni nazw i}}: <syntaxhighlight lang="mediawiki"> <!-- nazwa przestrzeni nazw=""; --> <!-- Czyli wynik: --> <!-- wynik pusty --> <!-- Widzimy, że wygenerowała się nazwa przestrzeni nazw, którą jest przestrzeń nazw główna, jest ciągiem pustym: ""; --> ---- <!-- Ale nie "nazwa przestrzeni nazw 2", bo jej nie ma, ale za to istnieje "nazwa przestrzeni nazw i"; --> <!-- nazwa przestrzeni nazw 2=nazwa przestrzeni nazw i="", a nazwa jednostki 2="Wikibooks:Strona"; --> <!-- Czyli wynik: --> Wikibooks <!-- Widzimy, że wygenerowała się nazwa przestrzeni nazw, którą jest przestrzeń nieprogramowa, ale projektu, wychodząca z nazwy jednostek w tym przypadku z "nazwa jednostki 2"; --> </syntaxhighlight> Dla parametrów numerkowych nie jest brana w tym powyższym przykładzie zmienna {{Code|nazwa przestrzeni nazw 2}}, bo jej nie ma, ale za to jest {{Code|nazwa przestrzeni nazw i}}, bo ona występuje jako parametr domyślny ogólny dla parametrów numerkowych. Tytaj jest używana jest zmienna {{Code|nazwa jednostki 2}} do wygenerowania ostatecznego wyniku, bo jak można zauważyć, parametry przestrzenne wskazują na przestrzeń główną, a nazwy jednostek już nie. Dla parametrów bazowych mamy zmienną {{Code|nazwa przestrzeni nazw}}, ona jest pusta, więc to zostanie wziete do ostatecznego wyniku. Przykłady w wikikodzie: * {{Code|{{m|Pudełko|Nazwa przestrzeni nazw 3|Szablon|nazwa przestrzeni nazw{{=}}Moja przestrzeń|nazwa jednostki{{=}}Wikibooks:Strona}}}} → {{Tt|{{#invoke:Pudełko|Nazwa przestrzeni nazw 3|Szablon|nazwa przestrzeni nazw=Moja przestrzeń|nazwa jednostki=Wikibooks:Szablon}}}} * {{Code|{{m|Pudełko|Nazwa przestrzeni nazw 3|Szablon|nazwa przestrzeni nazw 2{{=}}Moja przestrzeń|nazwa jednostki 2{{=}}Wikibooks:Strona}|numer jednostki{{=}}2}}}} → {{Tt|{{#invoke:Pudełko|Nazwa przestrzeni nazw 3|Szablon|nazwa przestrzeni nazw 2=Moja przestrzeń|nazwa jednostki 2=Wikibooks:Szablon|numer jednostki=2}}}} * {{Code|{{m|Pudełko|Nazwa przestrzeni nazw 3|nazwa przestrzeni nazw{{=}}|nazwa jednostki{{=}}Wikibooks:Strona}}}} → {{Tt|{{#invoke:Pudełko|Nazwa przestrzeni nazw 3|nazwa przestrzeni nazw=|nazwa jednostki=Wikibooks:Szablon}}}} * {{Code|{{m|Pudełko|Nazwa przestrzeni nazw 3|nazwa przestrzeni nazw 2{{=}}|nazwa jednostki 2{{=}}Wikibooks:Strona|numer jednostki{{=}}2}}}} → {{Tt|{{#invoke:Pudełko|Nazwa przestrzeni nazw 3|nazwa przestrzeni nazw 2=|nazwa jednostki 2=Wikibooks:Szablon|numer jednostki=2}}}} Powyżej dla przykładu podano parametry nie w rodzicu w szablonie, tylko w dziecku, jeśli chodzi o parametry nazw przestrzeni nazw i nazw jednostek, ale ich się za to nie powinno podawać w tych ramach, tylko w szablonach, w których wywoływane są te ramki pudełek {{Code|{{m|Pudełko}}}}, ale tak tutaj tak zrobiono by było najłatwiej sprawdzić działanie tego typu funkcji. Analogicznie możemy podawać parametry typu jednostki, np.: wywołaniu modułowym {{Code|{{m|Pudełko|Nazwa przestrzeni nazw 3|typ jednostki 2{{=}}Podręcznik|nazwa jednostki 2{{=}}Szablon:Strona|numer jednostki{{=}}2}}}} (ale wtedy jest brana przestrzeń nazw z nazwy jednostki), ale o tym więcej w rozdziałach {{Code|{{sr|#p["Typ jednostki 3"](frame,i)|p=Pudełko}}}} w „{{sr|#Funkcje typu jednostki|p=Pudełko}}”, on definiuje przestrzenie przedmiotowe, ale można użyć parametru dyskusji typu jednostki z wartością niepustą, wtedy wyświetli się nazwa przestrzeni nazw dyskusji. Jeżeli typ jednostki bazowy wskazuje na przestrzeń nazw główną, wtedy się nie liczą parametry nazw jednostek, a na numerkowy, wtedy się liczy. Również parametry typu jednostki nie powinno się podawać w dziecku w ramce, tylko w rodzicu w szablonie jako parametry, w którym ta ramka jest wywoływana, ale tutaj podano jedynie dla przykładu, jak najłatwiej sprawdzić działanie tych parametrów tej funkcji. Najpierw w funkcji nagłówku brane są parametry nazw przestrzeni nazw, a jeżeli ich nie ma, to parametry typu jednostki, a jeżeli nie ma lub parametry przestrzenne wskazują na przestrzeń główną, i nie ma nazwy jednostki, to generowane są nazwy tej funkcji na podstawie aktualnej strony. === {{Code|p["Nazwa przedmiotowej przestrzeni nazw 3"](frame,i)}} === Funkcja pisze przedmiotową nazwę przestrzeni nazw jakikolwiek nazwy przestrzeni nazw (tzn. nazwę przedmiotową nazwy przestrzenie nazw, czyli nie dyskusji, zamieniana jest na nią samą, czyli identyfikator przestrzeni się nie zmienia, a dyskusji, nie przedmiotową, przekształca się na przedmiotową jej odpowiadającą, czyli w tym przypadku identyfikator przestrzeni zmniejsza się o numer mniej), według podanej w zmiennej {{Code|nazwa przestrzeni nazw}} dla pozycja bazowej w podanych parametrach szablonu rodzicu ramki dziecka, lub dla innej pozycji należy parametr podawać w formie {{Code|nazwa przestrzeni nazw 1}}, {{Code|nazwa przestrzeni nazw 2}}, {{Code|nazwa przestrzeni nazw 3}},..., lub te parametry można podać w postaci ogólnej {{Code|nazwa przestrzeni nazw i}}. Parametry podaje się w parametrach rodzica wywołania tej funkcji {{Code|{{m|Pudełko|Nazwa przedmiotowej przestrzeni nazw 3}}}} (ale ich nie trzeba podawać w dziecku, ale można) i w parametrach dziecka, jeśli chodzi o zmienną {{Code|numer jednostki}}, czyli np.: {{Code|{{m|Pudełko|Nazwa przedmiotowej przestrzeni nazw 3|numer jednostki{{=}}<jakaś liczba całkowita dodatnia>}}}}. Te parametry przestrzenne zamiast w rodzicu w szablonie można podać w ramce dziecka, wtedy parametry dziecka mają pierwszeństwo. Parametry przestrzenne mogą mogą być podane w postaci przestrzeni przedmiotowej lub dyskusji, ale ta funkcja zawsze ją zamienia na przedmiotową. Przestrzeń nazw z parametrów nazw przestrzennych bazowych (bez numerka) może odpowiadać wartości przestrzeni głównej, to wtedy odpowiednia przestrzeń nazw z parametru nazwy jednostki się nie liczy w tej funkcji, aby się liczyła należy użyć funkcji {{Code|{{sr|#p["Nazwa przedmiotowej przestrzeni nazw 2"](frame,...)|p=Pudełko}}}}. W tym przypadku funkcja działa jak {{Code|{{sr|#p["Nazwa przedmiotowej przestrzeni nazw"](frame,...)|p=Pudełko}}}}. Przestrzeń nazw z parametrów nazw przestrzennych numerkowych może odpowiadać wartości przestrzeni głównej, to wtedy odpowiednia przestrzeń nazw z parametru nazwy jednostki się liczy w tej funkcji, wtedy jest liczona nazwa przestrzeni nazw z tego parametru. Gdy parametry przestrzenne lub typ jednostki w drugim podejściu nie wskazują na przestrzeń główną, to wtedy działanie tej funkcji jest podobne do {{Code|{{sr|#p["Nazwa przedmiotowej przestrzeni nazw 2"](frame,...)|p=Pudełko}}}}. Definicja skrótowa funkcji: <syntaxhighlight lang="lua"> p["Nazwa przedmiotowej przestrzeni nazw 3"]=function(frame,czy_uwzglednic_alternatywna_nazwe,i)...end; </syntaxhighlight> Wtedy ciało funkcji tej, czyli jego definicja w środku, jest: <syntaxhighlight lang="lua"> -- Jest liczony numer parametru nazwy przestrzeni nazw, domyslnie chodzi tu o numer bazowy parametrów przestrzennych; local numer_jednostki=i or frame.args["numer jednostki"]; local liczba_numeru_jednostki=((numer_jednostki)and(tonumber(numer_jednostki)) or 0); local pudelko_pomocne_modul=require("Module:Pudełko/Pomocne"); -- Liczy nazwę przestrzeni nazw przedmiotową na podstawie podanych parametrów; return pudelko_pomocne_modul.Uzyskanie_nazw_jednostki(frame,1,liczba_numeru_jednostki,nil,1); </syntaxhighlight> Parametry funkcji: * {{Code|frame}} - tablica ramki tablicy transportu, * {{Code|czy_uwzglednic_alternatywna_nazwe}} - czy ma uwzględniać nazwę przestrzeni nazw domyślną szablonu, dostępne wartości: {{Code|false}}, w której nazwa domyślna nie jest uwzględniana wtedy, oraz {{Code|nil}} i {{Code|true}}, które oznaczają to samo, w tym jeżeli ona jest uwzględniana, wtedy jest brany parametr pierwszy dziecka, który musi istnieć przy takiej wartości tego parametru, tzn. {{Code|{{m|Pudełko|Nazwa przedmiotowej przestrzeni nazw 3|Dyskusja szablonu}}}} - ta nazwa domyślna zostanie zamieniona na przedmiotową, a jak ona by była przedmiotowa, to żadnej zamiany by nie było, a nazwa uzyskana z nazwy przestrzeni nazw z parametrów przestrzennych jest w takim przypadku błędna, to w takim razie brany jest ten parametr, a jeżeli ta nazwa domyślna jest błędna, czyli {{Code|{{m|Pudełko|Nazwa przedmiotowej przestrzeni nazw 3|Moja przestrzeń}}}}, wtedy funkcja zwraca stan błędu {{Code|(błąd)}}. * {{Code|i}} - numer zmiennej nazwy przestrzeni nazw. Funkcja wykorzystuje {{Code|{{sr|#p.Uzyskanie_nazw_jednostki(frame,...)|p=Pudełko/Pomocne}}}} do wyznaczania ogólnego nazwy przestrzeni nazw dla pozycji bazowej i numerkowej, tzn. dla pozycji: jeden, dwa, trzy,..., itd, i ich ogólnej. Parametr ramki tablicy transportu rodzica szablonu: * {{Code|nazwa przestrzeni nazw}}, {{Code|nazwa przestrzeni nazw 1}}, {{Code|nazwa przestrzeni nazw 2}}, {{Code|nazwa przestrzeni nazw 3}},..., {{Code|nazwa przestrzeni nazw i}} - nazwy przestrzeni nazw dla pozycji bazowej oraz zwykłej i ogólnej numerkowej, * {{Code|typ jednostki}}, {{Code|typ jednostki 1}}, {{Code|typ jednostki 2}}, {{Code|typ jednostki 3}},..., {{Code|typ jednostki i}} - typy jednostek, którym odpowiadają pewne przestrzenie przedmiotowe, dla pozycji bazowej, numerkowej i ogólnej. Parametry ramki tablicy transportu dziecka: * Parametry dziecka są takie same jak rodzica dla funkcji pudełkowej plus tu wymienione, * {{Code|numer jednostki}} - jak parametr {{Code|i}} nie został ustawiony, to wtedy liczy się ta zmienna. Przykłady: <syntaxhighlight lang="mediawiki"> {{Nazwa szablonu 1|nazwa przestrzeni nazw=Wikibooks|nazwa przestrzeni nazw=|nazwa przestrzeni nazw i=|nazwa jednostki=Dyskusja Wikibooks:Strona}} ---- {{Nazwa szablonu 2|nazwa przestrzeni nazw=Wikibooks|nazwa przestrzeni nazw 1=Szablon|nazwa przestrzeni nazw i=|nazwa jednostki 2=Dyskusja Wikibooks:Strona}} </syntaxhighlight> W pierwszym wywołaniu {{Code|nazwa przestrzeni nazw}} jest puste, ale dla tego bazowego (bez numerka) szukamy przestrzeni nazw, a więc ta nazwa jest ostateczna. ---- W drugim wywołaniu w dziecku powiedzmy jest wywołanie, i szukamy nazwy przestrzeni nazw o numerze dwa, która została podana, ale istnieje za to jej wersji ogólna {{Code|nazwa przestrzeni nazw i}} i domyślna {{Code|nazwa przestrzeni nazw}}, ale wtedy dla tego numerkowego liczy się to ogólne z {{Code| i}}, a ponieważ ta nazwa jest pusta, więc będziemy liczyli nazwę przestrzeni nazw z {{Code|nazwa jednostki 2}}. Odpowiadająca powyższemu kodowi, powiedzmy wikikod, według ich zawartości, przedstawia się: <syntaxhighlight lang="mediawiki"> {{#invoke:Pudełko|Nazwa przedmiotowej przestrzeni nazw 3}} ---- {{#invoke:Pudełko|Nazwa przedmiotowej przestrzeni nazw 3|numer jednostki=2}} </syntaxhighlight> Na podstawie powyższego przykładu otrzymamy wynik o schemacie, nie wyniku, bo tam nie ma zmiennej {{Code|nazwa przestrzeni nazw 1}}, ale jest {{Code|nazwa przestrzeni nazw i}}: <syntaxhighlight lang="mediawiki"> <!-- nazwa przestrzeni nazw=""; --> <!-- Czyli wynik: --> <!-- wynik pusty --> <!-- Widzimy, że wygenerowała się nazwa przestrzeni nazw, którą jest przestrzeń nazw główna, jest ciągiem pustym: ""; --> ---- <!-- Ale nie "nazwa przestrzeni nazw 2", bo jej nie ma, ale za to istnieje "nazwa przestrzeni nazw i"; --> <!-- nazwa przestrzeni nazw 2=nazwa przestrzeni nazw i="", a nazwa jednostki 2="Dyskusja Wikibooks:Strona"; --> <!-- Czyli wynik: --> Wikibooks <!-- Widzimy, że wygenerowała się nazwa przestrzeni nazw, którą jest przestrzeń nieprogramowa, ale projektu, wychodząca z nazwy jednostek w tym przypadku z "nazwa jednostki 2"; --> </syntaxhighlight> Dla parametrów numerkowych nie jest brana w tym powyższym przykładzie zmienna {{Code|nazwa przestrzeni nazw 2}}, bo jej nie ma, ale za to jest {{Code|nazwa przestrzeni nazw i}}, bo ona występuje jako parametr domyślny ogólny dla parametrów numerkowych. Tytaj jest używana jest zmienna {{Code|nazwa jednostki 2}} do wygenerowania ostatecznego wyniku, bo jak można zauważyć, parametry przestrzenne wskazują na przestrzeń główną, a nazwy jednostek już nie. Dla parametrów bazowych mamy zmienną {{Code|nazwa przestrzeni nazw}}, ona jest pusta, więc to zostanie wziete do ostatecznego wyniku. Przykłady w wikikodzie: * {{Code|{{m|Pudełko|Nazwa przedmiotowej przestrzeni nazw 3|Dyskusja szablonu|nazwa przestrzeni nazw{{=}}Moja przestrzeń|nazwa jednostki{{=}}Dyskusja Wikibooks:Strona}}}} → {{Tt|{{#invoke:Pudełko|Nazwa przedmiotowej przestrzeni nazw 3|Dyskusja szablonu|nazwa przestrzeni nazw=Moja przestrzeń||nazwa jednostki=Dyskusja Wikibooks:Szablon}}}} * {{Code|{{m|Pudełko|Nazwa przedmiotowej przestrzeni nazw 3|Dyskusja szablonu|nazwa przestrzeni nazw 2{{=}}Moja przestrzeń|nazwa jednostki 2{{=}}Dyskusja Wikibooks:Strona|numer jednostki{{=}}2}}}} → {{Tt|{{#invoke:Pudełko|Nazwa przedmiotowej przestrzeni nazw 3|Dyskusja szablonu|nazwa przestrzeni nazw 2=Moja przestrzeń||nazwa jednostki 2=Dyskusja Wikibooks:Szablon|numer jednostki=2}}}} * {{Code|{{m|Pudełko|Nazwa przedmiotowej przestrzeni nazw 3|nazwa przestrzeni nazw{{=}}|nazwa jednostki{{=}}Dyskusja Wikibooks:Strona}}}} → {{Tt|{{#invoke:Pudełko|Nazwa przedmiotowej przestrzeni nazw 3|nazwa przestrzeni nazw=|nazwa jednostki=Dyskusja Wikibooks:Szablon}}}} * {{Code|{{m|Pudełko|Nazwa przedmiotowej przestrzeni nazw 3|nazwa przestrzeni nazw 2{{=}}|nazwa jednostki 2{{=}}Dyskusja Wikibooks:Strona|numer jednostki{{=}}2}}}} → {{Tt|{{#invoke:Pudełko|Nazwa przedmiotowej przestrzeni nazw 3|nazwa przestrzeni nazw 2=|nazwa jednostki 2=Dyskusja Wikibooks:Szablon|numer jednostki=2}}}} Powyżej dla przykładu podano parametry nie w rodzicu w szablonie, tylko w dziecku, jeśli chodzi o parametry nazw przestrzeni nazw, ale ich się za to nie powinno podawać w tych ramach, tylko w szablonach, w których wywoływane są te ramki pudełek {{Code|{{m|Pudełko}}}}, ale tak tutaj tak zrobiono by było najłatwiej sprawdzić działanie tego typu funkcji. Analogicznie możemy podawać parametry typu jednostki, np.: wywołaniu modułowym {{Code|{{m|Pudełko|Nazwa przedmiotowej przestrzeni nazw 3|typ jednostki 2{{=}}strona szablonu|numer jednostki{{=}}2}}}}, ale o tym więcej w rozdziałach {{Code|{{sr|# p["Przedmiotowy typ jednostki 3"](frame,i)|p=Pudełko}}}} w „{{sr|#Funkcje typu jednostki|p=Pudełko}}”, ale wtedy ta sama nazwa przestrzeni nazw reprezentowana przez {{Parametr|typ jednostki 2|strona szablonu}}, jest zamieniana na to samo, lepiej jest tutaj używać parametrów przestrzennych nazw niż typu jednostki, bo typ jednostki ma taką samą wartość dla przestrzeni przedmiotowej, co dyskusji. Tutaj parametr dyskusji typu jednostki bazowy i numerkowy ogólny, czy szczegółowy, nie gra roli, bo nawet, gdy wygenerujemy nazwę przestrzeni dyskusji za pomoca tego parametru, to i tak otrzymamy na samym końcu jego nazwę przedmiotową. Jeżeli typ jednostki bazowy wskazuje na przestrzeń nazw główną, wtedy się nie liczą parametry nazw jednostek, a na numerkowy, wtedy się liczy. Również parametry typu jednostki nie powinno się podawać w dziecku w ramce, tylko w rodzicu w szablonie jako parametry, w którym ta ramka jest wywoływana, ale tutaj podano jedynie dla przykładu, jak najłatwiej sprawdzić działanie tych parametrów tej funkcji. Najpierw w funkcji nagłówku brane są parametry nazw przestrzeni nazw, a jeżeli ich nie ma, to parametry typu jednostki, a jeżeli nie ma, to generowane są nazwy na podstawie aktualnego modułu. === {{Code|p["Nazwa przestrzeni nazw dyskusji 3"](frame,i)}} === Funkcja pisze nazwę przestrzeni nazw dyskusji jakikolwiek nazwy przestrzeni nazw (tzn. nazwę dyskusji nazwy przestrzenie nazw, czyli nie przedmiotowej, zamieniana jest na nią samą, czyli identyfikator przestrzeni się nie zmienia, a przedmiotową, nie dyskusji, przekształca się na dyskusji jej odpowiadającą, czyli w tym przypadku identyfikator przestrzeni zwiększa się o numer więcej), według, i nie zawsze tylko, podanej w zmiennej {{Code|nazwa przestrzeni nazw}} dla pozycja bazowej w podanych parametrach szablonu rodzicu ramki dziecka, lub dla innej pozycji należy parametr podawać w formie {{Code|nazwa przestrzeni nazw 1}}, {{Code|nazwa przestrzeni nazw 2}}, {{Code|nazwa przestrzeni nazw 3}},..., lub te parametry można podać w postaci ogólnej {{Code|nazwa przestrzeni nazw i}}. W tej funkcji trzeba też podawać parametry nazwy jednostek {{Code|nazwa jednostki}}, {{Code|nazwa jednostki 1}}, {{Code|nazwa jednostki 2}}, {{Code|nazwa jednostki 3}},... Parametry podaje się w parametrach rodzica wywołania tej funkcji {{Code|{{m|Pudełko|Nazwa przestrzeni nazw dyskusji 3}}}} (ale ich nie trzeba podawać w dziecku, ale można) i w parametrach dziecka, jeśli chodzi o zmienną {{Code|numer jednostki}}, czyli np.: {{Code|{{m|Pudełko|Nazwa przestrzeni nazw dyskusji 3|numer jednostki{{=}}<jakaś liczba całkowita dodatnia>}}}}. Te parametry przestrzenne zamiast w rodzicu w szablonie można podać w ramce dziecka, wtedy parametry dziecka mają pierwszeństwo. Przestrzeń nazw z parametrów nazw przestrzennych bazowych (bez numerka) może odpowiadać wartości przestrzeni głównej, to wtedy odpowiednia przestrzeń nazw z parametru nazwy jednostki się nie liczy w tej funkcji, aby się liczyła należy użyć funkcji {{Code|{{sr|#p["Nazwa przestrzeni nazw dyskusji 2"](frame,...)|p=Pudełko}}}}. W tym przypadku funkcja działa jak {{Code|{{sr|#p["Nazwa przestrzeni nazw dyskusji"](frame,...)|p=Pudełko}}}}. Przestrzeń nazw z parametrów nazw przestrzennych numerkowych może odpowiadać wartości przestrzeni głównej, to wtedy odpowiednia przestrzeń nazw z parametru nazwy jednostki się liczy w tej funkcji, wtedy jest liczona nazwa przestrzeni nazw z tego parametru. Gdy parametry przestrzenne lub typ jednostki w drugim podejściu nie wskazują na przestrzeń główną, to wtedy działanie tej funkcji jest podobne do {{Code|{{sr|#p["Nazwa przestrzeni nazw dyskusji 2"](frame,...)|p=Pudełko}}}}. Definicja skrótowa funkcji: <syntaxhighlight lang="lua"> p["Nazwa przestrzeni nazw dyskusji 3"]=function(frame,czy_uwzglednic_alternatywna_nazwe,i)...end; </syntaxhighlight> Wtedy ciało funkcji tej, czyli jego definicja w środku, jest: <syntaxhighlight lang="lua"> -- Jest liczony numer parametru nazwy przestrzeni nazw, domyslnie chodzi tu o numer bazowy parametrów przestrzennych; local numer_jednostki=i or frame.args["numer jednostki"]; local liczba_numeru_jednostki=((numer_jednostki)and(tonumber(numer_jednostki)) or 0); local pudelko_pomocne_modul=require("Module:Pudełko/Pomocne"); -- Liczy nazwę przestrzeni nazw dyskusji na podstawie podanych parametrów; return pudelko_pomocne_modul.Uzyskanie_nazw_jednostki(frame,2,liczba_numeru_jednostki,nil,1); </syntaxhighlight> Parametry funkcji: * {{Code|frame}} - tablica ramki tablicy transportu, * {{Code|czy_uwzglednic_alternatywna_nazwe}} - czy ma uwzględniać nazwę przestrzeni nazw domyślną szablonu, dostępne wartości: {{Code|false}}, w której nazwa domyślna nie jest uwzględniana wtedy, oraz {{Code|nil}} i {{Code|true}}, które oznaczają to samo, w tym jeżeli ona jest uwzględniana, wtedy jest brany parametr pierwszy dziecka, który musi istnieć przy takiej wartości tego parametru, tzn. {{Code|{{m|Pudełko|Nazwa przestrzeni nazw dyskusji 3|Szablon}}}}, nazwa domyślna zostatnie zamieniona na dyskusji, a jeśli jest już taka, to takiej transfomacji nie ma, a jeśli nazwa uzyskana nazwy przestrzeni nazw jest w takim przypadku błędna, a jeżeli nazwa domyślna jest błędna, czyli {{Code|{{m|Pudełko|Nazwa przestrzeni nazw dyskusji 3|Moja przestrzeń}}}}, wtedy funkcja zwraca stan błędu {{Code|(błąd)}}. * {{Code|i}} - numer zmiennej nazwy przestrzeni nazw. Funkcja wykorzystuje {{Code|{{sr|#p.Uzyskanie_nazw_jednostki(frame,...)|p=Pudełko/Pomocne}}}} do wyznaczania ogólnego nazwy przestrzeni nazw dla pozycji bazowej i numerkowej, tzn. dla pozycji: jeden, dwa, trzy,..., itd, i ich ogólnej. Parametr ramki tablicy transportu rodzica szablonu: * {{Code|nazwa przestrzeni nazw}}, {{Code|nazwa przestrzeni nazw 1}}, {{Code|nazwa przestrzeni nazw 2}}, {{Code|nazwa przestrzeni nazw 3}},..., {{Code|nazwa przestrzeni nazw i}} - nazwy przestrzeni nazw dla pozycji bazowej oraz zwykłej i ogólnej numerkowej, * {{Code|nazwa jednostki}}, {{Code|nazwa jednostki 1}}, {{Code|nazwa jednostki 2}}, {{Code|nazwa jednostki 3}},... - nazwy jednostek dla pozycji bazowej i numerkowej, * {{Code|typ jednostki}}, {{Code|typ jednostki 1}}, {{Code|typ jednostki 2}}, {{Code|typ jednostki 3}},..., {{Code|typ jednostki i}} - typy jednostek, którym odpowiadają pewne przestrzenie przedmiotowe, dla pozycji bazowej, numerkowej i ogólnej. Parametry ramki tablicy transportu dziecka: * Parametry dziecka są takie same jak rodzica dla funkcji pudełkowej plus tu wymienione, * {{Code|numer jednostki}} - jak parametr {{Code|i}} nie został ustawiony, to wtedy liczy się ta zmienna. Przykłady: <syntaxhighlight lang="mediawiki"> {{Nazwa szablonu 1|nazwa przestrzeni nazw=Wikibooks|nazwa przestrzeni nazw=|nazwa przestrzeni nazw i=|nazwa jednostki=Szablon:Strona}} ---- {{Nazwa szablonu 2|nazwa przestrzeni nazw=Wikibooks|nazwa przestrzeni nazw 1=Szablon|nazwa przestrzeni nazw i=|nazwa jednostki 2=Wikibooks:Strona}} </syntaxhighlight> W pierwszym wywołaniu {{Code|nazwa przestrzeni nazw}} jest puste, ale dla tego bazowego (bez numerka) szukamy przestrzeni nazw, a więc ta nazwa jest ostateczna. ---- W drugim wywołaniu w dziecku powiedzmy jest wywołanie, i szukamy nazwy przestrzeni nazw o numerze dwa, która została podana, ale istnieje za to jej wersji ogólna {{Code|nazwa przestrzeni nazw i}} i domyślna {{Code|nazwa przestrzeni nazw}}, ale wtedy dla tego numerkowego liczy się to ogólne z {{Code| i}}, a ponieważ ta nazwa jest pusta, więc będziemy liczyli nazwę przestrzeni nazw z {{Code|nazwa jednostki 2}}. Odpowiadająca powyższemu kodowi, powiedzmy wikikod, według ich zawartości, przedstawia się: <syntaxhighlight lang="mediawiki"> {{#invoke:Pudełko|Nazwa przestrzeni nazw 3}} ---- {{#invoke:Pudełko|Nazwa przestrzeni nazw 3|numer jednostki=2}} </syntaxhighlight> Na podstawie powyższego przykładu otrzymamy wynik o schemacie, nie wyniku, bo tam nie ma zmiennej {{Code|nazwa przestrzeni nazw 1}}, ale jest {{Code|nazwa przestrzeni nazw i}}: <syntaxhighlight lang="mediawiki"> <!-- nazwa przestrzeni nazw=""; --> <!-- Czyli wynik: --> Dyskusja <!-- Widzimy, że wygenerowała się nazwa przestrzeni nazw, którą jest przestrzeń nazw niegłówna, jest ciągiem niepustym; --> ---- <!-- Ale nie "nazwa przestrzeni nazw 2", bo jej nie ma, ale za to istnieje "nazwa przestrzeni nazw i"; --> <!-- nazwa przestrzeni nazw 2=nazwa przestrzeni nazw i="", a nazwa jednostki 2="Wikibooks:Strona"; --> <!-- Czyli wynik: --> Dyskusja Wikibooks <!-- Widzimy, że wygenerowała się nazwa przestrzeni nazw, którą jest przestrzeń nieprogramowa, ale projektu, wychodząca z nazwy jednostek w tym przypadku z "nazwa jednostki 2"; --> </syntaxhighlight> Dla parametrów numerkowych nie jest brana w tym powyższym przykładzie zmienna {{Code|nazwa przestrzeni nazw 2}}, bo jej nie ma, ale za to jest {{Code|nazwa przestrzeni nazw i}}, bo ona występuje jako parametr domyślny ogólny dla parametrów numerkowych. Tytaj jest używana jest zmienna {{Code|nazwa jednostki 2}} do wygenerowania ostatecznego wyniku, bo jak można zauważyć, parametry przestrzenne wskazują na przestrzeń główną, a nazwy jednostek już nie. Dla parametrów bazowych mamy zmienną {{Code|nazwa przestrzeni nazw}}, ona jest pusta, więc to zostanie wziete do ostatecznego wyniku. Przykłady w wikikodzie: * {{Code|{{m|Pudełko|Nazwa przestrzeni nazw dyskusji 3|Szablon|nazwa przestrzeni nazw{{=}}Moja przestrzeń|nazwa jednostki{{=}}Wikibooks:Strona}}}} → {{Tt|{{#invoke:Pudełko|Nazwa przestrzeni nazw dyskusji 3|Szablon|nazwa przestrzeni nazw=Moja przestrzeń|nazwa jednostki=Wikibooks:Szablon}}}} * {{Code|{{m|Pudełko|Nazwa przestrzeni nazw dyskusji 3|Szablon|nazwa przestrzeni nazw 2{{=}}Moja przestrzeń|nazwa jednostki 2{{=}}Wikibooks:Strona|numer jednostki{{=}}2}}}} → {{Tt|{{#invoke:Pudełko|Nazwa przestrzeni nazw dyskusji 3|Szablon|nazwa przestrzeni nazw 2=Moja przestrzeń|nazwa jednostki 2=Wikibooks:Szablon|numer jednostki=2}}}} * {{Code|{{m|Pudełko|Nazwa przestrzeni nazw dyskusji 3|nazwa przestrzeni nazw{{=}}|nazwa jednostki{{=}}Wikibooks:Strona}}}} → {{Tt|{{#invoke:Pudełko|Nazwa przestrzeni nazw dyskusji 3|nazwa przestrzeni nazw=|nazwa jednostki=Wikibooks:Szablon}}}} * {{Code|{{m|Pudełko|Nazwa przestrzeni nazw dyskusji 3|nazwa przestrzeni nazw 2{{=}}|nazwa jednostki 2{{=}}Wikibooks:Strona|numer jednostki{{=}}2}}}} → {{Tt|{{#invoke:Pudełko|Nazwa przestrzeni nazw dyskusji 3|nazwa przestrzeni nazw 2=|nazwa jednostki 2=Wikibooks:Szablon|numer jednostki=2}}}} Powyżej dla przykładu podano parametry nie w rodzicu w szablonie, tylko w dziecku, jeśli chodzi o parametry nazw przestrzeni nazw i nazw jednostek, ale ich się za to nie powinno podawać w tych ramach, tylko w szablonach, w których wywoływane są te ramki pudełek {{Code|{{m|Pudełko}}}}, ale tak tutaj tak zrobiono by było najłatwiej sprawdzić działanie tego typu funkcji. Analogicznie możemy podawać parametry typu jednostki, np.: wywołaniu modułowym {{Code|{{m|Pudełko|Nazwa przestrzeni nazw dyskusji 3|typ jednostki 2{{=}}Podręcznik|nazwa jednostki 2{{=}}Szablon:Strona|numer jednostki{{=}}2}}}} (ale wtedy jest brana przestrzeń nazw z nazwy jednostki), ale o tym więcej w rozdziałach {{Code|{{sr|# p["Dyskusyjny typ jednostki 3"](frame,i)|p=Pudełko}}}} w „{{sr|#Funkcje typu jednostki|p=Pudełko}}”, one definiują przestrzenie dyskusji, ale można użyć parametru dyskusji typu jednostki z obojętnie jaką wartością niepustą, czy pustą, czy nawet jej nie podamy, wtedy wyświetli się nazwa przestrzeni nazw dyskusji. Jeżeli typ jednostki bazowy wskazuje na przestrzeń nazw główną, wtedy się nie liczą parametry nazw jednostek, a na numerkowy, wtedy się liczy. Również parametry typu jednostki nie powinno się podawać w dziecku w ramce, tylko w rodzicu w szablonie jako parametry, w którym ta ramka jest wywoływana, ale tutaj podano jedynie dla przykładu, jak najłatwiej sprawdzić działanie tych parametrów tej funkcji. Najpierw w funkcji nagłówku brane są parametry nazw przestrzeni nazw, a jeżeli ich nie ma, to parametry typu jednostki, a jeżeli nie ma lub parametry przestrzenne wskazują na przestrzeń główną, i nie ma nazwy jednostki, to generowane są nazwy tej funkcji na podstawie aktualnej strony. == Funkcje nazw jednostki trzeciej wersji == === {{Code|p["Nazwa jednostki 3"](frame,i)}} === === {{Code|p["Nazwa przedmiotowa jednostki 3"](frame,i)}} === === {{Code|p["Nazwa dyskusji jednostki 3"](frame,i)}} === == Funkcje typu jednostki == === {{Code|p["Typ jednostki"](frame,i)}} === === {{Code|p["Typ jednostki 2"](frame,i)}} === === {{Code|p["Typ jednostki 3"](frame,i)}} === === Funkcje typu jednostki przedmiotowe === ==== {{Code|p["Przedmiotowy typ jednostki"](frame,i)}} ==== ==== {{Code|p["Przedmiotowy typ jednostki 2"](frame,i)}} ==== ==== {{Code|p["Przedmiotowy typ jednostki 3"](frame,i)}} ==== === Fukcje typu jednostki dyskusji === ==== {{Code|p["Dyskusyjny typ jednostki"](frame,i)}} ==== ==== {{Code|p["Dyskusyjny typ jednostki 2"](frame,i)}} ==== ==== {{Code|p["Dyskusyjny typ jednostki 3"](frame,i)}} ==== == Funkcje chech pudełka == === {{Code|p["Cecha pudełka"](frame)}} === === {{Code|p["Przedmiotowa cecha pudełka"](frame)}} === === {{Code|p["Dyskusyjna cecha pudełka"](frame)}} === == Fukcje ogólnego pudełka == === {{Code|p["Ogólne pudełko"](frame)}} === == Funkcje ogólne == === {{Code|p["Tekst pudełka"](frame)}} === == Funkcje błędów pudełka == === {{Code|p["Błędy pudełka"](frame)}} === === {{Code|p["Przedmiotowe błędy pudełka"](frame)}} === === {{Code|p["Dyskusyjne błędy pudełka"](frame)}} === == Funkcje nazw stron == === {{Code|p["Nazwa strony głównej projektu"](frame,i)}} === === {{Code|p["Nazwa strony głównej dla dzieci projektu"](frame,i)}} === == Funkcje kodów == === {{Code|p["Kod języka"](frame,i)}} === === {{Code|p["Kod projektu"](frame,i)}} === === {{Code|p["Klucz projektu"](frame,i)}} === == Funkcje wiki == === {{Code|p["Inny niż język bieżący wiki"](frame)}} === === {{Code|p["Inne niż lokalne wiki"](frame)}} === === {{Code|p["Inne niż bieżące wiki"](frame)}} === == Funkcje typów parametrów, czy podane je == === {{Code|p["Podano parametry nienazwane"](frame)}} === === {{Code|p["Podano parametry numerowane"](frame)}} === === {{Code|p["Podano parametry nazwane"](frame)}} === == Funkcje kodów tego projektu == === {{Code|p["Kod projektu tego projektu"](frame)}} === === {{Code|p["Kod języka tego projektu"](frame)}} === === {{Code|p["Klucz projektu tego projektu"](frame)}} === == Funkcje stron == === {{Code|p["Strona główna tego projektu"](frame)}} === === {{Code|p["Strona główna dla dzieci tego projektu"](frame)}} === == Funkcje nazw stron drugiej wersji == === {{Code|p["Nazwa strony głównej dla dzieci projektu 2"](frame)}} === === {{Code| p["Nazwa strony głównej projektu 2"](frame)}} === {{BrClear}} <noinclude><!-- -->{{ProstaStronaKoniec}}<!-- -->{{Kategoria|Opisy funkcji, w Lua w Scribunto, w modułach}}<!-- --></noinclude> blgaz7znlif16a7e1vc2ewqn49n0403 540459 540458 2026-04-24T06:04:04Z Persino 2851 /* {{Code|p["Nazwa przestrzeni nazw dyskusji 2"](frame,...)}} */ 540459 wikitext text/x-wiki <noinclude>{{ProstaStronaStart | nagłówek = {{Podrozdział|{{ld2|Pudełko}}|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 pudelko_modul=require("Module:Pudełko"); </syntaxhighlight> dzięki, któremu można wypisywać funkcje należącego do niego. Posługuje się na parametrach pudełkowych {{Parametr|nazwa przestrzeni nazw}} (czy też bez numerka {{Parametr|nazwa przestrzeni nazw i}} dla tego numerowanego) lub te z numerkiem po jednej spacji w nich (ale nie dla tego z końcówką {{Code| i}}) mogą zostać użyte jako parametry szablonu. Moduł {{Code|{{ld2|Pudełko}}}} przedstawia funkcje nazw w oparciu o funkcje nazw {{Code|{{ld2|Nazwy}}}}, generuje on nazwy za pomocą parametrów pudełkowych podanych poniżej. Parametr {{Parametr|nazwa jednostki}} (lub parametr {{Parametr|cel}} dla numerka tego pierwszego, tego alternatywnego), lub te z numerkiem po jednej spacji w nazwie parametru, albo numerowane numerkami {{Code|1}}, {{Code|2}},..., mogą zostać użyte jako parametry szablonu. Parametry określające rodzaj jednostki {{Parametr|typ jednostki}} z {{Parametr|dyskusja typu jednostki}}, itp. w wersjach z numerkiem po jednej spacji w nich mogą zostać użyte jako parametry szablonu. A te tymi numerowanymi liczbami naturalnymi {{Tt|nazwy jednostki}} od jedynki wzwyż poprzez szablon, w którym są one użyte, one też mogą być użyte z dwukropkiem, te numerowane, na samym początku nazwy, wtedy one są traktowane jako pełne nazwy strony, i wtedy one nie zostaną z interpretowane, że do nich trzeba użyć parametr odpowiedni z nazwą przetrzeni nazw z tego numerowanego, czy ogólny, aby utworzyć znów inną pełną nazwę strony dla tego numerka. Zestawienie: * {{Code|nazwa przestrzeni nazw}} i {{Code|nazwa przestrzeni nazw i}} (ogólna nazwa przestrzeni nazw dla wszystkich numerków, i tych numerowanych jednostek) - i to pierwsze z numerkiem, tzn. {{Code|nazwa przestrzeni nazw 1}}, {{Code|nazwa przestrzeni nazw 2}}, ..., * {{Code|nazwa jednostki}} - i te z numerkiem: {{Code|nazwa jednostki 1}}, {{Code|nazwa jednostki 2}}, ..., lub gdy jest zamiast tego parametrem numerowany, {{Code|1}}, {{Code|2}},..., który dla tego pierwszego może być uznany jako: {{Code|cel}} {{=}} {{Code|1}}, * {{Code|typ jednostki}} (parametr bazowy) i {{Code|typ jednostki i}} (parametr domyślny numerkowy) - i te z numerkiem: {{Code|typ jednostki 1}}, {{Code|typ jednostki 2}}, ..., tzn. gdy chcemy określić z jakim typem jednostki mamy do czynienia w zależności do jakiej przestrzeni nazw należy, a w danej, czy jest on np. programowy, czy tylko jest opisem, jak to bywa w szablonach {{Np|Template|link=tak}}, podobnie jest w przypadku {{Np|Module|link=tak}}, czy jak jest w innych przestrzeniach nazw, ** {{Code|dyskusja typu jednostki}} (parametr bazowy) i {{Code|dyskusja typu jednostki i}} (parametr domyślny numerkowy) - i te z numerkiem: {{Code|dyskusja typu jednostki 1}}, {{Code|dyskusja typu jednostki 2}}, ..., gdy chcemy określić wartością niepustą,że chodzi tutaj o typ jednostki. == {{Code|p.CzyNiepoprawnaNazwa(nazwa_jednostki)}} == Funkcja sprawdzajaca, czy jest poprawnie podana nazwa jednostki, czy ma poprawną nazwę. Znakami tymi, z których nie powinna składać się nazwa jest {{Code|<nowiki>{}<>|[]#\n</nowiki>}} i dodatkowo znak {{Code|&#127;}} (kod {{Code|{{Nowiki|&#127;}}}}). Też nie może składać się z trzech znaków tyldy, tzn. {{Code|<nowiki>~~~</nowiki>}}. Również w swojej budowie nie może składać się ze kodów {{Strong|HTML}} literowych o wzorze {{Code|{{Nowiki|&(%a+);}}}}. Natomiast może składać się z {{Code|{{Nowiki|&#(%d+);}}}} i {{Code|{{Nowiki|&#x(%x+);}}}}, ale w pierw te kody muszą być zamienione na normalne znaki. Skrótowa definicja funkcji: <syntaxhighlight lang="lua"> function p.CzyNiepoprawnaNazwa(nazwa_jednostki)...end; </syntaxhighlight> Wtedy ciało funkcji tej, czyli jego definicja w środku, jest: <syntaxhighlight lang="lua"> -- Moduł: "Moduł:Html/dane", służy do ładowania znaku o kodzie HTML "&#127;"; local html_dane_modul=mw.loadData("Module:Html/dane"); return mw.ustring.match(nazwa_jednostki,"[{}<>|%[%]#\n"..html_dane_modul.znak_127.."]+") or mw.ustring.match(nazwa_jednostki,"~~~") or mw.ustring.match(nazwa_jednostki,"&(%a+);"); </syntaxhighlight> Parametry: * {{Code|nazwa_jednostki}} - nazwa jednostki do sprawdzenia. Przykłady: <syntaxhighlight lang="lua"> local pudelko_modul=require("Module:Pudełko"); -- Podana przykładowa niepoprawna nazwa jedostki local nazwa_jednostki="Nazwa pliku [[Nazwa linku w pliku]]"; -- Fukcja zwróci wartość: local czy_poprawna_nazwa=true; local czy_poprawna_nazwa=pudelko_modul.CzyNiepoprawnaNazwa(nazwa_jednostki); </syntaxhighlight> == Funkcje nazw przestrzeni nazw == === {{Code|p["Nazwa przestrzeni nazw"](frame,...)}} === Funkcja pisze nazwę przestrzeni nazw, niezależnie, czy to jest przedmiotowa, czy dyskusji, według podanej w zmiennej {{Code|nazwa przestrzeni nazw}} dla pozycja bazowej w podanych parametrach szablonu rodzicu ramki dziecka, lub dla innej pozycji należy parametr podawać w formie {{Code|nazwa przestrzeni nazw 1}}, {{Code|nazwa przestrzeni nazw 2}}, {{Code|nazwa przestrzeni nazw 3}},..., lub te parametry można podać w postaci ogólnej {{Code|nazwa przestrzeni nazw i}}. Parametry podaje się w parametrach rodzica wywołania tej funkcji {{Code|{{m|Pudełko|Nazwa przestrzeni nazw}}}} (ale ich nie trzeba podawać w dziecku, ale można) i w parametrach dziecka, jeśli chodzi o zmienną {{Code|numer jednostki}}, czyli np.: {{Code|{{m|Pudełko|Nazwa przestrzeni nazw|numer jednostki{{=}}<jakaś liczba całkowita dodatnia>}}}}. Te parametry przestrzenne zamiast w rodzicu w szablonie można podać w ramce dziecka, wtedy parametry dziecka mają pierwszeństwo. Przestrzeń nazw z parametrów nazw przestrzennych może odpowiadać wartości przestrzeni głównej, to wtedy odpowiednia przestrzeń nazw z parametru nazwy jednostki się nie liczy w tej funkcji, aby się liczyła należy użyć funkcji {{Code|{{sr|#p["Nazwa przestrzeni nazw 2"](frame,...)|p=Pudełko}}}}. Definicja skrótowa funkcji: <syntaxhighlight lang="lua"> p["Nazwa przestrzeni nazw"]=function(frame,czy_uwzglednic_alternatywna_nazwe,i)...end; </syntaxhighlight> Wtedy ciało funkcji tej, czyli jego definicja w środku, jest: <syntaxhighlight lang="lua"> -- Jest liczony numer parametru nazwy przestrzeni nazw, domyslnie chodzi tu o numer bazowy parametrów przestrzennych; local numer_jednostki=i or frame.args["numer jednostki"]; local liczba_numer_jednostki=((numer_jednostki)and(tonumber(numer_jednostki))or 0); local pudelko_pomocne_modul=require("Module:Pudełko/Pomocne"); -- Liczy nazwę przestrzeni nazw na podstawie podanych parametrów; return pudelko_pomocne_modul.Nazwa_przestrzeni_nazw(frame,0, czy_uwzglednic_alternatywna_nazwe,liczba_numer_jednostki); </syntaxhighlight> Parametry funkcji: * {{Code|frame}} - tablica ramki tablicy transportu, * {{Code|czy_uwzglednic_alternatywna_nazwe}} - czy ma uwzględniać nazwę przestrzeni nazw domyślną szablonu, dostępne wartości: {{Code|false}}, w której nazwa domyślna nie jest uwzględniana wtedy, oraz {{Code|nil}} i {{Code|true}}, które oznaczają to samo, w tym jeżeli ona jest uwzględniana, wtedy jest brany parametr pierwszy dziecka, który musi istnieć przy takiej wartości tego parametru, tzn. {{Code|{{m|Pudełko|Nazwa przestrzeni nazw|Szablon}}}}, a ten element jest używany, gdy nazwa uzyskana nazwy przestrzeni nazw jest w takim przypadku błędna, a jeżeli wtedy nazwa domyślna jest błędna, czyli {{Code|{{m|Pudełko|Nazwa przestrzeni nazw|Moja przestrzeń}}}}, wtedy funkcja zwraca stan błędu {{Code|(błąd)}}. * {{Code|i}} - numer zmiennej nazwy przestrzeni nazw. Funkcja wykorzystuje {{Code|{{sr|#p.Nazwa_przestrzeni_nazw(frame,...)|p=Pudełko/Pomocne}}}} do wyznaczania ogólnego nazwy przestrzeni nazw dla pozycji bazowej i numerkowej, tzn. dla pozycji: jeden, dwa, trzy,..., itd, i ich ogólnej. Parametr ramki tablicy transportu rodzica szablonu: * {{Code|nazwa przestrzeni nazw}}, {{Code|nazwa przestrzeni nazw 1}}, {{Code|nazwa przestrzeni nazw 2}}, {{Code|nazwa przestrzeni nazw 3}},..., {{Code|nazwa przestrzeni nazw i}} - nazwy przestrzeni nazw dla pozycji bazowej oraz zwykłej i ogólnej numerkowej, * {{Code|typ jednostki}}, {{Code|typ jednostki 1}}, {{Code|typ jednostki 2}}, {{Code|typ jednostki 3}},..., {{Code|typ jednostki i}} - typy jednostek, którym odpowiadają pewne przestrzenie przedmiotowe, dla pozycji bazowej, numerkowej i ogólnej, ** {{Code|dyskusja typu jednostki}}, {{Code|dyskusja typu jednostki 1}}, {{Code|dyskusja typ jednostki 2}}, {{Code|dyskusja typ jednostki 3}},..., {{Code|dyskusja typ jednostki i}} - czy dany typ jednostki ma przedstawiać, jeśli niepusta, przestrzeń dyskusji dla pozycji bazowej, numerkowej i ogólnej. Parametry ramki tablicy transportu dziecka: * Parametry dziecka są takie same jak rodzica dla funkcji pudełkowej plus tu wymienione, * {{Code|numer jednostki}} - jak parametr {{Code|i}} nie został ustawiony, to wtedy liczy się ta zmienna. Przykłady: <syntaxhighlight lang="mediawiki"> {{Nazwa szablonu|nazwa przestrzeni nazw=Wikibooks|nazwa przestrzeni nazw 2=Szablon|nazwa przestrzeni nazw i=Moduł}} </syntaxhighlight> W dziecku powiedzmy jest wywołanie, i szukamy nazwy przestrzeni nazw o numerze dwa, która nie została podana, ale istnieje za to jej wersji ogólna {{Code|nazwa przestrzeni nazw i}} i domyślna {{Code|nazwa przestrzeni nazw}}: <syntaxhighlight lang="mediawiki"> {{#invoke:Pudełko|Nazwa przestrzeni nazw|numer jednostki=1}} </syntaxhighlight> Na podstawie powyższego przykładu otrzymamy wynik o schemacie, nie wyniku, bo tam nie ma zmiennej {{Code|nazwa przestrzeni nazw 1}}, ale jest {{Code|nazwa przestrzeni nazw i}}: <syntaxhighlight lang="mediawiki"> <!-- Ale nie "nazwa przestrzeni nazw", bo jej nie ma, ale za to istnieje "nazwa przestrzeni nazw i"; --> <!-- nazwa przestrzeni nazw 2=nazwa przestrzeni nazw i=Moduł; --> <!-- Czyli wynik: --> Moduł <!-- Widzimy, że wygenerowała się nazwa przestrzeni nazw, którą jest przestrzeń programowa, którą również jest "Szablon"; --> </syntaxhighlight> Nie jest brana w tym powyższym przykładzie zmienna {{Code|nazwa przestrzeni nazw}}, bo jej nie ma, ale za to jest {{Code|nazwa przestrzeni nazw i}}, bo ona występuje jako parametr domyślny ogólny dla parametrów numerkowych. Przykłady w wikikodzie: * {{Code|{{m|Pudełko|Nazwa przestrzeni nazw|numer jednostki{{=}}2}}}} → {{Tt|{{#invoke:Pudełko|Nazwa przestrzeni nazw|numer jednostki=2}}}} * {{Code|{{m|Pudełko|Nazwa przestrzeni nazw|Szablon|nazwa przestrzeni nazw i{{=}}Moja przestrzeń|numer jednostki{{=}}2}}}} → {{Tt|{{#invoke:Pudełko|Nazwa przestrzeni nazw|Szablon|nazwa przestrzeni nazw i=Moja przestrzeń|numer jednostki=2}}}} * {{Code|{{m|Pudełko|Nazwa przestrzeni nazw|nazwa przestrzeni nazw 2{{=}}Szablon|numer jednostki{{=}}2}}}} → {{Tt|{{#invoke:Pudełko|Nazwa przestrzeni nazw|nazwa przestrzeni nazw 2=Szablon|numer jednostki=2}}}} * {{Code|{{m|Pudełko|Nazwa przestrzeni nazw|nazwa przestrzeni nazw 2{{=}}Szablon|numer jednostki{{=}}2}}}} → {{Tt|{{#invoke:Pudełko|Nazwa przestrzeni nazw|nazwa przestrzeni nazw i=Szablon|numer jednostki=2}}}} * {{Code|{{m|Pudełko|Nazwa przestrzeni nazw|nazwa przestrzeni nazw{{=}}Szablon|numer jednostki{{=}}2}}}} → {{Tt|{{#invoke:Pudełko|Nazwa przestrzeni nazw|nazwa przestrzeni nazw=Szablon|numer jednostki=2}}}} Powyżej dla przykładu podano parametry nie w rodzicu w szablonie, tylko w dziecku, jeśli chodzi o parametry nazw przestrzeni nazw, ale ich się za to nie powinno podawać w tych ramach, tylko w szablonach, w których wywoływane są te ramki pudełek {{Code|{{m|Pudełko}}}}, ale tak tutaj tak zrobiono by było najłatwiej sprawdzić działanie tego typu funkcji. Analogicznie możemy podawać parametry typu jednostki, np.: wywołaniu modułowym {{Code|{{m|Pudełko|Nazwa przestrzeni nazw|typ jednostki 2{{=}}strona szablonu|numer jednostki{{=}}2}}}}, ale o tym więcej w rozdziałach {{Code|{{sr|# p["Typ jednostki"](frame,i)|p=Pudełko}}}} w „{{sr|#Funkcje typu jednostki|p=Pudełko}}”, on definiuje przestrzenie przedmiotowe, ale można użyć parametru dyskusji typu jednostki z wartością niepustą, wtedy wyświetli się nazwa przestrzeni nazw dyskusji. Również parametry typu jednostki nie powinno się podawać w dziecku w ramce, tylko w rodzicu w szablonie jako parametry, w którym ta ramka jest wywoływana, ale tutaj podano jedynie dla przykładu, jak najłatwiej sprawdzić działanie tych parametrów tej funkcji. Najpierw w funkcji nagłówku brane są parametry nazw przestrzeni nazw, a jeżeli ich nie ma, to parametry typu jednostki, a jeżeli nie ma, to generowane są nazwy na podstawie aktualnego modułu. === {{Code|p["Nazwa przedmiotowej przestrzeni nazw"](frame,...)}} === Funkcja pisze przedmiotową nazwę przestrzeni nazw jakikolwiek nazwy przestrzeni nazw (tzn. nazwę przedmiotową nazwy przestrzenie nazw, czyli nie dyskusji, zamieniana jest na nią samą, czyli identyfikator przestrzeni się nie zmienia, a dyskusji, nie przedmiotową, przekształca się na przedmiotową jej odpowiadającą, czyli w tym przypadku identyfikator przestrzeni zmniejsza się o numer mniej), według podanej w zmiennej {{Code|nazwa przestrzeni nazw}} dla pozycja bazowej w podanych parametrach szablonu rodzicu ramki dziecka, lub dla innej pozycji należy parametr podawać w formie {{Code|nazwa przestrzeni nazw 1}}, {{Code|nazwa przestrzeni nazw 2}}, {{Code|nazwa przestrzeni nazw 3}},..., lub te parametry można podać w postaci ogólnej {{Code|nazwa przestrzeni nazw i}}. Parametry podaje się w parametrach rodzica wywołania tej funkcji {{Code|{{m|Pudełko|Nazwa przedmiotowej przestrzeni nazw}}}} (ale ich nie trzeba podawać w dziecku, ale można) i w parametrach dziecka, jeśli chodzi o zmienną {{Code|numer jednostki}}, czyli np.: {{Code|{{m|Pudełko|Nazwa przedmiotowej przestrzeni nazw|numer jednostki{{=}}<jakaś liczba całkowita dodatnia>}}}}. Te parametry przestrzenne zamiast w rodzicu w szablonie można podać w ramce dziecka, wtedy parametry dziecka mają pierwszeństwo. Parametry przestrzenne mogą mogą być podane w postaci przestrzeni przedmiotowej lub dyskusji, ale ta funkcja zawsze ją zamienia na przedmiotową. Przestrzeń nazw z parametrów nazw przestrzennych może odpowiadać wartości przestrzeni głównej, to wtedy odpowiednia przestrzeń nazw z parametru nazwy jednostki się nie liczy w tej funkcji, aby się liczyła należy użyć funkcji {{Code|{{sr|#p["Nazwa przedmiotowej przestrzeni nazw 2"](frame,...)|p=Pudełko}}}}. Definicja skrótowa funkcji: <syntaxhighlight lang="lua"> p["Nazwa przedmiotowej przestrzeni nazw"]=function(frame,czy_uwzglednic_alternatywna_nazwe,i)...end; </syntaxhighlight> Wtedy ciało funkcji tej, czyli jego definicja w środku, jest: <syntaxhighlight lang="lua"> -- Jest liczony numer parametru nazwy przestrzeni nazw, domyslnie chodzi tu o numer bazowy parametrów przestrzennych; local numer_jednostki=i or frame.args["numer jednostki"]; local liczba_numer_jednostki=((numer_jednostki)and(tonumber(numer_jednostki))or 0); local pudelko_pomocne_modul=require("Module:Pudełko/Pomocne"); -- Liczy nazwę przestrzeni nazw przedmiotową na podstawie podanych parametrów; return pudelko_pomocne_modul.Nazwa_przestrzeni_nazw(frame,1, czy_uwzglednic_alternatywna_nazwe,liczba_numer_jednostki); </syntaxhighlight> Parametry funkcji: * {{Code|frame}} - tablica ramki tablicy transportu, * {{Code|czy_uwzglednic_alternatywna_nazwe}} - czy ma uwzględniać nazwę przestrzeni nazw domyślną szablonu, dostępne wartości: {{Code|false}}, w której nazwa domyślna nie jest uwzględniana wtedy, oraz {{Code|nil}} i {{Code|true}}, które oznaczają to samo, w tym jeżeli ona jest uwzględniana, wtedy jest brany parametr pierwszy dziecka, który musi istnieć przy takiej wartości tego parametru, tzn. {{Code|{{m|Pudełko|Nazwa przedmiotowej przestrzeni nazw|Dyskusja szablonu}}}} - ta nazwa domyślna zostanie zamieniona na przedmiotową, a jak ona by była przedmiotowa, to żadnej zamiany, by nie było, a jeśli nazwa uzyskana z nazwy przestrzeni nazw z parametrów przestrzennych jest w takim przypadku błędna, to w takim razie brany jest ten parametr, a jeżeli ta nazwa domyślna jest błędna, czyli {{Code|{{m|Pudełko|Nazwa przedmiotowej przestrzeni nazw|Moja przestrzeń}}}}, wtedy funkcja zwraca stan błędu {{Code|(błąd)}}. * {{Code|i}} - numer zmiennej nazwy przestrzeni nazw. Funkcja wykorzystuje {{Code|{{sr|#p.Nazwa_przestrzeni_nazw(frame,...)|p=Pudełko/Pomocne}}}} do wyznaczania ogólnego nazwy przestrzeni nazw dla pozycji bazowej i numerkowej, tzn. dla pozycji: jeden, dwa, trzy,..., itd, i ich ogólnej. Parametr ramki tablicy transportu rodzica szablonu: * {{Code|nazwa przestrzeni nazw}}, {{Code|nazwa przestrzeni nazw 1}}, {{Code|nazwa przestrzeni nazw 2}}, {{Code|nazwa przestrzeni nazw 3}},..., {{Code|nazwa przestrzeni nazw i}} - nazwy przestrzeni nazw dla pozycji bazowej oraz zwykłej i ogólnej numerkowej, * {{Code|typ jednostki}}, {{Code|typ jednostki 1}}, {{Code|typ jednostki 2}}, {{Code|typ jednostki 3}},..., {{Code|typ jednostki i}} - typy jednostek, którym odpowiadają pewne przestrzenie przedmiotowe, dla pozycji bazowej, numerkowej i ogólnej. Parametry ramki tablicy transportu dziecka: * Parametry dziecka są takie same jak rodzica dla funkcji pudełkowej plus tu wymienione, * {{Code|numer jednostki}} - jak parametr {{Code|i}} nie został ustawiony, to wtedy liczy się ta zmienna. Przykłady: <syntaxhighlight lang="mediawiki"> {{Nazwa szablonu|nazwa przestrzeni nazw=Dyskusja Wikibooks|nazwa przestrzeni nazw 2=Dyskusja szablonu|nazwa przestrzeni nazw i=Dyskusja modułu}} </syntaxhighlight> W dziecku powiedzmy jest wywołanie, i szukamy nazwy przestrzeni nazw o numerze dwa, która nie została podana, ale istnieje za to jej wersji ogólna {{Code|nazwa przestrzeni nazw i}} i domyślna {{Code|nazwa przestrzeni nazw}}: <syntaxhighlight lang="mediawiki"> {{#invoke:Pudełko|Nazwa przedmiotowej przestrzeni nazw|numer jednostki=1}} </syntaxhighlight> Na podstawie powyższego przykładu otrzymamy wynik o schemacie, nie wyniku, bo tam nie ma zmiennej {{Code|nazwa przestrzeni nazw 1}}, ale jest {{Code|nazwa przestrzeni nazw i}}: <syntaxhighlight lang="mediawiki"> <!-- Ale nie "nazwa przestrzeni nazw", bo jej nie ma, ale za to istnieje "nazwa przestrzeni nazw i"; --> <!-- nazwa przestrzeni nazw 2=nazwa przestrzeni nazw i=Dyskusja modułu; --> <!-- Czyli wynik: --> Moduł <!-- Widzimy, że wygenerowała się nazwa przestrzeni nazw, którą jest przestrzeń przedmiotowa programowa przestrzeni dyskusji "Dyskusja modułu", którą również jest "Szablon" jego przestrzeni dyskusji "Dyskusja szablonu", a dla ich przestrzeni przedmiotowej, zamiast dyskusji, to samo przekształca się na to samo; --> </syntaxhighlight> Nie jest brana w tym powyższym przykładzie zmienna {{Code|nazwa przestrzeni nazw}}, bo jej nie ma, ale za to jest {{Code|nazwa przestrzeni nazw i}}, bo ona występuje jako parametr domyślny ogólny dla parametrów numerkowych. Przykłady w wikikodzie: * {{Code|{{m|Pudełko|Nazwa przedmiotowej przestrzeni nazw|numer jednostki{{=}}2}}}} → {{Tt|{{#invoke:Pudełko|Nazwa przedmiotowej przestrzeni nazw|numer jednostki=2}}}} * {{Code|{{m|Pudełko|Nazwa przedmiotowej przestrzeni nazw|Dyskusja szablonu|nazwa przestrzeni nazw i{{=}}Moja przestrzeń|numer jednostki{{=}}2}}}} → {{Tt|{{#invoke:Pudełko|Nazwa przedmiotowej przestrzeni nazw|Dyskusja szablonu|nazwa przestrzeni nazw i=Moja przestrzeń|numer jednostki=2}}}} * {{Code|{{m|Pudełko|Nazwa przedmiotowej przestrzeni nazw|nazwa przestrzeni nazw 2{{=}}Dyskusja szablonu|numer jednostki{{=}}2}}}} → {{Tt|{{#invoke:Pudełko|Nazwa przedmiotowej przestrzeni nazw|nazwa przestrzeni nazw 2=Dyskusja szablonu|numer jednostki=2}}}} * {{Code|{{m|Pudełko|Nazwa przedmiotowej przestrzeni nazw|nazwa przestrzeni nazw 2{{=}}Dyskusja szablonu|numer jednostki{{=}}2}}}} → {{Tt|{{#invoke:Pudełko|Nazwa przedmiotowej przestrzeni nazw|nazwa przestrzeni nazw i=Dyskusja szablonu|numer jednostki=2}}}} * {{Code|{{m|Pudełko|Nazwa przedmiotowej przestrzeni nazw|nazwa przestrzeni nazw{{=}}Dyskusja szablonu|numer jednostki{{=}}2}}}} → {{Tt|{{#invoke:Pudełko|Nazwa przedmiotowej przestrzeni nazw|nazwa przestrzeni nazw=Dyskusja szablonu|numer jednostki=2}}}} Powyżej dla przykładu podano parametry nie w rodzicu w szablonie, tylko w dziecku, jeśli chodzi o parametry nazw przestrzeni nazw, ale ich się za to nie powinno podawać w tych ramach, tylko w szablonach, w których wywoływane są te ramki pudełek {{Code|{{m|Pudełko}}}}, ale tak tutaj tak zrobiono by było najłatwiej sprawdzić działanie tego typu funkcji. Analogicznie możemy podawać parametry typu jednostki, np.: wywołaniu modułowym {{Code|{{m|Pudełko|Nazwa przedmiotowej przestrzeni nazw|typ jednostki 2{{=}}strona szablonu|numer jednostki{{=}}2}}}}, ale o tym więcej w rozdziałach {{Code|{{sr|# p["Przedmiotowy typ jednostki"](frame,i)|p=Pudełko}}}} w „{{sr|#Funkcje typu jednostki|p=Pudełko}}”, ale wtedy ta sama nazwa przestrzeni nazw reprezentowana przez {{Parametr|typ jednostki 2|strona szablonu}}, jest zamieniana na to samo, lepiej jest tutaj używać parametrów przestrzennych nazw niż typu jednostki, bo typ jednostki ma taką samą wartość dla przestrzeni przedmiotowej, co dyskusji. Tutaj parametr dyskusji typu jednostki bazowy i numerkowy ogólny, czy szczegółowy, nie gra roli, bo nawet, gdy wygenerujemy nazwę przestrzeni dyskusji za pomoca tego parametru, to i tak otrzymamy na samym końcu jego nazwę przedmiotową. Również parametry typu jednostki nie powinno się podawać w dziecku w ramce, tylko w rodzicu w szablonie jako parametry, w którym ta ramka jest wywoływana, ale tutaj podano jedynie dla przykładu, jak najłatwiej sprawdzić działanie tych parametrów tej funkcji. Najpierw w funkcji nagłówku brane są parametry nazw przestrzeni nazw, a jeżeli ich nie ma, to parametry typu jednostki, a jeżeli nie ma, to generowane są nazwy na podstawie aktualnego modułu. === {{Code|p["Nazwa przestrzeni nazw dyskusji"](frame,...)}} === Funkcja pisze nazwę przestrzeni nazw dyskusji jakikolwiek nazwy przestrzeni nazw (tzn. nazwę przedmiotową nazwy przestrzenie nazw, czyli nie dyskusji, zamieniana jest na dyskusji, czyli identyfikator przestrzeni się zmienia jeden wyżej, a dyskusji, nie przedmiotową, przekształca się na tą samą), według podanej w zmiennej {{Code|nazwa przestrzeni nazw}} dla pozycja bazowej w podanych parametrach szablonu rodzicu ramki dziecka, lub dla innej pozycji należy parametr podawać w formie {{Code|nazwa przestrzeni nazw 1}}, {{Code|nazwa przestrzeni nazw 2}}, {{Code|nazwa przestrzeni nazw 3}},..., lub te parametry można podać w postaci ogólnej {{Code|nazwa przestrzeni nazw i}}. Parametry podaje się w parametrach rodzica wywołania tej funkcji {{Code|{{m|Pudełko|Nazwa przestrzeni nazw dyskusji}}}} (ale ich nie trzeba podawać w dziecku, ale można) i w parametrach dziecka, jeśli chodzi o zmienną {{Code|numer jednostki}}, czyli np.: {{Code|{{m|Pudełko|Nazwa przestrzeni nazw dyskusji|numer jednostki{{=}}<jakaś liczba całkowita dodatnia>}}}}. Te parametry przestrzenne zamiast w rodzicu w szablonie można podać w ramce dziecka, wtedy parametry dziecka mają pierwszeństwo. Parametry przestrzenne mogą mogą być podane w postaci przestrzeni przedmiotowej lub dyskusji, ale ta funkcja zawsze ją zamienia na dyskusji. Przestrzeń nazw z parametrów nazw przestrzennych może odpowiadać wartości przestrzeni głównej, to wtedy odpowiednia przestrzeń nazw z parametru nazwy jednostki się nie liczy w tej funkcji, aby się liczyła należy użyć funkcji {{Code|{{sr|#p["Nazwa przestrzeni nazw dyskusji 2"](frame,...)|p=Pudełko}}}}. Definicja skrótowa funkcji: <syntaxhighlight lang="lua"> p["Nazwa przestrzeni nazw dyskusji"]=function(frame,czy_uwzglednic_alternatywna_nazwe,i)...end; </syntaxhighlight> Wtedy ciało funkcji tej, czyli jego definicja w środku, jest: <syntaxhighlight lang="lua"> -- Jest liczony numer parametru nazwy przestrzeni nazw, domyslnie chodzi tu o numer bazowy parametrów przestrzennych; local numer_jednostki=i or frame.args["numer jednostki"]; local liczba_numer_jednostki=((numer_jednostki)and(tonumber(numer_jednostki))or 0); local pudelko_pomocne_modul=require("Module:Pudełko/Pomocne"); -- Liczy nazwę przestrzeni nazw dyskusji na podstawie podanych parametrów; return pudelko_pomocne_modul.Nazwa_przestrzeni_nazw(frame,2, czy_uwzglednic_alternatywna_nazwe,liczba_numer_jednostki); </syntaxhighlight> Parametry funkcji: * {{Code|frame}} - tablica ramki tablicy transportu, * {{Code|czy_uwzglednic_alternatywna_nazwe}} - czy ma uwzględniać nazwę przestrzeni nazw domyślną szablonu, dostępne wartości: {{Code|false}}, w której nazwa domyślna nie jest uwzględniana wtedy, oraz {{Code|nil}} i {{Code|true}}, które oznaczają to samo, w tym jeżeli ona jest uwzględniana, wtedy jest brany parametr pierwszy dziecka, który musi istnieć przy takiej wartości tego parametru, tzn. {{Code|{{m|Pudełko|Nazwa przestrzeni nazw dyskusji|Szablon}}}} - ta nazwa domyślna zostanie przekształcona na dyskusji, a jeżeli ona by była dyskusji, to nie byłoby żadnego przekształcenia, a jeśli nazwa uzyskana nazwy przestrzeni nazw z parametrów przestrzennych jest w takim przypadku błędna, to w takim razie brany jest ten parametr, a jeżeli nazwa domyślna jest błędna, czyli {{Code|{{m|Pudełko|Nazwa przestrzeni nazw dyskusji|Moja przestrzeń}}}}, wtedy funkcja zwraca stan błędu {{Code|(błąd)}}. * {{Code|i}} - numer zmiennej nazwy przestrzeni nazw. Funkcja wykorzystuje {{Code|{{sr|#p.Nazwa_przestrzeni_nazw(frame,...)|p=Pudełko/Pomocne}}}} do wyznaczania ogólnego nazwy przestrzeni nazw dla pozycji bazowej i numerkowej, tzn. dla pozycji: jeden, dwa, trzy,..., itd, i ich ogólnej. Parametr ramki tablicy transportu rodzica szablonu: * {{Code|nazwa przestrzeni nazw}}, {{Code|nazwa przestrzeni nazw 1}}, {{Code|nazwa przestrzeni nazw 2}}, {{Code|nazwa przestrzeni nazw 3}},..., {{Code|nazwa przestrzeni nazw i}} - nazwy przestrzeni nazw dla pozycji bazowej oraz zwykłej i ogólnej numerkowej, * {{Code|typ jednostki}}, {{Code|typ jednostki 1}}, {{Code|typ jednostki 2}}, {{Code|typ jednostki 3}},..., {{Code|typ jednostki i}} - typy jednostek, którym odpowiadają pewne przestrzenie przedmiotowe, dla pozycji bazowej, numerkowej i ogólnej. Parametry ramki tablicy transportu dziecka: * Parametry dziecka są takie same jak rodzica dla funkcji pudełkowej plus tu wymienione, * {{Code|numer jednostki}} - jak parametr {{Code|i}} nie został ustawiony, to wtedy liczy się ta zmienna. Przykłady: <syntaxhighlight lang="mediawiki"> {{Nazwa szablonu|nazwa przestrzeni nazw=Wikibooks|nazwa przestrzeni nazw 2=Szablon|nazwa przestrzeni nazw i=Moduł}} </syntaxhighlight> W dziecku powiedzmy jest wywołanie, i szukamy nazwy przestrzeni nazw o numerze dwa, która nie została podana, ale istnieje za to jej wersji ogólna {{Code|nazwa przestrzeni nazw i}} i domyślna {{Code|nazwa przestrzeni nazw}}: <syntaxhighlight lang="mediawiki"> {{#invoke:Pudełko|Nazwa przestrzeni nazw dyskusji|numer jednostki=1}} </syntaxhighlight> Na podstawie powyższego przykładu otrzymamy wynik o schemacie, nie wyniku, bo tam nie ma zmiennej {{Code|nazwa przestrzeni nazw 1}}, ale jest {{Code|nazwa przestrzeni nazw i}}: <syntaxhighlight lang="mediawiki"> <!-- Ale nie "nazwa przestrzeni nazw", bo jej nie ma, ale za to istnieje "nazwa przestrzeni nazw i"; --> <!-- nazwa przestrzeni nazw 2=nazwa przestrzeni nazw i=Moduł; --> <!-- Czyli wynik: --> Dyskusja modułu <!-- Widzimy, że wygenerowała się nazwa przestrzeni nazw, którą jest przestrzeń dyskusji przestrzeni programowej przestrzeni przedmiotowej "Moduł", którą również jest "Szablon" jego przestrzeni dyskusji "Dyskusja szablonu", a dla ich przestrzeni przedmiotowej, zamiast dyskusji, to przekształca się na dyskusji jej odpowiadającą; --> </syntaxhighlight> Nie jest brana w tym powyższym przykładzie zmienna {{Code|nazwa przestrzeni nazw}}, bo jej nie ma, ale za to jest {{Code|nazwa przestrzeni nazw i}}, bo ona występuje jako parametr domyślny ogólny dla parametrów numerkowych. Przykłady w wikikodzie: * {{Code|{{m|Pudełko|Nazwa przestrzeni nazw dyskusji|numer jednostki{{=}}2}}}} → {{Tt|{{#invoke:Pudełko|Nazwa przestrzeni nazw dyskusji|numer jednostki=2}}}} * {{Code|{{m|Pudełko|Nazwa przestrzeni nazw dyskusji|Szablon|nazwa przestrzeni nazw i{{=}}Moja przestrzeń|numer jednostki{{=}}2}}}} → {{Tt|{{#invoke:Pudełko|Nazwa przestrzeni nazw dyskusji|Szablon|nazwa przestrzeni nazw i=Moja przestrzeń|numer jednostki=2}}}} * {{Code|{{m|Pudełko|Nazwa przestrzeni nazw dyskusji|nazwa przestrzeni nazw 2{{=}}Szablon|numer jednostki{{=}}2}}}} → {{Tt|{{#invoke:Pudełko|Nazwa przestrzeni nazw dyskusji|nazwa przestrzeni nazw 2=Szablon|numer jednostki=2}}}} * {{Code|{{m|Pudełko|Nazwa przestrzeni nazw dyskusji|nazwa przestrzeni nazw 2{{=}}Szablon|numer jednostki{{=}}2}}}} → {{Tt|{{#invoke:Pudełko|Nazwa przestrzeni nazw dyskusji|nazwa przestrzeni nazw i=Szablon|numer jednostki=2}}}} * {{Code|{{m|Pudełko|Nazwa przestrzeni nazw dyskusji|nazwa przestrzeni nazw{{=}}Szablon|numer jednostki{{=}}2}}}} → {{Tt|{{#invoke:Pudełko|Nazwa przestrzeni nazw dyskusji|nazwa przestrzeni nazw=Szablon|numer jednostki=2}}}} Powyżej dla przykładu podano parametry nie w rodzicu w szablonie, tylko w dziecku, jeśli chodzi o parametry nazw przestrzeni nazw, ale ich się za to nie powinno podawać w tych ramach, tylko w szablonach, w których wywoływane są te ramki pudełek {{Code|{{m|Pudełko}}}}, ale tak tutaj tak zrobiono by było najłatwiej sprawdzić działanie tego typu funkcji. Analogicznie możemy podawać parametry typu jednostki, np.: wywołaniu modułowym {{Code|{{m|Pudełko|Nazwa przestrzeni nazw dyskusji|typ jednostki 2{{=}}strona szablonu|numer jednostki{{=}}2}}}}, ale o tym więcej w rozdziałach {{Code|{{sr|# p["Dyskusyjny typ jednostki"](frame,i)|p=Pudełko}}}} w „{{sr|#Funkcje typu jednostki|p=Pudełko}}”, ale wtedy nazwa przestrzeni nazw reprezentowana przez {{Parametr|typ jednostki 2|strona szablonu}}, jest zamieniana na nazwę przestrzeni nazw dyskusji. Parametr dyskusji typu jednostki bazowy lub dla danego numerka ogólny, czy szczegółowy, nie gra roli. Również parametry typu jednostki nie powinno się podawać w dziecku w ramce, tylko w rodzicu w szablonie jako parametry, w którym ta ramka jest wywoływana, ale tutaj podano jedynie dla przykładu, jak najłatwiej sprawdzić działanie tych parametrów tej funkcji. Najpierw w funkcji nagłówku brane są parametry nazw przestrzeni nazw, a jeżeli ich nie ma, to parametry typu jednostki, a jeżeli nie ma, to generowane są nazwy na podstawie aktualnego modułu. == Funkcje nazw przestrzeni nazw drugiej wersji == === {{Code|p["Nazwa przestrzeni nazw 2"](frame,...)}} === Funkcja pisze nazwę przestrzeni nazw, niezależnie, czy to jest przedmiotowa, czy dyskusji, według, i nie zawsze tylko, podanej w zmiennej {{Code|nazwa przestrzeni nazw}} dla pozycja bazowej w podanych parametrach szablonu rodzicu ramki dziecka, lub dla innej pozycji należy parametr podawać w formie {{Code|nazwa przestrzeni nazw 1}}, {{Code|nazwa przestrzeni nazw 2}}, {{Code|nazwa przestrzeni nazw 3}},..., lub te parametry można podać w postaci ogólnej {{Code|nazwa przestrzeni nazw i}}. W tej funkcji trzeba też podawać parametry nazwy jednostek {{Code|nazwa jednostki}}, {{Code|nazwa jednostki 1}}, {{Code|nazwa jednostki 2}}, {{Code|nazwa jednostki 3}},... Parametry podaje się w parametrach rodzica wywołania tej funkcji {{Code|{{m|Pudełko|Nazwa przestrzeni nazw 2}}}} (ale ich nie trzeba podawać w dziecku, ale można) i w parametrach dziecka, jeśli chodzi o zmienną {{Code|numer jednostki}}, czyli np.: {{Code|{{m|Pudełko|Nazwa przestrzeni nazw 2|numer jednostki{{=}}<jakaś liczba całkowita dodatnia>}}}}. Te parametry przestrzenne zamiast w rodzicu w szablonie można podać w ramce dziecka, wtedy parametry dziecka mają pierwszeństwo. Przestrzeń nazw z parametrów nazw przestrzennych może odpowiadać wartości przestrzeni głównej, to wtedy odpowiednia przestrzeń nazw z parametru nazwy jednostki się liczy w tej funkcji, wtedy jest liczona nazwa przestrzeni nazw z tego parametru. Gdy parametry przestrzenne lub typ jednostki w drugim podejściu nie wskazują na przestrzeń główną, to wtedy działanie tej funkcji jest podobne do {{Code|{{sr|#p["Nazwa przestrzeni nazw"](frame,...)|p=Pudełko}}}}. Definicja skrótowa funkcji: <syntaxhighlight lang="lua"> p["Nazwa przestrzeni nazw 2"]=function(frame,czy_uwzglednic_alternatywna_nazwe,i)...end; </syntaxhighlight> Wtedy ciało funkcji tej, czyli jego definicja w środku, jest: <syntaxhighlight lang="lua"> local pudelko_pomocne_modul=require("Module:Pudełko/Pomocne"); -- Liczy nazwę przestrzeni nazw, jeżeli z parametrów przestrzennych przestrzeń wskazuje na główną, to wtedy jest liczona przestrzeń nazw z nazwy jednostki; return pudelko_pomocne_modul.Nazwa_przestrzeni_nazw_2(frame,czy_uwzglednic_alternatywna_nazwe,i) </syntaxhighlight> Parametry funkcji: * {{Code|frame}} - tablica ramki tablicy transportu, * {{Code|czy_uwzglednic_alternatywna_nazwe}} - czy ma uwzględniać nazwę przestrzeni nazw domyślną szablonu, dostępne wartości: {{Code|false}}, w której nazwa domyślna nie jest uwzględniana wtedy, oraz {{Code|nil}} i {{Code|true}}, które oznaczają to samo, w tym jeżeli ona jest uwzględniana, wtedy jest brany parametr pierwszy dziecka, który musi istnieć przy takiej wartości tego parametru, tzn. {{Code|{{m|Pudełko|Nazwa przestrzeni nazw 2|Szablon}}}}, a jeśli nazwa uzyskana nazwy przestrzeni nazw jest w takim przypadku błędna, to brany jest ten element, a jeżeli nazwa domyślna jest błędna, czyli {{Code|{{m|Pudełko|Nazwa przestrzeni nazw 2|Moja przestrzeń}}}}, wtedy funkcja zwraca stan błędu {{Code|(błąd)}}. * {{Code|i}} - numer zmiennej nazwy przestrzeni nazw. Funkcja wykorzystuje {{Code|{{sr|#p.Nazwa_przestrzeni_nazw_2(frame,...)|p=Pudełko/Pomocne}}}} do wyznaczania ogólnego nazwy przestrzeni nazw dla pozycji bazowej i numerkowej, tzn. dla pozycji: jeden, dwa, trzy,..., itd, i ich ogólnej. Parametr ramki tablicy transportu rodzica szablonu: * {{Code|nazwa przestrzeni nazw}}, {{Code|nazwa przestrzeni nazw 1}}, {{Code|nazwa przestrzeni nazw 2}}, {{Code|nazwa przestrzeni nazw 3}},..., {{Code|nazwa przestrzeni nazw i}} - nazwy przestrzeni nazw dla pozycji bazowej oraz zwykłej i ogólnej numerkowej, * {{Code|nazwa jednostki}}, {{Code|nazwa jednostki 1}}, {{Code|nazwa jednostki 2}}, {{Code|nazwa jednostki 3}},... - nazwy jednostek dla pozycji bazowej i numerkowej, * {{Code|typ jednostki}}, {{Code|typ jednostki 1}}, {{Code|typ jednostki 2}}, {{Code|typ jednostki 3}},..., {{Code|typ jednostki i}} - typy jednostek, którym odpowiadają pewne przestrzenie przedmiotowe, dla pozycji bazowej, numerkowej i ogólnej, ** {{Code|dyskusja typu jednostki}}, {{Code|dyskusja typu jednostki 1}}, {{Code|dyskusja typ jednostki 2}}, {{Code|dyskusja typ jednostki 3}},..., {{Code|dyskusja typ jednostki i}} - czy dany typ jednostki ma przedstawiać, jeśli niepusta, przestrzeń dyskusji dla pozycji bazowej, numerkowej i ogólnej. Parametry ramki tablicy transportu dziecka: * Parametry dziecka są takie same jak rodzica dla funkcji pudełkowej plus tu wymienione, * {{Code|numer jednostki}} - jak parametr {{Code|i}} nie został ustawiony, to wtedy liczy się ta zmienna. Przykłady: <syntaxhighlight lang="mediawiki"> {{Nazwa szablonu|nazwa przestrzeni nazw=Wikibooks|nazwa przestrzeni nazw 1=Szablon|nazwa przestrzeni nazw i=|nazwa jednostki 2=Wikibooks:Strona}} </syntaxhighlight> W dziecku powiedzmy jest wywołanie, i szukamy nazwy przestrzeni nazw o numerze dwa, która została podana, ale istnieje za to jej wersji ogólna {{Code|nazwa przestrzeni nazw i}} i domyślna {{Code|nazwa przestrzeni nazw}}, ale wtedy dla tego numerkowego liczy się to ogólne z {{Code| i}}, a ponieważ ta nazwa jest pusta, więc będziemy liczyli nazwę przestrzeni nazw z {{Code|nazwa jednostki 2}}: <syntaxhighlight lang="mediawiki"> {{#invoke:Pudełko|Nazwa przestrzeni nazw 2|numer jednostki=2}} </syntaxhighlight> Na podstawie powyższego przykładu otrzymamy wynik o schemacie, nie wyniku, bo tam nie ma zmiennej {{Code|nazwa przestrzeni nazw 1}}, ale jest {{Code|nazwa przestrzeni nazw i}}: <syntaxhighlight lang="mediawiki"> <!-- Ale nie "nazwa przestrzeni nazw 2", bo jej nie ma, ale za to istnieje "nazwa przestrzeni nazw i"; --> <!-- nazwa przestrzeni nazw 2=nazwa przestrzeni nazw i="", a nazwa jednostki 2="Wikibooks:Strona"; --> <!-- Czyli wynik: --> Wikibooks <!-- Widzimy, że wygenerowała się nazwa przestrzeni nazw, którą jest przestrzeń nieprogramowa, ale projektu, wychodząca z nazwy jednostek w tym przypadku z "nazwa jednostki 2"; --> </syntaxhighlight> Nie jest brana w tym powyższym przykładzie zmienna {{Code|nazwa przestrzeni nazw}}, bo jej nie ma, ale za to jest {{Code|nazwa przestrzeni nazw i}}, bo ona występuje jako parametr domyślny ogólny dla parametrów numerkowych. Tytaj jest używana jest zmienna {{Code|nazwa jednostki 2}} do wygenerowania ostatecznego wyniku, bo jak można zauważyć, parametry przestrzenne wskazują na przestrzeń główną, a nazwy jednostek już nie. Przykłady w wikikodzie: * {{Code|{{m|Pudełko|Nazwa przestrzeni nazw 2|numer jednostki{{=}}2}}}} → {{Tt|{{#invoke:Pudełko|Nazwa przestrzeni nazw 2|numer jednostki=2}}}} * {{Code|{{m|Pudełko|Nazwa przestrzeni nazw 2|Szablon|nazwa przestrzeni nazw i{{=}}Moja przestrzeń|numer jednostki{{=}}2}}}} → {{Tt|{{#invoke:Pudełko|Nazwa przestrzeni nazw 2|Szablon|nazwa przestrzeni nazw i=Moja przestrzeń|numer jednostki=2}}}} * {{Code|{{m|Pudełko|Nazwa przestrzeni nazw 2|nazwa przestrzeni nazw 2{{=}}|nazwa jednostki 2{{=}}Szablon:Strona|numer jednostki{{=}}2}}}} → {{Tt|{{#invoke:Pudełko|Nazwa przestrzeni nazw 2|nazwa przestrzeni nazw 2=|nazwa jednostki 2=Szablon:Strona|numer jednostki=2}}}} * {{Code|{{m|Pudełko|Nazwa przestrzeni nazw 2|nazwa przestrzeni nazw i{{=}}|nazwa jednostki 2{{=}}Szablon:Strona|numer jednostki{{=}}2}}}} → {{Tt|{{#invoke:Pudełko|Nazwa przestrzeni nazw 2|nazwa przestrzeni nazw i=|nazwa jednostki 2=Szablon:Strona|numer jednostki=2}}}} * {{Code|{{m|Pudełko|Nazwa przestrzeni nazw 2|Szablon|nazwa przestrzeni nazw{{=}}|nazwa jednostki 2{{=}}Wikibooks:Strona|numer jednostki{{=}}2}}}} → {{Tt|{{#invoke:Pudełko|Nazwa przestrzeni nazw 2|Szablon|nazwa przestrzeni nazw=|nazwa jednostki 2=Wikibooks:Strona|numer jednostki=2}}}} Powyżej dla przykładu podano parametry nie w rodzicu w szablonie, tylko w dziecku, jeśli chodzi o parametry nazw przestrzeni nazw i nazw jednostek, ale ich się za to nie powinno podawać w tych ramach, tylko w szablonach, w których wywoływane są te ramki pudełek {{Code|{{m|Pudełko}}}}, ale tak tutaj tak zrobiono by było najłatwiej sprawdzić działanie tego typu funkcji. Analogicznie możemy podawać parametry typu jednostki, np.: wywołaniu modułowym {{Code|{{m|Pudełko|Nazwa przestrzeni nazw 2|typ jednostki 2{{=}}Podręcznik|nazwa jednostki 2{{=}}Szablon:Strona|numer jednostki{{=}}2}}}} (ale wtedy jest brana przestrzeń nazw z nazwy jednostki), ale o tym więcej w rozdziałach {{Code|{{sr|#p["Typ jednostki 2"](frame,i)|p=Pudełko}}}} w „{{sr|#Funkcje typu jednostki|p=Pudełko}}”, on definiuje przestrzenie przedmiotowe, ale można użyć parametru dyskusji typu jednostki z wartością niepustą, wtedy wyświetli się nazwa przestrzeni nazw dyskusji. Jeżeli typ jednostki wskazuje na przestrzeń nazw główną, wtedy się liczą parametry nazw jednostek. Również parametry typu jednostki nie powinno się podawać w dziecku w ramce, tylko w rodzicu w szablonie jako parametry, w którym ta ramka jest wywoływana, ale tutaj podano jedynie dla przykładu, jak najłatwiej sprawdzić działanie tych parametrów tej funkcji. Najpierw w funkcji nagłówku brane są parametry nazw przestrzeni nazw, a jeżeli ich nie ma, to parametry typu jednostki, a jeżeli nie ma lub parametry przestrzenne wskazują na przestrzeń główną, i nie ma nazwy jednostki, to generowane są nazwy tej funkcji na podstawie aktualnej strony. === {{Code|p["Nazwa przedmiotowej przestrzeni nazw 2"](frame,...)}} === Funkcja pisze przedmiotową nazwę przestrzeni nazw jakikolwiek nazwy przestrzeni nazw (tzn. nazwę przedmiotową nazwy przestrzenie nazw, czyli nie dyskusji, zamieniana jest na nią samą, czyli identyfikator przestrzeni się nie zmienia, a dyskusji, nie przedmiotową, przekształca się na przedmiotową jej odpowiadającą, czyli w tym przypadku identyfikator przestrzeni zmniejsza się o numer mniej), według, i nie zawsze tylko, podanej w zmiennej {{Code|nazwa przestrzeni nazw}} dla pozycja bazowej w podanych parametrach szablonu rodzicu ramki dziecka, lub dla innej pozycji należy parametr podawać w formie {{Code|nazwa przestrzeni nazw 1}}, {{Code|nazwa przestrzeni nazw 2}}, {{Code|nazwa przestrzeni nazw 3}},..., lub te parametry można podać w postaci ogólnej {{Code|nazwa przestrzeni nazw i}}. W tej funkcji trzeba też podawać parametry nazwy jednostek {{Code|nazwa jednostki}}, {{Code|nazwa jednostki 1}}, {{Code|nazwa jednostki 2}}, {{Code|nazwa jednostki 3}},... Parametry podaje się w parametrach rodzica wywołania tej funkcji {{Code|{{m|Pudełko|Nazwa przedmiotowej przestrzeni nazw 2}}}} (ale ich nie trzeba podawać w dziecku, ale można) i w parametrach dziecka, jeśli chodzi o zmienną {{Code|numer jednostki}}, czyli np.: {{Code|{{m|Pudełko|Nazwa przedmiotowej przestrzeni nazw 2|numer jednostki{{=}}<jakaś liczba całkowita dodatnia>}}}}. Te parametry przestrzenne zamiast w rodzicu w szablonie można podać w ramce dziecka, wtedy parametry dziecka mają pierwszeństwo. Przestrzeń nazw z parametrów nazw przestrzennych po przekształceniu na przedmiotową może odpowiadać wartości przestrzeni głównej, to wtedy odpowiednia przestrzeń nazw z parametru nazwy jednostki się liczy w tej funkcji, wtedy jest liczona nazwa przestrzeni nazw z tego parametru. Gdy parametry przestrzenne lub typ jednostki w drugim podejściu nie wskazują na przestrzeń główną, to wtedy działanie tej funkcji jest podobne do {{Code|{{sr|#p["Nazwa przedmiotowej przestrzeni nazw"](frame,...)|p=Pudełko}}}}. Definicja skrótowa funkcji: <syntaxhighlight lang="lua"> p["Nazwa przedmiotowej przestrzeni nazw 2"]=function(frame,czy_uwzglednic_alternatywna_nazwe,i)...end; </syntaxhighlight> Wtedy ciało funkcji tej, czyli jego definicja w środku, jest: <syntaxhighlight lang="lua"> local pudelko_pomocne_modul=require("Module:Pudełko/Pomocne"); return pudelko_pomocne_modul.Nazwa_przestrzeni_nazw_przedmiotowa_dyskusji_2(frame,czy_uwzglednic_alternatywna_nazwe,i,"przedmiotowa"); </syntaxhighlight> Parametry funkcji: * {{Code|frame}} - tablica ramki tablicy transportu, * {{Code|czy_uwzglednic_alternatywna_nazwe}} - czy ma uwzględniać nazwę przestrzeni nazw domyślną szablonu, dostępne wartości: {{Code|false}}, w której nazwa domyślna nie jest uwzględniana wtedy, oraz {{Code|nil}} i {{Code|true}}, które oznaczają to samo, w tym jeżeli ona jest uwzględniana, wtedy jest brany parametr pierwszy dziecka, który musi istnieć przy takiej wartości tego parametru, tzn. {{Code|{{m|Pudełko|Nazwa przedmiotowej przestrzeni nazw 2|Szablon}}}}, nazwa domyślna zostanie zamieniona na przedmiotową, a jeżeli jest już taka, to żadnej zamiany nie ma, a jeśli nazwa uzyskana nazwy przestrzeni nazw jest w takim przypadku błędna, to brany jest ten eleement, a jeżeli nazwa domyślna jest błędna, czyli {{Code|{{m|Pudełko|Nazwa przedmiotowej przestrzeni nazw 2|Moja przestrzeń}}}}, wtedy funkcja zwraca stan błędu {{Code|(błąd)}}. * {{Code|i}} - numer zmiennej nazwy przestrzeni nazw. Funkcja wykorzystuje {{Code|{{sr|#p.Nazwa_przestrzeni_nazw_przedmiotowa_dyskusji_2(frame,...)|p=Pudełko/Pomocne}}}} do wyznaczania ogólnego nazwy przestrzeni nazw dla pozycji bazowej i numerkowej, tzn. dla pozycji: jeden, dwa, trzy,..., itd, i ich ogólnej. Parametr ramki tablicy transportu rodzica szablonu: * {{Code|nazwa przestrzeni nazw}}, {{Code|nazwa przestrzeni nazw 1}}, {{Code|nazwa przestrzeni nazw 2}}, {{Code|nazwa przestrzeni nazw 3}},..., {{Code|nazwa przestrzeni nazw i}} - nazwy przestrzeni nazw dla pozycji bazowej oraz zwykłej i ogólnej numerkowej, * {{Code|nazwa jednostki}}, {{Code|nazwa jednostki 1}}, {{Code|nazwa jednostki 2}}, {{Code|nazwa jednostki 3}},... - nazwy jednostek dla pozycji bazowej i numerkowej, * {{Code|typ jednostki}}, {{Code|typ jednostki 1}}, {{Code|typ jednostki 2}}, {{Code|typ jednostki 3}},..., {{Code|typ jednostki i}} - typy jednostek, którym odpowiadają pewne przestrzenie przedmiotowe, dla pozycji bazowej, numerkowej i ogólnej. Parametry ramki tablicy transportu dziecka: * Parametry dziecka są takie same jak rodzica dla funkcji pudełkowej plus tu wymienione, * {{Code|numer jednostki}} - jak parametr {{Code|i}} nie został ustawiony, to wtedy liczy się ta zmienna. Przykłady: <syntaxhighlight lang="mediawiki"> {{Nazwa szablonu|nazwa przestrzeni nazw=Wikibooks|nazwa przestrzeni nazw 1=Szablon|nazwa przestrzeni nazw i=|nazwa jednostki 2=Dyskusja Wikibooks:Strona}} </syntaxhighlight> W dziecku powiedzmy jest wywołanie, i szukamy nazwy przestrzeni nazw o numerze dwa, która została podana, ale istnieje za to jej wersji ogólna {{Code|nazwa przestrzeni nazw i}} i domyślna {{Code|nazwa przestrzeni nazw}}, ale wtedy dla tego numerkowego liczy się to ogólne z {{Code| i}}, a ponieważ ta nazwa jest pusta, więc będziemy liczyli nazwę przestrzeni nazw z {{Code|nazwa jednostki 2}}: <syntaxhighlight lang="mediawiki"> {{#invoke:Pudełko|Nazwa przedmiotowej przestrzeni nazw 2|numer jednostki=2}} </syntaxhighlight> Na podstawie powyższego przykładu otrzymamy wynik o schemacie, nie wyniku, bo tam nie ma zmiennej {{Code|nazwa przestrzeni nazw 1}}, ale jest {{Code|nazwa przestrzeni nazw i}}: <syntaxhighlight lang="mediawiki"> <!-- Ale nie "nazwa przestrzeni nazw 2", bo jej nie ma, ale za to istnieje "nazwa przestrzeni nazw i"; --> <!-- nazwa przestrzeni nazw 2=nazwa przestrzeni nazw i="", a nazwa jednostki 2="Dyskusja Wikibooks:Strona"; --> <!-- Czyli wynik: --> Wikibooks <!-- Widzimy, że wygenerowała się nazwa przestrzeni nazw, którą jest przestrzeń nieprogramowa, ale projektu, wychodząca z nazwy jednostek w tym przypadku z "nazwa jednostki 2"; --> </syntaxhighlight> Nie jest brana w tym powyższym przykładzie zmienna {{Code|nazwa przestrzeni nazw}}, bo jej nie ma, ale za to jest {{Code|nazwa przestrzeni nazw i}}, bo ona występuje jako parametr domyślny ogólny dla parametrów numerkowych. Tytaj jest używana jest zmienna {{Code|nazwa jednostki 2}} do wygenerowania ostatecznego wyniku, bo jak można zauważyć, parametry przestrzenne wskazują na przestrzeń główną, a nazwy jednostek już nie. Przykłady w wikikodzie: * {{Code|{{m|Pudełko|Nazwa przedmiotowej przestrzeni nazw 2|numer jednostki{{=}}2}}}} → {{Tt|{{#invoke:Pudełko|Nazwa przedmiotowej przestrzeni nazw 2|numer jednostki=2}}}} * {{Code|{{m|Pudełko|Nazwa przedmiotowej przestrzeni nazw 2|Dyskusja szablonu|nazwa przestrzeni nazw i{{=}}Moja przestrzeń|numer jednostki{{=}}2}}}} → {{Tt|{{#invoke:Pudełko|Nazwa przedmiotowej przestrzeni nazw 2|Dyskusja szablonu|nazwa przestrzeni nazw i=Moja przestrzeń|numer jednostki=2}}}} * {{Code|{{m|Pudełko|Nazwa przedmiotowej przestrzeni nazw 2|nazwa przestrzeni nazw 2{{=}}Dyskusja|nazwa jednostki 2{{=}}Dyskusja szablonu:Strona|numer jednostki{{=}}2}}}} → {{Tt|{{#invoke:Pudełko|Nazwa przedmiotowej przestrzeni nazw 2|nazwa przestrzeni nazw 2=Dyskusja|nazwa jednostki 2=Dyskusja szablonu:Strona|numer jednostki=2}}}} * {{Code|{{m|Pudełko|Nazwa przedmiotowej przestrzeni nazw 2|nazwa przestrzeni nazw i{{=}}Dyskusja|nazwa jednostki 2{{=}}Dyskusja szablonu:Strona|numer jednostki{{=}}2}}}} → {{Tt|{{#invoke:Pudełko|Nazwa przedmiotowej przestrzeni nazw 2|nazwa przestrzeni nazw i=Dyskusja|nazwa jednostki 2=Dyskusja szablonu:Strona|numer jednostki=2}}}} * {{Code|{{m|Pudełko|Nazwa przedmiotowej przestrzeni nazw 2|Dyskusja szablonu|nazwa przestrzeni nazw{{=}}Dyskusja|nazwa jednostki 2{{=}}Wikibooks:Strona|numer jednostki{{=}}2}}}} → {{Tt|{{#invoke:Pudełko|Nazwa przedmiotowej przestrzeni nazw 2|Dyskusja szablonu|nazwa przestrzeni nazw=Dyskusja|nazwa jednostki 2=Dyskusja Wikibooks:Strona|numer jednostki=2}}}} Powyżej dla przykładu podano parametry nie w rodzicu w szablonie, tylko w dziecku, jeśli chodzi o parametry nazw przestrzeni nazw i nazw jednostek, ale ich się za to nie powinno podawać w tych ramach, tylko w szablonach, w których wywoływane są te ramki pudełek {{Code|{{m|Pudełko}}}}, ale tak tutaj tak zrobiono by było najłatwiej sprawdzić działanie tego typu funkcji. Analogicznie możemy podawać parametry typu jednostki, np.: wywołaniu modułowym {{Code|{{m|Pudełko|Nazwa przedmiotowej przestrzeni nazw 2|typ jednostki 2{{=}}Podręcznik|nazwa jednostki 2{{=}}Dyskusja szablonu:Strona|numer jednostki{{=}}2}}}} (ale wtedy jest brana przestrzeń nazw z nazwy jednostki), ale o tym więcej w rozdziałach {{Code|{{sr|# p["Przedmiotowy typ jednostki 2"](frame,i)|p=Pudełko}}}} w „{{sr|#Funkcje typu jednostki|p=Pudełko}}”, on definiuje przestrzenie przedmiotowe, ale można użyć parametru dyskusji typu jednostki z wartością niepustą, pustą, czy nawet jej nie podamy, wtedy wyświetli się nazwa przestrzeni nazw przedmiotowej. Jeżeli typ jednostki wskazuje na przestrzeń nazw główną, wtedy się liczą parametry nazw jednostek. Również parametry typu jednostki nie powinno się podawać w dziecku w ramce, tylko w rodzicu w szablonie jako parametry, w którym ta ramka jest wywoływana, ale tutaj podano jedynie dla przykładu, jak najłatwiej sprawdzić działanie tych parametrów tej funkcji. Najpierw w funkcji nagłówku brane są parametry nazw przestrzeni nazw, a jeżeli ich nie ma, to parametry typu jednostki, a jeżeli nie ma lub parametry przestrzenne wskazują na przestrzeń główną, i nie ma nazwy jednostki, to generowane są nazwy tej funkcji na podstawie aktualnej strony. === {{Code|p["Nazwa przestrzeni nazw dyskusji 2"](frame,...)}} === Funkcja pisze nazwę przestrzeni nazw dyskusji jakikolwiek nazwy przestrzeni nazw (tzn. nazwę dyskusji nazwy przestrzenie nazw, czyli nie przedmiotowej, zamieniana jest na nią samą, czyli identyfikator przestrzeni się nie zmienia, a przedmiotową, nie dyskusji, przekształca się na dyskusji jej odpowiadającą, czyli w tym przypadku identyfikator przestrzeni zwiększa się o numer więcej), według, i nie zawsze tylko, podanej w zmiennej {{Code|nazwa przestrzeni nazw}} dla pozycja bazowej w podanych parametrach szablonu rodzicu ramki dziecka, lub dla innej pozycji należy parametr podawać w formie {{Code|nazwa przestrzeni nazw 1}}, {{Code|nazwa przestrzeni nazw 2}}, {{Code|nazwa przestrzeni nazw 3}},..., lub te parametry można podać w postaci ogólnej {{Code|nazwa przestrzeni nazw i}}. W tej funkcji trzeba też podawać parametry nazwy jednostek {{Code|nazwa jednostki}}, {{Code|nazwa jednostki 1}}, {{Code|nazwa jednostki 2}}, {{Code|nazwa jednostki 3}},... Parametry podaje się w parametrach rodzica wywołania tej funkcji {{Code|{{m|Pudełko|Nazwa przestrzeni nazw dyskusji 2}}}} (ale ich nie trzeba podawać w dziecku, ale można) i w parametrach dziecka, jeśli chodzi o zmienną {{Code|numer jednostki}}, czyli np.: {{Code|{{m|Pudełko|Nazwa przestrzeni nazw dyskusji 2|numer jednostki{{=}}<jakaś liczba całkowita dodatnia>}}}}. Te parametry przestrzenne zamiast w rodzicu w szablonie można podać w ramce dziecka, wtedy parametry dziecka mają pierwszeństwo. Przestrzeń nazw z parametrów nazw przestrzennych po przekształceniu może odpowiadać wartości przestrzeni głównej, to wtedy odpowiednia przestrzeń nazw z parametru nazwy jednostki się liczy w tej funkcji, wtedy jest liczona nazwa przestrzeni nazw dyskusji z tego parametru. Gdy parametry przestrzenne lub typ jednostki w drugim podejściu nie wskazują na przestrzeń główną, to wtedy działanie tej funkcji jest podobne do {{Code|{{sr|#p["Nazwa dyskusji przestrzeni nazw"](frame,...)|p=Pudełko}}}}. Definicja skrótowa funkcji: <syntaxhighlight lang="lua"> p["Nazwa przestrzeni nazw dyskusji 2"]=function(frame,czy_uwzglednic_alternatywna_nazwe,i)...end; </syntaxhighlight> Wtedy ciało funkcji tej, czyli jego definicja w środku, jest: <syntaxhighlight lang="lua"> local pudelko_pomocne_modul=require("Module:Pudełko/Pomocne"); return pudelko_pomocne_modul.Nazwa_przestrzeni_nazw_przedmiotowa_dyskusji_2(frame,czy_uwzglednic_alternatywna_nazwe,i,"dyskusja"); </syntaxhighlight> Parametry funkcji: * {{Code|frame}} - tablica ramki tablicy transportu, * {{Code|czy_uwzglednic_alternatywna_nazwe}} - czy ma uwzględniać nazwę przestrzeni nazw domyślną szablonu, dostępne wartości: {{Code|false}}, w której nazwa domyślna nie jest uwzględniana wtedy, oraz {{Code|nil}} i {{Code|true}}, które oznaczają to samo, w tym jeżeli ona jest uwzględniana, wtedy jest brany parametr pierwszy dziecka, który musi istnieć przy takiej wartości tego parametru, tzn. {{Code|{{m|Pudełko|Nazwa przestrzeni nazw dyskusji 2|Szablon}}}}, nazwa domyślna zostanie zamieniona na dyskusji, a jeżeli jest już taka, to nie ma takiej zamiany, a jeśli nazwa uzyskana nazwy przestrzeni nazw jest w takim przypadku błędna, to brany jest ten element, a jeżeli nazwa domyślna jest błędna, czyli {{Code|{{m|Pudełko|Nazwa przestrzeni nazw dyskusji 2|Moja przestrzeń}}}}, wtedy funkcja zwraca stan błędu {{Code|(błąd)}}. * {{Code|i}} - numer zmiennej nazwy przestrzeni nazw. Funkcja wykorzystuje {{Code|{{sr|#p.Nazwa_przestrzeni_nazw_przedmiotowa_dyskusji_2(frame,...)|p=Pudełko/Pomocne}}}} do wyznaczania ogólnego nazwy przestrzeni nazw dla pozycji bazowej i numerkowej, tzn. dla pozycji: jeden, dwa, trzy,..., itd, i ich ogólnej. Parametr ramki tablicy transportu rodzica szablonu: * {{Code|nazwa przestrzeni nazw}}, {{Code|nazwa przestrzeni nazw 1}}, {{Code|nazwa przestrzeni nazw 2}}, {{Code|nazwa przestrzeni nazw 3}},..., {{Code|nazwa przestrzeni nazw i}} - nazwy przestrzeni nazw dla pozycji bazowej oraz zwykłej i ogólnej numerkowej, * {{Code|nazwa jednostki}}, {{Code|nazwa jednostki 1}}, {{Code|nazwa jednostki 2}}, {{Code|nazwa jednostki 3}},... - nazwy jednostek dla pozycji bazowej i numerkowej, * {{Code|typ jednostki}}, {{Code|typ jednostki 1}}, {{Code|typ jednostki 2}}, {{Code|typ jednostki 3}},..., {{Code|typ jednostki i}} - typy jednostek, którym odpowiadają pewne przestrzenie przedmiotowe, dla pozycji bazowej, numerkowej i ogólnej. Parametry ramki tablicy transportu dziecka: * Parametry dziecka są takie same jak rodzica dla funkcji pudełkowej plus tu wymienione, * {{Code|numer jednostki}} - jak parametr {{Code|i}} nie został ustawiony, to wtedy liczy się ta zmienna. Przykłady: <syntaxhighlight lang="mediawiki"> {{Nazwa szablonu|nazwa przestrzeni nazw=Wikibooks|nazwa przestrzeni nazw 1=Szablon|nazwa przestrzeni nazw i=|nazwa jednostki 2=Wikibooks:Strona}} </syntaxhighlight> W dziecku powiedzmy jest wywołanie, i szukamy nazwy przestrzeni nazw o numerze dwa, która została podana, ale istnieje za to jej wersji ogólna {{Code|nazwa przestrzeni nazw i}} i domyślna {{Code|nazwa przestrzeni nazw}}, ale wtedy dla tego numerkowego liczy się to ogólne z {{Code| i}}, a ponieważ ta nazwa jest pusta, więc będziemy liczyli nazwę przestrzeni nazw z {{Code|nazwa jednostki 2}}: <syntaxhighlight lang="mediawiki"> {{#invoke:Pudełko|Nazwa przestrzeni nazw dyskusji 2|numer jednostki=2}} </syntaxhighlight> Na podstawie powyższego przykładu otrzymamy wynik o schemacie, nie wyniku, bo tam nie ma zmiennej {{Code|nazwa przestrzeni nazw 1}}, ale jest {{Code|nazwa przestrzeni nazw i}}: <syntaxhighlight lang="mediawiki"> <!-- Ale nie "nazwa przestrzeni nazw 2", bo jej nie ma, ale za to istnieje "nazwa przestrzeni nazw i"; --> <!-- nazwa przestrzeni nazw 2=nazwa przestrzeni nazw i="", a nazwa jednostki 2="Wikibooks:Strona"; --> <!-- Czyli wynik: --> Dyskusja Wikibooks <!-- Widzimy, że wygenerowała się nazwa przestrzeni nazw, którą jest przestrzeń nieprogramowa, ale dyskusji projektu, wychodząca z nazwy jednostek w tym przypadku z "nazwa jednostki 2"; --> </syntaxhighlight> Nie jest brana w tym powyższym przykładzie zmienna {{Code|nazwa przestrzeni nazw}}, bo jej nie ma, ale za to jest {{Code|nazwa przestrzeni nazw i}}, bo ona występuje jako parametr domyślny ogólny dla parametrów numerkowych. Tytaj jest używana jest zmienna {{Code|nazwa jednostki 2}} do wygenerowania ostatecznego wyniku, bo jak można zauważyć, parametry przestrzenne wskazują na przestrzeń główną, a nazwy jednostek już nie. Przykłady w wikikodzie: * {{Code|{{m|Pudełko|Nazwa przestrzeni nazw dyskusji 2|numer jednostki{{=}}2}}}} → {{Tt|{{#invoke:Pudełko|Nazwa przestrzeni nazw dyskusji 2|numer jednostki=2}}}} * {{Code|{{m|Pudełko|Nazwa przestrzeni nazw dyskusji 2|Szablon|nazwa przestrzeni nazw i{{=}}Moja przestrzeń|numer jednostki{{=}}2}}}} → {{Tt|{{#invoke:Pudełko|Nazwa przestrzeni nazw dyskusji 2|Szablon|nazwa przestrzeni nazw i=Moja przestrzeń|numer jednostki=2}}}} * {{Code|{{m|Pudełko|Nazwa przestrzeni nazw dyskusji 2|nazwa przestrzeni nazw 2{{=}}|nazwa jednostki 2{{=}}Szablon:Strona|numer jednostki{{=}}2}}}} → {{Tt|{{#invoke:Pudełko|Nazwa przestrzeni nazw dyskusji 2|nazwa przestrzeni nazw 2=|nazwa jednostki 2=Szablon:Strona|numer jednostki=2}}}} * {{Code|{{m|Pudełko|Nazwa przestrzeni nazw dyskusji 2|nazwa przestrzeni nazw i{{=}}|nazwa jednostki 2{{=}}Szablon:Strona|numer jednostki{{=}}2}}}} → {{Tt|{{#invoke:Pudełko|Nazwa przestrzeni nazw dyskusji 2|nazwa przestrzeni nazw i=|nazwa jednostki 2=Szablon:Strona|numer jednostki=2}}}} * {{Code|{{m|Pudełko|Nazwa przestrzeni nazw dyskusji 2|Szablon|nazwa przestrzeni nazw{{=}}|nazwa jednostki 2{{=}}Wikibooks:Strona|numer jednostki{{=}}2}}}} → {{Tt|{{#invoke:Pudełko|Nazwa przestrzeni nazw dyskusji 2|Szablon|nazwa przestrzeni nazw=|nazwa jednostki 2=Dyskusja Wikibooks:Strona|numer jednostki=2}}}} Powyżej dla przykładu podano parametry nie w rodzicu w szablonie, tylko w dziecku, jeśli chodzi o parametry nazw przestrzeni nazw i nazw jednostek, ale ich się za to nie powinno podawać w tych ramach, tylko w szablonach, w których wywoływane są te ramki pudełek {{Code|{{m|Pudełko}}}}, ale tak tutaj tak zrobiono by było najłatwiej sprawdzić działanie tego typu funkcji. Analogicznie możemy podawać parametry typu jednostki, np.: wywołaniu modułowym {{Code|{{m|Pudełko|Nazwa przestrzeni nazw dyskusji 2|typ jednostki 2{{=}}Podręcznik|nazwa jednostki 2{{=}}Szablon:Strona|numer jednostki{{=}}2}}}} (ale wtedy jest brana przestrzeń nazw z nazwy jednostki), ale o tym więcej w rozdziałach {{Code|{{sr|# p["Dyskusyjny typ jednostki 3"](frame,i)|p=Pudełko}}}} w „{{sr|#Funkcje typu jednostki|p=Pudełko}}”, one definiują przestrzenie dyskusji, ale można użyć parametru dyskusji typu jednostki z obojętnie jaką wartością niepustą, czy pustą, czy nawet jej nie podamy, wtedy wyświetli się nazwa przestrzeni nazw dyskusji. Jeżeli typ jednostki wskazuje na przestrzeń nazw główną, wtedy się liczą parametry nazw jednostek. Również parametry typu jednostki nie powinno się podawać w dziecku w ramce, tylko w rodzicu w szablonie jako parametry, w którym ta ramka jest wywoływana, ale tutaj podano jedynie dla przykładu, jak najłatwiej sprawdzić działanie tych parametrów tej funkcji. Najpierw w funkcji nagłówku brane są parametry nazw przestrzeni nazw, a jeżeli ich nie ma, to parametry typu jednostki, a jeżeli nie ma lub parametry przestrzenne wskazują na przestrzeń główną, i nie ma nazwy jednostki, to generowane są nazwy tej funkcji na podstawie aktualnej strony. == Funkcje pełnych nazw jednostki == === {{Code|p["Pełna nazwa dyskusji jednostki"](frame,i)}} === === {{Code|p["Pełna nazwa przedmiotowa jednostki"](frame,i)}} === === {{Code|p["Pełna nazwa jednostki"](frame,i)}} === == Funkcje pełnych nazw jednostki drugiej wersji == === {{Code|p["Pełna nazwa dyskusji jednostki 2"](frame,i)}} === === {{Code|p["Pełna nazwa przedmiotowa jednostki 2"](frame,i)}} === === {{Code|p["Pełna nazwa jednostki 2"](frame,i)}} === == Funkcje pełnych nazw jednostki trzeciej wersji == === {{Code|p["Pełna nazwa dyskusji jednostki 3"](frame,i)}} === === {{Code|p["Pełna nazwa przedmiotowa jednostki 3"](frame,i)}} === === {{Code|p["Pełna nazwa jednostki 3"](frame,i)}} === == Funkcje nazw jednostki == === {{Code|p["Nazwa jednostki"](frame,i)}} === == Funkcje nazw jednostki drugiej wersji == === {{Code|p["Nazwa jednostki 2"](frame,i)}} === === {{Code|p["Nazwa przedmiotowa jednostki 2"](frame,i)}} === === {{Code|p["Nazwa dyskusji jednostki 2"](frame,i)}} === == Funkcje nazw przestrzeni nazw trzeciej wersji == === {{Code|p["Nazwa przestrzeni nazw 3"](frame,i)}} === Funkcja pisze nazwę przestrzeni nazw, niezależnie, czy to jest przedmiotowa, czy dyskusji, według, i nie zawsze tylko, podanej w zmiennej {{Code|nazwa przestrzeni nazw}} dla pozycja bazowej w podanych parametrach szablonu rodzicu ramki dziecka, lub dla innej pozycji należy parametr podawać w formie {{Code|nazwa przestrzeni nazw 1}}, {{Code|Nazwa przestrzeni nazw 3}}, {{Code|nazwa przestrzeni nazw 3}},..., lub te parametry można podać w postaci ogólnej {{Code|nazwa przestrzeni nazw i}}. W tej funkcji trzeba też podawać parametry nazwy jednostek {{Code|nazwa jednostki}}, {{Code|nazwa jednostki 1}}, {{Code|nazwa jednostki 2}}, {{Code|nazwa jednostki 3}},... Parametry podaje się w parametrach rodzica wywołania tej funkcji {{Code|{{m|Pudełko|Nazwa przestrzeni nazw 3}}}} (ale ich nie trzeba podawać w dziecku, ale można) i w parametrach dziecka, jeśli chodzi o zmienną {{Code|numer jednostki}}, czyli np.: {{Code|{{m|Pudełko|Nazwa przestrzeni nazw 3|numer jednostki{{=}}<jakaś liczba całkowita dodatnia>}}}}. Te parametry przestrzenne zamiast w rodzicu w szablonie można podać w ramce dziecka, wtedy parametry dziecka mają pierwszeństwo. Przestrzeń nazw z parametrów nazw przestrzennych bazowych (bez numerka) może odpowiadać wartości przestrzeni głównej, to wtedy odpowiednia przestrzeń nazw z parametru nazwy jednostki się nie liczy w tej funkcji, aby się liczyła należy użyć funkcji {{Code|{{sr|#p["Nazwa przestrzeni nazw 2"](frame,...)|p=Pudełko}}}}. W tym przypadku funkcja działa jak {{Code|{{sr|#p["Nazwa przestrzeni nazw"](frame,...)|p=Pudełko}}}}. Przestrzeń nazw z parametrów nazw przestrzennych numerkowych może odpowiadać wartości przestrzeni głównej, to wtedy odpowiednia przestrzeń nazw z parametru nazwy jednostki się liczy w tej funkcji, wtedy jest liczona nazwa przestrzeni nazw z tego parametru. Gdy parametry przestrzenne lub typ jednostki w drugim podejściu nie wskazują na przestrzeń główną, to wtedy działanie tej funkcji jest podobne do {{Code|{{sr|#p["Nazwa przestrzeni nazw 2"](frame,...)|p=Pudełko}}}}. Definicja skrótowa funkcji: <syntaxhighlight lang="lua"> p["Nazwa przestrzeni nazw 3"]=function(frame,czy_uwzglednic_alternatywna_nazwe,i)...end; </syntaxhighlight> Wtedy ciało funkcji tej, czyli jego definicja w środku, jest: <syntaxhighlight lang="lua"> -- Jest liczony numer parametru nazwy przestrzeni nazw, domyslnie chodzi tu o numer bazowy parametrów przestrzennych; local numer_jednostki=i or frame.args["numer jednostki"]; local liczba_numeru_jednostki=((numer_jednostki)and(tonumber(numer_jednostki)) or 0); local pudelko_pomocne_modul=require("Module:Pudełko/Pomocne"); -- Liczy nazwę przestrzeni nazw dyskusji na podstawie podanych parametrów; return pudelko_pomocne_modul.Uzyskanie_nazw_jednostki(frame,0,liczba_numeru_jednostki,nil,2); </syntaxhighlight> Parametry funkcji: * {{Code|frame}} - tablica ramki tablicy transportu, * {{Code|czy_uwzglednic_alternatywna_nazwe}} - czy ma uwzględniać nazwę przestrzeni nazw domyślną szablonu, dostępne wartości: {{Code|false}}, w której nazwa domyślna nie jest uwzględniana wtedy, oraz {{Code|nil}} i {{Code|true}}, które oznaczają to samo, w tym jeżeli ona jest uwzględniana, wtedy jest brany parametr pierwszy dziecka, który musi istnieć przy takiej wartości tego parametru, tzn. {{Code|{{m|Pudełko|Nazwa przestrzeni nazw 3|Szablon}}}}, a jeśli nazwa uzyskana nazwy przestrzeni nazw jest w takim przypadku błędna, a jeżeli nazwa domyślna jest błędna, czyli {{Code|{{m|Pudełko|Nazwa przestrzeni nazw 3|Moja przestrzeń}}}}, wtedy funkcja zwraca stan błędu {{Code|(błąd)}}. * {{Code|i}} - numer zmiennej nazwy przestrzeni nazw. Funkcja wykorzystuje {{Code|{{sr|#p.Uzyskanie_nazw_jednostki(frame,...)|p=Pudełko/Pomocne}}}} do wyznaczania ogólnego nazwy przestrzeni nazw dla pozycji bazowej i numerkowej, tzn. dla pozycji: jeden, dwa, trzy,..., itd, i ich ogólnej. Parametr ramki tablicy transportu rodzica szablonu: * {{Code|nazwa przestrzeni nazw}}, {{Code|nazwa przestrzeni nazw 1}}, {{Code|Nazwa przestrzeni nazw 3}}, {{Code|nazwa przestrzeni nazw 3}},..., {{Code|nazwa przestrzeni nazw i}} - nazwy przestrzeni nazw dla pozycji bazowej oraz zwykłej i ogólnej numerkowej, * {{Code|nazwa jednostki}}, {{Code|nazwa jednostki 1}}, {{Code|nazwa jednostki 2}}, {{Code|nazwa jednostki 3}},... - nazwy jednostek dla pozycji bazowej i numerkowej, * {{Code|typ jednostki}}, {{Code|typ jednostki 1}}, {{Code|typ jednostki 2}}, {{Code|typ jednostki 3}},..., {{Code|typ jednostki i}} - typy jednostek, którym odpowiadają pewne przestrzenie przedmiotowe, dla pozycji bazowej, numerkowej i ogólnej, ** {{Code|dyskusja typu jednostki}}, {{Code|dyskusja typu jednostki 1}}, {{Code|dyskusja typ jednostki 2}}, {{Code|dyskusja typ jednostki 3}},..., {{Code|dyskusja typ jednostki i}} - czy dany typ jednostki ma przedstawiać, jeśli niepusta, przestrzeń dyskusji dla pozycji bazowej, numerkowej i ogólnej. Parametry ramki tablicy transportu dziecka: * Parametry dziecka są takie same jak rodzica dla funkcji pudełkowej plus tu wymienione, * {{Code|numer jednostki}} - jak parametr {{Code|i}} nie został ustawiony, to wtedy liczy się ta zmienna. Przykłady: <syntaxhighlight lang="mediawiki"> {{Nazwa szablonu 1|nazwa przestrzeni nazw=Wikibooks|nazwa przestrzeni nazw=|nazwa przestrzeni nazw i=|nazwa jednostki=Szablon:Strona}} ---- {{Nazwa szablonu 2|nazwa przestrzeni nazw=Wikibooks|nazwa przestrzeni nazw 1=Szablon|nazwa przestrzeni nazw i=|nazwa jednostki 2=Wikibooks:Strona}} </syntaxhighlight> W pierwszym wywołaniu {{Code|nazwa przestrzeni nazw}} jest puste, ale dla tego bazowego (bez numerka) szukamy przestrzeni nazw, a więc ta nazwa jest ostateczna. ---- W drugim wywołaniu w dziecku powiedzmy jest wywołanie, i szukamy nazwy przestrzeni nazw o numerze dwa, która została podana, ale istnieje za to jej wersji ogólna {{Code|nazwa przestrzeni nazw i}} i domyślna {{Code|nazwa przestrzeni nazw}}, ale wtedy dla tego numerkowego liczy się to ogólne z {{Code| i}}, a ponieważ ta nazwa jest pusta, więc będziemy liczyli nazwę przestrzeni nazw z {{Code|nazwa jednostki 2}}. Odpowiadająca powyższemu kodowi, powiedzmy wikikod, według ich zawartości, przedstawia się: <syntaxhighlight lang="mediawiki"> {{#invoke:Pudełko|Nazwa przestrzeni nazw 3}} ---- {{#invoke:Pudełko|Nazwa przestrzeni nazw 3|numer jednostki=2}} </syntaxhighlight> Na podstawie powyższego przykładu otrzymamy wynik o schemacie, nie wyniku, bo tam nie ma zmiennej {{Code|nazwa przestrzeni nazw 1}}, ale jest {{Code|nazwa przestrzeni nazw i}}: <syntaxhighlight lang="mediawiki"> <!-- nazwa przestrzeni nazw=""; --> <!-- Czyli wynik: --> <!-- wynik pusty --> <!-- Widzimy, że wygenerowała się nazwa przestrzeni nazw, którą jest przestrzeń nazw główna, jest ciągiem pustym: ""; --> ---- <!-- Ale nie "nazwa przestrzeni nazw 2", bo jej nie ma, ale za to istnieje "nazwa przestrzeni nazw i"; --> <!-- nazwa przestrzeni nazw 2=nazwa przestrzeni nazw i="", a nazwa jednostki 2="Wikibooks:Strona"; --> <!-- Czyli wynik: --> Wikibooks <!-- Widzimy, że wygenerowała się nazwa przestrzeni nazw, którą jest przestrzeń nieprogramowa, ale projektu, wychodząca z nazwy jednostek w tym przypadku z "nazwa jednostki 2"; --> </syntaxhighlight> Dla parametrów numerkowych nie jest brana w tym powyższym przykładzie zmienna {{Code|nazwa przestrzeni nazw 2}}, bo jej nie ma, ale za to jest {{Code|nazwa przestrzeni nazw i}}, bo ona występuje jako parametr domyślny ogólny dla parametrów numerkowych. Tytaj jest używana jest zmienna {{Code|nazwa jednostki 2}} do wygenerowania ostatecznego wyniku, bo jak można zauważyć, parametry przestrzenne wskazują na przestrzeń główną, a nazwy jednostek już nie. Dla parametrów bazowych mamy zmienną {{Code|nazwa przestrzeni nazw}}, ona jest pusta, więc to zostanie wziete do ostatecznego wyniku. Przykłady w wikikodzie: * {{Code|{{m|Pudełko|Nazwa przestrzeni nazw 3|Szablon|nazwa przestrzeni nazw{{=}}Moja przestrzeń|nazwa jednostki{{=}}Wikibooks:Strona}}}} → {{Tt|{{#invoke:Pudełko|Nazwa przestrzeni nazw 3|Szablon|nazwa przestrzeni nazw=Moja przestrzeń|nazwa jednostki=Wikibooks:Szablon}}}} * {{Code|{{m|Pudełko|Nazwa przestrzeni nazw 3|Szablon|nazwa przestrzeni nazw 2{{=}}Moja przestrzeń|nazwa jednostki 2{{=}}Wikibooks:Strona}|numer jednostki{{=}}2}}}} → {{Tt|{{#invoke:Pudełko|Nazwa przestrzeni nazw 3|Szablon|nazwa przestrzeni nazw 2=Moja przestrzeń|nazwa jednostki 2=Wikibooks:Szablon|numer jednostki=2}}}} * {{Code|{{m|Pudełko|Nazwa przestrzeni nazw 3|nazwa przestrzeni nazw{{=}}|nazwa jednostki{{=}}Wikibooks:Strona}}}} → {{Tt|{{#invoke:Pudełko|Nazwa przestrzeni nazw 3|nazwa przestrzeni nazw=|nazwa jednostki=Wikibooks:Szablon}}}} * {{Code|{{m|Pudełko|Nazwa przestrzeni nazw 3|nazwa przestrzeni nazw 2{{=}}|nazwa jednostki 2{{=}}Wikibooks:Strona|numer jednostki{{=}}2}}}} → {{Tt|{{#invoke:Pudełko|Nazwa przestrzeni nazw 3|nazwa przestrzeni nazw 2=|nazwa jednostki 2=Wikibooks:Szablon|numer jednostki=2}}}} Powyżej dla przykładu podano parametry nie w rodzicu w szablonie, tylko w dziecku, jeśli chodzi o parametry nazw przestrzeni nazw i nazw jednostek, ale ich się za to nie powinno podawać w tych ramach, tylko w szablonach, w których wywoływane są te ramki pudełek {{Code|{{m|Pudełko}}}}, ale tak tutaj tak zrobiono by było najłatwiej sprawdzić działanie tego typu funkcji. Analogicznie możemy podawać parametry typu jednostki, np.: wywołaniu modułowym {{Code|{{m|Pudełko|Nazwa przestrzeni nazw 3|typ jednostki 2{{=}}Podręcznik|nazwa jednostki 2{{=}}Szablon:Strona|numer jednostki{{=}}2}}}} (ale wtedy jest brana przestrzeń nazw z nazwy jednostki), ale o tym więcej w rozdziałach {{Code|{{sr|#p["Typ jednostki 3"](frame,i)|p=Pudełko}}}} w „{{sr|#Funkcje typu jednostki|p=Pudełko}}”, on definiuje przestrzenie przedmiotowe, ale można użyć parametru dyskusji typu jednostki z wartością niepustą, wtedy wyświetli się nazwa przestrzeni nazw dyskusji. Jeżeli typ jednostki bazowy wskazuje na przestrzeń nazw główną, wtedy się nie liczą parametry nazw jednostek, a na numerkowy, wtedy się liczy. Również parametry typu jednostki nie powinno się podawać w dziecku w ramce, tylko w rodzicu w szablonie jako parametry, w którym ta ramka jest wywoływana, ale tutaj podano jedynie dla przykładu, jak najłatwiej sprawdzić działanie tych parametrów tej funkcji. Najpierw w funkcji nagłówku brane są parametry nazw przestrzeni nazw, a jeżeli ich nie ma, to parametry typu jednostki, a jeżeli nie ma lub parametry przestrzenne wskazują na przestrzeń główną, i nie ma nazwy jednostki, to generowane są nazwy tej funkcji na podstawie aktualnej strony. === {{Code|p["Nazwa przedmiotowej przestrzeni nazw 3"](frame,i)}} === Funkcja pisze przedmiotową nazwę przestrzeni nazw jakikolwiek nazwy przestrzeni nazw (tzn. nazwę przedmiotową nazwy przestrzenie nazw, czyli nie dyskusji, zamieniana jest na nią samą, czyli identyfikator przestrzeni się nie zmienia, a dyskusji, nie przedmiotową, przekształca się na przedmiotową jej odpowiadającą, czyli w tym przypadku identyfikator przestrzeni zmniejsza się o numer mniej), według podanej w zmiennej {{Code|nazwa przestrzeni nazw}} dla pozycja bazowej w podanych parametrach szablonu rodzicu ramki dziecka, lub dla innej pozycji należy parametr podawać w formie {{Code|nazwa przestrzeni nazw 1}}, {{Code|nazwa przestrzeni nazw 2}}, {{Code|nazwa przestrzeni nazw 3}},..., lub te parametry można podać w postaci ogólnej {{Code|nazwa przestrzeni nazw i}}. Parametry podaje się w parametrach rodzica wywołania tej funkcji {{Code|{{m|Pudełko|Nazwa przedmiotowej przestrzeni nazw 3}}}} (ale ich nie trzeba podawać w dziecku, ale można) i w parametrach dziecka, jeśli chodzi o zmienną {{Code|numer jednostki}}, czyli np.: {{Code|{{m|Pudełko|Nazwa przedmiotowej przestrzeni nazw 3|numer jednostki{{=}}<jakaś liczba całkowita dodatnia>}}}}. Te parametry przestrzenne zamiast w rodzicu w szablonie można podać w ramce dziecka, wtedy parametry dziecka mają pierwszeństwo. Parametry przestrzenne mogą mogą być podane w postaci przestrzeni przedmiotowej lub dyskusji, ale ta funkcja zawsze ją zamienia na przedmiotową. Przestrzeń nazw z parametrów nazw przestrzennych bazowych (bez numerka) może odpowiadać wartości przestrzeni głównej, to wtedy odpowiednia przestrzeń nazw z parametru nazwy jednostki się nie liczy w tej funkcji, aby się liczyła należy użyć funkcji {{Code|{{sr|#p["Nazwa przedmiotowej przestrzeni nazw 2"](frame,...)|p=Pudełko}}}}. W tym przypadku funkcja działa jak {{Code|{{sr|#p["Nazwa przedmiotowej przestrzeni nazw"](frame,...)|p=Pudełko}}}}. Przestrzeń nazw z parametrów nazw przestrzennych numerkowych może odpowiadać wartości przestrzeni głównej, to wtedy odpowiednia przestrzeń nazw z parametru nazwy jednostki się liczy w tej funkcji, wtedy jest liczona nazwa przestrzeni nazw z tego parametru. Gdy parametry przestrzenne lub typ jednostki w drugim podejściu nie wskazują na przestrzeń główną, to wtedy działanie tej funkcji jest podobne do {{Code|{{sr|#p["Nazwa przedmiotowej przestrzeni nazw 2"](frame,...)|p=Pudełko}}}}. Definicja skrótowa funkcji: <syntaxhighlight lang="lua"> p["Nazwa przedmiotowej przestrzeni nazw 3"]=function(frame,czy_uwzglednic_alternatywna_nazwe,i)...end; </syntaxhighlight> Wtedy ciało funkcji tej, czyli jego definicja w środku, jest: <syntaxhighlight lang="lua"> -- Jest liczony numer parametru nazwy przestrzeni nazw, domyslnie chodzi tu o numer bazowy parametrów przestrzennych; local numer_jednostki=i or frame.args["numer jednostki"]; local liczba_numeru_jednostki=((numer_jednostki)and(tonumber(numer_jednostki)) or 0); local pudelko_pomocne_modul=require("Module:Pudełko/Pomocne"); -- Liczy nazwę przestrzeni nazw przedmiotową na podstawie podanych parametrów; return pudelko_pomocne_modul.Uzyskanie_nazw_jednostki(frame,1,liczba_numeru_jednostki,nil,1); </syntaxhighlight> Parametry funkcji: * {{Code|frame}} - tablica ramki tablicy transportu, * {{Code|czy_uwzglednic_alternatywna_nazwe}} - czy ma uwzględniać nazwę przestrzeni nazw domyślną szablonu, dostępne wartości: {{Code|false}}, w której nazwa domyślna nie jest uwzględniana wtedy, oraz {{Code|nil}} i {{Code|true}}, które oznaczają to samo, w tym jeżeli ona jest uwzględniana, wtedy jest brany parametr pierwszy dziecka, który musi istnieć przy takiej wartości tego parametru, tzn. {{Code|{{m|Pudełko|Nazwa przedmiotowej przestrzeni nazw 3|Dyskusja szablonu}}}} - ta nazwa domyślna zostanie zamieniona na przedmiotową, a jak ona by była przedmiotowa, to żadnej zamiany by nie było, a nazwa uzyskana z nazwy przestrzeni nazw z parametrów przestrzennych jest w takim przypadku błędna, to w takim razie brany jest ten parametr, a jeżeli ta nazwa domyślna jest błędna, czyli {{Code|{{m|Pudełko|Nazwa przedmiotowej przestrzeni nazw 3|Moja przestrzeń}}}}, wtedy funkcja zwraca stan błędu {{Code|(błąd)}}. * {{Code|i}} - numer zmiennej nazwy przestrzeni nazw. Funkcja wykorzystuje {{Code|{{sr|#p.Uzyskanie_nazw_jednostki(frame,...)|p=Pudełko/Pomocne}}}} do wyznaczania ogólnego nazwy przestrzeni nazw dla pozycji bazowej i numerkowej, tzn. dla pozycji: jeden, dwa, trzy,..., itd, i ich ogólnej. Parametr ramki tablicy transportu rodzica szablonu: * {{Code|nazwa przestrzeni nazw}}, {{Code|nazwa przestrzeni nazw 1}}, {{Code|nazwa przestrzeni nazw 2}}, {{Code|nazwa przestrzeni nazw 3}},..., {{Code|nazwa przestrzeni nazw i}} - nazwy przestrzeni nazw dla pozycji bazowej oraz zwykłej i ogólnej numerkowej, * {{Code|typ jednostki}}, {{Code|typ jednostki 1}}, {{Code|typ jednostki 2}}, {{Code|typ jednostki 3}},..., {{Code|typ jednostki i}} - typy jednostek, którym odpowiadają pewne przestrzenie przedmiotowe, dla pozycji bazowej, numerkowej i ogólnej. Parametry ramki tablicy transportu dziecka: * Parametry dziecka są takie same jak rodzica dla funkcji pudełkowej plus tu wymienione, * {{Code|numer jednostki}} - jak parametr {{Code|i}} nie został ustawiony, to wtedy liczy się ta zmienna. Przykłady: <syntaxhighlight lang="mediawiki"> {{Nazwa szablonu 1|nazwa przestrzeni nazw=Wikibooks|nazwa przestrzeni nazw=|nazwa przestrzeni nazw i=|nazwa jednostki=Dyskusja Wikibooks:Strona}} ---- {{Nazwa szablonu 2|nazwa przestrzeni nazw=Wikibooks|nazwa przestrzeni nazw 1=Szablon|nazwa przestrzeni nazw i=|nazwa jednostki 2=Dyskusja Wikibooks:Strona}} </syntaxhighlight> W pierwszym wywołaniu {{Code|nazwa przestrzeni nazw}} jest puste, ale dla tego bazowego (bez numerka) szukamy przestrzeni nazw, a więc ta nazwa jest ostateczna. ---- W drugim wywołaniu w dziecku powiedzmy jest wywołanie, i szukamy nazwy przestrzeni nazw o numerze dwa, która została podana, ale istnieje za to jej wersji ogólna {{Code|nazwa przestrzeni nazw i}} i domyślna {{Code|nazwa przestrzeni nazw}}, ale wtedy dla tego numerkowego liczy się to ogólne z {{Code| i}}, a ponieważ ta nazwa jest pusta, więc będziemy liczyli nazwę przestrzeni nazw z {{Code|nazwa jednostki 2}}. Odpowiadająca powyższemu kodowi, powiedzmy wikikod, według ich zawartości, przedstawia się: <syntaxhighlight lang="mediawiki"> {{#invoke:Pudełko|Nazwa przedmiotowej przestrzeni nazw 3}} ---- {{#invoke:Pudełko|Nazwa przedmiotowej przestrzeni nazw 3|numer jednostki=2}} </syntaxhighlight> Na podstawie powyższego przykładu otrzymamy wynik o schemacie, nie wyniku, bo tam nie ma zmiennej {{Code|nazwa przestrzeni nazw 1}}, ale jest {{Code|nazwa przestrzeni nazw i}}: <syntaxhighlight lang="mediawiki"> <!-- nazwa przestrzeni nazw=""; --> <!-- Czyli wynik: --> <!-- wynik pusty --> <!-- Widzimy, że wygenerowała się nazwa przestrzeni nazw, którą jest przestrzeń nazw główna, jest ciągiem pustym: ""; --> ---- <!-- Ale nie "nazwa przestrzeni nazw 2", bo jej nie ma, ale za to istnieje "nazwa przestrzeni nazw i"; --> <!-- nazwa przestrzeni nazw 2=nazwa przestrzeni nazw i="", a nazwa jednostki 2="Dyskusja Wikibooks:Strona"; --> <!-- Czyli wynik: --> Wikibooks <!-- Widzimy, że wygenerowała się nazwa przestrzeni nazw, którą jest przestrzeń nieprogramowa, ale projektu, wychodząca z nazwy jednostek w tym przypadku z "nazwa jednostki 2"; --> </syntaxhighlight> Dla parametrów numerkowych nie jest brana w tym powyższym przykładzie zmienna {{Code|nazwa przestrzeni nazw 2}}, bo jej nie ma, ale za to jest {{Code|nazwa przestrzeni nazw i}}, bo ona występuje jako parametr domyślny ogólny dla parametrów numerkowych. Tytaj jest używana jest zmienna {{Code|nazwa jednostki 2}} do wygenerowania ostatecznego wyniku, bo jak można zauważyć, parametry przestrzenne wskazują na przestrzeń główną, a nazwy jednostek już nie. Dla parametrów bazowych mamy zmienną {{Code|nazwa przestrzeni nazw}}, ona jest pusta, więc to zostanie wziete do ostatecznego wyniku. Przykłady w wikikodzie: * {{Code|{{m|Pudełko|Nazwa przedmiotowej przestrzeni nazw 3|Dyskusja szablonu|nazwa przestrzeni nazw{{=}}Moja przestrzeń|nazwa jednostki{{=}}Dyskusja Wikibooks:Strona}}}} → {{Tt|{{#invoke:Pudełko|Nazwa przedmiotowej przestrzeni nazw 3|Dyskusja szablonu|nazwa przestrzeni nazw=Moja przestrzeń||nazwa jednostki=Dyskusja Wikibooks:Szablon}}}} * {{Code|{{m|Pudełko|Nazwa przedmiotowej przestrzeni nazw 3|Dyskusja szablonu|nazwa przestrzeni nazw 2{{=}}Moja przestrzeń|nazwa jednostki 2{{=}}Dyskusja Wikibooks:Strona|numer jednostki{{=}}2}}}} → {{Tt|{{#invoke:Pudełko|Nazwa przedmiotowej przestrzeni nazw 3|Dyskusja szablonu|nazwa przestrzeni nazw 2=Moja przestrzeń||nazwa jednostki 2=Dyskusja Wikibooks:Szablon|numer jednostki=2}}}} * {{Code|{{m|Pudełko|Nazwa przedmiotowej przestrzeni nazw 3|nazwa przestrzeni nazw{{=}}|nazwa jednostki{{=}}Dyskusja Wikibooks:Strona}}}} → {{Tt|{{#invoke:Pudełko|Nazwa przedmiotowej przestrzeni nazw 3|nazwa przestrzeni nazw=|nazwa jednostki=Dyskusja Wikibooks:Szablon}}}} * {{Code|{{m|Pudełko|Nazwa przedmiotowej przestrzeni nazw 3|nazwa przestrzeni nazw 2{{=}}|nazwa jednostki 2{{=}}Dyskusja Wikibooks:Strona|numer jednostki{{=}}2}}}} → {{Tt|{{#invoke:Pudełko|Nazwa przedmiotowej przestrzeni nazw 3|nazwa przestrzeni nazw 2=|nazwa jednostki 2=Dyskusja Wikibooks:Szablon|numer jednostki=2}}}} Powyżej dla przykładu podano parametry nie w rodzicu w szablonie, tylko w dziecku, jeśli chodzi o parametry nazw przestrzeni nazw, ale ich się za to nie powinno podawać w tych ramach, tylko w szablonach, w których wywoływane są te ramki pudełek {{Code|{{m|Pudełko}}}}, ale tak tutaj tak zrobiono by było najłatwiej sprawdzić działanie tego typu funkcji. Analogicznie możemy podawać parametry typu jednostki, np.: wywołaniu modułowym {{Code|{{m|Pudełko|Nazwa przedmiotowej przestrzeni nazw 3|typ jednostki 2{{=}}strona szablonu|numer jednostki{{=}}2}}}}, ale o tym więcej w rozdziałach {{Code|{{sr|# p["Przedmiotowy typ jednostki 3"](frame,i)|p=Pudełko}}}} w „{{sr|#Funkcje typu jednostki|p=Pudełko}}”, ale wtedy ta sama nazwa przestrzeni nazw reprezentowana przez {{Parametr|typ jednostki 2|strona szablonu}}, jest zamieniana na to samo, lepiej jest tutaj używać parametrów przestrzennych nazw niż typu jednostki, bo typ jednostki ma taką samą wartość dla przestrzeni przedmiotowej, co dyskusji. Tutaj parametr dyskusji typu jednostki bazowy i numerkowy ogólny, czy szczegółowy, nie gra roli, bo nawet, gdy wygenerujemy nazwę przestrzeni dyskusji za pomoca tego parametru, to i tak otrzymamy na samym końcu jego nazwę przedmiotową. Jeżeli typ jednostki bazowy wskazuje na przestrzeń nazw główną, wtedy się nie liczą parametry nazw jednostek, a na numerkowy, wtedy się liczy. Również parametry typu jednostki nie powinno się podawać w dziecku w ramce, tylko w rodzicu w szablonie jako parametry, w którym ta ramka jest wywoływana, ale tutaj podano jedynie dla przykładu, jak najłatwiej sprawdzić działanie tych parametrów tej funkcji. Najpierw w funkcji nagłówku brane są parametry nazw przestrzeni nazw, a jeżeli ich nie ma, to parametry typu jednostki, a jeżeli nie ma, to generowane są nazwy na podstawie aktualnego modułu. === {{Code|p["Nazwa przestrzeni nazw dyskusji 3"](frame,i)}} === Funkcja pisze nazwę przestrzeni nazw dyskusji jakikolwiek nazwy przestrzeni nazw (tzn. nazwę dyskusji nazwy przestrzenie nazw, czyli nie przedmiotowej, zamieniana jest na nią samą, czyli identyfikator przestrzeni się nie zmienia, a przedmiotową, nie dyskusji, przekształca się na dyskusji jej odpowiadającą, czyli w tym przypadku identyfikator przestrzeni zwiększa się o numer więcej), według, i nie zawsze tylko, podanej w zmiennej {{Code|nazwa przestrzeni nazw}} dla pozycja bazowej w podanych parametrach szablonu rodzicu ramki dziecka, lub dla innej pozycji należy parametr podawać w formie {{Code|nazwa przestrzeni nazw 1}}, {{Code|nazwa przestrzeni nazw 2}}, {{Code|nazwa przestrzeni nazw 3}},..., lub te parametry można podać w postaci ogólnej {{Code|nazwa przestrzeni nazw i}}. W tej funkcji trzeba też podawać parametry nazwy jednostek {{Code|nazwa jednostki}}, {{Code|nazwa jednostki 1}}, {{Code|nazwa jednostki 2}}, {{Code|nazwa jednostki 3}},... Parametry podaje się w parametrach rodzica wywołania tej funkcji {{Code|{{m|Pudełko|Nazwa przestrzeni nazw dyskusji 3}}}} (ale ich nie trzeba podawać w dziecku, ale można) i w parametrach dziecka, jeśli chodzi o zmienną {{Code|numer jednostki}}, czyli np.: {{Code|{{m|Pudełko|Nazwa przestrzeni nazw dyskusji 3|numer jednostki{{=}}<jakaś liczba całkowita dodatnia>}}}}. Te parametry przestrzenne zamiast w rodzicu w szablonie można podać w ramce dziecka, wtedy parametry dziecka mają pierwszeństwo. Przestrzeń nazw z parametrów nazw przestrzennych bazowych (bez numerka) może odpowiadać wartości przestrzeni głównej, to wtedy odpowiednia przestrzeń nazw z parametru nazwy jednostki się nie liczy w tej funkcji, aby się liczyła należy użyć funkcji {{Code|{{sr|#p["Nazwa przestrzeni nazw dyskusji 2"](frame,...)|p=Pudełko}}}}. W tym przypadku funkcja działa jak {{Code|{{sr|#p["Nazwa przestrzeni nazw dyskusji"](frame,...)|p=Pudełko}}}}. Przestrzeń nazw z parametrów nazw przestrzennych numerkowych może odpowiadać wartości przestrzeni głównej, to wtedy odpowiednia przestrzeń nazw z parametru nazwy jednostki się liczy w tej funkcji, wtedy jest liczona nazwa przestrzeni nazw z tego parametru. Gdy parametry przestrzenne lub typ jednostki w drugim podejściu nie wskazują na przestrzeń główną, to wtedy działanie tej funkcji jest podobne do {{Code|{{sr|#p["Nazwa przestrzeni nazw dyskusji 2"](frame,...)|p=Pudełko}}}}. Definicja skrótowa funkcji: <syntaxhighlight lang="lua"> p["Nazwa przestrzeni nazw dyskusji 3"]=function(frame,czy_uwzglednic_alternatywna_nazwe,i)...end; </syntaxhighlight> Wtedy ciało funkcji tej, czyli jego definicja w środku, jest: <syntaxhighlight lang="lua"> -- Jest liczony numer parametru nazwy przestrzeni nazw, domyslnie chodzi tu o numer bazowy parametrów przestrzennych; local numer_jednostki=i or frame.args["numer jednostki"]; local liczba_numeru_jednostki=((numer_jednostki)and(tonumber(numer_jednostki)) or 0); local pudelko_pomocne_modul=require("Module:Pudełko/Pomocne"); -- Liczy nazwę przestrzeni nazw dyskusji na podstawie podanych parametrów; return pudelko_pomocne_modul.Uzyskanie_nazw_jednostki(frame,2,liczba_numeru_jednostki,nil,1); </syntaxhighlight> Parametry funkcji: * {{Code|frame}} - tablica ramki tablicy transportu, * {{Code|czy_uwzglednic_alternatywna_nazwe}} - czy ma uwzględniać nazwę przestrzeni nazw domyślną szablonu, dostępne wartości: {{Code|false}}, w której nazwa domyślna nie jest uwzględniana wtedy, oraz {{Code|nil}} i {{Code|true}}, które oznaczają to samo, w tym jeżeli ona jest uwzględniana, wtedy jest brany parametr pierwszy dziecka, który musi istnieć przy takiej wartości tego parametru, tzn. {{Code|{{m|Pudełko|Nazwa przestrzeni nazw dyskusji 3|Szablon}}}}, nazwa domyślna zostatnie zamieniona na dyskusji, a jeśli jest już taka, to takiej transfomacji nie ma, a jeśli nazwa uzyskana nazwy przestrzeni nazw jest w takim przypadku błędna, a jeżeli nazwa domyślna jest błędna, czyli {{Code|{{m|Pudełko|Nazwa przestrzeni nazw dyskusji 3|Moja przestrzeń}}}}, wtedy funkcja zwraca stan błędu {{Code|(błąd)}}. * {{Code|i}} - numer zmiennej nazwy przestrzeni nazw. Funkcja wykorzystuje {{Code|{{sr|#p.Uzyskanie_nazw_jednostki(frame,...)|p=Pudełko/Pomocne}}}} do wyznaczania ogólnego nazwy przestrzeni nazw dla pozycji bazowej i numerkowej, tzn. dla pozycji: jeden, dwa, trzy,..., itd, i ich ogólnej. Parametr ramki tablicy transportu rodzica szablonu: * {{Code|nazwa przestrzeni nazw}}, {{Code|nazwa przestrzeni nazw 1}}, {{Code|nazwa przestrzeni nazw 2}}, {{Code|nazwa przestrzeni nazw 3}},..., {{Code|nazwa przestrzeni nazw i}} - nazwy przestrzeni nazw dla pozycji bazowej oraz zwykłej i ogólnej numerkowej, * {{Code|nazwa jednostki}}, {{Code|nazwa jednostki 1}}, {{Code|nazwa jednostki 2}}, {{Code|nazwa jednostki 3}},... - nazwy jednostek dla pozycji bazowej i numerkowej, * {{Code|typ jednostki}}, {{Code|typ jednostki 1}}, {{Code|typ jednostki 2}}, {{Code|typ jednostki 3}},..., {{Code|typ jednostki i}} - typy jednostek, którym odpowiadają pewne przestrzenie przedmiotowe, dla pozycji bazowej, numerkowej i ogólnej. Parametry ramki tablicy transportu dziecka: * Parametry dziecka są takie same jak rodzica dla funkcji pudełkowej plus tu wymienione, * {{Code|numer jednostki}} - jak parametr {{Code|i}} nie został ustawiony, to wtedy liczy się ta zmienna. Przykłady: <syntaxhighlight lang="mediawiki"> {{Nazwa szablonu 1|nazwa przestrzeni nazw=Wikibooks|nazwa przestrzeni nazw=|nazwa przestrzeni nazw i=|nazwa jednostki=Szablon:Strona}} ---- {{Nazwa szablonu 2|nazwa przestrzeni nazw=Wikibooks|nazwa przestrzeni nazw 1=Szablon|nazwa przestrzeni nazw i=|nazwa jednostki 2=Wikibooks:Strona}} </syntaxhighlight> W pierwszym wywołaniu {{Code|nazwa przestrzeni nazw}} jest puste, ale dla tego bazowego (bez numerka) szukamy przestrzeni nazw, a więc ta nazwa jest ostateczna. ---- W drugim wywołaniu w dziecku powiedzmy jest wywołanie, i szukamy nazwy przestrzeni nazw o numerze dwa, która została podana, ale istnieje za to jej wersji ogólna {{Code|nazwa przestrzeni nazw i}} i domyślna {{Code|nazwa przestrzeni nazw}}, ale wtedy dla tego numerkowego liczy się to ogólne z {{Code| i}}, a ponieważ ta nazwa jest pusta, więc będziemy liczyli nazwę przestrzeni nazw z {{Code|nazwa jednostki 2}}. Odpowiadająca powyższemu kodowi, powiedzmy wikikod, według ich zawartości, przedstawia się: <syntaxhighlight lang="mediawiki"> {{#invoke:Pudełko|Nazwa przestrzeni nazw 3}} ---- {{#invoke:Pudełko|Nazwa przestrzeni nazw 3|numer jednostki=2}} </syntaxhighlight> Na podstawie powyższego przykładu otrzymamy wynik o schemacie, nie wyniku, bo tam nie ma zmiennej {{Code|nazwa przestrzeni nazw 1}}, ale jest {{Code|nazwa przestrzeni nazw i}}: <syntaxhighlight lang="mediawiki"> <!-- nazwa przestrzeni nazw=""; --> <!-- Czyli wynik: --> Dyskusja <!-- Widzimy, że wygenerowała się nazwa przestrzeni nazw, którą jest przestrzeń nazw niegłówna, jest ciągiem niepustym; --> ---- <!-- Ale nie "nazwa przestrzeni nazw 2", bo jej nie ma, ale za to istnieje "nazwa przestrzeni nazw i"; --> <!-- nazwa przestrzeni nazw 2=nazwa przestrzeni nazw i="", a nazwa jednostki 2="Wikibooks:Strona"; --> <!-- Czyli wynik: --> Dyskusja Wikibooks <!-- Widzimy, że wygenerowała się nazwa przestrzeni nazw, którą jest przestrzeń nieprogramowa, ale projektu, wychodząca z nazwy jednostek w tym przypadku z "nazwa jednostki 2"; --> </syntaxhighlight> Dla parametrów numerkowych nie jest brana w tym powyższym przykładzie zmienna {{Code|nazwa przestrzeni nazw 2}}, bo jej nie ma, ale za to jest {{Code|nazwa przestrzeni nazw i}}, bo ona występuje jako parametr domyślny ogólny dla parametrów numerkowych. Tytaj jest używana jest zmienna {{Code|nazwa jednostki 2}} do wygenerowania ostatecznego wyniku, bo jak można zauważyć, parametry przestrzenne wskazują na przestrzeń główną, a nazwy jednostek już nie. Dla parametrów bazowych mamy zmienną {{Code|nazwa przestrzeni nazw}}, ona jest pusta, więc to zostanie wziete do ostatecznego wyniku. Przykłady w wikikodzie: * {{Code|{{m|Pudełko|Nazwa przestrzeni nazw dyskusji 3|Szablon|nazwa przestrzeni nazw{{=}}Moja przestrzeń|nazwa jednostki{{=}}Wikibooks:Strona}}}} → {{Tt|{{#invoke:Pudełko|Nazwa przestrzeni nazw dyskusji 3|Szablon|nazwa przestrzeni nazw=Moja przestrzeń|nazwa jednostki=Wikibooks:Szablon}}}} * {{Code|{{m|Pudełko|Nazwa przestrzeni nazw dyskusji 3|Szablon|nazwa przestrzeni nazw 2{{=}}Moja przestrzeń|nazwa jednostki 2{{=}}Wikibooks:Strona|numer jednostki{{=}}2}}}} → {{Tt|{{#invoke:Pudełko|Nazwa przestrzeni nazw dyskusji 3|Szablon|nazwa przestrzeni nazw 2=Moja przestrzeń|nazwa jednostki 2=Wikibooks:Szablon|numer jednostki=2}}}} * {{Code|{{m|Pudełko|Nazwa przestrzeni nazw dyskusji 3|nazwa przestrzeni nazw{{=}}|nazwa jednostki{{=}}Wikibooks:Strona}}}} → {{Tt|{{#invoke:Pudełko|Nazwa przestrzeni nazw dyskusji 3|nazwa przestrzeni nazw=|nazwa jednostki=Wikibooks:Szablon}}}} * {{Code|{{m|Pudełko|Nazwa przestrzeni nazw dyskusji 3|nazwa przestrzeni nazw 2{{=}}|nazwa jednostki 2{{=}}Wikibooks:Strona|numer jednostki{{=}}2}}}} → {{Tt|{{#invoke:Pudełko|Nazwa przestrzeni nazw dyskusji 3|nazwa przestrzeni nazw 2=|nazwa jednostki 2=Wikibooks:Szablon|numer jednostki=2}}}} Powyżej dla przykładu podano parametry nie w rodzicu w szablonie, tylko w dziecku, jeśli chodzi o parametry nazw przestrzeni nazw i nazw jednostek, ale ich się za to nie powinno podawać w tych ramach, tylko w szablonach, w których wywoływane są te ramki pudełek {{Code|{{m|Pudełko}}}}, ale tak tutaj tak zrobiono by było najłatwiej sprawdzić działanie tego typu funkcji. Analogicznie możemy podawać parametry typu jednostki, np.: wywołaniu modułowym {{Code|{{m|Pudełko|Nazwa przestrzeni nazw dyskusji 3|typ jednostki 2{{=}}Podręcznik|nazwa jednostki 2{{=}}Szablon:Strona|numer jednostki{{=}}2}}}} (ale wtedy jest brana przestrzeń nazw z nazwy jednostki), ale o tym więcej w rozdziałach {{Code|{{sr|# p["Dyskusyjny typ jednostki 3"](frame,i)|p=Pudełko}}}} w „{{sr|#Funkcje typu jednostki|p=Pudełko}}”, one definiują przestrzenie dyskusji, ale można użyć parametru dyskusji typu jednostki z obojętnie jaką wartością niepustą, czy pustą, czy nawet jej nie podamy, wtedy wyświetli się nazwa przestrzeni nazw dyskusji. Jeżeli typ jednostki bazowy wskazuje na przestrzeń nazw główną, wtedy się nie liczą parametry nazw jednostek, a na numerkowy, wtedy się liczy. Również parametry typu jednostki nie powinno się podawać w dziecku w ramce, tylko w rodzicu w szablonie jako parametry, w którym ta ramka jest wywoływana, ale tutaj podano jedynie dla przykładu, jak najłatwiej sprawdzić działanie tych parametrów tej funkcji. Najpierw w funkcji nagłówku brane są parametry nazw przestrzeni nazw, a jeżeli ich nie ma, to parametry typu jednostki, a jeżeli nie ma lub parametry przestrzenne wskazują na przestrzeń główną, i nie ma nazwy jednostki, to generowane są nazwy tej funkcji na podstawie aktualnej strony. == Funkcje nazw jednostki trzeciej wersji == === {{Code|p["Nazwa jednostki 3"](frame,i)}} === === {{Code|p["Nazwa przedmiotowa jednostki 3"](frame,i)}} === === {{Code|p["Nazwa dyskusji jednostki 3"](frame,i)}} === == Funkcje typu jednostki == === {{Code|p["Typ jednostki"](frame,i)}} === === {{Code|p["Typ jednostki 2"](frame,i)}} === === {{Code|p["Typ jednostki 3"](frame,i)}} === === Funkcje typu jednostki przedmiotowe === ==== {{Code|p["Przedmiotowy typ jednostki"](frame,i)}} ==== ==== {{Code|p["Przedmiotowy typ jednostki 2"](frame,i)}} ==== ==== {{Code|p["Przedmiotowy typ jednostki 3"](frame,i)}} ==== === Fukcje typu jednostki dyskusji === ==== {{Code|p["Dyskusyjny typ jednostki"](frame,i)}} ==== ==== {{Code|p["Dyskusyjny typ jednostki 2"](frame,i)}} ==== ==== {{Code|p["Dyskusyjny typ jednostki 3"](frame,i)}} ==== == Funkcje chech pudełka == === {{Code|p["Cecha pudełka"](frame)}} === === {{Code|p["Przedmiotowa cecha pudełka"](frame)}} === === {{Code|p["Dyskusyjna cecha pudełka"](frame)}} === == Fukcje ogólnego pudełka == === {{Code|p["Ogólne pudełko"](frame)}} === == Funkcje ogólne == === {{Code|p["Tekst pudełka"](frame)}} === == Funkcje błędów pudełka == === {{Code|p["Błędy pudełka"](frame)}} === === {{Code|p["Przedmiotowe błędy pudełka"](frame)}} === === {{Code|p["Dyskusyjne błędy pudełka"](frame)}} === == Funkcje nazw stron == === {{Code|p["Nazwa strony głównej projektu"](frame,i)}} === === {{Code|p["Nazwa strony głównej dla dzieci projektu"](frame,i)}} === == Funkcje kodów == === {{Code|p["Kod języka"](frame,i)}} === === {{Code|p["Kod projektu"](frame,i)}} === === {{Code|p["Klucz projektu"](frame,i)}} === == Funkcje wiki == === {{Code|p["Inny niż język bieżący wiki"](frame)}} === === {{Code|p["Inne niż lokalne wiki"](frame)}} === === {{Code|p["Inne niż bieżące wiki"](frame)}} === == Funkcje typów parametrów, czy podane je == === {{Code|p["Podano parametry nienazwane"](frame)}} === === {{Code|p["Podano parametry numerowane"](frame)}} === === {{Code|p["Podano parametry nazwane"](frame)}} === == Funkcje kodów tego projektu == === {{Code|p["Kod projektu tego projektu"](frame)}} === === {{Code|p["Kod języka tego projektu"](frame)}} === === {{Code|p["Klucz projektu tego projektu"](frame)}} === == Funkcje stron == === {{Code|p["Strona główna tego projektu"](frame)}} === === {{Code|p["Strona główna dla dzieci tego projektu"](frame)}} === == Funkcje nazw stron drugiej wersji == === {{Code|p["Nazwa strony głównej dla dzieci projektu 2"](frame)}} === === {{Code| p["Nazwa strony głównej projektu 2"](frame)}} === {{BrClear}} <noinclude><!-- -->{{ProstaStronaKoniec}}<!-- -->{{Kategoria|Opisy funkcji, w Lua w Scribunto, w modułach}}<!-- --></noinclude> shr5t7d6ly4i22d3ayv4tmr9jegerim 540460 540459 2026-04-24T06:05:20Z Persino 2851 /* Funkcje nazw przestrzeni nazw trzeciej wersji */ 540460 wikitext text/x-wiki <noinclude>{{ProstaStronaStart | nagłówek = {{Podrozdział|{{ld2|Pudełko}}|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 pudelko_modul=require("Module:Pudełko"); </syntaxhighlight> dzięki, któremu można wypisywać funkcje należącego do niego. Posługuje się na parametrach pudełkowych {{Parametr|nazwa przestrzeni nazw}} (czy też bez numerka {{Parametr|nazwa przestrzeni nazw i}} dla tego numerowanego) lub te z numerkiem po jednej spacji w nich (ale nie dla tego z końcówką {{Code| i}}) mogą zostać użyte jako parametry szablonu. Moduł {{Code|{{ld2|Pudełko}}}} przedstawia funkcje nazw w oparciu o funkcje nazw {{Code|{{ld2|Nazwy}}}}, generuje on nazwy za pomocą parametrów pudełkowych podanych poniżej. Parametr {{Parametr|nazwa jednostki}} (lub parametr {{Parametr|cel}} dla numerka tego pierwszego, tego alternatywnego), lub te z numerkiem po jednej spacji w nazwie parametru, albo numerowane numerkami {{Code|1}}, {{Code|2}},..., mogą zostać użyte jako parametry szablonu. Parametry określające rodzaj jednostki {{Parametr|typ jednostki}} z {{Parametr|dyskusja typu jednostki}}, itp. w wersjach z numerkiem po jednej spacji w nich mogą zostać użyte jako parametry szablonu. A te tymi numerowanymi liczbami naturalnymi {{Tt|nazwy jednostki}} od jedynki wzwyż poprzez szablon, w którym są one użyte, one też mogą być użyte z dwukropkiem, te numerowane, na samym początku nazwy, wtedy one są traktowane jako pełne nazwy strony, i wtedy one nie zostaną z interpretowane, że do nich trzeba użyć parametr odpowiedni z nazwą przetrzeni nazw z tego numerowanego, czy ogólny, aby utworzyć znów inną pełną nazwę strony dla tego numerka. Zestawienie: * {{Code|nazwa przestrzeni nazw}} i {{Code|nazwa przestrzeni nazw i}} (ogólna nazwa przestrzeni nazw dla wszystkich numerków, i tych numerowanych jednostek) - i to pierwsze z numerkiem, tzn. {{Code|nazwa przestrzeni nazw 1}}, {{Code|nazwa przestrzeni nazw 2}}, ..., * {{Code|nazwa jednostki}} - i te z numerkiem: {{Code|nazwa jednostki 1}}, {{Code|nazwa jednostki 2}}, ..., lub gdy jest zamiast tego parametrem numerowany, {{Code|1}}, {{Code|2}},..., który dla tego pierwszego może być uznany jako: {{Code|cel}} {{=}} {{Code|1}}, * {{Code|typ jednostki}} (parametr bazowy) i {{Code|typ jednostki i}} (parametr domyślny numerkowy) - i te z numerkiem: {{Code|typ jednostki 1}}, {{Code|typ jednostki 2}}, ..., tzn. gdy chcemy określić z jakim typem jednostki mamy do czynienia w zależności do jakiej przestrzeni nazw należy, a w danej, czy jest on np. programowy, czy tylko jest opisem, jak to bywa w szablonach {{Np|Template|link=tak}}, podobnie jest w przypadku {{Np|Module|link=tak}}, czy jak jest w innych przestrzeniach nazw, ** {{Code|dyskusja typu jednostki}} (parametr bazowy) i {{Code|dyskusja typu jednostki i}} (parametr domyślny numerkowy) - i te z numerkiem: {{Code|dyskusja typu jednostki 1}}, {{Code|dyskusja typu jednostki 2}}, ..., gdy chcemy określić wartością niepustą,że chodzi tutaj o typ jednostki. == {{Code|p.CzyNiepoprawnaNazwa(nazwa_jednostki)}} == Funkcja sprawdzajaca, czy jest poprawnie podana nazwa jednostki, czy ma poprawną nazwę. Znakami tymi, z których nie powinna składać się nazwa jest {{Code|<nowiki>{}<>|[]#\n</nowiki>}} i dodatkowo znak {{Code|&#127;}} (kod {{Code|{{Nowiki|&#127;}}}}). Też nie może składać się z trzech znaków tyldy, tzn. {{Code|<nowiki>~~~</nowiki>}}. Również w swojej budowie nie może składać się ze kodów {{Strong|HTML}} literowych o wzorze {{Code|{{Nowiki|&(%a+);}}}}. Natomiast może składać się z {{Code|{{Nowiki|&#(%d+);}}}} i {{Code|{{Nowiki|&#x(%x+);}}}}, ale w pierw te kody muszą być zamienione na normalne znaki. Skrótowa definicja funkcji: <syntaxhighlight lang="lua"> function p.CzyNiepoprawnaNazwa(nazwa_jednostki)...end; </syntaxhighlight> Wtedy ciało funkcji tej, czyli jego definicja w środku, jest: <syntaxhighlight lang="lua"> -- Moduł: "Moduł:Html/dane", służy do ładowania znaku o kodzie HTML "&#127;"; local html_dane_modul=mw.loadData("Module:Html/dane"); return mw.ustring.match(nazwa_jednostki,"[{}<>|%[%]#\n"..html_dane_modul.znak_127.."]+") or mw.ustring.match(nazwa_jednostki,"~~~") or mw.ustring.match(nazwa_jednostki,"&(%a+);"); </syntaxhighlight> Parametry: * {{Code|nazwa_jednostki}} - nazwa jednostki do sprawdzenia. Przykłady: <syntaxhighlight lang="lua"> local pudelko_modul=require("Module:Pudełko"); -- Podana przykładowa niepoprawna nazwa jedostki local nazwa_jednostki="Nazwa pliku [[Nazwa linku w pliku]]"; -- Fukcja zwróci wartość: local czy_poprawna_nazwa=true; local czy_poprawna_nazwa=pudelko_modul.CzyNiepoprawnaNazwa(nazwa_jednostki); </syntaxhighlight> == Funkcje nazw przestrzeni nazw == === {{Code|p["Nazwa przestrzeni nazw"](frame,...)}} === Funkcja pisze nazwę przestrzeni nazw, niezależnie, czy to jest przedmiotowa, czy dyskusji, według podanej w zmiennej {{Code|nazwa przestrzeni nazw}} dla pozycja bazowej w podanych parametrach szablonu rodzicu ramki dziecka, lub dla innej pozycji należy parametr podawać w formie {{Code|nazwa przestrzeni nazw 1}}, {{Code|nazwa przestrzeni nazw 2}}, {{Code|nazwa przestrzeni nazw 3}},..., lub te parametry można podać w postaci ogólnej {{Code|nazwa przestrzeni nazw i}}. Parametry podaje się w parametrach rodzica wywołania tej funkcji {{Code|{{m|Pudełko|Nazwa przestrzeni nazw}}}} (ale ich nie trzeba podawać w dziecku, ale można) i w parametrach dziecka, jeśli chodzi o zmienną {{Code|numer jednostki}}, czyli np.: {{Code|{{m|Pudełko|Nazwa przestrzeni nazw|numer jednostki{{=}}<jakaś liczba całkowita dodatnia>}}}}. Te parametry przestrzenne zamiast w rodzicu w szablonie można podać w ramce dziecka, wtedy parametry dziecka mają pierwszeństwo. Przestrzeń nazw z parametrów nazw przestrzennych może odpowiadać wartości przestrzeni głównej, to wtedy odpowiednia przestrzeń nazw z parametru nazwy jednostki się nie liczy w tej funkcji, aby się liczyła należy użyć funkcji {{Code|{{sr|#p["Nazwa przestrzeni nazw 2"](frame,...)|p=Pudełko}}}}. Definicja skrótowa funkcji: <syntaxhighlight lang="lua"> p["Nazwa przestrzeni nazw"]=function(frame,czy_uwzglednic_alternatywna_nazwe,i)...end; </syntaxhighlight> Wtedy ciało funkcji tej, czyli jego definicja w środku, jest: <syntaxhighlight lang="lua"> -- Jest liczony numer parametru nazwy przestrzeni nazw, domyslnie chodzi tu o numer bazowy parametrów przestrzennych; local numer_jednostki=i or frame.args["numer jednostki"]; local liczba_numer_jednostki=((numer_jednostki)and(tonumber(numer_jednostki))or 0); local pudelko_pomocne_modul=require("Module:Pudełko/Pomocne"); -- Liczy nazwę przestrzeni nazw na podstawie podanych parametrów; return pudelko_pomocne_modul.Nazwa_przestrzeni_nazw(frame,0, czy_uwzglednic_alternatywna_nazwe,liczba_numer_jednostki); </syntaxhighlight> Parametry funkcji: * {{Code|frame}} - tablica ramki tablicy transportu, * {{Code|czy_uwzglednic_alternatywna_nazwe}} - czy ma uwzględniać nazwę przestrzeni nazw domyślną szablonu, dostępne wartości: {{Code|false}}, w której nazwa domyślna nie jest uwzględniana wtedy, oraz {{Code|nil}} i {{Code|true}}, które oznaczają to samo, w tym jeżeli ona jest uwzględniana, wtedy jest brany parametr pierwszy dziecka, który musi istnieć przy takiej wartości tego parametru, tzn. {{Code|{{m|Pudełko|Nazwa przestrzeni nazw|Szablon}}}}, a ten element jest używany, gdy nazwa uzyskana nazwy przestrzeni nazw jest w takim przypadku błędna, a jeżeli wtedy nazwa domyślna jest błędna, czyli {{Code|{{m|Pudełko|Nazwa przestrzeni nazw|Moja przestrzeń}}}}, wtedy funkcja zwraca stan błędu {{Code|(błąd)}}. * {{Code|i}} - numer zmiennej nazwy przestrzeni nazw. Funkcja wykorzystuje {{Code|{{sr|#p.Nazwa_przestrzeni_nazw(frame,...)|p=Pudełko/Pomocne}}}} do wyznaczania ogólnego nazwy przestrzeni nazw dla pozycji bazowej i numerkowej, tzn. dla pozycji: jeden, dwa, trzy,..., itd, i ich ogólnej. Parametr ramki tablicy transportu rodzica szablonu: * {{Code|nazwa przestrzeni nazw}}, {{Code|nazwa przestrzeni nazw 1}}, {{Code|nazwa przestrzeni nazw 2}}, {{Code|nazwa przestrzeni nazw 3}},..., {{Code|nazwa przestrzeni nazw i}} - nazwy przestrzeni nazw dla pozycji bazowej oraz zwykłej i ogólnej numerkowej, * {{Code|typ jednostki}}, {{Code|typ jednostki 1}}, {{Code|typ jednostki 2}}, {{Code|typ jednostki 3}},..., {{Code|typ jednostki i}} - typy jednostek, którym odpowiadają pewne przestrzenie przedmiotowe, dla pozycji bazowej, numerkowej i ogólnej, ** {{Code|dyskusja typu jednostki}}, {{Code|dyskusja typu jednostki 1}}, {{Code|dyskusja typ jednostki 2}}, {{Code|dyskusja typ jednostki 3}},..., {{Code|dyskusja typ jednostki i}} - czy dany typ jednostki ma przedstawiać, jeśli niepusta, przestrzeń dyskusji dla pozycji bazowej, numerkowej i ogólnej. Parametry ramki tablicy transportu dziecka: * Parametry dziecka są takie same jak rodzica dla funkcji pudełkowej plus tu wymienione, * {{Code|numer jednostki}} - jak parametr {{Code|i}} nie został ustawiony, to wtedy liczy się ta zmienna. Przykłady: <syntaxhighlight lang="mediawiki"> {{Nazwa szablonu|nazwa przestrzeni nazw=Wikibooks|nazwa przestrzeni nazw 2=Szablon|nazwa przestrzeni nazw i=Moduł}} </syntaxhighlight> W dziecku powiedzmy jest wywołanie, i szukamy nazwy przestrzeni nazw o numerze dwa, która nie została podana, ale istnieje za to jej wersji ogólna {{Code|nazwa przestrzeni nazw i}} i domyślna {{Code|nazwa przestrzeni nazw}}: <syntaxhighlight lang="mediawiki"> {{#invoke:Pudełko|Nazwa przestrzeni nazw|numer jednostki=1}} </syntaxhighlight> Na podstawie powyższego przykładu otrzymamy wynik o schemacie, nie wyniku, bo tam nie ma zmiennej {{Code|nazwa przestrzeni nazw 1}}, ale jest {{Code|nazwa przestrzeni nazw i}}: <syntaxhighlight lang="mediawiki"> <!-- Ale nie "nazwa przestrzeni nazw", bo jej nie ma, ale za to istnieje "nazwa przestrzeni nazw i"; --> <!-- nazwa przestrzeni nazw 2=nazwa przestrzeni nazw i=Moduł; --> <!-- Czyli wynik: --> Moduł <!-- Widzimy, że wygenerowała się nazwa przestrzeni nazw, którą jest przestrzeń programowa, którą również jest "Szablon"; --> </syntaxhighlight> Nie jest brana w tym powyższym przykładzie zmienna {{Code|nazwa przestrzeni nazw}}, bo jej nie ma, ale za to jest {{Code|nazwa przestrzeni nazw i}}, bo ona występuje jako parametr domyślny ogólny dla parametrów numerkowych. Przykłady w wikikodzie: * {{Code|{{m|Pudełko|Nazwa przestrzeni nazw|numer jednostki{{=}}2}}}} → {{Tt|{{#invoke:Pudełko|Nazwa przestrzeni nazw|numer jednostki=2}}}} * {{Code|{{m|Pudełko|Nazwa przestrzeni nazw|Szablon|nazwa przestrzeni nazw i{{=}}Moja przestrzeń|numer jednostki{{=}}2}}}} → {{Tt|{{#invoke:Pudełko|Nazwa przestrzeni nazw|Szablon|nazwa przestrzeni nazw i=Moja przestrzeń|numer jednostki=2}}}} * {{Code|{{m|Pudełko|Nazwa przestrzeni nazw|nazwa przestrzeni nazw 2{{=}}Szablon|numer jednostki{{=}}2}}}} → {{Tt|{{#invoke:Pudełko|Nazwa przestrzeni nazw|nazwa przestrzeni nazw 2=Szablon|numer jednostki=2}}}} * {{Code|{{m|Pudełko|Nazwa przestrzeni nazw|nazwa przestrzeni nazw 2{{=}}Szablon|numer jednostki{{=}}2}}}} → {{Tt|{{#invoke:Pudełko|Nazwa przestrzeni nazw|nazwa przestrzeni nazw i=Szablon|numer jednostki=2}}}} * {{Code|{{m|Pudełko|Nazwa przestrzeni nazw|nazwa przestrzeni nazw{{=}}Szablon|numer jednostki{{=}}2}}}} → {{Tt|{{#invoke:Pudełko|Nazwa przestrzeni nazw|nazwa przestrzeni nazw=Szablon|numer jednostki=2}}}} Powyżej dla przykładu podano parametry nie w rodzicu w szablonie, tylko w dziecku, jeśli chodzi o parametry nazw przestrzeni nazw, ale ich się za to nie powinno podawać w tych ramach, tylko w szablonach, w których wywoływane są te ramki pudełek {{Code|{{m|Pudełko}}}}, ale tak tutaj tak zrobiono by było najłatwiej sprawdzić działanie tego typu funkcji. Analogicznie możemy podawać parametry typu jednostki, np.: wywołaniu modułowym {{Code|{{m|Pudełko|Nazwa przestrzeni nazw|typ jednostki 2{{=}}strona szablonu|numer jednostki{{=}}2}}}}, ale o tym więcej w rozdziałach {{Code|{{sr|# p["Typ jednostki"](frame,i)|p=Pudełko}}}} w „{{sr|#Funkcje typu jednostki|p=Pudełko}}”, on definiuje przestrzenie przedmiotowe, ale można użyć parametru dyskusji typu jednostki z wartością niepustą, wtedy wyświetli się nazwa przestrzeni nazw dyskusji. Również parametry typu jednostki nie powinno się podawać w dziecku w ramce, tylko w rodzicu w szablonie jako parametry, w którym ta ramka jest wywoływana, ale tutaj podano jedynie dla przykładu, jak najłatwiej sprawdzić działanie tych parametrów tej funkcji. Najpierw w funkcji nagłówku brane są parametry nazw przestrzeni nazw, a jeżeli ich nie ma, to parametry typu jednostki, a jeżeli nie ma, to generowane są nazwy na podstawie aktualnego modułu. === {{Code|p["Nazwa przedmiotowej przestrzeni nazw"](frame,...)}} === Funkcja pisze przedmiotową nazwę przestrzeni nazw jakikolwiek nazwy przestrzeni nazw (tzn. nazwę przedmiotową nazwy przestrzenie nazw, czyli nie dyskusji, zamieniana jest na nią samą, czyli identyfikator przestrzeni się nie zmienia, a dyskusji, nie przedmiotową, przekształca się na przedmiotową jej odpowiadającą, czyli w tym przypadku identyfikator przestrzeni zmniejsza się o numer mniej), według podanej w zmiennej {{Code|nazwa przestrzeni nazw}} dla pozycja bazowej w podanych parametrach szablonu rodzicu ramki dziecka, lub dla innej pozycji należy parametr podawać w formie {{Code|nazwa przestrzeni nazw 1}}, {{Code|nazwa przestrzeni nazw 2}}, {{Code|nazwa przestrzeni nazw 3}},..., lub te parametry można podać w postaci ogólnej {{Code|nazwa przestrzeni nazw i}}. Parametry podaje się w parametrach rodzica wywołania tej funkcji {{Code|{{m|Pudełko|Nazwa przedmiotowej przestrzeni nazw}}}} (ale ich nie trzeba podawać w dziecku, ale można) i w parametrach dziecka, jeśli chodzi o zmienną {{Code|numer jednostki}}, czyli np.: {{Code|{{m|Pudełko|Nazwa przedmiotowej przestrzeni nazw|numer jednostki{{=}}<jakaś liczba całkowita dodatnia>}}}}. Te parametry przestrzenne zamiast w rodzicu w szablonie można podać w ramce dziecka, wtedy parametry dziecka mają pierwszeństwo. Parametry przestrzenne mogą mogą być podane w postaci przestrzeni przedmiotowej lub dyskusji, ale ta funkcja zawsze ją zamienia na przedmiotową. Przestrzeń nazw z parametrów nazw przestrzennych może odpowiadać wartości przestrzeni głównej, to wtedy odpowiednia przestrzeń nazw z parametru nazwy jednostki się nie liczy w tej funkcji, aby się liczyła należy użyć funkcji {{Code|{{sr|#p["Nazwa przedmiotowej przestrzeni nazw 2"](frame,...)|p=Pudełko}}}}. Definicja skrótowa funkcji: <syntaxhighlight lang="lua"> p["Nazwa przedmiotowej przestrzeni nazw"]=function(frame,czy_uwzglednic_alternatywna_nazwe,i)...end; </syntaxhighlight> Wtedy ciało funkcji tej, czyli jego definicja w środku, jest: <syntaxhighlight lang="lua"> -- Jest liczony numer parametru nazwy przestrzeni nazw, domyslnie chodzi tu o numer bazowy parametrów przestrzennych; local numer_jednostki=i or frame.args["numer jednostki"]; local liczba_numer_jednostki=((numer_jednostki)and(tonumber(numer_jednostki))or 0); local pudelko_pomocne_modul=require("Module:Pudełko/Pomocne"); -- Liczy nazwę przestrzeni nazw przedmiotową na podstawie podanych parametrów; return pudelko_pomocne_modul.Nazwa_przestrzeni_nazw(frame,1, czy_uwzglednic_alternatywna_nazwe,liczba_numer_jednostki); </syntaxhighlight> Parametry funkcji: * {{Code|frame}} - tablica ramki tablicy transportu, * {{Code|czy_uwzglednic_alternatywna_nazwe}} - czy ma uwzględniać nazwę przestrzeni nazw domyślną szablonu, dostępne wartości: {{Code|false}}, w której nazwa domyślna nie jest uwzględniana wtedy, oraz {{Code|nil}} i {{Code|true}}, które oznaczają to samo, w tym jeżeli ona jest uwzględniana, wtedy jest brany parametr pierwszy dziecka, który musi istnieć przy takiej wartości tego parametru, tzn. {{Code|{{m|Pudełko|Nazwa przedmiotowej przestrzeni nazw|Dyskusja szablonu}}}} - ta nazwa domyślna zostanie zamieniona na przedmiotową, a jak ona by była przedmiotowa, to żadnej zamiany, by nie było, a jeśli nazwa uzyskana z nazwy przestrzeni nazw z parametrów przestrzennych jest w takim przypadku błędna, to w takim razie brany jest ten parametr, a jeżeli ta nazwa domyślna jest błędna, czyli {{Code|{{m|Pudełko|Nazwa przedmiotowej przestrzeni nazw|Moja przestrzeń}}}}, wtedy funkcja zwraca stan błędu {{Code|(błąd)}}. * {{Code|i}} - numer zmiennej nazwy przestrzeni nazw. Funkcja wykorzystuje {{Code|{{sr|#p.Nazwa_przestrzeni_nazw(frame,...)|p=Pudełko/Pomocne}}}} do wyznaczania ogólnego nazwy przestrzeni nazw dla pozycji bazowej i numerkowej, tzn. dla pozycji: jeden, dwa, trzy,..., itd, i ich ogólnej. Parametr ramki tablicy transportu rodzica szablonu: * {{Code|nazwa przestrzeni nazw}}, {{Code|nazwa przestrzeni nazw 1}}, {{Code|nazwa przestrzeni nazw 2}}, {{Code|nazwa przestrzeni nazw 3}},..., {{Code|nazwa przestrzeni nazw i}} - nazwy przestrzeni nazw dla pozycji bazowej oraz zwykłej i ogólnej numerkowej, * {{Code|typ jednostki}}, {{Code|typ jednostki 1}}, {{Code|typ jednostki 2}}, {{Code|typ jednostki 3}},..., {{Code|typ jednostki i}} - typy jednostek, którym odpowiadają pewne przestrzenie przedmiotowe, dla pozycji bazowej, numerkowej i ogólnej. Parametry ramki tablicy transportu dziecka: * Parametry dziecka są takie same jak rodzica dla funkcji pudełkowej plus tu wymienione, * {{Code|numer jednostki}} - jak parametr {{Code|i}} nie został ustawiony, to wtedy liczy się ta zmienna. Przykłady: <syntaxhighlight lang="mediawiki"> {{Nazwa szablonu|nazwa przestrzeni nazw=Dyskusja Wikibooks|nazwa przestrzeni nazw 2=Dyskusja szablonu|nazwa przestrzeni nazw i=Dyskusja modułu}} </syntaxhighlight> W dziecku powiedzmy jest wywołanie, i szukamy nazwy przestrzeni nazw o numerze dwa, która nie została podana, ale istnieje za to jej wersji ogólna {{Code|nazwa przestrzeni nazw i}} i domyślna {{Code|nazwa przestrzeni nazw}}: <syntaxhighlight lang="mediawiki"> {{#invoke:Pudełko|Nazwa przedmiotowej przestrzeni nazw|numer jednostki=1}} </syntaxhighlight> Na podstawie powyższego przykładu otrzymamy wynik o schemacie, nie wyniku, bo tam nie ma zmiennej {{Code|nazwa przestrzeni nazw 1}}, ale jest {{Code|nazwa przestrzeni nazw i}}: <syntaxhighlight lang="mediawiki"> <!-- Ale nie "nazwa przestrzeni nazw", bo jej nie ma, ale za to istnieje "nazwa przestrzeni nazw i"; --> <!-- nazwa przestrzeni nazw 2=nazwa przestrzeni nazw i=Dyskusja modułu; --> <!-- Czyli wynik: --> Moduł <!-- Widzimy, że wygenerowała się nazwa przestrzeni nazw, którą jest przestrzeń przedmiotowa programowa przestrzeni dyskusji "Dyskusja modułu", którą również jest "Szablon" jego przestrzeni dyskusji "Dyskusja szablonu", a dla ich przestrzeni przedmiotowej, zamiast dyskusji, to samo przekształca się na to samo; --> </syntaxhighlight> Nie jest brana w tym powyższym przykładzie zmienna {{Code|nazwa przestrzeni nazw}}, bo jej nie ma, ale za to jest {{Code|nazwa przestrzeni nazw i}}, bo ona występuje jako parametr domyślny ogólny dla parametrów numerkowych. Przykłady w wikikodzie: * {{Code|{{m|Pudełko|Nazwa przedmiotowej przestrzeni nazw|numer jednostki{{=}}2}}}} → {{Tt|{{#invoke:Pudełko|Nazwa przedmiotowej przestrzeni nazw|numer jednostki=2}}}} * {{Code|{{m|Pudełko|Nazwa przedmiotowej przestrzeni nazw|Dyskusja szablonu|nazwa przestrzeni nazw i{{=}}Moja przestrzeń|numer jednostki{{=}}2}}}} → {{Tt|{{#invoke:Pudełko|Nazwa przedmiotowej przestrzeni nazw|Dyskusja szablonu|nazwa przestrzeni nazw i=Moja przestrzeń|numer jednostki=2}}}} * {{Code|{{m|Pudełko|Nazwa przedmiotowej przestrzeni nazw|nazwa przestrzeni nazw 2{{=}}Dyskusja szablonu|numer jednostki{{=}}2}}}} → {{Tt|{{#invoke:Pudełko|Nazwa przedmiotowej przestrzeni nazw|nazwa przestrzeni nazw 2=Dyskusja szablonu|numer jednostki=2}}}} * {{Code|{{m|Pudełko|Nazwa przedmiotowej przestrzeni nazw|nazwa przestrzeni nazw 2{{=}}Dyskusja szablonu|numer jednostki{{=}}2}}}} → {{Tt|{{#invoke:Pudełko|Nazwa przedmiotowej przestrzeni nazw|nazwa przestrzeni nazw i=Dyskusja szablonu|numer jednostki=2}}}} * {{Code|{{m|Pudełko|Nazwa przedmiotowej przestrzeni nazw|nazwa przestrzeni nazw{{=}}Dyskusja szablonu|numer jednostki{{=}}2}}}} → {{Tt|{{#invoke:Pudełko|Nazwa przedmiotowej przestrzeni nazw|nazwa przestrzeni nazw=Dyskusja szablonu|numer jednostki=2}}}} Powyżej dla przykładu podano parametry nie w rodzicu w szablonie, tylko w dziecku, jeśli chodzi o parametry nazw przestrzeni nazw, ale ich się za to nie powinno podawać w tych ramach, tylko w szablonach, w których wywoływane są te ramki pudełek {{Code|{{m|Pudełko}}}}, ale tak tutaj tak zrobiono by było najłatwiej sprawdzić działanie tego typu funkcji. Analogicznie możemy podawać parametry typu jednostki, np.: wywołaniu modułowym {{Code|{{m|Pudełko|Nazwa przedmiotowej przestrzeni nazw|typ jednostki 2{{=}}strona szablonu|numer jednostki{{=}}2}}}}, ale o tym więcej w rozdziałach {{Code|{{sr|# p["Przedmiotowy typ jednostki"](frame,i)|p=Pudełko}}}} w „{{sr|#Funkcje typu jednostki|p=Pudełko}}”, ale wtedy ta sama nazwa przestrzeni nazw reprezentowana przez {{Parametr|typ jednostki 2|strona szablonu}}, jest zamieniana na to samo, lepiej jest tutaj używać parametrów przestrzennych nazw niż typu jednostki, bo typ jednostki ma taką samą wartość dla przestrzeni przedmiotowej, co dyskusji. Tutaj parametr dyskusji typu jednostki bazowy i numerkowy ogólny, czy szczegółowy, nie gra roli, bo nawet, gdy wygenerujemy nazwę przestrzeni dyskusji za pomoca tego parametru, to i tak otrzymamy na samym końcu jego nazwę przedmiotową. Również parametry typu jednostki nie powinno się podawać w dziecku w ramce, tylko w rodzicu w szablonie jako parametry, w którym ta ramka jest wywoływana, ale tutaj podano jedynie dla przykładu, jak najłatwiej sprawdzić działanie tych parametrów tej funkcji. Najpierw w funkcji nagłówku brane są parametry nazw przestrzeni nazw, a jeżeli ich nie ma, to parametry typu jednostki, a jeżeli nie ma, to generowane są nazwy na podstawie aktualnego modułu. === {{Code|p["Nazwa przestrzeni nazw dyskusji"](frame,...)}} === Funkcja pisze nazwę przestrzeni nazw dyskusji jakikolwiek nazwy przestrzeni nazw (tzn. nazwę przedmiotową nazwy przestrzenie nazw, czyli nie dyskusji, zamieniana jest na dyskusji, czyli identyfikator przestrzeni się zmienia jeden wyżej, a dyskusji, nie przedmiotową, przekształca się na tą samą), według podanej w zmiennej {{Code|nazwa przestrzeni nazw}} dla pozycja bazowej w podanych parametrach szablonu rodzicu ramki dziecka, lub dla innej pozycji należy parametr podawać w formie {{Code|nazwa przestrzeni nazw 1}}, {{Code|nazwa przestrzeni nazw 2}}, {{Code|nazwa przestrzeni nazw 3}},..., lub te parametry można podać w postaci ogólnej {{Code|nazwa przestrzeni nazw i}}. Parametry podaje się w parametrach rodzica wywołania tej funkcji {{Code|{{m|Pudełko|Nazwa przestrzeni nazw dyskusji}}}} (ale ich nie trzeba podawać w dziecku, ale można) i w parametrach dziecka, jeśli chodzi o zmienną {{Code|numer jednostki}}, czyli np.: {{Code|{{m|Pudełko|Nazwa przestrzeni nazw dyskusji|numer jednostki{{=}}<jakaś liczba całkowita dodatnia>}}}}. Te parametry przestrzenne zamiast w rodzicu w szablonie można podać w ramce dziecka, wtedy parametry dziecka mają pierwszeństwo. Parametry przestrzenne mogą mogą być podane w postaci przestrzeni przedmiotowej lub dyskusji, ale ta funkcja zawsze ją zamienia na dyskusji. Przestrzeń nazw z parametrów nazw przestrzennych może odpowiadać wartości przestrzeni głównej, to wtedy odpowiednia przestrzeń nazw z parametru nazwy jednostki się nie liczy w tej funkcji, aby się liczyła należy użyć funkcji {{Code|{{sr|#p["Nazwa przestrzeni nazw dyskusji 2"](frame,...)|p=Pudełko}}}}. Definicja skrótowa funkcji: <syntaxhighlight lang="lua"> p["Nazwa przestrzeni nazw dyskusji"]=function(frame,czy_uwzglednic_alternatywna_nazwe,i)...end; </syntaxhighlight> Wtedy ciało funkcji tej, czyli jego definicja w środku, jest: <syntaxhighlight lang="lua"> -- Jest liczony numer parametru nazwy przestrzeni nazw, domyslnie chodzi tu o numer bazowy parametrów przestrzennych; local numer_jednostki=i or frame.args["numer jednostki"]; local liczba_numer_jednostki=((numer_jednostki)and(tonumber(numer_jednostki))or 0); local pudelko_pomocne_modul=require("Module:Pudełko/Pomocne"); -- Liczy nazwę przestrzeni nazw dyskusji na podstawie podanych parametrów; return pudelko_pomocne_modul.Nazwa_przestrzeni_nazw(frame,2, czy_uwzglednic_alternatywna_nazwe,liczba_numer_jednostki); </syntaxhighlight> Parametry funkcji: * {{Code|frame}} - tablica ramki tablicy transportu, * {{Code|czy_uwzglednic_alternatywna_nazwe}} - czy ma uwzględniać nazwę przestrzeni nazw domyślną szablonu, dostępne wartości: {{Code|false}}, w której nazwa domyślna nie jest uwzględniana wtedy, oraz {{Code|nil}} i {{Code|true}}, które oznaczają to samo, w tym jeżeli ona jest uwzględniana, wtedy jest brany parametr pierwszy dziecka, który musi istnieć przy takiej wartości tego parametru, tzn. {{Code|{{m|Pudełko|Nazwa przestrzeni nazw dyskusji|Szablon}}}} - ta nazwa domyślna zostanie przekształcona na dyskusji, a jeżeli ona by była dyskusji, to nie byłoby żadnego przekształcenia, a jeśli nazwa uzyskana nazwy przestrzeni nazw z parametrów przestrzennych jest w takim przypadku błędna, to w takim razie brany jest ten parametr, a jeżeli nazwa domyślna jest błędna, czyli {{Code|{{m|Pudełko|Nazwa przestrzeni nazw dyskusji|Moja przestrzeń}}}}, wtedy funkcja zwraca stan błędu {{Code|(błąd)}}. * {{Code|i}} - numer zmiennej nazwy przestrzeni nazw. Funkcja wykorzystuje {{Code|{{sr|#p.Nazwa_przestrzeni_nazw(frame,...)|p=Pudełko/Pomocne}}}} do wyznaczania ogólnego nazwy przestrzeni nazw dla pozycji bazowej i numerkowej, tzn. dla pozycji: jeden, dwa, trzy,..., itd, i ich ogólnej. Parametr ramki tablicy transportu rodzica szablonu: * {{Code|nazwa przestrzeni nazw}}, {{Code|nazwa przestrzeni nazw 1}}, {{Code|nazwa przestrzeni nazw 2}}, {{Code|nazwa przestrzeni nazw 3}},..., {{Code|nazwa przestrzeni nazw i}} - nazwy przestrzeni nazw dla pozycji bazowej oraz zwykłej i ogólnej numerkowej, * {{Code|typ jednostki}}, {{Code|typ jednostki 1}}, {{Code|typ jednostki 2}}, {{Code|typ jednostki 3}},..., {{Code|typ jednostki i}} - typy jednostek, którym odpowiadają pewne przestrzenie przedmiotowe, dla pozycji bazowej, numerkowej i ogólnej. Parametry ramki tablicy transportu dziecka: * Parametry dziecka są takie same jak rodzica dla funkcji pudełkowej plus tu wymienione, * {{Code|numer jednostki}} - jak parametr {{Code|i}} nie został ustawiony, to wtedy liczy się ta zmienna. Przykłady: <syntaxhighlight lang="mediawiki"> {{Nazwa szablonu|nazwa przestrzeni nazw=Wikibooks|nazwa przestrzeni nazw 2=Szablon|nazwa przestrzeni nazw i=Moduł}} </syntaxhighlight> W dziecku powiedzmy jest wywołanie, i szukamy nazwy przestrzeni nazw o numerze dwa, która nie została podana, ale istnieje za to jej wersji ogólna {{Code|nazwa przestrzeni nazw i}} i domyślna {{Code|nazwa przestrzeni nazw}}: <syntaxhighlight lang="mediawiki"> {{#invoke:Pudełko|Nazwa przestrzeni nazw dyskusji|numer jednostki=1}} </syntaxhighlight> Na podstawie powyższego przykładu otrzymamy wynik o schemacie, nie wyniku, bo tam nie ma zmiennej {{Code|nazwa przestrzeni nazw 1}}, ale jest {{Code|nazwa przestrzeni nazw i}}: <syntaxhighlight lang="mediawiki"> <!-- Ale nie "nazwa przestrzeni nazw", bo jej nie ma, ale za to istnieje "nazwa przestrzeni nazw i"; --> <!-- nazwa przestrzeni nazw 2=nazwa przestrzeni nazw i=Moduł; --> <!-- Czyli wynik: --> Dyskusja modułu <!-- Widzimy, że wygenerowała się nazwa przestrzeni nazw, którą jest przestrzeń dyskusji przestrzeni programowej przestrzeni przedmiotowej "Moduł", którą również jest "Szablon" jego przestrzeni dyskusji "Dyskusja szablonu", a dla ich przestrzeni przedmiotowej, zamiast dyskusji, to przekształca się na dyskusji jej odpowiadającą; --> </syntaxhighlight> Nie jest brana w tym powyższym przykładzie zmienna {{Code|nazwa przestrzeni nazw}}, bo jej nie ma, ale za to jest {{Code|nazwa przestrzeni nazw i}}, bo ona występuje jako parametr domyślny ogólny dla parametrów numerkowych. Przykłady w wikikodzie: * {{Code|{{m|Pudełko|Nazwa przestrzeni nazw dyskusji|numer jednostki{{=}}2}}}} → {{Tt|{{#invoke:Pudełko|Nazwa przestrzeni nazw dyskusji|numer jednostki=2}}}} * {{Code|{{m|Pudełko|Nazwa przestrzeni nazw dyskusji|Szablon|nazwa przestrzeni nazw i{{=}}Moja przestrzeń|numer jednostki{{=}}2}}}} → {{Tt|{{#invoke:Pudełko|Nazwa przestrzeni nazw dyskusji|Szablon|nazwa przestrzeni nazw i=Moja przestrzeń|numer jednostki=2}}}} * {{Code|{{m|Pudełko|Nazwa przestrzeni nazw dyskusji|nazwa przestrzeni nazw 2{{=}}Szablon|numer jednostki{{=}}2}}}} → {{Tt|{{#invoke:Pudełko|Nazwa przestrzeni nazw dyskusji|nazwa przestrzeni nazw 2=Szablon|numer jednostki=2}}}} * {{Code|{{m|Pudełko|Nazwa przestrzeni nazw dyskusji|nazwa przestrzeni nazw 2{{=}}Szablon|numer jednostki{{=}}2}}}} → {{Tt|{{#invoke:Pudełko|Nazwa przestrzeni nazw dyskusji|nazwa przestrzeni nazw i=Szablon|numer jednostki=2}}}} * {{Code|{{m|Pudełko|Nazwa przestrzeni nazw dyskusji|nazwa przestrzeni nazw{{=}}Szablon|numer jednostki{{=}}2}}}} → {{Tt|{{#invoke:Pudełko|Nazwa przestrzeni nazw dyskusji|nazwa przestrzeni nazw=Szablon|numer jednostki=2}}}} Powyżej dla przykładu podano parametry nie w rodzicu w szablonie, tylko w dziecku, jeśli chodzi o parametry nazw przestrzeni nazw, ale ich się za to nie powinno podawać w tych ramach, tylko w szablonach, w których wywoływane są te ramki pudełek {{Code|{{m|Pudełko}}}}, ale tak tutaj tak zrobiono by było najłatwiej sprawdzić działanie tego typu funkcji. Analogicznie możemy podawać parametry typu jednostki, np.: wywołaniu modułowym {{Code|{{m|Pudełko|Nazwa przestrzeni nazw dyskusji|typ jednostki 2{{=}}strona szablonu|numer jednostki{{=}}2}}}}, ale o tym więcej w rozdziałach {{Code|{{sr|# p["Dyskusyjny typ jednostki"](frame,i)|p=Pudełko}}}} w „{{sr|#Funkcje typu jednostki|p=Pudełko}}”, ale wtedy nazwa przestrzeni nazw reprezentowana przez {{Parametr|typ jednostki 2|strona szablonu}}, jest zamieniana na nazwę przestrzeni nazw dyskusji. Parametr dyskusji typu jednostki bazowy lub dla danego numerka ogólny, czy szczegółowy, nie gra roli. Również parametry typu jednostki nie powinno się podawać w dziecku w ramce, tylko w rodzicu w szablonie jako parametry, w którym ta ramka jest wywoływana, ale tutaj podano jedynie dla przykładu, jak najłatwiej sprawdzić działanie tych parametrów tej funkcji. Najpierw w funkcji nagłówku brane są parametry nazw przestrzeni nazw, a jeżeli ich nie ma, to parametry typu jednostki, a jeżeli nie ma, to generowane są nazwy na podstawie aktualnego modułu. == Funkcje nazw przestrzeni nazw drugiej wersji == === {{Code|p["Nazwa przestrzeni nazw 2"](frame,...)}} === Funkcja pisze nazwę przestrzeni nazw, niezależnie, czy to jest przedmiotowa, czy dyskusji, według, i nie zawsze tylko, podanej w zmiennej {{Code|nazwa przestrzeni nazw}} dla pozycja bazowej w podanych parametrach szablonu rodzicu ramki dziecka, lub dla innej pozycji należy parametr podawać w formie {{Code|nazwa przestrzeni nazw 1}}, {{Code|nazwa przestrzeni nazw 2}}, {{Code|nazwa przestrzeni nazw 3}},..., lub te parametry można podać w postaci ogólnej {{Code|nazwa przestrzeni nazw i}}. W tej funkcji trzeba też podawać parametry nazwy jednostek {{Code|nazwa jednostki}}, {{Code|nazwa jednostki 1}}, {{Code|nazwa jednostki 2}}, {{Code|nazwa jednostki 3}},... Parametry podaje się w parametrach rodzica wywołania tej funkcji {{Code|{{m|Pudełko|Nazwa przestrzeni nazw 2}}}} (ale ich nie trzeba podawać w dziecku, ale można) i w parametrach dziecka, jeśli chodzi o zmienną {{Code|numer jednostki}}, czyli np.: {{Code|{{m|Pudełko|Nazwa przestrzeni nazw 2|numer jednostki{{=}}<jakaś liczba całkowita dodatnia>}}}}. Te parametry przestrzenne zamiast w rodzicu w szablonie można podać w ramce dziecka, wtedy parametry dziecka mają pierwszeństwo. Przestrzeń nazw z parametrów nazw przestrzennych może odpowiadać wartości przestrzeni głównej, to wtedy odpowiednia przestrzeń nazw z parametru nazwy jednostki się liczy w tej funkcji, wtedy jest liczona nazwa przestrzeni nazw z tego parametru. Gdy parametry przestrzenne lub typ jednostki w drugim podejściu nie wskazują na przestrzeń główną, to wtedy działanie tej funkcji jest podobne do {{Code|{{sr|#p["Nazwa przestrzeni nazw"](frame,...)|p=Pudełko}}}}. Definicja skrótowa funkcji: <syntaxhighlight lang="lua"> p["Nazwa przestrzeni nazw 2"]=function(frame,czy_uwzglednic_alternatywna_nazwe,i)...end; </syntaxhighlight> Wtedy ciało funkcji tej, czyli jego definicja w środku, jest: <syntaxhighlight lang="lua"> local pudelko_pomocne_modul=require("Module:Pudełko/Pomocne"); -- Liczy nazwę przestrzeni nazw, jeżeli z parametrów przestrzennych przestrzeń wskazuje na główną, to wtedy jest liczona przestrzeń nazw z nazwy jednostki; return pudelko_pomocne_modul.Nazwa_przestrzeni_nazw_2(frame,czy_uwzglednic_alternatywna_nazwe,i) </syntaxhighlight> Parametry funkcji: * {{Code|frame}} - tablica ramki tablicy transportu, * {{Code|czy_uwzglednic_alternatywna_nazwe}} - czy ma uwzględniać nazwę przestrzeni nazw domyślną szablonu, dostępne wartości: {{Code|false}}, w której nazwa domyślna nie jest uwzględniana wtedy, oraz {{Code|nil}} i {{Code|true}}, które oznaczają to samo, w tym jeżeli ona jest uwzględniana, wtedy jest brany parametr pierwszy dziecka, który musi istnieć przy takiej wartości tego parametru, tzn. {{Code|{{m|Pudełko|Nazwa przestrzeni nazw 2|Szablon}}}}, a jeśli nazwa uzyskana nazwy przestrzeni nazw jest w takim przypadku błędna, to brany jest ten element, a jeżeli nazwa domyślna jest błędna, czyli {{Code|{{m|Pudełko|Nazwa przestrzeni nazw 2|Moja przestrzeń}}}}, wtedy funkcja zwraca stan błędu {{Code|(błąd)}}. * {{Code|i}} - numer zmiennej nazwy przestrzeni nazw. Funkcja wykorzystuje {{Code|{{sr|#p.Nazwa_przestrzeni_nazw_2(frame,...)|p=Pudełko/Pomocne}}}} do wyznaczania ogólnego nazwy przestrzeni nazw dla pozycji bazowej i numerkowej, tzn. dla pozycji: jeden, dwa, trzy,..., itd, i ich ogólnej. Parametr ramki tablicy transportu rodzica szablonu: * {{Code|nazwa przestrzeni nazw}}, {{Code|nazwa przestrzeni nazw 1}}, {{Code|nazwa przestrzeni nazw 2}}, {{Code|nazwa przestrzeni nazw 3}},..., {{Code|nazwa przestrzeni nazw i}} - nazwy przestrzeni nazw dla pozycji bazowej oraz zwykłej i ogólnej numerkowej, * {{Code|nazwa jednostki}}, {{Code|nazwa jednostki 1}}, {{Code|nazwa jednostki 2}}, {{Code|nazwa jednostki 3}},... - nazwy jednostek dla pozycji bazowej i numerkowej, * {{Code|typ jednostki}}, {{Code|typ jednostki 1}}, {{Code|typ jednostki 2}}, {{Code|typ jednostki 3}},..., {{Code|typ jednostki i}} - typy jednostek, którym odpowiadają pewne przestrzenie przedmiotowe, dla pozycji bazowej, numerkowej i ogólnej, ** {{Code|dyskusja typu jednostki}}, {{Code|dyskusja typu jednostki 1}}, {{Code|dyskusja typ jednostki 2}}, {{Code|dyskusja typ jednostki 3}},..., {{Code|dyskusja typ jednostki i}} - czy dany typ jednostki ma przedstawiać, jeśli niepusta, przestrzeń dyskusji dla pozycji bazowej, numerkowej i ogólnej. Parametry ramki tablicy transportu dziecka: * Parametry dziecka są takie same jak rodzica dla funkcji pudełkowej plus tu wymienione, * {{Code|numer jednostki}} - jak parametr {{Code|i}} nie został ustawiony, to wtedy liczy się ta zmienna. Przykłady: <syntaxhighlight lang="mediawiki"> {{Nazwa szablonu|nazwa przestrzeni nazw=Wikibooks|nazwa przestrzeni nazw 1=Szablon|nazwa przestrzeni nazw i=|nazwa jednostki 2=Wikibooks:Strona}} </syntaxhighlight> W dziecku powiedzmy jest wywołanie, i szukamy nazwy przestrzeni nazw o numerze dwa, która została podana, ale istnieje za to jej wersji ogólna {{Code|nazwa przestrzeni nazw i}} i domyślna {{Code|nazwa przestrzeni nazw}}, ale wtedy dla tego numerkowego liczy się to ogólne z {{Code| i}}, a ponieważ ta nazwa jest pusta, więc będziemy liczyli nazwę przestrzeni nazw z {{Code|nazwa jednostki 2}}: <syntaxhighlight lang="mediawiki"> {{#invoke:Pudełko|Nazwa przestrzeni nazw 2|numer jednostki=2}} </syntaxhighlight> Na podstawie powyższego przykładu otrzymamy wynik o schemacie, nie wyniku, bo tam nie ma zmiennej {{Code|nazwa przestrzeni nazw 1}}, ale jest {{Code|nazwa przestrzeni nazw i}}: <syntaxhighlight lang="mediawiki"> <!-- Ale nie "nazwa przestrzeni nazw 2", bo jej nie ma, ale za to istnieje "nazwa przestrzeni nazw i"; --> <!-- nazwa przestrzeni nazw 2=nazwa przestrzeni nazw i="", a nazwa jednostki 2="Wikibooks:Strona"; --> <!-- Czyli wynik: --> Wikibooks <!-- Widzimy, że wygenerowała się nazwa przestrzeni nazw, którą jest przestrzeń nieprogramowa, ale projektu, wychodząca z nazwy jednostek w tym przypadku z "nazwa jednostki 2"; --> </syntaxhighlight> Nie jest brana w tym powyższym przykładzie zmienna {{Code|nazwa przestrzeni nazw}}, bo jej nie ma, ale za to jest {{Code|nazwa przestrzeni nazw i}}, bo ona występuje jako parametr domyślny ogólny dla parametrów numerkowych. Tytaj jest używana jest zmienna {{Code|nazwa jednostki 2}} do wygenerowania ostatecznego wyniku, bo jak można zauważyć, parametry przestrzenne wskazują na przestrzeń główną, a nazwy jednostek już nie. Przykłady w wikikodzie: * {{Code|{{m|Pudełko|Nazwa przestrzeni nazw 2|numer jednostki{{=}}2}}}} → {{Tt|{{#invoke:Pudełko|Nazwa przestrzeni nazw 2|numer jednostki=2}}}} * {{Code|{{m|Pudełko|Nazwa przestrzeni nazw 2|Szablon|nazwa przestrzeni nazw i{{=}}Moja przestrzeń|numer jednostki{{=}}2}}}} → {{Tt|{{#invoke:Pudełko|Nazwa przestrzeni nazw 2|Szablon|nazwa przestrzeni nazw i=Moja przestrzeń|numer jednostki=2}}}} * {{Code|{{m|Pudełko|Nazwa przestrzeni nazw 2|nazwa przestrzeni nazw 2{{=}}|nazwa jednostki 2{{=}}Szablon:Strona|numer jednostki{{=}}2}}}} → {{Tt|{{#invoke:Pudełko|Nazwa przestrzeni nazw 2|nazwa przestrzeni nazw 2=|nazwa jednostki 2=Szablon:Strona|numer jednostki=2}}}} * {{Code|{{m|Pudełko|Nazwa przestrzeni nazw 2|nazwa przestrzeni nazw i{{=}}|nazwa jednostki 2{{=}}Szablon:Strona|numer jednostki{{=}}2}}}} → {{Tt|{{#invoke:Pudełko|Nazwa przestrzeni nazw 2|nazwa przestrzeni nazw i=|nazwa jednostki 2=Szablon:Strona|numer jednostki=2}}}} * {{Code|{{m|Pudełko|Nazwa przestrzeni nazw 2|Szablon|nazwa przestrzeni nazw{{=}}|nazwa jednostki 2{{=}}Wikibooks:Strona|numer jednostki{{=}}2}}}} → {{Tt|{{#invoke:Pudełko|Nazwa przestrzeni nazw 2|Szablon|nazwa przestrzeni nazw=|nazwa jednostki 2=Wikibooks:Strona|numer jednostki=2}}}} Powyżej dla przykładu podano parametry nie w rodzicu w szablonie, tylko w dziecku, jeśli chodzi o parametry nazw przestrzeni nazw i nazw jednostek, ale ich się za to nie powinno podawać w tych ramach, tylko w szablonach, w których wywoływane są te ramki pudełek {{Code|{{m|Pudełko}}}}, ale tak tutaj tak zrobiono by było najłatwiej sprawdzić działanie tego typu funkcji. Analogicznie możemy podawać parametry typu jednostki, np.: wywołaniu modułowym {{Code|{{m|Pudełko|Nazwa przestrzeni nazw 2|typ jednostki 2{{=}}Podręcznik|nazwa jednostki 2{{=}}Szablon:Strona|numer jednostki{{=}}2}}}} (ale wtedy jest brana przestrzeń nazw z nazwy jednostki), ale o tym więcej w rozdziałach {{Code|{{sr|#p["Typ jednostki 2"](frame,i)|p=Pudełko}}}} w „{{sr|#Funkcje typu jednostki|p=Pudełko}}”, on definiuje przestrzenie przedmiotowe, ale można użyć parametru dyskusji typu jednostki z wartością niepustą, wtedy wyświetli się nazwa przestrzeni nazw dyskusji. Jeżeli typ jednostki wskazuje na przestrzeń nazw główną, wtedy się liczą parametry nazw jednostek. Również parametry typu jednostki nie powinno się podawać w dziecku w ramce, tylko w rodzicu w szablonie jako parametry, w którym ta ramka jest wywoływana, ale tutaj podano jedynie dla przykładu, jak najłatwiej sprawdzić działanie tych parametrów tej funkcji. Najpierw w funkcji nagłówku brane są parametry nazw przestrzeni nazw, a jeżeli ich nie ma, to parametry typu jednostki, a jeżeli nie ma lub parametry przestrzenne wskazują na przestrzeń główną, i nie ma nazwy jednostki, to generowane są nazwy tej funkcji na podstawie aktualnej strony. === {{Code|p["Nazwa przedmiotowej przestrzeni nazw 2"](frame,...)}} === Funkcja pisze przedmiotową nazwę przestrzeni nazw jakikolwiek nazwy przestrzeni nazw (tzn. nazwę przedmiotową nazwy przestrzenie nazw, czyli nie dyskusji, zamieniana jest na nią samą, czyli identyfikator przestrzeni się nie zmienia, a dyskusji, nie przedmiotową, przekształca się na przedmiotową jej odpowiadającą, czyli w tym przypadku identyfikator przestrzeni zmniejsza się o numer mniej), według, i nie zawsze tylko, podanej w zmiennej {{Code|nazwa przestrzeni nazw}} dla pozycja bazowej w podanych parametrach szablonu rodzicu ramki dziecka, lub dla innej pozycji należy parametr podawać w formie {{Code|nazwa przestrzeni nazw 1}}, {{Code|nazwa przestrzeni nazw 2}}, {{Code|nazwa przestrzeni nazw 3}},..., lub te parametry można podać w postaci ogólnej {{Code|nazwa przestrzeni nazw i}}. W tej funkcji trzeba też podawać parametry nazwy jednostek {{Code|nazwa jednostki}}, {{Code|nazwa jednostki 1}}, {{Code|nazwa jednostki 2}}, {{Code|nazwa jednostki 3}},... Parametry podaje się w parametrach rodzica wywołania tej funkcji {{Code|{{m|Pudełko|Nazwa przedmiotowej przestrzeni nazw 2}}}} (ale ich nie trzeba podawać w dziecku, ale można) i w parametrach dziecka, jeśli chodzi o zmienną {{Code|numer jednostki}}, czyli np.: {{Code|{{m|Pudełko|Nazwa przedmiotowej przestrzeni nazw 2|numer jednostki{{=}}<jakaś liczba całkowita dodatnia>}}}}. Te parametry przestrzenne zamiast w rodzicu w szablonie można podać w ramce dziecka, wtedy parametry dziecka mają pierwszeństwo. Przestrzeń nazw z parametrów nazw przestrzennych po przekształceniu na przedmiotową może odpowiadać wartości przestrzeni głównej, to wtedy odpowiednia przestrzeń nazw z parametru nazwy jednostki się liczy w tej funkcji, wtedy jest liczona nazwa przestrzeni nazw z tego parametru. Gdy parametry przestrzenne lub typ jednostki w drugim podejściu nie wskazują na przestrzeń główną, to wtedy działanie tej funkcji jest podobne do {{Code|{{sr|#p["Nazwa przedmiotowej przestrzeni nazw"](frame,...)|p=Pudełko}}}}. Definicja skrótowa funkcji: <syntaxhighlight lang="lua"> p["Nazwa przedmiotowej przestrzeni nazw 2"]=function(frame,czy_uwzglednic_alternatywna_nazwe,i)...end; </syntaxhighlight> Wtedy ciało funkcji tej, czyli jego definicja w środku, jest: <syntaxhighlight lang="lua"> local pudelko_pomocne_modul=require("Module:Pudełko/Pomocne"); return pudelko_pomocne_modul.Nazwa_przestrzeni_nazw_przedmiotowa_dyskusji_2(frame,czy_uwzglednic_alternatywna_nazwe,i,"przedmiotowa"); </syntaxhighlight> Parametry funkcji: * {{Code|frame}} - tablica ramki tablicy transportu, * {{Code|czy_uwzglednic_alternatywna_nazwe}} - czy ma uwzględniać nazwę przestrzeni nazw domyślną szablonu, dostępne wartości: {{Code|false}}, w której nazwa domyślna nie jest uwzględniana wtedy, oraz {{Code|nil}} i {{Code|true}}, które oznaczają to samo, w tym jeżeli ona jest uwzględniana, wtedy jest brany parametr pierwszy dziecka, który musi istnieć przy takiej wartości tego parametru, tzn. {{Code|{{m|Pudełko|Nazwa przedmiotowej przestrzeni nazw 2|Szablon}}}}, nazwa domyślna zostanie zamieniona na przedmiotową, a jeżeli jest już taka, to żadnej zamiany nie ma, a jeśli nazwa uzyskana nazwy przestrzeni nazw jest w takim przypadku błędna, to brany jest ten eleement, a jeżeli nazwa domyślna jest błędna, czyli {{Code|{{m|Pudełko|Nazwa przedmiotowej przestrzeni nazw 2|Moja przestrzeń}}}}, wtedy funkcja zwraca stan błędu {{Code|(błąd)}}. * {{Code|i}} - numer zmiennej nazwy przestrzeni nazw. Funkcja wykorzystuje {{Code|{{sr|#p.Nazwa_przestrzeni_nazw_przedmiotowa_dyskusji_2(frame,...)|p=Pudełko/Pomocne}}}} do wyznaczania ogólnego nazwy przestrzeni nazw dla pozycji bazowej i numerkowej, tzn. dla pozycji: jeden, dwa, trzy,..., itd, i ich ogólnej. Parametr ramki tablicy transportu rodzica szablonu: * {{Code|nazwa przestrzeni nazw}}, {{Code|nazwa przestrzeni nazw 1}}, {{Code|nazwa przestrzeni nazw 2}}, {{Code|nazwa przestrzeni nazw 3}},..., {{Code|nazwa przestrzeni nazw i}} - nazwy przestrzeni nazw dla pozycji bazowej oraz zwykłej i ogólnej numerkowej, * {{Code|nazwa jednostki}}, {{Code|nazwa jednostki 1}}, {{Code|nazwa jednostki 2}}, {{Code|nazwa jednostki 3}},... - nazwy jednostek dla pozycji bazowej i numerkowej, * {{Code|typ jednostki}}, {{Code|typ jednostki 1}}, {{Code|typ jednostki 2}}, {{Code|typ jednostki 3}},..., {{Code|typ jednostki i}} - typy jednostek, którym odpowiadają pewne przestrzenie przedmiotowe, dla pozycji bazowej, numerkowej i ogólnej. Parametry ramki tablicy transportu dziecka: * Parametry dziecka są takie same jak rodzica dla funkcji pudełkowej plus tu wymienione, * {{Code|numer jednostki}} - jak parametr {{Code|i}} nie został ustawiony, to wtedy liczy się ta zmienna. Przykłady: <syntaxhighlight lang="mediawiki"> {{Nazwa szablonu|nazwa przestrzeni nazw=Wikibooks|nazwa przestrzeni nazw 1=Szablon|nazwa przestrzeni nazw i=|nazwa jednostki 2=Dyskusja Wikibooks:Strona}} </syntaxhighlight> W dziecku powiedzmy jest wywołanie, i szukamy nazwy przestrzeni nazw o numerze dwa, która została podana, ale istnieje za to jej wersji ogólna {{Code|nazwa przestrzeni nazw i}} i domyślna {{Code|nazwa przestrzeni nazw}}, ale wtedy dla tego numerkowego liczy się to ogólne z {{Code| i}}, a ponieważ ta nazwa jest pusta, więc będziemy liczyli nazwę przestrzeni nazw z {{Code|nazwa jednostki 2}}: <syntaxhighlight lang="mediawiki"> {{#invoke:Pudełko|Nazwa przedmiotowej przestrzeni nazw 2|numer jednostki=2}} </syntaxhighlight> Na podstawie powyższego przykładu otrzymamy wynik o schemacie, nie wyniku, bo tam nie ma zmiennej {{Code|nazwa przestrzeni nazw 1}}, ale jest {{Code|nazwa przestrzeni nazw i}}: <syntaxhighlight lang="mediawiki"> <!-- Ale nie "nazwa przestrzeni nazw 2", bo jej nie ma, ale za to istnieje "nazwa przestrzeni nazw i"; --> <!-- nazwa przestrzeni nazw 2=nazwa przestrzeni nazw i="", a nazwa jednostki 2="Dyskusja Wikibooks:Strona"; --> <!-- Czyli wynik: --> Wikibooks <!-- Widzimy, że wygenerowała się nazwa przestrzeni nazw, którą jest przestrzeń nieprogramowa, ale projektu, wychodząca z nazwy jednostek w tym przypadku z "nazwa jednostki 2"; --> </syntaxhighlight> Nie jest brana w tym powyższym przykładzie zmienna {{Code|nazwa przestrzeni nazw}}, bo jej nie ma, ale za to jest {{Code|nazwa przestrzeni nazw i}}, bo ona występuje jako parametr domyślny ogólny dla parametrów numerkowych. Tytaj jest używana jest zmienna {{Code|nazwa jednostki 2}} do wygenerowania ostatecznego wyniku, bo jak można zauważyć, parametry przestrzenne wskazują na przestrzeń główną, a nazwy jednostek już nie. Przykłady w wikikodzie: * {{Code|{{m|Pudełko|Nazwa przedmiotowej przestrzeni nazw 2|numer jednostki{{=}}2}}}} → {{Tt|{{#invoke:Pudełko|Nazwa przedmiotowej przestrzeni nazw 2|numer jednostki=2}}}} * {{Code|{{m|Pudełko|Nazwa przedmiotowej przestrzeni nazw 2|Dyskusja szablonu|nazwa przestrzeni nazw i{{=}}Moja przestrzeń|numer jednostki{{=}}2}}}} → {{Tt|{{#invoke:Pudełko|Nazwa przedmiotowej przestrzeni nazw 2|Dyskusja szablonu|nazwa przestrzeni nazw i=Moja przestrzeń|numer jednostki=2}}}} * {{Code|{{m|Pudełko|Nazwa przedmiotowej przestrzeni nazw 2|nazwa przestrzeni nazw 2{{=}}Dyskusja|nazwa jednostki 2{{=}}Dyskusja szablonu:Strona|numer jednostki{{=}}2}}}} → {{Tt|{{#invoke:Pudełko|Nazwa przedmiotowej przestrzeni nazw 2|nazwa przestrzeni nazw 2=Dyskusja|nazwa jednostki 2=Dyskusja szablonu:Strona|numer jednostki=2}}}} * {{Code|{{m|Pudełko|Nazwa przedmiotowej przestrzeni nazw 2|nazwa przestrzeni nazw i{{=}}Dyskusja|nazwa jednostki 2{{=}}Dyskusja szablonu:Strona|numer jednostki{{=}}2}}}} → {{Tt|{{#invoke:Pudełko|Nazwa przedmiotowej przestrzeni nazw 2|nazwa przestrzeni nazw i=Dyskusja|nazwa jednostki 2=Dyskusja szablonu:Strona|numer jednostki=2}}}} * {{Code|{{m|Pudełko|Nazwa przedmiotowej przestrzeni nazw 2|Dyskusja szablonu|nazwa przestrzeni nazw{{=}}Dyskusja|nazwa jednostki 2{{=}}Wikibooks:Strona|numer jednostki{{=}}2}}}} → {{Tt|{{#invoke:Pudełko|Nazwa przedmiotowej przestrzeni nazw 2|Dyskusja szablonu|nazwa przestrzeni nazw=Dyskusja|nazwa jednostki 2=Dyskusja Wikibooks:Strona|numer jednostki=2}}}} Powyżej dla przykładu podano parametry nie w rodzicu w szablonie, tylko w dziecku, jeśli chodzi o parametry nazw przestrzeni nazw i nazw jednostek, ale ich się za to nie powinno podawać w tych ramach, tylko w szablonach, w których wywoływane są te ramki pudełek {{Code|{{m|Pudełko}}}}, ale tak tutaj tak zrobiono by było najłatwiej sprawdzić działanie tego typu funkcji. Analogicznie możemy podawać parametry typu jednostki, np.: wywołaniu modułowym {{Code|{{m|Pudełko|Nazwa przedmiotowej przestrzeni nazw 2|typ jednostki 2{{=}}Podręcznik|nazwa jednostki 2{{=}}Dyskusja szablonu:Strona|numer jednostki{{=}}2}}}} (ale wtedy jest brana przestrzeń nazw z nazwy jednostki), ale o tym więcej w rozdziałach {{Code|{{sr|# p["Przedmiotowy typ jednostki 2"](frame,i)|p=Pudełko}}}} w „{{sr|#Funkcje typu jednostki|p=Pudełko}}”, on definiuje przestrzenie przedmiotowe, ale można użyć parametru dyskusji typu jednostki z wartością niepustą, pustą, czy nawet jej nie podamy, wtedy wyświetli się nazwa przestrzeni nazw przedmiotowej. Jeżeli typ jednostki wskazuje na przestrzeń nazw główną, wtedy się liczą parametry nazw jednostek. Również parametry typu jednostki nie powinno się podawać w dziecku w ramce, tylko w rodzicu w szablonie jako parametry, w którym ta ramka jest wywoływana, ale tutaj podano jedynie dla przykładu, jak najłatwiej sprawdzić działanie tych parametrów tej funkcji. Najpierw w funkcji nagłówku brane są parametry nazw przestrzeni nazw, a jeżeli ich nie ma, to parametry typu jednostki, a jeżeli nie ma lub parametry przestrzenne wskazują na przestrzeń główną, i nie ma nazwy jednostki, to generowane są nazwy tej funkcji na podstawie aktualnej strony. === {{Code|p["Nazwa przestrzeni nazw dyskusji 2"](frame,...)}} === Funkcja pisze nazwę przestrzeni nazw dyskusji jakikolwiek nazwy przestrzeni nazw (tzn. nazwę dyskusji nazwy przestrzenie nazw, czyli nie przedmiotowej, zamieniana jest na nią samą, czyli identyfikator przestrzeni się nie zmienia, a przedmiotową, nie dyskusji, przekształca się na dyskusji jej odpowiadającą, czyli w tym przypadku identyfikator przestrzeni zwiększa się o numer więcej), według, i nie zawsze tylko, podanej w zmiennej {{Code|nazwa przestrzeni nazw}} dla pozycja bazowej w podanych parametrach szablonu rodzicu ramki dziecka, lub dla innej pozycji należy parametr podawać w formie {{Code|nazwa przestrzeni nazw 1}}, {{Code|nazwa przestrzeni nazw 2}}, {{Code|nazwa przestrzeni nazw 3}},..., lub te parametry można podać w postaci ogólnej {{Code|nazwa przestrzeni nazw i}}. W tej funkcji trzeba też podawać parametry nazwy jednostek {{Code|nazwa jednostki}}, {{Code|nazwa jednostki 1}}, {{Code|nazwa jednostki 2}}, {{Code|nazwa jednostki 3}},... Parametry podaje się w parametrach rodzica wywołania tej funkcji {{Code|{{m|Pudełko|Nazwa przestrzeni nazw dyskusji 2}}}} (ale ich nie trzeba podawać w dziecku, ale można) i w parametrach dziecka, jeśli chodzi o zmienną {{Code|numer jednostki}}, czyli np.: {{Code|{{m|Pudełko|Nazwa przestrzeni nazw dyskusji 2|numer jednostki{{=}}<jakaś liczba całkowita dodatnia>}}}}. Te parametry przestrzenne zamiast w rodzicu w szablonie można podać w ramce dziecka, wtedy parametry dziecka mają pierwszeństwo. Przestrzeń nazw z parametrów nazw przestrzennych po przekształceniu może odpowiadać wartości przestrzeni głównej, to wtedy odpowiednia przestrzeń nazw z parametru nazwy jednostki się liczy w tej funkcji, wtedy jest liczona nazwa przestrzeni nazw dyskusji z tego parametru. Gdy parametry przestrzenne lub typ jednostki w drugim podejściu nie wskazują na przestrzeń główną, to wtedy działanie tej funkcji jest podobne do {{Code|{{sr|#p["Nazwa dyskusji przestrzeni nazw"](frame,...)|p=Pudełko}}}}. Definicja skrótowa funkcji: <syntaxhighlight lang="lua"> p["Nazwa przestrzeni nazw dyskusji 2"]=function(frame,czy_uwzglednic_alternatywna_nazwe,i)...end; </syntaxhighlight> Wtedy ciało funkcji tej, czyli jego definicja w środku, jest: <syntaxhighlight lang="lua"> local pudelko_pomocne_modul=require("Module:Pudełko/Pomocne"); return pudelko_pomocne_modul.Nazwa_przestrzeni_nazw_przedmiotowa_dyskusji_2(frame,czy_uwzglednic_alternatywna_nazwe,i,"dyskusja"); </syntaxhighlight> Parametry funkcji: * {{Code|frame}} - tablica ramki tablicy transportu, * {{Code|czy_uwzglednic_alternatywna_nazwe}} - czy ma uwzględniać nazwę przestrzeni nazw domyślną szablonu, dostępne wartości: {{Code|false}}, w której nazwa domyślna nie jest uwzględniana wtedy, oraz {{Code|nil}} i {{Code|true}}, które oznaczają to samo, w tym jeżeli ona jest uwzględniana, wtedy jest brany parametr pierwszy dziecka, który musi istnieć przy takiej wartości tego parametru, tzn. {{Code|{{m|Pudełko|Nazwa przestrzeni nazw dyskusji 2|Szablon}}}}, nazwa domyślna zostanie zamieniona na dyskusji, a jeżeli jest już taka, to nie ma takiej zamiany, a jeśli nazwa uzyskana nazwy przestrzeni nazw jest w takim przypadku błędna, to brany jest ten element, a jeżeli nazwa domyślna jest błędna, czyli {{Code|{{m|Pudełko|Nazwa przestrzeni nazw dyskusji 2|Moja przestrzeń}}}}, wtedy funkcja zwraca stan błędu {{Code|(błąd)}}. * {{Code|i}} - numer zmiennej nazwy przestrzeni nazw. Funkcja wykorzystuje {{Code|{{sr|#p.Nazwa_przestrzeni_nazw_przedmiotowa_dyskusji_2(frame,...)|p=Pudełko/Pomocne}}}} do wyznaczania ogólnego nazwy przestrzeni nazw dla pozycji bazowej i numerkowej, tzn. dla pozycji: jeden, dwa, trzy,..., itd, i ich ogólnej. Parametr ramki tablicy transportu rodzica szablonu: * {{Code|nazwa przestrzeni nazw}}, {{Code|nazwa przestrzeni nazw 1}}, {{Code|nazwa przestrzeni nazw 2}}, {{Code|nazwa przestrzeni nazw 3}},..., {{Code|nazwa przestrzeni nazw i}} - nazwy przestrzeni nazw dla pozycji bazowej oraz zwykłej i ogólnej numerkowej, * {{Code|nazwa jednostki}}, {{Code|nazwa jednostki 1}}, {{Code|nazwa jednostki 2}}, {{Code|nazwa jednostki 3}},... - nazwy jednostek dla pozycji bazowej i numerkowej, * {{Code|typ jednostki}}, {{Code|typ jednostki 1}}, {{Code|typ jednostki 2}}, {{Code|typ jednostki 3}},..., {{Code|typ jednostki i}} - typy jednostek, którym odpowiadają pewne przestrzenie przedmiotowe, dla pozycji bazowej, numerkowej i ogólnej. Parametry ramki tablicy transportu dziecka: * Parametry dziecka są takie same jak rodzica dla funkcji pudełkowej plus tu wymienione, * {{Code|numer jednostki}} - jak parametr {{Code|i}} nie został ustawiony, to wtedy liczy się ta zmienna. Przykłady: <syntaxhighlight lang="mediawiki"> {{Nazwa szablonu|nazwa przestrzeni nazw=Wikibooks|nazwa przestrzeni nazw 1=Szablon|nazwa przestrzeni nazw i=|nazwa jednostki 2=Wikibooks:Strona}} </syntaxhighlight> W dziecku powiedzmy jest wywołanie, i szukamy nazwy przestrzeni nazw o numerze dwa, która została podana, ale istnieje za to jej wersji ogólna {{Code|nazwa przestrzeni nazw i}} i domyślna {{Code|nazwa przestrzeni nazw}}, ale wtedy dla tego numerkowego liczy się to ogólne z {{Code| i}}, a ponieważ ta nazwa jest pusta, więc będziemy liczyli nazwę przestrzeni nazw z {{Code|nazwa jednostki 2}}: <syntaxhighlight lang="mediawiki"> {{#invoke:Pudełko|Nazwa przestrzeni nazw dyskusji 2|numer jednostki=2}} </syntaxhighlight> Na podstawie powyższego przykładu otrzymamy wynik o schemacie, nie wyniku, bo tam nie ma zmiennej {{Code|nazwa przestrzeni nazw 1}}, ale jest {{Code|nazwa przestrzeni nazw i}}: <syntaxhighlight lang="mediawiki"> <!-- Ale nie "nazwa przestrzeni nazw 2", bo jej nie ma, ale za to istnieje "nazwa przestrzeni nazw i"; --> <!-- nazwa przestrzeni nazw 2=nazwa przestrzeni nazw i="", a nazwa jednostki 2="Wikibooks:Strona"; --> <!-- Czyli wynik: --> Dyskusja Wikibooks <!-- Widzimy, że wygenerowała się nazwa przestrzeni nazw, którą jest przestrzeń nieprogramowa, ale dyskusji projektu, wychodząca z nazwy jednostek w tym przypadku z "nazwa jednostki 2"; --> </syntaxhighlight> Nie jest brana w tym powyższym przykładzie zmienna {{Code|nazwa przestrzeni nazw}}, bo jej nie ma, ale za to jest {{Code|nazwa przestrzeni nazw i}}, bo ona występuje jako parametr domyślny ogólny dla parametrów numerkowych. Tytaj jest używana jest zmienna {{Code|nazwa jednostki 2}} do wygenerowania ostatecznego wyniku, bo jak można zauważyć, parametry przestrzenne wskazują na przestrzeń główną, a nazwy jednostek już nie. Przykłady w wikikodzie: * {{Code|{{m|Pudełko|Nazwa przestrzeni nazw dyskusji 2|numer jednostki{{=}}2}}}} → {{Tt|{{#invoke:Pudełko|Nazwa przestrzeni nazw dyskusji 2|numer jednostki=2}}}} * {{Code|{{m|Pudełko|Nazwa przestrzeni nazw dyskusji 2|Szablon|nazwa przestrzeni nazw i{{=}}Moja przestrzeń|numer jednostki{{=}}2}}}} → {{Tt|{{#invoke:Pudełko|Nazwa przestrzeni nazw dyskusji 2|Szablon|nazwa przestrzeni nazw i=Moja przestrzeń|numer jednostki=2}}}} * {{Code|{{m|Pudełko|Nazwa przestrzeni nazw dyskusji 2|nazwa przestrzeni nazw 2{{=}}|nazwa jednostki 2{{=}}Szablon:Strona|numer jednostki{{=}}2}}}} → {{Tt|{{#invoke:Pudełko|Nazwa przestrzeni nazw dyskusji 2|nazwa przestrzeni nazw 2=|nazwa jednostki 2=Szablon:Strona|numer jednostki=2}}}} * {{Code|{{m|Pudełko|Nazwa przestrzeni nazw dyskusji 2|nazwa przestrzeni nazw i{{=}}|nazwa jednostki 2{{=}}Szablon:Strona|numer jednostki{{=}}2}}}} → {{Tt|{{#invoke:Pudełko|Nazwa przestrzeni nazw dyskusji 2|nazwa przestrzeni nazw i=|nazwa jednostki 2=Szablon:Strona|numer jednostki=2}}}} * {{Code|{{m|Pudełko|Nazwa przestrzeni nazw dyskusji 2|Szablon|nazwa przestrzeni nazw{{=}}|nazwa jednostki 2{{=}}Wikibooks:Strona|numer jednostki{{=}}2}}}} → {{Tt|{{#invoke:Pudełko|Nazwa przestrzeni nazw dyskusji 2|Szablon|nazwa przestrzeni nazw=|nazwa jednostki 2=Dyskusja Wikibooks:Strona|numer jednostki=2}}}} Powyżej dla przykładu podano parametry nie w rodzicu w szablonie, tylko w dziecku, jeśli chodzi o parametry nazw przestrzeni nazw i nazw jednostek, ale ich się za to nie powinno podawać w tych ramach, tylko w szablonach, w których wywoływane są te ramki pudełek {{Code|{{m|Pudełko}}}}, ale tak tutaj tak zrobiono by było najłatwiej sprawdzić działanie tego typu funkcji. Analogicznie możemy podawać parametry typu jednostki, np.: wywołaniu modułowym {{Code|{{m|Pudełko|Nazwa przestrzeni nazw dyskusji 2|typ jednostki 2{{=}}Podręcznik|nazwa jednostki 2{{=}}Szablon:Strona|numer jednostki{{=}}2}}}} (ale wtedy jest brana przestrzeń nazw z nazwy jednostki), ale o tym więcej w rozdziałach {{Code|{{sr|# p["Dyskusyjny typ jednostki 3"](frame,i)|p=Pudełko}}}} w „{{sr|#Funkcje typu jednostki|p=Pudełko}}”, one definiują przestrzenie dyskusji, ale można użyć parametru dyskusji typu jednostki z obojętnie jaką wartością niepustą, czy pustą, czy nawet jej nie podamy, wtedy wyświetli się nazwa przestrzeni nazw dyskusji. Jeżeli typ jednostki wskazuje na przestrzeń nazw główną, wtedy się liczą parametry nazw jednostek. Również parametry typu jednostki nie powinno się podawać w dziecku w ramce, tylko w rodzicu w szablonie jako parametry, w którym ta ramka jest wywoływana, ale tutaj podano jedynie dla przykładu, jak najłatwiej sprawdzić działanie tych parametrów tej funkcji. Najpierw w funkcji nagłówku brane są parametry nazw przestrzeni nazw, a jeżeli ich nie ma, to parametry typu jednostki, a jeżeli nie ma lub parametry przestrzenne wskazują na przestrzeń główną, i nie ma nazwy jednostki, to generowane są nazwy tej funkcji na podstawie aktualnej strony. == Funkcje pełnych nazw jednostki == === {{Code|p["Pełna nazwa dyskusji jednostki"](frame,i)}} === === {{Code|p["Pełna nazwa przedmiotowa jednostki"](frame,i)}} === === {{Code|p["Pełna nazwa jednostki"](frame,i)}} === == Funkcje pełnych nazw jednostki drugiej wersji == === {{Code|p["Pełna nazwa dyskusji jednostki 2"](frame,i)}} === === {{Code|p["Pełna nazwa przedmiotowa jednostki 2"](frame,i)}} === === {{Code|p["Pełna nazwa jednostki 2"](frame,i)}} === == Funkcje pełnych nazw jednostki trzeciej wersji == === {{Code|p["Pełna nazwa dyskusji jednostki 3"](frame,i)}} === === {{Code|p["Pełna nazwa przedmiotowa jednostki 3"](frame,i)}} === === {{Code|p["Pełna nazwa jednostki 3"](frame,i)}} === == Funkcje nazw jednostki == === {{Code|p["Nazwa jednostki"](frame,i)}} === == Funkcje nazw jednostki drugiej wersji == === {{Code|p["Nazwa jednostki 2"](frame,i)}} === === {{Code|p["Nazwa przedmiotowa jednostki 2"](frame,i)}} === === {{Code|p["Nazwa dyskusji jednostki 2"](frame,i)}} === == Funkcje nazw przestrzeni nazw trzeciej wersji == === {{Code|p["Nazwa przestrzeni nazw 3"](frame,i)}} === Funkcja pisze nazwę przestrzeni nazw, niezależnie, czy to jest przedmiotowa, czy dyskusji, według, i nie zawsze tylko, podanej w zmiennej {{Code|nazwa przestrzeni nazw}} dla pozycja bazowej w podanych parametrach szablonu rodzicu ramki dziecka, lub dla innej pozycji należy parametr podawać w formie {{Code|nazwa przestrzeni nazw 1}}, {{Code|Nazwa przestrzeni nazw 3}}, {{Code|nazwa przestrzeni nazw 3}},..., lub te parametry można podać w postaci ogólnej {{Code|nazwa przestrzeni nazw i}}. W tej funkcji trzeba też podawać parametry nazwy jednostek {{Code|nazwa jednostki}}, {{Code|nazwa jednostki 1}}, {{Code|nazwa jednostki 2}}, {{Code|nazwa jednostki 3}},... Parametry podaje się w parametrach rodzica wywołania tej funkcji {{Code|{{m|Pudełko|Nazwa przestrzeni nazw 3}}}} (ale ich nie trzeba podawać w dziecku, ale można) i w parametrach dziecka, jeśli chodzi o zmienną {{Code|numer jednostki}}, czyli np.: {{Code|{{m|Pudełko|Nazwa przestrzeni nazw 3|numer jednostki{{=}}<jakaś liczba całkowita dodatnia>}}}}. Te parametry przestrzenne zamiast w rodzicu w szablonie można podać w ramce dziecka, wtedy parametry dziecka mają pierwszeństwo. Przestrzeń nazw z parametrów nazw przestrzennych bazowych (bez numerka) może odpowiadać wartości przestrzeni głównej, to wtedy odpowiednia przestrzeń nazw z parametru nazwy jednostki się nie liczy w tej funkcji, aby się liczyła należy użyć funkcji {{Code|{{sr|#p["Nazwa przestrzeni nazw 2"](frame,...)|p=Pudełko}}}}. W tym przypadku funkcja działa jak {{Code|{{sr|#p["Nazwa przestrzeni nazw"](frame,...)|p=Pudełko}}}}. Przestrzeń nazw z parametrów nazw przestrzennych numerkowych może odpowiadać wartości przestrzeni głównej, to wtedy odpowiednia przestrzeń nazw z parametru nazwy jednostki się liczy w tej funkcji, wtedy jest liczona nazwa przestrzeni nazw z tego parametru. Gdy parametry przestrzenne lub typ jednostki w drugim podejściu nie wskazują na przestrzeń główną, to wtedy działanie tej funkcji jest podobne do {{Code|{{sr|#p["Nazwa przestrzeni nazw 2"](frame,...)|p=Pudełko}}}}. Definicja skrótowa funkcji: <syntaxhighlight lang="lua"> p["Nazwa przestrzeni nazw 3"]=function(frame,czy_uwzglednic_alternatywna_nazwe,i)...end; </syntaxhighlight> Wtedy ciało funkcji tej, czyli jego definicja w środku, jest: <syntaxhighlight lang="lua"> -- Jest liczony numer parametru nazwy przestrzeni nazw, domyslnie chodzi tu o numer bazowy parametrów przestrzennych; local numer_jednostki=i or frame.args["numer jednostki"]; local liczba_numeru_jednostki=((numer_jednostki)and(tonumber(numer_jednostki)) or 0); local pudelko_pomocne_modul=require("Module:Pudełko/Pomocne"); -- Liczy nazwę przestrzeni nazw dyskusji na podstawie podanych parametrów; return pudelko_pomocne_modul.Uzyskanie_nazw_jednostki(frame,0,liczba_numeru_jednostki,nil,2); </syntaxhighlight> Parametry funkcji: * {{Code|frame}} - tablica ramki tablicy transportu, * {{Code|czy_uwzglednic_alternatywna_nazwe}} - czy ma uwzględniać nazwę przestrzeni nazw domyślną szablonu, dostępne wartości: {{Code|false}}, w której nazwa domyślna nie jest uwzględniana wtedy, oraz {{Code|nil}} i {{Code|true}}, które oznaczają to samo, w tym jeżeli ona jest uwzględniana, wtedy jest brany parametr pierwszy dziecka, który musi istnieć przy takiej wartości tego parametru, tzn. {{Code|{{m|Pudełko|Nazwa przestrzeni nazw 3|Szablon}}}}, a jeśli nazwa uzyskana nazwy przestrzeni nazw jest w takim przypadku błędna, to brany jest ten element, a jeżeli nazwa domyślna jest błędna, czyli {{Code|{{m|Pudełko|Nazwa przestrzeni nazw 3|Moja przestrzeń}}}}, wtedy funkcja zwraca stan błędu {{Code|(błąd)}}. * {{Code|i}} - numer zmiennej nazwy przestrzeni nazw. Funkcja wykorzystuje {{Code|{{sr|#p.Uzyskanie_nazw_jednostki(frame,...)|p=Pudełko/Pomocne}}}} do wyznaczania ogólnego nazwy przestrzeni nazw dla pozycji bazowej i numerkowej, tzn. dla pozycji: jeden, dwa, trzy,..., itd, i ich ogólnej. Parametr ramki tablicy transportu rodzica szablonu: * {{Code|nazwa przestrzeni nazw}}, {{Code|nazwa przestrzeni nazw 1}}, {{Code|Nazwa przestrzeni nazw 3}}, {{Code|nazwa przestrzeni nazw 3}},..., {{Code|nazwa przestrzeni nazw i}} - nazwy przestrzeni nazw dla pozycji bazowej oraz zwykłej i ogólnej numerkowej, * {{Code|nazwa jednostki}}, {{Code|nazwa jednostki 1}}, {{Code|nazwa jednostki 2}}, {{Code|nazwa jednostki 3}},... - nazwy jednostek dla pozycji bazowej i numerkowej, * {{Code|typ jednostki}}, {{Code|typ jednostki 1}}, {{Code|typ jednostki 2}}, {{Code|typ jednostki 3}},..., {{Code|typ jednostki i}} - typy jednostek, którym odpowiadają pewne przestrzenie przedmiotowe, dla pozycji bazowej, numerkowej i ogólnej, ** {{Code|dyskusja typu jednostki}}, {{Code|dyskusja typu jednostki 1}}, {{Code|dyskusja typ jednostki 2}}, {{Code|dyskusja typ jednostki 3}},..., {{Code|dyskusja typ jednostki i}} - czy dany typ jednostki ma przedstawiać, jeśli niepusta, przestrzeń dyskusji dla pozycji bazowej, numerkowej i ogólnej. Parametry ramki tablicy transportu dziecka: * Parametry dziecka są takie same jak rodzica dla funkcji pudełkowej plus tu wymienione, * {{Code|numer jednostki}} - jak parametr {{Code|i}} nie został ustawiony, to wtedy liczy się ta zmienna. Przykłady: <syntaxhighlight lang="mediawiki"> {{Nazwa szablonu 1|nazwa przestrzeni nazw=Wikibooks|nazwa przestrzeni nazw=|nazwa przestrzeni nazw i=|nazwa jednostki=Szablon:Strona}} ---- {{Nazwa szablonu 2|nazwa przestrzeni nazw=Wikibooks|nazwa przestrzeni nazw 1=Szablon|nazwa przestrzeni nazw i=|nazwa jednostki 2=Wikibooks:Strona}} </syntaxhighlight> W pierwszym wywołaniu {{Code|nazwa przestrzeni nazw}} jest puste, ale dla tego bazowego (bez numerka) szukamy przestrzeni nazw, a więc ta nazwa jest ostateczna. ---- W drugim wywołaniu w dziecku powiedzmy jest wywołanie, i szukamy nazwy przestrzeni nazw o numerze dwa, która została podana, ale istnieje za to jej wersji ogólna {{Code|nazwa przestrzeni nazw i}} i domyślna {{Code|nazwa przestrzeni nazw}}, ale wtedy dla tego numerkowego liczy się to ogólne z {{Code| i}}, a ponieważ ta nazwa jest pusta, więc będziemy liczyli nazwę przestrzeni nazw z {{Code|nazwa jednostki 2}}. Odpowiadająca powyższemu kodowi, powiedzmy wikikod, według ich zawartości, przedstawia się: <syntaxhighlight lang="mediawiki"> {{#invoke:Pudełko|Nazwa przestrzeni nazw 3}} ---- {{#invoke:Pudełko|Nazwa przestrzeni nazw 3|numer jednostki=2}} </syntaxhighlight> Na podstawie powyższego przykładu otrzymamy wynik o schemacie, nie wyniku, bo tam nie ma zmiennej {{Code|nazwa przestrzeni nazw 1}}, ale jest {{Code|nazwa przestrzeni nazw i}}: <syntaxhighlight lang="mediawiki"> <!-- nazwa przestrzeni nazw=""; --> <!-- Czyli wynik: --> <!-- wynik pusty --> <!-- Widzimy, że wygenerowała się nazwa przestrzeni nazw, którą jest przestrzeń nazw główna, jest ciągiem pustym: ""; --> ---- <!-- Ale nie "nazwa przestrzeni nazw 2", bo jej nie ma, ale za to istnieje "nazwa przestrzeni nazw i"; --> <!-- nazwa przestrzeni nazw 2=nazwa przestrzeni nazw i="", a nazwa jednostki 2="Wikibooks:Strona"; --> <!-- Czyli wynik: --> Wikibooks <!-- Widzimy, że wygenerowała się nazwa przestrzeni nazw, którą jest przestrzeń nieprogramowa, ale projektu, wychodząca z nazwy jednostek w tym przypadku z "nazwa jednostki 2"; --> </syntaxhighlight> Dla parametrów numerkowych nie jest brana w tym powyższym przykładzie zmienna {{Code|nazwa przestrzeni nazw 2}}, bo jej nie ma, ale za to jest {{Code|nazwa przestrzeni nazw i}}, bo ona występuje jako parametr domyślny ogólny dla parametrów numerkowych. Tytaj jest używana jest zmienna {{Code|nazwa jednostki 2}} do wygenerowania ostatecznego wyniku, bo jak można zauważyć, parametry przestrzenne wskazują na przestrzeń główną, a nazwy jednostek już nie. Dla parametrów bazowych mamy zmienną {{Code|nazwa przestrzeni nazw}}, ona jest pusta, więc to zostanie wziete do ostatecznego wyniku. Przykłady w wikikodzie: * {{Code|{{m|Pudełko|Nazwa przestrzeni nazw 3|Szablon|nazwa przestrzeni nazw{{=}}Moja przestrzeń|nazwa jednostki{{=}}Wikibooks:Strona}}}} → {{Tt|{{#invoke:Pudełko|Nazwa przestrzeni nazw 3|Szablon|nazwa przestrzeni nazw=Moja przestrzeń|nazwa jednostki=Wikibooks:Szablon}}}} * {{Code|{{m|Pudełko|Nazwa przestrzeni nazw 3|Szablon|nazwa przestrzeni nazw 2{{=}}Moja przestrzeń|nazwa jednostki 2{{=}}Wikibooks:Strona}|numer jednostki{{=}}2}}}} → {{Tt|{{#invoke:Pudełko|Nazwa przestrzeni nazw 3|Szablon|nazwa przestrzeni nazw 2=Moja przestrzeń|nazwa jednostki 2=Wikibooks:Szablon|numer jednostki=2}}}} * {{Code|{{m|Pudełko|Nazwa przestrzeni nazw 3|nazwa przestrzeni nazw{{=}}|nazwa jednostki{{=}}Wikibooks:Strona}}}} → {{Tt|{{#invoke:Pudełko|Nazwa przestrzeni nazw 3|nazwa przestrzeni nazw=|nazwa jednostki=Wikibooks:Szablon}}}} * {{Code|{{m|Pudełko|Nazwa przestrzeni nazw 3|nazwa przestrzeni nazw 2{{=}}|nazwa jednostki 2{{=}}Wikibooks:Strona|numer jednostki{{=}}2}}}} → {{Tt|{{#invoke:Pudełko|Nazwa przestrzeni nazw 3|nazwa przestrzeni nazw 2=|nazwa jednostki 2=Wikibooks:Szablon|numer jednostki=2}}}} Powyżej dla przykładu podano parametry nie w rodzicu w szablonie, tylko w dziecku, jeśli chodzi o parametry nazw przestrzeni nazw i nazw jednostek, ale ich się za to nie powinno podawać w tych ramach, tylko w szablonach, w których wywoływane są te ramki pudełek {{Code|{{m|Pudełko}}}}, ale tak tutaj tak zrobiono by było najłatwiej sprawdzić działanie tego typu funkcji. Analogicznie możemy podawać parametry typu jednostki, np.: wywołaniu modułowym {{Code|{{m|Pudełko|Nazwa przestrzeni nazw 3|typ jednostki 2{{=}}Podręcznik|nazwa jednostki 2{{=}}Szablon:Strona|numer jednostki{{=}}2}}}} (ale wtedy jest brana przestrzeń nazw z nazwy jednostki), ale o tym więcej w rozdziałach {{Code|{{sr|#p["Typ jednostki 3"](frame,i)|p=Pudełko}}}} w „{{sr|#Funkcje typu jednostki|p=Pudełko}}”, on definiuje przestrzenie przedmiotowe, ale można użyć parametru dyskusji typu jednostki z wartością niepustą, wtedy wyświetli się nazwa przestrzeni nazw dyskusji. Jeżeli typ jednostki bazowy wskazuje na przestrzeń nazw główną, wtedy się nie liczą parametry nazw jednostek, a na numerkowy, wtedy się liczy. Również parametry typu jednostki nie powinno się podawać w dziecku w ramce, tylko w rodzicu w szablonie jako parametry, w którym ta ramka jest wywoływana, ale tutaj podano jedynie dla przykładu, jak najłatwiej sprawdzić działanie tych parametrów tej funkcji. Najpierw w funkcji nagłówku brane są parametry nazw przestrzeni nazw, a jeżeli ich nie ma, to parametry typu jednostki, a jeżeli nie ma lub parametry przestrzenne wskazują na przestrzeń główną, i nie ma nazwy jednostki, to generowane są nazwy tej funkcji na podstawie aktualnej strony. === {{Code|p["Nazwa przedmiotowej przestrzeni nazw 3"](frame,i)}} === Funkcja pisze przedmiotową nazwę przestrzeni nazw jakikolwiek nazwy przestrzeni nazw (tzn. nazwę przedmiotową nazwy przestrzenie nazw, czyli nie dyskusji, zamieniana jest na nią samą, czyli identyfikator przestrzeni się nie zmienia, a dyskusji, nie przedmiotową, przekształca się na przedmiotową jej odpowiadającą, czyli w tym przypadku identyfikator przestrzeni zmniejsza się o numer mniej), według podanej w zmiennej {{Code|nazwa przestrzeni nazw}} dla pozycja bazowej w podanych parametrach szablonu rodzicu ramki dziecka, lub dla innej pozycji należy parametr podawać w formie {{Code|nazwa przestrzeni nazw 1}}, {{Code|nazwa przestrzeni nazw 2}}, {{Code|nazwa przestrzeni nazw 3}},..., lub te parametry można podać w postaci ogólnej {{Code|nazwa przestrzeni nazw i}}. Parametry podaje się w parametrach rodzica wywołania tej funkcji {{Code|{{m|Pudełko|Nazwa przedmiotowej przestrzeni nazw 3}}}} (ale ich nie trzeba podawać w dziecku, ale można) i w parametrach dziecka, jeśli chodzi o zmienną {{Code|numer jednostki}}, czyli np.: {{Code|{{m|Pudełko|Nazwa przedmiotowej przestrzeni nazw 3|numer jednostki{{=}}<jakaś liczba całkowita dodatnia>}}}}. Te parametry przestrzenne zamiast w rodzicu w szablonie można podać w ramce dziecka, wtedy parametry dziecka mają pierwszeństwo. Parametry przestrzenne mogą mogą być podane w postaci przestrzeni przedmiotowej lub dyskusji, ale ta funkcja zawsze ją zamienia na przedmiotową. Przestrzeń nazw z parametrów nazw przestrzennych bazowych (bez numerka) może odpowiadać wartości przestrzeni głównej, to wtedy odpowiednia przestrzeń nazw z parametru nazwy jednostki się nie liczy w tej funkcji, aby się liczyła należy użyć funkcji {{Code|{{sr|#p["Nazwa przedmiotowej przestrzeni nazw 2"](frame,...)|p=Pudełko}}}}. W tym przypadku funkcja działa jak {{Code|{{sr|#p["Nazwa przedmiotowej przestrzeni nazw"](frame,...)|p=Pudełko}}}}. Przestrzeń nazw z parametrów nazw przestrzennych numerkowych może odpowiadać wartości przestrzeni głównej, to wtedy odpowiednia przestrzeń nazw z parametru nazwy jednostki się liczy w tej funkcji, wtedy jest liczona nazwa przestrzeni nazw z tego parametru. Gdy parametry przestrzenne lub typ jednostki w drugim podejściu nie wskazują na przestrzeń główną, to wtedy działanie tej funkcji jest podobne do {{Code|{{sr|#p["Nazwa przedmiotowej przestrzeni nazw 2"](frame,...)|p=Pudełko}}}}. Definicja skrótowa funkcji: <syntaxhighlight lang="lua"> p["Nazwa przedmiotowej przestrzeni nazw 3"]=function(frame,czy_uwzglednic_alternatywna_nazwe,i)...end; </syntaxhighlight> Wtedy ciało funkcji tej, czyli jego definicja w środku, jest: <syntaxhighlight lang="lua"> -- Jest liczony numer parametru nazwy przestrzeni nazw, domyslnie chodzi tu o numer bazowy parametrów przestrzennych; local numer_jednostki=i or frame.args["numer jednostki"]; local liczba_numeru_jednostki=((numer_jednostki)and(tonumber(numer_jednostki)) or 0); local pudelko_pomocne_modul=require("Module:Pudełko/Pomocne"); -- Liczy nazwę przestrzeni nazw przedmiotową na podstawie podanych parametrów; return pudelko_pomocne_modul.Uzyskanie_nazw_jednostki(frame,1,liczba_numeru_jednostki,nil,1); </syntaxhighlight> Parametry funkcji: * {{Code|frame}} - tablica ramki tablicy transportu, * {{Code|czy_uwzglednic_alternatywna_nazwe}} - czy ma uwzględniać nazwę przestrzeni nazw domyślną szablonu, dostępne wartości: {{Code|false}}, w której nazwa domyślna nie jest uwzględniana wtedy, oraz {{Code|nil}} i {{Code|true}}, które oznaczają to samo, w tym jeżeli ona jest uwzględniana, wtedy jest brany parametr pierwszy dziecka, który musi istnieć przy takiej wartości tego parametru, tzn. {{Code|{{m|Pudełko|Nazwa przedmiotowej przestrzeni nazw 3|Dyskusja szablonu}}}} - ta nazwa domyślna zostanie zamieniona na przedmiotową, a jak ona by była przedmiotowa, to żadnej zamiany by nie było, a nazwa uzyskana z nazwy przestrzeni nazw z parametrów przestrzennych jest w takim przypadku błędna, to w takim razie brany jest ten parametr, a jeżeli ta nazwa domyślna jest błędna, czyli {{Code|{{m|Pudełko|Nazwa przedmiotowej przestrzeni nazw 3|Moja przestrzeń}}}}, wtedy funkcja zwraca stan błędu {{Code|(błąd)}}. * {{Code|i}} - numer zmiennej nazwy przestrzeni nazw. Funkcja wykorzystuje {{Code|{{sr|#p.Uzyskanie_nazw_jednostki(frame,...)|p=Pudełko/Pomocne}}}} do wyznaczania ogólnego nazwy przestrzeni nazw dla pozycji bazowej i numerkowej, tzn. dla pozycji: jeden, dwa, trzy,..., itd, i ich ogólnej. Parametr ramki tablicy transportu rodzica szablonu: * {{Code|nazwa przestrzeni nazw}}, {{Code|nazwa przestrzeni nazw 1}}, {{Code|nazwa przestrzeni nazw 2}}, {{Code|nazwa przestrzeni nazw 3}},..., {{Code|nazwa przestrzeni nazw i}} - nazwy przestrzeni nazw dla pozycji bazowej oraz zwykłej i ogólnej numerkowej, * {{Code|typ jednostki}}, {{Code|typ jednostki 1}}, {{Code|typ jednostki 2}}, {{Code|typ jednostki 3}},..., {{Code|typ jednostki i}} - typy jednostek, którym odpowiadają pewne przestrzenie przedmiotowe, dla pozycji bazowej, numerkowej i ogólnej. Parametry ramki tablicy transportu dziecka: * Parametry dziecka są takie same jak rodzica dla funkcji pudełkowej plus tu wymienione, * {{Code|numer jednostki}} - jak parametr {{Code|i}} nie został ustawiony, to wtedy liczy się ta zmienna. Przykłady: <syntaxhighlight lang="mediawiki"> {{Nazwa szablonu 1|nazwa przestrzeni nazw=Wikibooks|nazwa przestrzeni nazw=|nazwa przestrzeni nazw i=|nazwa jednostki=Dyskusja Wikibooks:Strona}} ---- {{Nazwa szablonu 2|nazwa przestrzeni nazw=Wikibooks|nazwa przestrzeni nazw 1=Szablon|nazwa przestrzeni nazw i=|nazwa jednostki 2=Dyskusja Wikibooks:Strona}} </syntaxhighlight> W pierwszym wywołaniu {{Code|nazwa przestrzeni nazw}} jest puste, ale dla tego bazowego (bez numerka) szukamy przestrzeni nazw, a więc ta nazwa jest ostateczna. ---- W drugim wywołaniu w dziecku powiedzmy jest wywołanie, i szukamy nazwy przestrzeni nazw o numerze dwa, która została podana, ale istnieje za to jej wersji ogólna {{Code|nazwa przestrzeni nazw i}} i domyślna {{Code|nazwa przestrzeni nazw}}, ale wtedy dla tego numerkowego liczy się to ogólne z {{Code| i}}, a ponieważ ta nazwa jest pusta, więc będziemy liczyli nazwę przestrzeni nazw z {{Code|nazwa jednostki 2}}. Odpowiadająca powyższemu kodowi, powiedzmy wikikod, według ich zawartości, przedstawia się: <syntaxhighlight lang="mediawiki"> {{#invoke:Pudełko|Nazwa przedmiotowej przestrzeni nazw 3}} ---- {{#invoke:Pudełko|Nazwa przedmiotowej przestrzeni nazw 3|numer jednostki=2}} </syntaxhighlight> Na podstawie powyższego przykładu otrzymamy wynik o schemacie, nie wyniku, bo tam nie ma zmiennej {{Code|nazwa przestrzeni nazw 1}}, ale jest {{Code|nazwa przestrzeni nazw i}}: <syntaxhighlight lang="mediawiki"> <!-- nazwa przestrzeni nazw=""; --> <!-- Czyli wynik: --> <!-- wynik pusty --> <!-- Widzimy, że wygenerowała się nazwa przestrzeni nazw, którą jest przestrzeń nazw główna, jest ciągiem pustym: ""; --> ---- <!-- Ale nie "nazwa przestrzeni nazw 2", bo jej nie ma, ale za to istnieje "nazwa przestrzeni nazw i"; --> <!-- nazwa przestrzeni nazw 2=nazwa przestrzeni nazw i="", a nazwa jednostki 2="Dyskusja Wikibooks:Strona"; --> <!-- Czyli wynik: --> Wikibooks <!-- Widzimy, że wygenerowała się nazwa przestrzeni nazw, którą jest przestrzeń nieprogramowa, ale projektu, wychodząca z nazwy jednostek w tym przypadku z "nazwa jednostki 2"; --> </syntaxhighlight> Dla parametrów numerkowych nie jest brana w tym powyższym przykładzie zmienna {{Code|nazwa przestrzeni nazw 2}}, bo jej nie ma, ale za to jest {{Code|nazwa przestrzeni nazw i}}, bo ona występuje jako parametr domyślny ogólny dla parametrów numerkowych. Tytaj jest używana jest zmienna {{Code|nazwa jednostki 2}} do wygenerowania ostatecznego wyniku, bo jak można zauważyć, parametry przestrzenne wskazują na przestrzeń główną, a nazwy jednostek już nie. Dla parametrów bazowych mamy zmienną {{Code|nazwa przestrzeni nazw}}, ona jest pusta, więc to zostanie wziete do ostatecznego wyniku. Przykłady w wikikodzie: * {{Code|{{m|Pudełko|Nazwa przedmiotowej przestrzeni nazw 3|Dyskusja szablonu|nazwa przestrzeni nazw{{=}}Moja przestrzeń|nazwa jednostki{{=}}Dyskusja Wikibooks:Strona}}}} → {{Tt|{{#invoke:Pudełko|Nazwa przedmiotowej przestrzeni nazw 3|Dyskusja szablonu|nazwa przestrzeni nazw=Moja przestrzeń||nazwa jednostki=Dyskusja Wikibooks:Szablon}}}} * {{Code|{{m|Pudełko|Nazwa przedmiotowej przestrzeni nazw 3|Dyskusja szablonu|nazwa przestrzeni nazw 2{{=}}Moja przestrzeń|nazwa jednostki 2{{=}}Dyskusja Wikibooks:Strona|numer jednostki{{=}}2}}}} → {{Tt|{{#invoke:Pudełko|Nazwa przedmiotowej przestrzeni nazw 3|Dyskusja szablonu|nazwa przestrzeni nazw 2=Moja przestrzeń||nazwa jednostki 2=Dyskusja Wikibooks:Szablon|numer jednostki=2}}}} * {{Code|{{m|Pudełko|Nazwa przedmiotowej przestrzeni nazw 3|nazwa przestrzeni nazw{{=}}|nazwa jednostki{{=}}Dyskusja Wikibooks:Strona}}}} → {{Tt|{{#invoke:Pudełko|Nazwa przedmiotowej przestrzeni nazw 3|nazwa przestrzeni nazw=|nazwa jednostki=Dyskusja Wikibooks:Szablon}}}} * {{Code|{{m|Pudełko|Nazwa przedmiotowej przestrzeni nazw 3|nazwa przestrzeni nazw 2{{=}}|nazwa jednostki 2{{=}}Dyskusja Wikibooks:Strona|numer jednostki{{=}}2}}}} → {{Tt|{{#invoke:Pudełko|Nazwa przedmiotowej przestrzeni nazw 3|nazwa przestrzeni nazw 2=|nazwa jednostki 2=Dyskusja Wikibooks:Szablon|numer jednostki=2}}}} Powyżej dla przykładu podano parametry nie w rodzicu w szablonie, tylko w dziecku, jeśli chodzi o parametry nazw przestrzeni nazw, ale ich się za to nie powinno podawać w tych ramach, tylko w szablonach, w których wywoływane są te ramki pudełek {{Code|{{m|Pudełko}}}}, ale tak tutaj tak zrobiono by było najłatwiej sprawdzić działanie tego typu funkcji. Analogicznie możemy podawać parametry typu jednostki, np.: wywołaniu modułowym {{Code|{{m|Pudełko|Nazwa przedmiotowej przestrzeni nazw 3|typ jednostki 2{{=}}strona szablonu|numer jednostki{{=}}2}}}}, ale o tym więcej w rozdziałach {{Code|{{sr|# p["Przedmiotowy typ jednostki 3"](frame,i)|p=Pudełko}}}} w „{{sr|#Funkcje typu jednostki|p=Pudełko}}”, ale wtedy ta sama nazwa przestrzeni nazw reprezentowana przez {{Parametr|typ jednostki 2|strona szablonu}}, jest zamieniana na to samo, lepiej jest tutaj używać parametrów przestrzennych nazw niż typu jednostki, bo typ jednostki ma taką samą wartość dla przestrzeni przedmiotowej, co dyskusji. Tutaj parametr dyskusji typu jednostki bazowy i numerkowy ogólny, czy szczegółowy, nie gra roli, bo nawet, gdy wygenerujemy nazwę przestrzeni dyskusji za pomoca tego parametru, to i tak otrzymamy na samym końcu jego nazwę przedmiotową. Jeżeli typ jednostki bazowy wskazuje na przestrzeń nazw główną, wtedy się nie liczą parametry nazw jednostek, a na numerkowy, wtedy się liczy. Również parametry typu jednostki nie powinno się podawać w dziecku w ramce, tylko w rodzicu w szablonie jako parametry, w którym ta ramka jest wywoływana, ale tutaj podano jedynie dla przykładu, jak najłatwiej sprawdzić działanie tych parametrów tej funkcji. Najpierw w funkcji nagłówku brane są parametry nazw przestrzeni nazw, a jeżeli ich nie ma, to parametry typu jednostki, a jeżeli nie ma, to generowane są nazwy na podstawie aktualnego modułu. === {{Code|p["Nazwa przestrzeni nazw dyskusji 3"](frame,i)}} === Funkcja pisze nazwę przestrzeni nazw dyskusji jakikolwiek nazwy przestrzeni nazw (tzn. nazwę dyskusji nazwy przestrzenie nazw, czyli nie przedmiotowej, zamieniana jest na nią samą, czyli identyfikator przestrzeni się nie zmienia, a przedmiotową, nie dyskusji, przekształca się na dyskusji jej odpowiadającą, czyli w tym przypadku identyfikator przestrzeni zwiększa się o numer więcej), według, i nie zawsze tylko, podanej w zmiennej {{Code|nazwa przestrzeni nazw}} dla pozycja bazowej w podanych parametrach szablonu rodzicu ramki dziecka, lub dla innej pozycji należy parametr podawać w formie {{Code|nazwa przestrzeni nazw 1}}, {{Code|nazwa przestrzeni nazw 2}}, {{Code|nazwa przestrzeni nazw 3}},..., lub te parametry można podać w postaci ogólnej {{Code|nazwa przestrzeni nazw i}}. W tej funkcji trzeba też podawać parametry nazwy jednostek {{Code|nazwa jednostki}}, {{Code|nazwa jednostki 1}}, {{Code|nazwa jednostki 2}}, {{Code|nazwa jednostki 3}},... Parametry podaje się w parametrach rodzica wywołania tej funkcji {{Code|{{m|Pudełko|Nazwa przestrzeni nazw dyskusji 3}}}} (ale ich nie trzeba podawać w dziecku, ale można) i w parametrach dziecka, jeśli chodzi o zmienną {{Code|numer jednostki}}, czyli np.: {{Code|{{m|Pudełko|Nazwa przestrzeni nazw dyskusji 3|numer jednostki{{=}}<jakaś liczba całkowita dodatnia>}}}}. Te parametry przestrzenne zamiast w rodzicu w szablonie można podać w ramce dziecka, wtedy parametry dziecka mają pierwszeństwo. Przestrzeń nazw z parametrów nazw przestrzennych bazowych (bez numerka) może odpowiadać wartości przestrzeni głównej, to wtedy odpowiednia przestrzeń nazw z parametru nazwy jednostki się nie liczy w tej funkcji, aby się liczyła należy użyć funkcji {{Code|{{sr|#p["Nazwa przestrzeni nazw dyskusji 2"](frame,...)|p=Pudełko}}}}. W tym przypadku funkcja działa jak {{Code|{{sr|#p["Nazwa przestrzeni nazw dyskusji"](frame,...)|p=Pudełko}}}}. Przestrzeń nazw z parametrów nazw przestrzennych numerkowych może odpowiadać wartości przestrzeni głównej, to wtedy odpowiednia przestrzeń nazw z parametru nazwy jednostki się liczy w tej funkcji, wtedy jest liczona nazwa przestrzeni nazw z tego parametru. Gdy parametry przestrzenne lub typ jednostki w drugim podejściu nie wskazują na przestrzeń główną, to wtedy działanie tej funkcji jest podobne do {{Code|{{sr|#p["Nazwa przestrzeni nazw dyskusji 2"](frame,...)|p=Pudełko}}}}. Definicja skrótowa funkcji: <syntaxhighlight lang="lua"> p["Nazwa przestrzeni nazw dyskusji 3"]=function(frame,czy_uwzglednic_alternatywna_nazwe,i)...end; </syntaxhighlight> Wtedy ciało funkcji tej, czyli jego definicja w środku, jest: <syntaxhighlight lang="lua"> -- Jest liczony numer parametru nazwy przestrzeni nazw, domyslnie chodzi tu o numer bazowy parametrów przestrzennych; local numer_jednostki=i or frame.args["numer jednostki"]; local liczba_numeru_jednostki=((numer_jednostki)and(tonumber(numer_jednostki)) or 0); local pudelko_pomocne_modul=require("Module:Pudełko/Pomocne"); -- Liczy nazwę przestrzeni nazw dyskusji na podstawie podanych parametrów; return pudelko_pomocne_modul.Uzyskanie_nazw_jednostki(frame,2,liczba_numeru_jednostki,nil,1); </syntaxhighlight> Parametry funkcji: * {{Code|frame}} - tablica ramki tablicy transportu, * {{Code|czy_uwzglednic_alternatywna_nazwe}} - czy ma uwzględniać nazwę przestrzeni nazw domyślną szablonu, dostępne wartości: {{Code|false}}, w której nazwa domyślna nie jest uwzględniana wtedy, oraz {{Code|nil}} i {{Code|true}}, które oznaczają to samo, w tym jeżeli ona jest uwzględniana, wtedy jest brany parametr pierwszy dziecka, który musi istnieć przy takiej wartości tego parametru, tzn. {{Code|{{m|Pudełko|Nazwa przestrzeni nazw dyskusji 3|Szablon}}}}, nazwa domyślna zostatnie zamieniona na dyskusji, a jeśli jest już taka, to takiej transfomacji nie ma, a jeśli nazwa uzyskana nazwy przestrzeni nazw jest w takim przypadku błędna, a jeżeli nazwa domyślna jest błędna, czyli {{Code|{{m|Pudełko|Nazwa przestrzeni nazw dyskusji 3|Moja przestrzeń}}}}, wtedy funkcja zwraca stan błędu {{Code|(błąd)}}. * {{Code|i}} - numer zmiennej nazwy przestrzeni nazw. Funkcja wykorzystuje {{Code|{{sr|#p.Uzyskanie_nazw_jednostki(frame,...)|p=Pudełko/Pomocne}}}} do wyznaczania ogólnego nazwy przestrzeni nazw dla pozycji bazowej i numerkowej, tzn. dla pozycji: jeden, dwa, trzy,..., itd, i ich ogólnej. Parametr ramki tablicy transportu rodzica szablonu: * {{Code|nazwa przestrzeni nazw}}, {{Code|nazwa przestrzeni nazw 1}}, {{Code|nazwa przestrzeni nazw 2}}, {{Code|nazwa przestrzeni nazw 3}},..., {{Code|nazwa przestrzeni nazw i}} - nazwy przestrzeni nazw dla pozycji bazowej oraz zwykłej i ogólnej numerkowej, * {{Code|nazwa jednostki}}, {{Code|nazwa jednostki 1}}, {{Code|nazwa jednostki 2}}, {{Code|nazwa jednostki 3}},... - nazwy jednostek dla pozycji bazowej i numerkowej, * {{Code|typ jednostki}}, {{Code|typ jednostki 1}}, {{Code|typ jednostki 2}}, {{Code|typ jednostki 3}},..., {{Code|typ jednostki i}} - typy jednostek, którym odpowiadają pewne przestrzenie przedmiotowe, dla pozycji bazowej, numerkowej i ogólnej. Parametry ramki tablicy transportu dziecka: * Parametry dziecka są takie same jak rodzica dla funkcji pudełkowej plus tu wymienione, * {{Code|numer jednostki}} - jak parametr {{Code|i}} nie został ustawiony, to wtedy liczy się ta zmienna. Przykłady: <syntaxhighlight lang="mediawiki"> {{Nazwa szablonu 1|nazwa przestrzeni nazw=Wikibooks|nazwa przestrzeni nazw=|nazwa przestrzeni nazw i=|nazwa jednostki=Szablon:Strona}} ---- {{Nazwa szablonu 2|nazwa przestrzeni nazw=Wikibooks|nazwa przestrzeni nazw 1=Szablon|nazwa przestrzeni nazw i=|nazwa jednostki 2=Wikibooks:Strona}} </syntaxhighlight> W pierwszym wywołaniu {{Code|nazwa przestrzeni nazw}} jest puste, ale dla tego bazowego (bez numerka) szukamy przestrzeni nazw, a więc ta nazwa jest ostateczna. ---- W drugim wywołaniu w dziecku powiedzmy jest wywołanie, i szukamy nazwy przestrzeni nazw o numerze dwa, która została podana, ale istnieje za to jej wersji ogólna {{Code|nazwa przestrzeni nazw i}} i domyślna {{Code|nazwa przestrzeni nazw}}, ale wtedy dla tego numerkowego liczy się to ogólne z {{Code| i}}, a ponieważ ta nazwa jest pusta, więc będziemy liczyli nazwę przestrzeni nazw z {{Code|nazwa jednostki 2}}. Odpowiadająca powyższemu kodowi, powiedzmy wikikod, według ich zawartości, przedstawia się: <syntaxhighlight lang="mediawiki"> {{#invoke:Pudełko|Nazwa przestrzeni nazw 3}} ---- {{#invoke:Pudełko|Nazwa przestrzeni nazw 3|numer jednostki=2}} </syntaxhighlight> Na podstawie powyższego przykładu otrzymamy wynik o schemacie, nie wyniku, bo tam nie ma zmiennej {{Code|nazwa przestrzeni nazw 1}}, ale jest {{Code|nazwa przestrzeni nazw i}}: <syntaxhighlight lang="mediawiki"> <!-- nazwa przestrzeni nazw=""; --> <!-- Czyli wynik: --> Dyskusja <!-- Widzimy, że wygenerowała się nazwa przestrzeni nazw, którą jest przestrzeń nazw niegłówna, jest ciągiem niepustym; --> ---- <!-- Ale nie "nazwa przestrzeni nazw 2", bo jej nie ma, ale za to istnieje "nazwa przestrzeni nazw i"; --> <!-- nazwa przestrzeni nazw 2=nazwa przestrzeni nazw i="", a nazwa jednostki 2="Wikibooks:Strona"; --> <!-- Czyli wynik: --> Dyskusja Wikibooks <!-- Widzimy, że wygenerowała się nazwa przestrzeni nazw, którą jest przestrzeń nieprogramowa, ale projektu, wychodząca z nazwy jednostek w tym przypadku z "nazwa jednostki 2"; --> </syntaxhighlight> Dla parametrów numerkowych nie jest brana w tym powyższym przykładzie zmienna {{Code|nazwa przestrzeni nazw 2}}, bo jej nie ma, ale za to jest {{Code|nazwa przestrzeni nazw i}}, bo ona występuje jako parametr domyślny ogólny dla parametrów numerkowych. Tytaj jest używana jest zmienna {{Code|nazwa jednostki 2}} do wygenerowania ostatecznego wyniku, bo jak można zauważyć, parametry przestrzenne wskazują na przestrzeń główną, a nazwy jednostek już nie. Dla parametrów bazowych mamy zmienną {{Code|nazwa przestrzeni nazw}}, ona jest pusta, więc to zostanie wziete do ostatecznego wyniku. Przykłady w wikikodzie: * {{Code|{{m|Pudełko|Nazwa przestrzeni nazw dyskusji 3|Szablon|nazwa przestrzeni nazw{{=}}Moja przestrzeń|nazwa jednostki{{=}}Wikibooks:Strona}}}} → {{Tt|{{#invoke:Pudełko|Nazwa przestrzeni nazw dyskusji 3|Szablon|nazwa przestrzeni nazw=Moja przestrzeń|nazwa jednostki=Wikibooks:Szablon}}}} * {{Code|{{m|Pudełko|Nazwa przestrzeni nazw dyskusji 3|Szablon|nazwa przestrzeni nazw 2{{=}}Moja przestrzeń|nazwa jednostki 2{{=}}Wikibooks:Strona|numer jednostki{{=}}2}}}} → {{Tt|{{#invoke:Pudełko|Nazwa przestrzeni nazw dyskusji 3|Szablon|nazwa przestrzeni nazw 2=Moja przestrzeń|nazwa jednostki 2=Wikibooks:Szablon|numer jednostki=2}}}} * {{Code|{{m|Pudełko|Nazwa przestrzeni nazw dyskusji 3|nazwa przestrzeni nazw{{=}}|nazwa jednostki{{=}}Wikibooks:Strona}}}} → {{Tt|{{#invoke:Pudełko|Nazwa przestrzeni nazw dyskusji 3|nazwa przestrzeni nazw=|nazwa jednostki=Wikibooks:Szablon}}}} * {{Code|{{m|Pudełko|Nazwa przestrzeni nazw dyskusji 3|nazwa przestrzeni nazw 2{{=}}|nazwa jednostki 2{{=}}Wikibooks:Strona|numer jednostki{{=}}2}}}} → {{Tt|{{#invoke:Pudełko|Nazwa przestrzeni nazw dyskusji 3|nazwa przestrzeni nazw 2=|nazwa jednostki 2=Wikibooks:Szablon|numer jednostki=2}}}} Powyżej dla przykładu podano parametry nie w rodzicu w szablonie, tylko w dziecku, jeśli chodzi o parametry nazw przestrzeni nazw i nazw jednostek, ale ich się za to nie powinno podawać w tych ramach, tylko w szablonach, w których wywoływane są te ramki pudełek {{Code|{{m|Pudełko}}}}, ale tak tutaj tak zrobiono by było najłatwiej sprawdzić działanie tego typu funkcji. Analogicznie możemy podawać parametry typu jednostki, np.: wywołaniu modułowym {{Code|{{m|Pudełko|Nazwa przestrzeni nazw dyskusji 3|typ jednostki 2{{=}}Podręcznik|nazwa jednostki 2{{=}}Szablon:Strona|numer jednostki{{=}}2}}}} (ale wtedy jest brana przestrzeń nazw z nazwy jednostki), ale o tym więcej w rozdziałach {{Code|{{sr|# p["Dyskusyjny typ jednostki 3"](frame,i)|p=Pudełko}}}} w „{{sr|#Funkcje typu jednostki|p=Pudełko}}”, one definiują przestrzenie dyskusji, ale można użyć parametru dyskusji typu jednostki z obojętnie jaką wartością niepustą, czy pustą, czy nawet jej nie podamy, wtedy wyświetli się nazwa przestrzeni nazw dyskusji. Jeżeli typ jednostki bazowy wskazuje na przestrzeń nazw główną, wtedy się nie liczą parametry nazw jednostek, a na numerkowy, wtedy się liczy. Również parametry typu jednostki nie powinno się podawać w dziecku w ramce, tylko w rodzicu w szablonie jako parametry, w którym ta ramka jest wywoływana, ale tutaj podano jedynie dla przykładu, jak najłatwiej sprawdzić działanie tych parametrów tej funkcji. Najpierw w funkcji nagłówku brane są parametry nazw przestrzeni nazw, a jeżeli ich nie ma, to parametry typu jednostki, a jeżeli nie ma lub parametry przestrzenne wskazują na przestrzeń główną, i nie ma nazwy jednostki, to generowane są nazwy tej funkcji na podstawie aktualnej strony. == Funkcje nazw jednostki trzeciej wersji == === {{Code|p["Nazwa jednostki 3"](frame,i)}} === === {{Code|p["Nazwa przedmiotowa jednostki 3"](frame,i)}} === === {{Code|p["Nazwa dyskusji jednostki 3"](frame,i)}} === == Funkcje typu jednostki == === {{Code|p["Typ jednostki"](frame,i)}} === === {{Code|p["Typ jednostki 2"](frame,i)}} === === {{Code|p["Typ jednostki 3"](frame,i)}} === === Funkcje typu jednostki przedmiotowe === ==== {{Code|p["Przedmiotowy typ jednostki"](frame,i)}} ==== ==== {{Code|p["Przedmiotowy typ jednostki 2"](frame,i)}} ==== ==== {{Code|p["Przedmiotowy typ jednostki 3"](frame,i)}} ==== === Fukcje typu jednostki dyskusji === ==== {{Code|p["Dyskusyjny typ jednostki"](frame,i)}} ==== ==== {{Code|p["Dyskusyjny typ jednostki 2"](frame,i)}} ==== ==== {{Code|p["Dyskusyjny typ jednostki 3"](frame,i)}} ==== == Funkcje chech pudełka == === {{Code|p["Cecha pudełka"](frame)}} === === {{Code|p["Przedmiotowa cecha pudełka"](frame)}} === === {{Code|p["Dyskusyjna cecha pudełka"](frame)}} === == Fukcje ogólnego pudełka == === {{Code|p["Ogólne pudełko"](frame)}} === == Funkcje ogólne == === {{Code|p["Tekst pudełka"](frame)}} === == Funkcje błędów pudełka == === {{Code|p["Błędy pudełka"](frame)}} === === {{Code|p["Przedmiotowe błędy pudełka"](frame)}} === === {{Code|p["Dyskusyjne błędy pudełka"](frame)}} === == Funkcje nazw stron == === {{Code|p["Nazwa strony głównej projektu"](frame,i)}} === === {{Code|p["Nazwa strony głównej dla dzieci projektu"](frame,i)}} === == Funkcje kodów == === {{Code|p["Kod języka"](frame,i)}} === === {{Code|p["Kod projektu"](frame,i)}} === === {{Code|p["Klucz projektu"](frame,i)}} === == Funkcje wiki == === {{Code|p["Inny niż język bieżący wiki"](frame)}} === === {{Code|p["Inne niż lokalne wiki"](frame)}} === === {{Code|p["Inne niż bieżące wiki"](frame)}} === == Funkcje typów parametrów, czy podane je == === {{Code|p["Podano parametry nienazwane"](frame)}} === === {{Code|p["Podano parametry numerowane"](frame)}} === === {{Code|p["Podano parametry nazwane"](frame)}} === == Funkcje kodów tego projektu == === {{Code|p["Kod projektu tego projektu"](frame)}} === === {{Code|p["Kod języka tego projektu"](frame)}} === === {{Code|p["Klucz projektu tego projektu"](frame)}} === == Funkcje stron == === {{Code|p["Strona główna tego projektu"](frame)}} === === {{Code|p["Strona główna dla dzieci tego projektu"](frame)}} === == Funkcje nazw stron drugiej wersji == === {{Code|p["Nazwa strony głównej dla dzieci projektu 2"](frame)}} === === {{Code| p["Nazwa strony głównej projektu 2"](frame)}} === {{BrClear}} <noinclude><!-- -->{{ProstaStronaKoniec}}<!-- -->{{Kategoria|Opisy funkcji, w Lua w Scribunto, w modułach}}<!-- --></noinclude> qu0xe1edt7y4bt9bw3oljf4s2pse2t4 540461 540460 2026-04-24T06:05:50Z Persino 2851 540461 wikitext text/x-wiki <noinclude>{{ProstaStronaStart | nagłówek = {{Podrozdział|{{ld2|Pudełko}}|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 pudelko_modul=require("Module:Pudełko"); </syntaxhighlight> dzięki, któremu można wypisywać funkcje należącego do niego. Posługuje się na parametrach pudełkowych {{Parametr|nazwa przestrzeni nazw}} (czy też bez numerka {{Parametr|nazwa przestrzeni nazw i}} dla tego numerowanego) lub te z numerkiem po jednej spacji w nich (ale nie dla tego z końcówką {{Code| i}}) mogą zostać użyte jako parametry szablonu. Moduł {{Code|{{ld2|Pudełko}}}} przedstawia funkcje nazw w oparciu o funkcje nazw {{Code|{{ld2|Nazwy}}}}, generuje on nazwy za pomocą parametrów pudełkowych podanych poniżej. Parametr {{Parametr|nazwa jednostki}} (lub parametr {{Parametr|cel}} dla numerka tego pierwszego, tego alternatywnego), lub te z numerkiem po jednej spacji w nazwie parametru, albo numerowane numerkami {{Code|1}}, {{Code|2}},..., mogą zostać użyte jako parametry szablonu. Parametry określające rodzaj jednostki {{Parametr|typ jednostki}} z {{Parametr|dyskusja typu jednostki}}, itp. w wersjach z numerkiem po jednej spacji w nich mogą zostać użyte jako parametry szablonu. A te tymi numerowanymi liczbami naturalnymi {{Tt|nazwy jednostki}} od jedynki wzwyż poprzez szablon, w którym są one użyte, one też mogą być użyte z dwukropkiem, te numerowane, na samym początku nazwy, wtedy one są traktowane jako pełne nazwy strony, i wtedy one nie zostaną z interpretowane, że do nich trzeba użyć parametr odpowiedni z nazwą przetrzeni nazw z tego numerowanego, czy ogólny, aby utworzyć znów inną pełną nazwę strony dla tego numerka. Zestawienie: * {{Code|nazwa przestrzeni nazw}} i {{Code|nazwa przestrzeni nazw i}} (ogólna nazwa przestrzeni nazw dla wszystkich numerków, i tych numerowanych jednostek) - i to pierwsze z numerkiem, tzn. {{Code|nazwa przestrzeni nazw 1}}, {{Code|nazwa przestrzeni nazw 2}}, ..., * {{Code|nazwa jednostki}} - i te z numerkiem: {{Code|nazwa jednostki 1}}, {{Code|nazwa jednostki 2}}, ..., lub gdy jest zamiast tego parametrem numerowany, {{Code|1}}, {{Code|2}},..., który dla tego pierwszego może być uznany jako: {{Code|cel}} {{=}} {{Code|1}}, * {{Code|typ jednostki}} (parametr bazowy) i {{Code|typ jednostki i}} (parametr domyślny numerkowy) - i te z numerkiem: {{Code|typ jednostki 1}}, {{Code|typ jednostki 2}}, ..., tzn. gdy chcemy określić z jakim typem jednostki mamy do czynienia w zależności do jakiej przestrzeni nazw należy, a w danej, czy jest on np. programowy, czy tylko jest opisem, jak to bywa w szablonach {{Np|Template|link=tak}}, podobnie jest w przypadku {{Np|Module|link=tak}}, czy jak jest w innych przestrzeniach nazw, ** {{Code|dyskusja typu jednostki}} (parametr bazowy) i {{Code|dyskusja typu jednostki i}} (parametr domyślny numerkowy) - i te z numerkiem: {{Code|dyskusja typu jednostki 1}}, {{Code|dyskusja typu jednostki 2}}, ..., gdy chcemy określić wartością niepustą,że chodzi tutaj o typ jednostki. == {{Code|p.CzyNiepoprawnaNazwa(nazwa_jednostki)}} == Funkcja sprawdzajaca, czy jest poprawnie podana nazwa jednostki, czy ma poprawną nazwę. Znakami tymi, z których nie powinna składać się nazwa jest {{Code|<nowiki>{}<>|[]#\n</nowiki>}} i dodatkowo znak {{Code|&#127;}} (kod {{Code|{{Nowiki|&#127;}}}}). Też nie może składać się z trzech znaków tyldy, tzn. {{Code|<nowiki>~~~</nowiki>}}. Również w swojej budowie nie może składać się ze kodów {{Strong|HTML}} literowych o wzorze {{Code|{{Nowiki|&(%a+);}}}}. Natomiast może składać się z {{Code|{{Nowiki|&#(%d+);}}}} i {{Code|{{Nowiki|&#x(%x+);}}}}, ale w pierw te kody muszą być zamienione na normalne znaki. Skrótowa definicja funkcji: <syntaxhighlight lang="lua"> function p.CzyNiepoprawnaNazwa(nazwa_jednostki)...end; </syntaxhighlight> Wtedy ciało funkcji tej, czyli jego definicja w środku, jest: <syntaxhighlight lang="lua"> -- Moduł: "Moduł:Html/dane", służy do ładowania znaku o kodzie HTML "&#127;"; local html_dane_modul=mw.loadData("Module:Html/dane"); return mw.ustring.match(nazwa_jednostki,"[{}<>|%[%]#\n"..html_dane_modul.znak_127.."]+") or mw.ustring.match(nazwa_jednostki,"~~~") or mw.ustring.match(nazwa_jednostki,"&(%a+);"); </syntaxhighlight> Parametry: * {{Code|nazwa_jednostki}} - nazwa jednostki do sprawdzenia. Przykłady: <syntaxhighlight lang="lua"> local pudelko_modul=require("Module:Pudełko"); -- Podana przykładowa niepoprawna nazwa jedostki local nazwa_jednostki="Nazwa pliku [[Nazwa linku w pliku]]"; -- Fukcja zwróci wartość: local czy_poprawna_nazwa=true; local czy_poprawna_nazwa=pudelko_modul.CzyNiepoprawnaNazwa(nazwa_jednostki); </syntaxhighlight> == Funkcje nazw przestrzeni nazw == === {{Code|p["Nazwa przestrzeni nazw"](frame,...)}} === Funkcja pisze nazwę przestrzeni nazw, niezależnie, czy to jest przedmiotowa, czy dyskusji, według podanej w zmiennej {{Code|nazwa przestrzeni nazw}} dla pozycja bazowej w podanych parametrach szablonu rodzicu ramki dziecka, lub dla innej pozycji należy parametr podawać w formie {{Code|nazwa przestrzeni nazw 1}}, {{Code|nazwa przestrzeni nazw 2}}, {{Code|nazwa przestrzeni nazw 3}},..., lub te parametry można podać w postaci ogólnej {{Code|nazwa przestrzeni nazw i}}. Parametry podaje się w parametrach rodzica wywołania tej funkcji {{Code|{{m|Pudełko|Nazwa przestrzeni nazw}}}} (ale ich nie trzeba podawać w dziecku, ale można) i w parametrach dziecka, jeśli chodzi o zmienną {{Code|numer jednostki}}, czyli np.: {{Code|{{m|Pudełko|Nazwa przestrzeni nazw|numer jednostki{{=}}<jakaś liczba całkowita dodatnia>}}}}. Te parametry przestrzenne zamiast w rodzicu w szablonie można podać w ramce dziecka, wtedy parametry dziecka mają pierwszeństwo. Przestrzeń nazw z parametrów nazw przestrzennych może odpowiadać wartości przestrzeni głównej, to wtedy odpowiednia przestrzeń nazw z parametru nazwy jednostki się nie liczy w tej funkcji, aby się liczyła należy użyć funkcji {{Code|{{sr|#p["Nazwa przestrzeni nazw 2"](frame,...)|p=Pudełko}}}}. Definicja skrótowa funkcji: <syntaxhighlight lang="lua"> p["Nazwa przestrzeni nazw"]=function(frame,czy_uwzglednic_alternatywna_nazwe,i)...end; </syntaxhighlight> Wtedy ciało funkcji tej, czyli jego definicja w środku, jest: <syntaxhighlight lang="lua"> -- Jest liczony numer parametru nazwy przestrzeni nazw, domyslnie chodzi tu o numer bazowy parametrów przestrzennych; local numer_jednostki=i or frame.args["numer jednostki"]; local liczba_numer_jednostki=((numer_jednostki)and(tonumber(numer_jednostki))or 0); local pudelko_pomocne_modul=require("Module:Pudełko/Pomocne"); -- Liczy nazwę przestrzeni nazw na podstawie podanych parametrów; return pudelko_pomocne_modul.Nazwa_przestrzeni_nazw(frame,0, czy_uwzglednic_alternatywna_nazwe,liczba_numer_jednostki); </syntaxhighlight> Parametry funkcji: * {{Code|frame}} - tablica ramki tablicy transportu, * {{Code|czy_uwzglednic_alternatywna_nazwe}} - czy ma uwzględniać nazwę przestrzeni nazw domyślną szablonu, dostępne wartości: {{Code|false}}, w której nazwa domyślna nie jest uwzględniana wtedy, oraz {{Code|nil}} i {{Code|true}}, które oznaczają to samo, w tym jeżeli ona jest uwzględniana, wtedy jest brany parametr pierwszy dziecka, który musi istnieć przy takiej wartości tego parametru, tzn. {{Code|{{m|Pudełko|Nazwa przestrzeni nazw|Szablon}}}}, a ten element jest używany, gdy nazwa uzyskana nazwy przestrzeni nazw jest w takim przypadku błędna, a jeżeli wtedy nazwa domyślna jest błędna, czyli {{Code|{{m|Pudełko|Nazwa przestrzeni nazw|Moja przestrzeń}}}}, wtedy funkcja zwraca stan błędu {{Code|(błąd)}}. * {{Code|i}} - numer zmiennej nazwy przestrzeni nazw. Funkcja wykorzystuje {{Code|{{sr|#p.Nazwa_przestrzeni_nazw(frame,...)|p=Pudełko/Pomocne}}}} do wyznaczania ogólnego nazwy przestrzeni nazw dla pozycji bazowej i numerkowej, tzn. dla pozycji: jeden, dwa, trzy,..., itd, i ich ogólnej. Parametr ramki tablicy transportu rodzica szablonu: * {{Code|nazwa przestrzeni nazw}}, {{Code|nazwa przestrzeni nazw 1}}, {{Code|nazwa przestrzeni nazw 2}}, {{Code|nazwa przestrzeni nazw 3}},..., {{Code|nazwa przestrzeni nazw i}} - nazwy przestrzeni nazw dla pozycji bazowej oraz zwykłej i ogólnej numerkowej, * {{Code|typ jednostki}}, {{Code|typ jednostki 1}}, {{Code|typ jednostki 2}}, {{Code|typ jednostki 3}},..., {{Code|typ jednostki i}} - typy jednostek, którym odpowiadają pewne przestrzenie przedmiotowe, dla pozycji bazowej, numerkowej i ogólnej, ** {{Code|dyskusja typu jednostki}}, {{Code|dyskusja typu jednostki 1}}, {{Code|dyskusja typ jednostki 2}}, {{Code|dyskusja typ jednostki 3}},..., {{Code|dyskusja typ jednostki i}} - czy dany typ jednostki ma przedstawiać, jeśli niepusta, przestrzeń dyskusji dla pozycji bazowej, numerkowej i ogólnej. Parametry ramki tablicy transportu dziecka: * Parametry dziecka są takie same jak rodzica dla funkcji pudełkowej plus tu wymienione, * {{Code|numer jednostki}} - jak parametr {{Code|i}} nie został ustawiony, to wtedy liczy się ta zmienna. Przykłady: <syntaxhighlight lang="mediawiki"> {{Nazwa szablonu|nazwa przestrzeni nazw=Wikibooks|nazwa przestrzeni nazw 2=Szablon|nazwa przestrzeni nazw i=Moduł}} </syntaxhighlight> W dziecku powiedzmy jest wywołanie, i szukamy nazwy przestrzeni nazw o numerze dwa, która nie została podana, ale istnieje za to jej wersji ogólna {{Code|nazwa przestrzeni nazw i}} i domyślna {{Code|nazwa przestrzeni nazw}}: <syntaxhighlight lang="mediawiki"> {{#invoke:Pudełko|Nazwa przestrzeni nazw|numer jednostki=1}} </syntaxhighlight> Na podstawie powyższego przykładu otrzymamy wynik o schemacie, nie wyniku, bo tam nie ma zmiennej {{Code|nazwa przestrzeni nazw 1}}, ale jest {{Code|nazwa przestrzeni nazw i}}: <syntaxhighlight lang="mediawiki"> <!-- Ale nie "nazwa przestrzeni nazw", bo jej nie ma, ale za to istnieje "nazwa przestrzeni nazw i"; --> <!-- nazwa przestrzeni nazw 2=nazwa przestrzeni nazw i=Moduł; --> <!-- Czyli wynik: --> Moduł <!-- Widzimy, że wygenerowała się nazwa przestrzeni nazw, którą jest przestrzeń programowa, którą również jest "Szablon"; --> </syntaxhighlight> Nie jest brana w tym powyższym przykładzie zmienna {{Code|nazwa przestrzeni nazw}}, bo jej nie ma, ale za to jest {{Code|nazwa przestrzeni nazw i}}, bo ona występuje jako parametr domyślny ogólny dla parametrów numerkowych. Przykłady w wikikodzie: * {{Code|{{m|Pudełko|Nazwa przestrzeni nazw|numer jednostki{{=}}2}}}} → {{Tt|{{#invoke:Pudełko|Nazwa przestrzeni nazw|numer jednostki=2}}}} * {{Code|{{m|Pudełko|Nazwa przestrzeni nazw|Szablon|nazwa przestrzeni nazw i{{=}}Moja przestrzeń|numer jednostki{{=}}2}}}} → {{Tt|{{#invoke:Pudełko|Nazwa przestrzeni nazw|Szablon|nazwa przestrzeni nazw i=Moja przestrzeń|numer jednostki=2}}}} * {{Code|{{m|Pudełko|Nazwa przestrzeni nazw|nazwa przestrzeni nazw 2{{=}}Szablon|numer jednostki{{=}}2}}}} → {{Tt|{{#invoke:Pudełko|Nazwa przestrzeni nazw|nazwa przestrzeni nazw 2=Szablon|numer jednostki=2}}}} * {{Code|{{m|Pudełko|Nazwa przestrzeni nazw|nazwa przestrzeni nazw 2{{=}}Szablon|numer jednostki{{=}}2}}}} → {{Tt|{{#invoke:Pudełko|Nazwa przestrzeni nazw|nazwa przestrzeni nazw i=Szablon|numer jednostki=2}}}} * {{Code|{{m|Pudełko|Nazwa przestrzeni nazw|nazwa przestrzeni nazw{{=}}Szablon|numer jednostki{{=}}2}}}} → {{Tt|{{#invoke:Pudełko|Nazwa przestrzeni nazw|nazwa przestrzeni nazw=Szablon|numer jednostki=2}}}} Powyżej dla przykładu podano parametry nie w rodzicu w szablonie, tylko w dziecku, jeśli chodzi o parametry nazw przestrzeni nazw, ale ich się za to nie powinno podawać w tych ramach, tylko w szablonach, w których wywoływane są te ramki pudełek {{Code|{{m|Pudełko}}}}, ale tak tutaj tak zrobiono by było najłatwiej sprawdzić działanie tego typu funkcji. Analogicznie możemy podawać parametry typu jednostki, np.: wywołaniu modułowym {{Code|{{m|Pudełko|Nazwa przestrzeni nazw|typ jednostki 2{{=}}strona szablonu|numer jednostki{{=}}2}}}}, ale o tym więcej w rozdziałach {{Code|{{sr|# p["Typ jednostki"](frame,i)|p=Pudełko}}}} w „{{sr|#Funkcje typu jednostki|p=Pudełko}}”, on definiuje przestrzenie przedmiotowe, ale można użyć parametru dyskusji typu jednostki z wartością niepustą, wtedy wyświetli się nazwa przestrzeni nazw dyskusji. Również parametry typu jednostki nie powinno się podawać w dziecku w ramce, tylko w rodzicu w szablonie jako parametry, w którym ta ramka jest wywoływana, ale tutaj podano jedynie dla przykładu, jak najłatwiej sprawdzić działanie tych parametrów tej funkcji. Najpierw w funkcji nagłówku brane są parametry nazw przestrzeni nazw, a jeżeli ich nie ma, to parametry typu jednostki, a jeżeli nie ma, to generowane są nazwy na podstawie aktualnego modułu. === {{Code|p["Nazwa przedmiotowej przestrzeni nazw"](frame,...)}} === Funkcja pisze przedmiotową nazwę przestrzeni nazw jakikolwiek nazwy przestrzeni nazw (tzn. nazwę przedmiotową nazwy przestrzenie nazw, czyli nie dyskusji, zamieniana jest na nią samą, czyli identyfikator przestrzeni się nie zmienia, a dyskusji, nie przedmiotową, przekształca się na przedmiotową jej odpowiadającą, czyli w tym przypadku identyfikator przestrzeni zmniejsza się o numer mniej), według podanej w zmiennej {{Code|nazwa przestrzeni nazw}} dla pozycja bazowej w podanych parametrach szablonu rodzicu ramki dziecka, lub dla innej pozycji należy parametr podawać w formie {{Code|nazwa przestrzeni nazw 1}}, {{Code|nazwa przestrzeni nazw 2}}, {{Code|nazwa przestrzeni nazw 3}},..., lub te parametry można podać w postaci ogólnej {{Code|nazwa przestrzeni nazw i}}. Parametry podaje się w parametrach rodzica wywołania tej funkcji {{Code|{{m|Pudełko|Nazwa przedmiotowej przestrzeni nazw}}}} (ale ich nie trzeba podawać w dziecku, ale można) i w parametrach dziecka, jeśli chodzi o zmienną {{Code|numer jednostki}}, czyli np.: {{Code|{{m|Pudełko|Nazwa przedmiotowej przestrzeni nazw|numer jednostki{{=}}<jakaś liczba całkowita dodatnia>}}}}. Te parametry przestrzenne zamiast w rodzicu w szablonie można podać w ramce dziecka, wtedy parametry dziecka mają pierwszeństwo. Parametry przestrzenne mogą mogą być podane w postaci przestrzeni przedmiotowej lub dyskusji, ale ta funkcja zawsze ją zamienia na przedmiotową. Przestrzeń nazw z parametrów nazw przestrzennych może odpowiadać wartości przestrzeni głównej, to wtedy odpowiednia przestrzeń nazw z parametru nazwy jednostki się nie liczy w tej funkcji, aby się liczyła należy użyć funkcji {{Code|{{sr|#p["Nazwa przedmiotowej przestrzeni nazw 2"](frame,...)|p=Pudełko}}}}. Definicja skrótowa funkcji: <syntaxhighlight lang="lua"> p["Nazwa przedmiotowej przestrzeni nazw"]=function(frame,czy_uwzglednic_alternatywna_nazwe,i)...end; </syntaxhighlight> Wtedy ciało funkcji tej, czyli jego definicja w środku, jest: <syntaxhighlight lang="lua"> -- Jest liczony numer parametru nazwy przestrzeni nazw, domyslnie chodzi tu o numer bazowy parametrów przestrzennych; local numer_jednostki=i or frame.args["numer jednostki"]; local liczba_numer_jednostki=((numer_jednostki)and(tonumber(numer_jednostki))or 0); local pudelko_pomocne_modul=require("Module:Pudełko/Pomocne"); -- Liczy nazwę przestrzeni nazw przedmiotową na podstawie podanych parametrów; return pudelko_pomocne_modul.Nazwa_przestrzeni_nazw(frame,1, czy_uwzglednic_alternatywna_nazwe,liczba_numer_jednostki); </syntaxhighlight> Parametry funkcji: * {{Code|frame}} - tablica ramki tablicy transportu, * {{Code|czy_uwzglednic_alternatywna_nazwe}} - czy ma uwzględniać nazwę przestrzeni nazw domyślną szablonu, dostępne wartości: {{Code|false}}, w której nazwa domyślna nie jest uwzględniana wtedy, oraz {{Code|nil}} i {{Code|true}}, które oznaczają to samo, w tym jeżeli ona jest uwzględniana, wtedy jest brany parametr pierwszy dziecka, który musi istnieć przy takiej wartości tego parametru, tzn. {{Code|{{m|Pudełko|Nazwa przedmiotowej przestrzeni nazw|Dyskusja szablonu}}}} - ta nazwa domyślna zostanie zamieniona na przedmiotową, a jak ona by była przedmiotowa, to żadnej zamiany, by nie było, a jeśli nazwa uzyskana z nazwy przestrzeni nazw z parametrów przestrzennych jest w takim przypadku błędna, to w takim razie brany jest ten parametr, a jeżeli ta nazwa domyślna jest błędna, czyli {{Code|{{m|Pudełko|Nazwa przedmiotowej przestrzeni nazw|Moja przestrzeń}}}}, wtedy funkcja zwraca stan błędu {{Code|(błąd)}}. * {{Code|i}} - numer zmiennej nazwy przestrzeni nazw. Funkcja wykorzystuje {{Code|{{sr|#p.Nazwa_przestrzeni_nazw(frame,...)|p=Pudełko/Pomocne}}}} do wyznaczania ogólnego nazwy przestrzeni nazw dla pozycji bazowej i numerkowej, tzn. dla pozycji: jeden, dwa, trzy,..., itd, i ich ogólnej. Parametr ramki tablicy transportu rodzica szablonu: * {{Code|nazwa przestrzeni nazw}}, {{Code|nazwa przestrzeni nazw 1}}, {{Code|nazwa przestrzeni nazw 2}}, {{Code|nazwa przestrzeni nazw 3}},..., {{Code|nazwa przestrzeni nazw i}} - nazwy przestrzeni nazw dla pozycji bazowej oraz zwykłej i ogólnej numerkowej, * {{Code|typ jednostki}}, {{Code|typ jednostki 1}}, {{Code|typ jednostki 2}}, {{Code|typ jednostki 3}},..., {{Code|typ jednostki i}} - typy jednostek, którym odpowiadają pewne przestrzenie przedmiotowe, dla pozycji bazowej, numerkowej i ogólnej. Parametry ramki tablicy transportu dziecka: * Parametry dziecka są takie same jak rodzica dla funkcji pudełkowej plus tu wymienione, * {{Code|numer jednostki}} - jak parametr {{Code|i}} nie został ustawiony, to wtedy liczy się ta zmienna. Przykłady: <syntaxhighlight lang="mediawiki"> {{Nazwa szablonu|nazwa przestrzeni nazw=Dyskusja Wikibooks|nazwa przestrzeni nazw 2=Dyskusja szablonu|nazwa przestrzeni nazw i=Dyskusja modułu}} </syntaxhighlight> W dziecku powiedzmy jest wywołanie, i szukamy nazwy przestrzeni nazw o numerze dwa, która nie została podana, ale istnieje za to jej wersji ogólna {{Code|nazwa przestrzeni nazw i}} i domyślna {{Code|nazwa przestrzeni nazw}}: <syntaxhighlight lang="mediawiki"> {{#invoke:Pudełko|Nazwa przedmiotowej przestrzeni nazw|numer jednostki=1}} </syntaxhighlight> Na podstawie powyższego przykładu otrzymamy wynik o schemacie, nie wyniku, bo tam nie ma zmiennej {{Code|nazwa przestrzeni nazw 1}}, ale jest {{Code|nazwa przestrzeni nazw i}}: <syntaxhighlight lang="mediawiki"> <!-- Ale nie "nazwa przestrzeni nazw", bo jej nie ma, ale za to istnieje "nazwa przestrzeni nazw i"; --> <!-- nazwa przestrzeni nazw 2=nazwa przestrzeni nazw i=Dyskusja modułu; --> <!-- Czyli wynik: --> Moduł <!-- Widzimy, że wygenerowała się nazwa przestrzeni nazw, którą jest przestrzeń przedmiotowa programowa przestrzeni dyskusji "Dyskusja modułu", którą również jest "Szablon" jego przestrzeni dyskusji "Dyskusja szablonu", a dla ich przestrzeni przedmiotowej, zamiast dyskusji, to samo przekształca się na to samo; --> </syntaxhighlight> Nie jest brana w tym powyższym przykładzie zmienna {{Code|nazwa przestrzeni nazw}}, bo jej nie ma, ale za to jest {{Code|nazwa przestrzeni nazw i}}, bo ona występuje jako parametr domyślny ogólny dla parametrów numerkowych. Przykłady w wikikodzie: * {{Code|{{m|Pudełko|Nazwa przedmiotowej przestrzeni nazw|numer jednostki{{=}}2}}}} → {{Tt|{{#invoke:Pudełko|Nazwa przedmiotowej przestrzeni nazw|numer jednostki=2}}}} * {{Code|{{m|Pudełko|Nazwa przedmiotowej przestrzeni nazw|Dyskusja szablonu|nazwa przestrzeni nazw i{{=}}Moja przestrzeń|numer jednostki{{=}}2}}}} → {{Tt|{{#invoke:Pudełko|Nazwa przedmiotowej przestrzeni nazw|Dyskusja szablonu|nazwa przestrzeni nazw i=Moja przestrzeń|numer jednostki=2}}}} * {{Code|{{m|Pudełko|Nazwa przedmiotowej przestrzeni nazw|nazwa przestrzeni nazw 2{{=}}Dyskusja szablonu|numer jednostki{{=}}2}}}} → {{Tt|{{#invoke:Pudełko|Nazwa przedmiotowej przestrzeni nazw|nazwa przestrzeni nazw 2=Dyskusja szablonu|numer jednostki=2}}}} * {{Code|{{m|Pudełko|Nazwa przedmiotowej przestrzeni nazw|nazwa przestrzeni nazw 2{{=}}Dyskusja szablonu|numer jednostki{{=}}2}}}} → {{Tt|{{#invoke:Pudełko|Nazwa przedmiotowej przestrzeni nazw|nazwa przestrzeni nazw i=Dyskusja szablonu|numer jednostki=2}}}} * {{Code|{{m|Pudełko|Nazwa przedmiotowej przestrzeni nazw|nazwa przestrzeni nazw{{=}}Dyskusja szablonu|numer jednostki{{=}}2}}}} → {{Tt|{{#invoke:Pudełko|Nazwa przedmiotowej przestrzeni nazw|nazwa przestrzeni nazw=Dyskusja szablonu|numer jednostki=2}}}} Powyżej dla przykładu podano parametry nie w rodzicu w szablonie, tylko w dziecku, jeśli chodzi o parametry nazw przestrzeni nazw, ale ich się za to nie powinno podawać w tych ramach, tylko w szablonach, w których wywoływane są te ramki pudełek {{Code|{{m|Pudełko}}}}, ale tak tutaj tak zrobiono by było najłatwiej sprawdzić działanie tego typu funkcji. Analogicznie możemy podawać parametry typu jednostki, np.: wywołaniu modułowym {{Code|{{m|Pudełko|Nazwa przedmiotowej przestrzeni nazw|typ jednostki 2{{=}}strona szablonu|numer jednostki{{=}}2}}}}, ale o tym więcej w rozdziałach {{Code|{{sr|# p["Przedmiotowy typ jednostki"](frame,i)|p=Pudełko}}}} w „{{sr|#Funkcje typu jednostki|p=Pudełko}}”, ale wtedy ta sama nazwa przestrzeni nazw reprezentowana przez {{Parametr|typ jednostki 2|strona szablonu}}, jest zamieniana na to samo, lepiej jest tutaj używać parametrów przestrzennych nazw niż typu jednostki, bo typ jednostki ma taką samą wartość dla przestrzeni przedmiotowej, co dyskusji. Tutaj parametr dyskusji typu jednostki bazowy i numerkowy ogólny, czy szczegółowy, nie gra roli, bo nawet, gdy wygenerujemy nazwę przestrzeni dyskusji za pomoca tego parametru, to i tak otrzymamy na samym końcu jego nazwę przedmiotową. Również parametry typu jednostki nie powinno się podawać w dziecku w ramce, tylko w rodzicu w szablonie jako parametry, w którym ta ramka jest wywoływana, ale tutaj podano jedynie dla przykładu, jak najłatwiej sprawdzić działanie tych parametrów tej funkcji. Najpierw w funkcji nagłówku brane są parametry nazw przestrzeni nazw, a jeżeli ich nie ma, to parametry typu jednostki, a jeżeli nie ma, to generowane są nazwy na podstawie aktualnego modułu. === {{Code|p["Nazwa przestrzeni nazw dyskusji"](frame,...)}} === Funkcja pisze nazwę przestrzeni nazw dyskusji jakikolwiek nazwy przestrzeni nazw (tzn. nazwę przedmiotową nazwy przestrzenie nazw, czyli nie dyskusji, zamieniana jest na dyskusji, czyli identyfikator przestrzeni się zmienia jeden wyżej, a dyskusji, nie przedmiotową, przekształca się na tą samą), według podanej w zmiennej {{Code|nazwa przestrzeni nazw}} dla pozycja bazowej w podanych parametrach szablonu rodzicu ramki dziecka, lub dla innej pozycji należy parametr podawać w formie {{Code|nazwa przestrzeni nazw 1}}, {{Code|nazwa przestrzeni nazw 2}}, {{Code|nazwa przestrzeni nazw 3}},..., lub te parametry można podać w postaci ogólnej {{Code|nazwa przestrzeni nazw i}}. Parametry podaje się w parametrach rodzica wywołania tej funkcji {{Code|{{m|Pudełko|Nazwa przestrzeni nazw dyskusji}}}} (ale ich nie trzeba podawać w dziecku, ale można) i w parametrach dziecka, jeśli chodzi o zmienną {{Code|numer jednostki}}, czyli np.: {{Code|{{m|Pudełko|Nazwa przestrzeni nazw dyskusji|numer jednostki{{=}}<jakaś liczba całkowita dodatnia>}}}}. Te parametry przestrzenne zamiast w rodzicu w szablonie można podać w ramce dziecka, wtedy parametry dziecka mają pierwszeństwo. Parametry przestrzenne mogą mogą być podane w postaci przestrzeni przedmiotowej lub dyskusji, ale ta funkcja zawsze ją zamienia na dyskusji. Przestrzeń nazw z parametrów nazw przestrzennych może odpowiadać wartości przestrzeni głównej, to wtedy odpowiednia przestrzeń nazw z parametru nazwy jednostki się nie liczy w tej funkcji, aby się liczyła należy użyć funkcji {{Code|{{sr|#p["Nazwa przestrzeni nazw dyskusji 2"](frame,...)|p=Pudełko}}}}. Definicja skrótowa funkcji: <syntaxhighlight lang="lua"> p["Nazwa przestrzeni nazw dyskusji"]=function(frame,czy_uwzglednic_alternatywna_nazwe,i)...end; </syntaxhighlight> Wtedy ciało funkcji tej, czyli jego definicja w środku, jest: <syntaxhighlight lang="lua"> -- Jest liczony numer parametru nazwy przestrzeni nazw, domyslnie chodzi tu o numer bazowy parametrów przestrzennych; local numer_jednostki=i or frame.args["numer jednostki"]; local liczba_numer_jednostki=((numer_jednostki)and(tonumber(numer_jednostki))or 0); local pudelko_pomocne_modul=require("Module:Pudełko/Pomocne"); -- Liczy nazwę przestrzeni nazw dyskusji na podstawie podanych parametrów; return pudelko_pomocne_modul.Nazwa_przestrzeni_nazw(frame,2, czy_uwzglednic_alternatywna_nazwe,liczba_numer_jednostki); </syntaxhighlight> Parametry funkcji: * {{Code|frame}} - tablica ramki tablicy transportu, * {{Code|czy_uwzglednic_alternatywna_nazwe}} - czy ma uwzględniać nazwę przestrzeni nazw domyślną szablonu, dostępne wartości: {{Code|false}}, w której nazwa domyślna nie jest uwzględniana wtedy, oraz {{Code|nil}} i {{Code|true}}, które oznaczają to samo, w tym jeżeli ona jest uwzględniana, wtedy jest brany parametr pierwszy dziecka, który musi istnieć przy takiej wartości tego parametru, tzn. {{Code|{{m|Pudełko|Nazwa przestrzeni nazw dyskusji|Szablon}}}} - ta nazwa domyślna zostanie przekształcona na dyskusji, a jeżeli ona by była dyskusji, to nie byłoby żadnego przekształcenia, a jeśli nazwa uzyskana nazwy przestrzeni nazw z parametrów przestrzennych jest w takim przypadku błędna, to w takim razie brany jest ten parametr, a jeżeli nazwa domyślna jest błędna, czyli {{Code|{{m|Pudełko|Nazwa przestrzeni nazw dyskusji|Moja przestrzeń}}}}, wtedy funkcja zwraca stan błędu {{Code|(błąd)}}. * {{Code|i}} - numer zmiennej nazwy przestrzeni nazw. Funkcja wykorzystuje {{Code|{{sr|#p.Nazwa_przestrzeni_nazw(frame,...)|p=Pudełko/Pomocne}}}} do wyznaczania ogólnego nazwy przestrzeni nazw dla pozycji bazowej i numerkowej, tzn. dla pozycji: jeden, dwa, trzy,..., itd, i ich ogólnej. Parametr ramki tablicy transportu rodzica szablonu: * {{Code|nazwa przestrzeni nazw}}, {{Code|nazwa przestrzeni nazw 1}}, {{Code|nazwa przestrzeni nazw 2}}, {{Code|nazwa przestrzeni nazw 3}},..., {{Code|nazwa przestrzeni nazw i}} - nazwy przestrzeni nazw dla pozycji bazowej oraz zwykłej i ogólnej numerkowej, * {{Code|typ jednostki}}, {{Code|typ jednostki 1}}, {{Code|typ jednostki 2}}, {{Code|typ jednostki 3}},..., {{Code|typ jednostki i}} - typy jednostek, którym odpowiadają pewne przestrzenie przedmiotowe, dla pozycji bazowej, numerkowej i ogólnej. Parametry ramki tablicy transportu dziecka: * Parametry dziecka są takie same jak rodzica dla funkcji pudełkowej plus tu wymienione, * {{Code|numer jednostki}} - jak parametr {{Code|i}} nie został ustawiony, to wtedy liczy się ta zmienna. Przykłady: <syntaxhighlight lang="mediawiki"> {{Nazwa szablonu|nazwa przestrzeni nazw=Wikibooks|nazwa przestrzeni nazw 2=Szablon|nazwa przestrzeni nazw i=Moduł}} </syntaxhighlight> W dziecku powiedzmy jest wywołanie, i szukamy nazwy przestrzeni nazw o numerze dwa, która nie została podana, ale istnieje za to jej wersji ogólna {{Code|nazwa przestrzeni nazw i}} i domyślna {{Code|nazwa przestrzeni nazw}}: <syntaxhighlight lang="mediawiki"> {{#invoke:Pudełko|Nazwa przestrzeni nazw dyskusji|numer jednostki=1}} </syntaxhighlight> Na podstawie powyższego przykładu otrzymamy wynik o schemacie, nie wyniku, bo tam nie ma zmiennej {{Code|nazwa przestrzeni nazw 1}}, ale jest {{Code|nazwa przestrzeni nazw i}}: <syntaxhighlight lang="mediawiki"> <!-- Ale nie "nazwa przestrzeni nazw", bo jej nie ma, ale za to istnieje "nazwa przestrzeni nazw i"; --> <!-- nazwa przestrzeni nazw 2=nazwa przestrzeni nazw i=Moduł; --> <!-- Czyli wynik: --> Dyskusja modułu <!-- Widzimy, że wygenerowała się nazwa przestrzeni nazw, którą jest przestrzeń dyskusji przestrzeni programowej przestrzeni przedmiotowej "Moduł", którą również jest "Szablon" jego przestrzeni dyskusji "Dyskusja szablonu", a dla ich przestrzeni przedmiotowej, zamiast dyskusji, to przekształca się na dyskusji jej odpowiadającą; --> </syntaxhighlight> Nie jest brana w tym powyższym przykładzie zmienna {{Code|nazwa przestrzeni nazw}}, bo jej nie ma, ale za to jest {{Code|nazwa przestrzeni nazw i}}, bo ona występuje jako parametr domyślny ogólny dla parametrów numerkowych. Przykłady w wikikodzie: * {{Code|{{m|Pudełko|Nazwa przestrzeni nazw dyskusji|numer jednostki{{=}}2}}}} → {{Tt|{{#invoke:Pudełko|Nazwa przestrzeni nazw dyskusji|numer jednostki=2}}}} * {{Code|{{m|Pudełko|Nazwa przestrzeni nazw dyskusji|Szablon|nazwa przestrzeni nazw i{{=}}Moja przestrzeń|numer jednostki{{=}}2}}}} → {{Tt|{{#invoke:Pudełko|Nazwa przestrzeni nazw dyskusji|Szablon|nazwa przestrzeni nazw i=Moja przestrzeń|numer jednostki=2}}}} * {{Code|{{m|Pudełko|Nazwa przestrzeni nazw dyskusji|nazwa przestrzeni nazw 2{{=}}Szablon|numer jednostki{{=}}2}}}} → {{Tt|{{#invoke:Pudełko|Nazwa przestrzeni nazw dyskusji|nazwa przestrzeni nazw 2=Szablon|numer jednostki=2}}}} * {{Code|{{m|Pudełko|Nazwa przestrzeni nazw dyskusji|nazwa przestrzeni nazw 2{{=}}Szablon|numer jednostki{{=}}2}}}} → {{Tt|{{#invoke:Pudełko|Nazwa przestrzeni nazw dyskusji|nazwa przestrzeni nazw i=Szablon|numer jednostki=2}}}} * {{Code|{{m|Pudełko|Nazwa przestrzeni nazw dyskusji|nazwa przestrzeni nazw{{=}}Szablon|numer jednostki{{=}}2}}}} → {{Tt|{{#invoke:Pudełko|Nazwa przestrzeni nazw dyskusji|nazwa przestrzeni nazw=Szablon|numer jednostki=2}}}} Powyżej dla przykładu podano parametry nie w rodzicu w szablonie, tylko w dziecku, jeśli chodzi o parametry nazw przestrzeni nazw, ale ich się za to nie powinno podawać w tych ramach, tylko w szablonach, w których wywoływane są te ramki pudełek {{Code|{{m|Pudełko}}}}, ale tak tutaj tak zrobiono by było najłatwiej sprawdzić działanie tego typu funkcji. Analogicznie możemy podawać parametry typu jednostki, np.: wywołaniu modułowym {{Code|{{m|Pudełko|Nazwa przestrzeni nazw dyskusji|typ jednostki 2{{=}}strona szablonu|numer jednostki{{=}}2}}}}, ale o tym więcej w rozdziałach {{Code|{{sr|# p["Dyskusyjny typ jednostki"](frame,i)|p=Pudełko}}}} w „{{sr|#Funkcje typu jednostki|p=Pudełko}}”, ale wtedy nazwa przestrzeni nazw reprezentowana przez {{Parametr|typ jednostki 2|strona szablonu}}, jest zamieniana na nazwę przestrzeni nazw dyskusji. Parametr dyskusji typu jednostki bazowy lub dla danego numerka ogólny, czy szczegółowy, nie gra roli. Również parametry typu jednostki nie powinno się podawać w dziecku w ramce, tylko w rodzicu w szablonie jako parametry, w którym ta ramka jest wywoływana, ale tutaj podano jedynie dla przykładu, jak najłatwiej sprawdzić działanie tych parametrów tej funkcji. Najpierw w funkcji nagłówku brane są parametry nazw przestrzeni nazw, a jeżeli ich nie ma, to parametry typu jednostki, a jeżeli nie ma, to generowane są nazwy na podstawie aktualnego modułu. == Funkcje nazw przestrzeni nazw drugiej wersji == === {{Code|p["Nazwa przestrzeni nazw 2"](frame,...)}} === Funkcja pisze nazwę przestrzeni nazw, niezależnie, czy to jest przedmiotowa, czy dyskusji, według, i nie zawsze tylko, podanej w zmiennej {{Code|nazwa przestrzeni nazw}} dla pozycja bazowej w podanych parametrach szablonu rodzicu ramki dziecka, lub dla innej pozycji należy parametr podawać w formie {{Code|nazwa przestrzeni nazw 1}}, {{Code|nazwa przestrzeni nazw 2}}, {{Code|nazwa przestrzeni nazw 3}},..., lub te parametry można podać w postaci ogólnej {{Code|nazwa przestrzeni nazw i}}. W tej funkcji trzeba też podawać parametry nazwy jednostek {{Code|nazwa jednostki}}, {{Code|nazwa jednostki 1}}, {{Code|nazwa jednostki 2}}, {{Code|nazwa jednostki 3}},... Parametry podaje się w parametrach rodzica wywołania tej funkcji {{Code|{{m|Pudełko|Nazwa przestrzeni nazw 2}}}} (ale ich nie trzeba podawać w dziecku, ale można) i w parametrach dziecka, jeśli chodzi o zmienną {{Code|numer jednostki}}, czyli np.: {{Code|{{m|Pudełko|Nazwa przestrzeni nazw 2|numer jednostki{{=}}<jakaś liczba całkowita dodatnia>}}}}. Te parametry przestrzenne zamiast w rodzicu w szablonie można podać w ramce dziecka, wtedy parametry dziecka mają pierwszeństwo. Przestrzeń nazw z parametrów nazw przestrzennych może odpowiadać wartości przestrzeni głównej, to wtedy odpowiednia przestrzeń nazw z parametru nazwy jednostki się liczy w tej funkcji, wtedy jest liczona nazwa przestrzeni nazw z tego parametru. Gdy parametry przestrzenne lub typ jednostki w drugim podejściu nie wskazują na przestrzeń główną, to wtedy działanie tej funkcji jest podobne do {{Code|{{sr|#p["Nazwa przestrzeni nazw"](frame,...)|p=Pudełko}}}}. Definicja skrótowa funkcji: <syntaxhighlight lang="lua"> p["Nazwa przestrzeni nazw 2"]=function(frame,czy_uwzglednic_alternatywna_nazwe,i)...end; </syntaxhighlight> Wtedy ciało funkcji tej, czyli jego definicja w środku, jest: <syntaxhighlight lang="lua"> local pudelko_pomocne_modul=require("Module:Pudełko/Pomocne"); -- Liczy nazwę przestrzeni nazw, jeżeli z parametrów przestrzennych przestrzeń wskazuje na główną, to wtedy jest liczona przestrzeń nazw z nazwy jednostki; return pudelko_pomocne_modul.Nazwa_przestrzeni_nazw_2(frame,czy_uwzglednic_alternatywna_nazwe,i) </syntaxhighlight> Parametry funkcji: * {{Code|frame}} - tablica ramki tablicy transportu, * {{Code|czy_uwzglednic_alternatywna_nazwe}} - czy ma uwzględniać nazwę przestrzeni nazw domyślną szablonu, dostępne wartości: {{Code|false}}, w której nazwa domyślna nie jest uwzględniana wtedy, oraz {{Code|nil}} i {{Code|true}}, które oznaczają to samo, w tym jeżeli ona jest uwzględniana, wtedy jest brany parametr pierwszy dziecka, który musi istnieć przy takiej wartości tego parametru, tzn. {{Code|{{m|Pudełko|Nazwa przestrzeni nazw 2|Szablon}}}}, a jeśli nazwa uzyskana nazwy przestrzeni nazw jest w takim przypadku błędna, to brany jest ten element, a jeżeli nazwa domyślna jest błędna, czyli {{Code|{{m|Pudełko|Nazwa przestrzeni nazw 2|Moja przestrzeń}}}}, wtedy funkcja zwraca stan błędu {{Code|(błąd)}}. * {{Code|i}} - numer zmiennej nazwy przestrzeni nazw. Funkcja wykorzystuje {{Code|{{sr|#p.Nazwa_przestrzeni_nazw_2(frame,...)|p=Pudełko/Pomocne}}}} do wyznaczania ogólnego nazwy przestrzeni nazw dla pozycji bazowej i numerkowej, tzn. dla pozycji: jeden, dwa, trzy,..., itd, i ich ogólnej. Parametr ramki tablicy transportu rodzica szablonu: * {{Code|nazwa przestrzeni nazw}}, {{Code|nazwa przestrzeni nazw 1}}, {{Code|nazwa przestrzeni nazw 2}}, {{Code|nazwa przestrzeni nazw 3}},..., {{Code|nazwa przestrzeni nazw i}} - nazwy przestrzeni nazw dla pozycji bazowej oraz zwykłej i ogólnej numerkowej, * {{Code|nazwa jednostki}}, {{Code|nazwa jednostki 1}}, {{Code|nazwa jednostki 2}}, {{Code|nazwa jednostki 3}},... - nazwy jednostek dla pozycji bazowej i numerkowej, * {{Code|typ jednostki}}, {{Code|typ jednostki 1}}, {{Code|typ jednostki 2}}, {{Code|typ jednostki 3}},..., {{Code|typ jednostki i}} - typy jednostek, którym odpowiadają pewne przestrzenie przedmiotowe, dla pozycji bazowej, numerkowej i ogólnej, ** {{Code|dyskusja typu jednostki}}, {{Code|dyskusja typu jednostki 1}}, {{Code|dyskusja typ jednostki 2}}, {{Code|dyskusja typ jednostki 3}},..., {{Code|dyskusja typ jednostki i}} - czy dany typ jednostki ma przedstawiać, jeśli niepusta, przestrzeń dyskusji dla pozycji bazowej, numerkowej i ogólnej. Parametry ramki tablicy transportu dziecka: * Parametry dziecka są takie same jak rodzica dla funkcji pudełkowej plus tu wymienione, * {{Code|numer jednostki}} - jak parametr {{Code|i}} nie został ustawiony, to wtedy liczy się ta zmienna. Przykłady: <syntaxhighlight lang="mediawiki"> {{Nazwa szablonu|nazwa przestrzeni nazw=Wikibooks|nazwa przestrzeni nazw 1=Szablon|nazwa przestrzeni nazw i=|nazwa jednostki 2=Wikibooks:Strona}} </syntaxhighlight> W dziecku powiedzmy jest wywołanie, i szukamy nazwy przestrzeni nazw o numerze dwa, która została podana, ale istnieje za to jej wersji ogólna {{Code|nazwa przestrzeni nazw i}} i domyślna {{Code|nazwa przestrzeni nazw}}, ale wtedy dla tego numerkowego liczy się to ogólne z {{Code| i}}, a ponieważ ta nazwa jest pusta, więc będziemy liczyli nazwę przestrzeni nazw z {{Code|nazwa jednostki 2}}: <syntaxhighlight lang="mediawiki"> {{#invoke:Pudełko|Nazwa przestrzeni nazw 2|numer jednostki=2}} </syntaxhighlight> Na podstawie powyższego przykładu otrzymamy wynik o schemacie, nie wyniku, bo tam nie ma zmiennej {{Code|nazwa przestrzeni nazw 1}}, ale jest {{Code|nazwa przestrzeni nazw i}}: <syntaxhighlight lang="mediawiki"> <!-- Ale nie "nazwa przestrzeni nazw 2", bo jej nie ma, ale za to istnieje "nazwa przestrzeni nazw i"; --> <!-- nazwa przestrzeni nazw 2=nazwa przestrzeni nazw i="", a nazwa jednostki 2="Wikibooks:Strona"; --> <!-- Czyli wynik: --> Wikibooks <!-- Widzimy, że wygenerowała się nazwa przestrzeni nazw, którą jest przestrzeń nieprogramowa, ale projektu, wychodząca z nazwy jednostek w tym przypadku z "nazwa jednostki 2"; --> </syntaxhighlight> Nie jest brana w tym powyższym przykładzie zmienna {{Code|nazwa przestrzeni nazw}}, bo jej nie ma, ale za to jest {{Code|nazwa przestrzeni nazw i}}, bo ona występuje jako parametr domyślny ogólny dla parametrów numerkowych. Tytaj jest używana jest zmienna {{Code|nazwa jednostki 2}} do wygenerowania ostatecznego wyniku, bo jak można zauważyć, parametry przestrzenne wskazują na przestrzeń główną, a nazwy jednostek już nie. Przykłady w wikikodzie: * {{Code|{{m|Pudełko|Nazwa przestrzeni nazw 2|numer jednostki{{=}}2}}}} → {{Tt|{{#invoke:Pudełko|Nazwa przestrzeni nazw 2|numer jednostki=2}}}} * {{Code|{{m|Pudełko|Nazwa przestrzeni nazw 2|Szablon|nazwa przestrzeni nazw i{{=}}Moja przestrzeń|numer jednostki{{=}}2}}}} → {{Tt|{{#invoke:Pudełko|Nazwa przestrzeni nazw 2|Szablon|nazwa przestrzeni nazw i=Moja przestrzeń|numer jednostki=2}}}} * {{Code|{{m|Pudełko|Nazwa przestrzeni nazw 2|nazwa przestrzeni nazw 2{{=}}|nazwa jednostki 2{{=}}Szablon:Strona|numer jednostki{{=}}2}}}} → {{Tt|{{#invoke:Pudełko|Nazwa przestrzeni nazw 2|nazwa przestrzeni nazw 2=|nazwa jednostki 2=Szablon:Strona|numer jednostki=2}}}} * {{Code|{{m|Pudełko|Nazwa przestrzeni nazw 2|nazwa przestrzeni nazw i{{=}}|nazwa jednostki 2{{=}}Szablon:Strona|numer jednostki{{=}}2}}}} → {{Tt|{{#invoke:Pudełko|Nazwa przestrzeni nazw 2|nazwa przestrzeni nazw i=|nazwa jednostki 2=Szablon:Strona|numer jednostki=2}}}} * {{Code|{{m|Pudełko|Nazwa przestrzeni nazw 2|Szablon|nazwa przestrzeni nazw{{=}}|nazwa jednostki 2{{=}}Wikibooks:Strona|numer jednostki{{=}}2}}}} → {{Tt|{{#invoke:Pudełko|Nazwa przestrzeni nazw 2|Szablon|nazwa przestrzeni nazw=|nazwa jednostki 2=Wikibooks:Strona|numer jednostki=2}}}} Powyżej dla przykładu podano parametry nie w rodzicu w szablonie, tylko w dziecku, jeśli chodzi o parametry nazw przestrzeni nazw i nazw jednostek, ale ich się za to nie powinno podawać w tych ramach, tylko w szablonach, w których wywoływane są te ramki pudełek {{Code|{{m|Pudełko}}}}, ale tak tutaj tak zrobiono by było najłatwiej sprawdzić działanie tego typu funkcji. Analogicznie możemy podawać parametry typu jednostki, np.: wywołaniu modułowym {{Code|{{m|Pudełko|Nazwa przestrzeni nazw 2|typ jednostki 2{{=}}Podręcznik|nazwa jednostki 2{{=}}Szablon:Strona|numer jednostki{{=}}2}}}} (ale wtedy jest brana przestrzeń nazw z nazwy jednostki), ale o tym więcej w rozdziałach {{Code|{{sr|#p["Typ jednostki 2"](frame,i)|p=Pudełko}}}} w „{{sr|#Funkcje typu jednostki|p=Pudełko}}”, on definiuje przestrzenie przedmiotowe, ale można użyć parametru dyskusji typu jednostki z wartością niepustą, wtedy wyświetli się nazwa przestrzeni nazw dyskusji. Jeżeli typ jednostki wskazuje na przestrzeń nazw główną, wtedy się liczą parametry nazw jednostek. Również parametry typu jednostki nie powinno się podawać w dziecku w ramce, tylko w rodzicu w szablonie jako parametry, w którym ta ramka jest wywoływana, ale tutaj podano jedynie dla przykładu, jak najłatwiej sprawdzić działanie tych parametrów tej funkcji. Najpierw w funkcji nagłówku brane są parametry nazw przestrzeni nazw, a jeżeli ich nie ma, to parametry typu jednostki, a jeżeli nie ma lub parametry przestrzenne wskazują na przestrzeń główną, i nie ma nazwy jednostki, to generowane są nazwy tej funkcji na podstawie aktualnej strony. === {{Code|p["Nazwa przedmiotowej przestrzeni nazw 2"](frame,...)}} === Funkcja pisze przedmiotową nazwę przestrzeni nazw jakikolwiek nazwy przestrzeni nazw (tzn. nazwę przedmiotową nazwy przestrzenie nazw, czyli nie dyskusji, zamieniana jest na nią samą, czyli identyfikator przestrzeni się nie zmienia, a dyskusji, nie przedmiotową, przekształca się na przedmiotową jej odpowiadającą, czyli w tym przypadku identyfikator przestrzeni zmniejsza się o numer mniej), według, i nie zawsze tylko, podanej w zmiennej {{Code|nazwa przestrzeni nazw}} dla pozycja bazowej w podanych parametrach szablonu rodzicu ramki dziecka, lub dla innej pozycji należy parametr podawać w formie {{Code|nazwa przestrzeni nazw 1}}, {{Code|nazwa przestrzeni nazw 2}}, {{Code|nazwa przestrzeni nazw 3}},..., lub te parametry można podać w postaci ogólnej {{Code|nazwa przestrzeni nazw i}}. W tej funkcji trzeba też podawać parametry nazwy jednostek {{Code|nazwa jednostki}}, {{Code|nazwa jednostki 1}}, {{Code|nazwa jednostki 2}}, {{Code|nazwa jednostki 3}},... Parametry podaje się w parametrach rodzica wywołania tej funkcji {{Code|{{m|Pudełko|Nazwa przedmiotowej przestrzeni nazw 2}}}} (ale ich nie trzeba podawać w dziecku, ale można) i w parametrach dziecka, jeśli chodzi o zmienną {{Code|numer jednostki}}, czyli np.: {{Code|{{m|Pudełko|Nazwa przedmiotowej przestrzeni nazw 2|numer jednostki{{=}}<jakaś liczba całkowita dodatnia>}}}}. Te parametry przestrzenne zamiast w rodzicu w szablonie można podać w ramce dziecka, wtedy parametry dziecka mają pierwszeństwo. Przestrzeń nazw z parametrów nazw przestrzennych po przekształceniu na przedmiotową może odpowiadać wartości przestrzeni głównej, to wtedy odpowiednia przestrzeń nazw z parametru nazwy jednostki się liczy w tej funkcji, wtedy jest liczona nazwa przestrzeni nazw z tego parametru. Gdy parametry przestrzenne lub typ jednostki w drugim podejściu nie wskazują na przestrzeń główną, to wtedy działanie tej funkcji jest podobne do {{Code|{{sr|#p["Nazwa przedmiotowej przestrzeni nazw"](frame,...)|p=Pudełko}}}}. Definicja skrótowa funkcji: <syntaxhighlight lang="lua"> p["Nazwa przedmiotowej przestrzeni nazw 2"]=function(frame,czy_uwzglednic_alternatywna_nazwe,i)...end; </syntaxhighlight> Wtedy ciało funkcji tej, czyli jego definicja w środku, jest: <syntaxhighlight lang="lua"> local pudelko_pomocne_modul=require("Module:Pudełko/Pomocne"); return pudelko_pomocne_modul.Nazwa_przestrzeni_nazw_przedmiotowa_dyskusji_2(frame,czy_uwzglednic_alternatywna_nazwe,i,"przedmiotowa"); </syntaxhighlight> Parametry funkcji: * {{Code|frame}} - tablica ramki tablicy transportu, * {{Code|czy_uwzglednic_alternatywna_nazwe}} - czy ma uwzględniać nazwę przestrzeni nazw domyślną szablonu, dostępne wartości: {{Code|false}}, w której nazwa domyślna nie jest uwzględniana wtedy, oraz {{Code|nil}} i {{Code|true}}, które oznaczają to samo, w tym jeżeli ona jest uwzględniana, wtedy jest brany parametr pierwszy dziecka, który musi istnieć przy takiej wartości tego parametru, tzn. {{Code|{{m|Pudełko|Nazwa przedmiotowej przestrzeni nazw 2|Szablon}}}}, nazwa domyślna zostanie zamieniona na przedmiotową, a jeżeli jest już taka, to żadnej zamiany nie ma, a jeśli nazwa uzyskana nazwy przestrzeni nazw jest w takim przypadku błędna, to brany jest ten element, a jeżeli nazwa domyślna jest błędna, czyli {{Code|{{m|Pudełko|Nazwa przedmiotowej przestrzeni nazw 2|Moja przestrzeń}}}}, wtedy funkcja zwraca stan błędu {{Code|(błąd)}}. * {{Code|i}} - numer zmiennej nazwy przestrzeni nazw. Funkcja wykorzystuje {{Code|{{sr|#p.Nazwa_przestrzeni_nazw_przedmiotowa_dyskusji_2(frame,...)|p=Pudełko/Pomocne}}}} do wyznaczania ogólnego nazwy przestrzeni nazw dla pozycji bazowej i numerkowej, tzn. dla pozycji: jeden, dwa, trzy,..., itd, i ich ogólnej. Parametr ramki tablicy transportu rodzica szablonu: * {{Code|nazwa przestrzeni nazw}}, {{Code|nazwa przestrzeni nazw 1}}, {{Code|nazwa przestrzeni nazw 2}}, {{Code|nazwa przestrzeni nazw 3}},..., {{Code|nazwa przestrzeni nazw i}} - nazwy przestrzeni nazw dla pozycji bazowej oraz zwykłej i ogólnej numerkowej, * {{Code|nazwa jednostki}}, {{Code|nazwa jednostki 1}}, {{Code|nazwa jednostki 2}}, {{Code|nazwa jednostki 3}},... - nazwy jednostek dla pozycji bazowej i numerkowej, * {{Code|typ jednostki}}, {{Code|typ jednostki 1}}, {{Code|typ jednostki 2}}, {{Code|typ jednostki 3}},..., {{Code|typ jednostki i}} - typy jednostek, którym odpowiadają pewne przestrzenie przedmiotowe, dla pozycji bazowej, numerkowej i ogólnej. Parametry ramki tablicy transportu dziecka: * Parametry dziecka są takie same jak rodzica dla funkcji pudełkowej plus tu wymienione, * {{Code|numer jednostki}} - jak parametr {{Code|i}} nie został ustawiony, to wtedy liczy się ta zmienna. Przykłady: <syntaxhighlight lang="mediawiki"> {{Nazwa szablonu|nazwa przestrzeni nazw=Wikibooks|nazwa przestrzeni nazw 1=Szablon|nazwa przestrzeni nazw i=|nazwa jednostki 2=Dyskusja Wikibooks:Strona}} </syntaxhighlight> W dziecku powiedzmy jest wywołanie, i szukamy nazwy przestrzeni nazw o numerze dwa, która została podana, ale istnieje za to jej wersji ogólna {{Code|nazwa przestrzeni nazw i}} i domyślna {{Code|nazwa przestrzeni nazw}}, ale wtedy dla tego numerkowego liczy się to ogólne z {{Code| i}}, a ponieważ ta nazwa jest pusta, więc będziemy liczyli nazwę przestrzeni nazw z {{Code|nazwa jednostki 2}}: <syntaxhighlight lang="mediawiki"> {{#invoke:Pudełko|Nazwa przedmiotowej przestrzeni nazw 2|numer jednostki=2}} </syntaxhighlight> Na podstawie powyższego przykładu otrzymamy wynik o schemacie, nie wyniku, bo tam nie ma zmiennej {{Code|nazwa przestrzeni nazw 1}}, ale jest {{Code|nazwa przestrzeni nazw i}}: <syntaxhighlight lang="mediawiki"> <!-- Ale nie "nazwa przestrzeni nazw 2", bo jej nie ma, ale za to istnieje "nazwa przestrzeni nazw i"; --> <!-- nazwa przestrzeni nazw 2=nazwa przestrzeni nazw i="", a nazwa jednostki 2="Dyskusja Wikibooks:Strona"; --> <!-- Czyli wynik: --> Wikibooks <!-- Widzimy, że wygenerowała się nazwa przestrzeni nazw, którą jest przestrzeń nieprogramowa, ale projektu, wychodząca z nazwy jednostek w tym przypadku z "nazwa jednostki 2"; --> </syntaxhighlight> Nie jest brana w tym powyższym przykładzie zmienna {{Code|nazwa przestrzeni nazw}}, bo jej nie ma, ale za to jest {{Code|nazwa przestrzeni nazw i}}, bo ona występuje jako parametr domyślny ogólny dla parametrów numerkowych. Tytaj jest używana jest zmienna {{Code|nazwa jednostki 2}} do wygenerowania ostatecznego wyniku, bo jak można zauważyć, parametry przestrzenne wskazują na przestrzeń główną, a nazwy jednostek już nie. Przykłady w wikikodzie: * {{Code|{{m|Pudełko|Nazwa przedmiotowej przestrzeni nazw 2|numer jednostki{{=}}2}}}} → {{Tt|{{#invoke:Pudełko|Nazwa przedmiotowej przestrzeni nazw 2|numer jednostki=2}}}} * {{Code|{{m|Pudełko|Nazwa przedmiotowej przestrzeni nazw 2|Dyskusja szablonu|nazwa przestrzeni nazw i{{=}}Moja przestrzeń|numer jednostki{{=}}2}}}} → {{Tt|{{#invoke:Pudełko|Nazwa przedmiotowej przestrzeni nazw 2|Dyskusja szablonu|nazwa przestrzeni nazw i=Moja przestrzeń|numer jednostki=2}}}} * {{Code|{{m|Pudełko|Nazwa przedmiotowej przestrzeni nazw 2|nazwa przestrzeni nazw 2{{=}}Dyskusja|nazwa jednostki 2{{=}}Dyskusja szablonu:Strona|numer jednostki{{=}}2}}}} → {{Tt|{{#invoke:Pudełko|Nazwa przedmiotowej przestrzeni nazw 2|nazwa przestrzeni nazw 2=Dyskusja|nazwa jednostki 2=Dyskusja szablonu:Strona|numer jednostki=2}}}} * {{Code|{{m|Pudełko|Nazwa przedmiotowej przestrzeni nazw 2|nazwa przestrzeni nazw i{{=}}Dyskusja|nazwa jednostki 2{{=}}Dyskusja szablonu:Strona|numer jednostki{{=}}2}}}} → {{Tt|{{#invoke:Pudełko|Nazwa przedmiotowej przestrzeni nazw 2|nazwa przestrzeni nazw i=Dyskusja|nazwa jednostki 2=Dyskusja szablonu:Strona|numer jednostki=2}}}} * {{Code|{{m|Pudełko|Nazwa przedmiotowej przestrzeni nazw 2|Dyskusja szablonu|nazwa przestrzeni nazw{{=}}Dyskusja|nazwa jednostki 2{{=}}Wikibooks:Strona|numer jednostki{{=}}2}}}} → {{Tt|{{#invoke:Pudełko|Nazwa przedmiotowej przestrzeni nazw 2|Dyskusja szablonu|nazwa przestrzeni nazw=Dyskusja|nazwa jednostki 2=Dyskusja Wikibooks:Strona|numer jednostki=2}}}} Powyżej dla przykładu podano parametry nie w rodzicu w szablonie, tylko w dziecku, jeśli chodzi o parametry nazw przestrzeni nazw i nazw jednostek, ale ich się za to nie powinno podawać w tych ramach, tylko w szablonach, w których wywoływane są te ramki pudełek {{Code|{{m|Pudełko}}}}, ale tak tutaj tak zrobiono by było najłatwiej sprawdzić działanie tego typu funkcji. Analogicznie możemy podawać parametry typu jednostki, np.: wywołaniu modułowym {{Code|{{m|Pudełko|Nazwa przedmiotowej przestrzeni nazw 2|typ jednostki 2{{=}}Podręcznik|nazwa jednostki 2{{=}}Dyskusja szablonu:Strona|numer jednostki{{=}}2}}}} (ale wtedy jest brana przestrzeń nazw z nazwy jednostki), ale o tym więcej w rozdziałach {{Code|{{sr|# p["Przedmiotowy typ jednostki 2"](frame,i)|p=Pudełko}}}} w „{{sr|#Funkcje typu jednostki|p=Pudełko}}”, on definiuje przestrzenie przedmiotowe, ale można użyć parametru dyskusji typu jednostki z wartością niepustą, pustą, czy nawet jej nie podamy, wtedy wyświetli się nazwa przestrzeni nazw przedmiotowej. Jeżeli typ jednostki wskazuje na przestrzeń nazw główną, wtedy się liczą parametry nazw jednostek. Również parametry typu jednostki nie powinno się podawać w dziecku w ramce, tylko w rodzicu w szablonie jako parametry, w którym ta ramka jest wywoływana, ale tutaj podano jedynie dla przykładu, jak najłatwiej sprawdzić działanie tych parametrów tej funkcji. Najpierw w funkcji nagłówku brane są parametry nazw przestrzeni nazw, a jeżeli ich nie ma, to parametry typu jednostki, a jeżeli nie ma lub parametry przestrzenne wskazują na przestrzeń główną, i nie ma nazwy jednostki, to generowane są nazwy tej funkcji na podstawie aktualnej strony. === {{Code|p["Nazwa przestrzeni nazw dyskusji 2"](frame,...)}} === Funkcja pisze nazwę przestrzeni nazw dyskusji jakikolwiek nazwy przestrzeni nazw (tzn. nazwę dyskusji nazwy przestrzenie nazw, czyli nie przedmiotowej, zamieniana jest na nią samą, czyli identyfikator przestrzeni się nie zmienia, a przedmiotową, nie dyskusji, przekształca się na dyskusji jej odpowiadającą, czyli w tym przypadku identyfikator przestrzeni zwiększa się o numer więcej), według, i nie zawsze tylko, podanej w zmiennej {{Code|nazwa przestrzeni nazw}} dla pozycja bazowej w podanych parametrach szablonu rodzicu ramki dziecka, lub dla innej pozycji należy parametr podawać w formie {{Code|nazwa przestrzeni nazw 1}}, {{Code|nazwa przestrzeni nazw 2}}, {{Code|nazwa przestrzeni nazw 3}},..., lub te parametry można podać w postaci ogólnej {{Code|nazwa przestrzeni nazw i}}. W tej funkcji trzeba też podawać parametry nazwy jednostek {{Code|nazwa jednostki}}, {{Code|nazwa jednostki 1}}, {{Code|nazwa jednostki 2}}, {{Code|nazwa jednostki 3}},... Parametry podaje się w parametrach rodzica wywołania tej funkcji {{Code|{{m|Pudełko|Nazwa przestrzeni nazw dyskusji 2}}}} (ale ich nie trzeba podawać w dziecku, ale można) i w parametrach dziecka, jeśli chodzi o zmienną {{Code|numer jednostki}}, czyli np.: {{Code|{{m|Pudełko|Nazwa przestrzeni nazw dyskusji 2|numer jednostki{{=}}<jakaś liczba całkowita dodatnia>}}}}. Te parametry przestrzenne zamiast w rodzicu w szablonie można podać w ramce dziecka, wtedy parametry dziecka mają pierwszeństwo. Przestrzeń nazw z parametrów nazw przestrzennych po przekształceniu może odpowiadać wartości przestrzeni głównej, to wtedy odpowiednia przestrzeń nazw z parametru nazwy jednostki się liczy w tej funkcji, wtedy jest liczona nazwa przestrzeni nazw dyskusji z tego parametru. Gdy parametry przestrzenne lub typ jednostki w drugim podejściu nie wskazują na przestrzeń główną, to wtedy działanie tej funkcji jest podobne do {{Code|{{sr|#p["Nazwa dyskusji przestrzeni nazw"](frame,...)|p=Pudełko}}}}. Definicja skrótowa funkcji: <syntaxhighlight lang="lua"> p["Nazwa przestrzeni nazw dyskusji 2"]=function(frame,czy_uwzglednic_alternatywna_nazwe,i)...end; </syntaxhighlight> Wtedy ciało funkcji tej, czyli jego definicja w środku, jest: <syntaxhighlight lang="lua"> local pudelko_pomocne_modul=require("Module:Pudełko/Pomocne"); return pudelko_pomocne_modul.Nazwa_przestrzeni_nazw_przedmiotowa_dyskusji_2(frame,czy_uwzglednic_alternatywna_nazwe,i,"dyskusja"); </syntaxhighlight> Parametry funkcji: * {{Code|frame}} - tablica ramki tablicy transportu, * {{Code|czy_uwzglednic_alternatywna_nazwe}} - czy ma uwzględniać nazwę przestrzeni nazw domyślną szablonu, dostępne wartości: {{Code|false}}, w której nazwa domyślna nie jest uwzględniana wtedy, oraz {{Code|nil}} i {{Code|true}}, które oznaczają to samo, w tym jeżeli ona jest uwzględniana, wtedy jest brany parametr pierwszy dziecka, który musi istnieć przy takiej wartości tego parametru, tzn. {{Code|{{m|Pudełko|Nazwa przestrzeni nazw dyskusji 2|Szablon}}}}, nazwa domyślna zostanie zamieniona na dyskusji, a jeżeli jest już taka, to nie ma takiej zamiany, a jeśli nazwa uzyskana nazwy przestrzeni nazw jest w takim przypadku błędna, to brany jest ten element, a jeżeli nazwa domyślna jest błędna, czyli {{Code|{{m|Pudełko|Nazwa przestrzeni nazw dyskusji 2|Moja przestrzeń}}}}, wtedy funkcja zwraca stan błędu {{Code|(błąd)}}. * {{Code|i}} - numer zmiennej nazwy przestrzeni nazw. Funkcja wykorzystuje {{Code|{{sr|#p.Nazwa_przestrzeni_nazw_przedmiotowa_dyskusji_2(frame,...)|p=Pudełko/Pomocne}}}} do wyznaczania ogólnego nazwy przestrzeni nazw dla pozycji bazowej i numerkowej, tzn. dla pozycji: jeden, dwa, trzy,..., itd, i ich ogólnej. Parametr ramki tablicy transportu rodzica szablonu: * {{Code|nazwa przestrzeni nazw}}, {{Code|nazwa przestrzeni nazw 1}}, {{Code|nazwa przestrzeni nazw 2}}, {{Code|nazwa przestrzeni nazw 3}},..., {{Code|nazwa przestrzeni nazw i}} - nazwy przestrzeni nazw dla pozycji bazowej oraz zwykłej i ogólnej numerkowej, * {{Code|nazwa jednostki}}, {{Code|nazwa jednostki 1}}, {{Code|nazwa jednostki 2}}, {{Code|nazwa jednostki 3}},... - nazwy jednostek dla pozycji bazowej i numerkowej, * {{Code|typ jednostki}}, {{Code|typ jednostki 1}}, {{Code|typ jednostki 2}}, {{Code|typ jednostki 3}},..., {{Code|typ jednostki i}} - typy jednostek, którym odpowiadają pewne przestrzenie przedmiotowe, dla pozycji bazowej, numerkowej i ogólnej. Parametry ramki tablicy transportu dziecka: * Parametry dziecka są takie same jak rodzica dla funkcji pudełkowej plus tu wymienione, * {{Code|numer jednostki}} - jak parametr {{Code|i}} nie został ustawiony, to wtedy liczy się ta zmienna. Przykłady: <syntaxhighlight lang="mediawiki"> {{Nazwa szablonu|nazwa przestrzeni nazw=Wikibooks|nazwa przestrzeni nazw 1=Szablon|nazwa przestrzeni nazw i=|nazwa jednostki 2=Wikibooks:Strona}} </syntaxhighlight> W dziecku powiedzmy jest wywołanie, i szukamy nazwy przestrzeni nazw o numerze dwa, która została podana, ale istnieje za to jej wersji ogólna {{Code|nazwa przestrzeni nazw i}} i domyślna {{Code|nazwa przestrzeni nazw}}, ale wtedy dla tego numerkowego liczy się to ogólne z {{Code| i}}, a ponieważ ta nazwa jest pusta, więc będziemy liczyli nazwę przestrzeni nazw z {{Code|nazwa jednostki 2}}: <syntaxhighlight lang="mediawiki"> {{#invoke:Pudełko|Nazwa przestrzeni nazw dyskusji 2|numer jednostki=2}} </syntaxhighlight> Na podstawie powyższego przykładu otrzymamy wynik o schemacie, nie wyniku, bo tam nie ma zmiennej {{Code|nazwa przestrzeni nazw 1}}, ale jest {{Code|nazwa przestrzeni nazw i}}: <syntaxhighlight lang="mediawiki"> <!-- Ale nie "nazwa przestrzeni nazw 2", bo jej nie ma, ale za to istnieje "nazwa przestrzeni nazw i"; --> <!-- nazwa przestrzeni nazw 2=nazwa przestrzeni nazw i="", a nazwa jednostki 2="Wikibooks:Strona"; --> <!-- Czyli wynik: --> Dyskusja Wikibooks <!-- Widzimy, że wygenerowała się nazwa przestrzeni nazw, którą jest przestrzeń nieprogramowa, ale dyskusji projektu, wychodząca z nazwy jednostek w tym przypadku z "nazwa jednostki 2"; --> </syntaxhighlight> Nie jest brana w tym powyższym przykładzie zmienna {{Code|nazwa przestrzeni nazw}}, bo jej nie ma, ale za to jest {{Code|nazwa przestrzeni nazw i}}, bo ona występuje jako parametr domyślny ogólny dla parametrów numerkowych. Tytaj jest używana jest zmienna {{Code|nazwa jednostki 2}} do wygenerowania ostatecznego wyniku, bo jak można zauważyć, parametry przestrzenne wskazują na przestrzeń główną, a nazwy jednostek już nie. Przykłady w wikikodzie: * {{Code|{{m|Pudełko|Nazwa przestrzeni nazw dyskusji 2|numer jednostki{{=}}2}}}} → {{Tt|{{#invoke:Pudełko|Nazwa przestrzeni nazw dyskusji 2|numer jednostki=2}}}} * {{Code|{{m|Pudełko|Nazwa przestrzeni nazw dyskusji 2|Szablon|nazwa przestrzeni nazw i{{=}}Moja przestrzeń|numer jednostki{{=}}2}}}} → {{Tt|{{#invoke:Pudełko|Nazwa przestrzeni nazw dyskusji 2|Szablon|nazwa przestrzeni nazw i=Moja przestrzeń|numer jednostki=2}}}} * {{Code|{{m|Pudełko|Nazwa przestrzeni nazw dyskusji 2|nazwa przestrzeni nazw 2{{=}}|nazwa jednostki 2{{=}}Szablon:Strona|numer jednostki{{=}}2}}}} → {{Tt|{{#invoke:Pudełko|Nazwa przestrzeni nazw dyskusji 2|nazwa przestrzeni nazw 2=|nazwa jednostki 2=Szablon:Strona|numer jednostki=2}}}} * {{Code|{{m|Pudełko|Nazwa przestrzeni nazw dyskusji 2|nazwa przestrzeni nazw i{{=}}|nazwa jednostki 2{{=}}Szablon:Strona|numer jednostki{{=}}2}}}} → {{Tt|{{#invoke:Pudełko|Nazwa przestrzeni nazw dyskusji 2|nazwa przestrzeni nazw i=|nazwa jednostki 2=Szablon:Strona|numer jednostki=2}}}} * {{Code|{{m|Pudełko|Nazwa przestrzeni nazw dyskusji 2|Szablon|nazwa przestrzeni nazw{{=}}|nazwa jednostki 2{{=}}Wikibooks:Strona|numer jednostki{{=}}2}}}} → {{Tt|{{#invoke:Pudełko|Nazwa przestrzeni nazw dyskusji 2|Szablon|nazwa przestrzeni nazw=|nazwa jednostki 2=Dyskusja Wikibooks:Strona|numer jednostki=2}}}} Powyżej dla przykładu podano parametry nie w rodzicu w szablonie, tylko w dziecku, jeśli chodzi o parametry nazw przestrzeni nazw i nazw jednostek, ale ich się za to nie powinno podawać w tych ramach, tylko w szablonach, w których wywoływane są te ramki pudełek {{Code|{{m|Pudełko}}}}, ale tak tutaj tak zrobiono by było najłatwiej sprawdzić działanie tego typu funkcji. Analogicznie możemy podawać parametry typu jednostki, np.: wywołaniu modułowym {{Code|{{m|Pudełko|Nazwa przestrzeni nazw dyskusji 2|typ jednostki 2{{=}}Podręcznik|nazwa jednostki 2{{=}}Szablon:Strona|numer jednostki{{=}}2}}}} (ale wtedy jest brana przestrzeń nazw z nazwy jednostki), ale o tym więcej w rozdziałach {{Code|{{sr|# p["Dyskusyjny typ jednostki 3"](frame,i)|p=Pudełko}}}} w „{{sr|#Funkcje typu jednostki|p=Pudełko}}”, one definiują przestrzenie dyskusji, ale można użyć parametru dyskusji typu jednostki z obojętnie jaką wartością niepustą, czy pustą, czy nawet jej nie podamy, wtedy wyświetli się nazwa przestrzeni nazw dyskusji. Jeżeli typ jednostki wskazuje na przestrzeń nazw główną, wtedy się liczą parametry nazw jednostek. Również parametry typu jednostki nie powinno się podawać w dziecku w ramce, tylko w rodzicu w szablonie jako parametry, w którym ta ramka jest wywoływana, ale tutaj podano jedynie dla przykładu, jak najłatwiej sprawdzić działanie tych parametrów tej funkcji. Najpierw w funkcji nagłówku brane są parametry nazw przestrzeni nazw, a jeżeli ich nie ma, to parametry typu jednostki, a jeżeli nie ma lub parametry przestrzenne wskazują na przestrzeń główną, i nie ma nazwy jednostki, to generowane są nazwy tej funkcji na podstawie aktualnej strony. == Funkcje pełnych nazw jednostki == === {{Code|p["Pełna nazwa dyskusji jednostki"](frame,i)}} === === {{Code|p["Pełna nazwa przedmiotowa jednostki"](frame,i)}} === === {{Code|p["Pełna nazwa jednostki"](frame,i)}} === == Funkcje pełnych nazw jednostki drugiej wersji == === {{Code|p["Pełna nazwa dyskusji jednostki 2"](frame,i)}} === === {{Code|p["Pełna nazwa przedmiotowa jednostki 2"](frame,i)}} === === {{Code|p["Pełna nazwa jednostki 2"](frame,i)}} === == Funkcje pełnych nazw jednostki trzeciej wersji == === {{Code|p["Pełna nazwa dyskusji jednostki 3"](frame,i)}} === === {{Code|p["Pełna nazwa przedmiotowa jednostki 3"](frame,i)}} === === {{Code|p["Pełna nazwa jednostki 3"](frame,i)}} === == Funkcje nazw jednostki == === {{Code|p["Nazwa jednostki"](frame,i)}} === == Funkcje nazw jednostki drugiej wersji == === {{Code|p["Nazwa jednostki 2"](frame,i)}} === === {{Code|p["Nazwa przedmiotowa jednostki 2"](frame,i)}} === === {{Code|p["Nazwa dyskusji jednostki 2"](frame,i)}} === == Funkcje nazw przestrzeni nazw trzeciej wersji == === {{Code|p["Nazwa przestrzeni nazw 3"](frame,i)}} === Funkcja pisze nazwę przestrzeni nazw, niezależnie, czy to jest przedmiotowa, czy dyskusji, według, i nie zawsze tylko, podanej w zmiennej {{Code|nazwa przestrzeni nazw}} dla pozycja bazowej w podanych parametrach szablonu rodzicu ramki dziecka, lub dla innej pozycji należy parametr podawać w formie {{Code|nazwa przestrzeni nazw 1}}, {{Code|Nazwa przestrzeni nazw 3}}, {{Code|nazwa przestrzeni nazw 3}},..., lub te parametry można podać w postaci ogólnej {{Code|nazwa przestrzeni nazw i}}. W tej funkcji trzeba też podawać parametry nazwy jednostek {{Code|nazwa jednostki}}, {{Code|nazwa jednostki 1}}, {{Code|nazwa jednostki 2}}, {{Code|nazwa jednostki 3}},... Parametry podaje się w parametrach rodzica wywołania tej funkcji {{Code|{{m|Pudełko|Nazwa przestrzeni nazw 3}}}} (ale ich nie trzeba podawać w dziecku, ale można) i w parametrach dziecka, jeśli chodzi o zmienną {{Code|numer jednostki}}, czyli np.: {{Code|{{m|Pudełko|Nazwa przestrzeni nazw 3|numer jednostki{{=}}<jakaś liczba całkowita dodatnia>}}}}. Te parametry przestrzenne zamiast w rodzicu w szablonie można podać w ramce dziecka, wtedy parametry dziecka mają pierwszeństwo. Przestrzeń nazw z parametrów nazw przestrzennych bazowych (bez numerka) może odpowiadać wartości przestrzeni głównej, to wtedy odpowiednia przestrzeń nazw z parametru nazwy jednostki się nie liczy w tej funkcji, aby się liczyła należy użyć funkcji {{Code|{{sr|#p["Nazwa przestrzeni nazw 2"](frame,...)|p=Pudełko}}}}. W tym przypadku funkcja działa jak {{Code|{{sr|#p["Nazwa przestrzeni nazw"](frame,...)|p=Pudełko}}}}. Przestrzeń nazw z parametrów nazw przestrzennych numerkowych może odpowiadać wartości przestrzeni głównej, to wtedy odpowiednia przestrzeń nazw z parametru nazwy jednostki się liczy w tej funkcji, wtedy jest liczona nazwa przestrzeni nazw z tego parametru. Gdy parametry przestrzenne lub typ jednostki w drugim podejściu nie wskazują na przestrzeń główną, to wtedy działanie tej funkcji jest podobne do {{Code|{{sr|#p["Nazwa przestrzeni nazw 2"](frame,...)|p=Pudełko}}}}. Definicja skrótowa funkcji: <syntaxhighlight lang="lua"> p["Nazwa przestrzeni nazw 3"]=function(frame,czy_uwzglednic_alternatywna_nazwe,i)...end; </syntaxhighlight> Wtedy ciało funkcji tej, czyli jego definicja w środku, jest: <syntaxhighlight lang="lua"> -- Jest liczony numer parametru nazwy przestrzeni nazw, domyslnie chodzi tu o numer bazowy parametrów przestrzennych; local numer_jednostki=i or frame.args["numer jednostki"]; local liczba_numeru_jednostki=((numer_jednostki)and(tonumber(numer_jednostki)) or 0); local pudelko_pomocne_modul=require("Module:Pudełko/Pomocne"); -- Liczy nazwę przestrzeni nazw dyskusji na podstawie podanych parametrów; return pudelko_pomocne_modul.Uzyskanie_nazw_jednostki(frame,0,liczba_numeru_jednostki,nil,2); </syntaxhighlight> Parametry funkcji: * {{Code|frame}} - tablica ramki tablicy transportu, * {{Code|czy_uwzglednic_alternatywna_nazwe}} - czy ma uwzględniać nazwę przestrzeni nazw domyślną szablonu, dostępne wartości: {{Code|false}}, w której nazwa domyślna nie jest uwzględniana wtedy, oraz {{Code|nil}} i {{Code|true}}, które oznaczają to samo, w tym jeżeli ona jest uwzględniana, wtedy jest brany parametr pierwszy dziecka, który musi istnieć przy takiej wartości tego parametru, tzn. {{Code|{{m|Pudełko|Nazwa przestrzeni nazw 3|Szablon}}}}, a jeśli nazwa uzyskana nazwy przestrzeni nazw jest w takim przypadku błędna, to brany jest ten element, a jeżeli nazwa domyślna jest błędna, czyli {{Code|{{m|Pudełko|Nazwa przestrzeni nazw 3|Moja przestrzeń}}}}, wtedy funkcja zwraca stan błędu {{Code|(błąd)}}. * {{Code|i}} - numer zmiennej nazwy przestrzeni nazw. Funkcja wykorzystuje {{Code|{{sr|#p.Uzyskanie_nazw_jednostki(frame,...)|p=Pudełko/Pomocne}}}} do wyznaczania ogólnego nazwy przestrzeni nazw dla pozycji bazowej i numerkowej, tzn. dla pozycji: jeden, dwa, trzy,..., itd, i ich ogólnej. Parametr ramki tablicy transportu rodzica szablonu: * {{Code|nazwa przestrzeni nazw}}, {{Code|nazwa przestrzeni nazw 1}}, {{Code|Nazwa przestrzeni nazw 3}}, {{Code|nazwa przestrzeni nazw 3}},..., {{Code|nazwa przestrzeni nazw i}} - nazwy przestrzeni nazw dla pozycji bazowej oraz zwykłej i ogólnej numerkowej, * {{Code|nazwa jednostki}}, {{Code|nazwa jednostki 1}}, {{Code|nazwa jednostki 2}}, {{Code|nazwa jednostki 3}},... - nazwy jednostek dla pozycji bazowej i numerkowej, * {{Code|typ jednostki}}, {{Code|typ jednostki 1}}, {{Code|typ jednostki 2}}, {{Code|typ jednostki 3}},..., {{Code|typ jednostki i}} - typy jednostek, którym odpowiadają pewne przestrzenie przedmiotowe, dla pozycji bazowej, numerkowej i ogólnej, ** {{Code|dyskusja typu jednostki}}, {{Code|dyskusja typu jednostki 1}}, {{Code|dyskusja typ jednostki 2}}, {{Code|dyskusja typ jednostki 3}},..., {{Code|dyskusja typ jednostki i}} - czy dany typ jednostki ma przedstawiać, jeśli niepusta, przestrzeń dyskusji dla pozycji bazowej, numerkowej i ogólnej. Parametry ramki tablicy transportu dziecka: * Parametry dziecka są takie same jak rodzica dla funkcji pudełkowej plus tu wymienione, * {{Code|numer jednostki}} - jak parametr {{Code|i}} nie został ustawiony, to wtedy liczy się ta zmienna. Przykłady: <syntaxhighlight lang="mediawiki"> {{Nazwa szablonu 1|nazwa przestrzeni nazw=Wikibooks|nazwa przestrzeni nazw=|nazwa przestrzeni nazw i=|nazwa jednostki=Szablon:Strona}} ---- {{Nazwa szablonu 2|nazwa przestrzeni nazw=Wikibooks|nazwa przestrzeni nazw 1=Szablon|nazwa przestrzeni nazw i=|nazwa jednostki 2=Wikibooks:Strona}} </syntaxhighlight> W pierwszym wywołaniu {{Code|nazwa przestrzeni nazw}} jest puste, ale dla tego bazowego (bez numerka) szukamy przestrzeni nazw, a więc ta nazwa jest ostateczna. ---- W drugim wywołaniu w dziecku powiedzmy jest wywołanie, i szukamy nazwy przestrzeni nazw o numerze dwa, która została podana, ale istnieje za to jej wersji ogólna {{Code|nazwa przestrzeni nazw i}} i domyślna {{Code|nazwa przestrzeni nazw}}, ale wtedy dla tego numerkowego liczy się to ogólne z {{Code| i}}, a ponieważ ta nazwa jest pusta, więc będziemy liczyli nazwę przestrzeni nazw z {{Code|nazwa jednostki 2}}. Odpowiadająca powyższemu kodowi, powiedzmy wikikod, według ich zawartości, przedstawia się: <syntaxhighlight lang="mediawiki"> {{#invoke:Pudełko|Nazwa przestrzeni nazw 3}} ---- {{#invoke:Pudełko|Nazwa przestrzeni nazw 3|numer jednostki=2}} </syntaxhighlight> Na podstawie powyższego przykładu otrzymamy wynik o schemacie, nie wyniku, bo tam nie ma zmiennej {{Code|nazwa przestrzeni nazw 1}}, ale jest {{Code|nazwa przestrzeni nazw i}}: <syntaxhighlight lang="mediawiki"> <!-- nazwa przestrzeni nazw=""; --> <!-- Czyli wynik: --> <!-- wynik pusty --> <!-- Widzimy, że wygenerowała się nazwa przestrzeni nazw, którą jest przestrzeń nazw główna, jest ciągiem pustym: ""; --> ---- <!-- Ale nie "nazwa przestrzeni nazw 2", bo jej nie ma, ale za to istnieje "nazwa przestrzeni nazw i"; --> <!-- nazwa przestrzeni nazw 2=nazwa przestrzeni nazw i="", a nazwa jednostki 2="Wikibooks:Strona"; --> <!-- Czyli wynik: --> Wikibooks <!-- Widzimy, że wygenerowała się nazwa przestrzeni nazw, którą jest przestrzeń nieprogramowa, ale projektu, wychodząca z nazwy jednostek w tym przypadku z "nazwa jednostki 2"; --> </syntaxhighlight> Dla parametrów numerkowych nie jest brana w tym powyższym przykładzie zmienna {{Code|nazwa przestrzeni nazw 2}}, bo jej nie ma, ale za to jest {{Code|nazwa przestrzeni nazw i}}, bo ona występuje jako parametr domyślny ogólny dla parametrów numerkowych. Tytaj jest używana jest zmienna {{Code|nazwa jednostki 2}} do wygenerowania ostatecznego wyniku, bo jak można zauważyć, parametry przestrzenne wskazują na przestrzeń główną, a nazwy jednostek już nie. Dla parametrów bazowych mamy zmienną {{Code|nazwa przestrzeni nazw}}, ona jest pusta, więc to zostanie wziete do ostatecznego wyniku. Przykłady w wikikodzie: * {{Code|{{m|Pudełko|Nazwa przestrzeni nazw 3|Szablon|nazwa przestrzeni nazw{{=}}Moja przestrzeń|nazwa jednostki{{=}}Wikibooks:Strona}}}} → {{Tt|{{#invoke:Pudełko|Nazwa przestrzeni nazw 3|Szablon|nazwa przestrzeni nazw=Moja przestrzeń|nazwa jednostki=Wikibooks:Szablon}}}} * {{Code|{{m|Pudełko|Nazwa przestrzeni nazw 3|Szablon|nazwa przestrzeni nazw 2{{=}}Moja przestrzeń|nazwa jednostki 2{{=}}Wikibooks:Strona}|numer jednostki{{=}}2}}}} → {{Tt|{{#invoke:Pudełko|Nazwa przestrzeni nazw 3|Szablon|nazwa przestrzeni nazw 2=Moja przestrzeń|nazwa jednostki 2=Wikibooks:Szablon|numer jednostki=2}}}} * {{Code|{{m|Pudełko|Nazwa przestrzeni nazw 3|nazwa przestrzeni nazw{{=}}|nazwa jednostki{{=}}Wikibooks:Strona}}}} → {{Tt|{{#invoke:Pudełko|Nazwa przestrzeni nazw 3|nazwa przestrzeni nazw=|nazwa jednostki=Wikibooks:Szablon}}}} * {{Code|{{m|Pudełko|Nazwa przestrzeni nazw 3|nazwa przestrzeni nazw 2{{=}}|nazwa jednostki 2{{=}}Wikibooks:Strona|numer jednostki{{=}}2}}}} → {{Tt|{{#invoke:Pudełko|Nazwa przestrzeni nazw 3|nazwa przestrzeni nazw 2=|nazwa jednostki 2=Wikibooks:Szablon|numer jednostki=2}}}} Powyżej dla przykładu podano parametry nie w rodzicu w szablonie, tylko w dziecku, jeśli chodzi o parametry nazw przestrzeni nazw i nazw jednostek, ale ich się za to nie powinno podawać w tych ramach, tylko w szablonach, w których wywoływane są te ramki pudełek {{Code|{{m|Pudełko}}}}, ale tak tutaj tak zrobiono by było najłatwiej sprawdzić działanie tego typu funkcji. Analogicznie możemy podawać parametry typu jednostki, np.: wywołaniu modułowym {{Code|{{m|Pudełko|Nazwa przestrzeni nazw 3|typ jednostki 2{{=}}Podręcznik|nazwa jednostki 2{{=}}Szablon:Strona|numer jednostki{{=}}2}}}} (ale wtedy jest brana przestrzeń nazw z nazwy jednostki), ale o tym więcej w rozdziałach {{Code|{{sr|#p["Typ jednostki 3"](frame,i)|p=Pudełko}}}} w „{{sr|#Funkcje typu jednostki|p=Pudełko}}”, on definiuje przestrzenie przedmiotowe, ale można użyć parametru dyskusji typu jednostki z wartością niepustą, wtedy wyświetli się nazwa przestrzeni nazw dyskusji. Jeżeli typ jednostki bazowy wskazuje na przestrzeń nazw główną, wtedy się nie liczą parametry nazw jednostek, a na numerkowy, wtedy się liczy. Również parametry typu jednostki nie powinno się podawać w dziecku w ramce, tylko w rodzicu w szablonie jako parametry, w którym ta ramka jest wywoływana, ale tutaj podano jedynie dla przykładu, jak najłatwiej sprawdzić działanie tych parametrów tej funkcji. Najpierw w funkcji nagłówku brane są parametry nazw przestrzeni nazw, a jeżeli ich nie ma, to parametry typu jednostki, a jeżeli nie ma lub parametry przestrzenne wskazują na przestrzeń główną, i nie ma nazwy jednostki, to generowane są nazwy tej funkcji na podstawie aktualnej strony. === {{Code|p["Nazwa przedmiotowej przestrzeni nazw 3"](frame,i)}} === Funkcja pisze przedmiotową nazwę przestrzeni nazw jakikolwiek nazwy przestrzeni nazw (tzn. nazwę przedmiotową nazwy przestrzenie nazw, czyli nie dyskusji, zamieniana jest na nią samą, czyli identyfikator przestrzeni się nie zmienia, a dyskusji, nie przedmiotową, przekształca się na przedmiotową jej odpowiadającą, czyli w tym przypadku identyfikator przestrzeni zmniejsza się o numer mniej), według podanej w zmiennej {{Code|nazwa przestrzeni nazw}} dla pozycja bazowej w podanych parametrach szablonu rodzicu ramki dziecka, lub dla innej pozycji należy parametr podawać w formie {{Code|nazwa przestrzeni nazw 1}}, {{Code|nazwa przestrzeni nazw 2}}, {{Code|nazwa przestrzeni nazw 3}},..., lub te parametry można podać w postaci ogólnej {{Code|nazwa przestrzeni nazw i}}. Parametry podaje się w parametrach rodzica wywołania tej funkcji {{Code|{{m|Pudełko|Nazwa przedmiotowej przestrzeni nazw 3}}}} (ale ich nie trzeba podawać w dziecku, ale można) i w parametrach dziecka, jeśli chodzi o zmienną {{Code|numer jednostki}}, czyli np.: {{Code|{{m|Pudełko|Nazwa przedmiotowej przestrzeni nazw 3|numer jednostki{{=}}<jakaś liczba całkowita dodatnia>}}}}. Te parametry przestrzenne zamiast w rodzicu w szablonie można podać w ramce dziecka, wtedy parametry dziecka mają pierwszeństwo. Parametry przestrzenne mogą mogą być podane w postaci przestrzeni przedmiotowej lub dyskusji, ale ta funkcja zawsze ją zamienia na przedmiotową. Przestrzeń nazw z parametrów nazw przestrzennych bazowych (bez numerka) może odpowiadać wartości przestrzeni głównej, to wtedy odpowiednia przestrzeń nazw z parametru nazwy jednostki się nie liczy w tej funkcji, aby się liczyła należy użyć funkcji {{Code|{{sr|#p["Nazwa przedmiotowej przestrzeni nazw 2"](frame,...)|p=Pudełko}}}}. W tym przypadku funkcja działa jak {{Code|{{sr|#p["Nazwa przedmiotowej przestrzeni nazw"](frame,...)|p=Pudełko}}}}. Przestrzeń nazw z parametrów nazw przestrzennych numerkowych może odpowiadać wartości przestrzeni głównej, to wtedy odpowiednia przestrzeń nazw z parametru nazwy jednostki się liczy w tej funkcji, wtedy jest liczona nazwa przestrzeni nazw z tego parametru. Gdy parametry przestrzenne lub typ jednostki w drugim podejściu nie wskazują na przestrzeń główną, to wtedy działanie tej funkcji jest podobne do {{Code|{{sr|#p["Nazwa przedmiotowej przestrzeni nazw 2"](frame,...)|p=Pudełko}}}}. Definicja skrótowa funkcji: <syntaxhighlight lang="lua"> p["Nazwa przedmiotowej przestrzeni nazw 3"]=function(frame,czy_uwzglednic_alternatywna_nazwe,i)...end; </syntaxhighlight> Wtedy ciało funkcji tej, czyli jego definicja w środku, jest: <syntaxhighlight lang="lua"> -- Jest liczony numer parametru nazwy przestrzeni nazw, domyslnie chodzi tu o numer bazowy parametrów przestrzennych; local numer_jednostki=i or frame.args["numer jednostki"]; local liczba_numeru_jednostki=((numer_jednostki)and(tonumber(numer_jednostki)) or 0); local pudelko_pomocne_modul=require("Module:Pudełko/Pomocne"); -- Liczy nazwę przestrzeni nazw przedmiotową na podstawie podanych parametrów; return pudelko_pomocne_modul.Uzyskanie_nazw_jednostki(frame,1,liczba_numeru_jednostki,nil,1); </syntaxhighlight> Parametry funkcji: * {{Code|frame}} - tablica ramki tablicy transportu, * {{Code|czy_uwzglednic_alternatywna_nazwe}} - czy ma uwzględniać nazwę przestrzeni nazw domyślną szablonu, dostępne wartości: {{Code|false}}, w której nazwa domyślna nie jest uwzględniana wtedy, oraz {{Code|nil}} i {{Code|true}}, które oznaczają to samo, w tym jeżeli ona jest uwzględniana, wtedy jest brany parametr pierwszy dziecka, który musi istnieć przy takiej wartości tego parametru, tzn. {{Code|{{m|Pudełko|Nazwa przedmiotowej przestrzeni nazw 3|Dyskusja szablonu}}}} - ta nazwa domyślna zostanie zamieniona na przedmiotową, a jak ona by była przedmiotowa, to żadnej zamiany by nie było, a nazwa uzyskana z nazwy przestrzeni nazw z parametrów przestrzennych jest w takim przypadku błędna, to w takim razie brany jest ten parametr, a jeżeli ta nazwa domyślna jest błędna, czyli {{Code|{{m|Pudełko|Nazwa przedmiotowej przestrzeni nazw 3|Moja przestrzeń}}}}, wtedy funkcja zwraca stan błędu {{Code|(błąd)}}. * {{Code|i}} - numer zmiennej nazwy przestrzeni nazw. Funkcja wykorzystuje {{Code|{{sr|#p.Uzyskanie_nazw_jednostki(frame,...)|p=Pudełko/Pomocne}}}} do wyznaczania ogólnego nazwy przestrzeni nazw dla pozycji bazowej i numerkowej, tzn. dla pozycji: jeden, dwa, trzy,..., itd, i ich ogólnej. Parametr ramki tablicy transportu rodzica szablonu: * {{Code|nazwa przestrzeni nazw}}, {{Code|nazwa przestrzeni nazw 1}}, {{Code|nazwa przestrzeni nazw 2}}, {{Code|nazwa przestrzeni nazw 3}},..., {{Code|nazwa przestrzeni nazw i}} - nazwy przestrzeni nazw dla pozycji bazowej oraz zwykłej i ogólnej numerkowej, * {{Code|typ jednostki}}, {{Code|typ jednostki 1}}, {{Code|typ jednostki 2}}, {{Code|typ jednostki 3}},..., {{Code|typ jednostki i}} - typy jednostek, którym odpowiadają pewne przestrzenie przedmiotowe, dla pozycji bazowej, numerkowej i ogólnej. Parametry ramki tablicy transportu dziecka: * Parametry dziecka są takie same jak rodzica dla funkcji pudełkowej plus tu wymienione, * {{Code|numer jednostki}} - jak parametr {{Code|i}} nie został ustawiony, to wtedy liczy się ta zmienna. Przykłady: <syntaxhighlight lang="mediawiki"> {{Nazwa szablonu 1|nazwa przestrzeni nazw=Wikibooks|nazwa przestrzeni nazw=|nazwa przestrzeni nazw i=|nazwa jednostki=Dyskusja Wikibooks:Strona}} ---- {{Nazwa szablonu 2|nazwa przestrzeni nazw=Wikibooks|nazwa przestrzeni nazw 1=Szablon|nazwa przestrzeni nazw i=|nazwa jednostki 2=Dyskusja Wikibooks:Strona}} </syntaxhighlight> W pierwszym wywołaniu {{Code|nazwa przestrzeni nazw}} jest puste, ale dla tego bazowego (bez numerka) szukamy przestrzeni nazw, a więc ta nazwa jest ostateczna. ---- W drugim wywołaniu w dziecku powiedzmy jest wywołanie, i szukamy nazwy przestrzeni nazw o numerze dwa, która została podana, ale istnieje za to jej wersji ogólna {{Code|nazwa przestrzeni nazw i}} i domyślna {{Code|nazwa przestrzeni nazw}}, ale wtedy dla tego numerkowego liczy się to ogólne z {{Code| i}}, a ponieważ ta nazwa jest pusta, więc będziemy liczyli nazwę przestrzeni nazw z {{Code|nazwa jednostki 2}}. Odpowiadająca powyższemu kodowi, powiedzmy wikikod, według ich zawartości, przedstawia się: <syntaxhighlight lang="mediawiki"> {{#invoke:Pudełko|Nazwa przedmiotowej przestrzeni nazw 3}} ---- {{#invoke:Pudełko|Nazwa przedmiotowej przestrzeni nazw 3|numer jednostki=2}} </syntaxhighlight> Na podstawie powyższego przykładu otrzymamy wynik o schemacie, nie wyniku, bo tam nie ma zmiennej {{Code|nazwa przestrzeni nazw 1}}, ale jest {{Code|nazwa przestrzeni nazw i}}: <syntaxhighlight lang="mediawiki"> <!-- nazwa przestrzeni nazw=""; --> <!-- Czyli wynik: --> <!-- wynik pusty --> <!-- Widzimy, że wygenerowała się nazwa przestrzeni nazw, którą jest przestrzeń nazw główna, jest ciągiem pustym: ""; --> ---- <!-- Ale nie "nazwa przestrzeni nazw 2", bo jej nie ma, ale za to istnieje "nazwa przestrzeni nazw i"; --> <!-- nazwa przestrzeni nazw 2=nazwa przestrzeni nazw i="", a nazwa jednostki 2="Dyskusja Wikibooks:Strona"; --> <!-- Czyli wynik: --> Wikibooks <!-- Widzimy, że wygenerowała się nazwa przestrzeni nazw, którą jest przestrzeń nieprogramowa, ale projektu, wychodząca z nazwy jednostek w tym przypadku z "nazwa jednostki 2"; --> </syntaxhighlight> Dla parametrów numerkowych nie jest brana w tym powyższym przykładzie zmienna {{Code|nazwa przestrzeni nazw 2}}, bo jej nie ma, ale za to jest {{Code|nazwa przestrzeni nazw i}}, bo ona występuje jako parametr domyślny ogólny dla parametrów numerkowych. Tytaj jest używana jest zmienna {{Code|nazwa jednostki 2}} do wygenerowania ostatecznego wyniku, bo jak można zauważyć, parametry przestrzenne wskazują na przestrzeń główną, a nazwy jednostek już nie. Dla parametrów bazowych mamy zmienną {{Code|nazwa przestrzeni nazw}}, ona jest pusta, więc to zostanie wziete do ostatecznego wyniku. Przykłady w wikikodzie: * {{Code|{{m|Pudełko|Nazwa przedmiotowej przestrzeni nazw 3|Dyskusja szablonu|nazwa przestrzeni nazw{{=}}Moja przestrzeń|nazwa jednostki{{=}}Dyskusja Wikibooks:Strona}}}} → {{Tt|{{#invoke:Pudełko|Nazwa przedmiotowej przestrzeni nazw 3|Dyskusja szablonu|nazwa przestrzeni nazw=Moja przestrzeń||nazwa jednostki=Dyskusja Wikibooks:Szablon}}}} * {{Code|{{m|Pudełko|Nazwa przedmiotowej przestrzeni nazw 3|Dyskusja szablonu|nazwa przestrzeni nazw 2{{=}}Moja przestrzeń|nazwa jednostki 2{{=}}Dyskusja Wikibooks:Strona|numer jednostki{{=}}2}}}} → {{Tt|{{#invoke:Pudełko|Nazwa przedmiotowej przestrzeni nazw 3|Dyskusja szablonu|nazwa przestrzeni nazw 2=Moja przestrzeń||nazwa jednostki 2=Dyskusja Wikibooks:Szablon|numer jednostki=2}}}} * {{Code|{{m|Pudełko|Nazwa przedmiotowej przestrzeni nazw 3|nazwa przestrzeni nazw{{=}}|nazwa jednostki{{=}}Dyskusja Wikibooks:Strona}}}} → {{Tt|{{#invoke:Pudełko|Nazwa przedmiotowej przestrzeni nazw 3|nazwa przestrzeni nazw=|nazwa jednostki=Dyskusja Wikibooks:Szablon}}}} * {{Code|{{m|Pudełko|Nazwa przedmiotowej przestrzeni nazw 3|nazwa przestrzeni nazw 2{{=}}|nazwa jednostki 2{{=}}Dyskusja Wikibooks:Strona|numer jednostki{{=}}2}}}} → {{Tt|{{#invoke:Pudełko|Nazwa przedmiotowej przestrzeni nazw 3|nazwa przestrzeni nazw 2=|nazwa jednostki 2=Dyskusja Wikibooks:Szablon|numer jednostki=2}}}} Powyżej dla przykładu podano parametry nie w rodzicu w szablonie, tylko w dziecku, jeśli chodzi o parametry nazw przestrzeni nazw, ale ich się za to nie powinno podawać w tych ramach, tylko w szablonach, w których wywoływane są te ramki pudełek {{Code|{{m|Pudełko}}}}, ale tak tutaj tak zrobiono by było najłatwiej sprawdzić działanie tego typu funkcji. Analogicznie możemy podawać parametry typu jednostki, np.: wywołaniu modułowym {{Code|{{m|Pudełko|Nazwa przedmiotowej przestrzeni nazw 3|typ jednostki 2{{=}}strona szablonu|numer jednostki{{=}}2}}}}, ale o tym więcej w rozdziałach {{Code|{{sr|# p["Przedmiotowy typ jednostki 3"](frame,i)|p=Pudełko}}}} w „{{sr|#Funkcje typu jednostki|p=Pudełko}}”, ale wtedy ta sama nazwa przestrzeni nazw reprezentowana przez {{Parametr|typ jednostki 2|strona szablonu}}, jest zamieniana na to samo, lepiej jest tutaj używać parametrów przestrzennych nazw niż typu jednostki, bo typ jednostki ma taką samą wartość dla przestrzeni przedmiotowej, co dyskusji. Tutaj parametr dyskusji typu jednostki bazowy i numerkowy ogólny, czy szczegółowy, nie gra roli, bo nawet, gdy wygenerujemy nazwę przestrzeni dyskusji za pomoca tego parametru, to i tak otrzymamy na samym końcu jego nazwę przedmiotową. Jeżeli typ jednostki bazowy wskazuje na przestrzeń nazw główną, wtedy się nie liczą parametry nazw jednostek, a na numerkowy, wtedy się liczy. Również parametry typu jednostki nie powinno się podawać w dziecku w ramce, tylko w rodzicu w szablonie jako parametry, w którym ta ramka jest wywoływana, ale tutaj podano jedynie dla przykładu, jak najłatwiej sprawdzić działanie tych parametrów tej funkcji. Najpierw w funkcji nagłówku brane są parametry nazw przestrzeni nazw, a jeżeli ich nie ma, to parametry typu jednostki, a jeżeli nie ma, to generowane są nazwy na podstawie aktualnego modułu. === {{Code|p["Nazwa przestrzeni nazw dyskusji 3"](frame,i)}} === Funkcja pisze nazwę przestrzeni nazw dyskusji jakikolwiek nazwy przestrzeni nazw (tzn. nazwę dyskusji nazwy przestrzenie nazw, czyli nie przedmiotowej, zamieniana jest na nią samą, czyli identyfikator przestrzeni się nie zmienia, a przedmiotową, nie dyskusji, przekształca się na dyskusji jej odpowiadającą, czyli w tym przypadku identyfikator przestrzeni zwiększa się o numer więcej), według, i nie zawsze tylko, podanej w zmiennej {{Code|nazwa przestrzeni nazw}} dla pozycja bazowej w podanych parametrach szablonu rodzicu ramki dziecka, lub dla innej pozycji należy parametr podawać w formie {{Code|nazwa przestrzeni nazw 1}}, {{Code|nazwa przestrzeni nazw 2}}, {{Code|nazwa przestrzeni nazw 3}},..., lub te parametry można podać w postaci ogólnej {{Code|nazwa przestrzeni nazw i}}. W tej funkcji trzeba też podawać parametry nazwy jednostek {{Code|nazwa jednostki}}, {{Code|nazwa jednostki 1}}, {{Code|nazwa jednostki 2}}, {{Code|nazwa jednostki 3}},... Parametry podaje się w parametrach rodzica wywołania tej funkcji {{Code|{{m|Pudełko|Nazwa przestrzeni nazw dyskusji 3}}}} (ale ich nie trzeba podawać w dziecku, ale można) i w parametrach dziecka, jeśli chodzi o zmienną {{Code|numer jednostki}}, czyli np.: {{Code|{{m|Pudełko|Nazwa przestrzeni nazw dyskusji 3|numer jednostki{{=}}<jakaś liczba całkowita dodatnia>}}}}. Te parametry przestrzenne zamiast w rodzicu w szablonie można podać w ramce dziecka, wtedy parametry dziecka mają pierwszeństwo. Przestrzeń nazw z parametrów nazw przestrzennych bazowych (bez numerka) może odpowiadać wartości przestrzeni głównej, to wtedy odpowiednia przestrzeń nazw z parametru nazwy jednostki się nie liczy w tej funkcji, aby się liczyła należy użyć funkcji {{Code|{{sr|#p["Nazwa przestrzeni nazw dyskusji 2"](frame,...)|p=Pudełko}}}}. W tym przypadku funkcja działa jak {{Code|{{sr|#p["Nazwa przestrzeni nazw dyskusji"](frame,...)|p=Pudełko}}}}. Przestrzeń nazw z parametrów nazw przestrzennych numerkowych może odpowiadać wartości przestrzeni głównej, to wtedy odpowiednia przestrzeń nazw z parametru nazwy jednostki się liczy w tej funkcji, wtedy jest liczona nazwa przestrzeni nazw z tego parametru. Gdy parametry przestrzenne lub typ jednostki w drugim podejściu nie wskazują na przestrzeń główną, to wtedy działanie tej funkcji jest podobne do {{Code|{{sr|#p["Nazwa przestrzeni nazw dyskusji 2"](frame,...)|p=Pudełko}}}}. Definicja skrótowa funkcji: <syntaxhighlight lang="lua"> p["Nazwa przestrzeni nazw dyskusji 3"]=function(frame,czy_uwzglednic_alternatywna_nazwe,i)...end; </syntaxhighlight> Wtedy ciało funkcji tej, czyli jego definicja w środku, jest: <syntaxhighlight lang="lua"> -- Jest liczony numer parametru nazwy przestrzeni nazw, domyslnie chodzi tu o numer bazowy parametrów przestrzennych; local numer_jednostki=i or frame.args["numer jednostki"]; local liczba_numeru_jednostki=((numer_jednostki)and(tonumber(numer_jednostki)) or 0); local pudelko_pomocne_modul=require("Module:Pudełko/Pomocne"); -- Liczy nazwę przestrzeni nazw dyskusji na podstawie podanych parametrów; return pudelko_pomocne_modul.Uzyskanie_nazw_jednostki(frame,2,liczba_numeru_jednostki,nil,1); </syntaxhighlight> Parametry funkcji: * {{Code|frame}} - tablica ramki tablicy transportu, * {{Code|czy_uwzglednic_alternatywna_nazwe}} - czy ma uwzględniać nazwę przestrzeni nazw domyślną szablonu, dostępne wartości: {{Code|false}}, w której nazwa domyślna nie jest uwzględniana wtedy, oraz {{Code|nil}} i {{Code|true}}, które oznaczają to samo, w tym jeżeli ona jest uwzględniana, wtedy jest brany parametr pierwszy dziecka, który musi istnieć przy takiej wartości tego parametru, tzn. {{Code|{{m|Pudełko|Nazwa przestrzeni nazw dyskusji 3|Szablon}}}}, nazwa domyślna zostatnie zamieniona na dyskusji, a jeśli jest już taka, to takiej transfomacji nie ma, a jeśli nazwa uzyskana nazwy przestrzeni nazw jest w takim przypadku błędna, a jeżeli nazwa domyślna jest błędna, czyli {{Code|{{m|Pudełko|Nazwa przestrzeni nazw dyskusji 3|Moja przestrzeń}}}}, wtedy funkcja zwraca stan błędu {{Code|(błąd)}}. * {{Code|i}} - numer zmiennej nazwy przestrzeni nazw. Funkcja wykorzystuje {{Code|{{sr|#p.Uzyskanie_nazw_jednostki(frame,...)|p=Pudełko/Pomocne}}}} do wyznaczania ogólnego nazwy przestrzeni nazw dla pozycji bazowej i numerkowej, tzn. dla pozycji: jeden, dwa, trzy,..., itd, i ich ogólnej. Parametr ramki tablicy transportu rodzica szablonu: * {{Code|nazwa przestrzeni nazw}}, {{Code|nazwa przestrzeni nazw 1}}, {{Code|nazwa przestrzeni nazw 2}}, {{Code|nazwa przestrzeni nazw 3}},..., {{Code|nazwa przestrzeni nazw i}} - nazwy przestrzeni nazw dla pozycji bazowej oraz zwykłej i ogólnej numerkowej, * {{Code|nazwa jednostki}}, {{Code|nazwa jednostki 1}}, {{Code|nazwa jednostki 2}}, {{Code|nazwa jednostki 3}},... - nazwy jednostek dla pozycji bazowej i numerkowej, * {{Code|typ jednostki}}, {{Code|typ jednostki 1}}, {{Code|typ jednostki 2}}, {{Code|typ jednostki 3}},..., {{Code|typ jednostki i}} - typy jednostek, którym odpowiadają pewne przestrzenie przedmiotowe, dla pozycji bazowej, numerkowej i ogólnej. Parametry ramki tablicy transportu dziecka: * Parametry dziecka są takie same jak rodzica dla funkcji pudełkowej plus tu wymienione, * {{Code|numer jednostki}} - jak parametr {{Code|i}} nie został ustawiony, to wtedy liczy się ta zmienna. Przykłady: <syntaxhighlight lang="mediawiki"> {{Nazwa szablonu 1|nazwa przestrzeni nazw=Wikibooks|nazwa przestrzeni nazw=|nazwa przestrzeni nazw i=|nazwa jednostki=Szablon:Strona}} ---- {{Nazwa szablonu 2|nazwa przestrzeni nazw=Wikibooks|nazwa przestrzeni nazw 1=Szablon|nazwa przestrzeni nazw i=|nazwa jednostki 2=Wikibooks:Strona}} </syntaxhighlight> W pierwszym wywołaniu {{Code|nazwa przestrzeni nazw}} jest puste, ale dla tego bazowego (bez numerka) szukamy przestrzeni nazw, a więc ta nazwa jest ostateczna. ---- W drugim wywołaniu w dziecku powiedzmy jest wywołanie, i szukamy nazwy przestrzeni nazw o numerze dwa, która została podana, ale istnieje za to jej wersji ogólna {{Code|nazwa przestrzeni nazw i}} i domyślna {{Code|nazwa przestrzeni nazw}}, ale wtedy dla tego numerkowego liczy się to ogólne z {{Code| i}}, a ponieważ ta nazwa jest pusta, więc będziemy liczyli nazwę przestrzeni nazw z {{Code|nazwa jednostki 2}}. Odpowiadająca powyższemu kodowi, powiedzmy wikikod, według ich zawartości, przedstawia się: <syntaxhighlight lang="mediawiki"> {{#invoke:Pudełko|Nazwa przestrzeni nazw 3}} ---- {{#invoke:Pudełko|Nazwa przestrzeni nazw 3|numer jednostki=2}} </syntaxhighlight> Na podstawie powyższego przykładu otrzymamy wynik o schemacie, nie wyniku, bo tam nie ma zmiennej {{Code|nazwa przestrzeni nazw 1}}, ale jest {{Code|nazwa przestrzeni nazw i}}: <syntaxhighlight lang="mediawiki"> <!-- nazwa przestrzeni nazw=""; --> <!-- Czyli wynik: --> Dyskusja <!-- Widzimy, że wygenerowała się nazwa przestrzeni nazw, którą jest przestrzeń nazw niegłówna, jest ciągiem niepustym; --> ---- <!-- Ale nie "nazwa przestrzeni nazw 2", bo jej nie ma, ale za to istnieje "nazwa przestrzeni nazw i"; --> <!-- nazwa przestrzeni nazw 2=nazwa przestrzeni nazw i="", a nazwa jednostki 2="Wikibooks:Strona"; --> <!-- Czyli wynik: --> Dyskusja Wikibooks <!-- Widzimy, że wygenerowała się nazwa przestrzeni nazw, którą jest przestrzeń nieprogramowa, ale projektu, wychodząca z nazwy jednostek w tym przypadku z "nazwa jednostki 2"; --> </syntaxhighlight> Dla parametrów numerkowych nie jest brana w tym powyższym przykładzie zmienna {{Code|nazwa przestrzeni nazw 2}}, bo jej nie ma, ale za to jest {{Code|nazwa przestrzeni nazw i}}, bo ona występuje jako parametr domyślny ogólny dla parametrów numerkowych. Tytaj jest używana jest zmienna {{Code|nazwa jednostki 2}} do wygenerowania ostatecznego wyniku, bo jak można zauważyć, parametry przestrzenne wskazują na przestrzeń główną, a nazwy jednostek już nie. Dla parametrów bazowych mamy zmienną {{Code|nazwa przestrzeni nazw}}, ona jest pusta, więc to zostanie wziete do ostatecznego wyniku. Przykłady w wikikodzie: * {{Code|{{m|Pudełko|Nazwa przestrzeni nazw dyskusji 3|Szablon|nazwa przestrzeni nazw{{=}}Moja przestrzeń|nazwa jednostki{{=}}Wikibooks:Strona}}}} → {{Tt|{{#invoke:Pudełko|Nazwa przestrzeni nazw dyskusji 3|Szablon|nazwa przestrzeni nazw=Moja przestrzeń|nazwa jednostki=Wikibooks:Szablon}}}} * {{Code|{{m|Pudełko|Nazwa przestrzeni nazw dyskusji 3|Szablon|nazwa przestrzeni nazw 2{{=}}Moja przestrzeń|nazwa jednostki 2{{=}}Wikibooks:Strona|numer jednostki{{=}}2}}}} → {{Tt|{{#invoke:Pudełko|Nazwa przestrzeni nazw dyskusji 3|Szablon|nazwa przestrzeni nazw 2=Moja przestrzeń|nazwa jednostki 2=Wikibooks:Szablon|numer jednostki=2}}}} * {{Code|{{m|Pudełko|Nazwa przestrzeni nazw dyskusji 3|nazwa przestrzeni nazw{{=}}|nazwa jednostki{{=}}Wikibooks:Strona}}}} → {{Tt|{{#invoke:Pudełko|Nazwa przestrzeni nazw dyskusji 3|nazwa przestrzeni nazw=|nazwa jednostki=Wikibooks:Szablon}}}} * {{Code|{{m|Pudełko|Nazwa przestrzeni nazw dyskusji 3|nazwa przestrzeni nazw 2{{=}}|nazwa jednostki 2{{=}}Wikibooks:Strona|numer jednostki{{=}}2}}}} → {{Tt|{{#invoke:Pudełko|Nazwa przestrzeni nazw dyskusji 3|nazwa przestrzeni nazw 2=|nazwa jednostki 2=Wikibooks:Szablon|numer jednostki=2}}}} Powyżej dla przykładu podano parametry nie w rodzicu w szablonie, tylko w dziecku, jeśli chodzi o parametry nazw przestrzeni nazw i nazw jednostek, ale ich się za to nie powinno podawać w tych ramach, tylko w szablonach, w których wywoływane są te ramki pudełek {{Code|{{m|Pudełko}}}}, ale tak tutaj tak zrobiono by było najłatwiej sprawdzić działanie tego typu funkcji. Analogicznie możemy podawać parametry typu jednostki, np.: wywołaniu modułowym {{Code|{{m|Pudełko|Nazwa przestrzeni nazw dyskusji 3|typ jednostki 2{{=}}Podręcznik|nazwa jednostki 2{{=}}Szablon:Strona|numer jednostki{{=}}2}}}} (ale wtedy jest brana przestrzeń nazw z nazwy jednostki), ale o tym więcej w rozdziałach {{Code|{{sr|# p["Dyskusyjny typ jednostki 3"](frame,i)|p=Pudełko}}}} w „{{sr|#Funkcje typu jednostki|p=Pudełko}}”, one definiują przestrzenie dyskusji, ale można użyć parametru dyskusji typu jednostki z obojętnie jaką wartością niepustą, czy pustą, czy nawet jej nie podamy, wtedy wyświetli się nazwa przestrzeni nazw dyskusji. Jeżeli typ jednostki bazowy wskazuje na przestrzeń nazw główną, wtedy się nie liczą parametry nazw jednostek, a na numerkowy, wtedy się liczy. Również parametry typu jednostki nie powinno się podawać w dziecku w ramce, tylko w rodzicu w szablonie jako parametry, w którym ta ramka jest wywoływana, ale tutaj podano jedynie dla przykładu, jak najłatwiej sprawdzić działanie tych parametrów tej funkcji. Najpierw w funkcji nagłówku brane są parametry nazw przestrzeni nazw, a jeżeli ich nie ma, to parametry typu jednostki, a jeżeli nie ma lub parametry przestrzenne wskazują na przestrzeń główną, i nie ma nazwy jednostki, to generowane są nazwy tej funkcji na podstawie aktualnej strony. == Funkcje nazw jednostki trzeciej wersji == === {{Code|p["Nazwa jednostki 3"](frame,i)}} === === {{Code|p["Nazwa przedmiotowa jednostki 3"](frame,i)}} === === {{Code|p["Nazwa dyskusji jednostki 3"](frame,i)}} === == Funkcje typu jednostki == === {{Code|p["Typ jednostki"](frame,i)}} === === {{Code|p["Typ jednostki 2"](frame,i)}} === === {{Code|p["Typ jednostki 3"](frame,i)}} === === Funkcje typu jednostki przedmiotowe === ==== {{Code|p["Przedmiotowy typ jednostki"](frame,i)}} ==== ==== {{Code|p["Przedmiotowy typ jednostki 2"](frame,i)}} ==== ==== {{Code|p["Przedmiotowy typ jednostki 3"](frame,i)}} ==== === Fukcje typu jednostki dyskusji === ==== {{Code|p["Dyskusyjny typ jednostki"](frame,i)}} ==== ==== {{Code|p["Dyskusyjny typ jednostki 2"](frame,i)}} ==== ==== {{Code|p["Dyskusyjny typ jednostki 3"](frame,i)}} ==== == Funkcje chech pudełka == === {{Code|p["Cecha pudełka"](frame)}} === === {{Code|p["Przedmiotowa cecha pudełka"](frame)}} === === {{Code|p["Dyskusyjna cecha pudełka"](frame)}} === == Fukcje ogólnego pudełka == === {{Code|p["Ogólne pudełko"](frame)}} === == Funkcje ogólne == === {{Code|p["Tekst pudełka"](frame)}} === == Funkcje błędów pudełka == === {{Code|p["Błędy pudełka"](frame)}} === === {{Code|p["Przedmiotowe błędy pudełka"](frame)}} === === {{Code|p["Dyskusyjne błędy pudełka"](frame)}} === == Funkcje nazw stron == === {{Code|p["Nazwa strony głównej projektu"](frame,i)}} === === {{Code|p["Nazwa strony głównej dla dzieci projektu"](frame,i)}} === == Funkcje kodów == === {{Code|p["Kod języka"](frame,i)}} === === {{Code|p["Kod projektu"](frame,i)}} === === {{Code|p["Klucz projektu"](frame,i)}} === == Funkcje wiki == === {{Code|p["Inny niż język bieżący wiki"](frame)}} === === {{Code|p["Inne niż lokalne wiki"](frame)}} === === {{Code|p["Inne niż bieżące wiki"](frame)}} === == Funkcje typów parametrów, czy podane je == === {{Code|p["Podano parametry nienazwane"](frame)}} === === {{Code|p["Podano parametry numerowane"](frame)}} === === {{Code|p["Podano parametry nazwane"](frame)}} === == Funkcje kodów tego projektu == === {{Code|p["Kod projektu tego projektu"](frame)}} === === {{Code|p["Kod języka tego projektu"](frame)}} === === {{Code|p["Klucz projektu tego projektu"](frame)}} === == Funkcje stron == === {{Code|p["Strona główna tego projektu"](frame)}} === === {{Code|p["Strona główna dla dzieci tego projektu"](frame)}} === == Funkcje nazw stron drugiej wersji == === {{Code|p["Nazwa strony głównej dla dzieci projektu 2"](frame)}} === === {{Code| p["Nazwa strony głównej projektu 2"](frame)}} === {{BrClear}} <noinclude><!-- -->{{ProstaStronaKoniec}}<!-- -->{{Kategoria|Opisy funkcji, w Lua w Scribunto, w modułach}}<!-- --></noinclude> iof1xay61aebp9yuts6ec4lyyztkphu 540462 540461 2026-04-24T06:11:49Z Persino 2851 /* {{Code|p["Nazwa przestrzeni nazw dyskusji 3"](frame,i)}} */ 540462 wikitext text/x-wiki <noinclude>{{ProstaStronaStart | nagłówek = {{Podrozdział|{{ld2|Pudełko}}|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 pudelko_modul=require("Module:Pudełko"); </syntaxhighlight> dzięki, któremu można wypisywać funkcje należącego do niego. Posługuje się na parametrach pudełkowych {{Parametr|nazwa przestrzeni nazw}} (czy też bez numerka {{Parametr|nazwa przestrzeni nazw i}} dla tego numerowanego) lub te z numerkiem po jednej spacji w nich (ale nie dla tego z końcówką {{Code| i}}) mogą zostać użyte jako parametry szablonu. Moduł {{Code|{{ld2|Pudełko}}}} przedstawia funkcje nazw w oparciu o funkcje nazw {{Code|{{ld2|Nazwy}}}}, generuje on nazwy za pomocą parametrów pudełkowych podanych poniżej. Parametr {{Parametr|nazwa jednostki}} (lub parametr {{Parametr|cel}} dla numerka tego pierwszego, tego alternatywnego), lub te z numerkiem po jednej spacji w nazwie parametru, albo numerowane numerkami {{Code|1}}, {{Code|2}},..., mogą zostać użyte jako parametry szablonu. Parametry określające rodzaj jednostki {{Parametr|typ jednostki}} z {{Parametr|dyskusja typu jednostki}}, itp. w wersjach z numerkiem po jednej spacji w nich mogą zostać użyte jako parametry szablonu. A te tymi numerowanymi liczbami naturalnymi {{Tt|nazwy jednostki}} od jedynki wzwyż poprzez szablon, w którym są one użyte, one też mogą być użyte z dwukropkiem, te numerowane, na samym początku nazwy, wtedy one są traktowane jako pełne nazwy strony, i wtedy one nie zostaną z interpretowane, że do nich trzeba użyć parametr odpowiedni z nazwą przetrzeni nazw z tego numerowanego, czy ogólny, aby utworzyć znów inną pełną nazwę strony dla tego numerka. Zestawienie: * {{Code|nazwa przestrzeni nazw}} i {{Code|nazwa przestrzeni nazw i}} (ogólna nazwa przestrzeni nazw dla wszystkich numerków, i tych numerowanych jednostek) - i to pierwsze z numerkiem, tzn. {{Code|nazwa przestrzeni nazw 1}}, {{Code|nazwa przestrzeni nazw 2}}, ..., * {{Code|nazwa jednostki}} - i te z numerkiem: {{Code|nazwa jednostki 1}}, {{Code|nazwa jednostki 2}}, ..., lub gdy jest zamiast tego parametrem numerowany, {{Code|1}}, {{Code|2}},..., który dla tego pierwszego może być uznany jako: {{Code|cel}} {{=}} {{Code|1}}, * {{Code|typ jednostki}} (parametr bazowy) i {{Code|typ jednostki i}} (parametr domyślny numerkowy) - i te z numerkiem: {{Code|typ jednostki 1}}, {{Code|typ jednostki 2}}, ..., tzn. gdy chcemy określić z jakim typem jednostki mamy do czynienia w zależności do jakiej przestrzeni nazw należy, a w danej, czy jest on np. programowy, czy tylko jest opisem, jak to bywa w szablonach {{Np|Template|link=tak}}, podobnie jest w przypadku {{Np|Module|link=tak}}, czy jak jest w innych przestrzeniach nazw, ** {{Code|dyskusja typu jednostki}} (parametr bazowy) i {{Code|dyskusja typu jednostki i}} (parametr domyślny numerkowy) - i te z numerkiem: {{Code|dyskusja typu jednostki 1}}, {{Code|dyskusja typu jednostki 2}}, ..., gdy chcemy określić wartością niepustą,że chodzi tutaj o typ jednostki. == {{Code|p.CzyNiepoprawnaNazwa(nazwa_jednostki)}} == Funkcja sprawdzajaca, czy jest poprawnie podana nazwa jednostki, czy ma poprawną nazwę. Znakami tymi, z których nie powinna składać się nazwa jest {{Code|<nowiki>{}<>|[]#\n</nowiki>}} i dodatkowo znak {{Code|&#127;}} (kod {{Code|{{Nowiki|&#127;}}}}). Też nie może składać się z trzech znaków tyldy, tzn. {{Code|<nowiki>~~~</nowiki>}}. Również w swojej budowie nie może składać się ze kodów {{Strong|HTML}} literowych o wzorze {{Code|{{Nowiki|&(%a+);}}}}. Natomiast może składać się z {{Code|{{Nowiki|&#(%d+);}}}} i {{Code|{{Nowiki|&#x(%x+);}}}}, ale w pierw te kody muszą być zamienione na normalne znaki. Skrótowa definicja funkcji: <syntaxhighlight lang="lua"> function p.CzyNiepoprawnaNazwa(nazwa_jednostki)...end; </syntaxhighlight> Wtedy ciało funkcji tej, czyli jego definicja w środku, jest: <syntaxhighlight lang="lua"> -- Moduł: "Moduł:Html/dane", służy do ładowania znaku o kodzie HTML "&#127;"; local html_dane_modul=mw.loadData("Module:Html/dane"); return mw.ustring.match(nazwa_jednostki,"[{}<>|%[%]#\n"..html_dane_modul.znak_127.."]+") or mw.ustring.match(nazwa_jednostki,"~~~") or mw.ustring.match(nazwa_jednostki,"&(%a+);"); </syntaxhighlight> Parametry: * {{Code|nazwa_jednostki}} - nazwa jednostki do sprawdzenia. Przykłady: <syntaxhighlight lang="lua"> local pudelko_modul=require("Module:Pudełko"); -- Podana przykładowa niepoprawna nazwa jedostki local nazwa_jednostki="Nazwa pliku [[Nazwa linku w pliku]]"; -- Fukcja zwróci wartość: local czy_poprawna_nazwa=true; local czy_poprawna_nazwa=pudelko_modul.CzyNiepoprawnaNazwa(nazwa_jednostki); </syntaxhighlight> == Funkcje nazw przestrzeni nazw == === {{Code|p["Nazwa przestrzeni nazw"](frame,...)}} === Funkcja pisze nazwę przestrzeni nazw, niezależnie, czy to jest przedmiotowa, czy dyskusji, według podanej w zmiennej {{Code|nazwa przestrzeni nazw}} dla pozycja bazowej w podanych parametrach szablonu rodzicu ramki dziecka, lub dla innej pozycji należy parametr podawać w formie {{Code|nazwa przestrzeni nazw 1}}, {{Code|nazwa przestrzeni nazw 2}}, {{Code|nazwa przestrzeni nazw 3}},..., lub te parametry można podać w postaci ogólnej {{Code|nazwa przestrzeni nazw i}}. Parametry podaje się w parametrach rodzica wywołania tej funkcji {{Code|{{m|Pudełko|Nazwa przestrzeni nazw}}}} (ale ich nie trzeba podawać w dziecku, ale można) i w parametrach dziecka, jeśli chodzi o zmienną {{Code|numer jednostki}}, czyli np.: {{Code|{{m|Pudełko|Nazwa przestrzeni nazw|numer jednostki{{=}}<jakaś liczba całkowita dodatnia>}}}}. Te parametry przestrzenne zamiast w rodzicu w szablonie można podać w ramce dziecka, wtedy parametry dziecka mają pierwszeństwo. Przestrzeń nazw z parametrów nazw przestrzennych może odpowiadać wartości przestrzeni głównej, to wtedy odpowiednia przestrzeń nazw z parametru nazwy jednostki się nie liczy w tej funkcji, aby się liczyła należy użyć funkcji {{Code|{{sr|#p["Nazwa przestrzeni nazw 2"](frame,...)|p=Pudełko}}}}. Definicja skrótowa funkcji: <syntaxhighlight lang="lua"> p["Nazwa przestrzeni nazw"]=function(frame,czy_uwzglednic_alternatywna_nazwe,i)...end; </syntaxhighlight> Wtedy ciało funkcji tej, czyli jego definicja w środku, jest: <syntaxhighlight lang="lua"> -- Jest liczony numer parametru nazwy przestrzeni nazw, domyslnie chodzi tu o numer bazowy parametrów przestrzennych; local numer_jednostki=i or frame.args["numer jednostki"]; local liczba_numer_jednostki=((numer_jednostki)and(tonumber(numer_jednostki))or 0); local pudelko_pomocne_modul=require("Module:Pudełko/Pomocne"); -- Liczy nazwę przestrzeni nazw na podstawie podanych parametrów; return pudelko_pomocne_modul.Nazwa_przestrzeni_nazw(frame,0, czy_uwzglednic_alternatywna_nazwe,liczba_numer_jednostki); </syntaxhighlight> Parametry funkcji: * {{Code|frame}} - tablica ramki tablicy transportu, * {{Code|czy_uwzglednic_alternatywna_nazwe}} - czy ma uwzględniać nazwę przestrzeni nazw domyślną szablonu, dostępne wartości: {{Code|false}}, w której nazwa domyślna nie jest uwzględniana wtedy, oraz {{Code|nil}} i {{Code|true}}, które oznaczają to samo, w tym jeżeli ona jest uwzględniana, wtedy jest brany parametr pierwszy dziecka, który musi istnieć przy takiej wartości tego parametru, tzn. {{Code|{{m|Pudełko|Nazwa przestrzeni nazw|Szablon}}}}, a ten element jest używany, gdy nazwa uzyskana nazwy przestrzeni nazw jest w takim przypadku błędna, a jeżeli wtedy nazwa domyślna jest błędna, czyli {{Code|{{m|Pudełko|Nazwa przestrzeni nazw|Moja przestrzeń}}}}, wtedy funkcja zwraca stan błędu {{Code|(błąd)}}. * {{Code|i}} - numer zmiennej nazwy przestrzeni nazw. Funkcja wykorzystuje {{Code|{{sr|#p.Nazwa_przestrzeni_nazw(frame,...)|p=Pudełko/Pomocne}}}} do wyznaczania ogólnego nazwy przestrzeni nazw dla pozycji bazowej i numerkowej, tzn. dla pozycji: jeden, dwa, trzy,..., itd, i ich ogólnej. Parametr ramki tablicy transportu rodzica szablonu: * {{Code|nazwa przestrzeni nazw}}, {{Code|nazwa przestrzeni nazw 1}}, {{Code|nazwa przestrzeni nazw 2}}, {{Code|nazwa przestrzeni nazw 3}},..., {{Code|nazwa przestrzeni nazw i}} - nazwy przestrzeni nazw dla pozycji bazowej oraz zwykłej i ogólnej numerkowej, * {{Code|typ jednostki}}, {{Code|typ jednostki 1}}, {{Code|typ jednostki 2}}, {{Code|typ jednostki 3}},..., {{Code|typ jednostki i}} - typy jednostek, którym odpowiadają pewne przestrzenie przedmiotowe, dla pozycji bazowej, numerkowej i ogólnej, ** {{Code|dyskusja typu jednostki}}, {{Code|dyskusja typu jednostki 1}}, {{Code|dyskusja typ jednostki 2}}, {{Code|dyskusja typ jednostki 3}},..., {{Code|dyskusja typ jednostki i}} - czy dany typ jednostki ma przedstawiać, jeśli niepusta, przestrzeń dyskusji dla pozycji bazowej, numerkowej i ogólnej. Parametry ramki tablicy transportu dziecka: * Parametry dziecka są takie same jak rodzica dla funkcji pudełkowej plus tu wymienione, * {{Code|numer jednostki}} - jak parametr {{Code|i}} nie został ustawiony, to wtedy liczy się ta zmienna. Przykłady: <syntaxhighlight lang="mediawiki"> {{Nazwa szablonu|nazwa przestrzeni nazw=Wikibooks|nazwa przestrzeni nazw 2=Szablon|nazwa przestrzeni nazw i=Moduł}} </syntaxhighlight> W dziecku powiedzmy jest wywołanie, i szukamy nazwy przestrzeni nazw o numerze dwa, która nie została podana, ale istnieje za to jej wersji ogólna {{Code|nazwa przestrzeni nazw i}} i domyślna {{Code|nazwa przestrzeni nazw}}: <syntaxhighlight lang="mediawiki"> {{#invoke:Pudełko|Nazwa przestrzeni nazw|numer jednostki=1}} </syntaxhighlight> Na podstawie powyższego przykładu otrzymamy wynik o schemacie, nie wyniku, bo tam nie ma zmiennej {{Code|nazwa przestrzeni nazw 1}}, ale jest {{Code|nazwa przestrzeni nazw i}}: <syntaxhighlight lang="mediawiki"> <!-- Ale nie "nazwa przestrzeni nazw", bo jej nie ma, ale za to istnieje "nazwa przestrzeni nazw i"; --> <!-- nazwa przestrzeni nazw 2=nazwa przestrzeni nazw i=Moduł; --> <!-- Czyli wynik: --> Moduł <!-- Widzimy, że wygenerowała się nazwa przestrzeni nazw, którą jest przestrzeń programowa, którą również jest "Szablon"; --> </syntaxhighlight> Nie jest brana w tym powyższym przykładzie zmienna {{Code|nazwa przestrzeni nazw}}, bo jej nie ma, ale za to jest {{Code|nazwa przestrzeni nazw i}}, bo ona występuje jako parametr domyślny ogólny dla parametrów numerkowych. Przykłady w wikikodzie: * {{Code|{{m|Pudełko|Nazwa przestrzeni nazw|numer jednostki{{=}}2}}}} → {{Tt|{{#invoke:Pudełko|Nazwa przestrzeni nazw|numer jednostki=2}}}} * {{Code|{{m|Pudełko|Nazwa przestrzeni nazw|Szablon|nazwa przestrzeni nazw i{{=}}Moja przestrzeń|numer jednostki{{=}}2}}}} → {{Tt|{{#invoke:Pudełko|Nazwa przestrzeni nazw|Szablon|nazwa przestrzeni nazw i=Moja przestrzeń|numer jednostki=2}}}} * {{Code|{{m|Pudełko|Nazwa przestrzeni nazw|nazwa przestrzeni nazw 2{{=}}Szablon|numer jednostki{{=}}2}}}} → {{Tt|{{#invoke:Pudełko|Nazwa przestrzeni nazw|nazwa przestrzeni nazw 2=Szablon|numer jednostki=2}}}} * {{Code|{{m|Pudełko|Nazwa przestrzeni nazw|nazwa przestrzeni nazw 2{{=}}Szablon|numer jednostki{{=}}2}}}} → {{Tt|{{#invoke:Pudełko|Nazwa przestrzeni nazw|nazwa przestrzeni nazw i=Szablon|numer jednostki=2}}}} * {{Code|{{m|Pudełko|Nazwa przestrzeni nazw|nazwa przestrzeni nazw{{=}}Szablon|numer jednostki{{=}}2}}}} → {{Tt|{{#invoke:Pudełko|Nazwa przestrzeni nazw|nazwa przestrzeni nazw=Szablon|numer jednostki=2}}}} Powyżej dla przykładu podano parametry nie w rodzicu w szablonie, tylko w dziecku, jeśli chodzi o parametry nazw przestrzeni nazw, ale ich się za to nie powinno podawać w tych ramach, tylko w szablonach, w których wywoływane są te ramki pudełek {{Code|{{m|Pudełko}}}}, ale tak tutaj tak zrobiono by było najłatwiej sprawdzić działanie tego typu funkcji. Analogicznie możemy podawać parametry typu jednostki, np.: wywołaniu modułowym {{Code|{{m|Pudełko|Nazwa przestrzeni nazw|typ jednostki 2{{=}}strona szablonu|numer jednostki{{=}}2}}}}, ale o tym więcej w rozdziałach {{Code|{{sr|# p["Typ jednostki"](frame,i)|p=Pudełko}}}} w „{{sr|#Funkcje typu jednostki|p=Pudełko}}”, on definiuje przestrzenie przedmiotowe, ale można użyć parametru dyskusji typu jednostki z wartością niepustą, wtedy wyświetli się nazwa przestrzeni nazw dyskusji. Również parametry typu jednostki nie powinno się podawać w dziecku w ramce, tylko w rodzicu w szablonie jako parametry, w którym ta ramka jest wywoływana, ale tutaj podano jedynie dla przykładu, jak najłatwiej sprawdzić działanie tych parametrów tej funkcji. Najpierw w funkcji nagłówku brane są parametry nazw przestrzeni nazw, a jeżeli ich nie ma, to parametry typu jednostki, a jeżeli nie ma, to generowane są nazwy na podstawie aktualnego modułu. === {{Code|p["Nazwa przedmiotowej przestrzeni nazw"](frame,...)}} === Funkcja pisze przedmiotową nazwę przestrzeni nazw jakikolwiek nazwy przestrzeni nazw (tzn. nazwę przedmiotową nazwy przestrzenie nazw, czyli nie dyskusji, zamieniana jest na nią samą, czyli identyfikator przestrzeni się nie zmienia, a dyskusji, nie przedmiotową, przekształca się na przedmiotową jej odpowiadającą, czyli w tym przypadku identyfikator przestrzeni zmniejsza się o numer mniej), według podanej w zmiennej {{Code|nazwa przestrzeni nazw}} dla pozycja bazowej w podanych parametrach szablonu rodzicu ramki dziecka, lub dla innej pozycji należy parametr podawać w formie {{Code|nazwa przestrzeni nazw 1}}, {{Code|nazwa przestrzeni nazw 2}}, {{Code|nazwa przestrzeni nazw 3}},..., lub te parametry można podać w postaci ogólnej {{Code|nazwa przestrzeni nazw i}}. Parametry podaje się w parametrach rodzica wywołania tej funkcji {{Code|{{m|Pudełko|Nazwa przedmiotowej przestrzeni nazw}}}} (ale ich nie trzeba podawać w dziecku, ale można) i w parametrach dziecka, jeśli chodzi o zmienną {{Code|numer jednostki}}, czyli np.: {{Code|{{m|Pudełko|Nazwa przedmiotowej przestrzeni nazw|numer jednostki{{=}}<jakaś liczba całkowita dodatnia>}}}}. Te parametry przestrzenne zamiast w rodzicu w szablonie można podać w ramce dziecka, wtedy parametry dziecka mają pierwszeństwo. Parametry przestrzenne mogą mogą być podane w postaci przestrzeni przedmiotowej lub dyskusji, ale ta funkcja zawsze ją zamienia na przedmiotową. Przestrzeń nazw z parametrów nazw przestrzennych może odpowiadać wartości przestrzeni głównej, to wtedy odpowiednia przestrzeń nazw z parametru nazwy jednostki się nie liczy w tej funkcji, aby się liczyła należy użyć funkcji {{Code|{{sr|#p["Nazwa przedmiotowej przestrzeni nazw 2"](frame,...)|p=Pudełko}}}}. Definicja skrótowa funkcji: <syntaxhighlight lang="lua"> p["Nazwa przedmiotowej przestrzeni nazw"]=function(frame,czy_uwzglednic_alternatywna_nazwe,i)...end; </syntaxhighlight> Wtedy ciało funkcji tej, czyli jego definicja w środku, jest: <syntaxhighlight lang="lua"> -- Jest liczony numer parametru nazwy przestrzeni nazw, domyslnie chodzi tu o numer bazowy parametrów przestrzennych; local numer_jednostki=i or frame.args["numer jednostki"]; local liczba_numer_jednostki=((numer_jednostki)and(tonumber(numer_jednostki))or 0); local pudelko_pomocne_modul=require("Module:Pudełko/Pomocne"); -- Liczy nazwę przestrzeni nazw przedmiotową na podstawie podanych parametrów; return pudelko_pomocne_modul.Nazwa_przestrzeni_nazw(frame,1, czy_uwzglednic_alternatywna_nazwe,liczba_numer_jednostki); </syntaxhighlight> Parametry funkcji: * {{Code|frame}} - tablica ramki tablicy transportu, * {{Code|czy_uwzglednic_alternatywna_nazwe}} - czy ma uwzględniać nazwę przestrzeni nazw domyślną szablonu, dostępne wartości: {{Code|false}}, w której nazwa domyślna nie jest uwzględniana wtedy, oraz {{Code|nil}} i {{Code|true}}, które oznaczają to samo, w tym jeżeli ona jest uwzględniana, wtedy jest brany parametr pierwszy dziecka, który musi istnieć przy takiej wartości tego parametru, tzn. {{Code|{{m|Pudełko|Nazwa przedmiotowej przestrzeni nazw|Dyskusja szablonu}}}} - ta nazwa domyślna zostanie zamieniona na przedmiotową, a jak ona by była przedmiotowa, to żadnej zamiany, by nie było, a jeśli nazwa uzyskana z nazwy przestrzeni nazw z parametrów przestrzennych jest w takim przypadku błędna, to w takim razie brany jest ten parametr, a jeżeli ta nazwa domyślna jest błędna, czyli {{Code|{{m|Pudełko|Nazwa przedmiotowej przestrzeni nazw|Moja przestrzeń}}}}, wtedy funkcja zwraca stan błędu {{Code|(błąd)}}. * {{Code|i}} - numer zmiennej nazwy przestrzeni nazw. Funkcja wykorzystuje {{Code|{{sr|#p.Nazwa_przestrzeni_nazw(frame,...)|p=Pudełko/Pomocne}}}} do wyznaczania ogólnego nazwy przestrzeni nazw dla pozycji bazowej i numerkowej, tzn. dla pozycji: jeden, dwa, trzy,..., itd, i ich ogólnej. Parametr ramki tablicy transportu rodzica szablonu: * {{Code|nazwa przestrzeni nazw}}, {{Code|nazwa przestrzeni nazw 1}}, {{Code|nazwa przestrzeni nazw 2}}, {{Code|nazwa przestrzeni nazw 3}},..., {{Code|nazwa przestrzeni nazw i}} - nazwy przestrzeni nazw dla pozycji bazowej oraz zwykłej i ogólnej numerkowej, * {{Code|typ jednostki}}, {{Code|typ jednostki 1}}, {{Code|typ jednostki 2}}, {{Code|typ jednostki 3}},..., {{Code|typ jednostki i}} - typy jednostek, którym odpowiadają pewne przestrzenie przedmiotowe, dla pozycji bazowej, numerkowej i ogólnej. Parametry ramki tablicy transportu dziecka: * Parametry dziecka są takie same jak rodzica dla funkcji pudełkowej plus tu wymienione, * {{Code|numer jednostki}} - jak parametr {{Code|i}} nie został ustawiony, to wtedy liczy się ta zmienna. Przykłady: <syntaxhighlight lang="mediawiki"> {{Nazwa szablonu|nazwa przestrzeni nazw=Dyskusja Wikibooks|nazwa przestrzeni nazw 2=Dyskusja szablonu|nazwa przestrzeni nazw i=Dyskusja modułu}} </syntaxhighlight> W dziecku powiedzmy jest wywołanie, i szukamy nazwy przestrzeni nazw o numerze dwa, która nie została podana, ale istnieje za to jej wersji ogólna {{Code|nazwa przestrzeni nazw i}} i domyślna {{Code|nazwa przestrzeni nazw}}: <syntaxhighlight lang="mediawiki"> {{#invoke:Pudełko|Nazwa przedmiotowej przestrzeni nazw|numer jednostki=1}} </syntaxhighlight> Na podstawie powyższego przykładu otrzymamy wynik o schemacie, nie wyniku, bo tam nie ma zmiennej {{Code|nazwa przestrzeni nazw 1}}, ale jest {{Code|nazwa przestrzeni nazw i}}: <syntaxhighlight lang="mediawiki"> <!-- Ale nie "nazwa przestrzeni nazw", bo jej nie ma, ale za to istnieje "nazwa przestrzeni nazw i"; --> <!-- nazwa przestrzeni nazw 2=nazwa przestrzeni nazw i=Dyskusja modułu; --> <!-- Czyli wynik: --> Moduł <!-- Widzimy, że wygenerowała się nazwa przestrzeni nazw, którą jest przestrzeń przedmiotowa programowa przestrzeni dyskusji "Dyskusja modułu", którą również jest "Szablon" jego przestrzeni dyskusji "Dyskusja szablonu", a dla ich przestrzeni przedmiotowej, zamiast dyskusji, to samo przekształca się na to samo; --> </syntaxhighlight> Nie jest brana w tym powyższym przykładzie zmienna {{Code|nazwa przestrzeni nazw}}, bo jej nie ma, ale za to jest {{Code|nazwa przestrzeni nazw i}}, bo ona występuje jako parametr domyślny ogólny dla parametrów numerkowych. Przykłady w wikikodzie: * {{Code|{{m|Pudełko|Nazwa przedmiotowej przestrzeni nazw|numer jednostki{{=}}2}}}} → {{Tt|{{#invoke:Pudełko|Nazwa przedmiotowej przestrzeni nazw|numer jednostki=2}}}} * {{Code|{{m|Pudełko|Nazwa przedmiotowej przestrzeni nazw|Dyskusja szablonu|nazwa przestrzeni nazw i{{=}}Moja przestrzeń|numer jednostki{{=}}2}}}} → {{Tt|{{#invoke:Pudełko|Nazwa przedmiotowej przestrzeni nazw|Dyskusja szablonu|nazwa przestrzeni nazw i=Moja przestrzeń|numer jednostki=2}}}} * {{Code|{{m|Pudełko|Nazwa przedmiotowej przestrzeni nazw|nazwa przestrzeni nazw 2{{=}}Dyskusja szablonu|numer jednostki{{=}}2}}}} → {{Tt|{{#invoke:Pudełko|Nazwa przedmiotowej przestrzeni nazw|nazwa przestrzeni nazw 2=Dyskusja szablonu|numer jednostki=2}}}} * {{Code|{{m|Pudełko|Nazwa przedmiotowej przestrzeni nazw|nazwa przestrzeni nazw 2{{=}}Dyskusja szablonu|numer jednostki{{=}}2}}}} → {{Tt|{{#invoke:Pudełko|Nazwa przedmiotowej przestrzeni nazw|nazwa przestrzeni nazw i=Dyskusja szablonu|numer jednostki=2}}}} * {{Code|{{m|Pudełko|Nazwa przedmiotowej przestrzeni nazw|nazwa przestrzeni nazw{{=}}Dyskusja szablonu|numer jednostki{{=}}2}}}} → {{Tt|{{#invoke:Pudełko|Nazwa przedmiotowej przestrzeni nazw|nazwa przestrzeni nazw=Dyskusja szablonu|numer jednostki=2}}}} Powyżej dla przykładu podano parametry nie w rodzicu w szablonie, tylko w dziecku, jeśli chodzi o parametry nazw przestrzeni nazw, ale ich się za to nie powinno podawać w tych ramach, tylko w szablonach, w których wywoływane są te ramki pudełek {{Code|{{m|Pudełko}}}}, ale tak tutaj tak zrobiono by było najłatwiej sprawdzić działanie tego typu funkcji. Analogicznie możemy podawać parametry typu jednostki, np.: wywołaniu modułowym {{Code|{{m|Pudełko|Nazwa przedmiotowej przestrzeni nazw|typ jednostki 2{{=}}strona szablonu|numer jednostki{{=}}2}}}}, ale o tym więcej w rozdziałach {{Code|{{sr|# p["Przedmiotowy typ jednostki"](frame,i)|p=Pudełko}}}} w „{{sr|#Funkcje typu jednostki|p=Pudełko}}”, ale wtedy ta sama nazwa przestrzeni nazw reprezentowana przez {{Parametr|typ jednostki 2|strona szablonu}}, jest zamieniana na to samo, lepiej jest tutaj używać parametrów przestrzennych nazw niż typu jednostki, bo typ jednostki ma taką samą wartość dla przestrzeni przedmiotowej, co dyskusji. Tutaj parametr dyskusji typu jednostki bazowy i numerkowy ogólny, czy szczegółowy, nie gra roli, bo nawet, gdy wygenerujemy nazwę przestrzeni dyskusji za pomoca tego parametru, to i tak otrzymamy na samym końcu jego nazwę przedmiotową. Również parametry typu jednostki nie powinno się podawać w dziecku w ramce, tylko w rodzicu w szablonie jako parametry, w którym ta ramka jest wywoływana, ale tutaj podano jedynie dla przykładu, jak najłatwiej sprawdzić działanie tych parametrów tej funkcji. Najpierw w funkcji nagłówku brane są parametry nazw przestrzeni nazw, a jeżeli ich nie ma, to parametry typu jednostki, a jeżeli nie ma, to generowane są nazwy na podstawie aktualnego modułu. === {{Code|p["Nazwa przestrzeni nazw dyskusji"](frame,...)}} === Funkcja pisze nazwę przestrzeni nazw dyskusji jakikolwiek nazwy przestrzeni nazw (tzn. nazwę przedmiotową nazwy przestrzenie nazw, czyli nie dyskusji, zamieniana jest na dyskusji, czyli identyfikator przestrzeni się zmienia jeden wyżej, a dyskusji, nie przedmiotową, przekształca się na tą samą), według podanej w zmiennej {{Code|nazwa przestrzeni nazw}} dla pozycja bazowej w podanych parametrach szablonu rodzicu ramki dziecka, lub dla innej pozycji należy parametr podawać w formie {{Code|nazwa przestrzeni nazw 1}}, {{Code|nazwa przestrzeni nazw 2}}, {{Code|nazwa przestrzeni nazw 3}},..., lub te parametry można podać w postaci ogólnej {{Code|nazwa przestrzeni nazw i}}. Parametry podaje się w parametrach rodzica wywołania tej funkcji {{Code|{{m|Pudełko|Nazwa przestrzeni nazw dyskusji}}}} (ale ich nie trzeba podawać w dziecku, ale można) i w parametrach dziecka, jeśli chodzi o zmienną {{Code|numer jednostki}}, czyli np.: {{Code|{{m|Pudełko|Nazwa przestrzeni nazw dyskusji|numer jednostki{{=}}<jakaś liczba całkowita dodatnia>}}}}. Te parametry przestrzenne zamiast w rodzicu w szablonie można podać w ramce dziecka, wtedy parametry dziecka mają pierwszeństwo. Parametry przestrzenne mogą mogą być podane w postaci przestrzeni przedmiotowej lub dyskusji, ale ta funkcja zawsze ją zamienia na dyskusji. Przestrzeń nazw z parametrów nazw przestrzennych może odpowiadać wartości przestrzeni głównej, to wtedy odpowiednia przestrzeń nazw z parametru nazwy jednostki się nie liczy w tej funkcji, aby się liczyła należy użyć funkcji {{Code|{{sr|#p["Nazwa przestrzeni nazw dyskusji 2"](frame,...)|p=Pudełko}}}}. Definicja skrótowa funkcji: <syntaxhighlight lang="lua"> p["Nazwa przestrzeni nazw dyskusji"]=function(frame,czy_uwzglednic_alternatywna_nazwe,i)...end; </syntaxhighlight> Wtedy ciało funkcji tej, czyli jego definicja w środku, jest: <syntaxhighlight lang="lua"> -- Jest liczony numer parametru nazwy przestrzeni nazw, domyslnie chodzi tu o numer bazowy parametrów przestrzennych; local numer_jednostki=i or frame.args["numer jednostki"]; local liczba_numer_jednostki=((numer_jednostki)and(tonumber(numer_jednostki))or 0); local pudelko_pomocne_modul=require("Module:Pudełko/Pomocne"); -- Liczy nazwę przestrzeni nazw dyskusji na podstawie podanych parametrów; return pudelko_pomocne_modul.Nazwa_przestrzeni_nazw(frame,2, czy_uwzglednic_alternatywna_nazwe,liczba_numer_jednostki); </syntaxhighlight> Parametry funkcji: * {{Code|frame}} - tablica ramki tablicy transportu, * {{Code|czy_uwzglednic_alternatywna_nazwe}} - czy ma uwzględniać nazwę przestrzeni nazw domyślną szablonu, dostępne wartości: {{Code|false}}, w której nazwa domyślna nie jest uwzględniana wtedy, oraz {{Code|nil}} i {{Code|true}}, które oznaczają to samo, w tym jeżeli ona jest uwzględniana, wtedy jest brany parametr pierwszy dziecka, który musi istnieć przy takiej wartości tego parametru, tzn. {{Code|{{m|Pudełko|Nazwa przestrzeni nazw dyskusji|Szablon}}}} - ta nazwa domyślna zostanie przekształcona na dyskusji, a jeżeli ona by była dyskusji, to nie byłoby żadnego przekształcenia, a jeśli nazwa uzyskana nazwy przestrzeni nazw z parametrów przestrzennych jest w takim przypadku błędna, to w takim razie brany jest ten parametr, a jeżeli nazwa domyślna jest błędna, czyli {{Code|{{m|Pudełko|Nazwa przestrzeni nazw dyskusji|Moja przestrzeń}}}}, wtedy funkcja zwraca stan błędu {{Code|(błąd)}}. * {{Code|i}} - numer zmiennej nazwy przestrzeni nazw. Funkcja wykorzystuje {{Code|{{sr|#p.Nazwa_przestrzeni_nazw(frame,...)|p=Pudełko/Pomocne}}}} do wyznaczania ogólnego nazwy przestrzeni nazw dla pozycji bazowej i numerkowej, tzn. dla pozycji: jeden, dwa, trzy,..., itd, i ich ogólnej. Parametr ramki tablicy transportu rodzica szablonu: * {{Code|nazwa przestrzeni nazw}}, {{Code|nazwa przestrzeni nazw 1}}, {{Code|nazwa przestrzeni nazw 2}}, {{Code|nazwa przestrzeni nazw 3}},..., {{Code|nazwa przestrzeni nazw i}} - nazwy przestrzeni nazw dla pozycji bazowej oraz zwykłej i ogólnej numerkowej, * {{Code|typ jednostki}}, {{Code|typ jednostki 1}}, {{Code|typ jednostki 2}}, {{Code|typ jednostki 3}},..., {{Code|typ jednostki i}} - typy jednostek, którym odpowiadają pewne przestrzenie przedmiotowe, dla pozycji bazowej, numerkowej i ogólnej. Parametry ramki tablicy transportu dziecka: * Parametry dziecka są takie same jak rodzica dla funkcji pudełkowej plus tu wymienione, * {{Code|numer jednostki}} - jak parametr {{Code|i}} nie został ustawiony, to wtedy liczy się ta zmienna. Przykłady: <syntaxhighlight lang="mediawiki"> {{Nazwa szablonu|nazwa przestrzeni nazw=Wikibooks|nazwa przestrzeni nazw 2=Szablon|nazwa przestrzeni nazw i=Moduł}} </syntaxhighlight> W dziecku powiedzmy jest wywołanie, i szukamy nazwy przestrzeni nazw o numerze dwa, która nie została podana, ale istnieje za to jej wersji ogólna {{Code|nazwa przestrzeni nazw i}} i domyślna {{Code|nazwa przestrzeni nazw}}: <syntaxhighlight lang="mediawiki"> {{#invoke:Pudełko|Nazwa przestrzeni nazw dyskusji|numer jednostki=1}} </syntaxhighlight> Na podstawie powyższego przykładu otrzymamy wynik o schemacie, nie wyniku, bo tam nie ma zmiennej {{Code|nazwa przestrzeni nazw 1}}, ale jest {{Code|nazwa przestrzeni nazw i}}: <syntaxhighlight lang="mediawiki"> <!-- Ale nie "nazwa przestrzeni nazw", bo jej nie ma, ale za to istnieje "nazwa przestrzeni nazw i"; --> <!-- nazwa przestrzeni nazw 2=nazwa przestrzeni nazw i=Moduł; --> <!-- Czyli wynik: --> Dyskusja modułu <!-- Widzimy, że wygenerowała się nazwa przestrzeni nazw, którą jest przestrzeń dyskusji przestrzeni programowej przestrzeni przedmiotowej "Moduł", którą również jest "Szablon" jego przestrzeni dyskusji "Dyskusja szablonu", a dla ich przestrzeni przedmiotowej, zamiast dyskusji, to przekształca się na dyskusji jej odpowiadającą; --> </syntaxhighlight> Nie jest brana w tym powyższym przykładzie zmienna {{Code|nazwa przestrzeni nazw}}, bo jej nie ma, ale za to jest {{Code|nazwa przestrzeni nazw i}}, bo ona występuje jako parametr domyślny ogólny dla parametrów numerkowych. Przykłady w wikikodzie: * {{Code|{{m|Pudełko|Nazwa przestrzeni nazw dyskusji|numer jednostki{{=}}2}}}} → {{Tt|{{#invoke:Pudełko|Nazwa przestrzeni nazw dyskusji|numer jednostki=2}}}} * {{Code|{{m|Pudełko|Nazwa przestrzeni nazw dyskusji|Szablon|nazwa przestrzeni nazw i{{=}}Moja przestrzeń|numer jednostki{{=}}2}}}} → {{Tt|{{#invoke:Pudełko|Nazwa przestrzeni nazw dyskusji|Szablon|nazwa przestrzeni nazw i=Moja przestrzeń|numer jednostki=2}}}} * {{Code|{{m|Pudełko|Nazwa przestrzeni nazw dyskusji|nazwa przestrzeni nazw 2{{=}}Szablon|numer jednostki{{=}}2}}}} → {{Tt|{{#invoke:Pudełko|Nazwa przestrzeni nazw dyskusji|nazwa przestrzeni nazw 2=Szablon|numer jednostki=2}}}} * {{Code|{{m|Pudełko|Nazwa przestrzeni nazw dyskusji|nazwa przestrzeni nazw 2{{=}}Szablon|numer jednostki{{=}}2}}}} → {{Tt|{{#invoke:Pudełko|Nazwa przestrzeni nazw dyskusji|nazwa przestrzeni nazw i=Szablon|numer jednostki=2}}}} * {{Code|{{m|Pudełko|Nazwa przestrzeni nazw dyskusji|nazwa przestrzeni nazw{{=}}Szablon|numer jednostki{{=}}2}}}} → {{Tt|{{#invoke:Pudełko|Nazwa przestrzeni nazw dyskusji|nazwa przestrzeni nazw=Szablon|numer jednostki=2}}}} Powyżej dla przykładu podano parametry nie w rodzicu w szablonie, tylko w dziecku, jeśli chodzi o parametry nazw przestrzeni nazw, ale ich się za to nie powinno podawać w tych ramach, tylko w szablonach, w których wywoływane są te ramki pudełek {{Code|{{m|Pudełko}}}}, ale tak tutaj tak zrobiono by było najłatwiej sprawdzić działanie tego typu funkcji. Analogicznie możemy podawać parametry typu jednostki, np.: wywołaniu modułowym {{Code|{{m|Pudełko|Nazwa przestrzeni nazw dyskusji|typ jednostki 2{{=}}strona szablonu|numer jednostki{{=}}2}}}}, ale o tym więcej w rozdziałach {{Code|{{sr|# p["Dyskusyjny typ jednostki"](frame,i)|p=Pudełko}}}} w „{{sr|#Funkcje typu jednostki|p=Pudełko}}”, ale wtedy nazwa przestrzeni nazw reprezentowana przez {{Parametr|typ jednostki 2|strona szablonu}}, jest zamieniana na nazwę przestrzeni nazw dyskusji. Parametr dyskusji typu jednostki bazowy lub dla danego numerka ogólny, czy szczegółowy, nie gra roli. Również parametry typu jednostki nie powinno się podawać w dziecku w ramce, tylko w rodzicu w szablonie jako parametry, w którym ta ramka jest wywoływana, ale tutaj podano jedynie dla przykładu, jak najłatwiej sprawdzić działanie tych parametrów tej funkcji. Najpierw w funkcji nagłówku brane są parametry nazw przestrzeni nazw, a jeżeli ich nie ma, to parametry typu jednostki, a jeżeli nie ma, to generowane są nazwy na podstawie aktualnego modułu. == Funkcje nazw przestrzeni nazw drugiej wersji == === {{Code|p["Nazwa przestrzeni nazw 2"](frame,...)}} === Funkcja pisze nazwę przestrzeni nazw, niezależnie, czy to jest przedmiotowa, czy dyskusji, według, i nie zawsze tylko, podanej w zmiennej {{Code|nazwa przestrzeni nazw}} dla pozycja bazowej w podanych parametrach szablonu rodzicu ramki dziecka, lub dla innej pozycji należy parametr podawać w formie {{Code|nazwa przestrzeni nazw 1}}, {{Code|nazwa przestrzeni nazw 2}}, {{Code|nazwa przestrzeni nazw 3}},..., lub te parametry można podać w postaci ogólnej {{Code|nazwa przestrzeni nazw i}}. W tej funkcji trzeba też podawać parametry nazwy jednostek {{Code|nazwa jednostki}}, {{Code|nazwa jednostki 1}}, {{Code|nazwa jednostki 2}}, {{Code|nazwa jednostki 3}},... Parametry podaje się w parametrach rodzica wywołania tej funkcji {{Code|{{m|Pudełko|Nazwa przestrzeni nazw 2}}}} (ale ich nie trzeba podawać w dziecku, ale można) i w parametrach dziecka, jeśli chodzi o zmienną {{Code|numer jednostki}}, czyli np.: {{Code|{{m|Pudełko|Nazwa przestrzeni nazw 2|numer jednostki{{=}}<jakaś liczba całkowita dodatnia>}}}}. Te parametry przestrzenne zamiast w rodzicu w szablonie można podać w ramce dziecka, wtedy parametry dziecka mają pierwszeństwo. Przestrzeń nazw z parametrów nazw przestrzennych może odpowiadać wartości przestrzeni głównej, to wtedy odpowiednia przestrzeń nazw z parametru nazwy jednostki się liczy w tej funkcji, wtedy jest liczona nazwa przestrzeni nazw z tego parametru. Gdy parametry przestrzenne lub typ jednostki w drugim podejściu nie wskazują na przestrzeń główną, to wtedy działanie tej funkcji jest podobne do {{Code|{{sr|#p["Nazwa przestrzeni nazw"](frame,...)|p=Pudełko}}}}. Definicja skrótowa funkcji: <syntaxhighlight lang="lua"> p["Nazwa przestrzeni nazw 2"]=function(frame,czy_uwzglednic_alternatywna_nazwe,i)...end; </syntaxhighlight> Wtedy ciało funkcji tej, czyli jego definicja w środku, jest: <syntaxhighlight lang="lua"> local pudelko_pomocne_modul=require("Module:Pudełko/Pomocne"); -- Liczy nazwę przestrzeni nazw, jeżeli z parametrów przestrzennych przestrzeń wskazuje na główną, to wtedy jest liczona przestrzeń nazw z nazwy jednostki; return pudelko_pomocne_modul.Nazwa_przestrzeni_nazw_2(frame,czy_uwzglednic_alternatywna_nazwe,i) </syntaxhighlight> Parametry funkcji: * {{Code|frame}} - tablica ramki tablicy transportu, * {{Code|czy_uwzglednic_alternatywna_nazwe}} - czy ma uwzględniać nazwę przestrzeni nazw domyślną szablonu, dostępne wartości: {{Code|false}}, w której nazwa domyślna nie jest uwzględniana wtedy, oraz {{Code|nil}} i {{Code|true}}, które oznaczają to samo, w tym jeżeli ona jest uwzględniana, wtedy jest brany parametr pierwszy dziecka, który musi istnieć przy takiej wartości tego parametru, tzn. {{Code|{{m|Pudełko|Nazwa przestrzeni nazw 2|Szablon}}}}, a jeśli nazwa uzyskana nazwy przestrzeni nazw jest w takim przypadku błędna, to brany jest ten element, a jeżeli nazwa domyślna jest błędna, czyli {{Code|{{m|Pudełko|Nazwa przestrzeni nazw 2|Moja przestrzeń}}}}, wtedy funkcja zwraca stan błędu {{Code|(błąd)}}. * {{Code|i}} - numer zmiennej nazwy przestrzeni nazw. Funkcja wykorzystuje {{Code|{{sr|#p.Nazwa_przestrzeni_nazw_2(frame,...)|p=Pudełko/Pomocne}}}} do wyznaczania ogólnego nazwy przestrzeni nazw dla pozycji bazowej i numerkowej, tzn. dla pozycji: jeden, dwa, trzy,..., itd, i ich ogólnej. Parametr ramki tablicy transportu rodzica szablonu: * {{Code|nazwa przestrzeni nazw}}, {{Code|nazwa przestrzeni nazw 1}}, {{Code|nazwa przestrzeni nazw 2}}, {{Code|nazwa przestrzeni nazw 3}},..., {{Code|nazwa przestrzeni nazw i}} - nazwy przestrzeni nazw dla pozycji bazowej oraz zwykłej i ogólnej numerkowej, * {{Code|nazwa jednostki}}, {{Code|nazwa jednostki 1}}, {{Code|nazwa jednostki 2}}, {{Code|nazwa jednostki 3}},... - nazwy jednostek dla pozycji bazowej i numerkowej, * {{Code|typ jednostki}}, {{Code|typ jednostki 1}}, {{Code|typ jednostki 2}}, {{Code|typ jednostki 3}},..., {{Code|typ jednostki i}} - typy jednostek, którym odpowiadają pewne przestrzenie przedmiotowe, dla pozycji bazowej, numerkowej i ogólnej, ** {{Code|dyskusja typu jednostki}}, {{Code|dyskusja typu jednostki 1}}, {{Code|dyskusja typ jednostki 2}}, {{Code|dyskusja typ jednostki 3}},..., {{Code|dyskusja typ jednostki i}} - czy dany typ jednostki ma przedstawiać, jeśli niepusta, przestrzeń dyskusji dla pozycji bazowej, numerkowej i ogólnej. Parametry ramki tablicy transportu dziecka: * Parametry dziecka są takie same jak rodzica dla funkcji pudełkowej plus tu wymienione, * {{Code|numer jednostki}} - jak parametr {{Code|i}} nie został ustawiony, to wtedy liczy się ta zmienna. Przykłady: <syntaxhighlight lang="mediawiki"> {{Nazwa szablonu|nazwa przestrzeni nazw=Wikibooks|nazwa przestrzeni nazw 1=Szablon|nazwa przestrzeni nazw i=|nazwa jednostki 2=Wikibooks:Strona}} </syntaxhighlight> W dziecku powiedzmy jest wywołanie, i szukamy nazwy przestrzeni nazw o numerze dwa, która została podana, ale istnieje za to jej wersji ogólna {{Code|nazwa przestrzeni nazw i}} i domyślna {{Code|nazwa przestrzeni nazw}}, ale wtedy dla tego numerkowego liczy się to ogólne z {{Code| i}}, a ponieważ ta nazwa jest pusta, więc będziemy liczyli nazwę przestrzeni nazw z {{Code|nazwa jednostki 2}}: <syntaxhighlight lang="mediawiki"> {{#invoke:Pudełko|Nazwa przestrzeni nazw 2|numer jednostki=2}} </syntaxhighlight> Na podstawie powyższego przykładu otrzymamy wynik o schemacie, nie wyniku, bo tam nie ma zmiennej {{Code|nazwa przestrzeni nazw 1}}, ale jest {{Code|nazwa przestrzeni nazw i}}: <syntaxhighlight lang="mediawiki"> <!-- Ale nie "nazwa przestrzeni nazw 2", bo jej nie ma, ale za to istnieje "nazwa przestrzeni nazw i"; --> <!-- nazwa przestrzeni nazw 2=nazwa przestrzeni nazw i="", a nazwa jednostki 2="Wikibooks:Strona"; --> <!-- Czyli wynik: --> Wikibooks <!-- Widzimy, że wygenerowała się nazwa przestrzeni nazw, którą jest przestrzeń nieprogramowa, ale projektu, wychodząca z nazwy jednostek w tym przypadku z "nazwa jednostki 2"; --> </syntaxhighlight> Nie jest brana w tym powyższym przykładzie zmienna {{Code|nazwa przestrzeni nazw}}, bo jej nie ma, ale za to jest {{Code|nazwa przestrzeni nazw i}}, bo ona występuje jako parametr domyślny ogólny dla parametrów numerkowych. Tytaj jest używana jest zmienna {{Code|nazwa jednostki 2}} do wygenerowania ostatecznego wyniku, bo jak można zauważyć, parametry przestrzenne wskazują na przestrzeń główną, a nazwy jednostek już nie. Przykłady w wikikodzie: * {{Code|{{m|Pudełko|Nazwa przestrzeni nazw 2|numer jednostki{{=}}2}}}} → {{Tt|{{#invoke:Pudełko|Nazwa przestrzeni nazw 2|numer jednostki=2}}}} * {{Code|{{m|Pudełko|Nazwa przestrzeni nazw 2|Szablon|nazwa przestrzeni nazw i{{=}}Moja przestrzeń|numer jednostki{{=}}2}}}} → {{Tt|{{#invoke:Pudełko|Nazwa przestrzeni nazw 2|Szablon|nazwa przestrzeni nazw i=Moja przestrzeń|numer jednostki=2}}}} * {{Code|{{m|Pudełko|Nazwa przestrzeni nazw 2|nazwa przestrzeni nazw 2{{=}}|nazwa jednostki 2{{=}}Szablon:Strona|numer jednostki{{=}}2}}}} → {{Tt|{{#invoke:Pudełko|Nazwa przestrzeni nazw 2|nazwa przestrzeni nazw 2=|nazwa jednostki 2=Szablon:Strona|numer jednostki=2}}}} * {{Code|{{m|Pudełko|Nazwa przestrzeni nazw 2|nazwa przestrzeni nazw i{{=}}|nazwa jednostki 2{{=}}Szablon:Strona|numer jednostki{{=}}2}}}} → {{Tt|{{#invoke:Pudełko|Nazwa przestrzeni nazw 2|nazwa przestrzeni nazw i=|nazwa jednostki 2=Szablon:Strona|numer jednostki=2}}}} * {{Code|{{m|Pudełko|Nazwa przestrzeni nazw 2|Szablon|nazwa przestrzeni nazw{{=}}|nazwa jednostki 2{{=}}Wikibooks:Strona|numer jednostki{{=}}2}}}} → {{Tt|{{#invoke:Pudełko|Nazwa przestrzeni nazw 2|Szablon|nazwa przestrzeni nazw=|nazwa jednostki 2=Wikibooks:Strona|numer jednostki=2}}}} Powyżej dla przykładu podano parametry nie w rodzicu w szablonie, tylko w dziecku, jeśli chodzi o parametry nazw przestrzeni nazw i nazw jednostek, ale ich się za to nie powinno podawać w tych ramach, tylko w szablonach, w których wywoływane są te ramki pudełek {{Code|{{m|Pudełko}}}}, ale tak tutaj tak zrobiono by było najłatwiej sprawdzić działanie tego typu funkcji. Analogicznie możemy podawać parametry typu jednostki, np.: wywołaniu modułowym {{Code|{{m|Pudełko|Nazwa przestrzeni nazw 2|typ jednostki 2{{=}}Podręcznik|nazwa jednostki 2{{=}}Szablon:Strona|numer jednostki{{=}}2}}}} (ale wtedy jest brana przestrzeń nazw z nazwy jednostki), ale o tym więcej w rozdziałach {{Code|{{sr|#p["Typ jednostki 2"](frame,i)|p=Pudełko}}}} w „{{sr|#Funkcje typu jednostki|p=Pudełko}}”, on definiuje przestrzenie przedmiotowe, ale można użyć parametru dyskusji typu jednostki z wartością niepustą, wtedy wyświetli się nazwa przestrzeni nazw dyskusji. Jeżeli typ jednostki wskazuje na przestrzeń nazw główną, wtedy się liczą parametry nazw jednostek. Również parametry typu jednostki nie powinno się podawać w dziecku w ramce, tylko w rodzicu w szablonie jako parametry, w którym ta ramka jest wywoływana, ale tutaj podano jedynie dla przykładu, jak najłatwiej sprawdzić działanie tych parametrów tej funkcji. Najpierw w funkcji nagłówku brane są parametry nazw przestrzeni nazw, a jeżeli ich nie ma, to parametry typu jednostki, a jeżeli nie ma lub parametry przestrzenne wskazują na przestrzeń główną, i nie ma nazwy jednostki, to generowane są nazwy tej funkcji na podstawie aktualnej strony. === {{Code|p["Nazwa przedmiotowej przestrzeni nazw 2"](frame,...)}} === Funkcja pisze przedmiotową nazwę przestrzeni nazw jakikolwiek nazwy przestrzeni nazw (tzn. nazwę przedmiotową nazwy przestrzenie nazw, czyli nie dyskusji, zamieniana jest na nią samą, czyli identyfikator przestrzeni się nie zmienia, a dyskusji, nie przedmiotową, przekształca się na przedmiotową jej odpowiadającą, czyli w tym przypadku identyfikator przestrzeni zmniejsza się o numer mniej), według, i nie zawsze tylko, podanej w zmiennej {{Code|nazwa przestrzeni nazw}} dla pozycja bazowej w podanych parametrach szablonu rodzicu ramki dziecka, lub dla innej pozycji należy parametr podawać w formie {{Code|nazwa przestrzeni nazw 1}}, {{Code|nazwa przestrzeni nazw 2}}, {{Code|nazwa przestrzeni nazw 3}},..., lub te parametry można podać w postaci ogólnej {{Code|nazwa przestrzeni nazw i}}. W tej funkcji trzeba też podawać parametry nazwy jednostek {{Code|nazwa jednostki}}, {{Code|nazwa jednostki 1}}, {{Code|nazwa jednostki 2}}, {{Code|nazwa jednostki 3}},... Parametry podaje się w parametrach rodzica wywołania tej funkcji {{Code|{{m|Pudełko|Nazwa przedmiotowej przestrzeni nazw 2}}}} (ale ich nie trzeba podawać w dziecku, ale można) i w parametrach dziecka, jeśli chodzi o zmienną {{Code|numer jednostki}}, czyli np.: {{Code|{{m|Pudełko|Nazwa przedmiotowej przestrzeni nazw 2|numer jednostki{{=}}<jakaś liczba całkowita dodatnia>}}}}. Te parametry przestrzenne zamiast w rodzicu w szablonie można podać w ramce dziecka, wtedy parametry dziecka mają pierwszeństwo. Przestrzeń nazw z parametrów nazw przestrzennych po przekształceniu na przedmiotową może odpowiadać wartości przestrzeni głównej, to wtedy odpowiednia przestrzeń nazw z parametru nazwy jednostki się liczy w tej funkcji, wtedy jest liczona nazwa przestrzeni nazw z tego parametru. Gdy parametry przestrzenne lub typ jednostki w drugim podejściu nie wskazują na przestrzeń główną, to wtedy działanie tej funkcji jest podobne do {{Code|{{sr|#p["Nazwa przedmiotowej przestrzeni nazw"](frame,...)|p=Pudełko}}}}. Definicja skrótowa funkcji: <syntaxhighlight lang="lua"> p["Nazwa przedmiotowej przestrzeni nazw 2"]=function(frame,czy_uwzglednic_alternatywna_nazwe,i)...end; </syntaxhighlight> Wtedy ciało funkcji tej, czyli jego definicja w środku, jest: <syntaxhighlight lang="lua"> local pudelko_pomocne_modul=require("Module:Pudełko/Pomocne"); return pudelko_pomocne_modul.Nazwa_przestrzeni_nazw_przedmiotowa_dyskusji_2(frame,czy_uwzglednic_alternatywna_nazwe,i,"przedmiotowa"); </syntaxhighlight> Parametry funkcji: * {{Code|frame}} - tablica ramki tablicy transportu, * {{Code|czy_uwzglednic_alternatywna_nazwe}} - czy ma uwzględniać nazwę przestrzeni nazw domyślną szablonu, dostępne wartości: {{Code|false}}, w której nazwa domyślna nie jest uwzględniana wtedy, oraz {{Code|nil}} i {{Code|true}}, które oznaczają to samo, w tym jeżeli ona jest uwzględniana, wtedy jest brany parametr pierwszy dziecka, który musi istnieć przy takiej wartości tego parametru, tzn. {{Code|{{m|Pudełko|Nazwa przedmiotowej przestrzeni nazw 2|Szablon}}}}, nazwa domyślna zostanie zamieniona na przedmiotową, a jeżeli jest już taka, to żadnej zamiany nie ma, a jeśli nazwa uzyskana nazwy przestrzeni nazw jest w takim przypadku błędna, to brany jest ten element, a jeżeli nazwa domyślna jest błędna, czyli {{Code|{{m|Pudełko|Nazwa przedmiotowej przestrzeni nazw 2|Moja przestrzeń}}}}, wtedy funkcja zwraca stan błędu {{Code|(błąd)}}. * {{Code|i}} - numer zmiennej nazwy przestrzeni nazw. Funkcja wykorzystuje {{Code|{{sr|#p.Nazwa_przestrzeni_nazw_przedmiotowa_dyskusji_2(frame,...)|p=Pudełko/Pomocne}}}} do wyznaczania ogólnego nazwy przestrzeni nazw dla pozycji bazowej i numerkowej, tzn. dla pozycji: jeden, dwa, trzy,..., itd, i ich ogólnej. Parametr ramki tablicy transportu rodzica szablonu: * {{Code|nazwa przestrzeni nazw}}, {{Code|nazwa przestrzeni nazw 1}}, {{Code|nazwa przestrzeni nazw 2}}, {{Code|nazwa przestrzeni nazw 3}},..., {{Code|nazwa przestrzeni nazw i}} - nazwy przestrzeni nazw dla pozycji bazowej oraz zwykłej i ogólnej numerkowej, * {{Code|nazwa jednostki}}, {{Code|nazwa jednostki 1}}, {{Code|nazwa jednostki 2}}, {{Code|nazwa jednostki 3}},... - nazwy jednostek dla pozycji bazowej i numerkowej, * {{Code|typ jednostki}}, {{Code|typ jednostki 1}}, {{Code|typ jednostki 2}}, {{Code|typ jednostki 3}},..., {{Code|typ jednostki i}} - typy jednostek, którym odpowiadają pewne przestrzenie przedmiotowe, dla pozycji bazowej, numerkowej i ogólnej. Parametry ramki tablicy transportu dziecka: * Parametry dziecka są takie same jak rodzica dla funkcji pudełkowej plus tu wymienione, * {{Code|numer jednostki}} - jak parametr {{Code|i}} nie został ustawiony, to wtedy liczy się ta zmienna. Przykłady: <syntaxhighlight lang="mediawiki"> {{Nazwa szablonu|nazwa przestrzeni nazw=Wikibooks|nazwa przestrzeni nazw 1=Szablon|nazwa przestrzeni nazw i=|nazwa jednostki 2=Dyskusja Wikibooks:Strona}} </syntaxhighlight> W dziecku powiedzmy jest wywołanie, i szukamy nazwy przestrzeni nazw o numerze dwa, która została podana, ale istnieje za to jej wersji ogólna {{Code|nazwa przestrzeni nazw i}} i domyślna {{Code|nazwa przestrzeni nazw}}, ale wtedy dla tego numerkowego liczy się to ogólne z {{Code| i}}, a ponieważ ta nazwa jest pusta, więc będziemy liczyli nazwę przestrzeni nazw z {{Code|nazwa jednostki 2}}: <syntaxhighlight lang="mediawiki"> {{#invoke:Pudełko|Nazwa przedmiotowej przestrzeni nazw 2|numer jednostki=2}} </syntaxhighlight> Na podstawie powyższego przykładu otrzymamy wynik o schemacie, nie wyniku, bo tam nie ma zmiennej {{Code|nazwa przestrzeni nazw 1}}, ale jest {{Code|nazwa przestrzeni nazw i}}: <syntaxhighlight lang="mediawiki"> <!-- Ale nie "nazwa przestrzeni nazw 2", bo jej nie ma, ale za to istnieje "nazwa przestrzeni nazw i"; --> <!-- nazwa przestrzeni nazw 2=nazwa przestrzeni nazw i="", a nazwa jednostki 2="Dyskusja Wikibooks:Strona"; --> <!-- Czyli wynik: --> Wikibooks <!-- Widzimy, że wygenerowała się nazwa przestrzeni nazw, którą jest przestrzeń nieprogramowa, ale projektu, wychodząca z nazwy jednostek w tym przypadku z "nazwa jednostki 2"; --> </syntaxhighlight> Nie jest brana w tym powyższym przykładzie zmienna {{Code|nazwa przestrzeni nazw}}, bo jej nie ma, ale za to jest {{Code|nazwa przestrzeni nazw i}}, bo ona występuje jako parametr domyślny ogólny dla parametrów numerkowych. Tytaj jest używana jest zmienna {{Code|nazwa jednostki 2}} do wygenerowania ostatecznego wyniku, bo jak można zauważyć, parametry przestrzenne wskazują na przestrzeń główną, a nazwy jednostek już nie. Przykłady w wikikodzie: * {{Code|{{m|Pudełko|Nazwa przedmiotowej przestrzeni nazw 2|numer jednostki{{=}}2}}}} → {{Tt|{{#invoke:Pudełko|Nazwa przedmiotowej przestrzeni nazw 2|numer jednostki=2}}}} * {{Code|{{m|Pudełko|Nazwa przedmiotowej przestrzeni nazw 2|Dyskusja szablonu|nazwa przestrzeni nazw i{{=}}Moja przestrzeń|numer jednostki{{=}}2}}}} → {{Tt|{{#invoke:Pudełko|Nazwa przedmiotowej przestrzeni nazw 2|Dyskusja szablonu|nazwa przestrzeni nazw i=Moja przestrzeń|numer jednostki=2}}}} * {{Code|{{m|Pudełko|Nazwa przedmiotowej przestrzeni nazw 2|nazwa przestrzeni nazw 2{{=}}Dyskusja|nazwa jednostki 2{{=}}Dyskusja szablonu:Strona|numer jednostki{{=}}2}}}} → {{Tt|{{#invoke:Pudełko|Nazwa przedmiotowej przestrzeni nazw 2|nazwa przestrzeni nazw 2=Dyskusja|nazwa jednostki 2=Dyskusja szablonu:Strona|numer jednostki=2}}}} * {{Code|{{m|Pudełko|Nazwa przedmiotowej przestrzeni nazw 2|nazwa przestrzeni nazw i{{=}}Dyskusja|nazwa jednostki 2{{=}}Dyskusja szablonu:Strona|numer jednostki{{=}}2}}}} → {{Tt|{{#invoke:Pudełko|Nazwa przedmiotowej przestrzeni nazw 2|nazwa przestrzeni nazw i=Dyskusja|nazwa jednostki 2=Dyskusja szablonu:Strona|numer jednostki=2}}}} * {{Code|{{m|Pudełko|Nazwa przedmiotowej przestrzeni nazw 2|Dyskusja szablonu|nazwa przestrzeni nazw{{=}}Dyskusja|nazwa jednostki 2{{=}}Wikibooks:Strona|numer jednostki{{=}}2}}}} → {{Tt|{{#invoke:Pudełko|Nazwa przedmiotowej przestrzeni nazw 2|Dyskusja szablonu|nazwa przestrzeni nazw=Dyskusja|nazwa jednostki 2=Dyskusja Wikibooks:Strona|numer jednostki=2}}}} Powyżej dla przykładu podano parametry nie w rodzicu w szablonie, tylko w dziecku, jeśli chodzi o parametry nazw przestrzeni nazw i nazw jednostek, ale ich się za to nie powinno podawać w tych ramach, tylko w szablonach, w których wywoływane są te ramki pudełek {{Code|{{m|Pudełko}}}}, ale tak tutaj tak zrobiono by było najłatwiej sprawdzić działanie tego typu funkcji. Analogicznie możemy podawać parametry typu jednostki, np.: wywołaniu modułowym {{Code|{{m|Pudełko|Nazwa przedmiotowej przestrzeni nazw 2|typ jednostki 2{{=}}Podręcznik|nazwa jednostki 2{{=}}Dyskusja szablonu:Strona|numer jednostki{{=}}2}}}} (ale wtedy jest brana przestrzeń nazw z nazwy jednostki), ale o tym więcej w rozdziałach {{Code|{{sr|# p["Przedmiotowy typ jednostki 2"](frame,i)|p=Pudełko}}}} w „{{sr|#Funkcje typu jednostki|p=Pudełko}}”, on definiuje przestrzenie przedmiotowe, ale można użyć parametru dyskusji typu jednostki z wartością niepustą, pustą, czy nawet jej nie podamy, wtedy wyświetli się nazwa przestrzeni nazw przedmiotowej. Jeżeli typ jednostki wskazuje na przestrzeń nazw główną, wtedy się liczą parametry nazw jednostek. Również parametry typu jednostki nie powinno się podawać w dziecku w ramce, tylko w rodzicu w szablonie jako parametry, w którym ta ramka jest wywoływana, ale tutaj podano jedynie dla przykładu, jak najłatwiej sprawdzić działanie tych parametrów tej funkcji. Najpierw w funkcji nagłówku brane są parametry nazw przestrzeni nazw, a jeżeli ich nie ma, to parametry typu jednostki, a jeżeli nie ma lub parametry przestrzenne wskazują na przestrzeń główną, i nie ma nazwy jednostki, to generowane są nazwy tej funkcji na podstawie aktualnej strony. === {{Code|p["Nazwa przestrzeni nazw dyskusji 2"](frame,...)}} === Funkcja pisze nazwę przestrzeni nazw dyskusji jakikolwiek nazwy przestrzeni nazw (tzn. nazwę dyskusji nazwy przestrzenie nazw, czyli nie przedmiotowej, zamieniana jest na nią samą, czyli identyfikator przestrzeni się nie zmienia, a przedmiotową, nie dyskusji, przekształca się na dyskusji jej odpowiadającą, czyli w tym przypadku identyfikator przestrzeni zwiększa się o numer więcej), według, i nie zawsze tylko, podanej w zmiennej {{Code|nazwa przestrzeni nazw}} dla pozycja bazowej w podanych parametrach szablonu rodzicu ramki dziecka, lub dla innej pozycji należy parametr podawać w formie {{Code|nazwa przestrzeni nazw 1}}, {{Code|nazwa przestrzeni nazw 2}}, {{Code|nazwa przestrzeni nazw 3}},..., lub te parametry można podać w postaci ogólnej {{Code|nazwa przestrzeni nazw i}}. W tej funkcji trzeba też podawać parametry nazwy jednostek {{Code|nazwa jednostki}}, {{Code|nazwa jednostki 1}}, {{Code|nazwa jednostki 2}}, {{Code|nazwa jednostki 3}},... Parametry podaje się w parametrach rodzica wywołania tej funkcji {{Code|{{m|Pudełko|Nazwa przestrzeni nazw dyskusji 2}}}} (ale ich nie trzeba podawać w dziecku, ale można) i w parametrach dziecka, jeśli chodzi o zmienną {{Code|numer jednostki}}, czyli np.: {{Code|{{m|Pudełko|Nazwa przestrzeni nazw dyskusji 2|numer jednostki{{=}}<jakaś liczba całkowita dodatnia>}}}}. Te parametry przestrzenne zamiast w rodzicu w szablonie można podać w ramce dziecka, wtedy parametry dziecka mają pierwszeństwo. Przestrzeń nazw z parametrów nazw przestrzennych po przekształceniu może odpowiadać wartości przestrzeni głównej, to wtedy odpowiednia przestrzeń nazw z parametru nazwy jednostki się liczy w tej funkcji, wtedy jest liczona nazwa przestrzeni nazw dyskusji z tego parametru. Gdy parametry przestrzenne lub typ jednostki w drugim podejściu nie wskazują na przestrzeń główną, to wtedy działanie tej funkcji jest podobne do {{Code|{{sr|#p["Nazwa dyskusji przestrzeni nazw"](frame,...)|p=Pudełko}}}}. Definicja skrótowa funkcji: <syntaxhighlight lang="lua"> p["Nazwa przestrzeni nazw dyskusji 2"]=function(frame,czy_uwzglednic_alternatywna_nazwe,i)...end; </syntaxhighlight> Wtedy ciało funkcji tej, czyli jego definicja w środku, jest: <syntaxhighlight lang="lua"> local pudelko_pomocne_modul=require("Module:Pudełko/Pomocne"); return pudelko_pomocne_modul.Nazwa_przestrzeni_nazw_przedmiotowa_dyskusji_2(frame,czy_uwzglednic_alternatywna_nazwe,i,"dyskusja"); </syntaxhighlight> Parametry funkcji: * {{Code|frame}} - tablica ramki tablicy transportu, * {{Code|czy_uwzglednic_alternatywna_nazwe}} - czy ma uwzględniać nazwę przestrzeni nazw domyślną szablonu, dostępne wartości: {{Code|false}}, w której nazwa domyślna nie jest uwzględniana wtedy, oraz {{Code|nil}} i {{Code|true}}, które oznaczają to samo, w tym jeżeli ona jest uwzględniana, wtedy jest brany parametr pierwszy dziecka, który musi istnieć przy takiej wartości tego parametru, tzn. {{Code|{{m|Pudełko|Nazwa przestrzeni nazw dyskusji 2|Szablon}}}}, nazwa domyślna zostanie zamieniona na dyskusji, a jeżeli jest już taka, to nie ma takiej zamiany, a jeśli nazwa uzyskana nazwy przestrzeni nazw jest w takim przypadku błędna, to brany jest ten element, a jeżeli nazwa domyślna jest błędna, czyli {{Code|{{m|Pudełko|Nazwa przestrzeni nazw dyskusji 2|Moja przestrzeń}}}}, wtedy funkcja zwraca stan błędu {{Code|(błąd)}}. * {{Code|i}} - numer zmiennej nazwy przestrzeni nazw. Funkcja wykorzystuje {{Code|{{sr|#p.Nazwa_przestrzeni_nazw_przedmiotowa_dyskusji_2(frame,...)|p=Pudełko/Pomocne}}}} do wyznaczania ogólnego nazwy przestrzeni nazw dla pozycji bazowej i numerkowej, tzn. dla pozycji: jeden, dwa, trzy,..., itd, i ich ogólnej. Parametr ramki tablicy transportu rodzica szablonu: * {{Code|nazwa przestrzeni nazw}}, {{Code|nazwa przestrzeni nazw 1}}, {{Code|nazwa przestrzeni nazw 2}}, {{Code|nazwa przestrzeni nazw 3}},..., {{Code|nazwa przestrzeni nazw i}} - nazwy przestrzeni nazw dla pozycji bazowej oraz zwykłej i ogólnej numerkowej, * {{Code|nazwa jednostki}}, {{Code|nazwa jednostki 1}}, {{Code|nazwa jednostki 2}}, {{Code|nazwa jednostki 3}},... - nazwy jednostek dla pozycji bazowej i numerkowej, * {{Code|typ jednostki}}, {{Code|typ jednostki 1}}, {{Code|typ jednostki 2}}, {{Code|typ jednostki 3}},..., {{Code|typ jednostki i}} - typy jednostek, którym odpowiadają pewne przestrzenie przedmiotowe, dla pozycji bazowej, numerkowej i ogólnej. Parametry ramki tablicy transportu dziecka: * Parametry dziecka są takie same jak rodzica dla funkcji pudełkowej plus tu wymienione, * {{Code|numer jednostki}} - jak parametr {{Code|i}} nie został ustawiony, to wtedy liczy się ta zmienna. Przykłady: <syntaxhighlight lang="mediawiki"> {{Nazwa szablonu|nazwa przestrzeni nazw=Wikibooks|nazwa przestrzeni nazw 1=Szablon|nazwa przestrzeni nazw i=|nazwa jednostki 2=Wikibooks:Strona}} </syntaxhighlight> W dziecku powiedzmy jest wywołanie, i szukamy nazwy przestrzeni nazw o numerze dwa, która została podana, ale istnieje za to jej wersji ogólna {{Code|nazwa przestrzeni nazw i}} i domyślna {{Code|nazwa przestrzeni nazw}}, ale wtedy dla tego numerkowego liczy się to ogólne z {{Code| i}}, a ponieważ ta nazwa jest pusta, więc będziemy liczyli nazwę przestrzeni nazw z {{Code|nazwa jednostki 2}}: <syntaxhighlight lang="mediawiki"> {{#invoke:Pudełko|Nazwa przestrzeni nazw dyskusji 2|numer jednostki=2}} </syntaxhighlight> Na podstawie powyższego przykładu otrzymamy wynik o schemacie, nie wyniku, bo tam nie ma zmiennej {{Code|nazwa przestrzeni nazw 1}}, ale jest {{Code|nazwa przestrzeni nazw i}}: <syntaxhighlight lang="mediawiki"> <!-- Ale nie "nazwa przestrzeni nazw 2", bo jej nie ma, ale za to istnieje "nazwa przestrzeni nazw i"; --> <!-- nazwa przestrzeni nazw 2=nazwa przestrzeni nazw i="", a nazwa jednostki 2="Wikibooks:Strona"; --> <!-- Czyli wynik: --> Dyskusja Wikibooks <!-- Widzimy, że wygenerowała się nazwa przestrzeni nazw, którą jest przestrzeń nieprogramowa, ale dyskusji projektu, wychodząca z nazwy jednostek w tym przypadku z "nazwa jednostki 2"; --> </syntaxhighlight> Nie jest brana w tym powyższym przykładzie zmienna {{Code|nazwa przestrzeni nazw}}, bo jej nie ma, ale za to jest {{Code|nazwa przestrzeni nazw i}}, bo ona występuje jako parametr domyślny ogólny dla parametrów numerkowych. Tytaj jest używana jest zmienna {{Code|nazwa jednostki 2}} do wygenerowania ostatecznego wyniku, bo jak można zauważyć, parametry przestrzenne wskazują na przestrzeń główną, a nazwy jednostek już nie. Przykłady w wikikodzie: * {{Code|{{m|Pudełko|Nazwa przestrzeni nazw dyskusji 2|numer jednostki{{=}}2}}}} → {{Tt|{{#invoke:Pudełko|Nazwa przestrzeni nazw dyskusji 2|numer jednostki=2}}}} * {{Code|{{m|Pudełko|Nazwa przestrzeni nazw dyskusji 2|Szablon|nazwa przestrzeni nazw i{{=}}Moja przestrzeń|numer jednostki{{=}}2}}}} → {{Tt|{{#invoke:Pudełko|Nazwa przestrzeni nazw dyskusji 2|Szablon|nazwa przestrzeni nazw i=Moja przestrzeń|numer jednostki=2}}}} * {{Code|{{m|Pudełko|Nazwa przestrzeni nazw dyskusji 2|nazwa przestrzeni nazw 2{{=}}|nazwa jednostki 2{{=}}Szablon:Strona|numer jednostki{{=}}2}}}} → {{Tt|{{#invoke:Pudełko|Nazwa przestrzeni nazw dyskusji 2|nazwa przestrzeni nazw 2=|nazwa jednostki 2=Szablon:Strona|numer jednostki=2}}}} * {{Code|{{m|Pudełko|Nazwa przestrzeni nazw dyskusji 2|nazwa przestrzeni nazw i{{=}}|nazwa jednostki 2{{=}}Szablon:Strona|numer jednostki{{=}}2}}}} → {{Tt|{{#invoke:Pudełko|Nazwa przestrzeni nazw dyskusji 2|nazwa przestrzeni nazw i=|nazwa jednostki 2=Szablon:Strona|numer jednostki=2}}}} * {{Code|{{m|Pudełko|Nazwa przestrzeni nazw dyskusji 2|Szablon|nazwa przestrzeni nazw{{=}}|nazwa jednostki 2{{=}}Wikibooks:Strona|numer jednostki{{=}}2}}}} → {{Tt|{{#invoke:Pudełko|Nazwa przestrzeni nazw dyskusji 2|Szablon|nazwa przestrzeni nazw=|nazwa jednostki 2=Dyskusja Wikibooks:Strona|numer jednostki=2}}}} Powyżej dla przykładu podano parametry nie w rodzicu w szablonie, tylko w dziecku, jeśli chodzi o parametry nazw przestrzeni nazw i nazw jednostek, ale ich się za to nie powinno podawać w tych ramach, tylko w szablonach, w których wywoływane są te ramki pudełek {{Code|{{m|Pudełko}}}}, ale tak tutaj tak zrobiono by było najłatwiej sprawdzić działanie tego typu funkcji. Analogicznie możemy podawać parametry typu jednostki, np.: wywołaniu modułowym {{Code|{{m|Pudełko|Nazwa przestrzeni nazw dyskusji 2|typ jednostki 2{{=}}Podręcznik|nazwa jednostki 2{{=}}Szablon:Strona|numer jednostki{{=}}2}}}} (ale wtedy jest brana przestrzeń nazw z nazwy jednostki), ale o tym więcej w rozdziałach {{Code|{{sr|# p["Dyskusyjny typ jednostki 3"](frame,i)|p=Pudełko}}}} w „{{sr|#Funkcje typu jednostki|p=Pudełko}}”, one definiują przestrzenie dyskusji, ale można użyć parametru dyskusji typu jednostki z obojętnie jaką wartością niepustą, czy pustą, czy nawet jej nie podamy, wtedy wyświetli się nazwa przestrzeni nazw dyskusji. Jeżeli typ jednostki wskazuje na przestrzeń nazw główną, wtedy się liczą parametry nazw jednostek. Również parametry typu jednostki nie powinno się podawać w dziecku w ramce, tylko w rodzicu w szablonie jako parametry, w którym ta ramka jest wywoływana, ale tutaj podano jedynie dla przykładu, jak najłatwiej sprawdzić działanie tych parametrów tej funkcji. Najpierw w funkcji nagłówku brane są parametry nazw przestrzeni nazw, a jeżeli ich nie ma, to parametry typu jednostki, a jeżeli nie ma lub parametry przestrzenne wskazują na przestrzeń główną, i nie ma nazwy jednostki, to generowane są nazwy tej funkcji na podstawie aktualnej strony. == Funkcje pełnych nazw jednostki == === {{Code|p["Pełna nazwa dyskusji jednostki"](frame,i)}} === === {{Code|p["Pełna nazwa przedmiotowa jednostki"](frame,i)}} === === {{Code|p["Pełna nazwa jednostki"](frame,i)}} === == Funkcje pełnych nazw jednostki drugiej wersji == === {{Code|p["Pełna nazwa dyskusji jednostki 2"](frame,i)}} === === {{Code|p["Pełna nazwa przedmiotowa jednostki 2"](frame,i)}} === === {{Code|p["Pełna nazwa jednostki 2"](frame,i)}} === == Funkcje pełnych nazw jednostki trzeciej wersji == === {{Code|p["Pełna nazwa dyskusji jednostki 3"](frame,i)}} === === {{Code|p["Pełna nazwa przedmiotowa jednostki 3"](frame,i)}} === === {{Code|p["Pełna nazwa jednostki 3"](frame,i)}} === == Funkcje nazw jednostki == === {{Code|p["Nazwa jednostki"](frame,i)}} === == Funkcje nazw jednostki drugiej wersji == === {{Code|p["Nazwa jednostki 2"](frame,i)}} === === {{Code|p["Nazwa przedmiotowa jednostki 2"](frame,i)}} === === {{Code|p["Nazwa dyskusji jednostki 2"](frame,i)}} === == Funkcje nazw przestrzeni nazw trzeciej wersji == === {{Code|p["Nazwa przestrzeni nazw 3"](frame,i)}} === Funkcja pisze nazwę przestrzeni nazw, niezależnie, czy to jest przedmiotowa, czy dyskusji, według, i nie zawsze tylko, podanej w zmiennej {{Code|nazwa przestrzeni nazw}} dla pozycja bazowej w podanych parametrach szablonu rodzicu ramki dziecka, lub dla innej pozycji należy parametr podawać w formie {{Code|nazwa przestrzeni nazw 1}}, {{Code|Nazwa przestrzeni nazw 3}}, {{Code|nazwa przestrzeni nazw 3}},..., lub te parametry można podać w postaci ogólnej {{Code|nazwa przestrzeni nazw i}}. W tej funkcji trzeba też podawać parametry nazwy jednostek {{Code|nazwa jednostki}}, {{Code|nazwa jednostki 1}}, {{Code|nazwa jednostki 2}}, {{Code|nazwa jednostki 3}},... Parametry podaje się w parametrach rodzica wywołania tej funkcji {{Code|{{m|Pudełko|Nazwa przestrzeni nazw 3}}}} (ale ich nie trzeba podawać w dziecku, ale można) i w parametrach dziecka, jeśli chodzi o zmienną {{Code|numer jednostki}}, czyli np.: {{Code|{{m|Pudełko|Nazwa przestrzeni nazw 3|numer jednostki{{=}}<jakaś liczba całkowita dodatnia>}}}}. Te parametry przestrzenne zamiast w rodzicu w szablonie można podać w ramce dziecka, wtedy parametry dziecka mają pierwszeństwo. Przestrzeń nazw z parametrów nazw przestrzennych bazowych (bez numerka) może odpowiadać wartości przestrzeni głównej, to wtedy odpowiednia przestrzeń nazw z parametru nazwy jednostki się nie liczy w tej funkcji, aby się liczyła należy użyć funkcji {{Code|{{sr|#p["Nazwa przestrzeni nazw 2"](frame,...)|p=Pudełko}}}}. W tym przypadku funkcja działa jak {{Code|{{sr|#p["Nazwa przestrzeni nazw"](frame,...)|p=Pudełko}}}}. Przestrzeń nazw z parametrów nazw przestrzennych numerkowych może odpowiadać wartości przestrzeni głównej, to wtedy odpowiednia przestrzeń nazw z parametru nazwy jednostki się liczy w tej funkcji, wtedy jest liczona nazwa przestrzeni nazw z tego parametru. Gdy parametry przestrzenne lub typ jednostki w drugim podejściu nie wskazują na przestrzeń główną, to wtedy działanie tej funkcji jest podobne do {{Code|{{sr|#p["Nazwa przestrzeni nazw 2"](frame,...)|p=Pudełko}}}}. Definicja skrótowa funkcji: <syntaxhighlight lang="lua"> p["Nazwa przestrzeni nazw 3"]=function(frame,czy_uwzglednic_alternatywna_nazwe,i)...end; </syntaxhighlight> Wtedy ciało funkcji tej, czyli jego definicja w środku, jest: <syntaxhighlight lang="lua"> -- Jest liczony numer parametru nazwy przestrzeni nazw, domyslnie chodzi tu o numer bazowy parametrów przestrzennych; local numer_jednostki=i or frame.args["numer jednostki"]; local liczba_numeru_jednostki=((numer_jednostki)and(tonumber(numer_jednostki)) or 0); local pudelko_pomocne_modul=require("Module:Pudełko/Pomocne"); -- Liczy nazwę przestrzeni nazw dyskusji na podstawie podanych parametrów; return pudelko_pomocne_modul.Uzyskanie_nazw_jednostki(frame,0,liczba_numeru_jednostki,nil,2); </syntaxhighlight> Parametry funkcji: * {{Code|frame}} - tablica ramki tablicy transportu, * {{Code|czy_uwzglednic_alternatywna_nazwe}} - czy ma uwzględniać nazwę przestrzeni nazw domyślną szablonu, dostępne wartości: {{Code|false}}, w której nazwa domyślna nie jest uwzględniana wtedy, oraz {{Code|nil}} i {{Code|true}}, które oznaczają to samo, w tym jeżeli ona jest uwzględniana, wtedy jest brany parametr pierwszy dziecka, który musi istnieć przy takiej wartości tego parametru, tzn. {{Code|{{m|Pudełko|Nazwa przestrzeni nazw 3|Szablon}}}}, a jeśli nazwa uzyskana nazwy przestrzeni nazw jest w takim przypadku błędna, to brany jest ten element, a jeżeli nazwa domyślna jest błędna, czyli {{Code|{{m|Pudełko|Nazwa przestrzeni nazw 3|Moja przestrzeń}}}}, wtedy funkcja zwraca stan błędu {{Code|(błąd)}}. * {{Code|i}} - numer zmiennej nazwy przestrzeni nazw. Funkcja wykorzystuje {{Code|{{sr|#p.Uzyskanie_nazw_jednostki(frame,...)|p=Pudełko/Pomocne}}}} do wyznaczania ogólnego nazwy przestrzeni nazw dla pozycji bazowej i numerkowej, tzn. dla pozycji: jeden, dwa, trzy,..., itd, i ich ogólnej. Parametr ramki tablicy transportu rodzica szablonu: * {{Code|nazwa przestrzeni nazw}}, {{Code|nazwa przestrzeni nazw 1}}, {{Code|Nazwa przestrzeni nazw 3}}, {{Code|nazwa przestrzeni nazw 3}},..., {{Code|nazwa przestrzeni nazw i}} - nazwy przestrzeni nazw dla pozycji bazowej oraz zwykłej i ogólnej numerkowej, * {{Code|nazwa jednostki}}, {{Code|nazwa jednostki 1}}, {{Code|nazwa jednostki 2}}, {{Code|nazwa jednostki 3}},... - nazwy jednostek dla pozycji bazowej i numerkowej, * {{Code|typ jednostki}}, {{Code|typ jednostki 1}}, {{Code|typ jednostki 2}}, {{Code|typ jednostki 3}},..., {{Code|typ jednostki i}} - typy jednostek, którym odpowiadają pewne przestrzenie przedmiotowe, dla pozycji bazowej, numerkowej i ogólnej, ** {{Code|dyskusja typu jednostki}}, {{Code|dyskusja typu jednostki 1}}, {{Code|dyskusja typ jednostki 2}}, {{Code|dyskusja typ jednostki 3}},..., {{Code|dyskusja typ jednostki i}} - czy dany typ jednostki ma przedstawiać, jeśli niepusta, przestrzeń dyskusji dla pozycji bazowej, numerkowej i ogólnej. Parametry ramki tablicy transportu dziecka: * Parametry dziecka są takie same jak rodzica dla funkcji pudełkowej plus tu wymienione, * {{Code|numer jednostki}} - jak parametr {{Code|i}} nie został ustawiony, to wtedy liczy się ta zmienna. Przykłady: <syntaxhighlight lang="mediawiki"> {{Nazwa szablonu 1|nazwa przestrzeni nazw=Wikibooks|nazwa przestrzeni nazw=|nazwa przestrzeni nazw i=|nazwa jednostki=Szablon:Strona}} ---- {{Nazwa szablonu 2|nazwa przestrzeni nazw=Wikibooks|nazwa przestrzeni nazw 1=Szablon|nazwa przestrzeni nazw i=|nazwa jednostki 2=Wikibooks:Strona}} </syntaxhighlight> W pierwszym wywołaniu {{Code|nazwa przestrzeni nazw}} jest puste, ale dla tego bazowego (bez numerka) szukamy przestrzeni nazw, a więc ta nazwa jest ostateczna. ---- W drugim wywołaniu w dziecku powiedzmy jest wywołanie, i szukamy nazwy przestrzeni nazw o numerze dwa, która została podana, ale istnieje za to jej wersji ogólna {{Code|nazwa przestrzeni nazw i}} i domyślna {{Code|nazwa przestrzeni nazw}}, ale wtedy dla tego numerkowego liczy się to ogólne z {{Code| i}}, a ponieważ ta nazwa jest pusta, więc będziemy liczyli nazwę przestrzeni nazw z {{Code|nazwa jednostki 2}}. Odpowiadająca powyższemu kodowi, powiedzmy wikikod, według ich zawartości, przedstawia się: <syntaxhighlight lang="mediawiki"> {{#invoke:Pudełko|Nazwa przestrzeni nazw 3}} ---- {{#invoke:Pudełko|Nazwa przestrzeni nazw 3|numer jednostki=2}} </syntaxhighlight> Na podstawie powyższego przykładu otrzymamy wynik o schemacie, nie wyniku, bo tam nie ma zmiennej {{Code|nazwa przestrzeni nazw 1}}, ale jest {{Code|nazwa przestrzeni nazw i}}: <syntaxhighlight lang="mediawiki"> <!-- nazwa przestrzeni nazw=""; --> <!-- Czyli wynik: --> <!-- wynik pusty --> <!-- Widzimy, że wygenerowała się nazwa przestrzeni nazw, którą jest przestrzeń nazw główna, jest ciągiem pustym: ""; --> ---- <!-- Ale nie "nazwa przestrzeni nazw 2", bo jej nie ma, ale za to istnieje "nazwa przestrzeni nazw i"; --> <!-- nazwa przestrzeni nazw 2=nazwa przestrzeni nazw i="", a nazwa jednostki 2="Wikibooks:Strona"; --> <!-- Czyli wynik: --> Wikibooks <!-- Widzimy, że wygenerowała się nazwa przestrzeni nazw, którą jest przestrzeń nieprogramowa, ale projektu, wychodząca z nazwy jednostek w tym przypadku z "nazwa jednostki 2"; --> </syntaxhighlight> Dla parametrów numerkowych nie jest brana w tym powyższym przykładzie zmienna {{Code|nazwa przestrzeni nazw 2}}, bo jej nie ma, ale za to jest {{Code|nazwa przestrzeni nazw i}}, bo ona występuje jako parametr domyślny ogólny dla parametrów numerkowych. Tytaj jest używana jest zmienna {{Code|nazwa jednostki 2}} do wygenerowania ostatecznego wyniku, bo jak można zauważyć, parametry przestrzenne wskazują na przestrzeń główną, a nazwy jednostek już nie. Dla parametrów bazowych mamy zmienną {{Code|nazwa przestrzeni nazw}}, ona jest pusta, więc to zostanie wziete do ostatecznego wyniku. Przykłady w wikikodzie: * {{Code|{{m|Pudełko|Nazwa przestrzeni nazw 3|Szablon|nazwa przestrzeni nazw{{=}}Moja przestrzeń|nazwa jednostki{{=}}Wikibooks:Strona}}}} → {{Tt|{{#invoke:Pudełko|Nazwa przestrzeni nazw 3|Szablon|nazwa przestrzeni nazw=Moja przestrzeń|nazwa jednostki=Wikibooks:Szablon}}}} * {{Code|{{m|Pudełko|Nazwa przestrzeni nazw 3|Szablon|nazwa przestrzeni nazw 2{{=}}Moja przestrzeń|nazwa jednostki 2{{=}}Wikibooks:Strona}|numer jednostki{{=}}2}}}} → {{Tt|{{#invoke:Pudełko|Nazwa przestrzeni nazw 3|Szablon|nazwa przestrzeni nazw 2=Moja przestrzeń|nazwa jednostki 2=Wikibooks:Szablon|numer jednostki=2}}}} * {{Code|{{m|Pudełko|Nazwa przestrzeni nazw 3|nazwa przestrzeni nazw{{=}}|nazwa jednostki{{=}}Wikibooks:Strona}}}} → {{Tt|{{#invoke:Pudełko|Nazwa przestrzeni nazw 3|nazwa przestrzeni nazw=|nazwa jednostki=Wikibooks:Szablon}}}} * {{Code|{{m|Pudełko|Nazwa przestrzeni nazw 3|nazwa przestrzeni nazw 2{{=}}|nazwa jednostki 2{{=}}Wikibooks:Strona|numer jednostki{{=}}2}}}} → {{Tt|{{#invoke:Pudełko|Nazwa przestrzeni nazw 3|nazwa przestrzeni nazw 2=|nazwa jednostki 2=Wikibooks:Szablon|numer jednostki=2}}}} Powyżej dla przykładu podano parametry nie w rodzicu w szablonie, tylko w dziecku, jeśli chodzi o parametry nazw przestrzeni nazw i nazw jednostek, ale ich się za to nie powinno podawać w tych ramach, tylko w szablonach, w których wywoływane są te ramki pudełek {{Code|{{m|Pudełko}}}}, ale tak tutaj tak zrobiono by było najłatwiej sprawdzić działanie tego typu funkcji. Analogicznie możemy podawać parametry typu jednostki, np.: wywołaniu modułowym {{Code|{{m|Pudełko|Nazwa przestrzeni nazw 3|typ jednostki 2{{=}}Podręcznik|nazwa jednostki 2{{=}}Szablon:Strona|numer jednostki{{=}}2}}}} (ale wtedy jest brana przestrzeń nazw z nazwy jednostki), ale o tym więcej w rozdziałach {{Code|{{sr|#p["Typ jednostki 3"](frame,i)|p=Pudełko}}}} w „{{sr|#Funkcje typu jednostki|p=Pudełko}}”, on definiuje przestrzenie przedmiotowe, ale można użyć parametru dyskusji typu jednostki z wartością niepustą, wtedy wyświetli się nazwa przestrzeni nazw dyskusji. Jeżeli typ jednostki bazowy wskazuje na przestrzeń nazw główną, wtedy się nie liczą parametry nazw jednostek, a na numerkowy, wtedy się liczy. Również parametry typu jednostki nie powinno się podawać w dziecku w ramce, tylko w rodzicu w szablonie jako parametry, w którym ta ramka jest wywoływana, ale tutaj podano jedynie dla przykładu, jak najłatwiej sprawdzić działanie tych parametrów tej funkcji. Najpierw w funkcji nagłówku brane są parametry nazw przestrzeni nazw, a jeżeli ich nie ma, to parametry typu jednostki, a jeżeli nie ma lub parametry przestrzenne wskazują na przestrzeń główną, i nie ma nazwy jednostki, to generowane są nazwy tej funkcji na podstawie aktualnej strony. === {{Code|p["Nazwa przedmiotowej przestrzeni nazw 3"](frame,i)}} === Funkcja pisze przedmiotową nazwę przestrzeni nazw jakikolwiek nazwy przestrzeni nazw (tzn. nazwę przedmiotową nazwy przestrzenie nazw, czyli nie dyskusji, zamieniana jest na nią samą, czyli identyfikator przestrzeni się nie zmienia, a dyskusji, nie przedmiotową, przekształca się na przedmiotową jej odpowiadającą, czyli w tym przypadku identyfikator przestrzeni zmniejsza się o numer mniej), według podanej w zmiennej {{Code|nazwa przestrzeni nazw}} dla pozycja bazowej w podanych parametrach szablonu rodzicu ramki dziecka, lub dla innej pozycji należy parametr podawać w formie {{Code|nazwa przestrzeni nazw 1}}, {{Code|nazwa przestrzeni nazw 2}}, {{Code|nazwa przestrzeni nazw 3}},..., lub te parametry można podać w postaci ogólnej {{Code|nazwa przestrzeni nazw i}}. Parametry podaje się w parametrach rodzica wywołania tej funkcji {{Code|{{m|Pudełko|Nazwa przedmiotowej przestrzeni nazw 3}}}} (ale ich nie trzeba podawać w dziecku, ale można) i w parametrach dziecka, jeśli chodzi o zmienną {{Code|numer jednostki}}, czyli np.: {{Code|{{m|Pudełko|Nazwa przedmiotowej przestrzeni nazw 3|numer jednostki{{=}}<jakaś liczba całkowita dodatnia>}}}}. Te parametry przestrzenne zamiast w rodzicu w szablonie można podać w ramce dziecka, wtedy parametry dziecka mają pierwszeństwo. Parametry przestrzenne mogą mogą być podane w postaci przestrzeni przedmiotowej lub dyskusji, ale ta funkcja zawsze ją zamienia na przedmiotową. Przestrzeń nazw z parametrów nazw przestrzennych bazowych (bez numerka) może odpowiadać wartości przestrzeni głównej, to wtedy odpowiednia przestrzeń nazw z parametru nazwy jednostki się nie liczy w tej funkcji, aby się liczyła należy użyć funkcji {{Code|{{sr|#p["Nazwa przedmiotowej przestrzeni nazw 2"](frame,...)|p=Pudełko}}}}. W tym przypadku funkcja działa jak {{Code|{{sr|#p["Nazwa przedmiotowej przestrzeni nazw"](frame,...)|p=Pudełko}}}}. Przestrzeń nazw z parametrów nazw przestrzennych numerkowych może odpowiadać wartości przestrzeni głównej, to wtedy odpowiednia przestrzeń nazw z parametru nazwy jednostki się liczy w tej funkcji, wtedy jest liczona nazwa przestrzeni nazw z tego parametru. Gdy parametry przestrzenne lub typ jednostki w drugim podejściu nie wskazują na przestrzeń główną, to wtedy działanie tej funkcji jest podobne do {{Code|{{sr|#p["Nazwa przedmiotowej przestrzeni nazw 2"](frame,...)|p=Pudełko}}}}. Definicja skrótowa funkcji: <syntaxhighlight lang="lua"> p["Nazwa przedmiotowej przestrzeni nazw 3"]=function(frame,czy_uwzglednic_alternatywna_nazwe,i)...end; </syntaxhighlight> Wtedy ciało funkcji tej, czyli jego definicja w środku, jest: <syntaxhighlight lang="lua"> -- Jest liczony numer parametru nazwy przestrzeni nazw, domyslnie chodzi tu o numer bazowy parametrów przestrzennych; local numer_jednostki=i or frame.args["numer jednostki"]; local liczba_numeru_jednostki=((numer_jednostki)and(tonumber(numer_jednostki)) or 0); local pudelko_pomocne_modul=require("Module:Pudełko/Pomocne"); -- Liczy nazwę przestrzeni nazw przedmiotową na podstawie podanych parametrów; return pudelko_pomocne_modul.Uzyskanie_nazw_jednostki(frame,1,liczba_numeru_jednostki,nil,1); </syntaxhighlight> Parametry funkcji: * {{Code|frame}} - tablica ramki tablicy transportu, * {{Code|czy_uwzglednic_alternatywna_nazwe}} - czy ma uwzględniać nazwę przestrzeni nazw domyślną szablonu, dostępne wartości: {{Code|false}}, w której nazwa domyślna nie jest uwzględniana wtedy, oraz {{Code|nil}} i {{Code|true}}, które oznaczają to samo, w tym jeżeli ona jest uwzględniana, wtedy jest brany parametr pierwszy dziecka, który musi istnieć przy takiej wartości tego parametru, tzn. {{Code|{{m|Pudełko|Nazwa przedmiotowej przestrzeni nazw 3|Dyskusja szablonu}}}} - ta nazwa domyślna zostanie zamieniona na przedmiotową, a jak ona by była przedmiotowa, to żadnej zamiany by nie było, a nazwa uzyskana z nazwy przestrzeni nazw z parametrów przestrzennych jest w takim przypadku błędna, to w takim razie brany jest ten parametr, a jeżeli ta nazwa domyślna jest błędna, czyli {{Code|{{m|Pudełko|Nazwa przedmiotowej przestrzeni nazw 3|Moja przestrzeń}}}}, wtedy funkcja zwraca stan błędu {{Code|(błąd)}}. * {{Code|i}} - numer zmiennej nazwy przestrzeni nazw. Funkcja wykorzystuje {{Code|{{sr|#p.Uzyskanie_nazw_jednostki(frame,...)|p=Pudełko/Pomocne}}}} do wyznaczania ogólnego nazwy przestrzeni nazw dla pozycji bazowej i numerkowej, tzn. dla pozycji: jeden, dwa, trzy,..., itd, i ich ogólnej. Parametr ramki tablicy transportu rodzica szablonu: * {{Code|nazwa przestrzeni nazw}}, {{Code|nazwa przestrzeni nazw 1}}, {{Code|nazwa przestrzeni nazw 2}}, {{Code|nazwa przestrzeni nazw 3}},..., {{Code|nazwa przestrzeni nazw i}} - nazwy przestrzeni nazw dla pozycji bazowej oraz zwykłej i ogólnej numerkowej, * {{Code|typ jednostki}}, {{Code|typ jednostki 1}}, {{Code|typ jednostki 2}}, {{Code|typ jednostki 3}},..., {{Code|typ jednostki i}} - typy jednostek, którym odpowiadają pewne przestrzenie przedmiotowe, dla pozycji bazowej, numerkowej i ogólnej. Parametry ramki tablicy transportu dziecka: * Parametry dziecka są takie same jak rodzica dla funkcji pudełkowej plus tu wymienione, * {{Code|numer jednostki}} - jak parametr {{Code|i}} nie został ustawiony, to wtedy liczy się ta zmienna. Przykłady: <syntaxhighlight lang="mediawiki"> {{Nazwa szablonu 1|nazwa przestrzeni nazw=Wikibooks|nazwa przestrzeni nazw=|nazwa przestrzeni nazw i=|nazwa jednostki=Dyskusja Wikibooks:Strona}} ---- {{Nazwa szablonu 2|nazwa przestrzeni nazw=Wikibooks|nazwa przestrzeni nazw 1=Szablon|nazwa przestrzeni nazw i=|nazwa jednostki 2=Dyskusja Wikibooks:Strona}} </syntaxhighlight> W pierwszym wywołaniu {{Code|nazwa przestrzeni nazw}} jest puste, ale dla tego bazowego (bez numerka) szukamy przestrzeni nazw, a więc ta nazwa jest ostateczna. ---- W drugim wywołaniu w dziecku powiedzmy jest wywołanie, i szukamy nazwy przestrzeni nazw o numerze dwa, która została podana, ale istnieje za to jej wersji ogólna {{Code|nazwa przestrzeni nazw i}} i domyślna {{Code|nazwa przestrzeni nazw}}, ale wtedy dla tego numerkowego liczy się to ogólne z {{Code| i}}, a ponieważ ta nazwa jest pusta, więc będziemy liczyli nazwę przestrzeni nazw z {{Code|nazwa jednostki 2}}. Odpowiadająca powyższemu kodowi, powiedzmy wikikod, według ich zawartości, przedstawia się: <syntaxhighlight lang="mediawiki"> {{#invoke:Pudełko|Nazwa przedmiotowej przestrzeni nazw 3}} ---- {{#invoke:Pudełko|Nazwa przedmiotowej przestrzeni nazw 3|numer jednostki=2}} </syntaxhighlight> Na podstawie powyższego przykładu otrzymamy wynik o schemacie, nie wyniku, bo tam nie ma zmiennej {{Code|nazwa przestrzeni nazw 1}}, ale jest {{Code|nazwa przestrzeni nazw i}}: <syntaxhighlight lang="mediawiki"> <!-- nazwa przestrzeni nazw=""; --> <!-- Czyli wynik: --> <!-- wynik pusty --> <!-- Widzimy, że wygenerowała się nazwa przestrzeni nazw, którą jest przestrzeń nazw główna, jest ciągiem pustym: ""; --> ---- <!-- Ale nie "nazwa przestrzeni nazw 2", bo jej nie ma, ale za to istnieje "nazwa przestrzeni nazw i"; --> <!-- nazwa przestrzeni nazw 2=nazwa przestrzeni nazw i="", a nazwa jednostki 2="Dyskusja Wikibooks:Strona"; --> <!-- Czyli wynik: --> Wikibooks <!-- Widzimy, że wygenerowała się nazwa przestrzeni nazw, którą jest przestrzeń nieprogramowa, ale projektu, wychodząca z nazwy jednostek w tym przypadku z "nazwa jednostki 2"; --> </syntaxhighlight> Dla parametrów numerkowych nie jest brana w tym powyższym przykładzie zmienna {{Code|nazwa przestrzeni nazw 2}}, bo jej nie ma, ale za to jest {{Code|nazwa przestrzeni nazw i}}, bo ona występuje jako parametr domyślny ogólny dla parametrów numerkowych. Tytaj jest używana jest zmienna {{Code|nazwa jednostki 2}} do wygenerowania ostatecznego wyniku, bo jak można zauważyć, parametry przestrzenne wskazują na przestrzeń główną, a nazwy jednostek już nie. Dla parametrów bazowych mamy zmienną {{Code|nazwa przestrzeni nazw}}, ona jest pusta, więc to zostanie wziete do ostatecznego wyniku. Przykłady w wikikodzie: * {{Code|{{m|Pudełko|Nazwa przedmiotowej przestrzeni nazw 3|Dyskusja szablonu|nazwa przestrzeni nazw{{=}}Moja przestrzeń|nazwa jednostki{{=}}Dyskusja Wikibooks:Strona}}}} → {{Tt|{{#invoke:Pudełko|Nazwa przedmiotowej przestrzeni nazw 3|Dyskusja szablonu|nazwa przestrzeni nazw=Moja przestrzeń||nazwa jednostki=Dyskusja Wikibooks:Szablon}}}} * {{Code|{{m|Pudełko|Nazwa przedmiotowej przestrzeni nazw 3|Dyskusja szablonu|nazwa przestrzeni nazw 2{{=}}Moja przestrzeń|nazwa jednostki 2{{=}}Dyskusja Wikibooks:Strona|numer jednostki{{=}}2}}}} → {{Tt|{{#invoke:Pudełko|Nazwa przedmiotowej przestrzeni nazw 3|Dyskusja szablonu|nazwa przestrzeni nazw 2=Moja przestrzeń||nazwa jednostki 2=Dyskusja Wikibooks:Szablon|numer jednostki=2}}}} * {{Code|{{m|Pudełko|Nazwa przedmiotowej przestrzeni nazw 3|nazwa przestrzeni nazw{{=}}|nazwa jednostki{{=}}Dyskusja Wikibooks:Strona}}}} → {{Tt|{{#invoke:Pudełko|Nazwa przedmiotowej przestrzeni nazw 3|nazwa przestrzeni nazw=|nazwa jednostki=Dyskusja Wikibooks:Szablon}}}} * {{Code|{{m|Pudełko|Nazwa przedmiotowej przestrzeni nazw 3|nazwa przestrzeni nazw 2{{=}}|nazwa jednostki 2{{=}}Dyskusja Wikibooks:Strona|numer jednostki{{=}}2}}}} → {{Tt|{{#invoke:Pudełko|Nazwa przedmiotowej przestrzeni nazw 3|nazwa przestrzeni nazw 2=|nazwa jednostki 2=Dyskusja Wikibooks:Szablon|numer jednostki=2}}}} Powyżej dla przykładu podano parametry nie w rodzicu w szablonie, tylko w dziecku, jeśli chodzi o parametry nazw przestrzeni nazw, ale ich się za to nie powinno podawać w tych ramach, tylko w szablonach, w których wywoływane są te ramki pudełek {{Code|{{m|Pudełko}}}}, ale tak tutaj tak zrobiono by było najłatwiej sprawdzić działanie tego typu funkcji. Analogicznie możemy podawać parametry typu jednostki, np.: wywołaniu modułowym {{Code|{{m|Pudełko|Nazwa przedmiotowej przestrzeni nazw 3|typ jednostki 2{{=}}strona szablonu|numer jednostki{{=}}2}}}}, ale o tym więcej w rozdziałach {{Code|{{sr|# p["Przedmiotowy typ jednostki 3"](frame,i)|p=Pudełko}}}} w „{{sr|#Funkcje typu jednostki|p=Pudełko}}”, ale wtedy ta sama nazwa przestrzeni nazw reprezentowana przez {{Parametr|typ jednostki 2|strona szablonu}}, jest zamieniana na to samo, lepiej jest tutaj używać parametrów przestrzennych nazw niż typu jednostki, bo typ jednostki ma taką samą wartość dla przestrzeni przedmiotowej, co dyskusji. Tutaj parametr dyskusji typu jednostki bazowy i numerkowy ogólny, czy szczegółowy, nie gra roli, bo nawet, gdy wygenerujemy nazwę przestrzeni dyskusji za pomoca tego parametru, to i tak otrzymamy na samym końcu jego nazwę przedmiotową. Jeżeli typ jednostki bazowy wskazuje na przestrzeń nazw główną, wtedy się nie liczą parametry nazw jednostek, a na numerkowy, wtedy się liczy. Również parametry typu jednostki nie powinno się podawać w dziecku w ramce, tylko w rodzicu w szablonie jako parametry, w którym ta ramka jest wywoływana, ale tutaj podano jedynie dla przykładu, jak najłatwiej sprawdzić działanie tych parametrów tej funkcji. Najpierw w funkcji nagłówku brane są parametry nazw przestrzeni nazw, a jeżeli ich nie ma, to parametry typu jednostki, a jeżeli nie ma, to generowane są nazwy na podstawie aktualnego modułu. === {{Code|p["Nazwa przestrzeni nazw dyskusji 3"](frame,i)}} === Funkcja pisze nazwę przestrzeni nazw dyskusji jakikolwiek nazwy przestrzeni nazw (tzn. nazwę dyskusji nazwy przestrzenie nazw, czyli nie przedmiotowej, zamieniana jest na nią samą, czyli identyfikator przestrzeni się nie zmienia, a przedmiotową, nie dyskusji, przekształca się na dyskusji jej odpowiadającą, czyli w tym przypadku identyfikator przestrzeni zwiększa się o numer więcej), według, i nie zawsze tylko, podanej w zmiennej {{Code|nazwa przestrzeni nazw}} dla pozycja bazowej w podanych parametrach szablonu rodzicu ramki dziecka, lub dla innej pozycji należy parametr podawać w formie {{Code|nazwa przestrzeni nazw 1}}, {{Code|nazwa przestrzeni nazw 2}}, {{Code|nazwa przestrzeni nazw 3}},..., lub te parametry można podać w postaci ogólnej {{Code|nazwa przestrzeni nazw i}}. W tej funkcji trzeba też podawać parametry nazwy jednostek {{Code|nazwa jednostki}}, {{Code|nazwa jednostki 1}}, {{Code|nazwa jednostki 2}}, {{Code|nazwa jednostki 3}},... Parametry podaje się w parametrach rodzica wywołania tej funkcji {{Code|{{m|Pudełko|Nazwa przestrzeni nazw dyskusji 3}}}} (ale ich nie trzeba podawać w dziecku, ale można) i w parametrach dziecka, jeśli chodzi o zmienną {{Code|numer jednostki}}, czyli np.: {{Code|{{m|Pudełko|Nazwa przestrzeni nazw dyskusji 3|numer jednostki{{=}}<jakaś liczba całkowita dodatnia>}}}}. Te parametry przestrzenne zamiast w rodzicu w szablonie można podać w ramce dziecka, wtedy parametry dziecka mają pierwszeństwo. Przestrzeń nazw z parametrów nazw przestrzennych bazowych (bez numerka) może odpowiadać wartości przestrzeni głównej, to wtedy odpowiednia przestrzeń nazw z parametru nazwy jednostki się nie liczy w tej funkcji, aby się liczyła należy użyć funkcji {{Code|{{sr|#p["Nazwa przestrzeni nazw dyskusji 2"](frame,...)|p=Pudełko}}}}. W tym przypadku funkcja działa jak {{Code|{{sr|#p["Nazwa przestrzeni nazw dyskusji"](frame,...)|p=Pudełko}}}}. Przestrzeń nazw z parametrów nazw przestrzennych numerkowych może odpowiadać wartości przestrzeni głównej, to wtedy odpowiednia przestrzeń nazw z parametru nazwy jednostki się liczy w tej funkcji, wtedy jest liczona nazwa przestrzeni nazw z tego parametru. Gdy parametry przestrzenne lub typ jednostki w drugim podejściu nie wskazują na przestrzeń główną, to wtedy działanie tej funkcji jest podobne do {{Code|{{sr|#p["Nazwa przestrzeni nazw dyskusji 2"](frame,...)|p=Pudełko}}}}. Definicja skrótowa funkcji: <syntaxhighlight lang="lua"> p["Nazwa przestrzeni nazw dyskusji 3"]=function(frame,czy_uwzglednic_alternatywna_nazwe,i)...end; </syntaxhighlight> Wtedy ciało funkcji tej, czyli jego definicja w środku, jest: <syntaxhighlight lang="lua"> -- Jest liczony numer parametru nazwy przestrzeni nazw, domyslnie chodzi tu o numer bazowy parametrów przestrzennych; local numer_jednostki=i or frame.args["numer jednostki"]; local liczba_numeru_jednostki=((numer_jednostki)and(tonumber(numer_jednostki)) or 0); local pudelko_pomocne_modul=require("Module:Pudełko/Pomocne"); -- Liczy nazwę przestrzeni nazw dyskusji na podstawie podanych parametrów; return pudelko_pomocne_modul.Uzyskanie_nazw_jednostki(frame,2,liczba_numeru_jednostki,nil,1); </syntaxhighlight> Parametry funkcji: * {{Code|frame}} - tablica ramki tablicy transportu, * {{Code|czy_uwzglednic_alternatywna_nazwe}} - czy ma uwzględniać nazwę przestrzeni nazw domyślną szablonu, dostępne wartości: {{Code|false}}, w której nazwa domyślna nie jest uwzględniana wtedy, oraz {{Code|nil}} i {{Code|true}}, które oznaczają to samo, w tym jeżeli ona jest uwzględniana, wtedy jest brany parametr pierwszy dziecka, który musi istnieć przy takiej wartości tego parametru, tzn. {{Code|{{m|Pudełko|Nazwa przestrzeni nazw dyskusji 3|Szablon}}}}, nazwa domyślna zostatnie zamieniona na dyskusji, a jeśli jest już taka, to takiej transfomacji nie ma, a jeśli nazwa uzyskana nazwy przestrzeni nazw jest w takim przypadku błędna, to wzięty jest ten parametr, a jeżeli nazwa domyślna jest błędna, czyli {{Code|{{m|Pudełko|Nazwa przestrzeni nazw dyskusji 3|Moja przestrzeń}}}}, wtedy funkcja zwraca stan błędu {{Code|(błąd)}}. * {{Code|i}} - numer zmiennej nazwy przestrzeni nazw. Funkcja wykorzystuje {{Code|{{sr|#p.Uzyskanie_nazw_jednostki(frame,...)|p=Pudełko/Pomocne}}}} do wyznaczania ogólnego nazwy przestrzeni nazw dla pozycji bazowej i numerkowej, tzn. dla pozycji: jeden, dwa, trzy,..., itd, i ich ogólnej. Parametr ramki tablicy transportu rodzica szablonu: * {{Code|nazwa przestrzeni nazw}}, {{Code|nazwa przestrzeni nazw 1}}, {{Code|nazwa przestrzeni nazw 2}}, {{Code|nazwa przestrzeni nazw 3}},..., {{Code|nazwa przestrzeni nazw i}} - nazwy przestrzeni nazw dla pozycji bazowej oraz zwykłej i ogólnej numerkowej, * {{Code|nazwa jednostki}}, {{Code|nazwa jednostki 1}}, {{Code|nazwa jednostki 2}}, {{Code|nazwa jednostki 3}},... - nazwy jednostek dla pozycji bazowej i numerkowej, * {{Code|typ jednostki}}, {{Code|typ jednostki 1}}, {{Code|typ jednostki 2}}, {{Code|typ jednostki 3}},..., {{Code|typ jednostki i}} - typy jednostek, którym odpowiadają pewne przestrzenie przedmiotowe, dla pozycji bazowej, numerkowej i ogólnej. Parametry ramki tablicy transportu dziecka: * Parametry dziecka są takie same jak rodzica dla funkcji pudełkowej plus tu wymienione, * {{Code|numer jednostki}} - jak parametr {{Code|i}} nie został ustawiony, to wtedy liczy się ta zmienna. Przykłady: <syntaxhighlight lang="mediawiki"> {{Nazwa szablonu 1|nazwa przestrzeni nazw=Wikibooks|nazwa przestrzeni nazw=|nazwa przestrzeni nazw i=|nazwa jednostki=Szablon:Strona}} ---- {{Nazwa szablonu 2|nazwa przestrzeni nazw=Wikibooks|nazwa przestrzeni nazw 1=Szablon|nazwa przestrzeni nazw i=|nazwa jednostki 2=Wikibooks:Strona}} </syntaxhighlight> W pierwszym wywołaniu {{Code|nazwa przestrzeni nazw}} jest puste, ale dla tego bazowego (bez numerka) szukamy przestrzeni nazw, a więc ta nazwa jest ostateczna. ---- W drugim wywołaniu w dziecku powiedzmy jest wywołanie, i szukamy nazwy przestrzeni nazw o numerze dwa, która została podana, ale istnieje za to jej wersji ogólna {{Code|nazwa przestrzeni nazw i}} i domyślna {{Code|nazwa przestrzeni nazw}}, ale wtedy dla tego numerkowego liczy się to ogólne z {{Code| i}}, a ponieważ ta nazwa jest pusta, więc będziemy liczyli nazwę przestrzeni nazw z {{Code|nazwa jednostki 2}}. Odpowiadająca powyższemu kodowi, powiedzmy wikikod, według ich zawartości, przedstawia się: <syntaxhighlight lang="mediawiki"> {{#invoke:Pudełko|Nazwa przestrzeni nazw 3}} ---- {{#invoke:Pudełko|Nazwa przestrzeni nazw 3|numer jednostki=2}} </syntaxhighlight> Na podstawie powyższego przykładu otrzymamy wynik o schemacie, nie wyniku, bo tam nie ma zmiennej {{Code|nazwa przestrzeni nazw 1}}, ale jest {{Code|nazwa przestrzeni nazw i}}: <syntaxhighlight lang="mediawiki"> <!-- nazwa przestrzeni nazw=""; --> <!-- Czyli wynik: --> Dyskusja <!-- Widzimy, że wygenerowała się nazwa przestrzeni nazw, którą jest przestrzeń nazw niegłówna, jest ciągiem niepustym; --> ---- <!-- Ale nie "nazwa przestrzeni nazw 2", bo jej nie ma, ale za to istnieje "nazwa przestrzeni nazw i"; --> <!-- nazwa przestrzeni nazw 2=nazwa przestrzeni nazw i="", a nazwa jednostki 2="Wikibooks:Strona"; --> <!-- Czyli wynik: --> Dyskusja Wikibooks <!-- Widzimy, że wygenerowała się nazwa przestrzeni nazw, którą jest przestrzeń nieprogramowa, ale projektu, wychodząca z nazwy jednostek w tym przypadku z "nazwa jednostki 2"; --> </syntaxhighlight> Dla parametrów numerkowych nie jest brana w tym powyższym przykładzie zmienna {{Code|nazwa przestrzeni nazw 2}}, bo jej nie ma, ale za to jest {{Code|nazwa przestrzeni nazw i}}, bo ona występuje jako parametr domyślny ogólny dla parametrów numerkowych. Tytaj jest używana jest zmienna {{Code|nazwa jednostki 2}} do wygenerowania ostatecznego wyniku, bo jak można zauważyć, parametry przestrzenne wskazują na przestrzeń główną, a nazwy jednostek już nie. Dla parametrów bazowych mamy zmienną {{Code|nazwa przestrzeni nazw}}, ona jest pusta, więc to zostanie wziete do ostatecznego wyniku. Przykłady w wikikodzie: * {{Code|{{m|Pudełko|Nazwa przestrzeni nazw dyskusji 3|Szablon|nazwa przestrzeni nazw{{=}}Moja przestrzeń|nazwa jednostki{{=}}Wikibooks:Strona}}}} → {{Tt|{{#invoke:Pudełko|Nazwa przestrzeni nazw dyskusji 3|Szablon|nazwa przestrzeni nazw=Moja przestrzeń|nazwa jednostki=Wikibooks:Szablon}}}} * {{Code|{{m|Pudełko|Nazwa przestrzeni nazw dyskusji 3|Szablon|nazwa przestrzeni nazw 2{{=}}Moja przestrzeń|nazwa jednostki 2{{=}}Wikibooks:Strona|numer jednostki{{=}}2}}}} → {{Tt|{{#invoke:Pudełko|Nazwa przestrzeni nazw dyskusji 3|Szablon|nazwa przestrzeni nazw 2=Moja przestrzeń|nazwa jednostki 2=Wikibooks:Szablon|numer jednostki=2}}}} * {{Code|{{m|Pudełko|Nazwa przestrzeni nazw dyskusji 3|nazwa przestrzeni nazw{{=}}|nazwa jednostki{{=}}Wikibooks:Strona}}}} → {{Tt|{{#invoke:Pudełko|Nazwa przestrzeni nazw dyskusji 3|nazwa przestrzeni nazw=|nazwa jednostki=Wikibooks:Szablon}}}} * {{Code|{{m|Pudełko|Nazwa przestrzeni nazw dyskusji 3|nazwa przestrzeni nazw 2{{=}}|nazwa jednostki 2{{=}}Wikibooks:Strona|numer jednostki{{=}}2}}}} → {{Tt|{{#invoke:Pudełko|Nazwa przestrzeni nazw dyskusji 3|nazwa przestrzeni nazw 2=|nazwa jednostki 2=Wikibooks:Szablon|numer jednostki=2}}}} Powyżej dla przykładu podano parametry nie w rodzicu w szablonie, tylko w dziecku, jeśli chodzi o parametry nazw przestrzeni nazw i nazw jednostek, ale ich się za to nie powinno podawać w tych ramach, tylko w szablonach, w których wywoływane są te ramki pudełek {{Code|{{m|Pudełko}}}}, ale tak tutaj tak zrobiono by było najłatwiej sprawdzić działanie tego typu funkcji. Analogicznie możemy podawać parametry typu jednostki, np.: wywołaniu modułowym {{Code|{{m|Pudełko|Nazwa przestrzeni nazw dyskusji 3|typ jednostki 2{{=}}Podręcznik|nazwa jednostki 2{{=}}Szablon:Strona|numer jednostki{{=}}2}}}} (ale wtedy jest brana przestrzeń nazw z nazwy jednostki), ale o tym więcej w rozdziałach {{Code|{{sr|# p["Dyskusyjny typ jednostki 3"](frame,i)|p=Pudełko}}}} w „{{sr|#Funkcje typu jednostki|p=Pudełko}}”, one definiują przestrzenie dyskusji, ale można użyć parametru dyskusji typu jednostki z obojętnie jaką wartością niepustą, czy pustą, czy nawet jej nie podamy, wtedy wyświetli się nazwa przestrzeni nazw dyskusji. Jeżeli typ jednostki bazowy wskazuje na przestrzeń nazw główną, wtedy się nie liczą parametry nazw jednostek, a na numerkowy, wtedy się liczy. Również parametry typu jednostki nie powinno się podawać w dziecku w ramce, tylko w rodzicu w szablonie jako parametry, w którym ta ramka jest wywoływana, ale tutaj podano jedynie dla przykładu, jak najłatwiej sprawdzić działanie tych parametrów tej funkcji. Najpierw w funkcji nagłówku brane są parametry nazw przestrzeni nazw, a jeżeli ich nie ma, to parametry typu jednostki, a jeżeli nie ma lub parametry przestrzenne wskazują na przestrzeń główną, i nie ma nazwy jednostki, to generowane są nazwy tej funkcji na podstawie aktualnej strony. == Funkcje nazw jednostki trzeciej wersji == === {{Code|p["Nazwa jednostki 3"](frame,i)}} === === {{Code|p["Nazwa przedmiotowa jednostki 3"](frame,i)}} === === {{Code|p["Nazwa dyskusji jednostki 3"](frame,i)}} === == Funkcje typu jednostki == === {{Code|p["Typ jednostki"](frame,i)}} === === {{Code|p["Typ jednostki 2"](frame,i)}} === === {{Code|p["Typ jednostki 3"](frame,i)}} === === Funkcje typu jednostki przedmiotowe === ==== {{Code|p["Przedmiotowy typ jednostki"](frame,i)}} ==== ==== {{Code|p["Przedmiotowy typ jednostki 2"](frame,i)}} ==== ==== {{Code|p["Przedmiotowy typ jednostki 3"](frame,i)}} ==== === Fukcje typu jednostki dyskusji === ==== {{Code|p["Dyskusyjny typ jednostki"](frame,i)}} ==== ==== {{Code|p["Dyskusyjny typ jednostki 2"](frame,i)}} ==== ==== {{Code|p["Dyskusyjny typ jednostki 3"](frame,i)}} ==== == Funkcje chech pudełka == === {{Code|p["Cecha pudełka"](frame)}} === === {{Code|p["Przedmiotowa cecha pudełka"](frame)}} === === {{Code|p["Dyskusyjna cecha pudełka"](frame)}} === == Fukcje ogólnego pudełka == === {{Code|p["Ogólne pudełko"](frame)}} === == Funkcje ogólne == === {{Code|p["Tekst pudełka"](frame)}} === == Funkcje błędów pudełka == === {{Code|p["Błędy pudełka"](frame)}} === === {{Code|p["Przedmiotowe błędy pudełka"](frame)}} === === {{Code|p["Dyskusyjne błędy pudełka"](frame)}} === == Funkcje nazw stron == === {{Code|p["Nazwa strony głównej projektu"](frame,i)}} === === {{Code|p["Nazwa strony głównej dla dzieci projektu"](frame,i)}} === == Funkcje kodów == === {{Code|p["Kod języka"](frame,i)}} === === {{Code|p["Kod projektu"](frame,i)}} === === {{Code|p["Klucz projektu"](frame,i)}} === == Funkcje wiki == === {{Code|p["Inny niż język bieżący wiki"](frame)}} === === {{Code|p["Inne niż lokalne wiki"](frame)}} === === {{Code|p["Inne niż bieżące wiki"](frame)}} === == Funkcje typów parametrów, czy podane je == === {{Code|p["Podano parametry nienazwane"](frame)}} === === {{Code|p["Podano parametry numerowane"](frame)}} === === {{Code|p["Podano parametry nazwane"](frame)}} === == Funkcje kodów tego projektu == === {{Code|p["Kod projektu tego projektu"](frame)}} === === {{Code|p["Kod języka tego projektu"](frame)}} === === {{Code|p["Klucz projektu tego projektu"](frame)}} === == Funkcje stron == === {{Code|p["Strona główna tego projektu"](frame)}} === === {{Code|p["Strona główna dla dzieci tego projektu"](frame)}} === == Funkcje nazw stron drugiej wersji == === {{Code|p["Nazwa strony głównej dla dzieci projektu 2"](frame)}} === === {{Code| p["Nazwa strony głównej projektu 2"](frame)}} === {{BrClear}} <noinclude><!-- -->{{ProstaStronaKoniec}}<!-- -->{{Kategoria|Opisy funkcji, w Lua w Scribunto, w modułach}}<!-- --></noinclude> knnz7l4ep6cmmgple8c0lnkue5zcnxb 540464 540462 2026-04-24T06:41:28Z Persino 2851 540464 wikitext text/x-wiki <noinclude>{{ProstaStronaStart | nagłówek = {{Podrozdział|{{ld2|Pudełko}}|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 pudelko_modul=require("Module:Pudełko"); </syntaxhighlight> dzięki, któremu można wypisywać funkcje należącego do niego. Posługuje się na parametrach pudełkowych {{Parametr|nazwa przestrzeni nazw}} (czy też bez numerka {{Parametr|nazwa przestrzeni nazw i}} dla tego numerowanego) lub te z numerkiem po jednej spacji w nich (ale nie dla tego z końcówką {{Code| i}}) mogą zostać użyte jako parametry szablonu. Moduł {{Code|{{ld2|Pudełko}}}} przedstawia funkcje nazw w oparciu o funkcje nazw {{Code|{{ld2|Nazwy}}}}, generuje on nazwy za pomocą parametrów pudełkowych podanych poniżej. Parametr {{Parametr|nazwa jednostki}} (lub parametr {{Parametr|cel}} dla numerka tego pierwszego, tego alternatywnego), lub te z numerkiem po jednej spacji w nazwie parametru, albo numerowane numerkami {{Code|1}}, {{Code|2}},..., mogą zostać użyte jako parametry szablonu. Parametry określające rodzaj jednostki {{Parametr|typ jednostki}} z {{Parametr|dyskusja typu jednostki}}, itp. w wersjach z numerkiem po jednej spacji w nich mogą zostać użyte jako parametry szablonu. A te tymi numerowanymi liczbami naturalnymi {{Tt|nazwy jednostki}} od jedynki wzwyż poprzez szablon, w którym są one użyte, one też mogą być użyte z dwukropkiem, te numerowane, na samym początku nazwy, wtedy one są traktowane jako pełne nazwy strony, i wtedy one nie zostaną z interpretowane, że do nich trzeba użyć parametr odpowiedni z nazwą przetrzeni nazw z tego numerowanego, czy ogólny, aby utworzyć znów inną pełną nazwę strony dla tego numerka. Zestawienie: * {{Code|nazwa przestrzeni nazw}} i {{Code|nazwa przestrzeni nazw i}} (ogólna nazwa przestrzeni nazw dla wszystkich numerków, i tych numerowanych jednostek) - i to pierwsze z numerkiem, tzn. {{Code|nazwa przestrzeni nazw 1}}, {{Code|nazwa przestrzeni nazw 2}}, ..., * {{Code|nazwa jednostki}} - i te z numerkiem: {{Code|nazwa jednostki 1}}, {{Code|nazwa jednostki 2}}, ..., lub gdy jest zamiast tego parametrem numerowany, {{Code|1}}, {{Code|2}},..., który dla tego pierwszego może być uznany jako: {{Code|cel}} {{=}} {{Code|1}}, * {{Code|typ jednostki}} (parametr bazowy) i {{Code|typ jednostki i}} (parametr domyślny numerkowy) - i te z numerkiem: {{Code|typ jednostki 1}}, {{Code|typ jednostki 2}}, ..., tzn. gdy chcemy określić z jakim typem jednostki mamy do czynienia w zależności do jakiej przestrzeni nazw należy, a w danej, czy jest on np. programowy, czy tylko jest opisem, jak to bywa w szablonach {{Np|Template|link=tak}}, podobnie jest w przypadku {{Np|Module|link=tak}}, czy jak jest w innych przestrzeniach nazw, ** {{Code|dyskusja typu jednostki}} (parametr bazowy) i {{Code|dyskusja typu jednostki i}} (parametr domyślny numerkowy) - i te z numerkiem: {{Code|dyskusja typu jednostki 1}}, {{Code|dyskusja typu jednostki 2}}, ..., gdy chcemy określić wartością niepustą,że chodzi tutaj o typ jednostki. == {{Code|p.CzyNiepoprawnaNazwa(nazwa_jednostki)}} == Funkcja sprawdzajaca, czy jest poprawnie podana nazwa jednostki, czy ma poprawną nazwę. Znakami tymi, z których nie powinna składać się nazwa jest {{Code|<nowiki>{}<>|[]#\n</nowiki>}} i dodatkowo znak {{Code|&#127;}} (kod {{Code|{{Nowiki|&#127;}}}}). Też nie może składać się z trzech znaków tyldy, tzn. {{Code|<nowiki>~~~</nowiki>}}. Również w swojej budowie nie może składać się ze kodów {{Strong|HTML}} literowych o wzorze {{Code|{{Nowiki|&(%a+);}}}}. Natomiast może składać się z {{Code|{{Nowiki|&#(%d+);}}}} i {{Code|{{Nowiki|&#x(%x+);}}}}, ale w pierw te kody muszą być zamienione na normalne znaki. Skrótowa definicja funkcji: <syntaxhighlight lang="lua"> function p.CzyNiepoprawnaNazwa(nazwa_jednostki)...end; </syntaxhighlight> Wtedy ciało funkcji tej, czyli jego definicja w środku, jest: <syntaxhighlight lang="lua"> -- Moduł: "Moduł:Html/dane", służy do ładowania znaku o kodzie HTML "&#127;"; local html_dane_modul=mw.loadData("Module:Html/dane"); return mw.ustring.match(nazwa_jednostki,"[{}<>|%[%]#\n"..html_dane_modul.znak_127.."]+") or mw.ustring.match(nazwa_jednostki,"~~~") or mw.ustring.match(nazwa_jednostki,"&(%a+);"); </syntaxhighlight> Parametry: * {{Code|nazwa_jednostki}} - nazwa jednostki do sprawdzenia. Przykłady: <syntaxhighlight lang="lua"> local pudelko_modul=require("Module:Pudełko"); -- Podana przykładowa niepoprawna nazwa jedostki local nazwa_jednostki="Nazwa pliku [[Nazwa linku w pliku]]"; -- Fukcja zwróci wartość: local czy_poprawna_nazwa=true; local czy_poprawna_nazwa=pudelko_modul.CzyNiepoprawnaNazwa(nazwa_jednostki); </syntaxhighlight> == Funkcje nazw przestrzeni nazw == === {{Code|p["Nazwa przestrzeni nazw"](frame,...)}} === Funkcja pisze nazwę przestrzeni nazw, niezależnie, czy to jest przedmiotowa, czy dyskusji, według podanej w zmiennej {{Code|nazwa przestrzeni nazw}} dla pozycja bazowej w podanych parametrach szablonu rodzicu ramki dziecka, lub dla innej pozycji należy parametr podawać w formie {{Code|nazwa przestrzeni nazw 1}}, {{Code|nazwa przestrzeni nazw 2}}, {{Code|nazwa przestrzeni nazw 3}},..., lub te parametry można podać w postaci ogólnej {{Code|nazwa przestrzeni nazw i}}. Parametry podaje się w parametrach rodzica wywołania tej funkcji {{Code|{{m|Pudełko|Nazwa przestrzeni nazw}}}} (ale ich nie trzeba podawać w dziecku, ale można) i w parametrach dziecka, jeśli chodzi o zmienną {{Code|numer jednostki}}, czyli np.: {{Code|{{m|Pudełko|Nazwa przestrzeni nazw|numer jednostki{{=}}<jakaś liczba całkowita dodatnia>}}}}. Te parametry przestrzenne zamiast w rodzicu w szablonie można podać w ramce dziecka, wtedy parametry dziecka mają pierwszeństwo. Przestrzeń nazw z parametrów nazw przestrzennych może odpowiadać wartości przestrzeni głównej, to wtedy odpowiednia przestrzeń nazw z parametru nazwy jednostki się nie liczy w tej funkcji, aby się liczyła należy użyć funkcji {{Code|{{sr|#p["Nazwa przestrzeni nazw 2"](frame,...)|p=Pudełko}}}}. Definicja skrótowa funkcji: <syntaxhighlight lang="lua"> p["Nazwa przestrzeni nazw"]=function(frame,czy_uwzglednic_alternatywna_nazwe,i)...end; </syntaxhighlight> Wtedy ciało funkcji tej, czyli jego definicja w środku, jest: <syntaxhighlight lang="lua"> -- Jest liczony numer parametru nazwy przestrzeni nazw, domyslnie chodzi tu o numer bazowy parametrów przestrzennych; local numer_jednostki=i or frame.args["numer jednostki"]; local liczba_numer_jednostki=((numer_jednostki)and(tonumber(numer_jednostki))or 0); local pudelko_pomocne_modul=require("Module:Pudełko/Pomocne"); -- Liczy nazwę przestrzeni nazw na podstawie podanych parametrów; return pudelko_pomocne_modul.Nazwa_przestrzeni_nazw(frame,0, czy_uwzglednic_alternatywna_nazwe,liczba_numer_jednostki); </syntaxhighlight> Parametry funkcji: * {{Code|frame}} - tablica ramki tablicy transportu, * {{Code|czy_uwzglednic_alternatywna_nazwe}} - czy ma uwzględniać nazwę przestrzeni nazw domyślną szablonu, dostępne wartości: {{Code|false}}, w której nazwa domyślna nie jest uwzględniana wtedy, oraz {{Code|nil}} i {{Code|true}}, które oznaczają to samo, w tym jeżeli ona jest uwzględniana, wtedy jest brany parametr pierwszy dziecka, który musi istnieć przy takiej wartości tego parametru, tzn. {{Code|{{m|Pudełko|Nazwa przestrzeni nazw|Szablon}}}}, a ten element jest używany, gdy nazwa uzyskana nazwy przestrzeni nazw jest w takim przypadku błędna, a jeżeli wtedy nazwa domyślna jest błędna, czyli {{Code|{{m|Pudełko|Nazwa przestrzeni nazw|Moja przestrzeń}}}}, wtedy funkcja zwraca stan błędu {{Code|(błąd)}}. * {{Code|i}} - numer zmiennej nazwy przestrzeni nazw. Funkcja wykorzystuje {{Code|{{sr|#p.Nazwa_przestrzeni_nazw(frame,...)|p=Pudełko/Pomocne}}}} do wyznaczania ogólnego nazwy przestrzeni nazw dla pozycji bazowej i numerkowej, tzn. dla pozycji: jeden, dwa, trzy,..., itd, i ich ogólnej. Parametr ramki tablicy transportu rodzica szablonu: * {{Code|nazwa przestrzeni nazw}}, {{Code|nazwa przestrzeni nazw 1}}, {{Code|nazwa przestrzeni nazw 2}}, {{Code|nazwa przestrzeni nazw 3}},..., {{Code|nazwa przestrzeni nazw i}} - nazwy przestrzeni nazw dla pozycji bazowej oraz zwykłej i ogólnej numerkowej, * {{Code|typ jednostki}}, {{Code|typ jednostki 1}}, {{Code|typ jednostki 2}}, {{Code|typ jednostki 3}},..., {{Code|typ jednostki i}} - typy jednostek, którym odpowiadają pewne przestrzenie przedmiotowe, dla pozycji bazowej, numerkowej i ogólnej, ** {{Code|dyskusja typu jednostki}}, {{Code|dyskusja typu jednostki 1}}, {{Code|dyskusja typ jednostki 2}}, {{Code|dyskusja typ jednostki 3}},..., {{Code|dyskusja typ jednostki i}} - czy dany typ jednostki ma przedstawiać, jeśli niepusta, przestrzeń dyskusji dla pozycji bazowej, numerkowej i ogólnej. Parametry ramki tablicy transportu dziecka: * Parametry dziecka są takie same jak rodzica dla funkcji pudełkowej plus tu wymienione, * {{Code|numer jednostki}} - jak parametr {{Code|i}} nie został ustawiony, to wtedy liczy się ta zmienna. Przykłady: <syntaxhighlight lang="mediawiki"> {{Nazwa szablonu|nazwa przestrzeni nazw=Wikibooks|nazwa przestrzeni nazw 2=Szablon|nazwa przestrzeni nazw i=Moduł}} </syntaxhighlight> W dziecku powiedzmy jest wywołanie, i szukamy nazwy przestrzeni nazw o numerze dwa, która nie została podana, ale istnieje za to jej wersji ogólna {{Code|nazwa przestrzeni nazw i}} i domyślna {{Code|nazwa przestrzeni nazw}}: <syntaxhighlight lang="mediawiki"> {{#invoke:Pudełko|Nazwa przestrzeni nazw|numer jednostki=1}} </syntaxhighlight> Na podstawie powyższego przykładu otrzymamy wynik o schemacie, nie wyniku, bo tam nie ma zmiennej {{Code|nazwa przestrzeni nazw 1}}, ale jest {{Code|nazwa przestrzeni nazw i}}: <syntaxhighlight lang="mediawiki"> <!-- Ale nie "nazwa przestrzeni nazw", bo jej nie ma, ale za to istnieje "nazwa przestrzeni nazw i"; --> <!-- nazwa przestrzeni nazw 2=nazwa przestrzeni nazw i=Moduł; --> <!-- Czyli wynik: --> Moduł <!-- Widzimy, że wygenerowała się nazwa przestrzeni nazw, którą jest przestrzeń programowa, którą również jest "Szablon"; --> </syntaxhighlight> Nie jest brana w tym powyższym przykładzie zmienna {{Code|nazwa przestrzeni nazw}}, bo jej nie ma, ale za to jest {{Code|nazwa przestrzeni nazw i}}, bo ona występuje jako parametr domyślny ogólny dla parametrów numerkowych. Przykłady w wikikodzie: * {{Code|{{m|Pudełko|Nazwa przestrzeni nazw|numer jednostki{{=}}2}}}} → {{Tt|{{#invoke:Pudełko|Nazwa przestrzeni nazw|numer jednostki=2}}}} * {{Code|{{m|Pudełko|Nazwa przestrzeni nazw|Szablon|nazwa przestrzeni nazw i{{=}}Moja przestrzeń|numer jednostki{{=}}2}}}} → {{Tt|{{#invoke:Pudełko|Nazwa przestrzeni nazw|Szablon|nazwa przestrzeni nazw i=Moja przestrzeń|numer jednostki=2}}}} * {{Code|{{m|Pudełko|Nazwa przestrzeni nazw|nazwa przestrzeni nazw 2{{=}}Szablon|numer jednostki{{=}}2}}}} → {{Tt|{{#invoke:Pudełko|Nazwa przestrzeni nazw|nazwa przestrzeni nazw 2=Szablon|numer jednostki=2}}}} * {{Code|{{m|Pudełko|Nazwa przestrzeni nazw|nazwa przestrzeni nazw 2{{=}}Szablon|numer jednostki{{=}}2}}}} → {{Tt|{{#invoke:Pudełko|Nazwa przestrzeni nazw|nazwa przestrzeni nazw i=Szablon|numer jednostki=2}}}} * {{Code|{{m|Pudełko|Nazwa przestrzeni nazw|nazwa przestrzeni nazw{{=}}Szablon|numer jednostki{{=}}2}}}} → {{Tt|{{#invoke:Pudełko|Nazwa przestrzeni nazw|nazwa przestrzeni nazw=Szablon|numer jednostki=2}}}} Powyżej dla przykładu podano parametry nie w rodzicu w szablonie, tylko w dziecku, jeśli chodzi o parametry nazw przestrzeni nazw, ale ich się za to nie powinno podawać w tych ramach, tylko w szablonach, w których wywoływane są te ramki pudełek {{Code|{{m|Pudełko}}}}, ale tak tutaj tak zrobiono by było najłatwiej sprawdzić działanie tego typu funkcji. Analogicznie możemy podawać parametry typu jednostki, np.: wywołaniu modułowym {{Code|{{m|Pudełko|Nazwa przestrzeni nazw|typ jednostki 2{{=}}strona szablonu|numer jednostki{{=}}2}}}}, ale o tym więcej w rozdziałach {{Code|{{sr|# p["Typ jednostki"](frame,i)|p=Pudełko}}}} w „{{sr|#Funkcje typu jednostki|p=Pudełko}}”, on definiuje przestrzenie przedmiotowe, ale można użyć parametru dyskusji typu jednostki z wartością niepustą, wtedy wyświetli się nazwa przestrzeni nazw dyskusji. Typ jednostki nie ma takiej samej wartości dla przestrzeni przedmiotowej, co dyskusji. Również parametry typu jednostki nie powinno się podawać w dziecku w ramce, tylko w rodzicu w szablonie jako parametry, w którym ta ramka jest wywoływana, ale tutaj podano jedynie dla przykładu, jak najłatwiej sprawdzić działanie tych parametrów tej funkcji. Najpierw w funkcji nagłówku brane są parametry nazw przestrzeni nazw, a jeżeli ich nie ma, to parametry typu jednostki, a jeżeli nie ma, to generowane są nazwy na podstawie aktualnego modułu. === {{Code|p["Nazwa przedmiotowej przestrzeni nazw"](frame,...)}} === Funkcja pisze przedmiotową nazwę przestrzeni nazw jakikolwiek nazwy przestrzeni nazw (tzn. nazwę przedmiotową nazwy przestrzenie nazw, czyli nie dyskusji, zamieniana jest na nią samą, czyli identyfikator przestrzeni się nie zmienia, a dyskusji, nie przedmiotową, przekształca się na przedmiotową jej odpowiadającą, czyli w tym przypadku identyfikator przestrzeni zmniejsza się o numer mniej), według podanej w zmiennej {{Code|nazwa przestrzeni nazw}} dla pozycja bazowej w podanych parametrach szablonu rodzicu ramki dziecka, lub dla innej pozycji należy parametr podawać w formie {{Code|nazwa przestrzeni nazw 1}}, {{Code|nazwa przestrzeni nazw 2}}, {{Code|nazwa przestrzeni nazw 3}},..., lub te parametry można podać w postaci ogólnej {{Code|nazwa przestrzeni nazw i}}. Parametry podaje się w parametrach rodzica wywołania tej funkcji {{Code|{{m|Pudełko|Nazwa przedmiotowej przestrzeni nazw}}}} (ale ich nie trzeba podawać w dziecku, ale można) i w parametrach dziecka, jeśli chodzi o zmienną {{Code|numer jednostki}}, czyli np.: {{Code|{{m|Pudełko|Nazwa przedmiotowej przestrzeni nazw|numer jednostki{{=}}<jakaś liczba całkowita dodatnia>}}}}. Te parametry przestrzenne zamiast w rodzicu w szablonie można podać w ramce dziecka, wtedy parametry dziecka mają pierwszeństwo. Parametry przestrzenne mogą mogą być podane w postaci przestrzeni przedmiotowej lub dyskusji, ale ta funkcja zawsze ją zamienia na przedmiotową. Przestrzeń nazw z parametrów nazw przestrzennych może odpowiadać wartości przestrzeni głównej, to wtedy odpowiednia przestrzeń nazw z parametru nazwy jednostki się nie liczy w tej funkcji, aby się liczyła należy użyć funkcji {{Code|{{sr|#p["Nazwa przedmiotowej przestrzeni nazw 2"](frame,...)|p=Pudełko}}}}. Definicja skrótowa funkcji: <syntaxhighlight lang="lua"> p["Nazwa przedmiotowej przestrzeni nazw"]=function(frame,czy_uwzglednic_alternatywna_nazwe,i)...end; </syntaxhighlight> Wtedy ciało funkcji tej, czyli jego definicja w środku, jest: <syntaxhighlight lang="lua"> -- Jest liczony numer parametru nazwy przestrzeni nazw, domyslnie chodzi tu o numer bazowy parametrów przestrzennych; local numer_jednostki=i or frame.args["numer jednostki"]; local liczba_numer_jednostki=((numer_jednostki)and(tonumber(numer_jednostki))or 0); local pudelko_pomocne_modul=require("Module:Pudełko/Pomocne"); -- Liczy nazwę przestrzeni nazw przedmiotową na podstawie podanych parametrów; return pudelko_pomocne_modul.Nazwa_przestrzeni_nazw(frame,1, czy_uwzglednic_alternatywna_nazwe,liczba_numer_jednostki); </syntaxhighlight> Parametry funkcji: * {{Code|frame}} - tablica ramki tablicy transportu, * {{Code|czy_uwzglednic_alternatywna_nazwe}} - czy ma uwzględniać nazwę przestrzeni nazw domyślną szablonu, dostępne wartości: {{Code|false}}, w której nazwa domyślna nie jest uwzględniana wtedy, oraz {{Code|nil}} i {{Code|true}}, które oznaczają to samo, w tym jeżeli ona jest uwzględniana, wtedy jest brany parametr pierwszy dziecka, który musi istnieć przy takiej wartości tego parametru, tzn. {{Code|{{m|Pudełko|Nazwa przedmiotowej przestrzeni nazw|Dyskusja szablonu}}}} - ta nazwa domyślna zostanie zamieniona na przedmiotową, a jak ona by była przedmiotowa, to żadnej zamiany, by nie było, a jeśli nazwa uzyskana z nazwy przestrzeni nazw z parametrów przestrzennych jest w takim przypadku błędna, to w takim razie brany jest ten parametr, a jeżeli ta nazwa domyślna jest błędna, czyli {{Code|{{m|Pudełko|Nazwa przedmiotowej przestrzeni nazw|Moja przestrzeń}}}}, wtedy funkcja zwraca stan błędu {{Code|(błąd)}}. * {{Code|i}} - numer zmiennej nazwy przestrzeni nazw. Funkcja wykorzystuje {{Code|{{sr|#p.Nazwa_przestrzeni_nazw(frame,...)|p=Pudełko/Pomocne}}}} do wyznaczania ogólnego nazwy przestrzeni nazw dla pozycji bazowej i numerkowej, tzn. dla pozycji: jeden, dwa, trzy,..., itd, i ich ogólnej. Parametr ramki tablicy transportu rodzica szablonu: * {{Code|nazwa przestrzeni nazw}}, {{Code|nazwa przestrzeni nazw 1}}, {{Code|nazwa przestrzeni nazw 2}}, {{Code|nazwa przestrzeni nazw 3}},..., {{Code|nazwa przestrzeni nazw i}} - nazwy przestrzeni nazw dla pozycji bazowej oraz zwykłej i ogólnej numerkowej, * {{Code|typ jednostki}}, {{Code|typ jednostki 1}}, {{Code|typ jednostki 2}}, {{Code|typ jednostki 3}},..., {{Code|typ jednostki i}} - typy jednostek, którym odpowiadają pewne przestrzenie przedmiotowe, dla pozycji bazowej, numerkowej i ogólnej. Parametry ramki tablicy transportu dziecka: * Parametry dziecka są takie same jak rodzica dla funkcji pudełkowej plus tu wymienione, * {{Code|numer jednostki}} - jak parametr {{Code|i}} nie został ustawiony, to wtedy liczy się ta zmienna. Przykłady: <syntaxhighlight lang="mediawiki"> {{Nazwa szablonu|nazwa przestrzeni nazw=Dyskusja Wikibooks|nazwa przestrzeni nazw 2=Dyskusja szablonu|nazwa przestrzeni nazw i=Dyskusja modułu}} </syntaxhighlight> W dziecku powiedzmy jest wywołanie, i szukamy nazwy przestrzeni nazw o numerze dwa, która nie została podana, ale istnieje za to jej wersji ogólna {{Code|nazwa przestrzeni nazw i}} i domyślna {{Code|nazwa przestrzeni nazw}}: <syntaxhighlight lang="mediawiki"> {{#invoke:Pudełko|Nazwa przedmiotowej przestrzeni nazw|numer jednostki=1}} </syntaxhighlight> Na podstawie powyższego przykładu otrzymamy wynik o schemacie, nie wyniku, bo tam nie ma zmiennej {{Code|nazwa przestrzeni nazw 1}}, ale jest {{Code|nazwa przestrzeni nazw i}}: <syntaxhighlight lang="mediawiki"> <!-- Ale nie "nazwa przestrzeni nazw", bo jej nie ma, ale za to istnieje "nazwa przestrzeni nazw i"; --> <!-- nazwa przestrzeni nazw 2=nazwa przestrzeni nazw i=Dyskusja modułu; --> <!-- Czyli wynik: --> Moduł <!-- Widzimy, że wygenerowała się nazwa przestrzeni nazw, którą jest przestrzeń przedmiotowa programowa przestrzeni dyskusji "Dyskusja modułu", którą również jest "Szablon" jego przestrzeni dyskusji "Dyskusja szablonu", a dla ich przestrzeni przedmiotowej, zamiast dyskusji, to samo przekształca się na to samo; --> </syntaxhighlight> Nie jest brana w tym powyższym przykładzie zmienna {{Code|nazwa przestrzeni nazw}}, bo jej nie ma, ale za to jest {{Code|nazwa przestrzeni nazw i}}, bo ona występuje jako parametr domyślny ogólny dla parametrów numerkowych. Przykłady w wikikodzie: * {{Code|{{m|Pudełko|Nazwa przedmiotowej przestrzeni nazw|numer jednostki{{=}}2}}}} → {{Tt|{{#invoke:Pudełko|Nazwa przedmiotowej przestrzeni nazw|numer jednostki=2}}}} * {{Code|{{m|Pudełko|Nazwa przedmiotowej przestrzeni nazw|Dyskusja szablonu|nazwa przestrzeni nazw i{{=}}Moja przestrzeń|numer jednostki{{=}}2}}}} → {{Tt|{{#invoke:Pudełko|Nazwa przedmiotowej przestrzeni nazw|Dyskusja szablonu|nazwa przestrzeni nazw i=Moja przestrzeń|numer jednostki=2}}}} * {{Code|{{m|Pudełko|Nazwa przedmiotowej przestrzeni nazw|nazwa przestrzeni nazw 2{{=}}Dyskusja szablonu|numer jednostki{{=}}2}}}} → {{Tt|{{#invoke:Pudełko|Nazwa przedmiotowej przestrzeni nazw|nazwa przestrzeni nazw 2=Dyskusja szablonu|numer jednostki=2}}}} * {{Code|{{m|Pudełko|Nazwa przedmiotowej przestrzeni nazw|nazwa przestrzeni nazw 2{{=}}Dyskusja szablonu|numer jednostki{{=}}2}}}} → {{Tt|{{#invoke:Pudełko|Nazwa przedmiotowej przestrzeni nazw|nazwa przestrzeni nazw i=Dyskusja szablonu|numer jednostki=2}}}} * {{Code|{{m|Pudełko|Nazwa przedmiotowej przestrzeni nazw|nazwa przestrzeni nazw{{=}}Dyskusja szablonu|numer jednostki{{=}}2}}}} → {{Tt|{{#invoke:Pudełko|Nazwa przedmiotowej przestrzeni nazw|nazwa przestrzeni nazw=Dyskusja szablonu|numer jednostki=2}}}} Powyżej dla przykładu podano parametry nie w rodzicu w szablonie, tylko w dziecku, jeśli chodzi o parametry nazw przestrzeni nazw, ale ich się za to nie powinno podawać w tych ramach, tylko w szablonach, w których wywoływane są te ramki pudełek {{Code|{{m|Pudełko}}}}, ale tak tutaj tak zrobiono by było najłatwiej sprawdzić działanie tego typu funkcji. Analogicznie możemy podawać parametry typu jednostki, np.: wywołaniu modułowym {{Code|{{m|Pudełko|Nazwa przedmiotowej przestrzeni nazw|typ jednostki 2{{=}}strona szablonu|numer jednostki{{=}}2}}}}, ale o tym więcej w rozdziałach {{Code|{{sr|#p["Przedmiotowy typ jednostki"](frame,i)|p=Pudełko}}}} w „{{sr|#Funkcje typu jednostki|p=Pudełko}}”, ale wtedy ta sama nazwa przestrzeni nazw reprezentowana przez {{Parametr|typ jednostki 2|strona szablonu}}, jest zamieniana na to samo, lepiej jest tutaj używać parametrów przestrzennych nazw niż typu jednostki. Typ jednostki nie ma takiej samej wartości dla przestrzeni przedmiotowej, co dyskusji. Tutaj parametr dyskusji typu jednostki bazowy i numerkowy ogólny, czy szczegółowy, nie gra roli, bo nawet, gdy wygenerujemy nazwę przestrzeni dyskusji za pomoca tego parametru, to i tak otrzymamy na samym końcu jego nazwę przedmiotową. Również parametry typu jednostki nie powinno się podawać w dziecku w ramce, tylko w rodzicu w szablonie jako parametry, w którym ta ramka jest wywoływana, ale tutaj podano jedynie dla przykładu, jak najłatwiej sprawdzić działanie tych parametrów tej funkcji. Najpierw w funkcji nagłówku brane są parametry nazw przestrzeni nazw, a jeżeli ich nie ma, to parametry typu jednostki, a jeżeli nie ma, to generowane są nazwy na podstawie aktualnego modułu. === {{Code|p["Nazwa przestrzeni nazw dyskusji"](frame,...)}} === Funkcja pisze nazwę przestrzeni nazw dyskusji jakikolwiek nazwy przestrzeni nazw (tzn. nazwę przedmiotową nazwy przestrzenie nazw, czyli nie dyskusji, zamieniana jest na dyskusji, czyli identyfikator przestrzeni się zmienia jeden wyżej, a dyskusji, nie przedmiotową, przekształca się na tą samą), według podanej w zmiennej {{Code|nazwa przestrzeni nazw}} dla pozycja bazowej w podanych parametrach szablonu rodzicu ramki dziecka, lub dla innej pozycji należy parametr podawać w formie {{Code|nazwa przestrzeni nazw 1}}, {{Code|nazwa przestrzeni nazw 2}}, {{Code|nazwa przestrzeni nazw 3}},..., lub te parametry można podać w postaci ogólnej {{Code|nazwa przestrzeni nazw i}}. Parametry podaje się w parametrach rodzica wywołania tej funkcji {{Code|{{m|Pudełko|Nazwa przestrzeni nazw dyskusji}}}} (ale ich nie trzeba podawać w dziecku, ale można) i w parametrach dziecka, jeśli chodzi o zmienną {{Code|numer jednostki}}, czyli np.: {{Code|{{m|Pudełko|Nazwa przestrzeni nazw dyskusji|numer jednostki{{=}}<jakaś liczba całkowita dodatnia>}}}}. Te parametry przestrzenne zamiast w rodzicu w szablonie można podać w ramce dziecka, wtedy parametry dziecka mają pierwszeństwo. Parametry przestrzenne mogą mogą być podane w postaci przestrzeni przedmiotowej lub dyskusji, ale ta funkcja zawsze ją zamienia na dyskusji. Przestrzeń nazw z parametrów nazw przestrzennych może odpowiadać wartości przestrzeni głównej, to wtedy odpowiednia przestrzeń nazw z parametru nazwy jednostki się nie liczy w tej funkcji, aby się liczyła należy użyć funkcji {{Code|{{sr|#p["Nazwa przestrzeni nazw dyskusji 2"](frame,...)|p=Pudełko}}}}. Definicja skrótowa funkcji: <syntaxhighlight lang="lua"> p["Nazwa przestrzeni nazw dyskusji"]=function(frame,czy_uwzglednic_alternatywna_nazwe,i)...end; </syntaxhighlight> Wtedy ciało funkcji tej, czyli jego definicja w środku, jest: <syntaxhighlight lang="lua"> -- Jest liczony numer parametru nazwy przestrzeni nazw, domyslnie chodzi tu o numer bazowy parametrów przestrzennych; local numer_jednostki=i or frame.args["numer jednostki"]; local liczba_numer_jednostki=((numer_jednostki)and(tonumber(numer_jednostki))or 0); local pudelko_pomocne_modul=require("Module:Pudełko/Pomocne"); -- Liczy nazwę przestrzeni nazw dyskusji na podstawie podanych parametrów; return pudelko_pomocne_modul.Nazwa_przestrzeni_nazw(frame,2, czy_uwzglednic_alternatywna_nazwe,liczba_numer_jednostki); </syntaxhighlight> Parametry funkcji: * {{Code|frame}} - tablica ramki tablicy transportu, * {{Code|czy_uwzglednic_alternatywna_nazwe}} - czy ma uwzględniać nazwę przestrzeni nazw domyślną szablonu, dostępne wartości: {{Code|false}}, w której nazwa domyślna nie jest uwzględniana wtedy, oraz {{Code|nil}} i {{Code|true}}, które oznaczają to samo, w tym jeżeli ona jest uwzględniana, wtedy jest brany parametr pierwszy dziecka, który musi istnieć przy takiej wartości tego parametru, tzn. {{Code|{{m|Pudełko|Nazwa przestrzeni nazw dyskusji|Szablon}}}} - ta nazwa domyślna zostanie przekształcona na dyskusji, a jeżeli ona by była dyskusji, to nie byłoby żadnego przekształcenia, a jeśli nazwa uzyskana nazwy przestrzeni nazw z parametrów przestrzennych jest w takim przypadku błędna, to w takim razie brany jest ten parametr, a jeżeli nazwa domyślna jest błędna, czyli {{Code|{{m|Pudełko|Nazwa przestrzeni nazw dyskusji|Moja przestrzeń}}}}, wtedy funkcja zwraca stan błędu {{Code|(błąd)}}. * {{Code|i}} - numer zmiennej nazwy przestrzeni nazw. Funkcja wykorzystuje {{Code|{{sr|#p.Nazwa_przestrzeni_nazw(frame,...)|p=Pudełko/Pomocne}}}} do wyznaczania ogólnego nazwy przestrzeni nazw dla pozycji bazowej i numerkowej, tzn. dla pozycji: jeden, dwa, trzy,..., itd, i ich ogólnej. Parametr ramki tablicy transportu rodzica szablonu: * {{Code|nazwa przestrzeni nazw}}, {{Code|nazwa przestrzeni nazw 1}}, {{Code|nazwa przestrzeni nazw 2}}, {{Code|nazwa przestrzeni nazw 3}},..., {{Code|nazwa przestrzeni nazw i}} - nazwy przestrzeni nazw dla pozycji bazowej oraz zwykłej i ogólnej numerkowej, * {{Code|typ jednostki}}, {{Code|typ jednostki 1}}, {{Code|typ jednostki 2}}, {{Code|typ jednostki 3}},..., {{Code|typ jednostki i}} - typy jednostek, którym odpowiadają pewne przestrzenie przedmiotowe, dla pozycji bazowej, numerkowej i ogólnej. Parametry ramki tablicy transportu dziecka: * Parametry dziecka są takie same jak rodzica dla funkcji pudełkowej plus tu wymienione, * {{Code|numer jednostki}} - jak parametr {{Code|i}} nie został ustawiony, to wtedy liczy się ta zmienna. Przykłady: <syntaxhighlight lang="mediawiki"> {{Nazwa szablonu|nazwa przestrzeni nazw=Wikibooks|nazwa przestrzeni nazw 2=Szablon|nazwa przestrzeni nazw i=Moduł}} </syntaxhighlight> W dziecku powiedzmy jest wywołanie, i szukamy nazwy przestrzeni nazw o numerze dwa, która nie została podana, ale istnieje za to jej wersji ogólna {{Code|nazwa przestrzeni nazw i}} i domyślna {{Code|nazwa przestrzeni nazw}}: <syntaxhighlight lang="mediawiki"> {{#invoke:Pudełko|Nazwa przestrzeni nazw dyskusji|numer jednostki=1}} </syntaxhighlight> Na podstawie powyższego przykładu otrzymamy wynik o schemacie, nie wyniku, bo tam nie ma zmiennej {{Code|nazwa przestrzeni nazw 1}}, ale jest {{Code|nazwa przestrzeni nazw i}}: <syntaxhighlight lang="mediawiki"> <!-- Ale nie "nazwa przestrzeni nazw", bo jej nie ma, ale za to istnieje "nazwa przestrzeni nazw i"; --> <!-- nazwa przestrzeni nazw 2=nazwa przestrzeni nazw i=Moduł; --> <!-- Czyli wynik: --> Dyskusja modułu <!-- Widzimy, że wygenerowała się nazwa przestrzeni nazw, którą jest przestrzeń dyskusji przestrzeni programowej przestrzeni przedmiotowej "Moduł", którą również jest "Szablon" jego przestrzeni dyskusji "Dyskusja szablonu", a dla ich przestrzeni przedmiotowej, zamiast dyskusji, to przekształca się na dyskusji jej odpowiadającą; --> </syntaxhighlight> Nie jest brana w tym powyższym przykładzie zmienna {{Code|nazwa przestrzeni nazw}}, bo jej nie ma, ale za to jest {{Code|nazwa przestrzeni nazw i}}, bo ona występuje jako parametr domyślny ogólny dla parametrów numerkowych. Przykłady w wikikodzie: * {{Code|{{m|Pudełko|Nazwa przestrzeni nazw dyskusji|numer jednostki{{=}}2}}}} → {{Tt|{{#invoke:Pudełko|Nazwa przestrzeni nazw dyskusji|numer jednostki=2}}}} * {{Code|{{m|Pudełko|Nazwa przestrzeni nazw dyskusji|Szablon|nazwa przestrzeni nazw i{{=}}Moja przestrzeń|numer jednostki{{=}}2}}}} → {{Tt|{{#invoke:Pudełko|Nazwa przestrzeni nazw dyskusji|Szablon|nazwa przestrzeni nazw i=Moja przestrzeń|numer jednostki=2}}}} * {{Code|{{m|Pudełko|Nazwa przestrzeni nazw dyskusji|nazwa przestrzeni nazw 2{{=}}Szablon|numer jednostki{{=}}2}}}} → {{Tt|{{#invoke:Pudełko|Nazwa przestrzeni nazw dyskusji|nazwa przestrzeni nazw 2=Szablon|numer jednostki=2}}}} * {{Code|{{m|Pudełko|Nazwa przestrzeni nazw dyskusji|nazwa przestrzeni nazw 2{{=}}Szablon|numer jednostki{{=}}2}}}} → {{Tt|{{#invoke:Pudełko|Nazwa przestrzeni nazw dyskusji|nazwa przestrzeni nazw i=Szablon|numer jednostki=2}}}} * {{Code|{{m|Pudełko|Nazwa przestrzeni nazw dyskusji|nazwa przestrzeni nazw{{=}}Szablon|numer jednostki{{=}}2}}}} → {{Tt|{{#invoke:Pudełko|Nazwa przestrzeni nazw dyskusji|nazwa przestrzeni nazw=Szablon|numer jednostki=2}}}} Powyżej dla przykładu podano parametry nie w rodzicu w szablonie, tylko w dziecku, jeśli chodzi o parametry nazw przestrzeni nazw, ale ich się za to nie powinno podawać w tych ramach, tylko w szablonach, w których wywoływane są te ramki pudełek {{Code|{{m|Pudełko}}}}, ale tak tutaj tak zrobiono by było najłatwiej sprawdzić działanie tego typu funkcji. Analogicznie możemy podawać parametry typu jednostki, np.: wywołaniu modułowym {{Code|{{m|Pudełko|Nazwa przestrzeni nazw dyskusji|typ jednostki 2{{=}}strona szablonu|numer jednostki{{=}}2}}}}, ale o tym więcej w rozdziałach {{Code|{{sr|# p["Dyskusyjny typ jednostki"](frame,i)|p=Pudełko}}}} w „{{sr|#Funkcje typu jednostki|p=Pudełko}}”, ale wtedy nazwa przestrzeni nazw reprezentowana przez {{Parametr|typ jednostki 2|strona szablonu}}, jest zamieniana na nazwę przestrzeni nazw dyskusji. Parametr dyskusji typu jednostki bazowy lub dla danego numerka ogólny, czy szczegółowy, nie gra roli. Typ jednostki nie ma takiej samej wartości dla przestrzeni przedmiotowej, co dyskusji. Również parametry typu jednostki nie powinno się podawać w dziecku w ramce, tylko w rodzicu w szablonie jako parametry, w którym ta ramka jest wywoływana, ale tutaj podano jedynie dla przykładu, jak najłatwiej sprawdzić działanie tych parametrów tej funkcji. Najpierw w funkcji nagłówku brane są parametry nazw przestrzeni nazw, a jeżeli ich nie ma, to parametry typu jednostki, a jeżeli nie ma, to generowane są nazwy na podstawie aktualnego modułu. == Funkcje nazw przestrzeni nazw drugiej wersji == === {{Code|p["Nazwa przestrzeni nazw 2"](frame,...)}} === Funkcja pisze nazwę przestrzeni nazw, niezależnie, czy to jest przedmiotowa, czy dyskusji, według, i nie zawsze tylko, podanej w zmiennej {{Code|nazwa przestrzeni nazw}} dla pozycja bazowej w podanych parametrach szablonu rodzicu ramki dziecka, lub dla innej pozycji należy parametr podawać w formie {{Code|nazwa przestrzeni nazw 1}}, {{Code|nazwa przestrzeni nazw 2}}, {{Code|nazwa przestrzeni nazw 3}},..., lub te parametry można podać w postaci ogólnej {{Code|nazwa przestrzeni nazw i}}. W tej funkcji trzeba też podawać parametry nazwy jednostek {{Code|nazwa jednostki}}, {{Code|nazwa jednostki 1}}, {{Code|nazwa jednostki 2}}, {{Code|nazwa jednostki 3}},... Parametry podaje się w parametrach rodzica wywołania tej funkcji {{Code|{{m|Pudełko|Nazwa przestrzeni nazw 2}}}} (ale ich nie trzeba podawać w dziecku, ale można) i w parametrach dziecka, jeśli chodzi o zmienną {{Code|numer jednostki}}, czyli np.: {{Code|{{m|Pudełko|Nazwa przestrzeni nazw 2|numer jednostki{{=}}<jakaś liczba całkowita dodatnia>}}}}. Te parametry przestrzenne zamiast w rodzicu w szablonie można podać w ramce dziecka, wtedy parametry dziecka mają pierwszeństwo. Przestrzeń nazw z parametrów nazw przestrzennych może odpowiadać wartości przestrzeni głównej, to wtedy odpowiednia przestrzeń nazw z parametru nazwy jednostki się liczy w tej funkcji, wtedy jest liczona nazwa przestrzeni nazw z tego parametru. Gdy parametry przestrzenne lub typ jednostki w drugim podejściu nie wskazują na przestrzeń główną, to wtedy działanie tej funkcji jest podobne do {{Code|{{sr|#p["Nazwa przestrzeni nazw"](frame,...)|p=Pudełko}}}}. Definicja skrótowa funkcji: <syntaxhighlight lang="lua"> p["Nazwa przestrzeni nazw 2"]=function(frame,czy_uwzglednic_alternatywna_nazwe,i)...end; </syntaxhighlight> Wtedy ciało funkcji tej, czyli jego definicja w środku, jest: <syntaxhighlight lang="lua"> local pudelko_pomocne_modul=require("Module:Pudełko/Pomocne"); -- Liczy nazwę przestrzeni nazw, jeżeli z parametrów przestrzennych przestrzeń wskazuje na główną, to wtedy jest liczona przestrzeń nazw z nazwy jednostki; return pudelko_pomocne_modul.Nazwa_przestrzeni_nazw_2(frame,czy_uwzglednic_alternatywna_nazwe,i) </syntaxhighlight> Parametry funkcji: * {{Code|frame}} - tablica ramki tablicy transportu, * {{Code|czy_uwzglednic_alternatywna_nazwe}} - czy ma uwzględniać nazwę przestrzeni nazw domyślną szablonu, dostępne wartości: {{Code|false}}, w której nazwa domyślna nie jest uwzględniana wtedy, oraz {{Code|nil}} i {{Code|true}}, które oznaczają to samo, w tym jeżeli ona jest uwzględniana, wtedy jest brany parametr pierwszy dziecka, który musi istnieć przy takiej wartości tego parametru, tzn. {{Code|{{m|Pudełko|Nazwa przestrzeni nazw 2|Szablon}}}}, a jeśli nazwa uzyskana nazwy przestrzeni nazw jest w takim przypadku błędna, to brany jest ten element, a jeżeli nazwa domyślna jest błędna, czyli {{Code|{{m|Pudełko|Nazwa przestrzeni nazw 2|Moja przestrzeń}}}}, wtedy funkcja zwraca stan błędu {{Code|(błąd)}}. * {{Code|i}} - numer zmiennej nazwy przestrzeni nazw. Funkcja wykorzystuje {{Code|{{sr|#p.Nazwa_przestrzeni_nazw_2(frame,...)|p=Pudełko/Pomocne}}}} do wyznaczania ogólnego nazwy przestrzeni nazw dla pozycji bazowej i numerkowej, tzn. dla pozycji: jeden, dwa, trzy,..., itd, i ich ogólnej. Parametr ramki tablicy transportu rodzica szablonu: * {{Code|nazwa przestrzeni nazw}}, {{Code|nazwa przestrzeni nazw 1}}, {{Code|nazwa przestrzeni nazw 2}}, {{Code|nazwa przestrzeni nazw 3}},..., {{Code|nazwa przestrzeni nazw i}} - nazwy przestrzeni nazw dla pozycji bazowej oraz zwykłej i ogólnej numerkowej, * {{Code|nazwa jednostki}}, {{Code|nazwa jednostki 1}}, {{Code|nazwa jednostki 2}}, {{Code|nazwa jednostki 3}},... - nazwy jednostek dla pozycji bazowej i numerkowej, * {{Code|typ jednostki}}, {{Code|typ jednostki 1}}, {{Code|typ jednostki 2}}, {{Code|typ jednostki 3}},..., {{Code|typ jednostki i}} - typy jednostek, którym odpowiadają pewne przestrzenie przedmiotowe, dla pozycji bazowej, numerkowej i ogólnej, ** {{Code|dyskusja typu jednostki}}, {{Code|dyskusja typu jednostki 1}}, {{Code|dyskusja typ jednostki 2}}, {{Code|dyskusja typ jednostki 3}},..., {{Code|dyskusja typ jednostki i}} - czy dany typ jednostki ma przedstawiać, jeśli niepusta, przestrzeń dyskusji dla pozycji bazowej, numerkowej i ogólnej. Parametry ramki tablicy transportu dziecka: * Parametry dziecka są takie same jak rodzica dla funkcji pudełkowej plus tu wymienione, * {{Code|numer jednostki}} - jak parametr {{Code|i}} nie został ustawiony, to wtedy liczy się ta zmienna. Przykłady: <syntaxhighlight lang="mediawiki"> {{Nazwa szablonu|nazwa przestrzeni nazw=Wikibooks|nazwa przestrzeni nazw 1=Szablon|nazwa przestrzeni nazw i=|nazwa jednostki 2=Wikibooks:Strona}} </syntaxhighlight> W dziecku powiedzmy jest wywołanie, i szukamy nazwy przestrzeni nazw o numerze dwa, która została podana, ale istnieje za to jej wersji ogólna {{Code|nazwa przestrzeni nazw i}} i domyślna {{Code|nazwa przestrzeni nazw}}, ale wtedy dla tego numerkowego liczy się to ogólne z {{Code| i}}, a ponieważ ta nazwa jest pusta, więc będziemy liczyli nazwę przestrzeni nazw z {{Code|nazwa jednostki 2}}: <syntaxhighlight lang="mediawiki"> {{#invoke:Pudełko|Nazwa przestrzeni nazw 2|numer jednostki=2}} </syntaxhighlight> Na podstawie powyższego przykładu otrzymamy wynik o schemacie, nie wyniku, bo tam nie ma zmiennej {{Code|nazwa przestrzeni nazw 1}}, ale jest {{Code|nazwa przestrzeni nazw i}}: <syntaxhighlight lang="mediawiki"> <!-- Ale nie "nazwa przestrzeni nazw 2", bo jej nie ma, ale za to istnieje "nazwa przestrzeni nazw i"; --> <!-- nazwa przestrzeni nazw 2=nazwa przestrzeni nazw i="", a nazwa jednostki 2="Wikibooks:Strona"; --> <!-- Czyli wynik: --> Wikibooks <!-- Widzimy, że wygenerowała się nazwa przestrzeni nazw, którą jest przestrzeń nieprogramowa, ale projektu, wychodząca z nazwy jednostek w tym przypadku z "nazwa jednostki 2"; --> </syntaxhighlight> Nie jest brana w tym powyższym przykładzie zmienna {{Code|nazwa przestrzeni nazw}}, bo jej nie ma, ale za to jest {{Code|nazwa przestrzeni nazw i}}, bo ona występuje jako parametr domyślny ogólny dla parametrów numerkowych. Tytaj jest używana jest zmienna {{Code|nazwa jednostki 2}} do wygenerowania ostatecznego wyniku, bo jak można zauważyć, parametry przestrzenne wskazują na przestrzeń główną, a nazwy jednostek już nie. Przykłady w wikikodzie: * {{Code|{{m|Pudełko|Nazwa przestrzeni nazw 2|numer jednostki{{=}}2}}}} → {{Tt|{{#invoke:Pudełko|Nazwa przestrzeni nazw 2|numer jednostki=2}}}} * {{Code|{{m|Pudełko|Nazwa przestrzeni nazw 2|Szablon|nazwa przestrzeni nazw i{{=}}Moja przestrzeń|numer jednostki{{=}}2}}}} → {{Tt|{{#invoke:Pudełko|Nazwa przestrzeni nazw 2|Szablon|nazwa przestrzeni nazw i=Moja przestrzeń|numer jednostki=2}}}} * {{Code|{{m|Pudełko|Nazwa przestrzeni nazw 2|nazwa przestrzeni nazw 2{{=}}|nazwa jednostki 2{{=}}Szablon:Strona|numer jednostki{{=}}2}}}} → {{Tt|{{#invoke:Pudełko|Nazwa przestrzeni nazw 2|nazwa przestrzeni nazw 2=|nazwa jednostki 2=Szablon:Strona|numer jednostki=2}}}} * {{Code|{{m|Pudełko|Nazwa przestrzeni nazw 2|nazwa przestrzeni nazw i{{=}}|nazwa jednostki 2{{=}}Szablon:Strona|numer jednostki{{=}}2}}}} → {{Tt|{{#invoke:Pudełko|Nazwa przestrzeni nazw 2|nazwa przestrzeni nazw i=|nazwa jednostki 2=Szablon:Strona|numer jednostki=2}}}} * {{Code|{{m|Pudełko|Nazwa przestrzeni nazw 2|Szablon|nazwa przestrzeni nazw{{=}}|nazwa jednostki 2{{=}}Wikibooks:Strona|numer jednostki{{=}}2}}}} → {{Tt|{{#invoke:Pudełko|Nazwa przestrzeni nazw 2|Szablon|nazwa przestrzeni nazw=|nazwa jednostki 2=Wikibooks:Strona|numer jednostki=2}}}} Powyżej dla przykładu podano parametry nie w rodzicu w szablonie, tylko w dziecku, jeśli chodzi o parametry nazw przestrzeni nazw i nazw jednostek, ale ich się za to nie powinno podawać w tych ramach, tylko w szablonach, w których wywoływane są te ramki pudełek {{Code|{{m|Pudełko}}}}, ale tak tutaj tak zrobiono by było najłatwiej sprawdzić działanie tego typu funkcji. Analogicznie możemy podawać parametry typu jednostki, np.: wywołaniu modułowym {{Code|{{m|Pudełko|Nazwa przestrzeni nazw 2|typ jednostki 2{{=}}Podręcznik|nazwa jednostki 2{{=}}Szablon:Strona|numer jednostki{{=}}2}}}} (ale wtedy jest brana przestrzeń nazw z nazwy jednostki), ale o tym więcej w rozdziałach {{Code|{{sr|#p["Typ jednostki 2"](frame,i)|p=Pudełko}}}} w „{{sr|#Funkcje typu jednostki|p=Pudełko}}”, on definiuje przestrzenie przedmiotowe, ale można użyć parametru dyskusji typu jednostki z wartością niepustą, wtedy wyświetli się nazwa przestrzeni nazw dyskusji. Jeżeli typ jednostki wskazuje na przestrzeń nazw główną, wtedy się liczą parametry nazw jednostek. Typ jednostki nie ma takiej samej wartości dla przestrzeni przedmiotowej, co dyskusji. Również parametry typu jednostki nie powinno się podawać w dziecku w ramce, tylko w rodzicu w szablonie jako parametry, w którym ta ramka jest wywoływana, ale tutaj podano jedynie dla przykładu, jak najłatwiej sprawdzić działanie tych parametrów tej funkcji. Najpierw w funkcji nagłówku brane są parametry nazw przestrzeni nazw, a jeżeli ich nie ma, to parametry typu jednostki, a jeżeli nie ma lub parametry przestrzenne wskazują na przestrzeń główną, i nie ma nazwy jednostki, to generowane są nazwy tej funkcji na podstawie aktualnej strony. === {{Code|p["Nazwa przedmiotowej przestrzeni nazw 2"](frame,...)}} === Funkcja pisze przedmiotową nazwę przestrzeni nazw jakikolwiek nazwy przestrzeni nazw (tzn. nazwę przedmiotową nazwy przestrzenie nazw, czyli nie dyskusji, zamieniana jest na nią samą, czyli identyfikator przestrzeni się nie zmienia, a dyskusji, nie przedmiotową, przekształca się na przedmiotową jej odpowiadającą, czyli w tym przypadku identyfikator przestrzeni zmniejsza się o numer mniej), według, i nie zawsze tylko, podanej w zmiennej {{Code|nazwa przestrzeni nazw}} dla pozycja bazowej w podanych parametrach szablonu rodzicu ramki dziecka, lub dla innej pozycji należy parametr podawać w formie {{Code|nazwa przestrzeni nazw 1}}, {{Code|nazwa przestrzeni nazw 2}}, {{Code|nazwa przestrzeni nazw 3}},..., lub te parametry można podać w postaci ogólnej {{Code|nazwa przestrzeni nazw i}}. W tej funkcji trzeba też podawać parametry nazwy jednostek {{Code|nazwa jednostki}}, {{Code|nazwa jednostki 1}}, {{Code|nazwa jednostki 2}}, {{Code|nazwa jednostki 3}},... Parametry podaje się w parametrach rodzica wywołania tej funkcji {{Code|{{m|Pudełko|Nazwa przedmiotowej przestrzeni nazw 2}}}} (ale ich nie trzeba podawać w dziecku, ale można) i w parametrach dziecka, jeśli chodzi o zmienną {{Code|numer jednostki}}, czyli np.: {{Code|{{m|Pudełko|Nazwa przedmiotowej przestrzeni nazw 2|numer jednostki{{=}}<jakaś liczba całkowita dodatnia>}}}}. Te parametry przestrzenne zamiast w rodzicu w szablonie można podać w ramce dziecka, wtedy parametry dziecka mają pierwszeństwo. Przestrzeń nazw z parametrów nazw przestrzennych po przekształceniu na przedmiotową może odpowiadać wartości przestrzeni głównej, to wtedy odpowiednia przestrzeń nazw z parametru nazwy jednostki się liczy w tej funkcji, wtedy jest liczona nazwa przestrzeni nazw z tego parametru. Gdy parametry przestrzenne lub typ jednostki w drugim podejściu nie wskazują na przestrzeń główną, to wtedy działanie tej funkcji jest podobne do {{Code|{{sr|#p["Nazwa przedmiotowej przestrzeni nazw"](frame,...)|p=Pudełko}}}}. Definicja skrótowa funkcji: <syntaxhighlight lang="lua"> p["Nazwa przedmiotowej przestrzeni nazw 2"]=function(frame,czy_uwzglednic_alternatywna_nazwe,i)...end; </syntaxhighlight> Wtedy ciało funkcji tej, czyli jego definicja w środku, jest: <syntaxhighlight lang="lua"> local pudelko_pomocne_modul=require("Module:Pudełko/Pomocne"); return pudelko_pomocne_modul.Nazwa_przestrzeni_nazw_przedmiotowa_dyskusji_2(frame,czy_uwzglednic_alternatywna_nazwe,i,"przedmiotowa"); </syntaxhighlight> Parametry funkcji: * {{Code|frame}} - tablica ramki tablicy transportu, * {{Code|czy_uwzglednic_alternatywna_nazwe}} - czy ma uwzględniać nazwę przestrzeni nazw domyślną szablonu, dostępne wartości: {{Code|false}}, w której nazwa domyślna nie jest uwzględniana wtedy, oraz {{Code|nil}} i {{Code|true}}, które oznaczają to samo, w tym jeżeli ona jest uwzględniana, wtedy jest brany parametr pierwszy dziecka, który musi istnieć przy takiej wartości tego parametru, tzn. {{Code|{{m|Pudełko|Nazwa przedmiotowej przestrzeni nazw 2|Szablon}}}}, nazwa domyślna zostanie zamieniona na przedmiotową, a jeżeli jest już taka, to żadnej zamiany nie ma, a jeśli nazwa uzyskana nazwy przestrzeni nazw jest w takim przypadku błędna, to brany jest ten element, a jeżeli nazwa domyślna jest błędna, czyli {{Code|{{m|Pudełko|Nazwa przedmiotowej przestrzeni nazw 2|Moja przestrzeń}}}}, wtedy funkcja zwraca stan błędu {{Code|(błąd)}}. * {{Code|i}} - numer zmiennej nazwy przestrzeni nazw. Funkcja wykorzystuje {{Code|{{sr|#p.Nazwa_przestrzeni_nazw_przedmiotowa_dyskusji_2(frame,...)|p=Pudełko/Pomocne}}}} do wyznaczania ogólnego nazwy przestrzeni nazw dla pozycji bazowej i numerkowej, tzn. dla pozycji: jeden, dwa, trzy,..., itd, i ich ogólnej. Parametr ramki tablicy transportu rodzica szablonu: * {{Code|nazwa przestrzeni nazw}}, {{Code|nazwa przestrzeni nazw 1}}, {{Code|nazwa przestrzeni nazw 2}}, {{Code|nazwa przestrzeni nazw 3}},..., {{Code|nazwa przestrzeni nazw i}} - nazwy przestrzeni nazw dla pozycji bazowej oraz zwykłej i ogólnej numerkowej, * {{Code|nazwa jednostki}}, {{Code|nazwa jednostki 1}}, {{Code|nazwa jednostki 2}}, {{Code|nazwa jednostki 3}},... - nazwy jednostek dla pozycji bazowej i numerkowej, * {{Code|typ jednostki}}, {{Code|typ jednostki 1}}, {{Code|typ jednostki 2}}, {{Code|typ jednostki 3}},..., {{Code|typ jednostki i}} - typy jednostek, którym odpowiadają pewne przestrzenie przedmiotowe, dla pozycji bazowej, numerkowej i ogólnej. Parametry ramki tablicy transportu dziecka: * Parametry dziecka są takie same jak rodzica dla funkcji pudełkowej plus tu wymienione, * {{Code|numer jednostki}} - jak parametr {{Code|i}} nie został ustawiony, to wtedy liczy się ta zmienna. Przykłady: <syntaxhighlight lang="mediawiki"> {{Nazwa szablonu|nazwa przestrzeni nazw=Wikibooks|nazwa przestrzeni nazw 1=Szablon|nazwa przestrzeni nazw i=|nazwa jednostki 2=Dyskusja Wikibooks:Strona}} </syntaxhighlight> W dziecku powiedzmy jest wywołanie, i szukamy nazwy przestrzeni nazw o numerze dwa, która została podana, ale istnieje za to jej wersji ogólna {{Code|nazwa przestrzeni nazw i}} i domyślna {{Code|nazwa przestrzeni nazw}}, ale wtedy dla tego numerkowego liczy się to ogólne z {{Code| i}}, a ponieważ ta nazwa jest pusta, więc będziemy liczyli nazwę przestrzeni nazw z {{Code|nazwa jednostki 2}}: <syntaxhighlight lang="mediawiki"> {{#invoke:Pudełko|Nazwa przedmiotowej przestrzeni nazw 2|numer jednostki=2}} </syntaxhighlight> Na podstawie powyższego przykładu otrzymamy wynik o schemacie, nie wyniku, bo tam nie ma zmiennej {{Code|nazwa przestrzeni nazw 1}}, ale jest {{Code|nazwa przestrzeni nazw i}}: <syntaxhighlight lang="mediawiki"> <!-- Ale nie "nazwa przestrzeni nazw 2", bo jej nie ma, ale za to istnieje "nazwa przestrzeni nazw i"; --> <!-- nazwa przestrzeni nazw 2=nazwa przestrzeni nazw i="", a nazwa jednostki 2="Dyskusja Wikibooks:Strona"; --> <!-- Czyli wynik: --> Wikibooks <!-- Widzimy, że wygenerowała się nazwa przestrzeni nazw, którą jest przestrzeń nieprogramowa, ale projektu, wychodząca z nazwy jednostek w tym przypadku z "nazwa jednostki 2"; --> </syntaxhighlight> Nie jest brana w tym powyższym przykładzie zmienna {{Code|nazwa przestrzeni nazw}}, bo jej nie ma, ale za to jest {{Code|nazwa przestrzeni nazw i}}, bo ona występuje jako parametr domyślny ogólny dla parametrów numerkowych. Tytaj jest używana jest zmienna {{Code|nazwa jednostki 2}} do wygenerowania ostatecznego wyniku, bo jak można zauważyć, parametry przestrzenne wskazują na przestrzeń główną, a nazwy jednostek już nie. Przykłady w wikikodzie: * {{Code|{{m|Pudełko|Nazwa przedmiotowej przestrzeni nazw 2|numer jednostki{{=}}2}}}} → {{Tt|{{#invoke:Pudełko|Nazwa przedmiotowej przestrzeni nazw 2|numer jednostki=2}}}} * {{Code|{{m|Pudełko|Nazwa przedmiotowej przestrzeni nazw 2|Dyskusja szablonu|nazwa przestrzeni nazw i{{=}}Moja przestrzeń|numer jednostki{{=}}2}}}} → {{Tt|{{#invoke:Pudełko|Nazwa przedmiotowej przestrzeni nazw 2|Dyskusja szablonu|nazwa przestrzeni nazw i=Moja przestrzeń|numer jednostki=2}}}} * {{Code|{{m|Pudełko|Nazwa przedmiotowej przestrzeni nazw 2|nazwa przestrzeni nazw 2{{=}}Dyskusja|nazwa jednostki 2{{=}}Dyskusja szablonu:Strona|numer jednostki{{=}}2}}}} → {{Tt|{{#invoke:Pudełko|Nazwa przedmiotowej przestrzeni nazw 2|nazwa przestrzeni nazw 2=Dyskusja|nazwa jednostki 2=Dyskusja szablonu:Strona|numer jednostki=2}}}} * {{Code|{{m|Pudełko|Nazwa przedmiotowej przestrzeni nazw 2|nazwa przestrzeni nazw i{{=}}Dyskusja|nazwa jednostki 2{{=}}Dyskusja szablonu:Strona|numer jednostki{{=}}2}}}} → {{Tt|{{#invoke:Pudełko|Nazwa przedmiotowej przestrzeni nazw 2|nazwa przestrzeni nazw i=Dyskusja|nazwa jednostki 2=Dyskusja szablonu:Strona|numer jednostki=2}}}} * {{Code|{{m|Pudełko|Nazwa przedmiotowej przestrzeni nazw 2|Dyskusja szablonu|nazwa przestrzeni nazw{{=}}Dyskusja|nazwa jednostki 2{{=}}Wikibooks:Strona|numer jednostki{{=}}2}}}} → {{Tt|{{#invoke:Pudełko|Nazwa przedmiotowej przestrzeni nazw 2|Dyskusja szablonu|nazwa przestrzeni nazw=Dyskusja|nazwa jednostki 2=Dyskusja Wikibooks:Strona|numer jednostki=2}}}} Powyżej dla przykładu podano parametry nie w rodzicu w szablonie, tylko w dziecku, jeśli chodzi o parametry nazw przestrzeni nazw i nazw jednostek, ale ich się za to nie powinno podawać w tych ramach, tylko w szablonach, w których wywoływane są te ramki pudełek {{Code|{{m|Pudełko}}}}, ale tak tutaj tak zrobiono by było najłatwiej sprawdzić działanie tego typu funkcji. Analogicznie możemy podawać parametry typu jednostki, np.: wywołaniu modułowym {{Code|{{m|Pudełko|Nazwa przedmiotowej przestrzeni nazw 2|typ jednostki 2{{=}}Podręcznik|nazwa jednostki 2{{=}}Dyskusja szablonu:Strona|numer jednostki{{=}}2}}}} (ale wtedy jest brana przestrzeń nazw z nazwy jednostki), ale o tym więcej w rozdziałach {{Code|{{sr|# p["Przedmiotowy typ jednostki 2"](frame,i)|p=Pudełko}}}} w „{{sr|#Funkcje typu jednostki|p=Pudełko}}”, on definiuje przestrzenie przedmiotowe, ale można użyć parametru dyskusji typu jednostki z wartością niepustą, pustą, czy nawet jej nie podamy, wtedy wyświetli się nazwa przestrzeni nazw przedmiotowej. Jeżeli typ jednostki wskazuje na przestrzeń nazw główną, wtedy się liczą parametry nazw jednostek. Typ jednostki nie ma takiej samej wartości dla przestrzeni przedmiotowej, co dyskusji. Również parametry typu jednostki nie powinno się podawać w dziecku w ramce, tylko w rodzicu w szablonie jako parametry, w którym ta ramka jest wywoływana, ale tutaj podano jedynie dla przykładu, jak najłatwiej sprawdzić działanie tych parametrów tej funkcji. Najpierw w funkcji nagłówku brane są parametry nazw przestrzeni nazw, a jeżeli ich nie ma, to parametry typu jednostki, a jeżeli nie ma lub parametry przestrzenne wskazują na przestrzeń główną, i nie ma nazwy jednostki, to generowane są nazwy tej funkcji na podstawie aktualnej strony. === {{Code|p["Nazwa przestrzeni nazw dyskusji 2"](frame,...)}} === Funkcja pisze nazwę przestrzeni nazw dyskusji jakikolwiek nazwy przestrzeni nazw (tzn. nazwę dyskusji nazwy przestrzenie nazw, czyli nie przedmiotowej, zamieniana jest na nią samą, czyli identyfikator przestrzeni się nie zmienia, a przedmiotową, nie dyskusji, przekształca się na dyskusji jej odpowiadającą, czyli w tym przypadku identyfikator przestrzeni zwiększa się o numer więcej), według, i nie zawsze tylko, podanej w zmiennej {{Code|nazwa przestrzeni nazw}} dla pozycja bazowej w podanych parametrach szablonu rodzicu ramki dziecka, lub dla innej pozycji należy parametr podawać w formie {{Code|nazwa przestrzeni nazw 1}}, {{Code|nazwa przestrzeni nazw 2}}, {{Code|nazwa przestrzeni nazw 3}},..., lub te parametry można podać w postaci ogólnej {{Code|nazwa przestrzeni nazw i}}. W tej funkcji trzeba też podawać parametry nazwy jednostek {{Code|nazwa jednostki}}, {{Code|nazwa jednostki 1}}, {{Code|nazwa jednostki 2}}, {{Code|nazwa jednostki 3}},... Parametry podaje się w parametrach rodzica wywołania tej funkcji {{Code|{{m|Pudełko|Nazwa przestrzeni nazw dyskusji 2}}}} (ale ich nie trzeba podawać w dziecku, ale można) i w parametrach dziecka, jeśli chodzi o zmienną {{Code|numer jednostki}}, czyli np.: {{Code|{{m|Pudełko|Nazwa przestrzeni nazw dyskusji 2|numer jednostki{{=}}<jakaś liczba całkowita dodatnia>}}}}. Te parametry przestrzenne zamiast w rodzicu w szablonie można podać w ramce dziecka, wtedy parametry dziecka mają pierwszeństwo. Przestrzeń nazw z parametrów nazw przestrzennych po przekształceniu może odpowiadać wartości przestrzeni głównej, to wtedy odpowiednia przestrzeń nazw z parametru nazwy jednostki się liczy w tej funkcji, wtedy jest liczona nazwa przestrzeni nazw dyskusji z tego parametru. Gdy parametry przestrzenne lub typ jednostki w drugim podejściu nie wskazują na przestrzeń główną, to wtedy działanie tej funkcji jest podobne do {{Code|{{sr|#p["Nazwa dyskusji przestrzeni nazw"](frame,...)|p=Pudełko}}}}. Definicja skrótowa funkcji: <syntaxhighlight lang="lua"> p["Nazwa przestrzeni nazw dyskusji 2"]=function(frame,czy_uwzglednic_alternatywna_nazwe,i)...end; </syntaxhighlight> Wtedy ciało funkcji tej, czyli jego definicja w środku, jest: <syntaxhighlight lang="lua"> local pudelko_pomocne_modul=require("Module:Pudełko/Pomocne"); return pudelko_pomocne_modul.Nazwa_przestrzeni_nazw_przedmiotowa_dyskusji_2(frame,czy_uwzglednic_alternatywna_nazwe,i,"dyskusja"); </syntaxhighlight> Parametry funkcji: * {{Code|frame}} - tablica ramki tablicy transportu, * {{Code|czy_uwzglednic_alternatywna_nazwe}} - czy ma uwzględniać nazwę przestrzeni nazw domyślną szablonu, dostępne wartości: {{Code|false}}, w której nazwa domyślna nie jest uwzględniana wtedy, oraz {{Code|nil}} i {{Code|true}}, które oznaczają to samo, w tym jeżeli ona jest uwzględniana, wtedy jest brany parametr pierwszy dziecka, który musi istnieć przy takiej wartości tego parametru, tzn. {{Code|{{m|Pudełko|Nazwa przestrzeni nazw dyskusji 2|Szablon}}}}, nazwa domyślna zostanie zamieniona na dyskusji, a jeżeli jest już taka, to nie ma takiej zamiany, a jeśli nazwa uzyskana nazwy przestrzeni nazw jest w takim przypadku błędna, to brany jest ten element, a jeżeli nazwa domyślna jest błędna, czyli {{Code|{{m|Pudełko|Nazwa przestrzeni nazw dyskusji 2|Moja przestrzeń}}}}, wtedy funkcja zwraca stan błędu {{Code|(błąd)}}. * {{Code|i}} - numer zmiennej nazwy przestrzeni nazw. Funkcja wykorzystuje {{Code|{{sr|#p.Nazwa_przestrzeni_nazw_przedmiotowa_dyskusji_2(frame,...)|p=Pudełko/Pomocne}}}} do wyznaczania ogólnego nazwy przestrzeni nazw dla pozycji bazowej i numerkowej, tzn. dla pozycji: jeden, dwa, trzy,..., itd, i ich ogólnej. Parametr ramki tablicy transportu rodzica szablonu: * {{Code|nazwa przestrzeni nazw}}, {{Code|nazwa przestrzeni nazw 1}}, {{Code|nazwa przestrzeni nazw 2}}, {{Code|nazwa przestrzeni nazw 3}},..., {{Code|nazwa przestrzeni nazw i}} - nazwy przestrzeni nazw dla pozycji bazowej oraz zwykłej i ogólnej numerkowej, * {{Code|nazwa jednostki}}, {{Code|nazwa jednostki 1}}, {{Code|nazwa jednostki 2}}, {{Code|nazwa jednostki 3}},... - nazwy jednostek dla pozycji bazowej i numerkowej, * {{Code|typ jednostki}}, {{Code|typ jednostki 1}}, {{Code|typ jednostki 2}}, {{Code|typ jednostki 3}},..., {{Code|typ jednostki i}} - typy jednostek, którym odpowiadają pewne przestrzenie przedmiotowe, dla pozycji bazowej, numerkowej i ogólnej. Parametry ramki tablicy transportu dziecka: * Parametry dziecka są takie same jak rodzica dla funkcji pudełkowej plus tu wymienione, * {{Code|numer jednostki}} - jak parametr {{Code|i}} nie został ustawiony, to wtedy liczy się ta zmienna. Przykłady: <syntaxhighlight lang="mediawiki"> {{Nazwa szablonu|nazwa przestrzeni nazw=Wikibooks|nazwa przestrzeni nazw 1=Szablon|nazwa przestrzeni nazw i=|nazwa jednostki 2=Wikibooks:Strona}} </syntaxhighlight> W dziecku powiedzmy jest wywołanie, i szukamy nazwy przestrzeni nazw o numerze dwa, która została podana, ale istnieje za to jej wersji ogólna {{Code|nazwa przestrzeni nazw i}} i domyślna {{Code|nazwa przestrzeni nazw}}, ale wtedy dla tego numerkowego liczy się to ogólne z {{Code| i}}, a ponieważ ta nazwa jest pusta, więc będziemy liczyli nazwę przestrzeni nazw z {{Code|nazwa jednostki 2}}: <syntaxhighlight lang="mediawiki"> {{#invoke:Pudełko|Nazwa przestrzeni nazw dyskusji 2|numer jednostki=2}} </syntaxhighlight> Na podstawie powyższego przykładu otrzymamy wynik o schemacie, nie wyniku, bo tam nie ma zmiennej {{Code|nazwa przestrzeni nazw 1}}, ale jest {{Code|nazwa przestrzeni nazw i}}: <syntaxhighlight lang="mediawiki"> <!-- Ale nie "nazwa przestrzeni nazw 2", bo jej nie ma, ale za to istnieje "nazwa przestrzeni nazw i"; --> <!-- nazwa przestrzeni nazw 2=nazwa przestrzeni nazw i="", a nazwa jednostki 2="Wikibooks:Strona"; --> <!-- Czyli wynik: --> Dyskusja Wikibooks <!-- Widzimy, że wygenerowała się nazwa przestrzeni nazw, którą jest przestrzeń nieprogramowa, ale dyskusji projektu, wychodząca z nazwy jednostek w tym przypadku z "nazwa jednostki 2"; --> </syntaxhighlight> Nie jest brana w tym powyższym przykładzie zmienna {{Code|nazwa przestrzeni nazw}}, bo jej nie ma, ale za to jest {{Code|nazwa przestrzeni nazw i}}, bo ona występuje jako parametr domyślny ogólny dla parametrów numerkowych. Tytaj jest używana jest zmienna {{Code|nazwa jednostki 2}} do wygenerowania ostatecznego wyniku, bo jak można zauważyć, parametry przestrzenne wskazują na przestrzeń główną, a nazwy jednostek już nie. Przykłady w wikikodzie: * {{Code|{{m|Pudełko|Nazwa przestrzeni nazw dyskusji 2|numer jednostki{{=}}2}}}} → {{Tt|{{#invoke:Pudełko|Nazwa przestrzeni nazw dyskusji 2|numer jednostki=2}}}} * {{Code|{{m|Pudełko|Nazwa przestrzeni nazw dyskusji 2|Szablon|nazwa przestrzeni nazw i{{=}}Moja przestrzeń|numer jednostki{{=}}2}}}} → {{Tt|{{#invoke:Pudełko|Nazwa przestrzeni nazw dyskusji 2|Szablon|nazwa przestrzeni nazw i=Moja przestrzeń|numer jednostki=2}}}} * {{Code|{{m|Pudełko|Nazwa przestrzeni nazw dyskusji 2|nazwa przestrzeni nazw 2{{=}}|nazwa jednostki 2{{=}}Szablon:Strona|numer jednostki{{=}}2}}}} → {{Tt|{{#invoke:Pudełko|Nazwa przestrzeni nazw dyskusji 2|nazwa przestrzeni nazw 2=|nazwa jednostki 2=Szablon:Strona|numer jednostki=2}}}} * {{Code|{{m|Pudełko|Nazwa przestrzeni nazw dyskusji 2|nazwa przestrzeni nazw i{{=}}|nazwa jednostki 2{{=}}Szablon:Strona|numer jednostki{{=}}2}}}} → {{Tt|{{#invoke:Pudełko|Nazwa przestrzeni nazw dyskusji 2|nazwa przestrzeni nazw i=|nazwa jednostki 2=Szablon:Strona|numer jednostki=2}}}} * {{Code|{{m|Pudełko|Nazwa przestrzeni nazw dyskusji 2|Szablon|nazwa przestrzeni nazw{{=}}|nazwa jednostki 2{{=}}Wikibooks:Strona|numer jednostki{{=}}2}}}} → {{Tt|{{#invoke:Pudełko|Nazwa przestrzeni nazw dyskusji 2|Szablon|nazwa przestrzeni nazw=|nazwa jednostki 2=Dyskusja Wikibooks:Strona|numer jednostki=2}}}} Powyżej dla przykładu podano parametry nie w rodzicu w szablonie, tylko w dziecku, jeśli chodzi o parametry nazw przestrzeni nazw i nazw jednostek, ale ich się za to nie powinno podawać w tych ramach, tylko w szablonach, w których wywoływane są te ramki pudełek {{Code|{{m|Pudełko}}}}, ale tak tutaj tak zrobiono by było najłatwiej sprawdzić działanie tego typu funkcji. Analogicznie możemy podawać parametry typu jednostki, np.: wywołaniu modułowym {{Code|{{m|Pudełko|Nazwa przestrzeni nazw dyskusji 2|typ jednostki 2{{=}}Podręcznik|nazwa jednostki 2{{=}}Szablon:Strona|numer jednostki{{=}}2}}}} (ale wtedy jest brana przestrzeń nazw z nazwy jednostki), ale o tym więcej w rozdziałach {{Code|{{sr|# p["Dyskusyjny typ jednostki 3"](frame,i)|p=Pudełko}}}} w „{{sr|#Funkcje typu jednostki|p=Pudełko}}”, one definiują przestrzenie dyskusji, ale można użyć parametru dyskusji typu jednostki z obojętnie jaką wartością niepustą, czy pustą, czy nawet jej nie podamy, wtedy wyświetli się nazwa przestrzeni nazw dyskusji. Jeżeli typ jednostki wskazuje na przestrzeń nazw główną, wtedy się liczą parametry nazw jednostek. Typ jednostki nie ma takiej samej wartości dla przestrzeni przedmiotowej, co dyskusji. Również parametry typu jednostki nie powinno się podawać w dziecku w ramce, tylko w rodzicu w szablonie jako parametry, w którym ta ramka jest wywoływana, ale tutaj podano jedynie dla przykładu, jak najłatwiej sprawdzić działanie tych parametrów tej funkcji. Najpierw w funkcji nagłówku brane są parametry nazw przestrzeni nazw, a jeżeli ich nie ma, to parametry typu jednostki, a jeżeli nie ma lub parametry przestrzenne wskazują na przestrzeń główną, i nie ma nazwy jednostki, to generowane są nazwy tej funkcji na podstawie aktualnej strony. == Funkcje pełnych nazw jednostki == === {{Code|p["Pełna nazwa dyskusji jednostki"](frame,i)}} === === {{Code|p["Pełna nazwa przedmiotowa jednostki"](frame,i)}} === === {{Code|p["Pełna nazwa jednostki"](frame,i)}} === == Funkcje pełnych nazw jednostki drugiej wersji == === {{Code|p["Pełna nazwa dyskusji jednostki 2"](frame,i)}} === === {{Code|p["Pełna nazwa przedmiotowa jednostki 2"](frame,i)}} === === {{Code|p["Pełna nazwa jednostki 2"](frame,i)}} === == Funkcje pełnych nazw jednostki trzeciej wersji == === {{Code|p["Pełna nazwa dyskusji jednostki 3"](frame,i)}} === === {{Code|p["Pełna nazwa przedmiotowa jednostki 3"](frame,i)}} === === {{Code|p["Pełna nazwa jednostki 3"](frame,i)}} === == Funkcje nazw jednostki == === {{Code|p["Nazwa jednostki"](frame,i)}} === == Funkcje nazw jednostki drugiej wersji == === {{Code|p["Nazwa jednostki 2"](frame,i)}} === === {{Code|p["Nazwa przedmiotowa jednostki 2"](frame,i)}} === === {{Code|p["Nazwa dyskusji jednostki 2"](frame,i)}} === == Funkcje nazw przestrzeni nazw trzeciej wersji == === {{Code|p["Nazwa przestrzeni nazw 3"](frame,i)}} === Funkcja pisze nazwę przestrzeni nazw, niezależnie, czy to jest przedmiotowa, czy dyskusji, według, i nie zawsze tylko, podanej w zmiennej {{Code|nazwa przestrzeni nazw}} dla pozycja bazowej w podanych parametrach szablonu rodzicu ramki dziecka, lub dla innej pozycji należy parametr podawać w formie {{Code|nazwa przestrzeni nazw 1}}, {{Code|Nazwa przestrzeni nazw 3}}, {{Code|nazwa przestrzeni nazw 3}},..., lub te parametry można podać w postaci ogólnej {{Code|nazwa przestrzeni nazw i}}. W tej funkcji trzeba też podawać parametry nazwy jednostek {{Code|nazwa jednostki}}, {{Code|nazwa jednostki 1}}, {{Code|nazwa jednostki 2}}, {{Code|nazwa jednostki 3}},... Parametry podaje się w parametrach rodzica wywołania tej funkcji {{Code|{{m|Pudełko|Nazwa przestrzeni nazw 3}}}} (ale ich nie trzeba podawać w dziecku, ale można) i w parametrach dziecka, jeśli chodzi o zmienną {{Code|numer jednostki}}, czyli np.: {{Code|{{m|Pudełko|Nazwa przestrzeni nazw 3|numer jednostki{{=}}<jakaś liczba całkowita dodatnia>}}}}. Te parametry przestrzenne zamiast w rodzicu w szablonie można podać w ramce dziecka, wtedy parametry dziecka mają pierwszeństwo. Przestrzeń nazw z parametrów nazw przestrzennych bazowych (bez numerka) może odpowiadać wartości przestrzeni głównej, to wtedy odpowiednia przestrzeń nazw z parametru nazwy jednostki się nie liczy w tej funkcji, aby się liczyła należy użyć funkcji {{Code|{{sr|#p["Nazwa przestrzeni nazw 2"](frame,...)|p=Pudełko}}}}. W tym przypadku funkcja działa jak {{Code|{{sr|#p["Nazwa przestrzeni nazw"](frame,...)|p=Pudełko}}}}. Przestrzeń nazw z parametrów nazw przestrzennych numerkowych może odpowiadać wartości przestrzeni głównej, to wtedy odpowiednia przestrzeń nazw z parametru nazwy jednostki się liczy w tej funkcji, wtedy jest liczona nazwa przestrzeni nazw z tego parametru. Gdy parametry przestrzenne lub typ jednostki w drugim podejściu nie wskazują na przestrzeń główną, to wtedy działanie tej funkcji jest podobne do {{Code|{{sr|#p["Nazwa przestrzeni nazw 2"](frame,...)|p=Pudełko}}}}. Definicja skrótowa funkcji: <syntaxhighlight lang="lua"> p["Nazwa przestrzeni nazw 3"]=function(frame,czy_uwzglednic_alternatywna_nazwe,i)...end; </syntaxhighlight> Wtedy ciało funkcji tej, czyli jego definicja w środku, jest: <syntaxhighlight lang="lua"> -- Jest liczony numer parametru nazwy przestrzeni nazw, domyslnie chodzi tu o numer bazowy parametrów przestrzennych; local numer_jednostki=i or frame.args["numer jednostki"]; local liczba_numeru_jednostki=((numer_jednostki)and(tonumber(numer_jednostki)) or 0); local pudelko_pomocne_modul=require("Module:Pudełko/Pomocne"); -- Liczy nazwę przestrzeni nazw dyskusji na podstawie podanych parametrów; return pudelko_pomocne_modul.Uzyskanie_nazw_jednostki(frame,0,liczba_numeru_jednostki,nil,2); </syntaxhighlight> Parametry funkcji: * {{Code|frame}} - tablica ramki tablicy transportu, * {{Code|czy_uwzglednic_alternatywna_nazwe}} - czy ma uwzględniać nazwę przestrzeni nazw domyślną szablonu, dostępne wartości: {{Code|false}}, w której nazwa domyślna nie jest uwzględniana wtedy, oraz {{Code|nil}} i {{Code|true}}, które oznaczają to samo, w tym jeżeli ona jest uwzględniana, wtedy jest brany parametr pierwszy dziecka, który musi istnieć przy takiej wartości tego parametru, tzn. {{Code|{{m|Pudełko|Nazwa przestrzeni nazw 3|Szablon}}}}, a jeśli nazwa uzyskana nazwy przestrzeni nazw jest w takim przypadku błędna, to brany jest ten element, a jeżeli nazwa domyślna jest błędna, czyli {{Code|{{m|Pudełko|Nazwa przestrzeni nazw 3|Moja przestrzeń}}}}, wtedy funkcja zwraca stan błędu {{Code|(błąd)}}. * {{Code|i}} - numer zmiennej nazwy przestrzeni nazw. Funkcja wykorzystuje {{Code|{{sr|#p.Uzyskanie_nazw_jednostki(frame,...)|p=Pudełko/Pomocne}}}} do wyznaczania ogólnego nazwy przestrzeni nazw dla pozycji bazowej i numerkowej, tzn. dla pozycji: jeden, dwa, trzy,..., itd, i ich ogólnej. Parametr ramki tablicy transportu rodzica szablonu: * {{Code|nazwa przestrzeni nazw}}, {{Code|nazwa przestrzeni nazw 1}}, {{Code|Nazwa przestrzeni nazw 3}}, {{Code|nazwa przestrzeni nazw 3}},..., {{Code|nazwa przestrzeni nazw i}} - nazwy przestrzeni nazw dla pozycji bazowej oraz zwykłej i ogólnej numerkowej, * {{Code|nazwa jednostki}}, {{Code|nazwa jednostki 1}}, {{Code|nazwa jednostki 2}}, {{Code|nazwa jednostki 3}},... - nazwy jednostek dla pozycji bazowej i numerkowej, * {{Code|typ jednostki}}, {{Code|typ jednostki 1}}, {{Code|typ jednostki 2}}, {{Code|typ jednostki 3}},..., {{Code|typ jednostki i}} - typy jednostek, którym odpowiadają pewne przestrzenie przedmiotowe, dla pozycji bazowej, numerkowej i ogólnej, ** {{Code|dyskusja typu jednostki}}, {{Code|dyskusja typu jednostki 1}}, {{Code|dyskusja typ jednostki 2}}, {{Code|dyskusja typ jednostki 3}},..., {{Code|dyskusja typ jednostki i}} - czy dany typ jednostki ma przedstawiać, jeśli niepusta, przestrzeń dyskusji dla pozycji bazowej, numerkowej i ogólnej. Parametry ramki tablicy transportu dziecka: * Parametry dziecka są takie same jak rodzica dla funkcji pudełkowej plus tu wymienione, * {{Code|numer jednostki}} - jak parametr {{Code|i}} nie został ustawiony, to wtedy liczy się ta zmienna. Przykłady: <syntaxhighlight lang="mediawiki"> {{Nazwa szablonu 1|nazwa przestrzeni nazw=Wikibooks|nazwa przestrzeni nazw=|nazwa przestrzeni nazw i=|nazwa jednostki=Szablon:Strona}} ---- {{Nazwa szablonu 2|nazwa przestrzeni nazw=Wikibooks|nazwa przestrzeni nazw 1=Szablon|nazwa przestrzeni nazw i=|nazwa jednostki 2=Wikibooks:Strona}} </syntaxhighlight> W pierwszym wywołaniu {{Code|nazwa przestrzeni nazw}} jest puste, ale dla tego bazowego (bez numerka) szukamy przestrzeni nazw, a więc ta nazwa jest ostateczna. ---- W drugim wywołaniu w dziecku powiedzmy jest wywołanie, i szukamy nazwy przestrzeni nazw o numerze dwa, która została podana, ale istnieje za to jej wersji ogólna {{Code|nazwa przestrzeni nazw i}} i domyślna {{Code|nazwa przestrzeni nazw}}, ale wtedy dla tego numerkowego liczy się to ogólne z {{Code| i}}, a ponieważ ta nazwa jest pusta, więc będziemy liczyli nazwę przestrzeni nazw z {{Code|nazwa jednostki 2}}. Odpowiadająca powyższemu kodowi, powiedzmy wikikod, według ich zawartości, przedstawia się: <syntaxhighlight lang="mediawiki"> {{#invoke:Pudełko|Nazwa przestrzeni nazw 3}} ---- {{#invoke:Pudełko|Nazwa przestrzeni nazw 3|numer jednostki=2}} </syntaxhighlight> Na podstawie powyższego przykładu otrzymamy wynik o schemacie, nie wyniku, bo tam nie ma zmiennej {{Code|nazwa przestrzeni nazw 1}}, ale jest {{Code|nazwa przestrzeni nazw i}}: <syntaxhighlight lang="mediawiki"> <!-- nazwa przestrzeni nazw=""; --> <!-- Czyli wynik: --> <!-- wynik pusty --> <!-- Widzimy, że wygenerowała się nazwa przestrzeni nazw, którą jest przestrzeń nazw główna, jest ciągiem pustym: ""; --> ---- <!-- Ale nie "nazwa przestrzeni nazw 2", bo jej nie ma, ale za to istnieje "nazwa przestrzeni nazw i"; --> <!-- nazwa przestrzeni nazw 2=nazwa przestrzeni nazw i="", a nazwa jednostki 2="Wikibooks:Strona"; --> <!-- Czyli wynik: --> Wikibooks <!-- Widzimy, że wygenerowała się nazwa przestrzeni nazw, którą jest przestrzeń nieprogramowa, ale projektu, wychodząca z nazwy jednostek w tym przypadku z "nazwa jednostki 2"; --> </syntaxhighlight> Dla parametrów numerkowych nie jest brana w tym powyższym przykładzie zmienna {{Code|nazwa przestrzeni nazw 2}}, bo jej nie ma, ale za to jest {{Code|nazwa przestrzeni nazw i}}, bo ona występuje jako parametr domyślny ogólny dla parametrów numerkowych. Tytaj jest używana jest zmienna {{Code|nazwa jednostki 2}} do wygenerowania ostatecznego wyniku, bo jak można zauważyć, parametry przestrzenne wskazują na przestrzeń główną, a nazwy jednostek już nie. Dla parametrów bazowych mamy zmienną {{Code|nazwa przestrzeni nazw}}, ona jest pusta, więc to zostanie wziete do ostatecznego wyniku. Przykłady w wikikodzie: * {{Code|{{m|Pudełko|Nazwa przestrzeni nazw 3|Szablon|nazwa przestrzeni nazw{{=}}Moja przestrzeń|nazwa jednostki{{=}}Wikibooks:Strona}}}} → {{Tt|{{#invoke:Pudełko|Nazwa przestrzeni nazw 3|Szablon|nazwa przestrzeni nazw=Moja przestrzeń|nazwa jednostki=Wikibooks:Szablon}}}} * {{Code|{{m|Pudełko|Nazwa przestrzeni nazw 3|Szablon|nazwa przestrzeni nazw 2{{=}}Moja przestrzeń|nazwa jednostki 2{{=}}Wikibooks:Strona}|numer jednostki{{=}}2}}}} → {{Tt|{{#invoke:Pudełko|Nazwa przestrzeni nazw 3|Szablon|nazwa przestrzeni nazw 2=Moja przestrzeń|nazwa jednostki 2=Wikibooks:Szablon|numer jednostki=2}}}} * {{Code|{{m|Pudełko|Nazwa przestrzeni nazw 3|nazwa przestrzeni nazw{{=}}|nazwa jednostki{{=}}Wikibooks:Strona}}}} → {{Tt|{{#invoke:Pudełko|Nazwa przestrzeni nazw 3|nazwa przestrzeni nazw=|nazwa jednostki=Wikibooks:Szablon}}}} * {{Code|{{m|Pudełko|Nazwa przestrzeni nazw 3|nazwa przestrzeni nazw 2{{=}}|nazwa jednostki 2{{=}}Wikibooks:Strona|numer jednostki{{=}}2}}}} → {{Tt|{{#invoke:Pudełko|Nazwa przestrzeni nazw 3|nazwa przestrzeni nazw 2=|nazwa jednostki 2=Wikibooks:Szablon|numer jednostki=2}}}} Powyżej dla przykładu podano parametry nie w rodzicu w szablonie, tylko w dziecku, jeśli chodzi o parametry nazw przestrzeni nazw i nazw jednostek, ale ich się za to nie powinno podawać w tych ramach, tylko w szablonach, w których wywoływane są te ramki pudełek {{Code|{{m|Pudełko}}}}, ale tak tutaj tak zrobiono by było najłatwiej sprawdzić działanie tego typu funkcji. Analogicznie możemy podawać parametry typu jednostki, np.: wywołaniu modułowym {{Code|{{m|Pudełko|Nazwa przestrzeni nazw 3|typ jednostki 2{{=}}Podręcznik|nazwa jednostki 2{{=}}Szablon:Strona|numer jednostki{{=}}2}}}} (ale wtedy jest brana przestrzeń nazw z nazwy jednostki), ale o tym więcej w rozdziałach {{Code|{{sr|#p["Typ jednostki 3"](frame,i)|p=Pudełko}}}} w „{{sr|#Funkcje typu jednostki|p=Pudełko}}”, on definiuje przestrzenie przedmiotowe, ale można użyć parametru dyskusji typu jednostki z wartością niepustą, wtedy wyświetli się nazwa przestrzeni nazw dyskusji. Typ jednostki nie ma takiej samej wartości dla przestrzeni przedmiotowej, co dyskusji. Również parametry typu jednostki nie powinno się podawać w dziecku w ramce, tylko w rodzicu w szablonie jako parametry, w którym ta ramka jest wywoływana, ale tutaj podano jedynie dla przykładu, jak najłatwiej sprawdzić działanie tych parametrów tej funkcji. Najpierw w funkcji nagłówku brane są parametry nazw przestrzeni nazw, a jeżeli ich nie ma, to parametry typu jednostki, a jeżeli nie ma lub parametry przestrzenne wskazują na przestrzeń główną, i nie ma nazwy jednostki, to generowane są nazwy tej funkcji na podstawie aktualnej strony. === {{Code|p["Nazwa przedmiotowej przestrzeni nazw 3"](frame,i)}} === Funkcja pisze przedmiotową nazwę przestrzeni nazw jakikolwiek nazwy przestrzeni nazw (tzn. nazwę przedmiotową nazwy przestrzenie nazw, czyli nie dyskusji, zamieniana jest na nią samą, czyli identyfikator przestrzeni się nie zmienia, a dyskusji, nie przedmiotową, przekształca się na przedmiotową jej odpowiadającą, czyli w tym przypadku identyfikator przestrzeni zmniejsza się o numer mniej), według podanej w zmiennej {{Code|nazwa przestrzeni nazw}} dla pozycja bazowej w podanych parametrach szablonu rodzicu ramki dziecka, lub dla innej pozycji należy parametr podawać w formie {{Code|nazwa przestrzeni nazw 1}}, {{Code|nazwa przestrzeni nazw 2}}, {{Code|nazwa przestrzeni nazw 3}},..., lub te parametry można podać w postaci ogólnej {{Code|nazwa przestrzeni nazw i}}. Parametry podaje się w parametrach rodzica wywołania tej funkcji {{Code|{{m|Pudełko|Nazwa przedmiotowej przestrzeni nazw 3}}}} (ale ich nie trzeba podawać w dziecku, ale można) i w parametrach dziecka, jeśli chodzi o zmienną {{Code|numer jednostki}}, czyli np.: {{Code|{{m|Pudełko|Nazwa przedmiotowej przestrzeni nazw 3|numer jednostki{{=}}<jakaś liczba całkowita dodatnia>}}}}. Te parametry przestrzenne zamiast w rodzicu w szablonie można podać w ramce dziecka, wtedy parametry dziecka mają pierwszeństwo. Parametry przestrzenne mogą mogą być podane w postaci przestrzeni przedmiotowej lub dyskusji, ale ta funkcja zawsze ją zamienia na przedmiotową. Przestrzeń nazw z parametrów nazw przestrzennych bazowych (bez numerka) może odpowiadać wartości przestrzeni głównej, to wtedy odpowiednia przestrzeń nazw z parametru nazwy jednostki się nie liczy w tej funkcji, aby się liczyła należy użyć funkcji {{Code|{{sr|#p["Nazwa przedmiotowej przestrzeni nazw 2"](frame,...)|p=Pudełko}}}}. W tym przypadku funkcja działa jak {{Code|{{sr|#p["Nazwa przedmiotowej przestrzeni nazw"](frame,...)|p=Pudełko}}}}. Przestrzeń nazw z parametrów nazw przestrzennych numerkowych może odpowiadać wartości przestrzeni głównej, to wtedy odpowiednia przestrzeń nazw z parametru nazwy jednostki się liczy w tej funkcji, wtedy jest liczona nazwa przestrzeni nazw z tego parametru. Gdy parametry przestrzenne lub typ jednostki w drugim podejściu nie wskazują na przestrzeń główną, to wtedy działanie tej funkcji jest podobne do {{Code|{{sr|#p["Nazwa przedmiotowej przestrzeni nazw 2"](frame,...)|p=Pudełko}}}}. Definicja skrótowa funkcji: <syntaxhighlight lang="lua"> p["Nazwa przedmiotowej przestrzeni nazw 3"]=function(frame,czy_uwzglednic_alternatywna_nazwe,i)...end; </syntaxhighlight> Wtedy ciało funkcji tej, czyli jego definicja w środku, jest: <syntaxhighlight lang="lua"> -- Jest liczony numer parametru nazwy przestrzeni nazw, domyslnie chodzi tu o numer bazowy parametrów przestrzennych; local numer_jednostki=i or frame.args["numer jednostki"]; local liczba_numeru_jednostki=((numer_jednostki)and(tonumber(numer_jednostki)) or 0); local pudelko_pomocne_modul=require("Module:Pudełko/Pomocne"); -- Liczy nazwę przestrzeni nazw przedmiotową na podstawie podanych parametrów; return pudelko_pomocne_modul.Uzyskanie_nazw_jednostki(frame,1,liczba_numeru_jednostki,nil,1); </syntaxhighlight> Parametry funkcji: * {{Code|frame}} - tablica ramki tablicy transportu, * {{Code|czy_uwzglednic_alternatywna_nazwe}} - czy ma uwzględniać nazwę przestrzeni nazw domyślną szablonu, dostępne wartości: {{Code|false}}, w której nazwa domyślna nie jest uwzględniana wtedy, oraz {{Code|nil}} i {{Code|true}}, które oznaczają to samo, w tym jeżeli ona jest uwzględniana, wtedy jest brany parametr pierwszy dziecka, który musi istnieć przy takiej wartości tego parametru, tzn. {{Code|{{m|Pudełko|Nazwa przedmiotowej przestrzeni nazw 3|Dyskusja szablonu}}}} - ta nazwa domyślna zostanie zamieniona na przedmiotową, a jak ona by była przedmiotowa, to żadnej zamiany by nie było, a nazwa uzyskana z nazwy przestrzeni nazw z parametrów przestrzennych jest w takim przypadku błędna, to w takim razie brany jest ten parametr, a jeżeli ta nazwa domyślna jest błędna, czyli {{Code|{{m|Pudełko|Nazwa przedmiotowej przestrzeni nazw 3|Moja przestrzeń}}}}, wtedy funkcja zwraca stan błędu {{Code|(błąd)}}. * {{Code|i}} - numer zmiennej nazwy przestrzeni nazw. Funkcja wykorzystuje {{Code|{{sr|#p.Uzyskanie_nazw_jednostki(frame,...)|p=Pudełko/Pomocne}}}} do wyznaczania ogólnego nazwy przestrzeni nazw dla pozycji bazowej i numerkowej, tzn. dla pozycji: jeden, dwa, trzy,..., itd, i ich ogólnej. Parametr ramki tablicy transportu rodzica szablonu: * {{Code|nazwa przestrzeni nazw}}, {{Code|nazwa przestrzeni nazw 1}}, {{Code|nazwa przestrzeni nazw 2}}, {{Code|nazwa przestrzeni nazw 3}},..., {{Code|nazwa przestrzeni nazw i}} - nazwy przestrzeni nazw dla pozycji bazowej oraz zwykłej i ogólnej numerkowej, * {{Code|typ jednostki}}, {{Code|typ jednostki 1}}, {{Code|typ jednostki 2}}, {{Code|typ jednostki 3}},..., {{Code|typ jednostki i}} - typy jednostek, którym odpowiadają pewne przestrzenie przedmiotowe, dla pozycji bazowej, numerkowej i ogólnej. Parametry ramki tablicy transportu dziecka: * Parametry dziecka są takie same jak rodzica dla funkcji pudełkowej plus tu wymienione, * {{Code|numer jednostki}} - jak parametr {{Code|i}} nie został ustawiony, to wtedy liczy się ta zmienna. Przykłady: <syntaxhighlight lang="mediawiki"> {{Nazwa szablonu 1|nazwa przestrzeni nazw=Wikibooks|nazwa przestrzeni nazw=|nazwa przestrzeni nazw i=|nazwa jednostki=Dyskusja Wikibooks:Strona}} ---- {{Nazwa szablonu 2|nazwa przestrzeni nazw=Wikibooks|nazwa przestrzeni nazw 1=Szablon|nazwa przestrzeni nazw i=|nazwa jednostki 2=Dyskusja Wikibooks:Strona}} </syntaxhighlight> W pierwszym wywołaniu {{Code|nazwa przestrzeni nazw}} jest puste, ale dla tego bazowego (bez numerka) szukamy przestrzeni nazw, a więc ta nazwa jest ostateczna. ---- W drugim wywołaniu w dziecku powiedzmy jest wywołanie, i szukamy nazwy przestrzeni nazw o numerze dwa, która została podana, ale istnieje za to jej wersji ogólna {{Code|nazwa przestrzeni nazw i}} i domyślna {{Code|nazwa przestrzeni nazw}}, ale wtedy dla tego numerkowego liczy się to ogólne z {{Code| i}}, a ponieważ ta nazwa jest pusta, więc będziemy liczyli nazwę przestrzeni nazw z {{Code|nazwa jednostki 2}}. Odpowiadająca powyższemu kodowi, powiedzmy wikikod, według ich zawartości, przedstawia się: <syntaxhighlight lang="mediawiki"> {{#invoke:Pudełko|Nazwa przedmiotowej przestrzeni nazw 3}} ---- {{#invoke:Pudełko|Nazwa przedmiotowej przestrzeni nazw 3|numer jednostki=2}} </syntaxhighlight> Na podstawie powyższego przykładu otrzymamy wynik o schemacie, nie wyniku, bo tam nie ma zmiennej {{Code|nazwa przestrzeni nazw 1}}, ale jest {{Code|nazwa przestrzeni nazw i}}: <syntaxhighlight lang="mediawiki"> <!-- nazwa przestrzeni nazw=""; --> <!-- Czyli wynik: --> <!-- wynik pusty --> <!-- Widzimy, że wygenerowała się nazwa przestrzeni nazw, którą jest przestrzeń nazw główna, jest ciągiem pustym: ""; --> ---- <!-- Ale nie "nazwa przestrzeni nazw 2", bo jej nie ma, ale za to istnieje "nazwa przestrzeni nazw i"; --> <!-- nazwa przestrzeni nazw 2=nazwa przestrzeni nazw i="", a nazwa jednostki 2="Dyskusja Wikibooks:Strona"; --> <!-- Czyli wynik: --> Wikibooks <!-- Widzimy, że wygenerowała się nazwa przestrzeni nazw, którą jest przestrzeń nieprogramowa, ale projektu, wychodząca z nazwy jednostek w tym przypadku z "nazwa jednostki 2"; --> </syntaxhighlight> Dla parametrów numerkowych nie jest brana w tym powyższym przykładzie zmienna {{Code|nazwa przestrzeni nazw 2}}, bo jej nie ma, ale za to jest {{Code|nazwa przestrzeni nazw i}}, bo ona występuje jako parametr domyślny ogólny dla parametrów numerkowych. Tytaj jest używana jest zmienna {{Code|nazwa jednostki 2}} do wygenerowania ostatecznego wyniku, bo jak można zauważyć, parametry przestrzenne wskazują na przestrzeń główną, a nazwy jednostek już nie. Dla parametrów bazowych mamy zmienną {{Code|nazwa przestrzeni nazw}}, ona jest pusta, więc to zostanie wziete do ostatecznego wyniku. Przykłady w wikikodzie: * {{Code|{{m|Pudełko|Nazwa przedmiotowej przestrzeni nazw 3|Dyskusja szablonu|nazwa przestrzeni nazw{{=}}Moja przestrzeń|nazwa jednostki{{=}}Dyskusja Wikibooks:Strona}}}} → {{Tt|{{#invoke:Pudełko|Nazwa przedmiotowej przestrzeni nazw 3|Dyskusja szablonu|nazwa przestrzeni nazw=Moja przestrzeń||nazwa jednostki=Dyskusja Wikibooks:Szablon}}}} * {{Code|{{m|Pudełko|Nazwa przedmiotowej przestrzeni nazw 3|Dyskusja szablonu|nazwa przestrzeni nazw 2{{=}}Moja przestrzeń|nazwa jednostki 2{{=}}Dyskusja Wikibooks:Strona|numer jednostki{{=}}2}}}} → {{Tt|{{#invoke:Pudełko|Nazwa przedmiotowej przestrzeni nazw 3|Dyskusja szablonu|nazwa przestrzeni nazw 2=Moja przestrzeń||nazwa jednostki 2=Dyskusja Wikibooks:Szablon|numer jednostki=2}}}} * {{Code|{{m|Pudełko|Nazwa przedmiotowej przestrzeni nazw 3|nazwa przestrzeni nazw{{=}}|nazwa jednostki{{=}}Dyskusja Wikibooks:Strona}}}} → {{Tt|{{#invoke:Pudełko|Nazwa przedmiotowej przestrzeni nazw 3|nazwa przestrzeni nazw=|nazwa jednostki=Dyskusja Wikibooks:Szablon}}}} * {{Code|{{m|Pudełko|Nazwa przedmiotowej przestrzeni nazw 3|nazwa przestrzeni nazw 2{{=}}|nazwa jednostki 2{{=}}Dyskusja Wikibooks:Strona|numer jednostki{{=}}2}}}} → {{Tt|{{#invoke:Pudełko|Nazwa przedmiotowej przestrzeni nazw 3|nazwa przestrzeni nazw 2=|nazwa jednostki 2=Dyskusja Wikibooks:Szablon|numer jednostki=2}}}} Powyżej dla przykładu podano parametry nie w rodzicu w szablonie, tylko w dziecku, jeśli chodzi o parametry nazw przestrzeni nazw, ale ich się za to nie powinno podawać w tych ramach, tylko w szablonach, w których wywoływane są te ramki pudełek {{Code|{{m|Pudełko}}}}, ale tak tutaj tak zrobiono by było najłatwiej sprawdzić działanie tego typu funkcji. Analogicznie możemy podawać parametry typu jednostki, np.: wywołaniu modułowym {{Code|{{m|Pudełko|Nazwa przedmiotowej przestrzeni nazw 3|typ jednostki 2{{=}}strona szablonu|numer jednostki{{=}}2}}}}, ale o tym więcej w rozdziałach {{Code|{{sr|# p["Przedmiotowy typ jednostki 3"](frame,i)|p=Pudełko}}}} w „{{sr|#Funkcje typu jednostki|p=Pudełko}}”, ale wtedy ta sama nazwa przestrzeni nazw reprezentowana przez {{Parametr|typ jednostki 2|strona szablonu}}, jest zamieniana na to samo, lepiej jest tutaj używać parametrów przestrzennych nazw niż typu jednostki, bo typ jednostki ma taką samą wartość dla przestrzeni przedmiotowej, co dyskusji. Tutaj parametr dyskusji typu jednostki bazowy i numerkowy ogólny, czy szczegółowy, nie gra roli, bo nawet, gdy wygenerujemy nazwę przestrzeni dyskusji za pomoca tego parametru, to i tak otrzymamy na samym końcu jego nazwę przedmiotową. Jeżeli typ jednostki bazowy wskazuje na przestrzeń nazw główną, wtedy się nie liczą parametry nazw jednostek, a na numerkowy, wtedy się liczy. Typ jednostki nie ma takiej samej wartości dla przestrzeni przedmiotowej, co dyskusji. Również parametry typu jednostki nie powinno się podawać w dziecku w ramce, tylko w rodzicu w szablonie jako parametry, w którym ta ramka jest wywoływana, ale tutaj podano jedynie dla przykładu, jak najłatwiej sprawdzić działanie tych parametrów tej funkcji. Najpierw w funkcji nagłówku brane są parametry nazw przestrzeni nazw, a jeżeli ich nie ma, to parametry typu jednostki, a jeżeli nie ma, to generowane są nazwy na podstawie aktualnego modułu. === {{Code|p["Nazwa przestrzeni nazw dyskusji 3"](frame,i)}} === Funkcja pisze nazwę przestrzeni nazw dyskusji jakikolwiek nazwy przestrzeni nazw (tzn. nazwę dyskusji nazwy przestrzenie nazw, czyli nie przedmiotowej, zamieniana jest na nią samą, czyli identyfikator przestrzeni się nie zmienia, a przedmiotową, nie dyskusji, przekształca się na dyskusji jej odpowiadającą, czyli w tym przypadku identyfikator przestrzeni zwiększa się o numer więcej), według, i nie zawsze tylko, podanej w zmiennej {{Code|nazwa przestrzeni nazw}} dla pozycja bazowej w podanych parametrach szablonu rodzicu ramki dziecka, lub dla innej pozycji należy parametr podawać w formie {{Code|nazwa przestrzeni nazw 1}}, {{Code|nazwa przestrzeni nazw 2}}, {{Code|nazwa przestrzeni nazw 3}},..., lub te parametry można podać w postaci ogólnej {{Code|nazwa przestrzeni nazw i}}. W tej funkcji trzeba też podawać parametry nazwy jednostek {{Code|nazwa jednostki}}, {{Code|nazwa jednostki 1}}, {{Code|nazwa jednostki 2}}, {{Code|nazwa jednostki 3}},... Parametry podaje się w parametrach rodzica wywołania tej funkcji {{Code|{{m|Pudełko|Nazwa przestrzeni nazw dyskusji 3}}}} (ale ich nie trzeba podawać w dziecku, ale można) i w parametrach dziecka, jeśli chodzi o zmienną {{Code|numer jednostki}}, czyli np.: {{Code|{{m|Pudełko|Nazwa przestrzeni nazw dyskusji 3|numer jednostki{{=}}<jakaś liczba całkowita dodatnia>}}}}. Te parametry przestrzenne zamiast w rodzicu w szablonie można podać w ramce dziecka, wtedy parametry dziecka mają pierwszeństwo. Przestrzeń nazw z parametrów nazw przestrzennych bazowych (bez numerka) może odpowiadać wartości przestrzeni głównej, to wtedy odpowiednia przestrzeń nazw z parametru nazwy jednostki się nie liczy w tej funkcji, aby się liczyła należy użyć funkcji {{Code|{{sr|#p["Nazwa przestrzeni nazw dyskusji 2"](frame,...)|p=Pudełko}}}}. W tym przypadku funkcja działa jak {{Code|{{sr|#p["Nazwa przestrzeni nazw dyskusji"](frame,...)|p=Pudełko}}}}. Przestrzeń nazw z parametrów nazw przestrzennych numerkowych może odpowiadać wartości przestrzeni głównej, to wtedy odpowiednia przestrzeń nazw z parametru nazwy jednostki się liczy w tej funkcji, wtedy jest liczona nazwa przestrzeni nazw z tego parametru. Gdy parametry przestrzenne lub typ jednostki w drugim podejściu nie wskazują na przestrzeń główną, to wtedy działanie tej funkcji jest podobne do {{Code|{{sr|#p["Nazwa przestrzeni nazw dyskusji 2"](frame,...)|p=Pudełko}}}}. Definicja skrótowa funkcji: <syntaxhighlight lang="lua"> p["Nazwa przestrzeni nazw dyskusji 3"]=function(frame,czy_uwzglednic_alternatywna_nazwe,i)...end; </syntaxhighlight> Wtedy ciało funkcji tej, czyli jego definicja w środku, jest: <syntaxhighlight lang="lua"> -- Jest liczony numer parametru nazwy przestrzeni nazw, domyslnie chodzi tu o numer bazowy parametrów przestrzennych; local numer_jednostki=i or frame.args["numer jednostki"]; local liczba_numeru_jednostki=((numer_jednostki)and(tonumber(numer_jednostki)) or 0); local pudelko_pomocne_modul=require("Module:Pudełko/Pomocne"); -- Liczy nazwę przestrzeni nazw dyskusji na podstawie podanych parametrów; return pudelko_pomocne_modul.Uzyskanie_nazw_jednostki(frame,2,liczba_numeru_jednostki,nil,1); </syntaxhighlight> Parametry funkcji: * {{Code|frame}} - tablica ramki tablicy transportu, * {{Code|czy_uwzglednic_alternatywna_nazwe}} - czy ma uwzględniać nazwę przestrzeni nazw domyślną szablonu, dostępne wartości: {{Code|false}}, w której nazwa domyślna nie jest uwzględniana wtedy, oraz {{Code|nil}} i {{Code|true}}, które oznaczają to samo, w tym jeżeli ona jest uwzględniana, wtedy jest brany parametr pierwszy dziecka, który musi istnieć przy takiej wartości tego parametru, tzn. {{Code|{{m|Pudełko|Nazwa przestrzeni nazw dyskusji 3|Szablon}}}}, nazwa domyślna zostatnie zamieniona na dyskusji, a jeśli jest już taka, to takiej transfomacji nie ma, a jeśli nazwa uzyskana nazwy przestrzeni nazw jest w takim przypadku błędna, to wzięty jest ten parametr, a jeżeli nazwa domyślna jest błędna, czyli {{Code|{{m|Pudełko|Nazwa przestrzeni nazw dyskusji 3|Moja przestrzeń}}}}, wtedy funkcja zwraca stan błędu {{Code|(błąd)}}. * {{Code|i}} - numer zmiennej nazwy przestrzeni nazw. Funkcja wykorzystuje {{Code|{{sr|#p.Uzyskanie_nazw_jednostki(frame,...)|p=Pudełko/Pomocne}}}} do wyznaczania ogólnego nazwy przestrzeni nazw dla pozycji bazowej i numerkowej, tzn. dla pozycji: jeden, dwa, trzy,..., itd, i ich ogólnej. Parametr ramki tablicy transportu rodzica szablonu: * {{Code|nazwa przestrzeni nazw}}, {{Code|nazwa przestrzeni nazw 1}}, {{Code|nazwa przestrzeni nazw 2}}, {{Code|nazwa przestrzeni nazw 3}},..., {{Code|nazwa przestrzeni nazw i}} - nazwy przestrzeni nazw dla pozycji bazowej oraz zwykłej i ogólnej numerkowej, * {{Code|nazwa jednostki}}, {{Code|nazwa jednostki 1}}, {{Code|nazwa jednostki 2}}, {{Code|nazwa jednostki 3}},... - nazwy jednostek dla pozycji bazowej i numerkowej, * {{Code|typ jednostki}}, {{Code|typ jednostki 1}}, {{Code|typ jednostki 2}}, {{Code|typ jednostki 3}},..., {{Code|typ jednostki i}} - typy jednostek, którym odpowiadają pewne przestrzenie przedmiotowe, dla pozycji bazowej, numerkowej i ogólnej. Parametry ramki tablicy transportu dziecka: * Parametry dziecka są takie same jak rodzica dla funkcji pudełkowej plus tu wymienione, * {{Code|numer jednostki}} - jak parametr {{Code|i}} nie został ustawiony, to wtedy liczy się ta zmienna. Przykłady: <syntaxhighlight lang="mediawiki"> {{Nazwa szablonu 1|nazwa przestrzeni nazw=Wikibooks|nazwa przestrzeni nazw=|nazwa przestrzeni nazw i=|nazwa jednostki=Szablon:Strona}} ---- {{Nazwa szablonu 2|nazwa przestrzeni nazw=Wikibooks|nazwa przestrzeni nazw 1=Szablon|nazwa przestrzeni nazw i=|nazwa jednostki 2=Wikibooks:Strona}} </syntaxhighlight> W pierwszym wywołaniu {{Code|nazwa przestrzeni nazw}} jest puste, ale dla tego bazowego (bez numerka) szukamy przestrzeni nazw, a więc ta nazwa jest ostateczna. ---- W drugim wywołaniu w dziecku powiedzmy jest wywołanie, i szukamy nazwy przestrzeni nazw o numerze dwa, która została podana, ale istnieje za to jej wersji ogólna {{Code|nazwa przestrzeni nazw i}} i domyślna {{Code|nazwa przestrzeni nazw}}, ale wtedy dla tego numerkowego liczy się to ogólne z {{Code| i}}, a ponieważ ta nazwa jest pusta, więc będziemy liczyli nazwę przestrzeni nazw z {{Code|nazwa jednostki 2}}. Odpowiadająca powyższemu kodowi, powiedzmy wikikod, według ich zawartości, przedstawia się: <syntaxhighlight lang="mediawiki"> {{#invoke:Pudełko|Nazwa przestrzeni nazw 3}} ---- {{#invoke:Pudełko|Nazwa przestrzeni nazw 3|numer jednostki=2}} </syntaxhighlight> Na podstawie powyższego przykładu otrzymamy wynik o schemacie, nie wyniku, bo tam nie ma zmiennej {{Code|nazwa przestrzeni nazw 1}}, ale jest {{Code|nazwa przestrzeni nazw i}}: <syntaxhighlight lang="mediawiki"> <!-- nazwa przestrzeni nazw=""; --> <!-- Czyli wynik: --> Dyskusja <!-- Widzimy, że wygenerowała się nazwa przestrzeni nazw, którą jest przestrzeń nazw niegłówna, jest ciągiem niepustym; --> ---- <!-- Ale nie "nazwa przestrzeni nazw 2", bo jej nie ma, ale za to istnieje "nazwa przestrzeni nazw i"; --> <!-- nazwa przestrzeni nazw 2=nazwa przestrzeni nazw i="", a nazwa jednostki 2="Wikibooks:Strona"; --> <!-- Czyli wynik: --> Dyskusja Wikibooks <!-- Widzimy, że wygenerowała się nazwa przestrzeni nazw, którą jest przestrzeń nieprogramowa, ale projektu, wychodząca z nazwy jednostek w tym przypadku z "nazwa jednostki 2"; --> </syntaxhighlight> Dla parametrów numerkowych nie jest brana w tym powyższym przykładzie zmienna {{Code|nazwa przestrzeni nazw 2}}, bo jej nie ma, ale za to jest {{Code|nazwa przestrzeni nazw i}}, bo ona występuje jako parametr domyślny ogólny dla parametrów numerkowych. Tytaj jest używana jest zmienna {{Code|nazwa jednostki 2}} do wygenerowania ostatecznego wyniku, bo jak można zauważyć, parametry przestrzenne wskazują na przestrzeń główną, a nazwy jednostek już nie. Dla parametrów bazowych mamy zmienną {{Code|nazwa przestrzeni nazw}}, ona jest pusta, więc to zostanie wziete do ostatecznego wyniku. Przykłady w wikikodzie: * {{Code|{{m|Pudełko|Nazwa przestrzeni nazw dyskusji 3|Szablon|nazwa przestrzeni nazw{{=}}Moja przestrzeń|nazwa jednostki{{=}}Wikibooks:Strona}}}} → {{Tt|{{#invoke:Pudełko|Nazwa przestrzeni nazw dyskusji 3|Szablon|nazwa przestrzeni nazw=Moja przestrzeń|nazwa jednostki=Wikibooks:Szablon}}}} * {{Code|{{m|Pudełko|Nazwa przestrzeni nazw dyskusji 3|Szablon|nazwa przestrzeni nazw 2{{=}}Moja przestrzeń|nazwa jednostki 2{{=}}Wikibooks:Strona|numer jednostki{{=}}2}}}} → {{Tt|{{#invoke:Pudełko|Nazwa przestrzeni nazw dyskusji 3|Szablon|nazwa przestrzeni nazw 2=Moja przestrzeń|nazwa jednostki 2=Wikibooks:Szablon|numer jednostki=2}}}} * {{Code|{{m|Pudełko|Nazwa przestrzeni nazw dyskusji 3|nazwa przestrzeni nazw{{=}}|nazwa jednostki{{=}}Wikibooks:Strona}}}} → {{Tt|{{#invoke:Pudełko|Nazwa przestrzeni nazw dyskusji 3|nazwa przestrzeni nazw=|nazwa jednostki=Wikibooks:Szablon}}}} * {{Code|{{m|Pudełko|Nazwa przestrzeni nazw dyskusji 3|nazwa przestrzeni nazw 2{{=}}|nazwa jednostki 2{{=}}Wikibooks:Strona|numer jednostki{{=}}2}}}} → {{Tt|{{#invoke:Pudełko|Nazwa przestrzeni nazw dyskusji 3|nazwa przestrzeni nazw 2=|nazwa jednostki 2=Wikibooks:Szablon|numer jednostki=2}}}} Powyżej dla przykładu podano parametry nie w rodzicu w szablonie, tylko w dziecku, jeśli chodzi o parametry nazw przestrzeni nazw i nazw jednostek, ale ich się za to nie powinno podawać w tych ramach, tylko w szablonach, w których wywoływane są te ramki pudełek {{Code|{{m|Pudełko}}}}, ale tak tutaj tak zrobiono by było najłatwiej sprawdzić działanie tego typu funkcji. Analogicznie możemy podawać parametry typu jednostki, np.: wywołaniu modułowym {{Code|{{m|Pudełko|Nazwa przestrzeni nazw dyskusji 3|typ jednostki 2{{=}}Podręcznik|nazwa jednostki 2{{=}}Szablon:Strona|numer jednostki{{=}}2}}}} (ale wtedy jest brana przestrzeń nazw z nazwy jednostki), ale o tym więcej w rozdziałach {{Code|{{sr|# p["Dyskusyjny typ jednostki 3"](frame,i)|p=Pudełko}}}} w „{{sr|#Funkcje typu jednostki|p=Pudełko}}”, one definiują przestrzenie dyskusji, ale można użyć parametru dyskusji typu jednostki z obojętnie jaką wartością niepustą, czy pustą, czy nawet jej nie podamy, wtedy wyświetli się nazwa przestrzeni nazw dyskusji. Jeżeli typ jednostki bazowy wskazuje na przestrzeń nazw główną, wtedy się nie liczą parametry nazw jednostek, a na numerkowy, wtedy się liczy. Typ jednostki nie ma takiej samej wartości dla przestrzeni przedmiotowej, co dyskusji. Również parametry typu jednostki nie powinno się podawać w dziecku w ramce, tylko w rodzicu w szablonie jako parametry, w którym ta ramka jest wywoływana, ale tutaj podano jedynie dla przykładu, jak najłatwiej sprawdzić działanie tych parametrów tej funkcji. Najpierw w funkcji nagłówku brane są parametry nazw przestrzeni nazw, a jeżeli ich nie ma, to parametry typu jednostki, a jeżeli nie ma lub parametry przestrzenne wskazują na przestrzeń główną, i nie ma nazwy jednostki, to generowane są nazwy tej funkcji na podstawie aktualnej strony. == Funkcje nazw jednostki trzeciej wersji == === {{Code|p["Nazwa jednostki 3"](frame,i)}} === === {{Code|p["Nazwa przedmiotowa jednostki 3"](frame,i)}} === === {{Code|p["Nazwa dyskusji jednostki 3"](frame,i)}} === == Funkcje typu jednostki == === {{Code|p["Typ jednostki"](frame,i)}} === === {{Code|p["Typ jednostki 2"](frame,i)}} === === {{Code|p["Typ jednostki 3"](frame,i)}} === === Funkcje typu jednostki przedmiotowe === ==== {{Code|p["Przedmiotowy typ jednostki"](frame,i)}} ==== ==== {{Code|p["Przedmiotowy typ jednostki 2"](frame,i)}} ==== ==== {{Code|p["Przedmiotowy typ jednostki 3"](frame,i)}} ==== === Fukcje typu jednostki dyskusji === ==== {{Code|p["Dyskusyjny typ jednostki"](frame,i)}} ==== ==== {{Code|p["Dyskusyjny typ jednostki 2"](frame,i)}} ==== ==== {{Code|p["Dyskusyjny typ jednostki 3"](frame,i)}} ==== == Funkcje chech pudełka == === {{Code|p["Cecha pudełka"](frame)}} === === {{Code|p["Przedmiotowa cecha pudełka"](frame)}} === === {{Code|p["Dyskusyjna cecha pudełka"](frame)}} === == Fukcje ogólnego pudełka == === {{Code|p["Ogólne pudełko"](frame)}} === == Funkcje ogólne == === {{Code|p["Tekst pudełka"](frame)}} === == Funkcje błędów pudełka == === {{Code|p["Błędy pudełka"](frame)}} === === {{Code|p["Przedmiotowe błędy pudełka"](frame)}} === === {{Code|p["Dyskusyjne błędy pudełka"](frame)}} === == Funkcje nazw stron == === {{Code|p["Nazwa strony głównej projektu"](frame,i)}} === === {{Code|p["Nazwa strony głównej dla dzieci projektu"](frame,i)}} === == Funkcje kodów == === {{Code|p["Kod języka"](frame,i)}} === === {{Code|p["Kod projektu"](frame,i)}} === === {{Code|p["Klucz projektu"](frame,i)}} === == Funkcje wiki == === {{Code|p["Inny niż język bieżący wiki"](frame)}} === === {{Code|p["Inne niż lokalne wiki"](frame)}} === === {{Code|p["Inne niż bieżące wiki"](frame)}} === == Funkcje typów parametrów, czy podane je == === {{Code|p["Podano parametry nienazwane"](frame)}} === === {{Code|p["Podano parametry numerowane"](frame)}} === === {{Code|p["Podano parametry nazwane"](frame)}} === == Funkcje kodów tego projektu == === {{Code|p["Kod projektu tego projektu"](frame)}} === === {{Code|p["Kod języka tego projektu"](frame)}} === === {{Code|p["Klucz projektu tego projektu"](frame)}} === == Funkcje stron == === {{Code|p["Strona główna tego projektu"](frame)}} === === {{Code|p["Strona główna dla dzieci tego projektu"](frame)}} === == Funkcje nazw stron drugiej wersji == === {{Code|p["Nazwa strony głównej dla dzieci projektu 2"](frame)}} === === {{Code| p["Nazwa strony głównej projektu 2"](frame)}} === {{BrClear}} <noinclude><!-- -->{{ProstaStronaKoniec}}<!-- -->{{Kategoria|Opisy funkcji, w Lua w Scribunto, w modułach}}<!-- --></noinclude> qrhsw1e9s4dq474n3rmaqlx7drkunm5 540465 540464 2026-04-24T06:48:48Z Persino 2851 /* Funkcje nazw przestrzeni nazw trzeciej wersji */ 540465 wikitext text/x-wiki <noinclude>{{ProstaStronaStart | nagłówek = {{Podrozdział|{{ld2|Pudełko}}|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 pudelko_modul=require("Module:Pudełko"); </syntaxhighlight> dzięki, któremu można wypisywać funkcje należącego do niego. Posługuje się na parametrach pudełkowych {{Parametr|nazwa przestrzeni nazw}} (czy też bez numerka {{Parametr|nazwa przestrzeni nazw i}} dla tego numerowanego) lub te z numerkiem po jednej spacji w nich (ale nie dla tego z końcówką {{Code| i}}) mogą zostać użyte jako parametry szablonu. Moduł {{Code|{{ld2|Pudełko}}}} przedstawia funkcje nazw w oparciu o funkcje nazw {{Code|{{ld2|Nazwy}}}}, generuje on nazwy za pomocą parametrów pudełkowych podanych poniżej. Parametr {{Parametr|nazwa jednostki}} (lub parametr {{Parametr|cel}} dla numerka tego pierwszego, tego alternatywnego), lub te z numerkiem po jednej spacji w nazwie parametru, albo numerowane numerkami {{Code|1}}, {{Code|2}},..., mogą zostać użyte jako parametry szablonu. Parametry określające rodzaj jednostki {{Parametr|typ jednostki}} z {{Parametr|dyskusja typu jednostki}}, itp. w wersjach z numerkiem po jednej spacji w nich mogą zostać użyte jako parametry szablonu. A te tymi numerowanymi liczbami naturalnymi {{Tt|nazwy jednostki}} od jedynki wzwyż poprzez szablon, w którym są one użyte, one też mogą być użyte z dwukropkiem, te numerowane, na samym początku nazwy, wtedy one są traktowane jako pełne nazwy strony, i wtedy one nie zostaną z interpretowane, że do nich trzeba użyć parametr odpowiedni z nazwą przetrzeni nazw z tego numerowanego, czy ogólny, aby utworzyć znów inną pełną nazwę strony dla tego numerka. Zestawienie: * {{Code|nazwa przestrzeni nazw}} i {{Code|nazwa przestrzeni nazw i}} (ogólna nazwa przestrzeni nazw dla wszystkich numerków, i tych numerowanych jednostek) - i to pierwsze z numerkiem, tzn. {{Code|nazwa przestrzeni nazw 1}}, {{Code|nazwa przestrzeni nazw 2}}, ..., * {{Code|nazwa jednostki}} - i te z numerkiem: {{Code|nazwa jednostki 1}}, {{Code|nazwa jednostki 2}}, ..., lub gdy jest zamiast tego parametrem numerowany, {{Code|1}}, {{Code|2}},..., który dla tego pierwszego może być uznany jako: {{Code|cel}} {{=}} {{Code|1}}, * {{Code|typ jednostki}} (parametr bazowy) i {{Code|typ jednostki i}} (parametr domyślny numerkowy) - i te z numerkiem: {{Code|typ jednostki 1}}, {{Code|typ jednostki 2}}, ..., tzn. gdy chcemy określić z jakim typem jednostki mamy do czynienia w zależności do jakiej przestrzeni nazw należy, a w danej, czy jest on np. programowy, czy tylko jest opisem, jak to bywa w szablonach {{Np|Template|link=tak}}, podobnie jest w przypadku {{Np|Module|link=tak}}, czy jak jest w innych przestrzeniach nazw, ** {{Code|dyskusja typu jednostki}} (parametr bazowy) i {{Code|dyskusja typu jednostki i}} (parametr domyślny numerkowy) - i te z numerkiem: {{Code|dyskusja typu jednostki 1}}, {{Code|dyskusja typu jednostki 2}}, ..., gdy chcemy określić wartością niepustą,że chodzi tutaj o typ jednostki. == {{Code|p.CzyNiepoprawnaNazwa(nazwa_jednostki)}} == Funkcja sprawdzajaca, czy jest poprawnie podana nazwa jednostki, czy ma poprawną nazwę. Znakami tymi, z których nie powinna składać się nazwa jest {{Code|<nowiki>{}<>|[]#\n</nowiki>}} i dodatkowo znak {{Code|&#127;}} (kod {{Code|{{Nowiki|&#127;}}}}). Też nie może składać się z trzech znaków tyldy, tzn. {{Code|<nowiki>~~~</nowiki>}}. Również w swojej budowie nie może składać się ze kodów {{Strong|HTML}} literowych o wzorze {{Code|{{Nowiki|&(%a+);}}}}. Natomiast może składać się z {{Code|{{Nowiki|&#(%d+);}}}} i {{Code|{{Nowiki|&#x(%x+);}}}}, ale w pierw te kody muszą być zamienione na normalne znaki. Skrótowa definicja funkcji: <syntaxhighlight lang="lua"> function p.CzyNiepoprawnaNazwa(nazwa_jednostki)...end; </syntaxhighlight> Wtedy ciało funkcji tej, czyli jego definicja w środku, jest: <syntaxhighlight lang="lua"> -- Moduł: "Moduł:Html/dane", służy do ładowania znaku o kodzie HTML "&#127;"; local html_dane_modul=mw.loadData("Module:Html/dane"); return mw.ustring.match(nazwa_jednostki,"[{}<>|%[%]#\n"..html_dane_modul.znak_127.."]+") or mw.ustring.match(nazwa_jednostki,"~~~") or mw.ustring.match(nazwa_jednostki,"&(%a+);"); </syntaxhighlight> Parametry: * {{Code|nazwa_jednostki}} - nazwa jednostki do sprawdzenia. Przykłady: <syntaxhighlight lang="lua"> local pudelko_modul=require("Module:Pudełko"); -- Podana przykładowa niepoprawna nazwa jedostki local nazwa_jednostki="Nazwa pliku [[Nazwa linku w pliku]]"; -- Fukcja zwróci wartość: local czy_poprawna_nazwa=true; local czy_poprawna_nazwa=pudelko_modul.CzyNiepoprawnaNazwa(nazwa_jednostki); </syntaxhighlight> == Funkcje nazw przestrzeni nazw == === {{Code|p["Nazwa przestrzeni nazw"](frame,...)}} === Funkcja pisze nazwę przestrzeni nazw, niezależnie, czy to jest przedmiotowa, czy dyskusji, według podanej w zmiennej {{Code|nazwa przestrzeni nazw}} dla pozycja bazowej w podanych parametrach szablonu rodzicu ramki dziecka, lub dla innej pozycji należy parametr podawać w formie {{Code|nazwa przestrzeni nazw 1}}, {{Code|nazwa przestrzeni nazw 2}}, {{Code|nazwa przestrzeni nazw 3}},..., lub te parametry można podać w postaci ogólnej {{Code|nazwa przestrzeni nazw i}}. Parametry podaje się w parametrach rodzica wywołania tej funkcji {{Code|{{m|Pudełko|Nazwa przestrzeni nazw}}}} (ale ich nie trzeba podawać w dziecku, ale można) i w parametrach dziecka, jeśli chodzi o zmienną {{Code|numer jednostki}}, czyli np.: {{Code|{{m|Pudełko|Nazwa przestrzeni nazw|numer jednostki{{=}}<jakaś liczba całkowita dodatnia>}}}}. Te parametry przestrzenne zamiast w rodzicu w szablonie można podać w ramce dziecka, wtedy parametry dziecka mają pierwszeństwo. Przestrzeń nazw z parametrów nazw przestrzennych może odpowiadać wartości przestrzeni głównej, to wtedy odpowiednia przestrzeń nazw z parametru nazwy jednostki się nie liczy w tej funkcji, aby się liczyła należy użyć funkcji {{Code|{{sr|#p["Nazwa przestrzeni nazw 2"](frame,...)|p=Pudełko}}}}. Definicja skrótowa funkcji: <syntaxhighlight lang="lua"> p["Nazwa przestrzeni nazw"]=function(frame,czy_uwzglednic_alternatywna_nazwe,i)...end; </syntaxhighlight> Wtedy ciało funkcji tej, czyli jego definicja w środku, jest: <syntaxhighlight lang="lua"> -- Jest liczony numer parametru nazwy przestrzeni nazw, domyslnie chodzi tu o numer bazowy parametrów przestrzennych; local numer_jednostki=i or frame.args["numer jednostki"]; local liczba_numer_jednostki=((numer_jednostki)and(tonumber(numer_jednostki))or 0); local pudelko_pomocne_modul=require("Module:Pudełko/Pomocne"); -- Liczy nazwę przestrzeni nazw na podstawie podanych parametrów; return pudelko_pomocne_modul.Nazwa_przestrzeni_nazw(frame,0, czy_uwzglednic_alternatywna_nazwe,liczba_numer_jednostki); </syntaxhighlight> Parametry funkcji: * {{Code|frame}} - tablica ramki tablicy transportu, * {{Code|czy_uwzglednic_alternatywna_nazwe}} - czy ma uwzględniać nazwę przestrzeni nazw domyślną szablonu, dostępne wartości: {{Code|false}}, w której nazwa domyślna nie jest uwzględniana wtedy, oraz {{Code|nil}} i {{Code|true}}, które oznaczają to samo, w tym jeżeli ona jest uwzględniana, wtedy jest brany parametr pierwszy dziecka, który musi istnieć przy takiej wartości tego parametru, tzn. {{Code|{{m|Pudełko|Nazwa przestrzeni nazw|Szablon}}}}, a ten element jest używany, gdy nazwa uzyskana nazwy przestrzeni nazw jest w takim przypadku błędna, a jeżeli wtedy nazwa domyślna jest błędna, czyli {{Code|{{m|Pudełko|Nazwa przestrzeni nazw|Moja przestrzeń}}}}, wtedy funkcja zwraca stan błędu {{Code|(błąd)}}. * {{Code|i}} - numer zmiennej nazwy przestrzeni nazw. Funkcja wykorzystuje {{Code|{{sr|#p.Nazwa_przestrzeni_nazw(frame,...)|p=Pudełko/Pomocne}}}} do wyznaczania ogólnego nazwy przestrzeni nazw dla pozycji bazowej i numerkowej, tzn. dla pozycji: jeden, dwa, trzy,..., itd, i ich ogólnej. Parametr ramki tablicy transportu rodzica szablonu: * {{Code|nazwa przestrzeni nazw}}, {{Code|nazwa przestrzeni nazw 1}}, {{Code|nazwa przestrzeni nazw 2}}, {{Code|nazwa przestrzeni nazw 3}},..., {{Code|nazwa przestrzeni nazw i}} - nazwy przestrzeni nazw dla pozycji bazowej oraz zwykłej i ogólnej numerkowej, * {{Code|typ jednostki}}, {{Code|typ jednostki 1}}, {{Code|typ jednostki 2}}, {{Code|typ jednostki 3}},..., {{Code|typ jednostki i}} - typy jednostek, którym odpowiadają pewne przestrzenie przedmiotowe, dla pozycji bazowej, numerkowej i ogólnej, ** {{Code|dyskusja typu jednostki}}, {{Code|dyskusja typu jednostki 1}}, {{Code|dyskusja typ jednostki 2}}, {{Code|dyskusja typ jednostki 3}},..., {{Code|dyskusja typ jednostki i}} - czy dany typ jednostki ma przedstawiać, jeśli niepusta, przestrzeń dyskusji dla pozycji bazowej, numerkowej i ogólnej. Parametry ramki tablicy transportu dziecka: * Parametry dziecka są takie same jak rodzica dla funkcji pudełkowej plus tu wymienione, * {{Code|numer jednostki}} - jak parametr {{Code|i}} nie został ustawiony, to wtedy liczy się ta zmienna. Przykłady: <syntaxhighlight lang="mediawiki"> {{Nazwa szablonu|nazwa przestrzeni nazw=Wikibooks|nazwa przestrzeni nazw 2=Szablon|nazwa przestrzeni nazw i=Moduł}} </syntaxhighlight> W dziecku powiedzmy jest wywołanie, i szukamy nazwy przestrzeni nazw o numerze dwa, która nie została podana, ale istnieje za to jej wersji ogólna {{Code|nazwa przestrzeni nazw i}} i domyślna {{Code|nazwa przestrzeni nazw}}: <syntaxhighlight lang="mediawiki"> {{#invoke:Pudełko|Nazwa przestrzeni nazw|numer jednostki=1}} </syntaxhighlight> Na podstawie powyższego przykładu otrzymamy wynik o schemacie, nie wyniku, bo tam nie ma zmiennej {{Code|nazwa przestrzeni nazw 1}}, ale jest {{Code|nazwa przestrzeni nazw i}}: <syntaxhighlight lang="mediawiki"> <!-- Ale nie "nazwa przestrzeni nazw", bo jej nie ma, ale za to istnieje "nazwa przestrzeni nazw i"; --> <!-- nazwa przestrzeni nazw 2=nazwa przestrzeni nazw i=Moduł; --> <!-- Czyli wynik: --> Moduł <!-- Widzimy, że wygenerowała się nazwa przestrzeni nazw, którą jest przestrzeń programowa, którą również jest "Szablon"; --> </syntaxhighlight> Nie jest brana w tym powyższym przykładzie zmienna {{Code|nazwa przestrzeni nazw}}, bo jej nie ma, ale za to jest {{Code|nazwa przestrzeni nazw i}}, bo ona występuje jako parametr domyślny ogólny dla parametrów numerkowych. Przykłady w wikikodzie: * {{Code|{{m|Pudełko|Nazwa przestrzeni nazw|numer jednostki{{=}}2}}}} → {{Tt|{{#invoke:Pudełko|Nazwa przestrzeni nazw|numer jednostki=2}}}} * {{Code|{{m|Pudełko|Nazwa przestrzeni nazw|Szablon|nazwa przestrzeni nazw i{{=}}Moja przestrzeń|numer jednostki{{=}}2}}}} → {{Tt|{{#invoke:Pudełko|Nazwa przestrzeni nazw|Szablon|nazwa przestrzeni nazw i=Moja przestrzeń|numer jednostki=2}}}} * {{Code|{{m|Pudełko|Nazwa przestrzeni nazw|nazwa przestrzeni nazw 2{{=}}Szablon|numer jednostki{{=}}2}}}} → {{Tt|{{#invoke:Pudełko|Nazwa przestrzeni nazw|nazwa przestrzeni nazw 2=Szablon|numer jednostki=2}}}} * {{Code|{{m|Pudełko|Nazwa przestrzeni nazw|nazwa przestrzeni nazw 2{{=}}Szablon|numer jednostki{{=}}2}}}} → {{Tt|{{#invoke:Pudełko|Nazwa przestrzeni nazw|nazwa przestrzeni nazw i=Szablon|numer jednostki=2}}}} * {{Code|{{m|Pudełko|Nazwa przestrzeni nazw|nazwa przestrzeni nazw{{=}}Szablon|numer jednostki{{=}}2}}}} → {{Tt|{{#invoke:Pudełko|Nazwa przestrzeni nazw|nazwa przestrzeni nazw=Szablon|numer jednostki=2}}}} Powyżej dla przykładu podano parametry nie w rodzicu w szablonie, tylko w dziecku, jeśli chodzi o parametry nazw przestrzeni nazw, ale ich się za to nie powinno podawać w tych ramach, tylko w szablonach, w których wywoływane są te ramki pudełek {{Code|{{m|Pudełko}}}}, ale tak tutaj tak zrobiono by było najłatwiej sprawdzić działanie tego typu funkcji. Analogicznie możemy podawać parametry typu jednostki, np.: wywołaniu modułowym {{Code|{{m|Pudełko|Nazwa przestrzeni nazw|typ jednostki 2{{=}}strona szablonu|numer jednostki{{=}}2}}}}, ale o tym więcej w rozdziałach {{Code|{{sr|# p["Typ jednostki"](frame,i)|p=Pudełko}}}} w „{{sr|#Funkcje typu jednostki|p=Pudełko}}”, on definiuje przestrzenie przedmiotowe, ale można użyć parametru dyskusji typu jednostki z wartością niepustą, wtedy wyświetli się nazwa przestrzeni nazw dyskusji. Typ jednostki nie ma takiej samej wartości dla przestrzeni przedmiotowej, co dyskusji. Również parametry typu jednostki nie powinno się podawać w dziecku w ramce, tylko w rodzicu w szablonie jako parametry, w którym ta ramka jest wywoływana, ale tutaj podano jedynie dla przykładu, jak najłatwiej sprawdzić działanie tych parametrów tej funkcji. Najpierw w funkcji nagłówku brane są parametry nazw przestrzeni nazw, a jeżeli ich nie ma, to parametry typu jednostki, a jeżeli nie ma, to generowane są nazwy na podstawie aktualnego modułu. === {{Code|p["Nazwa przedmiotowej przestrzeni nazw"](frame,...)}} === Funkcja pisze przedmiotową nazwę przestrzeni nazw jakikolwiek nazwy przestrzeni nazw (tzn. nazwę przedmiotową nazwy przestrzenie nazw, czyli nie dyskusji, zamieniana jest na nią samą, czyli identyfikator przestrzeni się nie zmienia, a dyskusji, nie przedmiotową, przekształca się na przedmiotową jej odpowiadającą, czyli w tym przypadku identyfikator przestrzeni zmniejsza się o numer mniej), według podanej w zmiennej {{Code|nazwa przestrzeni nazw}} dla pozycja bazowej w podanych parametrach szablonu rodzicu ramki dziecka, lub dla innej pozycji należy parametr podawać w formie {{Code|nazwa przestrzeni nazw 1}}, {{Code|nazwa przestrzeni nazw 2}}, {{Code|nazwa przestrzeni nazw 3}},..., lub te parametry można podać w postaci ogólnej {{Code|nazwa przestrzeni nazw i}}. Parametry podaje się w parametrach rodzica wywołania tej funkcji {{Code|{{m|Pudełko|Nazwa przedmiotowej przestrzeni nazw}}}} (ale ich nie trzeba podawać w dziecku, ale można) i w parametrach dziecka, jeśli chodzi o zmienną {{Code|numer jednostki}}, czyli np.: {{Code|{{m|Pudełko|Nazwa przedmiotowej przestrzeni nazw|numer jednostki{{=}}<jakaś liczba całkowita dodatnia>}}}}. Te parametry przestrzenne zamiast w rodzicu w szablonie można podać w ramce dziecka, wtedy parametry dziecka mają pierwszeństwo. Parametry przestrzenne mogą mogą być podane w postaci przestrzeni przedmiotowej lub dyskusji, ale ta funkcja zawsze ją zamienia na przedmiotową. Przestrzeń nazw z parametrów nazw przestrzennych może odpowiadać wartości przestrzeni głównej, to wtedy odpowiednia przestrzeń nazw z parametru nazwy jednostki się nie liczy w tej funkcji, aby się liczyła należy użyć funkcji {{Code|{{sr|#p["Nazwa przedmiotowej przestrzeni nazw 2"](frame,...)|p=Pudełko}}}}. Definicja skrótowa funkcji: <syntaxhighlight lang="lua"> p["Nazwa przedmiotowej przestrzeni nazw"]=function(frame,czy_uwzglednic_alternatywna_nazwe,i)...end; </syntaxhighlight> Wtedy ciało funkcji tej, czyli jego definicja w środku, jest: <syntaxhighlight lang="lua"> -- Jest liczony numer parametru nazwy przestrzeni nazw, domyslnie chodzi tu o numer bazowy parametrów przestrzennych; local numer_jednostki=i or frame.args["numer jednostki"]; local liczba_numer_jednostki=((numer_jednostki)and(tonumber(numer_jednostki))or 0); local pudelko_pomocne_modul=require("Module:Pudełko/Pomocne"); -- Liczy nazwę przestrzeni nazw przedmiotową na podstawie podanych parametrów; return pudelko_pomocne_modul.Nazwa_przestrzeni_nazw(frame,1, czy_uwzglednic_alternatywna_nazwe,liczba_numer_jednostki); </syntaxhighlight> Parametry funkcji: * {{Code|frame}} - tablica ramki tablicy transportu, * {{Code|czy_uwzglednic_alternatywna_nazwe}} - czy ma uwzględniać nazwę przestrzeni nazw domyślną szablonu, dostępne wartości: {{Code|false}}, w której nazwa domyślna nie jest uwzględniana wtedy, oraz {{Code|nil}} i {{Code|true}}, które oznaczają to samo, w tym jeżeli ona jest uwzględniana, wtedy jest brany parametr pierwszy dziecka, który musi istnieć przy takiej wartości tego parametru, tzn. {{Code|{{m|Pudełko|Nazwa przedmiotowej przestrzeni nazw|Dyskusja szablonu}}}} - ta nazwa domyślna zostanie zamieniona na przedmiotową, a jak ona by była przedmiotowa, to żadnej zamiany, by nie było, a jeśli nazwa uzyskana z nazwy przestrzeni nazw z parametrów przestrzennych jest w takim przypadku błędna, to w takim razie brany jest ten parametr, a jeżeli ta nazwa domyślna jest błędna, czyli {{Code|{{m|Pudełko|Nazwa przedmiotowej przestrzeni nazw|Moja przestrzeń}}}}, wtedy funkcja zwraca stan błędu {{Code|(błąd)}}. * {{Code|i}} - numer zmiennej nazwy przestrzeni nazw. Funkcja wykorzystuje {{Code|{{sr|#p.Nazwa_przestrzeni_nazw(frame,...)|p=Pudełko/Pomocne}}}} do wyznaczania ogólnego nazwy przestrzeni nazw dla pozycji bazowej i numerkowej, tzn. dla pozycji: jeden, dwa, trzy,..., itd, i ich ogólnej. Parametr ramki tablicy transportu rodzica szablonu: * {{Code|nazwa przestrzeni nazw}}, {{Code|nazwa przestrzeni nazw 1}}, {{Code|nazwa przestrzeni nazw 2}}, {{Code|nazwa przestrzeni nazw 3}},..., {{Code|nazwa przestrzeni nazw i}} - nazwy przestrzeni nazw dla pozycji bazowej oraz zwykłej i ogólnej numerkowej, * {{Code|typ jednostki}}, {{Code|typ jednostki 1}}, {{Code|typ jednostki 2}}, {{Code|typ jednostki 3}},..., {{Code|typ jednostki i}} - typy jednostek, którym odpowiadają pewne przestrzenie przedmiotowe, dla pozycji bazowej, numerkowej i ogólnej. Parametry ramki tablicy transportu dziecka: * Parametry dziecka są takie same jak rodzica dla funkcji pudełkowej plus tu wymienione, * {{Code|numer jednostki}} - jak parametr {{Code|i}} nie został ustawiony, to wtedy liczy się ta zmienna. Przykłady: <syntaxhighlight lang="mediawiki"> {{Nazwa szablonu|nazwa przestrzeni nazw=Dyskusja Wikibooks|nazwa przestrzeni nazw 2=Dyskusja szablonu|nazwa przestrzeni nazw i=Dyskusja modułu}} </syntaxhighlight> W dziecku powiedzmy jest wywołanie, i szukamy nazwy przestrzeni nazw o numerze dwa, która nie została podana, ale istnieje za to jej wersji ogólna {{Code|nazwa przestrzeni nazw i}} i domyślna {{Code|nazwa przestrzeni nazw}}: <syntaxhighlight lang="mediawiki"> {{#invoke:Pudełko|Nazwa przedmiotowej przestrzeni nazw|numer jednostki=1}} </syntaxhighlight> Na podstawie powyższego przykładu otrzymamy wynik o schemacie, nie wyniku, bo tam nie ma zmiennej {{Code|nazwa przestrzeni nazw 1}}, ale jest {{Code|nazwa przestrzeni nazw i}}: <syntaxhighlight lang="mediawiki"> <!-- Ale nie "nazwa przestrzeni nazw", bo jej nie ma, ale za to istnieje "nazwa przestrzeni nazw i"; --> <!-- nazwa przestrzeni nazw 2=nazwa przestrzeni nazw i=Dyskusja modułu; --> <!-- Czyli wynik: --> Moduł <!-- Widzimy, że wygenerowała się nazwa przestrzeni nazw, którą jest przestrzeń przedmiotowa programowa przestrzeni dyskusji "Dyskusja modułu", którą również jest "Szablon" jego przestrzeni dyskusji "Dyskusja szablonu", a dla ich przestrzeni przedmiotowej, zamiast dyskusji, to samo przekształca się na to samo; --> </syntaxhighlight> Nie jest brana w tym powyższym przykładzie zmienna {{Code|nazwa przestrzeni nazw}}, bo jej nie ma, ale za to jest {{Code|nazwa przestrzeni nazw i}}, bo ona występuje jako parametr domyślny ogólny dla parametrów numerkowych. Przykłady w wikikodzie: * {{Code|{{m|Pudełko|Nazwa przedmiotowej przestrzeni nazw|numer jednostki{{=}}2}}}} → {{Tt|{{#invoke:Pudełko|Nazwa przedmiotowej przestrzeni nazw|numer jednostki=2}}}} * {{Code|{{m|Pudełko|Nazwa przedmiotowej przestrzeni nazw|Dyskusja szablonu|nazwa przestrzeni nazw i{{=}}Moja przestrzeń|numer jednostki{{=}}2}}}} → {{Tt|{{#invoke:Pudełko|Nazwa przedmiotowej przestrzeni nazw|Dyskusja szablonu|nazwa przestrzeni nazw i=Moja przestrzeń|numer jednostki=2}}}} * {{Code|{{m|Pudełko|Nazwa przedmiotowej przestrzeni nazw|nazwa przestrzeni nazw 2{{=}}Dyskusja szablonu|numer jednostki{{=}}2}}}} → {{Tt|{{#invoke:Pudełko|Nazwa przedmiotowej przestrzeni nazw|nazwa przestrzeni nazw 2=Dyskusja szablonu|numer jednostki=2}}}} * {{Code|{{m|Pudełko|Nazwa przedmiotowej przestrzeni nazw|nazwa przestrzeni nazw 2{{=}}Dyskusja szablonu|numer jednostki{{=}}2}}}} → {{Tt|{{#invoke:Pudełko|Nazwa przedmiotowej przestrzeni nazw|nazwa przestrzeni nazw i=Dyskusja szablonu|numer jednostki=2}}}} * {{Code|{{m|Pudełko|Nazwa przedmiotowej przestrzeni nazw|nazwa przestrzeni nazw{{=}}Dyskusja szablonu|numer jednostki{{=}}2}}}} → {{Tt|{{#invoke:Pudełko|Nazwa przedmiotowej przestrzeni nazw|nazwa przestrzeni nazw=Dyskusja szablonu|numer jednostki=2}}}} Powyżej dla przykładu podano parametry nie w rodzicu w szablonie, tylko w dziecku, jeśli chodzi o parametry nazw przestrzeni nazw, ale ich się za to nie powinno podawać w tych ramach, tylko w szablonach, w których wywoływane są te ramki pudełek {{Code|{{m|Pudełko}}}}, ale tak tutaj tak zrobiono by było najłatwiej sprawdzić działanie tego typu funkcji. Analogicznie możemy podawać parametry typu jednostki, np.: wywołaniu modułowym {{Code|{{m|Pudełko|Nazwa przedmiotowej przestrzeni nazw|typ jednostki 2{{=}}strona szablonu|numer jednostki{{=}}2}}}}, ale o tym więcej w rozdziałach {{Code|{{sr|#p["Przedmiotowy typ jednostki"](frame,i)|p=Pudełko}}}} w „{{sr|#Funkcje typu jednostki|p=Pudełko}}”, ale wtedy ta sama nazwa przestrzeni nazw reprezentowana przez {{Parametr|typ jednostki 2|strona szablonu}}, jest zamieniana na to samo, lepiej jest tutaj używać parametrów przestrzennych nazw niż typu jednostki. Typ jednostki nie ma takiej samej wartości dla przestrzeni przedmiotowej, co dyskusji. Tutaj parametr dyskusji typu jednostki bazowy i numerkowy ogólny, czy szczegółowy, nie gra roli, bo nawet, gdy wygenerujemy nazwę przestrzeni dyskusji za pomoca tego parametru, to i tak otrzymamy na samym końcu jego nazwę przedmiotową. Również parametry typu jednostki nie powinno się podawać w dziecku w ramce, tylko w rodzicu w szablonie jako parametry, w którym ta ramka jest wywoływana, ale tutaj podano jedynie dla przykładu, jak najłatwiej sprawdzić działanie tych parametrów tej funkcji. Najpierw w funkcji nagłówku brane są parametry nazw przestrzeni nazw, a jeżeli ich nie ma, to parametry typu jednostki, a jeżeli nie ma, to generowane są nazwy na podstawie aktualnego modułu. === {{Code|p["Nazwa przestrzeni nazw dyskusji"](frame,...)}} === Funkcja pisze nazwę przestrzeni nazw dyskusji jakikolwiek nazwy przestrzeni nazw (tzn. nazwę przedmiotową nazwy przestrzenie nazw, czyli nie dyskusji, zamieniana jest na dyskusji, czyli identyfikator przestrzeni się zmienia jeden wyżej, a dyskusji, nie przedmiotową, przekształca się na tą samą), według podanej w zmiennej {{Code|nazwa przestrzeni nazw}} dla pozycja bazowej w podanych parametrach szablonu rodzicu ramki dziecka, lub dla innej pozycji należy parametr podawać w formie {{Code|nazwa przestrzeni nazw 1}}, {{Code|nazwa przestrzeni nazw 2}}, {{Code|nazwa przestrzeni nazw 3}},..., lub te parametry można podać w postaci ogólnej {{Code|nazwa przestrzeni nazw i}}. Parametry podaje się w parametrach rodzica wywołania tej funkcji {{Code|{{m|Pudełko|Nazwa przestrzeni nazw dyskusji}}}} (ale ich nie trzeba podawać w dziecku, ale można) i w parametrach dziecka, jeśli chodzi o zmienną {{Code|numer jednostki}}, czyli np.: {{Code|{{m|Pudełko|Nazwa przestrzeni nazw dyskusji|numer jednostki{{=}}<jakaś liczba całkowita dodatnia>}}}}. Te parametry przestrzenne zamiast w rodzicu w szablonie można podać w ramce dziecka, wtedy parametry dziecka mają pierwszeństwo. Parametry przestrzenne mogą mogą być podane w postaci przestrzeni przedmiotowej lub dyskusji, ale ta funkcja zawsze ją zamienia na dyskusji. Przestrzeń nazw z parametrów nazw przestrzennych może odpowiadać wartości przestrzeni głównej, to wtedy odpowiednia przestrzeń nazw z parametru nazwy jednostki się nie liczy w tej funkcji, aby się liczyła należy użyć funkcji {{Code|{{sr|#p["Nazwa przestrzeni nazw dyskusji 2"](frame,...)|p=Pudełko}}}}. Definicja skrótowa funkcji: <syntaxhighlight lang="lua"> p["Nazwa przestrzeni nazw dyskusji"]=function(frame,czy_uwzglednic_alternatywna_nazwe,i)...end; </syntaxhighlight> Wtedy ciało funkcji tej, czyli jego definicja w środku, jest: <syntaxhighlight lang="lua"> -- Jest liczony numer parametru nazwy przestrzeni nazw, domyslnie chodzi tu o numer bazowy parametrów przestrzennych; local numer_jednostki=i or frame.args["numer jednostki"]; local liczba_numer_jednostki=((numer_jednostki)and(tonumber(numer_jednostki))or 0); local pudelko_pomocne_modul=require("Module:Pudełko/Pomocne"); -- Liczy nazwę przestrzeni nazw dyskusji na podstawie podanych parametrów; return pudelko_pomocne_modul.Nazwa_przestrzeni_nazw(frame,2, czy_uwzglednic_alternatywna_nazwe,liczba_numer_jednostki); </syntaxhighlight> Parametry funkcji: * {{Code|frame}} - tablica ramki tablicy transportu, * {{Code|czy_uwzglednic_alternatywna_nazwe}} - czy ma uwzględniać nazwę przestrzeni nazw domyślną szablonu, dostępne wartości: {{Code|false}}, w której nazwa domyślna nie jest uwzględniana wtedy, oraz {{Code|nil}} i {{Code|true}}, które oznaczają to samo, w tym jeżeli ona jest uwzględniana, wtedy jest brany parametr pierwszy dziecka, który musi istnieć przy takiej wartości tego parametru, tzn. {{Code|{{m|Pudełko|Nazwa przestrzeni nazw dyskusji|Szablon}}}} - ta nazwa domyślna zostanie przekształcona na dyskusji, a jeżeli ona by była dyskusji, to nie byłoby żadnego przekształcenia, a jeśli nazwa uzyskana nazwy przestrzeni nazw z parametrów przestrzennych jest w takim przypadku błędna, to w takim razie brany jest ten parametr, a jeżeli nazwa domyślna jest błędna, czyli {{Code|{{m|Pudełko|Nazwa przestrzeni nazw dyskusji|Moja przestrzeń}}}}, wtedy funkcja zwraca stan błędu {{Code|(błąd)}}. * {{Code|i}} - numer zmiennej nazwy przestrzeni nazw. Funkcja wykorzystuje {{Code|{{sr|#p.Nazwa_przestrzeni_nazw(frame,...)|p=Pudełko/Pomocne}}}} do wyznaczania ogólnego nazwy przestrzeni nazw dla pozycji bazowej i numerkowej, tzn. dla pozycji: jeden, dwa, trzy,..., itd, i ich ogólnej. Parametr ramki tablicy transportu rodzica szablonu: * {{Code|nazwa przestrzeni nazw}}, {{Code|nazwa przestrzeni nazw 1}}, {{Code|nazwa przestrzeni nazw 2}}, {{Code|nazwa przestrzeni nazw 3}},..., {{Code|nazwa przestrzeni nazw i}} - nazwy przestrzeni nazw dla pozycji bazowej oraz zwykłej i ogólnej numerkowej, * {{Code|typ jednostki}}, {{Code|typ jednostki 1}}, {{Code|typ jednostki 2}}, {{Code|typ jednostki 3}},..., {{Code|typ jednostki i}} - typy jednostek, którym odpowiadają pewne przestrzenie przedmiotowe, dla pozycji bazowej, numerkowej i ogólnej. Parametry ramki tablicy transportu dziecka: * Parametry dziecka są takie same jak rodzica dla funkcji pudełkowej plus tu wymienione, * {{Code|numer jednostki}} - jak parametr {{Code|i}} nie został ustawiony, to wtedy liczy się ta zmienna. Przykłady: <syntaxhighlight lang="mediawiki"> {{Nazwa szablonu|nazwa przestrzeni nazw=Wikibooks|nazwa przestrzeni nazw 2=Szablon|nazwa przestrzeni nazw i=Moduł}} </syntaxhighlight> W dziecku powiedzmy jest wywołanie, i szukamy nazwy przestrzeni nazw o numerze dwa, która nie została podana, ale istnieje za to jej wersji ogólna {{Code|nazwa przestrzeni nazw i}} i domyślna {{Code|nazwa przestrzeni nazw}}: <syntaxhighlight lang="mediawiki"> {{#invoke:Pudełko|Nazwa przestrzeni nazw dyskusji|numer jednostki=1}} </syntaxhighlight> Na podstawie powyższego przykładu otrzymamy wynik o schemacie, nie wyniku, bo tam nie ma zmiennej {{Code|nazwa przestrzeni nazw 1}}, ale jest {{Code|nazwa przestrzeni nazw i}}: <syntaxhighlight lang="mediawiki"> <!-- Ale nie "nazwa przestrzeni nazw", bo jej nie ma, ale za to istnieje "nazwa przestrzeni nazw i"; --> <!-- nazwa przestrzeni nazw 2=nazwa przestrzeni nazw i=Moduł; --> <!-- Czyli wynik: --> Dyskusja modułu <!-- Widzimy, że wygenerowała się nazwa przestrzeni nazw, którą jest przestrzeń dyskusji przestrzeni programowej przestrzeni przedmiotowej "Moduł", którą również jest "Szablon" jego przestrzeni dyskusji "Dyskusja szablonu", a dla ich przestrzeni przedmiotowej, zamiast dyskusji, to przekształca się na dyskusji jej odpowiadającą; --> </syntaxhighlight> Nie jest brana w tym powyższym przykładzie zmienna {{Code|nazwa przestrzeni nazw}}, bo jej nie ma, ale za to jest {{Code|nazwa przestrzeni nazw i}}, bo ona występuje jako parametr domyślny ogólny dla parametrów numerkowych. Przykłady w wikikodzie: * {{Code|{{m|Pudełko|Nazwa przestrzeni nazw dyskusji|numer jednostki{{=}}2}}}} → {{Tt|{{#invoke:Pudełko|Nazwa przestrzeni nazw dyskusji|numer jednostki=2}}}} * {{Code|{{m|Pudełko|Nazwa przestrzeni nazw dyskusji|Szablon|nazwa przestrzeni nazw i{{=}}Moja przestrzeń|numer jednostki{{=}}2}}}} → {{Tt|{{#invoke:Pudełko|Nazwa przestrzeni nazw dyskusji|Szablon|nazwa przestrzeni nazw i=Moja przestrzeń|numer jednostki=2}}}} * {{Code|{{m|Pudełko|Nazwa przestrzeni nazw dyskusji|nazwa przestrzeni nazw 2{{=}}Szablon|numer jednostki{{=}}2}}}} → {{Tt|{{#invoke:Pudełko|Nazwa przestrzeni nazw dyskusji|nazwa przestrzeni nazw 2=Szablon|numer jednostki=2}}}} * {{Code|{{m|Pudełko|Nazwa przestrzeni nazw dyskusji|nazwa przestrzeni nazw 2{{=}}Szablon|numer jednostki{{=}}2}}}} → {{Tt|{{#invoke:Pudełko|Nazwa przestrzeni nazw dyskusji|nazwa przestrzeni nazw i=Szablon|numer jednostki=2}}}} * {{Code|{{m|Pudełko|Nazwa przestrzeni nazw dyskusji|nazwa przestrzeni nazw{{=}}Szablon|numer jednostki{{=}}2}}}} → {{Tt|{{#invoke:Pudełko|Nazwa przestrzeni nazw dyskusji|nazwa przestrzeni nazw=Szablon|numer jednostki=2}}}} Powyżej dla przykładu podano parametry nie w rodzicu w szablonie, tylko w dziecku, jeśli chodzi o parametry nazw przestrzeni nazw, ale ich się za to nie powinno podawać w tych ramach, tylko w szablonach, w których wywoływane są te ramki pudełek {{Code|{{m|Pudełko}}}}, ale tak tutaj tak zrobiono by było najłatwiej sprawdzić działanie tego typu funkcji. Analogicznie możemy podawać parametry typu jednostki, np.: wywołaniu modułowym {{Code|{{m|Pudełko|Nazwa przestrzeni nazw dyskusji|typ jednostki 2{{=}}strona szablonu|numer jednostki{{=}}2}}}}, ale o tym więcej w rozdziałach {{Code|{{sr|# p["Dyskusyjny typ jednostki"](frame,i)|p=Pudełko}}}} w „{{sr|#Funkcje typu jednostki|p=Pudełko}}”, ale wtedy nazwa przestrzeni nazw reprezentowana przez {{Parametr|typ jednostki 2|strona szablonu}}, jest zamieniana na nazwę przestrzeni nazw dyskusji. Parametr dyskusji typu jednostki bazowy lub dla danego numerka ogólny, czy szczegółowy, nie gra roli. Typ jednostki nie ma takiej samej wartości dla przestrzeni przedmiotowej, co dyskusji. Również parametry typu jednostki nie powinno się podawać w dziecku w ramce, tylko w rodzicu w szablonie jako parametry, w którym ta ramka jest wywoływana, ale tutaj podano jedynie dla przykładu, jak najłatwiej sprawdzić działanie tych parametrów tej funkcji. Najpierw w funkcji nagłówku brane są parametry nazw przestrzeni nazw, a jeżeli ich nie ma, to parametry typu jednostki, a jeżeli nie ma, to generowane są nazwy na podstawie aktualnego modułu. == Funkcje nazw przestrzeni nazw drugiej wersji == === {{Code|p["Nazwa przestrzeni nazw 2"](frame,...)}} === Funkcja pisze nazwę przestrzeni nazw, niezależnie, czy to jest przedmiotowa, czy dyskusji, według, i nie zawsze tylko, podanej w zmiennej {{Code|nazwa przestrzeni nazw}} dla pozycja bazowej w podanych parametrach szablonu rodzicu ramki dziecka, lub dla innej pozycji należy parametr podawać w formie {{Code|nazwa przestrzeni nazw 1}}, {{Code|nazwa przestrzeni nazw 2}}, {{Code|nazwa przestrzeni nazw 3}},..., lub te parametry można podać w postaci ogólnej {{Code|nazwa przestrzeni nazw i}}. W tej funkcji trzeba też podawać parametry nazwy jednostek {{Code|nazwa jednostki}}, {{Code|nazwa jednostki 1}}, {{Code|nazwa jednostki 2}}, {{Code|nazwa jednostki 3}},... Parametry podaje się w parametrach rodzica wywołania tej funkcji {{Code|{{m|Pudełko|Nazwa przestrzeni nazw 2}}}} (ale ich nie trzeba podawać w dziecku, ale można) i w parametrach dziecka, jeśli chodzi o zmienną {{Code|numer jednostki}}, czyli np.: {{Code|{{m|Pudełko|Nazwa przestrzeni nazw 2|numer jednostki{{=}}<jakaś liczba całkowita dodatnia>}}}}. Te parametry przestrzenne zamiast w rodzicu w szablonie można podać w ramce dziecka, wtedy parametry dziecka mają pierwszeństwo. Przestrzeń nazw z parametrów nazw przestrzennych może odpowiadać wartości przestrzeni głównej, to wtedy odpowiednia przestrzeń nazw z parametru nazwy jednostki się liczy w tej funkcji, wtedy jest liczona nazwa przestrzeni nazw z tego parametru. Gdy parametry przestrzenne lub typ jednostki w drugim podejściu nie wskazują na przestrzeń główną, to wtedy działanie tej funkcji jest podobne do {{Code|{{sr|#p["Nazwa przestrzeni nazw"](frame,...)|p=Pudełko}}}}. Definicja skrótowa funkcji: <syntaxhighlight lang="lua"> p["Nazwa przestrzeni nazw 2"]=function(frame,czy_uwzglednic_alternatywna_nazwe,i)...end; </syntaxhighlight> Wtedy ciało funkcji tej, czyli jego definicja w środku, jest: <syntaxhighlight lang="lua"> local pudelko_pomocne_modul=require("Module:Pudełko/Pomocne"); -- Liczy nazwę przestrzeni nazw, jeżeli z parametrów przestrzennych przestrzeń wskazuje na główną, to wtedy jest liczona przestrzeń nazw z nazwy jednostki; return pudelko_pomocne_modul.Nazwa_przestrzeni_nazw_2(frame,czy_uwzglednic_alternatywna_nazwe,i) </syntaxhighlight> Parametry funkcji: * {{Code|frame}} - tablica ramki tablicy transportu, * {{Code|czy_uwzglednic_alternatywna_nazwe}} - czy ma uwzględniać nazwę przestrzeni nazw domyślną szablonu, dostępne wartości: {{Code|false}}, w której nazwa domyślna nie jest uwzględniana wtedy, oraz {{Code|nil}} i {{Code|true}}, które oznaczają to samo, w tym jeżeli ona jest uwzględniana, wtedy jest brany parametr pierwszy dziecka, który musi istnieć przy takiej wartości tego parametru, tzn. {{Code|{{m|Pudełko|Nazwa przestrzeni nazw 2|Szablon}}}}, a jeśli nazwa uzyskana nazwy przestrzeni nazw jest w takim przypadku błędna, to brany jest ten element, a jeżeli nazwa domyślna jest błędna, czyli {{Code|{{m|Pudełko|Nazwa przestrzeni nazw 2|Moja przestrzeń}}}}, wtedy funkcja zwraca stan błędu {{Code|(błąd)}}. * {{Code|i}} - numer zmiennej nazwy przestrzeni nazw. Funkcja wykorzystuje {{Code|{{sr|#p.Nazwa_przestrzeni_nazw_2(frame,...)|p=Pudełko/Pomocne}}}} do wyznaczania ogólnego nazwy przestrzeni nazw dla pozycji bazowej i numerkowej, tzn. dla pozycji: jeden, dwa, trzy,..., itd, i ich ogólnej. Parametr ramki tablicy transportu rodzica szablonu: * {{Code|nazwa przestrzeni nazw}}, {{Code|nazwa przestrzeni nazw 1}}, {{Code|nazwa przestrzeni nazw 2}}, {{Code|nazwa przestrzeni nazw 3}},..., {{Code|nazwa przestrzeni nazw i}} - nazwy przestrzeni nazw dla pozycji bazowej oraz zwykłej i ogólnej numerkowej, * {{Code|nazwa jednostki}}, {{Code|nazwa jednostki 1}}, {{Code|nazwa jednostki 2}}, {{Code|nazwa jednostki 3}},... - nazwy jednostek dla pozycji bazowej i numerkowej, * {{Code|typ jednostki}}, {{Code|typ jednostki 1}}, {{Code|typ jednostki 2}}, {{Code|typ jednostki 3}},..., {{Code|typ jednostki i}} - typy jednostek, którym odpowiadają pewne przestrzenie przedmiotowe, dla pozycji bazowej, numerkowej i ogólnej, ** {{Code|dyskusja typu jednostki}}, {{Code|dyskusja typu jednostki 1}}, {{Code|dyskusja typ jednostki 2}}, {{Code|dyskusja typ jednostki 3}},..., {{Code|dyskusja typ jednostki i}} - czy dany typ jednostki ma przedstawiać, jeśli niepusta, przestrzeń dyskusji dla pozycji bazowej, numerkowej i ogólnej. Parametry ramki tablicy transportu dziecka: * Parametry dziecka są takie same jak rodzica dla funkcji pudełkowej plus tu wymienione, * {{Code|numer jednostki}} - jak parametr {{Code|i}} nie został ustawiony, to wtedy liczy się ta zmienna. Przykłady: <syntaxhighlight lang="mediawiki"> {{Nazwa szablonu|nazwa przestrzeni nazw=Wikibooks|nazwa przestrzeni nazw 1=Szablon|nazwa przestrzeni nazw i=|nazwa jednostki 2=Wikibooks:Strona}} </syntaxhighlight> W dziecku powiedzmy jest wywołanie, i szukamy nazwy przestrzeni nazw o numerze dwa, która została podana, ale istnieje za to jej wersji ogólna {{Code|nazwa przestrzeni nazw i}} i domyślna {{Code|nazwa przestrzeni nazw}}, ale wtedy dla tego numerkowego liczy się to ogólne z {{Code| i}}, a ponieważ ta nazwa jest pusta, więc będziemy liczyli nazwę przestrzeni nazw z {{Code|nazwa jednostki 2}}: <syntaxhighlight lang="mediawiki"> {{#invoke:Pudełko|Nazwa przestrzeni nazw 2|numer jednostki=2}} </syntaxhighlight> Na podstawie powyższego przykładu otrzymamy wynik o schemacie, nie wyniku, bo tam nie ma zmiennej {{Code|nazwa przestrzeni nazw 1}}, ale jest {{Code|nazwa przestrzeni nazw i}}: <syntaxhighlight lang="mediawiki"> <!-- Ale nie "nazwa przestrzeni nazw 2", bo jej nie ma, ale za to istnieje "nazwa przestrzeni nazw i"; --> <!-- nazwa przestrzeni nazw 2=nazwa przestrzeni nazw i="", a nazwa jednostki 2="Wikibooks:Strona"; --> <!-- Czyli wynik: --> Wikibooks <!-- Widzimy, że wygenerowała się nazwa przestrzeni nazw, którą jest przestrzeń nieprogramowa, ale projektu, wychodząca z nazwy jednostek w tym przypadku z "nazwa jednostki 2"; --> </syntaxhighlight> Nie jest brana w tym powyższym przykładzie zmienna {{Code|nazwa przestrzeni nazw}}, bo jej nie ma, ale za to jest {{Code|nazwa przestrzeni nazw i}}, bo ona występuje jako parametr domyślny ogólny dla parametrów numerkowych. Tytaj jest używana jest zmienna {{Code|nazwa jednostki 2}} do wygenerowania ostatecznego wyniku, bo jak można zauważyć, parametry przestrzenne wskazują na przestrzeń główną, a nazwy jednostek już nie. Przykłady w wikikodzie: * {{Code|{{m|Pudełko|Nazwa przestrzeni nazw 2|numer jednostki{{=}}2}}}} → {{Tt|{{#invoke:Pudełko|Nazwa przestrzeni nazw 2|numer jednostki=2}}}} * {{Code|{{m|Pudełko|Nazwa przestrzeni nazw 2|Szablon|nazwa przestrzeni nazw i{{=}}Moja przestrzeń|numer jednostki{{=}}2}}}} → {{Tt|{{#invoke:Pudełko|Nazwa przestrzeni nazw 2|Szablon|nazwa przestrzeni nazw i=Moja przestrzeń|numer jednostki=2}}}} * {{Code|{{m|Pudełko|Nazwa przestrzeni nazw 2|nazwa przestrzeni nazw 2{{=}}|nazwa jednostki 2{{=}}Szablon:Strona|numer jednostki{{=}}2}}}} → {{Tt|{{#invoke:Pudełko|Nazwa przestrzeni nazw 2|nazwa przestrzeni nazw 2=|nazwa jednostki 2=Szablon:Strona|numer jednostki=2}}}} * {{Code|{{m|Pudełko|Nazwa przestrzeni nazw 2|nazwa przestrzeni nazw i{{=}}|nazwa jednostki 2{{=}}Szablon:Strona|numer jednostki{{=}}2}}}} → {{Tt|{{#invoke:Pudełko|Nazwa przestrzeni nazw 2|nazwa przestrzeni nazw i=|nazwa jednostki 2=Szablon:Strona|numer jednostki=2}}}} * {{Code|{{m|Pudełko|Nazwa przestrzeni nazw 2|Szablon|nazwa przestrzeni nazw{{=}}|nazwa jednostki 2{{=}}Wikibooks:Strona|numer jednostki{{=}}2}}}} → {{Tt|{{#invoke:Pudełko|Nazwa przestrzeni nazw 2|Szablon|nazwa przestrzeni nazw=|nazwa jednostki 2=Wikibooks:Strona|numer jednostki=2}}}} Powyżej dla przykładu podano parametry nie w rodzicu w szablonie, tylko w dziecku, jeśli chodzi o parametry nazw przestrzeni nazw i nazw jednostek, ale ich się za to nie powinno podawać w tych ramach, tylko w szablonach, w których wywoływane są te ramki pudełek {{Code|{{m|Pudełko}}}}, ale tak tutaj tak zrobiono by było najłatwiej sprawdzić działanie tego typu funkcji. Analogicznie możemy podawać parametry typu jednostki, np.: wywołaniu modułowym {{Code|{{m|Pudełko|Nazwa przestrzeni nazw 2|typ jednostki 2{{=}}Podręcznik|nazwa jednostki 2{{=}}Szablon:Strona|numer jednostki{{=}}2}}}} (ale wtedy jest brana przestrzeń nazw z nazwy jednostki), ale o tym więcej w rozdziałach {{Code|{{sr|#p["Typ jednostki 2"](frame,i)|p=Pudełko}}}} w „{{sr|#Funkcje typu jednostki|p=Pudełko}}”, on definiuje przestrzenie przedmiotowe, ale można użyć parametru dyskusji typu jednostki z wartością niepustą, wtedy wyświetli się nazwa przestrzeni nazw dyskusji. Jeżeli typ jednostki wskazuje na przestrzeń nazw główną, wtedy się liczą parametry nazw jednostek. Typ jednostki nie ma takiej samej wartości dla przestrzeni przedmiotowej, co dyskusji. Również parametry typu jednostki nie powinno się podawać w dziecku w ramce, tylko w rodzicu w szablonie jako parametry, w którym ta ramka jest wywoływana, ale tutaj podano jedynie dla przykładu, jak najłatwiej sprawdzić działanie tych parametrów tej funkcji. Najpierw w funkcji nagłówku brane są parametry nazw przestrzeni nazw, a jeżeli ich nie ma, to parametry typu jednostki, a jeżeli nie ma lub parametry przestrzenne wskazują na przestrzeń główną, i nie ma nazwy jednostki, to generowane są nazwy tej funkcji na podstawie aktualnej strony. === {{Code|p["Nazwa przedmiotowej przestrzeni nazw 2"](frame,...)}} === Funkcja pisze przedmiotową nazwę przestrzeni nazw jakikolwiek nazwy przestrzeni nazw (tzn. nazwę przedmiotową nazwy przestrzenie nazw, czyli nie dyskusji, zamieniana jest na nią samą, czyli identyfikator przestrzeni się nie zmienia, a dyskusji, nie przedmiotową, przekształca się na przedmiotową jej odpowiadającą, czyli w tym przypadku identyfikator przestrzeni zmniejsza się o numer mniej), według, i nie zawsze tylko, podanej w zmiennej {{Code|nazwa przestrzeni nazw}} dla pozycja bazowej w podanych parametrach szablonu rodzicu ramki dziecka, lub dla innej pozycji należy parametr podawać w formie {{Code|nazwa przestrzeni nazw 1}}, {{Code|nazwa przestrzeni nazw 2}}, {{Code|nazwa przestrzeni nazw 3}},..., lub te parametry można podać w postaci ogólnej {{Code|nazwa przestrzeni nazw i}}. W tej funkcji trzeba też podawać parametry nazwy jednostek {{Code|nazwa jednostki}}, {{Code|nazwa jednostki 1}}, {{Code|nazwa jednostki 2}}, {{Code|nazwa jednostki 3}},... Parametry podaje się w parametrach rodzica wywołania tej funkcji {{Code|{{m|Pudełko|Nazwa przedmiotowej przestrzeni nazw 2}}}} (ale ich nie trzeba podawać w dziecku, ale można) i w parametrach dziecka, jeśli chodzi o zmienną {{Code|numer jednostki}}, czyli np.: {{Code|{{m|Pudełko|Nazwa przedmiotowej przestrzeni nazw 2|numer jednostki{{=}}<jakaś liczba całkowita dodatnia>}}}}. Te parametry przestrzenne zamiast w rodzicu w szablonie można podać w ramce dziecka, wtedy parametry dziecka mają pierwszeństwo. Przestrzeń nazw z parametrów nazw przestrzennych po przekształceniu na przedmiotową może odpowiadać wartości przestrzeni głównej, to wtedy odpowiednia przestrzeń nazw z parametru nazwy jednostki się liczy w tej funkcji, wtedy jest liczona nazwa przestrzeni nazw z tego parametru. Gdy parametry przestrzenne lub typ jednostki w drugim podejściu nie wskazują na przestrzeń główną, to wtedy działanie tej funkcji jest podobne do {{Code|{{sr|#p["Nazwa przedmiotowej przestrzeni nazw"](frame,...)|p=Pudełko}}}}. Definicja skrótowa funkcji: <syntaxhighlight lang="lua"> p["Nazwa przedmiotowej przestrzeni nazw 2"]=function(frame,czy_uwzglednic_alternatywna_nazwe,i)...end; </syntaxhighlight> Wtedy ciało funkcji tej, czyli jego definicja w środku, jest: <syntaxhighlight lang="lua"> local pudelko_pomocne_modul=require("Module:Pudełko/Pomocne"); return pudelko_pomocne_modul.Nazwa_przestrzeni_nazw_przedmiotowa_dyskusji_2(frame,czy_uwzglednic_alternatywna_nazwe,i,"przedmiotowa"); </syntaxhighlight> Parametry funkcji: * {{Code|frame}} - tablica ramki tablicy transportu, * {{Code|czy_uwzglednic_alternatywna_nazwe}} - czy ma uwzględniać nazwę przestrzeni nazw domyślną szablonu, dostępne wartości: {{Code|false}}, w której nazwa domyślna nie jest uwzględniana wtedy, oraz {{Code|nil}} i {{Code|true}}, które oznaczają to samo, w tym jeżeli ona jest uwzględniana, wtedy jest brany parametr pierwszy dziecka, który musi istnieć przy takiej wartości tego parametru, tzn. {{Code|{{m|Pudełko|Nazwa przedmiotowej przestrzeni nazw 2|Szablon}}}}, nazwa domyślna zostanie zamieniona na przedmiotową, a jeżeli jest już taka, to żadnej zamiany nie ma, a jeśli nazwa uzyskana nazwy przestrzeni nazw jest w takim przypadku błędna, to brany jest ten element, a jeżeli nazwa domyślna jest błędna, czyli {{Code|{{m|Pudełko|Nazwa przedmiotowej przestrzeni nazw 2|Moja przestrzeń}}}}, wtedy funkcja zwraca stan błędu {{Code|(błąd)}}. * {{Code|i}} - numer zmiennej nazwy przestrzeni nazw. Funkcja wykorzystuje {{Code|{{sr|#p.Nazwa_przestrzeni_nazw_przedmiotowa_dyskusji_2(frame,...)|p=Pudełko/Pomocne}}}} do wyznaczania ogólnego nazwy przestrzeni nazw dla pozycji bazowej i numerkowej, tzn. dla pozycji: jeden, dwa, trzy,..., itd, i ich ogólnej. Parametr ramki tablicy transportu rodzica szablonu: * {{Code|nazwa przestrzeni nazw}}, {{Code|nazwa przestrzeni nazw 1}}, {{Code|nazwa przestrzeni nazw 2}}, {{Code|nazwa przestrzeni nazw 3}},..., {{Code|nazwa przestrzeni nazw i}} - nazwy przestrzeni nazw dla pozycji bazowej oraz zwykłej i ogólnej numerkowej, * {{Code|nazwa jednostki}}, {{Code|nazwa jednostki 1}}, {{Code|nazwa jednostki 2}}, {{Code|nazwa jednostki 3}},... - nazwy jednostek dla pozycji bazowej i numerkowej, * {{Code|typ jednostki}}, {{Code|typ jednostki 1}}, {{Code|typ jednostki 2}}, {{Code|typ jednostki 3}},..., {{Code|typ jednostki i}} - typy jednostek, którym odpowiadają pewne przestrzenie przedmiotowe, dla pozycji bazowej, numerkowej i ogólnej. Parametry ramki tablicy transportu dziecka: * Parametry dziecka są takie same jak rodzica dla funkcji pudełkowej plus tu wymienione, * {{Code|numer jednostki}} - jak parametr {{Code|i}} nie został ustawiony, to wtedy liczy się ta zmienna. Przykłady: <syntaxhighlight lang="mediawiki"> {{Nazwa szablonu|nazwa przestrzeni nazw=Wikibooks|nazwa przestrzeni nazw 1=Szablon|nazwa przestrzeni nazw i=|nazwa jednostki 2=Dyskusja Wikibooks:Strona}} </syntaxhighlight> W dziecku powiedzmy jest wywołanie, i szukamy nazwy przestrzeni nazw o numerze dwa, która została podana, ale istnieje za to jej wersji ogólna {{Code|nazwa przestrzeni nazw i}} i domyślna {{Code|nazwa przestrzeni nazw}}, ale wtedy dla tego numerkowego liczy się to ogólne z {{Code| i}}, a ponieważ ta nazwa jest pusta, więc będziemy liczyli nazwę przestrzeni nazw z {{Code|nazwa jednostki 2}}: <syntaxhighlight lang="mediawiki"> {{#invoke:Pudełko|Nazwa przedmiotowej przestrzeni nazw 2|numer jednostki=2}} </syntaxhighlight> Na podstawie powyższego przykładu otrzymamy wynik o schemacie, nie wyniku, bo tam nie ma zmiennej {{Code|nazwa przestrzeni nazw 1}}, ale jest {{Code|nazwa przestrzeni nazw i}}: <syntaxhighlight lang="mediawiki"> <!-- Ale nie "nazwa przestrzeni nazw 2", bo jej nie ma, ale za to istnieje "nazwa przestrzeni nazw i"; --> <!-- nazwa przestrzeni nazw 2=nazwa przestrzeni nazw i="", a nazwa jednostki 2="Dyskusja Wikibooks:Strona"; --> <!-- Czyli wynik: --> Wikibooks <!-- Widzimy, że wygenerowała się nazwa przestrzeni nazw, którą jest przestrzeń nieprogramowa, ale projektu, wychodząca z nazwy jednostek w tym przypadku z "nazwa jednostki 2"; --> </syntaxhighlight> Nie jest brana w tym powyższym przykładzie zmienna {{Code|nazwa przestrzeni nazw}}, bo jej nie ma, ale za to jest {{Code|nazwa przestrzeni nazw i}}, bo ona występuje jako parametr domyślny ogólny dla parametrów numerkowych. Tytaj jest używana jest zmienna {{Code|nazwa jednostki 2}} do wygenerowania ostatecznego wyniku, bo jak można zauważyć, parametry przestrzenne wskazują na przestrzeń główną, a nazwy jednostek już nie. Przykłady w wikikodzie: * {{Code|{{m|Pudełko|Nazwa przedmiotowej przestrzeni nazw 2|numer jednostki{{=}}2}}}} → {{Tt|{{#invoke:Pudełko|Nazwa przedmiotowej przestrzeni nazw 2|numer jednostki=2}}}} * {{Code|{{m|Pudełko|Nazwa przedmiotowej przestrzeni nazw 2|Dyskusja szablonu|nazwa przestrzeni nazw i{{=}}Moja przestrzeń|numer jednostki{{=}}2}}}} → {{Tt|{{#invoke:Pudełko|Nazwa przedmiotowej przestrzeni nazw 2|Dyskusja szablonu|nazwa przestrzeni nazw i=Moja przestrzeń|numer jednostki=2}}}} * {{Code|{{m|Pudełko|Nazwa przedmiotowej przestrzeni nazw 2|nazwa przestrzeni nazw 2{{=}}Dyskusja|nazwa jednostki 2{{=}}Dyskusja szablonu:Strona|numer jednostki{{=}}2}}}} → {{Tt|{{#invoke:Pudełko|Nazwa przedmiotowej przestrzeni nazw 2|nazwa przestrzeni nazw 2=Dyskusja|nazwa jednostki 2=Dyskusja szablonu:Strona|numer jednostki=2}}}} * {{Code|{{m|Pudełko|Nazwa przedmiotowej przestrzeni nazw 2|nazwa przestrzeni nazw i{{=}}Dyskusja|nazwa jednostki 2{{=}}Dyskusja szablonu:Strona|numer jednostki{{=}}2}}}} → {{Tt|{{#invoke:Pudełko|Nazwa przedmiotowej przestrzeni nazw 2|nazwa przestrzeni nazw i=Dyskusja|nazwa jednostki 2=Dyskusja szablonu:Strona|numer jednostki=2}}}} * {{Code|{{m|Pudełko|Nazwa przedmiotowej przestrzeni nazw 2|Dyskusja szablonu|nazwa przestrzeni nazw{{=}}Dyskusja|nazwa jednostki 2{{=}}Wikibooks:Strona|numer jednostki{{=}}2}}}} → {{Tt|{{#invoke:Pudełko|Nazwa przedmiotowej przestrzeni nazw 2|Dyskusja szablonu|nazwa przestrzeni nazw=Dyskusja|nazwa jednostki 2=Dyskusja Wikibooks:Strona|numer jednostki=2}}}} Powyżej dla przykładu podano parametry nie w rodzicu w szablonie, tylko w dziecku, jeśli chodzi o parametry nazw przestrzeni nazw i nazw jednostek, ale ich się za to nie powinno podawać w tych ramach, tylko w szablonach, w których wywoływane są te ramki pudełek {{Code|{{m|Pudełko}}}}, ale tak tutaj tak zrobiono by było najłatwiej sprawdzić działanie tego typu funkcji. Analogicznie możemy podawać parametry typu jednostki, np.: wywołaniu modułowym {{Code|{{m|Pudełko|Nazwa przedmiotowej przestrzeni nazw 2|typ jednostki 2{{=}}Podręcznik|nazwa jednostki 2{{=}}Dyskusja szablonu:Strona|numer jednostki{{=}}2}}}} (ale wtedy jest brana przestrzeń nazw z nazwy jednostki), ale o tym więcej w rozdziałach {{Code|{{sr|# p["Przedmiotowy typ jednostki 2"](frame,i)|p=Pudełko}}}} w „{{sr|#Funkcje typu jednostki|p=Pudełko}}”, on definiuje przestrzenie przedmiotowe, ale można użyć parametru dyskusji typu jednostki z wartością niepustą, pustą, czy nawet jej nie podamy, wtedy wyświetli się nazwa przestrzeni nazw przedmiotowej. Jeżeli typ jednostki wskazuje na przestrzeń nazw główną, wtedy się liczą parametry nazw jednostek. Typ jednostki nie ma takiej samej wartości dla przestrzeni przedmiotowej, co dyskusji. Również parametry typu jednostki nie powinno się podawać w dziecku w ramce, tylko w rodzicu w szablonie jako parametry, w którym ta ramka jest wywoływana, ale tutaj podano jedynie dla przykładu, jak najłatwiej sprawdzić działanie tych parametrów tej funkcji. Najpierw w funkcji nagłówku brane są parametry nazw przestrzeni nazw, a jeżeli ich nie ma, to parametry typu jednostki, a jeżeli nie ma lub parametry przestrzenne wskazują na przestrzeń główną, i nie ma nazwy jednostki, to generowane są nazwy tej funkcji na podstawie aktualnej strony. === {{Code|p["Nazwa przestrzeni nazw dyskusji 2"](frame,...)}} === Funkcja pisze nazwę przestrzeni nazw dyskusji jakikolwiek nazwy przestrzeni nazw (tzn. nazwę dyskusji nazwy przestrzenie nazw, czyli nie przedmiotowej, zamieniana jest na nią samą, czyli identyfikator przestrzeni się nie zmienia, a przedmiotową, nie dyskusji, przekształca się na dyskusji jej odpowiadającą, czyli w tym przypadku identyfikator przestrzeni zwiększa się o numer więcej), według, i nie zawsze tylko, podanej w zmiennej {{Code|nazwa przestrzeni nazw}} dla pozycja bazowej w podanych parametrach szablonu rodzicu ramki dziecka, lub dla innej pozycji należy parametr podawać w formie {{Code|nazwa przestrzeni nazw 1}}, {{Code|nazwa przestrzeni nazw 2}}, {{Code|nazwa przestrzeni nazw 3}},..., lub te parametry można podać w postaci ogólnej {{Code|nazwa przestrzeni nazw i}}. W tej funkcji trzeba też podawać parametry nazwy jednostek {{Code|nazwa jednostki}}, {{Code|nazwa jednostki 1}}, {{Code|nazwa jednostki 2}}, {{Code|nazwa jednostki 3}},... Parametry podaje się w parametrach rodzica wywołania tej funkcji {{Code|{{m|Pudełko|Nazwa przestrzeni nazw dyskusji 2}}}} (ale ich nie trzeba podawać w dziecku, ale można) i w parametrach dziecka, jeśli chodzi o zmienną {{Code|numer jednostki}}, czyli np.: {{Code|{{m|Pudełko|Nazwa przestrzeni nazw dyskusji 2|numer jednostki{{=}}<jakaś liczba całkowita dodatnia>}}}}. Te parametry przestrzenne zamiast w rodzicu w szablonie można podać w ramce dziecka, wtedy parametry dziecka mają pierwszeństwo. Przestrzeń nazw z parametrów nazw przestrzennych po przekształceniu może odpowiadać wartości przestrzeni głównej, to wtedy odpowiednia przestrzeń nazw z parametru nazwy jednostki się liczy w tej funkcji, wtedy jest liczona nazwa przestrzeni nazw dyskusji z tego parametru. Gdy parametry przestrzenne lub typ jednostki w drugim podejściu nie wskazują na przestrzeń główną, to wtedy działanie tej funkcji jest podobne do {{Code|{{sr|#p["Nazwa dyskusji przestrzeni nazw"](frame,...)|p=Pudełko}}}}. Definicja skrótowa funkcji: <syntaxhighlight lang="lua"> p["Nazwa przestrzeni nazw dyskusji 2"]=function(frame,czy_uwzglednic_alternatywna_nazwe,i)...end; </syntaxhighlight> Wtedy ciało funkcji tej, czyli jego definicja w środku, jest: <syntaxhighlight lang="lua"> local pudelko_pomocne_modul=require("Module:Pudełko/Pomocne"); return pudelko_pomocne_modul.Nazwa_przestrzeni_nazw_przedmiotowa_dyskusji_2(frame,czy_uwzglednic_alternatywna_nazwe,i,"dyskusja"); </syntaxhighlight> Parametry funkcji: * {{Code|frame}} - tablica ramki tablicy transportu, * {{Code|czy_uwzglednic_alternatywna_nazwe}} - czy ma uwzględniać nazwę przestrzeni nazw domyślną szablonu, dostępne wartości: {{Code|false}}, w której nazwa domyślna nie jest uwzględniana wtedy, oraz {{Code|nil}} i {{Code|true}}, które oznaczają to samo, w tym jeżeli ona jest uwzględniana, wtedy jest brany parametr pierwszy dziecka, który musi istnieć przy takiej wartości tego parametru, tzn. {{Code|{{m|Pudełko|Nazwa przestrzeni nazw dyskusji 2|Szablon}}}}, nazwa domyślna zostanie zamieniona na dyskusji, a jeżeli jest już taka, to nie ma takiej zamiany, a jeśli nazwa uzyskana nazwy przestrzeni nazw jest w takim przypadku błędna, to brany jest ten element, a jeżeli nazwa domyślna jest błędna, czyli {{Code|{{m|Pudełko|Nazwa przestrzeni nazw dyskusji 2|Moja przestrzeń}}}}, wtedy funkcja zwraca stan błędu {{Code|(błąd)}}. * {{Code|i}} - numer zmiennej nazwy przestrzeni nazw. Funkcja wykorzystuje {{Code|{{sr|#p.Nazwa_przestrzeni_nazw_przedmiotowa_dyskusji_2(frame,...)|p=Pudełko/Pomocne}}}} do wyznaczania ogólnego nazwy przestrzeni nazw dla pozycji bazowej i numerkowej, tzn. dla pozycji: jeden, dwa, trzy,..., itd, i ich ogólnej. Parametr ramki tablicy transportu rodzica szablonu: * {{Code|nazwa przestrzeni nazw}}, {{Code|nazwa przestrzeni nazw 1}}, {{Code|nazwa przestrzeni nazw 2}}, {{Code|nazwa przestrzeni nazw 3}},..., {{Code|nazwa przestrzeni nazw i}} - nazwy przestrzeni nazw dla pozycji bazowej oraz zwykłej i ogólnej numerkowej, * {{Code|nazwa jednostki}}, {{Code|nazwa jednostki 1}}, {{Code|nazwa jednostki 2}}, {{Code|nazwa jednostki 3}},... - nazwy jednostek dla pozycji bazowej i numerkowej, * {{Code|typ jednostki}}, {{Code|typ jednostki 1}}, {{Code|typ jednostki 2}}, {{Code|typ jednostki 3}},..., {{Code|typ jednostki i}} - typy jednostek, którym odpowiadają pewne przestrzenie przedmiotowe, dla pozycji bazowej, numerkowej i ogólnej. Parametry ramki tablicy transportu dziecka: * Parametry dziecka są takie same jak rodzica dla funkcji pudełkowej plus tu wymienione, * {{Code|numer jednostki}} - jak parametr {{Code|i}} nie został ustawiony, to wtedy liczy się ta zmienna. Przykłady: <syntaxhighlight lang="mediawiki"> {{Nazwa szablonu|nazwa przestrzeni nazw=Wikibooks|nazwa przestrzeni nazw 1=Szablon|nazwa przestrzeni nazw i=|nazwa jednostki 2=Wikibooks:Strona}} </syntaxhighlight> W dziecku powiedzmy jest wywołanie, i szukamy nazwy przestrzeni nazw o numerze dwa, która została podana, ale istnieje za to jej wersji ogólna {{Code|nazwa przestrzeni nazw i}} i domyślna {{Code|nazwa przestrzeni nazw}}, ale wtedy dla tego numerkowego liczy się to ogólne z {{Code| i}}, a ponieważ ta nazwa jest pusta, więc będziemy liczyli nazwę przestrzeni nazw z {{Code|nazwa jednostki 2}}: <syntaxhighlight lang="mediawiki"> {{#invoke:Pudełko|Nazwa przestrzeni nazw dyskusji 2|numer jednostki=2}} </syntaxhighlight> Na podstawie powyższego przykładu otrzymamy wynik o schemacie, nie wyniku, bo tam nie ma zmiennej {{Code|nazwa przestrzeni nazw 1}}, ale jest {{Code|nazwa przestrzeni nazw i}}: <syntaxhighlight lang="mediawiki"> <!-- Ale nie "nazwa przestrzeni nazw 2", bo jej nie ma, ale za to istnieje "nazwa przestrzeni nazw i"; --> <!-- nazwa przestrzeni nazw 2=nazwa przestrzeni nazw i="", a nazwa jednostki 2="Wikibooks:Strona"; --> <!-- Czyli wynik: --> Dyskusja Wikibooks <!-- Widzimy, że wygenerowała się nazwa przestrzeni nazw, którą jest przestrzeń nieprogramowa, ale dyskusji projektu, wychodząca z nazwy jednostek w tym przypadku z "nazwa jednostki 2"; --> </syntaxhighlight> Nie jest brana w tym powyższym przykładzie zmienna {{Code|nazwa przestrzeni nazw}}, bo jej nie ma, ale za to jest {{Code|nazwa przestrzeni nazw i}}, bo ona występuje jako parametr domyślny ogólny dla parametrów numerkowych. Tytaj jest używana jest zmienna {{Code|nazwa jednostki 2}} do wygenerowania ostatecznego wyniku, bo jak można zauważyć, parametry przestrzenne wskazują na przestrzeń główną, a nazwy jednostek już nie. Przykłady w wikikodzie: * {{Code|{{m|Pudełko|Nazwa przestrzeni nazw dyskusji 2|numer jednostki{{=}}2}}}} → {{Tt|{{#invoke:Pudełko|Nazwa przestrzeni nazw dyskusji 2|numer jednostki=2}}}} * {{Code|{{m|Pudełko|Nazwa przestrzeni nazw dyskusji 2|Szablon|nazwa przestrzeni nazw i{{=}}Moja przestrzeń|numer jednostki{{=}}2}}}} → {{Tt|{{#invoke:Pudełko|Nazwa przestrzeni nazw dyskusji 2|Szablon|nazwa przestrzeni nazw i=Moja przestrzeń|numer jednostki=2}}}} * {{Code|{{m|Pudełko|Nazwa przestrzeni nazw dyskusji 2|nazwa przestrzeni nazw 2{{=}}|nazwa jednostki 2{{=}}Szablon:Strona|numer jednostki{{=}}2}}}} → {{Tt|{{#invoke:Pudełko|Nazwa przestrzeni nazw dyskusji 2|nazwa przestrzeni nazw 2=|nazwa jednostki 2=Szablon:Strona|numer jednostki=2}}}} * {{Code|{{m|Pudełko|Nazwa przestrzeni nazw dyskusji 2|nazwa przestrzeni nazw i{{=}}|nazwa jednostki 2{{=}}Szablon:Strona|numer jednostki{{=}}2}}}} → {{Tt|{{#invoke:Pudełko|Nazwa przestrzeni nazw dyskusji 2|nazwa przestrzeni nazw i=|nazwa jednostki 2=Szablon:Strona|numer jednostki=2}}}} * {{Code|{{m|Pudełko|Nazwa przestrzeni nazw dyskusji 2|Szablon|nazwa przestrzeni nazw{{=}}|nazwa jednostki 2{{=}}Wikibooks:Strona|numer jednostki{{=}}2}}}} → {{Tt|{{#invoke:Pudełko|Nazwa przestrzeni nazw dyskusji 2|Szablon|nazwa przestrzeni nazw=|nazwa jednostki 2=Dyskusja Wikibooks:Strona|numer jednostki=2}}}} Powyżej dla przykładu podano parametry nie w rodzicu w szablonie, tylko w dziecku, jeśli chodzi o parametry nazw przestrzeni nazw i nazw jednostek, ale ich się za to nie powinno podawać w tych ramach, tylko w szablonach, w których wywoływane są te ramki pudełek {{Code|{{m|Pudełko}}}}, ale tak tutaj tak zrobiono by było najłatwiej sprawdzić działanie tego typu funkcji. Analogicznie możemy podawać parametry typu jednostki, np.: wywołaniu modułowym {{Code|{{m|Pudełko|Nazwa przestrzeni nazw dyskusji 2|typ jednostki 2{{=}}Podręcznik|nazwa jednostki 2{{=}}Szablon:Strona|numer jednostki{{=}}2}}}} (ale wtedy jest brana przestrzeń nazw z nazwy jednostki), ale o tym więcej w rozdziałach {{Code|{{sr|# p["Dyskusyjny typ jednostki 3"](frame,i)|p=Pudełko}}}} w „{{sr|#Funkcje typu jednostki|p=Pudełko}}”, one definiują przestrzenie dyskusji, ale można użyć parametru dyskusji typu jednostki z obojętnie jaką wartością niepustą, czy pustą, czy nawet jej nie podamy, wtedy wyświetli się nazwa przestrzeni nazw dyskusji. Jeżeli typ jednostki wskazuje na przestrzeń nazw główną, wtedy się liczą parametry nazw jednostek. Typ jednostki nie ma takiej samej wartości dla przestrzeni przedmiotowej, co dyskusji. Również parametry typu jednostki nie powinno się podawać w dziecku w ramce, tylko w rodzicu w szablonie jako parametry, w którym ta ramka jest wywoływana, ale tutaj podano jedynie dla przykładu, jak najłatwiej sprawdzić działanie tych parametrów tej funkcji. Najpierw w funkcji nagłówku brane są parametry nazw przestrzeni nazw, a jeżeli ich nie ma, to parametry typu jednostki, a jeżeli nie ma lub parametry przestrzenne wskazują na przestrzeń główną, i nie ma nazwy jednostki, to generowane są nazwy tej funkcji na podstawie aktualnej strony. == Funkcje pełnych nazw jednostki == === {{Code|p["Pełna nazwa dyskusji jednostki"](frame,i)}} === === {{Code|p["Pełna nazwa przedmiotowa jednostki"](frame,i)}} === === {{Code|p["Pełna nazwa jednostki"](frame,i)}} === == Funkcje pełnych nazw jednostki drugiej wersji == === {{Code|p["Pełna nazwa dyskusji jednostki 2"](frame,i)}} === === {{Code|p["Pełna nazwa przedmiotowa jednostki 2"](frame,i)}} === === {{Code|p["Pełna nazwa jednostki 2"](frame,i)}} === == Funkcje pełnych nazw jednostki trzeciej wersji == === {{Code|p["Pełna nazwa dyskusji jednostki 3"](frame,i)}} === === {{Code|p["Pełna nazwa przedmiotowa jednostki 3"](frame,i)}} === === {{Code|p["Pełna nazwa jednostki 3"](frame,i)}} === == Funkcje nazw jednostki == === {{Code|p["Nazwa jednostki"](frame,i)}} === == Funkcje nazw jednostki drugiej wersji == === {{Code|p["Nazwa jednostki 2"](frame,i)}} === === {{Code|p["Nazwa przedmiotowa jednostki 2"](frame,i)}} === === {{Code|p["Nazwa dyskusji jednostki 2"](frame,i)}} === == Funkcje nazw przestrzeni nazw trzeciej wersji == === {{Code|p["Nazwa przestrzeni nazw 3"](frame,i)}} === Funkcja pisze nazwę przestrzeni nazw, niezależnie, czy to jest przedmiotowa, czy dyskusji, według, i nie zawsze tylko, podanej w zmiennej {{Code|nazwa przestrzeni nazw}} dla pozycja bazowej w podanych parametrach szablonu rodzicu ramki dziecka, lub dla innej pozycji należy parametr podawać w formie {{Code|nazwa przestrzeni nazw 1}}, {{Code|Nazwa przestrzeni nazw 3}}, {{Code|nazwa przestrzeni nazw 3}},..., lub te parametry można podać w postaci ogólnej {{Code|nazwa przestrzeni nazw i}}. W tej funkcji trzeba też podawać parametry nazwy jednostek {{Code|nazwa jednostki}}, {{Code|nazwa jednostki 1}}, {{Code|nazwa jednostki 2}}, {{Code|nazwa jednostki 3}},... Parametry podaje się w parametrach rodzica wywołania tej funkcji {{Code|{{m|Pudełko|Nazwa przestrzeni nazw 3}}}} (ale ich nie trzeba podawać w dziecku, ale można) i w parametrach dziecka, jeśli chodzi o zmienną {{Code|numer jednostki}}, czyli np.: {{Code|{{m|Pudełko|Nazwa przestrzeni nazw 3|numer jednostki{{=}}<jakaś liczba całkowita dodatnia>}}}}. Te parametry przestrzenne zamiast w rodzicu w szablonie można podać w ramce dziecka, wtedy parametry dziecka mają pierwszeństwo. Przestrzeń nazw z parametrów nazw przestrzennych bazowych (bez numerka) może odpowiadać wartości przestrzeni głównej, to wtedy odpowiednia przestrzeń nazw z parametru nazwy jednostki się nie liczy w tej funkcji, aby się liczyła należy użyć funkcji {{Code|{{sr|#p["Nazwa przestrzeni nazw 2"](frame,...)|p=Pudełko}}}}. W tym przypadku funkcja działa jak {{Code|{{sr|#p["Nazwa przestrzeni nazw"](frame,...)|p=Pudełko}}}}. Przestrzeń nazw z parametrów nazw przestrzennych numerkowych może odpowiadać wartości przestrzeni głównej, to wtedy odpowiednia przestrzeń nazw z parametru nazwy jednostki się liczy w tej funkcji, wtedy jest liczona nazwa przestrzeni nazw z tego parametru. Gdy parametry przestrzenne lub typ jednostki w drugim podejściu nie wskazują na przestrzeń główną, to wtedy działanie tej funkcji jest podobne do {{Code|{{sr|#p["Nazwa przestrzeni nazw 2"](frame,...)|p=Pudełko}}}}. Definicja skrótowa funkcji: <syntaxhighlight lang="lua"> p["Nazwa przestrzeni nazw 3"]=function(frame,czy_uwzglednic_alternatywna_nazwe,i)...end; </syntaxhighlight> Wtedy ciało funkcji tej, czyli jego definicja w środku, jest: <syntaxhighlight lang="lua"> -- Jest liczony numer parametru nazwy przestrzeni nazw, domyslnie chodzi tu o numer bazowy parametrów przestrzennych; local numer_jednostki=i or frame.args["numer jednostki"]; local liczba_numeru_jednostki=((numer_jednostki)and(tonumber(numer_jednostki)) or 0); local pudelko_pomocne_modul=require("Module:Pudełko/Pomocne"); -- Liczy nazwę przestrzeni nazw dyskusji na podstawie podanych parametrów; return pudelko_pomocne_modul.Uzyskanie_nazw_jednostki(frame,0,liczba_numeru_jednostki,nil,2); </syntaxhighlight> Parametry funkcji: * {{Code|frame}} - tablica ramki tablicy transportu, * {{Code|czy_uwzglednic_alternatywna_nazwe}} - czy ma uwzględniać nazwę przestrzeni nazw domyślną szablonu, dostępne wartości: {{Code|false}}, w której nazwa domyślna nie jest uwzględniana wtedy, oraz {{Code|nil}} i {{Code|true}}, które oznaczają to samo, w tym jeżeli ona jest uwzględniana, wtedy jest brany parametr pierwszy dziecka, który musi istnieć przy takiej wartości tego parametru, tzn. {{Code|{{m|Pudełko|Nazwa przestrzeni nazw 3|Szablon}}}}, a jeśli nazwa uzyskana nazwy przestrzeni nazw jest w takim przypadku błędna, to brany jest ten element, a jeżeli nazwa domyślna jest błędna, czyli {{Code|{{m|Pudełko|Nazwa przestrzeni nazw 3|Moja przestrzeń}}}}, wtedy funkcja zwraca stan błędu {{Code|(błąd)}}. * {{Code|i}} - numer zmiennej nazwy przestrzeni nazw. Funkcja wykorzystuje {{Code|{{sr|#p.Uzyskanie_nazw_jednostki(frame,...)|p=Pudełko/Pomocne}}}} do wyznaczania ogólnego nazwy przestrzeni nazw dla pozycji bazowej i numerkowej, tzn. dla pozycji: jeden, dwa, trzy,..., itd, i ich ogólnej. Parametr ramki tablicy transportu rodzica szablonu: * {{Code|nazwa przestrzeni nazw}}, {{Code|nazwa przestrzeni nazw 1}}, {{Code|Nazwa przestrzeni nazw 3}}, {{Code|nazwa przestrzeni nazw 3}},..., {{Code|nazwa przestrzeni nazw i}} - nazwy przestrzeni nazw dla pozycji bazowej oraz zwykłej i ogólnej numerkowej, * {{Code|nazwa jednostki}}, {{Code|nazwa jednostki 1}}, {{Code|nazwa jednostki 2}}, {{Code|nazwa jednostki 3}},... - nazwy jednostek dla pozycji bazowej i numerkowej, * {{Code|typ jednostki}}, {{Code|typ jednostki 1}}, {{Code|typ jednostki 2}}, {{Code|typ jednostki 3}},..., {{Code|typ jednostki i}} - typy jednostek, którym odpowiadają pewne przestrzenie przedmiotowe, dla pozycji bazowej, numerkowej i ogólnej, ** {{Code|dyskusja typu jednostki}}, {{Code|dyskusja typu jednostki 1}}, {{Code|dyskusja typ jednostki 2}}, {{Code|dyskusja typ jednostki 3}},..., {{Code|dyskusja typ jednostki i}} - czy dany typ jednostki ma przedstawiać, jeśli niepusta, przestrzeń dyskusji dla pozycji bazowej, numerkowej i ogólnej. Parametry ramki tablicy transportu dziecka: * Parametry dziecka są takie same jak rodzica dla funkcji pudełkowej plus tu wymienione, * {{Code|numer jednostki}} - jak parametr {{Code|i}} nie został ustawiony, to wtedy liczy się ta zmienna. Przykłady: <syntaxhighlight lang="mediawiki"> {{Nazwa szablonu 1|nazwa przestrzeni nazw=Wikibooks|nazwa przestrzeni nazw=|nazwa przestrzeni nazw i=|nazwa jednostki=Szablon:Strona}} ---- {{Nazwa szablonu 2|nazwa przestrzeni nazw=Wikibooks|nazwa przestrzeni nazw 1=Szablon|nazwa przestrzeni nazw i=|nazwa jednostki 2=Wikibooks:Strona}} </syntaxhighlight> W pierwszym wywołaniu {{Code|nazwa przestrzeni nazw}} jest puste, ale dla tego bazowego (bez numerka) szukamy przestrzeni nazw, a więc ta nazwa jest ostateczna. ---- W drugim wywołaniu w dziecku powiedzmy jest wywołanie, i szukamy nazwy przestrzeni nazw o numerze dwa, która została podana, ale istnieje za to jej wersji ogólna {{Code|nazwa przestrzeni nazw i}} i domyślna {{Code|nazwa przestrzeni nazw}}, ale wtedy dla tego numerkowego liczy się to ogólne z {{Code| i}}, a ponieważ ta nazwa jest pusta, więc będziemy liczyli nazwę przestrzeni nazw z {{Code|nazwa jednostki 2}}. Odpowiadająca powyższemu kodowi, powiedzmy wikikod, według ich zawartości, przedstawia się: <syntaxhighlight lang="mediawiki"> {{#invoke:Pudełko|Nazwa przestrzeni nazw 3}} ---- {{#invoke:Pudełko|Nazwa przestrzeni nazw 3|numer jednostki=2}} </syntaxhighlight> Na podstawie powyższego przykładu otrzymamy wynik o schemacie, nie wyniku, bo tam nie ma zmiennej {{Code|nazwa przestrzeni nazw 1}}, ale jest {{Code|nazwa przestrzeni nazw i}}: <syntaxhighlight lang="mediawiki"> <!-- nazwa przestrzeni nazw=""; --> <!-- Czyli wynik: --> <!-- wynik pusty --> <!-- Widzimy, że wygenerowała się nazwa przestrzeni nazw, którą jest przestrzeń nazw główna, jest ciągiem pustym: ""; --> ---- <!-- Ale nie "nazwa przestrzeni nazw 2", bo jej nie ma, ale za to istnieje "nazwa przestrzeni nazw i"; --> <!-- nazwa przestrzeni nazw 2=nazwa przestrzeni nazw i="", a nazwa jednostki 2="Wikibooks:Strona"; --> <!-- Czyli wynik: --> Wikibooks <!-- Widzimy, że wygenerowała się nazwa przestrzeni nazw, którą jest przestrzeń nieprogramowa, ale projektu, wychodząca z nazwy jednostek w tym przypadku z "nazwa jednostki 2"; --> </syntaxhighlight> Dla parametrów numerkowych nie jest brana w tym powyższym przykładzie zmienna {{Code|nazwa przestrzeni nazw 2}}, bo jej nie ma, ale za to jest {{Code|nazwa przestrzeni nazw i}}, bo ona występuje jako parametr domyślny ogólny dla parametrów numerkowych. Tytaj jest używana jest zmienna {{Code|nazwa jednostki 2}} do wygenerowania ostatecznego wyniku, bo jak można zauważyć, parametry przestrzenne wskazują na przestrzeń główną, a nazwy jednostek już nie. Dla parametrów bazowych mamy zmienną {{Code|nazwa przestrzeni nazw}}, ona jest pusta, więc to zostanie wziete do ostatecznego wyniku. Przykłady w wikikodzie: * {{Code|{{m|Pudełko|Nazwa przestrzeni nazw 3|Szablon|nazwa przestrzeni nazw{{=}}Moja przestrzeń|nazwa jednostki{{=}}Wikibooks:Strona}}}} → {{Tt|{{#invoke:Pudełko|Nazwa przestrzeni nazw 3|Szablon|nazwa przestrzeni nazw=Moja przestrzeń|nazwa jednostki=Wikibooks:Szablon}}}} * {{Code|{{m|Pudełko|Nazwa przestrzeni nazw 3|Szablon|nazwa przestrzeni nazw 2{{=}}Moja przestrzeń|nazwa jednostki 2{{=}}Wikibooks:Strona}|numer jednostki{{=}}2}}}} → {{Tt|{{#invoke:Pudełko|Nazwa przestrzeni nazw 3|Szablon|nazwa przestrzeni nazw 2=Moja przestrzeń|nazwa jednostki 2=Wikibooks:Szablon|numer jednostki=2}}}} * {{Code|{{m|Pudełko|Nazwa przestrzeni nazw 3|nazwa przestrzeni nazw{{=}}|nazwa jednostki{{=}}Wikibooks:Strona}}}} → {{Tt|{{#invoke:Pudełko|Nazwa przestrzeni nazw 3|nazwa przestrzeni nazw=|nazwa jednostki=Wikibooks:Szablon}}}} * {{Code|{{m|Pudełko|Nazwa przestrzeni nazw 3|nazwa przestrzeni nazw 2{{=}}|nazwa jednostki 2{{=}}Wikibooks:Strona|numer jednostki{{=}}2}}}} → {{Tt|{{#invoke:Pudełko|Nazwa przestrzeni nazw 3|nazwa przestrzeni nazw 2=|nazwa jednostki 2=Wikibooks:Szablon|numer jednostki=2}}}} Powyżej dla przykładu podano parametry nie w rodzicu w szablonie, tylko w dziecku, jeśli chodzi o parametry nazw przestrzeni nazw i nazw jednostek, ale ich się za to nie powinno podawać w tych ramach, tylko w szablonach, w których wywoływane są te ramki pudełek {{Code|{{m|Pudełko}}}}, ale tak tutaj tak zrobiono by było najłatwiej sprawdzić działanie tego typu funkcji. Analogicznie możemy podawać parametry typu jednostki, np.: wywołaniu modułowym {{Code|{{m|Pudełko|Nazwa przestrzeni nazw 3|typ jednostki 2{{=}}Podręcznik|nazwa jednostki 2{{=}}Szablon:Strona|numer jednostki{{=}}2}}}} (ale wtedy jest brana przestrzeń nazw z nazwy jednostki), ale o tym więcej w rozdziałach {{Code|{{sr|#p["Typ jednostki 3"](frame,i)|p=Pudełko}}}} w „{{sr|#Funkcje typu jednostki|p=Pudełko}}”, on definiuje przestrzenie przedmiotowe, ale można użyć parametru dyskusji typu jednostki z wartością niepustą, wtedy wyświetli się nazwa przestrzeni nazw dyskusji. Typ jednostki nie ma takiej samej wartości dla przestrzeni przedmiotowej, co dyskusji. Również parametry typu jednostki nie powinno się podawać w dziecku w ramce, tylko w rodzicu w szablonie jako parametry, w którym ta ramka jest wywoływana, ale tutaj podano jedynie dla przykładu, jak najłatwiej sprawdzić działanie tych parametrów tej funkcji. Najpierw w funkcji nagłówku brane są parametry nazw przestrzeni nazw, a jeżeli ich nie ma, to parametry typu jednostki, a jeżeli nie ma lub parametry przestrzenne wskazują na przestrzeń główną, i nie ma nazwy jednostki, to generowane są nazwy tej funkcji na podstawie aktualnej strony. === {{Code|p["Nazwa przedmiotowej przestrzeni nazw 3"](frame,i)}} === Funkcja pisze przedmiotową nazwę przestrzeni nazw jakikolwiek nazwy przestrzeni nazw (tzn. nazwę przedmiotową nazwy przestrzenie nazw, czyli nie dyskusji, zamieniana jest na nią samą, czyli identyfikator przestrzeni się nie zmienia, a dyskusji, nie przedmiotową, przekształca się na przedmiotową jej odpowiadającą, czyli w tym przypadku identyfikator przestrzeni zmniejsza się o numer mniej), według podanej w zmiennej {{Code|nazwa przestrzeni nazw}} dla pozycja bazowej w podanych parametrach szablonu rodzicu ramki dziecka, lub dla innej pozycji należy parametr podawać w formie {{Code|nazwa przestrzeni nazw 1}}, {{Code|nazwa przestrzeni nazw 2}}, {{Code|nazwa przestrzeni nazw 3}},..., lub te parametry można podać w postaci ogólnej {{Code|nazwa przestrzeni nazw i}}. Parametry podaje się w parametrach rodzica wywołania tej funkcji {{Code|{{m|Pudełko|Nazwa przedmiotowej przestrzeni nazw 3}}}} (ale ich nie trzeba podawać w dziecku, ale można) i w parametrach dziecka, jeśli chodzi o zmienną {{Code|numer jednostki}}, czyli np.: {{Code|{{m|Pudełko|Nazwa przedmiotowej przestrzeni nazw 3|numer jednostki{{=}}<jakaś liczba całkowita dodatnia>}}}}. Te parametry przestrzenne zamiast w rodzicu w szablonie można podać w ramce dziecka, wtedy parametry dziecka mają pierwszeństwo. Parametry przestrzenne mogą mogą być podane w postaci przestrzeni przedmiotowej lub dyskusji, ale ta funkcja zawsze ją zamienia na przedmiotową. Przestrzeń nazw z parametrów nazw przestrzennych bazowych (bez numerka) może odpowiadać wartości przestrzeni głównej, to wtedy odpowiednia przestrzeń nazw z parametru nazwy jednostki się nie liczy w tej funkcji, aby się liczyła należy użyć funkcji {{Code|{{sr|#p["Nazwa przedmiotowej przestrzeni nazw 2"](frame,...)|p=Pudełko}}}}. W tym przypadku funkcja działa jak {{Code|{{sr|#p["Nazwa przedmiotowej przestrzeni nazw"](frame,...)|p=Pudełko}}}}. Przestrzeń nazw z parametrów nazw przestrzennych numerkowych może odpowiadać wartości przestrzeni głównej, to wtedy odpowiednia przestrzeń nazw z parametru nazwy jednostki się liczy w tej funkcji, wtedy jest liczona nazwa przestrzeni nazw z tego parametru. Gdy parametry przestrzenne lub typ jednostki w drugim podejściu nie wskazują na przestrzeń główną, to wtedy działanie tej funkcji jest podobne do {{Code|{{sr|#p["Nazwa przedmiotowej przestrzeni nazw 2"](frame,...)|p=Pudełko}}}}. Definicja skrótowa funkcji: <syntaxhighlight lang="lua"> p["Nazwa przedmiotowej przestrzeni nazw 3"]=function(frame,czy_uwzglednic_alternatywna_nazwe,i)...end; </syntaxhighlight> Wtedy ciało funkcji tej, czyli jego definicja w środku, jest: <syntaxhighlight lang="lua"> -- Jest liczony numer parametru nazwy przestrzeni nazw, domyslnie chodzi tu o numer bazowy parametrów przestrzennych; local numer_jednostki=i or frame.args["numer jednostki"]; local liczba_numeru_jednostki=((numer_jednostki)and(tonumber(numer_jednostki)) or 0); local pudelko_pomocne_modul=require("Module:Pudełko/Pomocne"); -- Liczy nazwę przestrzeni nazw przedmiotową na podstawie podanych parametrów; return pudelko_pomocne_modul.Uzyskanie_nazw_jednostki(frame,1,liczba_numeru_jednostki,nil,1); </syntaxhighlight> Parametry funkcji: * {{Code|frame}} - tablica ramki tablicy transportu, * {{Code|czy_uwzglednic_alternatywna_nazwe}} - czy ma uwzględniać nazwę przestrzeni nazw domyślną szablonu, dostępne wartości: {{Code|false}}, w której nazwa domyślna nie jest uwzględniana wtedy, oraz {{Code|nil}} i {{Code|true}}, które oznaczają to samo, w tym jeżeli ona jest uwzględniana, wtedy jest brany parametr pierwszy dziecka, który musi istnieć przy takiej wartości tego parametru, tzn. {{Code|{{m|Pudełko|Nazwa przedmiotowej przestrzeni nazw 3|Dyskusja szablonu}}}} - ta nazwa domyślna zostanie zamieniona na przedmiotową, a jak ona by była przedmiotowa, to żadnej zamiany by nie było, a nazwa uzyskana z nazwy przestrzeni nazw z parametrów przestrzennych jest w takim przypadku błędna, to w takim razie brany jest ten parametr, a jeżeli ta nazwa domyślna jest błędna, czyli {{Code|{{m|Pudełko|Nazwa przedmiotowej przestrzeni nazw 3|Moja przestrzeń}}}}, wtedy funkcja zwraca stan błędu {{Code|(błąd)}}. * {{Code|i}} - numer zmiennej nazwy przestrzeni nazw. Funkcja wykorzystuje {{Code|{{sr|#p.Uzyskanie_nazw_jednostki(frame,...)|p=Pudełko/Pomocne}}}} do wyznaczania ogólnego nazwy przestrzeni nazw dla pozycji bazowej i numerkowej, tzn. dla pozycji: jeden, dwa, trzy,..., itd, i ich ogólnej. Parametr ramki tablicy transportu rodzica szablonu: * {{Code|nazwa przestrzeni nazw}}, {{Code|nazwa przestrzeni nazw 1}}, {{Code|nazwa przestrzeni nazw 2}}, {{Code|nazwa przestrzeni nazw 3}},..., {{Code|nazwa przestrzeni nazw i}} - nazwy przestrzeni nazw dla pozycji bazowej oraz zwykłej i ogólnej numerkowej, * {{Code|typ jednostki}}, {{Code|typ jednostki 1}}, {{Code|typ jednostki 2}}, {{Code|typ jednostki 3}},..., {{Code|typ jednostki i}} - typy jednostek, którym odpowiadają pewne przestrzenie przedmiotowe, dla pozycji bazowej, numerkowej i ogólnej. Parametry ramki tablicy transportu dziecka: * Parametry dziecka są takie same jak rodzica dla funkcji pudełkowej plus tu wymienione, * {{Code|numer jednostki}} - jak parametr {{Code|i}} nie został ustawiony, to wtedy liczy się ta zmienna. Przykłady: <syntaxhighlight lang="mediawiki"> {{Nazwa szablonu 1|nazwa przestrzeni nazw=Wikibooks|nazwa przestrzeni nazw=|nazwa przestrzeni nazw i=|nazwa jednostki=Dyskusja Wikibooks:Strona}} ---- {{Nazwa szablonu 2|nazwa przestrzeni nazw=Wikibooks|nazwa przestrzeni nazw 1=Szablon|nazwa przestrzeni nazw i=|nazwa jednostki 2=Dyskusja Wikibooks:Strona}} </syntaxhighlight> W pierwszym wywołaniu {{Code|nazwa przestrzeni nazw}} jest puste, ale dla tego bazowego (bez numerka) szukamy przestrzeni nazw, a więc ta nazwa jest ostateczna. ---- W drugim wywołaniu w dziecku powiedzmy jest wywołanie, i szukamy nazwy przestrzeni nazw o numerze dwa, która została podana, ale istnieje za to jej wersji ogólna {{Code|nazwa przestrzeni nazw i}} i domyślna {{Code|nazwa przestrzeni nazw}}, ale wtedy dla tego numerkowego liczy się to ogólne z {{Code| i}}, a ponieważ ta nazwa jest pusta, więc będziemy liczyli nazwę przestrzeni nazw z {{Code|nazwa jednostki 2}}. Odpowiadająca powyższemu kodowi, powiedzmy wikikod, według ich zawartości, przedstawia się: <syntaxhighlight lang="mediawiki"> {{#invoke:Pudełko|Nazwa przedmiotowej przestrzeni nazw 3}} ---- {{#invoke:Pudełko|Nazwa przedmiotowej przestrzeni nazw 3|numer jednostki=2}} </syntaxhighlight> Na podstawie powyższego przykładu otrzymamy wynik o schemacie, nie wyniku, bo tam nie ma zmiennej {{Code|nazwa przestrzeni nazw 1}}, ale jest {{Code|nazwa przestrzeni nazw i}}: <syntaxhighlight lang="mediawiki"> <!-- nazwa przestrzeni nazw=""; --> <!-- Czyli wynik: --> <!-- wynik pusty --> <!-- Widzimy, że wygenerowała się nazwa przestrzeni nazw, którą jest przestrzeń nazw główna, jest ciągiem pustym: ""; --> ---- <!-- Ale nie "nazwa przestrzeni nazw 2", bo jej nie ma, ale za to istnieje "nazwa przestrzeni nazw i"; --> <!-- nazwa przestrzeni nazw 2=nazwa przestrzeni nazw i="", a nazwa jednostki 2="Dyskusja Wikibooks:Strona"; --> <!-- Czyli wynik: --> Wikibooks <!-- Widzimy, że wygenerowała się nazwa przestrzeni nazw, którą jest przestrzeń nieprogramowa, ale projektu, wychodząca z nazwy jednostek w tym przypadku z "nazwa jednostki 2"; --> </syntaxhighlight> Dla parametrów numerkowych nie jest brana w tym powyższym przykładzie zmienna {{Code|nazwa przestrzeni nazw 2}}, bo jej nie ma, ale za to jest {{Code|nazwa przestrzeni nazw i}}, bo ona występuje jako parametr domyślny ogólny dla parametrów numerkowych. Tytaj jest używana jest zmienna {{Code|nazwa jednostki 2}} do wygenerowania ostatecznego wyniku, bo jak można zauważyć, parametry przestrzenne wskazują na przestrzeń główną, a nazwy jednostek już nie. Dla parametrów bazowych mamy zmienną {{Code|nazwa przestrzeni nazw}}, ona jest pusta, więc to zostanie wziete do ostatecznego wyniku. Przykłady w wikikodzie: * {{Code|{{m|Pudełko|Nazwa przedmiotowej przestrzeni nazw 3|Dyskusja szablonu|nazwa przestrzeni nazw{{=}}Moja przestrzeń|nazwa jednostki{{=}}Dyskusja Wikibooks:Strona}}}} → {{Tt|{{#invoke:Pudełko|Nazwa przedmiotowej przestrzeni nazw 3|Dyskusja szablonu|nazwa przestrzeni nazw=Moja przestrzeń||nazwa jednostki=Dyskusja Wikibooks:Szablon}}}} * {{Code|{{m|Pudełko|Nazwa przedmiotowej przestrzeni nazw 3|Dyskusja szablonu|nazwa przestrzeni nazw 2{{=}}Moja przestrzeń|nazwa jednostki 2{{=}}Dyskusja Wikibooks:Strona|numer jednostki{{=}}2}}}} → {{Tt|{{#invoke:Pudełko|Nazwa przedmiotowej przestrzeni nazw 3|Dyskusja szablonu|nazwa przestrzeni nazw 2=Moja przestrzeń||nazwa jednostki 2=Dyskusja Wikibooks:Szablon|numer jednostki=2}}}} * {{Code|{{m|Pudełko|Nazwa przedmiotowej przestrzeni nazw 3|nazwa przestrzeni nazw{{=}}|nazwa jednostki{{=}}Dyskusja Wikibooks:Strona}}}} → {{Tt|{{#invoke:Pudełko|Nazwa przedmiotowej przestrzeni nazw 3|nazwa przestrzeni nazw=|nazwa jednostki=Dyskusja Wikibooks:Szablon}}}} * {{Code|{{m|Pudełko|Nazwa przedmiotowej przestrzeni nazw 3|nazwa przestrzeni nazw 2{{=}}|nazwa jednostki 2{{=}}Dyskusja Wikibooks:Strona|numer jednostki{{=}}2}}}} → {{Tt|{{#invoke:Pudełko|Nazwa przedmiotowej przestrzeni nazw 3|nazwa przestrzeni nazw 2=|nazwa jednostki 2=Dyskusja Wikibooks:Szablon|numer jednostki=2}}}} Powyżej dla przykładu podano parametry nie w rodzicu w szablonie, tylko w dziecku, jeśli chodzi o parametry nazw przestrzeni nazw, ale ich się za to nie powinno podawać w tych ramach, tylko w szablonach, w których wywoływane są te ramki pudełek {{Code|{{m|Pudełko}}}}, ale tak tutaj tak zrobiono by było najłatwiej sprawdzić działanie tego typu funkcji. Analogicznie możemy podawać parametry typu jednostki, np.: wywołaniu modułowym {{Code|{{m|Pudełko|Nazwa przedmiotowej przestrzeni nazw 3|typ jednostki 2{{=}}strona szablonu|numer jednostki{{=}}2}}}}, ale o tym więcej w rozdziałach {{Code|{{sr|# p["Przedmiotowy typ jednostki 3"](frame,i)|p=Pudełko}}}} w „{{sr|#Funkcje typu jednostki|p=Pudełko}}”, ale wtedy ta sama nazwa przestrzeni nazw reprezentowana przez {{Parametr|typ jednostki 2|strona szablonu}}, jest zamieniana na to samo, lepiej jest tutaj używać parametrów przestrzennych nazw niż typu jednostki, bo typ jednostki ma taką samą wartość dla przestrzeni przedmiotowej, co dyskusji. Tutaj parametr dyskusji typu jednostki bazowy i numerkowy ogólny, czy szczegółowy, nie gra roli, bo nawet, gdy wygenerujemy nazwę przestrzeni dyskusji za pomoca tego parametru, to i tak otrzymamy na samym końcu jego nazwę przedmiotową. Jeżeli typ jednostki bazowy wskazuje na przestrzeń nazw główną, wtedy się nie liczą parametry nazw jednostek, a w przypadku numerkowego, wtedy się liczy. Typ jednostki nie ma takiej samej wartości dla przestrzeni przedmiotowej, co dyskusji. Również parametry typu jednostki nie powinno się podawać w dziecku w ramce, tylko w rodzicu w szablonie jako parametry, w którym ta ramka jest wywoływana, ale tutaj podano jedynie dla przykładu, jak najłatwiej sprawdzić działanie tych parametrów tej funkcji. Najpierw w funkcji nagłówku brane są parametry nazw przestrzeni nazw, a jeżeli ich nie ma, to parametry typu jednostki, a jeżeli nie ma, to generowane są nazwy na podstawie aktualnego modułu. === {{Code|p["Nazwa przestrzeni nazw dyskusji 3"](frame,i)}} === Funkcja pisze nazwę przestrzeni nazw dyskusji jakikolwiek nazwy przestrzeni nazw (tzn. nazwę dyskusji nazwy przestrzenie nazw, czyli nie przedmiotowej, zamieniana jest na nią samą, czyli identyfikator przestrzeni się nie zmienia, a przedmiotową, nie dyskusji, przekształca się na dyskusji jej odpowiadającą, czyli w tym przypadku identyfikator przestrzeni zwiększa się o numer więcej), według, i nie zawsze tylko, podanej w zmiennej {{Code|nazwa przestrzeni nazw}} dla pozycja bazowej w podanych parametrach szablonu rodzicu ramki dziecka, lub dla innej pozycji należy parametr podawać w formie {{Code|nazwa przestrzeni nazw 1}}, {{Code|nazwa przestrzeni nazw 2}}, {{Code|nazwa przestrzeni nazw 3}},..., lub te parametry można podać w postaci ogólnej {{Code|nazwa przestrzeni nazw i}}. W tej funkcji trzeba też podawać parametry nazwy jednostek {{Code|nazwa jednostki}}, {{Code|nazwa jednostki 1}}, {{Code|nazwa jednostki 2}}, {{Code|nazwa jednostki 3}},... Parametry podaje się w parametrach rodzica wywołania tej funkcji {{Code|{{m|Pudełko|Nazwa przestrzeni nazw dyskusji 3}}}} (ale ich nie trzeba podawać w dziecku, ale można) i w parametrach dziecka, jeśli chodzi o zmienną {{Code|numer jednostki}}, czyli np.: {{Code|{{m|Pudełko|Nazwa przestrzeni nazw dyskusji 3|numer jednostki{{=}}<jakaś liczba całkowita dodatnia>}}}}. Te parametry przestrzenne zamiast w rodzicu w szablonie można podać w ramce dziecka, wtedy parametry dziecka mają pierwszeństwo. Przestrzeń nazw z parametrów nazw przestrzennych bazowych (bez numerka) może odpowiadać wartości przestrzeni głównej, to wtedy odpowiednia przestrzeń nazw z parametru nazwy jednostki się nie liczy w tej funkcji, aby się liczyła należy użyć funkcji {{Code|{{sr|#p["Nazwa przestrzeni nazw dyskusji 2"](frame,...)|p=Pudełko}}}}. W tym przypadku funkcja działa jak {{Code|{{sr|#p["Nazwa przestrzeni nazw dyskusji"](frame,...)|p=Pudełko}}}}. Przestrzeń nazw z parametrów nazw przestrzennych numerkowych może odpowiadać wartości przestrzeni głównej, to wtedy odpowiednia przestrzeń nazw z parametru nazwy jednostki się liczy w tej funkcji, wtedy jest liczona nazwa przestrzeni nazw z tego parametru. Gdy parametry przestrzenne lub typ jednostki w drugim podejściu nie wskazują na przestrzeń główną, to wtedy działanie tej funkcji jest podobne do {{Code|{{sr|#p["Nazwa przestrzeni nazw dyskusji 2"](frame,...)|p=Pudełko}}}}. Definicja skrótowa funkcji: <syntaxhighlight lang="lua"> p["Nazwa przestrzeni nazw dyskusji 3"]=function(frame,czy_uwzglednic_alternatywna_nazwe,i)...end; </syntaxhighlight> Wtedy ciało funkcji tej, czyli jego definicja w środku, jest: <syntaxhighlight lang="lua"> -- Jest liczony numer parametru nazwy przestrzeni nazw, domyslnie chodzi tu o numer bazowy parametrów przestrzennych; local numer_jednostki=i or frame.args["numer jednostki"]; local liczba_numeru_jednostki=((numer_jednostki)and(tonumber(numer_jednostki)) or 0); local pudelko_pomocne_modul=require("Module:Pudełko/Pomocne"); -- Liczy nazwę przestrzeni nazw dyskusji na podstawie podanych parametrów; return pudelko_pomocne_modul.Uzyskanie_nazw_jednostki(frame,2,liczba_numeru_jednostki,nil,1); </syntaxhighlight> Parametry funkcji: * {{Code|frame}} - tablica ramki tablicy transportu, * {{Code|czy_uwzglednic_alternatywna_nazwe}} - czy ma uwzględniać nazwę przestrzeni nazw domyślną szablonu, dostępne wartości: {{Code|false}}, w której nazwa domyślna nie jest uwzględniana wtedy, oraz {{Code|nil}} i {{Code|true}}, które oznaczają to samo, w tym jeżeli ona jest uwzględniana, wtedy jest brany parametr pierwszy dziecka, który musi istnieć przy takiej wartości tego parametru, tzn. {{Code|{{m|Pudełko|Nazwa przestrzeni nazw dyskusji 3|Szablon}}}}, nazwa domyślna zostatnie zamieniona na dyskusji, a jeśli jest już taka, to takiej transfomacji nie ma, a jeśli nazwa uzyskana nazwy przestrzeni nazw jest w takim przypadku błędna, to wzięty jest ten parametr, a jeżeli nazwa domyślna jest błędna, czyli {{Code|{{m|Pudełko|Nazwa przestrzeni nazw dyskusji 3|Moja przestrzeń}}}}, wtedy funkcja zwraca stan błędu {{Code|(błąd)}}. * {{Code|i}} - numer zmiennej nazwy przestrzeni nazw. Funkcja wykorzystuje {{Code|{{sr|#p.Uzyskanie_nazw_jednostki(frame,...)|p=Pudełko/Pomocne}}}} do wyznaczania ogólnego nazwy przestrzeni nazw dla pozycji bazowej i numerkowej, tzn. dla pozycji: jeden, dwa, trzy,..., itd, i ich ogólnej. Parametr ramki tablicy transportu rodzica szablonu: * {{Code|nazwa przestrzeni nazw}}, {{Code|nazwa przestrzeni nazw 1}}, {{Code|nazwa przestrzeni nazw 2}}, {{Code|nazwa przestrzeni nazw 3}},..., {{Code|nazwa przestrzeni nazw i}} - nazwy przestrzeni nazw dla pozycji bazowej oraz zwykłej i ogólnej numerkowej, * {{Code|nazwa jednostki}}, {{Code|nazwa jednostki 1}}, {{Code|nazwa jednostki 2}}, {{Code|nazwa jednostki 3}},... - nazwy jednostek dla pozycji bazowej i numerkowej, * {{Code|typ jednostki}}, {{Code|typ jednostki 1}}, {{Code|typ jednostki 2}}, {{Code|typ jednostki 3}},..., {{Code|typ jednostki i}} - typy jednostek, którym odpowiadają pewne przestrzenie przedmiotowe, dla pozycji bazowej, numerkowej i ogólnej. Parametry ramki tablicy transportu dziecka: * Parametry dziecka są takie same jak rodzica dla funkcji pudełkowej plus tu wymienione, * {{Code|numer jednostki}} - jak parametr {{Code|i}} nie został ustawiony, to wtedy liczy się ta zmienna. Przykłady: <syntaxhighlight lang="mediawiki"> {{Nazwa szablonu 1|nazwa przestrzeni nazw=Wikibooks|nazwa przestrzeni nazw=|nazwa przestrzeni nazw i=|nazwa jednostki=Szablon:Strona}} ---- {{Nazwa szablonu 2|nazwa przestrzeni nazw=Wikibooks|nazwa przestrzeni nazw 1=Szablon|nazwa przestrzeni nazw i=|nazwa jednostki 2=Wikibooks:Strona}} </syntaxhighlight> W pierwszym wywołaniu {{Code|nazwa przestrzeni nazw}} jest puste, ale dla tego bazowego (bez numerka) szukamy przestrzeni nazw, a więc ta nazwa jest ostateczna. ---- W drugim wywołaniu w dziecku powiedzmy jest wywołanie, i szukamy nazwy przestrzeni nazw o numerze dwa, która została podana, ale istnieje za to jej wersji ogólna {{Code|nazwa przestrzeni nazw i}} i domyślna {{Code|nazwa przestrzeni nazw}}, ale wtedy dla tego numerkowego liczy się to ogólne z {{Code| i}}, a ponieważ ta nazwa jest pusta, więc będziemy liczyli nazwę przestrzeni nazw z {{Code|nazwa jednostki 2}}. Odpowiadająca powyższemu kodowi, powiedzmy wikikod, według ich zawartości, przedstawia się: <syntaxhighlight lang="mediawiki"> {{#invoke:Pudełko|Nazwa przestrzeni nazw 3}} ---- {{#invoke:Pudełko|Nazwa przestrzeni nazw 3|numer jednostki=2}} </syntaxhighlight> Na podstawie powyższego przykładu otrzymamy wynik o schemacie, nie wyniku, bo tam nie ma zmiennej {{Code|nazwa przestrzeni nazw 1}}, ale jest {{Code|nazwa przestrzeni nazw i}}: <syntaxhighlight lang="mediawiki"> <!-- nazwa przestrzeni nazw=""; --> <!-- Czyli wynik: --> Dyskusja <!-- Widzimy, że wygenerowała się nazwa przestrzeni nazw, którą jest przestrzeń nazw niegłówna, jest ciągiem niepustym; --> ---- <!-- Ale nie "nazwa przestrzeni nazw 2", bo jej nie ma, ale za to istnieje "nazwa przestrzeni nazw i"; --> <!-- nazwa przestrzeni nazw 2=nazwa przestrzeni nazw i="", a nazwa jednostki 2="Wikibooks:Strona"; --> <!-- Czyli wynik: --> Dyskusja Wikibooks <!-- Widzimy, że wygenerowała się nazwa przestrzeni nazw, którą jest przestrzeń nieprogramowa, ale projektu, wychodząca z nazwy jednostek w tym przypadku z "nazwa jednostki 2"; --> </syntaxhighlight> Dla parametrów numerkowych nie jest brana w tym powyższym przykładzie zmienna {{Code|nazwa przestrzeni nazw 2}}, bo jej nie ma, ale za to jest {{Code|nazwa przestrzeni nazw i}}, bo ona występuje jako parametr domyślny ogólny dla parametrów numerkowych. Tytaj jest używana jest zmienna {{Code|nazwa jednostki 2}} do wygenerowania ostatecznego wyniku, bo jak można zauważyć, parametry przestrzenne wskazują na przestrzeń główną, a nazwy jednostek już nie. Dla parametrów bazowych mamy zmienną {{Code|nazwa przestrzeni nazw}}, ona jest pusta, więc to zostanie wziete do ostatecznego wyniku. Przykłady w wikikodzie: * {{Code|{{m|Pudełko|Nazwa przestrzeni nazw dyskusji 3|Szablon|nazwa przestrzeni nazw{{=}}Moja przestrzeń|nazwa jednostki{{=}}Wikibooks:Strona}}}} → {{Tt|{{#invoke:Pudełko|Nazwa przestrzeni nazw dyskusji 3|Szablon|nazwa przestrzeni nazw=Moja przestrzeń|nazwa jednostki=Wikibooks:Szablon}}}} * {{Code|{{m|Pudełko|Nazwa przestrzeni nazw dyskusji 3|Szablon|nazwa przestrzeni nazw 2{{=}}Moja przestrzeń|nazwa jednostki 2{{=}}Wikibooks:Strona|numer jednostki{{=}}2}}}} → {{Tt|{{#invoke:Pudełko|Nazwa przestrzeni nazw dyskusji 3|Szablon|nazwa przestrzeni nazw 2=Moja przestrzeń|nazwa jednostki 2=Wikibooks:Szablon|numer jednostki=2}}}} * {{Code|{{m|Pudełko|Nazwa przestrzeni nazw dyskusji 3|nazwa przestrzeni nazw{{=}}|nazwa jednostki{{=}}Wikibooks:Strona}}}} → {{Tt|{{#invoke:Pudełko|Nazwa przestrzeni nazw dyskusji 3|nazwa przestrzeni nazw=|nazwa jednostki=Wikibooks:Szablon}}}} * {{Code|{{m|Pudełko|Nazwa przestrzeni nazw dyskusji 3|nazwa przestrzeni nazw 2{{=}}|nazwa jednostki 2{{=}}Wikibooks:Strona|numer jednostki{{=}}2}}}} → {{Tt|{{#invoke:Pudełko|Nazwa przestrzeni nazw dyskusji 3|nazwa przestrzeni nazw 2=|nazwa jednostki 2=Wikibooks:Szablon|numer jednostki=2}}}} Powyżej dla przykładu podano parametry nie w rodzicu w szablonie, tylko w dziecku, jeśli chodzi o parametry nazw przestrzeni nazw i nazw jednostek, ale ich się za to nie powinno podawać w tych ramach, tylko w szablonach, w których wywoływane są te ramki pudełek {{Code|{{m|Pudełko}}}}, ale tak tutaj tak zrobiono by było najłatwiej sprawdzić działanie tego typu funkcji. Analogicznie możemy podawać parametry typu jednostki, np.: wywołaniu modułowym {{Code|{{m|Pudełko|Nazwa przestrzeni nazw dyskusji 3|typ jednostki 2{{=}}Podręcznik|nazwa jednostki 2{{=}}Szablon:Strona|numer jednostki{{=}}2}}}} (ale wtedy jest brana przestrzeń nazw z nazwy jednostki), ale o tym więcej w rozdziałach {{Code|{{sr|# p["Dyskusyjny typ jednostki 3"](frame,i)|p=Pudełko}}}} w „{{sr|#Funkcje typu jednostki|p=Pudełko}}”, one definiują przestrzenie dyskusji, ale można użyć parametru dyskusji typu jednostki z obojętnie jaką wartością niepustą, czy pustą, czy nawet jej nie podamy, wtedy wyświetli się nazwa przestrzeni nazw dyskusji. Jeżeli typ jednostki bazowy wskazuje na przestrzeń nazw główną, wtedy się nie liczą parametry nazw jednostek, a w przypadku numerkowego, wtedy się liczy. Typ jednostki nie ma takiej samej wartości dla przestrzeni przedmiotowej, co dyskusji. Również parametry typu jednostki nie powinno się podawać w dziecku w ramce, tylko w rodzicu w szablonie jako parametry, w którym ta ramka jest wywoływana, ale tutaj podano jedynie dla przykładu, jak najłatwiej sprawdzić działanie tych parametrów tej funkcji. Najpierw w funkcji nagłówku brane są parametry nazw przestrzeni nazw, a jeżeli ich nie ma, to parametry typu jednostki, a jeżeli nie ma lub parametry przestrzenne wskazują na przestrzeń główną, i nie ma nazwy jednostki, to generowane są nazwy tej funkcji na podstawie aktualnej strony. == Funkcje nazw jednostki trzeciej wersji == === {{Code|p["Nazwa jednostki 3"](frame,i)}} === === {{Code|p["Nazwa przedmiotowa jednostki 3"](frame,i)}} === === {{Code|p["Nazwa dyskusji jednostki 3"](frame,i)}} === == Funkcje typu jednostki == === {{Code|p["Typ jednostki"](frame,i)}} === === {{Code|p["Typ jednostki 2"](frame,i)}} === === {{Code|p["Typ jednostki 3"](frame,i)}} === === Funkcje typu jednostki przedmiotowe === ==== {{Code|p["Przedmiotowy typ jednostki"](frame,i)}} ==== ==== {{Code|p["Przedmiotowy typ jednostki 2"](frame,i)}} ==== ==== {{Code|p["Przedmiotowy typ jednostki 3"](frame,i)}} ==== === Fukcje typu jednostki dyskusji === ==== {{Code|p["Dyskusyjny typ jednostki"](frame,i)}} ==== ==== {{Code|p["Dyskusyjny typ jednostki 2"](frame,i)}} ==== ==== {{Code|p["Dyskusyjny typ jednostki 3"](frame,i)}} ==== == Funkcje chech pudełka == === {{Code|p["Cecha pudełka"](frame)}} === === {{Code|p["Przedmiotowa cecha pudełka"](frame)}} === === {{Code|p["Dyskusyjna cecha pudełka"](frame)}} === == Fukcje ogólnego pudełka == === {{Code|p["Ogólne pudełko"](frame)}} === == Funkcje ogólne == === {{Code|p["Tekst pudełka"](frame)}} === == Funkcje błędów pudełka == === {{Code|p["Błędy pudełka"](frame)}} === === {{Code|p["Przedmiotowe błędy pudełka"](frame)}} === === {{Code|p["Dyskusyjne błędy pudełka"](frame)}} === == Funkcje nazw stron == === {{Code|p["Nazwa strony głównej projektu"](frame,i)}} === === {{Code|p["Nazwa strony głównej dla dzieci projektu"](frame,i)}} === == Funkcje kodów == === {{Code|p["Kod języka"](frame,i)}} === === {{Code|p["Kod projektu"](frame,i)}} === === {{Code|p["Klucz projektu"](frame,i)}} === == Funkcje wiki == === {{Code|p["Inny niż język bieżący wiki"](frame)}} === === {{Code|p["Inne niż lokalne wiki"](frame)}} === === {{Code|p["Inne niż bieżące wiki"](frame)}} === == Funkcje typów parametrów, czy podane je == === {{Code|p["Podano parametry nienazwane"](frame)}} === === {{Code|p["Podano parametry numerowane"](frame)}} === === {{Code|p["Podano parametry nazwane"](frame)}} === == Funkcje kodów tego projektu == === {{Code|p["Kod projektu tego projektu"](frame)}} === === {{Code|p["Kod języka tego projektu"](frame)}} === === {{Code|p["Klucz projektu tego projektu"](frame)}} === == Funkcje stron == === {{Code|p["Strona główna tego projektu"](frame)}} === === {{Code|p["Strona główna dla dzieci tego projektu"](frame)}} === == Funkcje nazw stron drugiej wersji == === {{Code|p["Nazwa strony głównej dla dzieci projektu 2"](frame)}} === === {{Code| p["Nazwa strony głównej projektu 2"](frame)}} === {{BrClear}} <noinclude><!-- -->{{ProstaStronaKoniec}}<!-- -->{{Kategoria|Opisy funkcji, w Lua w Scribunto, w modułach}}<!-- --></noinclude> 3fp5n5v5xs7y5pzof9m8l44b94l9lmk 540466 540465 2026-04-24T06:49:28Z Persino 2851 540466 wikitext text/x-wiki <noinclude>{{ProstaStronaStart | nagłówek = {{Podrozdział|{{ld2|Pudełko}}|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 pudelko_modul=require("Module:Pudełko"); </syntaxhighlight> dzięki, któremu można wypisywać funkcje należącego do niego. Posługuje się na parametrach pudełkowych {{Parametr|nazwa przestrzeni nazw}} (czy też bez numerka {{Parametr|nazwa przestrzeni nazw i}} dla tego numerowanego) lub te z numerkiem po jednej spacji w nich (ale nie dla tego z końcówką {{Code| i}}) mogą zostać użyte jako parametry szablonu. Moduł {{Code|{{ld2|Pudełko}}}} przedstawia funkcje nazw w oparciu o funkcje nazw {{Code|{{ld2|Nazwy}}}}, generuje on nazwy za pomocą parametrów pudełkowych podanych poniżej. Parametr {{Parametr|nazwa jednostki}} (lub parametr {{Parametr|cel}} dla numerka tego pierwszego, tego alternatywnego), lub te z numerkiem po jednej spacji w nazwie parametru, albo numerowane numerkami {{Code|1}}, {{Code|2}},..., mogą zostać użyte jako parametry szablonu. Parametry określające rodzaj jednostki {{Parametr|typ jednostki}} z {{Parametr|dyskusja typu jednostki}}, itp. w wersjach z numerkiem po jednej spacji w nich mogą zostać użyte jako parametry szablonu. A te tymi numerowanymi liczbami naturalnymi {{Tt|nazwy jednostki}} od jedynki wzwyż poprzez szablon, w którym są one użyte, one też mogą być użyte z dwukropkiem, te numerowane, na samym początku nazwy, wtedy one są traktowane jako pełne nazwy strony, i wtedy one nie zostaną z interpretowane, że do nich trzeba użyć parametr odpowiedni z nazwą przetrzeni nazw z tego numerowanego, czy ogólny, aby utworzyć znów inną pełną nazwę strony dla tego numerka. Zestawienie: * {{Code|nazwa przestrzeni nazw}} i {{Code|nazwa przestrzeni nazw i}} (ogólna nazwa przestrzeni nazw dla wszystkich numerków, i tych numerowanych jednostek) - i to pierwsze z numerkiem, tzn. {{Code|nazwa przestrzeni nazw 1}}, {{Code|nazwa przestrzeni nazw 2}}, ..., * {{Code|nazwa jednostki}} - i te z numerkiem: {{Code|nazwa jednostki 1}}, {{Code|nazwa jednostki 2}}, ..., lub gdy jest zamiast tego parametrem numerowany, {{Code|1}}, {{Code|2}},..., który dla tego pierwszego może być uznany jako: {{Code|cel}} {{=}} {{Code|1}}, * {{Code|typ jednostki}} (parametr bazowy) i {{Code|typ jednostki i}} (parametr domyślny numerkowy) - i te z numerkiem: {{Code|typ jednostki 1}}, {{Code|typ jednostki 2}}, ..., tzn. gdy chcemy określić z jakim typem jednostki mamy do czynienia w zależności do jakiej przestrzeni nazw należy, a w danej, czy jest on np. programowy, czy tylko jest opisem, jak to bywa w szablonach {{Np|Template|link=tak}}, podobnie jest w przypadku {{Np|Module|link=tak}}, czy jak jest w innych przestrzeniach nazw, ** {{Code|dyskusja typu jednostki}} (parametr bazowy) i {{Code|dyskusja typu jednostki i}} (parametr domyślny numerkowy) - i te z numerkiem: {{Code|dyskusja typu jednostki 1}}, {{Code|dyskusja typu jednostki 2}}, ..., gdy chcemy określić wartością niepustą,że chodzi tutaj o typ jednostki. == {{Code|p.CzyNiepoprawnaNazwa(nazwa_jednostki)}} == Funkcja sprawdzajaca, czy jest poprawnie podana nazwa jednostki, czy ma poprawną nazwę. Znakami tymi, z których nie powinna składać się nazwa jest {{Code|<nowiki>{}<>|[]#\n</nowiki>}} i dodatkowo znak {{Code|&#127;}} (kod {{Code|{{Nowiki|&#127;}}}}). Też nie może składać się z trzech znaków tyldy, tzn. {{Code|<nowiki>~~~</nowiki>}}. Również w swojej budowie nie może składać się ze kodów {{Strong|HTML}} literowych o wzorze {{Code|{{Nowiki|&(%a+);}}}}. Natomiast może składać się z {{Code|{{Nowiki|&#(%d+);}}}} i {{Code|{{Nowiki|&#x(%x+);}}}}, ale w pierw te kody muszą być zamienione na normalne znaki. Skrótowa definicja funkcji: <syntaxhighlight lang="lua"> function p.CzyNiepoprawnaNazwa(nazwa_jednostki)...end; </syntaxhighlight> Wtedy ciało funkcji tej, czyli jego definicja w środku, jest: <syntaxhighlight lang="lua"> -- Moduł: "Moduł:Html/dane", służy do ładowania znaku o kodzie HTML "&#127;"; local html_dane_modul=mw.loadData("Module:Html/dane"); return mw.ustring.match(nazwa_jednostki,"[{}<>|%[%]#\n"..html_dane_modul.znak_127.."]+") or mw.ustring.match(nazwa_jednostki,"~~~") or mw.ustring.match(nazwa_jednostki,"&(%a+);"); </syntaxhighlight> Parametry: * {{Code|nazwa_jednostki}} - nazwa jednostki do sprawdzenia. Przykłady: <syntaxhighlight lang="lua"> local pudelko_modul=require("Module:Pudełko"); -- Podana przykładowa niepoprawna nazwa jedostki local nazwa_jednostki="Nazwa pliku [[Nazwa linku w pliku]]"; -- Fukcja zwróci wartość: local czy_poprawna_nazwa=true; local czy_poprawna_nazwa=pudelko_modul.CzyNiepoprawnaNazwa(nazwa_jednostki); </syntaxhighlight> == Funkcje nazw przestrzeni nazw == === {{Code|p["Nazwa przestrzeni nazw"](frame,...)}} === Funkcja pisze nazwę przestrzeni nazw, niezależnie, czy to jest przedmiotowa, czy dyskusji, według podanej w zmiennej {{Code|nazwa przestrzeni nazw}} dla pozycja bazowej w podanych parametrach szablonu rodzicu ramki dziecka, lub dla innej pozycji należy parametr podawać w formie {{Code|nazwa przestrzeni nazw 1}}, {{Code|nazwa przestrzeni nazw 2}}, {{Code|nazwa przestrzeni nazw 3}},..., lub te parametry można podać w postaci ogólnej {{Code|nazwa przestrzeni nazw i}}. Parametry podaje się w parametrach rodzica wywołania tej funkcji {{Code|{{m|Pudełko|Nazwa przestrzeni nazw}}}} (ale ich nie trzeba podawać w dziecku, ale można) i w parametrach dziecka, jeśli chodzi o zmienną {{Code|numer jednostki}}, czyli np.: {{Code|{{m|Pudełko|Nazwa przestrzeni nazw|numer jednostki{{=}}<jakaś liczba całkowita dodatnia>}}}}. Te parametry przestrzenne zamiast w rodzicu w szablonie można podać w ramce dziecka, wtedy parametry dziecka mają pierwszeństwo. Przestrzeń nazw z parametrów nazw przestrzennych może odpowiadać wartości przestrzeni głównej, to wtedy odpowiednia przestrzeń nazw z parametru nazwy jednostki się nie liczy w tej funkcji, aby się liczyła należy użyć funkcji {{Code|{{sr|#p["Nazwa przestrzeni nazw 2"](frame,...)|p=Pudełko}}}}. Definicja skrótowa funkcji: <syntaxhighlight lang="lua"> p["Nazwa przestrzeni nazw"]=function(frame,czy_uwzglednic_alternatywna_nazwe,i)...end; </syntaxhighlight> Wtedy ciało funkcji tej, czyli jego definicja w środku, jest: <syntaxhighlight lang="lua"> -- Jest liczony numer parametru nazwy przestrzeni nazw, domyslnie chodzi tu o numer bazowy parametrów przestrzennych; local numer_jednostki=i or frame.args["numer jednostki"]; local liczba_numer_jednostki=((numer_jednostki)and(tonumber(numer_jednostki))or 0); local pudelko_pomocne_modul=require("Module:Pudełko/Pomocne"); -- Liczy nazwę przestrzeni nazw na podstawie podanych parametrów; return pudelko_pomocne_modul.Nazwa_przestrzeni_nazw(frame,0, czy_uwzglednic_alternatywna_nazwe,liczba_numer_jednostki); </syntaxhighlight> Parametry funkcji: * {{Code|frame}} - tablica ramki tablicy transportu, * {{Code|czy_uwzglednic_alternatywna_nazwe}} - czy ma uwzględniać nazwę przestrzeni nazw domyślną szablonu, dostępne wartości: {{Code|false}}, w której nazwa domyślna nie jest uwzględniana wtedy, oraz {{Code|nil}} i {{Code|true}}, które oznaczają to samo, w tym jeżeli ona jest uwzględniana, wtedy jest brany parametr pierwszy dziecka, który musi istnieć przy takiej wartości tego parametru, tzn. {{Code|{{m|Pudełko|Nazwa przestrzeni nazw|Szablon}}}}, a ten element jest używany, gdy nazwa uzyskana nazwy przestrzeni nazw jest w takim przypadku błędna, a jeżeli wtedy nazwa domyślna jest błędna, czyli {{Code|{{m|Pudełko|Nazwa przestrzeni nazw|Moja przestrzeń}}}}, wtedy funkcja zwraca stan błędu {{Code|(błąd)}}. * {{Code|i}} - numer zmiennej nazwy przestrzeni nazw. Funkcja wykorzystuje {{Code|{{sr|#p.Nazwa_przestrzeni_nazw(frame,...)|p=Pudełko/Pomocne}}}} do wyznaczania ogólnego nazwy przestrzeni nazw dla pozycji bazowej i numerkowej, tzn. dla pozycji: jeden, dwa, trzy,..., itd, i ich ogólnej. Parametr ramki tablicy transportu rodzica szablonu: * {{Code|nazwa przestrzeni nazw}}, {{Code|nazwa przestrzeni nazw 1}}, {{Code|nazwa przestrzeni nazw 2}}, {{Code|nazwa przestrzeni nazw 3}},..., {{Code|nazwa przestrzeni nazw i}} - nazwy przestrzeni nazw dla pozycji bazowej oraz zwykłej i ogólnej numerkowej, * {{Code|typ jednostki}}, {{Code|typ jednostki 1}}, {{Code|typ jednostki 2}}, {{Code|typ jednostki 3}},..., {{Code|typ jednostki i}} - typy jednostek, którym odpowiadają pewne przestrzenie przedmiotowe, dla pozycji bazowej, numerkowej i ogólnej, ** {{Code|dyskusja typu jednostki}}, {{Code|dyskusja typu jednostki 1}}, {{Code|dyskusja typ jednostki 2}}, {{Code|dyskusja typ jednostki 3}},..., {{Code|dyskusja typ jednostki i}} - czy dany typ jednostki ma przedstawiać, jeśli niepusta, przestrzeń dyskusji dla pozycji bazowej, numerkowej i ogólnej. Parametry ramki tablicy transportu dziecka: * Parametry dziecka są takie same jak rodzica dla funkcji pudełkowej plus tu wymienione, * {{Code|numer jednostki}} - jak parametr {{Code|i}} nie został ustawiony, to wtedy liczy się ta zmienna. Przykłady: <syntaxhighlight lang="mediawiki"> {{Nazwa szablonu|nazwa przestrzeni nazw=Wikibooks|nazwa przestrzeni nazw 2=Szablon|nazwa przestrzeni nazw i=Moduł}} </syntaxhighlight> W dziecku powiedzmy jest wywołanie, i szukamy nazwy przestrzeni nazw o numerze dwa, która nie została podana, ale istnieje za to jej wersji ogólna {{Code|nazwa przestrzeni nazw i}} i domyślna {{Code|nazwa przestrzeni nazw}}: <syntaxhighlight lang="mediawiki"> {{#invoke:Pudełko|Nazwa przestrzeni nazw|numer jednostki=1}} </syntaxhighlight> Na podstawie powyższego przykładu otrzymamy wynik o schemacie, nie wyniku, bo tam nie ma zmiennej {{Code|nazwa przestrzeni nazw 1}}, ale jest {{Code|nazwa przestrzeni nazw i}}: <syntaxhighlight lang="mediawiki"> <!-- Ale nie "nazwa przestrzeni nazw", bo jej nie ma, ale za to istnieje "nazwa przestrzeni nazw i"; --> <!-- nazwa przestrzeni nazw 2=nazwa przestrzeni nazw i=Moduł; --> <!-- Czyli wynik: --> Moduł <!-- Widzimy, że wygenerowała się nazwa przestrzeni nazw, którą jest przestrzeń programowa, którą również jest "Szablon"; --> </syntaxhighlight> Nie jest brana w tym powyższym przykładzie zmienna {{Code|nazwa przestrzeni nazw}}, bo jej nie ma, ale za to jest {{Code|nazwa przestrzeni nazw i}}, bo ona występuje jako parametr domyślny ogólny dla parametrów numerkowych. Przykłady w wikikodzie: * {{Code|{{m|Pudełko|Nazwa przestrzeni nazw|numer jednostki{{=}}2}}}} → {{Tt|{{#invoke:Pudełko|Nazwa przestrzeni nazw|numer jednostki=2}}}} * {{Code|{{m|Pudełko|Nazwa przestrzeni nazw|Szablon|nazwa przestrzeni nazw i{{=}}Moja przestrzeń|numer jednostki{{=}}2}}}} → {{Tt|{{#invoke:Pudełko|Nazwa przestrzeni nazw|Szablon|nazwa przestrzeni nazw i=Moja przestrzeń|numer jednostki=2}}}} * {{Code|{{m|Pudełko|Nazwa przestrzeni nazw|nazwa przestrzeni nazw 2{{=}}Szablon|numer jednostki{{=}}2}}}} → {{Tt|{{#invoke:Pudełko|Nazwa przestrzeni nazw|nazwa przestrzeni nazw 2=Szablon|numer jednostki=2}}}} * {{Code|{{m|Pudełko|Nazwa przestrzeni nazw|nazwa przestrzeni nazw 2{{=}}Szablon|numer jednostki{{=}}2}}}} → {{Tt|{{#invoke:Pudełko|Nazwa przestrzeni nazw|nazwa przestrzeni nazw i=Szablon|numer jednostki=2}}}} * {{Code|{{m|Pudełko|Nazwa przestrzeni nazw|nazwa przestrzeni nazw{{=}}Szablon|numer jednostki{{=}}2}}}} → {{Tt|{{#invoke:Pudełko|Nazwa przestrzeni nazw|nazwa przestrzeni nazw=Szablon|numer jednostki=2}}}} Powyżej dla przykładu podano parametry nie w rodzicu w szablonie, tylko w dziecku, jeśli chodzi o parametry nazw przestrzeni nazw, ale ich się za to nie powinno podawać w tych ramach, tylko w szablonach, w których wywoływane są te ramki pudełek {{Code|{{m|Pudełko}}}}, ale tak tutaj tak zrobiono by było najłatwiej sprawdzić działanie tego typu funkcji. Analogicznie możemy podawać parametry typu jednostki, np.: wywołaniu modułowym {{Code|{{m|Pudełko|Nazwa przestrzeni nazw|typ jednostki 2{{=}}strona szablonu|numer jednostki{{=}}2}}}}, ale o tym więcej w rozdziałach {{Code|{{sr|#p["Typ jednostki"](frame,i)|p=Pudełko}}}} w „{{sr|#Funkcje typu jednostki|p=Pudełko}}”, on definiuje przestrzenie przedmiotowe, ale można użyć parametru dyskusji typu jednostki z wartością niepustą, wtedy wyświetli się nazwa przestrzeni nazw dyskusji. Typ jednostki nie ma takiej samej wartości dla przestrzeni przedmiotowej, co dyskusji. Również parametry typu jednostki nie powinno się podawać w dziecku w ramce, tylko w rodzicu w szablonie jako parametry, w którym ta ramka jest wywoływana, ale tutaj podano jedynie dla przykładu, jak najłatwiej sprawdzić działanie tych parametrów tej funkcji. Najpierw w funkcji nagłówku brane są parametry nazw przestrzeni nazw, a jeżeli ich nie ma, to parametry typu jednostki, a jeżeli nie ma, to generowane są nazwy na podstawie aktualnego modułu. === {{Code|p["Nazwa przedmiotowej przestrzeni nazw"](frame,...)}} === Funkcja pisze przedmiotową nazwę przestrzeni nazw jakikolwiek nazwy przestrzeni nazw (tzn. nazwę przedmiotową nazwy przestrzenie nazw, czyli nie dyskusji, zamieniana jest na nią samą, czyli identyfikator przestrzeni się nie zmienia, a dyskusji, nie przedmiotową, przekształca się na przedmiotową jej odpowiadającą, czyli w tym przypadku identyfikator przestrzeni zmniejsza się o numer mniej), według podanej w zmiennej {{Code|nazwa przestrzeni nazw}} dla pozycja bazowej w podanych parametrach szablonu rodzicu ramki dziecka, lub dla innej pozycji należy parametr podawać w formie {{Code|nazwa przestrzeni nazw 1}}, {{Code|nazwa przestrzeni nazw 2}}, {{Code|nazwa przestrzeni nazw 3}},..., lub te parametry można podać w postaci ogólnej {{Code|nazwa przestrzeni nazw i}}. Parametry podaje się w parametrach rodzica wywołania tej funkcji {{Code|{{m|Pudełko|Nazwa przedmiotowej przestrzeni nazw}}}} (ale ich nie trzeba podawać w dziecku, ale można) i w parametrach dziecka, jeśli chodzi o zmienną {{Code|numer jednostki}}, czyli np.: {{Code|{{m|Pudełko|Nazwa przedmiotowej przestrzeni nazw|numer jednostki{{=}}<jakaś liczba całkowita dodatnia>}}}}. Te parametry przestrzenne zamiast w rodzicu w szablonie można podać w ramce dziecka, wtedy parametry dziecka mają pierwszeństwo. Parametry przestrzenne mogą mogą być podane w postaci przestrzeni przedmiotowej lub dyskusji, ale ta funkcja zawsze ją zamienia na przedmiotową. Przestrzeń nazw z parametrów nazw przestrzennych może odpowiadać wartości przestrzeni głównej, to wtedy odpowiednia przestrzeń nazw z parametru nazwy jednostki się nie liczy w tej funkcji, aby się liczyła należy użyć funkcji {{Code|{{sr|#p["Nazwa przedmiotowej przestrzeni nazw 2"](frame,...)|p=Pudełko}}}}. Definicja skrótowa funkcji: <syntaxhighlight lang="lua"> p["Nazwa przedmiotowej przestrzeni nazw"]=function(frame,czy_uwzglednic_alternatywna_nazwe,i)...end; </syntaxhighlight> Wtedy ciało funkcji tej, czyli jego definicja w środku, jest: <syntaxhighlight lang="lua"> -- Jest liczony numer parametru nazwy przestrzeni nazw, domyslnie chodzi tu o numer bazowy parametrów przestrzennych; local numer_jednostki=i or frame.args["numer jednostki"]; local liczba_numer_jednostki=((numer_jednostki)and(tonumber(numer_jednostki))or 0); local pudelko_pomocne_modul=require("Module:Pudełko/Pomocne"); -- Liczy nazwę przestrzeni nazw przedmiotową na podstawie podanych parametrów; return pudelko_pomocne_modul.Nazwa_przestrzeni_nazw(frame,1, czy_uwzglednic_alternatywna_nazwe,liczba_numer_jednostki); </syntaxhighlight> Parametry funkcji: * {{Code|frame}} - tablica ramki tablicy transportu, * {{Code|czy_uwzglednic_alternatywna_nazwe}} - czy ma uwzględniać nazwę przestrzeni nazw domyślną szablonu, dostępne wartości: {{Code|false}}, w której nazwa domyślna nie jest uwzględniana wtedy, oraz {{Code|nil}} i {{Code|true}}, które oznaczają to samo, w tym jeżeli ona jest uwzględniana, wtedy jest brany parametr pierwszy dziecka, który musi istnieć przy takiej wartości tego parametru, tzn. {{Code|{{m|Pudełko|Nazwa przedmiotowej przestrzeni nazw|Dyskusja szablonu}}}} - ta nazwa domyślna zostanie zamieniona na przedmiotową, a jak ona by była przedmiotowa, to żadnej zamiany, by nie było, a jeśli nazwa uzyskana z nazwy przestrzeni nazw z parametrów przestrzennych jest w takim przypadku błędna, to w takim razie brany jest ten parametr, a jeżeli ta nazwa domyślna jest błędna, czyli {{Code|{{m|Pudełko|Nazwa przedmiotowej przestrzeni nazw|Moja przestrzeń}}}}, wtedy funkcja zwraca stan błędu {{Code|(błąd)}}. * {{Code|i}} - numer zmiennej nazwy przestrzeni nazw. Funkcja wykorzystuje {{Code|{{sr|#p.Nazwa_przestrzeni_nazw(frame,...)|p=Pudełko/Pomocne}}}} do wyznaczania ogólnego nazwy przestrzeni nazw dla pozycji bazowej i numerkowej, tzn. dla pozycji: jeden, dwa, trzy,..., itd, i ich ogólnej. Parametr ramki tablicy transportu rodzica szablonu: * {{Code|nazwa przestrzeni nazw}}, {{Code|nazwa przestrzeni nazw 1}}, {{Code|nazwa przestrzeni nazw 2}}, {{Code|nazwa przestrzeni nazw 3}},..., {{Code|nazwa przestrzeni nazw i}} - nazwy przestrzeni nazw dla pozycji bazowej oraz zwykłej i ogólnej numerkowej, * {{Code|typ jednostki}}, {{Code|typ jednostki 1}}, {{Code|typ jednostki 2}}, {{Code|typ jednostki 3}},..., {{Code|typ jednostki i}} - typy jednostek, którym odpowiadają pewne przestrzenie przedmiotowe, dla pozycji bazowej, numerkowej i ogólnej. Parametry ramki tablicy transportu dziecka: * Parametry dziecka są takie same jak rodzica dla funkcji pudełkowej plus tu wymienione, * {{Code|numer jednostki}} - jak parametr {{Code|i}} nie został ustawiony, to wtedy liczy się ta zmienna. Przykłady: <syntaxhighlight lang="mediawiki"> {{Nazwa szablonu|nazwa przestrzeni nazw=Dyskusja Wikibooks|nazwa przestrzeni nazw 2=Dyskusja szablonu|nazwa przestrzeni nazw i=Dyskusja modułu}} </syntaxhighlight> W dziecku powiedzmy jest wywołanie, i szukamy nazwy przestrzeni nazw o numerze dwa, która nie została podana, ale istnieje za to jej wersji ogólna {{Code|nazwa przestrzeni nazw i}} i domyślna {{Code|nazwa przestrzeni nazw}}: <syntaxhighlight lang="mediawiki"> {{#invoke:Pudełko|Nazwa przedmiotowej przestrzeni nazw|numer jednostki=1}} </syntaxhighlight> Na podstawie powyższego przykładu otrzymamy wynik o schemacie, nie wyniku, bo tam nie ma zmiennej {{Code|nazwa przestrzeni nazw 1}}, ale jest {{Code|nazwa przestrzeni nazw i}}: <syntaxhighlight lang="mediawiki"> <!-- Ale nie "nazwa przestrzeni nazw", bo jej nie ma, ale za to istnieje "nazwa przestrzeni nazw i"; --> <!-- nazwa przestrzeni nazw 2=nazwa przestrzeni nazw i=Dyskusja modułu; --> <!-- Czyli wynik: --> Moduł <!-- Widzimy, że wygenerowała się nazwa przestrzeni nazw, którą jest przestrzeń przedmiotowa programowa przestrzeni dyskusji "Dyskusja modułu", którą również jest "Szablon" jego przestrzeni dyskusji "Dyskusja szablonu", a dla ich przestrzeni przedmiotowej, zamiast dyskusji, to samo przekształca się na to samo; --> </syntaxhighlight> Nie jest brana w tym powyższym przykładzie zmienna {{Code|nazwa przestrzeni nazw}}, bo jej nie ma, ale za to jest {{Code|nazwa przestrzeni nazw i}}, bo ona występuje jako parametr domyślny ogólny dla parametrów numerkowych. Przykłady w wikikodzie: * {{Code|{{m|Pudełko|Nazwa przedmiotowej przestrzeni nazw|numer jednostki{{=}}2}}}} → {{Tt|{{#invoke:Pudełko|Nazwa przedmiotowej przestrzeni nazw|numer jednostki=2}}}} * {{Code|{{m|Pudełko|Nazwa przedmiotowej przestrzeni nazw|Dyskusja szablonu|nazwa przestrzeni nazw i{{=}}Moja przestrzeń|numer jednostki{{=}}2}}}} → {{Tt|{{#invoke:Pudełko|Nazwa przedmiotowej przestrzeni nazw|Dyskusja szablonu|nazwa przestrzeni nazw i=Moja przestrzeń|numer jednostki=2}}}} * {{Code|{{m|Pudełko|Nazwa przedmiotowej przestrzeni nazw|nazwa przestrzeni nazw 2{{=}}Dyskusja szablonu|numer jednostki{{=}}2}}}} → {{Tt|{{#invoke:Pudełko|Nazwa przedmiotowej przestrzeni nazw|nazwa przestrzeni nazw 2=Dyskusja szablonu|numer jednostki=2}}}} * {{Code|{{m|Pudełko|Nazwa przedmiotowej przestrzeni nazw|nazwa przestrzeni nazw 2{{=}}Dyskusja szablonu|numer jednostki{{=}}2}}}} → {{Tt|{{#invoke:Pudełko|Nazwa przedmiotowej przestrzeni nazw|nazwa przestrzeni nazw i=Dyskusja szablonu|numer jednostki=2}}}} * {{Code|{{m|Pudełko|Nazwa przedmiotowej przestrzeni nazw|nazwa przestrzeni nazw{{=}}Dyskusja szablonu|numer jednostki{{=}}2}}}} → {{Tt|{{#invoke:Pudełko|Nazwa przedmiotowej przestrzeni nazw|nazwa przestrzeni nazw=Dyskusja szablonu|numer jednostki=2}}}} Powyżej dla przykładu podano parametry nie w rodzicu w szablonie, tylko w dziecku, jeśli chodzi o parametry nazw przestrzeni nazw, ale ich się za to nie powinno podawać w tych ramach, tylko w szablonach, w których wywoływane są te ramki pudełek {{Code|{{m|Pudełko}}}}, ale tak tutaj tak zrobiono by było najłatwiej sprawdzić działanie tego typu funkcji. Analogicznie możemy podawać parametry typu jednostki, np.: wywołaniu modułowym {{Code|{{m|Pudełko|Nazwa przedmiotowej przestrzeni nazw|typ jednostki 2{{=}}strona szablonu|numer jednostki{{=}}2}}}}, ale o tym więcej w rozdziałach {{Code|{{sr|#p["Przedmiotowy typ jednostki"](frame,i)|p=Pudełko}}}} w „{{sr|#Funkcje typu jednostki|p=Pudełko}}”, ale wtedy ta sama nazwa przestrzeni nazw reprezentowana przez {{Parametr|typ jednostki 2|strona szablonu}}, jest zamieniana na to samo, lepiej jest tutaj używać parametrów przestrzennych nazw niż typu jednostki. Typ jednostki nie ma takiej samej wartości dla przestrzeni przedmiotowej, co dyskusji. Tutaj parametr dyskusji typu jednostki bazowy i numerkowy ogólny, czy szczegółowy, nie gra roli, bo nawet, gdy wygenerujemy nazwę przestrzeni dyskusji za pomoca tego parametru, to i tak otrzymamy na samym końcu jego nazwę przedmiotową. Również parametry typu jednostki nie powinno się podawać w dziecku w ramce, tylko w rodzicu w szablonie jako parametry, w którym ta ramka jest wywoływana, ale tutaj podano jedynie dla przykładu, jak najłatwiej sprawdzić działanie tych parametrów tej funkcji. Najpierw w funkcji nagłówku brane są parametry nazw przestrzeni nazw, a jeżeli ich nie ma, to parametry typu jednostki, a jeżeli nie ma, to generowane są nazwy na podstawie aktualnego modułu. === {{Code|p["Nazwa przestrzeni nazw dyskusji"](frame,...)}} === Funkcja pisze nazwę przestrzeni nazw dyskusji jakikolwiek nazwy przestrzeni nazw (tzn. nazwę przedmiotową nazwy przestrzenie nazw, czyli nie dyskusji, zamieniana jest na dyskusji, czyli identyfikator przestrzeni się zmienia jeden wyżej, a dyskusji, nie przedmiotową, przekształca się na tą samą), według podanej w zmiennej {{Code|nazwa przestrzeni nazw}} dla pozycja bazowej w podanych parametrach szablonu rodzicu ramki dziecka, lub dla innej pozycji należy parametr podawać w formie {{Code|nazwa przestrzeni nazw 1}}, {{Code|nazwa przestrzeni nazw 2}}, {{Code|nazwa przestrzeni nazw 3}},..., lub te parametry można podać w postaci ogólnej {{Code|nazwa przestrzeni nazw i}}. Parametry podaje się w parametrach rodzica wywołania tej funkcji {{Code|{{m|Pudełko|Nazwa przestrzeni nazw dyskusji}}}} (ale ich nie trzeba podawać w dziecku, ale można) i w parametrach dziecka, jeśli chodzi o zmienną {{Code|numer jednostki}}, czyli np.: {{Code|{{m|Pudełko|Nazwa przestrzeni nazw dyskusji|numer jednostki{{=}}<jakaś liczba całkowita dodatnia>}}}}. Te parametry przestrzenne zamiast w rodzicu w szablonie można podać w ramce dziecka, wtedy parametry dziecka mają pierwszeństwo. Parametry przestrzenne mogą mogą być podane w postaci przestrzeni przedmiotowej lub dyskusji, ale ta funkcja zawsze ją zamienia na dyskusji. Przestrzeń nazw z parametrów nazw przestrzennych może odpowiadać wartości przestrzeni głównej, to wtedy odpowiednia przestrzeń nazw z parametru nazwy jednostki się nie liczy w tej funkcji, aby się liczyła należy użyć funkcji {{Code|{{sr|#p["Nazwa przestrzeni nazw dyskusji 2"](frame,...)|p=Pudełko}}}}. Definicja skrótowa funkcji: <syntaxhighlight lang="lua"> p["Nazwa przestrzeni nazw dyskusji"]=function(frame,czy_uwzglednic_alternatywna_nazwe,i)...end; </syntaxhighlight> Wtedy ciało funkcji tej, czyli jego definicja w środku, jest: <syntaxhighlight lang="lua"> -- Jest liczony numer parametru nazwy przestrzeni nazw, domyslnie chodzi tu o numer bazowy parametrów przestrzennych; local numer_jednostki=i or frame.args["numer jednostki"]; local liczba_numer_jednostki=((numer_jednostki)and(tonumber(numer_jednostki))or 0); local pudelko_pomocne_modul=require("Module:Pudełko/Pomocne"); -- Liczy nazwę przestrzeni nazw dyskusji na podstawie podanych parametrów; return pudelko_pomocne_modul.Nazwa_przestrzeni_nazw(frame,2, czy_uwzglednic_alternatywna_nazwe,liczba_numer_jednostki); </syntaxhighlight> Parametry funkcji: * {{Code|frame}} - tablica ramki tablicy transportu, * {{Code|czy_uwzglednic_alternatywna_nazwe}} - czy ma uwzględniać nazwę przestrzeni nazw domyślną szablonu, dostępne wartości: {{Code|false}}, w której nazwa domyślna nie jest uwzględniana wtedy, oraz {{Code|nil}} i {{Code|true}}, które oznaczają to samo, w tym jeżeli ona jest uwzględniana, wtedy jest brany parametr pierwszy dziecka, który musi istnieć przy takiej wartości tego parametru, tzn. {{Code|{{m|Pudełko|Nazwa przestrzeni nazw dyskusji|Szablon}}}} - ta nazwa domyślna zostanie przekształcona na dyskusji, a jeżeli ona by była dyskusji, to nie byłoby żadnego przekształcenia, a jeśli nazwa uzyskana nazwy przestrzeni nazw z parametrów przestrzennych jest w takim przypadku błędna, to w takim razie brany jest ten parametr, a jeżeli nazwa domyślna jest błędna, czyli {{Code|{{m|Pudełko|Nazwa przestrzeni nazw dyskusji|Moja przestrzeń}}}}, wtedy funkcja zwraca stan błędu {{Code|(błąd)}}. * {{Code|i}} - numer zmiennej nazwy przestrzeni nazw. Funkcja wykorzystuje {{Code|{{sr|#p.Nazwa_przestrzeni_nazw(frame,...)|p=Pudełko/Pomocne}}}} do wyznaczania ogólnego nazwy przestrzeni nazw dla pozycji bazowej i numerkowej, tzn. dla pozycji: jeden, dwa, trzy,..., itd, i ich ogólnej. Parametr ramki tablicy transportu rodzica szablonu: * {{Code|nazwa przestrzeni nazw}}, {{Code|nazwa przestrzeni nazw 1}}, {{Code|nazwa przestrzeni nazw 2}}, {{Code|nazwa przestrzeni nazw 3}},..., {{Code|nazwa przestrzeni nazw i}} - nazwy przestrzeni nazw dla pozycji bazowej oraz zwykłej i ogólnej numerkowej, * {{Code|typ jednostki}}, {{Code|typ jednostki 1}}, {{Code|typ jednostki 2}}, {{Code|typ jednostki 3}},..., {{Code|typ jednostki i}} - typy jednostek, którym odpowiadają pewne przestrzenie przedmiotowe, dla pozycji bazowej, numerkowej i ogólnej. Parametry ramki tablicy transportu dziecka: * Parametry dziecka są takie same jak rodzica dla funkcji pudełkowej plus tu wymienione, * {{Code|numer jednostki}} - jak parametr {{Code|i}} nie został ustawiony, to wtedy liczy się ta zmienna. Przykłady: <syntaxhighlight lang="mediawiki"> {{Nazwa szablonu|nazwa przestrzeni nazw=Wikibooks|nazwa przestrzeni nazw 2=Szablon|nazwa przestrzeni nazw i=Moduł}} </syntaxhighlight> W dziecku powiedzmy jest wywołanie, i szukamy nazwy przestrzeni nazw o numerze dwa, która nie została podana, ale istnieje za to jej wersji ogólna {{Code|nazwa przestrzeni nazw i}} i domyślna {{Code|nazwa przestrzeni nazw}}: <syntaxhighlight lang="mediawiki"> {{#invoke:Pudełko|Nazwa przestrzeni nazw dyskusji|numer jednostki=1}} </syntaxhighlight> Na podstawie powyższego przykładu otrzymamy wynik o schemacie, nie wyniku, bo tam nie ma zmiennej {{Code|nazwa przestrzeni nazw 1}}, ale jest {{Code|nazwa przestrzeni nazw i}}: <syntaxhighlight lang="mediawiki"> <!-- Ale nie "nazwa przestrzeni nazw", bo jej nie ma, ale za to istnieje "nazwa przestrzeni nazw i"; --> <!-- nazwa przestrzeni nazw 2=nazwa przestrzeni nazw i=Moduł; --> <!-- Czyli wynik: --> Dyskusja modułu <!-- Widzimy, że wygenerowała się nazwa przestrzeni nazw, którą jest przestrzeń dyskusji przestrzeni programowej przestrzeni przedmiotowej "Moduł", którą również jest "Szablon" jego przestrzeni dyskusji "Dyskusja szablonu", a dla ich przestrzeni przedmiotowej, zamiast dyskusji, to przekształca się na dyskusji jej odpowiadającą; --> </syntaxhighlight> Nie jest brana w tym powyższym przykładzie zmienna {{Code|nazwa przestrzeni nazw}}, bo jej nie ma, ale za to jest {{Code|nazwa przestrzeni nazw i}}, bo ona występuje jako parametr domyślny ogólny dla parametrów numerkowych. Przykłady w wikikodzie: * {{Code|{{m|Pudełko|Nazwa przestrzeni nazw dyskusji|numer jednostki{{=}}2}}}} → {{Tt|{{#invoke:Pudełko|Nazwa przestrzeni nazw dyskusji|numer jednostki=2}}}} * {{Code|{{m|Pudełko|Nazwa przestrzeni nazw dyskusji|Szablon|nazwa przestrzeni nazw i{{=}}Moja przestrzeń|numer jednostki{{=}}2}}}} → {{Tt|{{#invoke:Pudełko|Nazwa przestrzeni nazw dyskusji|Szablon|nazwa przestrzeni nazw i=Moja przestrzeń|numer jednostki=2}}}} * {{Code|{{m|Pudełko|Nazwa przestrzeni nazw dyskusji|nazwa przestrzeni nazw 2{{=}}Szablon|numer jednostki{{=}}2}}}} → {{Tt|{{#invoke:Pudełko|Nazwa przestrzeni nazw dyskusji|nazwa przestrzeni nazw 2=Szablon|numer jednostki=2}}}} * {{Code|{{m|Pudełko|Nazwa przestrzeni nazw dyskusji|nazwa przestrzeni nazw 2{{=}}Szablon|numer jednostki{{=}}2}}}} → {{Tt|{{#invoke:Pudełko|Nazwa przestrzeni nazw dyskusji|nazwa przestrzeni nazw i=Szablon|numer jednostki=2}}}} * {{Code|{{m|Pudełko|Nazwa przestrzeni nazw dyskusji|nazwa przestrzeni nazw{{=}}Szablon|numer jednostki{{=}}2}}}} → {{Tt|{{#invoke:Pudełko|Nazwa przestrzeni nazw dyskusji|nazwa przestrzeni nazw=Szablon|numer jednostki=2}}}} Powyżej dla przykładu podano parametry nie w rodzicu w szablonie, tylko w dziecku, jeśli chodzi o parametry nazw przestrzeni nazw, ale ich się za to nie powinno podawać w tych ramach, tylko w szablonach, w których wywoływane są te ramki pudełek {{Code|{{m|Pudełko}}}}, ale tak tutaj tak zrobiono by było najłatwiej sprawdzić działanie tego typu funkcji. Analogicznie możemy podawać parametry typu jednostki, np.: wywołaniu modułowym {{Code|{{m|Pudełko|Nazwa przestrzeni nazw dyskusji|typ jednostki 2{{=}}strona szablonu|numer jednostki{{=}}2}}}}, ale o tym więcej w rozdziałach {{Code|{{sr|#p["Dyskusyjny typ jednostki"](frame,i)|p=Pudełko}}}} w „{{sr|#Funkcje typu jednostki|p=Pudełko}}”, ale wtedy nazwa przestrzeni nazw reprezentowana przez {{Parametr|typ jednostki 2|strona szablonu}}, jest zamieniana na nazwę przestrzeni nazw dyskusji. Parametr dyskusji typu jednostki bazowy lub dla danego numerka ogólny, czy szczegółowy, nie gra roli. Typ jednostki nie ma takiej samej wartości dla przestrzeni przedmiotowej, co dyskusji. Również parametry typu jednostki nie powinno się podawać w dziecku w ramce, tylko w rodzicu w szablonie jako parametry, w którym ta ramka jest wywoływana, ale tutaj podano jedynie dla przykładu, jak najłatwiej sprawdzić działanie tych parametrów tej funkcji. Najpierw w funkcji nagłówku brane są parametry nazw przestrzeni nazw, a jeżeli ich nie ma, to parametry typu jednostki, a jeżeli nie ma, to generowane są nazwy na podstawie aktualnego modułu. == Funkcje nazw przestrzeni nazw drugiej wersji == === {{Code|p["Nazwa przestrzeni nazw 2"](frame,...)}} === Funkcja pisze nazwę przestrzeni nazw, niezależnie, czy to jest przedmiotowa, czy dyskusji, według, i nie zawsze tylko, podanej w zmiennej {{Code|nazwa przestrzeni nazw}} dla pozycja bazowej w podanych parametrach szablonu rodzicu ramki dziecka, lub dla innej pozycji należy parametr podawać w formie {{Code|nazwa przestrzeni nazw 1}}, {{Code|nazwa przestrzeni nazw 2}}, {{Code|nazwa przestrzeni nazw 3}},..., lub te parametry można podać w postaci ogólnej {{Code|nazwa przestrzeni nazw i}}. W tej funkcji trzeba też podawać parametry nazwy jednostek {{Code|nazwa jednostki}}, {{Code|nazwa jednostki 1}}, {{Code|nazwa jednostki 2}}, {{Code|nazwa jednostki 3}},... Parametry podaje się w parametrach rodzica wywołania tej funkcji {{Code|{{m|Pudełko|Nazwa przestrzeni nazw 2}}}} (ale ich nie trzeba podawać w dziecku, ale można) i w parametrach dziecka, jeśli chodzi o zmienną {{Code|numer jednostki}}, czyli np.: {{Code|{{m|Pudełko|Nazwa przestrzeni nazw 2|numer jednostki{{=}}<jakaś liczba całkowita dodatnia>}}}}. Te parametry przestrzenne zamiast w rodzicu w szablonie można podać w ramce dziecka, wtedy parametry dziecka mają pierwszeństwo. Przestrzeń nazw z parametrów nazw przestrzennych może odpowiadać wartości przestrzeni głównej, to wtedy odpowiednia przestrzeń nazw z parametru nazwy jednostki się liczy w tej funkcji, wtedy jest liczona nazwa przestrzeni nazw z tego parametru. Gdy parametry przestrzenne lub typ jednostki w drugim podejściu nie wskazują na przestrzeń główną, to wtedy działanie tej funkcji jest podobne do {{Code|{{sr|#p["Nazwa przestrzeni nazw"](frame,...)|p=Pudełko}}}}. Definicja skrótowa funkcji: <syntaxhighlight lang="lua"> p["Nazwa przestrzeni nazw 2"]=function(frame,czy_uwzglednic_alternatywna_nazwe,i)...end; </syntaxhighlight> Wtedy ciało funkcji tej, czyli jego definicja w środku, jest: <syntaxhighlight lang="lua"> local pudelko_pomocne_modul=require("Module:Pudełko/Pomocne"); -- Liczy nazwę przestrzeni nazw, jeżeli z parametrów przestrzennych przestrzeń wskazuje na główną, to wtedy jest liczona przestrzeń nazw z nazwy jednostki; return pudelko_pomocne_modul.Nazwa_przestrzeni_nazw_2(frame,czy_uwzglednic_alternatywna_nazwe,i) </syntaxhighlight> Parametry funkcji: * {{Code|frame}} - tablica ramki tablicy transportu, * {{Code|czy_uwzglednic_alternatywna_nazwe}} - czy ma uwzględniać nazwę przestrzeni nazw domyślną szablonu, dostępne wartości: {{Code|false}}, w której nazwa domyślna nie jest uwzględniana wtedy, oraz {{Code|nil}} i {{Code|true}}, które oznaczają to samo, w tym jeżeli ona jest uwzględniana, wtedy jest brany parametr pierwszy dziecka, który musi istnieć przy takiej wartości tego parametru, tzn. {{Code|{{m|Pudełko|Nazwa przestrzeni nazw 2|Szablon}}}}, a jeśli nazwa uzyskana nazwy przestrzeni nazw jest w takim przypadku błędna, to brany jest ten element, a jeżeli nazwa domyślna jest błędna, czyli {{Code|{{m|Pudełko|Nazwa przestrzeni nazw 2|Moja przestrzeń}}}}, wtedy funkcja zwraca stan błędu {{Code|(błąd)}}. * {{Code|i}} - numer zmiennej nazwy przestrzeni nazw. Funkcja wykorzystuje {{Code|{{sr|#p.Nazwa_przestrzeni_nazw_2(frame,...)|p=Pudełko/Pomocne}}}} do wyznaczania ogólnego nazwy przestrzeni nazw dla pozycji bazowej i numerkowej, tzn. dla pozycji: jeden, dwa, trzy,..., itd, i ich ogólnej. Parametr ramki tablicy transportu rodzica szablonu: * {{Code|nazwa przestrzeni nazw}}, {{Code|nazwa przestrzeni nazw 1}}, {{Code|nazwa przestrzeni nazw 2}}, {{Code|nazwa przestrzeni nazw 3}},..., {{Code|nazwa przestrzeni nazw i}} - nazwy przestrzeni nazw dla pozycji bazowej oraz zwykłej i ogólnej numerkowej, * {{Code|nazwa jednostki}}, {{Code|nazwa jednostki 1}}, {{Code|nazwa jednostki 2}}, {{Code|nazwa jednostki 3}},... - nazwy jednostek dla pozycji bazowej i numerkowej, * {{Code|typ jednostki}}, {{Code|typ jednostki 1}}, {{Code|typ jednostki 2}}, {{Code|typ jednostki 3}},..., {{Code|typ jednostki i}} - typy jednostek, którym odpowiadają pewne przestrzenie przedmiotowe, dla pozycji bazowej, numerkowej i ogólnej, ** {{Code|dyskusja typu jednostki}}, {{Code|dyskusja typu jednostki 1}}, {{Code|dyskusja typ jednostki 2}}, {{Code|dyskusja typ jednostki 3}},..., {{Code|dyskusja typ jednostki i}} - czy dany typ jednostki ma przedstawiać, jeśli niepusta, przestrzeń dyskusji dla pozycji bazowej, numerkowej i ogólnej. Parametry ramki tablicy transportu dziecka: * Parametry dziecka są takie same jak rodzica dla funkcji pudełkowej plus tu wymienione, * {{Code|numer jednostki}} - jak parametr {{Code|i}} nie został ustawiony, to wtedy liczy się ta zmienna. Przykłady: <syntaxhighlight lang="mediawiki"> {{Nazwa szablonu|nazwa przestrzeni nazw=Wikibooks|nazwa przestrzeni nazw 1=Szablon|nazwa przestrzeni nazw i=|nazwa jednostki 2=Wikibooks:Strona}} </syntaxhighlight> W dziecku powiedzmy jest wywołanie, i szukamy nazwy przestrzeni nazw o numerze dwa, która została podana, ale istnieje za to jej wersji ogólna {{Code|nazwa przestrzeni nazw i}} i domyślna {{Code|nazwa przestrzeni nazw}}, ale wtedy dla tego numerkowego liczy się to ogólne z {{Code| i}}, a ponieważ ta nazwa jest pusta, więc będziemy liczyli nazwę przestrzeni nazw z {{Code|nazwa jednostki 2}}: <syntaxhighlight lang="mediawiki"> {{#invoke:Pudełko|Nazwa przestrzeni nazw 2|numer jednostki=2}} </syntaxhighlight> Na podstawie powyższego przykładu otrzymamy wynik o schemacie, nie wyniku, bo tam nie ma zmiennej {{Code|nazwa przestrzeni nazw 1}}, ale jest {{Code|nazwa przestrzeni nazw i}}: <syntaxhighlight lang="mediawiki"> <!-- Ale nie "nazwa przestrzeni nazw 2", bo jej nie ma, ale za to istnieje "nazwa przestrzeni nazw i"; --> <!-- nazwa przestrzeni nazw 2=nazwa przestrzeni nazw i="", a nazwa jednostki 2="Wikibooks:Strona"; --> <!-- Czyli wynik: --> Wikibooks <!-- Widzimy, że wygenerowała się nazwa przestrzeni nazw, którą jest przestrzeń nieprogramowa, ale projektu, wychodząca z nazwy jednostek w tym przypadku z "nazwa jednostki 2"; --> </syntaxhighlight> Nie jest brana w tym powyższym przykładzie zmienna {{Code|nazwa przestrzeni nazw}}, bo jej nie ma, ale za to jest {{Code|nazwa przestrzeni nazw i}}, bo ona występuje jako parametr domyślny ogólny dla parametrów numerkowych. Tytaj jest używana jest zmienna {{Code|nazwa jednostki 2}} do wygenerowania ostatecznego wyniku, bo jak można zauważyć, parametry przestrzenne wskazują na przestrzeń główną, a nazwy jednostek już nie. Przykłady w wikikodzie: * {{Code|{{m|Pudełko|Nazwa przestrzeni nazw 2|numer jednostki{{=}}2}}}} → {{Tt|{{#invoke:Pudełko|Nazwa przestrzeni nazw 2|numer jednostki=2}}}} * {{Code|{{m|Pudełko|Nazwa przestrzeni nazw 2|Szablon|nazwa przestrzeni nazw i{{=}}Moja przestrzeń|numer jednostki{{=}}2}}}} → {{Tt|{{#invoke:Pudełko|Nazwa przestrzeni nazw 2|Szablon|nazwa przestrzeni nazw i=Moja przestrzeń|numer jednostki=2}}}} * {{Code|{{m|Pudełko|Nazwa przestrzeni nazw 2|nazwa przestrzeni nazw 2{{=}}|nazwa jednostki 2{{=}}Szablon:Strona|numer jednostki{{=}}2}}}} → {{Tt|{{#invoke:Pudełko|Nazwa przestrzeni nazw 2|nazwa przestrzeni nazw 2=|nazwa jednostki 2=Szablon:Strona|numer jednostki=2}}}} * {{Code|{{m|Pudełko|Nazwa przestrzeni nazw 2|nazwa przestrzeni nazw i{{=}}|nazwa jednostki 2{{=}}Szablon:Strona|numer jednostki{{=}}2}}}} → {{Tt|{{#invoke:Pudełko|Nazwa przestrzeni nazw 2|nazwa przestrzeni nazw i=|nazwa jednostki 2=Szablon:Strona|numer jednostki=2}}}} * {{Code|{{m|Pudełko|Nazwa przestrzeni nazw 2|Szablon|nazwa przestrzeni nazw{{=}}|nazwa jednostki 2{{=}}Wikibooks:Strona|numer jednostki{{=}}2}}}} → {{Tt|{{#invoke:Pudełko|Nazwa przestrzeni nazw 2|Szablon|nazwa przestrzeni nazw=|nazwa jednostki 2=Wikibooks:Strona|numer jednostki=2}}}} Powyżej dla przykładu podano parametry nie w rodzicu w szablonie, tylko w dziecku, jeśli chodzi o parametry nazw przestrzeni nazw i nazw jednostek, ale ich się za to nie powinno podawać w tych ramach, tylko w szablonach, w których wywoływane są te ramki pudełek {{Code|{{m|Pudełko}}}}, ale tak tutaj tak zrobiono by było najłatwiej sprawdzić działanie tego typu funkcji. Analogicznie możemy podawać parametry typu jednostki, np.: wywołaniu modułowym {{Code|{{m|Pudełko|Nazwa przestrzeni nazw 2|typ jednostki 2{{=}}Podręcznik|nazwa jednostki 2{{=}}Szablon:Strona|numer jednostki{{=}}2}}}} (ale wtedy jest brana przestrzeń nazw z nazwy jednostki), ale o tym więcej w rozdziałach {{Code|{{sr|#p["Typ jednostki 2"](frame,i)|p=Pudełko}}}} w „{{sr|#Funkcje typu jednostki|p=Pudełko}}”, on definiuje przestrzenie przedmiotowe, ale można użyć parametru dyskusji typu jednostki z wartością niepustą, wtedy wyświetli się nazwa przestrzeni nazw dyskusji. Jeżeli typ jednostki wskazuje na przestrzeń nazw główną, wtedy się liczą parametry nazw jednostek. Typ jednostki nie ma takiej samej wartości dla przestrzeni przedmiotowej, co dyskusji. Również parametry typu jednostki nie powinno się podawać w dziecku w ramce, tylko w rodzicu w szablonie jako parametry, w którym ta ramka jest wywoływana, ale tutaj podano jedynie dla przykładu, jak najłatwiej sprawdzić działanie tych parametrów tej funkcji. Najpierw w funkcji nagłówku brane są parametry nazw przestrzeni nazw, a jeżeli ich nie ma, to parametry typu jednostki, a jeżeli nie ma lub parametry przestrzenne wskazują na przestrzeń główną, i nie ma nazwy jednostki, to generowane są nazwy tej funkcji na podstawie aktualnej strony. === {{Code|p["Nazwa przedmiotowej przestrzeni nazw 2"](frame,...)}} === Funkcja pisze przedmiotową nazwę przestrzeni nazw jakikolwiek nazwy przestrzeni nazw (tzn. nazwę przedmiotową nazwy przestrzenie nazw, czyli nie dyskusji, zamieniana jest na nią samą, czyli identyfikator przestrzeni się nie zmienia, a dyskusji, nie przedmiotową, przekształca się na przedmiotową jej odpowiadającą, czyli w tym przypadku identyfikator przestrzeni zmniejsza się o numer mniej), według, i nie zawsze tylko, podanej w zmiennej {{Code|nazwa przestrzeni nazw}} dla pozycja bazowej w podanych parametrach szablonu rodzicu ramki dziecka, lub dla innej pozycji należy parametr podawać w formie {{Code|nazwa przestrzeni nazw 1}}, {{Code|nazwa przestrzeni nazw 2}}, {{Code|nazwa przestrzeni nazw 3}},..., lub te parametry można podać w postaci ogólnej {{Code|nazwa przestrzeni nazw i}}. W tej funkcji trzeba też podawać parametry nazwy jednostek {{Code|nazwa jednostki}}, {{Code|nazwa jednostki 1}}, {{Code|nazwa jednostki 2}}, {{Code|nazwa jednostki 3}},... Parametry podaje się w parametrach rodzica wywołania tej funkcji {{Code|{{m|Pudełko|Nazwa przedmiotowej przestrzeni nazw 2}}}} (ale ich nie trzeba podawać w dziecku, ale można) i w parametrach dziecka, jeśli chodzi o zmienną {{Code|numer jednostki}}, czyli np.: {{Code|{{m|Pudełko|Nazwa przedmiotowej przestrzeni nazw 2|numer jednostki{{=}}<jakaś liczba całkowita dodatnia>}}}}. Te parametry przestrzenne zamiast w rodzicu w szablonie można podać w ramce dziecka, wtedy parametry dziecka mają pierwszeństwo. Przestrzeń nazw z parametrów nazw przestrzennych po przekształceniu na przedmiotową może odpowiadać wartości przestrzeni głównej, to wtedy odpowiednia przestrzeń nazw z parametru nazwy jednostki się liczy w tej funkcji, wtedy jest liczona nazwa przestrzeni nazw z tego parametru. Gdy parametry przestrzenne lub typ jednostki w drugim podejściu nie wskazują na przestrzeń główną, to wtedy działanie tej funkcji jest podobne do {{Code|{{sr|#p["Nazwa przedmiotowej przestrzeni nazw"](frame,...)|p=Pudełko}}}}. Definicja skrótowa funkcji: <syntaxhighlight lang="lua"> p["Nazwa przedmiotowej przestrzeni nazw 2"]=function(frame,czy_uwzglednic_alternatywna_nazwe,i)...end; </syntaxhighlight> Wtedy ciało funkcji tej, czyli jego definicja w środku, jest: <syntaxhighlight lang="lua"> local pudelko_pomocne_modul=require("Module:Pudełko/Pomocne"); return pudelko_pomocne_modul.Nazwa_przestrzeni_nazw_przedmiotowa_dyskusji_2(frame,czy_uwzglednic_alternatywna_nazwe,i,"przedmiotowa"); </syntaxhighlight> Parametry funkcji: * {{Code|frame}} - tablica ramki tablicy transportu, * {{Code|czy_uwzglednic_alternatywna_nazwe}} - czy ma uwzględniać nazwę przestrzeni nazw domyślną szablonu, dostępne wartości: {{Code|false}}, w której nazwa domyślna nie jest uwzględniana wtedy, oraz {{Code|nil}} i {{Code|true}}, które oznaczają to samo, w tym jeżeli ona jest uwzględniana, wtedy jest brany parametr pierwszy dziecka, który musi istnieć przy takiej wartości tego parametru, tzn. {{Code|{{m|Pudełko|Nazwa przedmiotowej przestrzeni nazw 2|Szablon}}}}, nazwa domyślna zostanie zamieniona na przedmiotową, a jeżeli jest już taka, to żadnej zamiany nie ma, a jeśli nazwa uzyskana nazwy przestrzeni nazw jest w takim przypadku błędna, to brany jest ten element, a jeżeli nazwa domyślna jest błędna, czyli {{Code|{{m|Pudełko|Nazwa przedmiotowej przestrzeni nazw 2|Moja przestrzeń}}}}, wtedy funkcja zwraca stan błędu {{Code|(błąd)}}. * {{Code|i}} - numer zmiennej nazwy przestrzeni nazw. Funkcja wykorzystuje {{Code|{{sr|#p.Nazwa_przestrzeni_nazw_przedmiotowa_dyskusji_2(frame,...)|p=Pudełko/Pomocne}}}} do wyznaczania ogólnego nazwy przestrzeni nazw dla pozycji bazowej i numerkowej, tzn. dla pozycji: jeden, dwa, trzy,..., itd, i ich ogólnej. Parametr ramki tablicy transportu rodzica szablonu: * {{Code|nazwa przestrzeni nazw}}, {{Code|nazwa przestrzeni nazw 1}}, {{Code|nazwa przestrzeni nazw 2}}, {{Code|nazwa przestrzeni nazw 3}},..., {{Code|nazwa przestrzeni nazw i}} - nazwy przestrzeni nazw dla pozycji bazowej oraz zwykłej i ogólnej numerkowej, * {{Code|nazwa jednostki}}, {{Code|nazwa jednostki 1}}, {{Code|nazwa jednostki 2}}, {{Code|nazwa jednostki 3}},... - nazwy jednostek dla pozycji bazowej i numerkowej, * {{Code|typ jednostki}}, {{Code|typ jednostki 1}}, {{Code|typ jednostki 2}}, {{Code|typ jednostki 3}},..., {{Code|typ jednostki i}} - typy jednostek, którym odpowiadają pewne przestrzenie przedmiotowe, dla pozycji bazowej, numerkowej i ogólnej. Parametry ramki tablicy transportu dziecka: * Parametry dziecka są takie same jak rodzica dla funkcji pudełkowej plus tu wymienione, * {{Code|numer jednostki}} - jak parametr {{Code|i}} nie został ustawiony, to wtedy liczy się ta zmienna. Przykłady: <syntaxhighlight lang="mediawiki"> {{Nazwa szablonu|nazwa przestrzeni nazw=Wikibooks|nazwa przestrzeni nazw 1=Szablon|nazwa przestrzeni nazw i=|nazwa jednostki 2=Dyskusja Wikibooks:Strona}} </syntaxhighlight> W dziecku powiedzmy jest wywołanie, i szukamy nazwy przestrzeni nazw o numerze dwa, która została podana, ale istnieje za to jej wersji ogólna {{Code|nazwa przestrzeni nazw i}} i domyślna {{Code|nazwa przestrzeni nazw}}, ale wtedy dla tego numerkowego liczy się to ogólne z {{Code| i}}, a ponieważ ta nazwa jest pusta, więc będziemy liczyli nazwę przestrzeni nazw z {{Code|nazwa jednostki 2}}: <syntaxhighlight lang="mediawiki"> {{#invoke:Pudełko|Nazwa przedmiotowej przestrzeni nazw 2|numer jednostki=2}} </syntaxhighlight> Na podstawie powyższego przykładu otrzymamy wynik o schemacie, nie wyniku, bo tam nie ma zmiennej {{Code|nazwa przestrzeni nazw 1}}, ale jest {{Code|nazwa przestrzeni nazw i}}: <syntaxhighlight lang="mediawiki"> <!-- Ale nie "nazwa przestrzeni nazw 2", bo jej nie ma, ale za to istnieje "nazwa przestrzeni nazw i"; --> <!-- nazwa przestrzeni nazw 2=nazwa przestrzeni nazw i="", a nazwa jednostki 2="Dyskusja Wikibooks:Strona"; --> <!-- Czyli wynik: --> Wikibooks <!-- Widzimy, że wygenerowała się nazwa przestrzeni nazw, którą jest przestrzeń nieprogramowa, ale projektu, wychodząca z nazwy jednostek w tym przypadku z "nazwa jednostki 2"; --> </syntaxhighlight> Nie jest brana w tym powyższym przykładzie zmienna {{Code|nazwa przestrzeni nazw}}, bo jej nie ma, ale za to jest {{Code|nazwa przestrzeni nazw i}}, bo ona występuje jako parametr domyślny ogólny dla parametrów numerkowych. Tytaj jest używana jest zmienna {{Code|nazwa jednostki 2}} do wygenerowania ostatecznego wyniku, bo jak można zauważyć, parametry przestrzenne wskazują na przestrzeń główną, a nazwy jednostek już nie. Przykłady w wikikodzie: * {{Code|{{m|Pudełko|Nazwa przedmiotowej przestrzeni nazw 2|numer jednostki{{=}}2}}}} → {{Tt|{{#invoke:Pudełko|Nazwa przedmiotowej przestrzeni nazw 2|numer jednostki=2}}}} * {{Code|{{m|Pudełko|Nazwa przedmiotowej przestrzeni nazw 2|Dyskusja szablonu|nazwa przestrzeni nazw i{{=}}Moja przestrzeń|numer jednostki{{=}}2}}}} → {{Tt|{{#invoke:Pudełko|Nazwa przedmiotowej przestrzeni nazw 2|Dyskusja szablonu|nazwa przestrzeni nazw i=Moja przestrzeń|numer jednostki=2}}}} * {{Code|{{m|Pudełko|Nazwa przedmiotowej przestrzeni nazw 2|nazwa przestrzeni nazw 2{{=}}Dyskusja|nazwa jednostki 2{{=}}Dyskusja szablonu:Strona|numer jednostki{{=}}2}}}} → {{Tt|{{#invoke:Pudełko|Nazwa przedmiotowej przestrzeni nazw 2|nazwa przestrzeni nazw 2=Dyskusja|nazwa jednostki 2=Dyskusja szablonu:Strona|numer jednostki=2}}}} * {{Code|{{m|Pudełko|Nazwa przedmiotowej przestrzeni nazw 2|nazwa przestrzeni nazw i{{=}}Dyskusja|nazwa jednostki 2{{=}}Dyskusja szablonu:Strona|numer jednostki{{=}}2}}}} → {{Tt|{{#invoke:Pudełko|Nazwa przedmiotowej przestrzeni nazw 2|nazwa przestrzeni nazw i=Dyskusja|nazwa jednostki 2=Dyskusja szablonu:Strona|numer jednostki=2}}}} * {{Code|{{m|Pudełko|Nazwa przedmiotowej przestrzeni nazw 2|Dyskusja szablonu|nazwa przestrzeni nazw{{=}}Dyskusja|nazwa jednostki 2{{=}}Wikibooks:Strona|numer jednostki{{=}}2}}}} → {{Tt|{{#invoke:Pudełko|Nazwa przedmiotowej przestrzeni nazw 2|Dyskusja szablonu|nazwa przestrzeni nazw=Dyskusja|nazwa jednostki 2=Dyskusja Wikibooks:Strona|numer jednostki=2}}}} Powyżej dla przykładu podano parametry nie w rodzicu w szablonie, tylko w dziecku, jeśli chodzi o parametry nazw przestrzeni nazw i nazw jednostek, ale ich się za to nie powinno podawać w tych ramach, tylko w szablonach, w których wywoływane są te ramki pudełek {{Code|{{m|Pudełko}}}}, ale tak tutaj tak zrobiono by było najłatwiej sprawdzić działanie tego typu funkcji. Analogicznie możemy podawać parametry typu jednostki, np.: wywołaniu modułowym {{Code|{{m|Pudełko|Nazwa przedmiotowej przestrzeni nazw 2|typ jednostki 2{{=}}Podręcznik|nazwa jednostki 2{{=}}Dyskusja szablonu:Strona|numer jednostki{{=}}2}}}} (ale wtedy jest brana przestrzeń nazw z nazwy jednostki), ale o tym więcej w rozdziałach {{Code|{{sr|#p["Przedmiotowy typ jednostki 2"](frame,i)|p=Pudełko}}}} w „{{sr|#Funkcje typu jednostki|p=Pudełko}}”, on definiuje przestrzenie przedmiotowe, ale można użyć parametru dyskusji typu jednostki z wartością niepustą, pustą, czy nawet jej nie podamy, wtedy wyświetli się nazwa przestrzeni nazw przedmiotowej. Jeżeli typ jednostki wskazuje na przestrzeń nazw główną, wtedy się liczą parametry nazw jednostek. Typ jednostki nie ma takiej samej wartości dla przestrzeni przedmiotowej, co dyskusji. Również parametry typu jednostki nie powinno się podawać w dziecku w ramce, tylko w rodzicu w szablonie jako parametry, w którym ta ramka jest wywoływana, ale tutaj podano jedynie dla przykładu, jak najłatwiej sprawdzić działanie tych parametrów tej funkcji. Najpierw w funkcji nagłówku brane są parametry nazw przestrzeni nazw, a jeżeli ich nie ma, to parametry typu jednostki, a jeżeli nie ma lub parametry przestrzenne wskazują na przestrzeń główną, i nie ma nazwy jednostki, to generowane są nazwy tej funkcji na podstawie aktualnej strony. === {{Code|p["Nazwa przestrzeni nazw dyskusji 2"](frame,...)}} === Funkcja pisze nazwę przestrzeni nazw dyskusji jakikolwiek nazwy przestrzeni nazw (tzn. nazwę dyskusji nazwy przestrzenie nazw, czyli nie przedmiotowej, zamieniana jest na nią samą, czyli identyfikator przestrzeni się nie zmienia, a przedmiotową, nie dyskusji, przekształca się na dyskusji jej odpowiadającą, czyli w tym przypadku identyfikator przestrzeni zwiększa się o numer więcej), według, i nie zawsze tylko, podanej w zmiennej {{Code|nazwa przestrzeni nazw}} dla pozycja bazowej w podanych parametrach szablonu rodzicu ramki dziecka, lub dla innej pozycji należy parametr podawać w formie {{Code|nazwa przestrzeni nazw 1}}, {{Code|nazwa przestrzeni nazw 2}}, {{Code|nazwa przestrzeni nazw 3}},..., lub te parametry można podać w postaci ogólnej {{Code|nazwa przestrzeni nazw i}}. W tej funkcji trzeba też podawać parametry nazwy jednostek {{Code|nazwa jednostki}}, {{Code|nazwa jednostki 1}}, {{Code|nazwa jednostki 2}}, {{Code|nazwa jednostki 3}},... Parametry podaje się w parametrach rodzica wywołania tej funkcji {{Code|{{m|Pudełko|Nazwa przestrzeni nazw dyskusji 2}}}} (ale ich nie trzeba podawać w dziecku, ale można) i w parametrach dziecka, jeśli chodzi o zmienną {{Code|numer jednostki}}, czyli np.: {{Code|{{m|Pudełko|Nazwa przestrzeni nazw dyskusji 2|numer jednostki{{=}}<jakaś liczba całkowita dodatnia>}}}}. Te parametry przestrzenne zamiast w rodzicu w szablonie można podać w ramce dziecka, wtedy parametry dziecka mają pierwszeństwo. Przestrzeń nazw z parametrów nazw przestrzennych po przekształceniu może odpowiadać wartości przestrzeni głównej, to wtedy odpowiednia przestrzeń nazw z parametru nazwy jednostki się liczy w tej funkcji, wtedy jest liczona nazwa przestrzeni nazw dyskusji z tego parametru. Gdy parametry przestrzenne lub typ jednostki w drugim podejściu nie wskazują na przestrzeń główną, to wtedy działanie tej funkcji jest podobne do {{Code|{{sr|#p["Nazwa dyskusji przestrzeni nazw"](frame,...)|p=Pudełko}}}}. Definicja skrótowa funkcji: <syntaxhighlight lang="lua"> p["Nazwa przestrzeni nazw dyskusji 2"]=function(frame,czy_uwzglednic_alternatywna_nazwe,i)...end; </syntaxhighlight> Wtedy ciało funkcji tej, czyli jego definicja w środku, jest: <syntaxhighlight lang="lua"> local pudelko_pomocne_modul=require("Module:Pudełko/Pomocne"); return pudelko_pomocne_modul.Nazwa_przestrzeni_nazw_przedmiotowa_dyskusji_2(frame,czy_uwzglednic_alternatywna_nazwe,i,"dyskusja"); </syntaxhighlight> Parametry funkcji: * {{Code|frame}} - tablica ramki tablicy transportu, * {{Code|czy_uwzglednic_alternatywna_nazwe}} - czy ma uwzględniać nazwę przestrzeni nazw domyślną szablonu, dostępne wartości: {{Code|false}}, w której nazwa domyślna nie jest uwzględniana wtedy, oraz {{Code|nil}} i {{Code|true}}, które oznaczają to samo, w tym jeżeli ona jest uwzględniana, wtedy jest brany parametr pierwszy dziecka, który musi istnieć przy takiej wartości tego parametru, tzn. {{Code|{{m|Pudełko|Nazwa przestrzeni nazw dyskusji 2|Szablon}}}}, nazwa domyślna zostanie zamieniona na dyskusji, a jeżeli jest już taka, to nie ma takiej zamiany, a jeśli nazwa uzyskana nazwy przestrzeni nazw jest w takim przypadku błędna, to brany jest ten element, a jeżeli nazwa domyślna jest błędna, czyli {{Code|{{m|Pudełko|Nazwa przestrzeni nazw dyskusji 2|Moja przestrzeń}}}}, wtedy funkcja zwraca stan błędu {{Code|(błąd)}}. * {{Code|i}} - numer zmiennej nazwy przestrzeni nazw. Funkcja wykorzystuje {{Code|{{sr|#p.Nazwa_przestrzeni_nazw_przedmiotowa_dyskusji_2(frame,...)|p=Pudełko/Pomocne}}}} do wyznaczania ogólnego nazwy przestrzeni nazw dla pozycji bazowej i numerkowej, tzn. dla pozycji: jeden, dwa, trzy,..., itd, i ich ogólnej. Parametr ramki tablicy transportu rodzica szablonu: * {{Code|nazwa przestrzeni nazw}}, {{Code|nazwa przestrzeni nazw 1}}, {{Code|nazwa przestrzeni nazw 2}}, {{Code|nazwa przestrzeni nazw 3}},..., {{Code|nazwa przestrzeni nazw i}} - nazwy przestrzeni nazw dla pozycji bazowej oraz zwykłej i ogólnej numerkowej, * {{Code|nazwa jednostki}}, {{Code|nazwa jednostki 1}}, {{Code|nazwa jednostki 2}}, {{Code|nazwa jednostki 3}},... - nazwy jednostek dla pozycji bazowej i numerkowej, * {{Code|typ jednostki}}, {{Code|typ jednostki 1}}, {{Code|typ jednostki 2}}, {{Code|typ jednostki 3}},..., {{Code|typ jednostki i}} - typy jednostek, którym odpowiadają pewne przestrzenie przedmiotowe, dla pozycji bazowej, numerkowej i ogólnej. Parametry ramki tablicy transportu dziecka: * Parametry dziecka są takie same jak rodzica dla funkcji pudełkowej plus tu wymienione, * {{Code|numer jednostki}} - jak parametr {{Code|i}} nie został ustawiony, to wtedy liczy się ta zmienna. Przykłady: <syntaxhighlight lang="mediawiki"> {{Nazwa szablonu|nazwa przestrzeni nazw=Wikibooks|nazwa przestrzeni nazw 1=Szablon|nazwa przestrzeni nazw i=|nazwa jednostki 2=Wikibooks:Strona}} </syntaxhighlight> W dziecku powiedzmy jest wywołanie, i szukamy nazwy przestrzeni nazw o numerze dwa, która została podana, ale istnieje za to jej wersji ogólna {{Code|nazwa przestrzeni nazw i}} i domyślna {{Code|nazwa przestrzeni nazw}}, ale wtedy dla tego numerkowego liczy się to ogólne z {{Code| i}}, a ponieważ ta nazwa jest pusta, więc będziemy liczyli nazwę przestrzeni nazw z {{Code|nazwa jednostki 2}}: <syntaxhighlight lang="mediawiki"> {{#invoke:Pudełko|Nazwa przestrzeni nazw dyskusji 2|numer jednostki=2}} </syntaxhighlight> Na podstawie powyższego przykładu otrzymamy wynik o schemacie, nie wyniku, bo tam nie ma zmiennej {{Code|nazwa przestrzeni nazw 1}}, ale jest {{Code|nazwa przestrzeni nazw i}}: <syntaxhighlight lang="mediawiki"> <!-- Ale nie "nazwa przestrzeni nazw 2", bo jej nie ma, ale za to istnieje "nazwa przestrzeni nazw i"; --> <!-- nazwa przestrzeni nazw 2=nazwa przestrzeni nazw i="", a nazwa jednostki 2="Wikibooks:Strona"; --> <!-- Czyli wynik: --> Dyskusja Wikibooks <!-- Widzimy, że wygenerowała się nazwa przestrzeni nazw, którą jest przestrzeń nieprogramowa, ale dyskusji projektu, wychodząca z nazwy jednostek w tym przypadku z "nazwa jednostki 2"; --> </syntaxhighlight> Nie jest brana w tym powyższym przykładzie zmienna {{Code|nazwa przestrzeni nazw}}, bo jej nie ma, ale za to jest {{Code|nazwa przestrzeni nazw i}}, bo ona występuje jako parametr domyślny ogólny dla parametrów numerkowych. Tytaj jest używana jest zmienna {{Code|nazwa jednostki 2}} do wygenerowania ostatecznego wyniku, bo jak można zauważyć, parametry przestrzenne wskazują na przestrzeń główną, a nazwy jednostek już nie. Przykłady w wikikodzie: * {{Code|{{m|Pudełko|Nazwa przestrzeni nazw dyskusji 2|numer jednostki{{=}}2}}}} → {{Tt|{{#invoke:Pudełko|Nazwa przestrzeni nazw dyskusji 2|numer jednostki=2}}}} * {{Code|{{m|Pudełko|Nazwa przestrzeni nazw dyskusji 2|Szablon|nazwa przestrzeni nazw i{{=}}Moja przestrzeń|numer jednostki{{=}}2}}}} → {{Tt|{{#invoke:Pudełko|Nazwa przestrzeni nazw dyskusji 2|Szablon|nazwa przestrzeni nazw i=Moja przestrzeń|numer jednostki=2}}}} * {{Code|{{m|Pudełko|Nazwa przestrzeni nazw dyskusji 2|nazwa przestrzeni nazw 2{{=}}|nazwa jednostki 2{{=}}Szablon:Strona|numer jednostki{{=}}2}}}} → {{Tt|{{#invoke:Pudełko|Nazwa przestrzeni nazw dyskusji 2|nazwa przestrzeni nazw 2=|nazwa jednostki 2=Szablon:Strona|numer jednostki=2}}}} * {{Code|{{m|Pudełko|Nazwa przestrzeni nazw dyskusji 2|nazwa przestrzeni nazw i{{=}}|nazwa jednostki 2{{=}}Szablon:Strona|numer jednostki{{=}}2}}}} → {{Tt|{{#invoke:Pudełko|Nazwa przestrzeni nazw dyskusji 2|nazwa przestrzeni nazw i=|nazwa jednostki 2=Szablon:Strona|numer jednostki=2}}}} * {{Code|{{m|Pudełko|Nazwa przestrzeni nazw dyskusji 2|Szablon|nazwa przestrzeni nazw{{=}}|nazwa jednostki 2{{=}}Wikibooks:Strona|numer jednostki{{=}}2}}}} → {{Tt|{{#invoke:Pudełko|Nazwa przestrzeni nazw dyskusji 2|Szablon|nazwa przestrzeni nazw=|nazwa jednostki 2=Dyskusja Wikibooks:Strona|numer jednostki=2}}}} Powyżej dla przykładu podano parametry nie w rodzicu w szablonie, tylko w dziecku, jeśli chodzi o parametry nazw przestrzeni nazw i nazw jednostek, ale ich się za to nie powinno podawać w tych ramach, tylko w szablonach, w których wywoływane są te ramki pudełek {{Code|{{m|Pudełko}}}}, ale tak tutaj tak zrobiono by było najłatwiej sprawdzić działanie tego typu funkcji. Analogicznie możemy podawać parametry typu jednostki, np.: wywołaniu modułowym {{Code|{{m|Pudełko|Nazwa przestrzeni nazw dyskusji 2|typ jednostki 2{{=}}Podręcznik|nazwa jednostki 2{{=}}Szablon:Strona|numer jednostki{{=}}2}}}} (ale wtedy jest brana przestrzeń nazw z nazwy jednostki), ale o tym więcej w rozdziałach {{Code|{{sr|#p["Dyskusyjny typ jednostki 3"](frame,i)|p=Pudełko}}}} w „{{sr|#Funkcje typu jednostki|p=Pudełko}}”, one definiują przestrzenie dyskusji, ale można użyć parametru dyskusji typu jednostki z obojętnie jaką wartością niepustą, czy pustą, czy nawet jej nie podamy, wtedy wyświetli się nazwa przestrzeni nazw dyskusji. Jeżeli typ jednostki wskazuje na przestrzeń nazw główną, wtedy się liczą parametry nazw jednostek. Typ jednostki nie ma takiej samej wartości dla przestrzeni przedmiotowej, co dyskusji. Również parametry typu jednostki nie powinno się podawać w dziecku w ramce, tylko w rodzicu w szablonie jako parametry, w którym ta ramka jest wywoływana, ale tutaj podano jedynie dla przykładu, jak najłatwiej sprawdzić działanie tych parametrów tej funkcji. Najpierw w funkcji nagłówku brane są parametry nazw przestrzeni nazw, a jeżeli ich nie ma, to parametry typu jednostki, a jeżeli nie ma lub parametry przestrzenne wskazują na przestrzeń główną, i nie ma nazwy jednostki, to generowane są nazwy tej funkcji na podstawie aktualnej strony. == Funkcje pełnych nazw jednostki == === {{Code|p["Pełna nazwa dyskusji jednostki"](frame,i)}} === === {{Code|p["Pełna nazwa przedmiotowa jednostki"](frame,i)}} === === {{Code|p["Pełna nazwa jednostki"](frame,i)}} === == Funkcje pełnych nazw jednostki drugiej wersji == === {{Code|p["Pełna nazwa dyskusji jednostki 2"](frame,i)}} === === {{Code|p["Pełna nazwa przedmiotowa jednostki 2"](frame,i)}} === === {{Code|p["Pełna nazwa jednostki 2"](frame,i)}} === == Funkcje pełnych nazw jednostki trzeciej wersji == === {{Code|p["Pełna nazwa dyskusji jednostki 3"](frame,i)}} === === {{Code|p["Pełna nazwa przedmiotowa jednostki 3"](frame,i)}} === === {{Code|p["Pełna nazwa jednostki 3"](frame,i)}} === == Funkcje nazw jednostki == === {{Code|p["Nazwa jednostki"](frame,i)}} === == Funkcje nazw jednostki drugiej wersji == === {{Code|p["Nazwa jednostki 2"](frame,i)}} === === {{Code|p["Nazwa przedmiotowa jednostki 2"](frame,i)}} === === {{Code|p["Nazwa dyskusji jednostki 2"](frame,i)}} === == Funkcje nazw przestrzeni nazw trzeciej wersji == === {{Code|p["Nazwa przestrzeni nazw 3"](frame,i)}} === Funkcja pisze nazwę przestrzeni nazw, niezależnie, czy to jest przedmiotowa, czy dyskusji, według, i nie zawsze tylko, podanej w zmiennej {{Code|nazwa przestrzeni nazw}} dla pozycja bazowej w podanych parametrach szablonu rodzicu ramki dziecka, lub dla innej pozycji należy parametr podawać w formie {{Code|nazwa przestrzeni nazw 1}}, {{Code|Nazwa przestrzeni nazw 3}}, {{Code|nazwa przestrzeni nazw 3}},..., lub te parametry można podać w postaci ogólnej {{Code|nazwa przestrzeni nazw i}}. W tej funkcji trzeba też podawać parametry nazwy jednostek {{Code|nazwa jednostki}}, {{Code|nazwa jednostki 1}}, {{Code|nazwa jednostki 2}}, {{Code|nazwa jednostki 3}},... Parametry podaje się w parametrach rodzica wywołania tej funkcji {{Code|{{m|Pudełko|Nazwa przestrzeni nazw 3}}}} (ale ich nie trzeba podawać w dziecku, ale można) i w parametrach dziecka, jeśli chodzi o zmienną {{Code|numer jednostki}}, czyli np.: {{Code|{{m|Pudełko|Nazwa przestrzeni nazw 3|numer jednostki{{=}}<jakaś liczba całkowita dodatnia>}}}}. Te parametry przestrzenne zamiast w rodzicu w szablonie można podać w ramce dziecka, wtedy parametry dziecka mają pierwszeństwo. Przestrzeń nazw z parametrów nazw przestrzennych bazowych (bez numerka) może odpowiadać wartości przestrzeni głównej, to wtedy odpowiednia przestrzeń nazw z parametru nazwy jednostki się nie liczy w tej funkcji, aby się liczyła należy użyć funkcji {{Code|{{sr|#p["Nazwa przestrzeni nazw 2"](frame,...)|p=Pudełko}}}}. W tym przypadku funkcja działa jak {{Code|{{sr|#p["Nazwa przestrzeni nazw"](frame,...)|p=Pudełko}}}}. Przestrzeń nazw z parametrów nazw przestrzennych numerkowych może odpowiadać wartości przestrzeni głównej, to wtedy odpowiednia przestrzeń nazw z parametru nazwy jednostki się liczy w tej funkcji, wtedy jest liczona nazwa przestrzeni nazw z tego parametru. Gdy parametry przestrzenne lub typ jednostki w drugim podejściu nie wskazują na przestrzeń główną, to wtedy działanie tej funkcji jest podobne do {{Code|{{sr|#p["Nazwa przestrzeni nazw 2"](frame,...)|p=Pudełko}}}}. Definicja skrótowa funkcji: <syntaxhighlight lang="lua"> p["Nazwa przestrzeni nazw 3"]=function(frame,czy_uwzglednic_alternatywna_nazwe,i)...end; </syntaxhighlight> Wtedy ciało funkcji tej, czyli jego definicja w środku, jest: <syntaxhighlight lang="lua"> -- Jest liczony numer parametru nazwy przestrzeni nazw, domyslnie chodzi tu o numer bazowy parametrów przestrzennych; local numer_jednostki=i or frame.args["numer jednostki"]; local liczba_numeru_jednostki=((numer_jednostki)and(tonumber(numer_jednostki)) or 0); local pudelko_pomocne_modul=require("Module:Pudełko/Pomocne"); -- Liczy nazwę przestrzeni nazw dyskusji na podstawie podanych parametrów; return pudelko_pomocne_modul.Uzyskanie_nazw_jednostki(frame,0,liczba_numeru_jednostki,nil,2); </syntaxhighlight> Parametry funkcji: * {{Code|frame}} - tablica ramki tablicy transportu, * {{Code|czy_uwzglednic_alternatywna_nazwe}} - czy ma uwzględniać nazwę przestrzeni nazw domyślną szablonu, dostępne wartości: {{Code|false}}, w której nazwa domyślna nie jest uwzględniana wtedy, oraz {{Code|nil}} i {{Code|true}}, które oznaczają to samo, w tym jeżeli ona jest uwzględniana, wtedy jest brany parametr pierwszy dziecka, który musi istnieć przy takiej wartości tego parametru, tzn. {{Code|{{m|Pudełko|Nazwa przestrzeni nazw 3|Szablon}}}}, a jeśli nazwa uzyskana nazwy przestrzeni nazw jest w takim przypadku błędna, to brany jest ten element, a jeżeli nazwa domyślna jest błędna, czyli {{Code|{{m|Pudełko|Nazwa przestrzeni nazw 3|Moja przestrzeń}}}}, wtedy funkcja zwraca stan błędu {{Code|(błąd)}}. * {{Code|i}} - numer zmiennej nazwy przestrzeni nazw. Funkcja wykorzystuje {{Code|{{sr|#p.Uzyskanie_nazw_jednostki(frame,...)|p=Pudełko/Pomocne}}}} do wyznaczania ogólnego nazwy przestrzeni nazw dla pozycji bazowej i numerkowej, tzn. dla pozycji: jeden, dwa, trzy,..., itd, i ich ogólnej. Parametr ramki tablicy transportu rodzica szablonu: * {{Code|nazwa przestrzeni nazw}}, {{Code|nazwa przestrzeni nazw 1}}, {{Code|Nazwa przestrzeni nazw 3}}, {{Code|nazwa przestrzeni nazw 3}},..., {{Code|nazwa przestrzeni nazw i}} - nazwy przestrzeni nazw dla pozycji bazowej oraz zwykłej i ogólnej numerkowej, * {{Code|nazwa jednostki}}, {{Code|nazwa jednostki 1}}, {{Code|nazwa jednostki 2}}, {{Code|nazwa jednostki 3}},... - nazwy jednostek dla pozycji bazowej i numerkowej, * {{Code|typ jednostki}}, {{Code|typ jednostki 1}}, {{Code|typ jednostki 2}}, {{Code|typ jednostki 3}},..., {{Code|typ jednostki i}} - typy jednostek, którym odpowiadają pewne przestrzenie przedmiotowe, dla pozycji bazowej, numerkowej i ogólnej, ** {{Code|dyskusja typu jednostki}}, {{Code|dyskusja typu jednostki 1}}, {{Code|dyskusja typ jednostki 2}}, {{Code|dyskusja typ jednostki 3}},..., {{Code|dyskusja typ jednostki i}} - czy dany typ jednostki ma przedstawiać, jeśli niepusta, przestrzeń dyskusji dla pozycji bazowej, numerkowej i ogólnej. Parametry ramki tablicy transportu dziecka: * Parametry dziecka są takie same jak rodzica dla funkcji pudełkowej plus tu wymienione, * {{Code|numer jednostki}} - jak parametr {{Code|i}} nie został ustawiony, to wtedy liczy się ta zmienna. Przykłady: <syntaxhighlight lang="mediawiki"> {{Nazwa szablonu 1|nazwa przestrzeni nazw=Wikibooks|nazwa przestrzeni nazw=|nazwa przestrzeni nazw i=|nazwa jednostki=Szablon:Strona}} ---- {{Nazwa szablonu 2|nazwa przestrzeni nazw=Wikibooks|nazwa przestrzeni nazw 1=Szablon|nazwa przestrzeni nazw i=|nazwa jednostki 2=Wikibooks:Strona}} </syntaxhighlight> W pierwszym wywołaniu {{Code|nazwa przestrzeni nazw}} jest puste, ale dla tego bazowego (bez numerka) szukamy przestrzeni nazw, a więc ta nazwa jest ostateczna. ---- W drugim wywołaniu w dziecku powiedzmy jest wywołanie, i szukamy nazwy przestrzeni nazw o numerze dwa, która została podana, ale istnieje za to jej wersji ogólna {{Code|nazwa przestrzeni nazw i}} i domyślna {{Code|nazwa przestrzeni nazw}}, ale wtedy dla tego numerkowego liczy się to ogólne z {{Code| i}}, a ponieważ ta nazwa jest pusta, więc będziemy liczyli nazwę przestrzeni nazw z {{Code|nazwa jednostki 2}}. Odpowiadająca powyższemu kodowi, powiedzmy wikikod, według ich zawartości, przedstawia się: <syntaxhighlight lang="mediawiki"> {{#invoke:Pudełko|Nazwa przestrzeni nazw 3}} ---- {{#invoke:Pudełko|Nazwa przestrzeni nazw 3|numer jednostki=2}} </syntaxhighlight> Na podstawie powyższego przykładu otrzymamy wynik o schemacie, nie wyniku, bo tam nie ma zmiennej {{Code|nazwa przestrzeni nazw 1}}, ale jest {{Code|nazwa przestrzeni nazw i}}: <syntaxhighlight lang="mediawiki"> <!-- nazwa przestrzeni nazw=""; --> <!-- Czyli wynik: --> <!-- wynik pusty --> <!-- Widzimy, że wygenerowała się nazwa przestrzeni nazw, którą jest przestrzeń nazw główna, jest ciągiem pustym: ""; --> ---- <!-- Ale nie "nazwa przestrzeni nazw 2", bo jej nie ma, ale za to istnieje "nazwa przestrzeni nazw i"; --> <!-- nazwa przestrzeni nazw 2=nazwa przestrzeni nazw i="", a nazwa jednostki 2="Wikibooks:Strona"; --> <!-- Czyli wynik: --> Wikibooks <!-- Widzimy, że wygenerowała się nazwa przestrzeni nazw, którą jest przestrzeń nieprogramowa, ale projektu, wychodząca z nazwy jednostek w tym przypadku z "nazwa jednostki 2"; --> </syntaxhighlight> Dla parametrów numerkowych nie jest brana w tym powyższym przykładzie zmienna {{Code|nazwa przestrzeni nazw 2}}, bo jej nie ma, ale za to jest {{Code|nazwa przestrzeni nazw i}}, bo ona występuje jako parametr domyślny ogólny dla parametrów numerkowych. Tytaj jest używana jest zmienna {{Code|nazwa jednostki 2}} do wygenerowania ostatecznego wyniku, bo jak można zauważyć, parametry przestrzenne wskazują na przestrzeń główną, a nazwy jednostek już nie. Dla parametrów bazowych mamy zmienną {{Code|nazwa przestrzeni nazw}}, ona jest pusta, więc to zostanie wziete do ostatecznego wyniku. Przykłady w wikikodzie: * {{Code|{{m|Pudełko|Nazwa przestrzeni nazw 3|Szablon|nazwa przestrzeni nazw{{=}}Moja przestrzeń|nazwa jednostki{{=}}Wikibooks:Strona}}}} → {{Tt|{{#invoke:Pudełko|Nazwa przestrzeni nazw 3|Szablon|nazwa przestrzeni nazw=Moja przestrzeń|nazwa jednostki=Wikibooks:Szablon}}}} * {{Code|{{m|Pudełko|Nazwa przestrzeni nazw 3|Szablon|nazwa przestrzeni nazw 2{{=}}Moja przestrzeń|nazwa jednostki 2{{=}}Wikibooks:Strona}|numer jednostki{{=}}2}}}} → {{Tt|{{#invoke:Pudełko|Nazwa przestrzeni nazw 3|Szablon|nazwa przestrzeni nazw 2=Moja przestrzeń|nazwa jednostki 2=Wikibooks:Szablon|numer jednostki=2}}}} * {{Code|{{m|Pudełko|Nazwa przestrzeni nazw 3|nazwa przestrzeni nazw{{=}}|nazwa jednostki{{=}}Wikibooks:Strona}}}} → {{Tt|{{#invoke:Pudełko|Nazwa przestrzeni nazw 3|nazwa przestrzeni nazw=|nazwa jednostki=Wikibooks:Szablon}}}} * {{Code|{{m|Pudełko|Nazwa przestrzeni nazw 3|nazwa przestrzeni nazw 2{{=}}|nazwa jednostki 2{{=}}Wikibooks:Strona|numer jednostki{{=}}2}}}} → {{Tt|{{#invoke:Pudełko|Nazwa przestrzeni nazw 3|nazwa przestrzeni nazw 2=|nazwa jednostki 2=Wikibooks:Szablon|numer jednostki=2}}}} Powyżej dla przykładu podano parametry nie w rodzicu w szablonie, tylko w dziecku, jeśli chodzi o parametry nazw przestrzeni nazw i nazw jednostek, ale ich się za to nie powinno podawać w tych ramach, tylko w szablonach, w których wywoływane są te ramki pudełek {{Code|{{m|Pudełko}}}}, ale tak tutaj tak zrobiono by było najłatwiej sprawdzić działanie tego typu funkcji. Analogicznie możemy podawać parametry typu jednostki, np.: wywołaniu modułowym {{Code|{{m|Pudełko|Nazwa przestrzeni nazw 3|typ jednostki 2{{=}}Podręcznik|nazwa jednostki 2{{=}}Szablon:Strona|numer jednostki{{=}}2}}}} (ale wtedy jest brana przestrzeń nazw z nazwy jednostki), ale o tym więcej w rozdziałach {{Code|{{sr|#p["Typ jednostki 3"](frame,i)|p=Pudełko}}}} w „{{sr|#Funkcje typu jednostki|p=Pudełko}}”, on definiuje przestrzenie przedmiotowe, ale można użyć parametru dyskusji typu jednostki z wartością niepustą, wtedy wyświetli się nazwa przestrzeni nazw dyskusji. Typ jednostki nie ma takiej samej wartości dla przestrzeni przedmiotowej, co dyskusji. Również parametry typu jednostki nie powinno się podawać w dziecku w ramce, tylko w rodzicu w szablonie jako parametry, w którym ta ramka jest wywoływana, ale tutaj podano jedynie dla przykładu, jak najłatwiej sprawdzić działanie tych parametrów tej funkcji. Najpierw w funkcji nagłówku brane są parametry nazw przestrzeni nazw, a jeżeli ich nie ma, to parametry typu jednostki, a jeżeli nie ma lub parametry przestrzenne wskazują na przestrzeń główną, i nie ma nazwy jednostki, to generowane są nazwy tej funkcji na podstawie aktualnej strony. === {{Code|p["Nazwa przedmiotowej przestrzeni nazw 3"](frame,i)}} === Funkcja pisze przedmiotową nazwę przestrzeni nazw jakikolwiek nazwy przestrzeni nazw (tzn. nazwę przedmiotową nazwy przestrzenie nazw, czyli nie dyskusji, zamieniana jest na nią samą, czyli identyfikator przestrzeni się nie zmienia, a dyskusji, nie przedmiotową, przekształca się na przedmiotową jej odpowiadającą, czyli w tym przypadku identyfikator przestrzeni zmniejsza się o numer mniej), według podanej w zmiennej {{Code|nazwa przestrzeni nazw}} dla pozycja bazowej w podanych parametrach szablonu rodzicu ramki dziecka, lub dla innej pozycji należy parametr podawać w formie {{Code|nazwa przestrzeni nazw 1}}, {{Code|nazwa przestrzeni nazw 2}}, {{Code|nazwa przestrzeni nazw 3}},..., lub te parametry można podać w postaci ogólnej {{Code|nazwa przestrzeni nazw i}}. Parametry podaje się w parametrach rodzica wywołania tej funkcji {{Code|{{m|Pudełko|Nazwa przedmiotowej przestrzeni nazw 3}}}} (ale ich nie trzeba podawać w dziecku, ale można) i w parametrach dziecka, jeśli chodzi o zmienną {{Code|numer jednostki}}, czyli np.: {{Code|{{m|Pudełko|Nazwa przedmiotowej przestrzeni nazw 3|numer jednostki{{=}}<jakaś liczba całkowita dodatnia>}}}}. Te parametry przestrzenne zamiast w rodzicu w szablonie można podać w ramce dziecka, wtedy parametry dziecka mają pierwszeństwo. Parametry przestrzenne mogą mogą być podane w postaci przestrzeni przedmiotowej lub dyskusji, ale ta funkcja zawsze ją zamienia na przedmiotową. Przestrzeń nazw z parametrów nazw przestrzennych bazowych (bez numerka) może odpowiadać wartości przestrzeni głównej, to wtedy odpowiednia przestrzeń nazw z parametru nazwy jednostki się nie liczy w tej funkcji, aby się liczyła należy użyć funkcji {{Code|{{sr|#p["Nazwa przedmiotowej przestrzeni nazw 2"](frame,...)|p=Pudełko}}}}. W tym przypadku funkcja działa jak {{Code|{{sr|#p["Nazwa przedmiotowej przestrzeni nazw"](frame,...)|p=Pudełko}}}}. Przestrzeń nazw z parametrów nazw przestrzennych numerkowych może odpowiadać wartości przestrzeni głównej, to wtedy odpowiednia przestrzeń nazw z parametru nazwy jednostki się liczy w tej funkcji, wtedy jest liczona nazwa przestrzeni nazw z tego parametru. Gdy parametry przestrzenne lub typ jednostki w drugim podejściu nie wskazują na przestrzeń główną, to wtedy działanie tej funkcji jest podobne do {{Code|{{sr|#p["Nazwa przedmiotowej przestrzeni nazw 2"](frame,...)|p=Pudełko}}}}. Definicja skrótowa funkcji: <syntaxhighlight lang="lua"> p["Nazwa przedmiotowej przestrzeni nazw 3"]=function(frame,czy_uwzglednic_alternatywna_nazwe,i)...end; </syntaxhighlight> Wtedy ciało funkcji tej, czyli jego definicja w środku, jest: <syntaxhighlight lang="lua"> -- Jest liczony numer parametru nazwy przestrzeni nazw, domyslnie chodzi tu o numer bazowy parametrów przestrzennych; local numer_jednostki=i or frame.args["numer jednostki"]; local liczba_numeru_jednostki=((numer_jednostki)and(tonumber(numer_jednostki)) or 0); local pudelko_pomocne_modul=require("Module:Pudełko/Pomocne"); -- Liczy nazwę przestrzeni nazw przedmiotową na podstawie podanych parametrów; return pudelko_pomocne_modul.Uzyskanie_nazw_jednostki(frame,1,liczba_numeru_jednostki,nil,1); </syntaxhighlight> Parametry funkcji: * {{Code|frame}} - tablica ramki tablicy transportu, * {{Code|czy_uwzglednic_alternatywna_nazwe}} - czy ma uwzględniać nazwę przestrzeni nazw domyślną szablonu, dostępne wartości: {{Code|false}}, w której nazwa domyślna nie jest uwzględniana wtedy, oraz {{Code|nil}} i {{Code|true}}, które oznaczają to samo, w tym jeżeli ona jest uwzględniana, wtedy jest brany parametr pierwszy dziecka, który musi istnieć przy takiej wartości tego parametru, tzn. {{Code|{{m|Pudełko|Nazwa przedmiotowej przestrzeni nazw 3|Dyskusja szablonu}}}} - ta nazwa domyślna zostanie zamieniona na przedmiotową, a jak ona by była przedmiotowa, to żadnej zamiany by nie było, a nazwa uzyskana z nazwy przestrzeni nazw z parametrów przestrzennych jest w takim przypadku błędna, to w takim razie brany jest ten parametr, a jeżeli ta nazwa domyślna jest błędna, czyli {{Code|{{m|Pudełko|Nazwa przedmiotowej przestrzeni nazw 3|Moja przestrzeń}}}}, wtedy funkcja zwraca stan błędu {{Code|(błąd)}}. * {{Code|i}} - numer zmiennej nazwy przestrzeni nazw. Funkcja wykorzystuje {{Code|{{sr|#p.Uzyskanie_nazw_jednostki(frame,...)|p=Pudełko/Pomocne}}}} do wyznaczania ogólnego nazwy przestrzeni nazw dla pozycji bazowej i numerkowej, tzn. dla pozycji: jeden, dwa, trzy,..., itd, i ich ogólnej. Parametr ramki tablicy transportu rodzica szablonu: * {{Code|nazwa przestrzeni nazw}}, {{Code|nazwa przestrzeni nazw 1}}, {{Code|nazwa przestrzeni nazw 2}}, {{Code|nazwa przestrzeni nazw 3}},..., {{Code|nazwa przestrzeni nazw i}} - nazwy przestrzeni nazw dla pozycji bazowej oraz zwykłej i ogólnej numerkowej, * {{Code|typ jednostki}}, {{Code|typ jednostki 1}}, {{Code|typ jednostki 2}}, {{Code|typ jednostki 3}},..., {{Code|typ jednostki i}} - typy jednostek, którym odpowiadają pewne przestrzenie przedmiotowe, dla pozycji bazowej, numerkowej i ogólnej. Parametry ramki tablicy transportu dziecka: * Parametry dziecka są takie same jak rodzica dla funkcji pudełkowej plus tu wymienione, * {{Code|numer jednostki}} - jak parametr {{Code|i}} nie został ustawiony, to wtedy liczy się ta zmienna. Przykłady: <syntaxhighlight lang="mediawiki"> {{Nazwa szablonu 1|nazwa przestrzeni nazw=Wikibooks|nazwa przestrzeni nazw=|nazwa przestrzeni nazw i=|nazwa jednostki=Dyskusja Wikibooks:Strona}} ---- {{Nazwa szablonu 2|nazwa przestrzeni nazw=Wikibooks|nazwa przestrzeni nazw 1=Szablon|nazwa przestrzeni nazw i=|nazwa jednostki 2=Dyskusja Wikibooks:Strona}} </syntaxhighlight> W pierwszym wywołaniu {{Code|nazwa przestrzeni nazw}} jest puste, ale dla tego bazowego (bez numerka) szukamy przestrzeni nazw, a więc ta nazwa jest ostateczna. ---- W drugim wywołaniu w dziecku powiedzmy jest wywołanie, i szukamy nazwy przestrzeni nazw o numerze dwa, która została podana, ale istnieje za to jej wersji ogólna {{Code|nazwa przestrzeni nazw i}} i domyślna {{Code|nazwa przestrzeni nazw}}, ale wtedy dla tego numerkowego liczy się to ogólne z {{Code| i}}, a ponieważ ta nazwa jest pusta, więc będziemy liczyli nazwę przestrzeni nazw z {{Code|nazwa jednostki 2}}. Odpowiadająca powyższemu kodowi, powiedzmy wikikod, według ich zawartości, przedstawia się: <syntaxhighlight lang="mediawiki"> {{#invoke:Pudełko|Nazwa przedmiotowej przestrzeni nazw 3}} ---- {{#invoke:Pudełko|Nazwa przedmiotowej przestrzeni nazw 3|numer jednostki=2}} </syntaxhighlight> Na podstawie powyższego przykładu otrzymamy wynik o schemacie, nie wyniku, bo tam nie ma zmiennej {{Code|nazwa przestrzeni nazw 1}}, ale jest {{Code|nazwa przestrzeni nazw i}}: <syntaxhighlight lang="mediawiki"> <!-- nazwa przestrzeni nazw=""; --> <!-- Czyli wynik: --> <!-- wynik pusty --> <!-- Widzimy, że wygenerowała się nazwa przestrzeni nazw, którą jest przestrzeń nazw główna, jest ciągiem pustym: ""; --> ---- <!-- Ale nie "nazwa przestrzeni nazw 2", bo jej nie ma, ale za to istnieje "nazwa przestrzeni nazw i"; --> <!-- nazwa przestrzeni nazw 2=nazwa przestrzeni nazw i="", a nazwa jednostki 2="Dyskusja Wikibooks:Strona"; --> <!-- Czyli wynik: --> Wikibooks <!-- Widzimy, że wygenerowała się nazwa przestrzeni nazw, którą jest przestrzeń nieprogramowa, ale projektu, wychodząca z nazwy jednostek w tym przypadku z "nazwa jednostki 2"; --> </syntaxhighlight> Dla parametrów numerkowych nie jest brana w tym powyższym przykładzie zmienna {{Code|nazwa przestrzeni nazw 2}}, bo jej nie ma, ale za to jest {{Code|nazwa przestrzeni nazw i}}, bo ona występuje jako parametr domyślny ogólny dla parametrów numerkowych. Tytaj jest używana jest zmienna {{Code|nazwa jednostki 2}} do wygenerowania ostatecznego wyniku, bo jak można zauważyć, parametry przestrzenne wskazują na przestrzeń główną, a nazwy jednostek już nie. Dla parametrów bazowych mamy zmienną {{Code|nazwa przestrzeni nazw}}, ona jest pusta, więc to zostanie wziete do ostatecznego wyniku. Przykłady w wikikodzie: * {{Code|{{m|Pudełko|Nazwa przedmiotowej przestrzeni nazw 3|Dyskusja szablonu|nazwa przestrzeni nazw{{=}}Moja przestrzeń|nazwa jednostki{{=}}Dyskusja Wikibooks:Strona}}}} → {{Tt|{{#invoke:Pudełko|Nazwa przedmiotowej przestrzeni nazw 3|Dyskusja szablonu|nazwa przestrzeni nazw=Moja przestrzeń||nazwa jednostki=Dyskusja Wikibooks:Szablon}}}} * {{Code|{{m|Pudełko|Nazwa przedmiotowej przestrzeni nazw 3|Dyskusja szablonu|nazwa przestrzeni nazw 2{{=}}Moja przestrzeń|nazwa jednostki 2{{=}}Dyskusja Wikibooks:Strona|numer jednostki{{=}}2}}}} → {{Tt|{{#invoke:Pudełko|Nazwa przedmiotowej przestrzeni nazw 3|Dyskusja szablonu|nazwa przestrzeni nazw 2=Moja przestrzeń||nazwa jednostki 2=Dyskusja Wikibooks:Szablon|numer jednostki=2}}}} * {{Code|{{m|Pudełko|Nazwa przedmiotowej przestrzeni nazw 3|nazwa przestrzeni nazw{{=}}|nazwa jednostki{{=}}Dyskusja Wikibooks:Strona}}}} → {{Tt|{{#invoke:Pudełko|Nazwa przedmiotowej przestrzeni nazw 3|nazwa przestrzeni nazw=|nazwa jednostki=Dyskusja Wikibooks:Szablon}}}} * {{Code|{{m|Pudełko|Nazwa przedmiotowej przestrzeni nazw 3|nazwa przestrzeni nazw 2{{=}}|nazwa jednostki 2{{=}}Dyskusja Wikibooks:Strona|numer jednostki{{=}}2}}}} → {{Tt|{{#invoke:Pudełko|Nazwa przedmiotowej przestrzeni nazw 3|nazwa przestrzeni nazw 2=|nazwa jednostki 2=Dyskusja Wikibooks:Szablon|numer jednostki=2}}}} Powyżej dla przykładu podano parametry nie w rodzicu w szablonie, tylko w dziecku, jeśli chodzi o parametry nazw przestrzeni nazw, ale ich się za to nie powinno podawać w tych ramach, tylko w szablonach, w których wywoływane są te ramki pudełek {{Code|{{m|Pudełko}}}}, ale tak tutaj tak zrobiono by było najłatwiej sprawdzić działanie tego typu funkcji. Analogicznie możemy podawać parametry typu jednostki, np.: wywołaniu modułowym {{Code|{{m|Pudełko|Nazwa przedmiotowej przestrzeni nazw 3|typ jednostki 2{{=}}strona szablonu|numer jednostki{{=}}2}}}}, ale o tym więcej w rozdziałach {{Code|{{sr|#p["Przedmiotowy typ jednostki 3"](frame,i)|p=Pudełko}}}} w „{{sr|#Funkcje typu jednostki|p=Pudełko}}”, ale wtedy ta sama nazwa przestrzeni nazw reprezentowana przez {{Parametr|typ jednostki 2|strona szablonu}}, jest zamieniana na to samo, lepiej jest tutaj używać parametrów przestrzennych nazw niż typu jednostki, bo typ jednostki ma taką samą wartość dla przestrzeni przedmiotowej, co dyskusji. Tutaj parametr dyskusji typu jednostki bazowy i numerkowy ogólny, czy szczegółowy, nie gra roli, bo nawet, gdy wygenerujemy nazwę przestrzeni dyskusji za pomoca tego parametru, to i tak otrzymamy na samym końcu jego nazwę przedmiotową. Jeżeli typ jednostki bazowy wskazuje na przestrzeń nazw główną, wtedy się nie liczą parametry nazw jednostek, a w przypadku numerkowego, wtedy się liczy. Typ jednostki nie ma takiej samej wartości dla przestrzeni przedmiotowej, co dyskusji. Również parametry typu jednostki nie powinno się podawać w dziecku w ramce, tylko w rodzicu w szablonie jako parametry, w którym ta ramka jest wywoływana, ale tutaj podano jedynie dla przykładu, jak najłatwiej sprawdzić działanie tych parametrów tej funkcji. Najpierw w funkcji nagłówku brane są parametry nazw przestrzeni nazw, a jeżeli ich nie ma, to parametry typu jednostki, a jeżeli nie ma, to generowane są nazwy na podstawie aktualnego modułu. === {{Code|p["Nazwa przestrzeni nazw dyskusji 3"](frame,i)}} === Funkcja pisze nazwę przestrzeni nazw dyskusji jakikolwiek nazwy przestrzeni nazw (tzn. nazwę dyskusji nazwy przestrzenie nazw, czyli nie przedmiotowej, zamieniana jest na nią samą, czyli identyfikator przestrzeni się nie zmienia, a przedmiotową, nie dyskusji, przekształca się na dyskusji jej odpowiadającą, czyli w tym przypadku identyfikator przestrzeni zwiększa się o numer więcej), według, i nie zawsze tylko, podanej w zmiennej {{Code|nazwa przestrzeni nazw}} dla pozycja bazowej w podanych parametrach szablonu rodzicu ramki dziecka, lub dla innej pozycji należy parametr podawać w formie {{Code|nazwa przestrzeni nazw 1}}, {{Code|nazwa przestrzeni nazw 2}}, {{Code|nazwa przestrzeni nazw 3}},..., lub te parametry można podać w postaci ogólnej {{Code|nazwa przestrzeni nazw i}}. W tej funkcji trzeba też podawać parametry nazwy jednostek {{Code|nazwa jednostki}}, {{Code|nazwa jednostki 1}}, {{Code|nazwa jednostki 2}}, {{Code|nazwa jednostki 3}},... Parametry podaje się w parametrach rodzica wywołania tej funkcji {{Code|{{m|Pudełko|Nazwa przestrzeni nazw dyskusji 3}}}} (ale ich nie trzeba podawać w dziecku, ale można) i w parametrach dziecka, jeśli chodzi o zmienną {{Code|numer jednostki}}, czyli np.: {{Code|{{m|Pudełko|Nazwa przestrzeni nazw dyskusji 3|numer jednostki{{=}}<jakaś liczba całkowita dodatnia>}}}}. Te parametry przestrzenne zamiast w rodzicu w szablonie można podać w ramce dziecka, wtedy parametry dziecka mają pierwszeństwo. Przestrzeń nazw z parametrów nazw przestrzennych bazowych (bez numerka) może odpowiadać wartości przestrzeni głównej, to wtedy odpowiednia przestrzeń nazw z parametru nazwy jednostki się nie liczy w tej funkcji, aby się liczyła należy użyć funkcji {{Code|{{sr|#p["Nazwa przestrzeni nazw dyskusji 2"](frame,...)|p=Pudełko}}}}. W tym przypadku funkcja działa jak {{Code|{{sr|#p["Nazwa przestrzeni nazw dyskusji"](frame,...)|p=Pudełko}}}}. Przestrzeń nazw z parametrów nazw przestrzennych numerkowych może odpowiadać wartości przestrzeni głównej, to wtedy odpowiednia przestrzeń nazw z parametru nazwy jednostki się liczy w tej funkcji, wtedy jest liczona nazwa przestrzeni nazw z tego parametru. Gdy parametry przestrzenne lub typ jednostki w drugim podejściu nie wskazują na przestrzeń główną, to wtedy działanie tej funkcji jest podobne do {{Code|{{sr|#p["Nazwa przestrzeni nazw dyskusji 2"](frame,...)|p=Pudełko}}}}. Definicja skrótowa funkcji: <syntaxhighlight lang="lua"> p["Nazwa przestrzeni nazw dyskusji 3"]=function(frame,czy_uwzglednic_alternatywna_nazwe,i)...end; </syntaxhighlight> Wtedy ciało funkcji tej, czyli jego definicja w środku, jest: <syntaxhighlight lang="lua"> -- Jest liczony numer parametru nazwy przestrzeni nazw, domyslnie chodzi tu o numer bazowy parametrów przestrzennych; local numer_jednostki=i or frame.args["numer jednostki"]; local liczba_numeru_jednostki=((numer_jednostki)and(tonumber(numer_jednostki)) or 0); local pudelko_pomocne_modul=require("Module:Pudełko/Pomocne"); -- Liczy nazwę przestrzeni nazw dyskusji na podstawie podanych parametrów; return pudelko_pomocne_modul.Uzyskanie_nazw_jednostki(frame,2,liczba_numeru_jednostki,nil,1); </syntaxhighlight> Parametry funkcji: * {{Code|frame}} - tablica ramki tablicy transportu, * {{Code|czy_uwzglednic_alternatywna_nazwe}} - czy ma uwzględniać nazwę przestrzeni nazw domyślną szablonu, dostępne wartości: {{Code|false}}, w której nazwa domyślna nie jest uwzględniana wtedy, oraz {{Code|nil}} i {{Code|true}}, które oznaczają to samo, w tym jeżeli ona jest uwzględniana, wtedy jest brany parametr pierwszy dziecka, który musi istnieć przy takiej wartości tego parametru, tzn. {{Code|{{m|Pudełko|Nazwa przestrzeni nazw dyskusji 3|Szablon}}}}, nazwa domyślna zostatnie zamieniona na dyskusji, a jeśli jest już taka, to takiej transfomacji nie ma, a jeśli nazwa uzyskana nazwy przestrzeni nazw jest w takim przypadku błędna, to wzięty jest ten parametr, a jeżeli nazwa domyślna jest błędna, czyli {{Code|{{m|Pudełko|Nazwa przestrzeni nazw dyskusji 3|Moja przestrzeń}}}}, wtedy funkcja zwraca stan błędu {{Code|(błąd)}}. * {{Code|i}} - numer zmiennej nazwy przestrzeni nazw. Funkcja wykorzystuje {{Code|{{sr|#p.Uzyskanie_nazw_jednostki(frame,...)|p=Pudełko/Pomocne}}}} do wyznaczania ogólnego nazwy przestrzeni nazw dla pozycji bazowej i numerkowej, tzn. dla pozycji: jeden, dwa, trzy,..., itd, i ich ogólnej. Parametr ramki tablicy transportu rodzica szablonu: * {{Code|nazwa przestrzeni nazw}}, {{Code|nazwa przestrzeni nazw 1}}, {{Code|nazwa przestrzeni nazw 2}}, {{Code|nazwa przestrzeni nazw 3}},..., {{Code|nazwa przestrzeni nazw i}} - nazwy przestrzeni nazw dla pozycji bazowej oraz zwykłej i ogólnej numerkowej, * {{Code|nazwa jednostki}}, {{Code|nazwa jednostki 1}}, {{Code|nazwa jednostki 2}}, {{Code|nazwa jednostki 3}},... - nazwy jednostek dla pozycji bazowej i numerkowej, * {{Code|typ jednostki}}, {{Code|typ jednostki 1}}, {{Code|typ jednostki 2}}, {{Code|typ jednostki 3}},..., {{Code|typ jednostki i}} - typy jednostek, którym odpowiadają pewne przestrzenie przedmiotowe, dla pozycji bazowej, numerkowej i ogólnej. Parametry ramki tablicy transportu dziecka: * Parametry dziecka są takie same jak rodzica dla funkcji pudełkowej plus tu wymienione, * {{Code|numer jednostki}} - jak parametr {{Code|i}} nie został ustawiony, to wtedy liczy się ta zmienna. Przykłady: <syntaxhighlight lang="mediawiki"> {{Nazwa szablonu 1|nazwa przestrzeni nazw=Wikibooks|nazwa przestrzeni nazw=|nazwa przestrzeni nazw i=|nazwa jednostki=Szablon:Strona}} ---- {{Nazwa szablonu 2|nazwa przestrzeni nazw=Wikibooks|nazwa przestrzeni nazw 1=Szablon|nazwa przestrzeni nazw i=|nazwa jednostki 2=Wikibooks:Strona}} </syntaxhighlight> W pierwszym wywołaniu {{Code|nazwa przestrzeni nazw}} jest puste, ale dla tego bazowego (bez numerka) szukamy przestrzeni nazw, a więc ta nazwa jest ostateczna. ---- W drugim wywołaniu w dziecku powiedzmy jest wywołanie, i szukamy nazwy przestrzeni nazw o numerze dwa, która została podana, ale istnieje za to jej wersji ogólna {{Code|nazwa przestrzeni nazw i}} i domyślna {{Code|nazwa przestrzeni nazw}}, ale wtedy dla tego numerkowego liczy się to ogólne z {{Code| i}}, a ponieważ ta nazwa jest pusta, więc będziemy liczyli nazwę przestrzeni nazw z {{Code|nazwa jednostki 2}}. Odpowiadająca powyższemu kodowi, powiedzmy wikikod, według ich zawartości, przedstawia się: <syntaxhighlight lang="mediawiki"> {{#invoke:Pudełko|Nazwa przestrzeni nazw 3}} ---- {{#invoke:Pudełko|Nazwa przestrzeni nazw 3|numer jednostki=2}} </syntaxhighlight> Na podstawie powyższego przykładu otrzymamy wynik o schemacie, nie wyniku, bo tam nie ma zmiennej {{Code|nazwa przestrzeni nazw 1}}, ale jest {{Code|nazwa przestrzeni nazw i}}: <syntaxhighlight lang="mediawiki"> <!-- nazwa przestrzeni nazw=""; --> <!-- Czyli wynik: --> Dyskusja <!-- Widzimy, że wygenerowała się nazwa przestrzeni nazw, którą jest przestrzeń nazw niegłówna, jest ciągiem niepustym; --> ---- <!-- Ale nie "nazwa przestrzeni nazw 2", bo jej nie ma, ale za to istnieje "nazwa przestrzeni nazw i"; --> <!-- nazwa przestrzeni nazw 2=nazwa przestrzeni nazw i="", a nazwa jednostki 2="Wikibooks:Strona"; --> <!-- Czyli wynik: --> Dyskusja Wikibooks <!-- Widzimy, że wygenerowała się nazwa przestrzeni nazw, którą jest przestrzeń nieprogramowa, ale projektu, wychodząca z nazwy jednostek w tym przypadku z "nazwa jednostki 2"; --> </syntaxhighlight> Dla parametrów numerkowych nie jest brana w tym powyższym przykładzie zmienna {{Code|nazwa przestrzeni nazw 2}}, bo jej nie ma, ale za to jest {{Code|nazwa przestrzeni nazw i}}, bo ona występuje jako parametr domyślny ogólny dla parametrów numerkowych. Tytaj jest używana jest zmienna {{Code|nazwa jednostki 2}} do wygenerowania ostatecznego wyniku, bo jak można zauważyć, parametry przestrzenne wskazują na przestrzeń główną, a nazwy jednostek już nie. Dla parametrów bazowych mamy zmienną {{Code|nazwa przestrzeni nazw}}, ona jest pusta, więc to zostanie wziete do ostatecznego wyniku. Przykłady w wikikodzie: * {{Code|{{m|Pudełko|Nazwa przestrzeni nazw dyskusji 3|Szablon|nazwa przestrzeni nazw{{=}}Moja przestrzeń|nazwa jednostki{{=}}Wikibooks:Strona}}}} → {{Tt|{{#invoke:Pudełko|Nazwa przestrzeni nazw dyskusji 3|Szablon|nazwa przestrzeni nazw=Moja przestrzeń|nazwa jednostki=Wikibooks:Szablon}}}} * {{Code|{{m|Pudełko|Nazwa przestrzeni nazw dyskusji 3|Szablon|nazwa przestrzeni nazw 2{{=}}Moja przestrzeń|nazwa jednostki 2{{=}}Wikibooks:Strona|numer jednostki{{=}}2}}}} → {{Tt|{{#invoke:Pudełko|Nazwa przestrzeni nazw dyskusji 3|Szablon|nazwa przestrzeni nazw 2=Moja przestrzeń|nazwa jednostki 2=Wikibooks:Szablon|numer jednostki=2}}}} * {{Code|{{m|Pudełko|Nazwa przestrzeni nazw dyskusji 3|nazwa przestrzeni nazw{{=}}|nazwa jednostki{{=}}Wikibooks:Strona}}}} → {{Tt|{{#invoke:Pudełko|Nazwa przestrzeni nazw dyskusji 3|nazwa przestrzeni nazw=|nazwa jednostki=Wikibooks:Szablon}}}} * {{Code|{{m|Pudełko|Nazwa przestrzeni nazw dyskusji 3|nazwa przestrzeni nazw 2{{=}}|nazwa jednostki 2{{=}}Wikibooks:Strona|numer jednostki{{=}}2}}}} → {{Tt|{{#invoke:Pudełko|Nazwa przestrzeni nazw dyskusji 3|nazwa przestrzeni nazw 2=|nazwa jednostki 2=Wikibooks:Szablon|numer jednostki=2}}}} Powyżej dla przykładu podano parametry nie w rodzicu w szablonie, tylko w dziecku, jeśli chodzi o parametry nazw przestrzeni nazw i nazw jednostek, ale ich się za to nie powinno podawać w tych ramach, tylko w szablonach, w których wywoływane są te ramki pudełek {{Code|{{m|Pudełko}}}}, ale tak tutaj tak zrobiono by było najłatwiej sprawdzić działanie tego typu funkcji. Analogicznie możemy podawać parametry typu jednostki, np.: wywołaniu modułowym {{Code|{{m|Pudełko|Nazwa przestrzeni nazw dyskusji 3|typ jednostki 2{{=}}Podręcznik|nazwa jednostki 2{{=}}Szablon:Strona|numer jednostki{{=}}2}}}} (ale wtedy jest brana przestrzeń nazw z nazwy jednostki), ale o tym więcej w rozdziałach {{Code|{{sr|#p["Dyskusyjny typ jednostki 3"](frame,i)|p=Pudełko}}}} w „{{sr|#Funkcje typu jednostki|p=Pudełko}}”, one definiują przestrzenie dyskusji, ale można użyć parametru dyskusji typu jednostki z obojętnie jaką wartością niepustą, czy pustą, czy nawet jej nie podamy, wtedy wyświetli się nazwa przestrzeni nazw dyskusji. Jeżeli typ jednostki bazowy wskazuje na przestrzeń nazw główną, wtedy się nie liczą parametry nazw jednostek, a w przypadku numerkowego, wtedy się liczy. Typ jednostki nie ma takiej samej wartości dla przestrzeni przedmiotowej, co dyskusji. Również parametry typu jednostki nie powinno się podawać w dziecku w ramce, tylko w rodzicu w szablonie jako parametry, w którym ta ramka jest wywoływana, ale tutaj podano jedynie dla przykładu, jak najłatwiej sprawdzić działanie tych parametrów tej funkcji. Najpierw w funkcji nagłówku brane są parametry nazw przestrzeni nazw, a jeżeli ich nie ma, to parametry typu jednostki, a jeżeli nie ma lub parametry przestrzenne wskazują na przestrzeń główną, i nie ma nazwy jednostki, to generowane są nazwy tej funkcji na podstawie aktualnej strony. == Funkcje nazw jednostki trzeciej wersji == === {{Code|p["Nazwa jednostki 3"](frame,i)}} === === {{Code|p["Nazwa przedmiotowa jednostki 3"](frame,i)}} === === {{Code|p["Nazwa dyskusji jednostki 3"](frame,i)}} === == Funkcje typu jednostki == === {{Code|p["Typ jednostki"](frame,i)}} === === {{Code|p["Typ jednostki 2"](frame,i)}} === === {{Code|p["Typ jednostki 3"](frame,i)}} === === Funkcje typu jednostki przedmiotowe === ==== {{Code|p["Przedmiotowy typ jednostki"](frame,i)}} ==== ==== {{Code|p["Przedmiotowy typ jednostki 2"](frame,i)}} ==== ==== {{Code|p["Przedmiotowy typ jednostki 3"](frame,i)}} ==== === Fukcje typu jednostki dyskusji === ==== {{Code|p["Dyskusyjny typ jednostki"](frame,i)}} ==== ==== {{Code|p["Dyskusyjny typ jednostki 2"](frame,i)}} ==== ==== {{Code|p["Dyskusyjny typ jednostki 3"](frame,i)}} ==== == Funkcje chech pudełka == === {{Code|p["Cecha pudełka"](frame)}} === === {{Code|p["Przedmiotowa cecha pudełka"](frame)}} === === {{Code|p["Dyskusyjna cecha pudełka"](frame)}} === == Fukcje ogólnego pudełka == === {{Code|p["Ogólne pudełko"](frame)}} === == Funkcje ogólne == === {{Code|p["Tekst pudełka"](frame)}} === == Funkcje błędów pudełka == === {{Code|p["Błędy pudełka"](frame)}} === === {{Code|p["Przedmiotowe błędy pudełka"](frame)}} === === {{Code|p["Dyskusyjne błędy pudełka"](frame)}} === == Funkcje nazw stron == === {{Code|p["Nazwa strony głównej projektu"](frame,i)}} === === {{Code|p["Nazwa strony głównej dla dzieci projektu"](frame,i)}} === == Funkcje kodów == === {{Code|p["Kod języka"](frame,i)}} === === {{Code|p["Kod projektu"](frame,i)}} === === {{Code|p["Klucz projektu"](frame,i)}} === == Funkcje wiki == === {{Code|p["Inny niż język bieżący wiki"](frame)}} === === {{Code|p["Inne niż lokalne wiki"](frame)}} === === {{Code|p["Inne niż bieżące wiki"](frame)}} === == Funkcje typów parametrów, czy podane je == === {{Code|p["Podano parametry nienazwane"](frame)}} === === {{Code|p["Podano parametry numerowane"](frame)}} === === {{Code|p["Podano parametry nazwane"](frame)}} === == Funkcje kodów tego projektu == === {{Code|p["Kod projektu tego projektu"](frame)}} === === {{Code|p["Kod języka tego projektu"](frame)}} === === {{Code|p["Klucz projektu tego projektu"](frame)}} === == Funkcje stron == === {{Code|p["Strona główna tego projektu"](frame)}} === === {{Code|p["Strona główna dla dzieci tego projektu"](frame)}} === == Funkcje nazw stron drugiej wersji == === {{Code|p["Nazwa strony głównej dla dzieci projektu 2"](frame)}} === === {{Code| p["Nazwa strony głównej projektu 2"](frame)}} === {{BrClear}} <noinclude><!-- -->{{ProstaStronaKoniec}}<!-- -->{{Kategoria|Opisy funkcji, w Lua w Scribunto, w modułach}}<!-- --></noinclude> ej58vfculf5mu1oh8da4o22dg7s9ykj 540467 540466 2026-04-24T06:53:26Z Persino 2851 540467 wikitext text/x-wiki <noinclude>{{ProstaStronaStart | nagłówek = {{Podrozdział|{{ld2|Pudełko}}|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 pudelko_modul=require("Module:Pudełko"); </syntaxhighlight> dzięki, któremu można wypisywać funkcje należącego do niego. Posługuje się na parametrach pudełkowych {{Parametr|nazwa przestrzeni nazw}} (czy też bez numerka {{Parametr|nazwa przestrzeni nazw i}} dla tego numerowanego) lub te z numerkiem po jednej spacji w nich (ale nie dla tego z końcówką {{Code| i}}) mogą zostać użyte jako parametry szablonu. Moduł {{Code|{{ld2|Pudełko}}}} przedstawia funkcje nazw w oparciu o funkcje nazw {{Code|{{ld2|Nazwy}}}}, generuje on nazwy za pomocą parametrów pudełkowych podanych poniżej. Parametr {{Parametr|nazwa jednostki}} (lub parametr {{Parametr|cel}} dla numerka tego pierwszego, tego alternatywnego), lub te z numerkiem po jednej spacji w nazwie parametru, albo numerowane numerkami {{Code|1}}, {{Code|2}},..., mogą zostać użyte jako parametry szablonu. Parametry określające rodzaj jednostki {{Parametr|typ jednostki}} z {{Parametr|dyskusja typu jednostki}}, itp. w wersjach z numerkiem po jednej spacji w nich mogą zostać użyte jako parametry szablonu. A te tymi numerowanymi liczbami naturalnymi {{Tt|nazwy jednostki}} od jedynki wzwyż poprzez szablon, w którym są one użyte, one też mogą być użyte z dwukropkiem, te numerowane, na samym początku nazwy, wtedy one są traktowane jako pełne nazwy strony, i wtedy one nie zostaną z interpretowane, że do nich trzeba użyć parametr odpowiedni z nazwą przetrzeni nazw z tego numerowanego, czy ogólny, aby utworzyć znów inną pełną nazwę strony dla tego numerka. Zestawienie: * {{Code|nazwa przestrzeni nazw}} i {{Code|nazwa przestrzeni nazw i}} (ogólna nazwa przestrzeni nazw dla wszystkich numerków, i tych numerowanych jednostek) - i to pierwsze z numerkiem, tzn. {{Code|nazwa przestrzeni nazw 1}}, {{Code|nazwa przestrzeni nazw 2}}, ..., * {{Code|nazwa jednostki}} - i te z numerkiem: {{Code|nazwa jednostki 1}}, {{Code|nazwa jednostki 2}}, ..., lub gdy jest zamiast tego parametrem numerowany, {{Code|1}}, {{Code|2}},..., który dla tego pierwszego może być uznany jako: {{Code|cel}} {{=}} {{Code|1}}, * {{Code|typ jednostki}} (parametr bazowy) i {{Code|typ jednostki i}} (parametr domyślny numerkowy) - i te z numerkiem: {{Code|typ jednostki 1}}, {{Code|typ jednostki 2}}, ..., tzn. gdy chcemy określić z jakim typem jednostki mamy do czynienia w zależności do jakiej przestrzeni nazw należy, a w danej, czy jest on np. programowy, czy tylko jest opisem, jak to bywa w szablonach {{Np|Template|link=tak}}, podobnie jest w przypadku {{Np|Module|link=tak}}, czy jak jest w innych przestrzeniach nazw, ** {{Code|dyskusja typu jednostki}} (parametr bazowy) i {{Code|dyskusja typu jednostki i}} (parametr domyślny numerkowy) - i te z numerkiem: {{Code|dyskusja typu jednostki 1}}, {{Code|dyskusja typu jednostki 2}}, ..., gdy chcemy określić wartością niepustą,że chodzi tutaj o typ jednostki. == {{Code|p.CzyNiepoprawnaNazwa(nazwa_jednostki)}} == Funkcja sprawdzajaca, czy jest poprawnie podana nazwa jednostki, czy ma poprawną nazwę. Znakami tymi, z których nie powinna składać się nazwa jest {{Code|<nowiki>{}<>|[]#\n</nowiki>}} i dodatkowo znak {{Code|&#127;}} (kod {{Code|{{Nowiki|&#127;}}}}). Też nie może składać się z trzech znaków tyldy, tzn. {{Code|<nowiki>~~~</nowiki>}}. Również w swojej budowie nie może składać się ze kodów {{Strong|HTML}} literowych o wzorze {{Code|{{Nowiki|&(%a+);}}}}. Natomiast może składać się z {{Code|{{Nowiki|&#(%d+);}}}} i {{Code|{{Nowiki|&#x(%x+);}}}}, ale w pierw te kody muszą być zamienione na normalne znaki. Skrótowa definicja funkcji: <syntaxhighlight lang="lua"> function p.CzyNiepoprawnaNazwa(nazwa_jednostki)...end; </syntaxhighlight> Wtedy ciało funkcji tej, czyli jego definicja w środku, jest: <syntaxhighlight lang="lua"> -- Moduł: "Moduł:Html/dane", służy do ładowania znaku o kodzie HTML "&#127;"; local html_dane_modul=mw.loadData("Module:Html/dane"); return mw.ustring.match(nazwa_jednostki,"[{}<>|%[%]#\n"..html_dane_modul.znak_127.."]+") or mw.ustring.match(nazwa_jednostki,"~~~") or mw.ustring.match(nazwa_jednostki,"&(%a+);"); </syntaxhighlight> Parametry: * {{Code|nazwa_jednostki}} - nazwa jednostki do sprawdzenia. Przykłady: <syntaxhighlight lang="lua"> local pudelko_modul=require("Module:Pudełko"); -- Podana przykładowa niepoprawna nazwa jedostki local nazwa_jednostki="Nazwa pliku [[Nazwa linku w pliku]]"; -- Fukcja zwróci wartość: local czy_poprawna_nazwa=true; local czy_poprawna_nazwa=pudelko_modul.CzyNiepoprawnaNazwa(nazwa_jednostki); </syntaxhighlight> == Funkcje nazw przestrzeni nazw == === {{Code|p["Nazwa przestrzeni nazw"](frame,...)}} === Funkcja pisze nazwę przestrzeni nazw, niezależnie, czy to jest przedmiotowa, czy dyskusji, według podanej w zmiennej {{Code|nazwa przestrzeni nazw}} dla pozycja bazowej w podanych parametrach szablonu rodzicu ramki dziecka, lub dla innej pozycji należy parametr podawać w formie {{Code|nazwa przestrzeni nazw 1}}, {{Code|nazwa przestrzeni nazw 2}}, {{Code|nazwa przestrzeni nazw 3}},..., lub te parametry można podać w postaci ogólnej {{Code|nazwa przestrzeni nazw i}}. Parametry podaje się w parametrach rodzica wywołania tej funkcji {{Code|{{m|Pudełko|Nazwa przestrzeni nazw}}}} (ale ich nie trzeba podawać w dziecku, ale można) i w parametrach dziecka, jeśli chodzi o zmienną {{Code|numer jednostki}}, czyli np.: {{Code|{{m|Pudełko|Nazwa przestrzeni nazw|numer jednostki{{=}}<jakaś liczba całkowita dodatnia>}}}}. Te parametry przestrzenne zamiast w rodzicu w szablonie można podać w ramce dziecka, wtedy parametry dziecka mają pierwszeństwo. Przestrzeń nazw z parametrów nazw przestrzennych może odpowiadać wartości przestrzeni głównej, to wtedy odpowiednia przestrzeń nazw z parametru nazwy jednostki się nie liczy w tej funkcji, aby się liczyła należy użyć funkcji {{Code|{{sr|#p["Nazwa przestrzeni nazw 2"](frame,...)|p=Pudełko}}}}. Definicja skrótowa funkcji: <syntaxhighlight lang="lua"> p["Nazwa przestrzeni nazw"]=function(frame,czy_uwzglednic_alternatywna_nazwe,i)...end; </syntaxhighlight> Wtedy ciało funkcji tej, czyli jego definicja w środku, jest: <syntaxhighlight lang="lua"> -- Jest liczony numer parametru nazwy przestrzeni nazw, domyslnie chodzi tu o numer bazowy parametrów przestrzennych; local numer_jednostki=i or frame.args["numer jednostki"]; local liczba_numer_jednostki=((numer_jednostki)and(tonumber(numer_jednostki))or 0); local pudelko_pomocne_modul=require("Module:Pudełko/Pomocne"); -- Liczy nazwę przestrzeni nazw na podstawie podanych parametrów; return pudelko_pomocne_modul.Nazwa_przestrzeni_nazw(frame,0, czy_uwzglednic_alternatywna_nazwe,liczba_numer_jednostki); </syntaxhighlight> Parametry funkcji: * {{Code|frame}} - tablica ramki tablicy transportu, * {{Code|czy_uwzglednic_alternatywna_nazwe}} - czy ma uwzględniać nazwę przestrzeni nazw domyślną szablonu, dostępne wartości: {{Code|false}}, w której nazwa domyślna nie jest uwzględniana wtedy, oraz {{Code|nil}} i {{Code|true}}, które oznaczają to samo, w tym jeżeli ona jest uwzględniana, wtedy jest brany parametr pierwszy dziecka, który musi istnieć przy takiej wartości tego parametru, tzn. {{Code|{{m|Pudełko|Nazwa przestrzeni nazw|Szablon}}}}, a ten element jest używany, gdy nazwa uzyskana nazwy przestrzeni nazw jest w takim przypadku błędna, a jeżeli wtedy nazwa domyślna jest błędna, czyli {{Code|{{m|Pudełko|Nazwa przestrzeni nazw|Moja przestrzeń}}}}, wtedy funkcja zwraca stan błędu {{Code|(błąd)}}. * {{Code|i}} - numer zmiennej nazwy przestrzeni nazw. Funkcja wykorzystuje {{Code|{{sr|#p.Nazwa_przestrzeni_nazw(frame,...)|p=Pudełko/Pomocne}}}} do wyznaczania ogólnego nazwy przestrzeni nazw dla pozycji bazowej i numerkowej, tzn. dla pozycji: jeden, dwa, trzy,..., itd, i ich ogólnej. Parametr ramki tablicy transportu rodzica szablonu: * {{Code|nazwa przestrzeni nazw}}, {{Code|nazwa przestrzeni nazw 1}}, {{Code|nazwa przestrzeni nazw 2}}, {{Code|nazwa przestrzeni nazw 3}},..., {{Code|nazwa przestrzeni nazw i}} - nazwy przestrzeni nazw dla pozycji bazowej oraz zwykłej i ogólnej numerkowej, * {{Code|typ jednostki}}, {{Code|typ jednostki 1}}, {{Code|typ jednostki 2}}, {{Code|typ jednostki 3}},..., {{Code|typ jednostki i}} - typy jednostek, którym odpowiadają pewne przestrzenie przedmiotowe, dla pozycji bazowej, numerkowej i ogólnej, ** {{Code|dyskusja typu jednostki}}, {{Code|dyskusja typu jednostki 1}}, {{Code|dyskusja typ jednostki 2}}, {{Code|dyskusja typ jednostki 3}},..., {{Code|dyskusja typ jednostki i}} - czy dany typ jednostki ma przedstawiać, jeśli niepusta, przestrzeń dyskusji dla pozycji bazowej, numerkowej i ogólnej. Parametry ramki tablicy transportu dziecka: * Parametry dziecka są takie same jak rodzica dla funkcji pudełkowej plus tu wymienione, * {{Code|numer jednostki}} - jak parametr {{Code|i}} nie został ustawiony, to wtedy liczy się ta zmienna. Przykłady: <syntaxhighlight lang="mediawiki"> {{Nazwa szablonu|nazwa przestrzeni nazw=Wikibooks|nazwa przestrzeni nazw 2=Szablon|nazwa przestrzeni nazw i=Moduł}} </syntaxhighlight> W dziecku powiedzmy jest wywołanie, i szukamy nazwy przestrzeni nazw o numerze dwa, która nie została podana, ale istnieje za to jej wersji ogólna {{Code|nazwa przestrzeni nazw i}} i domyślna {{Code|nazwa przestrzeni nazw}}: <syntaxhighlight lang="mediawiki"> {{#invoke:Pudełko|Nazwa przestrzeni nazw|numer jednostki=1}} </syntaxhighlight> Na podstawie powyższego przykładu otrzymamy wynik o schemacie, nie wyniku, bo tam nie ma zmiennej {{Code|nazwa przestrzeni nazw 1}}, ale jest {{Code|nazwa przestrzeni nazw i}}: <syntaxhighlight lang="mediawiki"> <!-- Ale nie "nazwa przestrzeni nazw", bo jej nie ma, ale za to istnieje "nazwa przestrzeni nazw i"; --> <!-- nazwa przestrzeni nazw 2=nazwa przestrzeni nazw i=Moduł; --> <!-- Czyli wynik: --> Moduł <!-- Widzimy, że wygenerowała się nazwa przestrzeni nazw, którą jest przestrzeń programowa, którą również jest "Szablon"; --> </syntaxhighlight> Nie jest brana w tym powyższym przykładzie zmienna {{Code|nazwa przestrzeni nazw}}, bo jej nie ma, ale za to jest {{Code|nazwa przestrzeni nazw i}}, bo ona występuje jako parametr domyślny ogólny dla parametrów numerkowych. Przykłady w wikikodzie: * {{Code|{{m|Pudełko|Nazwa przestrzeni nazw|numer jednostki{{=}}2}}}} → {{Tt|{{#invoke:Pudełko|Nazwa przestrzeni nazw|numer jednostki=2}}}} * {{Code|{{m|Pudełko|Nazwa przestrzeni nazw|Szablon|nazwa przestrzeni nazw i{{=}}Moja przestrzeń|numer jednostki{{=}}2}}}} → {{Tt|{{#invoke:Pudełko|Nazwa przestrzeni nazw|Szablon|nazwa przestrzeni nazw i=Moja przestrzeń|numer jednostki=2}}}} * {{Code|{{m|Pudełko|Nazwa przestrzeni nazw|nazwa przestrzeni nazw 2{{=}}Szablon|numer jednostki{{=}}2}}}} → {{Tt|{{#invoke:Pudełko|Nazwa przestrzeni nazw|nazwa przestrzeni nazw 2=Szablon|numer jednostki=2}}}} * {{Code|{{m|Pudełko|Nazwa przestrzeni nazw|nazwa przestrzeni nazw 2{{=}}Szablon|numer jednostki{{=}}2}}}} → {{Tt|{{#invoke:Pudełko|Nazwa przestrzeni nazw|nazwa przestrzeni nazw i=Szablon|numer jednostki=2}}}} * {{Code|{{m|Pudełko|Nazwa przestrzeni nazw|nazwa przestrzeni nazw{{=}}Szablon|numer jednostki{{=}}2}}}} → {{Tt|{{#invoke:Pudełko|Nazwa przestrzeni nazw|nazwa przestrzeni nazw=Szablon|numer jednostki=2}}}} Powyżej dla przykładu podano parametry nie w rodzicu w szablonie, tylko w dziecku, jeśli chodzi o parametry nazw przestrzeni nazw, ale ich się za to nie powinno podawać w tych ramach, tylko w szablonach, w których wywoływane są te ramki pudełek {{Code|{{m|Pudełko}}}}, ale tak tutaj tak zrobiono by było najłatwiej sprawdzić działanie tego typu funkcji. Analogicznie możemy podawać parametry typu jednostki, np.: wywołaniu modułowym {{Code|{{m|Pudełko|Nazwa przestrzeni nazw|typ jednostki 2{{=}}strona szablonu|numer jednostki{{=}}2}}}}, ale o tym więcej w rozdziałach {{Code|{{sr|#p["Typ jednostki"](frame,i)|p=Pudełko}}}} w „{{sr|#Funkcje typu jednostki|p=Pudełko}}”, on definiuje przestrzenie przedmiotowe, ale można użyć parametru dyskusji typu jednostki z wartością niepustą, wtedy wyświetli się nazwa przestrzeni nazw dyskusji. Typ jednostki nie ma takiej samej wartości dla przestrzeni przedmiotowej, co dyskusji. Również parametry typu jednostki nie powinno się podawać w dziecku w ramce, tylko w rodzicu w szablonie jako parametry, w którym ta ramka jest wywoływana, ale tutaj podano jedynie dla przykładu, jak najłatwiej sprawdzić działanie tych parametrów tej funkcji. Najpierw w funkcji nagłówku brane są parametry nazw przestrzeni nazw, a jeżeli ich nie ma, to parametry typu jednostki, a jeżeli nie ma, to generowane są nazwy na podstawie aktualnego modułu. === {{Code|p["Nazwa przedmiotowej przestrzeni nazw"](frame,...)}} === Funkcja pisze przedmiotową nazwę przestrzeni nazw jakikolwiek nazwy przestrzeni nazw (tzn. nazwę przedmiotową nazwy przestrzenie nazw, czyli nie dyskusji, zamieniana jest na nią samą, czyli identyfikator przestrzeni się nie zmienia, a dyskusji, nie przedmiotową, przekształca się na przedmiotową jej odpowiadającą, czyli w tym przypadku identyfikator przestrzeni zmniejsza się o numer mniej), według podanej w zmiennej {{Code|nazwa przestrzeni nazw}} dla pozycja bazowej w podanych parametrach szablonu rodzicu ramki dziecka, lub dla innej pozycji należy parametr podawać w formie {{Code|nazwa przestrzeni nazw 1}}, {{Code|nazwa przestrzeni nazw 2}}, {{Code|nazwa przestrzeni nazw 3}},..., lub te parametry można podać w postaci ogólnej {{Code|nazwa przestrzeni nazw i}}. Parametry podaje się w parametrach rodzica wywołania tej funkcji {{Code|{{m|Pudełko|Nazwa przedmiotowej przestrzeni nazw}}}} (ale ich nie trzeba podawać w dziecku, ale można) i w parametrach dziecka, jeśli chodzi o zmienną {{Code|numer jednostki}}, czyli np.: {{Code|{{m|Pudełko|Nazwa przedmiotowej przestrzeni nazw|numer jednostki{{=}}<jakaś liczba całkowita dodatnia>}}}}. Te parametry przestrzenne zamiast w rodzicu w szablonie można podać w ramce dziecka, wtedy parametry dziecka mają pierwszeństwo. Parametry przestrzenne mogą mogą być podane w postaci przestrzeni przedmiotowej lub dyskusji, ale ta funkcja zawsze ją zamienia na przedmiotową. Przestrzeń nazw z parametrów nazw przestrzennych może odpowiadać wartości przestrzeni głównej, to wtedy odpowiednia przestrzeń nazw z parametru nazwy jednostki się nie liczy w tej funkcji, aby się liczyła należy użyć funkcji {{Code|{{sr|#p["Nazwa przedmiotowej przestrzeni nazw 2"](frame,...)|p=Pudełko}}}}. Definicja skrótowa funkcji: <syntaxhighlight lang="lua"> p["Nazwa przedmiotowej przestrzeni nazw"]=function(frame,czy_uwzglednic_alternatywna_nazwe,i)...end; </syntaxhighlight> Wtedy ciało funkcji tej, czyli jego definicja w środku, jest: <syntaxhighlight lang="lua"> -- Jest liczony numer parametru nazwy przestrzeni nazw, domyslnie chodzi tu o numer bazowy parametrów przestrzennych; local numer_jednostki=i or frame.args["numer jednostki"]; local liczba_numer_jednostki=((numer_jednostki)and(tonumber(numer_jednostki))or 0); local pudelko_pomocne_modul=require("Module:Pudełko/Pomocne"); -- Liczy nazwę przestrzeni nazw przedmiotową na podstawie podanych parametrów; return pudelko_pomocne_modul.Nazwa_przestrzeni_nazw(frame,1, czy_uwzglednic_alternatywna_nazwe,liczba_numer_jednostki); </syntaxhighlight> Parametry funkcji: * {{Code|frame}} - tablica ramki tablicy transportu, * {{Code|czy_uwzglednic_alternatywna_nazwe}} - czy ma uwzględniać nazwę przestrzeni nazw domyślną szablonu, dostępne wartości: {{Code|false}}, w której nazwa domyślna nie jest uwzględniana wtedy, oraz {{Code|nil}} i {{Code|true}}, które oznaczają to samo, w tym jeżeli ona jest uwzględniana, wtedy jest brany parametr pierwszy dziecka, który musi istnieć przy takiej wartości tego parametru, tzn. {{Code|{{m|Pudełko|Nazwa przedmiotowej przestrzeni nazw|Dyskusja szablonu}}}} - ta nazwa domyślna zostanie zamieniona na przedmiotową, a jak ona by była przedmiotowa, to żadnej zamiany, by nie było, a jeśli nazwa uzyskana z nazwy przestrzeni nazw z parametrów przestrzennych jest w takim przypadku błędna, to w takim razie brany jest ten parametr, a jeżeli ta nazwa domyślna jest błędna, czyli {{Code|{{m|Pudełko|Nazwa przedmiotowej przestrzeni nazw|Moja przestrzeń}}}}, wtedy funkcja zwraca stan błędu {{Code|(błąd)}}. * {{Code|i}} - numer zmiennej nazwy przestrzeni nazw. Funkcja wykorzystuje {{Code|{{sr|#p.Nazwa_przestrzeni_nazw(frame,...)|p=Pudełko/Pomocne}}}} do wyznaczania ogólnego nazwy przestrzeni nazw dla pozycji bazowej i numerkowej, tzn. dla pozycji: jeden, dwa, trzy,..., itd, i ich ogólnej. Parametr ramki tablicy transportu rodzica szablonu: * {{Code|nazwa przestrzeni nazw}}, {{Code|nazwa przestrzeni nazw 1}}, {{Code|nazwa przestrzeni nazw 2}}, {{Code|nazwa przestrzeni nazw 3}},..., {{Code|nazwa przestrzeni nazw i}} - nazwy przestrzeni nazw dla pozycji bazowej oraz zwykłej i ogólnej numerkowej, * {{Code|typ jednostki}}, {{Code|typ jednostki 1}}, {{Code|typ jednostki 2}}, {{Code|typ jednostki 3}},..., {{Code|typ jednostki i}} - typy jednostek, którym odpowiadają pewne przestrzenie przedmiotowe, dla pozycji bazowej, numerkowej i ogólnej. Parametry ramki tablicy transportu dziecka: * Parametry dziecka są takie same jak rodzica dla funkcji pudełkowej plus tu wymienione, * {{Code|numer jednostki}} - jak parametr {{Code|i}} nie został ustawiony, to wtedy liczy się ta zmienna. Przykłady: <syntaxhighlight lang="mediawiki"> {{Nazwa szablonu|nazwa przestrzeni nazw=Dyskusja Wikibooks|nazwa przestrzeni nazw 2=Dyskusja szablonu|nazwa przestrzeni nazw i=Dyskusja modułu}} </syntaxhighlight> W dziecku powiedzmy jest wywołanie, i szukamy nazwy przestrzeni nazw o numerze dwa, która nie została podana, ale istnieje za to jej wersji ogólna {{Code|nazwa przestrzeni nazw i}} i domyślna {{Code|nazwa przestrzeni nazw}}: <syntaxhighlight lang="mediawiki"> {{#invoke:Pudełko|Nazwa przedmiotowej przestrzeni nazw|numer jednostki=1}} </syntaxhighlight> Na podstawie powyższego przykładu otrzymamy wynik o schemacie, nie wyniku, bo tam nie ma zmiennej {{Code|nazwa przestrzeni nazw 1}}, ale jest {{Code|nazwa przestrzeni nazw i}}: <syntaxhighlight lang="mediawiki"> <!-- Ale nie "nazwa przestrzeni nazw", bo jej nie ma, ale za to istnieje "nazwa przestrzeni nazw i"; --> <!-- nazwa przestrzeni nazw 2=nazwa przestrzeni nazw i=Dyskusja modułu; --> <!-- Czyli wynik: --> Moduł <!-- Widzimy, że wygenerowała się nazwa przestrzeni nazw, którą jest przestrzeń przedmiotowa programowa przestrzeni dyskusji "Dyskusja modułu", którą również jest "Szablon" jego przestrzeni dyskusji "Dyskusja szablonu", a dla ich przestrzeni przedmiotowej, zamiast dyskusji, to samo przekształca się na to samo; --> </syntaxhighlight> Nie jest brana w tym powyższym przykładzie zmienna {{Code|nazwa przestrzeni nazw}}, bo jej nie ma, ale za to jest {{Code|nazwa przestrzeni nazw i}}, bo ona występuje jako parametr domyślny ogólny dla parametrów numerkowych. Przykłady w wikikodzie: * {{Code|{{m|Pudełko|Nazwa przedmiotowej przestrzeni nazw|numer jednostki{{=}}2}}}} → {{Tt|{{#invoke:Pudełko|Nazwa przedmiotowej przestrzeni nazw|numer jednostki=2}}}} * {{Code|{{m|Pudełko|Nazwa przedmiotowej przestrzeni nazw|Dyskusja szablonu|nazwa przestrzeni nazw i{{=}}Moja przestrzeń|numer jednostki{{=}}2}}}} → {{Tt|{{#invoke:Pudełko|Nazwa przedmiotowej przestrzeni nazw|Dyskusja szablonu|nazwa przestrzeni nazw i=Moja przestrzeń|numer jednostki=2}}}} * {{Code|{{m|Pudełko|Nazwa przedmiotowej przestrzeni nazw|nazwa przestrzeni nazw 2{{=}}Dyskusja szablonu|numer jednostki{{=}}2}}}} → {{Tt|{{#invoke:Pudełko|Nazwa przedmiotowej przestrzeni nazw|nazwa przestrzeni nazw 2=Dyskusja szablonu|numer jednostki=2}}}} * {{Code|{{m|Pudełko|Nazwa przedmiotowej przestrzeni nazw|nazwa przestrzeni nazw 2{{=}}Dyskusja szablonu|numer jednostki{{=}}2}}}} → {{Tt|{{#invoke:Pudełko|Nazwa przedmiotowej przestrzeni nazw|nazwa przestrzeni nazw i=Dyskusja szablonu|numer jednostki=2}}}} * {{Code|{{m|Pudełko|Nazwa przedmiotowej przestrzeni nazw|nazwa przestrzeni nazw{{=}}Dyskusja szablonu|numer jednostki{{=}}2}}}} → {{Tt|{{#invoke:Pudełko|Nazwa przedmiotowej przestrzeni nazw|nazwa przestrzeni nazw=Dyskusja szablonu|numer jednostki=2}}}} Powyżej dla przykładu podano parametry nie w rodzicu w szablonie, tylko w dziecku, jeśli chodzi o parametry nazw przestrzeni nazw, ale ich się za to nie powinno podawać w tych ramach, tylko w szablonach, w których wywoływane są te ramki pudełek {{Code|{{m|Pudełko}}}}, ale tak tutaj tak zrobiono by było najłatwiej sprawdzić działanie tego typu funkcji. Analogicznie możemy podawać parametry typu jednostki, np.: wywołaniu modułowym {{Code|{{m|Pudełko|Nazwa przedmiotowej przestrzeni nazw|typ jednostki 2{{=}}strona szablonu|numer jednostki{{=}}2}}}}, ale o tym więcej w rozdziałach {{Code|{{sr|#p["Przedmiotowy typ jednostki"](frame,i)|p=Pudełko}}}} w „{{sr|#Funkcje typu jednostki|p=Pudełko}}”, ale wtedy ta sama nazwa przestrzeni nazw reprezentowana przez {{Parametr|typ jednostki 2|strona szablonu}}, jest zamieniana na to samo, lepiej jest tutaj używać parametrów przestrzennych nazw niż typu jednostki. Typ jednostki nie ma takiej samej wartości dla przestrzeni przedmiotowej, co dyskusji. Tutaj parametr dyskusji typu jednostki bazowy i numerkowy ogólny, czy szczegółowy, nie gra roli, bo nawet, gdy wygenerujemy nazwę przestrzeni dyskusji za pomoca tego parametru, to i tak otrzymamy na samym końcu jego nazwę przedmiotową. Również parametry typu jednostki nie powinno się podawać w dziecku w ramce, tylko w rodzicu w szablonie jako parametry, w którym ta ramka jest wywoływana, ale tutaj podano jedynie dla przykładu, jak najłatwiej sprawdzić działanie tych parametrów tej funkcji. Najpierw w funkcji nagłówku brane są parametry nazw przestrzeni nazw, a jeżeli ich nie ma, to parametry typu jednostki, a jeżeli nie ma, to generowane są nazwy na podstawie aktualnego modułu. === {{Code|p["Nazwa przestrzeni nazw dyskusji"](frame,...)}} === Funkcja pisze nazwę przestrzeni nazw dyskusji jakikolwiek nazwy przestrzeni nazw (tzn. nazwę przedmiotową nazwy przestrzenie nazw, czyli nie dyskusji, zamieniana jest na dyskusji, czyli identyfikator przestrzeni się zmienia jeden wyżej, a dyskusji, nie przedmiotową, przekształca się na tą samą), według podanej w zmiennej {{Code|nazwa przestrzeni nazw}} dla pozycja bazowej w podanych parametrach szablonu rodzicu ramki dziecka, lub dla innej pozycji należy parametr podawać w formie {{Code|nazwa przestrzeni nazw 1}}, {{Code|nazwa przestrzeni nazw 2}}, {{Code|nazwa przestrzeni nazw 3}},..., lub te parametry można podać w postaci ogólnej {{Code|nazwa przestrzeni nazw i}}. Parametry podaje się w parametrach rodzica wywołania tej funkcji {{Code|{{m|Pudełko|Nazwa przestrzeni nazw dyskusji}}}} (ale ich nie trzeba podawać w dziecku, ale można) i w parametrach dziecka, jeśli chodzi o zmienną {{Code|numer jednostki}}, czyli np.: {{Code|{{m|Pudełko|Nazwa przestrzeni nazw dyskusji|numer jednostki{{=}}<jakaś liczba całkowita dodatnia>}}}}. Te parametry przestrzenne zamiast w rodzicu w szablonie można podać w ramce dziecka, wtedy parametry dziecka mają pierwszeństwo. Parametry przestrzenne mogą mogą być podane w postaci przestrzeni przedmiotowej lub dyskusji, ale ta funkcja zawsze ją zamienia na dyskusji. Przestrzeń nazw z parametrów nazw przestrzennych może odpowiadać wartości przestrzeni głównej, to wtedy odpowiednia przestrzeń nazw z parametru nazwy jednostki się nie liczy w tej funkcji, aby się liczyła należy użyć funkcji {{Code|{{sr|#p["Nazwa przestrzeni nazw dyskusji 2"](frame,...)|p=Pudełko}}}}. Definicja skrótowa funkcji: <syntaxhighlight lang="lua"> p["Nazwa przestrzeni nazw dyskusji"]=function(frame,czy_uwzglednic_alternatywna_nazwe,i)...end; </syntaxhighlight> Wtedy ciało funkcji tej, czyli jego definicja w środku, jest: <syntaxhighlight lang="lua"> -- Jest liczony numer parametru nazwy przestrzeni nazw, domyslnie chodzi tu o numer bazowy parametrów przestrzennych; local numer_jednostki=i or frame.args["numer jednostki"]; local liczba_numer_jednostki=((numer_jednostki)and(tonumber(numer_jednostki))or 0); local pudelko_pomocne_modul=require("Module:Pudełko/Pomocne"); -- Liczy nazwę przestrzeni nazw dyskusji na podstawie podanych parametrów; return pudelko_pomocne_modul.Nazwa_przestrzeni_nazw(frame,2, czy_uwzglednic_alternatywna_nazwe,liczba_numer_jednostki); </syntaxhighlight> Parametry funkcji: * {{Code|frame}} - tablica ramki tablicy transportu, * {{Code|czy_uwzglednic_alternatywna_nazwe}} - czy ma uwzględniać nazwę przestrzeni nazw domyślną szablonu, dostępne wartości: {{Code|false}}, w której nazwa domyślna nie jest uwzględniana wtedy, oraz {{Code|nil}} i {{Code|true}}, które oznaczają to samo, w tym jeżeli ona jest uwzględniana, wtedy jest brany parametr pierwszy dziecka, który musi istnieć przy takiej wartości tego parametru, tzn. {{Code|{{m|Pudełko|Nazwa przestrzeni nazw dyskusji|Szablon}}}} - ta nazwa domyślna zostanie przekształcona na dyskusji, a jeżeli ona by była dyskusji, to nie byłoby żadnego przekształcenia, a jeśli nazwa uzyskana nazwy przestrzeni nazw z parametrów przestrzennych jest w takim przypadku błędna, to w takim razie brany jest ten parametr, a jeżeli nazwa domyślna jest błędna, czyli {{Code|{{m|Pudełko|Nazwa przestrzeni nazw dyskusji|Moja przestrzeń}}}}, wtedy funkcja zwraca stan błędu {{Code|(błąd)}}. * {{Code|i}} - numer zmiennej nazwy przestrzeni nazw. Funkcja wykorzystuje {{Code|{{sr|#p.Nazwa_przestrzeni_nazw(frame,...)|p=Pudełko/Pomocne}}}} do wyznaczania ogólnego nazwy przestrzeni nazw dla pozycji bazowej i numerkowej, tzn. dla pozycji: jeden, dwa, trzy,..., itd, i ich ogólnej. Parametr ramki tablicy transportu rodzica szablonu: * {{Code|nazwa przestrzeni nazw}}, {{Code|nazwa przestrzeni nazw 1}}, {{Code|nazwa przestrzeni nazw 2}}, {{Code|nazwa przestrzeni nazw 3}},..., {{Code|nazwa przestrzeni nazw i}} - nazwy przestrzeni nazw dla pozycji bazowej oraz zwykłej i ogólnej numerkowej, * {{Code|typ jednostki}}, {{Code|typ jednostki 1}}, {{Code|typ jednostki 2}}, {{Code|typ jednostki 3}},..., {{Code|typ jednostki i}} - typy jednostek, którym odpowiadają pewne przestrzenie przedmiotowe, dla pozycji bazowej, numerkowej i ogólnej. Parametry ramki tablicy transportu dziecka: * Parametry dziecka są takie same jak rodzica dla funkcji pudełkowej plus tu wymienione, * {{Code|numer jednostki}} - jak parametr {{Code|i}} nie został ustawiony, to wtedy liczy się ta zmienna. Przykłady: <syntaxhighlight lang="mediawiki"> {{Nazwa szablonu|nazwa przestrzeni nazw=Wikibooks|nazwa przestrzeni nazw 2=Szablon|nazwa przestrzeni nazw i=Moduł}} </syntaxhighlight> W dziecku powiedzmy jest wywołanie, i szukamy nazwy przestrzeni nazw o numerze dwa, która nie została podana, ale istnieje za to jej wersji ogólna {{Code|nazwa przestrzeni nazw i}} i domyślna {{Code|nazwa przestrzeni nazw}}: <syntaxhighlight lang="mediawiki"> {{#invoke:Pudełko|Nazwa przestrzeni nazw dyskusji|numer jednostki=1}} </syntaxhighlight> Na podstawie powyższego przykładu otrzymamy wynik o schemacie, nie wyniku, bo tam nie ma zmiennej {{Code|nazwa przestrzeni nazw 1}}, ale jest {{Code|nazwa przestrzeni nazw i}}: <syntaxhighlight lang="mediawiki"> <!-- Ale nie "nazwa przestrzeni nazw", bo jej nie ma, ale za to istnieje "nazwa przestrzeni nazw i"; --> <!-- nazwa przestrzeni nazw 2=nazwa przestrzeni nazw i=Moduł; --> <!-- Czyli wynik: --> Dyskusja modułu <!-- Widzimy, że wygenerowała się nazwa przestrzeni nazw, którą jest przestrzeń dyskusji przestrzeni programowej przestrzeni przedmiotowej "Moduł", którą również jest "Szablon" jego przestrzeni dyskusji "Dyskusja szablonu", a dla ich przestrzeni przedmiotowej, zamiast dyskusji, to przekształca się na dyskusji jej odpowiadającą; --> </syntaxhighlight> Nie jest brana w tym powyższym przykładzie zmienna {{Code|nazwa przestrzeni nazw}}, bo jej nie ma, ale za to jest {{Code|nazwa przestrzeni nazw i}}, bo ona występuje jako parametr domyślny ogólny dla parametrów numerkowych. Przykłady w wikikodzie: * {{Code|{{m|Pudełko|Nazwa przestrzeni nazw dyskusji|numer jednostki{{=}}2}}}} → {{Tt|{{#invoke:Pudełko|Nazwa przestrzeni nazw dyskusji|numer jednostki=2}}}} * {{Code|{{m|Pudełko|Nazwa przestrzeni nazw dyskusji|Szablon|nazwa przestrzeni nazw i{{=}}Moja przestrzeń|numer jednostki{{=}}2}}}} → {{Tt|{{#invoke:Pudełko|Nazwa przestrzeni nazw dyskusji|Szablon|nazwa przestrzeni nazw i=Moja przestrzeń|numer jednostki=2}}}} * {{Code|{{m|Pudełko|Nazwa przestrzeni nazw dyskusji|nazwa przestrzeni nazw 2{{=}}Szablon|numer jednostki{{=}}2}}}} → {{Tt|{{#invoke:Pudełko|Nazwa przestrzeni nazw dyskusji|nazwa przestrzeni nazw 2=Szablon|numer jednostki=2}}}} * {{Code|{{m|Pudełko|Nazwa przestrzeni nazw dyskusji|nazwa przestrzeni nazw 2{{=}}Szablon|numer jednostki{{=}}2}}}} → {{Tt|{{#invoke:Pudełko|Nazwa przestrzeni nazw dyskusji|nazwa przestrzeni nazw i=Szablon|numer jednostki=2}}}} * {{Code|{{m|Pudełko|Nazwa przestrzeni nazw dyskusji|nazwa przestrzeni nazw{{=}}Szablon|numer jednostki{{=}}2}}}} → {{Tt|{{#invoke:Pudełko|Nazwa przestrzeni nazw dyskusji|nazwa przestrzeni nazw=Szablon|numer jednostki=2}}}} Powyżej dla przykładu podano parametry nie w rodzicu w szablonie, tylko w dziecku, jeśli chodzi o parametry nazw przestrzeni nazw, ale ich się za to nie powinno podawać w tych ramach, tylko w szablonach, w których wywoływane są te ramki pudełek {{Code|{{m|Pudełko}}}}, ale tak tutaj tak zrobiono by było najłatwiej sprawdzić działanie tego typu funkcji. Analogicznie możemy podawać parametry typu jednostki, np.: wywołaniu modułowym {{Code|{{m|Pudełko|Nazwa przestrzeni nazw dyskusji|typ jednostki 2{{=}}strona szablonu|numer jednostki{{=}}2}}}}, ale o tym więcej w rozdziałach {{Code|{{sr|#p["Dyskusyjny typ jednostki"](frame,i)|p=Pudełko}}}} w „{{sr|#Funkcje typu jednostki|p=Pudełko}}”, ale wtedy nazwa przestrzeni nazw reprezentowana przez {{Parametr|typ jednostki 2|strona szablonu}}, jest zamieniana na nazwę przestrzeni nazw dyskusji. Parametr dyskusji typu jednostki bazowy lub dla danego numerka ogólny, czy szczegółowy, nie gra roli. Typ jednostki nie ma takiej samej wartości dla przestrzeni przedmiotowej, co dyskusji. Również parametry typu jednostki nie powinno się podawać w dziecku w ramce, tylko w rodzicu w szablonie jako parametry, w którym ta ramka jest wywoływana, ale tutaj podano jedynie dla przykładu, jak najłatwiej sprawdzić działanie tych parametrów tej funkcji. Najpierw w funkcji nagłówku brane są parametry nazw przestrzeni nazw, a jeżeli ich nie ma, to parametry typu jednostki, a jeżeli nie ma, to generowane są nazwy na podstawie aktualnego modułu. == Funkcje nazw przestrzeni nazw drugiej wersji == === {{Code|p["Nazwa przestrzeni nazw 2"](frame,...)}} === Funkcja pisze nazwę przestrzeni nazw, niezależnie, czy to jest przedmiotowa, czy dyskusji, według, i nie zawsze tylko, podanej w zmiennej {{Code|nazwa przestrzeni nazw}} dla pozycja bazowej w podanych parametrach szablonu rodzicu ramki dziecka, lub dla innej pozycji należy parametr podawać w formie {{Code|nazwa przestrzeni nazw 1}}, {{Code|nazwa przestrzeni nazw 2}}, {{Code|nazwa przestrzeni nazw 3}},..., lub te parametry można podać w postaci ogólnej {{Code|nazwa przestrzeni nazw i}}. W tej funkcji trzeba też podawać parametry nazwy jednostek {{Code|nazwa jednostki}}, {{Code|nazwa jednostki 1}}, {{Code|nazwa jednostki 2}}, {{Code|nazwa jednostki 3}},... Parametry podaje się w parametrach rodzica wywołania tej funkcji {{Code|{{m|Pudełko|Nazwa przestrzeni nazw 2}}}} (ale ich nie trzeba podawać w dziecku, ale można) i w parametrach dziecka, jeśli chodzi o zmienną {{Code|numer jednostki}}, czyli np.: {{Code|{{m|Pudełko|Nazwa przestrzeni nazw 2|numer jednostki{{=}}<jakaś liczba całkowita dodatnia>}}}}. Te parametry przestrzenne zamiast w rodzicu w szablonie można podać w ramce dziecka, wtedy parametry dziecka mają pierwszeństwo. Przestrzeń nazw z parametrów nazw przestrzennych może odpowiadać wartości przestrzeni głównej, to wtedy odpowiednia przestrzeń nazw z parametru nazwy jednostki się liczy w tej funkcji, wtedy jest liczona nazwa przestrzeni nazw z tego parametru. Gdy parametry przestrzenne lub typ jednostki w drugim podejściu nie wskazują na przestrzeń główną, to wtedy działanie tej funkcji jest podobne do {{Code|{{sr|#p["Nazwa przestrzeni nazw"](frame,...)|p=Pudełko}}}}. Definicja skrótowa funkcji: <syntaxhighlight lang="lua"> p["Nazwa przestrzeni nazw 2"]=function(frame,czy_uwzglednic_alternatywna_nazwe,i)...end; </syntaxhighlight> Wtedy ciało funkcji tej, czyli jego definicja w środku, jest: <syntaxhighlight lang="lua"> local pudelko_pomocne_modul=require("Module:Pudełko/Pomocne"); -- Liczy nazwę przestrzeni nazw, jeżeli z parametrów przestrzennych przestrzeń wskazuje na główną, to wtedy jest liczona przestrzeń nazw z nazwy jednostki; return pudelko_pomocne_modul.Nazwa_przestrzeni_nazw_2(frame,czy_uwzglednic_alternatywna_nazwe,i) </syntaxhighlight> Parametry funkcji: * {{Code|frame}} - tablica ramki tablicy transportu, * {{Code|czy_uwzglednic_alternatywna_nazwe}} - czy ma uwzględniać nazwę przestrzeni nazw domyślną szablonu, dostępne wartości: {{Code|false}}, w której nazwa domyślna nie jest uwzględniana wtedy, oraz {{Code|nil}} i {{Code|true}}, które oznaczają to samo, w tym jeżeli ona jest uwzględniana, wtedy jest brany parametr pierwszy dziecka, który musi istnieć przy takiej wartości tego parametru, tzn. {{Code|{{m|Pudełko|Nazwa przestrzeni nazw 2|Szablon}}}}, a jeśli nazwa uzyskana nazwy przestrzeni nazw jest w takim przypadku błędna, to brany jest ten element, a jeżeli nazwa domyślna jest błędna, czyli {{Code|{{m|Pudełko|Nazwa przestrzeni nazw 2|Moja przestrzeń}}}}, wtedy funkcja zwraca stan błędu {{Code|(błąd)}}. * {{Code|i}} - numer zmiennej nazwy przestrzeni nazw. Funkcja wykorzystuje {{Code|{{sr|#p.Nazwa_przestrzeni_nazw_2(frame,...)|p=Pudełko/Pomocne}}}} do wyznaczania ogólnego nazwy przestrzeni nazw dla pozycji bazowej i numerkowej, tzn. dla pozycji: jeden, dwa, trzy,..., itd, i ich ogólnej. Parametr ramki tablicy transportu rodzica szablonu: * {{Code|nazwa przestrzeni nazw}}, {{Code|nazwa przestrzeni nazw 1}}, {{Code|nazwa przestrzeni nazw 2}}, {{Code|nazwa przestrzeni nazw 3}},..., {{Code|nazwa przestrzeni nazw i}} - nazwy przestrzeni nazw dla pozycji bazowej oraz zwykłej i ogólnej numerkowej, * {{Code|nazwa jednostki}}, {{Code|nazwa jednostki 1}}, {{Code|nazwa jednostki 2}}, {{Code|nazwa jednostki 3}},... - nazwy jednostek dla pozycji bazowej i numerkowej, * {{Code|typ jednostki}}, {{Code|typ jednostki 1}}, {{Code|typ jednostki 2}}, {{Code|typ jednostki 3}},..., {{Code|typ jednostki i}} - typy jednostek, którym odpowiadają pewne przestrzenie przedmiotowe, dla pozycji bazowej, numerkowej i ogólnej, ** {{Code|dyskusja typu jednostki}}, {{Code|dyskusja typu jednostki 1}}, {{Code|dyskusja typ jednostki 2}}, {{Code|dyskusja typ jednostki 3}},..., {{Code|dyskusja typ jednostki i}} - czy dany typ jednostki ma przedstawiać, jeśli niepusta, przestrzeń dyskusji dla pozycji bazowej, numerkowej i ogólnej. Parametry ramki tablicy transportu dziecka: * Parametry dziecka są takie same jak rodzica dla funkcji pudełkowej plus tu wymienione, * {{Code|numer jednostki}} - jak parametr {{Code|i}} nie został ustawiony, to wtedy liczy się ta zmienna. Przykłady: <syntaxhighlight lang="mediawiki"> {{Nazwa szablonu|nazwa przestrzeni nazw=Wikibooks|nazwa przestrzeni nazw 1=Szablon|nazwa przestrzeni nazw i=|nazwa jednostki 2=Wikibooks:Strona}} </syntaxhighlight> W dziecku powiedzmy jest wywołanie, i szukamy nazwy przestrzeni nazw o numerze dwa, która została podana, ale istnieje za to jej wersji ogólna {{Code|nazwa przestrzeni nazw i}} i domyślna {{Code|nazwa przestrzeni nazw}}, ale wtedy dla tego numerkowego liczy się to ogólne z {{Code| i}}, a ponieważ ta nazwa jest pusta, więc będziemy liczyli nazwę przestrzeni nazw z {{Code|nazwa jednostki 2}}: <syntaxhighlight lang="mediawiki"> {{#invoke:Pudełko|Nazwa przestrzeni nazw 2|numer jednostki=2}} </syntaxhighlight> Na podstawie powyższego przykładu otrzymamy wynik o schemacie, nie wyniku, bo tam nie ma zmiennej {{Code|nazwa przestrzeni nazw 1}}, ale jest {{Code|nazwa przestrzeni nazw i}}: <syntaxhighlight lang="mediawiki"> <!-- Ale nie "nazwa przestrzeni nazw 2", bo jej nie ma, ale za to istnieje "nazwa przestrzeni nazw i"; --> <!-- nazwa przestrzeni nazw 2=nazwa przestrzeni nazw i="", a nazwa jednostki 2="Wikibooks:Strona"; --> <!-- Czyli wynik: --> Wikibooks <!-- Widzimy, że wygenerowała się nazwa przestrzeni nazw, którą jest przestrzeń nieprogramowa, ale projektu, wychodząca z nazwy jednostek w tym przypadku z "nazwa jednostki 2"; --> </syntaxhighlight> Nie jest brana w tym powyższym przykładzie zmienna {{Code|nazwa przestrzeni nazw}}, bo jej nie ma, ale za to jest {{Code|nazwa przestrzeni nazw i}}, bo ona występuje jako parametr domyślny ogólny dla parametrów numerkowych. Tytaj jest używana jest zmienna {{Code|nazwa jednostki 2}} do wygenerowania ostatecznego wyniku, bo jak można zauważyć, parametry przestrzenne wskazują na przestrzeń główną, a nazwy jednostek już nie. Przykłady w wikikodzie: * {{Code|{{m|Pudełko|Nazwa przestrzeni nazw 2|numer jednostki{{=}}2}}}} → {{Tt|{{#invoke:Pudełko|Nazwa przestrzeni nazw 2|numer jednostki=2}}}} * {{Code|{{m|Pudełko|Nazwa przestrzeni nazw 2|Szablon|nazwa przestrzeni nazw i{{=}}Moja przestrzeń|numer jednostki{{=}}2}}}} → {{Tt|{{#invoke:Pudełko|Nazwa przestrzeni nazw 2|Szablon|nazwa przestrzeni nazw i=Moja przestrzeń|numer jednostki=2}}}} * {{Code|{{m|Pudełko|Nazwa przestrzeni nazw 2|nazwa przestrzeni nazw 2{{=}}|nazwa jednostki 2{{=}}Szablon:Strona|numer jednostki{{=}}2}}}} → {{Tt|{{#invoke:Pudełko|Nazwa przestrzeni nazw 2|nazwa przestrzeni nazw 2=|nazwa jednostki 2=Szablon:Strona|numer jednostki=2}}}} * {{Code|{{m|Pudełko|Nazwa przestrzeni nazw 2|nazwa przestrzeni nazw i{{=}}|nazwa jednostki 2{{=}}Szablon:Strona|numer jednostki{{=}}2}}}} → {{Tt|{{#invoke:Pudełko|Nazwa przestrzeni nazw 2|nazwa przestrzeni nazw i=|nazwa jednostki 2=Szablon:Strona|numer jednostki=2}}}} * {{Code|{{m|Pudełko|Nazwa przestrzeni nazw 2|Szablon|nazwa przestrzeni nazw{{=}}|nazwa jednostki 2{{=}}Wikibooks:Strona|numer jednostki{{=}}2}}}} → {{Tt|{{#invoke:Pudełko|Nazwa przestrzeni nazw 2|Szablon|nazwa przestrzeni nazw=|nazwa jednostki 2=Wikibooks:Strona|numer jednostki=2}}}} Powyżej dla przykładu podano parametry nie w rodzicu w szablonie, tylko w dziecku, jeśli chodzi o parametry nazw przestrzeni nazw i nazw jednostek, ale ich się za to nie powinno podawać w tych ramach, tylko w szablonach, w których wywoływane są te ramki pudełek {{Code|{{m|Pudełko}}}}, ale tak tutaj tak zrobiono by było najłatwiej sprawdzić działanie tego typu funkcji. Analogicznie możemy podawać parametry typu jednostki, np.: wywołaniu modułowym {{Code|{{m|Pudełko|Nazwa przestrzeni nazw 2|typ jednostki 2{{=}}Podręcznik|nazwa jednostki 2{{=}}Szablon:Strona|numer jednostki{{=}}2}}}} (ale wtedy jest brana przestrzeń nazw z nazwy jednostki), ale o tym więcej w rozdziałach {{Code|{{sr|#p["Typ jednostki 2"](frame,i)|p=Pudełko}}}} w „{{sr|#Funkcje typu jednostki|p=Pudełko}}”, on definiuje przestrzenie przedmiotowe, ale można użyć parametru dyskusji typu jednostki z wartością niepustą, wtedy wyświetli się nazwa przestrzeni nazw dyskusji. Jeżeli typ jednostki wskazuje na przestrzeń nazw główną, wtedy się liczą parametry nazw jednostek. Typ jednostki nie ma takiej samej wartości dla przestrzeni przedmiotowej, co dyskusji. Również parametry typu jednostki nie powinno się podawać w dziecku w ramce, tylko w rodzicu w szablonie jako parametry, w którym ta ramka jest wywoływana, ale tutaj podano jedynie dla przykładu, jak najłatwiej sprawdzić działanie tych parametrów tej funkcji. Najpierw w funkcji nagłówku brane są parametry nazw przestrzeni nazw, a jeżeli ich nie ma, to parametry typu jednostki, a jeżeli nie ma lub parametry przestrzenne wskazują na przestrzeń główną, i nie ma nazwy jednostki, to generowane są nazwy tej funkcji na podstawie aktualnej strony. === {{Code|p["Nazwa przedmiotowej przestrzeni nazw 2"](frame,...)}} === Funkcja pisze przedmiotową nazwę przestrzeni nazw jakikolwiek nazwy przestrzeni nazw (tzn. nazwę przedmiotową nazwy przestrzenie nazw, czyli nie dyskusji, zamieniana jest na nią samą, czyli identyfikator przestrzeni się nie zmienia, a dyskusji, nie przedmiotową, przekształca się na przedmiotową jej odpowiadającą, czyli w tym przypadku identyfikator przestrzeni zmniejsza się o numer mniej), według, i nie zawsze tylko, podanej w zmiennej {{Code|nazwa przestrzeni nazw}} dla pozycja bazowej w podanych parametrach szablonu rodzicu ramki dziecka, lub dla innej pozycji należy parametr podawać w formie {{Code|nazwa przestrzeni nazw 1}}, {{Code|nazwa przestrzeni nazw 2}}, {{Code|nazwa przestrzeni nazw 3}},..., lub te parametry można podać w postaci ogólnej {{Code|nazwa przestrzeni nazw i}}. W tej funkcji trzeba też podawać parametry nazwy jednostek {{Code|nazwa jednostki}}, {{Code|nazwa jednostki 1}}, {{Code|nazwa jednostki 2}}, {{Code|nazwa jednostki 3}},... Parametry podaje się w parametrach rodzica wywołania tej funkcji {{Code|{{m|Pudełko|Nazwa przedmiotowej przestrzeni nazw 2}}}} (ale ich nie trzeba podawać w dziecku, ale można) i w parametrach dziecka, jeśli chodzi o zmienną {{Code|numer jednostki}}, czyli np.: {{Code|{{m|Pudełko|Nazwa przedmiotowej przestrzeni nazw 2|numer jednostki{{=}}<jakaś liczba całkowita dodatnia>}}}}. Te parametry przestrzenne zamiast w rodzicu w szablonie można podać w ramce dziecka, wtedy parametry dziecka mają pierwszeństwo. Przestrzeń nazw z parametrów nazw przestrzennych po przekształceniu na przedmiotową może odpowiadać wartości przestrzeni głównej, to wtedy odpowiednia przestrzeń nazw z parametru nazwy jednostki się liczy w tej funkcji, wtedy jest liczona nazwa przestrzeni nazw z tego parametru. Gdy parametry przestrzenne lub typ jednostki w drugim podejściu nie wskazują na przestrzeń główną, to wtedy działanie tej funkcji jest podobne do {{Code|{{sr|#p["Nazwa przedmiotowej przestrzeni nazw"](frame,...)|p=Pudełko}}}}. Definicja skrótowa funkcji: <syntaxhighlight lang="lua"> p["Nazwa przedmiotowej przestrzeni nazw 2"]=function(frame,czy_uwzglednic_alternatywna_nazwe,i)...end; </syntaxhighlight> Wtedy ciało funkcji tej, czyli jego definicja w środku, jest: <syntaxhighlight lang="lua"> local pudelko_pomocne_modul=require("Module:Pudełko/Pomocne"); return pudelko_pomocne_modul.Nazwa_przestrzeni_nazw_przedmiotowa_dyskusji_2(frame,czy_uwzglednic_alternatywna_nazwe,i,"przedmiotowa"); </syntaxhighlight> Parametry funkcji: * {{Code|frame}} - tablica ramki tablicy transportu, * {{Code|czy_uwzglednic_alternatywna_nazwe}} - czy ma uwzględniać nazwę przestrzeni nazw domyślną szablonu, dostępne wartości: {{Code|false}}, w której nazwa domyślna nie jest uwzględniana wtedy, oraz {{Code|nil}} i {{Code|true}}, które oznaczają to samo, w tym jeżeli ona jest uwzględniana, wtedy jest brany parametr pierwszy dziecka, który musi istnieć przy takiej wartości tego parametru, tzn. {{Code|{{m|Pudełko|Nazwa przedmiotowej przestrzeni nazw 2|Szablon}}}}, nazwa domyślna zostanie zamieniona na przedmiotową, a jeżeli jest już taka, to żadnej zamiany nie ma, a jeśli nazwa uzyskana nazwy przestrzeni nazw jest w takim przypadku błędna, to brany jest ten element, a jeżeli nazwa domyślna jest błędna, czyli {{Code|{{m|Pudełko|Nazwa przedmiotowej przestrzeni nazw 2|Moja przestrzeń}}}}, wtedy funkcja zwraca stan błędu {{Code|(błąd)}}. * {{Code|i}} - numer zmiennej nazwy przestrzeni nazw. Funkcja wykorzystuje {{Code|{{sr|#p.Nazwa_przestrzeni_nazw_przedmiotowa_dyskusji_2(frame,...)|p=Pudełko/Pomocne}}}} do wyznaczania ogólnego nazwy przestrzeni nazw dla pozycji bazowej i numerkowej, tzn. dla pozycji: jeden, dwa, trzy,..., itd, i ich ogólnej. Parametr ramki tablicy transportu rodzica szablonu: * {{Code|nazwa przestrzeni nazw}}, {{Code|nazwa przestrzeni nazw 1}}, {{Code|nazwa przestrzeni nazw 2}}, {{Code|nazwa przestrzeni nazw 3}},..., {{Code|nazwa przestrzeni nazw i}} - nazwy przestrzeni nazw dla pozycji bazowej oraz zwykłej i ogólnej numerkowej, * {{Code|nazwa jednostki}}, {{Code|nazwa jednostki 1}}, {{Code|nazwa jednostki 2}}, {{Code|nazwa jednostki 3}},... - nazwy jednostek dla pozycji bazowej i numerkowej, * {{Code|typ jednostki}}, {{Code|typ jednostki 1}}, {{Code|typ jednostki 2}}, {{Code|typ jednostki 3}},..., {{Code|typ jednostki i}} - typy jednostek, którym odpowiadają pewne przestrzenie przedmiotowe, dla pozycji bazowej, numerkowej i ogólnej. Parametry ramki tablicy transportu dziecka: * Parametry dziecka są takie same jak rodzica dla funkcji pudełkowej plus tu wymienione, * {{Code|numer jednostki}} - jak parametr {{Code|i}} nie został ustawiony, to wtedy liczy się ta zmienna. Przykłady: <syntaxhighlight lang="mediawiki"> {{Nazwa szablonu|nazwa przestrzeni nazw=Wikibooks|nazwa przestrzeni nazw 1=Szablon|nazwa przestrzeni nazw i=|nazwa jednostki 2=Dyskusja Wikibooks:Strona}} </syntaxhighlight> W dziecku powiedzmy jest wywołanie, i szukamy nazwy przestrzeni nazw o numerze dwa, która została podana, ale istnieje za to jej wersji ogólna {{Code|nazwa przestrzeni nazw i}} i domyślna {{Code|nazwa przestrzeni nazw}}, ale wtedy dla tego numerkowego liczy się to ogólne z {{Code| i}}, a ponieważ ta nazwa jest pusta, więc będziemy liczyli nazwę przestrzeni nazw z {{Code|nazwa jednostki 2}}: <syntaxhighlight lang="mediawiki"> {{#invoke:Pudełko|Nazwa przedmiotowej przestrzeni nazw 2|numer jednostki=2}} </syntaxhighlight> Na podstawie powyższego przykładu otrzymamy wynik o schemacie, nie wyniku, bo tam nie ma zmiennej {{Code|nazwa przestrzeni nazw 1}}, ale jest {{Code|nazwa przestrzeni nazw i}}: <syntaxhighlight lang="mediawiki"> <!-- Ale nie "nazwa przestrzeni nazw 2", bo jej nie ma, ale za to istnieje "nazwa przestrzeni nazw i"; --> <!-- nazwa przestrzeni nazw 2=nazwa przestrzeni nazw i="", a nazwa jednostki 2="Dyskusja Wikibooks:Strona"; --> <!-- Czyli wynik: --> Wikibooks <!-- Widzimy, że wygenerowała się nazwa przestrzeni nazw, którą jest przestrzeń nieprogramowa, ale projektu, wychodząca z nazwy jednostek w tym przypadku z "nazwa jednostki 2"; --> </syntaxhighlight> Nie jest brana w tym powyższym przykładzie zmienna {{Code|nazwa przestrzeni nazw}}, bo jej nie ma, ale za to jest {{Code|nazwa przestrzeni nazw i}}, bo ona występuje jako parametr domyślny ogólny dla parametrów numerkowych. Tytaj jest używana jest zmienna {{Code|nazwa jednostki 2}} do wygenerowania ostatecznego wyniku, bo jak można zauważyć, parametry przestrzenne wskazują na przestrzeń główną, a nazwy jednostek już nie. Przykłady w wikikodzie: * {{Code|{{m|Pudełko|Nazwa przedmiotowej przestrzeni nazw 2|numer jednostki{{=}}2}}}} → {{Tt|{{#invoke:Pudełko|Nazwa przedmiotowej przestrzeni nazw 2|numer jednostki=2}}}} * {{Code|{{m|Pudełko|Nazwa przedmiotowej przestrzeni nazw 2|Dyskusja szablonu|nazwa przestrzeni nazw i{{=}}Moja przestrzeń|numer jednostki{{=}}2}}}} → {{Tt|{{#invoke:Pudełko|Nazwa przedmiotowej przestrzeni nazw 2|Dyskusja szablonu|nazwa przestrzeni nazw i=Moja przestrzeń|numer jednostki=2}}}} * {{Code|{{m|Pudełko|Nazwa przedmiotowej przestrzeni nazw 2|nazwa przestrzeni nazw 2{{=}}Dyskusja|nazwa jednostki 2{{=}}Dyskusja szablonu:Strona|numer jednostki{{=}}2}}}} → {{Tt|{{#invoke:Pudełko|Nazwa przedmiotowej przestrzeni nazw 2|nazwa przestrzeni nazw 2=Dyskusja|nazwa jednostki 2=Dyskusja szablonu:Strona|numer jednostki=2}}}} * {{Code|{{m|Pudełko|Nazwa przedmiotowej przestrzeni nazw 2|nazwa przestrzeni nazw i{{=}}Dyskusja|nazwa jednostki 2{{=}}Dyskusja szablonu:Strona|numer jednostki{{=}}2}}}} → {{Tt|{{#invoke:Pudełko|Nazwa przedmiotowej przestrzeni nazw 2|nazwa przestrzeni nazw i=Dyskusja|nazwa jednostki 2=Dyskusja szablonu:Strona|numer jednostki=2}}}} * {{Code|{{m|Pudełko|Nazwa przedmiotowej przestrzeni nazw 2|Dyskusja szablonu|nazwa przestrzeni nazw{{=}}Dyskusja|nazwa jednostki 2{{=}}Wikibooks:Strona|numer jednostki{{=}}2}}}} → {{Tt|{{#invoke:Pudełko|Nazwa przedmiotowej przestrzeni nazw 2|Dyskusja szablonu|nazwa przestrzeni nazw=Dyskusja|nazwa jednostki 2=Dyskusja Wikibooks:Strona|numer jednostki=2}}}} Powyżej dla przykładu podano parametry nie w rodzicu w szablonie, tylko w dziecku, jeśli chodzi o parametry nazw przestrzeni nazw i nazw jednostek, ale ich się za to nie powinno podawać w tych ramach, tylko w szablonach, w których wywoływane są te ramki pudełek {{Code|{{m|Pudełko}}}}, ale tak tutaj tak zrobiono by było najłatwiej sprawdzić działanie tego typu funkcji. Analogicznie możemy podawać parametry typu jednostki, np.: wywołaniu modułowym {{Code|{{m|Pudełko|Nazwa przedmiotowej przestrzeni nazw 2|typ jednostki 2{{=}}Podręcznik|nazwa jednostki 2{{=}}Dyskusja szablonu:Strona|numer jednostki{{=}}2}}}} (ale wtedy jest brana przestrzeń nazw z nazwy jednostki), ale o tym więcej w rozdziałach {{Code|{{sr|#p["Przedmiotowy typ jednostki 2"](frame,i)|p=Pudełko}}}} w „{{sr|#Funkcje typu jednostki|p=Pudełko}}”, on definiuje przestrzenie przedmiotowe, ale można użyć parametru dyskusji typu jednostki z wartością niepustą, pustą, czy nawet jej nie podamy, wtedy wyświetli się nazwa przestrzeni nazw przedmiotowej. Jeżeli typ jednostki wskazuje na przestrzeń nazw główną, wtedy się liczą parametry nazw jednostek. Typ jednostki nie ma takiej samej wartości dla przestrzeni przedmiotowej, co dyskusji. Również parametry typu jednostki nie powinno się podawać w dziecku w ramce, tylko w rodzicu w szablonie jako parametry, w którym ta ramka jest wywoływana, ale tutaj podano jedynie dla przykładu, jak najłatwiej sprawdzić działanie tych parametrów tej funkcji. Najpierw w funkcji nagłówku brane są parametry nazw przestrzeni nazw, a jeżeli ich nie ma, to parametry typu jednostki, a jeżeli nie ma lub parametry przestrzenne wskazują na przestrzeń główną, i nie ma nazwy jednostki, to generowane są nazwy tej funkcji na podstawie aktualnej strony. === {{Code|p["Nazwa przestrzeni nazw dyskusji 2"](frame,...)}} === Funkcja pisze nazwę przestrzeni nazw dyskusji jakikolwiek nazwy przestrzeni nazw (tzn. nazwę dyskusji nazwy przestrzenie nazw, czyli nie przedmiotowej, zamieniana jest na nią samą, czyli identyfikator przestrzeni się nie zmienia, a przedmiotową, nie dyskusji, przekształca się na dyskusji jej odpowiadającą, czyli w tym przypadku identyfikator przestrzeni zwiększa się o numer więcej), według, i nie zawsze tylko, podanej w zmiennej {{Code|nazwa przestrzeni nazw}} dla pozycja bazowej w podanych parametrach szablonu rodzicu ramki dziecka, lub dla innej pozycji należy parametr podawać w formie {{Code|nazwa przestrzeni nazw 1}}, {{Code|nazwa przestrzeni nazw 2}}, {{Code|nazwa przestrzeni nazw 3}},..., lub te parametry można podać w postaci ogólnej {{Code|nazwa przestrzeni nazw i}}. W tej funkcji trzeba też podawać parametry nazwy jednostek {{Code|nazwa jednostki}}, {{Code|nazwa jednostki 1}}, {{Code|nazwa jednostki 2}}, {{Code|nazwa jednostki 3}},... Parametry podaje się w parametrach rodzica wywołania tej funkcji {{Code|{{m|Pudełko|Nazwa przestrzeni nazw dyskusji 2}}}} (ale ich nie trzeba podawać w dziecku, ale można) i w parametrach dziecka, jeśli chodzi o zmienną {{Code|numer jednostki}}, czyli np.: {{Code|{{m|Pudełko|Nazwa przestrzeni nazw dyskusji 2|numer jednostki{{=}}<jakaś liczba całkowita dodatnia>}}}}. Te parametry przestrzenne zamiast w rodzicu w szablonie można podać w ramce dziecka, wtedy parametry dziecka mają pierwszeństwo. Przestrzeń nazw z parametrów nazw przestrzennych po przekształceniu może odpowiadać wartości przestrzeni głównej, to wtedy odpowiednia przestrzeń nazw z parametru nazwy jednostki się liczy w tej funkcji, wtedy jest liczona nazwa przestrzeni nazw dyskusji z tego parametru. Gdy parametry przestrzenne lub typ jednostki w drugim podejściu nie wskazują na przestrzeń główną, to wtedy działanie tej funkcji jest podobne do {{Code|{{sr|#p["Nazwa dyskusji przestrzeni nazw"](frame,...)|p=Pudełko}}}}. Definicja skrótowa funkcji: <syntaxhighlight lang="lua"> p["Nazwa przestrzeni nazw dyskusji 2"]=function(frame,czy_uwzglednic_alternatywna_nazwe,i)...end; </syntaxhighlight> Wtedy ciało funkcji tej, czyli jego definicja w środku, jest: <syntaxhighlight lang="lua"> local pudelko_pomocne_modul=require("Module:Pudełko/Pomocne"); return pudelko_pomocne_modul.Nazwa_przestrzeni_nazw_przedmiotowa_dyskusji_2(frame,czy_uwzglednic_alternatywna_nazwe,i,"dyskusja"); </syntaxhighlight> Parametry funkcji: * {{Code|frame}} - tablica ramki tablicy transportu, * {{Code|czy_uwzglednic_alternatywna_nazwe}} - czy ma uwzględniać nazwę przestrzeni nazw domyślną szablonu, dostępne wartości: {{Code|false}}, w której nazwa domyślna nie jest uwzględniana wtedy, oraz {{Code|nil}} i {{Code|true}}, które oznaczają to samo, w tym jeżeli ona jest uwzględniana, wtedy jest brany parametr pierwszy dziecka, który musi istnieć przy takiej wartości tego parametru, tzn. {{Code|{{m|Pudełko|Nazwa przestrzeni nazw dyskusji 2|Szablon}}}}, nazwa domyślna zostanie zamieniona na dyskusji, a jeżeli jest już taka, to nie ma takiej zamiany, a jeśli nazwa uzyskana nazwy przestrzeni nazw jest w takim przypadku błędna, to brany jest ten element, a jeżeli nazwa domyślna jest błędna, czyli {{Code|{{m|Pudełko|Nazwa przestrzeni nazw dyskusji 2|Moja przestrzeń}}}}, wtedy funkcja zwraca stan błędu {{Code|(błąd)}}. * {{Code|i}} - numer zmiennej nazwy przestrzeni nazw. Funkcja wykorzystuje {{Code|{{sr|#p.Nazwa_przestrzeni_nazw_przedmiotowa_dyskusji_2(frame,...)|p=Pudełko/Pomocne}}}} do wyznaczania ogólnego nazwy przestrzeni nazw dla pozycji bazowej i numerkowej, tzn. dla pozycji: jeden, dwa, trzy,..., itd, i ich ogólnej. Parametr ramki tablicy transportu rodzica szablonu: * {{Code|nazwa przestrzeni nazw}}, {{Code|nazwa przestrzeni nazw 1}}, {{Code|nazwa przestrzeni nazw 2}}, {{Code|nazwa przestrzeni nazw 3}},..., {{Code|nazwa przestrzeni nazw i}} - nazwy przestrzeni nazw dla pozycji bazowej oraz zwykłej i ogólnej numerkowej, * {{Code|nazwa jednostki}}, {{Code|nazwa jednostki 1}}, {{Code|nazwa jednostki 2}}, {{Code|nazwa jednostki 3}},... - nazwy jednostek dla pozycji bazowej i numerkowej, * {{Code|typ jednostki}}, {{Code|typ jednostki 1}}, {{Code|typ jednostki 2}}, {{Code|typ jednostki 3}},..., {{Code|typ jednostki i}} - typy jednostek, którym odpowiadają pewne przestrzenie przedmiotowe, dla pozycji bazowej, numerkowej i ogólnej. Parametry ramki tablicy transportu dziecka: * Parametry dziecka są takie same jak rodzica dla funkcji pudełkowej plus tu wymienione, * {{Code|numer jednostki}} - jak parametr {{Code|i}} nie został ustawiony, to wtedy liczy się ta zmienna. Przykłady: <syntaxhighlight lang="mediawiki"> {{Nazwa szablonu|nazwa przestrzeni nazw=Wikibooks|nazwa przestrzeni nazw 1=Szablon|nazwa przestrzeni nazw i=|nazwa jednostki 2=Wikibooks:Strona}} </syntaxhighlight> W dziecku powiedzmy jest wywołanie, i szukamy nazwy przestrzeni nazw o numerze dwa, która została podana, ale istnieje za to jej wersji ogólna {{Code|nazwa przestrzeni nazw i}} i domyślna {{Code|nazwa przestrzeni nazw}}, ale wtedy dla tego numerkowego liczy się to ogólne z {{Code| i}}, a ponieważ ta nazwa jest pusta, więc będziemy liczyli nazwę przestrzeni nazw z {{Code|nazwa jednostki 2}}: <syntaxhighlight lang="mediawiki"> {{#invoke:Pudełko|Nazwa przestrzeni nazw dyskusji 2|numer jednostki=2}} </syntaxhighlight> Na podstawie powyższego przykładu otrzymamy wynik o schemacie, nie wyniku, bo tam nie ma zmiennej {{Code|nazwa przestrzeni nazw 1}}, ale jest {{Code|nazwa przestrzeni nazw i}}: <syntaxhighlight lang="mediawiki"> <!-- Ale nie "nazwa przestrzeni nazw 2", bo jej nie ma, ale za to istnieje "nazwa przestrzeni nazw i"; --> <!-- nazwa przestrzeni nazw 2=nazwa przestrzeni nazw i="", a nazwa jednostki 2="Wikibooks:Strona"; --> <!-- Czyli wynik: --> Dyskusja Wikibooks <!-- Widzimy, że wygenerowała się nazwa przestrzeni nazw, którą jest przestrzeń nieprogramowa, ale dyskusji projektu, wychodząca z nazwy jednostek w tym przypadku z "nazwa jednostki 2"; --> </syntaxhighlight> Nie jest brana w tym powyższym przykładzie zmienna {{Code|nazwa przestrzeni nazw}}, bo jej nie ma, ale za to jest {{Code|nazwa przestrzeni nazw i}}, bo ona występuje jako parametr domyślny ogólny dla parametrów numerkowych. Tytaj jest używana jest zmienna {{Code|nazwa jednostki 2}} do wygenerowania ostatecznego wyniku, bo jak można zauważyć, parametry przestrzenne wskazują na przestrzeń główną, a nazwy jednostek już nie. Przykłady w wikikodzie: * {{Code|{{m|Pudełko|Nazwa przestrzeni nazw dyskusji 2|numer jednostki{{=}}2}}}} → {{Tt|{{#invoke:Pudełko|Nazwa przestrzeni nazw dyskusji 2|numer jednostki=2}}}} * {{Code|{{m|Pudełko|Nazwa przestrzeni nazw dyskusji 2|Szablon|nazwa przestrzeni nazw i{{=}}Moja przestrzeń|numer jednostki{{=}}2}}}} → {{Tt|{{#invoke:Pudełko|Nazwa przestrzeni nazw dyskusji 2|Szablon|nazwa przestrzeni nazw i=Moja przestrzeń|numer jednostki=2}}}} * {{Code|{{m|Pudełko|Nazwa przestrzeni nazw dyskusji 2|nazwa przestrzeni nazw 2{{=}}|nazwa jednostki 2{{=}}Szablon:Strona|numer jednostki{{=}}2}}}} → {{Tt|{{#invoke:Pudełko|Nazwa przestrzeni nazw dyskusji 2|nazwa przestrzeni nazw 2=|nazwa jednostki 2=Szablon:Strona|numer jednostki=2}}}} * {{Code|{{m|Pudełko|Nazwa przestrzeni nazw dyskusji 2|nazwa przestrzeni nazw i{{=}}|nazwa jednostki 2{{=}}Szablon:Strona|numer jednostki{{=}}2}}}} → {{Tt|{{#invoke:Pudełko|Nazwa przestrzeni nazw dyskusji 2|nazwa przestrzeni nazw i=|nazwa jednostki 2=Szablon:Strona|numer jednostki=2}}}} * {{Code|{{m|Pudełko|Nazwa przestrzeni nazw dyskusji 2|Szablon|nazwa przestrzeni nazw{{=}}|nazwa jednostki 2{{=}}Wikibooks:Strona|numer jednostki{{=}}2}}}} → {{Tt|{{#invoke:Pudełko|Nazwa przestrzeni nazw dyskusji 2|Szablon|nazwa przestrzeni nazw=|nazwa jednostki 2=Dyskusja Wikibooks:Strona|numer jednostki=2}}}} Powyżej dla przykładu podano parametry nie w rodzicu w szablonie, tylko w dziecku, jeśli chodzi o parametry nazw przestrzeni nazw i nazw jednostek, ale ich się za to nie powinno podawać w tych ramach, tylko w szablonach, w których wywoływane są te ramki pudełek {{Code|{{m|Pudełko}}}}, ale tak tutaj tak zrobiono by było najłatwiej sprawdzić działanie tego typu funkcji. Analogicznie możemy podawać parametry typu jednostki, np.: wywołaniu modułowym {{Code|{{m|Pudełko|Nazwa przestrzeni nazw dyskusji 2|typ jednostki 2{{=}}Podręcznik|nazwa jednostki 2{{=}}Szablon:Strona|numer jednostki{{=}}2}}}} (ale wtedy jest brana przestrzeń nazw z nazwy jednostki), ale o tym więcej w rozdziałach {{Code|{{sr|#p["Dyskusyjny typ jednostki 3"](frame,i)|p=Pudełko}}}} w „{{sr|#Funkcje typu jednostki|p=Pudełko}}”, one definiują przestrzenie dyskusji, ale można użyć parametru dyskusji typu jednostki z obojętnie jaką wartością niepustą, czy pustą, czy nawet jej nie podamy, wtedy wyświetli się nazwa przestrzeni nazw dyskusji. Jeżeli typ jednostki wskazuje na przestrzeń nazw główną, wtedy się liczą parametry nazw jednostek. Typ jednostki nie ma takiej samej wartości dla przestrzeni przedmiotowej, co dyskusji. Również parametry typu jednostki nie powinno się podawać w dziecku w ramce, tylko w rodzicu w szablonie jako parametry, w którym ta ramka jest wywoływana, ale tutaj podano jedynie dla przykładu, jak najłatwiej sprawdzić działanie tych parametrów tej funkcji. Najpierw w funkcji nagłówku brane są parametry nazw przestrzeni nazw, a jeżeli ich nie ma, to parametry typu jednostki, a jeżeli nie ma lub parametry przestrzenne wskazują na przestrzeń główną, i nie ma nazwy jednostki, to generowane są nazwy tej funkcji na podstawie aktualnej strony. == Funkcje pełnych nazw jednostki == === {{Code|p["Pełna nazwa dyskusji jednostki"](frame,i)}} === === {{Code|p["Pełna nazwa przedmiotowa jednostki"](frame,i)}} === === {{Code|p["Pełna nazwa jednostki"](frame,i)}} === == Funkcje pełnych nazw jednostki drugiej wersji == === {{Code|p["Pełna nazwa dyskusji jednostki 2"](frame,i)}} === === {{Code|p["Pełna nazwa przedmiotowa jednostki 2"](frame,i)}} === === {{Code|p["Pełna nazwa jednostki 2"](frame,i)}} === == Funkcje pełnych nazw jednostki trzeciej wersji == === {{Code|p["Pełna nazwa dyskusji jednostki 3"](frame,i)}} === === {{Code|p["Pełna nazwa przedmiotowa jednostki 3"](frame,i)}} === === {{Code|p["Pełna nazwa jednostki 3"](frame,i)}} === == Funkcje nazw jednostki == === {{Code|p["Nazwa jednostki"](frame,i)}} === == Funkcje nazw jednostki drugiej wersji == === {{Code|p["Nazwa jednostki 2"](frame,i)}} === === {{Code|p["Nazwa przedmiotowa jednostki 2"](frame,i)}} === === {{Code|p["Nazwa dyskusji jednostki 2"](frame,i)}} === == Funkcje nazw przestrzeni nazw trzeciej wersji == === {{Code|p["Nazwa przestrzeni nazw 3"](frame,i)}} === Funkcja pisze nazwę przestrzeni nazw, niezależnie, czy to jest przedmiotowa, czy dyskusji, według, i nie zawsze tylko, podanej w zmiennej {{Code|nazwa przestrzeni nazw}} dla pozycja bazowej w podanych parametrach szablonu rodzicu ramki dziecka, lub dla innej pozycji należy parametr podawać w formie {{Code|nazwa przestrzeni nazw 1}}, {{Code|Nazwa przestrzeni nazw 3}}, {{Code|nazwa przestrzeni nazw 3}},..., lub te parametry można podać w postaci ogólnej {{Code|nazwa przestrzeni nazw i}}. W tej funkcji trzeba też podawać parametry nazwy jednostek {{Code|nazwa jednostki}}, {{Code|nazwa jednostki 1}}, {{Code|nazwa jednostki 2}}, {{Code|nazwa jednostki 3}},... Parametry podaje się w parametrach rodzica wywołania tej funkcji {{Code|{{m|Pudełko|Nazwa przestrzeni nazw 3}}}} (ale ich nie trzeba podawać w dziecku, ale można) i w parametrach dziecka, jeśli chodzi o zmienną {{Code|numer jednostki}}, czyli np.: {{Code|{{m|Pudełko|Nazwa przestrzeni nazw 3|numer jednostki{{=}}<jakaś liczba całkowita dodatnia>}}}}. Te parametry przestrzenne zamiast w rodzicu w szablonie można podać w ramce dziecka, wtedy parametry dziecka mają pierwszeństwo. Przestrzeń nazw z parametrów nazw przestrzennych bazowych (bez numerka) może odpowiadać wartości przestrzeni głównej, to wtedy odpowiednia przestrzeń nazw z parametru nazwy jednostki się nie liczy w tej funkcji, aby się liczyła należy użyć funkcji {{Code|{{sr|#p["Nazwa przestrzeni nazw 2"](frame,...)|p=Pudełko}}}}. W tym przypadku funkcja działa jak {{Code|{{sr|#p["Nazwa przestrzeni nazw"](frame,...)|p=Pudełko}}}}. Przestrzeń nazw z parametrów nazw przestrzennych numerkowych może odpowiadać wartości przestrzeni głównej, to wtedy odpowiednia przestrzeń nazw z parametru nazwy jednostki się liczy w tej funkcji, wtedy jest liczona nazwa przestrzeni nazw z tego parametru. Gdy parametry przestrzenne lub typ jednostki w drugim podejściu nie wskazują na przestrzeń główną, to wtedy działanie tej funkcji jest podobne do {{Code|{{sr|#p["Nazwa przestrzeni nazw 2"](frame,...)|p=Pudełko}}}}. Definicja skrótowa funkcji: <syntaxhighlight lang="lua"> p["Nazwa przestrzeni nazw 3"]=function(frame,czy_uwzglednic_alternatywna_nazwe,i)...end; </syntaxhighlight> Wtedy ciało funkcji tej, czyli jego definicja w środku, jest: <syntaxhighlight lang="lua"> -- Jest liczony numer parametru nazwy przestrzeni nazw, domyslnie chodzi tu o numer bazowy parametrów przestrzennych; local numer_jednostki=i or frame.args["numer jednostki"]; local liczba_numeru_jednostki=((numer_jednostki)and(tonumber(numer_jednostki)) or 0); local pudelko_pomocne_modul=require("Module:Pudełko/Pomocne"); -- Liczy nazwę przestrzeni nazw dyskusji na podstawie podanych parametrów; return pudelko_pomocne_modul.Uzyskanie_nazw_jednostki(frame,0,liczba_numeru_jednostki,nil,2); </syntaxhighlight> Parametry funkcji: * {{Code|frame}} - tablica ramki tablicy transportu, * {{Code|czy_uwzglednic_alternatywna_nazwe}} - czy ma uwzględniać nazwę przestrzeni nazw domyślną szablonu, dostępne wartości: {{Code|false}}, w której nazwa domyślna nie jest uwzględniana wtedy, oraz {{Code|nil}} i {{Code|true}}, które oznaczają to samo, w tym jeżeli ona jest uwzględniana, wtedy jest brany parametr pierwszy dziecka, który musi istnieć przy takiej wartości tego parametru, tzn. {{Code|{{m|Pudełko|Nazwa przestrzeni nazw 3|Szablon}}}}, a jeśli nazwa uzyskana nazwy przestrzeni nazw jest w takim przypadku błędna, to brany jest ten element, a jeżeli nazwa domyślna jest błędna, czyli {{Code|{{m|Pudełko|Nazwa przestrzeni nazw 3|Moja przestrzeń}}}}, wtedy funkcja zwraca stan błędu {{Code|(błąd)}}. * {{Code|i}} - numer zmiennej nazwy przestrzeni nazw. Funkcja wykorzystuje {{Code|{{sr|#p.Uzyskanie_nazw_jednostki(frame,...)|p=Pudełko/Pomocne}}}} do wyznaczania ogólnego nazwy przestrzeni nazw dla pozycji bazowej i numerkowej, tzn. dla pozycji: jeden, dwa, trzy,..., itd, i ich ogólnej. Parametr ramki tablicy transportu rodzica szablonu: * {{Code|nazwa przestrzeni nazw}}, {{Code|nazwa przestrzeni nazw 1}}, {{Code|Nazwa przestrzeni nazw 3}}, {{Code|nazwa przestrzeni nazw 3}},..., {{Code|nazwa przestrzeni nazw i}} - nazwy przestrzeni nazw dla pozycji bazowej oraz zwykłej i ogólnej numerkowej, * {{Code|nazwa jednostki}}, {{Code|nazwa jednostki 1}}, {{Code|nazwa jednostki 2}}, {{Code|nazwa jednostki 3}},... - nazwy jednostek dla pozycji bazowej i numerkowej, * {{Code|typ jednostki}}, {{Code|typ jednostki 1}}, {{Code|typ jednostki 2}}, {{Code|typ jednostki 3}},..., {{Code|typ jednostki i}} - typy jednostek, którym odpowiadają pewne przestrzenie przedmiotowe, dla pozycji bazowej, numerkowej i ogólnej, ** {{Code|dyskusja typu jednostki}}, {{Code|dyskusja typu jednostki 1}}, {{Code|dyskusja typ jednostki 2}}, {{Code|dyskusja typ jednostki 3}},..., {{Code|dyskusja typ jednostki i}} - czy dany typ jednostki ma przedstawiać, jeśli niepusta, przestrzeń dyskusji dla pozycji bazowej, numerkowej i ogólnej. Parametry ramki tablicy transportu dziecka: * Parametry dziecka są takie same jak rodzica dla funkcji pudełkowej plus tu wymienione, * {{Code|numer jednostki}} - jak parametr {{Code|i}} nie został ustawiony, to wtedy liczy się ta zmienna. Przykłady: <syntaxhighlight lang="mediawiki"> {{Nazwa szablonu 1|nazwa przestrzeni nazw=Wikibooks|nazwa przestrzeni nazw=|nazwa przestrzeni nazw i=|nazwa jednostki=Szablon:Strona}} ---- {{Nazwa szablonu 2|nazwa przestrzeni nazw=Wikibooks|nazwa przestrzeni nazw 1=Szablon|nazwa przestrzeni nazw i=|nazwa jednostki 2=Wikibooks:Strona}} </syntaxhighlight> W pierwszym wywołaniu {{Code|nazwa przestrzeni nazw}} jest puste, ale dla tego bazowego (bez numerka) szukamy przestrzeni nazw, a więc ta nazwa jest ostateczna. ---- W drugim wywołaniu w dziecku powiedzmy jest wywołanie, i szukamy nazwy przestrzeni nazw o numerze dwa, która została podana, ale istnieje za to jej wersji ogólna {{Code|nazwa przestrzeni nazw i}} i domyślna {{Code|nazwa przestrzeni nazw}}, ale wtedy dla tego numerkowego liczy się to ogólne z {{Code| i}}, a ponieważ ta nazwa jest pusta, więc będziemy liczyli nazwę przestrzeni nazw z {{Code|nazwa jednostki 2}}. Odpowiadająca powyższemu kodowi, powiedzmy wikikod, według ich zawartości, przedstawia się: <syntaxhighlight lang="mediawiki"> {{#invoke:Pudełko|Nazwa przestrzeni nazw 3}} ---- {{#invoke:Pudełko|Nazwa przestrzeni nazw 3|numer jednostki=2}} </syntaxhighlight> Na podstawie powyższego przykładu otrzymamy wynik o schemacie, nie wyniku, bo tam nie ma zmiennej {{Code|nazwa przestrzeni nazw 1}}, ale jest {{Code|nazwa przestrzeni nazw i}}: <syntaxhighlight lang="mediawiki"> <!-- nazwa przestrzeni nazw=""; --> <!-- Czyli wynik: --> <!-- wynik pusty --> <!-- Widzimy, że wygenerowała się nazwa przestrzeni nazw, którą jest przestrzeń nazw główna, jest ciągiem pustym: ""; --> ---- <!-- Ale nie "nazwa przestrzeni nazw 2", bo jej nie ma, ale za to istnieje "nazwa przestrzeni nazw i"; --> <!-- nazwa przestrzeni nazw 2=nazwa przestrzeni nazw i="", a nazwa jednostki 2="Wikibooks:Strona"; --> <!-- Czyli wynik: --> Wikibooks <!-- Widzimy, że wygenerowała się nazwa przestrzeni nazw, którą jest przestrzeń nieprogramowa, ale projektu, wychodząca z nazwy jednostek w tym przypadku z "nazwa jednostki 2"; --> </syntaxhighlight> Dla parametrów numerkowych nie jest brana w tym powyższym przykładzie zmienna {{Code|nazwa przestrzeni nazw 2}}, bo jej nie ma, ale za to jest {{Code|nazwa przestrzeni nazw i}}, bo ona występuje jako parametr domyślny ogólny dla parametrów numerkowych. Tytaj jest używana jest zmienna {{Code|nazwa jednostki 2}} do wygenerowania ostatecznego wyniku, bo jak można zauważyć, parametry przestrzenne wskazują na przestrzeń główną, a nazwy jednostek już nie. Dla parametrów bazowych mamy zmienną {{Code|nazwa przestrzeni nazw}}, ona jest pusta, więc to zostanie wzięte do ostatecznego wyniku. Przykłady w wikikodzie: * {{Code|{{m|Pudełko|Nazwa przestrzeni nazw 3|Szablon|nazwa przestrzeni nazw{{=}}Moja przestrzeń|nazwa jednostki{{=}}Wikibooks:Strona}}}} → {{Tt|{{#invoke:Pudełko|Nazwa przestrzeni nazw 3|Szablon|nazwa przestrzeni nazw=Moja przestrzeń|nazwa jednostki=Wikibooks:Szablon}}}} * {{Code|{{m|Pudełko|Nazwa przestrzeni nazw 3|Szablon|nazwa przestrzeni nazw 2{{=}}Moja przestrzeń|nazwa jednostki 2{{=}}Wikibooks:Strona}|numer jednostki{{=}}2}}}} → {{Tt|{{#invoke:Pudełko|Nazwa przestrzeni nazw 3|Szablon|nazwa przestrzeni nazw 2=Moja przestrzeń|nazwa jednostki 2=Wikibooks:Szablon|numer jednostki=2}}}} * {{Code|{{m|Pudełko|Nazwa przestrzeni nazw 3|nazwa przestrzeni nazw{{=}}|nazwa jednostki{{=}}Wikibooks:Strona}}}} → {{Tt|{{#invoke:Pudełko|Nazwa przestrzeni nazw 3|nazwa przestrzeni nazw=|nazwa jednostki=Wikibooks:Szablon}}}} * {{Code|{{m|Pudełko|Nazwa przestrzeni nazw 3|nazwa przestrzeni nazw 2{{=}}|nazwa jednostki 2{{=}}Wikibooks:Strona|numer jednostki{{=}}2}}}} → {{Tt|{{#invoke:Pudełko|Nazwa przestrzeni nazw 3|nazwa przestrzeni nazw 2=|nazwa jednostki 2=Wikibooks:Szablon|numer jednostki=2}}}} Powyżej dla przykładu podano parametry nie w rodzicu w szablonie, tylko w dziecku, jeśli chodzi o parametry nazw przestrzeni nazw i nazw jednostek, ale ich się za to nie powinno podawać w tych ramach, tylko w szablonach, w których wywoływane są te ramki pudełek {{Code|{{m|Pudełko}}}}, ale tak tutaj tak zrobiono by było najłatwiej sprawdzić działanie tego typu funkcji. Analogicznie możemy podawać parametry typu jednostki, np.: wywołaniu modułowym {{Code|{{m|Pudełko|Nazwa przestrzeni nazw 3|typ jednostki 2{{=}}Podręcznik|nazwa jednostki 2{{=}}Szablon:Strona|numer jednostki{{=}}2}}}} (ale wtedy jest brana przestrzeń nazw z nazwy jednostki), ale o tym więcej w rozdziałach {{Code|{{sr|#p["Typ jednostki 3"](frame,i)|p=Pudełko}}}} w „{{sr|#Funkcje typu jednostki|p=Pudełko}}”, on definiuje przestrzenie przedmiotowe, ale można użyć parametru dyskusji typu jednostki z wartością niepustą, wtedy wyświetli się nazwa przestrzeni nazw dyskusji. Typ jednostki nie ma takiej samej wartości dla przestrzeni przedmiotowej, co dyskusji. Również parametry typu jednostki nie powinno się podawać w dziecku w ramce, tylko w rodzicu w szablonie jako parametry, w którym ta ramka jest wywoływana, ale tutaj podano jedynie dla przykładu, jak najłatwiej sprawdzić działanie tych parametrów tej funkcji. Najpierw w funkcji nagłówku brane są parametry nazw przestrzeni nazw, a jeżeli ich nie ma, to parametry typu jednostki, a jeżeli nie ma lub parametry przestrzenne wskazują na przestrzeń główną, i nie ma nazwy jednostki, to generowane są nazwy tej funkcji na podstawie aktualnej strony. === {{Code|p["Nazwa przedmiotowej przestrzeni nazw 3"](frame,i)}} === Funkcja pisze przedmiotową nazwę przestrzeni nazw jakikolwiek nazwy przestrzeni nazw (tzn. nazwę przedmiotową nazwy przestrzenie nazw, czyli nie dyskusji, zamieniana jest na nią samą, czyli identyfikator przestrzeni się nie zmienia, a dyskusji, nie przedmiotową, przekształca się na przedmiotową jej odpowiadającą, czyli w tym przypadku identyfikator przestrzeni zmniejsza się o numer mniej), według podanej w zmiennej {{Code|nazwa przestrzeni nazw}} dla pozycja bazowej w podanych parametrach szablonu rodzicu ramki dziecka, lub dla innej pozycji należy parametr podawać w formie {{Code|nazwa przestrzeni nazw 1}}, {{Code|nazwa przestrzeni nazw 2}}, {{Code|nazwa przestrzeni nazw 3}},..., lub te parametry można podać w postaci ogólnej {{Code|nazwa przestrzeni nazw i}}. Parametry podaje się w parametrach rodzica wywołania tej funkcji {{Code|{{m|Pudełko|Nazwa przedmiotowej przestrzeni nazw 3}}}} (ale ich nie trzeba podawać w dziecku, ale można) i w parametrach dziecka, jeśli chodzi o zmienną {{Code|numer jednostki}}, czyli np.: {{Code|{{m|Pudełko|Nazwa przedmiotowej przestrzeni nazw 3|numer jednostki{{=}}<jakaś liczba całkowita dodatnia>}}}}. Te parametry przestrzenne zamiast w rodzicu w szablonie można podać w ramce dziecka, wtedy parametry dziecka mają pierwszeństwo. Parametry przestrzenne mogą mogą być podane w postaci przestrzeni przedmiotowej lub dyskusji, ale ta funkcja zawsze ją zamienia na przedmiotową. Przestrzeń nazw z parametrów nazw przestrzennych bazowych (bez numerka) może odpowiadać wartości przestrzeni głównej, to wtedy odpowiednia przestrzeń nazw z parametru nazwy jednostki się nie liczy w tej funkcji, aby się liczyła należy użyć funkcji {{Code|{{sr|#p["Nazwa przedmiotowej przestrzeni nazw 2"](frame,...)|p=Pudełko}}}}. W tym przypadku funkcja działa jak {{Code|{{sr|#p["Nazwa przedmiotowej przestrzeni nazw"](frame,...)|p=Pudełko}}}}. Przestrzeń nazw z parametrów nazw przestrzennych numerkowych może odpowiadać wartości przestrzeni głównej, to wtedy odpowiednia przestrzeń nazw z parametru nazwy jednostki się liczy w tej funkcji, wtedy jest liczona nazwa przestrzeni nazw z tego parametru. Gdy parametry przestrzenne lub typ jednostki w drugim podejściu nie wskazują na przestrzeń główną, to wtedy działanie tej funkcji jest podobne do {{Code|{{sr|#p["Nazwa przedmiotowej przestrzeni nazw 2"](frame,...)|p=Pudełko}}}}. Definicja skrótowa funkcji: <syntaxhighlight lang="lua"> p["Nazwa przedmiotowej przestrzeni nazw 3"]=function(frame,czy_uwzglednic_alternatywna_nazwe,i)...end; </syntaxhighlight> Wtedy ciało funkcji tej, czyli jego definicja w środku, jest: <syntaxhighlight lang="lua"> -- Jest liczony numer parametru nazwy przestrzeni nazw, domyslnie chodzi tu o numer bazowy parametrów przestrzennych; local numer_jednostki=i or frame.args["numer jednostki"]; local liczba_numeru_jednostki=((numer_jednostki)and(tonumber(numer_jednostki)) or 0); local pudelko_pomocne_modul=require("Module:Pudełko/Pomocne"); -- Liczy nazwę przestrzeni nazw przedmiotową na podstawie podanych parametrów; return pudelko_pomocne_modul.Uzyskanie_nazw_jednostki(frame,1,liczba_numeru_jednostki,nil,1); </syntaxhighlight> Parametry funkcji: * {{Code|frame}} - tablica ramki tablicy transportu, * {{Code|czy_uwzglednic_alternatywna_nazwe}} - czy ma uwzględniać nazwę przestrzeni nazw domyślną szablonu, dostępne wartości: {{Code|false}}, w której nazwa domyślna nie jest uwzględniana wtedy, oraz {{Code|nil}} i {{Code|true}}, które oznaczają to samo, w tym jeżeli ona jest uwzględniana, wtedy jest brany parametr pierwszy dziecka, który musi istnieć przy takiej wartości tego parametru, tzn. {{Code|{{m|Pudełko|Nazwa przedmiotowej przestrzeni nazw 3|Dyskusja szablonu}}}} - ta nazwa domyślna zostanie zamieniona na przedmiotową, a jak ona by była przedmiotowa, to żadnej zamiany by nie było, a nazwa uzyskana z nazwy przestrzeni nazw z parametrów przestrzennych jest w takim przypadku błędna, to w takim razie brany jest ten parametr, a jeżeli ta nazwa domyślna jest błędna, czyli {{Code|{{m|Pudełko|Nazwa przedmiotowej przestrzeni nazw 3|Moja przestrzeń}}}}, wtedy funkcja zwraca stan błędu {{Code|(błąd)}}. * {{Code|i}} - numer zmiennej nazwy przestrzeni nazw. Funkcja wykorzystuje {{Code|{{sr|#p.Uzyskanie_nazw_jednostki(frame,...)|p=Pudełko/Pomocne}}}} do wyznaczania ogólnego nazwy przestrzeni nazw dla pozycji bazowej i numerkowej, tzn. dla pozycji: jeden, dwa, trzy,..., itd, i ich ogólnej. Parametr ramki tablicy transportu rodzica szablonu: * {{Code|nazwa przestrzeni nazw}}, {{Code|nazwa przestrzeni nazw 1}}, {{Code|nazwa przestrzeni nazw 2}}, {{Code|nazwa przestrzeni nazw 3}},..., {{Code|nazwa przestrzeni nazw i}} - nazwy przestrzeni nazw dla pozycji bazowej oraz zwykłej i ogólnej numerkowej, * {{Code|typ jednostki}}, {{Code|typ jednostki 1}}, {{Code|typ jednostki 2}}, {{Code|typ jednostki 3}},..., {{Code|typ jednostki i}} - typy jednostek, którym odpowiadają pewne przestrzenie przedmiotowe, dla pozycji bazowej, numerkowej i ogólnej. Parametry ramki tablicy transportu dziecka: * Parametry dziecka są takie same jak rodzica dla funkcji pudełkowej plus tu wymienione, * {{Code|numer jednostki}} - jak parametr {{Code|i}} nie został ustawiony, to wtedy liczy się ta zmienna. Przykłady: <syntaxhighlight lang="mediawiki"> {{Nazwa szablonu 1|nazwa przestrzeni nazw=Wikibooks|nazwa przestrzeni nazw=|nazwa przestrzeni nazw i=|nazwa jednostki=Dyskusja Wikibooks:Strona}} ---- {{Nazwa szablonu 2|nazwa przestrzeni nazw=Wikibooks|nazwa przestrzeni nazw 1=Szablon|nazwa przestrzeni nazw i=|nazwa jednostki 2=Dyskusja Wikibooks:Strona}} </syntaxhighlight> W pierwszym wywołaniu {{Code|nazwa przestrzeni nazw}} jest puste, ale dla tego bazowego (bez numerka) szukamy przestrzeni nazw, a więc ta nazwa jest ostateczna. ---- W drugim wywołaniu w dziecku powiedzmy jest wywołanie, i szukamy nazwy przestrzeni nazw o numerze dwa, która została podana, ale istnieje za to jej wersji ogólna {{Code|nazwa przestrzeni nazw i}} i domyślna {{Code|nazwa przestrzeni nazw}}, ale wtedy dla tego numerkowego liczy się to ogólne z {{Code| i}}, a ponieważ ta nazwa jest pusta, więc będziemy liczyli nazwę przestrzeni nazw z {{Code|nazwa jednostki 2}}. Odpowiadająca powyższemu kodowi, powiedzmy wikikod, według ich zawartości, przedstawia się: <syntaxhighlight lang="mediawiki"> {{#invoke:Pudełko|Nazwa przedmiotowej przestrzeni nazw 3}} ---- {{#invoke:Pudełko|Nazwa przedmiotowej przestrzeni nazw 3|numer jednostki=2}} </syntaxhighlight> Na podstawie powyższego przykładu otrzymamy wynik o schemacie, nie wyniku, bo tam nie ma zmiennej {{Code|nazwa przestrzeni nazw 1}}, ale jest {{Code|nazwa przestrzeni nazw i}}: <syntaxhighlight lang="mediawiki"> <!-- nazwa przestrzeni nazw=""; --> <!-- Czyli wynik: --> <!-- wynik pusty --> <!-- Widzimy, że wygenerowała się nazwa przestrzeni nazw, którą jest przestrzeń nazw główna, jest ciągiem pustym: ""; --> ---- <!-- Ale nie "nazwa przestrzeni nazw 2", bo jej nie ma, ale za to istnieje "nazwa przestrzeni nazw i"; --> <!-- nazwa przestrzeni nazw 2=nazwa przestrzeni nazw i="", a nazwa jednostki 2="Dyskusja Wikibooks:Strona"; --> <!-- Czyli wynik: --> Wikibooks <!-- Widzimy, że wygenerowała się nazwa przestrzeni nazw, którą jest przestrzeń nieprogramowa, ale projektu, wychodząca z nazwy jednostek w tym przypadku z "nazwa jednostki 2"; --> </syntaxhighlight> Dla parametrów numerkowych nie jest brana w tym powyższym przykładzie zmienna {{Code|nazwa przestrzeni nazw 2}}, bo jej nie ma, ale za to jest {{Code|nazwa przestrzeni nazw i}}, bo ona występuje jako parametr domyślny ogólny dla parametrów numerkowych. Tytaj jest używana jest zmienna {{Code|nazwa jednostki 2}} do wygenerowania ostatecznego wyniku, bo jak można zauważyć, parametry przestrzenne wskazują na przestrzeń główną, a nazwy jednostek już nie. Dla parametrów bazowych mamy zmienną {{Code|nazwa przestrzeni nazw}}, ona jest pusta, więc to zostanie wzięte do ostatecznego wyniku. Przykłady w wikikodzie: * {{Code|{{m|Pudełko|Nazwa przedmiotowej przestrzeni nazw 3|Dyskusja szablonu|nazwa przestrzeni nazw{{=}}Moja przestrzeń|nazwa jednostki{{=}}Dyskusja Wikibooks:Strona}}}} → {{Tt|{{#invoke:Pudełko|Nazwa przedmiotowej przestrzeni nazw 3|Dyskusja szablonu|nazwa przestrzeni nazw=Moja przestrzeń||nazwa jednostki=Dyskusja Wikibooks:Szablon}}}} * {{Code|{{m|Pudełko|Nazwa przedmiotowej przestrzeni nazw 3|Dyskusja szablonu|nazwa przestrzeni nazw 2{{=}}Moja przestrzeń|nazwa jednostki 2{{=}}Dyskusja Wikibooks:Strona|numer jednostki{{=}}2}}}} → {{Tt|{{#invoke:Pudełko|Nazwa przedmiotowej przestrzeni nazw 3|Dyskusja szablonu|nazwa przestrzeni nazw 2=Moja przestrzeń||nazwa jednostki 2=Dyskusja Wikibooks:Szablon|numer jednostki=2}}}} * {{Code|{{m|Pudełko|Nazwa przedmiotowej przestrzeni nazw 3|nazwa przestrzeni nazw{{=}}|nazwa jednostki{{=}}Dyskusja Wikibooks:Strona}}}} → {{Tt|{{#invoke:Pudełko|Nazwa przedmiotowej przestrzeni nazw 3|nazwa przestrzeni nazw=|nazwa jednostki=Dyskusja Wikibooks:Szablon}}}} * {{Code|{{m|Pudełko|Nazwa przedmiotowej przestrzeni nazw 3|nazwa przestrzeni nazw 2{{=}}|nazwa jednostki 2{{=}}Dyskusja Wikibooks:Strona|numer jednostki{{=}}2}}}} → {{Tt|{{#invoke:Pudełko|Nazwa przedmiotowej przestrzeni nazw 3|nazwa przestrzeni nazw 2=|nazwa jednostki 2=Dyskusja Wikibooks:Szablon|numer jednostki=2}}}} Powyżej dla przykładu podano parametry nie w rodzicu w szablonie, tylko w dziecku, jeśli chodzi o parametry nazw przestrzeni nazw, ale ich się za to nie powinno podawać w tych ramach, tylko w szablonach, w których wywoływane są te ramki pudełek {{Code|{{m|Pudełko}}}}, ale tak tutaj tak zrobiono by było najłatwiej sprawdzić działanie tego typu funkcji. Analogicznie możemy podawać parametry typu jednostki, np.: wywołaniu modułowym {{Code|{{m|Pudełko|Nazwa przedmiotowej przestrzeni nazw 3|typ jednostki 2{{=}}strona szablonu|numer jednostki{{=}}2}}}}, ale o tym więcej w rozdziałach {{Code|{{sr|#p["Przedmiotowy typ jednostki 3"](frame,i)|p=Pudełko}}}} w „{{sr|#Funkcje typu jednostki|p=Pudełko}}”, ale wtedy ta sama nazwa przestrzeni nazw reprezentowana przez {{Parametr|typ jednostki 2|strona szablonu}}, jest zamieniana na to samo, lepiej jest tutaj używać parametrów przestrzennych nazw niż typu jednostki, bo typ jednostki ma taką samą wartość dla przestrzeni przedmiotowej, co dyskusji. Tutaj parametr dyskusji typu jednostki bazowy i numerkowy ogólny, czy szczegółowy, nie gra roli, bo nawet, gdy wygenerujemy nazwę przestrzeni dyskusji za pomoca tego parametru, to i tak otrzymamy na samym końcu jego nazwę przedmiotową. Jeżeli typ jednostki bazowy wskazuje na przestrzeń nazw główną, wtedy się nie liczą parametry nazw jednostek, a w przypadku numerkowego, wtedy się liczy. Typ jednostki nie ma takiej samej wartości dla przestrzeni przedmiotowej, co dyskusji. Również parametry typu jednostki nie powinno się podawać w dziecku w ramce, tylko w rodzicu w szablonie jako parametry, w którym ta ramka jest wywoływana, ale tutaj podano jedynie dla przykładu, jak najłatwiej sprawdzić działanie tych parametrów tej funkcji. Najpierw w funkcji nagłówku brane są parametry nazw przestrzeni nazw, a jeżeli ich nie ma, to parametry typu jednostki, a jeżeli nie ma, to generowane są nazwy na podstawie aktualnego modułu. === {{Code|p["Nazwa przestrzeni nazw dyskusji 3"](frame,i)}} === Funkcja pisze nazwę przestrzeni nazw dyskusji jakikolwiek nazwy przestrzeni nazw (tzn. nazwę dyskusji nazwy przestrzenie nazw, czyli nie przedmiotowej, zamieniana jest na nią samą, czyli identyfikator przestrzeni się nie zmienia, a przedmiotową, nie dyskusji, przekształca się na dyskusji jej odpowiadającą, czyli w tym przypadku identyfikator przestrzeni zwiększa się o numer więcej), według, i nie zawsze tylko, podanej w zmiennej {{Code|nazwa przestrzeni nazw}} dla pozycja bazowej w podanych parametrach szablonu rodzicu ramki dziecka, lub dla innej pozycji należy parametr podawać w formie {{Code|nazwa przestrzeni nazw 1}}, {{Code|nazwa przestrzeni nazw 2}}, {{Code|nazwa przestrzeni nazw 3}},..., lub te parametry można podać w postaci ogólnej {{Code|nazwa przestrzeni nazw i}}. W tej funkcji trzeba też podawać parametry nazwy jednostek {{Code|nazwa jednostki}}, {{Code|nazwa jednostki 1}}, {{Code|nazwa jednostki 2}}, {{Code|nazwa jednostki 3}},... Parametry podaje się w parametrach rodzica wywołania tej funkcji {{Code|{{m|Pudełko|Nazwa przestrzeni nazw dyskusji 3}}}} (ale ich nie trzeba podawać w dziecku, ale można) i w parametrach dziecka, jeśli chodzi o zmienną {{Code|numer jednostki}}, czyli np.: {{Code|{{m|Pudełko|Nazwa przestrzeni nazw dyskusji 3|numer jednostki{{=}}<jakaś liczba całkowita dodatnia>}}}}. Te parametry przestrzenne zamiast w rodzicu w szablonie można podać w ramce dziecka, wtedy parametry dziecka mają pierwszeństwo. Przestrzeń nazw z parametrów nazw przestrzennych bazowych (bez numerka) może odpowiadać wartości przestrzeni głównej, to wtedy odpowiednia przestrzeń nazw z parametru nazwy jednostki się nie liczy w tej funkcji, aby się liczyła należy użyć funkcji {{Code|{{sr|#p["Nazwa przestrzeni nazw dyskusji 2"](frame,...)|p=Pudełko}}}}. W tym przypadku funkcja działa jak {{Code|{{sr|#p["Nazwa przestrzeni nazw dyskusji"](frame,...)|p=Pudełko}}}}. Przestrzeń nazw z parametrów nazw przestrzennych numerkowych może odpowiadać wartości przestrzeni głównej, to wtedy odpowiednia przestrzeń nazw z parametru nazwy jednostki się liczy w tej funkcji, wtedy jest liczona nazwa przestrzeni nazw z tego parametru. Gdy parametry przestrzenne lub typ jednostki w drugim podejściu nie wskazują na przestrzeń główną, to wtedy działanie tej funkcji jest podobne do {{Code|{{sr|#p["Nazwa przestrzeni nazw dyskusji 2"](frame,...)|p=Pudełko}}}}. Definicja skrótowa funkcji: <syntaxhighlight lang="lua"> p["Nazwa przestrzeni nazw dyskusji 3"]=function(frame,czy_uwzglednic_alternatywna_nazwe,i)...end; </syntaxhighlight> Wtedy ciało funkcji tej, czyli jego definicja w środku, jest: <syntaxhighlight lang="lua"> -- Jest liczony numer parametru nazwy przestrzeni nazw, domyslnie chodzi tu o numer bazowy parametrów przestrzennych; local numer_jednostki=i or frame.args["numer jednostki"]; local liczba_numeru_jednostki=((numer_jednostki)and(tonumber(numer_jednostki)) or 0); local pudelko_pomocne_modul=require("Module:Pudełko/Pomocne"); -- Liczy nazwę przestrzeni nazw dyskusji na podstawie podanych parametrów; return pudelko_pomocne_modul.Uzyskanie_nazw_jednostki(frame,2,liczba_numeru_jednostki,nil,1); </syntaxhighlight> Parametry funkcji: * {{Code|frame}} - tablica ramki tablicy transportu, * {{Code|czy_uwzglednic_alternatywna_nazwe}} - czy ma uwzględniać nazwę przestrzeni nazw domyślną szablonu, dostępne wartości: {{Code|false}}, w której nazwa domyślna nie jest uwzględniana wtedy, oraz {{Code|nil}} i {{Code|true}}, które oznaczają to samo, w tym jeżeli ona jest uwzględniana, wtedy jest brany parametr pierwszy dziecka, który musi istnieć przy takiej wartości tego parametru, tzn. {{Code|{{m|Pudełko|Nazwa przestrzeni nazw dyskusji 3|Szablon}}}}, nazwa domyślna zostatnie zamieniona na dyskusji, a jeśli jest już taka, to takiej transfomacji nie ma, a jeśli nazwa uzyskana nazwy przestrzeni nazw jest w takim przypadku błędna, to wzięty jest ten parametr, a jeżeli nazwa domyślna jest błędna, czyli {{Code|{{m|Pudełko|Nazwa przestrzeni nazw dyskusji 3|Moja przestrzeń}}}}, wtedy funkcja zwraca stan błędu {{Code|(błąd)}}. * {{Code|i}} - numer zmiennej nazwy przestrzeni nazw. Funkcja wykorzystuje {{Code|{{sr|#p.Uzyskanie_nazw_jednostki(frame,...)|p=Pudełko/Pomocne}}}} do wyznaczania ogólnego nazwy przestrzeni nazw dla pozycji bazowej i numerkowej, tzn. dla pozycji: jeden, dwa, trzy,..., itd, i ich ogólnej. Parametr ramki tablicy transportu rodzica szablonu: * {{Code|nazwa przestrzeni nazw}}, {{Code|nazwa przestrzeni nazw 1}}, {{Code|nazwa przestrzeni nazw 2}}, {{Code|nazwa przestrzeni nazw 3}},..., {{Code|nazwa przestrzeni nazw i}} - nazwy przestrzeni nazw dla pozycji bazowej oraz zwykłej i ogólnej numerkowej, * {{Code|nazwa jednostki}}, {{Code|nazwa jednostki 1}}, {{Code|nazwa jednostki 2}}, {{Code|nazwa jednostki 3}},... - nazwy jednostek dla pozycji bazowej i numerkowej, * {{Code|typ jednostki}}, {{Code|typ jednostki 1}}, {{Code|typ jednostki 2}}, {{Code|typ jednostki 3}},..., {{Code|typ jednostki i}} - typy jednostek, którym odpowiadają pewne przestrzenie przedmiotowe, dla pozycji bazowej, numerkowej i ogólnej. Parametry ramki tablicy transportu dziecka: * Parametry dziecka są takie same jak rodzica dla funkcji pudełkowej plus tu wymienione, * {{Code|numer jednostki}} - jak parametr {{Code|i}} nie został ustawiony, to wtedy liczy się ta zmienna. Przykłady: <syntaxhighlight lang="mediawiki"> {{Nazwa szablonu 1|nazwa przestrzeni nazw=Wikibooks|nazwa przestrzeni nazw=|nazwa przestrzeni nazw i=|nazwa jednostki=Szablon:Strona}} ---- {{Nazwa szablonu 2|nazwa przestrzeni nazw=Wikibooks|nazwa przestrzeni nazw 1=Szablon|nazwa przestrzeni nazw i=|nazwa jednostki 2=Wikibooks:Strona}} </syntaxhighlight> W pierwszym wywołaniu {{Code|nazwa przestrzeni nazw}} jest puste, ale dla tego bazowego (bez numerka) szukamy przestrzeni nazw, a więc ta nazwa jest ostateczna. ---- W drugim wywołaniu w dziecku powiedzmy jest wywołanie, i szukamy nazwy przestrzeni nazw o numerze dwa, która została podana, ale istnieje za to jej wersji ogólna {{Code|nazwa przestrzeni nazw i}} i domyślna {{Code|nazwa przestrzeni nazw}}, ale wtedy dla tego numerkowego liczy się to ogólne z {{Code| i}}, a ponieważ ta nazwa jest pusta, więc będziemy liczyli nazwę przestrzeni nazw z {{Code|nazwa jednostki 2}}. Odpowiadająca powyższemu kodowi, powiedzmy wikikod, według ich zawartości, przedstawia się: <syntaxhighlight lang="mediawiki"> {{#invoke:Pudełko|Nazwa przestrzeni nazw 3}} ---- {{#invoke:Pudełko|Nazwa przestrzeni nazw 3|numer jednostki=2}} </syntaxhighlight> Na podstawie powyższego przykładu otrzymamy wynik o schemacie, nie wyniku, bo tam nie ma zmiennej {{Code|nazwa przestrzeni nazw 1}}, ale jest {{Code|nazwa przestrzeni nazw i}}: <syntaxhighlight lang="mediawiki"> <!-- nazwa przestrzeni nazw=""; --> <!-- Czyli wynik: --> Dyskusja <!-- Widzimy, że wygenerowała się nazwa przestrzeni nazw, którą jest przestrzeń nazw niegłówna, jest ciągiem niepustym; --> ---- <!-- Ale nie "nazwa przestrzeni nazw 2", bo jej nie ma, ale za to istnieje "nazwa przestrzeni nazw i"; --> <!-- nazwa przestrzeni nazw 2=nazwa przestrzeni nazw i="", a nazwa jednostki 2="Wikibooks:Strona"; --> <!-- Czyli wynik: --> Dyskusja Wikibooks <!-- Widzimy, że wygenerowała się nazwa przestrzeni nazw, którą jest przestrzeń nieprogramowa, ale projektu, wychodząca z nazwy jednostek w tym przypadku z "nazwa jednostki 2"; --> </syntaxhighlight> Dla parametrów numerkowych nie jest brana w tym powyższym przykładzie zmienna {{Code|nazwa przestrzeni nazw 2}}, bo jej nie ma, ale za to jest {{Code|nazwa przestrzeni nazw i}}, bo ona występuje jako parametr domyślny ogólny dla parametrów numerkowych. Tytaj jest używana jest zmienna {{Code|nazwa jednostki 2}} do wygenerowania ostatecznego wyniku, bo jak można zauważyć, parametry przestrzenne wskazują na przestrzeń główną, a nazwy jednostek już nie. Dla parametrów bazowych mamy zmienną {{Code|nazwa przestrzeni nazw}}, ona jest pusta, więc to zostanie wzięte do ostatecznego wyniku. Przykłady w wikikodzie: * {{Code|{{m|Pudełko|Nazwa przestrzeni nazw dyskusji 3|Szablon|nazwa przestrzeni nazw{{=}}Moja przestrzeń|nazwa jednostki{{=}}Wikibooks:Strona}}}} → {{Tt|{{#invoke:Pudełko|Nazwa przestrzeni nazw dyskusji 3|Szablon|nazwa przestrzeni nazw=Moja przestrzeń|nazwa jednostki=Wikibooks:Szablon}}}} * {{Code|{{m|Pudełko|Nazwa przestrzeni nazw dyskusji 3|Szablon|nazwa przestrzeni nazw 2{{=}}Moja przestrzeń|nazwa jednostki 2{{=}}Wikibooks:Strona|numer jednostki{{=}}2}}}} → {{Tt|{{#invoke:Pudełko|Nazwa przestrzeni nazw dyskusji 3|Szablon|nazwa przestrzeni nazw 2=Moja przestrzeń|nazwa jednostki 2=Wikibooks:Szablon|numer jednostki=2}}}} * {{Code|{{m|Pudełko|Nazwa przestrzeni nazw dyskusji 3|nazwa przestrzeni nazw{{=}}|nazwa jednostki{{=}}Wikibooks:Strona}}}} → {{Tt|{{#invoke:Pudełko|Nazwa przestrzeni nazw dyskusji 3|nazwa przestrzeni nazw=|nazwa jednostki=Wikibooks:Szablon}}}} * {{Code|{{m|Pudełko|Nazwa przestrzeni nazw dyskusji 3|nazwa przestrzeni nazw 2{{=}}|nazwa jednostki 2{{=}}Wikibooks:Strona|numer jednostki{{=}}2}}}} → {{Tt|{{#invoke:Pudełko|Nazwa przestrzeni nazw dyskusji 3|nazwa przestrzeni nazw 2=|nazwa jednostki 2=Wikibooks:Szablon|numer jednostki=2}}}} Powyżej dla przykładu podano parametry nie w rodzicu w szablonie, tylko w dziecku, jeśli chodzi o parametry nazw przestrzeni nazw i nazw jednostek, ale ich się za to nie powinno podawać w tych ramach, tylko w szablonach, w których wywoływane są te ramki pudełek {{Code|{{m|Pudełko}}}}, ale tak tutaj tak zrobiono by było najłatwiej sprawdzić działanie tego typu funkcji. Analogicznie możemy podawać parametry typu jednostki, np.: wywołaniu modułowym {{Code|{{m|Pudełko|Nazwa przestrzeni nazw dyskusji 3|typ jednostki 2{{=}}Podręcznik|nazwa jednostki 2{{=}}Szablon:Strona|numer jednostki{{=}}2}}}} (ale wtedy jest brana przestrzeń nazw z nazwy jednostki), ale o tym więcej w rozdziałach {{Code|{{sr|#p["Dyskusyjny typ jednostki 3"](frame,i)|p=Pudełko}}}} w „{{sr|#Funkcje typu jednostki|p=Pudełko}}”, one definiują przestrzenie dyskusji, ale można użyć parametru dyskusji typu jednostki z obojętnie jaką wartością niepustą, czy pustą, czy nawet jej nie podamy, wtedy wyświetli się nazwa przestrzeni nazw dyskusji. Jeżeli typ jednostki bazowy wskazuje na przestrzeń nazw główną, wtedy się nie liczą parametry nazw jednostek, a w przypadku numerkowego, wtedy się liczy. Typ jednostki nie ma takiej samej wartości dla przestrzeni przedmiotowej, co dyskusji. Również parametry typu jednostki nie powinno się podawać w dziecku w ramce, tylko w rodzicu w szablonie jako parametry, w którym ta ramka jest wywoływana, ale tutaj podano jedynie dla przykładu, jak najłatwiej sprawdzić działanie tych parametrów tej funkcji. Najpierw w funkcji nagłówku brane są parametry nazw przestrzeni nazw, a jeżeli ich nie ma, to parametry typu jednostki, a jeżeli nie ma lub parametry przestrzenne wskazują na przestrzeń główną, i nie ma nazwy jednostki, to generowane są nazwy tej funkcji na podstawie aktualnej strony. == Funkcje nazw jednostki trzeciej wersji == === {{Code|p["Nazwa jednostki 3"](frame,i)}} === === {{Code|p["Nazwa przedmiotowa jednostki 3"](frame,i)}} === === {{Code|p["Nazwa dyskusji jednostki 3"](frame,i)}} === == Funkcje typu jednostki == === {{Code|p["Typ jednostki"](frame,i)}} === === {{Code|p["Typ jednostki 2"](frame,i)}} === === {{Code|p["Typ jednostki 3"](frame,i)}} === === Funkcje typu jednostki przedmiotowe === ==== {{Code|p["Przedmiotowy typ jednostki"](frame,i)}} ==== ==== {{Code|p["Przedmiotowy typ jednostki 2"](frame,i)}} ==== ==== {{Code|p["Przedmiotowy typ jednostki 3"](frame,i)}} ==== === Fukcje typu jednostki dyskusji === ==== {{Code|p["Dyskusyjny typ jednostki"](frame,i)}} ==== ==== {{Code|p["Dyskusyjny typ jednostki 2"](frame,i)}} ==== ==== {{Code|p["Dyskusyjny typ jednostki 3"](frame,i)}} ==== == Funkcje chech pudełka == === {{Code|p["Cecha pudełka"](frame)}} === === {{Code|p["Przedmiotowa cecha pudełka"](frame)}} === === {{Code|p["Dyskusyjna cecha pudełka"](frame)}} === == Fukcje ogólnego pudełka == === {{Code|p["Ogólne pudełko"](frame)}} === == Funkcje ogólne == === {{Code|p["Tekst pudełka"](frame)}} === == Funkcje błędów pudełka == === {{Code|p["Błędy pudełka"](frame)}} === === {{Code|p["Przedmiotowe błędy pudełka"](frame)}} === === {{Code|p["Dyskusyjne błędy pudełka"](frame)}} === == Funkcje nazw stron == === {{Code|p["Nazwa strony głównej projektu"](frame,i)}} === === {{Code|p["Nazwa strony głównej dla dzieci projektu"](frame,i)}} === == Funkcje kodów == === {{Code|p["Kod języka"](frame,i)}} === === {{Code|p["Kod projektu"](frame,i)}} === === {{Code|p["Klucz projektu"](frame,i)}} === == Funkcje wiki == === {{Code|p["Inny niż język bieżący wiki"](frame)}} === === {{Code|p["Inne niż lokalne wiki"](frame)}} === === {{Code|p["Inne niż bieżące wiki"](frame)}} === == Funkcje typów parametrów, czy podane je == === {{Code|p["Podano parametry nienazwane"](frame)}} === === {{Code|p["Podano parametry numerowane"](frame)}} === === {{Code|p["Podano parametry nazwane"](frame)}} === == Funkcje kodów tego projektu == === {{Code|p["Kod projektu tego projektu"](frame)}} === === {{Code|p["Kod języka tego projektu"](frame)}} === === {{Code|p["Klucz projektu tego projektu"](frame)}} === == Funkcje stron == === {{Code|p["Strona główna tego projektu"](frame)}} === === {{Code|p["Strona główna dla dzieci tego projektu"](frame)}} === == Funkcje nazw stron drugiej wersji == === {{Code|p["Nazwa strony głównej dla dzieci projektu 2"](frame)}} === === {{Code| p["Nazwa strony głównej projektu 2"](frame)}} === {{BrClear}} <noinclude><!-- -->{{ProstaStronaKoniec}}<!-- -->{{Kategoria|Opisy funkcji, w Lua w Scribunto, w modułach}}<!-- --></noinclude> b0h3ach8cfs2uu49ybbvkxl75f12k1x 540468 540467 2026-04-24T10:15:55Z Persino 2851 /* Funkcje nazw przestrzeni nazw trzeciej wersji */ 540468 wikitext text/x-wiki <noinclude>{{ProstaStronaStart | nagłówek = {{Podrozdział|{{ld2|Pudełko}}|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 pudelko_modul=require("Module:Pudełko"); </syntaxhighlight> dzięki, któremu można wypisywać funkcje należącego do niego. Posługuje się na parametrach pudełkowych {{Parametr|nazwa przestrzeni nazw}} (czy też bez numerka {{Parametr|nazwa przestrzeni nazw i}} dla tego numerowanego) lub te z numerkiem po jednej spacji w nich (ale nie dla tego z końcówką {{Code| i}}) mogą zostać użyte jako parametry szablonu. Moduł {{Code|{{ld2|Pudełko}}}} przedstawia funkcje nazw w oparciu o funkcje nazw {{Code|{{ld2|Nazwy}}}}, generuje on nazwy za pomocą parametrów pudełkowych podanych poniżej. Parametr {{Parametr|nazwa jednostki}} (lub parametr {{Parametr|cel}} dla numerka tego pierwszego, tego alternatywnego), lub te z numerkiem po jednej spacji w nazwie parametru, albo numerowane numerkami {{Code|1}}, {{Code|2}},..., mogą zostać użyte jako parametry szablonu. Parametry określające rodzaj jednostki {{Parametr|typ jednostki}} z {{Parametr|dyskusja typu jednostki}}, itp. w wersjach z numerkiem po jednej spacji w nich mogą zostać użyte jako parametry szablonu. A te tymi numerowanymi liczbami naturalnymi {{Tt|nazwy jednostki}} od jedynki wzwyż poprzez szablon, w którym są one użyte, one też mogą być użyte z dwukropkiem, te numerowane, na samym początku nazwy, wtedy one są traktowane jako pełne nazwy strony, i wtedy one nie zostaną z interpretowane, że do nich trzeba użyć parametr odpowiedni z nazwą przetrzeni nazw z tego numerowanego, czy ogólny, aby utworzyć znów inną pełną nazwę strony dla tego numerka. Zestawienie: * {{Code|nazwa przestrzeni nazw}} i {{Code|nazwa przestrzeni nazw i}} (ogólna nazwa przestrzeni nazw dla wszystkich numerków, i tych numerowanych jednostek) - i to pierwsze z numerkiem, tzn. {{Code|nazwa przestrzeni nazw 1}}, {{Code|nazwa przestrzeni nazw 2}}, ..., * {{Code|nazwa jednostki}} - i te z numerkiem: {{Code|nazwa jednostki 1}}, {{Code|nazwa jednostki 2}}, ..., lub gdy jest zamiast tego parametrem numerowany, {{Code|1}}, {{Code|2}},..., który dla tego pierwszego może być uznany jako: {{Code|cel}} {{=}} {{Code|1}}, * {{Code|typ jednostki}} (parametr bazowy) i {{Code|typ jednostki i}} (parametr domyślny numerkowy) - i te z numerkiem: {{Code|typ jednostki 1}}, {{Code|typ jednostki 2}}, ..., tzn. gdy chcemy określić z jakim typem jednostki mamy do czynienia w zależności do jakiej przestrzeni nazw należy, a w danej, czy jest on np. programowy, czy tylko jest opisem, jak to bywa w szablonach {{Np|Template|link=tak}}, podobnie jest w przypadku {{Np|Module|link=tak}}, czy jak jest w innych przestrzeniach nazw, ** {{Code|dyskusja typu jednostki}} (parametr bazowy) i {{Code|dyskusja typu jednostki i}} (parametr domyślny numerkowy) - i te z numerkiem: {{Code|dyskusja typu jednostki 1}}, {{Code|dyskusja typu jednostki 2}}, ..., gdy chcemy określić wartością niepustą,że chodzi tutaj o typ jednostki. == {{Code|p.CzyNiepoprawnaNazwa(nazwa_jednostki)}} == Funkcja sprawdzajaca, czy jest poprawnie podana nazwa jednostki, czy ma poprawną nazwę. Znakami tymi, z których nie powinna składać się nazwa jest {{Code|<nowiki>{}<>|[]#\n</nowiki>}} i dodatkowo znak {{Code|&#127;}} (kod {{Code|{{Nowiki|&#127;}}}}). Też nie może składać się z trzech znaków tyldy, tzn. {{Code|<nowiki>~~~</nowiki>}}. Również w swojej budowie nie może składać się ze kodów {{Strong|HTML}} literowych o wzorze {{Code|{{Nowiki|&(%a+);}}}}. Natomiast może składać się z {{Code|{{Nowiki|&#(%d+);}}}} i {{Code|{{Nowiki|&#x(%x+);}}}}, ale w pierw te kody muszą być zamienione na normalne znaki. Skrótowa definicja funkcji: <syntaxhighlight lang="lua"> function p.CzyNiepoprawnaNazwa(nazwa_jednostki)...end; </syntaxhighlight> Wtedy ciało funkcji tej, czyli jego definicja w środku, jest: <syntaxhighlight lang="lua"> -- Moduł: "Moduł:Html/dane", służy do ładowania znaku o kodzie HTML "&#127;"; local html_dane_modul=mw.loadData("Module:Html/dane"); return mw.ustring.match(nazwa_jednostki,"[{}<>|%[%]#\n"..html_dane_modul.znak_127.."]+") or mw.ustring.match(nazwa_jednostki,"~~~") or mw.ustring.match(nazwa_jednostki,"&(%a+);"); </syntaxhighlight> Parametry: * {{Code|nazwa_jednostki}} - nazwa jednostki do sprawdzenia. Przykłady: <syntaxhighlight lang="lua"> local pudelko_modul=require("Module:Pudełko"); -- Podana przykładowa niepoprawna nazwa jedostki local nazwa_jednostki="Nazwa pliku [[Nazwa linku w pliku]]"; -- Fukcja zwróci wartość: local czy_poprawna_nazwa=true; local czy_poprawna_nazwa=pudelko_modul.CzyNiepoprawnaNazwa(nazwa_jednostki); </syntaxhighlight> == Funkcje nazw przestrzeni nazw == === {{Code|p["Nazwa przestrzeni nazw"](frame,...)}} === Funkcja pisze nazwę przestrzeni nazw, niezależnie, czy to jest przedmiotowa, czy dyskusji, według podanej w zmiennej {{Code|nazwa przestrzeni nazw}} dla pozycja bazowej w podanych parametrach szablonu rodzicu ramki dziecka, lub dla innej pozycji należy parametr podawać w formie {{Code|nazwa przestrzeni nazw 1}}, {{Code|nazwa przestrzeni nazw 2}}, {{Code|nazwa przestrzeni nazw 3}},..., lub te parametry można podać w postaci ogólnej {{Code|nazwa przestrzeni nazw i}}. Parametry podaje się w parametrach rodzica wywołania tej funkcji {{Code|{{m|Pudełko|Nazwa przestrzeni nazw}}}} (ale ich nie trzeba podawać w dziecku, ale można) i w parametrach dziecka, jeśli chodzi o zmienną {{Code|numer jednostki}}, czyli np.: {{Code|{{m|Pudełko|Nazwa przestrzeni nazw|numer jednostki{{=}}<jakaś liczba całkowita dodatnia>}}}}. Te parametry przestrzenne zamiast w rodzicu w szablonie można podać w ramce dziecka, wtedy parametry dziecka mają pierwszeństwo. Przestrzeń nazw z parametrów nazw przestrzennych może odpowiadać wartości przestrzeni głównej, to wtedy odpowiednia przestrzeń nazw z parametru nazwy jednostki się nie liczy w tej funkcji, aby się liczyła należy użyć funkcji {{Code|{{sr|#p["Nazwa przestrzeni nazw 2"](frame,...)|p=Pudełko}}}}. Definicja skrótowa funkcji: <syntaxhighlight lang="lua"> p["Nazwa przestrzeni nazw"]=function(frame,czy_uwzglednic_alternatywna_nazwe,i)...end; </syntaxhighlight> Wtedy ciało funkcji tej, czyli jego definicja w środku, jest: <syntaxhighlight lang="lua"> -- Jest liczony numer parametru nazwy przestrzeni nazw, domyslnie chodzi tu o numer bazowy parametrów przestrzennych; local numer_jednostki=i or frame.args["numer jednostki"]; local liczba_numer_jednostki=((numer_jednostki)and(tonumber(numer_jednostki))or 0); local pudelko_pomocne_modul=require("Module:Pudełko/Pomocne"); -- Liczy nazwę przestrzeni nazw na podstawie podanych parametrów; return pudelko_pomocne_modul.Nazwa_przestrzeni_nazw(frame,0, czy_uwzglednic_alternatywna_nazwe,liczba_numer_jednostki); </syntaxhighlight> Parametry funkcji: * {{Code|frame}} - tablica ramki tablicy transportu, * {{Code|czy_uwzglednic_alternatywna_nazwe}} - czy ma uwzględniać nazwę przestrzeni nazw domyślną szablonu, dostępne wartości: {{Code|false}}, w której nazwa domyślna nie jest uwzględniana wtedy, oraz {{Code|nil}} i {{Code|true}}, które oznaczają to samo, w tym jeżeli ona jest uwzględniana, wtedy jest brany parametr pierwszy dziecka, który musi istnieć przy takiej wartości tego parametru, tzn. {{Code|{{m|Pudełko|Nazwa przestrzeni nazw|Szablon}}}}, a ten element jest używany, gdy nazwa uzyskana nazwy przestrzeni nazw jest w takim przypadku błędna, a jeżeli wtedy nazwa domyślna jest błędna, czyli {{Code|{{m|Pudełko|Nazwa przestrzeni nazw|Moja przestrzeń}}}}, wtedy funkcja zwraca stan błędu {{Code|(błąd)}}. * {{Code|i}} - numer zmiennej nazwy przestrzeni nazw. Funkcja wykorzystuje {{Code|{{sr|#p.Nazwa_przestrzeni_nazw(frame,...)|p=Pudełko/Pomocne}}}} do wyznaczania ogólnego nazwy przestrzeni nazw dla pozycji bazowej i numerkowej, tzn. dla pozycji: jeden, dwa, trzy,..., itd, i ich ogólnej. Parametr ramki tablicy transportu rodzica szablonu: * {{Code|nazwa przestrzeni nazw}}, {{Code|nazwa przestrzeni nazw 1}}, {{Code|nazwa przestrzeni nazw 2}}, {{Code|nazwa przestrzeni nazw 3}},..., {{Code|nazwa przestrzeni nazw i}} - nazwy przestrzeni nazw dla pozycji bazowej oraz zwykłej i ogólnej numerkowej, * {{Code|typ jednostki}}, {{Code|typ jednostki 1}}, {{Code|typ jednostki 2}}, {{Code|typ jednostki 3}},..., {{Code|typ jednostki i}} - typy jednostek, którym odpowiadają pewne przestrzenie przedmiotowe, dla pozycji bazowej, numerkowej i ogólnej, ** {{Code|dyskusja typu jednostki}}, {{Code|dyskusja typu jednostki 1}}, {{Code|dyskusja typ jednostki 2}}, {{Code|dyskusja typ jednostki 3}},..., {{Code|dyskusja typ jednostki i}} - czy dany typ jednostki ma przedstawiać, jeśli niepusta, przestrzeń dyskusji dla pozycji bazowej, numerkowej i ogólnej. Parametry ramki tablicy transportu dziecka: * Parametry dziecka są takie same jak rodzica dla funkcji pudełkowej plus tu wymienione, * {{Code|numer jednostki}} - jak parametr {{Code|i}} nie został ustawiony, to wtedy liczy się ta zmienna. Przykłady: <syntaxhighlight lang="mediawiki"> {{Nazwa szablonu|nazwa przestrzeni nazw=Wikibooks|nazwa przestrzeni nazw 2=Szablon|nazwa przestrzeni nazw i=Moduł}} </syntaxhighlight> W dziecku powiedzmy jest wywołanie, i szukamy nazwy przestrzeni nazw o numerze dwa, która nie została podana, ale istnieje za to jej wersji ogólna {{Code|nazwa przestrzeni nazw i}} i domyślna {{Code|nazwa przestrzeni nazw}}: <syntaxhighlight lang="mediawiki"> {{#invoke:Pudełko|Nazwa przestrzeni nazw|numer jednostki=1}} </syntaxhighlight> Na podstawie powyższego przykładu otrzymamy wynik o schemacie, nie wyniku, bo tam nie ma zmiennej {{Code|nazwa przestrzeni nazw 1}}, ale jest {{Code|nazwa przestrzeni nazw i}}: <syntaxhighlight lang="mediawiki"> <!-- Ale nie "nazwa przestrzeni nazw", bo jej nie ma, ale za to istnieje "nazwa przestrzeni nazw i"; --> <!-- nazwa przestrzeni nazw 2=nazwa przestrzeni nazw i=Moduł; --> <!-- Czyli wynik: --> Moduł <!-- Widzimy, że wygenerowała się nazwa przestrzeni nazw, którą jest przestrzeń programowa, którą również jest "Szablon"; --> </syntaxhighlight> Nie jest brana w tym powyższym przykładzie zmienna {{Code|nazwa przestrzeni nazw}}, bo jej nie ma, ale za to jest {{Code|nazwa przestrzeni nazw i}}, bo ona występuje jako parametr domyślny ogólny dla parametrów numerkowych. Przykłady w wikikodzie: * {{Code|{{m|Pudełko|Nazwa przestrzeni nazw|numer jednostki{{=}}2}}}} → {{Tt|{{#invoke:Pudełko|Nazwa przestrzeni nazw|numer jednostki=2}}}} * {{Code|{{m|Pudełko|Nazwa przestrzeni nazw|Szablon|nazwa przestrzeni nazw i{{=}}Moja przestrzeń|numer jednostki{{=}}2}}}} → {{Tt|{{#invoke:Pudełko|Nazwa przestrzeni nazw|Szablon|nazwa przestrzeni nazw i=Moja przestrzeń|numer jednostki=2}}}} * {{Code|{{m|Pudełko|Nazwa przestrzeni nazw|nazwa przestrzeni nazw 2{{=}}Szablon|numer jednostki{{=}}2}}}} → {{Tt|{{#invoke:Pudełko|Nazwa przestrzeni nazw|nazwa przestrzeni nazw 2=Szablon|numer jednostki=2}}}} * {{Code|{{m|Pudełko|Nazwa przestrzeni nazw|nazwa przestrzeni nazw 2{{=}}Szablon|numer jednostki{{=}}2}}}} → {{Tt|{{#invoke:Pudełko|Nazwa przestrzeni nazw|nazwa przestrzeni nazw i=Szablon|numer jednostki=2}}}} * {{Code|{{m|Pudełko|Nazwa przestrzeni nazw|nazwa przestrzeni nazw{{=}}Szablon|numer jednostki{{=}}2}}}} → {{Tt|{{#invoke:Pudełko|Nazwa przestrzeni nazw|nazwa przestrzeni nazw=Szablon|numer jednostki=2}}}} Powyżej dla przykładu podano parametry nie w rodzicu w szablonie, tylko w dziecku, jeśli chodzi o parametry nazw przestrzeni nazw, ale ich się za to nie powinno podawać w tych ramach, tylko w szablonach, w których wywoływane są te ramki pudełek {{Code|{{m|Pudełko}}}}, ale tak tutaj tak zrobiono by było najłatwiej sprawdzić działanie tego typu funkcji. Analogicznie możemy podawać parametry typu jednostki, np.: wywołaniu modułowym {{Code|{{m|Pudełko|Nazwa przestrzeni nazw|typ jednostki 2{{=}}strona szablonu|numer jednostki{{=}}2}}}}, ale o tym więcej w rozdziałach {{Code|{{sr|#p["Typ jednostki"](frame,i)|p=Pudełko}}}} w „{{sr|#Funkcje typu jednostki|p=Pudełko}}”, on definiuje przestrzenie przedmiotowe, ale można użyć parametru dyskusji typu jednostki z wartością niepustą, wtedy wyświetli się nazwa przestrzeni nazw dyskusji. Typ jednostki nie ma takiej samej wartości dla przestrzeni przedmiotowej, co dyskusji. Również parametry typu jednostki nie powinno się podawać w dziecku w ramce, tylko w rodzicu w szablonie jako parametry, w którym ta ramka jest wywoływana, ale tutaj podano jedynie dla przykładu, jak najłatwiej sprawdzić działanie tych parametrów tej funkcji. Najpierw w funkcji nagłówku brane są parametry nazw przestrzeni nazw, a jeżeli ich nie ma, to parametry typu jednostki, a jeżeli nie ma, to generowane są nazwy na podstawie aktualnego modułu. === {{Code|p["Nazwa przedmiotowej przestrzeni nazw"](frame,...)}} === Funkcja pisze przedmiotową nazwę przestrzeni nazw jakikolwiek nazwy przestrzeni nazw (tzn. nazwę przedmiotową nazwy przestrzenie nazw, czyli nie dyskusji, zamieniana jest na nią samą, czyli identyfikator przestrzeni się nie zmienia, a dyskusji, nie przedmiotową, przekształca się na przedmiotową jej odpowiadającą, czyli w tym przypadku identyfikator przestrzeni zmniejsza się o numer mniej), według podanej w zmiennej {{Code|nazwa przestrzeni nazw}} dla pozycja bazowej w podanych parametrach szablonu rodzicu ramki dziecka, lub dla innej pozycji należy parametr podawać w formie {{Code|nazwa przestrzeni nazw 1}}, {{Code|nazwa przestrzeni nazw 2}}, {{Code|nazwa przestrzeni nazw 3}},..., lub te parametry można podać w postaci ogólnej {{Code|nazwa przestrzeni nazw i}}. Parametry podaje się w parametrach rodzica wywołania tej funkcji {{Code|{{m|Pudełko|Nazwa przedmiotowej przestrzeni nazw}}}} (ale ich nie trzeba podawać w dziecku, ale można) i w parametrach dziecka, jeśli chodzi o zmienną {{Code|numer jednostki}}, czyli np.: {{Code|{{m|Pudełko|Nazwa przedmiotowej przestrzeni nazw|numer jednostki{{=}}<jakaś liczba całkowita dodatnia>}}}}. Te parametry przestrzenne zamiast w rodzicu w szablonie można podać w ramce dziecka, wtedy parametry dziecka mają pierwszeństwo. Parametry przestrzenne mogą mogą być podane w postaci przestrzeni przedmiotowej lub dyskusji, ale ta funkcja zawsze ją zamienia na przedmiotową. Przestrzeń nazw z parametrów nazw przestrzennych może odpowiadać wartości przestrzeni głównej, to wtedy odpowiednia przestrzeń nazw z parametru nazwy jednostki się nie liczy w tej funkcji, aby się liczyła należy użyć funkcji {{Code|{{sr|#p["Nazwa przedmiotowej przestrzeni nazw 2"](frame,...)|p=Pudełko}}}}. Definicja skrótowa funkcji: <syntaxhighlight lang="lua"> p["Nazwa przedmiotowej przestrzeni nazw"]=function(frame,czy_uwzglednic_alternatywna_nazwe,i)...end; </syntaxhighlight> Wtedy ciało funkcji tej, czyli jego definicja w środku, jest: <syntaxhighlight lang="lua"> -- Jest liczony numer parametru nazwy przestrzeni nazw, domyslnie chodzi tu o numer bazowy parametrów przestrzennych; local numer_jednostki=i or frame.args["numer jednostki"]; local liczba_numer_jednostki=((numer_jednostki)and(tonumber(numer_jednostki))or 0); local pudelko_pomocne_modul=require("Module:Pudełko/Pomocne"); -- Liczy nazwę przestrzeni nazw przedmiotową na podstawie podanych parametrów; return pudelko_pomocne_modul.Nazwa_przestrzeni_nazw(frame,1, czy_uwzglednic_alternatywna_nazwe,liczba_numer_jednostki); </syntaxhighlight> Parametry funkcji: * {{Code|frame}} - tablica ramki tablicy transportu, * {{Code|czy_uwzglednic_alternatywna_nazwe}} - czy ma uwzględniać nazwę przestrzeni nazw domyślną szablonu, dostępne wartości: {{Code|false}}, w której nazwa domyślna nie jest uwzględniana wtedy, oraz {{Code|nil}} i {{Code|true}}, które oznaczają to samo, w tym jeżeli ona jest uwzględniana, wtedy jest brany parametr pierwszy dziecka, który musi istnieć przy takiej wartości tego parametru, tzn. {{Code|{{m|Pudełko|Nazwa przedmiotowej przestrzeni nazw|Dyskusja szablonu}}}} - ta nazwa domyślna zostanie zamieniona na przedmiotową, a jak ona by była przedmiotowa, to żadnej zamiany, by nie było, a jeśli nazwa uzyskana z nazwy przestrzeni nazw z parametrów przestrzennych jest w takim przypadku błędna, to w takim razie brany jest ten parametr, a jeżeli ta nazwa domyślna jest błędna, czyli {{Code|{{m|Pudełko|Nazwa przedmiotowej przestrzeni nazw|Moja przestrzeń}}}}, wtedy funkcja zwraca stan błędu {{Code|(błąd)}}. * {{Code|i}} - numer zmiennej nazwy przestrzeni nazw. Funkcja wykorzystuje {{Code|{{sr|#p.Nazwa_przestrzeni_nazw(frame,...)|p=Pudełko/Pomocne}}}} do wyznaczania ogólnego nazwy przestrzeni nazw dla pozycji bazowej i numerkowej, tzn. dla pozycji: jeden, dwa, trzy,..., itd, i ich ogólnej. Parametr ramki tablicy transportu rodzica szablonu: * {{Code|nazwa przestrzeni nazw}}, {{Code|nazwa przestrzeni nazw 1}}, {{Code|nazwa przestrzeni nazw 2}}, {{Code|nazwa przestrzeni nazw 3}},..., {{Code|nazwa przestrzeni nazw i}} - nazwy przestrzeni nazw dla pozycji bazowej oraz zwykłej i ogólnej numerkowej, * {{Code|typ jednostki}}, {{Code|typ jednostki 1}}, {{Code|typ jednostki 2}}, {{Code|typ jednostki 3}},..., {{Code|typ jednostki i}} - typy jednostek, którym odpowiadają pewne przestrzenie przedmiotowe, dla pozycji bazowej, numerkowej i ogólnej. Parametry ramki tablicy transportu dziecka: * Parametry dziecka są takie same jak rodzica dla funkcji pudełkowej plus tu wymienione, * {{Code|numer jednostki}} - jak parametr {{Code|i}} nie został ustawiony, to wtedy liczy się ta zmienna. Przykłady: <syntaxhighlight lang="mediawiki"> {{Nazwa szablonu|nazwa przestrzeni nazw=Dyskusja Wikibooks|nazwa przestrzeni nazw 2=Dyskusja szablonu|nazwa przestrzeni nazw i=Dyskusja modułu}} </syntaxhighlight> W dziecku powiedzmy jest wywołanie, i szukamy nazwy przestrzeni nazw o numerze dwa, która nie została podana, ale istnieje za to jej wersji ogólna {{Code|nazwa przestrzeni nazw i}} i domyślna {{Code|nazwa przestrzeni nazw}}: <syntaxhighlight lang="mediawiki"> {{#invoke:Pudełko|Nazwa przedmiotowej przestrzeni nazw|numer jednostki=1}} </syntaxhighlight> Na podstawie powyższego przykładu otrzymamy wynik o schemacie, nie wyniku, bo tam nie ma zmiennej {{Code|nazwa przestrzeni nazw 1}}, ale jest {{Code|nazwa przestrzeni nazw i}}: <syntaxhighlight lang="mediawiki"> <!-- Ale nie "nazwa przestrzeni nazw", bo jej nie ma, ale za to istnieje "nazwa przestrzeni nazw i"; --> <!-- nazwa przestrzeni nazw 2=nazwa przestrzeni nazw i=Dyskusja modułu; --> <!-- Czyli wynik: --> Moduł <!-- Widzimy, że wygenerowała się nazwa przestrzeni nazw, którą jest przestrzeń przedmiotowa programowa przestrzeni dyskusji "Dyskusja modułu", którą również jest "Szablon" jego przestrzeni dyskusji "Dyskusja szablonu", a dla ich przestrzeni przedmiotowej, zamiast dyskusji, to samo przekształca się na to samo; --> </syntaxhighlight> Nie jest brana w tym powyższym przykładzie zmienna {{Code|nazwa przestrzeni nazw}}, bo jej nie ma, ale za to jest {{Code|nazwa przestrzeni nazw i}}, bo ona występuje jako parametr domyślny ogólny dla parametrów numerkowych. Przykłady w wikikodzie: * {{Code|{{m|Pudełko|Nazwa przedmiotowej przestrzeni nazw|numer jednostki{{=}}2}}}} → {{Tt|{{#invoke:Pudełko|Nazwa przedmiotowej przestrzeni nazw|numer jednostki=2}}}} * {{Code|{{m|Pudełko|Nazwa przedmiotowej przestrzeni nazw|Dyskusja szablonu|nazwa przestrzeni nazw i{{=}}Moja przestrzeń|numer jednostki{{=}}2}}}} → {{Tt|{{#invoke:Pudełko|Nazwa przedmiotowej przestrzeni nazw|Dyskusja szablonu|nazwa przestrzeni nazw i=Moja przestrzeń|numer jednostki=2}}}} * {{Code|{{m|Pudełko|Nazwa przedmiotowej przestrzeni nazw|nazwa przestrzeni nazw 2{{=}}Dyskusja szablonu|numer jednostki{{=}}2}}}} → {{Tt|{{#invoke:Pudełko|Nazwa przedmiotowej przestrzeni nazw|nazwa przestrzeni nazw 2=Dyskusja szablonu|numer jednostki=2}}}} * {{Code|{{m|Pudełko|Nazwa przedmiotowej przestrzeni nazw|nazwa przestrzeni nazw 2{{=}}Dyskusja szablonu|numer jednostki{{=}}2}}}} → {{Tt|{{#invoke:Pudełko|Nazwa przedmiotowej przestrzeni nazw|nazwa przestrzeni nazw i=Dyskusja szablonu|numer jednostki=2}}}} * {{Code|{{m|Pudełko|Nazwa przedmiotowej przestrzeni nazw|nazwa przestrzeni nazw{{=}}Dyskusja szablonu|numer jednostki{{=}}2}}}} → {{Tt|{{#invoke:Pudełko|Nazwa przedmiotowej przestrzeni nazw|nazwa przestrzeni nazw=Dyskusja szablonu|numer jednostki=2}}}} Powyżej dla przykładu podano parametry nie w rodzicu w szablonie, tylko w dziecku, jeśli chodzi o parametry nazw przestrzeni nazw, ale ich się za to nie powinno podawać w tych ramach, tylko w szablonach, w których wywoływane są te ramki pudełek {{Code|{{m|Pudełko}}}}, ale tak tutaj tak zrobiono by było najłatwiej sprawdzić działanie tego typu funkcji. Analogicznie możemy podawać parametry typu jednostki, np.: wywołaniu modułowym {{Code|{{m|Pudełko|Nazwa przedmiotowej przestrzeni nazw|typ jednostki 2{{=}}strona szablonu|numer jednostki{{=}}2}}}}, ale o tym więcej w rozdziałach {{Code|{{sr|#p["Przedmiotowy typ jednostki"](frame,i)|p=Pudełko}}}} w „{{sr|#Funkcje typu jednostki|p=Pudełko}}”, ale wtedy ta sama nazwa przestrzeni nazw reprezentowana przez {{Parametr|typ jednostki 2|strona szablonu}}, jest zamieniana na to samo, lepiej jest tutaj używać parametrów przestrzennych nazw niż typu jednostki. Typ jednostki nie ma takiej samej wartości dla przestrzeni przedmiotowej, co dyskusji. Tutaj parametr dyskusji typu jednostki bazowy i numerkowy ogólny, czy szczegółowy, nie gra roli, bo nawet, gdy wygenerujemy nazwę przestrzeni dyskusji za pomoca tego parametru, to i tak otrzymamy na samym końcu jego nazwę przedmiotową. Również parametry typu jednostki nie powinno się podawać w dziecku w ramce, tylko w rodzicu w szablonie jako parametry, w którym ta ramka jest wywoływana, ale tutaj podano jedynie dla przykładu, jak najłatwiej sprawdzić działanie tych parametrów tej funkcji. Najpierw w funkcji nagłówku brane są parametry nazw przestrzeni nazw, a jeżeli ich nie ma, to parametry typu jednostki, a jeżeli nie ma, to generowane są nazwy na podstawie aktualnego modułu. === {{Code|p["Nazwa przestrzeni nazw dyskusji"](frame,...)}} === Funkcja pisze nazwę przestrzeni nazw dyskusji jakikolwiek nazwy przestrzeni nazw (tzn. nazwę przedmiotową nazwy przestrzenie nazw, czyli nie dyskusji, zamieniana jest na dyskusji, czyli identyfikator przestrzeni się zmienia jeden wyżej, a dyskusji, nie przedmiotową, przekształca się na tą samą), według podanej w zmiennej {{Code|nazwa przestrzeni nazw}} dla pozycja bazowej w podanych parametrach szablonu rodzicu ramki dziecka, lub dla innej pozycji należy parametr podawać w formie {{Code|nazwa przestrzeni nazw 1}}, {{Code|nazwa przestrzeni nazw 2}}, {{Code|nazwa przestrzeni nazw 3}},..., lub te parametry można podać w postaci ogólnej {{Code|nazwa przestrzeni nazw i}}. Parametry podaje się w parametrach rodzica wywołania tej funkcji {{Code|{{m|Pudełko|Nazwa przestrzeni nazw dyskusji}}}} (ale ich nie trzeba podawać w dziecku, ale można) i w parametrach dziecka, jeśli chodzi o zmienną {{Code|numer jednostki}}, czyli np.: {{Code|{{m|Pudełko|Nazwa przestrzeni nazw dyskusji|numer jednostki{{=}}<jakaś liczba całkowita dodatnia>}}}}. Te parametry przestrzenne zamiast w rodzicu w szablonie można podać w ramce dziecka, wtedy parametry dziecka mają pierwszeństwo. Parametry przestrzenne mogą mogą być podane w postaci przestrzeni przedmiotowej lub dyskusji, ale ta funkcja zawsze ją zamienia na dyskusji. Przestrzeń nazw z parametrów nazw przestrzennych może odpowiadać wartości przestrzeni głównej, to wtedy odpowiednia przestrzeń nazw z parametru nazwy jednostki się nie liczy w tej funkcji, aby się liczyła należy użyć funkcji {{Code|{{sr|#p["Nazwa przestrzeni nazw dyskusji 2"](frame,...)|p=Pudełko}}}}. Definicja skrótowa funkcji: <syntaxhighlight lang="lua"> p["Nazwa przestrzeni nazw dyskusji"]=function(frame,czy_uwzglednic_alternatywna_nazwe,i)...end; </syntaxhighlight> Wtedy ciało funkcji tej, czyli jego definicja w środku, jest: <syntaxhighlight lang="lua"> -- Jest liczony numer parametru nazwy przestrzeni nazw, domyslnie chodzi tu o numer bazowy parametrów przestrzennych; local numer_jednostki=i or frame.args["numer jednostki"]; local liczba_numer_jednostki=((numer_jednostki)and(tonumber(numer_jednostki))or 0); local pudelko_pomocne_modul=require("Module:Pudełko/Pomocne"); -- Liczy nazwę przestrzeni nazw dyskusji na podstawie podanych parametrów; return pudelko_pomocne_modul.Nazwa_przestrzeni_nazw(frame,2, czy_uwzglednic_alternatywna_nazwe,liczba_numer_jednostki); </syntaxhighlight> Parametry funkcji: * {{Code|frame}} - tablica ramki tablicy transportu, * {{Code|czy_uwzglednic_alternatywna_nazwe}} - czy ma uwzględniać nazwę przestrzeni nazw domyślną szablonu, dostępne wartości: {{Code|false}}, w której nazwa domyślna nie jest uwzględniana wtedy, oraz {{Code|nil}} i {{Code|true}}, które oznaczają to samo, w tym jeżeli ona jest uwzględniana, wtedy jest brany parametr pierwszy dziecka, który musi istnieć przy takiej wartości tego parametru, tzn. {{Code|{{m|Pudełko|Nazwa przestrzeni nazw dyskusji|Szablon}}}} - ta nazwa domyślna zostanie przekształcona na dyskusji, a jeżeli ona by była dyskusji, to nie byłoby żadnego przekształcenia, a jeśli nazwa uzyskana nazwy przestrzeni nazw z parametrów przestrzennych jest w takim przypadku błędna, to w takim razie brany jest ten parametr, a jeżeli nazwa domyślna jest błędna, czyli {{Code|{{m|Pudełko|Nazwa przestrzeni nazw dyskusji|Moja przestrzeń}}}}, wtedy funkcja zwraca stan błędu {{Code|(błąd)}}. * {{Code|i}} - numer zmiennej nazwy przestrzeni nazw. Funkcja wykorzystuje {{Code|{{sr|#p.Nazwa_przestrzeni_nazw(frame,...)|p=Pudełko/Pomocne}}}} do wyznaczania ogólnego nazwy przestrzeni nazw dla pozycji bazowej i numerkowej, tzn. dla pozycji: jeden, dwa, trzy,..., itd, i ich ogólnej. Parametr ramki tablicy transportu rodzica szablonu: * {{Code|nazwa przestrzeni nazw}}, {{Code|nazwa przestrzeni nazw 1}}, {{Code|nazwa przestrzeni nazw 2}}, {{Code|nazwa przestrzeni nazw 3}},..., {{Code|nazwa przestrzeni nazw i}} - nazwy przestrzeni nazw dla pozycji bazowej oraz zwykłej i ogólnej numerkowej, * {{Code|typ jednostki}}, {{Code|typ jednostki 1}}, {{Code|typ jednostki 2}}, {{Code|typ jednostki 3}},..., {{Code|typ jednostki i}} - typy jednostek, którym odpowiadają pewne przestrzenie przedmiotowe, dla pozycji bazowej, numerkowej i ogólnej. Parametry ramki tablicy transportu dziecka: * Parametry dziecka są takie same jak rodzica dla funkcji pudełkowej plus tu wymienione, * {{Code|numer jednostki}} - jak parametr {{Code|i}} nie został ustawiony, to wtedy liczy się ta zmienna. Przykłady: <syntaxhighlight lang="mediawiki"> {{Nazwa szablonu|nazwa przestrzeni nazw=Wikibooks|nazwa przestrzeni nazw 2=Szablon|nazwa przestrzeni nazw i=Moduł}} </syntaxhighlight> W dziecku powiedzmy jest wywołanie, i szukamy nazwy przestrzeni nazw o numerze dwa, która nie została podana, ale istnieje za to jej wersji ogólna {{Code|nazwa przestrzeni nazw i}} i domyślna {{Code|nazwa przestrzeni nazw}}: <syntaxhighlight lang="mediawiki"> {{#invoke:Pudełko|Nazwa przestrzeni nazw dyskusji|numer jednostki=1}} </syntaxhighlight> Na podstawie powyższego przykładu otrzymamy wynik o schemacie, nie wyniku, bo tam nie ma zmiennej {{Code|nazwa przestrzeni nazw 1}}, ale jest {{Code|nazwa przestrzeni nazw i}}: <syntaxhighlight lang="mediawiki"> <!-- Ale nie "nazwa przestrzeni nazw", bo jej nie ma, ale za to istnieje "nazwa przestrzeni nazw i"; --> <!-- nazwa przestrzeni nazw 2=nazwa przestrzeni nazw i=Moduł; --> <!-- Czyli wynik: --> Dyskusja modułu <!-- Widzimy, że wygenerowała się nazwa przestrzeni nazw, którą jest przestrzeń dyskusji przestrzeni programowej przestrzeni przedmiotowej "Moduł", którą również jest "Szablon" jego przestrzeni dyskusji "Dyskusja szablonu", a dla ich przestrzeni przedmiotowej, zamiast dyskusji, to przekształca się na dyskusji jej odpowiadającą; --> </syntaxhighlight> Nie jest brana w tym powyższym przykładzie zmienna {{Code|nazwa przestrzeni nazw}}, bo jej nie ma, ale za to jest {{Code|nazwa przestrzeni nazw i}}, bo ona występuje jako parametr domyślny ogólny dla parametrów numerkowych. Przykłady w wikikodzie: * {{Code|{{m|Pudełko|Nazwa przestrzeni nazw dyskusji|numer jednostki{{=}}2}}}} → {{Tt|{{#invoke:Pudełko|Nazwa przestrzeni nazw dyskusji|numer jednostki=2}}}} * {{Code|{{m|Pudełko|Nazwa przestrzeni nazw dyskusji|Szablon|nazwa przestrzeni nazw i{{=}}Moja przestrzeń|numer jednostki{{=}}2}}}} → {{Tt|{{#invoke:Pudełko|Nazwa przestrzeni nazw dyskusji|Szablon|nazwa przestrzeni nazw i=Moja przestrzeń|numer jednostki=2}}}} * {{Code|{{m|Pudełko|Nazwa przestrzeni nazw dyskusji|nazwa przestrzeni nazw 2{{=}}Szablon|numer jednostki{{=}}2}}}} → {{Tt|{{#invoke:Pudełko|Nazwa przestrzeni nazw dyskusji|nazwa przestrzeni nazw 2=Szablon|numer jednostki=2}}}} * {{Code|{{m|Pudełko|Nazwa przestrzeni nazw dyskusji|nazwa przestrzeni nazw 2{{=}}Szablon|numer jednostki{{=}}2}}}} → {{Tt|{{#invoke:Pudełko|Nazwa przestrzeni nazw dyskusji|nazwa przestrzeni nazw i=Szablon|numer jednostki=2}}}} * {{Code|{{m|Pudełko|Nazwa przestrzeni nazw dyskusji|nazwa przestrzeni nazw{{=}}Szablon|numer jednostki{{=}}2}}}} → {{Tt|{{#invoke:Pudełko|Nazwa przestrzeni nazw dyskusji|nazwa przestrzeni nazw=Szablon|numer jednostki=2}}}} Powyżej dla przykładu podano parametry nie w rodzicu w szablonie, tylko w dziecku, jeśli chodzi o parametry nazw przestrzeni nazw, ale ich się za to nie powinno podawać w tych ramach, tylko w szablonach, w których wywoływane są te ramki pudełek {{Code|{{m|Pudełko}}}}, ale tak tutaj tak zrobiono by było najłatwiej sprawdzić działanie tego typu funkcji. Analogicznie możemy podawać parametry typu jednostki, np.: wywołaniu modułowym {{Code|{{m|Pudełko|Nazwa przestrzeni nazw dyskusji|typ jednostki 2{{=}}strona szablonu|numer jednostki{{=}}2}}}}, ale o tym więcej w rozdziałach {{Code|{{sr|#p["Dyskusyjny typ jednostki"](frame,i)|p=Pudełko}}}} w „{{sr|#Funkcje typu jednostki|p=Pudełko}}”, ale wtedy nazwa przestrzeni nazw reprezentowana przez {{Parametr|typ jednostki 2|strona szablonu}}, jest zamieniana na nazwę przestrzeni nazw dyskusji. Parametr dyskusji typu jednostki bazowy lub dla danego numerka ogólny, czy szczegółowy, nie gra roli. Typ jednostki nie ma takiej samej wartości dla przestrzeni przedmiotowej, co dyskusji. Również parametry typu jednostki nie powinno się podawać w dziecku w ramce, tylko w rodzicu w szablonie jako parametry, w którym ta ramka jest wywoływana, ale tutaj podano jedynie dla przykładu, jak najłatwiej sprawdzić działanie tych parametrów tej funkcji. Najpierw w funkcji nagłówku brane są parametry nazw przestrzeni nazw, a jeżeli ich nie ma, to parametry typu jednostki, a jeżeli nie ma, to generowane są nazwy na podstawie aktualnego modułu. == Funkcje nazw przestrzeni nazw drugiej wersji == === {{Code|p["Nazwa przestrzeni nazw 2"](frame,...)}} === Funkcja pisze nazwę przestrzeni nazw, niezależnie, czy to jest przedmiotowa, czy dyskusji, według, i nie zawsze tylko, podanej w zmiennej {{Code|nazwa przestrzeni nazw}} dla pozycja bazowej w podanych parametrach szablonu rodzicu ramki dziecka, lub dla innej pozycji należy parametr podawać w formie {{Code|nazwa przestrzeni nazw 1}}, {{Code|nazwa przestrzeni nazw 2}}, {{Code|nazwa przestrzeni nazw 3}},..., lub te parametry można podać w postaci ogólnej {{Code|nazwa przestrzeni nazw i}}. W tej funkcji trzeba też podawać parametry nazwy jednostek {{Code|nazwa jednostki}}, {{Code|nazwa jednostki 1}}, {{Code|nazwa jednostki 2}}, {{Code|nazwa jednostki 3}},... Parametry podaje się w parametrach rodzica wywołania tej funkcji {{Code|{{m|Pudełko|Nazwa przestrzeni nazw 2}}}} (ale ich nie trzeba podawać w dziecku, ale można) i w parametrach dziecka, jeśli chodzi o zmienną {{Code|numer jednostki}}, czyli np.: {{Code|{{m|Pudełko|Nazwa przestrzeni nazw 2|numer jednostki{{=}}<jakaś liczba całkowita dodatnia>}}}}. Te parametry przestrzenne zamiast w rodzicu w szablonie można podać w ramce dziecka, wtedy parametry dziecka mają pierwszeństwo. Przestrzeń nazw z parametrów nazw przestrzennych może odpowiadać wartości przestrzeni głównej, to wtedy odpowiednia przestrzeń nazw z parametru nazwy jednostki się liczy w tej funkcji, wtedy jest liczona nazwa przestrzeni nazw z tego parametru. Gdy parametry przestrzenne lub typ jednostki w drugim podejściu nie wskazują na przestrzeń główną, to wtedy działanie tej funkcji jest podobne do {{Code|{{sr|#p["Nazwa przestrzeni nazw"](frame,...)|p=Pudełko}}}}. Definicja skrótowa funkcji: <syntaxhighlight lang="lua"> p["Nazwa przestrzeni nazw 2"]=function(frame,czy_uwzglednic_alternatywna_nazwe,i)...end; </syntaxhighlight> Wtedy ciało funkcji tej, czyli jego definicja w środku, jest: <syntaxhighlight lang="lua"> local pudelko_pomocne_modul=require("Module:Pudełko/Pomocne"); -- Liczy nazwę przestrzeni nazw, jeżeli z parametrów przestrzennych przestrzeń wskazuje na główną, to wtedy jest liczona przestrzeń nazw z nazwy jednostki; return pudelko_pomocne_modul.Nazwa_przestrzeni_nazw_2(frame,czy_uwzglednic_alternatywna_nazwe,i) </syntaxhighlight> Parametry funkcji: * {{Code|frame}} - tablica ramki tablicy transportu, * {{Code|czy_uwzglednic_alternatywna_nazwe}} - czy ma uwzględniać nazwę przestrzeni nazw domyślną szablonu, dostępne wartości: {{Code|false}}, w której nazwa domyślna nie jest uwzględniana wtedy, oraz {{Code|nil}} i {{Code|true}}, które oznaczają to samo, w tym jeżeli ona jest uwzględniana, wtedy jest brany parametr pierwszy dziecka, który musi istnieć przy takiej wartości tego parametru, tzn. {{Code|{{m|Pudełko|Nazwa przestrzeni nazw 2|Szablon}}}}, a jeśli nazwa uzyskana nazwy przestrzeni nazw jest w takim przypadku błędna, to brany jest ten element, a jeżeli nazwa domyślna jest błędna, czyli {{Code|{{m|Pudełko|Nazwa przestrzeni nazw 2|Moja przestrzeń}}}}, wtedy funkcja zwraca stan błędu {{Code|(błąd)}}. * {{Code|i}} - numer zmiennej nazwy przestrzeni nazw. Funkcja wykorzystuje {{Code|{{sr|#p.Nazwa_przestrzeni_nazw_2(frame,...)|p=Pudełko/Pomocne}}}} do wyznaczania ogólnego nazwy przestrzeni nazw dla pozycji bazowej i numerkowej, tzn. dla pozycji: jeden, dwa, trzy,..., itd, i ich ogólnej. Parametr ramki tablicy transportu rodzica szablonu: * {{Code|nazwa przestrzeni nazw}}, {{Code|nazwa przestrzeni nazw 1}}, {{Code|nazwa przestrzeni nazw 2}}, {{Code|nazwa przestrzeni nazw 3}},..., {{Code|nazwa przestrzeni nazw i}} - nazwy przestrzeni nazw dla pozycji bazowej oraz zwykłej i ogólnej numerkowej, * {{Code|nazwa jednostki}}, {{Code|nazwa jednostki 1}}, {{Code|nazwa jednostki 2}}, {{Code|nazwa jednostki 3}},... - nazwy jednostek dla pozycji bazowej i numerkowej, * {{Code|typ jednostki}}, {{Code|typ jednostki 1}}, {{Code|typ jednostki 2}}, {{Code|typ jednostki 3}},..., {{Code|typ jednostki i}} - typy jednostek, którym odpowiadają pewne przestrzenie przedmiotowe, dla pozycji bazowej, numerkowej i ogólnej, ** {{Code|dyskusja typu jednostki}}, {{Code|dyskusja typu jednostki 1}}, {{Code|dyskusja typ jednostki 2}}, {{Code|dyskusja typ jednostki 3}},..., {{Code|dyskusja typ jednostki i}} - czy dany typ jednostki ma przedstawiać, jeśli niepusta, przestrzeń dyskusji dla pozycji bazowej, numerkowej i ogólnej. Parametry ramki tablicy transportu dziecka: * Parametry dziecka są takie same jak rodzica dla funkcji pudełkowej plus tu wymienione, * {{Code|numer jednostki}} - jak parametr {{Code|i}} nie został ustawiony, to wtedy liczy się ta zmienna. Przykłady: <syntaxhighlight lang="mediawiki"> {{Nazwa szablonu|nazwa przestrzeni nazw=Wikibooks|nazwa przestrzeni nazw 1=Szablon|nazwa przestrzeni nazw i=|nazwa jednostki 2=Wikibooks:Strona}} </syntaxhighlight> W dziecku powiedzmy jest wywołanie, i szukamy nazwy przestrzeni nazw o numerze dwa, która została podana, ale istnieje za to jej wersji ogólna {{Code|nazwa przestrzeni nazw i}} i domyślna {{Code|nazwa przestrzeni nazw}}, ale wtedy dla tego numerkowego liczy się to ogólne z {{Code| i}}, a ponieważ ta nazwa jest pusta, więc będziemy liczyli nazwę przestrzeni nazw z {{Code|nazwa jednostki 2}}: <syntaxhighlight lang="mediawiki"> {{#invoke:Pudełko|Nazwa przestrzeni nazw 2|numer jednostki=2}} </syntaxhighlight> Na podstawie powyższego przykładu otrzymamy wynik o schemacie, nie wyniku, bo tam nie ma zmiennej {{Code|nazwa przestrzeni nazw 1}}, ale jest {{Code|nazwa przestrzeni nazw i}}: <syntaxhighlight lang="mediawiki"> <!-- Ale nie "nazwa przestrzeni nazw 2", bo jej nie ma, ale za to istnieje "nazwa przestrzeni nazw i"; --> <!-- nazwa przestrzeni nazw 2=nazwa przestrzeni nazw i="", a nazwa jednostki 2="Wikibooks:Strona"; --> <!-- Czyli wynik: --> Wikibooks <!-- Widzimy, że wygenerowała się nazwa przestrzeni nazw, którą jest przestrzeń nieprogramowa, ale projektu, wychodząca z nazwy jednostek w tym przypadku z "nazwa jednostki 2"; --> </syntaxhighlight> Nie jest brana w tym powyższym przykładzie zmienna {{Code|nazwa przestrzeni nazw}}, bo jej nie ma, ale za to jest {{Code|nazwa przestrzeni nazw i}}, bo ona występuje jako parametr domyślny ogólny dla parametrów numerkowych. Tytaj jest używana jest zmienna {{Code|nazwa jednostki 2}} do wygenerowania ostatecznego wyniku, bo jak można zauważyć, parametry przestrzenne wskazują na przestrzeń główną, a nazwy jednostek już nie. Przykłady w wikikodzie: * {{Code|{{m|Pudełko|Nazwa przestrzeni nazw 2|numer jednostki{{=}}2}}}} → {{Tt|{{#invoke:Pudełko|Nazwa przestrzeni nazw 2|numer jednostki=2}}}} * {{Code|{{m|Pudełko|Nazwa przestrzeni nazw 2|Szablon|nazwa przestrzeni nazw i{{=}}Moja przestrzeń|numer jednostki{{=}}2}}}} → {{Tt|{{#invoke:Pudełko|Nazwa przestrzeni nazw 2|Szablon|nazwa przestrzeni nazw i=Moja przestrzeń|numer jednostki=2}}}} * {{Code|{{m|Pudełko|Nazwa przestrzeni nazw 2|nazwa przestrzeni nazw 2{{=}}|nazwa jednostki 2{{=}}Szablon:Strona|numer jednostki{{=}}2}}}} → {{Tt|{{#invoke:Pudełko|Nazwa przestrzeni nazw 2|nazwa przestrzeni nazw 2=|nazwa jednostki 2=Szablon:Strona|numer jednostki=2}}}} * {{Code|{{m|Pudełko|Nazwa przestrzeni nazw 2|nazwa przestrzeni nazw i{{=}}|nazwa jednostki 2{{=}}Szablon:Strona|numer jednostki{{=}}2}}}} → {{Tt|{{#invoke:Pudełko|Nazwa przestrzeni nazw 2|nazwa przestrzeni nazw i=|nazwa jednostki 2=Szablon:Strona|numer jednostki=2}}}} * {{Code|{{m|Pudełko|Nazwa przestrzeni nazw 2|Szablon|nazwa przestrzeni nazw{{=}}|nazwa jednostki 2{{=}}Wikibooks:Strona|numer jednostki{{=}}2}}}} → {{Tt|{{#invoke:Pudełko|Nazwa przestrzeni nazw 2|Szablon|nazwa przestrzeni nazw=|nazwa jednostki 2=Wikibooks:Strona|numer jednostki=2}}}} Powyżej dla przykładu podano parametry nie w rodzicu w szablonie, tylko w dziecku, jeśli chodzi o parametry nazw przestrzeni nazw i nazw jednostek, ale ich się za to nie powinno podawać w tych ramach, tylko w szablonach, w których wywoływane są te ramki pudełek {{Code|{{m|Pudełko}}}}, ale tak tutaj tak zrobiono by było najłatwiej sprawdzić działanie tego typu funkcji. Analogicznie możemy podawać parametry typu jednostki, np.: wywołaniu modułowym {{Code|{{m|Pudełko|Nazwa przestrzeni nazw 2|typ jednostki 2{{=}}Podręcznik|nazwa jednostki 2{{=}}Szablon:Strona|numer jednostki{{=}}2}}}} (ale wtedy jest brana przestrzeń nazw z nazwy jednostki), ale o tym więcej w rozdziałach {{Code|{{sr|#p["Typ jednostki 2"](frame,i)|p=Pudełko}}}} w „{{sr|#Funkcje typu jednostki|p=Pudełko}}”, on definiuje przestrzenie przedmiotowe, ale można użyć parametru dyskusji typu jednostki z wartością niepustą, wtedy wyświetli się nazwa przestrzeni nazw dyskusji. Jeżeli typ jednostki wskazuje na przestrzeń nazw główną, wtedy się liczą parametry nazw jednostek. Typ jednostki nie ma takiej samej wartości dla przestrzeni przedmiotowej, co dyskusji. Również parametry typu jednostki nie powinno się podawać w dziecku w ramce, tylko w rodzicu w szablonie jako parametry, w którym ta ramka jest wywoływana, ale tutaj podano jedynie dla przykładu, jak najłatwiej sprawdzić działanie tych parametrów tej funkcji. Najpierw w funkcji nagłówku brane są parametry nazw przestrzeni nazw, a jeżeli ich nie ma, to parametry typu jednostki, a jeżeli nie ma lub parametry przestrzenne wskazują na przestrzeń główną, i nie ma nazwy jednostki, to generowane są nazwy tej funkcji na podstawie aktualnej strony. === {{Code|p["Nazwa przedmiotowej przestrzeni nazw 2"](frame,...)}} === Funkcja pisze przedmiotową nazwę przestrzeni nazw jakikolwiek nazwy przestrzeni nazw (tzn. nazwę przedmiotową nazwy przestrzenie nazw, czyli nie dyskusji, zamieniana jest na nią samą, czyli identyfikator przestrzeni się nie zmienia, a dyskusji, nie przedmiotową, przekształca się na przedmiotową jej odpowiadającą, czyli w tym przypadku identyfikator przestrzeni zmniejsza się o numer mniej), według, i nie zawsze tylko, podanej w zmiennej {{Code|nazwa przestrzeni nazw}} dla pozycja bazowej w podanych parametrach szablonu rodzicu ramki dziecka, lub dla innej pozycji należy parametr podawać w formie {{Code|nazwa przestrzeni nazw 1}}, {{Code|nazwa przestrzeni nazw 2}}, {{Code|nazwa przestrzeni nazw 3}},..., lub te parametry można podać w postaci ogólnej {{Code|nazwa przestrzeni nazw i}}. W tej funkcji trzeba też podawać parametry nazwy jednostek {{Code|nazwa jednostki}}, {{Code|nazwa jednostki 1}}, {{Code|nazwa jednostki 2}}, {{Code|nazwa jednostki 3}},... Parametry podaje się w parametrach rodzica wywołania tej funkcji {{Code|{{m|Pudełko|Nazwa przedmiotowej przestrzeni nazw 2}}}} (ale ich nie trzeba podawać w dziecku, ale można) i w parametrach dziecka, jeśli chodzi o zmienną {{Code|numer jednostki}}, czyli np.: {{Code|{{m|Pudełko|Nazwa przedmiotowej przestrzeni nazw 2|numer jednostki{{=}}<jakaś liczba całkowita dodatnia>}}}}. Te parametry przestrzenne zamiast w rodzicu w szablonie można podać w ramce dziecka, wtedy parametry dziecka mają pierwszeństwo. Przestrzeń nazw z parametrów nazw przestrzennych po przekształceniu na przedmiotową może odpowiadać wartości przestrzeni głównej, to wtedy odpowiednia przestrzeń nazw z parametru nazwy jednostki się liczy w tej funkcji, wtedy jest liczona nazwa przestrzeni nazw z tego parametru. Gdy parametry przestrzenne lub typ jednostki w drugim podejściu nie wskazują na przestrzeń główną, to wtedy działanie tej funkcji jest podobne do {{Code|{{sr|#p["Nazwa przedmiotowej przestrzeni nazw"](frame,...)|p=Pudełko}}}}. Definicja skrótowa funkcji: <syntaxhighlight lang="lua"> p["Nazwa przedmiotowej przestrzeni nazw 2"]=function(frame,czy_uwzglednic_alternatywna_nazwe,i)...end; </syntaxhighlight> Wtedy ciało funkcji tej, czyli jego definicja w środku, jest: <syntaxhighlight lang="lua"> local pudelko_pomocne_modul=require("Module:Pudełko/Pomocne"); return pudelko_pomocne_modul.Nazwa_przestrzeni_nazw_przedmiotowa_dyskusji_2(frame,czy_uwzglednic_alternatywna_nazwe,i,"przedmiotowa"); </syntaxhighlight> Parametry funkcji: * {{Code|frame}} - tablica ramki tablicy transportu, * {{Code|czy_uwzglednic_alternatywna_nazwe}} - czy ma uwzględniać nazwę przestrzeni nazw domyślną szablonu, dostępne wartości: {{Code|false}}, w której nazwa domyślna nie jest uwzględniana wtedy, oraz {{Code|nil}} i {{Code|true}}, które oznaczają to samo, w tym jeżeli ona jest uwzględniana, wtedy jest brany parametr pierwszy dziecka, który musi istnieć przy takiej wartości tego parametru, tzn. {{Code|{{m|Pudełko|Nazwa przedmiotowej przestrzeni nazw 2|Szablon}}}}, nazwa domyślna zostanie zamieniona na przedmiotową, a jeżeli jest już taka, to żadnej zamiany nie ma, a jeśli nazwa uzyskana nazwy przestrzeni nazw jest w takim przypadku błędna, to brany jest ten element, a jeżeli nazwa domyślna jest błędna, czyli {{Code|{{m|Pudełko|Nazwa przedmiotowej przestrzeni nazw 2|Moja przestrzeń}}}}, wtedy funkcja zwraca stan błędu {{Code|(błąd)}}. * {{Code|i}} - numer zmiennej nazwy przestrzeni nazw. Funkcja wykorzystuje {{Code|{{sr|#p.Nazwa_przestrzeni_nazw_przedmiotowa_dyskusji_2(frame,...)|p=Pudełko/Pomocne}}}} do wyznaczania ogólnego nazwy przestrzeni nazw dla pozycji bazowej i numerkowej, tzn. dla pozycji: jeden, dwa, trzy,..., itd, i ich ogólnej. Parametr ramki tablicy transportu rodzica szablonu: * {{Code|nazwa przestrzeni nazw}}, {{Code|nazwa przestrzeni nazw 1}}, {{Code|nazwa przestrzeni nazw 2}}, {{Code|nazwa przestrzeni nazw 3}},..., {{Code|nazwa przestrzeni nazw i}} - nazwy przestrzeni nazw dla pozycji bazowej oraz zwykłej i ogólnej numerkowej, * {{Code|nazwa jednostki}}, {{Code|nazwa jednostki 1}}, {{Code|nazwa jednostki 2}}, {{Code|nazwa jednostki 3}},... - nazwy jednostek dla pozycji bazowej i numerkowej, * {{Code|typ jednostki}}, {{Code|typ jednostki 1}}, {{Code|typ jednostki 2}}, {{Code|typ jednostki 3}},..., {{Code|typ jednostki i}} - typy jednostek, którym odpowiadają pewne przestrzenie przedmiotowe, dla pozycji bazowej, numerkowej i ogólnej. Parametry ramki tablicy transportu dziecka: * Parametry dziecka są takie same jak rodzica dla funkcji pudełkowej plus tu wymienione, * {{Code|numer jednostki}} - jak parametr {{Code|i}} nie został ustawiony, to wtedy liczy się ta zmienna. Przykłady: <syntaxhighlight lang="mediawiki"> {{Nazwa szablonu|nazwa przestrzeni nazw=Wikibooks|nazwa przestrzeni nazw 1=Szablon|nazwa przestrzeni nazw i=|nazwa jednostki 2=Dyskusja Wikibooks:Strona}} </syntaxhighlight> W dziecku powiedzmy jest wywołanie, i szukamy nazwy przestrzeni nazw o numerze dwa, która została podana, ale istnieje za to jej wersji ogólna {{Code|nazwa przestrzeni nazw i}} i domyślna {{Code|nazwa przestrzeni nazw}}, ale wtedy dla tego numerkowego liczy się to ogólne z {{Code| i}}, a ponieważ ta nazwa jest pusta, więc będziemy liczyli nazwę przestrzeni nazw z {{Code|nazwa jednostki 2}}: <syntaxhighlight lang="mediawiki"> {{#invoke:Pudełko|Nazwa przedmiotowej przestrzeni nazw 2|numer jednostki=2}} </syntaxhighlight> Na podstawie powyższego przykładu otrzymamy wynik o schemacie, nie wyniku, bo tam nie ma zmiennej {{Code|nazwa przestrzeni nazw 1}}, ale jest {{Code|nazwa przestrzeni nazw i}}: <syntaxhighlight lang="mediawiki"> <!-- Ale nie "nazwa przestrzeni nazw 2", bo jej nie ma, ale za to istnieje "nazwa przestrzeni nazw i"; --> <!-- nazwa przestrzeni nazw 2=nazwa przestrzeni nazw i="", a nazwa jednostki 2="Dyskusja Wikibooks:Strona"; --> <!-- Czyli wynik: --> Wikibooks <!-- Widzimy, że wygenerowała się nazwa przestrzeni nazw, którą jest przestrzeń nieprogramowa, ale projektu, wychodząca z nazwy jednostek w tym przypadku z "nazwa jednostki 2"; --> </syntaxhighlight> Nie jest brana w tym powyższym przykładzie zmienna {{Code|nazwa przestrzeni nazw}}, bo jej nie ma, ale za to jest {{Code|nazwa przestrzeni nazw i}}, bo ona występuje jako parametr domyślny ogólny dla parametrów numerkowych. Tytaj jest używana jest zmienna {{Code|nazwa jednostki 2}} do wygenerowania ostatecznego wyniku, bo jak można zauważyć, parametry przestrzenne wskazują na przestrzeń główną, a nazwy jednostek już nie. Przykłady w wikikodzie: * {{Code|{{m|Pudełko|Nazwa przedmiotowej przestrzeni nazw 2|numer jednostki{{=}}2}}}} → {{Tt|{{#invoke:Pudełko|Nazwa przedmiotowej przestrzeni nazw 2|numer jednostki=2}}}} * {{Code|{{m|Pudełko|Nazwa przedmiotowej przestrzeni nazw 2|Dyskusja szablonu|nazwa przestrzeni nazw i{{=}}Moja przestrzeń|numer jednostki{{=}}2}}}} → {{Tt|{{#invoke:Pudełko|Nazwa przedmiotowej przestrzeni nazw 2|Dyskusja szablonu|nazwa przestrzeni nazw i=Moja przestrzeń|numer jednostki=2}}}} * {{Code|{{m|Pudełko|Nazwa przedmiotowej przestrzeni nazw 2|nazwa przestrzeni nazw 2{{=}}Dyskusja|nazwa jednostki 2{{=}}Dyskusja szablonu:Strona|numer jednostki{{=}}2}}}} → {{Tt|{{#invoke:Pudełko|Nazwa przedmiotowej przestrzeni nazw 2|nazwa przestrzeni nazw 2=Dyskusja|nazwa jednostki 2=Dyskusja szablonu:Strona|numer jednostki=2}}}} * {{Code|{{m|Pudełko|Nazwa przedmiotowej przestrzeni nazw 2|nazwa przestrzeni nazw i{{=}}Dyskusja|nazwa jednostki 2{{=}}Dyskusja szablonu:Strona|numer jednostki{{=}}2}}}} → {{Tt|{{#invoke:Pudełko|Nazwa przedmiotowej przestrzeni nazw 2|nazwa przestrzeni nazw i=Dyskusja|nazwa jednostki 2=Dyskusja szablonu:Strona|numer jednostki=2}}}} * {{Code|{{m|Pudełko|Nazwa przedmiotowej przestrzeni nazw 2|Dyskusja szablonu|nazwa przestrzeni nazw{{=}}Dyskusja|nazwa jednostki 2{{=}}Wikibooks:Strona|numer jednostki{{=}}2}}}} → {{Tt|{{#invoke:Pudełko|Nazwa przedmiotowej przestrzeni nazw 2|Dyskusja szablonu|nazwa przestrzeni nazw=Dyskusja|nazwa jednostki 2=Dyskusja Wikibooks:Strona|numer jednostki=2}}}} Powyżej dla przykładu podano parametry nie w rodzicu w szablonie, tylko w dziecku, jeśli chodzi o parametry nazw przestrzeni nazw i nazw jednostek, ale ich się za to nie powinno podawać w tych ramach, tylko w szablonach, w których wywoływane są te ramki pudełek {{Code|{{m|Pudełko}}}}, ale tak tutaj tak zrobiono by było najłatwiej sprawdzić działanie tego typu funkcji. Analogicznie możemy podawać parametry typu jednostki, np.: wywołaniu modułowym {{Code|{{m|Pudełko|Nazwa przedmiotowej przestrzeni nazw 2|typ jednostki 2{{=}}Podręcznik|nazwa jednostki 2{{=}}Dyskusja szablonu:Strona|numer jednostki{{=}}2}}}} (ale wtedy jest brana przestrzeń nazw z nazwy jednostki), ale o tym więcej w rozdziałach {{Code|{{sr|#p["Przedmiotowy typ jednostki 2"](frame,i)|p=Pudełko}}}} w „{{sr|#Funkcje typu jednostki|p=Pudełko}}”, on definiuje przestrzenie przedmiotowe, ale można użyć parametru dyskusji typu jednostki z wartością niepustą, pustą, czy nawet jej nie podamy, wtedy wyświetli się nazwa przestrzeni nazw przedmiotowej. Jeżeli typ jednostki wskazuje na przestrzeń nazw główną, wtedy się liczą parametry nazw jednostek. Typ jednostki nie ma takiej samej wartości dla przestrzeni przedmiotowej, co dyskusji. Również parametry typu jednostki nie powinno się podawać w dziecku w ramce, tylko w rodzicu w szablonie jako parametry, w którym ta ramka jest wywoływana, ale tutaj podano jedynie dla przykładu, jak najłatwiej sprawdzić działanie tych parametrów tej funkcji. Najpierw w funkcji nagłówku brane są parametry nazw przestrzeni nazw, a jeżeli ich nie ma, to parametry typu jednostki, a jeżeli nie ma lub parametry przestrzenne wskazują na przestrzeń główną, i nie ma nazwy jednostki, to generowane są nazwy tej funkcji na podstawie aktualnej strony. === {{Code|p["Nazwa przestrzeni nazw dyskusji 2"](frame,...)}} === Funkcja pisze nazwę przestrzeni nazw dyskusji jakikolwiek nazwy przestrzeni nazw (tzn. nazwę dyskusji nazwy przestrzenie nazw, czyli nie przedmiotowej, zamieniana jest na nią samą, czyli identyfikator przestrzeni się nie zmienia, a przedmiotową, nie dyskusji, przekształca się na dyskusji jej odpowiadającą, czyli w tym przypadku identyfikator przestrzeni zwiększa się o numer więcej), według, i nie zawsze tylko, podanej w zmiennej {{Code|nazwa przestrzeni nazw}} dla pozycja bazowej w podanych parametrach szablonu rodzicu ramki dziecka, lub dla innej pozycji należy parametr podawać w formie {{Code|nazwa przestrzeni nazw 1}}, {{Code|nazwa przestrzeni nazw 2}}, {{Code|nazwa przestrzeni nazw 3}},..., lub te parametry można podać w postaci ogólnej {{Code|nazwa przestrzeni nazw i}}. W tej funkcji trzeba też podawać parametry nazwy jednostek {{Code|nazwa jednostki}}, {{Code|nazwa jednostki 1}}, {{Code|nazwa jednostki 2}}, {{Code|nazwa jednostki 3}},... Parametry podaje się w parametrach rodzica wywołania tej funkcji {{Code|{{m|Pudełko|Nazwa przestrzeni nazw dyskusji 2}}}} (ale ich nie trzeba podawać w dziecku, ale można) i w parametrach dziecka, jeśli chodzi o zmienną {{Code|numer jednostki}}, czyli np.: {{Code|{{m|Pudełko|Nazwa przestrzeni nazw dyskusji 2|numer jednostki{{=}}<jakaś liczba całkowita dodatnia>}}}}. Te parametry przestrzenne zamiast w rodzicu w szablonie można podać w ramce dziecka, wtedy parametry dziecka mają pierwszeństwo. Przestrzeń nazw z parametrów nazw przestrzennych po przekształceniu może odpowiadać wartości przestrzeni głównej, to wtedy odpowiednia przestrzeń nazw z parametru nazwy jednostki się liczy w tej funkcji, wtedy jest liczona nazwa przestrzeni nazw dyskusji z tego parametru. Gdy parametry przestrzenne lub typ jednostki w drugim podejściu nie wskazują na przestrzeń główną, to wtedy działanie tej funkcji jest podobne do {{Code|{{sr|#p["Nazwa dyskusji przestrzeni nazw"](frame,...)|p=Pudełko}}}}. Definicja skrótowa funkcji: <syntaxhighlight lang="lua"> p["Nazwa przestrzeni nazw dyskusji 2"]=function(frame,czy_uwzglednic_alternatywna_nazwe,i)...end; </syntaxhighlight> Wtedy ciało funkcji tej, czyli jego definicja w środku, jest: <syntaxhighlight lang="lua"> local pudelko_pomocne_modul=require("Module:Pudełko/Pomocne"); return pudelko_pomocne_modul.Nazwa_przestrzeni_nazw_przedmiotowa_dyskusji_2(frame,czy_uwzglednic_alternatywna_nazwe,i,"dyskusja"); </syntaxhighlight> Parametry funkcji: * {{Code|frame}} - tablica ramki tablicy transportu, * {{Code|czy_uwzglednic_alternatywna_nazwe}} - czy ma uwzględniać nazwę przestrzeni nazw domyślną szablonu, dostępne wartości: {{Code|false}}, w której nazwa domyślna nie jest uwzględniana wtedy, oraz {{Code|nil}} i {{Code|true}}, które oznaczają to samo, w tym jeżeli ona jest uwzględniana, wtedy jest brany parametr pierwszy dziecka, który musi istnieć przy takiej wartości tego parametru, tzn. {{Code|{{m|Pudełko|Nazwa przestrzeni nazw dyskusji 2|Szablon}}}}, nazwa domyślna zostanie zamieniona na dyskusji, a jeżeli jest już taka, to nie ma takiej zamiany, a jeśli nazwa uzyskana nazwy przestrzeni nazw jest w takim przypadku błędna, to brany jest ten element, a jeżeli nazwa domyślna jest błędna, czyli {{Code|{{m|Pudełko|Nazwa przestrzeni nazw dyskusji 2|Moja przestrzeń}}}}, wtedy funkcja zwraca stan błędu {{Code|(błąd)}}. * {{Code|i}} - numer zmiennej nazwy przestrzeni nazw. Funkcja wykorzystuje {{Code|{{sr|#p.Nazwa_przestrzeni_nazw_przedmiotowa_dyskusji_2(frame,...)|p=Pudełko/Pomocne}}}} do wyznaczania ogólnego nazwy przestrzeni nazw dla pozycji bazowej i numerkowej, tzn. dla pozycji: jeden, dwa, trzy,..., itd, i ich ogólnej. Parametr ramki tablicy transportu rodzica szablonu: * {{Code|nazwa przestrzeni nazw}}, {{Code|nazwa przestrzeni nazw 1}}, {{Code|nazwa przestrzeni nazw 2}}, {{Code|nazwa przestrzeni nazw 3}},..., {{Code|nazwa przestrzeni nazw i}} - nazwy przestrzeni nazw dla pozycji bazowej oraz zwykłej i ogólnej numerkowej, * {{Code|nazwa jednostki}}, {{Code|nazwa jednostki 1}}, {{Code|nazwa jednostki 2}}, {{Code|nazwa jednostki 3}},... - nazwy jednostek dla pozycji bazowej i numerkowej, * {{Code|typ jednostki}}, {{Code|typ jednostki 1}}, {{Code|typ jednostki 2}}, {{Code|typ jednostki 3}},..., {{Code|typ jednostki i}} - typy jednostek, którym odpowiadają pewne przestrzenie przedmiotowe, dla pozycji bazowej, numerkowej i ogólnej. Parametry ramki tablicy transportu dziecka: * Parametry dziecka są takie same jak rodzica dla funkcji pudełkowej plus tu wymienione, * {{Code|numer jednostki}} - jak parametr {{Code|i}} nie został ustawiony, to wtedy liczy się ta zmienna. Przykłady: <syntaxhighlight lang="mediawiki"> {{Nazwa szablonu|nazwa przestrzeni nazw=Wikibooks|nazwa przestrzeni nazw 1=Szablon|nazwa przestrzeni nazw i=|nazwa jednostki 2=Wikibooks:Strona}} </syntaxhighlight> W dziecku powiedzmy jest wywołanie, i szukamy nazwy przestrzeni nazw o numerze dwa, która została podana, ale istnieje za to jej wersji ogólna {{Code|nazwa przestrzeni nazw i}} i domyślna {{Code|nazwa przestrzeni nazw}}, ale wtedy dla tego numerkowego liczy się to ogólne z {{Code| i}}, a ponieważ ta nazwa jest pusta, więc będziemy liczyli nazwę przestrzeni nazw z {{Code|nazwa jednostki 2}}: <syntaxhighlight lang="mediawiki"> {{#invoke:Pudełko|Nazwa przestrzeni nazw dyskusji 2|numer jednostki=2}} </syntaxhighlight> Na podstawie powyższego przykładu otrzymamy wynik o schemacie, nie wyniku, bo tam nie ma zmiennej {{Code|nazwa przestrzeni nazw 1}}, ale jest {{Code|nazwa przestrzeni nazw i}}: <syntaxhighlight lang="mediawiki"> <!-- Ale nie "nazwa przestrzeni nazw 2", bo jej nie ma, ale za to istnieje "nazwa przestrzeni nazw i"; --> <!-- nazwa przestrzeni nazw 2=nazwa przestrzeni nazw i="", a nazwa jednostki 2="Wikibooks:Strona"; --> <!-- Czyli wynik: --> Dyskusja Wikibooks <!-- Widzimy, że wygenerowała się nazwa przestrzeni nazw, którą jest przestrzeń nieprogramowa, ale dyskusji projektu, wychodząca z nazwy jednostek w tym przypadku z "nazwa jednostki 2"; --> </syntaxhighlight> Nie jest brana w tym powyższym przykładzie zmienna {{Code|nazwa przestrzeni nazw}}, bo jej nie ma, ale za to jest {{Code|nazwa przestrzeni nazw i}}, bo ona występuje jako parametr domyślny ogólny dla parametrów numerkowych. Tytaj jest używana jest zmienna {{Code|nazwa jednostki 2}} do wygenerowania ostatecznego wyniku, bo jak można zauważyć, parametry przestrzenne wskazują na przestrzeń główną, a nazwy jednostek już nie. Przykłady w wikikodzie: * {{Code|{{m|Pudełko|Nazwa przestrzeni nazw dyskusji 2|numer jednostki{{=}}2}}}} → {{Tt|{{#invoke:Pudełko|Nazwa przestrzeni nazw dyskusji 2|numer jednostki=2}}}} * {{Code|{{m|Pudełko|Nazwa przestrzeni nazw dyskusji 2|Szablon|nazwa przestrzeni nazw i{{=}}Moja przestrzeń|numer jednostki{{=}}2}}}} → {{Tt|{{#invoke:Pudełko|Nazwa przestrzeni nazw dyskusji 2|Szablon|nazwa przestrzeni nazw i=Moja przestrzeń|numer jednostki=2}}}} * {{Code|{{m|Pudełko|Nazwa przestrzeni nazw dyskusji 2|nazwa przestrzeni nazw 2{{=}}|nazwa jednostki 2{{=}}Szablon:Strona|numer jednostki{{=}}2}}}} → {{Tt|{{#invoke:Pudełko|Nazwa przestrzeni nazw dyskusji 2|nazwa przestrzeni nazw 2=|nazwa jednostki 2=Szablon:Strona|numer jednostki=2}}}} * {{Code|{{m|Pudełko|Nazwa przestrzeni nazw dyskusji 2|nazwa przestrzeni nazw i{{=}}|nazwa jednostki 2{{=}}Szablon:Strona|numer jednostki{{=}}2}}}} → {{Tt|{{#invoke:Pudełko|Nazwa przestrzeni nazw dyskusji 2|nazwa przestrzeni nazw i=|nazwa jednostki 2=Szablon:Strona|numer jednostki=2}}}} * {{Code|{{m|Pudełko|Nazwa przestrzeni nazw dyskusji 2|Szablon|nazwa przestrzeni nazw{{=}}|nazwa jednostki 2{{=}}Wikibooks:Strona|numer jednostki{{=}}2}}}} → {{Tt|{{#invoke:Pudełko|Nazwa przestrzeni nazw dyskusji 2|Szablon|nazwa przestrzeni nazw=|nazwa jednostki 2=Dyskusja Wikibooks:Strona|numer jednostki=2}}}} Powyżej dla przykładu podano parametry nie w rodzicu w szablonie, tylko w dziecku, jeśli chodzi o parametry nazw przestrzeni nazw i nazw jednostek, ale ich się za to nie powinno podawać w tych ramach, tylko w szablonach, w których wywoływane są te ramki pudełek {{Code|{{m|Pudełko}}}}, ale tak tutaj tak zrobiono by było najłatwiej sprawdzić działanie tego typu funkcji. Analogicznie możemy podawać parametry typu jednostki, np.: wywołaniu modułowym {{Code|{{m|Pudełko|Nazwa przestrzeni nazw dyskusji 2|typ jednostki 2{{=}}Podręcznik|nazwa jednostki 2{{=}}Szablon:Strona|numer jednostki{{=}}2}}}} (ale wtedy jest brana przestrzeń nazw z nazwy jednostki), ale o tym więcej w rozdziałach {{Code|{{sr|#p["Dyskusyjny typ jednostki 3"](frame,i)|p=Pudełko}}}} w „{{sr|#Funkcje typu jednostki|p=Pudełko}}”, one definiują przestrzenie dyskusji, ale można użyć parametru dyskusji typu jednostki z obojętnie jaką wartością niepustą, czy pustą, czy nawet jej nie podamy, wtedy wyświetli się nazwa przestrzeni nazw dyskusji. Jeżeli typ jednostki wskazuje na przestrzeń nazw główną, wtedy się liczą parametry nazw jednostek. Typ jednostki nie ma takiej samej wartości dla przestrzeni przedmiotowej, co dyskusji. Również parametry typu jednostki nie powinno się podawać w dziecku w ramce, tylko w rodzicu w szablonie jako parametry, w którym ta ramka jest wywoływana, ale tutaj podano jedynie dla przykładu, jak najłatwiej sprawdzić działanie tych parametrów tej funkcji. Najpierw w funkcji nagłówku brane są parametry nazw przestrzeni nazw, a jeżeli ich nie ma, to parametry typu jednostki, a jeżeli nie ma lub parametry przestrzenne wskazują na przestrzeń główną, i nie ma nazwy jednostki, to generowane są nazwy tej funkcji na podstawie aktualnej strony. == Funkcje pełnych nazw jednostki == === {{Code|p["Pełna nazwa dyskusji jednostki"](frame,i)}} === === {{Code|p["Pełna nazwa przedmiotowa jednostki"](frame,i)}} === === {{Code|p["Pełna nazwa jednostki"](frame,i)}} === == Funkcje pełnych nazw jednostki drugiej wersji == === {{Code|p["Pełna nazwa dyskusji jednostki 2"](frame,i)}} === === {{Code|p["Pełna nazwa przedmiotowa jednostki 2"](frame,i)}} === === {{Code|p["Pełna nazwa jednostki 2"](frame,i)}} === == Funkcje pełnych nazw jednostki trzeciej wersji == === {{Code|p["Pełna nazwa dyskusji jednostki 3"](frame,i)}} === === {{Code|p["Pełna nazwa przedmiotowa jednostki 3"](frame,i)}} === === {{Code|p["Pełna nazwa jednostki 3"](frame,i)}} === == Funkcje nazw jednostki == === {{Code|p["Nazwa jednostki"](frame,i)}} === == Funkcje nazw jednostki drugiej wersji == === {{Code|p["Nazwa jednostki 2"](frame,i)}} === === {{Code|p["Nazwa przedmiotowa jednostki 2"](frame,i)}} === === {{Code|p["Nazwa dyskusji jednostki 2"](frame,i)}} === == Funkcje nazw przestrzeni nazw trzeciej wersji == === {{Code|p["Nazwa przestrzeni nazw 3"](frame,i)}} === Funkcja pisze nazwę przestrzeni nazw, niezależnie, czy to jest przedmiotowa, czy dyskusji, według, i nie zawsze tylko, podanej w zmiennej {{Code|nazwa przestrzeni nazw}} dla pozycja bazowej w podanych parametrach szablonu rodzicu ramki dziecka, lub dla innej pozycji należy parametr podawać w formie {{Code|nazwa przestrzeni nazw 1}}, {{Code|Nazwa przestrzeni nazw 3}}, {{Code|nazwa przestrzeni nazw 3}},..., lub te parametry można podać w postaci ogólnej {{Code|nazwa przestrzeni nazw i}}. W tej funkcji trzeba też podawać parametry nazwy jednostek {{Code|nazwa jednostki}}, {{Code|nazwa jednostki 1}}, {{Code|nazwa jednostki 2}}, {{Code|nazwa jednostki 3}},... Parametry podaje się w parametrach rodzica wywołania tej funkcji {{Code|{{m|Pudełko|Nazwa przestrzeni nazw 3}}}} (ale ich nie trzeba podawać w dziecku, ale można) i w parametrach dziecka, jeśli chodzi o zmienną {{Code|numer jednostki}}, czyli np.: {{Code|{{m|Pudełko|Nazwa przestrzeni nazw 3|numer jednostki{{=}}<jakaś liczba całkowita dodatnia>}}}}. Te parametry przestrzenne zamiast w rodzicu w szablonie można podać w ramce dziecka, wtedy parametry dziecka mają pierwszeństwo. Przestrzeń nazw z parametrów nazw przestrzennych bazowych (bez numerka) może odpowiadać wartości przestrzeni głównej, to wtedy odpowiednia przestrzeń nazw z parametru nazwy jednostki się nie liczy w tej funkcji, aby się liczyła należy użyć funkcji {{Code|{{sr|#p["Nazwa przestrzeni nazw 2"](frame,...)|p=Pudełko}}}}. W tym przypadku funkcja działa jak {{Code|{{sr|#p["Nazwa przestrzeni nazw"](frame,...)|p=Pudełko}}}}. Przestrzeń nazw z parametrów nazw przestrzennych numerkowych może odpowiadać wartości przestrzeni głównej, to wtedy odpowiednia przestrzeń nazw z parametru nazwy jednostki się liczy w tej funkcji, wtedy jest liczona nazwa przestrzeni nazw z tego parametru. Gdy parametry przestrzenne lub typ jednostki w drugim podejściu nie wskazują na przestrzeń główną, to wtedy działanie tej funkcji jest podobne do {{Code|{{sr|#p["Nazwa przestrzeni nazw 2"](frame,...)|p=Pudełko}}}}. Definicja skrótowa funkcji: <syntaxhighlight lang="lua"> p["Nazwa przestrzeni nazw 3"]=function(frame,czy_uwzglednic_alternatywna_nazwe,i)...end; </syntaxhighlight> Wtedy ciało funkcji tej, czyli jego definicja w środku, jest: <syntaxhighlight lang="lua"> -- Jest liczony numer parametru nazwy przestrzeni nazw, domyslnie chodzi tu o numer bazowy parametrów przestrzennych; local numer_jednostki=i or frame.args["numer jednostki"]; local liczba_numeru_jednostki=((numer_jednostki)and(tonumber(numer_jednostki)) or 0); local pudelko_pomocne_modul=require("Module:Pudełko/Pomocne"); -- Liczy nazwę przestrzeni nazw dyskusji na podstawie podanych parametrów; return pudelko_pomocne_modul.Uzyskanie_nazw_jednostki(frame,0,liczba_numeru_jednostki,nil,2); </syntaxhighlight> Parametry funkcji: * {{Code|frame}} - tablica ramki tablicy transportu, * {{Code|czy_uwzglednic_alternatywna_nazwe}} - czy ma uwzględniać nazwę przestrzeni nazw domyślną szablonu, dostępne wartości: {{Code|false}}, w której nazwa domyślna nie jest uwzględniana wtedy, oraz {{Code|nil}} i {{Code|true}}, które oznaczają to samo, w tym jeżeli ona jest uwzględniana, wtedy jest brany parametr pierwszy dziecka, który musi istnieć przy takiej wartości tego parametru, tzn. {{Code|{{m|Pudełko|Nazwa przestrzeni nazw 3|Szablon}}}}, a jeśli nazwa uzyskana nazwy przestrzeni nazw jest w takim przypadku błędna, to brany jest ten element, a jeżeli nazwa domyślna jest błędna, czyli {{Code|{{m|Pudełko|Nazwa przestrzeni nazw 3|Moja przestrzeń}}}}, wtedy funkcja zwraca stan błędu {{Code|(błąd)}}. * {{Code|i}} - numer zmiennej nazwy przestrzeni nazw. Funkcja wykorzystuje {{Code|{{sr|#p.Uzyskanie_nazw_jednostki(frame,...)|p=Pudełko/Pomocne}}}} do wyznaczania ogólnego nazwy przestrzeni nazw dla pozycji bazowej i numerkowej, tzn. dla pozycji: jeden, dwa, trzy,..., itd, i ich ogólnej. Parametr ramki tablicy transportu rodzica szablonu: * {{Code|nazwa przestrzeni nazw}}, {{Code|nazwa przestrzeni nazw 1}}, {{Code|Nazwa przestrzeni nazw 3}}, {{Code|nazwa przestrzeni nazw 3}},..., {{Code|nazwa przestrzeni nazw i}} - nazwy przestrzeni nazw dla pozycji bazowej oraz zwykłej i ogólnej numerkowej, * {{Code|nazwa jednostki}}, {{Code|nazwa jednostki 1}}, {{Code|nazwa jednostki 2}}, {{Code|nazwa jednostki 3}},... - nazwy jednostek dla pozycji bazowej i numerkowej, * {{Code|typ jednostki}}, {{Code|typ jednostki 1}}, {{Code|typ jednostki 2}}, {{Code|typ jednostki 3}},..., {{Code|typ jednostki i}} - typy jednostek, którym odpowiadają pewne przestrzenie przedmiotowe, dla pozycji bazowej, numerkowej i ogólnej, ** {{Code|dyskusja typu jednostki}}, {{Code|dyskusja typu jednostki 1}}, {{Code|dyskusja typ jednostki 2}}, {{Code|dyskusja typ jednostki 3}},..., {{Code|dyskusja typ jednostki i}} - czy dany typ jednostki ma przedstawiać, jeśli niepusta, przestrzeń dyskusji dla pozycji bazowej, numerkowej i ogólnej. Parametry ramki tablicy transportu dziecka: * Parametry dziecka są takie same jak rodzica dla funkcji pudełkowej plus tu wymienione, * {{Code|numer jednostki}} - jak parametr {{Code|i}} nie został ustawiony, to wtedy liczy się ta zmienna. Przykłady: <syntaxhighlight lang="mediawiki"> {{Nazwa szablonu 1|nazwa przestrzeni nazw=Wikibooks|nazwa przestrzeni nazw=|nazwa przestrzeni nazw i=|nazwa jednostki=Szablon:Strona}} ---- {{Nazwa szablonu 2|nazwa przestrzeni nazw=Wikibooks|nazwa przestrzeni nazw 1=Szablon|nazwa przestrzeni nazw i=|nazwa jednostki 2=Wikibooks:Strona}} </syntaxhighlight> W pierwszym wywołaniu {{Code|nazwa przestrzeni nazw}} jest puste, ale dla tego bazowego (bez numerka) szukamy przestrzeni nazw, a więc ta nazwa jest ostateczna. ---- W drugim wywołaniu w dziecku powiedzmy jest wywołanie, i szukamy nazwy przestrzeni nazw o numerze dwa, która została podana, ale istnieje za to jej wersji ogólna {{Code|nazwa przestrzeni nazw i}} i domyślna {{Code|nazwa przestrzeni nazw}}, ale wtedy dla tego numerkowego liczy się to ogólne z {{Code| i}}, a ponieważ ta nazwa jest pusta, więc będziemy liczyli nazwę przestrzeni nazw z {{Code|nazwa jednostki 2}}. Odpowiadająca powyższemu kodowi, powiedzmy wikikod, według ich zawartości, przedstawia się: <syntaxhighlight lang="mediawiki"> {{#invoke:Pudełko|Nazwa przestrzeni nazw 3}} ---- {{#invoke:Pudełko|Nazwa przestrzeni nazw 3|numer jednostki=2}} </syntaxhighlight> Na podstawie powyższego przykładu otrzymamy wynik o schemacie, nie wyniku, bo tam nie ma zmiennej {{Code|nazwa przestrzeni nazw 1}}, ale jest {{Code|nazwa przestrzeni nazw i}}: <syntaxhighlight lang="mediawiki"> <!-- nazwa przestrzeni nazw=""; --> <!-- Czyli wynik: --> <!-- wynik pusty --> <!-- Widzimy, że wygenerowała się nazwa przestrzeni nazw, którą jest przestrzeń nazw główna, jest ciągiem pustym: ""; --> ---- <!-- Ale nie "nazwa przestrzeni nazw 2", bo jej nie ma, ale za to istnieje "nazwa przestrzeni nazw i"; --> <!-- nazwa przestrzeni nazw 2=nazwa przestrzeni nazw i="", a nazwa jednostki 2="Wikibooks:Strona"; --> <!-- Czyli wynik: --> Wikibooks <!-- Widzimy, że wygenerowała się nazwa przestrzeni nazw, którą jest przestrzeń nieprogramowa, ale projektu, wychodząca z nazwy jednostek w tym przypadku z "nazwa jednostki 2"; --> </syntaxhighlight> Dla parametrów numerkowych nie jest brana w tym powyższym przykładzie zmienna {{Code|nazwa przestrzeni nazw 2}}, bo jej nie ma, ale za to jest {{Code|nazwa przestrzeni nazw i}}, bo ona występuje jako parametr domyślny ogólny dla parametrów numerkowych. Tytaj jest używana jest zmienna {{Code|nazwa jednostki 2}} do wygenerowania ostatecznego wyniku, bo jak można zauważyć, parametry przestrzenne wskazują na przestrzeń główną, a nazwy jednostek już nie. Dla parametrów bazowych mamy zmienną {{Code|nazwa przestrzeni nazw}}, ona jest pusta, więc to zostanie wzięte do ostatecznego wyniku. Przykłady w wikikodzie: * {{Code|{{m|Pudełko|Nazwa przestrzeni nazw 3|Szablon|nazwa przestrzeni nazw{{=}}Moja przestrzeń|nazwa jednostki{{=}}Wikibooks:Strona}}}} → {{Tt|{{#invoke:Pudełko|Nazwa przestrzeni nazw 3|Szablon|nazwa przestrzeni nazw=Moja przestrzeń|nazwa jednostki=Wikibooks:Szablon}}}} * {{Code|{{m|Pudełko|Nazwa przestrzeni nazw 3|Szablon|nazwa przestrzeni nazw 2{{=}}Moja przestrzeń|nazwa jednostki 2{{=}}Wikibooks:Strona}|numer jednostki{{=}}2}}}} → {{Tt|{{#invoke:Pudełko|Nazwa przestrzeni nazw 3|Szablon|nazwa przestrzeni nazw 2=Moja przestrzeń|nazwa jednostki 2=Wikibooks:Szablon|numer jednostki=2}}}} * {{Code|{{m|Pudełko|Nazwa przestrzeni nazw 3|nazwa przestrzeni nazw{{=}}|nazwa jednostki{{=}}Wikibooks:Strona}}}} → {{Tt|{{#invoke:Pudełko|Nazwa przestrzeni nazw 3|nazwa przestrzeni nazw=|nazwa jednostki=Wikibooks:Szablon}}}} * {{Code|{{m|Pudełko|Nazwa przestrzeni nazw 3|nazwa przestrzeni nazw 2{{=}}|nazwa jednostki 2{{=}}Wikibooks:Strona|numer jednostki{{=}}2}}}} → {{Tt|{{#invoke:Pudełko|Nazwa przestrzeni nazw 3|nazwa przestrzeni nazw 2=|nazwa jednostki 2=Wikibooks:Szablon|numer jednostki=2}}}} Powyżej dla przykładu podano parametry nie w rodzicu w szablonie, tylko w dziecku, jeśli chodzi o parametry nazw przestrzeni nazw i nazw jednostek, ale ich się za to nie powinno podawać w tych ramach, tylko w szablonach, w których wywoływane są te ramki pudełek {{Code|{{m|Pudełko}}}}, ale tak tutaj tak zrobiono by było najłatwiej sprawdzić działanie tego typu funkcji. Analogicznie możemy podawać parametry typu jednostki, np.: wywołaniu modułowym {{Code|{{m|Pudełko|Nazwa przestrzeni nazw 3|typ jednostki 2{{=}}Podręcznik|nazwa jednostki 2{{=}}Szablon:Strona|numer jednostki{{=}}2}}}} (ale wtedy jest brana przestrzeń nazw z nazwy jednostki), ale o tym więcej w rozdziałach {{Code|{{sr|#p["Typ jednostki 3"](frame,i)|p=Pudełko}}}} w „{{sr|#Funkcje typu jednostki|p=Pudełko}}”, on definiuje przestrzenie przedmiotowe i dyskusji, ale można lub nie użyć parametru dyskusji typu jednostki z wartością niepustą, wtedy wyświetli się nazwa przestrzeni nazw dyskusji. Typ jednostki nie ma takiej samej wartości dla przestrzeni przedmiotowej, co dyskusji. Również parametry typu jednostki nie powinno się podawać w dziecku w ramce, tylko w rodzicu w szablonie jako parametry, w którym ta ramka jest wywoływana, ale tutaj podano jedynie dla przykładu, jak najłatwiej sprawdzić działanie tych parametrów tej funkcji. Najpierw w funkcji nagłówku brane są parametry nazw przestrzeni nazw, a jeżeli ich nie ma, to parametry typu jednostki, a jeżeli nie ma lub parametry przestrzenne wskazują na przestrzeń główną, i nie ma nazwy jednostki, to generowane są nazwy tej funkcji na podstawie aktualnej strony. === {{Code|p["Nazwa przedmiotowej przestrzeni nazw 3"](frame,i)}} === Funkcja pisze przedmiotową nazwę przestrzeni nazw jakikolwiek nazwy przestrzeni nazw (tzn. nazwę przedmiotową nazwy przestrzenie nazw, czyli nie dyskusji, zamieniana jest na nią samą, czyli identyfikator przestrzeni się nie zmienia, a dyskusji, nie przedmiotową, przekształca się na przedmiotową jej odpowiadającą, czyli w tym przypadku identyfikator przestrzeni zmniejsza się o numer mniej), według podanej w zmiennej {{Code|nazwa przestrzeni nazw}} dla pozycja bazowej w podanych parametrach szablonu rodzicu ramki dziecka, lub dla innej pozycji należy parametr podawać w formie {{Code|nazwa przestrzeni nazw 1}}, {{Code|nazwa przestrzeni nazw 2}}, {{Code|nazwa przestrzeni nazw 3}},..., lub te parametry można podać w postaci ogólnej {{Code|nazwa przestrzeni nazw i}}. Parametry podaje się w parametrach rodzica wywołania tej funkcji {{Code|{{m|Pudełko|Nazwa przedmiotowej przestrzeni nazw 3}}}} (ale ich nie trzeba podawać w dziecku, ale można) i w parametrach dziecka, jeśli chodzi o zmienną {{Code|numer jednostki}}, czyli np.: {{Code|{{m|Pudełko|Nazwa przedmiotowej przestrzeni nazw 3|numer jednostki{{=}}<jakaś liczba całkowita dodatnia>}}}}. Te parametry przestrzenne zamiast w rodzicu w szablonie można podać w ramce dziecka, wtedy parametry dziecka mają pierwszeństwo. Parametry przestrzenne mogą mogą być podane w postaci przestrzeni przedmiotowej lub dyskusji, ale ta funkcja zawsze ją zamienia na przedmiotową. Przestrzeń nazw z parametrów nazw przestrzennych bazowych (bez numerka) może odpowiadać wartości przestrzeni głównej, to wtedy odpowiednia przestrzeń nazw z parametru nazwy jednostki się nie liczy w tej funkcji, aby się liczyła należy użyć funkcji {{Code|{{sr|#p["Nazwa przedmiotowej przestrzeni nazw 2"](frame,...)|p=Pudełko}}}}. W tym przypadku funkcja działa jak {{Code|{{sr|#p["Nazwa przedmiotowej przestrzeni nazw"](frame,...)|p=Pudełko}}}}. Przestrzeń nazw z parametrów nazw przestrzennych numerkowych może odpowiadać wartości przestrzeni głównej, to wtedy odpowiednia przestrzeń nazw z parametru nazwy jednostki się liczy w tej funkcji, wtedy jest liczona nazwa przestrzeni nazw z tego parametru. Gdy parametry przestrzenne lub typ jednostki w drugim podejściu nie wskazują na przestrzeń główną, to wtedy działanie tej funkcji jest podobne do {{Code|{{sr|#p["Nazwa przedmiotowej przestrzeni nazw 2"](frame,...)|p=Pudełko}}}}. Definicja skrótowa funkcji: <syntaxhighlight lang="lua"> p["Nazwa przedmiotowej przestrzeni nazw 3"]=function(frame,czy_uwzglednic_alternatywna_nazwe,i)...end; </syntaxhighlight> Wtedy ciało funkcji tej, czyli jego definicja w środku, jest: <syntaxhighlight lang="lua"> -- Jest liczony numer parametru nazwy przestrzeni nazw, domyslnie chodzi tu o numer bazowy parametrów przestrzennych; local numer_jednostki=i or frame.args["numer jednostki"]; local liczba_numeru_jednostki=((numer_jednostki)and(tonumber(numer_jednostki)) or 0); local pudelko_pomocne_modul=require("Module:Pudełko/Pomocne"); -- Liczy nazwę przestrzeni nazw przedmiotową na podstawie podanych parametrów; return pudelko_pomocne_modul.Uzyskanie_nazw_jednostki(frame,1,liczba_numeru_jednostki,nil,1); </syntaxhighlight> Parametry funkcji: * {{Code|frame}} - tablica ramki tablicy transportu, * {{Code|czy_uwzglednic_alternatywna_nazwe}} - czy ma uwzględniać nazwę przestrzeni nazw domyślną szablonu, dostępne wartości: {{Code|false}}, w której nazwa domyślna nie jest uwzględniana wtedy, oraz {{Code|nil}} i {{Code|true}}, które oznaczają to samo, w tym jeżeli ona jest uwzględniana, wtedy jest brany parametr pierwszy dziecka, który musi istnieć przy takiej wartości tego parametru, tzn. {{Code|{{m|Pudełko|Nazwa przedmiotowej przestrzeni nazw 3|Dyskusja szablonu}}}} - ta nazwa domyślna zostanie zamieniona na przedmiotową, a jak ona by była przedmiotowa, to żadnej zamiany by nie było, a nazwa uzyskana z nazwy przestrzeni nazw z parametrów przestrzennych jest w takim przypadku błędna, to w takim razie brany jest ten parametr, a jeżeli ta nazwa domyślna jest błędna, czyli {{Code|{{m|Pudełko|Nazwa przedmiotowej przestrzeni nazw 3|Moja przestrzeń}}}}, wtedy funkcja zwraca stan błędu {{Code|(błąd)}}. * {{Code|i}} - numer zmiennej nazwy przestrzeni nazw. Funkcja wykorzystuje {{Code|{{sr|#p.Uzyskanie_nazw_jednostki(frame,...)|p=Pudełko/Pomocne}}}} do wyznaczania ogólnego nazwy przestrzeni nazw dla pozycji bazowej i numerkowej, tzn. dla pozycji: jeden, dwa, trzy,..., itd, i ich ogólnej. Parametr ramki tablicy transportu rodzica szablonu: * {{Code|nazwa przestrzeni nazw}}, {{Code|nazwa przestrzeni nazw 1}}, {{Code|nazwa przestrzeni nazw 2}}, {{Code|nazwa przestrzeni nazw 3}},..., {{Code|nazwa przestrzeni nazw i}} - nazwy przestrzeni nazw dla pozycji bazowej oraz zwykłej i ogólnej numerkowej, * {{Code|typ jednostki}}, {{Code|typ jednostki 1}}, {{Code|typ jednostki 2}}, {{Code|typ jednostki 3}},..., {{Code|typ jednostki i}} - typy jednostek, którym odpowiadają pewne przestrzenie przedmiotowe, dla pozycji bazowej, numerkowej i ogólnej. Parametry ramki tablicy transportu dziecka: * Parametry dziecka są takie same jak rodzica dla funkcji pudełkowej plus tu wymienione, * {{Code|numer jednostki}} - jak parametr {{Code|i}} nie został ustawiony, to wtedy liczy się ta zmienna. Przykłady: <syntaxhighlight lang="mediawiki"> {{Nazwa szablonu 1|nazwa przestrzeni nazw=Wikibooks|nazwa przestrzeni nazw=|nazwa przestrzeni nazw i=|nazwa jednostki=Dyskusja Wikibooks:Strona}} ---- {{Nazwa szablonu 2|nazwa przestrzeni nazw=Wikibooks|nazwa przestrzeni nazw 1=Szablon|nazwa przestrzeni nazw i=|nazwa jednostki 2=Dyskusja Wikibooks:Strona}} </syntaxhighlight> W pierwszym wywołaniu {{Code|nazwa przestrzeni nazw}} jest puste, ale dla tego bazowego (bez numerka) szukamy przestrzeni nazw, a więc ta nazwa jest ostateczna. ---- W drugim wywołaniu w dziecku powiedzmy jest wywołanie, i szukamy nazwy przestrzeni nazw o numerze dwa, która została podana, ale istnieje za to jej wersji ogólna {{Code|nazwa przestrzeni nazw i}} i domyślna {{Code|nazwa przestrzeni nazw}}, ale wtedy dla tego numerkowego liczy się to ogólne z {{Code| i}}, a ponieważ ta nazwa jest pusta, więc będziemy liczyli nazwę przestrzeni nazw z {{Code|nazwa jednostki 2}}. Odpowiadająca powyższemu kodowi, powiedzmy wikikod, według ich zawartości, przedstawia się: <syntaxhighlight lang="mediawiki"> {{#invoke:Pudełko|Nazwa przedmiotowej przestrzeni nazw 3}} ---- {{#invoke:Pudełko|Nazwa przedmiotowej przestrzeni nazw 3|numer jednostki=2}} </syntaxhighlight> Na podstawie powyższego przykładu otrzymamy wynik o schemacie, nie wyniku, bo tam nie ma zmiennej {{Code|nazwa przestrzeni nazw 1}}, ale jest {{Code|nazwa przestrzeni nazw i}}: <syntaxhighlight lang="mediawiki"> <!-- nazwa przestrzeni nazw=""; --> <!-- Czyli wynik: --> <!-- wynik pusty --> <!-- Widzimy, że wygenerowała się nazwa przestrzeni nazw, którą jest przestrzeń nazw główna, jest ciągiem pustym: ""; --> ---- <!-- Ale nie "nazwa przestrzeni nazw 2", bo jej nie ma, ale za to istnieje "nazwa przestrzeni nazw i"; --> <!-- nazwa przestrzeni nazw 2=nazwa przestrzeni nazw i="", a nazwa jednostki 2="Dyskusja Wikibooks:Strona"; --> <!-- Czyli wynik: --> Wikibooks <!-- Widzimy, że wygenerowała się nazwa przestrzeni nazw, którą jest przestrzeń nieprogramowa, ale projektu, wychodząca z nazwy jednostek w tym przypadku z "nazwa jednostki 2"; --> </syntaxhighlight> Dla parametrów numerkowych nie jest brana w tym powyższym przykładzie zmienna {{Code|nazwa przestrzeni nazw 2}}, bo jej nie ma, ale za to jest {{Code|nazwa przestrzeni nazw i}}, bo ona występuje jako parametr domyślny ogólny dla parametrów numerkowych. Tytaj jest używana jest zmienna {{Code|nazwa jednostki 2}} do wygenerowania ostatecznego wyniku, bo jak można zauważyć, parametry przestrzenne wskazują na przestrzeń główną, a nazwy jednostek już nie. Dla parametrów bazowych mamy zmienną {{Code|nazwa przestrzeni nazw}}, ona jest pusta, więc to zostanie wzięte do ostatecznego wyniku. Przykłady w wikikodzie: * {{Code|{{m|Pudełko|Nazwa przedmiotowej przestrzeni nazw 3|Dyskusja szablonu|nazwa przestrzeni nazw{{=}}Moja przestrzeń|nazwa jednostki{{=}}Dyskusja Wikibooks:Strona}}}} → {{Tt|{{#invoke:Pudełko|Nazwa przedmiotowej przestrzeni nazw 3|Dyskusja szablonu|nazwa przestrzeni nazw=Moja przestrzeń||nazwa jednostki=Dyskusja Wikibooks:Szablon}}}} * {{Code|{{m|Pudełko|Nazwa przedmiotowej przestrzeni nazw 3|Dyskusja szablonu|nazwa przestrzeni nazw 2{{=}}Moja przestrzeń|nazwa jednostki 2{{=}}Dyskusja Wikibooks:Strona|numer jednostki{{=}}2}}}} → {{Tt|{{#invoke:Pudełko|Nazwa przedmiotowej przestrzeni nazw 3|Dyskusja szablonu|nazwa przestrzeni nazw 2=Moja przestrzeń||nazwa jednostki 2=Dyskusja Wikibooks:Szablon|numer jednostki=2}}}} * {{Code|{{m|Pudełko|Nazwa przedmiotowej przestrzeni nazw 3|nazwa przestrzeni nazw{{=}}|nazwa jednostki{{=}}Dyskusja Wikibooks:Strona}}}} → {{Tt|{{#invoke:Pudełko|Nazwa przedmiotowej przestrzeni nazw 3|nazwa przestrzeni nazw=|nazwa jednostki=Dyskusja Wikibooks:Szablon}}}} * {{Code|{{m|Pudełko|Nazwa przedmiotowej przestrzeni nazw 3|nazwa przestrzeni nazw 2{{=}}|nazwa jednostki 2{{=}}Dyskusja Wikibooks:Strona|numer jednostki{{=}}2}}}} → {{Tt|{{#invoke:Pudełko|Nazwa przedmiotowej przestrzeni nazw 3|nazwa przestrzeni nazw 2=|nazwa jednostki 2=Dyskusja Wikibooks:Szablon|numer jednostki=2}}}} Powyżej dla przykładu podano parametry nie w rodzicu w szablonie, tylko w dziecku, jeśli chodzi o parametry nazw przestrzeni nazw, ale ich się za to nie powinno podawać w tych ramach, tylko w szablonach, w których wywoływane są te ramki pudełek {{Code|{{m|Pudełko}}}}, ale tak tutaj tak zrobiono by było najłatwiej sprawdzić działanie tego typu funkcji. Analogicznie możemy podawać parametry typu jednostki, np.: wywołaniu modułowym {{Code|{{m|Pudełko|Nazwa przedmiotowej przestrzeni nazw 3|typ jednostki 2{{=}}strona szablonu|numer jednostki{{=}}2}}}}, ale o tym więcej w rozdziałach {{Code|{{sr|#p["Przedmiotowy typ jednostki 3"](frame,i)|p=Pudełko}}}} w „{{sr|#Funkcje typu jednostki|p=Pudełko}}”, ale wtedy ta sama nazwa przestrzeni nazw reprezentowana przez {{Parametr|typ jednostki 2|strona szablonu}}, jest zamieniana na to samo, lepiej jest tutaj używać parametrów przestrzennych nazw niż typu jednostki. Tutaj parametr dyskusji typu jednostki bazowy i numerkowy ogólny, czy szczegółowy, nie gra roli, bo nawet, gdy wygenerujemy nazwę przestrzeni dyskusji za pomoca tego parametru, to i tak otrzymamy na samym końcu jego nazwę przedmiotową. Jeżeli typ jednostki bazowy wskazuje na przestrzeń nazw główną, wtedy się nie liczą parametry nazw jednostek, a w przypadku numerkowego, wtedy się liczy. Typ jednostki nie ma takiej samej wartości dla przestrzeni przedmiotowej, co dyskusji. Również parametry typu jednostki nie powinno się podawać w dziecku w ramce, tylko w rodzicu w szablonie jako parametry, w którym ta ramka jest wywoływana, ale tutaj podano jedynie dla przykładu, jak najłatwiej sprawdzić działanie tych parametrów tej funkcji. Najpierw w funkcji nagłówku brane są parametry nazw przestrzeni nazw, a jeżeli ich nie ma, to parametry typu jednostki, a jeżeli nie ma, to generowane są nazwy na podstawie aktualnego modułu. === {{Code|p["Nazwa przestrzeni nazw dyskusji 3"](frame,i)}} === Funkcja pisze nazwę przestrzeni nazw dyskusji jakikolwiek nazwy przestrzeni nazw (tzn. nazwę dyskusji nazwy przestrzenie nazw, czyli nie przedmiotowej, zamieniana jest na nią samą, czyli identyfikator przestrzeni się nie zmienia, a przedmiotową, nie dyskusji, przekształca się na dyskusji jej odpowiadającą, czyli w tym przypadku identyfikator przestrzeni zwiększa się o numer więcej), według, i nie zawsze tylko, podanej w zmiennej {{Code|nazwa przestrzeni nazw}} dla pozycja bazowej w podanych parametrach szablonu rodzicu ramki dziecka, lub dla innej pozycji należy parametr podawać w formie {{Code|nazwa przestrzeni nazw 1}}, {{Code|nazwa przestrzeni nazw 2}}, {{Code|nazwa przestrzeni nazw 3}},..., lub te parametry można podać w postaci ogólnej {{Code|nazwa przestrzeni nazw i}}. W tej funkcji trzeba też podawać parametry nazwy jednostek {{Code|nazwa jednostki}}, {{Code|nazwa jednostki 1}}, {{Code|nazwa jednostki 2}}, {{Code|nazwa jednostki 3}},... Parametry podaje się w parametrach rodzica wywołania tej funkcji {{Code|{{m|Pudełko|Nazwa przestrzeni nazw dyskusji 3}}}} (ale ich nie trzeba podawać w dziecku, ale można) i w parametrach dziecka, jeśli chodzi o zmienną {{Code|numer jednostki}}, czyli np.: {{Code|{{m|Pudełko|Nazwa przestrzeni nazw dyskusji 3|numer jednostki{{=}}<jakaś liczba całkowita dodatnia>}}}}. Te parametry przestrzenne zamiast w rodzicu w szablonie można podać w ramce dziecka, wtedy parametry dziecka mają pierwszeństwo. Przestrzeń nazw z parametrów nazw przestrzennych bazowych (bez numerka) może odpowiadać wartości przestrzeni głównej, to wtedy odpowiednia przestrzeń nazw z parametru nazwy jednostki się nie liczy w tej funkcji, aby się liczyła należy użyć funkcji {{Code|{{sr|#p["Nazwa przestrzeni nazw dyskusji 2"](frame,...)|p=Pudełko}}}}. W tym przypadku funkcja działa jak {{Code|{{sr|#p["Nazwa przestrzeni nazw dyskusji"](frame,...)|p=Pudełko}}}}. Przestrzeń nazw z parametrów nazw przestrzennych numerkowych może odpowiadać wartości przestrzeni głównej, to wtedy odpowiednia przestrzeń nazw z parametru nazwy jednostki się liczy w tej funkcji, wtedy jest liczona nazwa przestrzeni nazw z tego parametru. Gdy parametry przestrzenne lub typ jednostki w drugim podejściu nie wskazują na przestrzeń główną, to wtedy działanie tej funkcji jest podobne do {{Code|{{sr|#p["Nazwa przestrzeni nazw dyskusji 2"](frame,...)|p=Pudełko}}}}. Definicja skrótowa funkcji: <syntaxhighlight lang="lua"> p["Nazwa przestrzeni nazw dyskusji 3"]=function(frame,czy_uwzglednic_alternatywna_nazwe,i)...end; </syntaxhighlight> Wtedy ciało funkcji tej, czyli jego definicja w środku, jest: <syntaxhighlight lang="lua"> -- Jest liczony numer parametru nazwy przestrzeni nazw, domyslnie chodzi tu o numer bazowy parametrów przestrzennych; local numer_jednostki=i or frame.args["numer jednostki"]; local liczba_numeru_jednostki=((numer_jednostki)and(tonumber(numer_jednostki)) or 0); local pudelko_pomocne_modul=require("Module:Pudełko/Pomocne"); -- Liczy nazwę przestrzeni nazw dyskusji na podstawie podanych parametrów; return pudelko_pomocne_modul.Uzyskanie_nazw_jednostki(frame,2,liczba_numeru_jednostki,nil,1); </syntaxhighlight> Parametry funkcji: * {{Code|frame}} - tablica ramki tablicy transportu, * {{Code|czy_uwzglednic_alternatywna_nazwe}} - czy ma uwzględniać nazwę przestrzeni nazw domyślną szablonu, dostępne wartości: {{Code|false}}, w której nazwa domyślna nie jest uwzględniana wtedy, oraz {{Code|nil}} i {{Code|true}}, które oznaczają to samo, w tym jeżeli ona jest uwzględniana, wtedy jest brany parametr pierwszy dziecka, który musi istnieć przy takiej wartości tego parametru, tzn. {{Code|{{m|Pudełko|Nazwa przestrzeni nazw dyskusji 3|Szablon}}}}, nazwa domyślna zostatnie zamieniona na dyskusji, a jeśli jest już taka, to takiej transfomacji nie ma, a jeśli nazwa uzyskana nazwy przestrzeni nazw jest w takim przypadku błędna, to wzięty jest ten parametr, a jeżeli nazwa domyślna jest błędna, czyli {{Code|{{m|Pudełko|Nazwa przestrzeni nazw dyskusji 3|Moja przestrzeń}}}}, wtedy funkcja zwraca stan błędu {{Code|(błąd)}}. * {{Code|i}} - numer zmiennej nazwy przestrzeni nazw. Funkcja wykorzystuje {{Code|{{sr|#p.Uzyskanie_nazw_jednostki(frame,...)|p=Pudełko/Pomocne}}}} do wyznaczania ogólnego nazwy przestrzeni nazw dla pozycji bazowej i numerkowej, tzn. dla pozycji: jeden, dwa, trzy,..., itd, i ich ogólnej. Parametr ramki tablicy transportu rodzica szablonu: * {{Code|nazwa przestrzeni nazw}}, {{Code|nazwa przestrzeni nazw 1}}, {{Code|nazwa przestrzeni nazw 2}}, {{Code|nazwa przestrzeni nazw 3}},..., {{Code|nazwa przestrzeni nazw i}} - nazwy przestrzeni nazw dla pozycji bazowej oraz zwykłej i ogólnej numerkowej, * {{Code|nazwa jednostki}}, {{Code|nazwa jednostki 1}}, {{Code|nazwa jednostki 2}}, {{Code|nazwa jednostki 3}},... - nazwy jednostek dla pozycji bazowej i numerkowej, * {{Code|typ jednostki}}, {{Code|typ jednostki 1}}, {{Code|typ jednostki 2}}, {{Code|typ jednostki 3}},..., {{Code|typ jednostki i}} - typy jednostek, którym odpowiadają pewne przestrzenie przedmiotowe, dla pozycji bazowej, numerkowej i ogólnej. Parametry ramki tablicy transportu dziecka: * Parametry dziecka są takie same jak rodzica dla funkcji pudełkowej plus tu wymienione, * {{Code|numer jednostki}} - jak parametr {{Code|i}} nie został ustawiony, to wtedy liczy się ta zmienna. Przykłady: <syntaxhighlight lang="mediawiki"> {{Nazwa szablonu 1|nazwa przestrzeni nazw=Wikibooks|nazwa przestrzeni nazw=|nazwa przestrzeni nazw i=|nazwa jednostki=Szablon:Strona}} ---- {{Nazwa szablonu 2|nazwa przestrzeni nazw=Wikibooks|nazwa przestrzeni nazw 1=Szablon|nazwa przestrzeni nazw i=|nazwa jednostki 2=Wikibooks:Strona}} </syntaxhighlight> W pierwszym wywołaniu {{Code|nazwa przestrzeni nazw}} jest puste, ale dla tego bazowego (bez numerka) szukamy przestrzeni nazw, a więc ta nazwa jest ostateczna. ---- W drugim wywołaniu w dziecku powiedzmy jest wywołanie, i szukamy nazwy przestrzeni nazw o numerze dwa, która została podana, ale istnieje za to jej wersji ogólna {{Code|nazwa przestrzeni nazw i}} i domyślna {{Code|nazwa przestrzeni nazw}}, ale wtedy dla tego numerkowego liczy się to ogólne z {{Code| i}}, a ponieważ ta nazwa jest pusta, więc będziemy liczyli nazwę przestrzeni nazw z {{Code|nazwa jednostki 2}}. Odpowiadająca powyższemu kodowi, powiedzmy wikikod, według ich zawartości, przedstawia się: <syntaxhighlight lang="mediawiki"> {{#invoke:Pudełko|Nazwa przestrzeni nazw 3}} ---- {{#invoke:Pudełko|Nazwa przestrzeni nazw 3|numer jednostki=2}} </syntaxhighlight> Na podstawie powyższego przykładu otrzymamy wynik o schemacie, nie wyniku, bo tam nie ma zmiennej {{Code|nazwa przestrzeni nazw 1}}, ale jest {{Code|nazwa przestrzeni nazw i}}: <syntaxhighlight lang="mediawiki"> <!-- nazwa przestrzeni nazw=""; --> <!-- Czyli wynik: --> Dyskusja <!-- Widzimy, że wygenerowała się nazwa przestrzeni nazw, którą jest przestrzeń nazw niegłówna, jest ciągiem niepustym; --> ---- <!-- Ale nie "nazwa przestrzeni nazw 2", bo jej nie ma, ale za to istnieje "nazwa przestrzeni nazw i"; --> <!-- nazwa przestrzeni nazw 2=nazwa przestrzeni nazw i="", a nazwa jednostki 2="Wikibooks:Strona"; --> <!-- Czyli wynik: --> Dyskusja Wikibooks <!-- Widzimy, że wygenerowała się nazwa przestrzeni nazw, którą jest przestrzeń nieprogramowa, ale projektu, wychodząca z nazwy jednostek w tym przypadku z "nazwa jednostki 2"; --> </syntaxhighlight> Dla parametrów numerkowych nie jest brana w tym powyższym przykładzie zmienna {{Code|nazwa przestrzeni nazw 2}}, bo jej nie ma, ale za to jest {{Code|nazwa przestrzeni nazw i}}, bo ona występuje jako parametr domyślny ogólny dla parametrów numerkowych. Tytaj jest używana jest zmienna {{Code|nazwa jednostki 2}} do wygenerowania ostatecznego wyniku, bo jak można zauważyć, parametry przestrzenne wskazują na przestrzeń główną, a nazwy jednostek już nie. Dla parametrów bazowych mamy zmienną {{Code|nazwa przestrzeni nazw}}, ona jest pusta, więc to zostanie wzięte do ostatecznego wyniku. Przykłady w wikikodzie: * {{Code|{{m|Pudełko|Nazwa przestrzeni nazw dyskusji 3|Szablon|nazwa przestrzeni nazw{{=}}Moja przestrzeń|nazwa jednostki{{=}}Wikibooks:Strona}}}} → {{Tt|{{#invoke:Pudełko|Nazwa przestrzeni nazw dyskusji 3|Szablon|nazwa przestrzeni nazw=Moja przestrzeń|nazwa jednostki=Wikibooks:Szablon}}}} * {{Code|{{m|Pudełko|Nazwa przestrzeni nazw dyskusji 3|Szablon|nazwa przestrzeni nazw 2{{=}}Moja przestrzeń|nazwa jednostki 2{{=}}Wikibooks:Strona|numer jednostki{{=}}2}}}} → {{Tt|{{#invoke:Pudełko|Nazwa przestrzeni nazw dyskusji 3|Szablon|nazwa przestrzeni nazw 2=Moja przestrzeń|nazwa jednostki 2=Wikibooks:Szablon|numer jednostki=2}}}} * {{Code|{{m|Pudełko|Nazwa przestrzeni nazw dyskusji 3|nazwa przestrzeni nazw{{=}}|nazwa jednostki{{=}}Wikibooks:Strona}}}} → {{Tt|{{#invoke:Pudełko|Nazwa przestrzeni nazw dyskusji 3|nazwa przestrzeni nazw=|nazwa jednostki=Wikibooks:Szablon}}}} * {{Code|{{m|Pudełko|Nazwa przestrzeni nazw dyskusji 3|nazwa przestrzeni nazw 2{{=}}|nazwa jednostki 2{{=}}Wikibooks:Strona|numer jednostki{{=}}2}}}} → {{Tt|{{#invoke:Pudełko|Nazwa przestrzeni nazw dyskusji 3|nazwa przestrzeni nazw 2=|nazwa jednostki 2=Wikibooks:Szablon|numer jednostki=2}}}} Powyżej dla przykładu podano parametry nie w rodzicu w szablonie, tylko w dziecku, jeśli chodzi o parametry nazw przestrzeni nazw i nazw jednostek, ale ich się za to nie powinno podawać w tych ramach, tylko w szablonach, w których wywoływane są te ramki pudełek {{Code|{{m|Pudełko}}}}, ale tak tutaj tak zrobiono by było najłatwiej sprawdzić działanie tego typu funkcji. Analogicznie możemy podawać parametry typu jednostki, np.: wywołaniu modułowym {{Code|{{m|Pudełko|Nazwa przestrzeni nazw dyskusji 3|typ jednostki 2{{=}}Podręcznik|nazwa jednostki 2{{=}}Szablon:Strona|numer jednostki{{=}}2}}}} (ale wtedy jest brana przestrzeń nazw z nazwy jednostki), ale o tym więcej w rozdziałach {{Code|{{sr|#p["Dyskusyjny typ jednostki 3"](frame,i)|p=Pudełko}}}} w „{{sr|#Funkcje typu jednostki|p=Pudełko}}”, one definiują przestrzenie dyskusji, ale można użyć parametru dyskusji typu jednostki z obojętnie jaką wartością niepustą, czy pustą, czy nawet jej nie podamy, wtedy wyświetli się nazwa przestrzeni nazw dyskusji. Jeżeli typ jednostki bazowy wskazuje na przestrzeń nazw główną, wtedy się nie liczą parametry nazw jednostek, a w przypadku numerkowego, wtedy się liczy. Typ jednostki nie ma takiej samej wartości dla przestrzeni przedmiotowej, co dyskusji. Również parametry typu jednostki nie powinno się podawać w dziecku w ramce, tylko w rodzicu w szablonie jako parametry, w którym ta ramka jest wywoływana, ale tutaj podano jedynie dla przykładu, jak najłatwiej sprawdzić działanie tych parametrów tej funkcji. Najpierw w funkcji nagłówku brane są parametry nazw przestrzeni nazw, a jeżeli ich nie ma, to parametry typu jednostki, a jeżeli nie ma lub parametry przestrzenne wskazują na przestrzeń główną, i nie ma nazwy jednostki, to generowane są nazwy tej funkcji na podstawie aktualnej strony. == Funkcje nazw jednostki trzeciej wersji == === {{Code|p["Nazwa jednostki 3"](frame,i)}} === === {{Code|p["Nazwa przedmiotowa jednostki 3"](frame,i)}} === === {{Code|p["Nazwa dyskusji jednostki 3"](frame,i)}} === == Funkcje typu jednostki == === {{Code|p["Typ jednostki"](frame,i)}} === === {{Code|p["Typ jednostki 2"](frame,i)}} === === {{Code|p["Typ jednostki 3"](frame,i)}} === === Funkcje typu jednostki przedmiotowe === ==== {{Code|p["Przedmiotowy typ jednostki"](frame,i)}} ==== ==== {{Code|p["Przedmiotowy typ jednostki 2"](frame,i)}} ==== ==== {{Code|p["Przedmiotowy typ jednostki 3"](frame,i)}} ==== === Fukcje typu jednostki dyskusji === ==== {{Code|p["Dyskusyjny typ jednostki"](frame,i)}} ==== ==== {{Code|p["Dyskusyjny typ jednostki 2"](frame,i)}} ==== ==== {{Code|p["Dyskusyjny typ jednostki 3"](frame,i)}} ==== == Funkcje chech pudełka == === {{Code|p["Cecha pudełka"](frame)}} === === {{Code|p["Przedmiotowa cecha pudełka"](frame)}} === === {{Code|p["Dyskusyjna cecha pudełka"](frame)}} === == Fukcje ogólnego pudełka == === {{Code|p["Ogólne pudełko"](frame)}} === == Funkcje ogólne == === {{Code|p["Tekst pudełka"](frame)}} === == Funkcje błędów pudełka == === {{Code|p["Błędy pudełka"](frame)}} === === {{Code|p["Przedmiotowe błędy pudełka"](frame)}} === === {{Code|p["Dyskusyjne błędy pudełka"](frame)}} === == Funkcje nazw stron == === {{Code|p["Nazwa strony głównej projektu"](frame,i)}} === === {{Code|p["Nazwa strony głównej dla dzieci projektu"](frame,i)}} === == Funkcje kodów == === {{Code|p["Kod języka"](frame,i)}} === === {{Code|p["Kod projektu"](frame,i)}} === === {{Code|p["Klucz projektu"](frame,i)}} === == Funkcje wiki == === {{Code|p["Inny niż język bieżący wiki"](frame)}} === === {{Code|p["Inne niż lokalne wiki"](frame)}} === === {{Code|p["Inne niż bieżące wiki"](frame)}} === == Funkcje typów parametrów, czy podane je == === {{Code|p["Podano parametry nienazwane"](frame)}} === === {{Code|p["Podano parametry numerowane"](frame)}} === === {{Code|p["Podano parametry nazwane"](frame)}} === == Funkcje kodów tego projektu == === {{Code|p["Kod projektu tego projektu"](frame)}} === === {{Code|p["Kod języka tego projektu"](frame)}} === === {{Code|p["Klucz projektu tego projektu"](frame)}} === == Funkcje stron == === {{Code|p["Strona główna tego projektu"](frame)}} === === {{Code|p["Strona główna dla dzieci tego projektu"](frame)}} === == Funkcje nazw stron drugiej wersji == === {{Code|p["Nazwa strony głównej dla dzieci projektu 2"](frame)}} === === {{Code| p["Nazwa strony głównej projektu 2"](frame)}} === {{BrClear}} <noinclude><!-- -->{{ProstaStronaKoniec}}<!-- -->{{Kategoria|Opisy funkcji, w Lua w Scribunto, w modułach}}<!-- --></noinclude> 18w2k0cj1veb22bhyihn4axxcozwjr6 540469 540468 2026-04-24T10:21:38Z Persino 2851 540469 wikitext text/x-wiki <noinclude>{{ProstaStronaStart | nagłówek = {{Podrozdział|{{ld2|Pudełko}}|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 pudelko_modul=require("Module:Pudełko"); </syntaxhighlight> dzięki, któremu można wypisywać funkcje należącego do niego. Posługuje się na parametrach pudełkowych {{Parametr|nazwa przestrzeni nazw}} (czy też bez numerka {{Parametr|nazwa przestrzeni nazw i}} dla tego numerowanego) lub te z numerkiem po jednej spacji w nich (ale nie dla tego z końcówką {{Code| i}}) mogą zostać użyte jako parametry szablonu. Moduł {{Code|{{ld2|Pudełko}}}} przedstawia funkcje nazw w oparciu o funkcje nazw {{Code|{{ld2|Nazwy}}}}, generuje on nazwy za pomocą parametrów pudełkowych podanych poniżej. Parametr {{Parametr|nazwa jednostki}} (lub parametr {{Parametr|cel}} dla numerka tego pierwszego, tego alternatywnego), lub te z numerkiem po jednej spacji w nazwie parametru, albo numerowane numerkami {{Code|1}}, {{Code|2}},..., mogą zostać użyte jako parametry szablonu. Parametry określające rodzaj jednostki {{Parametr|typ jednostki}} z {{Parametr|dyskusja typu jednostki}}, itp. w wersjach z numerkiem po jednej spacji w nich mogą zostać użyte jako parametry szablonu. A te tymi numerowanymi liczbami naturalnymi {{Tt|nazwy jednostki}} od jedynki wzwyż poprzez szablon, w którym są one użyte, one też mogą być użyte z dwukropkiem, te numerowane, na samym początku nazwy, wtedy one są traktowane jako pełne nazwy strony, i wtedy one nie zostaną z interpretowane, że do nich trzeba użyć parametr odpowiedni z nazwą przetrzeni nazw z tego numerowanego, czy ogólny, aby utworzyć znów inną pełną nazwę strony dla tego numerka. Zestawienie: * {{Code|nazwa przestrzeni nazw}} i {{Code|nazwa przestrzeni nazw i}} (ogólna nazwa przestrzeni nazw dla wszystkich numerków, i tych numerowanych jednostek) - i to pierwsze z numerkiem, tzn. {{Code|nazwa przestrzeni nazw 1}}, {{Code|nazwa przestrzeni nazw 2}}, ..., * {{Code|nazwa jednostki}} - i te z numerkiem: {{Code|nazwa jednostki 1}}, {{Code|nazwa jednostki 2}}, ..., lub gdy jest zamiast tego parametrem numerowany, {{Code|1}}, {{Code|2}},..., który dla tego pierwszego może być uznany jako: {{Code|cel}} {{=}} {{Code|1}}, * {{Code|typ jednostki}} (parametr bazowy) i {{Code|typ jednostki i}} (parametr domyślny numerkowy) - i te z numerkiem: {{Code|typ jednostki 1}}, {{Code|typ jednostki 2}}, ..., tzn. gdy chcemy określić z jakim typem jednostki mamy do czynienia w zależności do jakiej przestrzeni nazw należy, a w danej, czy jest on np. programowy, czy tylko jest opisem, jak to bywa w szablonach {{Np|Template|link=tak}}, podobnie jest w przypadku {{Np|Module|link=tak}}, czy jak jest w innych przestrzeniach nazw, ** {{Code|dyskusja typu jednostki}} (parametr bazowy) i {{Code|dyskusja typu jednostki i}} (parametr domyślny numerkowy) - i te z numerkiem: {{Code|dyskusja typu jednostki 1}}, {{Code|dyskusja typu jednostki 2}}, ..., gdy chcemy określić wartością niepustą,że chodzi tutaj o typ jednostki. == {{Code|p.CzyNiepoprawnaNazwa(nazwa_jednostki)}} == Funkcja sprawdzajaca, czy jest poprawnie podana nazwa jednostki, czy ma poprawną nazwę. Znakami tymi, z których nie powinna składać się nazwa jest {{Code|<nowiki>{}<>|[]#\n</nowiki>}} i dodatkowo znak {{Code|&#127;}} (kod {{Code|{{Nowiki|&#127;}}}}). Też nie może składać się z trzech znaków tyldy, tzn. {{Code|<nowiki>~~~</nowiki>}}. Również w swojej budowie nie może składać się ze kodów {{Strong|HTML}} literowych o wzorze {{Code|{{Nowiki|&(%a+);}}}}. Natomiast może składać się z {{Code|{{Nowiki|&#(%d+);}}}} i {{Code|{{Nowiki|&#x(%x+);}}}}, ale w pierw te kody muszą być zamienione na normalne znaki. Skrótowa definicja funkcji: <syntaxhighlight lang="lua"> function p.CzyNiepoprawnaNazwa(nazwa_jednostki)...end; </syntaxhighlight> Wtedy ciało funkcji tej, czyli jego definicja w środku, jest: <syntaxhighlight lang="lua"> -- Moduł: "Moduł:Html/dane", służy do ładowania znaku o kodzie HTML "&#127;"; local html_dane_modul=mw.loadData("Module:Html/dane"); return mw.ustring.match(nazwa_jednostki,"[{}<>|%[%]#\n"..html_dane_modul.znak_127.."]+") or mw.ustring.match(nazwa_jednostki,"~~~") or mw.ustring.match(nazwa_jednostki,"&(%a+);"); </syntaxhighlight> Parametry: * {{Code|nazwa_jednostki}} - nazwa jednostki do sprawdzenia. Przykłady: <syntaxhighlight lang="lua"> local pudelko_modul=require("Module:Pudełko"); -- Podana przykładowa niepoprawna nazwa jedostki local nazwa_jednostki="Nazwa pliku [[Nazwa linku w pliku]]"; -- Fukcja zwróci wartość: local czy_poprawna_nazwa=true; local czy_poprawna_nazwa=pudelko_modul.CzyNiepoprawnaNazwa(nazwa_jednostki); </syntaxhighlight> == Funkcje nazw przestrzeni nazw == === {{Code|p["Nazwa przestrzeni nazw"](frame,...)}} === Funkcja pisze nazwę przestrzeni nazw, niezależnie, czy to jest przedmiotowa, czy dyskusji, według podanej w zmiennej {{Code|nazwa przestrzeni nazw}} dla pozycja bazowej w podanych parametrach szablonu rodzicu ramki dziecka, lub dla innej pozycji należy parametr podawać w formie {{Code|nazwa przestrzeni nazw 1}}, {{Code|nazwa przestrzeni nazw 2}}, {{Code|nazwa przestrzeni nazw 3}},..., lub te parametry można podać w postaci ogólnej {{Code|nazwa przestrzeni nazw i}}. Parametry podaje się w parametrach rodzica wywołania tej funkcji {{Code|{{m|Pudełko|Nazwa przestrzeni nazw}}}} (ale ich nie trzeba podawać w dziecku, ale można) i w parametrach dziecka, jeśli chodzi o zmienną {{Code|numer jednostki}}, czyli np.: {{Code|{{m|Pudełko|Nazwa przestrzeni nazw|numer jednostki{{=}}<jakaś liczba całkowita dodatnia>}}}}. Te parametry przestrzenne zamiast w rodzicu w szablonie można podać w ramce dziecka, wtedy parametry dziecka mają pierwszeństwo. Przestrzeń nazw z parametrów nazw przestrzennych może odpowiadać wartości przestrzeni głównej, to wtedy odpowiednia przestrzeń nazw z parametru nazwy jednostki się nie liczy w tej funkcji, aby się liczyła należy użyć funkcji {{Code|{{sr|#p["Nazwa przestrzeni nazw 2"](frame,...)|p=Pudełko}}}}. Definicja skrótowa funkcji: <syntaxhighlight lang="lua"> p["Nazwa przestrzeni nazw"]=function(frame,czy_uwzglednic_alternatywna_nazwe,i)...end; </syntaxhighlight> Wtedy ciało funkcji tej, czyli jego definicja w środku, jest: <syntaxhighlight lang="lua"> -- Jest liczony numer parametru nazwy przestrzeni nazw, domyslnie chodzi tu o numer bazowy parametrów przestrzennych; local numer_jednostki=i or frame.args["numer jednostki"]; local liczba_numer_jednostki=((numer_jednostki)and(tonumber(numer_jednostki))or 0); local pudelko_pomocne_modul=require("Module:Pudełko/Pomocne"); -- Liczy nazwę przestrzeni nazw na podstawie podanych parametrów; return pudelko_pomocne_modul.Nazwa_przestrzeni_nazw(frame,0, czy_uwzglednic_alternatywna_nazwe,liczba_numer_jednostki); </syntaxhighlight> Parametry funkcji: * {{Code|frame}} - tablica ramki tablicy transportu, * {{Code|czy_uwzglednic_alternatywna_nazwe}} - czy ma uwzględniać nazwę przestrzeni nazw domyślną szablonu, dostępne wartości: {{Code|false}}, w której nazwa domyślna nie jest uwzględniana wtedy, oraz {{Code|nil}} i {{Code|true}}, które oznaczają to samo, w tym jeżeli ona jest uwzględniana, wtedy jest brany parametr pierwszy dziecka, który musi istnieć przy takiej wartości tego parametru, tzn. {{Code|{{m|Pudełko|Nazwa przestrzeni nazw|Szablon}}}}, a ten element jest używany, gdy nazwa uzyskana nazwy przestrzeni nazw jest w takim przypadku błędna, a jeżeli wtedy nazwa domyślna jest błędna, czyli {{Code|{{m|Pudełko|Nazwa przestrzeni nazw|Moja przestrzeń}}}}, wtedy funkcja zwraca stan błędu {{Code|(błąd)}}. * {{Code|i}} - numer zmiennej nazwy przestrzeni nazw. Funkcja wykorzystuje {{Code|{{sr|#p.Nazwa_przestrzeni_nazw(frame,...)|p=Pudełko/Pomocne}}}} do wyznaczania ogólnego nazwy przestrzeni nazw dla pozycji bazowej i numerkowej, tzn. dla pozycji: jeden, dwa, trzy,..., itd, i ich ogólnej. Parametr ramki tablicy transportu rodzica szablonu: * {{Code|nazwa przestrzeni nazw}}, {{Code|nazwa przestrzeni nazw 1}}, {{Code|nazwa przestrzeni nazw 2}}, {{Code|nazwa przestrzeni nazw 3}},..., {{Code|nazwa przestrzeni nazw i}} - nazwy przestrzeni nazw dla pozycji bazowej oraz zwykłej i ogólnej numerkowej, * {{Code|typ jednostki}}, {{Code|typ jednostki 1}}, {{Code|typ jednostki 2}}, {{Code|typ jednostki 3}},..., {{Code|typ jednostki i}} - typy jednostek, którym odpowiadają pewne przestrzenie przedmiotowe, dla pozycji bazowej, numerkowej i ogólnej, ** {{Code|dyskusja typu jednostki}}, {{Code|dyskusja typu jednostki 1}}, {{Code|dyskusja typ jednostki 2}}, {{Code|dyskusja typ jednostki 3}},..., {{Code|dyskusja typ jednostki i}} - czy dany typ jednostki ma przedstawiać, jeśli niepusta, przestrzeń dyskusji dla pozycji bazowej, numerkowej i ogólnej. Parametry ramki tablicy transportu dziecka: * Parametry dziecka są takie same jak rodzica dla funkcji pudełkowej plus tu wymienione, * {{Code|numer jednostki}} - jak parametr {{Code|i}} nie został ustawiony, to wtedy liczy się ta zmienna. Przykłady: <syntaxhighlight lang="mediawiki"> {{Nazwa szablonu|nazwa przestrzeni nazw=Wikibooks|nazwa przestrzeni nazw 2=Szablon|nazwa przestrzeni nazw i=Moduł}} </syntaxhighlight> W dziecku powiedzmy jest wywołanie, i szukamy nazwy przestrzeni nazw o numerze dwa, która nie została podana, ale istnieje za to jej wersji ogólna {{Code|nazwa przestrzeni nazw i}} i domyślna {{Code|nazwa przestrzeni nazw}}: <syntaxhighlight lang="mediawiki"> {{#invoke:Pudełko|Nazwa przestrzeni nazw|numer jednostki=1}} </syntaxhighlight> Na podstawie powyższego przykładu otrzymamy wynik o schemacie, nie wyniku, bo tam nie ma zmiennej {{Code|nazwa przestrzeni nazw 1}}, ale jest {{Code|nazwa przestrzeni nazw i}}: <syntaxhighlight lang="mediawiki"> <!-- Ale nie "nazwa przestrzeni nazw", bo jej nie ma, ale za to istnieje "nazwa przestrzeni nazw i"; --> <!-- nazwa przestrzeni nazw 2=nazwa przestrzeni nazw i=Moduł; --> <!-- Czyli wynik: --> Moduł <!-- Widzimy, że wygenerowała się nazwa przestrzeni nazw, którą jest przestrzeń programowa, którą również jest "Szablon"; --> </syntaxhighlight> Nie jest brana w tym powyższym przykładzie zmienna {{Code|nazwa przestrzeni nazw}}, bo jej nie ma, ale za to jest {{Code|nazwa przestrzeni nazw i}}, bo ona występuje jako parametr domyślny ogólny dla parametrów numerkowych. Przykłady w wikikodzie: * {{Code|{{m|Pudełko|Nazwa przestrzeni nazw|numer jednostki{{=}}2}}}} → {{Tt|{{#invoke:Pudełko|Nazwa przestrzeni nazw|numer jednostki=2}}}} * {{Code|{{m|Pudełko|Nazwa przestrzeni nazw|Szablon|nazwa przestrzeni nazw i{{=}}Moja przestrzeń|numer jednostki{{=}}2}}}} → {{Tt|{{#invoke:Pudełko|Nazwa przestrzeni nazw|Szablon|nazwa przestrzeni nazw i=Moja przestrzeń|numer jednostki=2}}}} * {{Code|{{m|Pudełko|Nazwa przestrzeni nazw|nazwa przestrzeni nazw 2{{=}}Szablon|numer jednostki{{=}}2}}}} → {{Tt|{{#invoke:Pudełko|Nazwa przestrzeni nazw|nazwa przestrzeni nazw 2=Szablon|numer jednostki=2}}}} * {{Code|{{m|Pudełko|Nazwa przestrzeni nazw|nazwa przestrzeni nazw 2{{=}}Szablon|numer jednostki{{=}}2}}}} → {{Tt|{{#invoke:Pudełko|Nazwa przestrzeni nazw|nazwa przestrzeni nazw i=Szablon|numer jednostki=2}}}} * {{Code|{{m|Pudełko|Nazwa przestrzeni nazw|nazwa przestrzeni nazw{{=}}Szablon|numer jednostki{{=}}2}}}} → {{Tt|{{#invoke:Pudełko|Nazwa przestrzeni nazw|nazwa przestrzeni nazw=Szablon|numer jednostki=2}}}} Powyżej dla przykładu podano parametry nie w rodzicu w szablonie, tylko w dziecku, jeśli chodzi o parametry nazw przestrzeni nazw, ale ich się za to nie powinno podawać w tych ramach, tylko w szablonach, w których wywoływane są te ramki pudełek {{Code|{{m|Pudełko}}}}, ale tak tutaj tak zrobiono by było najłatwiej sprawdzić działanie tego typu funkcji. Analogicznie możemy podawać parametry typu jednostki, np.: wywołaniu modułowym {{Code|{{m|Pudełko|Nazwa przestrzeni nazw|typ jednostki 2{{=}}strona szablonu|numer jednostki{{=}}2}}}}, ale o tym więcej w rozdziałach {{Code|{{sr|#p["Typ jednostki"](frame,i)|p=Pudełko}}}} w „{{sr|#Funkcje typu jednostki|p=Pudełko}}”, on definiuje przestrzenie przedmiotowe, czy dyskusji, ale można lub nie użyć parametru dyskusji typu jednostki z wartością niepustą, wtedy wyświetli się nazwa przestrzeni nazw dyskusji. Typ jednostki nie ma takiej samej wartości dla przestrzeni przedmiotowej, co dyskusji. Również parametry typu jednostki nie powinno się podawać w dziecku w ramce, tylko w rodzicu w szablonie jako parametry, w którym ta ramka jest wywoływana, ale tutaj podano jedynie dla przykładu, jak najłatwiej sprawdzić działanie tych parametrów tej funkcji. Najpierw w funkcji nagłówku brane są parametry nazw przestrzeni nazw, a jeżeli ich nie ma, to parametry typu jednostki, a jeżeli nie ma, to generowane są nazwy na podstawie aktualnego modułu. === {{Code|p["Nazwa przedmiotowej przestrzeni nazw"](frame,...)}} === Funkcja pisze przedmiotową nazwę przestrzeni nazw jakikolwiek nazwy przestrzeni nazw (tzn. nazwę przedmiotową nazwy przestrzenie nazw, czyli nie dyskusji, zamieniana jest na nią samą, czyli identyfikator przestrzeni się nie zmienia, a dyskusji, nie przedmiotową, przekształca się na przedmiotową jej odpowiadającą, czyli w tym przypadku identyfikator przestrzeni zmniejsza się o numer mniej), według podanej w zmiennej {{Code|nazwa przestrzeni nazw}} dla pozycja bazowej w podanych parametrach szablonu rodzicu ramki dziecka, lub dla innej pozycji należy parametr podawać w formie {{Code|nazwa przestrzeni nazw 1}}, {{Code|nazwa przestrzeni nazw 2}}, {{Code|nazwa przestrzeni nazw 3}},..., lub te parametry można podać w postaci ogólnej {{Code|nazwa przestrzeni nazw i}}. Parametry podaje się w parametrach rodzica wywołania tej funkcji {{Code|{{m|Pudełko|Nazwa przedmiotowej przestrzeni nazw}}}} (ale ich nie trzeba podawać w dziecku, ale można) i w parametrach dziecka, jeśli chodzi o zmienną {{Code|numer jednostki}}, czyli np.: {{Code|{{m|Pudełko|Nazwa przedmiotowej przestrzeni nazw|numer jednostki{{=}}<jakaś liczba całkowita dodatnia>}}}}. Te parametry przestrzenne zamiast w rodzicu w szablonie można podać w ramce dziecka, wtedy parametry dziecka mają pierwszeństwo. Parametry przestrzenne mogą mogą być podane w postaci przestrzeni przedmiotowej lub dyskusji, ale ta funkcja zawsze ją zamienia na przedmiotową. Przestrzeń nazw z parametrów nazw przestrzennych może odpowiadać wartości przestrzeni głównej, to wtedy odpowiednia przestrzeń nazw z parametru nazwy jednostki się nie liczy w tej funkcji, aby się liczyła należy użyć funkcji {{Code|{{sr|#p["Nazwa przedmiotowej przestrzeni nazw 2"](frame,...)|p=Pudełko}}}}. Definicja skrótowa funkcji: <syntaxhighlight lang="lua"> p["Nazwa przedmiotowej przestrzeni nazw"]=function(frame,czy_uwzglednic_alternatywna_nazwe,i)...end; </syntaxhighlight> Wtedy ciało funkcji tej, czyli jego definicja w środku, jest: <syntaxhighlight lang="lua"> -- Jest liczony numer parametru nazwy przestrzeni nazw, domyslnie chodzi tu o numer bazowy parametrów przestrzennych; local numer_jednostki=i or frame.args["numer jednostki"]; local liczba_numer_jednostki=((numer_jednostki)and(tonumber(numer_jednostki))or 0); local pudelko_pomocne_modul=require("Module:Pudełko/Pomocne"); -- Liczy nazwę przestrzeni nazw przedmiotową na podstawie podanych parametrów; return pudelko_pomocne_modul.Nazwa_przestrzeni_nazw(frame,1, czy_uwzglednic_alternatywna_nazwe,liczba_numer_jednostki); </syntaxhighlight> Parametry funkcji: * {{Code|frame}} - tablica ramki tablicy transportu, * {{Code|czy_uwzglednic_alternatywna_nazwe}} - czy ma uwzględniać nazwę przestrzeni nazw domyślną szablonu, dostępne wartości: {{Code|false}}, w której nazwa domyślna nie jest uwzględniana wtedy, oraz {{Code|nil}} i {{Code|true}}, które oznaczają to samo, w tym jeżeli ona jest uwzględniana, wtedy jest brany parametr pierwszy dziecka, który musi istnieć przy takiej wartości tego parametru, tzn. {{Code|{{m|Pudełko|Nazwa przedmiotowej przestrzeni nazw|Dyskusja szablonu}}}} - ta nazwa domyślna zostanie zamieniona na przedmiotową, a jak ona by była przedmiotowa, to żadnej zamiany, by nie było, a jeśli nazwa uzyskana z nazwy przestrzeni nazw z parametrów przestrzennych jest w takim przypadku błędna, to w takim razie brany jest ten parametr, a jeżeli ta nazwa domyślna jest błędna, czyli {{Code|{{m|Pudełko|Nazwa przedmiotowej przestrzeni nazw|Moja przestrzeń}}}}, wtedy funkcja zwraca stan błędu {{Code|(błąd)}}. * {{Code|i}} - numer zmiennej nazwy przestrzeni nazw. Funkcja wykorzystuje {{Code|{{sr|#p.Nazwa_przestrzeni_nazw(frame,...)|p=Pudełko/Pomocne}}}} do wyznaczania ogólnego nazwy przestrzeni nazw dla pozycji bazowej i numerkowej, tzn. dla pozycji: jeden, dwa, trzy,..., itd, i ich ogólnej. Parametr ramki tablicy transportu rodzica szablonu: * {{Code|nazwa przestrzeni nazw}}, {{Code|nazwa przestrzeni nazw 1}}, {{Code|nazwa przestrzeni nazw 2}}, {{Code|nazwa przestrzeni nazw 3}},..., {{Code|nazwa przestrzeni nazw i}} - nazwy przestrzeni nazw dla pozycji bazowej oraz zwykłej i ogólnej numerkowej, * {{Code|typ jednostki}}, {{Code|typ jednostki 1}}, {{Code|typ jednostki 2}}, {{Code|typ jednostki 3}},..., {{Code|typ jednostki i}} - typy jednostek, którym odpowiadają pewne przestrzenie przedmiotowe, dla pozycji bazowej, numerkowej i ogólnej. Parametry ramki tablicy transportu dziecka: * Parametry dziecka są takie same jak rodzica dla funkcji pudełkowej plus tu wymienione, * {{Code|numer jednostki}} - jak parametr {{Code|i}} nie został ustawiony, to wtedy liczy się ta zmienna. Przykłady: <syntaxhighlight lang="mediawiki"> {{Nazwa szablonu|nazwa przestrzeni nazw=Dyskusja Wikibooks|nazwa przestrzeni nazw 2=Dyskusja szablonu|nazwa przestrzeni nazw i=Dyskusja modułu}} </syntaxhighlight> W dziecku powiedzmy jest wywołanie, i szukamy nazwy przestrzeni nazw o numerze dwa, która nie została podana, ale istnieje za to jej wersji ogólna {{Code|nazwa przestrzeni nazw i}} i domyślna {{Code|nazwa przestrzeni nazw}}: <syntaxhighlight lang="mediawiki"> {{#invoke:Pudełko|Nazwa przedmiotowej przestrzeni nazw|numer jednostki=1}} </syntaxhighlight> Na podstawie powyższego przykładu otrzymamy wynik o schemacie, nie wyniku, bo tam nie ma zmiennej {{Code|nazwa przestrzeni nazw 1}}, ale jest {{Code|nazwa przestrzeni nazw i}}: <syntaxhighlight lang="mediawiki"> <!-- Ale nie "nazwa przestrzeni nazw", bo jej nie ma, ale za to istnieje "nazwa przestrzeni nazw i"; --> <!-- nazwa przestrzeni nazw 2=nazwa przestrzeni nazw i=Dyskusja modułu; --> <!-- Czyli wynik: --> Moduł <!-- Widzimy, że wygenerowała się nazwa przestrzeni nazw, którą jest przestrzeń przedmiotowa programowa przestrzeni dyskusji "Dyskusja modułu", którą również jest "Szablon" jego przestrzeni dyskusji "Dyskusja szablonu", a dla ich przestrzeni przedmiotowej, zamiast dyskusji, to samo przekształca się na to samo; --> </syntaxhighlight> Nie jest brana w tym powyższym przykładzie zmienna {{Code|nazwa przestrzeni nazw}}, bo jej nie ma, ale za to jest {{Code|nazwa przestrzeni nazw i}}, bo ona występuje jako parametr domyślny ogólny dla parametrów numerkowych. Przykłady w wikikodzie: * {{Code|{{m|Pudełko|Nazwa przedmiotowej przestrzeni nazw|numer jednostki{{=}}2}}}} → {{Tt|{{#invoke:Pudełko|Nazwa przedmiotowej przestrzeni nazw|numer jednostki=2}}}} * {{Code|{{m|Pudełko|Nazwa przedmiotowej przestrzeni nazw|Dyskusja szablonu|nazwa przestrzeni nazw i{{=}}Moja przestrzeń|numer jednostki{{=}}2}}}} → {{Tt|{{#invoke:Pudełko|Nazwa przedmiotowej przestrzeni nazw|Dyskusja szablonu|nazwa przestrzeni nazw i=Moja przestrzeń|numer jednostki=2}}}} * {{Code|{{m|Pudełko|Nazwa przedmiotowej przestrzeni nazw|nazwa przestrzeni nazw 2{{=}}Dyskusja szablonu|numer jednostki{{=}}2}}}} → {{Tt|{{#invoke:Pudełko|Nazwa przedmiotowej przestrzeni nazw|nazwa przestrzeni nazw 2=Dyskusja szablonu|numer jednostki=2}}}} * {{Code|{{m|Pudełko|Nazwa przedmiotowej przestrzeni nazw|nazwa przestrzeni nazw 2{{=}}Dyskusja szablonu|numer jednostki{{=}}2}}}} → {{Tt|{{#invoke:Pudełko|Nazwa przedmiotowej przestrzeni nazw|nazwa przestrzeni nazw i=Dyskusja szablonu|numer jednostki=2}}}} * {{Code|{{m|Pudełko|Nazwa przedmiotowej przestrzeni nazw|nazwa przestrzeni nazw{{=}}Dyskusja szablonu|numer jednostki{{=}}2}}}} → {{Tt|{{#invoke:Pudełko|Nazwa przedmiotowej przestrzeni nazw|nazwa przestrzeni nazw=Dyskusja szablonu|numer jednostki=2}}}} Powyżej dla przykładu podano parametry nie w rodzicu w szablonie, tylko w dziecku, jeśli chodzi o parametry nazw przestrzeni nazw, ale ich się za to nie powinno podawać w tych ramach, tylko w szablonach, w których wywoływane są te ramki pudełek {{Code|{{m|Pudełko}}}}, ale tak tutaj tak zrobiono by było najłatwiej sprawdzić działanie tego typu funkcji. Analogicznie możemy podawać parametry typu jednostki, np.: wywołaniu modułowym {{Code|{{m|Pudełko|Nazwa przedmiotowej przestrzeni nazw|typ jednostki 2{{=}}strona szablonu|numer jednostki{{=}}2}}}}, ale o tym więcej w rozdziałach {{Code|{{sr|#p["Przedmiotowy typ jednostki"](frame,i)|p=Pudełko}}}} w „{{sr|#Funkcje typu jednostki|p=Pudełko}}”, ale wtedy ta sama nazwa przestrzeni nazw reprezentowana przez {{Parametr|typ jednostki 2|strona szablonu}}, jest zamieniana na to samo, lepiej jest tutaj używać parametrów przestrzennych nazw niż typu jednostki. Typ jednostki nie ma takiej samej wartości dla przestrzeni przedmiotowej, co dyskusji. Tutaj parametr dyskusji typu jednostki bazowy i numerkowy ogólny, czy szczegółowy, nie gra roli, bo nawet, gdy wygenerujemy nazwę przestrzeni dyskusji za pomoca tego parametru, to i tak otrzymamy na samym końcu jego nazwę przedmiotową. Również parametry typu jednostki nie powinno się podawać w dziecku w ramce, tylko w rodzicu w szablonie jako parametry, w którym ta ramka jest wywoływana, ale tutaj podano jedynie dla przykładu, jak najłatwiej sprawdzić działanie tych parametrów tej funkcji. Najpierw w funkcji nagłówku brane są parametry nazw przestrzeni nazw, a jeżeli ich nie ma, to parametry typu jednostki, a jeżeli nie ma, to generowane są nazwy na podstawie aktualnego modułu. === {{Code|p["Nazwa przestrzeni nazw dyskusji"](frame,...)}} === Funkcja pisze nazwę przestrzeni nazw dyskusji jakikolwiek nazwy przestrzeni nazw (tzn. nazwę przedmiotową nazwy przestrzenie nazw, czyli nie dyskusji, zamieniana jest na dyskusji, czyli identyfikator przestrzeni się zmienia jeden wyżej, a dyskusji, nie przedmiotową, przekształca się na tą samą), według podanej w zmiennej {{Code|nazwa przestrzeni nazw}} dla pozycja bazowej w podanych parametrach szablonu rodzicu ramki dziecka, lub dla innej pozycji należy parametr podawać w formie {{Code|nazwa przestrzeni nazw 1}}, {{Code|nazwa przestrzeni nazw 2}}, {{Code|nazwa przestrzeni nazw 3}},..., lub te parametry można podać w postaci ogólnej {{Code|nazwa przestrzeni nazw i}}. Parametry podaje się w parametrach rodzica wywołania tej funkcji {{Code|{{m|Pudełko|Nazwa przestrzeni nazw dyskusji}}}} (ale ich nie trzeba podawać w dziecku, ale można) i w parametrach dziecka, jeśli chodzi o zmienną {{Code|numer jednostki}}, czyli np.: {{Code|{{m|Pudełko|Nazwa przestrzeni nazw dyskusji|numer jednostki{{=}}<jakaś liczba całkowita dodatnia>}}}}. Te parametry przestrzenne zamiast w rodzicu w szablonie można podać w ramce dziecka, wtedy parametry dziecka mają pierwszeństwo. Parametry przestrzenne mogą mogą być podane w postaci przestrzeni przedmiotowej lub dyskusji, ale ta funkcja zawsze ją zamienia na dyskusji. Przestrzeń nazw z parametrów nazw przestrzennych może odpowiadać wartości przestrzeni głównej, to wtedy odpowiednia przestrzeń nazw z parametru nazwy jednostki się nie liczy w tej funkcji, aby się liczyła należy użyć funkcji {{Code|{{sr|#p["Nazwa przestrzeni nazw dyskusji 2"](frame,...)|p=Pudełko}}}}. Definicja skrótowa funkcji: <syntaxhighlight lang="lua"> p["Nazwa przestrzeni nazw dyskusji"]=function(frame,czy_uwzglednic_alternatywna_nazwe,i)...end; </syntaxhighlight> Wtedy ciało funkcji tej, czyli jego definicja w środku, jest: <syntaxhighlight lang="lua"> -- Jest liczony numer parametru nazwy przestrzeni nazw, domyslnie chodzi tu o numer bazowy parametrów przestrzennych; local numer_jednostki=i or frame.args["numer jednostki"]; local liczba_numer_jednostki=((numer_jednostki)and(tonumber(numer_jednostki))or 0); local pudelko_pomocne_modul=require("Module:Pudełko/Pomocne"); -- Liczy nazwę przestrzeni nazw dyskusji na podstawie podanych parametrów; return pudelko_pomocne_modul.Nazwa_przestrzeni_nazw(frame,2, czy_uwzglednic_alternatywna_nazwe,liczba_numer_jednostki); </syntaxhighlight> Parametry funkcji: * {{Code|frame}} - tablica ramki tablicy transportu, * {{Code|czy_uwzglednic_alternatywna_nazwe}} - czy ma uwzględniać nazwę przestrzeni nazw domyślną szablonu, dostępne wartości: {{Code|false}}, w której nazwa domyślna nie jest uwzględniana wtedy, oraz {{Code|nil}} i {{Code|true}}, które oznaczają to samo, w tym jeżeli ona jest uwzględniana, wtedy jest brany parametr pierwszy dziecka, który musi istnieć przy takiej wartości tego parametru, tzn. {{Code|{{m|Pudełko|Nazwa przestrzeni nazw dyskusji|Szablon}}}} - ta nazwa domyślna zostanie przekształcona na dyskusji, a jeżeli ona by była dyskusji, to nie byłoby żadnego przekształcenia, a jeśli nazwa uzyskana nazwy przestrzeni nazw z parametrów przestrzennych jest w takim przypadku błędna, to w takim razie brany jest ten parametr, a jeżeli nazwa domyślna jest błędna, czyli {{Code|{{m|Pudełko|Nazwa przestrzeni nazw dyskusji|Moja przestrzeń}}}}, wtedy funkcja zwraca stan błędu {{Code|(błąd)}}. * {{Code|i}} - numer zmiennej nazwy przestrzeni nazw. Funkcja wykorzystuje {{Code|{{sr|#p.Nazwa_przestrzeni_nazw(frame,...)|p=Pudełko/Pomocne}}}} do wyznaczania ogólnego nazwy przestrzeni nazw dla pozycji bazowej i numerkowej, tzn. dla pozycji: jeden, dwa, trzy,..., itd, i ich ogólnej. Parametr ramki tablicy transportu rodzica szablonu: * {{Code|nazwa przestrzeni nazw}}, {{Code|nazwa przestrzeni nazw 1}}, {{Code|nazwa przestrzeni nazw 2}}, {{Code|nazwa przestrzeni nazw 3}},..., {{Code|nazwa przestrzeni nazw i}} - nazwy przestrzeni nazw dla pozycji bazowej oraz zwykłej i ogólnej numerkowej, * {{Code|typ jednostki}}, {{Code|typ jednostki 1}}, {{Code|typ jednostki 2}}, {{Code|typ jednostki 3}},..., {{Code|typ jednostki i}} - typy jednostek, którym odpowiadają pewne przestrzenie przedmiotowe, dla pozycji bazowej, numerkowej i ogólnej. Parametry ramki tablicy transportu dziecka: * Parametry dziecka są takie same jak rodzica dla funkcji pudełkowej plus tu wymienione, * {{Code|numer jednostki}} - jak parametr {{Code|i}} nie został ustawiony, to wtedy liczy się ta zmienna. Przykłady: <syntaxhighlight lang="mediawiki"> {{Nazwa szablonu|nazwa przestrzeni nazw=Wikibooks|nazwa przestrzeni nazw 2=Szablon|nazwa przestrzeni nazw i=Moduł}} </syntaxhighlight> W dziecku powiedzmy jest wywołanie, i szukamy nazwy przestrzeni nazw o numerze dwa, która nie została podana, ale istnieje za to jej wersji ogólna {{Code|nazwa przestrzeni nazw i}} i domyślna {{Code|nazwa przestrzeni nazw}}: <syntaxhighlight lang="mediawiki"> {{#invoke:Pudełko|Nazwa przestrzeni nazw dyskusji|numer jednostki=1}} </syntaxhighlight> Na podstawie powyższego przykładu otrzymamy wynik o schemacie, nie wyniku, bo tam nie ma zmiennej {{Code|nazwa przestrzeni nazw 1}}, ale jest {{Code|nazwa przestrzeni nazw i}}: <syntaxhighlight lang="mediawiki"> <!-- Ale nie "nazwa przestrzeni nazw", bo jej nie ma, ale za to istnieje "nazwa przestrzeni nazw i"; --> <!-- nazwa przestrzeni nazw 2=nazwa przestrzeni nazw i=Moduł; --> <!-- Czyli wynik: --> Dyskusja modułu <!-- Widzimy, że wygenerowała się nazwa przestrzeni nazw, którą jest przestrzeń dyskusji przestrzeni programowej przestrzeni przedmiotowej "Moduł", którą również jest "Szablon" jego przestrzeni dyskusji "Dyskusja szablonu", a dla ich przestrzeni przedmiotowej, zamiast dyskusji, to przekształca się na dyskusji jej odpowiadającą; --> </syntaxhighlight> Nie jest brana w tym powyższym przykładzie zmienna {{Code|nazwa przestrzeni nazw}}, bo jej nie ma, ale za to jest {{Code|nazwa przestrzeni nazw i}}, bo ona występuje jako parametr domyślny ogólny dla parametrów numerkowych. Przykłady w wikikodzie: * {{Code|{{m|Pudełko|Nazwa przestrzeni nazw dyskusji|numer jednostki{{=}}2}}}} → {{Tt|{{#invoke:Pudełko|Nazwa przestrzeni nazw dyskusji|numer jednostki=2}}}} * {{Code|{{m|Pudełko|Nazwa przestrzeni nazw dyskusji|Szablon|nazwa przestrzeni nazw i{{=}}Moja przestrzeń|numer jednostki{{=}}2}}}} → {{Tt|{{#invoke:Pudełko|Nazwa przestrzeni nazw dyskusji|Szablon|nazwa przestrzeni nazw i=Moja przestrzeń|numer jednostki=2}}}} * {{Code|{{m|Pudełko|Nazwa przestrzeni nazw dyskusji|nazwa przestrzeni nazw 2{{=}}Szablon|numer jednostki{{=}}2}}}} → {{Tt|{{#invoke:Pudełko|Nazwa przestrzeni nazw dyskusji|nazwa przestrzeni nazw 2=Szablon|numer jednostki=2}}}} * {{Code|{{m|Pudełko|Nazwa przestrzeni nazw dyskusji|nazwa przestrzeni nazw 2{{=}}Szablon|numer jednostki{{=}}2}}}} → {{Tt|{{#invoke:Pudełko|Nazwa przestrzeni nazw dyskusji|nazwa przestrzeni nazw i=Szablon|numer jednostki=2}}}} * {{Code|{{m|Pudełko|Nazwa przestrzeni nazw dyskusji|nazwa przestrzeni nazw{{=}}Szablon|numer jednostki{{=}}2}}}} → {{Tt|{{#invoke:Pudełko|Nazwa przestrzeni nazw dyskusji|nazwa przestrzeni nazw=Szablon|numer jednostki=2}}}} Powyżej dla przykładu podano parametry nie w rodzicu w szablonie, tylko w dziecku, jeśli chodzi o parametry nazw przestrzeni nazw, ale ich się za to nie powinno podawać w tych ramach, tylko w szablonach, w których wywoływane są te ramki pudełek {{Code|{{m|Pudełko}}}}, ale tak tutaj tak zrobiono by było najłatwiej sprawdzić działanie tego typu funkcji. Analogicznie możemy podawać parametry typu jednostki, np.: wywołaniu modułowym {{Code|{{m|Pudełko|Nazwa przestrzeni nazw dyskusji|typ jednostki 2{{=}}strona szablonu|numer jednostki{{=}}2}}}}, ale o tym więcej w rozdziałach {{Code|{{sr|#p["Dyskusyjny typ jednostki"](frame,i)|p=Pudełko}}}} w „{{sr|#Funkcje typu jednostki|p=Pudełko}}”, ale wtedy nazwa przestrzeni nazw reprezentowana przez {{Parametr|typ jednostki 2|strona szablonu}}, jest zamieniana na nazwę przestrzeni nazw dyskusji. Parametr dyskusji typu jednostki bazowy lub dla danego numerka ogólny, czy szczegółowy, nie gra roli. Typ jednostki nie ma takiej samej wartości dla przestrzeni przedmiotowej, co dyskusji. Również parametry typu jednostki nie powinno się podawać w dziecku w ramce, tylko w rodzicu w szablonie jako parametry, w którym ta ramka jest wywoływana, ale tutaj podano jedynie dla przykładu, jak najłatwiej sprawdzić działanie tych parametrów tej funkcji. Najpierw w funkcji nagłówku brane są parametry nazw przestrzeni nazw, a jeżeli ich nie ma, to parametry typu jednostki, a jeżeli nie ma, to generowane są nazwy na podstawie aktualnego modułu. == Funkcje nazw przestrzeni nazw drugiej wersji == === {{Code|p["Nazwa przestrzeni nazw 2"](frame,...)}} === Funkcja pisze nazwę przestrzeni nazw, niezależnie, czy to jest przedmiotowa, czy dyskusji, według, i nie zawsze tylko, podanej w zmiennej {{Code|nazwa przestrzeni nazw}} dla pozycja bazowej w podanych parametrach szablonu rodzicu ramki dziecka, lub dla innej pozycji należy parametr podawać w formie {{Code|nazwa przestrzeni nazw 1}}, {{Code|nazwa przestrzeni nazw 2}}, {{Code|nazwa przestrzeni nazw 3}},..., lub te parametry można podać w postaci ogólnej {{Code|nazwa przestrzeni nazw i}}. W tej funkcji trzeba też podawać parametry nazwy jednostek {{Code|nazwa jednostki}}, {{Code|nazwa jednostki 1}}, {{Code|nazwa jednostki 2}}, {{Code|nazwa jednostki 3}},... Parametry podaje się w parametrach rodzica wywołania tej funkcji {{Code|{{m|Pudełko|Nazwa przestrzeni nazw 2}}}} (ale ich nie trzeba podawać w dziecku, ale można) i w parametrach dziecka, jeśli chodzi o zmienną {{Code|numer jednostki}}, czyli np.: {{Code|{{m|Pudełko|Nazwa przestrzeni nazw 2|numer jednostki{{=}}<jakaś liczba całkowita dodatnia>}}}}. Te parametry przestrzenne zamiast w rodzicu w szablonie można podać w ramce dziecka, wtedy parametry dziecka mają pierwszeństwo. Przestrzeń nazw z parametrów nazw przestrzennych może odpowiadać wartości przestrzeni głównej, to wtedy odpowiednia przestrzeń nazw z parametru nazwy jednostki się liczy w tej funkcji, wtedy jest liczona nazwa przestrzeni nazw z tego parametru. Gdy parametry przestrzenne lub typ jednostki w drugim podejściu nie wskazują na przestrzeń główną, to wtedy działanie tej funkcji jest podobne do {{Code|{{sr|#p["Nazwa przestrzeni nazw"](frame,...)|p=Pudełko}}}}. Definicja skrótowa funkcji: <syntaxhighlight lang="lua"> p["Nazwa przestrzeni nazw 2"]=function(frame,czy_uwzglednic_alternatywna_nazwe,i)...end; </syntaxhighlight> Wtedy ciało funkcji tej, czyli jego definicja w środku, jest: <syntaxhighlight lang="lua"> local pudelko_pomocne_modul=require("Module:Pudełko/Pomocne"); -- Liczy nazwę przestrzeni nazw, jeżeli z parametrów przestrzennych przestrzeń wskazuje na główną, to wtedy jest liczona przestrzeń nazw z nazwy jednostki; return pudelko_pomocne_modul.Nazwa_przestrzeni_nazw_2(frame,czy_uwzglednic_alternatywna_nazwe,i) </syntaxhighlight> Parametry funkcji: * {{Code|frame}} - tablica ramki tablicy transportu, * {{Code|czy_uwzglednic_alternatywna_nazwe}} - czy ma uwzględniać nazwę przestrzeni nazw domyślną szablonu, dostępne wartości: {{Code|false}}, w której nazwa domyślna nie jest uwzględniana wtedy, oraz {{Code|nil}} i {{Code|true}}, które oznaczają to samo, w tym jeżeli ona jest uwzględniana, wtedy jest brany parametr pierwszy dziecka, który musi istnieć przy takiej wartości tego parametru, tzn. {{Code|{{m|Pudełko|Nazwa przestrzeni nazw 2|Szablon}}}}, a jeśli nazwa uzyskana nazwy przestrzeni nazw jest w takim przypadku błędna, to brany jest ten element, a jeżeli nazwa domyślna jest błędna, czyli {{Code|{{m|Pudełko|Nazwa przestrzeni nazw 2|Moja przestrzeń}}}}, wtedy funkcja zwraca stan błędu {{Code|(błąd)}}. * {{Code|i}} - numer zmiennej nazwy przestrzeni nazw. Funkcja wykorzystuje {{Code|{{sr|#p.Nazwa_przestrzeni_nazw_2(frame,...)|p=Pudełko/Pomocne}}}} do wyznaczania ogólnego nazwy przestrzeni nazw dla pozycji bazowej i numerkowej, tzn. dla pozycji: jeden, dwa, trzy,..., itd, i ich ogólnej. Parametr ramki tablicy transportu rodzica szablonu: * {{Code|nazwa przestrzeni nazw}}, {{Code|nazwa przestrzeni nazw 1}}, {{Code|nazwa przestrzeni nazw 2}}, {{Code|nazwa przestrzeni nazw 3}},..., {{Code|nazwa przestrzeni nazw i}} - nazwy przestrzeni nazw dla pozycji bazowej oraz zwykłej i ogólnej numerkowej, * {{Code|nazwa jednostki}}, {{Code|nazwa jednostki 1}}, {{Code|nazwa jednostki 2}}, {{Code|nazwa jednostki 3}},... - nazwy jednostek dla pozycji bazowej i numerkowej, * {{Code|typ jednostki}}, {{Code|typ jednostki 1}}, {{Code|typ jednostki 2}}, {{Code|typ jednostki 3}},..., {{Code|typ jednostki i}} - typy jednostek, którym odpowiadają pewne przestrzenie przedmiotowe, dla pozycji bazowej, numerkowej i ogólnej, ** {{Code|dyskusja typu jednostki}}, {{Code|dyskusja typu jednostki 1}}, {{Code|dyskusja typ jednostki 2}}, {{Code|dyskusja typ jednostki 3}},..., {{Code|dyskusja typ jednostki i}} - czy dany typ jednostki ma przedstawiać, jeśli niepusta, przestrzeń dyskusji dla pozycji bazowej, numerkowej i ogólnej. Parametry ramki tablicy transportu dziecka: * Parametry dziecka są takie same jak rodzica dla funkcji pudełkowej plus tu wymienione, * {{Code|numer jednostki}} - jak parametr {{Code|i}} nie został ustawiony, to wtedy liczy się ta zmienna. Przykłady: <syntaxhighlight lang="mediawiki"> {{Nazwa szablonu|nazwa przestrzeni nazw=Wikibooks|nazwa przestrzeni nazw 1=Szablon|nazwa przestrzeni nazw i=|nazwa jednostki 2=Wikibooks:Strona}} </syntaxhighlight> W dziecku powiedzmy jest wywołanie, i szukamy nazwy przestrzeni nazw o numerze dwa, która została podana, ale istnieje za to jej wersji ogólna {{Code|nazwa przestrzeni nazw i}} i domyślna {{Code|nazwa przestrzeni nazw}}, ale wtedy dla tego numerkowego liczy się to ogólne z {{Code| i}}, a ponieważ ta nazwa jest pusta, więc będziemy liczyli nazwę przestrzeni nazw z {{Code|nazwa jednostki 2}}: <syntaxhighlight lang="mediawiki"> {{#invoke:Pudełko|Nazwa przestrzeni nazw 2|numer jednostki=2}} </syntaxhighlight> Na podstawie powyższego przykładu otrzymamy wynik o schemacie, nie wyniku, bo tam nie ma zmiennej {{Code|nazwa przestrzeni nazw 1}}, ale jest {{Code|nazwa przestrzeni nazw i}}: <syntaxhighlight lang="mediawiki"> <!-- Ale nie "nazwa przestrzeni nazw 2", bo jej nie ma, ale za to istnieje "nazwa przestrzeni nazw i"; --> <!-- nazwa przestrzeni nazw 2=nazwa przestrzeni nazw i="", a nazwa jednostki 2="Wikibooks:Strona"; --> <!-- Czyli wynik: --> Wikibooks <!-- Widzimy, że wygenerowała się nazwa przestrzeni nazw, którą jest przestrzeń nieprogramowa, ale projektu, wychodząca z nazwy jednostek w tym przypadku z "nazwa jednostki 2"; --> </syntaxhighlight> Nie jest brana w tym powyższym przykładzie zmienna {{Code|nazwa przestrzeni nazw}}, bo jej nie ma, ale za to jest {{Code|nazwa przestrzeni nazw i}}, bo ona występuje jako parametr domyślny ogólny dla parametrów numerkowych. Tytaj jest używana jest zmienna {{Code|nazwa jednostki 2}} do wygenerowania ostatecznego wyniku, bo jak można zauważyć, parametry przestrzenne wskazują na przestrzeń główną, a nazwy jednostek już nie. Przykłady w wikikodzie: * {{Code|{{m|Pudełko|Nazwa przestrzeni nazw 2|numer jednostki{{=}}2}}}} → {{Tt|{{#invoke:Pudełko|Nazwa przestrzeni nazw 2|numer jednostki=2}}}} * {{Code|{{m|Pudełko|Nazwa przestrzeni nazw 2|Szablon|nazwa przestrzeni nazw i{{=}}Moja przestrzeń|numer jednostki{{=}}2}}}} → {{Tt|{{#invoke:Pudełko|Nazwa przestrzeni nazw 2|Szablon|nazwa przestrzeni nazw i=Moja przestrzeń|numer jednostki=2}}}} * {{Code|{{m|Pudełko|Nazwa przestrzeni nazw 2|nazwa przestrzeni nazw 2{{=}}|nazwa jednostki 2{{=}}Szablon:Strona|numer jednostki{{=}}2}}}} → {{Tt|{{#invoke:Pudełko|Nazwa przestrzeni nazw 2|nazwa przestrzeni nazw 2=|nazwa jednostki 2=Szablon:Strona|numer jednostki=2}}}} * {{Code|{{m|Pudełko|Nazwa przestrzeni nazw 2|nazwa przestrzeni nazw i{{=}}|nazwa jednostki 2{{=}}Szablon:Strona|numer jednostki{{=}}2}}}} → {{Tt|{{#invoke:Pudełko|Nazwa przestrzeni nazw 2|nazwa przestrzeni nazw i=|nazwa jednostki 2=Szablon:Strona|numer jednostki=2}}}} * {{Code|{{m|Pudełko|Nazwa przestrzeni nazw 2|Szablon|nazwa przestrzeni nazw{{=}}|nazwa jednostki 2{{=}}Wikibooks:Strona|numer jednostki{{=}}2}}}} → {{Tt|{{#invoke:Pudełko|Nazwa przestrzeni nazw 2|Szablon|nazwa przestrzeni nazw=|nazwa jednostki 2=Wikibooks:Strona|numer jednostki=2}}}} Powyżej dla przykładu podano parametry nie w rodzicu w szablonie, tylko w dziecku, jeśli chodzi o parametry nazw przestrzeni nazw i nazw jednostek, ale ich się za to nie powinno podawać w tych ramach, tylko w szablonach, w których wywoływane są te ramki pudełek {{Code|{{m|Pudełko}}}}, ale tak tutaj tak zrobiono by było najłatwiej sprawdzić działanie tego typu funkcji. Analogicznie możemy podawać parametry typu jednostki, np.: wywołaniu modułowym {{Code|{{m|Pudełko|Nazwa przestrzeni nazw 2|typ jednostki 2{{=}}Podręcznik|nazwa jednostki 2{{=}}Szablon:Strona|numer jednostki{{=}}2}}}} (ale wtedy jest brana przestrzeń nazw z nazwy jednostki), ale o tym więcej w rozdziałach {{Code|{{sr|#p["Typ jednostki 2"](frame,i)|p=Pudełko}}}} w „{{sr|#Funkcje typu jednostki|p=Pudełko}}”, on definiuje przestrzenie przedmiotowe, czy dyskusji ale można lub nie użyć parametru dyskusji typu jednostki z wartością niepustą, wtedy wyświetli się nazwa przestrzeni nazw dyskusji. Jeżeli typ jednostki wskazuje na przestrzeń nazw główną, wtedy się liczą parametry nazw jednostek. Typ jednostki nie ma takiej samej wartości dla przestrzeni przedmiotowej, co dyskusji. Również parametry typu jednostki nie powinno się podawać w dziecku w ramce, tylko w rodzicu w szablonie jako parametry, w którym ta ramka jest wywoływana, ale tutaj podano jedynie dla przykładu, jak najłatwiej sprawdzić działanie tych parametrów tej funkcji. Najpierw w funkcji nagłówku brane są parametry nazw przestrzeni nazw, a jeżeli ich nie ma, to parametry typu jednostki, a jeżeli nie ma lub parametry przestrzenne wskazują na przestrzeń główną, i nie ma nazwy jednostki, to generowane są nazwy tej funkcji na podstawie aktualnej strony. === {{Code|p["Nazwa przedmiotowej przestrzeni nazw 2"](frame,...)}} === Funkcja pisze przedmiotową nazwę przestrzeni nazw jakikolwiek nazwy przestrzeni nazw (tzn. nazwę przedmiotową nazwy przestrzenie nazw, czyli nie dyskusji, zamieniana jest na nią samą, czyli identyfikator przestrzeni się nie zmienia, a dyskusji, nie przedmiotową, przekształca się na przedmiotową jej odpowiadającą, czyli w tym przypadku identyfikator przestrzeni zmniejsza się o numer mniej), według, i nie zawsze tylko, podanej w zmiennej {{Code|nazwa przestrzeni nazw}} dla pozycja bazowej w podanych parametrach szablonu rodzicu ramki dziecka, lub dla innej pozycji należy parametr podawać w formie {{Code|nazwa przestrzeni nazw 1}}, {{Code|nazwa przestrzeni nazw 2}}, {{Code|nazwa przestrzeni nazw 3}},..., lub te parametry można podać w postaci ogólnej {{Code|nazwa przestrzeni nazw i}}. W tej funkcji trzeba też podawać parametry nazwy jednostek {{Code|nazwa jednostki}}, {{Code|nazwa jednostki 1}}, {{Code|nazwa jednostki 2}}, {{Code|nazwa jednostki 3}},... Parametry podaje się w parametrach rodzica wywołania tej funkcji {{Code|{{m|Pudełko|Nazwa przedmiotowej przestrzeni nazw 2}}}} (ale ich nie trzeba podawać w dziecku, ale można) i w parametrach dziecka, jeśli chodzi o zmienną {{Code|numer jednostki}}, czyli np.: {{Code|{{m|Pudełko|Nazwa przedmiotowej przestrzeni nazw 2|numer jednostki{{=}}<jakaś liczba całkowita dodatnia>}}}}. Te parametry przestrzenne zamiast w rodzicu w szablonie można podać w ramce dziecka, wtedy parametry dziecka mają pierwszeństwo. Przestrzeń nazw z parametrów nazw przestrzennych po przekształceniu na przedmiotową może odpowiadać wartości przestrzeni głównej, to wtedy odpowiednia przestrzeń nazw z parametru nazwy jednostki się liczy w tej funkcji, wtedy jest liczona nazwa przestrzeni nazw z tego parametru. Gdy parametry przestrzenne lub typ jednostki w drugim podejściu nie wskazują na przestrzeń główną, to wtedy działanie tej funkcji jest podobne do {{Code|{{sr|#p["Nazwa przedmiotowej przestrzeni nazw"](frame,...)|p=Pudełko}}}}. Definicja skrótowa funkcji: <syntaxhighlight lang="lua"> p["Nazwa przedmiotowej przestrzeni nazw 2"]=function(frame,czy_uwzglednic_alternatywna_nazwe,i)...end; </syntaxhighlight> Wtedy ciało funkcji tej, czyli jego definicja w środku, jest: <syntaxhighlight lang="lua"> local pudelko_pomocne_modul=require("Module:Pudełko/Pomocne"); return pudelko_pomocne_modul.Nazwa_przestrzeni_nazw_przedmiotowa_dyskusji_2(frame,czy_uwzglednic_alternatywna_nazwe,i,"przedmiotowa"); </syntaxhighlight> Parametry funkcji: * {{Code|frame}} - tablica ramki tablicy transportu, * {{Code|czy_uwzglednic_alternatywna_nazwe}} - czy ma uwzględniać nazwę przestrzeni nazw domyślną szablonu, dostępne wartości: {{Code|false}}, w której nazwa domyślna nie jest uwzględniana wtedy, oraz {{Code|nil}} i {{Code|true}}, które oznaczają to samo, w tym jeżeli ona jest uwzględniana, wtedy jest brany parametr pierwszy dziecka, który musi istnieć przy takiej wartości tego parametru, tzn. {{Code|{{m|Pudełko|Nazwa przedmiotowej przestrzeni nazw 2|Szablon}}}}, nazwa domyślna zostanie zamieniona na przedmiotową, a jeżeli jest już taka, to żadnej zamiany nie ma, a jeśli nazwa uzyskana nazwy przestrzeni nazw jest w takim przypadku błędna, to brany jest ten element, a jeżeli nazwa domyślna jest błędna, czyli {{Code|{{m|Pudełko|Nazwa przedmiotowej przestrzeni nazw 2|Moja przestrzeń}}}}, wtedy funkcja zwraca stan błędu {{Code|(błąd)}}. * {{Code|i}} - numer zmiennej nazwy przestrzeni nazw. Funkcja wykorzystuje {{Code|{{sr|#p.Nazwa_przestrzeni_nazw_przedmiotowa_dyskusji_2(frame,...)|p=Pudełko/Pomocne}}}} do wyznaczania ogólnego nazwy przestrzeni nazw dla pozycji bazowej i numerkowej, tzn. dla pozycji: jeden, dwa, trzy,..., itd, i ich ogólnej. Parametr ramki tablicy transportu rodzica szablonu: * {{Code|nazwa przestrzeni nazw}}, {{Code|nazwa przestrzeni nazw 1}}, {{Code|nazwa przestrzeni nazw 2}}, {{Code|nazwa przestrzeni nazw 3}},..., {{Code|nazwa przestrzeni nazw i}} - nazwy przestrzeni nazw dla pozycji bazowej oraz zwykłej i ogólnej numerkowej, * {{Code|nazwa jednostki}}, {{Code|nazwa jednostki 1}}, {{Code|nazwa jednostki 2}}, {{Code|nazwa jednostki 3}},... - nazwy jednostek dla pozycji bazowej i numerkowej, * {{Code|typ jednostki}}, {{Code|typ jednostki 1}}, {{Code|typ jednostki 2}}, {{Code|typ jednostki 3}},..., {{Code|typ jednostki i}} - typy jednostek, którym odpowiadają pewne przestrzenie przedmiotowe, dla pozycji bazowej, numerkowej i ogólnej. Parametry ramki tablicy transportu dziecka: * Parametry dziecka są takie same jak rodzica dla funkcji pudełkowej plus tu wymienione, * {{Code|numer jednostki}} - jak parametr {{Code|i}} nie został ustawiony, to wtedy liczy się ta zmienna. Przykłady: <syntaxhighlight lang="mediawiki"> {{Nazwa szablonu|nazwa przestrzeni nazw=Wikibooks|nazwa przestrzeni nazw 1=Szablon|nazwa przestrzeni nazw i=|nazwa jednostki 2=Dyskusja Wikibooks:Strona}} </syntaxhighlight> W dziecku powiedzmy jest wywołanie, i szukamy nazwy przestrzeni nazw o numerze dwa, która została podana, ale istnieje za to jej wersji ogólna {{Code|nazwa przestrzeni nazw i}} i domyślna {{Code|nazwa przestrzeni nazw}}, ale wtedy dla tego numerkowego liczy się to ogólne z {{Code| i}}, a ponieważ ta nazwa jest pusta, więc będziemy liczyli nazwę przestrzeni nazw z {{Code|nazwa jednostki 2}}: <syntaxhighlight lang="mediawiki"> {{#invoke:Pudełko|Nazwa przedmiotowej przestrzeni nazw 2|numer jednostki=2}} </syntaxhighlight> Na podstawie powyższego przykładu otrzymamy wynik o schemacie, nie wyniku, bo tam nie ma zmiennej {{Code|nazwa przestrzeni nazw 1}}, ale jest {{Code|nazwa przestrzeni nazw i}}: <syntaxhighlight lang="mediawiki"> <!-- Ale nie "nazwa przestrzeni nazw 2", bo jej nie ma, ale za to istnieje "nazwa przestrzeni nazw i"; --> <!-- nazwa przestrzeni nazw 2=nazwa przestrzeni nazw i="", a nazwa jednostki 2="Dyskusja Wikibooks:Strona"; --> <!-- Czyli wynik: --> Wikibooks <!-- Widzimy, że wygenerowała się nazwa przestrzeni nazw, którą jest przestrzeń nieprogramowa, ale projektu, wychodząca z nazwy jednostek w tym przypadku z "nazwa jednostki 2"; --> </syntaxhighlight> Nie jest brana w tym powyższym przykładzie zmienna {{Code|nazwa przestrzeni nazw}}, bo jej nie ma, ale za to jest {{Code|nazwa przestrzeni nazw i}}, bo ona występuje jako parametr domyślny ogólny dla parametrów numerkowych. Tytaj jest używana jest zmienna {{Code|nazwa jednostki 2}} do wygenerowania ostatecznego wyniku, bo jak można zauważyć, parametry przestrzenne wskazują na przestrzeń główną, a nazwy jednostek już nie. Przykłady w wikikodzie: * {{Code|{{m|Pudełko|Nazwa przedmiotowej przestrzeni nazw 2|numer jednostki{{=}}2}}}} → {{Tt|{{#invoke:Pudełko|Nazwa przedmiotowej przestrzeni nazw 2|numer jednostki=2}}}} * {{Code|{{m|Pudełko|Nazwa przedmiotowej przestrzeni nazw 2|Dyskusja szablonu|nazwa przestrzeni nazw i{{=}}Moja przestrzeń|numer jednostki{{=}}2}}}} → {{Tt|{{#invoke:Pudełko|Nazwa przedmiotowej przestrzeni nazw 2|Dyskusja szablonu|nazwa przestrzeni nazw i=Moja przestrzeń|numer jednostki=2}}}} * {{Code|{{m|Pudełko|Nazwa przedmiotowej przestrzeni nazw 2|nazwa przestrzeni nazw 2{{=}}Dyskusja|nazwa jednostki 2{{=}}Dyskusja szablonu:Strona|numer jednostki{{=}}2}}}} → {{Tt|{{#invoke:Pudełko|Nazwa przedmiotowej przestrzeni nazw 2|nazwa przestrzeni nazw 2=Dyskusja|nazwa jednostki 2=Dyskusja szablonu:Strona|numer jednostki=2}}}} * {{Code|{{m|Pudełko|Nazwa przedmiotowej przestrzeni nazw 2|nazwa przestrzeni nazw i{{=}}Dyskusja|nazwa jednostki 2{{=}}Dyskusja szablonu:Strona|numer jednostki{{=}}2}}}} → {{Tt|{{#invoke:Pudełko|Nazwa przedmiotowej przestrzeni nazw 2|nazwa przestrzeni nazw i=Dyskusja|nazwa jednostki 2=Dyskusja szablonu:Strona|numer jednostki=2}}}} * {{Code|{{m|Pudełko|Nazwa przedmiotowej przestrzeni nazw 2|Dyskusja szablonu|nazwa przestrzeni nazw{{=}}Dyskusja|nazwa jednostki 2{{=}}Wikibooks:Strona|numer jednostki{{=}}2}}}} → {{Tt|{{#invoke:Pudełko|Nazwa przedmiotowej przestrzeni nazw 2|Dyskusja szablonu|nazwa przestrzeni nazw=Dyskusja|nazwa jednostki 2=Dyskusja Wikibooks:Strona|numer jednostki=2}}}} Powyżej dla przykładu podano parametry nie w rodzicu w szablonie, tylko w dziecku, jeśli chodzi o parametry nazw przestrzeni nazw i nazw jednostek, ale ich się za to nie powinno podawać w tych ramach, tylko w szablonach, w których wywoływane są te ramki pudełek {{Code|{{m|Pudełko}}}}, ale tak tutaj tak zrobiono by było najłatwiej sprawdzić działanie tego typu funkcji. Analogicznie możemy podawać parametry typu jednostki, np.: wywołaniu modułowym {{Code|{{m|Pudełko|Nazwa przedmiotowej przestrzeni nazw 2|typ jednostki 2{{=}}Podręcznik|nazwa jednostki 2{{=}}Dyskusja szablonu:Strona|numer jednostki{{=}}2}}}} (ale wtedy jest brana przestrzeń nazw z nazwy jednostki), ale o tym więcej w rozdziałach {{Code|{{sr|#p["Przedmiotowy typ jednostki 2"](frame,i)|p=Pudełko}}}} w „{{sr|#Funkcje typu jednostki|p=Pudełko}}”, on definiuje przestrzenie przedmiotowe, ale można użyć parametru dyskusji typu jednostki z wartością niepustą, pustą, czy nawet jej nie podamy, wtedy wyświetli się nazwa przestrzeni nazw przedmiotowej. Jeżeli typ jednostki wskazuje na przestrzeń nazw główną, wtedy się liczą parametry nazw jednostek. Typ jednostki nie ma takiej samej wartości dla przestrzeni przedmiotowej, co dyskusji. Również parametry typu jednostki nie powinno się podawać w dziecku w ramce, tylko w rodzicu w szablonie jako parametry, w którym ta ramka jest wywoływana, ale tutaj podano jedynie dla przykładu, jak najłatwiej sprawdzić działanie tych parametrów tej funkcji. Najpierw w funkcji nagłówku brane są parametry nazw przestrzeni nazw, a jeżeli ich nie ma, to parametry typu jednostki, a jeżeli nie ma lub parametry przestrzenne wskazują na przestrzeń główną, i nie ma nazwy jednostki, to generowane są nazwy tej funkcji na podstawie aktualnej strony. === {{Code|p["Nazwa przestrzeni nazw dyskusji 2"](frame,...)}} === Funkcja pisze nazwę przestrzeni nazw dyskusji jakikolwiek nazwy przestrzeni nazw (tzn. nazwę dyskusji nazwy przestrzenie nazw, czyli nie przedmiotowej, zamieniana jest na nią samą, czyli identyfikator przestrzeni się nie zmienia, a przedmiotową, nie dyskusji, przekształca się na dyskusji jej odpowiadającą, czyli w tym przypadku identyfikator przestrzeni zwiększa się o numer więcej), według, i nie zawsze tylko, podanej w zmiennej {{Code|nazwa przestrzeni nazw}} dla pozycja bazowej w podanych parametrach szablonu rodzicu ramki dziecka, lub dla innej pozycji należy parametr podawać w formie {{Code|nazwa przestrzeni nazw 1}}, {{Code|nazwa przestrzeni nazw 2}}, {{Code|nazwa przestrzeni nazw 3}},..., lub te parametry można podać w postaci ogólnej {{Code|nazwa przestrzeni nazw i}}. W tej funkcji trzeba też podawać parametry nazwy jednostek {{Code|nazwa jednostki}}, {{Code|nazwa jednostki 1}}, {{Code|nazwa jednostki 2}}, {{Code|nazwa jednostki 3}},... Parametry podaje się w parametrach rodzica wywołania tej funkcji {{Code|{{m|Pudełko|Nazwa przestrzeni nazw dyskusji 2}}}} (ale ich nie trzeba podawać w dziecku, ale można) i w parametrach dziecka, jeśli chodzi o zmienną {{Code|numer jednostki}}, czyli np.: {{Code|{{m|Pudełko|Nazwa przestrzeni nazw dyskusji 2|numer jednostki{{=}}<jakaś liczba całkowita dodatnia>}}}}. Te parametry przestrzenne zamiast w rodzicu w szablonie można podać w ramce dziecka, wtedy parametry dziecka mają pierwszeństwo. Przestrzeń nazw z parametrów nazw przestrzennych po przekształceniu może odpowiadać wartości przestrzeni głównej, to wtedy odpowiednia przestrzeń nazw z parametru nazwy jednostki się liczy w tej funkcji, wtedy jest liczona nazwa przestrzeni nazw dyskusji z tego parametru. Gdy parametry przestrzenne lub typ jednostki w drugim podejściu nie wskazują na przestrzeń główną, to wtedy działanie tej funkcji jest podobne do {{Code|{{sr|#p["Nazwa dyskusji przestrzeni nazw"](frame,...)|p=Pudełko}}}}. Definicja skrótowa funkcji: <syntaxhighlight lang="lua"> p["Nazwa przestrzeni nazw dyskusji 2"]=function(frame,czy_uwzglednic_alternatywna_nazwe,i)...end; </syntaxhighlight> Wtedy ciało funkcji tej, czyli jego definicja w środku, jest: <syntaxhighlight lang="lua"> local pudelko_pomocne_modul=require("Module:Pudełko/Pomocne"); return pudelko_pomocne_modul.Nazwa_przestrzeni_nazw_przedmiotowa_dyskusji_2(frame,czy_uwzglednic_alternatywna_nazwe,i,"dyskusja"); </syntaxhighlight> Parametry funkcji: * {{Code|frame}} - tablica ramki tablicy transportu, * {{Code|czy_uwzglednic_alternatywna_nazwe}} - czy ma uwzględniać nazwę przestrzeni nazw domyślną szablonu, dostępne wartości: {{Code|false}}, w której nazwa domyślna nie jest uwzględniana wtedy, oraz {{Code|nil}} i {{Code|true}}, które oznaczają to samo, w tym jeżeli ona jest uwzględniana, wtedy jest brany parametr pierwszy dziecka, który musi istnieć przy takiej wartości tego parametru, tzn. {{Code|{{m|Pudełko|Nazwa przestrzeni nazw dyskusji 2|Szablon}}}}, nazwa domyślna zostanie zamieniona na dyskusji, a jeżeli jest już taka, to nie ma takiej zamiany, a jeśli nazwa uzyskana nazwy przestrzeni nazw jest w takim przypadku błędna, to brany jest ten element, a jeżeli nazwa domyślna jest błędna, czyli {{Code|{{m|Pudełko|Nazwa przestrzeni nazw dyskusji 2|Moja przestrzeń}}}}, wtedy funkcja zwraca stan błędu {{Code|(błąd)}}. * {{Code|i}} - numer zmiennej nazwy przestrzeni nazw. Funkcja wykorzystuje {{Code|{{sr|#p.Nazwa_przestrzeni_nazw_przedmiotowa_dyskusji_2(frame,...)|p=Pudełko/Pomocne}}}} do wyznaczania ogólnego nazwy przestrzeni nazw dla pozycji bazowej i numerkowej, tzn. dla pozycji: jeden, dwa, trzy,..., itd, i ich ogólnej. Parametr ramki tablicy transportu rodzica szablonu: * {{Code|nazwa przestrzeni nazw}}, {{Code|nazwa przestrzeni nazw 1}}, {{Code|nazwa przestrzeni nazw 2}}, {{Code|nazwa przestrzeni nazw 3}},..., {{Code|nazwa przestrzeni nazw i}} - nazwy przestrzeni nazw dla pozycji bazowej oraz zwykłej i ogólnej numerkowej, * {{Code|nazwa jednostki}}, {{Code|nazwa jednostki 1}}, {{Code|nazwa jednostki 2}}, {{Code|nazwa jednostki 3}},... - nazwy jednostek dla pozycji bazowej i numerkowej, * {{Code|typ jednostki}}, {{Code|typ jednostki 1}}, {{Code|typ jednostki 2}}, {{Code|typ jednostki 3}},..., {{Code|typ jednostki i}} - typy jednostek, którym odpowiadają pewne przestrzenie przedmiotowe, dla pozycji bazowej, numerkowej i ogólnej. Parametry ramki tablicy transportu dziecka: * Parametry dziecka są takie same jak rodzica dla funkcji pudełkowej plus tu wymienione, * {{Code|numer jednostki}} - jak parametr {{Code|i}} nie został ustawiony, to wtedy liczy się ta zmienna. Przykłady: <syntaxhighlight lang="mediawiki"> {{Nazwa szablonu|nazwa przestrzeni nazw=Wikibooks|nazwa przestrzeni nazw 1=Szablon|nazwa przestrzeni nazw i=|nazwa jednostki 2=Wikibooks:Strona}} </syntaxhighlight> W dziecku powiedzmy jest wywołanie, i szukamy nazwy przestrzeni nazw o numerze dwa, która została podana, ale istnieje za to jej wersji ogólna {{Code|nazwa przestrzeni nazw i}} i domyślna {{Code|nazwa przestrzeni nazw}}, ale wtedy dla tego numerkowego liczy się to ogólne z {{Code| i}}, a ponieważ ta nazwa jest pusta, więc będziemy liczyli nazwę przestrzeni nazw z {{Code|nazwa jednostki 2}}: <syntaxhighlight lang="mediawiki"> {{#invoke:Pudełko|Nazwa przestrzeni nazw dyskusji 2|numer jednostki=2}} </syntaxhighlight> Na podstawie powyższego przykładu otrzymamy wynik o schemacie, nie wyniku, bo tam nie ma zmiennej {{Code|nazwa przestrzeni nazw 1}}, ale jest {{Code|nazwa przestrzeni nazw i}}: <syntaxhighlight lang="mediawiki"> <!-- Ale nie "nazwa przestrzeni nazw 2", bo jej nie ma, ale za to istnieje "nazwa przestrzeni nazw i"; --> <!-- nazwa przestrzeni nazw 2=nazwa przestrzeni nazw i="", a nazwa jednostki 2="Wikibooks:Strona"; --> <!-- Czyli wynik: --> Dyskusja Wikibooks <!-- Widzimy, że wygenerowała się nazwa przestrzeni nazw, którą jest przestrzeń nieprogramowa, ale dyskusji projektu, wychodząca z nazwy jednostek w tym przypadku z "nazwa jednostki 2"; --> </syntaxhighlight> Nie jest brana w tym powyższym przykładzie zmienna {{Code|nazwa przestrzeni nazw}}, bo jej nie ma, ale za to jest {{Code|nazwa przestrzeni nazw i}}, bo ona występuje jako parametr domyślny ogólny dla parametrów numerkowych. Tytaj jest używana jest zmienna {{Code|nazwa jednostki 2}} do wygenerowania ostatecznego wyniku, bo jak można zauważyć, parametry przestrzenne wskazują na przestrzeń główną, a nazwy jednostek już nie. Przykłady w wikikodzie: * {{Code|{{m|Pudełko|Nazwa przestrzeni nazw dyskusji 2|numer jednostki{{=}}2}}}} → {{Tt|{{#invoke:Pudełko|Nazwa przestrzeni nazw dyskusji 2|numer jednostki=2}}}} * {{Code|{{m|Pudełko|Nazwa przestrzeni nazw dyskusji 2|Szablon|nazwa przestrzeni nazw i{{=}}Moja przestrzeń|numer jednostki{{=}}2}}}} → {{Tt|{{#invoke:Pudełko|Nazwa przestrzeni nazw dyskusji 2|Szablon|nazwa przestrzeni nazw i=Moja przestrzeń|numer jednostki=2}}}} * {{Code|{{m|Pudełko|Nazwa przestrzeni nazw dyskusji 2|nazwa przestrzeni nazw 2{{=}}|nazwa jednostki 2{{=}}Szablon:Strona|numer jednostki{{=}}2}}}} → {{Tt|{{#invoke:Pudełko|Nazwa przestrzeni nazw dyskusji 2|nazwa przestrzeni nazw 2=|nazwa jednostki 2=Szablon:Strona|numer jednostki=2}}}} * {{Code|{{m|Pudełko|Nazwa przestrzeni nazw dyskusji 2|nazwa przestrzeni nazw i{{=}}|nazwa jednostki 2{{=}}Szablon:Strona|numer jednostki{{=}}2}}}} → {{Tt|{{#invoke:Pudełko|Nazwa przestrzeni nazw dyskusji 2|nazwa przestrzeni nazw i=|nazwa jednostki 2=Szablon:Strona|numer jednostki=2}}}} * {{Code|{{m|Pudełko|Nazwa przestrzeni nazw dyskusji 2|Szablon|nazwa przestrzeni nazw{{=}}|nazwa jednostki 2{{=}}Wikibooks:Strona|numer jednostki{{=}}2}}}} → {{Tt|{{#invoke:Pudełko|Nazwa przestrzeni nazw dyskusji 2|Szablon|nazwa przestrzeni nazw=|nazwa jednostki 2=Dyskusja Wikibooks:Strona|numer jednostki=2}}}} Powyżej dla przykładu podano parametry nie w rodzicu w szablonie, tylko w dziecku, jeśli chodzi o parametry nazw przestrzeni nazw i nazw jednostek, ale ich się za to nie powinno podawać w tych ramach, tylko w szablonach, w których wywoływane są te ramki pudełek {{Code|{{m|Pudełko}}}}, ale tak tutaj tak zrobiono by było najłatwiej sprawdzić działanie tego typu funkcji. Analogicznie możemy podawać parametry typu jednostki, np.: wywołaniu modułowym {{Code|{{m|Pudełko|Nazwa przestrzeni nazw dyskusji 2|typ jednostki 2{{=}}Podręcznik|nazwa jednostki 2{{=}}Szablon:Strona|numer jednostki{{=}}2}}}} (ale wtedy jest brana przestrzeń nazw z nazwy jednostki), ale o tym więcej w rozdziałach {{Code|{{sr|#p["Dyskusyjny typ jednostki 3"](frame,i)|p=Pudełko}}}} w „{{sr|#Funkcje typu jednostki|p=Pudełko}}”, one definiują przestrzenie dyskusji, ale można użyć parametru dyskusji typu jednostki z obojętnie jaką wartością niepustą, czy pustą, czy nawet jej nie podamy, wtedy wyświetli się nazwa przestrzeni nazw dyskusji. Jeżeli typ jednostki wskazuje na przestrzeń nazw główną, wtedy się liczą parametry nazw jednostek. Typ jednostki nie ma takiej samej wartości dla przestrzeni przedmiotowej, co dyskusji. Również parametry typu jednostki nie powinno się podawać w dziecku w ramce, tylko w rodzicu w szablonie jako parametry, w którym ta ramka jest wywoływana, ale tutaj podano jedynie dla przykładu, jak najłatwiej sprawdzić działanie tych parametrów tej funkcji. Najpierw w funkcji nagłówku brane są parametry nazw przestrzeni nazw, a jeżeli ich nie ma, to parametry typu jednostki, a jeżeli nie ma lub parametry przestrzenne wskazują na przestrzeń główną, i nie ma nazwy jednostki, to generowane są nazwy tej funkcji na podstawie aktualnej strony. == Funkcje pełnych nazw jednostki == === {{Code|p["Pełna nazwa dyskusji jednostki"](frame,i)}} === === {{Code|p["Pełna nazwa przedmiotowa jednostki"](frame,i)}} === === {{Code|p["Pełna nazwa jednostki"](frame,i)}} === == Funkcje pełnych nazw jednostki drugiej wersji == === {{Code|p["Pełna nazwa dyskusji jednostki 2"](frame,i)}} === === {{Code|p["Pełna nazwa przedmiotowa jednostki 2"](frame,i)}} === === {{Code|p["Pełna nazwa jednostki 2"](frame,i)}} === == Funkcje pełnych nazw jednostki trzeciej wersji == === {{Code|p["Pełna nazwa dyskusji jednostki 3"](frame,i)}} === === {{Code|p["Pełna nazwa przedmiotowa jednostki 3"](frame,i)}} === === {{Code|p["Pełna nazwa jednostki 3"](frame,i)}} === == Funkcje nazw jednostki == === {{Code|p["Nazwa jednostki"](frame,i)}} === == Funkcje nazw jednostki drugiej wersji == === {{Code|p["Nazwa jednostki 2"](frame,i)}} === === {{Code|p["Nazwa przedmiotowa jednostki 2"](frame,i)}} === === {{Code|p["Nazwa dyskusji jednostki 2"](frame,i)}} === == Funkcje nazw przestrzeni nazw trzeciej wersji == === {{Code|p["Nazwa przestrzeni nazw 3"](frame,i)}} === Funkcja pisze nazwę przestrzeni nazw, niezależnie, czy to jest przedmiotowa, czy dyskusji, według, i nie zawsze tylko, podanej w zmiennej {{Code|nazwa przestrzeni nazw}} dla pozycja bazowej w podanych parametrach szablonu rodzicu ramki dziecka, lub dla innej pozycji należy parametr podawać w formie {{Code|nazwa przestrzeni nazw 1}}, {{Code|Nazwa przestrzeni nazw 3}}, {{Code|nazwa przestrzeni nazw 3}},..., lub te parametry można podać w postaci ogólnej {{Code|nazwa przestrzeni nazw i}}. W tej funkcji trzeba też podawać parametry nazwy jednostek {{Code|nazwa jednostki}}, {{Code|nazwa jednostki 1}}, {{Code|nazwa jednostki 2}}, {{Code|nazwa jednostki 3}},... Parametry podaje się w parametrach rodzica wywołania tej funkcji {{Code|{{m|Pudełko|Nazwa przestrzeni nazw 3}}}} (ale ich nie trzeba podawać w dziecku, ale można) i w parametrach dziecka, jeśli chodzi o zmienną {{Code|numer jednostki}}, czyli np.: {{Code|{{m|Pudełko|Nazwa przestrzeni nazw 3|numer jednostki{{=}}<jakaś liczba całkowita dodatnia>}}}}. Te parametry przestrzenne zamiast w rodzicu w szablonie można podać w ramce dziecka, wtedy parametry dziecka mają pierwszeństwo. Przestrzeń nazw z parametrów nazw przestrzennych bazowych (bez numerka) może odpowiadać wartości przestrzeni głównej, to wtedy odpowiednia przestrzeń nazw z parametru nazwy jednostki się nie liczy w tej funkcji, aby się liczyła należy użyć funkcji {{Code|{{sr|#p["Nazwa przestrzeni nazw 2"](frame,...)|p=Pudełko}}}}. W tym przypadku funkcja działa jak {{Code|{{sr|#p["Nazwa przestrzeni nazw"](frame,...)|p=Pudełko}}}}. Przestrzeń nazw z parametrów nazw przestrzennych numerkowych może odpowiadać wartości przestrzeni głównej, to wtedy odpowiednia przestrzeń nazw z parametru nazwy jednostki się liczy w tej funkcji, wtedy jest liczona nazwa przestrzeni nazw z tego parametru. Gdy parametry przestrzenne lub typ jednostki w drugim podejściu nie wskazują na przestrzeń główną, to wtedy działanie tej funkcji jest podobne do {{Code|{{sr|#p["Nazwa przestrzeni nazw 2"](frame,...)|p=Pudełko}}}}. Definicja skrótowa funkcji: <syntaxhighlight lang="lua"> p["Nazwa przestrzeni nazw 3"]=function(frame,czy_uwzglednic_alternatywna_nazwe,i)...end; </syntaxhighlight> Wtedy ciało funkcji tej, czyli jego definicja w środku, jest: <syntaxhighlight lang="lua"> -- Jest liczony numer parametru nazwy przestrzeni nazw, domyslnie chodzi tu o numer bazowy parametrów przestrzennych; local numer_jednostki=i or frame.args["numer jednostki"]; local liczba_numeru_jednostki=((numer_jednostki)and(tonumber(numer_jednostki)) or 0); local pudelko_pomocne_modul=require("Module:Pudełko/Pomocne"); -- Liczy nazwę przestrzeni nazw dyskusji na podstawie podanych parametrów; return pudelko_pomocne_modul.Uzyskanie_nazw_jednostki(frame,0,liczba_numeru_jednostki,nil,2); </syntaxhighlight> Parametry funkcji: * {{Code|frame}} - tablica ramki tablicy transportu, * {{Code|czy_uwzglednic_alternatywna_nazwe}} - czy ma uwzględniać nazwę przestrzeni nazw domyślną szablonu, dostępne wartości: {{Code|false}}, w której nazwa domyślna nie jest uwzględniana wtedy, oraz {{Code|nil}} i {{Code|true}}, które oznaczają to samo, w tym jeżeli ona jest uwzględniana, wtedy jest brany parametr pierwszy dziecka, który musi istnieć przy takiej wartości tego parametru, tzn. {{Code|{{m|Pudełko|Nazwa przestrzeni nazw 3|Szablon}}}}, a jeśli nazwa uzyskana nazwy przestrzeni nazw jest w takim przypadku błędna, to brany jest ten element, a jeżeli nazwa domyślna jest błędna, czyli {{Code|{{m|Pudełko|Nazwa przestrzeni nazw 3|Moja przestrzeń}}}}, wtedy funkcja zwraca stan błędu {{Code|(błąd)}}. * {{Code|i}} - numer zmiennej nazwy przestrzeni nazw. Funkcja wykorzystuje {{Code|{{sr|#p.Uzyskanie_nazw_jednostki(frame,...)|p=Pudełko/Pomocne}}}} do wyznaczania ogólnego nazwy przestrzeni nazw dla pozycji bazowej i numerkowej, tzn. dla pozycji: jeden, dwa, trzy,..., itd, i ich ogólnej. Parametr ramki tablicy transportu rodzica szablonu: * {{Code|nazwa przestrzeni nazw}}, {{Code|nazwa przestrzeni nazw 1}}, {{Code|Nazwa przestrzeni nazw 3}}, {{Code|nazwa przestrzeni nazw 3}},..., {{Code|nazwa przestrzeni nazw i}} - nazwy przestrzeni nazw dla pozycji bazowej oraz zwykłej i ogólnej numerkowej, * {{Code|nazwa jednostki}}, {{Code|nazwa jednostki 1}}, {{Code|nazwa jednostki 2}}, {{Code|nazwa jednostki 3}},... - nazwy jednostek dla pozycji bazowej i numerkowej, * {{Code|typ jednostki}}, {{Code|typ jednostki 1}}, {{Code|typ jednostki 2}}, {{Code|typ jednostki 3}},..., {{Code|typ jednostki i}} - typy jednostek, którym odpowiadają pewne przestrzenie przedmiotowe, dla pozycji bazowej, numerkowej i ogólnej, ** {{Code|dyskusja typu jednostki}}, {{Code|dyskusja typu jednostki 1}}, {{Code|dyskusja typ jednostki 2}}, {{Code|dyskusja typ jednostki 3}},..., {{Code|dyskusja typ jednostki i}} - czy dany typ jednostki ma przedstawiać, jeśli niepusta, przestrzeń dyskusji dla pozycji bazowej, numerkowej i ogólnej. Parametry ramki tablicy transportu dziecka: * Parametry dziecka są takie same jak rodzica dla funkcji pudełkowej plus tu wymienione, * {{Code|numer jednostki}} - jak parametr {{Code|i}} nie został ustawiony, to wtedy liczy się ta zmienna. Przykłady: <syntaxhighlight lang="mediawiki"> {{Nazwa szablonu 1|nazwa przestrzeni nazw=Wikibooks|nazwa przestrzeni nazw=|nazwa przestrzeni nazw i=|nazwa jednostki=Szablon:Strona}} ---- {{Nazwa szablonu 2|nazwa przestrzeni nazw=Wikibooks|nazwa przestrzeni nazw 1=Szablon|nazwa przestrzeni nazw i=|nazwa jednostki 2=Wikibooks:Strona}} </syntaxhighlight> W pierwszym wywołaniu {{Code|nazwa przestrzeni nazw}} jest puste, ale dla tego bazowego (bez numerka) szukamy przestrzeni nazw, a więc ta nazwa jest ostateczna. ---- W drugim wywołaniu w dziecku powiedzmy jest wywołanie, i szukamy nazwy przestrzeni nazw o numerze dwa, która została podana, ale istnieje za to jej wersji ogólna {{Code|nazwa przestrzeni nazw i}} i domyślna {{Code|nazwa przestrzeni nazw}}, ale wtedy dla tego numerkowego liczy się to ogólne z {{Code| i}}, a ponieważ ta nazwa jest pusta, więc będziemy liczyli nazwę przestrzeni nazw z {{Code|nazwa jednostki 2}}. Odpowiadająca powyższemu kodowi, powiedzmy wikikod, według ich zawartości, przedstawia się: <syntaxhighlight lang="mediawiki"> {{#invoke:Pudełko|Nazwa przestrzeni nazw 3}} ---- {{#invoke:Pudełko|Nazwa przestrzeni nazw 3|numer jednostki=2}} </syntaxhighlight> Na podstawie powyższego przykładu otrzymamy wynik o schemacie, nie wyniku, bo tam nie ma zmiennej {{Code|nazwa przestrzeni nazw 1}}, ale jest {{Code|nazwa przestrzeni nazw i}}: <syntaxhighlight lang="mediawiki"> <!-- nazwa przestrzeni nazw=""; --> <!-- Czyli wynik: --> <!-- wynik pusty --> <!-- Widzimy, że wygenerowała się nazwa przestrzeni nazw, którą jest przestrzeń nazw główna, jest ciągiem pustym: ""; --> ---- <!-- Ale nie "nazwa przestrzeni nazw 2", bo jej nie ma, ale za to istnieje "nazwa przestrzeni nazw i"; --> <!-- nazwa przestrzeni nazw 2=nazwa przestrzeni nazw i="", a nazwa jednostki 2="Wikibooks:Strona"; --> <!-- Czyli wynik: --> Wikibooks <!-- Widzimy, że wygenerowała się nazwa przestrzeni nazw, którą jest przestrzeń nieprogramowa, ale projektu, wychodząca z nazwy jednostek w tym przypadku z "nazwa jednostki 2"; --> </syntaxhighlight> Dla parametrów numerkowych nie jest brana w tym powyższym przykładzie zmienna {{Code|nazwa przestrzeni nazw 2}}, bo jej nie ma, ale za to jest {{Code|nazwa przestrzeni nazw i}}, bo ona występuje jako parametr domyślny ogólny dla parametrów numerkowych. Tytaj jest używana jest zmienna {{Code|nazwa jednostki 2}} do wygenerowania ostatecznego wyniku, bo jak można zauważyć, parametry przestrzenne wskazują na przestrzeń główną, a nazwy jednostek już nie. Dla parametrów bazowych mamy zmienną {{Code|nazwa przestrzeni nazw}}, ona jest pusta, więc to zostanie wzięte do ostatecznego wyniku. Przykłady w wikikodzie: * {{Code|{{m|Pudełko|Nazwa przestrzeni nazw 3|Szablon|nazwa przestrzeni nazw{{=}}Moja przestrzeń|nazwa jednostki{{=}}Wikibooks:Strona}}}} → {{Tt|{{#invoke:Pudełko|Nazwa przestrzeni nazw 3|Szablon|nazwa przestrzeni nazw=Moja przestrzeń|nazwa jednostki=Wikibooks:Szablon}}}} * {{Code|{{m|Pudełko|Nazwa przestrzeni nazw 3|Szablon|nazwa przestrzeni nazw 2{{=}}Moja przestrzeń|nazwa jednostki 2{{=}}Wikibooks:Strona}|numer jednostki{{=}}2}}}} → {{Tt|{{#invoke:Pudełko|Nazwa przestrzeni nazw 3|Szablon|nazwa przestrzeni nazw 2=Moja przestrzeń|nazwa jednostki 2=Wikibooks:Szablon|numer jednostki=2}}}} * {{Code|{{m|Pudełko|Nazwa przestrzeni nazw 3|nazwa przestrzeni nazw{{=}}|nazwa jednostki{{=}}Wikibooks:Strona}}}} → {{Tt|{{#invoke:Pudełko|Nazwa przestrzeni nazw 3|nazwa przestrzeni nazw=|nazwa jednostki=Wikibooks:Szablon}}}} * {{Code|{{m|Pudełko|Nazwa przestrzeni nazw 3|nazwa przestrzeni nazw 2{{=}}|nazwa jednostki 2{{=}}Wikibooks:Strona|numer jednostki{{=}}2}}}} → {{Tt|{{#invoke:Pudełko|Nazwa przestrzeni nazw 3|nazwa przestrzeni nazw 2=|nazwa jednostki 2=Wikibooks:Szablon|numer jednostki=2}}}} Powyżej dla przykładu podano parametry nie w rodzicu w szablonie, tylko w dziecku, jeśli chodzi o parametry nazw przestrzeni nazw i nazw jednostek, ale ich się za to nie powinno podawać w tych ramach, tylko w szablonach, w których wywoływane są te ramki pudełek {{Code|{{m|Pudełko}}}}, ale tak tutaj tak zrobiono by było najłatwiej sprawdzić działanie tego typu funkcji. Analogicznie możemy podawać parametry typu jednostki, np.: wywołaniu modułowym {{Code|{{m|Pudełko|Nazwa przestrzeni nazw 3|typ jednostki 2{{=}}Podręcznik|nazwa jednostki 2{{=}}Szablon:Strona|numer jednostki{{=}}2}}}} (ale wtedy jest brana przestrzeń nazw z nazwy jednostki), ale o tym więcej w rozdziałach {{Code|{{sr|#p["Typ jednostki 3"](frame,i)|p=Pudełko}}}} w „{{sr|#Funkcje typu jednostki|p=Pudełko}}”, on definiuje przestrzenie przedmiotowe i dyskusji, ale można lub nie użyć parametru dyskusji typu jednostki z wartością niepustą, wtedy wyświetli się nazwa przestrzeni nazw dyskusji. Typ jednostki nie ma takiej samej wartości dla przestrzeni przedmiotowej, co dyskusji. Również parametry typu jednostki nie powinno się podawać w dziecku w ramce, tylko w rodzicu w szablonie jako parametry, w którym ta ramka jest wywoływana, ale tutaj podano jedynie dla przykładu, jak najłatwiej sprawdzić działanie tych parametrów tej funkcji. Najpierw w funkcji nagłówku brane są parametry nazw przestrzeni nazw, a jeżeli ich nie ma, to parametry typu jednostki, a jeżeli nie ma lub parametry przestrzenne wskazują na przestrzeń główną, i nie ma nazwy jednostki, to generowane są nazwy tej funkcji na podstawie aktualnej strony. === {{Code|p["Nazwa przedmiotowej przestrzeni nazw 3"](frame,i)}} === Funkcja pisze przedmiotową nazwę przestrzeni nazw jakikolwiek nazwy przestrzeni nazw (tzn. nazwę przedmiotową nazwy przestrzenie nazw, czyli nie dyskusji, zamieniana jest na nią samą, czyli identyfikator przestrzeni się nie zmienia, a dyskusji, nie przedmiotową, przekształca się na przedmiotową jej odpowiadającą, czyli w tym przypadku identyfikator przestrzeni zmniejsza się o numer mniej), według podanej w zmiennej {{Code|nazwa przestrzeni nazw}} dla pozycja bazowej w podanych parametrach szablonu rodzicu ramki dziecka, lub dla innej pozycji należy parametr podawać w formie {{Code|nazwa przestrzeni nazw 1}}, {{Code|nazwa przestrzeni nazw 2}}, {{Code|nazwa przestrzeni nazw 3}},..., lub te parametry można podać w postaci ogólnej {{Code|nazwa przestrzeni nazw i}}. Parametry podaje się w parametrach rodzica wywołania tej funkcji {{Code|{{m|Pudełko|Nazwa przedmiotowej przestrzeni nazw 3}}}} (ale ich nie trzeba podawać w dziecku, ale można) i w parametrach dziecka, jeśli chodzi o zmienną {{Code|numer jednostki}}, czyli np.: {{Code|{{m|Pudełko|Nazwa przedmiotowej przestrzeni nazw 3|numer jednostki{{=}}<jakaś liczba całkowita dodatnia>}}}}. Te parametry przestrzenne zamiast w rodzicu w szablonie można podać w ramce dziecka, wtedy parametry dziecka mają pierwszeństwo. Parametry przestrzenne mogą mogą być podane w postaci przestrzeni przedmiotowej lub dyskusji, ale ta funkcja zawsze ją zamienia na przedmiotową. Przestrzeń nazw z parametrów nazw przestrzennych bazowych (bez numerka) może odpowiadać wartości przestrzeni głównej, to wtedy odpowiednia przestrzeń nazw z parametru nazwy jednostki się nie liczy w tej funkcji, aby się liczyła należy użyć funkcji {{Code|{{sr|#p["Nazwa przedmiotowej przestrzeni nazw 2"](frame,...)|p=Pudełko}}}}. W tym przypadku funkcja działa jak {{Code|{{sr|#p["Nazwa przedmiotowej przestrzeni nazw"](frame,...)|p=Pudełko}}}}. Przestrzeń nazw z parametrów nazw przestrzennych numerkowych może odpowiadać wartości przestrzeni głównej, to wtedy odpowiednia przestrzeń nazw z parametru nazwy jednostki się liczy w tej funkcji, wtedy jest liczona nazwa przestrzeni nazw z tego parametru. Gdy parametry przestrzenne lub typ jednostki w drugim podejściu nie wskazują na przestrzeń główną, to wtedy działanie tej funkcji jest podobne do {{Code|{{sr|#p["Nazwa przedmiotowej przestrzeni nazw 2"](frame,...)|p=Pudełko}}}}. Definicja skrótowa funkcji: <syntaxhighlight lang="lua"> p["Nazwa przedmiotowej przestrzeni nazw 3"]=function(frame,czy_uwzglednic_alternatywna_nazwe,i)...end; </syntaxhighlight> Wtedy ciało funkcji tej, czyli jego definicja w środku, jest: <syntaxhighlight lang="lua"> -- Jest liczony numer parametru nazwy przestrzeni nazw, domyslnie chodzi tu o numer bazowy parametrów przestrzennych; local numer_jednostki=i or frame.args["numer jednostki"]; local liczba_numeru_jednostki=((numer_jednostki)and(tonumber(numer_jednostki)) or 0); local pudelko_pomocne_modul=require("Module:Pudełko/Pomocne"); -- Liczy nazwę przestrzeni nazw przedmiotową na podstawie podanych parametrów; return pudelko_pomocne_modul.Uzyskanie_nazw_jednostki(frame,1,liczba_numeru_jednostki,nil,1); </syntaxhighlight> Parametry funkcji: * {{Code|frame}} - tablica ramki tablicy transportu, * {{Code|czy_uwzglednic_alternatywna_nazwe}} - czy ma uwzględniać nazwę przestrzeni nazw domyślną szablonu, dostępne wartości: {{Code|false}}, w której nazwa domyślna nie jest uwzględniana wtedy, oraz {{Code|nil}} i {{Code|true}}, które oznaczają to samo, w tym jeżeli ona jest uwzględniana, wtedy jest brany parametr pierwszy dziecka, który musi istnieć przy takiej wartości tego parametru, tzn. {{Code|{{m|Pudełko|Nazwa przedmiotowej przestrzeni nazw 3|Dyskusja szablonu}}}} - ta nazwa domyślna zostanie zamieniona na przedmiotową, a jak ona by była przedmiotowa, to żadnej zamiany by nie było, a nazwa uzyskana z nazwy przestrzeni nazw z parametrów przestrzennych jest w takim przypadku błędna, to w takim razie brany jest ten parametr, a jeżeli ta nazwa domyślna jest błędna, czyli {{Code|{{m|Pudełko|Nazwa przedmiotowej przestrzeni nazw 3|Moja przestrzeń}}}}, wtedy funkcja zwraca stan błędu {{Code|(błąd)}}. * {{Code|i}} - numer zmiennej nazwy przestrzeni nazw. Funkcja wykorzystuje {{Code|{{sr|#p.Uzyskanie_nazw_jednostki(frame,...)|p=Pudełko/Pomocne}}}} do wyznaczania ogólnego nazwy przestrzeni nazw dla pozycji bazowej i numerkowej, tzn. dla pozycji: jeden, dwa, trzy,..., itd, i ich ogólnej. Parametr ramki tablicy transportu rodzica szablonu: * {{Code|nazwa przestrzeni nazw}}, {{Code|nazwa przestrzeni nazw 1}}, {{Code|nazwa przestrzeni nazw 2}}, {{Code|nazwa przestrzeni nazw 3}},..., {{Code|nazwa przestrzeni nazw i}} - nazwy przestrzeni nazw dla pozycji bazowej oraz zwykłej i ogólnej numerkowej, * {{Code|typ jednostki}}, {{Code|typ jednostki 1}}, {{Code|typ jednostki 2}}, {{Code|typ jednostki 3}},..., {{Code|typ jednostki i}} - typy jednostek, którym odpowiadają pewne przestrzenie przedmiotowe, dla pozycji bazowej, numerkowej i ogólnej. Parametry ramki tablicy transportu dziecka: * Parametry dziecka są takie same jak rodzica dla funkcji pudełkowej plus tu wymienione, * {{Code|numer jednostki}} - jak parametr {{Code|i}} nie został ustawiony, to wtedy liczy się ta zmienna. Przykłady: <syntaxhighlight lang="mediawiki"> {{Nazwa szablonu 1|nazwa przestrzeni nazw=Wikibooks|nazwa przestrzeni nazw=|nazwa przestrzeni nazw i=|nazwa jednostki=Dyskusja Wikibooks:Strona}} ---- {{Nazwa szablonu 2|nazwa przestrzeni nazw=Wikibooks|nazwa przestrzeni nazw 1=Szablon|nazwa przestrzeni nazw i=|nazwa jednostki 2=Dyskusja Wikibooks:Strona}} </syntaxhighlight> W pierwszym wywołaniu {{Code|nazwa przestrzeni nazw}} jest puste, ale dla tego bazowego (bez numerka) szukamy przestrzeni nazw, a więc ta nazwa jest ostateczna. ---- W drugim wywołaniu w dziecku powiedzmy jest wywołanie, i szukamy nazwy przestrzeni nazw o numerze dwa, która została podana, ale istnieje za to jej wersji ogólna {{Code|nazwa przestrzeni nazw i}} i domyślna {{Code|nazwa przestrzeni nazw}}, ale wtedy dla tego numerkowego liczy się to ogólne z {{Code| i}}, a ponieważ ta nazwa jest pusta, więc będziemy liczyli nazwę przestrzeni nazw z {{Code|nazwa jednostki 2}}. Odpowiadająca powyższemu kodowi, powiedzmy wikikod, według ich zawartości, przedstawia się: <syntaxhighlight lang="mediawiki"> {{#invoke:Pudełko|Nazwa przedmiotowej przestrzeni nazw 3}} ---- {{#invoke:Pudełko|Nazwa przedmiotowej przestrzeni nazw 3|numer jednostki=2}} </syntaxhighlight> Na podstawie powyższego przykładu otrzymamy wynik o schemacie, nie wyniku, bo tam nie ma zmiennej {{Code|nazwa przestrzeni nazw 1}}, ale jest {{Code|nazwa przestrzeni nazw i}}: <syntaxhighlight lang="mediawiki"> <!-- nazwa przestrzeni nazw=""; --> <!-- Czyli wynik: --> <!-- wynik pusty --> <!-- Widzimy, że wygenerowała się nazwa przestrzeni nazw, którą jest przestrzeń nazw główna, jest ciągiem pustym: ""; --> ---- <!-- Ale nie "nazwa przestrzeni nazw 2", bo jej nie ma, ale za to istnieje "nazwa przestrzeni nazw i"; --> <!-- nazwa przestrzeni nazw 2=nazwa przestrzeni nazw i="", a nazwa jednostki 2="Dyskusja Wikibooks:Strona"; --> <!-- Czyli wynik: --> Wikibooks <!-- Widzimy, że wygenerowała się nazwa przestrzeni nazw, którą jest przestrzeń nieprogramowa, ale projektu, wychodząca z nazwy jednostek w tym przypadku z "nazwa jednostki 2"; --> </syntaxhighlight> Dla parametrów numerkowych nie jest brana w tym powyższym przykładzie zmienna {{Code|nazwa przestrzeni nazw 2}}, bo jej nie ma, ale za to jest {{Code|nazwa przestrzeni nazw i}}, bo ona występuje jako parametr domyślny ogólny dla parametrów numerkowych. Tytaj jest używana jest zmienna {{Code|nazwa jednostki 2}} do wygenerowania ostatecznego wyniku, bo jak można zauważyć, parametry przestrzenne wskazują na przestrzeń główną, a nazwy jednostek już nie. Dla parametrów bazowych mamy zmienną {{Code|nazwa przestrzeni nazw}}, ona jest pusta, więc to zostanie wzięte do ostatecznego wyniku. Przykłady w wikikodzie: * {{Code|{{m|Pudełko|Nazwa przedmiotowej przestrzeni nazw 3|Dyskusja szablonu|nazwa przestrzeni nazw{{=}}Moja przestrzeń|nazwa jednostki{{=}}Dyskusja Wikibooks:Strona}}}} → {{Tt|{{#invoke:Pudełko|Nazwa przedmiotowej przestrzeni nazw 3|Dyskusja szablonu|nazwa przestrzeni nazw=Moja przestrzeń||nazwa jednostki=Dyskusja Wikibooks:Szablon}}}} * {{Code|{{m|Pudełko|Nazwa przedmiotowej przestrzeni nazw 3|Dyskusja szablonu|nazwa przestrzeni nazw 2{{=}}Moja przestrzeń|nazwa jednostki 2{{=}}Dyskusja Wikibooks:Strona|numer jednostki{{=}}2}}}} → {{Tt|{{#invoke:Pudełko|Nazwa przedmiotowej przestrzeni nazw 3|Dyskusja szablonu|nazwa przestrzeni nazw 2=Moja przestrzeń||nazwa jednostki 2=Dyskusja Wikibooks:Szablon|numer jednostki=2}}}} * {{Code|{{m|Pudełko|Nazwa przedmiotowej przestrzeni nazw 3|nazwa przestrzeni nazw{{=}}|nazwa jednostki{{=}}Dyskusja Wikibooks:Strona}}}} → {{Tt|{{#invoke:Pudełko|Nazwa przedmiotowej przestrzeni nazw 3|nazwa przestrzeni nazw=|nazwa jednostki=Dyskusja Wikibooks:Szablon}}}} * {{Code|{{m|Pudełko|Nazwa przedmiotowej przestrzeni nazw 3|nazwa przestrzeni nazw 2{{=}}|nazwa jednostki 2{{=}}Dyskusja Wikibooks:Strona|numer jednostki{{=}}2}}}} → {{Tt|{{#invoke:Pudełko|Nazwa przedmiotowej przestrzeni nazw 3|nazwa przestrzeni nazw 2=|nazwa jednostki 2=Dyskusja Wikibooks:Szablon|numer jednostki=2}}}} Powyżej dla przykładu podano parametry nie w rodzicu w szablonie, tylko w dziecku, jeśli chodzi o parametry nazw przestrzeni nazw, ale ich się za to nie powinno podawać w tych ramach, tylko w szablonach, w których wywoływane są te ramki pudełek {{Code|{{m|Pudełko}}}}, ale tak tutaj tak zrobiono by było najłatwiej sprawdzić działanie tego typu funkcji. Analogicznie możemy podawać parametry typu jednostki, np.: wywołaniu modułowym {{Code|{{m|Pudełko|Nazwa przedmiotowej przestrzeni nazw 3|typ jednostki 2{{=}}strona szablonu|numer jednostki{{=}}2}}}}, ale o tym więcej w rozdziałach {{Code|{{sr|#p["Przedmiotowy typ jednostki 3"](frame,i)|p=Pudełko}}}} w „{{sr|#Funkcje typu jednostki|p=Pudełko}}”, ale wtedy ta sama nazwa przestrzeni nazw reprezentowana przez {{Parametr|typ jednostki 2|strona szablonu}}, jest zamieniana na to samo, lepiej jest tutaj używać parametrów przestrzennych nazw niż typu jednostki. Tutaj parametr dyskusji typu jednostki bazowy i numerkowy ogólny, czy szczegółowy, nie gra roli, bo nawet, gdy wygenerujemy nazwę przestrzeni dyskusji za pomoca tego parametru, to i tak otrzymamy na samym końcu jego nazwę przedmiotową. Jeżeli typ jednostki bazowy wskazuje na przestrzeń nazw główną, wtedy się nie liczą parametry nazw jednostek, a w przypadku numerkowego, wtedy się liczy. Typ jednostki nie ma takiej samej wartości dla przestrzeni przedmiotowej, co dyskusji. Również parametry typu jednostki nie powinno się podawać w dziecku w ramce, tylko w rodzicu w szablonie jako parametry, w którym ta ramka jest wywoływana, ale tutaj podano jedynie dla przykładu, jak najłatwiej sprawdzić działanie tych parametrów tej funkcji. Najpierw w funkcji nagłówku brane są parametry nazw przestrzeni nazw, a jeżeli ich nie ma, to parametry typu jednostki, a jeżeli nie ma, to generowane są nazwy na podstawie aktualnego modułu. === {{Code|p["Nazwa przestrzeni nazw dyskusji 3"](frame,i)}} === Funkcja pisze nazwę przestrzeni nazw dyskusji jakikolwiek nazwy przestrzeni nazw (tzn. nazwę dyskusji nazwy przestrzenie nazw, czyli nie przedmiotowej, zamieniana jest na nią samą, czyli identyfikator przestrzeni się nie zmienia, a przedmiotową, nie dyskusji, przekształca się na dyskusji jej odpowiadającą, czyli w tym przypadku identyfikator przestrzeni zwiększa się o numer więcej), według, i nie zawsze tylko, podanej w zmiennej {{Code|nazwa przestrzeni nazw}} dla pozycja bazowej w podanych parametrach szablonu rodzicu ramki dziecka, lub dla innej pozycji należy parametr podawać w formie {{Code|nazwa przestrzeni nazw 1}}, {{Code|nazwa przestrzeni nazw 2}}, {{Code|nazwa przestrzeni nazw 3}},..., lub te parametry można podać w postaci ogólnej {{Code|nazwa przestrzeni nazw i}}. W tej funkcji trzeba też podawać parametry nazwy jednostek {{Code|nazwa jednostki}}, {{Code|nazwa jednostki 1}}, {{Code|nazwa jednostki 2}}, {{Code|nazwa jednostki 3}},... Parametry podaje się w parametrach rodzica wywołania tej funkcji {{Code|{{m|Pudełko|Nazwa przestrzeni nazw dyskusji 3}}}} (ale ich nie trzeba podawać w dziecku, ale można) i w parametrach dziecka, jeśli chodzi o zmienną {{Code|numer jednostki}}, czyli np.: {{Code|{{m|Pudełko|Nazwa przestrzeni nazw dyskusji 3|numer jednostki{{=}}<jakaś liczba całkowita dodatnia>}}}}. Te parametry przestrzenne zamiast w rodzicu w szablonie można podać w ramce dziecka, wtedy parametry dziecka mają pierwszeństwo. Przestrzeń nazw z parametrów nazw przestrzennych bazowych (bez numerka) może odpowiadać wartości przestrzeni głównej, to wtedy odpowiednia przestrzeń nazw z parametru nazwy jednostki się nie liczy w tej funkcji, aby się liczyła należy użyć funkcji {{Code|{{sr|#p["Nazwa przestrzeni nazw dyskusji 2"](frame,...)|p=Pudełko}}}}. W tym przypadku funkcja działa jak {{Code|{{sr|#p["Nazwa przestrzeni nazw dyskusji"](frame,...)|p=Pudełko}}}}. Przestrzeń nazw z parametrów nazw przestrzennych numerkowych może odpowiadać wartości przestrzeni głównej, to wtedy odpowiednia przestrzeń nazw z parametru nazwy jednostki się liczy w tej funkcji, wtedy jest liczona nazwa przestrzeni nazw z tego parametru. Gdy parametry przestrzenne lub typ jednostki w drugim podejściu nie wskazują na przestrzeń główną, to wtedy działanie tej funkcji jest podobne do {{Code|{{sr|#p["Nazwa przestrzeni nazw dyskusji 2"](frame,...)|p=Pudełko}}}}. Definicja skrótowa funkcji: <syntaxhighlight lang="lua"> p["Nazwa przestrzeni nazw dyskusji 3"]=function(frame,czy_uwzglednic_alternatywna_nazwe,i)...end; </syntaxhighlight> Wtedy ciało funkcji tej, czyli jego definicja w środku, jest: <syntaxhighlight lang="lua"> -- Jest liczony numer parametru nazwy przestrzeni nazw, domyslnie chodzi tu o numer bazowy parametrów przestrzennych; local numer_jednostki=i or frame.args["numer jednostki"]; local liczba_numeru_jednostki=((numer_jednostki)and(tonumber(numer_jednostki)) or 0); local pudelko_pomocne_modul=require("Module:Pudełko/Pomocne"); -- Liczy nazwę przestrzeni nazw dyskusji na podstawie podanych parametrów; return pudelko_pomocne_modul.Uzyskanie_nazw_jednostki(frame,2,liczba_numeru_jednostki,nil,1); </syntaxhighlight> Parametry funkcji: * {{Code|frame}} - tablica ramki tablicy transportu, * {{Code|czy_uwzglednic_alternatywna_nazwe}} - czy ma uwzględniać nazwę przestrzeni nazw domyślną szablonu, dostępne wartości: {{Code|false}}, w której nazwa domyślna nie jest uwzględniana wtedy, oraz {{Code|nil}} i {{Code|true}}, które oznaczają to samo, w tym jeżeli ona jest uwzględniana, wtedy jest brany parametr pierwszy dziecka, który musi istnieć przy takiej wartości tego parametru, tzn. {{Code|{{m|Pudełko|Nazwa przestrzeni nazw dyskusji 3|Szablon}}}}, nazwa domyślna zostatnie zamieniona na dyskusji, a jeśli jest już taka, to takiej transfomacji nie ma, a jeśli nazwa uzyskana nazwy przestrzeni nazw jest w takim przypadku błędna, to wzięty jest ten parametr, a jeżeli nazwa domyślna jest błędna, czyli {{Code|{{m|Pudełko|Nazwa przestrzeni nazw dyskusji 3|Moja przestrzeń}}}}, wtedy funkcja zwraca stan błędu {{Code|(błąd)}}. * {{Code|i}} - numer zmiennej nazwy przestrzeni nazw. Funkcja wykorzystuje {{Code|{{sr|#p.Uzyskanie_nazw_jednostki(frame,...)|p=Pudełko/Pomocne}}}} do wyznaczania ogólnego nazwy przestrzeni nazw dla pozycji bazowej i numerkowej, tzn. dla pozycji: jeden, dwa, trzy,..., itd, i ich ogólnej. Parametr ramki tablicy transportu rodzica szablonu: * {{Code|nazwa przestrzeni nazw}}, {{Code|nazwa przestrzeni nazw 1}}, {{Code|nazwa przestrzeni nazw 2}}, {{Code|nazwa przestrzeni nazw 3}},..., {{Code|nazwa przestrzeni nazw i}} - nazwy przestrzeni nazw dla pozycji bazowej oraz zwykłej i ogólnej numerkowej, * {{Code|nazwa jednostki}}, {{Code|nazwa jednostki 1}}, {{Code|nazwa jednostki 2}}, {{Code|nazwa jednostki 3}},... - nazwy jednostek dla pozycji bazowej i numerkowej, * {{Code|typ jednostki}}, {{Code|typ jednostki 1}}, {{Code|typ jednostki 2}}, {{Code|typ jednostki 3}},..., {{Code|typ jednostki i}} - typy jednostek, którym odpowiadają pewne przestrzenie przedmiotowe, dla pozycji bazowej, numerkowej i ogólnej. Parametry ramki tablicy transportu dziecka: * Parametry dziecka są takie same jak rodzica dla funkcji pudełkowej plus tu wymienione, * {{Code|numer jednostki}} - jak parametr {{Code|i}} nie został ustawiony, to wtedy liczy się ta zmienna. Przykłady: <syntaxhighlight lang="mediawiki"> {{Nazwa szablonu 1|nazwa przestrzeni nazw=Wikibooks|nazwa przestrzeni nazw=|nazwa przestrzeni nazw i=|nazwa jednostki=Szablon:Strona}} ---- {{Nazwa szablonu 2|nazwa przestrzeni nazw=Wikibooks|nazwa przestrzeni nazw 1=Szablon|nazwa przestrzeni nazw i=|nazwa jednostki 2=Wikibooks:Strona}} </syntaxhighlight> W pierwszym wywołaniu {{Code|nazwa przestrzeni nazw}} jest puste, ale dla tego bazowego (bez numerka) szukamy przestrzeni nazw, a więc ta nazwa jest ostateczna. ---- W drugim wywołaniu w dziecku powiedzmy jest wywołanie, i szukamy nazwy przestrzeni nazw o numerze dwa, która została podana, ale istnieje za to jej wersji ogólna {{Code|nazwa przestrzeni nazw i}} i domyślna {{Code|nazwa przestrzeni nazw}}, ale wtedy dla tego numerkowego liczy się to ogólne z {{Code| i}}, a ponieważ ta nazwa jest pusta, więc będziemy liczyli nazwę przestrzeni nazw z {{Code|nazwa jednostki 2}}. Odpowiadająca powyższemu kodowi, powiedzmy wikikod, według ich zawartości, przedstawia się: <syntaxhighlight lang="mediawiki"> {{#invoke:Pudełko|Nazwa przestrzeni nazw 3}} ---- {{#invoke:Pudełko|Nazwa przestrzeni nazw 3|numer jednostki=2}} </syntaxhighlight> Na podstawie powyższego przykładu otrzymamy wynik o schemacie, nie wyniku, bo tam nie ma zmiennej {{Code|nazwa przestrzeni nazw 1}}, ale jest {{Code|nazwa przestrzeni nazw i}}: <syntaxhighlight lang="mediawiki"> <!-- nazwa przestrzeni nazw=""; --> <!-- Czyli wynik: --> Dyskusja <!-- Widzimy, że wygenerowała się nazwa przestrzeni nazw, którą jest przestrzeń nazw niegłówna, jest ciągiem niepustym; --> ---- <!-- Ale nie "nazwa przestrzeni nazw 2", bo jej nie ma, ale za to istnieje "nazwa przestrzeni nazw i"; --> <!-- nazwa przestrzeni nazw 2=nazwa przestrzeni nazw i="", a nazwa jednostki 2="Wikibooks:Strona"; --> <!-- Czyli wynik: --> Dyskusja Wikibooks <!-- Widzimy, że wygenerowała się nazwa przestrzeni nazw, którą jest przestrzeń nieprogramowa, ale projektu, wychodząca z nazwy jednostek w tym przypadku z "nazwa jednostki 2"; --> </syntaxhighlight> Dla parametrów numerkowych nie jest brana w tym powyższym przykładzie zmienna {{Code|nazwa przestrzeni nazw 2}}, bo jej nie ma, ale za to jest {{Code|nazwa przestrzeni nazw i}}, bo ona występuje jako parametr domyślny ogólny dla parametrów numerkowych. Tytaj jest używana jest zmienna {{Code|nazwa jednostki 2}} do wygenerowania ostatecznego wyniku, bo jak można zauważyć, parametry przestrzenne wskazują na przestrzeń główną, a nazwy jednostek już nie. Dla parametrów bazowych mamy zmienną {{Code|nazwa przestrzeni nazw}}, ona jest pusta, więc to zostanie wzięte do ostatecznego wyniku. Przykłady w wikikodzie: * {{Code|{{m|Pudełko|Nazwa przestrzeni nazw dyskusji 3|Szablon|nazwa przestrzeni nazw{{=}}Moja przestrzeń|nazwa jednostki{{=}}Wikibooks:Strona}}}} → {{Tt|{{#invoke:Pudełko|Nazwa przestrzeni nazw dyskusji 3|Szablon|nazwa przestrzeni nazw=Moja przestrzeń|nazwa jednostki=Wikibooks:Szablon}}}} * {{Code|{{m|Pudełko|Nazwa przestrzeni nazw dyskusji 3|Szablon|nazwa przestrzeni nazw 2{{=}}Moja przestrzeń|nazwa jednostki 2{{=}}Wikibooks:Strona|numer jednostki{{=}}2}}}} → {{Tt|{{#invoke:Pudełko|Nazwa przestrzeni nazw dyskusji 3|Szablon|nazwa przestrzeni nazw 2=Moja przestrzeń|nazwa jednostki 2=Wikibooks:Szablon|numer jednostki=2}}}} * {{Code|{{m|Pudełko|Nazwa przestrzeni nazw dyskusji 3|nazwa przestrzeni nazw{{=}}|nazwa jednostki{{=}}Wikibooks:Strona}}}} → {{Tt|{{#invoke:Pudełko|Nazwa przestrzeni nazw dyskusji 3|nazwa przestrzeni nazw=|nazwa jednostki=Wikibooks:Szablon}}}} * {{Code|{{m|Pudełko|Nazwa przestrzeni nazw dyskusji 3|nazwa przestrzeni nazw 2{{=}}|nazwa jednostki 2{{=}}Wikibooks:Strona|numer jednostki{{=}}2}}}} → {{Tt|{{#invoke:Pudełko|Nazwa przestrzeni nazw dyskusji 3|nazwa przestrzeni nazw 2=|nazwa jednostki 2=Wikibooks:Szablon|numer jednostki=2}}}} Powyżej dla przykładu podano parametry nie w rodzicu w szablonie, tylko w dziecku, jeśli chodzi o parametry nazw przestrzeni nazw i nazw jednostek, ale ich się za to nie powinno podawać w tych ramach, tylko w szablonach, w których wywoływane są te ramki pudełek {{Code|{{m|Pudełko}}}}, ale tak tutaj tak zrobiono by było najłatwiej sprawdzić działanie tego typu funkcji. Analogicznie możemy podawać parametry typu jednostki, np.: wywołaniu modułowym {{Code|{{m|Pudełko|Nazwa przestrzeni nazw dyskusji 3|typ jednostki 2{{=}}Podręcznik|nazwa jednostki 2{{=}}Szablon:Strona|numer jednostki{{=}}2}}}} (ale wtedy jest brana przestrzeń nazw z nazwy jednostki), ale o tym więcej w rozdziałach {{Code|{{sr|#p["Dyskusyjny typ jednostki 3"](frame,i)|p=Pudełko}}}} w „{{sr|#Funkcje typu jednostki|p=Pudełko}}”, one definiują przestrzenie dyskusji, ale można użyć parametru dyskusji typu jednostki z obojętnie jaką wartością niepustą, czy pustą, czy nawet jej nie podamy, wtedy wyświetli się nazwa przestrzeni nazw dyskusji. Jeżeli typ jednostki bazowy wskazuje na przestrzeń nazw główną, wtedy się nie liczą parametry nazw jednostek, a w przypadku numerkowego, wtedy się liczy. Typ jednostki nie ma takiej samej wartości dla przestrzeni przedmiotowej, co dyskusji. Również parametry typu jednostki nie powinno się podawać w dziecku w ramce, tylko w rodzicu w szablonie jako parametry, w którym ta ramka jest wywoływana, ale tutaj podano jedynie dla przykładu, jak najłatwiej sprawdzić działanie tych parametrów tej funkcji. Najpierw w funkcji nagłówku brane są parametry nazw przestrzeni nazw, a jeżeli ich nie ma, to parametry typu jednostki, a jeżeli nie ma lub parametry przestrzenne wskazują na przestrzeń główną, i nie ma nazwy jednostki, to generowane są nazwy tej funkcji na podstawie aktualnej strony. == Funkcje nazw jednostki trzeciej wersji == === {{Code|p["Nazwa jednostki 3"](frame,i)}} === === {{Code|p["Nazwa przedmiotowa jednostki 3"](frame,i)}} === === {{Code|p["Nazwa dyskusji jednostki 3"](frame,i)}} === == Funkcje typu jednostki == === {{Code|p["Typ jednostki"](frame,i)}} === === {{Code|p["Typ jednostki 2"](frame,i)}} === === {{Code|p["Typ jednostki 3"](frame,i)}} === === Funkcje typu jednostki przedmiotowe === ==== {{Code|p["Przedmiotowy typ jednostki"](frame,i)}} ==== ==== {{Code|p["Przedmiotowy typ jednostki 2"](frame,i)}} ==== ==== {{Code|p["Przedmiotowy typ jednostki 3"](frame,i)}} ==== === Fukcje typu jednostki dyskusji === ==== {{Code|p["Dyskusyjny typ jednostki"](frame,i)}} ==== ==== {{Code|p["Dyskusyjny typ jednostki 2"](frame,i)}} ==== ==== {{Code|p["Dyskusyjny typ jednostki 3"](frame,i)}} ==== == Funkcje chech pudełka == === {{Code|p["Cecha pudełka"](frame)}} === === {{Code|p["Przedmiotowa cecha pudełka"](frame)}} === === {{Code|p["Dyskusyjna cecha pudełka"](frame)}} === == Fukcje ogólnego pudełka == === {{Code|p["Ogólne pudełko"](frame)}} === == Funkcje ogólne == === {{Code|p["Tekst pudełka"](frame)}} === == Funkcje błędów pudełka == === {{Code|p["Błędy pudełka"](frame)}} === === {{Code|p["Przedmiotowe błędy pudełka"](frame)}} === === {{Code|p["Dyskusyjne błędy pudełka"](frame)}} === == Funkcje nazw stron == === {{Code|p["Nazwa strony głównej projektu"](frame,i)}} === === {{Code|p["Nazwa strony głównej dla dzieci projektu"](frame,i)}} === == Funkcje kodów == === {{Code|p["Kod języka"](frame,i)}} === === {{Code|p["Kod projektu"](frame,i)}} === === {{Code|p["Klucz projektu"](frame,i)}} === == Funkcje wiki == === {{Code|p["Inny niż język bieżący wiki"](frame)}} === === {{Code|p["Inne niż lokalne wiki"](frame)}} === === {{Code|p["Inne niż bieżące wiki"](frame)}} === == Funkcje typów parametrów, czy podane je == === {{Code|p["Podano parametry nienazwane"](frame)}} === === {{Code|p["Podano parametry numerowane"](frame)}} === === {{Code|p["Podano parametry nazwane"](frame)}} === == Funkcje kodów tego projektu == === {{Code|p["Kod projektu tego projektu"](frame)}} === === {{Code|p["Kod języka tego projektu"](frame)}} === === {{Code|p["Klucz projektu tego projektu"](frame)}} === == Funkcje stron == === {{Code|p["Strona główna tego projektu"](frame)}} === === {{Code|p["Strona główna dla dzieci tego projektu"](frame)}} === == Funkcje nazw stron drugiej wersji == === {{Code|p["Nazwa strony głównej dla dzieci projektu 2"](frame)}} === === {{Code| p["Nazwa strony głównej projektu 2"](frame)}} === {{BrClear}} <noinclude><!-- -->{{ProstaStronaKoniec}}<!-- -->{{Kategoria|Opisy funkcji, w Lua w Scribunto, w modułach}}<!-- --></noinclude> 4fbcg2xp4gab7pv2a4vwec3ssdrg4js 540470 540469 2026-04-24T10:30:58Z Persino 2851 540470 wikitext text/x-wiki <noinclude>{{ProstaStronaStart | nagłówek = {{Podrozdział|{{ld2|Pudełko}}|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 pudelko_modul=require("Module:Pudełko"); </syntaxhighlight> dzięki, któremu można wypisywać funkcje należącego do niego. Posługuje się na parametrach pudełkowych {{Parametr|nazwa przestrzeni nazw}} (czy też bez numerka {{Parametr|nazwa przestrzeni nazw i}} dla tego numerowanego) lub te z numerkiem po jednej spacji w nich (ale nie dla tego z końcówką {{Code| i}}) mogą zostać użyte jako parametry szablonu. Moduł {{Code|{{ld2|Pudełko}}}} przedstawia funkcje nazw w oparciu o funkcje nazw {{Code|{{ld2|Nazwy}}}}, generuje on nazwy za pomocą parametrów pudełkowych podanych poniżej. Parametr {{Parametr|nazwa jednostki}} (lub parametr {{Parametr|cel}} dla numerka tego pierwszego, tego alternatywnego), lub te z numerkiem po jednej spacji w nazwie parametru, albo numerowane numerkami {{Code|1}}, {{Code|2}},..., mogą zostać użyte jako parametry szablonu. Parametry określające rodzaj jednostki {{Parametr|typ jednostki}} z {{Parametr|dyskusja typu jednostki}}, itp. w wersjach z numerkiem po jednej spacji w nich mogą zostać użyte jako parametry szablonu. A te tymi numerowanymi liczbami naturalnymi {{Tt|nazwy jednostki}} od jedynki wzwyż poprzez szablon, w którym są one użyte, one też mogą być użyte z dwukropkiem, te numerowane, na samym początku nazwy, wtedy one są traktowane jako pełne nazwy strony, i wtedy one nie zostaną z interpretowane, że do nich trzeba użyć parametr odpowiedni z nazwą przetrzeni nazw z tego numerowanego, czy ogólny, aby utworzyć znów inną pełną nazwę strony dla tego numerka. Zestawienie: * {{Code|nazwa przestrzeni nazw}} i {{Code|nazwa przestrzeni nazw i}} (ogólna nazwa przestrzeni nazw dla wszystkich numerków, i tych numerowanych jednostek) - i to pierwsze z numerkiem, tzn. {{Code|nazwa przestrzeni nazw 1}}, {{Code|nazwa przestrzeni nazw 2}}, ..., * {{Code|nazwa jednostki}} - i te z numerkiem: {{Code|nazwa jednostki 1}}, {{Code|nazwa jednostki 2}}, ..., lub gdy jest zamiast tego parametrem numerowany, {{Code|1}}, {{Code|2}},..., który dla tego pierwszego może być uznany jako: {{Code|cel}} {{=}} {{Code|1}}, * {{Code|typ jednostki}} (parametr bazowy) i {{Code|typ jednostki i}} (parametr domyślny numerkowy) - i te z numerkiem: {{Code|typ jednostki 1}}, {{Code|typ jednostki 2}}, ..., tzn. gdy chcemy określić z jakim typem jednostki mamy do czynienia w zależności do jakiej przestrzeni nazw należy, a w danej, czy jest on np. programowy, czy tylko jest opisem, jak to bywa w szablonach {{Np|Template|link=tak}}, podobnie jest w przypadku {{Np|Module|link=tak}}, czy jak jest w innych przestrzeniach nazw, ** {{Code|dyskusja typu jednostki}} (parametr bazowy) i {{Code|dyskusja typu jednostki i}} (parametr domyślny numerkowy) - i te z numerkiem: {{Code|dyskusja typu jednostki 1}}, {{Code|dyskusja typu jednostki 2}}, ..., gdy chcemy określić wartością niepustą,że chodzi tutaj o typ jednostki. == {{Code|p.CzyNiepoprawnaNazwa(nazwa_jednostki)}} == Funkcja sprawdzajaca, czy jest poprawnie podana nazwa jednostki, czy ma poprawną nazwę. Znakami tymi, z których nie powinna składać się nazwa jest {{Code|<nowiki>{}<>|[]#\n</nowiki>}} i dodatkowo znak {{Code|&#127;}} (kod {{Code|{{Nowiki|&#127;}}}}). Też nie może składać się z trzech znaków tyldy, tzn. {{Code|<nowiki>~~~</nowiki>}}. Również w swojej budowie nie może składać się ze kodów {{Strong|HTML}} literowych o wzorze {{Code|{{Nowiki|&(%a+);}}}}. Natomiast może składać się z {{Code|{{Nowiki|&#(%d+);}}}} i {{Code|{{Nowiki|&#x(%x+);}}}}, ale w pierw te kody muszą być zamienione na normalne znaki. Skrótowa definicja funkcji: <syntaxhighlight lang="lua"> function p.CzyNiepoprawnaNazwa(nazwa_jednostki)...end; </syntaxhighlight> Wtedy ciało funkcji tej, czyli jego definicja w środku, jest: <syntaxhighlight lang="lua"> -- Moduł: "Moduł:Html/dane", służy do ładowania znaku o kodzie HTML "&#127;"; local html_dane_modul=mw.loadData("Module:Html/dane"); return mw.ustring.match(nazwa_jednostki,"[{}<>|%[%]#\n"..html_dane_modul.znak_127.."]+") or mw.ustring.match(nazwa_jednostki,"~~~") or mw.ustring.match(nazwa_jednostki,"&(%a+);"); </syntaxhighlight> Parametry: * {{Code|nazwa_jednostki}} - nazwa jednostki do sprawdzenia. Przykłady: <syntaxhighlight lang="lua"> local pudelko_modul=require("Module:Pudełko"); -- Podana przykładowa niepoprawna nazwa jedostki local nazwa_jednostki="Nazwa pliku [[Nazwa linku w pliku]]"; -- Fukcja zwróci wartość: local czy_poprawna_nazwa=true; local czy_poprawna_nazwa=pudelko_modul.CzyNiepoprawnaNazwa(nazwa_jednostki); </syntaxhighlight> == Funkcje nazw przestrzeni nazw == === {{Code|p["Nazwa przestrzeni nazw"](frame,...)}} === Funkcja pisze nazwę przestrzeni nazw, niezależnie, czy to jest przedmiotowa, czy dyskusji, według podanej w zmiennej {{Code|nazwa przestrzeni nazw}} dla pozycja bazowej w podanych parametrach szablonu rodzicu ramki dziecka, lub dla innej pozycji należy parametr podawać w formie {{Code|nazwa przestrzeni nazw 1}}, {{Code|nazwa przestrzeni nazw 2}}, {{Code|nazwa przestrzeni nazw 3}},..., lub te parametry można podać w postaci ogólnej {{Code|nazwa przestrzeni nazw i}}. Parametry podaje się w parametrach rodzica wywołania tej funkcji {{Code|{{m|Pudełko|Nazwa przestrzeni nazw}}}} (ale ich nie trzeba podawać w dziecku, ale można) i w parametrach dziecka, jeśli chodzi o zmienną {{Code|numer jednostki}}, czyli np.: {{Code|{{m|Pudełko|Nazwa przestrzeni nazw|numer jednostki{{=}}<jakaś liczba całkowita dodatnia>}}}}. Te parametry przestrzenne zamiast w rodzicu w szablonie można podać w ramce dziecka, wtedy parametry dziecka mają pierwszeństwo. Przestrzeń nazw z parametrów nazw przestrzennych może odpowiadać wartości przestrzeni głównej, to wtedy odpowiednia przestrzeń nazw z parametru nazwy jednostki się nie liczy w tej funkcji, aby się liczyła należy użyć funkcji {{Code|{{sr|#p["Nazwa przestrzeni nazw 2"](frame,...)|p=Pudełko}}}}. Definicja skrótowa funkcji: <syntaxhighlight lang="lua"> p["Nazwa przestrzeni nazw"]=function(frame,czy_uwzglednic_alternatywna_nazwe,i)...end; </syntaxhighlight> Wtedy ciało funkcji tej, czyli jego definicja w środku, jest: <syntaxhighlight lang="lua"> -- Jest liczony numer parametru nazwy przestrzeni nazw, domyslnie chodzi tu o numer bazowy parametrów przestrzennych; local numer_jednostki=i or frame.args["numer jednostki"]; local liczba_numer_jednostki=((numer_jednostki)and(tonumber(numer_jednostki))or 0); local pudelko_pomocne_modul=require("Module:Pudełko/Pomocne"); -- Liczy nazwę przestrzeni nazw na podstawie podanych parametrów; return pudelko_pomocne_modul.Nazwa_przestrzeni_nazw(frame,0, czy_uwzglednic_alternatywna_nazwe,liczba_numer_jednostki); </syntaxhighlight> Parametry funkcji: * {{Code|frame}} - tablica ramki tablicy transportu, * {{Code|czy_uwzglednic_alternatywna_nazwe}} - czy ma uwzględniać nazwę przestrzeni nazw domyślną szablonu, dostępne wartości: {{Code|false}}, w której nazwa domyślna nie jest uwzględniana wtedy, oraz {{Code|nil}} i {{Code|true}}, które oznaczają to samo, w tym jeżeli ona jest uwzględniana, wtedy jest brany parametr pierwszy dziecka, który musi istnieć przy takiej wartości tego parametru, tzn. {{Code|{{m|Pudełko|Nazwa przestrzeni nazw|Szablon}}}}, a ten element jest używany, gdy nazwa uzyskana nazwy przestrzeni nazw jest w takim przypadku błędna, a jeżeli wtedy nazwa domyślna jest błędna, czyli {{Code|{{m|Pudełko|Nazwa przestrzeni nazw|Moja przestrzeń}}}}, wtedy funkcja zwraca stan błędu {{Code|(błąd)}}. * {{Code|i}} - numer zmiennej nazwy przestrzeni nazw. Funkcja wykorzystuje {{Code|{{sr|#p.Nazwa_przestrzeni_nazw(frame,...)|p=Pudełko/Pomocne}}}} do wyznaczania ogólnego nazwy przestrzeni nazw dla pozycji bazowej i numerkowej, tzn. dla pozycji: jeden, dwa, trzy,..., itd, i ich ogólnej. Parametr ramki tablicy transportu rodzica szablonu: * {{Code|nazwa przestrzeni nazw}}, {{Code|nazwa przestrzeni nazw 1}}, {{Code|nazwa przestrzeni nazw 2}}, {{Code|nazwa przestrzeni nazw 3}},..., {{Code|nazwa przestrzeni nazw i}} - nazwy przestrzeni nazw dla pozycji bazowej oraz zwykłej i ogólnej numerkowej, * {{Code|typ jednostki}}, {{Code|typ jednostki 1}}, {{Code|typ jednostki 2}}, {{Code|typ jednostki 3}},..., {{Code|typ jednostki i}} - typy jednostek, którym odpowiadają pewne przestrzenie przedmiotowe, dla pozycji bazowej, numerkowej i ogólnej, ** {{Code|dyskusja typu jednostki}}, {{Code|dyskusja typu jednostki 1}}, {{Code|dyskusja typ jednostki 2}}, {{Code|dyskusja typ jednostki 3}},..., {{Code|dyskusja typ jednostki i}} - czy dany typ jednostki ma przedstawiać, jeśli niepusta, przestrzeń dyskusji dla pozycji bazowej, numerkowej i ogólnej. Parametry ramki tablicy transportu dziecka: * Parametry dziecka są takie same jak rodzica dla funkcji pudełkowej plus tu wymienione, * {{Code|numer jednostki}} - jak parametr {{Code|i}} nie został ustawiony, to wtedy liczy się ta zmienna. Przykłady: <syntaxhighlight lang="mediawiki"> {{Nazwa szablonu|nazwa przestrzeni nazw=Wikibooks|nazwa przestrzeni nazw 2=Szablon|nazwa przestrzeni nazw i=Moduł}} </syntaxhighlight> W dziecku powiedzmy jest wywołanie, i szukamy nazwy przestrzeni nazw o numerze dwa, która nie została podana, ale istnieje za to jej wersji ogólna {{Code|nazwa przestrzeni nazw i}} i domyślna {{Code|nazwa przestrzeni nazw}}: <syntaxhighlight lang="mediawiki"> {{#invoke:Pudełko|Nazwa przestrzeni nazw|numer jednostki=1}} </syntaxhighlight> Na podstawie powyższego przykładu otrzymamy wynik o schemacie, nie wyniku, bo tam nie ma zmiennej {{Code|nazwa przestrzeni nazw 1}}, ale jest {{Code|nazwa przestrzeni nazw i}}: <syntaxhighlight lang="mediawiki"> <!-- Ale nie "nazwa przestrzeni nazw", bo jej nie ma, ale za to istnieje "nazwa przestrzeni nazw i"; --> <!-- nazwa przestrzeni nazw 2=nazwa przestrzeni nazw i=Moduł; --> <!-- Czyli wynik: --> Moduł <!-- Widzimy, że wygenerowała się nazwa przestrzeni nazw, którą jest przestrzeń programowa, którą również jest "Szablon"; --> </syntaxhighlight> Nie jest brana w tym powyższym przykładzie zmienna {{Code|nazwa przestrzeni nazw}}, bo jej nie ma, ale za to jest {{Code|nazwa przestrzeni nazw i}}, bo ona występuje jako parametr domyślny ogólny dla parametrów numerkowych. Przykłady w wikikodzie: * {{Code|{{m|Pudełko|Nazwa przestrzeni nazw|numer jednostki{{=}}2}}}} → {{Tt|{{#invoke:Pudełko|Nazwa przestrzeni nazw|numer jednostki=2}}}} * {{Code|{{m|Pudełko|Nazwa przestrzeni nazw|Szablon|nazwa przestrzeni nazw i{{=}}Moja przestrzeń|numer jednostki{{=}}2}}}} → {{Tt|{{#invoke:Pudełko|Nazwa przestrzeni nazw|Szablon|nazwa przestrzeni nazw i=Moja przestrzeń|numer jednostki=2}}}} * {{Code|{{m|Pudełko|Nazwa przestrzeni nazw|nazwa przestrzeni nazw 2{{=}}Szablon|numer jednostki{{=}}2}}}} → {{Tt|{{#invoke:Pudełko|Nazwa przestrzeni nazw|nazwa przestrzeni nazw 2=Szablon|numer jednostki=2}}}} * {{Code|{{m|Pudełko|Nazwa przestrzeni nazw|nazwa przestrzeni nazw 2{{=}}Szablon|numer jednostki{{=}}2}}}} → {{Tt|{{#invoke:Pudełko|Nazwa przestrzeni nazw|nazwa przestrzeni nazw i=Szablon|numer jednostki=2}}}} * {{Code|{{m|Pudełko|Nazwa przestrzeni nazw|nazwa przestrzeni nazw{{=}}Szablon|numer jednostki{{=}}2}}}} → {{Tt|{{#invoke:Pudełko|Nazwa przestrzeni nazw|nazwa przestrzeni nazw=Szablon|numer jednostki=2}}}} Powyżej dla przykładu podano parametry nie w rodzicu w szablonie, tylko w dziecku, jeśli chodzi o parametry nazw przestrzeni nazw, ale ich się za to nie powinno podawać w tych ramach, tylko w szablonach, w których wywoływane są te ramki pudełek {{Code|{{m|Pudełko}}}}, ale tak tutaj tak zrobiono by było najłatwiej sprawdzić działanie tego typu funkcji. Analogicznie możemy podawać parametry typu jednostki, np.: wywołaniu modułowym {{Code|{{m|Pudełko|Nazwa przestrzeni nazw|typ jednostki 2{{=}}strona szablonu|numer jednostki{{=}}2}}}}, ale o tym więcej w rozdziałach {{Code|{{sr|#p["Typ jednostki"](frame,i)|p=Pudełko}}}} w „{{sr|#Funkcje typu jednostki|p=Pudełko}}”, one definiuje przestrzenie przedmiotowe, czy dyskusji, ale można lub nie użyć parametru dyskusji typu jednostki z wartością niepustą, wtedy wyświetli się nazwa przestrzeni nazw dyskusji. Typ jednostki nie ma takiej samej wartości dla przestrzeni przedmiotowej, co dyskusji. Również parametry typu jednostki nie powinno się podawać w dziecku w ramce, tylko w rodzicu w szablonie jako parametry, w którym ta ramka jest wywoływana, ale tutaj podano jedynie dla przykładu, jak najłatwiej sprawdzić działanie tych parametrów tej funkcji. Najpierw w funkcji nagłówku brane są parametry nazw przestrzeni nazw, a jeżeli ich nie ma, to parametry typu jednostki, a jeżeli nie ma, to generowane są nazwy na podstawie aktualnego modułu. === {{Code|p["Nazwa przedmiotowej przestrzeni nazw"](frame,...)}} === Funkcja pisze przedmiotową nazwę przestrzeni nazw jakikolwiek nazwy przestrzeni nazw (tzn. nazwę przedmiotową nazwy przestrzenie nazw, czyli nie dyskusji, zamieniana jest na nią samą, czyli identyfikator przestrzeni się nie zmienia, a dyskusji, nie przedmiotową, przekształca się na przedmiotową jej odpowiadającą, czyli w tym przypadku identyfikator przestrzeni zmniejsza się o numer mniej), według podanej w zmiennej {{Code|nazwa przestrzeni nazw}} dla pozycja bazowej w podanych parametrach szablonu rodzicu ramki dziecka, lub dla innej pozycji należy parametr podawać w formie {{Code|nazwa przestrzeni nazw 1}}, {{Code|nazwa przestrzeni nazw 2}}, {{Code|nazwa przestrzeni nazw 3}},..., lub te parametry można podać w postaci ogólnej {{Code|nazwa przestrzeni nazw i}}. Parametry podaje się w parametrach rodzica wywołania tej funkcji {{Code|{{m|Pudełko|Nazwa przedmiotowej przestrzeni nazw}}}} (ale ich nie trzeba podawać w dziecku, ale można) i w parametrach dziecka, jeśli chodzi o zmienną {{Code|numer jednostki}}, czyli np.: {{Code|{{m|Pudełko|Nazwa przedmiotowej przestrzeni nazw|numer jednostki{{=}}<jakaś liczba całkowita dodatnia>}}}}. Te parametry przestrzenne zamiast w rodzicu w szablonie można podać w ramce dziecka, wtedy parametry dziecka mają pierwszeństwo. Parametry przestrzenne mogą mogą być podane w postaci przestrzeni przedmiotowej lub dyskusji, ale ta funkcja zawsze ją zamienia na przedmiotową. Przestrzeń nazw z parametrów nazw przestrzennych może odpowiadać wartości przestrzeni głównej, to wtedy odpowiednia przestrzeń nazw z parametru nazwy jednostki się nie liczy w tej funkcji, aby się liczyła należy użyć funkcji {{Code|{{sr|#p["Nazwa przedmiotowej przestrzeni nazw 2"](frame,...)|p=Pudełko}}}}. Definicja skrótowa funkcji: <syntaxhighlight lang="lua"> p["Nazwa przedmiotowej przestrzeni nazw"]=function(frame,czy_uwzglednic_alternatywna_nazwe,i)...end; </syntaxhighlight> Wtedy ciało funkcji tej, czyli jego definicja w środku, jest: <syntaxhighlight lang="lua"> -- Jest liczony numer parametru nazwy przestrzeni nazw, domyslnie chodzi tu o numer bazowy parametrów przestrzennych; local numer_jednostki=i or frame.args["numer jednostki"]; local liczba_numer_jednostki=((numer_jednostki)and(tonumber(numer_jednostki))or 0); local pudelko_pomocne_modul=require("Module:Pudełko/Pomocne"); -- Liczy nazwę przestrzeni nazw przedmiotową na podstawie podanych parametrów; return pudelko_pomocne_modul.Nazwa_przestrzeni_nazw(frame,1, czy_uwzglednic_alternatywna_nazwe,liczba_numer_jednostki); </syntaxhighlight> Parametry funkcji: * {{Code|frame}} - tablica ramki tablicy transportu, * {{Code|czy_uwzglednic_alternatywna_nazwe}} - czy ma uwzględniać nazwę przestrzeni nazw domyślną szablonu, dostępne wartości: {{Code|false}}, w której nazwa domyślna nie jest uwzględniana wtedy, oraz {{Code|nil}} i {{Code|true}}, które oznaczają to samo, w tym jeżeli ona jest uwzględniana, wtedy jest brany parametr pierwszy dziecka, który musi istnieć przy takiej wartości tego parametru, tzn. {{Code|{{m|Pudełko|Nazwa przedmiotowej przestrzeni nazw|Dyskusja szablonu}}}} - ta nazwa domyślna zostanie zamieniona na przedmiotową, a jak ona by była przedmiotowa, to żadnej zamiany, by nie było, a jeśli nazwa uzyskana z nazwy przestrzeni nazw z parametrów przestrzennych jest w takim przypadku błędna, to w takim razie brany jest ten parametr, a jeżeli ta nazwa domyślna jest błędna, czyli {{Code|{{m|Pudełko|Nazwa przedmiotowej przestrzeni nazw|Moja przestrzeń}}}}, wtedy funkcja zwraca stan błędu {{Code|(błąd)}}. * {{Code|i}} - numer zmiennej nazwy przestrzeni nazw. Funkcja wykorzystuje {{Code|{{sr|#p.Nazwa_przestrzeni_nazw(frame,...)|p=Pudełko/Pomocne}}}} do wyznaczania ogólnego nazwy przestrzeni nazw dla pozycji bazowej i numerkowej, tzn. dla pozycji: jeden, dwa, trzy,..., itd, i ich ogólnej. Parametr ramki tablicy transportu rodzica szablonu: * {{Code|nazwa przestrzeni nazw}}, {{Code|nazwa przestrzeni nazw 1}}, {{Code|nazwa przestrzeni nazw 2}}, {{Code|nazwa przestrzeni nazw 3}},..., {{Code|nazwa przestrzeni nazw i}} - nazwy przestrzeni nazw dla pozycji bazowej oraz zwykłej i ogólnej numerkowej, * {{Code|typ jednostki}}, {{Code|typ jednostki 1}}, {{Code|typ jednostki 2}}, {{Code|typ jednostki 3}},..., {{Code|typ jednostki i}} - typy jednostek, którym odpowiadają pewne przestrzenie przedmiotowe, dla pozycji bazowej, numerkowej i ogólnej. Parametry ramki tablicy transportu dziecka: * Parametry dziecka są takie same jak rodzica dla funkcji pudełkowej plus tu wymienione, * {{Code|numer jednostki}} - jak parametr {{Code|i}} nie został ustawiony, to wtedy liczy się ta zmienna. Przykłady: <syntaxhighlight lang="mediawiki"> {{Nazwa szablonu|nazwa przestrzeni nazw=Dyskusja Wikibooks|nazwa przestrzeni nazw 2=Dyskusja szablonu|nazwa przestrzeni nazw i=Dyskusja modułu}} </syntaxhighlight> W dziecku powiedzmy jest wywołanie, i szukamy nazwy przestrzeni nazw o numerze dwa, która nie została podana, ale istnieje za to jej wersji ogólna {{Code|nazwa przestrzeni nazw i}} i domyślna {{Code|nazwa przestrzeni nazw}}: <syntaxhighlight lang="mediawiki"> {{#invoke:Pudełko|Nazwa przedmiotowej przestrzeni nazw|numer jednostki=1}} </syntaxhighlight> Na podstawie powyższego przykładu otrzymamy wynik o schemacie, nie wyniku, bo tam nie ma zmiennej {{Code|nazwa przestrzeni nazw 1}}, ale jest {{Code|nazwa przestrzeni nazw i}}: <syntaxhighlight lang="mediawiki"> <!-- Ale nie "nazwa przestrzeni nazw", bo jej nie ma, ale za to istnieje "nazwa przestrzeni nazw i"; --> <!-- nazwa przestrzeni nazw 2=nazwa przestrzeni nazw i=Dyskusja modułu; --> <!-- Czyli wynik: --> Moduł <!-- Widzimy, że wygenerowała się nazwa przestrzeni nazw, którą jest przestrzeń przedmiotowa programowa przestrzeni dyskusji "Dyskusja modułu", którą również jest "Szablon" jego przestrzeni dyskusji "Dyskusja szablonu", a dla ich przestrzeni przedmiotowej, zamiast dyskusji, to samo przekształca się na to samo; --> </syntaxhighlight> Nie jest brana w tym powyższym przykładzie zmienna {{Code|nazwa przestrzeni nazw}}, bo jej nie ma, ale za to jest {{Code|nazwa przestrzeni nazw i}}, bo ona występuje jako parametr domyślny ogólny dla parametrów numerkowych. Przykłady w wikikodzie: * {{Code|{{m|Pudełko|Nazwa przedmiotowej przestrzeni nazw|numer jednostki{{=}}2}}}} → {{Tt|{{#invoke:Pudełko|Nazwa przedmiotowej przestrzeni nazw|numer jednostki=2}}}} * {{Code|{{m|Pudełko|Nazwa przedmiotowej przestrzeni nazw|Dyskusja szablonu|nazwa przestrzeni nazw i{{=}}Moja przestrzeń|numer jednostki{{=}}2}}}} → {{Tt|{{#invoke:Pudełko|Nazwa przedmiotowej przestrzeni nazw|Dyskusja szablonu|nazwa przestrzeni nazw i=Moja przestrzeń|numer jednostki=2}}}} * {{Code|{{m|Pudełko|Nazwa przedmiotowej przestrzeni nazw|nazwa przestrzeni nazw 2{{=}}Dyskusja szablonu|numer jednostki{{=}}2}}}} → {{Tt|{{#invoke:Pudełko|Nazwa przedmiotowej przestrzeni nazw|nazwa przestrzeni nazw 2=Dyskusja szablonu|numer jednostki=2}}}} * {{Code|{{m|Pudełko|Nazwa przedmiotowej przestrzeni nazw|nazwa przestrzeni nazw 2{{=}}Dyskusja szablonu|numer jednostki{{=}}2}}}} → {{Tt|{{#invoke:Pudełko|Nazwa przedmiotowej przestrzeni nazw|nazwa przestrzeni nazw i=Dyskusja szablonu|numer jednostki=2}}}} * {{Code|{{m|Pudełko|Nazwa przedmiotowej przestrzeni nazw|nazwa przestrzeni nazw{{=}}Dyskusja szablonu|numer jednostki{{=}}2}}}} → {{Tt|{{#invoke:Pudełko|Nazwa przedmiotowej przestrzeni nazw|nazwa przestrzeni nazw=Dyskusja szablonu|numer jednostki=2}}}} Powyżej dla przykładu podano parametry nie w rodzicu w szablonie, tylko w dziecku, jeśli chodzi o parametry nazw przestrzeni nazw, ale ich się za to nie powinno podawać w tych ramach, tylko w szablonach, w których wywoływane są te ramki pudełek {{Code|{{m|Pudełko}}}}, ale tak tutaj tak zrobiono by było najłatwiej sprawdzić działanie tego typu funkcji. Analogicznie możemy podawać parametry typu jednostki, np.: wywołaniu modułowym {{Code|{{m|Pudełko|Nazwa przedmiotowej przestrzeni nazw|typ jednostki 2{{=}}strona szablonu|numer jednostki{{=}}2}}}}, ale o tym więcej w rozdziałach {{Code|{{sr|#p["Przedmiotowy typ jednostki"](frame,i)|p=Pudełko}}}} w „{{sr|#Funkcje typu jednostki|p=Pudełko}}”, ale wtedy ta sama nazwa przestrzeni nazw reprezentowana przez {{Parametr|typ jednostki 2|strona szablonu}}, jest zamieniana na to samo, lepiej jest tutaj używać parametrów przestrzennych nazw niż typu jednostki. Typ jednostki nie ma takiej samej wartości dla przestrzeni przedmiotowej, co dyskusji. Tutaj parametr dyskusji typu jednostki bazowy i numerkowy ogólny, czy szczegółowy, nie gra roli, bo nawet, gdy wygenerujemy nazwę przestrzeni dyskusji za pomoca tego parametru, to i tak otrzymamy na samym końcu jego nazwę przedmiotową. Również parametry typu jednostki nie powinno się podawać w dziecku w ramce, tylko w rodzicu w szablonie jako parametry, w którym ta ramka jest wywoływana, ale tutaj podano jedynie dla przykładu, jak najłatwiej sprawdzić działanie tych parametrów tej funkcji. Najpierw w funkcji nagłówku brane są parametry nazw przestrzeni nazw, a jeżeli ich nie ma, to parametry typu jednostki, a jeżeli nie ma, to generowane są nazwy na podstawie aktualnego modułu. === {{Code|p["Nazwa przestrzeni nazw dyskusji"](frame,...)}} === Funkcja pisze nazwę przestrzeni nazw dyskusji jakikolwiek nazwy przestrzeni nazw (tzn. nazwę przedmiotową nazwy przestrzenie nazw, czyli nie dyskusji, zamieniana jest na dyskusji, czyli identyfikator przestrzeni się zmienia jeden wyżej, a dyskusji, nie przedmiotową, przekształca się na tą samą), według podanej w zmiennej {{Code|nazwa przestrzeni nazw}} dla pozycja bazowej w podanych parametrach szablonu rodzicu ramki dziecka, lub dla innej pozycji należy parametr podawać w formie {{Code|nazwa przestrzeni nazw 1}}, {{Code|nazwa przestrzeni nazw 2}}, {{Code|nazwa przestrzeni nazw 3}},..., lub te parametry można podać w postaci ogólnej {{Code|nazwa przestrzeni nazw i}}. Parametry podaje się w parametrach rodzica wywołania tej funkcji {{Code|{{m|Pudełko|Nazwa przestrzeni nazw dyskusji}}}} (ale ich nie trzeba podawać w dziecku, ale można) i w parametrach dziecka, jeśli chodzi o zmienną {{Code|numer jednostki}}, czyli np.: {{Code|{{m|Pudełko|Nazwa przestrzeni nazw dyskusji|numer jednostki{{=}}<jakaś liczba całkowita dodatnia>}}}}. Te parametry przestrzenne zamiast w rodzicu w szablonie można podać w ramce dziecka, wtedy parametry dziecka mają pierwszeństwo. Parametry przestrzenne mogą mogą być podane w postaci przestrzeni przedmiotowej lub dyskusji, ale ta funkcja zawsze ją zamienia na dyskusji. Przestrzeń nazw z parametrów nazw przestrzennych może odpowiadać wartości przestrzeni głównej, to wtedy odpowiednia przestrzeń nazw z parametru nazwy jednostki się nie liczy w tej funkcji, aby się liczyła należy użyć funkcji {{Code|{{sr|#p["Nazwa przestrzeni nazw dyskusji 2"](frame,...)|p=Pudełko}}}}. Definicja skrótowa funkcji: <syntaxhighlight lang="lua"> p["Nazwa przestrzeni nazw dyskusji"]=function(frame,czy_uwzglednic_alternatywna_nazwe,i)...end; </syntaxhighlight> Wtedy ciało funkcji tej, czyli jego definicja w środku, jest: <syntaxhighlight lang="lua"> -- Jest liczony numer parametru nazwy przestrzeni nazw, domyslnie chodzi tu o numer bazowy parametrów przestrzennych; local numer_jednostki=i or frame.args["numer jednostki"]; local liczba_numer_jednostki=((numer_jednostki)and(tonumber(numer_jednostki))or 0); local pudelko_pomocne_modul=require("Module:Pudełko/Pomocne"); -- Liczy nazwę przestrzeni nazw dyskusji na podstawie podanych parametrów; return pudelko_pomocne_modul.Nazwa_przestrzeni_nazw(frame,2, czy_uwzglednic_alternatywna_nazwe,liczba_numer_jednostki); </syntaxhighlight> Parametry funkcji: * {{Code|frame}} - tablica ramki tablicy transportu, * {{Code|czy_uwzglednic_alternatywna_nazwe}} - czy ma uwzględniać nazwę przestrzeni nazw domyślną szablonu, dostępne wartości: {{Code|false}}, w której nazwa domyślna nie jest uwzględniana wtedy, oraz {{Code|nil}} i {{Code|true}}, które oznaczają to samo, w tym jeżeli ona jest uwzględniana, wtedy jest brany parametr pierwszy dziecka, który musi istnieć przy takiej wartości tego parametru, tzn. {{Code|{{m|Pudełko|Nazwa przestrzeni nazw dyskusji|Szablon}}}} - ta nazwa domyślna zostanie przekształcona na dyskusji, a jeżeli ona by była dyskusji, to nie byłoby żadnego przekształcenia, a jeśli nazwa uzyskana nazwy przestrzeni nazw z parametrów przestrzennych jest w takim przypadku błędna, to w takim razie brany jest ten parametr, a jeżeli nazwa domyślna jest błędna, czyli {{Code|{{m|Pudełko|Nazwa przestrzeni nazw dyskusji|Moja przestrzeń}}}}, wtedy funkcja zwraca stan błędu {{Code|(błąd)}}. * {{Code|i}} - numer zmiennej nazwy przestrzeni nazw. Funkcja wykorzystuje {{Code|{{sr|#p.Nazwa_przestrzeni_nazw(frame,...)|p=Pudełko/Pomocne}}}} do wyznaczania ogólnego nazwy przestrzeni nazw dla pozycji bazowej i numerkowej, tzn. dla pozycji: jeden, dwa, trzy,..., itd, i ich ogólnej. Parametr ramki tablicy transportu rodzica szablonu: * {{Code|nazwa przestrzeni nazw}}, {{Code|nazwa przestrzeni nazw 1}}, {{Code|nazwa przestrzeni nazw 2}}, {{Code|nazwa przestrzeni nazw 3}},..., {{Code|nazwa przestrzeni nazw i}} - nazwy przestrzeni nazw dla pozycji bazowej oraz zwykłej i ogólnej numerkowej, * {{Code|typ jednostki}}, {{Code|typ jednostki 1}}, {{Code|typ jednostki 2}}, {{Code|typ jednostki 3}},..., {{Code|typ jednostki i}} - typy jednostek, którym odpowiadają pewne przestrzenie przedmiotowe, dla pozycji bazowej, numerkowej i ogólnej. Parametry ramki tablicy transportu dziecka: * Parametry dziecka są takie same jak rodzica dla funkcji pudełkowej plus tu wymienione, * {{Code|numer jednostki}} - jak parametr {{Code|i}} nie został ustawiony, to wtedy liczy się ta zmienna. Przykłady: <syntaxhighlight lang="mediawiki"> {{Nazwa szablonu|nazwa przestrzeni nazw=Wikibooks|nazwa przestrzeni nazw 2=Szablon|nazwa przestrzeni nazw i=Moduł}} </syntaxhighlight> W dziecku powiedzmy jest wywołanie, i szukamy nazwy przestrzeni nazw o numerze dwa, która nie została podana, ale istnieje za to jej wersji ogólna {{Code|nazwa przestrzeni nazw i}} i domyślna {{Code|nazwa przestrzeni nazw}}: <syntaxhighlight lang="mediawiki"> {{#invoke:Pudełko|Nazwa przestrzeni nazw dyskusji|numer jednostki=1}} </syntaxhighlight> Na podstawie powyższego przykładu otrzymamy wynik o schemacie, nie wyniku, bo tam nie ma zmiennej {{Code|nazwa przestrzeni nazw 1}}, ale jest {{Code|nazwa przestrzeni nazw i}}: <syntaxhighlight lang="mediawiki"> <!-- Ale nie "nazwa przestrzeni nazw", bo jej nie ma, ale za to istnieje "nazwa przestrzeni nazw i"; --> <!-- nazwa przestrzeni nazw 2=nazwa przestrzeni nazw i=Moduł; --> <!-- Czyli wynik: --> Dyskusja modułu <!-- Widzimy, że wygenerowała się nazwa przestrzeni nazw, którą jest przestrzeń dyskusji przestrzeni programowej przestrzeni przedmiotowej "Moduł", którą również jest "Szablon" jego przestrzeni dyskusji "Dyskusja szablonu", a dla ich przestrzeni przedmiotowej, zamiast dyskusji, to przekształca się na dyskusji jej odpowiadającą; --> </syntaxhighlight> Nie jest brana w tym powyższym przykładzie zmienna {{Code|nazwa przestrzeni nazw}}, bo jej nie ma, ale za to jest {{Code|nazwa przestrzeni nazw i}}, bo ona występuje jako parametr domyślny ogólny dla parametrów numerkowych. Przykłady w wikikodzie: * {{Code|{{m|Pudełko|Nazwa przestrzeni nazw dyskusji|numer jednostki{{=}}2}}}} → {{Tt|{{#invoke:Pudełko|Nazwa przestrzeni nazw dyskusji|numer jednostki=2}}}} * {{Code|{{m|Pudełko|Nazwa przestrzeni nazw dyskusji|Szablon|nazwa przestrzeni nazw i{{=}}Moja przestrzeń|numer jednostki{{=}}2}}}} → {{Tt|{{#invoke:Pudełko|Nazwa przestrzeni nazw dyskusji|Szablon|nazwa przestrzeni nazw i=Moja przestrzeń|numer jednostki=2}}}} * {{Code|{{m|Pudełko|Nazwa przestrzeni nazw dyskusji|nazwa przestrzeni nazw 2{{=}}Szablon|numer jednostki{{=}}2}}}} → {{Tt|{{#invoke:Pudełko|Nazwa przestrzeni nazw dyskusji|nazwa przestrzeni nazw 2=Szablon|numer jednostki=2}}}} * {{Code|{{m|Pudełko|Nazwa przestrzeni nazw dyskusji|nazwa przestrzeni nazw 2{{=}}Szablon|numer jednostki{{=}}2}}}} → {{Tt|{{#invoke:Pudełko|Nazwa przestrzeni nazw dyskusji|nazwa przestrzeni nazw i=Szablon|numer jednostki=2}}}} * {{Code|{{m|Pudełko|Nazwa przestrzeni nazw dyskusji|nazwa przestrzeni nazw{{=}}Szablon|numer jednostki{{=}}2}}}} → {{Tt|{{#invoke:Pudełko|Nazwa przestrzeni nazw dyskusji|nazwa przestrzeni nazw=Szablon|numer jednostki=2}}}} Powyżej dla przykładu podano parametry nie w rodzicu w szablonie, tylko w dziecku, jeśli chodzi o parametry nazw przestrzeni nazw, ale ich się za to nie powinno podawać w tych ramach, tylko w szablonach, w których wywoływane są te ramki pudełek {{Code|{{m|Pudełko}}}}, ale tak tutaj tak zrobiono by było najłatwiej sprawdzić działanie tego typu funkcji. Analogicznie możemy podawać parametry typu jednostki, np.: wywołaniu modułowym {{Code|{{m|Pudełko|Nazwa przestrzeni nazw dyskusji|typ jednostki 2{{=}}strona szablonu|numer jednostki{{=}}2}}}}, ale o tym więcej w rozdziałach {{Code|{{sr|#p["Dyskusyjny typ jednostki"](frame,i)|p=Pudełko}}}} w „{{sr|#Funkcje typu jednostki|p=Pudełko}}”, ale wtedy nazwa przestrzeni nazw reprezentowana przez {{Parametr|typ jednostki 2|strona szablonu}}, jest zamieniana na nazwę przestrzeni nazw dyskusji. Parametr dyskusji typu jednostki bazowy lub dla danego numerka ogólny, czy szczegółowy, nie gra roli. Typ jednostki nie ma takiej samej wartości dla przestrzeni przedmiotowej, co dyskusji. Również parametry typu jednostki nie powinno się podawać w dziecku w ramce, tylko w rodzicu w szablonie jako parametry, w którym ta ramka jest wywoływana, ale tutaj podano jedynie dla przykładu, jak najłatwiej sprawdzić działanie tych parametrów tej funkcji. Najpierw w funkcji nagłówku brane są parametry nazw przestrzeni nazw, a jeżeli ich nie ma, to parametry typu jednostki, a jeżeli nie ma, to generowane są nazwy na podstawie aktualnego modułu. == Funkcje nazw przestrzeni nazw drugiej wersji == === {{Code|p["Nazwa przestrzeni nazw 2"](frame,...)}} === Funkcja pisze nazwę przestrzeni nazw, niezależnie, czy to jest przedmiotowa, czy dyskusji, według, i nie zawsze tylko, podanej w zmiennej {{Code|nazwa przestrzeni nazw}} dla pozycja bazowej w podanych parametrach szablonu rodzicu ramki dziecka, lub dla innej pozycji należy parametr podawać w formie {{Code|nazwa przestrzeni nazw 1}}, {{Code|nazwa przestrzeni nazw 2}}, {{Code|nazwa przestrzeni nazw 3}},..., lub te parametry można podać w postaci ogólnej {{Code|nazwa przestrzeni nazw i}}. W tej funkcji trzeba też podawać parametry nazwy jednostek {{Code|nazwa jednostki}}, {{Code|nazwa jednostki 1}}, {{Code|nazwa jednostki 2}}, {{Code|nazwa jednostki 3}},... Parametry podaje się w parametrach rodzica wywołania tej funkcji {{Code|{{m|Pudełko|Nazwa przestrzeni nazw 2}}}} (ale ich nie trzeba podawać w dziecku, ale można) i w parametrach dziecka, jeśli chodzi o zmienną {{Code|numer jednostki}}, czyli np.: {{Code|{{m|Pudełko|Nazwa przestrzeni nazw 2|numer jednostki{{=}}<jakaś liczba całkowita dodatnia>}}}}. Te parametry przestrzenne zamiast w rodzicu w szablonie można podać w ramce dziecka, wtedy parametry dziecka mają pierwszeństwo. Przestrzeń nazw z parametrów nazw przestrzennych może odpowiadać wartości przestrzeni głównej, to wtedy odpowiednia przestrzeń nazw z parametru nazwy jednostki się liczy w tej funkcji, wtedy jest liczona nazwa przestrzeni nazw z tego parametru. Gdy parametry przestrzenne lub typ jednostki w drugim podejściu nie wskazują na przestrzeń główną, to wtedy działanie tej funkcji jest podobne do {{Code|{{sr|#p["Nazwa przestrzeni nazw"](frame,...)|p=Pudełko}}}}. Definicja skrótowa funkcji: <syntaxhighlight lang="lua"> p["Nazwa przestrzeni nazw 2"]=function(frame,czy_uwzglednic_alternatywna_nazwe,i)...end; </syntaxhighlight> Wtedy ciało funkcji tej, czyli jego definicja w środku, jest: <syntaxhighlight lang="lua"> local pudelko_pomocne_modul=require("Module:Pudełko/Pomocne"); -- Liczy nazwę przestrzeni nazw, jeżeli z parametrów przestrzennych przestrzeń wskazuje na główną, to wtedy jest liczona przestrzeń nazw z nazwy jednostki; return pudelko_pomocne_modul.Nazwa_przestrzeni_nazw_2(frame,czy_uwzglednic_alternatywna_nazwe,i) </syntaxhighlight> Parametry funkcji: * {{Code|frame}} - tablica ramki tablicy transportu, * {{Code|czy_uwzglednic_alternatywna_nazwe}} - czy ma uwzględniać nazwę przestrzeni nazw domyślną szablonu, dostępne wartości: {{Code|false}}, w której nazwa domyślna nie jest uwzględniana wtedy, oraz {{Code|nil}} i {{Code|true}}, które oznaczają to samo, w tym jeżeli ona jest uwzględniana, wtedy jest brany parametr pierwszy dziecka, który musi istnieć przy takiej wartości tego parametru, tzn. {{Code|{{m|Pudełko|Nazwa przestrzeni nazw 2|Szablon}}}}, a jeśli nazwa uzyskana nazwy przestrzeni nazw jest w takim przypadku błędna, to brany jest ten element, a jeżeli nazwa domyślna jest błędna, czyli {{Code|{{m|Pudełko|Nazwa przestrzeni nazw 2|Moja przestrzeń}}}}, wtedy funkcja zwraca stan błędu {{Code|(błąd)}}. * {{Code|i}} - numer zmiennej nazwy przestrzeni nazw. Funkcja wykorzystuje {{Code|{{sr|#p.Nazwa_przestrzeni_nazw_2(frame,...)|p=Pudełko/Pomocne}}}} do wyznaczania ogólnego nazwy przestrzeni nazw dla pozycji bazowej i numerkowej, tzn. dla pozycji: jeden, dwa, trzy,..., itd, i ich ogólnej. Parametr ramki tablicy transportu rodzica szablonu: * {{Code|nazwa przestrzeni nazw}}, {{Code|nazwa przestrzeni nazw 1}}, {{Code|nazwa przestrzeni nazw 2}}, {{Code|nazwa przestrzeni nazw 3}},..., {{Code|nazwa przestrzeni nazw i}} - nazwy przestrzeni nazw dla pozycji bazowej oraz zwykłej i ogólnej numerkowej, * {{Code|nazwa jednostki}}, {{Code|nazwa jednostki 1}}, {{Code|nazwa jednostki 2}}, {{Code|nazwa jednostki 3}},... - nazwy jednostek dla pozycji bazowej i numerkowej, * {{Code|typ jednostki}}, {{Code|typ jednostki 1}}, {{Code|typ jednostki 2}}, {{Code|typ jednostki 3}},..., {{Code|typ jednostki i}} - typy jednostek, którym odpowiadają pewne przestrzenie przedmiotowe, dla pozycji bazowej, numerkowej i ogólnej, ** {{Code|dyskusja typu jednostki}}, {{Code|dyskusja typu jednostki 1}}, {{Code|dyskusja typ jednostki 2}}, {{Code|dyskusja typ jednostki 3}},..., {{Code|dyskusja typ jednostki i}} - czy dany typ jednostki ma przedstawiać, jeśli niepusta, przestrzeń dyskusji dla pozycji bazowej, numerkowej i ogólnej. Parametry ramki tablicy transportu dziecka: * Parametry dziecka są takie same jak rodzica dla funkcji pudełkowej plus tu wymienione, * {{Code|numer jednostki}} - jak parametr {{Code|i}} nie został ustawiony, to wtedy liczy się ta zmienna. Przykłady: <syntaxhighlight lang="mediawiki"> {{Nazwa szablonu|nazwa przestrzeni nazw=Wikibooks|nazwa przestrzeni nazw 1=Szablon|nazwa przestrzeni nazw i=|nazwa jednostki 2=Wikibooks:Strona}} </syntaxhighlight> W dziecku powiedzmy jest wywołanie, i szukamy nazwy przestrzeni nazw o numerze dwa, która została podana, ale istnieje za to jej wersji ogólna {{Code|nazwa przestrzeni nazw i}} i domyślna {{Code|nazwa przestrzeni nazw}}, ale wtedy dla tego numerkowego liczy się to ogólne z {{Code| i}}, a ponieważ ta nazwa jest pusta, więc będziemy liczyli nazwę przestrzeni nazw z {{Code|nazwa jednostki 2}}: <syntaxhighlight lang="mediawiki"> {{#invoke:Pudełko|Nazwa przestrzeni nazw 2|numer jednostki=2}} </syntaxhighlight> Na podstawie powyższego przykładu otrzymamy wynik o schemacie, nie wyniku, bo tam nie ma zmiennej {{Code|nazwa przestrzeni nazw 1}}, ale jest {{Code|nazwa przestrzeni nazw i}}: <syntaxhighlight lang="mediawiki"> <!-- Ale nie "nazwa przestrzeni nazw 2", bo jej nie ma, ale za to istnieje "nazwa przestrzeni nazw i"; --> <!-- nazwa przestrzeni nazw 2=nazwa przestrzeni nazw i="", a nazwa jednostki 2="Wikibooks:Strona"; --> <!-- Czyli wynik: --> Wikibooks <!-- Widzimy, że wygenerowała się nazwa przestrzeni nazw, którą jest przestrzeń nieprogramowa, ale projektu, wychodząca z nazwy jednostek w tym przypadku z "nazwa jednostki 2"; --> </syntaxhighlight> Nie jest brana w tym powyższym przykładzie zmienna {{Code|nazwa przestrzeni nazw}}, bo jej nie ma, ale za to jest {{Code|nazwa przestrzeni nazw i}}, bo ona występuje jako parametr domyślny ogólny dla parametrów numerkowych. Tytaj jest używana jest zmienna {{Code|nazwa jednostki 2}} do wygenerowania ostatecznego wyniku, bo jak można zauważyć, parametry przestrzenne wskazują na przestrzeń główną, a nazwy jednostek już nie. Przykłady w wikikodzie: * {{Code|{{m|Pudełko|Nazwa przestrzeni nazw 2|numer jednostki{{=}}2}}}} → {{Tt|{{#invoke:Pudełko|Nazwa przestrzeni nazw 2|numer jednostki=2}}}} * {{Code|{{m|Pudełko|Nazwa przestrzeni nazw 2|Szablon|nazwa przestrzeni nazw i{{=}}Moja przestrzeń|numer jednostki{{=}}2}}}} → {{Tt|{{#invoke:Pudełko|Nazwa przestrzeni nazw 2|Szablon|nazwa przestrzeni nazw i=Moja przestrzeń|numer jednostki=2}}}} * {{Code|{{m|Pudełko|Nazwa przestrzeni nazw 2|nazwa przestrzeni nazw 2{{=}}|nazwa jednostki 2{{=}}Szablon:Strona|numer jednostki{{=}}2}}}} → {{Tt|{{#invoke:Pudełko|Nazwa przestrzeni nazw 2|nazwa przestrzeni nazw 2=|nazwa jednostki 2=Szablon:Strona|numer jednostki=2}}}} * {{Code|{{m|Pudełko|Nazwa przestrzeni nazw 2|nazwa przestrzeni nazw i{{=}}|nazwa jednostki 2{{=}}Szablon:Strona|numer jednostki{{=}}2}}}} → {{Tt|{{#invoke:Pudełko|Nazwa przestrzeni nazw 2|nazwa przestrzeni nazw i=|nazwa jednostki 2=Szablon:Strona|numer jednostki=2}}}} * {{Code|{{m|Pudełko|Nazwa przestrzeni nazw 2|Szablon|nazwa przestrzeni nazw{{=}}|nazwa jednostki 2{{=}}Wikibooks:Strona|numer jednostki{{=}}2}}}} → {{Tt|{{#invoke:Pudełko|Nazwa przestrzeni nazw 2|Szablon|nazwa przestrzeni nazw=|nazwa jednostki 2=Wikibooks:Strona|numer jednostki=2}}}} Powyżej dla przykładu podano parametry nie w rodzicu w szablonie, tylko w dziecku, jeśli chodzi o parametry nazw przestrzeni nazw i nazw jednostek, ale ich się za to nie powinno podawać w tych ramach, tylko w szablonach, w których wywoływane są te ramki pudełek {{Code|{{m|Pudełko}}}}, ale tak tutaj tak zrobiono by było najłatwiej sprawdzić działanie tego typu funkcji. Analogicznie możemy podawać parametry typu jednostki, np.: wywołaniu modułowym {{Code|{{m|Pudełko|Nazwa przestrzeni nazw 2|typ jednostki 2{{=}}Podręcznik|nazwa jednostki 2{{=}}Szablon:Strona|numer jednostki{{=}}2}}}} (ale wtedy jest brana przestrzeń nazw z nazwy jednostki), ale o tym więcej w rozdziałach {{Code|{{sr|#p["Typ jednostki 2"](frame,i)|p=Pudełko}}}} w „{{sr|#Funkcje typu jednostki|p=Pudełko}}”, one definiują przestrzenie przedmiotowe, czy dyskusji ale można lub nie użyć parametru dyskusji typu jednostki z wartością niepustą, wtedy wyświetli się nazwa przestrzeni nazw dyskusji. Jeżeli typ jednostki wskazuje na przestrzeń nazw główną, wtedy się liczą parametry nazw jednostek. Typ jednostki nie ma takiej samej wartości dla przestrzeni przedmiotowej, co dyskusji. Również parametry typu jednostki nie powinno się podawać w dziecku w ramce, tylko w rodzicu w szablonie jako parametry, w którym ta ramka jest wywoływana, ale tutaj podano jedynie dla przykładu, jak najłatwiej sprawdzić działanie tych parametrów tej funkcji. Najpierw w funkcji nagłówku brane są parametry nazw przestrzeni nazw, a jeżeli ich nie ma, to parametry typu jednostki, a jeżeli nie ma lub parametry przestrzenne wskazują na przestrzeń główną, i nie ma nazwy jednostki, to generowane są nazwy tej funkcji na podstawie aktualnej strony. === {{Code|p["Nazwa przedmiotowej przestrzeni nazw 2"](frame,...)}} === Funkcja pisze przedmiotową nazwę przestrzeni nazw jakikolwiek nazwy przestrzeni nazw (tzn. nazwę przedmiotową nazwy przestrzenie nazw, czyli nie dyskusji, zamieniana jest na nią samą, czyli identyfikator przestrzeni się nie zmienia, a dyskusji, nie przedmiotową, przekształca się na przedmiotową jej odpowiadającą, czyli w tym przypadku identyfikator przestrzeni zmniejsza się o numer mniej), według, i nie zawsze tylko, podanej w zmiennej {{Code|nazwa przestrzeni nazw}} dla pozycja bazowej w podanych parametrach szablonu rodzicu ramki dziecka, lub dla innej pozycji należy parametr podawać w formie {{Code|nazwa przestrzeni nazw 1}}, {{Code|nazwa przestrzeni nazw 2}}, {{Code|nazwa przestrzeni nazw 3}},..., lub te parametry można podać w postaci ogólnej {{Code|nazwa przestrzeni nazw i}}. W tej funkcji trzeba też podawać parametry nazwy jednostek {{Code|nazwa jednostki}}, {{Code|nazwa jednostki 1}}, {{Code|nazwa jednostki 2}}, {{Code|nazwa jednostki 3}},... Parametry podaje się w parametrach rodzica wywołania tej funkcji {{Code|{{m|Pudełko|Nazwa przedmiotowej przestrzeni nazw 2}}}} (ale ich nie trzeba podawać w dziecku, ale można) i w parametrach dziecka, jeśli chodzi o zmienną {{Code|numer jednostki}}, czyli np.: {{Code|{{m|Pudełko|Nazwa przedmiotowej przestrzeni nazw 2|numer jednostki{{=}}<jakaś liczba całkowita dodatnia>}}}}. Te parametry przestrzenne zamiast w rodzicu w szablonie można podać w ramce dziecka, wtedy parametry dziecka mają pierwszeństwo. Przestrzeń nazw z parametrów nazw przestrzennych po przekształceniu na przedmiotową może odpowiadać wartości przestrzeni głównej, to wtedy odpowiednia przestrzeń nazw z parametru nazwy jednostki się liczy w tej funkcji, wtedy jest liczona nazwa przestrzeni nazw z tego parametru. Gdy parametry przestrzenne lub typ jednostki w drugim podejściu nie wskazują na przestrzeń główną, to wtedy działanie tej funkcji jest podobne do {{Code|{{sr|#p["Nazwa przedmiotowej przestrzeni nazw"](frame,...)|p=Pudełko}}}}. Definicja skrótowa funkcji: <syntaxhighlight lang="lua"> p["Nazwa przedmiotowej przestrzeni nazw 2"]=function(frame,czy_uwzglednic_alternatywna_nazwe,i)...end; </syntaxhighlight> Wtedy ciało funkcji tej, czyli jego definicja w środku, jest: <syntaxhighlight lang="lua"> local pudelko_pomocne_modul=require("Module:Pudełko/Pomocne"); return pudelko_pomocne_modul.Nazwa_przestrzeni_nazw_przedmiotowa_dyskusji_2(frame,czy_uwzglednic_alternatywna_nazwe,i,"przedmiotowa"); </syntaxhighlight> Parametry funkcji: * {{Code|frame}} - tablica ramki tablicy transportu, * {{Code|czy_uwzglednic_alternatywna_nazwe}} - czy ma uwzględniać nazwę przestrzeni nazw domyślną szablonu, dostępne wartości: {{Code|false}}, w której nazwa domyślna nie jest uwzględniana wtedy, oraz {{Code|nil}} i {{Code|true}}, które oznaczają to samo, w tym jeżeli ona jest uwzględniana, wtedy jest brany parametr pierwszy dziecka, który musi istnieć przy takiej wartości tego parametru, tzn. {{Code|{{m|Pudełko|Nazwa przedmiotowej przestrzeni nazw 2|Szablon}}}}, nazwa domyślna zostanie zamieniona na przedmiotową, a jeżeli jest już taka, to żadnej zamiany nie ma, a jeśli nazwa uzyskana nazwy przestrzeni nazw jest w takim przypadku błędna, to brany jest ten element, a jeżeli nazwa domyślna jest błędna, czyli {{Code|{{m|Pudełko|Nazwa przedmiotowej przestrzeni nazw 2|Moja przestrzeń}}}}, wtedy funkcja zwraca stan błędu {{Code|(błąd)}}. * {{Code|i}} - numer zmiennej nazwy przestrzeni nazw. Funkcja wykorzystuje {{Code|{{sr|#p.Nazwa_przestrzeni_nazw_przedmiotowa_dyskusji_2(frame,...)|p=Pudełko/Pomocne}}}} do wyznaczania ogólnego nazwy przestrzeni nazw dla pozycji bazowej i numerkowej, tzn. dla pozycji: jeden, dwa, trzy,..., itd, i ich ogólnej. Parametr ramki tablicy transportu rodzica szablonu: * {{Code|nazwa przestrzeni nazw}}, {{Code|nazwa przestrzeni nazw 1}}, {{Code|nazwa przestrzeni nazw 2}}, {{Code|nazwa przestrzeni nazw 3}},..., {{Code|nazwa przestrzeni nazw i}} - nazwy przestrzeni nazw dla pozycji bazowej oraz zwykłej i ogólnej numerkowej, * {{Code|nazwa jednostki}}, {{Code|nazwa jednostki 1}}, {{Code|nazwa jednostki 2}}, {{Code|nazwa jednostki 3}},... - nazwy jednostek dla pozycji bazowej i numerkowej, * {{Code|typ jednostki}}, {{Code|typ jednostki 1}}, {{Code|typ jednostki 2}}, {{Code|typ jednostki 3}},..., {{Code|typ jednostki i}} - typy jednostek, którym odpowiadają pewne przestrzenie przedmiotowe, dla pozycji bazowej, numerkowej i ogólnej. Parametry ramki tablicy transportu dziecka: * Parametry dziecka są takie same jak rodzica dla funkcji pudełkowej plus tu wymienione, * {{Code|numer jednostki}} - jak parametr {{Code|i}} nie został ustawiony, to wtedy liczy się ta zmienna. Przykłady: <syntaxhighlight lang="mediawiki"> {{Nazwa szablonu|nazwa przestrzeni nazw=Wikibooks|nazwa przestrzeni nazw 1=Szablon|nazwa przestrzeni nazw i=|nazwa jednostki 2=Dyskusja Wikibooks:Strona}} </syntaxhighlight> W dziecku powiedzmy jest wywołanie, i szukamy nazwy przestrzeni nazw o numerze dwa, która została podana, ale istnieje za to jej wersji ogólna {{Code|nazwa przestrzeni nazw i}} i domyślna {{Code|nazwa przestrzeni nazw}}, ale wtedy dla tego numerkowego liczy się to ogólne z {{Code| i}}, a ponieważ ta nazwa jest pusta, więc będziemy liczyli nazwę przestrzeni nazw z {{Code|nazwa jednostki 2}}: <syntaxhighlight lang="mediawiki"> {{#invoke:Pudełko|Nazwa przedmiotowej przestrzeni nazw 2|numer jednostki=2}} </syntaxhighlight> Na podstawie powyższego przykładu otrzymamy wynik o schemacie, nie wyniku, bo tam nie ma zmiennej {{Code|nazwa przestrzeni nazw 1}}, ale jest {{Code|nazwa przestrzeni nazw i}}: <syntaxhighlight lang="mediawiki"> <!-- Ale nie "nazwa przestrzeni nazw 2", bo jej nie ma, ale za to istnieje "nazwa przestrzeni nazw i"; --> <!-- nazwa przestrzeni nazw 2=nazwa przestrzeni nazw i="", a nazwa jednostki 2="Dyskusja Wikibooks:Strona"; --> <!-- Czyli wynik: --> Wikibooks <!-- Widzimy, że wygenerowała się nazwa przestrzeni nazw, którą jest przestrzeń nieprogramowa, ale projektu, wychodząca z nazwy jednostek w tym przypadku z "nazwa jednostki 2"; --> </syntaxhighlight> Nie jest brana w tym powyższym przykładzie zmienna {{Code|nazwa przestrzeni nazw}}, bo jej nie ma, ale za to jest {{Code|nazwa przestrzeni nazw i}}, bo ona występuje jako parametr domyślny ogólny dla parametrów numerkowych. Tytaj jest używana jest zmienna {{Code|nazwa jednostki 2}} do wygenerowania ostatecznego wyniku, bo jak można zauważyć, parametry przestrzenne wskazują na przestrzeń główną, a nazwy jednostek już nie. Przykłady w wikikodzie: * {{Code|{{m|Pudełko|Nazwa przedmiotowej przestrzeni nazw 2|numer jednostki{{=}}2}}}} → {{Tt|{{#invoke:Pudełko|Nazwa przedmiotowej przestrzeni nazw 2|numer jednostki=2}}}} * {{Code|{{m|Pudełko|Nazwa przedmiotowej przestrzeni nazw 2|Dyskusja szablonu|nazwa przestrzeni nazw i{{=}}Moja przestrzeń|numer jednostki{{=}}2}}}} → {{Tt|{{#invoke:Pudełko|Nazwa przedmiotowej przestrzeni nazw 2|Dyskusja szablonu|nazwa przestrzeni nazw i=Moja przestrzeń|numer jednostki=2}}}} * {{Code|{{m|Pudełko|Nazwa przedmiotowej przestrzeni nazw 2|nazwa przestrzeni nazw 2{{=}}Dyskusja|nazwa jednostki 2{{=}}Dyskusja szablonu:Strona|numer jednostki{{=}}2}}}} → {{Tt|{{#invoke:Pudełko|Nazwa przedmiotowej przestrzeni nazw 2|nazwa przestrzeni nazw 2=Dyskusja|nazwa jednostki 2=Dyskusja szablonu:Strona|numer jednostki=2}}}} * {{Code|{{m|Pudełko|Nazwa przedmiotowej przestrzeni nazw 2|nazwa przestrzeni nazw i{{=}}Dyskusja|nazwa jednostki 2{{=}}Dyskusja szablonu:Strona|numer jednostki{{=}}2}}}} → {{Tt|{{#invoke:Pudełko|Nazwa przedmiotowej przestrzeni nazw 2|nazwa przestrzeni nazw i=Dyskusja|nazwa jednostki 2=Dyskusja szablonu:Strona|numer jednostki=2}}}} * {{Code|{{m|Pudełko|Nazwa przedmiotowej przestrzeni nazw 2|Dyskusja szablonu|nazwa przestrzeni nazw{{=}}Dyskusja|nazwa jednostki 2{{=}}Wikibooks:Strona|numer jednostki{{=}}2}}}} → {{Tt|{{#invoke:Pudełko|Nazwa przedmiotowej przestrzeni nazw 2|Dyskusja szablonu|nazwa przestrzeni nazw=Dyskusja|nazwa jednostki 2=Dyskusja Wikibooks:Strona|numer jednostki=2}}}} Powyżej dla przykładu podano parametry nie w rodzicu w szablonie, tylko w dziecku, jeśli chodzi o parametry nazw przestrzeni nazw i nazw jednostek, ale ich się za to nie powinno podawać w tych ramach, tylko w szablonach, w których wywoływane są te ramki pudełek {{Code|{{m|Pudełko}}}}, ale tak tutaj tak zrobiono by było najłatwiej sprawdzić działanie tego typu funkcji. Analogicznie możemy podawać parametry typu jednostki, np.: wywołaniu modułowym {{Code|{{m|Pudełko|Nazwa przedmiotowej przestrzeni nazw 2|typ jednostki 2{{=}}Podręcznik|nazwa jednostki 2{{=}}Dyskusja szablonu:Strona|numer jednostki{{=}}2}}}} (ale wtedy jest brana przestrzeń nazw z nazwy jednostki), ale o tym więcej w rozdziałach {{Code|{{sr|#p["Przedmiotowy typ jednostki 2"](frame,i)|p=Pudełko}}}} w „{{sr|#Funkcje typu jednostki|p=Pudełko}}”, one definiują przestrzenie przedmiotowe, ale można użyć parametru dyskusji typu jednostki z wartością niepustą, pustą, czy nawet jej nie podamy, wtedy wyświetli się nazwa przestrzeni nazw przedmiotowej. Jeżeli typ jednostki wskazuje na przestrzeń nazw główną, wtedy się liczą parametry nazw jednostek. Typ jednostki nie ma takiej samej wartości dla przestrzeni przedmiotowej, co dyskusji. Również parametry typu jednostki nie powinno się podawać w dziecku w ramce, tylko w rodzicu w szablonie jako parametry, w którym ta ramka jest wywoływana, ale tutaj podano jedynie dla przykładu, jak najłatwiej sprawdzić działanie tych parametrów tej funkcji. Najpierw w funkcji nagłówku brane są parametry nazw przestrzeni nazw, a jeżeli ich nie ma, to parametry typu jednostki, a jeżeli nie ma lub parametry przestrzenne wskazują na przestrzeń główną, i nie ma nazwy jednostki, to generowane są nazwy tej funkcji na podstawie aktualnej strony. === {{Code|p["Nazwa przestrzeni nazw dyskusji 2"](frame,...)}} === Funkcja pisze nazwę przestrzeni nazw dyskusji jakikolwiek nazwy przestrzeni nazw (tzn. nazwę dyskusji nazwy przestrzenie nazw, czyli nie przedmiotowej, zamieniana jest na nią samą, czyli identyfikator przestrzeni się nie zmienia, a przedmiotową, nie dyskusji, przekształca się na dyskusji jej odpowiadającą, czyli w tym przypadku identyfikator przestrzeni zwiększa się o numer więcej), według, i nie zawsze tylko, podanej w zmiennej {{Code|nazwa przestrzeni nazw}} dla pozycja bazowej w podanych parametrach szablonu rodzicu ramki dziecka, lub dla innej pozycji należy parametr podawać w formie {{Code|nazwa przestrzeni nazw 1}}, {{Code|nazwa przestrzeni nazw 2}}, {{Code|nazwa przestrzeni nazw 3}},..., lub te parametry można podać w postaci ogólnej {{Code|nazwa przestrzeni nazw i}}. W tej funkcji trzeba też podawać parametry nazwy jednostek {{Code|nazwa jednostki}}, {{Code|nazwa jednostki 1}}, {{Code|nazwa jednostki 2}}, {{Code|nazwa jednostki 3}},... Parametry podaje się w parametrach rodzica wywołania tej funkcji {{Code|{{m|Pudełko|Nazwa przestrzeni nazw dyskusji 2}}}} (ale ich nie trzeba podawać w dziecku, ale można) i w parametrach dziecka, jeśli chodzi o zmienną {{Code|numer jednostki}}, czyli np.: {{Code|{{m|Pudełko|Nazwa przestrzeni nazw dyskusji 2|numer jednostki{{=}}<jakaś liczba całkowita dodatnia>}}}}. Te parametry przestrzenne zamiast w rodzicu w szablonie można podać w ramce dziecka, wtedy parametry dziecka mają pierwszeństwo. Przestrzeń nazw z parametrów nazw przestrzennych po przekształceniu może odpowiadać wartości przestrzeni głównej, to wtedy odpowiednia przestrzeń nazw z parametru nazwy jednostki się liczy w tej funkcji, wtedy jest liczona nazwa przestrzeni nazw dyskusji z tego parametru. Gdy parametry przestrzenne lub typ jednostki w drugim podejściu nie wskazują na przestrzeń główną, to wtedy działanie tej funkcji jest podobne do {{Code|{{sr|#p["Nazwa dyskusji przestrzeni nazw"](frame,...)|p=Pudełko}}}}. Definicja skrótowa funkcji: <syntaxhighlight lang="lua"> p["Nazwa przestrzeni nazw dyskusji 2"]=function(frame,czy_uwzglednic_alternatywna_nazwe,i)...end; </syntaxhighlight> Wtedy ciało funkcji tej, czyli jego definicja w środku, jest: <syntaxhighlight lang="lua"> local pudelko_pomocne_modul=require("Module:Pudełko/Pomocne"); return pudelko_pomocne_modul.Nazwa_przestrzeni_nazw_przedmiotowa_dyskusji_2(frame,czy_uwzglednic_alternatywna_nazwe,i,"dyskusja"); </syntaxhighlight> Parametry funkcji: * {{Code|frame}} - tablica ramki tablicy transportu, * {{Code|czy_uwzglednic_alternatywna_nazwe}} - czy ma uwzględniać nazwę przestrzeni nazw domyślną szablonu, dostępne wartości: {{Code|false}}, w której nazwa domyślna nie jest uwzględniana wtedy, oraz {{Code|nil}} i {{Code|true}}, które oznaczają to samo, w tym jeżeli ona jest uwzględniana, wtedy jest brany parametr pierwszy dziecka, który musi istnieć przy takiej wartości tego parametru, tzn. {{Code|{{m|Pudełko|Nazwa przestrzeni nazw dyskusji 2|Szablon}}}}, nazwa domyślna zostanie zamieniona na dyskusji, a jeżeli jest już taka, to nie ma takiej zamiany, a jeśli nazwa uzyskana nazwy przestrzeni nazw jest w takim przypadku błędna, to brany jest ten element, a jeżeli nazwa domyślna jest błędna, czyli {{Code|{{m|Pudełko|Nazwa przestrzeni nazw dyskusji 2|Moja przestrzeń}}}}, wtedy funkcja zwraca stan błędu {{Code|(błąd)}}. * {{Code|i}} - numer zmiennej nazwy przestrzeni nazw. Funkcja wykorzystuje {{Code|{{sr|#p.Nazwa_przestrzeni_nazw_przedmiotowa_dyskusji_2(frame,...)|p=Pudełko/Pomocne}}}} do wyznaczania ogólnego nazwy przestrzeni nazw dla pozycji bazowej i numerkowej, tzn. dla pozycji: jeden, dwa, trzy,..., itd, i ich ogólnej. Parametr ramki tablicy transportu rodzica szablonu: * {{Code|nazwa przestrzeni nazw}}, {{Code|nazwa przestrzeni nazw 1}}, {{Code|nazwa przestrzeni nazw 2}}, {{Code|nazwa przestrzeni nazw 3}},..., {{Code|nazwa przestrzeni nazw i}} - nazwy przestrzeni nazw dla pozycji bazowej oraz zwykłej i ogólnej numerkowej, * {{Code|nazwa jednostki}}, {{Code|nazwa jednostki 1}}, {{Code|nazwa jednostki 2}}, {{Code|nazwa jednostki 3}},... - nazwy jednostek dla pozycji bazowej i numerkowej, * {{Code|typ jednostki}}, {{Code|typ jednostki 1}}, {{Code|typ jednostki 2}}, {{Code|typ jednostki 3}},..., {{Code|typ jednostki i}} - typy jednostek, którym odpowiadają pewne przestrzenie przedmiotowe, dla pozycji bazowej, numerkowej i ogólnej. Parametry ramki tablicy transportu dziecka: * Parametry dziecka są takie same jak rodzica dla funkcji pudełkowej plus tu wymienione, * {{Code|numer jednostki}} - jak parametr {{Code|i}} nie został ustawiony, to wtedy liczy się ta zmienna. Przykłady: <syntaxhighlight lang="mediawiki"> {{Nazwa szablonu|nazwa przestrzeni nazw=Wikibooks|nazwa przestrzeni nazw 1=Szablon|nazwa przestrzeni nazw i=|nazwa jednostki 2=Wikibooks:Strona}} </syntaxhighlight> W dziecku powiedzmy jest wywołanie, i szukamy nazwy przestrzeni nazw o numerze dwa, która została podana, ale istnieje za to jej wersji ogólna {{Code|nazwa przestrzeni nazw i}} i domyślna {{Code|nazwa przestrzeni nazw}}, ale wtedy dla tego numerkowego liczy się to ogólne z {{Code| i}}, a ponieważ ta nazwa jest pusta, więc będziemy liczyli nazwę przestrzeni nazw z {{Code|nazwa jednostki 2}}: <syntaxhighlight lang="mediawiki"> {{#invoke:Pudełko|Nazwa przestrzeni nazw dyskusji 2|numer jednostki=2}} </syntaxhighlight> Na podstawie powyższego przykładu otrzymamy wynik o schemacie, nie wyniku, bo tam nie ma zmiennej {{Code|nazwa przestrzeni nazw 1}}, ale jest {{Code|nazwa przestrzeni nazw i}}: <syntaxhighlight lang="mediawiki"> <!-- Ale nie "nazwa przestrzeni nazw 2", bo jej nie ma, ale za to istnieje "nazwa przestrzeni nazw i"; --> <!-- nazwa przestrzeni nazw 2=nazwa przestrzeni nazw i="", a nazwa jednostki 2="Wikibooks:Strona"; --> <!-- Czyli wynik: --> Dyskusja Wikibooks <!-- Widzimy, że wygenerowała się nazwa przestrzeni nazw, którą jest przestrzeń nieprogramowa, ale dyskusji projektu, wychodząca z nazwy jednostek w tym przypadku z "nazwa jednostki 2"; --> </syntaxhighlight> Nie jest brana w tym powyższym przykładzie zmienna {{Code|nazwa przestrzeni nazw}}, bo jej nie ma, ale za to jest {{Code|nazwa przestrzeni nazw i}}, bo ona występuje jako parametr domyślny ogólny dla parametrów numerkowych. Tytaj jest używana jest zmienna {{Code|nazwa jednostki 2}} do wygenerowania ostatecznego wyniku, bo jak można zauważyć, parametry przestrzenne wskazują na przestrzeń główną, a nazwy jednostek już nie. Przykłady w wikikodzie: * {{Code|{{m|Pudełko|Nazwa przestrzeni nazw dyskusji 2|numer jednostki{{=}}2}}}} → {{Tt|{{#invoke:Pudełko|Nazwa przestrzeni nazw dyskusji 2|numer jednostki=2}}}} * {{Code|{{m|Pudełko|Nazwa przestrzeni nazw dyskusji 2|Szablon|nazwa przestrzeni nazw i{{=}}Moja przestrzeń|numer jednostki{{=}}2}}}} → {{Tt|{{#invoke:Pudełko|Nazwa przestrzeni nazw dyskusji 2|Szablon|nazwa przestrzeni nazw i=Moja przestrzeń|numer jednostki=2}}}} * {{Code|{{m|Pudełko|Nazwa przestrzeni nazw dyskusji 2|nazwa przestrzeni nazw 2{{=}}|nazwa jednostki 2{{=}}Szablon:Strona|numer jednostki{{=}}2}}}} → {{Tt|{{#invoke:Pudełko|Nazwa przestrzeni nazw dyskusji 2|nazwa przestrzeni nazw 2=|nazwa jednostki 2=Szablon:Strona|numer jednostki=2}}}} * {{Code|{{m|Pudełko|Nazwa przestrzeni nazw dyskusji 2|nazwa przestrzeni nazw i{{=}}|nazwa jednostki 2{{=}}Szablon:Strona|numer jednostki{{=}}2}}}} → {{Tt|{{#invoke:Pudełko|Nazwa przestrzeni nazw dyskusji 2|nazwa przestrzeni nazw i=|nazwa jednostki 2=Szablon:Strona|numer jednostki=2}}}} * {{Code|{{m|Pudełko|Nazwa przestrzeni nazw dyskusji 2|Szablon|nazwa przestrzeni nazw{{=}}|nazwa jednostki 2{{=}}Wikibooks:Strona|numer jednostki{{=}}2}}}} → {{Tt|{{#invoke:Pudełko|Nazwa przestrzeni nazw dyskusji 2|Szablon|nazwa przestrzeni nazw=|nazwa jednostki 2=Dyskusja Wikibooks:Strona|numer jednostki=2}}}} Powyżej dla przykładu podano parametry nie w rodzicu w szablonie, tylko w dziecku, jeśli chodzi o parametry nazw przestrzeni nazw i nazw jednostek, ale ich się za to nie powinno podawać w tych ramach, tylko w szablonach, w których wywoływane są te ramki pudełek {{Code|{{m|Pudełko}}}}, ale tak tutaj tak zrobiono by było najłatwiej sprawdzić działanie tego typu funkcji. Analogicznie możemy podawać parametry typu jednostki, np.: wywołaniu modułowym {{Code|{{m|Pudełko|Nazwa przestrzeni nazw dyskusji 2|typ jednostki 2{{=}}Podręcznik|nazwa jednostki 2{{=}}Szablon:Strona|numer jednostki{{=}}2}}}} (ale wtedy jest brana przestrzeń nazw z nazwy jednostki), ale o tym więcej w rozdziałach {{Code|{{sr|#p["Dyskusyjny typ jednostki 3"](frame,i)|p=Pudełko}}}} w „{{sr|#Funkcje typu jednostki|p=Pudełko}}”, one definiują przestrzenie dyskusji, ale można użyć parametru dyskusji typu jednostki z obojętnie jaką wartością niepustą, czy pustą, czy nawet jej nie podamy, wtedy wyświetli się nazwa przestrzeni nazw dyskusji. Jeżeli typ jednostki wskazuje na przestrzeń nazw główną, wtedy się liczą parametry nazw jednostek. Typ jednostki nie ma takiej samej wartości dla przestrzeni przedmiotowej, co dyskusji. Również parametry typu jednostki nie powinno się podawać w dziecku w ramce, tylko w rodzicu w szablonie jako parametry, w którym ta ramka jest wywoływana, ale tutaj podano jedynie dla przykładu, jak najłatwiej sprawdzić działanie tych parametrów tej funkcji. Najpierw w funkcji nagłówku brane są parametry nazw przestrzeni nazw, a jeżeli ich nie ma, to parametry typu jednostki, a jeżeli nie ma lub parametry przestrzenne wskazują na przestrzeń główną, i nie ma nazwy jednostki, to generowane są nazwy tej funkcji na podstawie aktualnej strony. == Funkcje pełnych nazw jednostki == === {{Code|p["Pełna nazwa dyskusji jednostki"](frame,i)}} === === {{Code|p["Pełna nazwa przedmiotowa jednostki"](frame,i)}} === === {{Code|p["Pełna nazwa jednostki"](frame,i)}} === == Funkcje pełnych nazw jednostki drugiej wersji == === {{Code|p["Pełna nazwa dyskusji jednostki 2"](frame,i)}} === === {{Code|p["Pełna nazwa przedmiotowa jednostki 2"](frame,i)}} === === {{Code|p["Pełna nazwa jednostki 2"](frame,i)}} === == Funkcje pełnych nazw jednostki trzeciej wersji == === {{Code|p["Pełna nazwa dyskusji jednostki 3"](frame,i)}} === === {{Code|p["Pełna nazwa przedmiotowa jednostki 3"](frame,i)}} === === {{Code|p["Pełna nazwa jednostki 3"](frame,i)}} === == Funkcje nazw jednostki == === {{Code|p["Nazwa jednostki"](frame,i)}} === == Funkcje nazw jednostki drugiej wersji == === {{Code|p["Nazwa jednostki 2"](frame,i)}} === === {{Code|p["Nazwa przedmiotowa jednostki 2"](frame,i)}} === === {{Code|p["Nazwa dyskusji jednostki 2"](frame,i)}} === == Funkcje nazw przestrzeni nazw trzeciej wersji == === {{Code|p["Nazwa przestrzeni nazw 3"](frame,i)}} === Funkcja pisze nazwę przestrzeni nazw, niezależnie, czy to jest przedmiotowa, czy dyskusji, według, i nie zawsze tylko, podanej w zmiennej {{Code|nazwa przestrzeni nazw}} dla pozycja bazowej w podanych parametrach szablonu rodzicu ramki dziecka, lub dla innej pozycji należy parametr podawać w formie {{Code|nazwa przestrzeni nazw 1}}, {{Code|Nazwa przestrzeni nazw 3}}, {{Code|nazwa przestrzeni nazw 3}},..., lub te parametry można podać w postaci ogólnej {{Code|nazwa przestrzeni nazw i}}. W tej funkcji trzeba też podawać parametry nazwy jednostek {{Code|nazwa jednostki}}, {{Code|nazwa jednostki 1}}, {{Code|nazwa jednostki 2}}, {{Code|nazwa jednostki 3}},... Parametry podaje się w parametrach rodzica wywołania tej funkcji {{Code|{{m|Pudełko|Nazwa przestrzeni nazw 3}}}} (ale ich nie trzeba podawać w dziecku, ale można) i w parametrach dziecka, jeśli chodzi o zmienną {{Code|numer jednostki}}, czyli np.: {{Code|{{m|Pudełko|Nazwa przestrzeni nazw 3|numer jednostki{{=}}<jakaś liczba całkowita dodatnia>}}}}. Te parametry przestrzenne zamiast w rodzicu w szablonie można podać w ramce dziecka, wtedy parametry dziecka mają pierwszeństwo. Przestrzeń nazw z parametrów nazw przestrzennych bazowych (bez numerka) może odpowiadać wartości przestrzeni głównej, to wtedy odpowiednia przestrzeń nazw z parametru nazwy jednostki się nie liczy w tej funkcji, aby się liczyła należy użyć funkcji {{Code|{{sr|#p["Nazwa przestrzeni nazw 2"](frame,...)|p=Pudełko}}}}. W tym przypadku funkcja działa jak {{Code|{{sr|#p["Nazwa przestrzeni nazw"](frame,...)|p=Pudełko}}}}. Przestrzeń nazw z parametrów nazw przestrzennych numerkowych może odpowiadać wartości przestrzeni głównej, to wtedy odpowiednia przestrzeń nazw z parametru nazwy jednostki się liczy w tej funkcji, wtedy jest liczona nazwa przestrzeni nazw z tego parametru. Gdy parametry przestrzenne lub typ jednostki w drugim podejściu nie wskazują na przestrzeń główną, to wtedy działanie tej funkcji jest podobne do {{Code|{{sr|#p["Nazwa przestrzeni nazw 2"](frame,...)|p=Pudełko}}}}. Definicja skrótowa funkcji: <syntaxhighlight lang="lua"> p["Nazwa przestrzeni nazw 3"]=function(frame,czy_uwzglednic_alternatywna_nazwe,i)...end; </syntaxhighlight> Wtedy ciało funkcji tej, czyli jego definicja w środku, jest: <syntaxhighlight lang="lua"> -- Jest liczony numer parametru nazwy przestrzeni nazw, domyslnie chodzi tu o numer bazowy parametrów przestrzennych; local numer_jednostki=i or frame.args["numer jednostki"]; local liczba_numeru_jednostki=((numer_jednostki)and(tonumber(numer_jednostki)) or 0); local pudelko_pomocne_modul=require("Module:Pudełko/Pomocne"); -- Liczy nazwę przestrzeni nazw dyskusji na podstawie podanych parametrów; return pudelko_pomocne_modul.Uzyskanie_nazw_jednostki(frame,0,liczba_numeru_jednostki,nil,2); </syntaxhighlight> Parametry funkcji: * {{Code|frame}} - tablica ramki tablicy transportu, * {{Code|czy_uwzglednic_alternatywna_nazwe}} - czy ma uwzględniać nazwę przestrzeni nazw domyślną szablonu, dostępne wartości: {{Code|false}}, w której nazwa domyślna nie jest uwzględniana wtedy, oraz {{Code|nil}} i {{Code|true}}, które oznaczają to samo, w tym jeżeli ona jest uwzględniana, wtedy jest brany parametr pierwszy dziecka, który musi istnieć przy takiej wartości tego parametru, tzn. {{Code|{{m|Pudełko|Nazwa przestrzeni nazw 3|Szablon}}}}, a jeśli nazwa uzyskana nazwy przestrzeni nazw jest w takim przypadku błędna, to brany jest ten element, a jeżeli nazwa domyślna jest błędna, czyli {{Code|{{m|Pudełko|Nazwa przestrzeni nazw 3|Moja przestrzeń}}}}, wtedy funkcja zwraca stan błędu {{Code|(błąd)}}. * {{Code|i}} - numer zmiennej nazwy przestrzeni nazw. Funkcja wykorzystuje {{Code|{{sr|#p.Uzyskanie_nazw_jednostki(frame,...)|p=Pudełko/Pomocne}}}} do wyznaczania ogólnego nazwy przestrzeni nazw dla pozycji bazowej i numerkowej, tzn. dla pozycji: jeden, dwa, trzy,..., itd, i ich ogólnej. Parametr ramki tablicy transportu rodzica szablonu: * {{Code|nazwa przestrzeni nazw}}, {{Code|nazwa przestrzeni nazw 1}}, {{Code|Nazwa przestrzeni nazw 3}}, {{Code|nazwa przestrzeni nazw 3}},..., {{Code|nazwa przestrzeni nazw i}} - nazwy przestrzeni nazw dla pozycji bazowej oraz zwykłej i ogólnej numerkowej, * {{Code|nazwa jednostki}}, {{Code|nazwa jednostki 1}}, {{Code|nazwa jednostki 2}}, {{Code|nazwa jednostki 3}},... - nazwy jednostek dla pozycji bazowej i numerkowej, * {{Code|typ jednostki}}, {{Code|typ jednostki 1}}, {{Code|typ jednostki 2}}, {{Code|typ jednostki 3}},..., {{Code|typ jednostki i}} - typy jednostek, którym odpowiadają pewne przestrzenie przedmiotowe, dla pozycji bazowej, numerkowej i ogólnej, ** {{Code|dyskusja typu jednostki}}, {{Code|dyskusja typu jednostki 1}}, {{Code|dyskusja typ jednostki 2}}, {{Code|dyskusja typ jednostki 3}},..., {{Code|dyskusja typ jednostki i}} - czy dany typ jednostki ma przedstawiać, jeśli niepusta, przestrzeń dyskusji dla pozycji bazowej, numerkowej i ogólnej. Parametry ramki tablicy transportu dziecka: * Parametry dziecka są takie same jak rodzica dla funkcji pudełkowej plus tu wymienione, * {{Code|numer jednostki}} - jak parametr {{Code|i}} nie został ustawiony, to wtedy liczy się ta zmienna. Przykłady: <syntaxhighlight lang="mediawiki"> {{Nazwa szablonu 1|nazwa przestrzeni nazw=Wikibooks|nazwa przestrzeni nazw=|nazwa przestrzeni nazw i=|nazwa jednostki=Szablon:Strona}} ---- {{Nazwa szablonu 2|nazwa przestrzeni nazw=Wikibooks|nazwa przestrzeni nazw 1=Szablon|nazwa przestrzeni nazw i=|nazwa jednostki 2=Wikibooks:Strona}} </syntaxhighlight> W pierwszym wywołaniu {{Code|nazwa przestrzeni nazw}} jest puste, ale dla tego bazowego (bez numerka) szukamy przestrzeni nazw, a więc ta nazwa jest ostateczna. ---- W drugim wywołaniu w dziecku powiedzmy jest wywołanie, i szukamy nazwy przestrzeni nazw o numerze dwa, która została podana, ale istnieje za to jej wersji ogólna {{Code|nazwa przestrzeni nazw i}} i domyślna {{Code|nazwa przestrzeni nazw}}, ale wtedy dla tego numerkowego liczy się to ogólne z {{Code| i}}, a ponieważ ta nazwa jest pusta, więc będziemy liczyli nazwę przestrzeni nazw z {{Code|nazwa jednostki 2}}. Odpowiadająca powyższemu kodowi, powiedzmy wikikod, według ich zawartości, przedstawia się: <syntaxhighlight lang="mediawiki"> {{#invoke:Pudełko|Nazwa przestrzeni nazw 3}} ---- {{#invoke:Pudełko|Nazwa przestrzeni nazw 3|numer jednostki=2}} </syntaxhighlight> Na podstawie powyższego przykładu otrzymamy wynik o schemacie, nie wyniku, bo tam nie ma zmiennej {{Code|nazwa przestrzeni nazw 1}}, ale jest {{Code|nazwa przestrzeni nazw i}}: <syntaxhighlight lang="mediawiki"> <!-- nazwa przestrzeni nazw=""; --> <!-- Czyli wynik: --> <!-- wynik pusty --> <!-- Widzimy, że wygenerowała się nazwa przestrzeni nazw, którą jest przestrzeń nazw główna, jest ciągiem pustym: ""; --> ---- <!-- Ale nie "nazwa przestrzeni nazw 2", bo jej nie ma, ale za to istnieje "nazwa przestrzeni nazw i"; --> <!-- nazwa przestrzeni nazw 2=nazwa przestrzeni nazw i="", a nazwa jednostki 2="Wikibooks:Strona"; --> <!-- Czyli wynik: --> Wikibooks <!-- Widzimy, że wygenerowała się nazwa przestrzeni nazw, którą jest przestrzeń nieprogramowa, ale projektu, wychodząca z nazwy jednostek w tym przypadku z "nazwa jednostki 2"; --> </syntaxhighlight> Dla parametrów numerkowych nie jest brana w tym powyższym przykładzie zmienna {{Code|nazwa przestrzeni nazw 2}}, bo jej nie ma, ale za to jest {{Code|nazwa przestrzeni nazw i}}, bo ona występuje jako parametr domyślny ogólny dla parametrów numerkowych. Tytaj jest używana jest zmienna {{Code|nazwa jednostki 2}} do wygenerowania ostatecznego wyniku, bo jak można zauważyć, parametry przestrzenne wskazują na przestrzeń główną, a nazwy jednostek już nie. Dla parametrów bazowych mamy zmienną {{Code|nazwa przestrzeni nazw}}, ona jest pusta, więc to zostanie wzięte do ostatecznego wyniku. Przykłady w wikikodzie: * {{Code|{{m|Pudełko|Nazwa przestrzeni nazw 3|Szablon|nazwa przestrzeni nazw{{=}}Moja przestrzeń|nazwa jednostki{{=}}Wikibooks:Strona}}}} → {{Tt|{{#invoke:Pudełko|Nazwa przestrzeni nazw 3|Szablon|nazwa przestrzeni nazw=Moja przestrzeń|nazwa jednostki=Wikibooks:Szablon}}}} * {{Code|{{m|Pudełko|Nazwa przestrzeni nazw 3|Szablon|nazwa przestrzeni nazw 2{{=}}Moja przestrzeń|nazwa jednostki 2{{=}}Wikibooks:Strona}|numer jednostki{{=}}2}}}} → {{Tt|{{#invoke:Pudełko|Nazwa przestrzeni nazw 3|Szablon|nazwa przestrzeni nazw 2=Moja przestrzeń|nazwa jednostki 2=Wikibooks:Szablon|numer jednostki=2}}}} * {{Code|{{m|Pudełko|Nazwa przestrzeni nazw 3|nazwa przestrzeni nazw{{=}}|nazwa jednostki{{=}}Wikibooks:Strona}}}} → {{Tt|{{#invoke:Pudełko|Nazwa przestrzeni nazw 3|nazwa przestrzeni nazw=|nazwa jednostki=Wikibooks:Szablon}}}} * {{Code|{{m|Pudełko|Nazwa przestrzeni nazw 3|nazwa przestrzeni nazw 2{{=}}|nazwa jednostki 2{{=}}Wikibooks:Strona|numer jednostki{{=}}2}}}} → {{Tt|{{#invoke:Pudełko|Nazwa przestrzeni nazw 3|nazwa przestrzeni nazw 2=|nazwa jednostki 2=Wikibooks:Szablon|numer jednostki=2}}}} Powyżej dla przykładu podano parametry nie w rodzicu w szablonie, tylko w dziecku, jeśli chodzi o parametry nazw przestrzeni nazw i nazw jednostek, ale ich się za to nie powinno podawać w tych ramach, tylko w szablonach, w których wywoływane są te ramki pudełek {{Code|{{m|Pudełko}}}}, ale tak tutaj tak zrobiono by było najłatwiej sprawdzić działanie tego typu funkcji. Analogicznie możemy podawać parametry typu jednostki, np.: wywołaniu modułowym {{Code|{{m|Pudełko|Nazwa przestrzeni nazw 3|typ jednostki 2{{=}}Podręcznik|nazwa jednostki 2{{=}}Szablon:Strona|numer jednostki{{=}}2}}}} (ale wtedy jest brana przestrzeń nazw z nazwy jednostki), ale o tym więcej w rozdziałach {{Code|{{sr|#p["Typ jednostki 3"](frame,i)|p=Pudełko}}}} w „{{sr|#Funkcje typu jednostki|p=Pudełko}}”, one definiują przestrzenie przedmiotowe lub dyskusji, ale można lub nie użyć parametru dyskusji typu jednostki z wartością niepustą, wtedy wyświetli się nazwa przestrzeni nazw dyskusji. Typ jednostki nie ma takiej samej wartości dla przestrzeni przedmiotowej, co dyskusji. Również parametry typu jednostki nie powinno się podawać w dziecku w ramce, tylko w rodzicu w szablonie jako parametry, w którym ta ramka jest wywoływana, ale tutaj podano jedynie dla przykładu, jak najłatwiej sprawdzić działanie tych parametrów tej funkcji. Najpierw w funkcji nagłówku brane są parametry nazw przestrzeni nazw, a jeżeli ich nie ma, to parametry typu jednostki, a jeżeli nie ma lub parametry przestrzenne wskazują na przestrzeń główną, i nie ma nazwy jednostki, to generowane są nazwy tej funkcji na podstawie aktualnej strony. === {{Code|p["Nazwa przedmiotowej przestrzeni nazw 3"](frame,i)}} === Funkcja pisze przedmiotową nazwę przestrzeni nazw jakikolwiek nazwy przestrzeni nazw (tzn. nazwę przedmiotową nazwy przestrzenie nazw, czyli nie dyskusji, zamieniana jest na nią samą, czyli identyfikator przestrzeni się nie zmienia, a dyskusji, nie przedmiotową, przekształca się na przedmiotową jej odpowiadającą, czyli w tym przypadku identyfikator przestrzeni zmniejsza się o numer mniej), według podanej w zmiennej {{Code|nazwa przestrzeni nazw}} dla pozycja bazowej w podanych parametrach szablonu rodzicu ramki dziecka, lub dla innej pozycji należy parametr podawać w formie {{Code|nazwa przestrzeni nazw 1}}, {{Code|nazwa przestrzeni nazw 2}}, {{Code|nazwa przestrzeni nazw 3}},..., lub te parametry można podać w postaci ogólnej {{Code|nazwa przestrzeni nazw i}}. Parametry podaje się w parametrach rodzica wywołania tej funkcji {{Code|{{m|Pudełko|Nazwa przedmiotowej przestrzeni nazw 3}}}} (ale ich nie trzeba podawać w dziecku, ale można) i w parametrach dziecka, jeśli chodzi o zmienną {{Code|numer jednostki}}, czyli np.: {{Code|{{m|Pudełko|Nazwa przedmiotowej przestrzeni nazw 3|numer jednostki{{=}}<jakaś liczba całkowita dodatnia>}}}}. Te parametry przestrzenne zamiast w rodzicu w szablonie można podać w ramce dziecka, wtedy parametry dziecka mają pierwszeństwo. Parametry przestrzenne mogą mogą być podane w postaci przestrzeni przedmiotowej lub dyskusji, ale ta funkcja zawsze ją zamienia na przedmiotową. Przestrzeń nazw z parametrów nazw przestrzennych bazowych (bez numerka) może odpowiadać wartości przestrzeni głównej, to wtedy odpowiednia przestrzeń nazw z parametru nazwy jednostki się nie liczy w tej funkcji, aby się liczyła należy użyć funkcji {{Code|{{sr|#p["Nazwa przedmiotowej przestrzeni nazw 2"](frame,...)|p=Pudełko}}}}. W tym przypadku funkcja działa jak {{Code|{{sr|#p["Nazwa przedmiotowej przestrzeni nazw"](frame,...)|p=Pudełko}}}}. Przestrzeń nazw z parametrów nazw przestrzennych numerkowych może odpowiadać wartości przestrzeni głównej, to wtedy odpowiednia przestrzeń nazw z parametru nazwy jednostki się liczy w tej funkcji, wtedy jest liczona nazwa przestrzeni nazw z tego parametru. Gdy parametry przestrzenne lub typ jednostki w drugim podejściu nie wskazują na przestrzeń główną, to wtedy działanie tej funkcji jest podobne do {{Code|{{sr|#p["Nazwa przedmiotowej przestrzeni nazw 2"](frame,...)|p=Pudełko}}}}. Definicja skrótowa funkcji: <syntaxhighlight lang="lua"> p["Nazwa przedmiotowej przestrzeni nazw 3"]=function(frame,czy_uwzglednic_alternatywna_nazwe,i)...end; </syntaxhighlight> Wtedy ciało funkcji tej, czyli jego definicja w środku, jest: <syntaxhighlight lang="lua"> -- Jest liczony numer parametru nazwy przestrzeni nazw, domyslnie chodzi tu o numer bazowy parametrów przestrzennych; local numer_jednostki=i or frame.args["numer jednostki"]; local liczba_numeru_jednostki=((numer_jednostki)and(tonumber(numer_jednostki)) or 0); local pudelko_pomocne_modul=require("Module:Pudełko/Pomocne"); -- Liczy nazwę przestrzeni nazw przedmiotową na podstawie podanych parametrów; return pudelko_pomocne_modul.Uzyskanie_nazw_jednostki(frame,1,liczba_numeru_jednostki,nil,1); </syntaxhighlight> Parametry funkcji: * {{Code|frame}} - tablica ramki tablicy transportu, * {{Code|czy_uwzglednic_alternatywna_nazwe}} - czy ma uwzględniać nazwę przestrzeni nazw domyślną szablonu, dostępne wartości: {{Code|false}}, w której nazwa domyślna nie jest uwzględniana wtedy, oraz {{Code|nil}} i {{Code|true}}, które oznaczają to samo, w tym jeżeli ona jest uwzględniana, wtedy jest brany parametr pierwszy dziecka, który musi istnieć przy takiej wartości tego parametru, tzn. {{Code|{{m|Pudełko|Nazwa przedmiotowej przestrzeni nazw 3|Dyskusja szablonu}}}} - ta nazwa domyślna zostanie zamieniona na przedmiotową, a jak ona by była przedmiotowa, to żadnej zamiany by nie było, a nazwa uzyskana z nazwy przestrzeni nazw z parametrów przestrzennych jest w takim przypadku błędna, to w takim razie brany jest ten parametr, a jeżeli ta nazwa domyślna jest błędna, czyli {{Code|{{m|Pudełko|Nazwa przedmiotowej przestrzeni nazw 3|Moja przestrzeń}}}}, wtedy funkcja zwraca stan błędu {{Code|(błąd)}}. * {{Code|i}} - numer zmiennej nazwy przestrzeni nazw. Funkcja wykorzystuje {{Code|{{sr|#p.Uzyskanie_nazw_jednostki(frame,...)|p=Pudełko/Pomocne}}}} do wyznaczania ogólnego nazwy przestrzeni nazw dla pozycji bazowej i numerkowej, tzn. dla pozycji: jeden, dwa, trzy,..., itd, i ich ogólnej. Parametr ramki tablicy transportu rodzica szablonu: * {{Code|nazwa przestrzeni nazw}}, {{Code|nazwa przestrzeni nazw 1}}, {{Code|nazwa przestrzeni nazw 2}}, {{Code|nazwa przestrzeni nazw 3}},..., {{Code|nazwa przestrzeni nazw i}} - nazwy przestrzeni nazw dla pozycji bazowej oraz zwykłej i ogólnej numerkowej, * {{Code|typ jednostki}}, {{Code|typ jednostki 1}}, {{Code|typ jednostki 2}}, {{Code|typ jednostki 3}},..., {{Code|typ jednostki i}} - typy jednostek, którym odpowiadają pewne przestrzenie przedmiotowe, dla pozycji bazowej, numerkowej i ogólnej. Parametry ramki tablicy transportu dziecka: * Parametry dziecka są takie same jak rodzica dla funkcji pudełkowej plus tu wymienione, * {{Code|numer jednostki}} - jak parametr {{Code|i}} nie został ustawiony, to wtedy liczy się ta zmienna. Przykłady: <syntaxhighlight lang="mediawiki"> {{Nazwa szablonu 1|nazwa przestrzeni nazw=Wikibooks|nazwa przestrzeni nazw=|nazwa przestrzeni nazw i=|nazwa jednostki=Dyskusja Wikibooks:Strona}} ---- {{Nazwa szablonu 2|nazwa przestrzeni nazw=Wikibooks|nazwa przestrzeni nazw 1=Szablon|nazwa przestrzeni nazw i=|nazwa jednostki 2=Dyskusja Wikibooks:Strona}} </syntaxhighlight> W pierwszym wywołaniu {{Code|nazwa przestrzeni nazw}} jest puste, ale dla tego bazowego (bez numerka) szukamy przestrzeni nazw, a więc ta nazwa jest ostateczna. ---- W drugim wywołaniu w dziecku powiedzmy jest wywołanie, i szukamy nazwy przestrzeni nazw o numerze dwa, która została podana, ale istnieje za to jej wersji ogólna {{Code|nazwa przestrzeni nazw i}} i domyślna {{Code|nazwa przestrzeni nazw}}, ale wtedy dla tego numerkowego liczy się to ogólne z {{Code| i}}, a ponieważ ta nazwa jest pusta, więc będziemy liczyli nazwę przestrzeni nazw z {{Code|nazwa jednostki 2}}. Odpowiadająca powyższemu kodowi, powiedzmy wikikod, według ich zawartości, przedstawia się: <syntaxhighlight lang="mediawiki"> {{#invoke:Pudełko|Nazwa przedmiotowej przestrzeni nazw 3}} ---- {{#invoke:Pudełko|Nazwa przedmiotowej przestrzeni nazw 3|numer jednostki=2}} </syntaxhighlight> Na podstawie powyższego przykładu otrzymamy wynik o schemacie, nie wyniku, bo tam nie ma zmiennej {{Code|nazwa przestrzeni nazw 1}}, ale jest {{Code|nazwa przestrzeni nazw i}}: <syntaxhighlight lang="mediawiki"> <!-- nazwa przestrzeni nazw=""; --> <!-- Czyli wynik: --> <!-- wynik pusty --> <!-- Widzimy, że wygenerowała się nazwa przestrzeni nazw, którą jest przestrzeń nazw główna, jest ciągiem pustym: ""; --> ---- <!-- Ale nie "nazwa przestrzeni nazw 2", bo jej nie ma, ale za to istnieje "nazwa przestrzeni nazw i"; --> <!-- nazwa przestrzeni nazw 2=nazwa przestrzeni nazw i="", a nazwa jednostki 2="Dyskusja Wikibooks:Strona"; --> <!-- Czyli wynik: --> Wikibooks <!-- Widzimy, że wygenerowała się nazwa przestrzeni nazw, którą jest przestrzeń nieprogramowa, ale projektu, wychodząca z nazwy jednostek w tym przypadku z "nazwa jednostki 2"; --> </syntaxhighlight> Dla parametrów numerkowych nie jest brana w tym powyższym przykładzie zmienna {{Code|nazwa przestrzeni nazw 2}}, bo jej nie ma, ale za to jest {{Code|nazwa przestrzeni nazw i}}, bo ona występuje jako parametr domyślny ogólny dla parametrów numerkowych. Tytaj jest używana jest zmienna {{Code|nazwa jednostki 2}} do wygenerowania ostatecznego wyniku, bo jak można zauważyć, parametry przestrzenne wskazują na przestrzeń główną, a nazwy jednostek już nie. Dla parametrów bazowych mamy zmienną {{Code|nazwa przestrzeni nazw}}, ona jest pusta, więc to zostanie wzięte do ostatecznego wyniku. Przykłady w wikikodzie: * {{Code|{{m|Pudełko|Nazwa przedmiotowej przestrzeni nazw 3|Dyskusja szablonu|nazwa przestrzeni nazw{{=}}Moja przestrzeń|nazwa jednostki{{=}}Dyskusja Wikibooks:Strona}}}} → {{Tt|{{#invoke:Pudełko|Nazwa przedmiotowej przestrzeni nazw 3|Dyskusja szablonu|nazwa przestrzeni nazw=Moja przestrzeń||nazwa jednostki=Dyskusja Wikibooks:Szablon}}}} * {{Code|{{m|Pudełko|Nazwa przedmiotowej przestrzeni nazw 3|Dyskusja szablonu|nazwa przestrzeni nazw 2{{=}}Moja przestrzeń|nazwa jednostki 2{{=}}Dyskusja Wikibooks:Strona|numer jednostki{{=}}2}}}} → {{Tt|{{#invoke:Pudełko|Nazwa przedmiotowej przestrzeni nazw 3|Dyskusja szablonu|nazwa przestrzeni nazw 2=Moja przestrzeń||nazwa jednostki 2=Dyskusja Wikibooks:Szablon|numer jednostki=2}}}} * {{Code|{{m|Pudełko|Nazwa przedmiotowej przestrzeni nazw 3|nazwa przestrzeni nazw{{=}}|nazwa jednostki{{=}}Dyskusja Wikibooks:Strona}}}} → {{Tt|{{#invoke:Pudełko|Nazwa przedmiotowej przestrzeni nazw 3|nazwa przestrzeni nazw=|nazwa jednostki=Dyskusja Wikibooks:Szablon}}}} * {{Code|{{m|Pudełko|Nazwa przedmiotowej przestrzeni nazw 3|nazwa przestrzeni nazw 2{{=}}|nazwa jednostki 2{{=}}Dyskusja Wikibooks:Strona|numer jednostki{{=}}2}}}} → {{Tt|{{#invoke:Pudełko|Nazwa przedmiotowej przestrzeni nazw 3|nazwa przestrzeni nazw 2=|nazwa jednostki 2=Dyskusja Wikibooks:Szablon|numer jednostki=2}}}} Powyżej dla przykładu podano parametry nie w rodzicu w szablonie, tylko w dziecku, jeśli chodzi o parametry nazw przestrzeni nazw, ale ich się za to nie powinno podawać w tych ramach, tylko w szablonach, w których wywoływane są te ramki pudełek {{Code|{{m|Pudełko}}}}, ale tak tutaj tak zrobiono by było najłatwiej sprawdzić działanie tego typu funkcji. Analogicznie możemy podawać parametry typu jednostki, np.: wywołaniu modułowym {{Code|{{m|Pudełko|Nazwa przedmiotowej przestrzeni nazw 3|typ jednostki 2{{=}}strona szablonu|numer jednostki{{=}}2}}}}, ale o tym więcej w rozdziałach {{Code|{{sr|#p["Przedmiotowy typ jednostki 3"](frame,i)|p=Pudełko}}}} w „{{sr|#Funkcje typu jednostki|p=Pudełko}}”, ale wtedy ta sama nazwa przestrzeni nazw reprezentowana przez {{Parametr|typ jednostki 2|strona szablonu}}, jest zamieniana na to samo, lepiej jest tutaj używać parametrów przestrzennych nazw niż typu jednostki. Tutaj parametr dyskusji typu jednostki bazowy i numerkowy ogólny, czy szczegółowy, nie gra roli, bo nawet, gdy wygenerujemy nazwę przestrzeni dyskusji za pomoca tego parametru, to i tak otrzymamy na samym końcu jego nazwę przedmiotową. Jeżeli typ jednostki bazowy wskazuje na przestrzeń nazw główną, wtedy się nie liczą parametry nazw jednostek, a w przypadku numerkowego, wtedy się liczy. Typ jednostki nie ma takiej samej wartości dla przestrzeni przedmiotowej, co dyskusji. Również parametry typu jednostki nie powinno się podawać w dziecku w ramce, tylko w rodzicu w szablonie jako parametry, w którym ta ramka jest wywoływana, ale tutaj podano jedynie dla przykładu, jak najłatwiej sprawdzić działanie tych parametrów tej funkcji. Najpierw w funkcji nagłówku brane są parametry nazw przestrzeni nazw, a jeżeli ich nie ma, to parametry typu jednostki, a jeżeli nie ma, to generowane są nazwy na podstawie aktualnego modułu. === {{Code|p["Nazwa przestrzeni nazw dyskusji 3"](frame,i)}} === Funkcja pisze nazwę przestrzeni nazw dyskusji jakikolwiek nazwy przestrzeni nazw (tzn. nazwę dyskusji nazwy przestrzenie nazw, czyli nie przedmiotowej, zamieniana jest na nią samą, czyli identyfikator przestrzeni się nie zmienia, a przedmiotową, nie dyskusji, przekształca się na dyskusji jej odpowiadającą, czyli w tym przypadku identyfikator przestrzeni zwiększa się o numer więcej), według, i nie zawsze tylko, podanej w zmiennej {{Code|nazwa przestrzeni nazw}} dla pozycja bazowej w podanych parametrach szablonu rodzicu ramki dziecka, lub dla innej pozycji należy parametr podawać w formie {{Code|nazwa przestrzeni nazw 1}}, {{Code|nazwa przestrzeni nazw 2}}, {{Code|nazwa przestrzeni nazw 3}},..., lub te parametry można podać w postaci ogólnej {{Code|nazwa przestrzeni nazw i}}. W tej funkcji trzeba też podawać parametry nazwy jednostek {{Code|nazwa jednostki}}, {{Code|nazwa jednostki 1}}, {{Code|nazwa jednostki 2}}, {{Code|nazwa jednostki 3}},... Parametry podaje się w parametrach rodzica wywołania tej funkcji {{Code|{{m|Pudełko|Nazwa przestrzeni nazw dyskusji 3}}}} (ale ich nie trzeba podawać w dziecku, ale można) i w parametrach dziecka, jeśli chodzi o zmienną {{Code|numer jednostki}}, czyli np.: {{Code|{{m|Pudełko|Nazwa przestrzeni nazw dyskusji 3|numer jednostki{{=}}<jakaś liczba całkowita dodatnia>}}}}. Te parametry przestrzenne zamiast w rodzicu w szablonie można podać w ramce dziecka, wtedy parametry dziecka mają pierwszeństwo. Przestrzeń nazw z parametrów nazw przestrzennych bazowych (bez numerka) może odpowiadać wartości przestrzeni głównej, to wtedy odpowiednia przestrzeń nazw z parametru nazwy jednostki się nie liczy w tej funkcji, aby się liczyła należy użyć funkcji {{Code|{{sr|#p["Nazwa przestrzeni nazw dyskusji 2"](frame,...)|p=Pudełko}}}}. W tym przypadku funkcja działa jak {{Code|{{sr|#p["Nazwa przestrzeni nazw dyskusji"](frame,...)|p=Pudełko}}}}. Przestrzeń nazw z parametrów nazw przestrzennych numerkowych może odpowiadać wartości przestrzeni głównej, to wtedy odpowiednia przestrzeń nazw z parametru nazwy jednostki się liczy w tej funkcji, wtedy jest liczona nazwa przestrzeni nazw z tego parametru. Gdy parametry przestrzenne lub typ jednostki w drugim podejściu nie wskazują na przestrzeń główną, to wtedy działanie tej funkcji jest podobne do {{Code|{{sr|#p["Nazwa przestrzeni nazw dyskusji 2"](frame,...)|p=Pudełko}}}}. Definicja skrótowa funkcji: <syntaxhighlight lang="lua"> p["Nazwa przestrzeni nazw dyskusji 3"]=function(frame,czy_uwzglednic_alternatywna_nazwe,i)...end; </syntaxhighlight> Wtedy ciało funkcji tej, czyli jego definicja w środku, jest: <syntaxhighlight lang="lua"> -- Jest liczony numer parametru nazwy przestrzeni nazw, domyslnie chodzi tu o numer bazowy parametrów przestrzennych; local numer_jednostki=i or frame.args["numer jednostki"]; local liczba_numeru_jednostki=((numer_jednostki)and(tonumber(numer_jednostki)) or 0); local pudelko_pomocne_modul=require("Module:Pudełko/Pomocne"); -- Liczy nazwę przestrzeni nazw dyskusji na podstawie podanych parametrów; return pudelko_pomocne_modul.Uzyskanie_nazw_jednostki(frame,2,liczba_numeru_jednostki,nil,1); </syntaxhighlight> Parametry funkcji: * {{Code|frame}} - tablica ramki tablicy transportu, * {{Code|czy_uwzglednic_alternatywna_nazwe}} - czy ma uwzględniać nazwę przestrzeni nazw domyślną szablonu, dostępne wartości: {{Code|false}}, w której nazwa domyślna nie jest uwzględniana wtedy, oraz {{Code|nil}} i {{Code|true}}, które oznaczają to samo, w tym jeżeli ona jest uwzględniana, wtedy jest brany parametr pierwszy dziecka, który musi istnieć przy takiej wartości tego parametru, tzn. {{Code|{{m|Pudełko|Nazwa przestrzeni nazw dyskusji 3|Szablon}}}}, nazwa domyślna zostatnie zamieniona na dyskusji, a jeśli jest już taka, to takiej transfomacji nie ma, a jeśli nazwa uzyskana nazwy przestrzeni nazw jest w takim przypadku błędna, to wzięty jest ten parametr, a jeżeli nazwa domyślna jest błędna, czyli {{Code|{{m|Pudełko|Nazwa przestrzeni nazw dyskusji 3|Moja przestrzeń}}}}, wtedy funkcja zwraca stan błędu {{Code|(błąd)}}. * {{Code|i}} - numer zmiennej nazwy przestrzeni nazw. Funkcja wykorzystuje {{Code|{{sr|#p.Uzyskanie_nazw_jednostki(frame,...)|p=Pudełko/Pomocne}}}} do wyznaczania ogólnego nazwy przestrzeni nazw dla pozycji bazowej i numerkowej, tzn. dla pozycji: jeden, dwa, trzy,..., itd, i ich ogólnej. Parametr ramki tablicy transportu rodzica szablonu: * {{Code|nazwa przestrzeni nazw}}, {{Code|nazwa przestrzeni nazw 1}}, {{Code|nazwa przestrzeni nazw 2}}, {{Code|nazwa przestrzeni nazw 3}},..., {{Code|nazwa przestrzeni nazw i}} - nazwy przestrzeni nazw dla pozycji bazowej oraz zwykłej i ogólnej numerkowej, * {{Code|nazwa jednostki}}, {{Code|nazwa jednostki 1}}, {{Code|nazwa jednostki 2}}, {{Code|nazwa jednostki 3}},... - nazwy jednostek dla pozycji bazowej i numerkowej, * {{Code|typ jednostki}}, {{Code|typ jednostki 1}}, {{Code|typ jednostki 2}}, {{Code|typ jednostki 3}},..., {{Code|typ jednostki i}} - typy jednostek, którym odpowiadają pewne przestrzenie przedmiotowe, dla pozycji bazowej, numerkowej i ogólnej. Parametry ramki tablicy transportu dziecka: * Parametry dziecka są takie same jak rodzica dla funkcji pudełkowej plus tu wymienione, * {{Code|numer jednostki}} - jak parametr {{Code|i}} nie został ustawiony, to wtedy liczy się ta zmienna. Przykłady: <syntaxhighlight lang="mediawiki"> {{Nazwa szablonu 1|nazwa przestrzeni nazw=Wikibooks|nazwa przestrzeni nazw=|nazwa przestrzeni nazw i=|nazwa jednostki=Szablon:Strona}} ---- {{Nazwa szablonu 2|nazwa przestrzeni nazw=Wikibooks|nazwa przestrzeni nazw 1=Szablon|nazwa przestrzeni nazw i=|nazwa jednostki 2=Wikibooks:Strona}} </syntaxhighlight> W pierwszym wywołaniu {{Code|nazwa przestrzeni nazw}} jest puste, ale dla tego bazowego (bez numerka) szukamy przestrzeni nazw, a więc ta nazwa jest ostateczna. ---- W drugim wywołaniu w dziecku powiedzmy jest wywołanie, i szukamy nazwy przestrzeni nazw o numerze dwa, która została podana, ale istnieje za to jej wersji ogólna {{Code|nazwa przestrzeni nazw i}} i domyślna {{Code|nazwa przestrzeni nazw}}, ale wtedy dla tego numerkowego liczy się to ogólne z {{Code| i}}, a ponieważ ta nazwa jest pusta, więc będziemy liczyli nazwę przestrzeni nazw z {{Code|nazwa jednostki 2}}. Odpowiadająca powyższemu kodowi, powiedzmy wikikod, według ich zawartości, przedstawia się: <syntaxhighlight lang="mediawiki"> {{#invoke:Pudełko|Nazwa przestrzeni nazw 3}} ---- {{#invoke:Pudełko|Nazwa przestrzeni nazw 3|numer jednostki=2}} </syntaxhighlight> Na podstawie powyższego przykładu otrzymamy wynik o schemacie, nie wyniku, bo tam nie ma zmiennej {{Code|nazwa przestrzeni nazw 1}}, ale jest {{Code|nazwa przestrzeni nazw i}}: <syntaxhighlight lang="mediawiki"> <!-- nazwa przestrzeni nazw=""; --> <!-- Czyli wynik: --> Dyskusja <!-- Widzimy, że wygenerowała się nazwa przestrzeni nazw, którą jest przestrzeń nazw niegłówna, jest ciągiem niepustym; --> ---- <!-- Ale nie "nazwa przestrzeni nazw 2", bo jej nie ma, ale za to istnieje "nazwa przestrzeni nazw i"; --> <!-- nazwa przestrzeni nazw 2=nazwa przestrzeni nazw i="", a nazwa jednostki 2="Wikibooks:Strona"; --> <!-- Czyli wynik: --> Dyskusja Wikibooks <!-- Widzimy, że wygenerowała się nazwa przestrzeni nazw, którą jest przestrzeń nieprogramowa, ale projektu, wychodząca z nazwy jednostek w tym przypadku z "nazwa jednostki 2"; --> </syntaxhighlight> Dla parametrów numerkowych nie jest brana w tym powyższym przykładzie zmienna {{Code|nazwa przestrzeni nazw 2}}, bo jej nie ma, ale za to jest {{Code|nazwa przestrzeni nazw i}}, bo ona występuje jako parametr domyślny ogólny dla parametrów numerkowych. Tytaj jest używana jest zmienna {{Code|nazwa jednostki 2}} do wygenerowania ostatecznego wyniku, bo jak można zauważyć, parametry przestrzenne wskazują na przestrzeń główną, a nazwy jednostek już nie. Dla parametrów bazowych mamy zmienną {{Code|nazwa przestrzeni nazw}}, ona jest pusta, więc to zostanie wzięte do ostatecznego wyniku. Przykłady w wikikodzie: * {{Code|{{m|Pudełko|Nazwa przestrzeni nazw dyskusji 3|Szablon|nazwa przestrzeni nazw{{=}}Moja przestrzeń|nazwa jednostki{{=}}Wikibooks:Strona}}}} → {{Tt|{{#invoke:Pudełko|Nazwa przestrzeni nazw dyskusji 3|Szablon|nazwa przestrzeni nazw=Moja przestrzeń|nazwa jednostki=Wikibooks:Szablon}}}} * {{Code|{{m|Pudełko|Nazwa przestrzeni nazw dyskusji 3|Szablon|nazwa przestrzeni nazw 2{{=}}Moja przestrzeń|nazwa jednostki 2{{=}}Wikibooks:Strona|numer jednostki{{=}}2}}}} → {{Tt|{{#invoke:Pudełko|Nazwa przestrzeni nazw dyskusji 3|Szablon|nazwa przestrzeni nazw 2=Moja przestrzeń|nazwa jednostki 2=Wikibooks:Szablon|numer jednostki=2}}}} * {{Code|{{m|Pudełko|Nazwa przestrzeni nazw dyskusji 3|nazwa przestrzeni nazw{{=}}|nazwa jednostki{{=}}Wikibooks:Strona}}}} → {{Tt|{{#invoke:Pudełko|Nazwa przestrzeni nazw dyskusji 3|nazwa przestrzeni nazw=|nazwa jednostki=Wikibooks:Szablon}}}} * {{Code|{{m|Pudełko|Nazwa przestrzeni nazw dyskusji 3|nazwa przestrzeni nazw 2{{=}}|nazwa jednostki 2{{=}}Wikibooks:Strona|numer jednostki{{=}}2}}}} → {{Tt|{{#invoke:Pudełko|Nazwa przestrzeni nazw dyskusji 3|nazwa przestrzeni nazw 2=|nazwa jednostki 2=Wikibooks:Szablon|numer jednostki=2}}}} Powyżej dla przykładu podano parametry nie w rodzicu w szablonie, tylko w dziecku, jeśli chodzi o parametry nazw przestrzeni nazw i nazw jednostek, ale ich się za to nie powinno podawać w tych ramach, tylko w szablonach, w których wywoływane są te ramki pudełek {{Code|{{m|Pudełko}}}}, ale tak tutaj tak zrobiono by było najłatwiej sprawdzić działanie tego typu funkcji. Analogicznie możemy podawać parametry typu jednostki, np.: wywołaniu modułowym {{Code|{{m|Pudełko|Nazwa przestrzeni nazw dyskusji 3|typ jednostki 2{{=}}Podręcznik|nazwa jednostki 2{{=}}Szablon:Strona|numer jednostki{{=}}2}}}} (ale wtedy jest brana przestrzeń nazw z nazwy jednostki), ale o tym więcej w rozdziałach {{Code|{{sr|#p["Dyskusyjny typ jednostki 3"](frame,i)|p=Pudełko}}}} w „{{sr|#Funkcje typu jednostki|p=Pudełko}}”, one definiują przestrzenie dyskusji, ale można użyć parametru dyskusji typu jednostki z obojętnie jaką wartością niepustą, czy pustą, czy nawet jej nie podamy, wtedy wyświetli się nazwa przestrzeni nazw dyskusji. Jeżeli typ jednostki bazowy wskazuje na przestrzeń nazw główną, wtedy się nie liczą parametry nazw jednostek, a w przypadku numerkowego, wtedy się liczy. Typ jednostki nie ma takiej samej wartości dla przestrzeni przedmiotowej, co dyskusji. Również parametry typu jednostki nie powinno się podawać w dziecku w ramce, tylko w rodzicu w szablonie jako parametry, w którym ta ramka jest wywoływana, ale tutaj podano jedynie dla przykładu, jak najłatwiej sprawdzić działanie tych parametrów tej funkcji. Najpierw w funkcji nagłówku brane są parametry nazw przestrzeni nazw, a jeżeli ich nie ma, to parametry typu jednostki, a jeżeli nie ma lub parametry przestrzenne wskazują na przestrzeń główną, i nie ma nazwy jednostki, to generowane są nazwy tej funkcji na podstawie aktualnej strony. == Funkcje nazw jednostki trzeciej wersji == === {{Code|p["Nazwa jednostki 3"](frame,i)}} === === {{Code|p["Nazwa przedmiotowa jednostki 3"](frame,i)}} === === {{Code|p["Nazwa dyskusji jednostki 3"](frame,i)}} === == Funkcje typu jednostki == === {{Code|p["Typ jednostki"](frame,i)}} === === {{Code|p["Typ jednostki 2"](frame,i)}} === === {{Code|p["Typ jednostki 3"](frame,i)}} === === Funkcje typu jednostki przedmiotowe === ==== {{Code|p["Przedmiotowy typ jednostki"](frame,i)}} ==== ==== {{Code|p["Przedmiotowy typ jednostki 2"](frame,i)}} ==== ==== {{Code|p["Przedmiotowy typ jednostki 3"](frame,i)}} ==== === Fukcje typu jednostki dyskusji === ==== {{Code|p["Dyskusyjny typ jednostki"](frame,i)}} ==== ==== {{Code|p["Dyskusyjny typ jednostki 2"](frame,i)}} ==== ==== {{Code|p["Dyskusyjny typ jednostki 3"](frame,i)}} ==== == Funkcje chech pudełka == === {{Code|p["Cecha pudełka"](frame)}} === === {{Code|p["Przedmiotowa cecha pudełka"](frame)}} === === {{Code|p["Dyskusyjna cecha pudełka"](frame)}} === == Fukcje ogólnego pudełka == === {{Code|p["Ogólne pudełko"](frame)}} === == Funkcje ogólne == === {{Code|p["Tekst pudełka"](frame)}} === == Funkcje błędów pudełka == === {{Code|p["Błędy pudełka"](frame)}} === === {{Code|p["Przedmiotowe błędy pudełka"](frame)}} === === {{Code|p["Dyskusyjne błędy pudełka"](frame)}} === == Funkcje nazw stron == === {{Code|p["Nazwa strony głównej projektu"](frame,i)}} === === {{Code|p["Nazwa strony głównej dla dzieci projektu"](frame,i)}} === == Funkcje kodów == === {{Code|p["Kod języka"](frame,i)}} === === {{Code|p["Kod projektu"](frame,i)}} === === {{Code|p["Klucz projektu"](frame,i)}} === == Funkcje wiki == === {{Code|p["Inny niż język bieżący wiki"](frame)}} === === {{Code|p["Inne niż lokalne wiki"](frame)}} === === {{Code|p["Inne niż bieżące wiki"](frame)}} === == Funkcje typów parametrów, czy podane je == === {{Code|p["Podano parametry nienazwane"](frame)}} === === {{Code|p["Podano parametry numerowane"](frame)}} === === {{Code|p["Podano parametry nazwane"](frame)}} === == Funkcje kodów tego projektu == === {{Code|p["Kod projektu tego projektu"](frame)}} === === {{Code|p["Kod języka tego projektu"](frame)}} === === {{Code|p["Klucz projektu tego projektu"](frame)}} === == Funkcje stron == === {{Code|p["Strona główna tego projektu"](frame)}} === === {{Code|p["Strona główna dla dzieci tego projektu"](frame)}} === == Funkcje nazw stron drugiej wersji == === {{Code|p["Nazwa strony głównej dla dzieci projektu 2"](frame)}} === === {{Code| p["Nazwa strony głównej projektu 2"](frame)}} === {{BrClear}} <noinclude><!-- -->{{ProstaStronaKoniec}}<!-- -->{{Kategoria|Opisy funkcji, w Lua w Scribunto, w modułach}}<!-- --></noinclude> br2jh0iacsjuwkmm4ggcnzxxx7pi7y2 540471 540470 2026-04-24T10:39:26Z Persino 2851 540471 wikitext text/x-wiki <noinclude>{{ProstaStronaStart | nagłówek = {{Podrozdział|{{ld2|Pudełko}}|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 pudelko_modul=require("Module:Pudełko"); </syntaxhighlight> dzięki, któremu można wypisywać funkcje należącego do niego. Posługuje się na parametrach pudełkowych {{Parametr|nazwa przestrzeni nazw}} (czy też bez numerka {{Parametr|nazwa przestrzeni nazw i}} dla tego numerowanego) lub te z numerkiem po jednej spacji w nich (ale nie dla tego z końcówką {{Code| i}}) mogą zostać użyte jako parametry szablonu. Moduł {{Code|{{ld2|Pudełko}}}} przedstawia funkcje nazw w oparciu o funkcje nazw {{Code|{{ld2|Nazwy}}}}, generuje on nazwy za pomocą parametrów pudełkowych podanych poniżej. Parametr {{Parametr|nazwa jednostki}} (lub parametr {{Parametr|cel}} dla numerka tego pierwszego, tego alternatywnego), lub te z numerkiem po jednej spacji w nazwie parametru, albo numerowane numerkami {{Code|1}}, {{Code|2}},..., mogą zostać użyte jako parametry szablonu. Parametry określające rodzaj jednostki {{Parametr|typ jednostki}} z {{Parametr|dyskusja typu jednostki}}, itp. w wersjach z numerkiem po jednej spacji w nich mogą zostać użyte jako parametry szablonu. A te tymi numerowanymi liczbami naturalnymi {{Tt|nazwy jednostki}} od jedynki wzwyż poprzez szablon, w którym są one użyte, one też mogą być użyte z dwukropkiem, te numerowane, na samym początku nazwy, wtedy one są traktowane jako pełne nazwy strony, i wtedy one nie zostaną z interpretowane, że do nich trzeba użyć parametr odpowiedni z nazwą przetrzeni nazw z tego numerowanego, czy ogólny, aby utworzyć znów inną pełną nazwę strony dla tego numerka. Zestawienie: * {{Code|nazwa przestrzeni nazw}} i {{Code|nazwa przestrzeni nazw i}} (ogólna nazwa przestrzeni nazw dla wszystkich numerków, i tych numerowanych jednostek) - i to pierwsze z numerkiem, tzn. {{Code|nazwa przestrzeni nazw 1}}, {{Code|nazwa przestrzeni nazw 2}}, ..., * {{Code|nazwa jednostki}} - i te z numerkiem: {{Code|nazwa jednostki 1}}, {{Code|nazwa jednostki 2}}, ..., lub gdy jest zamiast tego parametrem numerowany, {{Code|1}}, {{Code|2}},..., który dla tego pierwszego może być uznany jako: {{Code|cel}} {{=}} {{Code|1}}, * {{Code|typ jednostki}} (parametr bazowy) i {{Code|typ jednostki i}} (parametr domyślny numerkowy) - i te z numerkiem: {{Code|typ jednostki 1}}, {{Code|typ jednostki 2}}, ..., tzn. gdy chcemy określić z jakim typem jednostki mamy do czynienia w zależności do jakiej przestrzeni nazw należy, a w danej, czy jest on np. programowy, czy tylko jest opisem, jak to bywa w szablonach {{Np|Template|link=tak}}, podobnie jest w przypadku {{Np|Module|link=tak}}, czy jak jest w innych przestrzeniach nazw, ** {{Code|dyskusja typu jednostki}} (parametr bazowy) i {{Code|dyskusja typu jednostki i}} (parametr domyślny numerkowy) - i te z numerkiem: {{Code|dyskusja typu jednostki 1}}, {{Code|dyskusja typu jednostki 2}}, ..., gdy chcemy określić wartością niepustą,że chodzi tutaj o typ jednostki. == {{Code|p.CzyNiepoprawnaNazwa(nazwa_jednostki)}} == Funkcja sprawdzajaca, czy jest poprawnie podana nazwa jednostki, czy ma poprawną nazwę. Znakami tymi, z których nie powinna składać się nazwa jest {{Code|<nowiki>{}<>|[]#\n</nowiki>}} i dodatkowo znak {{Code|&#127;}} (kod {{Code|{{Nowiki|&#127;}}}}). Też nie może składać się z trzech znaków tyldy, tzn. {{Code|<nowiki>~~~</nowiki>}}. Również w swojej budowie nie może składać się ze kodów {{Strong|HTML}} literowych o wzorze {{Code|{{Nowiki|&(%a+);}}}}. Natomiast może składać się z {{Code|{{Nowiki|&#(%d+);}}}} i {{Code|{{Nowiki|&#x(%x+);}}}}, ale w pierw te kody muszą być zamienione na normalne znaki. Skrótowa definicja funkcji: <syntaxhighlight lang="lua"> function p.CzyNiepoprawnaNazwa(nazwa_jednostki)...end; </syntaxhighlight> Wtedy ciało funkcji tej, czyli jego definicja w środku, jest: <syntaxhighlight lang="lua"> -- Moduł: "Moduł:Html/dane", służy do ładowania znaku o kodzie HTML "&#127;"; local html_dane_modul=mw.loadData("Module:Html/dane"); return mw.ustring.match(nazwa_jednostki,"[{}<>|%[%]#\n"..html_dane_modul.znak_127.."]+") or mw.ustring.match(nazwa_jednostki,"~~~") or mw.ustring.match(nazwa_jednostki,"&(%a+);"); </syntaxhighlight> Parametry: * {{Code|nazwa_jednostki}} - nazwa jednostki do sprawdzenia. Przykłady: <syntaxhighlight lang="lua"> local pudelko_modul=require("Module:Pudełko"); -- Podana przykładowa niepoprawna nazwa jedostki local nazwa_jednostki="Nazwa pliku [[Nazwa linku w pliku]]"; -- Fukcja zwróci wartość: local czy_poprawna_nazwa=true; local czy_poprawna_nazwa=pudelko_modul.CzyNiepoprawnaNazwa(nazwa_jednostki); </syntaxhighlight> == Funkcje nazw przestrzeni nazw == === {{Code|p["Nazwa przestrzeni nazw"](frame,...)}} === Funkcja pisze nazwę przestrzeni nazw, niezależnie, czy to jest przedmiotowa, czy dyskusji, według podanej w zmiennej {{Code|nazwa przestrzeni nazw}} dla pozycja bazowej w podanych parametrach szablonu rodzicu ramki dziecka, lub dla innej pozycji należy parametr podawać w formie {{Code|nazwa przestrzeni nazw 1}}, {{Code|nazwa przestrzeni nazw 2}}, {{Code|nazwa przestrzeni nazw 3}},..., lub te parametry można podać w postaci ogólnej {{Code|nazwa przestrzeni nazw i}}. Parametry podaje się w parametrach rodzica wywołania tej funkcji {{Code|{{m|Pudełko|Nazwa przestrzeni nazw}}}} (ale ich nie trzeba podawać w dziecku, ale można) i w parametrach dziecka, jeśli chodzi o zmienną {{Code|numer jednostki}}, czyli np.: {{Code|{{m|Pudełko|Nazwa przestrzeni nazw|numer jednostki{{=}}<jakaś liczba całkowita dodatnia>}}}}. Te parametry przestrzenne zamiast w rodzicu w szablonie można podać w ramce dziecka, wtedy parametry dziecka mają pierwszeństwo. Przestrzeń nazw z parametrów nazw przestrzennych może odpowiadać wartości przestrzeni głównej, to wtedy odpowiednia przestrzeń nazw z parametru nazwy jednostki się nie liczy w tej funkcji, aby się liczyła należy użyć funkcji {{Code|{{sr|#p["Nazwa przestrzeni nazw 2"](frame,...)|p=Pudełko}}}}. Definicja skrótowa funkcji: <syntaxhighlight lang="lua"> p["Nazwa przestrzeni nazw"]=function(frame,czy_uwzglednic_alternatywna_nazwe,i)...end; </syntaxhighlight> Wtedy ciało funkcji tej, czyli jego definicja w środku, jest: <syntaxhighlight lang="lua"> -- Jest liczony numer parametru nazwy przestrzeni nazw, domyslnie chodzi tu o numer bazowy parametrów przestrzennych; local numer_jednostki=i or frame.args["numer jednostki"]; local liczba_numer_jednostki=((numer_jednostki)and(tonumber(numer_jednostki))or 0); local pudelko_pomocne_modul=require("Module:Pudełko/Pomocne"); -- Liczy nazwę przestrzeni nazw na podstawie podanych parametrów; return pudelko_pomocne_modul.Nazwa_przestrzeni_nazw(frame,0, czy_uwzglednic_alternatywna_nazwe,liczba_numer_jednostki); </syntaxhighlight> Parametry funkcji: * {{Code|frame}} - tablica ramki tablicy transportu, * {{Code|czy_uwzglednic_alternatywna_nazwe}} - czy ma uwzględniać nazwę przestrzeni nazw domyślną szablonu, dostępne wartości: {{Code|false}}, w której nazwa domyślna nie jest uwzględniana wtedy, oraz {{Code|nil}} i {{Code|true}}, które oznaczają to samo, w tym jeżeli ona jest uwzględniana, wtedy jest brany parametr pierwszy dziecka, który musi istnieć przy takiej wartości tego parametru, tzn. {{Code|{{m|Pudełko|Nazwa przestrzeni nazw|Szablon}}}}, a ten element jest używany, gdy nazwa uzyskana nazwy przestrzeni nazw jest w takim przypadku błędna, a jeżeli wtedy nazwa domyślna jest błędna, czyli {{Code|{{m|Pudełko|Nazwa przestrzeni nazw|Moja przestrzeń}}}}, wtedy funkcja zwraca stan błędu {{Code|(błąd)}}. * {{Code|i}} - numer zmiennej nazwy przestrzeni nazw. Funkcja wykorzystuje {{Code|{{sr|#p.Nazwa_przestrzeni_nazw(frame,...)|p=Pudełko/Pomocne}}}} do wyznaczania ogólnego nazwy przestrzeni nazw dla pozycji bazowej i numerkowej, tzn. dla pozycji: jeden, dwa, trzy,..., itd, i ich ogólnej. Parametr ramki tablicy transportu rodzica szablonu: * {{Code|nazwa przestrzeni nazw}}, {{Code|nazwa przestrzeni nazw 1}}, {{Code|nazwa przestrzeni nazw 2}}, {{Code|nazwa przestrzeni nazw 3}},..., {{Code|nazwa przestrzeni nazw i}} - nazwy przestrzeni nazw dla pozycji bazowej oraz zwykłej i ogólnej numerkowej, * {{Code|typ jednostki}}, {{Code|typ jednostki 1}}, {{Code|typ jednostki 2}}, {{Code|typ jednostki 3}},..., {{Code|typ jednostki i}} - typy jednostek, którym odpowiadają pewne przestrzenie przedmiotowe, dla pozycji bazowej, numerkowej i ogólnej, ** {{Code|dyskusja typu jednostki}}, {{Code|dyskusja typu jednostki 1}}, {{Code|dyskusja typ jednostki 2}}, {{Code|dyskusja typ jednostki 3}},..., {{Code|dyskusja typ jednostki i}} - czy dany typ jednostki ma przedstawiać, jeśli niepusta, przestrzeń dyskusji dla pozycji bazowej, numerkowej i ogólnej. Parametry ramki tablicy transportu dziecka: * Parametry dziecka są takie same jak rodzica dla funkcji pudełkowej plus tu wymienione, * {{Code|numer jednostki}} - jak parametr {{Code|i}} nie został ustawiony, to wtedy liczy się ta zmienna. Przykłady: <syntaxhighlight lang="mediawiki"> {{Nazwa szablonu|nazwa przestrzeni nazw=Wikibooks|nazwa przestrzeni nazw 2=Szablon|nazwa przestrzeni nazw i=Moduł}} </syntaxhighlight> W dziecku powiedzmy jest wywołanie, i szukamy nazwy przestrzeni nazw o numerze dwa, która nie została podana, ale istnieje za to jej wersji ogólna {{Code|nazwa przestrzeni nazw i}} i domyślna {{Code|nazwa przestrzeni nazw}}: <syntaxhighlight lang="mediawiki"> {{#invoke:Pudełko|Nazwa przestrzeni nazw|numer jednostki=1}} </syntaxhighlight> Na podstawie powyższego przykładu otrzymamy wynik o schemacie, nie wyniku, bo tam nie ma zmiennej {{Code|nazwa przestrzeni nazw 1}}, ale jest {{Code|nazwa przestrzeni nazw i}}: <syntaxhighlight lang="mediawiki"> <!-- Ale nie "nazwa przestrzeni nazw", bo jej nie ma, ale za to istnieje "nazwa przestrzeni nazw i"; --> <!-- nazwa przestrzeni nazw 2=nazwa przestrzeni nazw i=Moduł; --> <!-- Czyli wynik: --> Moduł <!-- Widzimy, że wygenerowała się nazwa przestrzeni nazw, którą jest przestrzeń programowa, którą również jest "Szablon"; --> </syntaxhighlight> Nie jest brana w tym powyższym przykładzie zmienna {{Code|nazwa przestrzeni nazw}}, bo jej nie ma, ale za to jest {{Code|nazwa przestrzeni nazw i}}, bo ona występuje jako parametr domyślny ogólny dla parametrów numerkowych. Przykłady w wikikodzie: * {{Code|{{m|Pudełko|Nazwa przestrzeni nazw|numer jednostki{{=}}2}}}} → {{Tt|{{#invoke:Pudełko|Nazwa przestrzeni nazw|numer jednostki=2}}}} * {{Code|{{m|Pudełko|Nazwa przestrzeni nazw|Szablon|nazwa przestrzeni nazw i{{=}}Moja przestrzeń|numer jednostki{{=}}2}}}} → {{Tt|{{#invoke:Pudełko|Nazwa przestrzeni nazw|Szablon|nazwa przestrzeni nazw i=Moja przestrzeń|numer jednostki=2}}}} * {{Code|{{m|Pudełko|Nazwa przestrzeni nazw|nazwa przestrzeni nazw 2{{=}}Szablon|numer jednostki{{=}}2}}}} → {{Tt|{{#invoke:Pudełko|Nazwa przestrzeni nazw|nazwa przestrzeni nazw 2=Szablon|numer jednostki=2}}}} * {{Code|{{m|Pudełko|Nazwa przestrzeni nazw|nazwa przestrzeni nazw 2{{=}}Szablon|numer jednostki{{=}}2}}}} → {{Tt|{{#invoke:Pudełko|Nazwa przestrzeni nazw|nazwa przestrzeni nazw i=Szablon|numer jednostki=2}}}} * {{Code|{{m|Pudełko|Nazwa przestrzeni nazw|nazwa przestrzeni nazw{{=}}Szablon|numer jednostki{{=}}2}}}} → {{Tt|{{#invoke:Pudełko|Nazwa przestrzeni nazw|nazwa przestrzeni nazw=Szablon|numer jednostki=2}}}} Powyżej dla przykładu podano parametry nie w rodzicu w szablonie, tylko w dziecku, jeśli chodzi o parametry nazw przestrzeni nazw, ale ich się za to nie powinno podawać w tych ramach, tylko w szablonach, w których wywoływane są te ramki pudełek {{Code|{{m|Pudełko}}}}, ale tak tutaj tak zrobiono by było najłatwiej sprawdzić działanie tego typu funkcji. Analogicznie możemy podawać parametry typu jednostki, np.: wywołaniu modułowym {{Code|{{m|Pudełko|Nazwa przestrzeni nazw|typ jednostki 2{{=}}strona szablonu|numer jednostki{{=}}2}}}}, ale o tym więcej w rozdziałach {{Code|{{sr|#p["Typ jednostki"](frame,i)|p=Pudełko}}}} w „{{sr|#Funkcje typu jednostki|p=Pudełko}}”, one definiują dane przestrzenie przedmiotowe, czy dyskusji, ale można lub nie użyć parametru dyskusji typu jednostki z wartością niepustą, wtedy wyświetli się nazwa przestrzeni nazw dyskusji. Typ jednostki nie ma takiej samej wartości dla przestrzeni przedmiotowej, co dyskusji. Również parametry typu jednostki nie powinno się podawać w dziecku w ramce, tylko w rodzicu w szablonie jako parametry, w którym ta ramka jest wywoływana, ale tutaj podano jedynie dla przykładu, jak najłatwiej sprawdzić działanie tych parametrów tej funkcji. Najpierw w funkcji nagłówku brane są parametry nazw przestrzeni nazw, a jeżeli ich nie ma, to parametry typu jednostki, a jeżeli nie ma, to generowane są nazwy na podstawie aktualnego modułu. === {{Code|p["Nazwa przedmiotowej przestrzeni nazw"](frame,...)}} === Funkcja pisze przedmiotową nazwę przestrzeni nazw jakikolwiek nazwy przestrzeni nazw (tzn. nazwę przedmiotową nazwy przestrzenie nazw, czyli nie dyskusji, zamieniana jest na nią samą, czyli identyfikator przestrzeni się nie zmienia, a dyskusji, nie przedmiotową, przekształca się na przedmiotową jej odpowiadającą, czyli w tym przypadku identyfikator przestrzeni zmniejsza się o numer mniej), według podanej w zmiennej {{Code|nazwa przestrzeni nazw}} dla pozycja bazowej w podanych parametrach szablonu rodzicu ramki dziecka, lub dla innej pozycji należy parametr podawać w formie {{Code|nazwa przestrzeni nazw 1}}, {{Code|nazwa przestrzeni nazw 2}}, {{Code|nazwa przestrzeni nazw 3}},..., lub te parametry można podać w postaci ogólnej {{Code|nazwa przestrzeni nazw i}}. Parametry podaje się w parametrach rodzica wywołania tej funkcji {{Code|{{m|Pudełko|Nazwa przedmiotowej przestrzeni nazw}}}} (ale ich nie trzeba podawać w dziecku, ale można) i w parametrach dziecka, jeśli chodzi o zmienną {{Code|numer jednostki}}, czyli np.: {{Code|{{m|Pudełko|Nazwa przedmiotowej przestrzeni nazw|numer jednostki{{=}}<jakaś liczba całkowita dodatnia>}}}}. Te parametry przestrzenne zamiast w rodzicu w szablonie można podać w ramce dziecka, wtedy parametry dziecka mają pierwszeństwo. Parametry przestrzenne mogą mogą być podane w postaci przestrzeni przedmiotowej lub dyskusji, ale ta funkcja zawsze ją zamienia na przedmiotową. Przestrzeń nazw z parametrów nazw przestrzennych może odpowiadać wartości przestrzeni głównej, to wtedy odpowiednia przestrzeń nazw z parametru nazwy jednostki się nie liczy w tej funkcji, aby się liczyła należy użyć funkcji {{Code|{{sr|#p["Nazwa przedmiotowej przestrzeni nazw 2"](frame,...)|p=Pudełko}}}}. Definicja skrótowa funkcji: <syntaxhighlight lang="lua"> p["Nazwa przedmiotowej przestrzeni nazw"]=function(frame,czy_uwzglednic_alternatywna_nazwe,i)...end; </syntaxhighlight> Wtedy ciało funkcji tej, czyli jego definicja w środku, jest: <syntaxhighlight lang="lua"> -- Jest liczony numer parametru nazwy przestrzeni nazw, domyslnie chodzi tu o numer bazowy parametrów przestrzennych; local numer_jednostki=i or frame.args["numer jednostki"]; local liczba_numer_jednostki=((numer_jednostki)and(tonumber(numer_jednostki))or 0); local pudelko_pomocne_modul=require("Module:Pudełko/Pomocne"); -- Liczy nazwę przestrzeni nazw przedmiotową na podstawie podanych parametrów; return pudelko_pomocne_modul.Nazwa_przestrzeni_nazw(frame,1, czy_uwzglednic_alternatywna_nazwe,liczba_numer_jednostki); </syntaxhighlight> Parametry funkcji: * {{Code|frame}} - tablica ramki tablicy transportu, * {{Code|czy_uwzglednic_alternatywna_nazwe}} - czy ma uwzględniać nazwę przestrzeni nazw domyślną szablonu, dostępne wartości: {{Code|false}}, w której nazwa domyślna nie jest uwzględniana wtedy, oraz {{Code|nil}} i {{Code|true}}, które oznaczają to samo, w tym jeżeli ona jest uwzględniana, wtedy jest brany parametr pierwszy dziecka, który musi istnieć przy takiej wartości tego parametru, tzn. {{Code|{{m|Pudełko|Nazwa przedmiotowej przestrzeni nazw|Dyskusja szablonu}}}} - ta nazwa domyślna zostanie zamieniona na przedmiotową, a jak ona by była przedmiotowa, to żadnej zamiany, by nie było, a jeśli nazwa uzyskana z nazwy przestrzeni nazw z parametrów przestrzennych jest w takim przypadku błędna, to w takim razie brany jest ten parametr, a jeżeli ta nazwa domyślna jest błędna, czyli {{Code|{{m|Pudełko|Nazwa przedmiotowej przestrzeni nazw|Moja przestrzeń}}}}, wtedy funkcja zwraca stan błędu {{Code|(błąd)}}. * {{Code|i}} - numer zmiennej nazwy przestrzeni nazw. Funkcja wykorzystuje {{Code|{{sr|#p.Nazwa_przestrzeni_nazw(frame,...)|p=Pudełko/Pomocne}}}} do wyznaczania ogólnego nazwy przestrzeni nazw dla pozycji bazowej i numerkowej, tzn. dla pozycji: jeden, dwa, trzy,..., itd, i ich ogólnej. Parametr ramki tablicy transportu rodzica szablonu: * {{Code|nazwa przestrzeni nazw}}, {{Code|nazwa przestrzeni nazw 1}}, {{Code|nazwa przestrzeni nazw 2}}, {{Code|nazwa przestrzeni nazw 3}},..., {{Code|nazwa przestrzeni nazw i}} - nazwy przestrzeni nazw dla pozycji bazowej oraz zwykłej i ogólnej numerkowej, * {{Code|typ jednostki}}, {{Code|typ jednostki 1}}, {{Code|typ jednostki 2}}, {{Code|typ jednostki 3}},..., {{Code|typ jednostki i}} - typy jednostek, którym odpowiadają pewne przestrzenie przedmiotowe, dla pozycji bazowej, numerkowej i ogólnej. Parametry ramki tablicy transportu dziecka: * Parametry dziecka są takie same jak rodzica dla funkcji pudełkowej plus tu wymienione, * {{Code|numer jednostki}} - jak parametr {{Code|i}} nie został ustawiony, to wtedy liczy się ta zmienna. Przykłady: <syntaxhighlight lang="mediawiki"> {{Nazwa szablonu|nazwa przestrzeni nazw=Dyskusja Wikibooks|nazwa przestrzeni nazw 2=Dyskusja szablonu|nazwa przestrzeni nazw i=Dyskusja modułu}} </syntaxhighlight> W dziecku powiedzmy jest wywołanie, i szukamy nazwy przestrzeni nazw o numerze dwa, która nie została podana, ale istnieje za to jej wersji ogólna {{Code|nazwa przestrzeni nazw i}} i domyślna {{Code|nazwa przestrzeni nazw}}: <syntaxhighlight lang="mediawiki"> {{#invoke:Pudełko|Nazwa przedmiotowej przestrzeni nazw|numer jednostki=1}} </syntaxhighlight> Na podstawie powyższego przykładu otrzymamy wynik o schemacie, nie wyniku, bo tam nie ma zmiennej {{Code|nazwa przestrzeni nazw 1}}, ale jest {{Code|nazwa przestrzeni nazw i}}: <syntaxhighlight lang="mediawiki"> <!-- Ale nie "nazwa przestrzeni nazw", bo jej nie ma, ale za to istnieje "nazwa przestrzeni nazw i"; --> <!-- nazwa przestrzeni nazw 2=nazwa przestrzeni nazw i=Dyskusja modułu; --> <!-- Czyli wynik: --> Moduł <!-- Widzimy, że wygenerowała się nazwa przestrzeni nazw, którą jest przestrzeń przedmiotowa programowa przestrzeni dyskusji "Dyskusja modułu", którą również jest "Szablon" jego przestrzeni dyskusji "Dyskusja szablonu", a dla ich przestrzeni przedmiotowej, zamiast dyskusji, to samo przekształca się na to samo; --> </syntaxhighlight> Nie jest brana w tym powyższym przykładzie zmienna {{Code|nazwa przestrzeni nazw}}, bo jej nie ma, ale za to jest {{Code|nazwa przestrzeni nazw i}}, bo ona występuje jako parametr domyślny ogólny dla parametrów numerkowych. Przykłady w wikikodzie: * {{Code|{{m|Pudełko|Nazwa przedmiotowej przestrzeni nazw|numer jednostki{{=}}2}}}} → {{Tt|{{#invoke:Pudełko|Nazwa przedmiotowej przestrzeni nazw|numer jednostki=2}}}} * {{Code|{{m|Pudełko|Nazwa przedmiotowej przestrzeni nazw|Dyskusja szablonu|nazwa przestrzeni nazw i{{=}}Moja przestrzeń|numer jednostki{{=}}2}}}} → {{Tt|{{#invoke:Pudełko|Nazwa przedmiotowej przestrzeni nazw|Dyskusja szablonu|nazwa przestrzeni nazw i=Moja przestrzeń|numer jednostki=2}}}} * {{Code|{{m|Pudełko|Nazwa przedmiotowej przestrzeni nazw|nazwa przestrzeni nazw 2{{=}}Dyskusja szablonu|numer jednostki{{=}}2}}}} → {{Tt|{{#invoke:Pudełko|Nazwa przedmiotowej przestrzeni nazw|nazwa przestrzeni nazw 2=Dyskusja szablonu|numer jednostki=2}}}} * {{Code|{{m|Pudełko|Nazwa przedmiotowej przestrzeni nazw|nazwa przestrzeni nazw 2{{=}}Dyskusja szablonu|numer jednostki{{=}}2}}}} → {{Tt|{{#invoke:Pudełko|Nazwa przedmiotowej przestrzeni nazw|nazwa przestrzeni nazw i=Dyskusja szablonu|numer jednostki=2}}}} * {{Code|{{m|Pudełko|Nazwa przedmiotowej przestrzeni nazw|nazwa przestrzeni nazw{{=}}Dyskusja szablonu|numer jednostki{{=}}2}}}} → {{Tt|{{#invoke:Pudełko|Nazwa przedmiotowej przestrzeni nazw|nazwa przestrzeni nazw=Dyskusja szablonu|numer jednostki=2}}}} Powyżej dla przykładu podano parametry nie w rodzicu w szablonie, tylko w dziecku, jeśli chodzi o parametry nazw przestrzeni nazw, ale ich się za to nie powinno podawać w tych ramach, tylko w szablonach, w których wywoływane są te ramki pudełek {{Code|{{m|Pudełko}}}}, ale tak tutaj tak zrobiono by było najłatwiej sprawdzić działanie tego typu funkcji. Analogicznie możemy podawać parametry typu jednostki, np.: wywołaniu modułowym {{Code|{{m|Pudełko|Nazwa przedmiotowej przestrzeni nazw|typ jednostki 2{{=}}strona szablonu|numer jednostki{{=}}2}}}}, ale o tym więcej w rozdziałach {{Code|{{sr|#p["Przedmiotowy typ jednostki"](frame,i)|p=Pudełko}}}} w „{{sr|#Funkcje typu jednostki|p=Pudełko}}”, one definiują dane przestrzenie przedmiotowe, ale wtedy ta sama nazwa przestrzeni nazw reprezentowana przez {{Parametr|typ jednostki 2|strona szablonu}}, jest zamieniana na to samo, lepiej jest tutaj używać parametrów przestrzennych nazw niż typu jednostki. Typ jednostki nie ma takiej samej wartości dla przestrzeni przedmiotowej, co dyskusji. Tutaj parametr dyskusji typu jednostki bazowy i numerkowy ogólny, czy szczegółowy, nie gra roli, bo nawet, gdy wygenerujemy nazwę przestrzeni dyskusji za pomoca tego parametru, to i tak otrzymamy na samym końcu jego nazwę przedmiotową. Również parametry typu jednostki nie powinno się podawać w dziecku w ramce, tylko w rodzicu w szablonie jako parametry, w którym ta ramka jest wywoływana, ale tutaj podano jedynie dla przykładu, jak najłatwiej sprawdzić działanie tych parametrów tej funkcji. Najpierw w funkcji nagłówku brane są parametry nazw przestrzeni nazw, a jeżeli ich nie ma, to parametry typu jednostki, a jeżeli nie ma, to generowane są nazwy na podstawie aktualnego modułu. === {{Code|p["Nazwa przestrzeni nazw dyskusji"](frame,...)}} === Funkcja pisze nazwę przestrzeni nazw dyskusji jakikolwiek nazwy przestrzeni nazw (tzn. nazwę przedmiotową nazwy przestrzenie nazw, czyli nie dyskusji, zamieniana jest na dyskusji, czyli identyfikator przestrzeni się zmienia jeden wyżej, a dyskusji, nie przedmiotową, przekształca się na tą samą), według podanej w zmiennej {{Code|nazwa przestrzeni nazw}} dla pozycja bazowej w podanych parametrach szablonu rodzicu ramki dziecka, lub dla innej pozycji należy parametr podawać w formie {{Code|nazwa przestrzeni nazw 1}}, {{Code|nazwa przestrzeni nazw 2}}, {{Code|nazwa przestrzeni nazw 3}},..., lub te parametry można podać w postaci ogólnej {{Code|nazwa przestrzeni nazw i}}. Parametry podaje się w parametrach rodzica wywołania tej funkcji {{Code|{{m|Pudełko|Nazwa przestrzeni nazw dyskusji}}}} (ale ich nie trzeba podawać w dziecku, ale można) i w parametrach dziecka, jeśli chodzi o zmienną {{Code|numer jednostki}}, czyli np.: {{Code|{{m|Pudełko|Nazwa przestrzeni nazw dyskusji|numer jednostki{{=}}<jakaś liczba całkowita dodatnia>}}}}. Te parametry przestrzenne zamiast w rodzicu w szablonie można podać w ramce dziecka, wtedy parametry dziecka mają pierwszeństwo. Parametry przestrzenne mogą mogą być podane w postaci przestrzeni przedmiotowej lub dyskusji, ale ta funkcja zawsze ją zamienia na dyskusji. Przestrzeń nazw z parametrów nazw przestrzennych może odpowiadać wartości przestrzeni głównej, to wtedy odpowiednia przestrzeń nazw z parametru nazwy jednostki się nie liczy w tej funkcji, aby się liczyła należy użyć funkcji {{Code|{{sr|#p["Nazwa przestrzeni nazw dyskusji 2"](frame,...)|p=Pudełko}}}}. Definicja skrótowa funkcji: <syntaxhighlight lang="lua"> p["Nazwa przestrzeni nazw dyskusji"]=function(frame,czy_uwzglednic_alternatywna_nazwe,i)...end; </syntaxhighlight> Wtedy ciało funkcji tej, czyli jego definicja w środku, jest: <syntaxhighlight lang="lua"> -- Jest liczony numer parametru nazwy przestrzeni nazw, domyslnie chodzi tu o numer bazowy parametrów przestrzennych; local numer_jednostki=i or frame.args["numer jednostki"]; local liczba_numer_jednostki=((numer_jednostki)and(tonumber(numer_jednostki))or 0); local pudelko_pomocne_modul=require("Module:Pudełko/Pomocne"); -- Liczy nazwę przestrzeni nazw dyskusji na podstawie podanych parametrów; return pudelko_pomocne_modul.Nazwa_przestrzeni_nazw(frame,2, czy_uwzglednic_alternatywna_nazwe,liczba_numer_jednostki); </syntaxhighlight> Parametry funkcji: * {{Code|frame}} - tablica ramki tablicy transportu, * {{Code|czy_uwzglednic_alternatywna_nazwe}} - czy ma uwzględniać nazwę przestrzeni nazw domyślną szablonu, dostępne wartości: {{Code|false}}, w której nazwa domyślna nie jest uwzględniana wtedy, oraz {{Code|nil}} i {{Code|true}}, które oznaczają to samo, w tym jeżeli ona jest uwzględniana, wtedy jest brany parametr pierwszy dziecka, który musi istnieć przy takiej wartości tego parametru, tzn. {{Code|{{m|Pudełko|Nazwa przestrzeni nazw dyskusji|Szablon}}}} - ta nazwa domyślna zostanie przekształcona na dyskusji, a jeżeli ona by była dyskusji, to nie byłoby żadnego przekształcenia, a jeśli nazwa uzyskana nazwy przestrzeni nazw z parametrów przestrzennych jest w takim przypadku błędna, to w takim razie brany jest ten parametr, a jeżeli nazwa domyślna jest błędna, czyli {{Code|{{m|Pudełko|Nazwa przestrzeni nazw dyskusji|Moja przestrzeń}}}}, wtedy funkcja zwraca stan błędu {{Code|(błąd)}}. * {{Code|i}} - numer zmiennej nazwy przestrzeni nazw. Funkcja wykorzystuje {{Code|{{sr|#p.Nazwa_przestrzeni_nazw(frame,...)|p=Pudełko/Pomocne}}}} do wyznaczania ogólnego nazwy przestrzeni nazw dla pozycji bazowej i numerkowej, tzn. dla pozycji: jeden, dwa, trzy,..., itd, i ich ogólnej. Parametr ramki tablicy transportu rodzica szablonu: * {{Code|nazwa przestrzeni nazw}}, {{Code|nazwa przestrzeni nazw 1}}, {{Code|nazwa przestrzeni nazw 2}}, {{Code|nazwa przestrzeni nazw 3}},..., {{Code|nazwa przestrzeni nazw i}} - nazwy przestrzeni nazw dla pozycji bazowej oraz zwykłej i ogólnej numerkowej, * {{Code|typ jednostki}}, {{Code|typ jednostki 1}}, {{Code|typ jednostki 2}}, {{Code|typ jednostki 3}},..., {{Code|typ jednostki i}} - typy jednostek, którym odpowiadają pewne przestrzenie przedmiotowe, dla pozycji bazowej, numerkowej i ogólnej. Parametry ramki tablicy transportu dziecka: * Parametry dziecka są takie same jak rodzica dla funkcji pudełkowej plus tu wymienione, * {{Code|numer jednostki}} - jak parametr {{Code|i}} nie został ustawiony, to wtedy liczy się ta zmienna. Przykłady: <syntaxhighlight lang="mediawiki"> {{Nazwa szablonu|nazwa przestrzeni nazw=Wikibooks|nazwa przestrzeni nazw 2=Szablon|nazwa przestrzeni nazw i=Moduł}} </syntaxhighlight> W dziecku powiedzmy jest wywołanie, i szukamy nazwy przestrzeni nazw o numerze dwa, która nie została podana, ale istnieje za to jej wersji ogólna {{Code|nazwa przestrzeni nazw i}} i domyślna {{Code|nazwa przestrzeni nazw}}: <syntaxhighlight lang="mediawiki"> {{#invoke:Pudełko|Nazwa przestrzeni nazw dyskusji|numer jednostki=1}} </syntaxhighlight> Na podstawie powyższego przykładu otrzymamy wynik o schemacie, nie wyniku, bo tam nie ma zmiennej {{Code|nazwa przestrzeni nazw 1}}, ale jest {{Code|nazwa przestrzeni nazw i}}: <syntaxhighlight lang="mediawiki"> <!-- Ale nie "nazwa przestrzeni nazw", bo jej nie ma, ale za to istnieje "nazwa przestrzeni nazw i"; --> <!-- nazwa przestrzeni nazw 2=nazwa przestrzeni nazw i=Moduł; --> <!-- Czyli wynik: --> Dyskusja modułu <!-- Widzimy, że wygenerowała się nazwa przestrzeni nazw, którą jest przestrzeń dyskusji przestrzeni programowej przestrzeni przedmiotowej "Moduł", którą również jest "Szablon" jego przestrzeni dyskusji "Dyskusja szablonu", a dla ich przestrzeni przedmiotowej, zamiast dyskusji, to przekształca się na dyskusji jej odpowiadającą; --> </syntaxhighlight> Nie jest brana w tym powyższym przykładzie zmienna {{Code|nazwa przestrzeni nazw}}, bo jej nie ma, ale za to jest {{Code|nazwa przestrzeni nazw i}}, bo ona występuje jako parametr domyślny ogólny dla parametrów numerkowych. Przykłady w wikikodzie: * {{Code|{{m|Pudełko|Nazwa przestrzeni nazw dyskusji|numer jednostki{{=}}2}}}} → {{Tt|{{#invoke:Pudełko|Nazwa przestrzeni nazw dyskusji|numer jednostki=2}}}} * {{Code|{{m|Pudełko|Nazwa przestrzeni nazw dyskusji|Szablon|nazwa przestrzeni nazw i{{=}}Moja przestrzeń|numer jednostki{{=}}2}}}} → {{Tt|{{#invoke:Pudełko|Nazwa przestrzeni nazw dyskusji|Szablon|nazwa przestrzeni nazw i=Moja przestrzeń|numer jednostki=2}}}} * {{Code|{{m|Pudełko|Nazwa przestrzeni nazw dyskusji|nazwa przestrzeni nazw 2{{=}}Szablon|numer jednostki{{=}}2}}}} → {{Tt|{{#invoke:Pudełko|Nazwa przestrzeni nazw dyskusji|nazwa przestrzeni nazw 2=Szablon|numer jednostki=2}}}} * {{Code|{{m|Pudełko|Nazwa przestrzeni nazw dyskusji|nazwa przestrzeni nazw 2{{=}}Szablon|numer jednostki{{=}}2}}}} → {{Tt|{{#invoke:Pudełko|Nazwa przestrzeni nazw dyskusji|nazwa przestrzeni nazw i=Szablon|numer jednostki=2}}}} * {{Code|{{m|Pudełko|Nazwa przestrzeni nazw dyskusji|nazwa przestrzeni nazw{{=}}Szablon|numer jednostki{{=}}2}}}} → {{Tt|{{#invoke:Pudełko|Nazwa przestrzeni nazw dyskusji|nazwa przestrzeni nazw=Szablon|numer jednostki=2}}}} Powyżej dla przykładu podano parametry nie w rodzicu w szablonie, tylko w dziecku, jeśli chodzi o parametry nazw przestrzeni nazw, ale ich się za to nie powinno podawać w tych ramach, tylko w szablonach, w których wywoływane są te ramki pudełek {{Code|{{m|Pudełko}}}}, ale tak tutaj tak zrobiono by było najłatwiej sprawdzić działanie tego typu funkcji. Analogicznie możemy podawać parametry typu jednostki, np.: wywołaniu modułowym {{Code|{{m|Pudełko|Nazwa przestrzeni nazw dyskusji|typ jednostki 2{{=}}strona szablonu|numer jednostki{{=}}2}}}}, ale o tym więcej w rozdziałach {{Code|{{sr|#p["Dyskusyjny typ jednostki"](frame,i)|p=Pudełko}}}} w „{{sr|#Funkcje typu jednostki|p=Pudełko}}”, one definiują dane przestrzenie dyskusji, ale wtedy nazwa przestrzeni nazw reprezentowana przez {{Parametr|typ jednostki 2|strona szablonu}}, jest zamieniana na nazwę przestrzeni nazw dyskusji. Parametr dyskusji typu jednostki bazowy lub dla danego numerka ogólny, czy szczegółowy, nie gra roli. Typ jednostki nie ma takiej samej wartości dla przestrzeni przedmiotowej, co dyskusji. Również parametry typu jednostki nie powinno się podawać w dziecku w ramce, tylko w rodzicu w szablonie jako parametry, w którym ta ramka jest wywoływana, ale tutaj podano jedynie dla przykładu, jak najłatwiej sprawdzić działanie tych parametrów tej funkcji. Najpierw w funkcji nagłówku brane są parametry nazw przestrzeni nazw, a jeżeli ich nie ma, to parametry typu jednostki, a jeżeli nie ma, to generowane są nazwy na podstawie aktualnego modułu. == Funkcje nazw przestrzeni nazw drugiej wersji == === {{Code|p["Nazwa przestrzeni nazw 2"](frame,...)}} === Funkcja pisze nazwę przestrzeni nazw, niezależnie, czy to jest przedmiotowa, czy dyskusji, według, i nie zawsze tylko, podanej w zmiennej {{Code|nazwa przestrzeni nazw}} dla pozycja bazowej w podanych parametrach szablonu rodzicu ramki dziecka, lub dla innej pozycji należy parametr podawać w formie {{Code|nazwa przestrzeni nazw 1}}, {{Code|nazwa przestrzeni nazw 2}}, {{Code|nazwa przestrzeni nazw 3}},..., lub te parametry można podać w postaci ogólnej {{Code|nazwa przestrzeni nazw i}}. W tej funkcji trzeba też podawać parametry nazwy jednostek {{Code|nazwa jednostki}}, {{Code|nazwa jednostki 1}}, {{Code|nazwa jednostki 2}}, {{Code|nazwa jednostki 3}},... Parametry podaje się w parametrach rodzica wywołania tej funkcji {{Code|{{m|Pudełko|Nazwa przestrzeni nazw 2}}}} (ale ich nie trzeba podawać w dziecku, ale można) i w parametrach dziecka, jeśli chodzi o zmienną {{Code|numer jednostki}}, czyli np.: {{Code|{{m|Pudełko|Nazwa przestrzeni nazw 2|numer jednostki{{=}}<jakaś liczba całkowita dodatnia>}}}}. Te parametry przestrzenne zamiast w rodzicu w szablonie można podać w ramce dziecka, wtedy parametry dziecka mają pierwszeństwo. Przestrzeń nazw z parametrów nazw przestrzennych może odpowiadać wartości przestrzeni głównej, to wtedy odpowiednia przestrzeń nazw z parametru nazwy jednostki się liczy w tej funkcji, wtedy jest liczona nazwa przestrzeni nazw z tego parametru. Gdy parametry przestrzenne lub typ jednostki w drugim podejściu nie wskazują na przestrzeń główną, to wtedy działanie tej funkcji jest podobne do {{Code|{{sr|#p["Nazwa przestrzeni nazw"](frame,...)|p=Pudełko}}}}. Definicja skrótowa funkcji: <syntaxhighlight lang="lua"> p["Nazwa przestrzeni nazw 2"]=function(frame,czy_uwzglednic_alternatywna_nazwe,i)...end; </syntaxhighlight> Wtedy ciało funkcji tej, czyli jego definicja w środku, jest: <syntaxhighlight lang="lua"> local pudelko_pomocne_modul=require("Module:Pudełko/Pomocne"); -- Liczy nazwę przestrzeni nazw, jeżeli z parametrów przestrzennych przestrzeń wskazuje na główną, to wtedy jest liczona przestrzeń nazw z nazwy jednostki; return pudelko_pomocne_modul.Nazwa_przestrzeni_nazw_2(frame,czy_uwzglednic_alternatywna_nazwe,i) </syntaxhighlight> Parametry funkcji: * {{Code|frame}} - tablica ramki tablicy transportu, * {{Code|czy_uwzglednic_alternatywna_nazwe}} - czy ma uwzględniać nazwę przestrzeni nazw domyślną szablonu, dostępne wartości: {{Code|false}}, w której nazwa domyślna nie jest uwzględniana wtedy, oraz {{Code|nil}} i {{Code|true}}, które oznaczają to samo, w tym jeżeli ona jest uwzględniana, wtedy jest brany parametr pierwszy dziecka, który musi istnieć przy takiej wartości tego parametru, tzn. {{Code|{{m|Pudełko|Nazwa przestrzeni nazw 2|Szablon}}}}, a jeśli nazwa uzyskana nazwy przestrzeni nazw jest w takim przypadku błędna, to brany jest ten element, a jeżeli nazwa domyślna jest błędna, czyli {{Code|{{m|Pudełko|Nazwa przestrzeni nazw 2|Moja przestrzeń}}}}, wtedy funkcja zwraca stan błędu {{Code|(błąd)}}. * {{Code|i}} - numer zmiennej nazwy przestrzeni nazw. Funkcja wykorzystuje {{Code|{{sr|#p.Nazwa_przestrzeni_nazw_2(frame,...)|p=Pudełko/Pomocne}}}} do wyznaczania ogólnego nazwy przestrzeni nazw dla pozycji bazowej i numerkowej, tzn. dla pozycji: jeden, dwa, trzy,..., itd, i ich ogólnej. Parametr ramki tablicy transportu rodzica szablonu: * {{Code|nazwa przestrzeni nazw}}, {{Code|nazwa przestrzeni nazw 1}}, {{Code|nazwa przestrzeni nazw 2}}, {{Code|nazwa przestrzeni nazw 3}},..., {{Code|nazwa przestrzeni nazw i}} - nazwy przestrzeni nazw dla pozycji bazowej oraz zwykłej i ogólnej numerkowej, * {{Code|nazwa jednostki}}, {{Code|nazwa jednostki 1}}, {{Code|nazwa jednostki 2}}, {{Code|nazwa jednostki 3}},... - nazwy jednostek dla pozycji bazowej i numerkowej, * {{Code|typ jednostki}}, {{Code|typ jednostki 1}}, {{Code|typ jednostki 2}}, {{Code|typ jednostki 3}},..., {{Code|typ jednostki i}} - typy jednostek, którym odpowiadają pewne przestrzenie przedmiotowe, dla pozycji bazowej, numerkowej i ogólnej, ** {{Code|dyskusja typu jednostki}}, {{Code|dyskusja typu jednostki 1}}, {{Code|dyskusja typ jednostki 2}}, {{Code|dyskusja typ jednostki 3}},..., {{Code|dyskusja typ jednostki i}} - czy dany typ jednostki ma przedstawiać, jeśli niepusta, przestrzeń dyskusji dla pozycji bazowej, numerkowej i ogólnej. Parametry ramki tablicy transportu dziecka: * Parametry dziecka są takie same jak rodzica dla funkcji pudełkowej plus tu wymienione, * {{Code|numer jednostki}} - jak parametr {{Code|i}} nie został ustawiony, to wtedy liczy się ta zmienna. Przykłady: <syntaxhighlight lang="mediawiki"> {{Nazwa szablonu|nazwa przestrzeni nazw=Wikibooks|nazwa przestrzeni nazw 1=Szablon|nazwa przestrzeni nazw i=|nazwa jednostki 2=Wikibooks:Strona}} </syntaxhighlight> W dziecku powiedzmy jest wywołanie, i szukamy nazwy przestrzeni nazw o numerze dwa, która została podana, ale istnieje za to jej wersji ogólna {{Code|nazwa przestrzeni nazw i}} i domyślna {{Code|nazwa przestrzeni nazw}}, ale wtedy dla tego numerkowego liczy się to ogólne z {{Code| i}}, a ponieważ ta nazwa jest pusta, więc będziemy liczyli nazwę przestrzeni nazw z {{Code|nazwa jednostki 2}}: <syntaxhighlight lang="mediawiki"> {{#invoke:Pudełko|Nazwa przestrzeni nazw 2|numer jednostki=2}} </syntaxhighlight> Na podstawie powyższego przykładu otrzymamy wynik o schemacie, nie wyniku, bo tam nie ma zmiennej {{Code|nazwa przestrzeni nazw 1}}, ale jest {{Code|nazwa przestrzeni nazw i}}: <syntaxhighlight lang="mediawiki"> <!-- Ale nie "nazwa przestrzeni nazw 2", bo jej nie ma, ale za to istnieje "nazwa przestrzeni nazw i"; --> <!-- nazwa przestrzeni nazw 2=nazwa przestrzeni nazw i="", a nazwa jednostki 2="Wikibooks:Strona"; --> <!-- Czyli wynik: --> Wikibooks <!-- Widzimy, że wygenerowała się nazwa przestrzeni nazw, którą jest przestrzeń nieprogramowa, ale projektu, wychodząca z nazwy jednostek w tym przypadku z "nazwa jednostki 2"; --> </syntaxhighlight> Nie jest brana w tym powyższym przykładzie zmienna {{Code|nazwa przestrzeni nazw}}, bo jej nie ma, ale za to jest {{Code|nazwa przestrzeni nazw i}}, bo ona występuje jako parametr domyślny ogólny dla parametrów numerkowych. Tytaj jest używana jest zmienna {{Code|nazwa jednostki 2}} do wygenerowania ostatecznego wyniku, bo jak można zauważyć, parametry przestrzenne wskazują na przestrzeń główną, a nazwy jednostek już nie. Przykłady w wikikodzie: * {{Code|{{m|Pudełko|Nazwa przestrzeni nazw 2|numer jednostki{{=}}2}}}} → {{Tt|{{#invoke:Pudełko|Nazwa przestrzeni nazw 2|numer jednostki=2}}}} * {{Code|{{m|Pudełko|Nazwa przestrzeni nazw 2|Szablon|nazwa przestrzeni nazw i{{=}}Moja przestrzeń|numer jednostki{{=}}2}}}} → {{Tt|{{#invoke:Pudełko|Nazwa przestrzeni nazw 2|Szablon|nazwa przestrzeni nazw i=Moja przestrzeń|numer jednostki=2}}}} * {{Code|{{m|Pudełko|Nazwa przestrzeni nazw 2|nazwa przestrzeni nazw 2{{=}}|nazwa jednostki 2{{=}}Szablon:Strona|numer jednostki{{=}}2}}}} → {{Tt|{{#invoke:Pudełko|Nazwa przestrzeni nazw 2|nazwa przestrzeni nazw 2=|nazwa jednostki 2=Szablon:Strona|numer jednostki=2}}}} * {{Code|{{m|Pudełko|Nazwa przestrzeni nazw 2|nazwa przestrzeni nazw i{{=}}|nazwa jednostki 2{{=}}Szablon:Strona|numer jednostki{{=}}2}}}} → {{Tt|{{#invoke:Pudełko|Nazwa przestrzeni nazw 2|nazwa przestrzeni nazw i=|nazwa jednostki 2=Szablon:Strona|numer jednostki=2}}}} * {{Code|{{m|Pudełko|Nazwa przestrzeni nazw 2|Szablon|nazwa przestrzeni nazw{{=}}|nazwa jednostki 2{{=}}Wikibooks:Strona|numer jednostki{{=}}2}}}} → {{Tt|{{#invoke:Pudełko|Nazwa przestrzeni nazw 2|Szablon|nazwa przestrzeni nazw=|nazwa jednostki 2=Wikibooks:Strona|numer jednostki=2}}}} Powyżej dla przykładu podano parametry nie w rodzicu w szablonie, tylko w dziecku, jeśli chodzi o parametry nazw przestrzeni nazw i nazw jednostek, ale ich się za to nie powinno podawać w tych ramach, tylko w szablonach, w których wywoływane są te ramki pudełek {{Code|{{m|Pudełko}}}}, ale tak tutaj tak zrobiono by było najłatwiej sprawdzić działanie tego typu funkcji. Analogicznie możemy podawać parametry typu jednostki, np.: wywołaniu modułowym {{Code|{{m|Pudełko|Nazwa przestrzeni nazw 2|typ jednostki 2{{=}}Podręcznik|nazwa jednostki 2{{=}}Szablon:Strona|numer jednostki{{=}}2}}}} (ale wtedy jest brana przestrzeń nazw z nazwy jednostki), ale o tym więcej w rozdziałach {{Code|{{sr|#p["Typ jednostki 2"](frame,i)|p=Pudełko}}}} w „{{sr|#Funkcje typu jednostki|p=Pudełko}}”, one definiują dane przestrzenie przedmiotowe, czy dyskusji ale można lub nie użyć parametru dyskusji typu jednostki z wartością niepustą, wtedy wyświetli się nazwa przestrzeni nazw dyskusji. Jeżeli typ jednostki wskazuje na przestrzeń nazw główną, wtedy się liczą parametry nazw jednostek. Typ jednostki nie ma takiej samej wartości dla przestrzeni przedmiotowej, co dyskusji. Również parametry typu jednostki nie powinno się podawać w dziecku w ramce, tylko w rodzicu w szablonie jako parametry, w którym ta ramka jest wywoływana, ale tutaj podano jedynie dla przykładu, jak najłatwiej sprawdzić działanie tych parametrów tej funkcji. Najpierw w funkcji nagłówku brane są parametry nazw przestrzeni nazw, a jeżeli ich nie ma, to parametry typu jednostki, a jeżeli nie ma lub parametry przestrzenne wskazują na przestrzeń główną, i nie ma nazwy jednostki, to generowane są nazwy tej funkcji na podstawie aktualnej strony. === {{Code|p["Nazwa przedmiotowej przestrzeni nazw 2"](frame,...)}} === Funkcja pisze przedmiotową nazwę przestrzeni nazw jakikolwiek nazwy przestrzeni nazw (tzn. nazwę przedmiotową nazwy przestrzenie nazw, czyli nie dyskusji, zamieniana jest na nią samą, czyli identyfikator przestrzeni się nie zmienia, a dyskusji, nie przedmiotową, przekształca się na przedmiotową jej odpowiadającą, czyli w tym przypadku identyfikator przestrzeni zmniejsza się o numer mniej), według, i nie zawsze tylko, podanej w zmiennej {{Code|nazwa przestrzeni nazw}} dla pozycja bazowej w podanych parametrach szablonu rodzicu ramki dziecka, lub dla innej pozycji należy parametr podawać w formie {{Code|nazwa przestrzeni nazw 1}}, {{Code|nazwa przestrzeni nazw 2}}, {{Code|nazwa przestrzeni nazw 3}},..., lub te parametry można podać w postaci ogólnej {{Code|nazwa przestrzeni nazw i}}. W tej funkcji trzeba też podawać parametry nazwy jednostek {{Code|nazwa jednostki}}, {{Code|nazwa jednostki 1}}, {{Code|nazwa jednostki 2}}, {{Code|nazwa jednostki 3}},... Parametry podaje się w parametrach rodzica wywołania tej funkcji {{Code|{{m|Pudełko|Nazwa przedmiotowej przestrzeni nazw 2}}}} (ale ich nie trzeba podawać w dziecku, ale można) i w parametrach dziecka, jeśli chodzi o zmienną {{Code|numer jednostki}}, czyli np.: {{Code|{{m|Pudełko|Nazwa przedmiotowej przestrzeni nazw 2|numer jednostki{{=}}<jakaś liczba całkowita dodatnia>}}}}. Te parametry przestrzenne zamiast w rodzicu w szablonie można podać w ramce dziecka, wtedy parametry dziecka mają pierwszeństwo. Przestrzeń nazw z parametrów nazw przestrzennych po przekształceniu na przedmiotową może odpowiadać wartości przestrzeni głównej, to wtedy odpowiednia przestrzeń nazw z parametru nazwy jednostki się liczy w tej funkcji, wtedy jest liczona nazwa przestrzeni nazw z tego parametru. Gdy parametry przestrzenne lub typ jednostki w drugim podejściu nie wskazują na przestrzeń główną, to wtedy działanie tej funkcji jest podobne do {{Code|{{sr|#p["Nazwa przedmiotowej przestrzeni nazw"](frame,...)|p=Pudełko}}}}. Definicja skrótowa funkcji: <syntaxhighlight lang="lua"> p["Nazwa przedmiotowej przestrzeni nazw 2"]=function(frame,czy_uwzglednic_alternatywna_nazwe,i)...end; </syntaxhighlight> Wtedy ciało funkcji tej, czyli jego definicja w środku, jest: <syntaxhighlight lang="lua"> local pudelko_pomocne_modul=require("Module:Pudełko/Pomocne"); return pudelko_pomocne_modul.Nazwa_przestrzeni_nazw_przedmiotowa_dyskusji_2(frame,czy_uwzglednic_alternatywna_nazwe,i,"przedmiotowa"); </syntaxhighlight> Parametry funkcji: * {{Code|frame}} - tablica ramki tablicy transportu, * {{Code|czy_uwzglednic_alternatywna_nazwe}} - czy ma uwzględniać nazwę przestrzeni nazw domyślną szablonu, dostępne wartości: {{Code|false}}, w której nazwa domyślna nie jest uwzględniana wtedy, oraz {{Code|nil}} i {{Code|true}}, które oznaczają to samo, w tym jeżeli ona jest uwzględniana, wtedy jest brany parametr pierwszy dziecka, który musi istnieć przy takiej wartości tego parametru, tzn. {{Code|{{m|Pudełko|Nazwa przedmiotowej przestrzeni nazw 2|Szablon}}}}, nazwa domyślna zostanie zamieniona na przedmiotową, a jeżeli jest już taka, to żadnej zamiany nie ma, a jeśli nazwa uzyskana nazwy przestrzeni nazw jest w takim przypadku błędna, to brany jest ten element, a jeżeli nazwa domyślna jest błędna, czyli {{Code|{{m|Pudełko|Nazwa przedmiotowej przestrzeni nazw 2|Moja przestrzeń}}}}, wtedy funkcja zwraca stan błędu {{Code|(błąd)}}. * {{Code|i}} - numer zmiennej nazwy przestrzeni nazw. Funkcja wykorzystuje {{Code|{{sr|#p.Nazwa_przestrzeni_nazw_przedmiotowa_dyskusji_2(frame,...)|p=Pudełko/Pomocne}}}} do wyznaczania ogólnego nazwy przestrzeni nazw dla pozycji bazowej i numerkowej, tzn. dla pozycji: jeden, dwa, trzy,..., itd, i ich ogólnej. Parametr ramki tablicy transportu rodzica szablonu: * {{Code|nazwa przestrzeni nazw}}, {{Code|nazwa przestrzeni nazw 1}}, {{Code|nazwa przestrzeni nazw 2}}, {{Code|nazwa przestrzeni nazw 3}},..., {{Code|nazwa przestrzeni nazw i}} - nazwy przestrzeni nazw dla pozycji bazowej oraz zwykłej i ogólnej numerkowej, * {{Code|nazwa jednostki}}, {{Code|nazwa jednostki 1}}, {{Code|nazwa jednostki 2}}, {{Code|nazwa jednostki 3}},... - nazwy jednostek dla pozycji bazowej i numerkowej, * {{Code|typ jednostki}}, {{Code|typ jednostki 1}}, {{Code|typ jednostki 2}}, {{Code|typ jednostki 3}},..., {{Code|typ jednostki i}} - typy jednostek, którym odpowiadają pewne przestrzenie przedmiotowe, dla pozycji bazowej, numerkowej i ogólnej. Parametry ramki tablicy transportu dziecka: * Parametry dziecka są takie same jak rodzica dla funkcji pudełkowej plus tu wymienione, * {{Code|numer jednostki}} - jak parametr {{Code|i}} nie został ustawiony, to wtedy liczy się ta zmienna. Przykłady: <syntaxhighlight lang="mediawiki"> {{Nazwa szablonu|nazwa przestrzeni nazw=Wikibooks|nazwa przestrzeni nazw 1=Szablon|nazwa przestrzeni nazw i=|nazwa jednostki 2=Dyskusja Wikibooks:Strona}} </syntaxhighlight> W dziecku powiedzmy jest wywołanie, i szukamy nazwy przestrzeni nazw o numerze dwa, która została podana, ale istnieje za to jej wersji ogólna {{Code|nazwa przestrzeni nazw i}} i domyślna {{Code|nazwa przestrzeni nazw}}, ale wtedy dla tego numerkowego liczy się to ogólne z {{Code| i}}, a ponieważ ta nazwa jest pusta, więc będziemy liczyli nazwę przestrzeni nazw z {{Code|nazwa jednostki 2}}: <syntaxhighlight lang="mediawiki"> {{#invoke:Pudełko|Nazwa przedmiotowej przestrzeni nazw 2|numer jednostki=2}} </syntaxhighlight> Na podstawie powyższego przykładu otrzymamy wynik o schemacie, nie wyniku, bo tam nie ma zmiennej {{Code|nazwa przestrzeni nazw 1}}, ale jest {{Code|nazwa przestrzeni nazw i}}: <syntaxhighlight lang="mediawiki"> <!-- Ale nie "nazwa przestrzeni nazw 2", bo jej nie ma, ale za to istnieje "nazwa przestrzeni nazw i"; --> <!-- nazwa przestrzeni nazw 2=nazwa przestrzeni nazw i="", a nazwa jednostki 2="Dyskusja Wikibooks:Strona"; --> <!-- Czyli wynik: --> Wikibooks <!-- Widzimy, że wygenerowała się nazwa przestrzeni nazw, którą jest przestrzeń nieprogramowa, ale projektu, wychodząca z nazwy jednostek w tym przypadku z "nazwa jednostki 2"; --> </syntaxhighlight> Nie jest brana w tym powyższym przykładzie zmienna {{Code|nazwa przestrzeni nazw}}, bo jej nie ma, ale za to jest {{Code|nazwa przestrzeni nazw i}}, bo ona występuje jako parametr domyślny ogólny dla parametrów numerkowych. Tytaj jest używana jest zmienna {{Code|nazwa jednostki 2}} do wygenerowania ostatecznego wyniku, bo jak można zauważyć, parametry przestrzenne wskazują na przestrzeń główną, a nazwy jednostek już nie. Przykłady w wikikodzie: * {{Code|{{m|Pudełko|Nazwa przedmiotowej przestrzeni nazw 2|numer jednostki{{=}}2}}}} → {{Tt|{{#invoke:Pudełko|Nazwa przedmiotowej przestrzeni nazw 2|numer jednostki=2}}}} * {{Code|{{m|Pudełko|Nazwa przedmiotowej przestrzeni nazw 2|Dyskusja szablonu|nazwa przestrzeni nazw i{{=}}Moja przestrzeń|numer jednostki{{=}}2}}}} → {{Tt|{{#invoke:Pudełko|Nazwa przedmiotowej przestrzeni nazw 2|Dyskusja szablonu|nazwa przestrzeni nazw i=Moja przestrzeń|numer jednostki=2}}}} * {{Code|{{m|Pudełko|Nazwa przedmiotowej przestrzeni nazw 2|nazwa przestrzeni nazw 2{{=}}Dyskusja|nazwa jednostki 2{{=}}Dyskusja szablonu:Strona|numer jednostki{{=}}2}}}} → {{Tt|{{#invoke:Pudełko|Nazwa przedmiotowej przestrzeni nazw 2|nazwa przestrzeni nazw 2=Dyskusja|nazwa jednostki 2=Dyskusja szablonu:Strona|numer jednostki=2}}}} * {{Code|{{m|Pudełko|Nazwa przedmiotowej przestrzeni nazw 2|nazwa przestrzeni nazw i{{=}}Dyskusja|nazwa jednostki 2{{=}}Dyskusja szablonu:Strona|numer jednostki{{=}}2}}}} → {{Tt|{{#invoke:Pudełko|Nazwa przedmiotowej przestrzeni nazw 2|nazwa przestrzeni nazw i=Dyskusja|nazwa jednostki 2=Dyskusja szablonu:Strona|numer jednostki=2}}}} * {{Code|{{m|Pudełko|Nazwa przedmiotowej przestrzeni nazw 2|Dyskusja szablonu|nazwa przestrzeni nazw{{=}}Dyskusja|nazwa jednostki 2{{=}}Wikibooks:Strona|numer jednostki{{=}}2}}}} → {{Tt|{{#invoke:Pudełko|Nazwa przedmiotowej przestrzeni nazw 2|Dyskusja szablonu|nazwa przestrzeni nazw=Dyskusja|nazwa jednostki 2=Dyskusja Wikibooks:Strona|numer jednostki=2}}}} Powyżej dla przykładu podano parametry nie w rodzicu w szablonie, tylko w dziecku, jeśli chodzi o parametry nazw przestrzeni nazw i nazw jednostek, ale ich się za to nie powinno podawać w tych ramach, tylko w szablonach, w których wywoływane są te ramki pudełek {{Code|{{m|Pudełko}}}}, ale tak tutaj tak zrobiono by było najłatwiej sprawdzić działanie tego typu funkcji. Analogicznie możemy podawać parametry typu jednostki, np.: wywołaniu modułowym {{Code|{{m|Pudełko|Nazwa przedmiotowej przestrzeni nazw 2|typ jednostki 2{{=}}Podręcznik|nazwa jednostki 2{{=}}Dyskusja szablonu:Strona|numer jednostki{{=}}2}}}} (ale wtedy jest brana przestrzeń nazw z nazwy jednostki), ale o tym więcej w rozdziałach {{Code|{{sr|#p["Przedmiotowy typ jednostki 2"](frame,i)|p=Pudełko}}}} w „{{sr|#Funkcje typu jednostki|p=Pudełko}}”, one definiują dane przestrzenie przedmiotowe, ale można użyć parametru dyskusji typu jednostki z wartością niepustą, pustą, czy nawet jej nie podamy, wtedy wyświetli się nazwa przestrzeni nazw przedmiotowej. Jeżeli typ jednostki wskazuje na przestrzeń nazw główną, wtedy się liczą parametry nazw jednostek. Typ jednostki nie ma takiej samej wartości dla przestrzeni przedmiotowej, co dyskusji. Również parametry typu jednostki nie powinno się podawać w dziecku w ramce, tylko w rodzicu w szablonie jako parametry, w którym ta ramka jest wywoływana, ale tutaj podano jedynie dla przykładu, jak najłatwiej sprawdzić działanie tych parametrów tej funkcji. Najpierw w funkcji nagłówku brane są parametry nazw przestrzeni nazw, a jeżeli ich nie ma, to parametry typu jednostki, a jeżeli nie ma lub parametry przestrzenne wskazują na przestrzeń główną, i nie ma nazwy jednostki, to generowane są nazwy tej funkcji na podstawie aktualnej strony. === {{Code|p["Nazwa przestrzeni nazw dyskusji 2"](frame,...)}} === Funkcja pisze nazwę przestrzeni nazw dyskusji jakikolwiek nazwy przestrzeni nazw (tzn. nazwę dyskusji nazwy przestrzenie nazw, czyli nie przedmiotowej, zamieniana jest na nią samą, czyli identyfikator przestrzeni się nie zmienia, a przedmiotową, nie dyskusji, przekształca się na dyskusji jej odpowiadającą, czyli w tym przypadku identyfikator przestrzeni zwiększa się o numer więcej), według, i nie zawsze tylko, podanej w zmiennej {{Code|nazwa przestrzeni nazw}} dla pozycja bazowej w podanych parametrach szablonu rodzicu ramki dziecka, lub dla innej pozycji należy parametr podawać w formie {{Code|nazwa przestrzeni nazw 1}}, {{Code|nazwa przestrzeni nazw 2}}, {{Code|nazwa przestrzeni nazw 3}},..., lub te parametry można podać w postaci ogólnej {{Code|nazwa przestrzeni nazw i}}. W tej funkcji trzeba też podawać parametry nazwy jednostek {{Code|nazwa jednostki}}, {{Code|nazwa jednostki 1}}, {{Code|nazwa jednostki 2}}, {{Code|nazwa jednostki 3}},... Parametry podaje się w parametrach rodzica wywołania tej funkcji {{Code|{{m|Pudełko|Nazwa przestrzeni nazw dyskusji 2}}}} (ale ich nie trzeba podawać w dziecku, ale można) i w parametrach dziecka, jeśli chodzi o zmienną {{Code|numer jednostki}}, czyli np.: {{Code|{{m|Pudełko|Nazwa przestrzeni nazw dyskusji 2|numer jednostki{{=}}<jakaś liczba całkowita dodatnia>}}}}. Te parametry przestrzenne zamiast w rodzicu w szablonie można podać w ramce dziecka, wtedy parametry dziecka mają pierwszeństwo. Przestrzeń nazw z parametrów nazw przestrzennych po przekształceniu może odpowiadać wartości przestrzeni głównej, to wtedy odpowiednia przestrzeń nazw z parametru nazwy jednostki się liczy w tej funkcji, wtedy jest liczona nazwa przestrzeni nazw dyskusji z tego parametru. Gdy parametry przestrzenne lub typ jednostki w drugim podejściu nie wskazują na przestrzeń główną, to wtedy działanie tej funkcji jest podobne do {{Code|{{sr|#p["Nazwa dyskusji przestrzeni nazw"](frame,...)|p=Pudełko}}}}. Definicja skrótowa funkcji: <syntaxhighlight lang="lua"> p["Nazwa przestrzeni nazw dyskusji 2"]=function(frame,czy_uwzglednic_alternatywna_nazwe,i)...end; </syntaxhighlight> Wtedy ciało funkcji tej, czyli jego definicja w środku, jest: <syntaxhighlight lang="lua"> local pudelko_pomocne_modul=require("Module:Pudełko/Pomocne"); return pudelko_pomocne_modul.Nazwa_przestrzeni_nazw_przedmiotowa_dyskusji_2(frame,czy_uwzglednic_alternatywna_nazwe,i,"dyskusja"); </syntaxhighlight> Parametry funkcji: * {{Code|frame}} - tablica ramki tablicy transportu, * {{Code|czy_uwzglednic_alternatywna_nazwe}} - czy ma uwzględniać nazwę przestrzeni nazw domyślną szablonu, dostępne wartości: {{Code|false}}, w której nazwa domyślna nie jest uwzględniana wtedy, oraz {{Code|nil}} i {{Code|true}}, które oznaczają to samo, w tym jeżeli ona jest uwzględniana, wtedy jest brany parametr pierwszy dziecka, który musi istnieć przy takiej wartości tego parametru, tzn. {{Code|{{m|Pudełko|Nazwa przestrzeni nazw dyskusji 2|Szablon}}}}, nazwa domyślna zostanie zamieniona na dyskusji, a jeżeli jest już taka, to nie ma takiej zamiany, a jeśli nazwa uzyskana nazwy przestrzeni nazw jest w takim przypadku błędna, to brany jest ten element, a jeżeli nazwa domyślna jest błędna, czyli {{Code|{{m|Pudełko|Nazwa przestrzeni nazw dyskusji 2|Moja przestrzeń}}}}, wtedy funkcja zwraca stan błędu {{Code|(błąd)}}. * {{Code|i}} - numer zmiennej nazwy przestrzeni nazw. Funkcja wykorzystuje {{Code|{{sr|#p.Nazwa_przestrzeni_nazw_przedmiotowa_dyskusji_2(frame,...)|p=Pudełko/Pomocne}}}} do wyznaczania ogólnego nazwy przestrzeni nazw dla pozycji bazowej i numerkowej, tzn. dla pozycji: jeden, dwa, trzy,..., itd, i ich ogólnej. Parametr ramki tablicy transportu rodzica szablonu: * {{Code|nazwa przestrzeni nazw}}, {{Code|nazwa przestrzeni nazw 1}}, {{Code|nazwa przestrzeni nazw 2}}, {{Code|nazwa przestrzeni nazw 3}},..., {{Code|nazwa przestrzeni nazw i}} - nazwy przestrzeni nazw dla pozycji bazowej oraz zwykłej i ogólnej numerkowej, * {{Code|nazwa jednostki}}, {{Code|nazwa jednostki 1}}, {{Code|nazwa jednostki 2}}, {{Code|nazwa jednostki 3}},... - nazwy jednostek dla pozycji bazowej i numerkowej, * {{Code|typ jednostki}}, {{Code|typ jednostki 1}}, {{Code|typ jednostki 2}}, {{Code|typ jednostki 3}},..., {{Code|typ jednostki i}} - typy jednostek, którym odpowiadają pewne przestrzenie przedmiotowe, dla pozycji bazowej, numerkowej i ogólnej. Parametry ramki tablicy transportu dziecka: * Parametry dziecka są takie same jak rodzica dla funkcji pudełkowej plus tu wymienione, * {{Code|numer jednostki}} - jak parametr {{Code|i}} nie został ustawiony, to wtedy liczy się ta zmienna. Przykłady: <syntaxhighlight lang="mediawiki"> {{Nazwa szablonu|nazwa przestrzeni nazw=Wikibooks|nazwa przestrzeni nazw 1=Szablon|nazwa przestrzeni nazw i=|nazwa jednostki 2=Wikibooks:Strona}} </syntaxhighlight> W dziecku powiedzmy jest wywołanie, i szukamy nazwy przestrzeni nazw o numerze dwa, która została podana, ale istnieje za to jej wersji ogólna {{Code|nazwa przestrzeni nazw i}} i domyślna {{Code|nazwa przestrzeni nazw}}, ale wtedy dla tego numerkowego liczy się to ogólne z {{Code| i}}, a ponieważ ta nazwa jest pusta, więc będziemy liczyli nazwę przestrzeni nazw z {{Code|nazwa jednostki 2}}: <syntaxhighlight lang="mediawiki"> {{#invoke:Pudełko|Nazwa przestrzeni nazw dyskusji 2|numer jednostki=2}} </syntaxhighlight> Na podstawie powyższego przykładu otrzymamy wynik o schemacie, nie wyniku, bo tam nie ma zmiennej {{Code|nazwa przestrzeni nazw 1}}, ale jest {{Code|nazwa przestrzeni nazw i}}: <syntaxhighlight lang="mediawiki"> <!-- Ale nie "nazwa przestrzeni nazw 2", bo jej nie ma, ale za to istnieje "nazwa przestrzeni nazw i"; --> <!-- nazwa przestrzeni nazw 2=nazwa przestrzeni nazw i="", a nazwa jednostki 2="Wikibooks:Strona"; --> <!-- Czyli wynik: --> Dyskusja Wikibooks <!-- Widzimy, że wygenerowała się nazwa przestrzeni nazw, którą jest przestrzeń nieprogramowa, ale dyskusji projektu, wychodząca z nazwy jednostek w tym przypadku z "nazwa jednostki 2"; --> </syntaxhighlight> Nie jest brana w tym powyższym przykładzie zmienna {{Code|nazwa przestrzeni nazw}}, bo jej nie ma, ale za to jest {{Code|nazwa przestrzeni nazw i}}, bo ona występuje jako parametr domyślny ogólny dla parametrów numerkowych. Tytaj jest używana jest zmienna {{Code|nazwa jednostki 2}} do wygenerowania ostatecznego wyniku, bo jak można zauważyć, parametry przestrzenne wskazują na przestrzeń główną, a nazwy jednostek już nie. Przykłady w wikikodzie: * {{Code|{{m|Pudełko|Nazwa przestrzeni nazw dyskusji 2|numer jednostki{{=}}2}}}} → {{Tt|{{#invoke:Pudełko|Nazwa przestrzeni nazw dyskusji 2|numer jednostki=2}}}} * {{Code|{{m|Pudełko|Nazwa przestrzeni nazw dyskusji 2|Szablon|nazwa przestrzeni nazw i{{=}}Moja przestrzeń|numer jednostki{{=}}2}}}} → {{Tt|{{#invoke:Pudełko|Nazwa przestrzeni nazw dyskusji 2|Szablon|nazwa przestrzeni nazw i=Moja przestrzeń|numer jednostki=2}}}} * {{Code|{{m|Pudełko|Nazwa przestrzeni nazw dyskusji 2|nazwa przestrzeni nazw 2{{=}}|nazwa jednostki 2{{=}}Szablon:Strona|numer jednostki{{=}}2}}}} → {{Tt|{{#invoke:Pudełko|Nazwa przestrzeni nazw dyskusji 2|nazwa przestrzeni nazw 2=|nazwa jednostki 2=Szablon:Strona|numer jednostki=2}}}} * {{Code|{{m|Pudełko|Nazwa przestrzeni nazw dyskusji 2|nazwa przestrzeni nazw i{{=}}|nazwa jednostki 2{{=}}Szablon:Strona|numer jednostki{{=}}2}}}} → {{Tt|{{#invoke:Pudełko|Nazwa przestrzeni nazw dyskusji 2|nazwa przestrzeni nazw i=|nazwa jednostki 2=Szablon:Strona|numer jednostki=2}}}} * {{Code|{{m|Pudełko|Nazwa przestrzeni nazw dyskusji 2|Szablon|nazwa przestrzeni nazw{{=}}|nazwa jednostki 2{{=}}Wikibooks:Strona|numer jednostki{{=}}2}}}} → {{Tt|{{#invoke:Pudełko|Nazwa przestrzeni nazw dyskusji 2|Szablon|nazwa przestrzeni nazw=|nazwa jednostki 2=Dyskusja Wikibooks:Strona|numer jednostki=2}}}} Powyżej dla przykładu podano parametry nie w rodzicu w szablonie, tylko w dziecku, jeśli chodzi o parametry nazw przestrzeni nazw i nazw jednostek, ale ich się za to nie powinno podawać w tych ramach, tylko w szablonach, w których wywoływane są te ramki pudełek {{Code|{{m|Pudełko}}}}, ale tak tutaj tak zrobiono by było najłatwiej sprawdzić działanie tego typu funkcji. Analogicznie możemy podawać parametry typu jednostki, np.: wywołaniu modułowym {{Code|{{m|Pudełko|Nazwa przestrzeni nazw dyskusji 2|typ jednostki 2{{=}}Podręcznik|nazwa jednostki 2{{=}}Szablon:Strona|numer jednostki{{=}}2}}}} (ale wtedy jest brana przestrzeń nazw z nazwy jednostki), ale o tym więcej w rozdziałach {{Code|{{sr|#p["Dyskusyjny typ jednostki 3"](frame,i)|p=Pudełko}}}} w „{{sr|#Funkcje typu jednostki|p=Pudełko}}”, one definiują dane przestrzenie dyskusji, ale można użyć parametru dyskusji typu jednostki z obojętnie jaką wartością niepustą, czy pustą, czy nawet jej nie podamy, wtedy wyświetli się nazwa przestrzeni nazw dyskusji. Jeżeli typ jednostki wskazuje na przestrzeń nazw główną, wtedy się liczą parametry nazw jednostek. Typ jednostki nie ma takiej samej wartości dla przestrzeni przedmiotowej, co dyskusji. Również parametry typu jednostki nie powinno się podawać w dziecku w ramce, tylko w rodzicu w szablonie jako parametry, w którym ta ramka jest wywoływana, ale tutaj podano jedynie dla przykładu, jak najłatwiej sprawdzić działanie tych parametrów tej funkcji. Najpierw w funkcji nagłówku brane są parametry nazw przestrzeni nazw, a jeżeli ich nie ma, to parametry typu jednostki, a jeżeli nie ma lub parametry przestrzenne wskazują na przestrzeń główną, i nie ma nazwy jednostki, to generowane są nazwy tej funkcji na podstawie aktualnej strony. == Funkcje pełnych nazw jednostki == === {{Code|p["Pełna nazwa dyskusji jednostki"](frame,i)}} === === {{Code|p["Pełna nazwa przedmiotowa jednostki"](frame,i)}} === === {{Code|p["Pełna nazwa jednostki"](frame,i)}} === == Funkcje pełnych nazw jednostki drugiej wersji == === {{Code|p["Pełna nazwa dyskusji jednostki 2"](frame,i)}} === === {{Code|p["Pełna nazwa przedmiotowa jednostki 2"](frame,i)}} === === {{Code|p["Pełna nazwa jednostki 2"](frame,i)}} === == Funkcje pełnych nazw jednostki trzeciej wersji == === {{Code|p["Pełna nazwa dyskusji jednostki 3"](frame,i)}} === === {{Code|p["Pełna nazwa przedmiotowa jednostki 3"](frame,i)}} === === {{Code|p["Pełna nazwa jednostki 3"](frame,i)}} === == Funkcje nazw jednostki == === {{Code|p["Nazwa jednostki"](frame,i)}} === == Funkcje nazw jednostki drugiej wersji == === {{Code|p["Nazwa jednostki 2"](frame,i)}} === === {{Code|p["Nazwa przedmiotowa jednostki 2"](frame,i)}} === === {{Code|p["Nazwa dyskusji jednostki 2"](frame,i)}} === == Funkcje nazw przestrzeni nazw trzeciej wersji == === {{Code|p["Nazwa przestrzeni nazw 3"](frame,i)}} === Funkcja pisze nazwę przestrzeni nazw, niezależnie, czy to jest przedmiotowa, czy dyskusji, według, i nie zawsze tylko, podanej w zmiennej {{Code|nazwa przestrzeni nazw}} dla pozycja bazowej w podanych parametrach szablonu rodzicu ramki dziecka, lub dla innej pozycji należy parametr podawać w formie {{Code|nazwa przestrzeni nazw 1}}, {{Code|Nazwa przestrzeni nazw 3}}, {{Code|nazwa przestrzeni nazw 3}},..., lub te parametry można podać w postaci ogólnej {{Code|nazwa przestrzeni nazw i}}. W tej funkcji trzeba też podawać parametry nazwy jednostek {{Code|nazwa jednostki}}, {{Code|nazwa jednostki 1}}, {{Code|nazwa jednostki 2}}, {{Code|nazwa jednostki 3}},... Parametry podaje się w parametrach rodzica wywołania tej funkcji {{Code|{{m|Pudełko|Nazwa przestrzeni nazw 3}}}} (ale ich nie trzeba podawać w dziecku, ale można) i w parametrach dziecka, jeśli chodzi o zmienną {{Code|numer jednostki}}, czyli np.: {{Code|{{m|Pudełko|Nazwa przestrzeni nazw 3|numer jednostki{{=}}<jakaś liczba całkowita dodatnia>}}}}. Te parametry przestrzenne zamiast w rodzicu w szablonie można podać w ramce dziecka, wtedy parametry dziecka mają pierwszeństwo. Przestrzeń nazw z parametrów nazw przestrzennych bazowych (bez numerka) może odpowiadać wartości przestrzeni głównej, to wtedy odpowiednia przestrzeń nazw z parametru nazwy jednostki się nie liczy w tej funkcji, aby się liczyła należy użyć funkcji {{Code|{{sr|#p["Nazwa przestrzeni nazw 2"](frame,...)|p=Pudełko}}}}. W tym przypadku funkcja działa jak {{Code|{{sr|#p["Nazwa przestrzeni nazw"](frame,...)|p=Pudełko}}}}. Przestrzeń nazw z parametrów nazw przestrzennych numerkowych może odpowiadać wartości przestrzeni głównej, to wtedy odpowiednia przestrzeń nazw z parametru nazwy jednostki się liczy w tej funkcji, wtedy jest liczona nazwa przestrzeni nazw z tego parametru. Gdy parametry przestrzenne lub typ jednostki w drugim podejściu nie wskazują na przestrzeń główną, to wtedy działanie tej funkcji jest podobne do {{Code|{{sr|#p["Nazwa przestrzeni nazw 2"](frame,...)|p=Pudełko}}}}. Definicja skrótowa funkcji: <syntaxhighlight lang="lua"> p["Nazwa przestrzeni nazw 3"]=function(frame,czy_uwzglednic_alternatywna_nazwe,i)...end; </syntaxhighlight> Wtedy ciało funkcji tej, czyli jego definicja w środku, jest: <syntaxhighlight lang="lua"> -- Jest liczony numer parametru nazwy przestrzeni nazw, domyslnie chodzi tu o numer bazowy parametrów przestrzennych; local numer_jednostki=i or frame.args["numer jednostki"]; local liczba_numeru_jednostki=((numer_jednostki)and(tonumber(numer_jednostki)) or 0); local pudelko_pomocne_modul=require("Module:Pudełko/Pomocne"); -- Liczy nazwę przestrzeni nazw dyskusji na podstawie podanych parametrów; return pudelko_pomocne_modul.Uzyskanie_nazw_jednostki(frame,0,liczba_numeru_jednostki,nil,2); </syntaxhighlight> Parametry funkcji: * {{Code|frame}} - tablica ramki tablicy transportu, * {{Code|czy_uwzglednic_alternatywna_nazwe}} - czy ma uwzględniać nazwę przestrzeni nazw domyślną szablonu, dostępne wartości: {{Code|false}}, w której nazwa domyślna nie jest uwzględniana wtedy, oraz {{Code|nil}} i {{Code|true}}, które oznaczają to samo, w tym jeżeli ona jest uwzględniana, wtedy jest brany parametr pierwszy dziecka, który musi istnieć przy takiej wartości tego parametru, tzn. {{Code|{{m|Pudełko|Nazwa przestrzeni nazw 3|Szablon}}}}, a jeśli nazwa uzyskana nazwy przestrzeni nazw jest w takim przypadku błędna, to brany jest ten element, a jeżeli nazwa domyślna jest błędna, czyli {{Code|{{m|Pudełko|Nazwa przestrzeni nazw 3|Moja przestrzeń}}}}, wtedy funkcja zwraca stan błędu {{Code|(błąd)}}. * {{Code|i}} - numer zmiennej nazwy przestrzeni nazw. Funkcja wykorzystuje {{Code|{{sr|#p.Uzyskanie_nazw_jednostki(frame,...)|p=Pudełko/Pomocne}}}} do wyznaczania ogólnego nazwy przestrzeni nazw dla pozycji bazowej i numerkowej, tzn. dla pozycji: jeden, dwa, trzy,..., itd, i ich ogólnej. Parametr ramki tablicy transportu rodzica szablonu: * {{Code|nazwa przestrzeni nazw}}, {{Code|nazwa przestrzeni nazw 1}}, {{Code|Nazwa przestrzeni nazw 3}}, {{Code|nazwa przestrzeni nazw 3}},..., {{Code|nazwa przestrzeni nazw i}} - nazwy przestrzeni nazw dla pozycji bazowej oraz zwykłej i ogólnej numerkowej, * {{Code|nazwa jednostki}}, {{Code|nazwa jednostki 1}}, {{Code|nazwa jednostki 2}}, {{Code|nazwa jednostki 3}},... - nazwy jednostek dla pozycji bazowej i numerkowej, * {{Code|typ jednostki}}, {{Code|typ jednostki 1}}, {{Code|typ jednostki 2}}, {{Code|typ jednostki 3}},..., {{Code|typ jednostki i}} - typy jednostek, którym odpowiadają pewne przestrzenie przedmiotowe, dla pozycji bazowej, numerkowej i ogólnej, ** {{Code|dyskusja typu jednostki}}, {{Code|dyskusja typu jednostki 1}}, {{Code|dyskusja typ jednostki 2}}, {{Code|dyskusja typ jednostki 3}},..., {{Code|dyskusja typ jednostki i}} - czy dany typ jednostki ma przedstawiać, jeśli niepusta, przestrzeń dyskusji dla pozycji bazowej, numerkowej i ogólnej. Parametry ramki tablicy transportu dziecka: * Parametry dziecka są takie same jak rodzica dla funkcji pudełkowej plus tu wymienione, * {{Code|numer jednostki}} - jak parametr {{Code|i}} nie został ustawiony, to wtedy liczy się ta zmienna. Przykłady: <syntaxhighlight lang="mediawiki"> {{Nazwa szablonu 1|nazwa przestrzeni nazw=Wikibooks|nazwa przestrzeni nazw=|nazwa przestrzeni nazw i=|nazwa jednostki=Szablon:Strona}} ---- {{Nazwa szablonu 2|nazwa przestrzeni nazw=Wikibooks|nazwa przestrzeni nazw 1=Szablon|nazwa przestrzeni nazw i=|nazwa jednostki 2=Wikibooks:Strona}} </syntaxhighlight> W pierwszym wywołaniu {{Code|nazwa przestrzeni nazw}} jest puste, ale dla tego bazowego (bez numerka) szukamy przestrzeni nazw, a więc ta nazwa jest ostateczna. ---- W drugim wywołaniu w dziecku powiedzmy jest wywołanie, i szukamy nazwy przestrzeni nazw o numerze dwa, która została podana, ale istnieje za to jej wersji ogólna {{Code|nazwa przestrzeni nazw i}} i domyślna {{Code|nazwa przestrzeni nazw}}, ale wtedy dla tego numerkowego liczy się to ogólne z {{Code| i}}, a ponieważ ta nazwa jest pusta, więc będziemy liczyli nazwę przestrzeni nazw z {{Code|nazwa jednostki 2}}. Odpowiadająca powyższemu kodowi, powiedzmy wikikod, według ich zawartości, przedstawia się: <syntaxhighlight lang="mediawiki"> {{#invoke:Pudełko|Nazwa przestrzeni nazw 3}} ---- {{#invoke:Pudełko|Nazwa przestrzeni nazw 3|numer jednostki=2}} </syntaxhighlight> Na podstawie powyższego przykładu otrzymamy wynik o schemacie, nie wyniku, bo tam nie ma zmiennej {{Code|nazwa przestrzeni nazw 1}}, ale jest {{Code|nazwa przestrzeni nazw i}}: <syntaxhighlight lang="mediawiki"> <!-- nazwa przestrzeni nazw=""; --> <!-- Czyli wynik: --> <!-- wynik pusty --> <!-- Widzimy, że wygenerowała się nazwa przestrzeni nazw, którą jest przestrzeń nazw główna, jest ciągiem pustym: ""; --> ---- <!-- Ale nie "nazwa przestrzeni nazw 2", bo jej nie ma, ale za to istnieje "nazwa przestrzeni nazw i"; --> <!-- nazwa przestrzeni nazw 2=nazwa przestrzeni nazw i="", a nazwa jednostki 2="Wikibooks:Strona"; --> <!-- Czyli wynik: --> Wikibooks <!-- Widzimy, że wygenerowała się nazwa przestrzeni nazw, którą jest przestrzeń nieprogramowa, ale projektu, wychodząca z nazwy jednostek w tym przypadku z "nazwa jednostki 2"; --> </syntaxhighlight> Dla parametrów numerkowych nie jest brana w tym powyższym przykładzie zmienna {{Code|nazwa przestrzeni nazw 2}}, bo jej nie ma, ale za to jest {{Code|nazwa przestrzeni nazw i}}, bo ona występuje jako parametr domyślny ogólny dla parametrów numerkowych. Tytaj jest używana jest zmienna {{Code|nazwa jednostki 2}} do wygenerowania ostatecznego wyniku, bo jak można zauważyć, parametry przestrzenne wskazują na przestrzeń główną, a nazwy jednostek już nie. Dla parametrów bazowych mamy zmienną {{Code|nazwa przestrzeni nazw}}, ona jest pusta, więc to zostanie wzięte do ostatecznego wyniku. Przykłady w wikikodzie: * {{Code|{{m|Pudełko|Nazwa przestrzeni nazw 3|Szablon|nazwa przestrzeni nazw{{=}}Moja przestrzeń|nazwa jednostki{{=}}Wikibooks:Strona}}}} → {{Tt|{{#invoke:Pudełko|Nazwa przestrzeni nazw 3|Szablon|nazwa przestrzeni nazw=Moja przestrzeń|nazwa jednostki=Wikibooks:Szablon}}}} * {{Code|{{m|Pudełko|Nazwa przestrzeni nazw 3|Szablon|nazwa przestrzeni nazw 2{{=}}Moja przestrzeń|nazwa jednostki 2{{=}}Wikibooks:Strona}|numer jednostki{{=}}2}}}} → {{Tt|{{#invoke:Pudełko|Nazwa przestrzeni nazw 3|Szablon|nazwa przestrzeni nazw 2=Moja przestrzeń|nazwa jednostki 2=Wikibooks:Szablon|numer jednostki=2}}}} * {{Code|{{m|Pudełko|Nazwa przestrzeni nazw 3|nazwa przestrzeni nazw{{=}}|nazwa jednostki{{=}}Wikibooks:Strona}}}} → {{Tt|{{#invoke:Pudełko|Nazwa przestrzeni nazw 3|nazwa przestrzeni nazw=|nazwa jednostki=Wikibooks:Szablon}}}} * {{Code|{{m|Pudełko|Nazwa przestrzeni nazw 3|nazwa przestrzeni nazw 2{{=}}|nazwa jednostki 2{{=}}Wikibooks:Strona|numer jednostki{{=}}2}}}} → {{Tt|{{#invoke:Pudełko|Nazwa przestrzeni nazw 3|nazwa przestrzeni nazw 2=|nazwa jednostki 2=Wikibooks:Szablon|numer jednostki=2}}}} Powyżej dla przykładu podano parametry nie w rodzicu w szablonie, tylko w dziecku, jeśli chodzi o parametry nazw przestrzeni nazw i nazw jednostek, ale ich się za to nie powinno podawać w tych ramach, tylko w szablonach, w których wywoływane są te ramki pudełek {{Code|{{m|Pudełko}}}}, ale tak tutaj tak zrobiono by było najłatwiej sprawdzić działanie tego typu funkcji. Analogicznie możemy podawać parametry typu jednostki, np.: wywołaniu modułowym {{Code|{{m|Pudełko|Nazwa przestrzeni nazw 3|typ jednostki 2{{=}}Podręcznik|nazwa jednostki 2{{=}}Szablon:Strona|numer jednostki{{=}}2}}}} (ale wtedy jest brana przestrzeń nazw z nazwy jednostki), ale o tym więcej w rozdziałach {{Code|{{sr|#p["Typ jednostki 3"](frame,i)|p=Pudełko}}}} w „{{sr|#Funkcje typu jednostki|p=Pudełko}}”, one definiują dane przestrzenie przedmiotowe lub dyskusji, ale można lub nie użyć parametru dyskusji typu jednostki z wartością niepustą, wtedy wyświetli się nazwa przestrzeni nazw dyskusji. Typ jednostki nie ma takiej samej wartości dla przestrzeni przedmiotowej, co dyskusji. Również parametry typu jednostki nie powinno się podawać w dziecku w ramce, tylko w rodzicu w szablonie jako parametry, w którym ta ramka jest wywoływana, ale tutaj podano jedynie dla przykładu, jak najłatwiej sprawdzić działanie tych parametrów tej funkcji. Najpierw w funkcji nagłówku brane są parametry nazw przestrzeni nazw, a jeżeli ich nie ma, to parametry typu jednostki, a jeżeli nie ma lub parametry przestrzenne wskazują na przestrzeń główną, i nie ma nazwy jednostki, to generowane są nazwy tej funkcji na podstawie aktualnej strony. === {{Code|p["Nazwa przedmiotowej przestrzeni nazw 3"](frame,i)}} === Funkcja pisze przedmiotową nazwę przestrzeni nazw jakikolwiek nazwy przestrzeni nazw (tzn. nazwę przedmiotową nazwy przestrzenie nazw, czyli nie dyskusji, zamieniana jest na nią samą, czyli identyfikator przestrzeni się nie zmienia, a dyskusji, nie przedmiotową, przekształca się na przedmiotową jej odpowiadającą, czyli w tym przypadku identyfikator przestrzeni zmniejsza się o numer mniej), według podanej w zmiennej {{Code|nazwa przestrzeni nazw}} dla pozycja bazowej w podanych parametrach szablonu rodzicu ramki dziecka, lub dla innej pozycji należy parametr podawać w formie {{Code|nazwa przestrzeni nazw 1}}, {{Code|nazwa przestrzeni nazw 2}}, {{Code|nazwa przestrzeni nazw 3}},..., lub te parametry można podać w postaci ogólnej {{Code|nazwa przestrzeni nazw i}}. Parametry podaje się w parametrach rodzica wywołania tej funkcji {{Code|{{m|Pudełko|Nazwa przedmiotowej przestrzeni nazw 3}}}} (ale ich nie trzeba podawać w dziecku, ale można) i w parametrach dziecka, jeśli chodzi o zmienną {{Code|numer jednostki}}, czyli np.: {{Code|{{m|Pudełko|Nazwa przedmiotowej przestrzeni nazw 3|numer jednostki{{=}}<jakaś liczba całkowita dodatnia>}}}}. Te parametry przestrzenne zamiast w rodzicu w szablonie można podać w ramce dziecka, wtedy parametry dziecka mają pierwszeństwo. Parametry przestrzenne mogą mogą być podane w postaci przestrzeni przedmiotowej lub dyskusji, ale ta funkcja zawsze ją zamienia na przedmiotową. Przestrzeń nazw z parametrów nazw przestrzennych bazowych (bez numerka) może odpowiadać wartości przestrzeni głównej, to wtedy odpowiednia przestrzeń nazw z parametru nazwy jednostki się nie liczy w tej funkcji, aby się liczyła należy użyć funkcji {{Code|{{sr|#p["Nazwa przedmiotowej przestrzeni nazw 2"](frame,...)|p=Pudełko}}}}. W tym przypadku funkcja działa jak {{Code|{{sr|#p["Nazwa przedmiotowej przestrzeni nazw"](frame,...)|p=Pudełko}}}}. Przestrzeń nazw z parametrów nazw przestrzennych numerkowych może odpowiadać wartości przestrzeni głównej, to wtedy odpowiednia przestrzeń nazw z parametru nazwy jednostki się liczy w tej funkcji, wtedy jest liczona nazwa przestrzeni nazw z tego parametru. Gdy parametry przestrzenne lub typ jednostki w drugim podejściu nie wskazują na przestrzeń główną, to wtedy działanie tej funkcji jest podobne do {{Code|{{sr|#p["Nazwa przedmiotowej przestrzeni nazw 2"](frame,...)|p=Pudełko}}}}. Definicja skrótowa funkcji: <syntaxhighlight lang="lua"> p["Nazwa przedmiotowej przestrzeni nazw 3"]=function(frame,czy_uwzglednic_alternatywna_nazwe,i)...end; </syntaxhighlight> Wtedy ciało funkcji tej, czyli jego definicja w środku, jest: <syntaxhighlight lang="lua"> -- Jest liczony numer parametru nazwy przestrzeni nazw, domyslnie chodzi tu o numer bazowy parametrów przestrzennych; local numer_jednostki=i or frame.args["numer jednostki"]; local liczba_numeru_jednostki=((numer_jednostki)and(tonumber(numer_jednostki)) or 0); local pudelko_pomocne_modul=require("Module:Pudełko/Pomocne"); -- Liczy nazwę przestrzeni nazw przedmiotową na podstawie podanych parametrów; return pudelko_pomocne_modul.Uzyskanie_nazw_jednostki(frame,1,liczba_numeru_jednostki,nil,1); </syntaxhighlight> Parametry funkcji: * {{Code|frame}} - tablica ramki tablicy transportu, * {{Code|czy_uwzglednic_alternatywna_nazwe}} - czy ma uwzględniać nazwę przestrzeni nazw domyślną szablonu, dostępne wartości: {{Code|false}}, w której nazwa domyślna nie jest uwzględniana wtedy, oraz {{Code|nil}} i {{Code|true}}, które oznaczają to samo, w tym jeżeli ona jest uwzględniana, wtedy jest brany parametr pierwszy dziecka, który musi istnieć przy takiej wartości tego parametru, tzn. {{Code|{{m|Pudełko|Nazwa przedmiotowej przestrzeni nazw 3|Dyskusja szablonu}}}} - ta nazwa domyślna zostanie zamieniona na przedmiotową, a jak ona by była przedmiotowa, to żadnej zamiany by nie było, a nazwa uzyskana z nazwy przestrzeni nazw z parametrów przestrzennych jest w takim przypadku błędna, to w takim razie brany jest ten parametr, a jeżeli ta nazwa domyślna jest błędna, czyli {{Code|{{m|Pudełko|Nazwa przedmiotowej przestrzeni nazw 3|Moja przestrzeń}}}}, wtedy funkcja zwraca stan błędu {{Code|(błąd)}}. * {{Code|i}} - numer zmiennej nazwy przestrzeni nazw. Funkcja wykorzystuje {{Code|{{sr|#p.Uzyskanie_nazw_jednostki(frame,...)|p=Pudełko/Pomocne}}}} do wyznaczania ogólnego nazwy przestrzeni nazw dla pozycji bazowej i numerkowej, tzn. dla pozycji: jeden, dwa, trzy,..., itd, i ich ogólnej. Parametr ramki tablicy transportu rodzica szablonu: * {{Code|nazwa przestrzeni nazw}}, {{Code|nazwa przestrzeni nazw 1}}, {{Code|nazwa przestrzeni nazw 2}}, {{Code|nazwa przestrzeni nazw 3}},..., {{Code|nazwa przestrzeni nazw i}} - nazwy przestrzeni nazw dla pozycji bazowej oraz zwykłej i ogólnej numerkowej, * {{Code|typ jednostki}}, {{Code|typ jednostki 1}}, {{Code|typ jednostki 2}}, {{Code|typ jednostki 3}},..., {{Code|typ jednostki i}} - typy jednostek, którym odpowiadają pewne przestrzenie przedmiotowe, dla pozycji bazowej, numerkowej i ogólnej. Parametry ramki tablicy transportu dziecka: * Parametry dziecka są takie same jak rodzica dla funkcji pudełkowej plus tu wymienione, * {{Code|numer jednostki}} - jak parametr {{Code|i}} nie został ustawiony, to wtedy liczy się ta zmienna. Przykłady: <syntaxhighlight lang="mediawiki"> {{Nazwa szablonu 1|nazwa przestrzeni nazw=Wikibooks|nazwa przestrzeni nazw=|nazwa przestrzeni nazw i=|nazwa jednostki=Dyskusja Wikibooks:Strona}} ---- {{Nazwa szablonu 2|nazwa przestrzeni nazw=Wikibooks|nazwa przestrzeni nazw 1=Szablon|nazwa przestrzeni nazw i=|nazwa jednostki 2=Dyskusja Wikibooks:Strona}} </syntaxhighlight> W pierwszym wywołaniu {{Code|nazwa przestrzeni nazw}} jest puste, ale dla tego bazowego (bez numerka) szukamy przestrzeni nazw, a więc ta nazwa jest ostateczna. ---- W drugim wywołaniu w dziecku powiedzmy jest wywołanie, i szukamy nazwy przestrzeni nazw o numerze dwa, która została podana, ale istnieje za to jej wersji ogólna {{Code|nazwa przestrzeni nazw i}} i domyślna {{Code|nazwa przestrzeni nazw}}, ale wtedy dla tego numerkowego liczy się to ogólne z {{Code| i}}, a ponieważ ta nazwa jest pusta, więc będziemy liczyli nazwę przestrzeni nazw z {{Code|nazwa jednostki 2}}. Odpowiadająca powyższemu kodowi, powiedzmy wikikod, według ich zawartości, przedstawia się: <syntaxhighlight lang="mediawiki"> {{#invoke:Pudełko|Nazwa przedmiotowej przestrzeni nazw 3}} ---- {{#invoke:Pudełko|Nazwa przedmiotowej przestrzeni nazw 3|numer jednostki=2}} </syntaxhighlight> Na podstawie powyższego przykładu otrzymamy wynik o schemacie, nie wyniku, bo tam nie ma zmiennej {{Code|nazwa przestrzeni nazw 1}}, ale jest {{Code|nazwa przestrzeni nazw i}}: <syntaxhighlight lang="mediawiki"> <!-- nazwa przestrzeni nazw=""; --> <!-- Czyli wynik: --> <!-- wynik pusty --> <!-- Widzimy, że wygenerowała się nazwa przestrzeni nazw, którą jest przestrzeń nazw główna, jest ciągiem pustym: ""; --> ---- <!-- Ale nie "nazwa przestrzeni nazw 2", bo jej nie ma, ale za to istnieje "nazwa przestrzeni nazw i"; --> <!-- nazwa przestrzeni nazw 2=nazwa przestrzeni nazw i="", a nazwa jednostki 2="Dyskusja Wikibooks:Strona"; --> <!-- Czyli wynik: --> Wikibooks <!-- Widzimy, że wygenerowała się nazwa przestrzeni nazw, którą jest przestrzeń nieprogramowa, ale projektu, wychodząca z nazwy jednostek w tym przypadku z "nazwa jednostki 2"; --> </syntaxhighlight> Dla parametrów numerkowych nie jest brana w tym powyższym przykładzie zmienna {{Code|nazwa przestrzeni nazw 2}}, bo jej nie ma, ale za to jest {{Code|nazwa przestrzeni nazw i}}, bo ona występuje jako parametr domyślny ogólny dla parametrów numerkowych. Tytaj jest używana jest zmienna {{Code|nazwa jednostki 2}} do wygenerowania ostatecznego wyniku, bo jak można zauważyć, parametry przestrzenne wskazują na przestrzeń główną, a nazwy jednostek już nie. Dla parametrów bazowych mamy zmienną {{Code|nazwa przestrzeni nazw}}, ona jest pusta, więc to zostanie wzięte do ostatecznego wyniku. Przykłady w wikikodzie: * {{Code|{{m|Pudełko|Nazwa przedmiotowej przestrzeni nazw 3|Dyskusja szablonu|nazwa przestrzeni nazw{{=}}Moja przestrzeń|nazwa jednostki{{=}}Dyskusja Wikibooks:Strona}}}} → {{Tt|{{#invoke:Pudełko|Nazwa przedmiotowej przestrzeni nazw 3|Dyskusja szablonu|nazwa przestrzeni nazw=Moja przestrzeń||nazwa jednostki=Dyskusja Wikibooks:Szablon}}}} * {{Code|{{m|Pudełko|Nazwa przedmiotowej przestrzeni nazw 3|Dyskusja szablonu|nazwa przestrzeni nazw 2{{=}}Moja przestrzeń|nazwa jednostki 2{{=}}Dyskusja Wikibooks:Strona|numer jednostki{{=}}2}}}} → {{Tt|{{#invoke:Pudełko|Nazwa przedmiotowej przestrzeni nazw 3|Dyskusja szablonu|nazwa przestrzeni nazw 2=Moja przestrzeń||nazwa jednostki 2=Dyskusja Wikibooks:Szablon|numer jednostki=2}}}} * {{Code|{{m|Pudełko|Nazwa przedmiotowej przestrzeni nazw 3|nazwa przestrzeni nazw{{=}}|nazwa jednostki{{=}}Dyskusja Wikibooks:Strona}}}} → {{Tt|{{#invoke:Pudełko|Nazwa przedmiotowej przestrzeni nazw 3|nazwa przestrzeni nazw=|nazwa jednostki=Dyskusja Wikibooks:Szablon}}}} * {{Code|{{m|Pudełko|Nazwa przedmiotowej przestrzeni nazw 3|nazwa przestrzeni nazw 2{{=}}|nazwa jednostki 2{{=}}Dyskusja Wikibooks:Strona|numer jednostki{{=}}2}}}} → {{Tt|{{#invoke:Pudełko|Nazwa przedmiotowej przestrzeni nazw 3|nazwa przestrzeni nazw 2=|nazwa jednostki 2=Dyskusja Wikibooks:Szablon|numer jednostki=2}}}} Powyżej dla przykładu podano parametry nie w rodzicu w szablonie, tylko w dziecku, jeśli chodzi o parametry nazw przestrzeni nazw, ale ich się za to nie powinno podawać w tych ramach, tylko w szablonach, w których wywoływane są te ramki pudełek {{Code|{{m|Pudełko}}}}, ale tak tutaj tak zrobiono by było najłatwiej sprawdzić działanie tego typu funkcji. Analogicznie możemy podawać parametry typu jednostki, np.: wywołaniu modułowym {{Code|{{m|Pudełko|Nazwa przedmiotowej przestrzeni nazw 3|typ jednostki 2{{=}}strona szablonu|numer jednostki{{=}}2}}}}, ale o tym więcej w rozdziałach {{Code|{{sr|#p["Przedmiotowy typ jednostki 3"](frame,i)|p=Pudełko}}}} w „{{sr|#Funkcje typu jednostki|p=Pudełko}}”, one definiują dane przestrzeni przedmiotowe, ale wtedy ta sama nazwa przestrzeni nazw reprezentowana przez {{Parametr|typ jednostki 2|strona szablonu}}, jest zamieniana na to samo, lepiej jest tutaj używać parametrów przestrzennych nazw niż typu jednostki. Tutaj parametr dyskusji typu jednostki bazowy i numerkowy ogólny, czy szczegółowy, nie gra roli, bo nawet, gdy wygenerujemy nazwę przestrzeni dyskusji za pomoca tego parametru, to i tak otrzymamy na samym końcu jego nazwę przedmiotową. Jeżeli typ jednostki bazowy wskazuje na przestrzeń nazw główną, wtedy się nie liczą parametry nazw jednostek, a w przypadku numerkowego, wtedy się liczy. Typ jednostki nie ma takiej samej wartości dla przestrzeni przedmiotowej, co dyskusji. Również parametry typu jednostki nie powinno się podawać w dziecku w ramce, tylko w rodzicu w szablonie jako parametry, w którym ta ramka jest wywoływana, ale tutaj podano jedynie dla przykładu, jak najłatwiej sprawdzić działanie tych parametrów tej funkcji. Najpierw w funkcji nagłówku brane są parametry nazw przestrzeni nazw, a jeżeli ich nie ma, to parametry typu jednostki, a jeżeli nie ma, to generowane są nazwy na podstawie aktualnego modułu. === {{Code|p["Nazwa przestrzeni nazw dyskusji 3"](frame,i)}} === Funkcja pisze nazwę przestrzeni nazw dyskusji jakikolwiek nazwy przestrzeni nazw (tzn. nazwę dyskusji nazwy przestrzenie nazw, czyli nie przedmiotowej, zamieniana jest na nią samą, czyli identyfikator przestrzeni się nie zmienia, a przedmiotową, nie dyskusji, przekształca się na dyskusji jej odpowiadającą, czyli w tym przypadku identyfikator przestrzeni zwiększa się o numer więcej), według, i nie zawsze tylko, podanej w zmiennej {{Code|nazwa przestrzeni nazw}} dla pozycja bazowej w podanych parametrach szablonu rodzicu ramki dziecka, lub dla innej pozycji należy parametr podawać w formie {{Code|nazwa przestrzeni nazw 1}}, {{Code|nazwa przestrzeni nazw 2}}, {{Code|nazwa przestrzeni nazw 3}},..., lub te parametry można podać w postaci ogólnej {{Code|nazwa przestrzeni nazw i}}. W tej funkcji trzeba też podawać parametry nazwy jednostek {{Code|nazwa jednostki}}, {{Code|nazwa jednostki 1}}, {{Code|nazwa jednostki 2}}, {{Code|nazwa jednostki 3}},... Parametry podaje się w parametrach rodzica wywołania tej funkcji {{Code|{{m|Pudełko|Nazwa przestrzeni nazw dyskusji 3}}}} (ale ich nie trzeba podawać w dziecku, ale można) i w parametrach dziecka, jeśli chodzi o zmienną {{Code|numer jednostki}}, czyli np.: {{Code|{{m|Pudełko|Nazwa przestrzeni nazw dyskusji 3|numer jednostki{{=}}<jakaś liczba całkowita dodatnia>}}}}. Te parametry przestrzenne zamiast w rodzicu w szablonie można podać w ramce dziecka, wtedy parametry dziecka mają pierwszeństwo. Przestrzeń nazw z parametrów nazw przestrzennych bazowych (bez numerka) może odpowiadać wartości przestrzeni głównej, to wtedy odpowiednia przestrzeń nazw z parametru nazwy jednostki się nie liczy w tej funkcji, aby się liczyła należy użyć funkcji {{Code|{{sr|#p["Nazwa przestrzeni nazw dyskusji 2"](frame,...)|p=Pudełko}}}}. W tym przypadku funkcja działa jak {{Code|{{sr|#p["Nazwa przestrzeni nazw dyskusji"](frame,...)|p=Pudełko}}}}. Przestrzeń nazw z parametrów nazw przestrzennych numerkowych może odpowiadać wartości przestrzeni głównej, to wtedy odpowiednia przestrzeń nazw z parametru nazwy jednostki się liczy w tej funkcji, wtedy jest liczona nazwa przestrzeni nazw z tego parametru. Gdy parametry przestrzenne lub typ jednostki w drugim podejściu nie wskazują na przestrzeń główną, to wtedy działanie tej funkcji jest podobne do {{Code|{{sr|#p["Nazwa przestrzeni nazw dyskusji 2"](frame,...)|p=Pudełko}}}}. Definicja skrótowa funkcji: <syntaxhighlight lang="lua"> p["Nazwa przestrzeni nazw dyskusji 3"]=function(frame,czy_uwzglednic_alternatywna_nazwe,i)...end; </syntaxhighlight> Wtedy ciało funkcji tej, czyli jego definicja w środku, jest: <syntaxhighlight lang="lua"> -- Jest liczony numer parametru nazwy przestrzeni nazw, domyslnie chodzi tu o numer bazowy parametrów przestrzennych; local numer_jednostki=i or frame.args["numer jednostki"]; local liczba_numeru_jednostki=((numer_jednostki)and(tonumber(numer_jednostki)) or 0); local pudelko_pomocne_modul=require("Module:Pudełko/Pomocne"); -- Liczy nazwę przestrzeni nazw dyskusji na podstawie podanych parametrów; return pudelko_pomocne_modul.Uzyskanie_nazw_jednostki(frame,2,liczba_numeru_jednostki,nil,1); </syntaxhighlight> Parametry funkcji: * {{Code|frame}} - tablica ramki tablicy transportu, * {{Code|czy_uwzglednic_alternatywna_nazwe}} - czy ma uwzględniać nazwę przestrzeni nazw domyślną szablonu, dostępne wartości: {{Code|false}}, w której nazwa domyślna nie jest uwzględniana wtedy, oraz {{Code|nil}} i {{Code|true}}, które oznaczają to samo, w tym jeżeli ona jest uwzględniana, wtedy jest brany parametr pierwszy dziecka, który musi istnieć przy takiej wartości tego parametru, tzn. {{Code|{{m|Pudełko|Nazwa przestrzeni nazw dyskusji 3|Szablon}}}}, nazwa domyślna zostatnie zamieniona na dyskusji, a jeśli jest już taka, to takiej transfomacji nie ma, a jeśli nazwa uzyskana nazwy przestrzeni nazw jest w takim przypadku błędna, to wzięty jest ten parametr, a jeżeli nazwa domyślna jest błędna, czyli {{Code|{{m|Pudełko|Nazwa przestrzeni nazw dyskusji 3|Moja przestrzeń}}}}, wtedy funkcja zwraca stan błędu {{Code|(błąd)}}. * {{Code|i}} - numer zmiennej nazwy przestrzeni nazw. Funkcja wykorzystuje {{Code|{{sr|#p.Uzyskanie_nazw_jednostki(frame,...)|p=Pudełko/Pomocne}}}} do wyznaczania ogólnego nazwy przestrzeni nazw dla pozycji bazowej i numerkowej, tzn. dla pozycji: jeden, dwa, trzy,..., itd, i ich ogólnej. Parametr ramki tablicy transportu rodzica szablonu: * {{Code|nazwa przestrzeni nazw}}, {{Code|nazwa przestrzeni nazw 1}}, {{Code|nazwa przestrzeni nazw 2}}, {{Code|nazwa przestrzeni nazw 3}},..., {{Code|nazwa przestrzeni nazw i}} - nazwy przestrzeni nazw dla pozycji bazowej oraz zwykłej i ogólnej numerkowej, * {{Code|nazwa jednostki}}, {{Code|nazwa jednostki 1}}, {{Code|nazwa jednostki 2}}, {{Code|nazwa jednostki 3}},... - nazwy jednostek dla pozycji bazowej i numerkowej, * {{Code|typ jednostki}}, {{Code|typ jednostki 1}}, {{Code|typ jednostki 2}}, {{Code|typ jednostki 3}},..., {{Code|typ jednostki i}} - typy jednostek, którym odpowiadają pewne przestrzenie przedmiotowe, dla pozycji bazowej, numerkowej i ogólnej. Parametry ramki tablicy transportu dziecka: * Parametry dziecka są takie same jak rodzica dla funkcji pudełkowej plus tu wymienione, * {{Code|numer jednostki}} - jak parametr {{Code|i}} nie został ustawiony, to wtedy liczy się ta zmienna. Przykłady: <syntaxhighlight lang="mediawiki"> {{Nazwa szablonu 1|nazwa przestrzeni nazw=Wikibooks|nazwa przestrzeni nazw=|nazwa przestrzeni nazw i=|nazwa jednostki=Szablon:Strona}} ---- {{Nazwa szablonu 2|nazwa przestrzeni nazw=Wikibooks|nazwa przestrzeni nazw 1=Szablon|nazwa przestrzeni nazw i=|nazwa jednostki 2=Wikibooks:Strona}} </syntaxhighlight> W pierwszym wywołaniu {{Code|nazwa przestrzeni nazw}} jest puste, ale dla tego bazowego (bez numerka) szukamy przestrzeni nazw, a więc ta nazwa jest ostateczna. ---- W drugim wywołaniu w dziecku powiedzmy jest wywołanie, i szukamy nazwy przestrzeni nazw o numerze dwa, która została podana, ale istnieje za to jej wersji ogólna {{Code|nazwa przestrzeni nazw i}} i domyślna {{Code|nazwa przestrzeni nazw}}, ale wtedy dla tego numerkowego liczy się to ogólne z {{Code| i}}, a ponieważ ta nazwa jest pusta, więc będziemy liczyli nazwę przestrzeni nazw z {{Code|nazwa jednostki 2}}. Odpowiadająca powyższemu kodowi, powiedzmy wikikod, według ich zawartości, przedstawia się: <syntaxhighlight lang="mediawiki"> {{#invoke:Pudełko|Nazwa przestrzeni nazw 3}} ---- {{#invoke:Pudełko|Nazwa przestrzeni nazw 3|numer jednostki=2}} </syntaxhighlight> Na podstawie powyższego przykładu otrzymamy wynik o schemacie, nie wyniku, bo tam nie ma zmiennej {{Code|nazwa przestrzeni nazw 1}}, ale jest {{Code|nazwa przestrzeni nazw i}}: <syntaxhighlight lang="mediawiki"> <!-- nazwa przestrzeni nazw=""; --> <!-- Czyli wynik: --> Dyskusja <!-- Widzimy, że wygenerowała się nazwa przestrzeni nazw, którą jest przestrzeń nazw niegłówna, jest ciągiem niepustym; --> ---- <!-- Ale nie "nazwa przestrzeni nazw 2", bo jej nie ma, ale za to istnieje "nazwa przestrzeni nazw i"; --> <!-- nazwa przestrzeni nazw 2=nazwa przestrzeni nazw i="", a nazwa jednostki 2="Wikibooks:Strona"; --> <!-- Czyli wynik: --> Dyskusja Wikibooks <!-- Widzimy, że wygenerowała się nazwa przestrzeni nazw, którą jest przestrzeń nieprogramowa, ale projektu, wychodząca z nazwy jednostek w tym przypadku z "nazwa jednostki 2"; --> </syntaxhighlight> Dla parametrów numerkowych nie jest brana w tym powyższym przykładzie zmienna {{Code|nazwa przestrzeni nazw 2}}, bo jej nie ma, ale za to jest {{Code|nazwa przestrzeni nazw i}}, bo ona występuje jako parametr domyślny ogólny dla parametrów numerkowych. Tytaj jest używana jest zmienna {{Code|nazwa jednostki 2}} do wygenerowania ostatecznego wyniku, bo jak można zauważyć, parametry przestrzenne wskazują na przestrzeń główną, a nazwy jednostek już nie. Dla parametrów bazowych mamy zmienną {{Code|nazwa przestrzeni nazw}}, ona jest pusta, więc to zostanie wzięte do ostatecznego wyniku. Przykłady w wikikodzie: * {{Code|{{m|Pudełko|Nazwa przestrzeni nazw dyskusji 3|Szablon|nazwa przestrzeni nazw{{=}}Moja przestrzeń|nazwa jednostki{{=}}Wikibooks:Strona}}}} → {{Tt|{{#invoke:Pudełko|Nazwa przestrzeni nazw dyskusji 3|Szablon|nazwa przestrzeni nazw=Moja przestrzeń|nazwa jednostki=Wikibooks:Szablon}}}} * {{Code|{{m|Pudełko|Nazwa przestrzeni nazw dyskusji 3|Szablon|nazwa przestrzeni nazw 2{{=}}Moja przestrzeń|nazwa jednostki 2{{=}}Wikibooks:Strona|numer jednostki{{=}}2}}}} → {{Tt|{{#invoke:Pudełko|Nazwa przestrzeni nazw dyskusji 3|Szablon|nazwa przestrzeni nazw 2=Moja przestrzeń|nazwa jednostki 2=Wikibooks:Szablon|numer jednostki=2}}}} * {{Code|{{m|Pudełko|Nazwa przestrzeni nazw dyskusji 3|nazwa przestrzeni nazw{{=}}|nazwa jednostki{{=}}Wikibooks:Strona}}}} → {{Tt|{{#invoke:Pudełko|Nazwa przestrzeni nazw dyskusji 3|nazwa przestrzeni nazw=|nazwa jednostki=Wikibooks:Szablon}}}} * {{Code|{{m|Pudełko|Nazwa przestrzeni nazw dyskusji 3|nazwa przestrzeni nazw 2{{=}}|nazwa jednostki 2{{=}}Wikibooks:Strona|numer jednostki{{=}}2}}}} → {{Tt|{{#invoke:Pudełko|Nazwa przestrzeni nazw dyskusji 3|nazwa przestrzeni nazw 2=|nazwa jednostki 2=Wikibooks:Szablon|numer jednostki=2}}}} Powyżej dla przykładu podano parametry nie w rodzicu w szablonie, tylko w dziecku, jeśli chodzi o parametry nazw przestrzeni nazw i nazw jednostek, ale ich się za to nie powinno podawać w tych ramach, tylko w szablonach, w których wywoływane są te ramki pudełek {{Code|{{m|Pudełko}}}}, ale tak tutaj tak zrobiono by było najłatwiej sprawdzić działanie tego typu funkcji. Analogicznie możemy podawać parametry typu jednostki, np.: wywołaniu modułowym {{Code|{{m|Pudełko|Nazwa przestrzeni nazw dyskusji 3|typ jednostki 2{{=}}Podręcznik|nazwa jednostki 2{{=}}Szablon:Strona|numer jednostki{{=}}2}}}} (ale wtedy jest brana przestrzeń nazw z nazwy jednostki), ale o tym więcej w rozdziałach {{Code|{{sr|#p["Dyskusyjny typ jednostki 3"](frame,i)|p=Pudełko}}}} w „{{sr|#Funkcje typu jednostki|p=Pudełko}}”, one definiują dane przestrzenie dyskusji, ale można użyć parametru dyskusji typu jednostki z obojętnie jaką wartością niepustą, czy pustą, czy nawet jej nie podamy, wtedy wyświetli się nazwa przestrzeni nazw dyskusji. Jeżeli typ jednostki bazowy wskazuje na przestrzeń nazw główną, wtedy się nie liczą parametry nazw jednostek, a w przypadku numerkowego, wtedy się liczy. Typ jednostki nie ma takiej samej wartości dla przestrzeni przedmiotowej, co dyskusji. Również parametry typu jednostki nie powinno się podawać w dziecku w ramce, tylko w rodzicu w szablonie jako parametry, w którym ta ramka jest wywoływana, ale tutaj podano jedynie dla przykładu, jak najłatwiej sprawdzić działanie tych parametrów tej funkcji. Najpierw w funkcji nagłówku brane są parametry nazw przestrzeni nazw, a jeżeli ich nie ma, to parametry typu jednostki, a jeżeli nie ma lub parametry przestrzenne wskazują na przestrzeń główną, i nie ma nazwy jednostki, to generowane są nazwy tej funkcji na podstawie aktualnej strony. == Funkcje nazw jednostki trzeciej wersji == === {{Code|p["Nazwa jednostki 3"](frame,i)}} === === {{Code|p["Nazwa przedmiotowa jednostki 3"](frame,i)}} === === {{Code|p["Nazwa dyskusji jednostki 3"](frame,i)}} === == Funkcje typu jednostki == === {{Code|p["Typ jednostki"](frame,i)}} === === {{Code|p["Typ jednostki 2"](frame,i)}} === === {{Code|p["Typ jednostki 3"](frame,i)}} === === Funkcje typu jednostki przedmiotowe === ==== {{Code|p["Przedmiotowy typ jednostki"](frame,i)}} ==== ==== {{Code|p["Przedmiotowy typ jednostki 2"](frame,i)}} ==== ==== {{Code|p["Przedmiotowy typ jednostki 3"](frame,i)}} ==== === Fukcje typu jednostki dyskusji === ==== {{Code|p["Dyskusyjny typ jednostki"](frame,i)}} ==== ==== {{Code|p["Dyskusyjny typ jednostki 2"](frame,i)}} ==== ==== {{Code|p["Dyskusyjny typ jednostki 3"](frame,i)}} ==== == Funkcje chech pudełka == === {{Code|p["Cecha pudełka"](frame)}} === === {{Code|p["Przedmiotowa cecha pudełka"](frame)}} === === {{Code|p["Dyskusyjna cecha pudełka"](frame)}} === == Fukcje ogólnego pudełka == === {{Code|p["Ogólne pudełko"](frame)}} === == Funkcje ogólne == === {{Code|p["Tekst pudełka"](frame)}} === == Funkcje błędów pudełka == === {{Code|p["Błędy pudełka"](frame)}} === === {{Code|p["Przedmiotowe błędy pudełka"](frame)}} === === {{Code|p["Dyskusyjne błędy pudełka"](frame)}} === == Funkcje nazw stron == === {{Code|p["Nazwa strony głównej projektu"](frame,i)}} === === {{Code|p["Nazwa strony głównej dla dzieci projektu"](frame,i)}} === == Funkcje kodów == === {{Code|p["Kod języka"](frame,i)}} === === {{Code|p["Kod projektu"](frame,i)}} === === {{Code|p["Klucz projektu"](frame,i)}} === == Funkcje wiki == === {{Code|p["Inny niż język bieżący wiki"](frame)}} === === {{Code|p["Inne niż lokalne wiki"](frame)}} === === {{Code|p["Inne niż bieżące wiki"](frame)}} === == Funkcje typów parametrów, czy podane je == === {{Code|p["Podano parametry nienazwane"](frame)}} === === {{Code|p["Podano parametry numerowane"](frame)}} === === {{Code|p["Podano parametry nazwane"](frame)}} === == Funkcje kodów tego projektu == === {{Code|p["Kod projektu tego projektu"](frame)}} === === {{Code|p["Kod języka tego projektu"](frame)}} === === {{Code|p["Klucz projektu tego projektu"](frame)}} === == Funkcje stron == === {{Code|p["Strona główna tego projektu"](frame)}} === === {{Code|p["Strona główna dla dzieci tego projektu"](frame)}} === == Funkcje nazw stron drugiej wersji == === {{Code|p["Nazwa strony głównej dla dzieci projektu 2"](frame)}} === === {{Code| p["Nazwa strony głównej projektu 2"](frame)}} === {{BrClear}} <noinclude><!-- -->{{ProstaStronaKoniec}}<!-- -->{{Kategoria|Opisy funkcji, w Lua w Scribunto, w modułach}}<!-- --></noinclude> bs1544vxio9wtrbczj1km6ld8bg83k8 540473 540471 2026-04-24T11:22:01Z Persino 2851 /* {{Code|p["Nazwa przedmiotowej przestrzeni nazw"](frame,...)}} */ 540473 wikitext text/x-wiki <noinclude>{{ProstaStronaStart | nagłówek = {{Podrozdział|{{ld2|Pudełko}}|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 pudelko_modul=require("Module:Pudełko"); </syntaxhighlight> dzięki, któremu można wypisywać funkcje należącego do niego. Posługuje się na parametrach pudełkowych {{Parametr|nazwa przestrzeni nazw}} (czy też bez numerka {{Parametr|nazwa przestrzeni nazw i}} dla tego numerowanego) lub te z numerkiem po jednej spacji w nich (ale nie dla tego z końcówką {{Code| i}}) mogą zostać użyte jako parametry szablonu. Moduł {{Code|{{ld2|Pudełko}}}} przedstawia funkcje nazw w oparciu o funkcje nazw {{Code|{{ld2|Nazwy}}}}, generuje on nazwy za pomocą parametrów pudełkowych podanych poniżej. Parametr {{Parametr|nazwa jednostki}} (lub parametr {{Parametr|cel}} dla numerka tego pierwszego, tego alternatywnego), lub te z numerkiem po jednej spacji w nazwie parametru, albo numerowane numerkami {{Code|1}}, {{Code|2}},..., mogą zostać użyte jako parametry szablonu. Parametry określające rodzaj jednostki {{Parametr|typ jednostki}} z {{Parametr|dyskusja typu jednostki}}, itp. w wersjach z numerkiem po jednej spacji w nich mogą zostać użyte jako parametry szablonu. A te tymi numerowanymi liczbami naturalnymi {{Tt|nazwy jednostki}} od jedynki wzwyż poprzez szablon, w którym są one użyte, one też mogą być użyte z dwukropkiem, te numerowane, na samym początku nazwy, wtedy one są traktowane jako pełne nazwy strony, i wtedy one nie zostaną z interpretowane, że do nich trzeba użyć parametr odpowiedni z nazwą przetrzeni nazw z tego numerowanego, czy ogólny, aby utworzyć znów inną pełną nazwę strony dla tego numerka. Zestawienie: * {{Code|nazwa przestrzeni nazw}} i {{Code|nazwa przestrzeni nazw i}} (ogólna nazwa przestrzeni nazw dla wszystkich numerków, i tych numerowanych jednostek) - i to pierwsze z numerkiem, tzn. {{Code|nazwa przestrzeni nazw 1}}, {{Code|nazwa przestrzeni nazw 2}}, ..., * {{Code|nazwa jednostki}} - i te z numerkiem: {{Code|nazwa jednostki 1}}, {{Code|nazwa jednostki 2}}, ..., lub gdy jest zamiast tego parametrem numerowany, {{Code|1}}, {{Code|2}},..., który dla tego pierwszego może być uznany jako: {{Code|cel}} {{=}} {{Code|1}}, * {{Code|typ jednostki}} (parametr bazowy) i {{Code|typ jednostki i}} (parametr domyślny numerkowy) - i te z numerkiem: {{Code|typ jednostki 1}}, {{Code|typ jednostki 2}}, ..., tzn. gdy chcemy określić z jakim typem jednostki mamy do czynienia w zależności do jakiej przestrzeni nazw należy, a w danej, czy jest on np. programowy, czy tylko jest opisem, jak to bywa w szablonach {{Np|Template|link=tak}}, podobnie jest w przypadku {{Np|Module|link=tak}}, czy jak jest w innych przestrzeniach nazw, ** {{Code|dyskusja typu jednostki}} (parametr bazowy) i {{Code|dyskusja typu jednostki i}} (parametr domyślny numerkowy) - i te z numerkiem: {{Code|dyskusja typu jednostki 1}}, {{Code|dyskusja typu jednostki 2}}, ..., gdy chcemy określić wartością niepustą,że chodzi tutaj o typ jednostki. == {{Code|p.CzyNiepoprawnaNazwa(nazwa_jednostki)}} == Funkcja sprawdzajaca, czy jest poprawnie podana nazwa jednostki, czy ma poprawną nazwę. Znakami tymi, z których nie powinna składać się nazwa jest {{Code|<nowiki>{}<>|[]#\n</nowiki>}} i dodatkowo znak {{Code|&#127;}} (kod {{Code|{{Nowiki|&#127;}}}}). Też nie może składać się z trzech znaków tyldy, tzn. {{Code|<nowiki>~~~</nowiki>}}. Również w swojej budowie nie może składać się ze kodów {{Strong|HTML}} literowych o wzorze {{Code|{{Nowiki|&(%a+);}}}}. Natomiast może składać się z {{Code|{{Nowiki|&#(%d+);}}}} i {{Code|{{Nowiki|&#x(%x+);}}}}, ale w pierw te kody muszą być zamienione na normalne znaki. Skrótowa definicja funkcji: <syntaxhighlight lang="lua"> function p.CzyNiepoprawnaNazwa(nazwa_jednostki)...end; </syntaxhighlight> Wtedy ciało funkcji tej, czyli jego definicja w środku, jest: <syntaxhighlight lang="lua"> -- Moduł: "Moduł:Html/dane", służy do ładowania znaku o kodzie HTML "&#127;"; local html_dane_modul=mw.loadData("Module:Html/dane"); return mw.ustring.match(nazwa_jednostki,"[{}<>|%[%]#\n"..html_dane_modul.znak_127.."]+") or mw.ustring.match(nazwa_jednostki,"~~~") or mw.ustring.match(nazwa_jednostki,"&(%a+);"); </syntaxhighlight> Parametry: * {{Code|nazwa_jednostki}} - nazwa jednostki do sprawdzenia. Przykłady: <syntaxhighlight lang="lua"> local pudelko_modul=require("Module:Pudełko"); -- Podana przykładowa niepoprawna nazwa jedostki local nazwa_jednostki="Nazwa pliku [[Nazwa linku w pliku]]"; -- Fukcja zwróci wartość: local czy_poprawna_nazwa=true; local czy_poprawna_nazwa=pudelko_modul.CzyNiepoprawnaNazwa(nazwa_jednostki); </syntaxhighlight> == Funkcje nazw przestrzeni nazw == === {{Code|p["Nazwa przestrzeni nazw"](frame,...)}} === Funkcja pisze nazwę przestrzeni nazw, niezależnie, czy to jest przedmiotowa, czy dyskusji, według podanej w zmiennej {{Code|nazwa przestrzeni nazw}} dla pozycja bazowej w podanych parametrach szablonu rodzicu ramki dziecka, lub dla innej pozycji należy parametr podawać w formie {{Code|nazwa przestrzeni nazw 1}}, {{Code|nazwa przestrzeni nazw 2}}, {{Code|nazwa przestrzeni nazw 3}},..., lub te parametry można podać w postaci ogólnej {{Code|nazwa przestrzeni nazw i}}. Parametry podaje się w parametrach rodzica wywołania tej funkcji {{Code|{{m|Pudełko|Nazwa przestrzeni nazw}}}} (ale ich nie trzeba podawać w dziecku, ale można) i w parametrach dziecka, jeśli chodzi o zmienną {{Code|numer jednostki}}, czyli np.: {{Code|{{m|Pudełko|Nazwa przestrzeni nazw|numer jednostki{{=}}<jakaś liczba całkowita dodatnia>}}}}. Te parametry przestrzenne zamiast w rodzicu w szablonie można podać w ramce dziecka, wtedy parametry dziecka mają pierwszeństwo. Przestrzeń nazw z parametrów nazw przestrzennych może odpowiadać wartości przestrzeni głównej, to wtedy odpowiednia przestrzeń nazw z parametru nazwy jednostki się nie liczy w tej funkcji, aby się liczyła należy użyć funkcji {{Code|{{sr|#p["Nazwa przestrzeni nazw 2"](frame,...)|p=Pudełko}}}}. Definicja skrótowa funkcji: <syntaxhighlight lang="lua"> p["Nazwa przestrzeni nazw"]=function(frame,czy_uwzglednic_alternatywna_nazwe,i)...end; </syntaxhighlight> Wtedy ciało funkcji tej, czyli jego definicja w środku, jest: <syntaxhighlight lang="lua"> -- Jest liczony numer parametru nazwy przestrzeni nazw, domyslnie chodzi tu o numer bazowy parametrów przestrzennych; local numer_jednostki=i or frame.args["numer jednostki"]; local liczba_numer_jednostki=((numer_jednostki)and(tonumber(numer_jednostki))or 0); local pudelko_pomocne_modul=require("Module:Pudełko/Pomocne"); -- Liczy nazwę przestrzeni nazw na podstawie podanych parametrów; return pudelko_pomocne_modul.Nazwa_przestrzeni_nazw(frame,0, czy_uwzglednic_alternatywna_nazwe,liczba_numer_jednostki); </syntaxhighlight> Parametry funkcji: * {{Code|frame}} - tablica ramki tablicy transportu, * {{Code|czy_uwzglednic_alternatywna_nazwe}} - czy ma uwzględniać nazwę przestrzeni nazw domyślną szablonu, dostępne wartości: {{Code|false}}, w której nazwa domyślna nie jest uwzględniana wtedy, oraz {{Code|nil}} i {{Code|true}}, które oznaczają to samo, w tym jeżeli ona jest uwzględniana, wtedy jest brany parametr pierwszy dziecka, który musi istnieć przy takiej wartości tego parametru, tzn. {{Code|{{m|Pudełko|Nazwa przestrzeni nazw|Szablon}}}}, a ten element jest używany, gdy nazwa uzyskana nazwy przestrzeni nazw jest w takim przypadku błędna, a jeżeli wtedy nazwa domyślna jest błędna, czyli {{Code|{{m|Pudełko|Nazwa przestrzeni nazw|Moja przestrzeń}}}}, wtedy funkcja zwraca stan błędu {{Code|(błąd)}}. * {{Code|i}} - numer zmiennej nazwy przestrzeni nazw. Funkcja wykorzystuje {{Code|{{sr|#p.Nazwa_przestrzeni_nazw(frame,...)|p=Pudełko/Pomocne}}}} do wyznaczania ogólnego nazwy przestrzeni nazw dla pozycji bazowej i numerkowej, tzn. dla pozycji: jeden, dwa, trzy,..., itd, i ich ogólnej. Parametr ramki tablicy transportu rodzica szablonu: * {{Code|nazwa przestrzeni nazw}}, {{Code|nazwa przestrzeni nazw 1}}, {{Code|nazwa przestrzeni nazw 2}}, {{Code|nazwa przestrzeni nazw 3}},..., {{Code|nazwa przestrzeni nazw i}} - nazwy przestrzeni nazw dla pozycji bazowej oraz zwykłej i ogólnej numerkowej, * {{Code|typ jednostki}}, {{Code|typ jednostki 1}}, {{Code|typ jednostki 2}}, {{Code|typ jednostki 3}},..., {{Code|typ jednostki i}} - typy jednostek, którym odpowiadają pewne przestrzenie przedmiotowe, dla pozycji bazowej, numerkowej i ogólnej, ** {{Code|dyskusja typu jednostki}}, {{Code|dyskusja typu jednostki 1}}, {{Code|dyskusja typ jednostki 2}}, {{Code|dyskusja typ jednostki 3}},..., {{Code|dyskusja typ jednostki i}} - czy dany typ jednostki ma przedstawiać, jeśli niepusta, przestrzeń dyskusji dla pozycji bazowej, numerkowej i ogólnej. Parametry ramki tablicy transportu dziecka: * Parametry dziecka są takie same jak rodzica dla funkcji pudełkowej plus tu wymienione, * {{Code|numer jednostki}} - jak parametr {{Code|i}} nie został ustawiony, to wtedy liczy się ta zmienna. Przykłady: <syntaxhighlight lang="mediawiki"> {{Nazwa szablonu|nazwa przestrzeni nazw=Wikibooks|nazwa przestrzeni nazw 2=Szablon|nazwa przestrzeni nazw i=Moduł}} </syntaxhighlight> W dziecku powiedzmy jest wywołanie, i szukamy nazwy przestrzeni nazw o numerze dwa, która nie została podana, ale istnieje za to jej wersji ogólna {{Code|nazwa przestrzeni nazw i}} i domyślna {{Code|nazwa przestrzeni nazw}}: <syntaxhighlight lang="mediawiki"> {{#invoke:Pudełko|Nazwa przestrzeni nazw|numer jednostki=1}} </syntaxhighlight> Na podstawie powyższego przykładu otrzymamy wynik o schemacie, nie wyniku, bo tam nie ma zmiennej {{Code|nazwa przestrzeni nazw 1}}, ale jest {{Code|nazwa przestrzeni nazw i}}: <syntaxhighlight lang="mediawiki"> <!-- Ale nie "nazwa przestrzeni nazw", bo jej nie ma, ale za to istnieje "nazwa przestrzeni nazw i"; --> <!-- nazwa przestrzeni nazw 2=nazwa przestrzeni nazw i=Moduł; --> <!-- Czyli wynik: --> Moduł <!-- Widzimy, że wygenerowała się nazwa przestrzeni nazw, którą jest przestrzeń programowa, którą również jest "Szablon"; --> </syntaxhighlight> Nie jest brana w tym powyższym przykładzie zmienna {{Code|nazwa przestrzeni nazw}}, bo jej nie ma, ale za to jest {{Code|nazwa przestrzeni nazw i}}, bo ona występuje jako parametr domyślny ogólny dla parametrów numerkowych. Przykłady w wikikodzie: * {{Code|{{m|Pudełko|Nazwa przestrzeni nazw|numer jednostki{{=}}2}}}} → {{Tt|{{#invoke:Pudełko|Nazwa przestrzeni nazw|numer jednostki=2}}}} * {{Code|{{m|Pudełko|Nazwa przestrzeni nazw|Szablon|nazwa przestrzeni nazw i{{=}}Moja przestrzeń|numer jednostki{{=}}2}}}} → {{Tt|{{#invoke:Pudełko|Nazwa przestrzeni nazw|Szablon|nazwa przestrzeni nazw i=Moja przestrzeń|numer jednostki=2}}}} * {{Code|{{m|Pudełko|Nazwa przestrzeni nazw|nazwa przestrzeni nazw 2{{=}}Szablon|numer jednostki{{=}}2}}}} → {{Tt|{{#invoke:Pudełko|Nazwa przestrzeni nazw|nazwa przestrzeni nazw 2=Szablon|numer jednostki=2}}}} * {{Code|{{m|Pudełko|Nazwa przestrzeni nazw|nazwa przestrzeni nazw 2{{=}}Szablon|numer jednostki{{=}}2}}}} → {{Tt|{{#invoke:Pudełko|Nazwa przestrzeni nazw|nazwa przestrzeni nazw i=Szablon|numer jednostki=2}}}} * {{Code|{{m|Pudełko|Nazwa przestrzeni nazw|nazwa przestrzeni nazw{{=}}Szablon|numer jednostki{{=}}2}}}} → {{Tt|{{#invoke:Pudełko|Nazwa przestrzeni nazw|nazwa przestrzeni nazw=Szablon|numer jednostki=2}}}} Powyżej dla przykładu podano parametry nie w rodzicu w szablonie, tylko w dziecku, jeśli chodzi o parametry nazw przestrzeni nazw, ale ich się za to nie powinno podawać w tych ramach, tylko w szablonach, w których wywoływane są te ramki pudełek {{Code|{{m|Pudełko}}}}, ale tak tutaj tak zrobiono by było najłatwiej sprawdzić działanie tego typu funkcji. Analogicznie możemy podawać parametry typu jednostki, np.: wywołaniu modułowym {{Code|{{m|Pudełko|Nazwa przestrzeni nazw|typ jednostki 2{{=}}strona szablonu|numer jednostki{{=}}2}}}}, ale o tym więcej w rozdziałach {{Code|{{sr|#p["Typ jednostki"](frame,i)|p=Pudełko}}}} w „{{sr|#Funkcje typu jednostki|p=Pudełko}}”, one definiują dane przestrzenie przedmiotowe, czy dyskusji, ale można lub nie użyć parametru dyskusji typu jednostki z wartością niepustą, wtedy wyświetli się nazwa przestrzeni nazw dyskusji. Typ jednostki nie ma takiej samej wartości dla przestrzeni przedmiotowej, co dyskusji. Również parametry typu jednostki nie powinno się podawać w dziecku w ramce, tylko w rodzicu w szablonie jako parametry, w którym ta ramka jest wywoływana, ale tutaj podano jedynie dla przykładu, jak najłatwiej sprawdzić działanie tych parametrów tej funkcji. Najpierw w funkcji nagłówku brane są parametry nazw przestrzeni nazw, a jeżeli ich nie ma, to parametry typu jednostki, a jeżeli nie ma, to generowane są nazwy na podstawie aktualnego modułu. === {{Code|p["Nazwa przedmiotowej przestrzeni nazw"](frame,...)}} === Funkcja pisze przedmiotową nazwę przestrzeni nazw jakikolwiek nazwy przestrzeni nazw (tzn. nazwę przedmiotową nazwy przestrzenie nazw, czyli nie dyskusji, zamieniana jest na nią samą, czyli identyfikator przestrzeni się nie zmienia, a dyskusji, nie przedmiotową, przekształca się na przedmiotową jej odpowiadającą, czyli w tym przypadku identyfikator przestrzeni zmniejsza się o numer mniej), według podanej w zmiennej {{Code|nazwa przestrzeni nazw}} dla pozycja bazowej w podanych parametrach szablonu rodzicu ramki dziecka, lub dla innej pozycji należy parametr podawać w formie {{Code|nazwa przestrzeni nazw 1}}, {{Code|nazwa przestrzeni nazw 2}}, {{Code|nazwa przestrzeni nazw 3}},..., lub te parametry można podać w postaci ogólnej {{Code|nazwa przestrzeni nazw i}}. Parametry podaje się w parametrach rodzica wywołania tej funkcji {{Code|{{m|Pudełko|Nazwa przedmiotowej przestrzeni nazw}}}} (ale ich nie trzeba podawać w dziecku, ale można) i w parametrach dziecka, jeśli chodzi o zmienną {{Code|numer jednostki}}, czyli np.: {{Code|{{m|Pudełko|Nazwa przedmiotowej przestrzeni nazw|numer jednostki{{=}}<jakaś liczba całkowita dodatnia>}}}}. Te parametry przestrzenne zamiast w rodzicu w szablonie można podać w ramce dziecka, wtedy parametry dziecka mają pierwszeństwo. Parametry przestrzenne mogą mogą być podane w postaci przestrzeni przedmiotowej lub dyskusji, ale ta funkcja zawsze ją zamienia na przedmiotową. Przestrzeń nazw z parametrów nazw przestrzennych może odpowiadać wartości przestrzeni głównej, to wtedy odpowiednia przestrzeń nazw z parametru nazwy jednostki się nie liczy w tej funkcji, aby się liczyła należy użyć funkcji {{Code|{{sr|#p["Nazwa przedmiotowej przestrzeni nazw 2"](frame,...)|p=Pudełko}}}}. Definicja skrótowa funkcji: <syntaxhighlight lang="lua"> p["Nazwa przedmiotowej przestrzeni nazw"]=function(frame,czy_uwzglednic_alternatywna_nazwe,i)...end; </syntaxhighlight> Wtedy ciało funkcji tej, czyli jego definicja w środku, jest: <syntaxhighlight lang="lua"> -- Jest liczony numer parametru nazwy przestrzeni nazw, domyslnie chodzi tu o numer bazowy parametrów przestrzennych; local numer_jednostki=i or frame.args["numer jednostki"]; local liczba_numer_jednostki=((numer_jednostki)and(tonumber(numer_jednostki))or 0); local pudelko_pomocne_modul=require("Module:Pudełko/Pomocne"); -- Liczy nazwę przestrzeni nazw przedmiotową na podstawie podanych parametrów; return pudelko_pomocne_modul.Nazwa_przestrzeni_nazw(frame,1, czy_uwzglednic_alternatywna_nazwe,liczba_numer_jednostki); </syntaxhighlight> Parametry funkcji: * {{Code|frame}} - tablica ramki tablicy transportu, * {{Code|czy_uwzglednic_alternatywna_nazwe}} - czy ma uwzględniać nazwę przestrzeni nazw domyślną szablonu, dostępne wartości: {{Code|false}}, w której nazwa domyślna nie jest uwzględniana wtedy, oraz {{Code|nil}} i {{Code|true}}, które oznaczają to samo, w tym jeżeli ona jest uwzględniana, wtedy jest brany parametr pierwszy dziecka, który musi istnieć przy takiej wartości tego parametru, tzn. {{Code|{{m|Pudełko|Nazwa przedmiotowej przestrzeni nazw|Dyskusja szablonu}}}} - ta nazwa domyślna zostanie zamieniona na przedmiotową, a jak ona by była przedmiotowa, to żadnej zamiany, by nie było, a jeśli nazwa uzyskana z nazwy przestrzeni nazw z parametrów przestrzennych jest w takim przypadku błędna, to w takim razie brany jest ten parametr, a jeżeli ta nazwa domyślna jest błędna, czyli {{Code|{{m|Pudełko|Nazwa przedmiotowej przestrzeni nazw|Moja przestrzeń}}}}, wtedy funkcja zwraca stan błędu {{Code|(błąd)}}. * {{Code|i}} - numer zmiennej nazwy przestrzeni nazw. Funkcja wykorzystuje {{Code|{{sr|#p.Nazwa_przestrzeni_nazw(frame,...)|p=Pudełko/Pomocne}}}} do wyznaczania ogólnego nazwy przestrzeni nazw dla pozycji bazowej i numerkowej, tzn. dla pozycji: jeden, dwa, trzy,..., itd, i ich ogólnej. Parametr ramki tablicy transportu rodzica szablonu: * {{Code|nazwa przestrzeni nazw}}, {{Code|nazwa przestrzeni nazw 1}}, {{Code|nazwa przestrzeni nazw 2}}, {{Code|nazwa przestrzeni nazw 3}},..., {{Code|nazwa przestrzeni nazw i}} - nazwy przestrzeni nazw dla pozycji bazowej oraz zwykłej i ogólnej numerkowej, * {{Code|typ jednostki}}, {{Code|typ jednostki 1}}, {{Code|typ jednostki 2}}, {{Code|typ jednostki 3}},..., {{Code|typ jednostki i}} - typy jednostek, którym odpowiadają pewne przestrzenie przedmiotowe, dla pozycji bazowej, numerkowej i ogólnej. Parametry ramki tablicy transportu dziecka: * Parametry dziecka są takie same jak rodzica dla funkcji pudełkowej plus tu wymienione, * {{Code|numer jednostki}} - jak parametr {{Code|i}} nie został ustawiony, to wtedy liczy się ta zmienna. Przykłady: <syntaxhighlight lang="mediawiki"> {{Nazwa szablonu|nazwa przestrzeni nazw=Dyskusja Wikibooks|nazwa przestrzeni nazw 2=Dyskusja szablonu|nazwa przestrzeni nazw i=Dyskusja modułu}} </syntaxhighlight> W dziecku powiedzmy jest wywołanie, i szukamy nazwy przestrzeni nazw o numerze dwa, która nie została podana, ale istnieje za to jej wersji ogólna {{Code|nazwa przestrzeni nazw i}} i domyślna {{Code|nazwa przestrzeni nazw}}: <syntaxhighlight lang="mediawiki"> {{#invoke:Pudełko|Nazwa przedmiotowej przestrzeni nazw|numer jednostki=1}} </syntaxhighlight> Na podstawie powyższego przykładu otrzymamy wynik o schemacie, nie wyniku, bo tam nie ma zmiennej {{Code|nazwa przestrzeni nazw 1}}, ale jest {{Code|nazwa przestrzeni nazw i}}: <syntaxhighlight lang="mediawiki"> <!-- Ale nie "nazwa przestrzeni nazw", bo jej nie ma, ale za to istnieje "nazwa przestrzeni nazw i"; --> <!-- nazwa przestrzeni nazw 2=nazwa przestrzeni nazw i=Dyskusja modułu; --> <!-- Czyli wynik: --> Moduł <!-- Widzimy, że wygenerowała się nazwa przestrzeni nazw, którą jest przestrzeń przedmiotowa programowa przestrzeni dyskusji "Dyskusja modułu", którą również jest "Szablon" jego przestrzeni dyskusji "Dyskusja szablonu", a dla ich przestrzeni przedmiotowej, zamiast dyskusji, to samo przekształca się na to samo; --> </syntaxhighlight> Nie jest brana w tym powyższym przykładzie zmienna {{Code|nazwa przestrzeni nazw}}, bo jej nie ma, ale za to jest {{Code|nazwa przestrzeni nazw i}}, bo ona występuje jako parametr domyślny ogólny dla parametrów numerkowych. Przykłady w wikikodzie: * {{Code|{{m|Pudełko|Nazwa przedmiotowej przestrzeni nazw|numer jednostki{{=}}2}}}} → {{Tt|{{#invoke:Pudełko|Nazwa przedmiotowej przestrzeni nazw|numer jednostki=2}}}} * {{Code|{{m|Pudełko|Nazwa przedmiotowej przestrzeni nazw|Dyskusja szablonu|nazwa przestrzeni nazw i{{=}}Moja przestrzeń|numer jednostki{{=}}2}}}} → {{Tt|{{#invoke:Pudełko|Nazwa przedmiotowej przestrzeni nazw|Dyskusja szablonu|nazwa przestrzeni nazw i=Moja przestrzeń|numer jednostki=2}}}} * {{Code|{{m|Pudełko|Nazwa przedmiotowej przestrzeni nazw|nazwa przestrzeni nazw 2{{=}}Dyskusja szablonu|numer jednostki{{=}}2}}}} → {{Tt|{{#invoke:Pudełko|Nazwa przedmiotowej przestrzeni nazw|nazwa przestrzeni nazw 2=Dyskusja szablonu|numer jednostki=2}}}} * {{Code|{{m|Pudełko|Nazwa przedmiotowej przestrzeni nazw|nazwa przestrzeni nazw 2{{=}}Dyskusja szablonu|numer jednostki{{=}}2}}}} → {{Tt|{{#invoke:Pudełko|Nazwa przedmiotowej przestrzeni nazw|nazwa przestrzeni nazw i=Dyskusja szablonu|numer jednostki=2}}}} * {{Code|{{m|Pudełko|Nazwa przedmiotowej przestrzeni nazw|nazwa przestrzeni nazw{{=}}Dyskusja szablonu|numer jednostki{{=}}2}}}} → {{Tt|{{#invoke:Pudełko|Nazwa przedmiotowej przestrzeni nazw|nazwa przestrzeni nazw=Dyskusja szablonu|numer jednostki=2}}}} Powyżej dla przykładu podano parametry nie w rodzicu w szablonie, tylko w dziecku, jeśli chodzi o parametry nazw przestrzeni nazw, ale ich się za to nie powinno podawać w tych ramach, tylko w szablonach, w których wywoływane są te ramki pudełek {{Code|{{m|Pudełko}}}}, ale tak tutaj tak zrobiono by było najłatwiej sprawdzić działanie tego typu funkcji. Analogicznie możemy podawać parametry typu jednostki, np.: wywołaniu modułowym {{Code|{{m|Pudełko|Nazwa przedmiotowej przestrzeni nazw|typ jednostki 2{{=}}strona szablonu|numer jednostki{{=}}2}}}}, ale o tym więcej w rozdziałach {{Code|{{sr|#p["Przedmiotowy typ jednostki"](frame,i)|p=Pudełko}}}} w „{{sr|#Funkcje typu jednostki|p=Pudełko}}”, one definiują dane przestrzenie przedmiotowe, ale wtedy ta sama nazwa przestrzeni nazw reprezentowana przez typ jednostki jest zamieniony na nazwę przestrzeni przedmiotową, lepiej jest tutaj używać parametrów przestrzennych nazw niż typu jednostki. Typ jednostki nie ma takiej samej wartości dla przestrzeni przedmiotowej, co dyskusji. Tutaj parametr dyskusji typu jednostki bazowy i numerkowy ogólny, czy szczegółowy, nie gra roli, bo nawet, gdy wygenerujemy nazwę przestrzeni dyskusji za pomoca tego parametru, to i tak otrzymamy na samym końcu jego nazwę przedmiotową. Również parametry typu jednostki nie powinno się podawać w dziecku w ramce, tylko w rodzicu w szablonie jako parametry, w którym ta ramka jest wywoływana, ale tutaj podano jedynie dla przykładu, jak najłatwiej sprawdzić działanie tych parametrów tej funkcji. Najpierw w funkcji nagłówku brane są parametry nazw przestrzeni nazw, a jeżeli ich nie ma, to parametry typu jednostki, a jeżeli nie ma, to generowane są nazwy na podstawie aktualnego modułu. === {{Code|p["Nazwa przestrzeni nazw dyskusji"](frame,...)}} === Funkcja pisze nazwę przestrzeni nazw dyskusji jakikolwiek nazwy przestrzeni nazw (tzn. nazwę przedmiotową nazwy przestrzenie nazw, czyli nie dyskusji, zamieniana jest na dyskusji, czyli identyfikator przestrzeni się zmienia jeden wyżej, a dyskusji, nie przedmiotową, przekształca się na tą samą), według podanej w zmiennej {{Code|nazwa przestrzeni nazw}} dla pozycja bazowej w podanych parametrach szablonu rodzicu ramki dziecka, lub dla innej pozycji należy parametr podawać w formie {{Code|nazwa przestrzeni nazw 1}}, {{Code|nazwa przestrzeni nazw 2}}, {{Code|nazwa przestrzeni nazw 3}},..., lub te parametry można podać w postaci ogólnej {{Code|nazwa przestrzeni nazw i}}. Parametry podaje się w parametrach rodzica wywołania tej funkcji {{Code|{{m|Pudełko|Nazwa przestrzeni nazw dyskusji}}}} (ale ich nie trzeba podawać w dziecku, ale można) i w parametrach dziecka, jeśli chodzi o zmienną {{Code|numer jednostki}}, czyli np.: {{Code|{{m|Pudełko|Nazwa przestrzeni nazw dyskusji|numer jednostki{{=}}<jakaś liczba całkowita dodatnia>}}}}. Te parametry przestrzenne zamiast w rodzicu w szablonie można podać w ramce dziecka, wtedy parametry dziecka mają pierwszeństwo. Parametry przestrzenne mogą mogą być podane w postaci przestrzeni przedmiotowej lub dyskusji, ale ta funkcja zawsze ją zamienia na dyskusji. Przestrzeń nazw z parametrów nazw przestrzennych może odpowiadać wartości przestrzeni głównej, to wtedy odpowiednia przestrzeń nazw z parametru nazwy jednostki się nie liczy w tej funkcji, aby się liczyła należy użyć funkcji {{Code|{{sr|#p["Nazwa przestrzeni nazw dyskusji 2"](frame,...)|p=Pudełko}}}}. Definicja skrótowa funkcji: <syntaxhighlight lang="lua"> p["Nazwa przestrzeni nazw dyskusji"]=function(frame,czy_uwzglednic_alternatywna_nazwe,i)...end; </syntaxhighlight> Wtedy ciało funkcji tej, czyli jego definicja w środku, jest: <syntaxhighlight lang="lua"> -- Jest liczony numer parametru nazwy przestrzeni nazw, domyslnie chodzi tu o numer bazowy parametrów przestrzennych; local numer_jednostki=i or frame.args["numer jednostki"]; local liczba_numer_jednostki=((numer_jednostki)and(tonumber(numer_jednostki))or 0); local pudelko_pomocne_modul=require("Module:Pudełko/Pomocne"); -- Liczy nazwę przestrzeni nazw dyskusji na podstawie podanych parametrów; return pudelko_pomocne_modul.Nazwa_przestrzeni_nazw(frame,2, czy_uwzglednic_alternatywna_nazwe,liczba_numer_jednostki); </syntaxhighlight> Parametry funkcji: * {{Code|frame}} - tablica ramki tablicy transportu, * {{Code|czy_uwzglednic_alternatywna_nazwe}} - czy ma uwzględniać nazwę przestrzeni nazw domyślną szablonu, dostępne wartości: {{Code|false}}, w której nazwa domyślna nie jest uwzględniana wtedy, oraz {{Code|nil}} i {{Code|true}}, które oznaczają to samo, w tym jeżeli ona jest uwzględniana, wtedy jest brany parametr pierwszy dziecka, który musi istnieć przy takiej wartości tego parametru, tzn. {{Code|{{m|Pudełko|Nazwa przestrzeni nazw dyskusji|Szablon}}}} - ta nazwa domyślna zostanie przekształcona na dyskusji, a jeżeli ona by była dyskusji, to nie byłoby żadnego przekształcenia, a jeśli nazwa uzyskana nazwy przestrzeni nazw z parametrów przestrzennych jest w takim przypadku błędna, to w takim razie brany jest ten parametr, a jeżeli nazwa domyślna jest błędna, czyli {{Code|{{m|Pudełko|Nazwa przestrzeni nazw dyskusji|Moja przestrzeń}}}}, wtedy funkcja zwraca stan błędu {{Code|(błąd)}}. * {{Code|i}} - numer zmiennej nazwy przestrzeni nazw. Funkcja wykorzystuje {{Code|{{sr|#p.Nazwa_przestrzeni_nazw(frame,...)|p=Pudełko/Pomocne}}}} do wyznaczania ogólnego nazwy przestrzeni nazw dla pozycji bazowej i numerkowej, tzn. dla pozycji: jeden, dwa, trzy,..., itd, i ich ogólnej. Parametr ramki tablicy transportu rodzica szablonu: * {{Code|nazwa przestrzeni nazw}}, {{Code|nazwa przestrzeni nazw 1}}, {{Code|nazwa przestrzeni nazw 2}}, {{Code|nazwa przestrzeni nazw 3}},..., {{Code|nazwa przestrzeni nazw i}} - nazwy przestrzeni nazw dla pozycji bazowej oraz zwykłej i ogólnej numerkowej, * {{Code|typ jednostki}}, {{Code|typ jednostki 1}}, {{Code|typ jednostki 2}}, {{Code|typ jednostki 3}},..., {{Code|typ jednostki i}} - typy jednostek, którym odpowiadają pewne przestrzenie przedmiotowe, dla pozycji bazowej, numerkowej i ogólnej. Parametry ramki tablicy transportu dziecka: * Parametry dziecka są takie same jak rodzica dla funkcji pudełkowej plus tu wymienione, * {{Code|numer jednostki}} - jak parametr {{Code|i}} nie został ustawiony, to wtedy liczy się ta zmienna. Przykłady: <syntaxhighlight lang="mediawiki"> {{Nazwa szablonu|nazwa przestrzeni nazw=Wikibooks|nazwa przestrzeni nazw 2=Szablon|nazwa przestrzeni nazw i=Moduł}} </syntaxhighlight> W dziecku powiedzmy jest wywołanie, i szukamy nazwy przestrzeni nazw o numerze dwa, która nie została podana, ale istnieje za to jej wersji ogólna {{Code|nazwa przestrzeni nazw i}} i domyślna {{Code|nazwa przestrzeni nazw}}: <syntaxhighlight lang="mediawiki"> {{#invoke:Pudełko|Nazwa przestrzeni nazw dyskusji|numer jednostki=1}} </syntaxhighlight> Na podstawie powyższego przykładu otrzymamy wynik o schemacie, nie wyniku, bo tam nie ma zmiennej {{Code|nazwa przestrzeni nazw 1}}, ale jest {{Code|nazwa przestrzeni nazw i}}: <syntaxhighlight lang="mediawiki"> <!-- Ale nie "nazwa przestrzeni nazw", bo jej nie ma, ale za to istnieje "nazwa przestrzeni nazw i"; --> <!-- nazwa przestrzeni nazw 2=nazwa przestrzeni nazw i=Moduł; --> <!-- Czyli wynik: --> Dyskusja modułu <!-- Widzimy, że wygenerowała się nazwa przestrzeni nazw, którą jest przestrzeń dyskusji przestrzeni programowej przestrzeni przedmiotowej "Moduł", którą również jest "Szablon" jego przestrzeni dyskusji "Dyskusja szablonu", a dla ich przestrzeni przedmiotowej, zamiast dyskusji, to przekształca się na dyskusji jej odpowiadającą; --> </syntaxhighlight> Nie jest brana w tym powyższym przykładzie zmienna {{Code|nazwa przestrzeni nazw}}, bo jej nie ma, ale za to jest {{Code|nazwa przestrzeni nazw i}}, bo ona występuje jako parametr domyślny ogólny dla parametrów numerkowych. Przykłady w wikikodzie: * {{Code|{{m|Pudełko|Nazwa przestrzeni nazw dyskusji|numer jednostki{{=}}2}}}} → {{Tt|{{#invoke:Pudełko|Nazwa przestrzeni nazw dyskusji|numer jednostki=2}}}} * {{Code|{{m|Pudełko|Nazwa przestrzeni nazw dyskusji|Szablon|nazwa przestrzeni nazw i{{=}}Moja przestrzeń|numer jednostki{{=}}2}}}} → {{Tt|{{#invoke:Pudełko|Nazwa przestrzeni nazw dyskusji|Szablon|nazwa przestrzeni nazw i=Moja przestrzeń|numer jednostki=2}}}} * {{Code|{{m|Pudełko|Nazwa przestrzeni nazw dyskusji|nazwa przestrzeni nazw 2{{=}}Szablon|numer jednostki{{=}}2}}}} → {{Tt|{{#invoke:Pudełko|Nazwa przestrzeni nazw dyskusji|nazwa przestrzeni nazw 2=Szablon|numer jednostki=2}}}} * {{Code|{{m|Pudełko|Nazwa przestrzeni nazw dyskusji|nazwa przestrzeni nazw 2{{=}}Szablon|numer jednostki{{=}}2}}}} → {{Tt|{{#invoke:Pudełko|Nazwa przestrzeni nazw dyskusji|nazwa przestrzeni nazw i=Szablon|numer jednostki=2}}}} * {{Code|{{m|Pudełko|Nazwa przestrzeni nazw dyskusji|nazwa przestrzeni nazw{{=}}Szablon|numer jednostki{{=}}2}}}} → {{Tt|{{#invoke:Pudełko|Nazwa przestrzeni nazw dyskusji|nazwa przestrzeni nazw=Szablon|numer jednostki=2}}}} Powyżej dla przykładu podano parametry nie w rodzicu w szablonie, tylko w dziecku, jeśli chodzi o parametry nazw przestrzeni nazw, ale ich się za to nie powinno podawać w tych ramach, tylko w szablonach, w których wywoływane są te ramki pudełek {{Code|{{m|Pudełko}}}}, ale tak tutaj tak zrobiono by było najłatwiej sprawdzić działanie tego typu funkcji. Analogicznie możemy podawać parametry typu jednostki, np.: wywołaniu modułowym {{Code|{{m|Pudełko|Nazwa przestrzeni nazw dyskusji|typ jednostki 2{{=}}strona szablonu|numer jednostki{{=}}2}}}}, ale o tym więcej w rozdziałach {{Code|{{sr|#p["Dyskusyjny typ jednostki"](frame,i)|p=Pudełko}}}} w „{{sr|#Funkcje typu jednostki|p=Pudełko}}”, one definiują dane przestrzenie dyskusji, ale wtedy nazwa przestrzeni nazw reprezentowana przez {{Parametr|typ jednostki 2|strona szablonu}}, jest zamieniana na nazwę przestrzeni nazw dyskusji. Parametr dyskusji typu jednostki bazowy lub dla danego numerka ogólny, czy szczegółowy, nie gra roli. Typ jednostki nie ma takiej samej wartości dla przestrzeni przedmiotowej, co dyskusji. Również parametry typu jednostki nie powinno się podawać w dziecku w ramce, tylko w rodzicu w szablonie jako parametry, w którym ta ramka jest wywoływana, ale tutaj podano jedynie dla przykładu, jak najłatwiej sprawdzić działanie tych parametrów tej funkcji. Najpierw w funkcji nagłówku brane są parametry nazw przestrzeni nazw, a jeżeli ich nie ma, to parametry typu jednostki, a jeżeli nie ma, to generowane są nazwy na podstawie aktualnego modułu. == Funkcje nazw przestrzeni nazw drugiej wersji == === {{Code|p["Nazwa przestrzeni nazw 2"](frame,...)}} === Funkcja pisze nazwę przestrzeni nazw, niezależnie, czy to jest przedmiotowa, czy dyskusji, według, i nie zawsze tylko, podanej w zmiennej {{Code|nazwa przestrzeni nazw}} dla pozycja bazowej w podanych parametrach szablonu rodzicu ramki dziecka, lub dla innej pozycji należy parametr podawać w formie {{Code|nazwa przestrzeni nazw 1}}, {{Code|nazwa przestrzeni nazw 2}}, {{Code|nazwa przestrzeni nazw 3}},..., lub te parametry można podać w postaci ogólnej {{Code|nazwa przestrzeni nazw i}}. W tej funkcji trzeba też podawać parametry nazwy jednostek {{Code|nazwa jednostki}}, {{Code|nazwa jednostki 1}}, {{Code|nazwa jednostki 2}}, {{Code|nazwa jednostki 3}},... Parametry podaje się w parametrach rodzica wywołania tej funkcji {{Code|{{m|Pudełko|Nazwa przestrzeni nazw 2}}}} (ale ich nie trzeba podawać w dziecku, ale można) i w parametrach dziecka, jeśli chodzi o zmienną {{Code|numer jednostki}}, czyli np.: {{Code|{{m|Pudełko|Nazwa przestrzeni nazw 2|numer jednostki{{=}}<jakaś liczba całkowita dodatnia>}}}}. Te parametry przestrzenne zamiast w rodzicu w szablonie można podać w ramce dziecka, wtedy parametry dziecka mają pierwszeństwo. Przestrzeń nazw z parametrów nazw przestrzennych może odpowiadać wartości przestrzeni głównej, to wtedy odpowiednia przestrzeń nazw z parametru nazwy jednostki się liczy w tej funkcji, wtedy jest liczona nazwa przestrzeni nazw z tego parametru. Gdy parametry przestrzenne lub typ jednostki w drugim podejściu nie wskazują na przestrzeń główną, to wtedy działanie tej funkcji jest podobne do {{Code|{{sr|#p["Nazwa przestrzeni nazw"](frame,...)|p=Pudełko}}}}. Definicja skrótowa funkcji: <syntaxhighlight lang="lua"> p["Nazwa przestrzeni nazw 2"]=function(frame,czy_uwzglednic_alternatywna_nazwe,i)...end; </syntaxhighlight> Wtedy ciało funkcji tej, czyli jego definicja w środku, jest: <syntaxhighlight lang="lua"> local pudelko_pomocne_modul=require("Module:Pudełko/Pomocne"); -- Liczy nazwę przestrzeni nazw, jeżeli z parametrów przestrzennych przestrzeń wskazuje na główną, to wtedy jest liczona przestrzeń nazw z nazwy jednostki; return pudelko_pomocne_modul.Nazwa_przestrzeni_nazw_2(frame,czy_uwzglednic_alternatywna_nazwe,i) </syntaxhighlight> Parametry funkcji: * {{Code|frame}} - tablica ramki tablicy transportu, * {{Code|czy_uwzglednic_alternatywna_nazwe}} - czy ma uwzględniać nazwę przestrzeni nazw domyślną szablonu, dostępne wartości: {{Code|false}}, w której nazwa domyślna nie jest uwzględniana wtedy, oraz {{Code|nil}} i {{Code|true}}, które oznaczają to samo, w tym jeżeli ona jest uwzględniana, wtedy jest brany parametr pierwszy dziecka, który musi istnieć przy takiej wartości tego parametru, tzn. {{Code|{{m|Pudełko|Nazwa przestrzeni nazw 2|Szablon}}}}, a jeśli nazwa uzyskana nazwy przestrzeni nazw jest w takim przypadku błędna, to brany jest ten element, a jeżeli nazwa domyślna jest błędna, czyli {{Code|{{m|Pudełko|Nazwa przestrzeni nazw 2|Moja przestrzeń}}}}, wtedy funkcja zwraca stan błędu {{Code|(błąd)}}. * {{Code|i}} - numer zmiennej nazwy przestrzeni nazw. Funkcja wykorzystuje {{Code|{{sr|#p.Nazwa_przestrzeni_nazw_2(frame,...)|p=Pudełko/Pomocne}}}} do wyznaczania ogólnego nazwy przestrzeni nazw dla pozycji bazowej i numerkowej, tzn. dla pozycji: jeden, dwa, trzy,..., itd, i ich ogólnej. Parametr ramki tablicy transportu rodzica szablonu: * {{Code|nazwa przestrzeni nazw}}, {{Code|nazwa przestrzeni nazw 1}}, {{Code|nazwa przestrzeni nazw 2}}, {{Code|nazwa przestrzeni nazw 3}},..., {{Code|nazwa przestrzeni nazw i}} - nazwy przestrzeni nazw dla pozycji bazowej oraz zwykłej i ogólnej numerkowej, * {{Code|nazwa jednostki}}, {{Code|nazwa jednostki 1}}, {{Code|nazwa jednostki 2}}, {{Code|nazwa jednostki 3}},... - nazwy jednostek dla pozycji bazowej i numerkowej, * {{Code|typ jednostki}}, {{Code|typ jednostki 1}}, {{Code|typ jednostki 2}}, {{Code|typ jednostki 3}},..., {{Code|typ jednostki i}} - typy jednostek, którym odpowiadają pewne przestrzenie przedmiotowe, dla pozycji bazowej, numerkowej i ogólnej, ** {{Code|dyskusja typu jednostki}}, {{Code|dyskusja typu jednostki 1}}, {{Code|dyskusja typ jednostki 2}}, {{Code|dyskusja typ jednostki 3}},..., {{Code|dyskusja typ jednostki i}} - czy dany typ jednostki ma przedstawiać, jeśli niepusta, przestrzeń dyskusji dla pozycji bazowej, numerkowej i ogólnej. Parametry ramki tablicy transportu dziecka: * Parametry dziecka są takie same jak rodzica dla funkcji pudełkowej plus tu wymienione, * {{Code|numer jednostki}} - jak parametr {{Code|i}} nie został ustawiony, to wtedy liczy się ta zmienna. Przykłady: <syntaxhighlight lang="mediawiki"> {{Nazwa szablonu|nazwa przestrzeni nazw=Wikibooks|nazwa przestrzeni nazw 1=Szablon|nazwa przestrzeni nazw i=|nazwa jednostki 2=Wikibooks:Strona}} </syntaxhighlight> W dziecku powiedzmy jest wywołanie, i szukamy nazwy przestrzeni nazw o numerze dwa, która została podana, ale istnieje za to jej wersji ogólna {{Code|nazwa przestrzeni nazw i}} i domyślna {{Code|nazwa przestrzeni nazw}}, ale wtedy dla tego numerkowego liczy się to ogólne z {{Code| i}}, a ponieważ ta nazwa jest pusta, więc będziemy liczyli nazwę przestrzeni nazw z {{Code|nazwa jednostki 2}}: <syntaxhighlight lang="mediawiki"> {{#invoke:Pudełko|Nazwa przestrzeni nazw 2|numer jednostki=2}} </syntaxhighlight> Na podstawie powyższego przykładu otrzymamy wynik o schemacie, nie wyniku, bo tam nie ma zmiennej {{Code|nazwa przestrzeni nazw 1}}, ale jest {{Code|nazwa przestrzeni nazw i}}: <syntaxhighlight lang="mediawiki"> <!-- Ale nie "nazwa przestrzeni nazw 2", bo jej nie ma, ale za to istnieje "nazwa przestrzeni nazw i"; --> <!-- nazwa przestrzeni nazw 2=nazwa przestrzeni nazw i="", a nazwa jednostki 2="Wikibooks:Strona"; --> <!-- Czyli wynik: --> Wikibooks <!-- Widzimy, że wygenerowała się nazwa przestrzeni nazw, którą jest przestrzeń nieprogramowa, ale projektu, wychodząca z nazwy jednostek w tym przypadku z "nazwa jednostki 2"; --> </syntaxhighlight> Nie jest brana w tym powyższym przykładzie zmienna {{Code|nazwa przestrzeni nazw}}, bo jej nie ma, ale za to jest {{Code|nazwa przestrzeni nazw i}}, bo ona występuje jako parametr domyślny ogólny dla parametrów numerkowych. Tytaj jest używana jest zmienna {{Code|nazwa jednostki 2}} do wygenerowania ostatecznego wyniku, bo jak można zauważyć, parametry przestrzenne wskazują na przestrzeń główną, a nazwy jednostek już nie. Przykłady w wikikodzie: * {{Code|{{m|Pudełko|Nazwa przestrzeni nazw 2|numer jednostki{{=}}2}}}} → {{Tt|{{#invoke:Pudełko|Nazwa przestrzeni nazw 2|numer jednostki=2}}}} * {{Code|{{m|Pudełko|Nazwa przestrzeni nazw 2|Szablon|nazwa przestrzeni nazw i{{=}}Moja przestrzeń|numer jednostki{{=}}2}}}} → {{Tt|{{#invoke:Pudełko|Nazwa przestrzeni nazw 2|Szablon|nazwa przestrzeni nazw i=Moja przestrzeń|numer jednostki=2}}}} * {{Code|{{m|Pudełko|Nazwa przestrzeni nazw 2|nazwa przestrzeni nazw 2{{=}}|nazwa jednostki 2{{=}}Szablon:Strona|numer jednostki{{=}}2}}}} → {{Tt|{{#invoke:Pudełko|Nazwa przestrzeni nazw 2|nazwa przestrzeni nazw 2=|nazwa jednostki 2=Szablon:Strona|numer jednostki=2}}}} * {{Code|{{m|Pudełko|Nazwa przestrzeni nazw 2|nazwa przestrzeni nazw i{{=}}|nazwa jednostki 2{{=}}Szablon:Strona|numer jednostki{{=}}2}}}} → {{Tt|{{#invoke:Pudełko|Nazwa przestrzeni nazw 2|nazwa przestrzeni nazw i=|nazwa jednostki 2=Szablon:Strona|numer jednostki=2}}}} * {{Code|{{m|Pudełko|Nazwa przestrzeni nazw 2|Szablon|nazwa przestrzeni nazw{{=}}|nazwa jednostki 2{{=}}Wikibooks:Strona|numer jednostki{{=}}2}}}} → {{Tt|{{#invoke:Pudełko|Nazwa przestrzeni nazw 2|Szablon|nazwa przestrzeni nazw=|nazwa jednostki 2=Wikibooks:Strona|numer jednostki=2}}}} Powyżej dla przykładu podano parametry nie w rodzicu w szablonie, tylko w dziecku, jeśli chodzi o parametry nazw przestrzeni nazw i nazw jednostek, ale ich się za to nie powinno podawać w tych ramach, tylko w szablonach, w których wywoływane są te ramki pudełek {{Code|{{m|Pudełko}}}}, ale tak tutaj tak zrobiono by było najłatwiej sprawdzić działanie tego typu funkcji. Analogicznie możemy podawać parametry typu jednostki, np.: wywołaniu modułowym {{Code|{{m|Pudełko|Nazwa przestrzeni nazw 2|typ jednostki 2{{=}}Podręcznik|nazwa jednostki 2{{=}}Szablon:Strona|numer jednostki{{=}}2}}}} (ale wtedy jest brana przestrzeń nazw z nazwy jednostki), ale o tym więcej w rozdziałach {{Code|{{sr|#p["Typ jednostki 2"](frame,i)|p=Pudełko}}}} w „{{sr|#Funkcje typu jednostki|p=Pudełko}}”, one definiują dane przestrzenie przedmiotowe, czy dyskusji ale można lub nie użyć parametru dyskusji typu jednostki z wartością niepustą, wtedy wyświetli się nazwa przestrzeni nazw dyskusji. Jeżeli typ jednostki wskazuje na przestrzeń nazw główną, wtedy się liczą parametry nazw jednostek. Typ jednostki nie ma takiej samej wartości dla przestrzeni przedmiotowej, co dyskusji. Również parametry typu jednostki nie powinno się podawać w dziecku w ramce, tylko w rodzicu w szablonie jako parametry, w którym ta ramka jest wywoływana, ale tutaj podano jedynie dla przykładu, jak najłatwiej sprawdzić działanie tych parametrów tej funkcji. Najpierw w funkcji nagłówku brane są parametry nazw przestrzeni nazw, a jeżeli ich nie ma, to parametry typu jednostki, a jeżeli nie ma lub parametry przestrzenne wskazują na przestrzeń główną, i nie ma nazwy jednostki, to generowane są nazwy tej funkcji na podstawie aktualnej strony. === {{Code|p["Nazwa przedmiotowej przestrzeni nazw 2"](frame,...)}} === Funkcja pisze przedmiotową nazwę przestrzeni nazw jakikolwiek nazwy przestrzeni nazw (tzn. nazwę przedmiotową nazwy przestrzenie nazw, czyli nie dyskusji, zamieniana jest na nią samą, czyli identyfikator przestrzeni się nie zmienia, a dyskusji, nie przedmiotową, przekształca się na przedmiotową jej odpowiadającą, czyli w tym przypadku identyfikator przestrzeni zmniejsza się o numer mniej), według, i nie zawsze tylko, podanej w zmiennej {{Code|nazwa przestrzeni nazw}} dla pozycja bazowej w podanych parametrach szablonu rodzicu ramki dziecka, lub dla innej pozycji należy parametr podawać w formie {{Code|nazwa przestrzeni nazw 1}}, {{Code|nazwa przestrzeni nazw 2}}, {{Code|nazwa przestrzeni nazw 3}},..., lub te parametry można podać w postaci ogólnej {{Code|nazwa przestrzeni nazw i}}. W tej funkcji trzeba też podawać parametry nazwy jednostek {{Code|nazwa jednostki}}, {{Code|nazwa jednostki 1}}, {{Code|nazwa jednostki 2}}, {{Code|nazwa jednostki 3}},... Parametry podaje się w parametrach rodzica wywołania tej funkcji {{Code|{{m|Pudełko|Nazwa przedmiotowej przestrzeni nazw 2}}}} (ale ich nie trzeba podawać w dziecku, ale można) i w parametrach dziecka, jeśli chodzi o zmienną {{Code|numer jednostki}}, czyli np.: {{Code|{{m|Pudełko|Nazwa przedmiotowej przestrzeni nazw 2|numer jednostki{{=}}<jakaś liczba całkowita dodatnia>}}}}. Te parametry przestrzenne zamiast w rodzicu w szablonie można podać w ramce dziecka, wtedy parametry dziecka mają pierwszeństwo. Przestrzeń nazw z parametrów nazw przestrzennych po przekształceniu na przedmiotową może odpowiadać wartości przestrzeni głównej, to wtedy odpowiednia przestrzeń nazw z parametru nazwy jednostki się liczy w tej funkcji, wtedy jest liczona nazwa przestrzeni nazw z tego parametru. Gdy parametry przestrzenne lub typ jednostki w drugim podejściu nie wskazują na przestrzeń główną, to wtedy działanie tej funkcji jest podobne do {{Code|{{sr|#p["Nazwa przedmiotowej przestrzeni nazw"](frame,...)|p=Pudełko}}}}. Definicja skrótowa funkcji: <syntaxhighlight lang="lua"> p["Nazwa przedmiotowej przestrzeni nazw 2"]=function(frame,czy_uwzglednic_alternatywna_nazwe,i)...end; </syntaxhighlight> Wtedy ciało funkcji tej, czyli jego definicja w środku, jest: <syntaxhighlight lang="lua"> local pudelko_pomocne_modul=require("Module:Pudełko/Pomocne"); return pudelko_pomocne_modul.Nazwa_przestrzeni_nazw_przedmiotowa_dyskusji_2(frame,czy_uwzglednic_alternatywna_nazwe,i,"przedmiotowa"); </syntaxhighlight> Parametry funkcji: * {{Code|frame}} - tablica ramki tablicy transportu, * {{Code|czy_uwzglednic_alternatywna_nazwe}} - czy ma uwzględniać nazwę przestrzeni nazw domyślną szablonu, dostępne wartości: {{Code|false}}, w której nazwa domyślna nie jest uwzględniana wtedy, oraz {{Code|nil}} i {{Code|true}}, które oznaczają to samo, w tym jeżeli ona jest uwzględniana, wtedy jest brany parametr pierwszy dziecka, który musi istnieć przy takiej wartości tego parametru, tzn. {{Code|{{m|Pudełko|Nazwa przedmiotowej przestrzeni nazw 2|Szablon}}}}, nazwa domyślna zostanie zamieniona na przedmiotową, a jeżeli jest już taka, to żadnej zamiany nie ma, a jeśli nazwa uzyskana nazwy przestrzeni nazw jest w takim przypadku błędna, to brany jest ten element, a jeżeli nazwa domyślna jest błędna, czyli {{Code|{{m|Pudełko|Nazwa przedmiotowej przestrzeni nazw 2|Moja przestrzeń}}}}, wtedy funkcja zwraca stan błędu {{Code|(błąd)}}. * {{Code|i}} - numer zmiennej nazwy przestrzeni nazw. Funkcja wykorzystuje {{Code|{{sr|#p.Nazwa_przestrzeni_nazw_przedmiotowa_dyskusji_2(frame,...)|p=Pudełko/Pomocne}}}} do wyznaczania ogólnego nazwy przestrzeni nazw dla pozycji bazowej i numerkowej, tzn. dla pozycji: jeden, dwa, trzy,..., itd, i ich ogólnej. Parametr ramki tablicy transportu rodzica szablonu: * {{Code|nazwa przestrzeni nazw}}, {{Code|nazwa przestrzeni nazw 1}}, {{Code|nazwa przestrzeni nazw 2}}, {{Code|nazwa przestrzeni nazw 3}},..., {{Code|nazwa przestrzeni nazw i}} - nazwy przestrzeni nazw dla pozycji bazowej oraz zwykłej i ogólnej numerkowej, * {{Code|nazwa jednostki}}, {{Code|nazwa jednostki 1}}, {{Code|nazwa jednostki 2}}, {{Code|nazwa jednostki 3}},... - nazwy jednostek dla pozycji bazowej i numerkowej, * {{Code|typ jednostki}}, {{Code|typ jednostki 1}}, {{Code|typ jednostki 2}}, {{Code|typ jednostki 3}},..., {{Code|typ jednostki i}} - typy jednostek, którym odpowiadają pewne przestrzenie przedmiotowe, dla pozycji bazowej, numerkowej i ogólnej. Parametry ramki tablicy transportu dziecka: * Parametry dziecka są takie same jak rodzica dla funkcji pudełkowej plus tu wymienione, * {{Code|numer jednostki}} - jak parametr {{Code|i}} nie został ustawiony, to wtedy liczy się ta zmienna. Przykłady: <syntaxhighlight lang="mediawiki"> {{Nazwa szablonu|nazwa przestrzeni nazw=Wikibooks|nazwa przestrzeni nazw 1=Szablon|nazwa przestrzeni nazw i=|nazwa jednostki 2=Dyskusja Wikibooks:Strona}} </syntaxhighlight> W dziecku powiedzmy jest wywołanie, i szukamy nazwy przestrzeni nazw o numerze dwa, która została podana, ale istnieje za to jej wersji ogólna {{Code|nazwa przestrzeni nazw i}} i domyślna {{Code|nazwa przestrzeni nazw}}, ale wtedy dla tego numerkowego liczy się to ogólne z {{Code| i}}, a ponieważ ta nazwa jest pusta, więc będziemy liczyli nazwę przestrzeni nazw z {{Code|nazwa jednostki 2}}: <syntaxhighlight lang="mediawiki"> {{#invoke:Pudełko|Nazwa przedmiotowej przestrzeni nazw 2|numer jednostki=2}} </syntaxhighlight> Na podstawie powyższego przykładu otrzymamy wynik o schemacie, nie wyniku, bo tam nie ma zmiennej {{Code|nazwa przestrzeni nazw 1}}, ale jest {{Code|nazwa przestrzeni nazw i}}: <syntaxhighlight lang="mediawiki"> <!-- Ale nie "nazwa przestrzeni nazw 2", bo jej nie ma, ale za to istnieje "nazwa przestrzeni nazw i"; --> <!-- nazwa przestrzeni nazw 2=nazwa przestrzeni nazw i="", a nazwa jednostki 2="Dyskusja Wikibooks:Strona"; --> <!-- Czyli wynik: --> Wikibooks <!-- Widzimy, że wygenerowała się nazwa przestrzeni nazw, którą jest przestrzeń nieprogramowa, ale projektu, wychodząca z nazwy jednostek w tym przypadku z "nazwa jednostki 2"; --> </syntaxhighlight> Nie jest brana w tym powyższym przykładzie zmienna {{Code|nazwa przestrzeni nazw}}, bo jej nie ma, ale za to jest {{Code|nazwa przestrzeni nazw i}}, bo ona występuje jako parametr domyślny ogólny dla parametrów numerkowych. Tytaj jest używana jest zmienna {{Code|nazwa jednostki 2}} do wygenerowania ostatecznego wyniku, bo jak można zauważyć, parametry przestrzenne wskazują na przestrzeń główną, a nazwy jednostek już nie. Przykłady w wikikodzie: * {{Code|{{m|Pudełko|Nazwa przedmiotowej przestrzeni nazw 2|numer jednostki{{=}}2}}}} → {{Tt|{{#invoke:Pudełko|Nazwa przedmiotowej przestrzeni nazw 2|numer jednostki=2}}}} * {{Code|{{m|Pudełko|Nazwa przedmiotowej przestrzeni nazw 2|Dyskusja szablonu|nazwa przestrzeni nazw i{{=}}Moja przestrzeń|numer jednostki{{=}}2}}}} → {{Tt|{{#invoke:Pudełko|Nazwa przedmiotowej przestrzeni nazw 2|Dyskusja szablonu|nazwa przestrzeni nazw i=Moja przestrzeń|numer jednostki=2}}}} * {{Code|{{m|Pudełko|Nazwa przedmiotowej przestrzeni nazw 2|nazwa przestrzeni nazw 2{{=}}Dyskusja|nazwa jednostki 2{{=}}Dyskusja szablonu:Strona|numer jednostki{{=}}2}}}} → {{Tt|{{#invoke:Pudełko|Nazwa przedmiotowej przestrzeni nazw 2|nazwa przestrzeni nazw 2=Dyskusja|nazwa jednostki 2=Dyskusja szablonu:Strona|numer jednostki=2}}}} * {{Code|{{m|Pudełko|Nazwa przedmiotowej przestrzeni nazw 2|nazwa przestrzeni nazw i{{=}}Dyskusja|nazwa jednostki 2{{=}}Dyskusja szablonu:Strona|numer jednostki{{=}}2}}}} → {{Tt|{{#invoke:Pudełko|Nazwa przedmiotowej przestrzeni nazw 2|nazwa przestrzeni nazw i=Dyskusja|nazwa jednostki 2=Dyskusja szablonu:Strona|numer jednostki=2}}}} * {{Code|{{m|Pudełko|Nazwa przedmiotowej przestrzeni nazw 2|Dyskusja szablonu|nazwa przestrzeni nazw{{=}}Dyskusja|nazwa jednostki 2{{=}}Wikibooks:Strona|numer jednostki{{=}}2}}}} → {{Tt|{{#invoke:Pudełko|Nazwa przedmiotowej przestrzeni nazw 2|Dyskusja szablonu|nazwa przestrzeni nazw=Dyskusja|nazwa jednostki 2=Dyskusja Wikibooks:Strona|numer jednostki=2}}}} Powyżej dla przykładu podano parametry nie w rodzicu w szablonie, tylko w dziecku, jeśli chodzi o parametry nazw przestrzeni nazw i nazw jednostek, ale ich się za to nie powinno podawać w tych ramach, tylko w szablonach, w których wywoływane są te ramki pudełek {{Code|{{m|Pudełko}}}}, ale tak tutaj tak zrobiono by było najłatwiej sprawdzić działanie tego typu funkcji. Analogicznie możemy podawać parametry typu jednostki, np.: wywołaniu modułowym {{Code|{{m|Pudełko|Nazwa przedmiotowej przestrzeni nazw 2|typ jednostki 2{{=}}Podręcznik|nazwa jednostki 2{{=}}Dyskusja szablonu:Strona|numer jednostki{{=}}2}}}} (ale wtedy jest brana przestrzeń nazw z nazwy jednostki), ale o tym więcej w rozdziałach {{Code|{{sr|#p["Przedmiotowy typ jednostki 2"](frame,i)|p=Pudełko}}}} w „{{sr|#Funkcje typu jednostki|p=Pudełko}}”, one definiują dane przestrzenie przedmiotowe, ale można użyć parametru dyskusji typu jednostki z wartością niepustą, pustą, czy nawet jej nie podamy, wtedy wyświetli się nazwa przestrzeni nazw przedmiotowej. Jeżeli typ jednostki wskazuje na przestrzeń nazw główną, wtedy się liczą parametry nazw jednostek. Typ jednostki nie ma takiej samej wartości dla przestrzeni przedmiotowej, co dyskusji. Również parametry typu jednostki nie powinno się podawać w dziecku w ramce, tylko w rodzicu w szablonie jako parametry, w którym ta ramka jest wywoływana, ale tutaj podano jedynie dla przykładu, jak najłatwiej sprawdzić działanie tych parametrów tej funkcji. Najpierw w funkcji nagłówku brane są parametry nazw przestrzeni nazw, a jeżeli ich nie ma, to parametry typu jednostki, a jeżeli nie ma lub parametry przestrzenne wskazują na przestrzeń główną, i nie ma nazwy jednostki, to generowane są nazwy tej funkcji na podstawie aktualnej strony. === {{Code|p["Nazwa przestrzeni nazw dyskusji 2"](frame,...)}} === Funkcja pisze nazwę przestrzeni nazw dyskusji jakikolwiek nazwy przestrzeni nazw (tzn. nazwę dyskusji nazwy przestrzenie nazw, czyli nie przedmiotowej, zamieniana jest na nią samą, czyli identyfikator przestrzeni się nie zmienia, a przedmiotową, nie dyskusji, przekształca się na dyskusji jej odpowiadającą, czyli w tym przypadku identyfikator przestrzeni zwiększa się o numer więcej), według, i nie zawsze tylko, podanej w zmiennej {{Code|nazwa przestrzeni nazw}} dla pozycja bazowej w podanych parametrach szablonu rodzicu ramki dziecka, lub dla innej pozycji należy parametr podawać w formie {{Code|nazwa przestrzeni nazw 1}}, {{Code|nazwa przestrzeni nazw 2}}, {{Code|nazwa przestrzeni nazw 3}},..., lub te parametry można podać w postaci ogólnej {{Code|nazwa przestrzeni nazw i}}. W tej funkcji trzeba też podawać parametry nazwy jednostek {{Code|nazwa jednostki}}, {{Code|nazwa jednostki 1}}, {{Code|nazwa jednostki 2}}, {{Code|nazwa jednostki 3}},... Parametry podaje się w parametrach rodzica wywołania tej funkcji {{Code|{{m|Pudełko|Nazwa przestrzeni nazw dyskusji 2}}}} (ale ich nie trzeba podawać w dziecku, ale można) i w parametrach dziecka, jeśli chodzi o zmienną {{Code|numer jednostki}}, czyli np.: {{Code|{{m|Pudełko|Nazwa przestrzeni nazw dyskusji 2|numer jednostki{{=}}<jakaś liczba całkowita dodatnia>}}}}. Te parametry przestrzenne zamiast w rodzicu w szablonie można podać w ramce dziecka, wtedy parametry dziecka mają pierwszeństwo. Przestrzeń nazw z parametrów nazw przestrzennych po przekształceniu może odpowiadać wartości przestrzeni głównej, to wtedy odpowiednia przestrzeń nazw z parametru nazwy jednostki się liczy w tej funkcji, wtedy jest liczona nazwa przestrzeni nazw dyskusji z tego parametru. Gdy parametry przestrzenne lub typ jednostki w drugim podejściu nie wskazują na przestrzeń główną, to wtedy działanie tej funkcji jest podobne do {{Code|{{sr|#p["Nazwa dyskusji przestrzeni nazw"](frame,...)|p=Pudełko}}}}. Definicja skrótowa funkcji: <syntaxhighlight lang="lua"> p["Nazwa przestrzeni nazw dyskusji 2"]=function(frame,czy_uwzglednic_alternatywna_nazwe,i)...end; </syntaxhighlight> Wtedy ciało funkcji tej, czyli jego definicja w środku, jest: <syntaxhighlight lang="lua"> local pudelko_pomocne_modul=require("Module:Pudełko/Pomocne"); return pudelko_pomocne_modul.Nazwa_przestrzeni_nazw_przedmiotowa_dyskusji_2(frame,czy_uwzglednic_alternatywna_nazwe,i,"dyskusja"); </syntaxhighlight> Parametry funkcji: * {{Code|frame}} - tablica ramki tablicy transportu, * {{Code|czy_uwzglednic_alternatywna_nazwe}} - czy ma uwzględniać nazwę przestrzeni nazw domyślną szablonu, dostępne wartości: {{Code|false}}, w której nazwa domyślna nie jest uwzględniana wtedy, oraz {{Code|nil}} i {{Code|true}}, które oznaczają to samo, w tym jeżeli ona jest uwzględniana, wtedy jest brany parametr pierwszy dziecka, który musi istnieć przy takiej wartości tego parametru, tzn. {{Code|{{m|Pudełko|Nazwa przestrzeni nazw dyskusji 2|Szablon}}}}, nazwa domyślna zostanie zamieniona na dyskusji, a jeżeli jest już taka, to nie ma takiej zamiany, a jeśli nazwa uzyskana nazwy przestrzeni nazw jest w takim przypadku błędna, to brany jest ten element, a jeżeli nazwa domyślna jest błędna, czyli {{Code|{{m|Pudełko|Nazwa przestrzeni nazw dyskusji 2|Moja przestrzeń}}}}, wtedy funkcja zwraca stan błędu {{Code|(błąd)}}. * {{Code|i}} - numer zmiennej nazwy przestrzeni nazw. Funkcja wykorzystuje {{Code|{{sr|#p.Nazwa_przestrzeni_nazw_przedmiotowa_dyskusji_2(frame,...)|p=Pudełko/Pomocne}}}} do wyznaczania ogólnego nazwy przestrzeni nazw dla pozycji bazowej i numerkowej, tzn. dla pozycji: jeden, dwa, trzy,..., itd, i ich ogólnej. Parametr ramki tablicy transportu rodzica szablonu: * {{Code|nazwa przestrzeni nazw}}, {{Code|nazwa przestrzeni nazw 1}}, {{Code|nazwa przestrzeni nazw 2}}, {{Code|nazwa przestrzeni nazw 3}},..., {{Code|nazwa przestrzeni nazw i}} - nazwy przestrzeni nazw dla pozycji bazowej oraz zwykłej i ogólnej numerkowej, * {{Code|nazwa jednostki}}, {{Code|nazwa jednostki 1}}, {{Code|nazwa jednostki 2}}, {{Code|nazwa jednostki 3}},... - nazwy jednostek dla pozycji bazowej i numerkowej, * {{Code|typ jednostki}}, {{Code|typ jednostki 1}}, {{Code|typ jednostki 2}}, {{Code|typ jednostki 3}},..., {{Code|typ jednostki i}} - typy jednostek, którym odpowiadają pewne przestrzenie przedmiotowe, dla pozycji bazowej, numerkowej i ogólnej. Parametry ramki tablicy transportu dziecka: * Parametry dziecka są takie same jak rodzica dla funkcji pudełkowej plus tu wymienione, * {{Code|numer jednostki}} - jak parametr {{Code|i}} nie został ustawiony, to wtedy liczy się ta zmienna. Przykłady: <syntaxhighlight lang="mediawiki"> {{Nazwa szablonu|nazwa przestrzeni nazw=Wikibooks|nazwa przestrzeni nazw 1=Szablon|nazwa przestrzeni nazw i=|nazwa jednostki 2=Wikibooks:Strona}} </syntaxhighlight> W dziecku powiedzmy jest wywołanie, i szukamy nazwy przestrzeni nazw o numerze dwa, która została podana, ale istnieje za to jej wersji ogólna {{Code|nazwa przestrzeni nazw i}} i domyślna {{Code|nazwa przestrzeni nazw}}, ale wtedy dla tego numerkowego liczy się to ogólne z {{Code| i}}, a ponieważ ta nazwa jest pusta, więc będziemy liczyli nazwę przestrzeni nazw z {{Code|nazwa jednostki 2}}: <syntaxhighlight lang="mediawiki"> {{#invoke:Pudełko|Nazwa przestrzeni nazw dyskusji 2|numer jednostki=2}} </syntaxhighlight> Na podstawie powyższego przykładu otrzymamy wynik o schemacie, nie wyniku, bo tam nie ma zmiennej {{Code|nazwa przestrzeni nazw 1}}, ale jest {{Code|nazwa przestrzeni nazw i}}: <syntaxhighlight lang="mediawiki"> <!-- Ale nie "nazwa przestrzeni nazw 2", bo jej nie ma, ale za to istnieje "nazwa przestrzeni nazw i"; --> <!-- nazwa przestrzeni nazw 2=nazwa przestrzeni nazw i="", a nazwa jednostki 2="Wikibooks:Strona"; --> <!-- Czyli wynik: --> Dyskusja Wikibooks <!-- Widzimy, że wygenerowała się nazwa przestrzeni nazw, którą jest przestrzeń nieprogramowa, ale dyskusji projektu, wychodząca z nazwy jednostek w tym przypadku z "nazwa jednostki 2"; --> </syntaxhighlight> Nie jest brana w tym powyższym przykładzie zmienna {{Code|nazwa przestrzeni nazw}}, bo jej nie ma, ale za to jest {{Code|nazwa przestrzeni nazw i}}, bo ona występuje jako parametr domyślny ogólny dla parametrów numerkowych. Tytaj jest używana jest zmienna {{Code|nazwa jednostki 2}} do wygenerowania ostatecznego wyniku, bo jak można zauważyć, parametry przestrzenne wskazują na przestrzeń główną, a nazwy jednostek już nie. Przykłady w wikikodzie: * {{Code|{{m|Pudełko|Nazwa przestrzeni nazw dyskusji 2|numer jednostki{{=}}2}}}} → {{Tt|{{#invoke:Pudełko|Nazwa przestrzeni nazw dyskusji 2|numer jednostki=2}}}} * {{Code|{{m|Pudełko|Nazwa przestrzeni nazw dyskusji 2|Szablon|nazwa przestrzeni nazw i{{=}}Moja przestrzeń|numer jednostki{{=}}2}}}} → {{Tt|{{#invoke:Pudełko|Nazwa przestrzeni nazw dyskusji 2|Szablon|nazwa przestrzeni nazw i=Moja przestrzeń|numer jednostki=2}}}} * {{Code|{{m|Pudełko|Nazwa przestrzeni nazw dyskusji 2|nazwa przestrzeni nazw 2{{=}}|nazwa jednostki 2{{=}}Szablon:Strona|numer jednostki{{=}}2}}}} → {{Tt|{{#invoke:Pudełko|Nazwa przestrzeni nazw dyskusji 2|nazwa przestrzeni nazw 2=|nazwa jednostki 2=Szablon:Strona|numer jednostki=2}}}} * {{Code|{{m|Pudełko|Nazwa przestrzeni nazw dyskusji 2|nazwa przestrzeni nazw i{{=}}|nazwa jednostki 2{{=}}Szablon:Strona|numer jednostki{{=}}2}}}} → {{Tt|{{#invoke:Pudełko|Nazwa przestrzeni nazw dyskusji 2|nazwa przestrzeni nazw i=|nazwa jednostki 2=Szablon:Strona|numer jednostki=2}}}} * {{Code|{{m|Pudełko|Nazwa przestrzeni nazw dyskusji 2|Szablon|nazwa przestrzeni nazw{{=}}|nazwa jednostki 2{{=}}Wikibooks:Strona|numer jednostki{{=}}2}}}} → {{Tt|{{#invoke:Pudełko|Nazwa przestrzeni nazw dyskusji 2|Szablon|nazwa przestrzeni nazw=|nazwa jednostki 2=Dyskusja Wikibooks:Strona|numer jednostki=2}}}} Powyżej dla przykładu podano parametry nie w rodzicu w szablonie, tylko w dziecku, jeśli chodzi o parametry nazw przestrzeni nazw i nazw jednostek, ale ich się za to nie powinno podawać w tych ramach, tylko w szablonach, w których wywoływane są te ramki pudełek {{Code|{{m|Pudełko}}}}, ale tak tutaj tak zrobiono by było najłatwiej sprawdzić działanie tego typu funkcji. Analogicznie możemy podawać parametry typu jednostki, np.: wywołaniu modułowym {{Code|{{m|Pudełko|Nazwa przestrzeni nazw dyskusji 2|typ jednostki 2{{=}}Podręcznik|nazwa jednostki 2{{=}}Szablon:Strona|numer jednostki{{=}}2}}}} (ale wtedy jest brana przestrzeń nazw z nazwy jednostki), ale o tym więcej w rozdziałach {{Code|{{sr|#p["Dyskusyjny typ jednostki 3"](frame,i)|p=Pudełko}}}} w „{{sr|#Funkcje typu jednostki|p=Pudełko}}”, one definiują dane przestrzenie dyskusji, ale można użyć parametru dyskusji typu jednostki z obojętnie jaką wartością niepustą, czy pustą, czy nawet jej nie podamy, wtedy wyświetli się nazwa przestrzeni nazw dyskusji. Jeżeli typ jednostki wskazuje na przestrzeń nazw główną, wtedy się liczą parametry nazw jednostek. Typ jednostki nie ma takiej samej wartości dla przestrzeni przedmiotowej, co dyskusji. Również parametry typu jednostki nie powinno się podawać w dziecku w ramce, tylko w rodzicu w szablonie jako parametry, w którym ta ramka jest wywoływana, ale tutaj podano jedynie dla przykładu, jak najłatwiej sprawdzić działanie tych parametrów tej funkcji. Najpierw w funkcji nagłówku brane są parametry nazw przestrzeni nazw, a jeżeli ich nie ma, to parametry typu jednostki, a jeżeli nie ma lub parametry przestrzenne wskazują na przestrzeń główną, i nie ma nazwy jednostki, to generowane są nazwy tej funkcji na podstawie aktualnej strony. == Funkcje pełnych nazw jednostki == === {{Code|p["Pełna nazwa dyskusji jednostki"](frame,i)}} === === {{Code|p["Pełna nazwa przedmiotowa jednostki"](frame,i)}} === === {{Code|p["Pełna nazwa jednostki"](frame,i)}} === == Funkcje pełnych nazw jednostki drugiej wersji == === {{Code|p["Pełna nazwa dyskusji jednostki 2"](frame,i)}} === === {{Code|p["Pełna nazwa przedmiotowa jednostki 2"](frame,i)}} === === {{Code|p["Pełna nazwa jednostki 2"](frame,i)}} === == Funkcje pełnych nazw jednostki trzeciej wersji == === {{Code|p["Pełna nazwa dyskusji jednostki 3"](frame,i)}} === === {{Code|p["Pełna nazwa przedmiotowa jednostki 3"](frame,i)}} === === {{Code|p["Pełna nazwa jednostki 3"](frame,i)}} === == Funkcje nazw jednostki == === {{Code|p["Nazwa jednostki"](frame,i)}} === == Funkcje nazw jednostki drugiej wersji == === {{Code|p["Nazwa jednostki 2"](frame,i)}} === === {{Code|p["Nazwa przedmiotowa jednostki 2"](frame,i)}} === === {{Code|p["Nazwa dyskusji jednostki 2"](frame,i)}} === == Funkcje nazw przestrzeni nazw trzeciej wersji == === {{Code|p["Nazwa przestrzeni nazw 3"](frame,i)}} === Funkcja pisze nazwę przestrzeni nazw, niezależnie, czy to jest przedmiotowa, czy dyskusji, według, i nie zawsze tylko, podanej w zmiennej {{Code|nazwa przestrzeni nazw}} dla pozycja bazowej w podanych parametrach szablonu rodzicu ramki dziecka, lub dla innej pozycji należy parametr podawać w formie {{Code|nazwa przestrzeni nazw 1}}, {{Code|Nazwa przestrzeni nazw 3}}, {{Code|nazwa przestrzeni nazw 3}},..., lub te parametry można podać w postaci ogólnej {{Code|nazwa przestrzeni nazw i}}. W tej funkcji trzeba też podawać parametry nazwy jednostek {{Code|nazwa jednostki}}, {{Code|nazwa jednostki 1}}, {{Code|nazwa jednostki 2}}, {{Code|nazwa jednostki 3}},... Parametry podaje się w parametrach rodzica wywołania tej funkcji {{Code|{{m|Pudełko|Nazwa przestrzeni nazw 3}}}} (ale ich nie trzeba podawać w dziecku, ale można) i w parametrach dziecka, jeśli chodzi o zmienną {{Code|numer jednostki}}, czyli np.: {{Code|{{m|Pudełko|Nazwa przestrzeni nazw 3|numer jednostki{{=}}<jakaś liczba całkowita dodatnia>}}}}. Te parametry przestrzenne zamiast w rodzicu w szablonie można podać w ramce dziecka, wtedy parametry dziecka mają pierwszeństwo. Przestrzeń nazw z parametrów nazw przestrzennych bazowych (bez numerka) może odpowiadać wartości przestrzeni głównej, to wtedy odpowiednia przestrzeń nazw z parametru nazwy jednostki się nie liczy w tej funkcji, aby się liczyła należy użyć funkcji {{Code|{{sr|#p["Nazwa przestrzeni nazw 2"](frame,...)|p=Pudełko}}}}. W tym przypadku funkcja działa jak {{Code|{{sr|#p["Nazwa przestrzeni nazw"](frame,...)|p=Pudełko}}}}. Przestrzeń nazw z parametrów nazw przestrzennych numerkowych może odpowiadać wartości przestrzeni głównej, to wtedy odpowiednia przestrzeń nazw z parametru nazwy jednostki się liczy w tej funkcji, wtedy jest liczona nazwa przestrzeni nazw z tego parametru. Gdy parametry przestrzenne lub typ jednostki w drugim podejściu nie wskazują na przestrzeń główną, to wtedy działanie tej funkcji jest podobne do {{Code|{{sr|#p["Nazwa przestrzeni nazw 2"](frame,...)|p=Pudełko}}}}. Definicja skrótowa funkcji: <syntaxhighlight lang="lua"> p["Nazwa przestrzeni nazw 3"]=function(frame,czy_uwzglednic_alternatywna_nazwe,i)...end; </syntaxhighlight> Wtedy ciało funkcji tej, czyli jego definicja w środku, jest: <syntaxhighlight lang="lua"> -- Jest liczony numer parametru nazwy przestrzeni nazw, domyslnie chodzi tu o numer bazowy parametrów przestrzennych; local numer_jednostki=i or frame.args["numer jednostki"]; local liczba_numeru_jednostki=((numer_jednostki)and(tonumber(numer_jednostki)) or 0); local pudelko_pomocne_modul=require("Module:Pudełko/Pomocne"); -- Liczy nazwę przestrzeni nazw dyskusji na podstawie podanych parametrów; return pudelko_pomocne_modul.Uzyskanie_nazw_jednostki(frame,0,liczba_numeru_jednostki,nil,2); </syntaxhighlight> Parametry funkcji: * {{Code|frame}} - tablica ramki tablicy transportu, * {{Code|czy_uwzglednic_alternatywna_nazwe}} - czy ma uwzględniać nazwę przestrzeni nazw domyślną szablonu, dostępne wartości: {{Code|false}}, w której nazwa domyślna nie jest uwzględniana wtedy, oraz {{Code|nil}} i {{Code|true}}, które oznaczają to samo, w tym jeżeli ona jest uwzględniana, wtedy jest brany parametr pierwszy dziecka, który musi istnieć przy takiej wartości tego parametru, tzn. {{Code|{{m|Pudełko|Nazwa przestrzeni nazw 3|Szablon}}}}, a jeśli nazwa uzyskana nazwy przestrzeni nazw jest w takim przypadku błędna, to brany jest ten element, a jeżeli nazwa domyślna jest błędna, czyli {{Code|{{m|Pudełko|Nazwa przestrzeni nazw 3|Moja przestrzeń}}}}, wtedy funkcja zwraca stan błędu {{Code|(błąd)}}. * {{Code|i}} - numer zmiennej nazwy przestrzeni nazw. Funkcja wykorzystuje {{Code|{{sr|#p.Uzyskanie_nazw_jednostki(frame,...)|p=Pudełko/Pomocne}}}} do wyznaczania ogólnego nazwy przestrzeni nazw dla pozycji bazowej i numerkowej, tzn. dla pozycji: jeden, dwa, trzy,..., itd, i ich ogólnej. Parametr ramki tablicy transportu rodzica szablonu: * {{Code|nazwa przestrzeni nazw}}, {{Code|nazwa przestrzeni nazw 1}}, {{Code|Nazwa przestrzeni nazw 3}}, {{Code|nazwa przestrzeni nazw 3}},..., {{Code|nazwa przestrzeni nazw i}} - nazwy przestrzeni nazw dla pozycji bazowej oraz zwykłej i ogólnej numerkowej, * {{Code|nazwa jednostki}}, {{Code|nazwa jednostki 1}}, {{Code|nazwa jednostki 2}}, {{Code|nazwa jednostki 3}},... - nazwy jednostek dla pozycji bazowej i numerkowej, * {{Code|typ jednostki}}, {{Code|typ jednostki 1}}, {{Code|typ jednostki 2}}, {{Code|typ jednostki 3}},..., {{Code|typ jednostki i}} - typy jednostek, którym odpowiadają pewne przestrzenie przedmiotowe, dla pozycji bazowej, numerkowej i ogólnej, ** {{Code|dyskusja typu jednostki}}, {{Code|dyskusja typu jednostki 1}}, {{Code|dyskusja typ jednostki 2}}, {{Code|dyskusja typ jednostki 3}},..., {{Code|dyskusja typ jednostki i}} - czy dany typ jednostki ma przedstawiać, jeśli niepusta, przestrzeń dyskusji dla pozycji bazowej, numerkowej i ogólnej. Parametry ramki tablicy transportu dziecka: * Parametry dziecka są takie same jak rodzica dla funkcji pudełkowej plus tu wymienione, * {{Code|numer jednostki}} - jak parametr {{Code|i}} nie został ustawiony, to wtedy liczy się ta zmienna. Przykłady: <syntaxhighlight lang="mediawiki"> {{Nazwa szablonu 1|nazwa przestrzeni nazw=Wikibooks|nazwa przestrzeni nazw=|nazwa przestrzeni nazw i=|nazwa jednostki=Szablon:Strona}} ---- {{Nazwa szablonu 2|nazwa przestrzeni nazw=Wikibooks|nazwa przestrzeni nazw 1=Szablon|nazwa przestrzeni nazw i=|nazwa jednostki 2=Wikibooks:Strona}} </syntaxhighlight> W pierwszym wywołaniu {{Code|nazwa przestrzeni nazw}} jest puste, ale dla tego bazowego (bez numerka) szukamy przestrzeni nazw, a więc ta nazwa jest ostateczna. ---- W drugim wywołaniu w dziecku powiedzmy jest wywołanie, i szukamy nazwy przestrzeni nazw o numerze dwa, która została podana, ale istnieje za to jej wersji ogólna {{Code|nazwa przestrzeni nazw i}} i domyślna {{Code|nazwa przestrzeni nazw}}, ale wtedy dla tego numerkowego liczy się to ogólne z {{Code| i}}, a ponieważ ta nazwa jest pusta, więc będziemy liczyli nazwę przestrzeni nazw z {{Code|nazwa jednostki 2}}. Odpowiadająca powyższemu kodowi, powiedzmy wikikod, według ich zawartości, przedstawia się: <syntaxhighlight lang="mediawiki"> {{#invoke:Pudełko|Nazwa przestrzeni nazw 3}} ---- {{#invoke:Pudełko|Nazwa przestrzeni nazw 3|numer jednostki=2}} </syntaxhighlight> Na podstawie powyższego przykładu otrzymamy wynik o schemacie, nie wyniku, bo tam nie ma zmiennej {{Code|nazwa przestrzeni nazw 1}}, ale jest {{Code|nazwa przestrzeni nazw i}}: <syntaxhighlight lang="mediawiki"> <!-- nazwa przestrzeni nazw=""; --> <!-- Czyli wynik: --> <!-- wynik pusty --> <!-- Widzimy, że wygenerowała się nazwa przestrzeni nazw, którą jest przestrzeń nazw główna, jest ciągiem pustym: ""; --> ---- <!-- Ale nie "nazwa przestrzeni nazw 2", bo jej nie ma, ale za to istnieje "nazwa przestrzeni nazw i"; --> <!-- nazwa przestrzeni nazw 2=nazwa przestrzeni nazw i="", a nazwa jednostki 2="Wikibooks:Strona"; --> <!-- Czyli wynik: --> Wikibooks <!-- Widzimy, że wygenerowała się nazwa przestrzeni nazw, którą jest przestrzeń nieprogramowa, ale projektu, wychodząca z nazwy jednostek w tym przypadku z "nazwa jednostki 2"; --> </syntaxhighlight> Dla parametrów numerkowych nie jest brana w tym powyższym przykładzie zmienna {{Code|nazwa przestrzeni nazw 2}}, bo jej nie ma, ale za to jest {{Code|nazwa przestrzeni nazw i}}, bo ona występuje jako parametr domyślny ogólny dla parametrów numerkowych. Tytaj jest używana jest zmienna {{Code|nazwa jednostki 2}} do wygenerowania ostatecznego wyniku, bo jak można zauważyć, parametry przestrzenne wskazują na przestrzeń główną, a nazwy jednostek już nie. Dla parametrów bazowych mamy zmienną {{Code|nazwa przestrzeni nazw}}, ona jest pusta, więc to zostanie wzięte do ostatecznego wyniku. Przykłady w wikikodzie: * {{Code|{{m|Pudełko|Nazwa przestrzeni nazw 3|Szablon|nazwa przestrzeni nazw{{=}}Moja przestrzeń|nazwa jednostki{{=}}Wikibooks:Strona}}}} → {{Tt|{{#invoke:Pudełko|Nazwa przestrzeni nazw 3|Szablon|nazwa przestrzeni nazw=Moja przestrzeń|nazwa jednostki=Wikibooks:Szablon}}}} * {{Code|{{m|Pudełko|Nazwa przestrzeni nazw 3|Szablon|nazwa przestrzeni nazw 2{{=}}Moja przestrzeń|nazwa jednostki 2{{=}}Wikibooks:Strona}|numer jednostki{{=}}2}}}} → {{Tt|{{#invoke:Pudełko|Nazwa przestrzeni nazw 3|Szablon|nazwa przestrzeni nazw 2=Moja przestrzeń|nazwa jednostki 2=Wikibooks:Szablon|numer jednostki=2}}}} * {{Code|{{m|Pudełko|Nazwa przestrzeni nazw 3|nazwa przestrzeni nazw{{=}}|nazwa jednostki{{=}}Wikibooks:Strona}}}} → {{Tt|{{#invoke:Pudełko|Nazwa przestrzeni nazw 3|nazwa przestrzeni nazw=|nazwa jednostki=Wikibooks:Szablon}}}} * {{Code|{{m|Pudełko|Nazwa przestrzeni nazw 3|nazwa przestrzeni nazw 2{{=}}|nazwa jednostki 2{{=}}Wikibooks:Strona|numer jednostki{{=}}2}}}} → {{Tt|{{#invoke:Pudełko|Nazwa przestrzeni nazw 3|nazwa przestrzeni nazw 2=|nazwa jednostki 2=Wikibooks:Szablon|numer jednostki=2}}}} Powyżej dla przykładu podano parametry nie w rodzicu w szablonie, tylko w dziecku, jeśli chodzi o parametry nazw przestrzeni nazw i nazw jednostek, ale ich się za to nie powinno podawać w tych ramach, tylko w szablonach, w których wywoływane są te ramki pudełek {{Code|{{m|Pudełko}}}}, ale tak tutaj tak zrobiono by było najłatwiej sprawdzić działanie tego typu funkcji. Analogicznie możemy podawać parametry typu jednostki, np.: wywołaniu modułowym {{Code|{{m|Pudełko|Nazwa przestrzeni nazw 3|typ jednostki 2{{=}}Podręcznik|nazwa jednostki 2{{=}}Szablon:Strona|numer jednostki{{=}}2}}}} (ale wtedy jest brana przestrzeń nazw z nazwy jednostki), ale o tym więcej w rozdziałach {{Code|{{sr|#p["Typ jednostki 3"](frame,i)|p=Pudełko}}}} w „{{sr|#Funkcje typu jednostki|p=Pudełko}}”, one definiują dane przestrzenie przedmiotowe lub dyskusji, ale można lub nie użyć parametru dyskusji typu jednostki z wartością niepustą, wtedy wyświetli się nazwa przestrzeni nazw dyskusji. Typ jednostki nie ma takiej samej wartości dla przestrzeni przedmiotowej, co dyskusji. Również parametry typu jednostki nie powinno się podawać w dziecku w ramce, tylko w rodzicu w szablonie jako parametry, w którym ta ramka jest wywoływana, ale tutaj podano jedynie dla przykładu, jak najłatwiej sprawdzić działanie tych parametrów tej funkcji. Najpierw w funkcji nagłówku brane są parametry nazw przestrzeni nazw, a jeżeli ich nie ma, to parametry typu jednostki, a jeżeli nie ma lub parametry przestrzenne wskazują na przestrzeń główną, i nie ma nazwy jednostki, to generowane są nazwy tej funkcji na podstawie aktualnej strony. === {{Code|p["Nazwa przedmiotowej przestrzeni nazw 3"](frame,i)}} === Funkcja pisze przedmiotową nazwę przestrzeni nazw jakikolwiek nazwy przestrzeni nazw (tzn. nazwę przedmiotową nazwy przestrzenie nazw, czyli nie dyskusji, zamieniana jest na nią samą, czyli identyfikator przestrzeni się nie zmienia, a dyskusji, nie przedmiotową, przekształca się na przedmiotową jej odpowiadającą, czyli w tym przypadku identyfikator przestrzeni zmniejsza się o numer mniej), według podanej w zmiennej {{Code|nazwa przestrzeni nazw}} dla pozycja bazowej w podanych parametrach szablonu rodzicu ramki dziecka, lub dla innej pozycji należy parametr podawać w formie {{Code|nazwa przestrzeni nazw 1}}, {{Code|nazwa przestrzeni nazw 2}}, {{Code|nazwa przestrzeni nazw 3}},..., lub te parametry można podać w postaci ogólnej {{Code|nazwa przestrzeni nazw i}}. Parametry podaje się w parametrach rodzica wywołania tej funkcji {{Code|{{m|Pudełko|Nazwa przedmiotowej przestrzeni nazw 3}}}} (ale ich nie trzeba podawać w dziecku, ale można) i w parametrach dziecka, jeśli chodzi o zmienną {{Code|numer jednostki}}, czyli np.: {{Code|{{m|Pudełko|Nazwa przedmiotowej przestrzeni nazw 3|numer jednostki{{=}}<jakaś liczba całkowita dodatnia>}}}}. Te parametry przestrzenne zamiast w rodzicu w szablonie można podać w ramce dziecka, wtedy parametry dziecka mają pierwszeństwo. Parametry przestrzenne mogą mogą być podane w postaci przestrzeni przedmiotowej lub dyskusji, ale ta funkcja zawsze ją zamienia na przedmiotową. Przestrzeń nazw z parametrów nazw przestrzennych bazowych (bez numerka) może odpowiadać wartości przestrzeni głównej, to wtedy odpowiednia przestrzeń nazw z parametru nazwy jednostki się nie liczy w tej funkcji, aby się liczyła należy użyć funkcji {{Code|{{sr|#p["Nazwa przedmiotowej przestrzeni nazw 2"](frame,...)|p=Pudełko}}}}. W tym przypadku funkcja działa jak {{Code|{{sr|#p["Nazwa przedmiotowej przestrzeni nazw"](frame,...)|p=Pudełko}}}}. Przestrzeń nazw z parametrów nazw przestrzennych numerkowych może odpowiadać wartości przestrzeni głównej, to wtedy odpowiednia przestrzeń nazw z parametru nazwy jednostki się liczy w tej funkcji, wtedy jest liczona nazwa przestrzeni nazw z tego parametru. Gdy parametry przestrzenne lub typ jednostki w drugim podejściu nie wskazują na przestrzeń główną, to wtedy działanie tej funkcji jest podobne do {{Code|{{sr|#p["Nazwa przedmiotowej przestrzeni nazw 2"](frame,...)|p=Pudełko}}}}. Definicja skrótowa funkcji: <syntaxhighlight lang="lua"> p["Nazwa przedmiotowej przestrzeni nazw 3"]=function(frame,czy_uwzglednic_alternatywna_nazwe,i)...end; </syntaxhighlight> Wtedy ciało funkcji tej, czyli jego definicja w środku, jest: <syntaxhighlight lang="lua"> -- Jest liczony numer parametru nazwy przestrzeni nazw, domyslnie chodzi tu o numer bazowy parametrów przestrzennych; local numer_jednostki=i or frame.args["numer jednostki"]; local liczba_numeru_jednostki=((numer_jednostki)and(tonumber(numer_jednostki)) or 0); local pudelko_pomocne_modul=require("Module:Pudełko/Pomocne"); -- Liczy nazwę przestrzeni nazw przedmiotową na podstawie podanych parametrów; return pudelko_pomocne_modul.Uzyskanie_nazw_jednostki(frame,1,liczba_numeru_jednostki,nil,1); </syntaxhighlight> Parametry funkcji: * {{Code|frame}} - tablica ramki tablicy transportu, * {{Code|czy_uwzglednic_alternatywna_nazwe}} - czy ma uwzględniać nazwę przestrzeni nazw domyślną szablonu, dostępne wartości: {{Code|false}}, w której nazwa domyślna nie jest uwzględniana wtedy, oraz {{Code|nil}} i {{Code|true}}, które oznaczają to samo, w tym jeżeli ona jest uwzględniana, wtedy jest brany parametr pierwszy dziecka, który musi istnieć przy takiej wartości tego parametru, tzn. {{Code|{{m|Pudełko|Nazwa przedmiotowej przestrzeni nazw 3|Dyskusja szablonu}}}} - ta nazwa domyślna zostanie zamieniona na przedmiotową, a jak ona by była przedmiotowa, to żadnej zamiany by nie było, a nazwa uzyskana z nazwy przestrzeni nazw z parametrów przestrzennych jest w takim przypadku błędna, to w takim razie brany jest ten parametr, a jeżeli ta nazwa domyślna jest błędna, czyli {{Code|{{m|Pudełko|Nazwa przedmiotowej przestrzeni nazw 3|Moja przestrzeń}}}}, wtedy funkcja zwraca stan błędu {{Code|(błąd)}}. * {{Code|i}} - numer zmiennej nazwy przestrzeni nazw. Funkcja wykorzystuje {{Code|{{sr|#p.Uzyskanie_nazw_jednostki(frame,...)|p=Pudełko/Pomocne}}}} do wyznaczania ogólnego nazwy przestrzeni nazw dla pozycji bazowej i numerkowej, tzn. dla pozycji: jeden, dwa, trzy,..., itd, i ich ogólnej. Parametr ramki tablicy transportu rodzica szablonu: * {{Code|nazwa przestrzeni nazw}}, {{Code|nazwa przestrzeni nazw 1}}, {{Code|nazwa przestrzeni nazw 2}}, {{Code|nazwa przestrzeni nazw 3}},..., {{Code|nazwa przestrzeni nazw i}} - nazwy przestrzeni nazw dla pozycji bazowej oraz zwykłej i ogólnej numerkowej, * {{Code|typ jednostki}}, {{Code|typ jednostki 1}}, {{Code|typ jednostki 2}}, {{Code|typ jednostki 3}},..., {{Code|typ jednostki i}} - typy jednostek, którym odpowiadają pewne przestrzenie przedmiotowe, dla pozycji bazowej, numerkowej i ogólnej. Parametry ramki tablicy transportu dziecka: * Parametry dziecka są takie same jak rodzica dla funkcji pudełkowej plus tu wymienione, * {{Code|numer jednostki}} - jak parametr {{Code|i}} nie został ustawiony, to wtedy liczy się ta zmienna. Przykłady: <syntaxhighlight lang="mediawiki"> {{Nazwa szablonu 1|nazwa przestrzeni nazw=Wikibooks|nazwa przestrzeni nazw=|nazwa przestrzeni nazw i=|nazwa jednostki=Dyskusja Wikibooks:Strona}} ---- {{Nazwa szablonu 2|nazwa przestrzeni nazw=Wikibooks|nazwa przestrzeni nazw 1=Szablon|nazwa przestrzeni nazw i=|nazwa jednostki 2=Dyskusja Wikibooks:Strona}} </syntaxhighlight> W pierwszym wywołaniu {{Code|nazwa przestrzeni nazw}} jest puste, ale dla tego bazowego (bez numerka) szukamy przestrzeni nazw, a więc ta nazwa jest ostateczna. ---- W drugim wywołaniu w dziecku powiedzmy jest wywołanie, i szukamy nazwy przestrzeni nazw o numerze dwa, która została podana, ale istnieje za to jej wersji ogólna {{Code|nazwa przestrzeni nazw i}} i domyślna {{Code|nazwa przestrzeni nazw}}, ale wtedy dla tego numerkowego liczy się to ogólne z {{Code| i}}, a ponieważ ta nazwa jest pusta, więc będziemy liczyli nazwę przestrzeni nazw z {{Code|nazwa jednostki 2}}. Odpowiadająca powyższemu kodowi, powiedzmy wikikod, według ich zawartości, przedstawia się: <syntaxhighlight lang="mediawiki"> {{#invoke:Pudełko|Nazwa przedmiotowej przestrzeni nazw 3}} ---- {{#invoke:Pudełko|Nazwa przedmiotowej przestrzeni nazw 3|numer jednostki=2}} </syntaxhighlight> Na podstawie powyższego przykładu otrzymamy wynik o schemacie, nie wyniku, bo tam nie ma zmiennej {{Code|nazwa przestrzeni nazw 1}}, ale jest {{Code|nazwa przestrzeni nazw i}}: <syntaxhighlight lang="mediawiki"> <!-- nazwa przestrzeni nazw=""; --> <!-- Czyli wynik: --> <!-- wynik pusty --> <!-- Widzimy, że wygenerowała się nazwa przestrzeni nazw, którą jest przestrzeń nazw główna, jest ciągiem pustym: ""; --> ---- <!-- Ale nie "nazwa przestrzeni nazw 2", bo jej nie ma, ale za to istnieje "nazwa przestrzeni nazw i"; --> <!-- nazwa przestrzeni nazw 2=nazwa przestrzeni nazw i="", a nazwa jednostki 2="Dyskusja Wikibooks:Strona"; --> <!-- Czyli wynik: --> Wikibooks <!-- Widzimy, że wygenerowała się nazwa przestrzeni nazw, którą jest przestrzeń nieprogramowa, ale projektu, wychodząca z nazwy jednostek w tym przypadku z "nazwa jednostki 2"; --> </syntaxhighlight> Dla parametrów numerkowych nie jest brana w tym powyższym przykładzie zmienna {{Code|nazwa przestrzeni nazw 2}}, bo jej nie ma, ale za to jest {{Code|nazwa przestrzeni nazw i}}, bo ona występuje jako parametr domyślny ogólny dla parametrów numerkowych. Tytaj jest używana jest zmienna {{Code|nazwa jednostki 2}} do wygenerowania ostatecznego wyniku, bo jak można zauważyć, parametry przestrzenne wskazują na przestrzeń główną, a nazwy jednostek już nie. Dla parametrów bazowych mamy zmienną {{Code|nazwa przestrzeni nazw}}, ona jest pusta, więc to zostanie wzięte do ostatecznego wyniku. Przykłady w wikikodzie: * {{Code|{{m|Pudełko|Nazwa przedmiotowej przestrzeni nazw 3|Dyskusja szablonu|nazwa przestrzeni nazw{{=}}Moja przestrzeń|nazwa jednostki{{=}}Dyskusja Wikibooks:Strona}}}} → {{Tt|{{#invoke:Pudełko|Nazwa przedmiotowej przestrzeni nazw 3|Dyskusja szablonu|nazwa przestrzeni nazw=Moja przestrzeń||nazwa jednostki=Dyskusja Wikibooks:Szablon}}}} * {{Code|{{m|Pudełko|Nazwa przedmiotowej przestrzeni nazw 3|Dyskusja szablonu|nazwa przestrzeni nazw 2{{=}}Moja przestrzeń|nazwa jednostki 2{{=}}Dyskusja Wikibooks:Strona|numer jednostki{{=}}2}}}} → {{Tt|{{#invoke:Pudełko|Nazwa przedmiotowej przestrzeni nazw 3|Dyskusja szablonu|nazwa przestrzeni nazw 2=Moja przestrzeń||nazwa jednostki 2=Dyskusja Wikibooks:Szablon|numer jednostki=2}}}} * {{Code|{{m|Pudełko|Nazwa przedmiotowej przestrzeni nazw 3|nazwa przestrzeni nazw{{=}}|nazwa jednostki{{=}}Dyskusja Wikibooks:Strona}}}} → {{Tt|{{#invoke:Pudełko|Nazwa przedmiotowej przestrzeni nazw 3|nazwa przestrzeni nazw=|nazwa jednostki=Dyskusja Wikibooks:Szablon}}}} * {{Code|{{m|Pudełko|Nazwa przedmiotowej przestrzeni nazw 3|nazwa przestrzeni nazw 2{{=}}|nazwa jednostki 2{{=}}Dyskusja Wikibooks:Strona|numer jednostki{{=}}2}}}} → {{Tt|{{#invoke:Pudełko|Nazwa przedmiotowej przestrzeni nazw 3|nazwa przestrzeni nazw 2=|nazwa jednostki 2=Dyskusja Wikibooks:Szablon|numer jednostki=2}}}} Powyżej dla przykładu podano parametry nie w rodzicu w szablonie, tylko w dziecku, jeśli chodzi o parametry nazw przestrzeni nazw, ale ich się za to nie powinno podawać w tych ramach, tylko w szablonach, w których wywoływane są te ramki pudełek {{Code|{{m|Pudełko}}}}, ale tak tutaj tak zrobiono by było najłatwiej sprawdzić działanie tego typu funkcji. Analogicznie możemy podawać parametry typu jednostki, np.: wywołaniu modułowym {{Code|{{m|Pudełko|Nazwa przedmiotowej przestrzeni nazw 3|typ jednostki 2{{=}}strona szablonu|numer jednostki{{=}}2}}}}, ale o tym więcej w rozdziałach {{Code|{{sr|#p["Przedmiotowy typ jednostki 3"](frame,i)|p=Pudełko}}}} w „{{sr|#Funkcje typu jednostki|p=Pudełko}}”, one definiują dane przestrzeni przedmiotowe, ale wtedy ta sama nazwa przestrzeni nazw reprezentowana przez {{Parametr|typ jednostki 2|strona szablonu}}, jest zamieniana na to samo, lepiej jest tutaj używać parametrów przestrzennych nazw niż typu jednostki. Tutaj parametr dyskusji typu jednostki bazowy i numerkowy ogólny, czy szczegółowy, nie gra roli, bo nawet, gdy wygenerujemy nazwę przestrzeni dyskusji za pomoca tego parametru, to i tak otrzymamy na samym końcu jego nazwę przedmiotową. Jeżeli typ jednostki bazowy wskazuje na przestrzeń nazw główną, wtedy się nie liczą parametry nazw jednostek, a w przypadku numerkowego, wtedy się liczy. Typ jednostki nie ma takiej samej wartości dla przestrzeni przedmiotowej, co dyskusji. Również parametry typu jednostki nie powinno się podawać w dziecku w ramce, tylko w rodzicu w szablonie jako parametry, w którym ta ramka jest wywoływana, ale tutaj podano jedynie dla przykładu, jak najłatwiej sprawdzić działanie tych parametrów tej funkcji. Najpierw w funkcji nagłówku brane są parametry nazw przestrzeni nazw, a jeżeli ich nie ma, to parametry typu jednostki, a jeżeli nie ma, to generowane są nazwy na podstawie aktualnego modułu. === {{Code|p["Nazwa przestrzeni nazw dyskusji 3"](frame,i)}} === Funkcja pisze nazwę przestrzeni nazw dyskusji jakikolwiek nazwy przestrzeni nazw (tzn. nazwę dyskusji nazwy przestrzenie nazw, czyli nie przedmiotowej, zamieniana jest na nią samą, czyli identyfikator przestrzeni się nie zmienia, a przedmiotową, nie dyskusji, przekształca się na dyskusji jej odpowiadającą, czyli w tym przypadku identyfikator przestrzeni zwiększa się o numer więcej), według, i nie zawsze tylko, podanej w zmiennej {{Code|nazwa przestrzeni nazw}} dla pozycja bazowej w podanych parametrach szablonu rodzicu ramki dziecka, lub dla innej pozycji należy parametr podawać w formie {{Code|nazwa przestrzeni nazw 1}}, {{Code|nazwa przestrzeni nazw 2}}, {{Code|nazwa przestrzeni nazw 3}},..., lub te parametry można podać w postaci ogólnej {{Code|nazwa przestrzeni nazw i}}. W tej funkcji trzeba też podawać parametry nazwy jednostek {{Code|nazwa jednostki}}, {{Code|nazwa jednostki 1}}, {{Code|nazwa jednostki 2}}, {{Code|nazwa jednostki 3}},... Parametry podaje się w parametrach rodzica wywołania tej funkcji {{Code|{{m|Pudełko|Nazwa przestrzeni nazw dyskusji 3}}}} (ale ich nie trzeba podawać w dziecku, ale można) i w parametrach dziecka, jeśli chodzi o zmienną {{Code|numer jednostki}}, czyli np.: {{Code|{{m|Pudełko|Nazwa przestrzeni nazw dyskusji 3|numer jednostki{{=}}<jakaś liczba całkowita dodatnia>}}}}. Te parametry przestrzenne zamiast w rodzicu w szablonie można podać w ramce dziecka, wtedy parametry dziecka mają pierwszeństwo. Przestrzeń nazw z parametrów nazw przestrzennych bazowych (bez numerka) może odpowiadać wartości przestrzeni głównej, to wtedy odpowiednia przestrzeń nazw z parametru nazwy jednostki się nie liczy w tej funkcji, aby się liczyła należy użyć funkcji {{Code|{{sr|#p["Nazwa przestrzeni nazw dyskusji 2"](frame,...)|p=Pudełko}}}}. W tym przypadku funkcja działa jak {{Code|{{sr|#p["Nazwa przestrzeni nazw dyskusji"](frame,...)|p=Pudełko}}}}. Przestrzeń nazw z parametrów nazw przestrzennych numerkowych może odpowiadać wartości przestrzeni głównej, to wtedy odpowiednia przestrzeń nazw z parametru nazwy jednostki się liczy w tej funkcji, wtedy jest liczona nazwa przestrzeni nazw z tego parametru. Gdy parametry przestrzenne lub typ jednostki w drugim podejściu nie wskazują na przestrzeń główną, to wtedy działanie tej funkcji jest podobne do {{Code|{{sr|#p["Nazwa przestrzeni nazw dyskusji 2"](frame,...)|p=Pudełko}}}}. Definicja skrótowa funkcji: <syntaxhighlight lang="lua"> p["Nazwa przestrzeni nazw dyskusji 3"]=function(frame,czy_uwzglednic_alternatywna_nazwe,i)...end; </syntaxhighlight> Wtedy ciało funkcji tej, czyli jego definicja w środku, jest: <syntaxhighlight lang="lua"> -- Jest liczony numer parametru nazwy przestrzeni nazw, domyslnie chodzi tu o numer bazowy parametrów przestrzennych; local numer_jednostki=i or frame.args["numer jednostki"]; local liczba_numeru_jednostki=((numer_jednostki)and(tonumber(numer_jednostki)) or 0); local pudelko_pomocne_modul=require("Module:Pudełko/Pomocne"); -- Liczy nazwę przestrzeni nazw dyskusji na podstawie podanych parametrów; return pudelko_pomocne_modul.Uzyskanie_nazw_jednostki(frame,2,liczba_numeru_jednostki,nil,1); </syntaxhighlight> Parametry funkcji: * {{Code|frame}} - tablica ramki tablicy transportu, * {{Code|czy_uwzglednic_alternatywna_nazwe}} - czy ma uwzględniać nazwę przestrzeni nazw domyślną szablonu, dostępne wartości: {{Code|false}}, w której nazwa domyślna nie jest uwzględniana wtedy, oraz {{Code|nil}} i {{Code|true}}, które oznaczają to samo, w tym jeżeli ona jest uwzględniana, wtedy jest brany parametr pierwszy dziecka, który musi istnieć przy takiej wartości tego parametru, tzn. {{Code|{{m|Pudełko|Nazwa przestrzeni nazw dyskusji 3|Szablon}}}}, nazwa domyślna zostatnie zamieniona na dyskusji, a jeśli jest już taka, to takiej transfomacji nie ma, a jeśli nazwa uzyskana nazwy przestrzeni nazw jest w takim przypadku błędna, to wzięty jest ten parametr, a jeżeli nazwa domyślna jest błędna, czyli {{Code|{{m|Pudełko|Nazwa przestrzeni nazw dyskusji 3|Moja przestrzeń}}}}, wtedy funkcja zwraca stan błędu {{Code|(błąd)}}. * {{Code|i}} - numer zmiennej nazwy przestrzeni nazw. Funkcja wykorzystuje {{Code|{{sr|#p.Uzyskanie_nazw_jednostki(frame,...)|p=Pudełko/Pomocne}}}} do wyznaczania ogólnego nazwy przestrzeni nazw dla pozycji bazowej i numerkowej, tzn. dla pozycji: jeden, dwa, trzy,..., itd, i ich ogólnej. Parametr ramki tablicy transportu rodzica szablonu: * {{Code|nazwa przestrzeni nazw}}, {{Code|nazwa przestrzeni nazw 1}}, {{Code|nazwa przestrzeni nazw 2}}, {{Code|nazwa przestrzeni nazw 3}},..., {{Code|nazwa przestrzeni nazw i}} - nazwy przestrzeni nazw dla pozycji bazowej oraz zwykłej i ogólnej numerkowej, * {{Code|nazwa jednostki}}, {{Code|nazwa jednostki 1}}, {{Code|nazwa jednostki 2}}, {{Code|nazwa jednostki 3}},... - nazwy jednostek dla pozycji bazowej i numerkowej, * {{Code|typ jednostki}}, {{Code|typ jednostki 1}}, {{Code|typ jednostki 2}}, {{Code|typ jednostki 3}},..., {{Code|typ jednostki i}} - typy jednostek, którym odpowiadają pewne przestrzenie przedmiotowe, dla pozycji bazowej, numerkowej i ogólnej. Parametry ramki tablicy transportu dziecka: * Parametry dziecka są takie same jak rodzica dla funkcji pudełkowej plus tu wymienione, * {{Code|numer jednostki}} - jak parametr {{Code|i}} nie został ustawiony, to wtedy liczy się ta zmienna. Przykłady: <syntaxhighlight lang="mediawiki"> {{Nazwa szablonu 1|nazwa przestrzeni nazw=Wikibooks|nazwa przestrzeni nazw=|nazwa przestrzeni nazw i=|nazwa jednostki=Szablon:Strona}} ---- {{Nazwa szablonu 2|nazwa przestrzeni nazw=Wikibooks|nazwa przestrzeni nazw 1=Szablon|nazwa przestrzeni nazw i=|nazwa jednostki 2=Wikibooks:Strona}} </syntaxhighlight> W pierwszym wywołaniu {{Code|nazwa przestrzeni nazw}} jest puste, ale dla tego bazowego (bez numerka) szukamy przestrzeni nazw, a więc ta nazwa jest ostateczna. ---- W drugim wywołaniu w dziecku powiedzmy jest wywołanie, i szukamy nazwy przestrzeni nazw o numerze dwa, która została podana, ale istnieje za to jej wersji ogólna {{Code|nazwa przestrzeni nazw i}} i domyślna {{Code|nazwa przestrzeni nazw}}, ale wtedy dla tego numerkowego liczy się to ogólne z {{Code| i}}, a ponieważ ta nazwa jest pusta, więc będziemy liczyli nazwę przestrzeni nazw z {{Code|nazwa jednostki 2}}. Odpowiadająca powyższemu kodowi, powiedzmy wikikod, według ich zawartości, przedstawia się: <syntaxhighlight lang="mediawiki"> {{#invoke:Pudełko|Nazwa przestrzeni nazw 3}} ---- {{#invoke:Pudełko|Nazwa przestrzeni nazw 3|numer jednostki=2}} </syntaxhighlight> Na podstawie powyższego przykładu otrzymamy wynik o schemacie, nie wyniku, bo tam nie ma zmiennej {{Code|nazwa przestrzeni nazw 1}}, ale jest {{Code|nazwa przestrzeni nazw i}}: <syntaxhighlight lang="mediawiki"> <!-- nazwa przestrzeni nazw=""; --> <!-- Czyli wynik: --> Dyskusja <!-- Widzimy, że wygenerowała się nazwa przestrzeni nazw, którą jest przestrzeń nazw niegłówna, jest ciągiem niepustym; --> ---- <!-- Ale nie "nazwa przestrzeni nazw 2", bo jej nie ma, ale za to istnieje "nazwa przestrzeni nazw i"; --> <!-- nazwa przestrzeni nazw 2=nazwa przestrzeni nazw i="", a nazwa jednostki 2="Wikibooks:Strona"; --> <!-- Czyli wynik: --> Dyskusja Wikibooks <!-- Widzimy, że wygenerowała się nazwa przestrzeni nazw, którą jest przestrzeń nieprogramowa, ale projektu, wychodząca z nazwy jednostek w tym przypadku z "nazwa jednostki 2"; --> </syntaxhighlight> Dla parametrów numerkowych nie jest brana w tym powyższym przykładzie zmienna {{Code|nazwa przestrzeni nazw 2}}, bo jej nie ma, ale za to jest {{Code|nazwa przestrzeni nazw i}}, bo ona występuje jako parametr domyślny ogólny dla parametrów numerkowych. Tytaj jest używana jest zmienna {{Code|nazwa jednostki 2}} do wygenerowania ostatecznego wyniku, bo jak można zauważyć, parametry przestrzenne wskazują na przestrzeń główną, a nazwy jednostek już nie. Dla parametrów bazowych mamy zmienną {{Code|nazwa przestrzeni nazw}}, ona jest pusta, więc to zostanie wzięte do ostatecznego wyniku. Przykłady w wikikodzie: * {{Code|{{m|Pudełko|Nazwa przestrzeni nazw dyskusji 3|Szablon|nazwa przestrzeni nazw{{=}}Moja przestrzeń|nazwa jednostki{{=}}Wikibooks:Strona}}}} → {{Tt|{{#invoke:Pudełko|Nazwa przestrzeni nazw dyskusji 3|Szablon|nazwa przestrzeni nazw=Moja przestrzeń|nazwa jednostki=Wikibooks:Szablon}}}} * {{Code|{{m|Pudełko|Nazwa przestrzeni nazw dyskusji 3|Szablon|nazwa przestrzeni nazw 2{{=}}Moja przestrzeń|nazwa jednostki 2{{=}}Wikibooks:Strona|numer jednostki{{=}}2}}}} → {{Tt|{{#invoke:Pudełko|Nazwa przestrzeni nazw dyskusji 3|Szablon|nazwa przestrzeni nazw 2=Moja przestrzeń|nazwa jednostki 2=Wikibooks:Szablon|numer jednostki=2}}}} * {{Code|{{m|Pudełko|Nazwa przestrzeni nazw dyskusji 3|nazwa przestrzeni nazw{{=}}|nazwa jednostki{{=}}Wikibooks:Strona}}}} → {{Tt|{{#invoke:Pudełko|Nazwa przestrzeni nazw dyskusji 3|nazwa przestrzeni nazw=|nazwa jednostki=Wikibooks:Szablon}}}} * {{Code|{{m|Pudełko|Nazwa przestrzeni nazw dyskusji 3|nazwa przestrzeni nazw 2{{=}}|nazwa jednostki 2{{=}}Wikibooks:Strona|numer jednostki{{=}}2}}}} → {{Tt|{{#invoke:Pudełko|Nazwa przestrzeni nazw dyskusji 3|nazwa przestrzeni nazw 2=|nazwa jednostki 2=Wikibooks:Szablon|numer jednostki=2}}}} Powyżej dla przykładu podano parametry nie w rodzicu w szablonie, tylko w dziecku, jeśli chodzi o parametry nazw przestrzeni nazw i nazw jednostek, ale ich się za to nie powinno podawać w tych ramach, tylko w szablonach, w których wywoływane są te ramki pudełek {{Code|{{m|Pudełko}}}}, ale tak tutaj tak zrobiono by było najłatwiej sprawdzić działanie tego typu funkcji. Analogicznie możemy podawać parametry typu jednostki, np.: wywołaniu modułowym {{Code|{{m|Pudełko|Nazwa przestrzeni nazw dyskusji 3|typ jednostki 2{{=}}Podręcznik|nazwa jednostki 2{{=}}Szablon:Strona|numer jednostki{{=}}2}}}} (ale wtedy jest brana przestrzeń nazw z nazwy jednostki), ale o tym więcej w rozdziałach {{Code|{{sr|#p["Dyskusyjny typ jednostki 3"](frame,i)|p=Pudełko}}}} w „{{sr|#Funkcje typu jednostki|p=Pudełko}}”, one definiują dane przestrzenie dyskusji, ale można użyć parametru dyskusji typu jednostki z obojętnie jaką wartością niepustą, czy pustą, czy nawet jej nie podamy, wtedy wyświetli się nazwa przestrzeni nazw dyskusji. Jeżeli typ jednostki bazowy wskazuje na przestrzeń nazw główną, wtedy się nie liczą parametry nazw jednostek, a w przypadku numerkowego, wtedy się liczy. Typ jednostki nie ma takiej samej wartości dla przestrzeni przedmiotowej, co dyskusji. Również parametry typu jednostki nie powinno się podawać w dziecku w ramce, tylko w rodzicu w szablonie jako parametry, w którym ta ramka jest wywoływana, ale tutaj podano jedynie dla przykładu, jak najłatwiej sprawdzić działanie tych parametrów tej funkcji. Najpierw w funkcji nagłówku brane są parametry nazw przestrzeni nazw, a jeżeli ich nie ma, to parametry typu jednostki, a jeżeli nie ma lub parametry przestrzenne wskazują na przestrzeń główną, i nie ma nazwy jednostki, to generowane są nazwy tej funkcji na podstawie aktualnej strony. == Funkcje nazw jednostki trzeciej wersji == === {{Code|p["Nazwa jednostki 3"](frame,i)}} === === {{Code|p["Nazwa przedmiotowa jednostki 3"](frame,i)}} === === {{Code|p["Nazwa dyskusji jednostki 3"](frame,i)}} === == Funkcje typu jednostki == === {{Code|p["Typ jednostki"](frame,i)}} === === {{Code|p["Typ jednostki 2"](frame,i)}} === === {{Code|p["Typ jednostki 3"](frame,i)}} === === Funkcje typu jednostki przedmiotowe === ==== {{Code|p["Przedmiotowy typ jednostki"](frame,i)}} ==== ==== {{Code|p["Przedmiotowy typ jednostki 2"](frame,i)}} ==== ==== {{Code|p["Przedmiotowy typ jednostki 3"](frame,i)}} ==== === Fukcje typu jednostki dyskusji === ==== {{Code|p["Dyskusyjny typ jednostki"](frame,i)}} ==== ==== {{Code|p["Dyskusyjny typ jednostki 2"](frame,i)}} ==== ==== {{Code|p["Dyskusyjny typ jednostki 3"](frame,i)}} ==== == Funkcje chech pudełka == === {{Code|p["Cecha pudełka"](frame)}} === === {{Code|p["Przedmiotowa cecha pudełka"](frame)}} === === {{Code|p["Dyskusyjna cecha pudełka"](frame)}} === == Fukcje ogólnego pudełka == === {{Code|p["Ogólne pudełko"](frame)}} === == Funkcje ogólne == === {{Code|p["Tekst pudełka"](frame)}} === == Funkcje błędów pudełka == === {{Code|p["Błędy pudełka"](frame)}} === === {{Code|p["Przedmiotowe błędy pudełka"](frame)}} === === {{Code|p["Dyskusyjne błędy pudełka"](frame)}} === == Funkcje nazw stron == === {{Code|p["Nazwa strony głównej projektu"](frame,i)}} === === {{Code|p["Nazwa strony głównej dla dzieci projektu"](frame,i)}} === == Funkcje kodów == === {{Code|p["Kod języka"](frame,i)}} === === {{Code|p["Kod projektu"](frame,i)}} === === {{Code|p["Klucz projektu"](frame,i)}} === == Funkcje wiki == === {{Code|p["Inny niż język bieżący wiki"](frame)}} === === {{Code|p["Inne niż lokalne wiki"](frame)}} === === {{Code|p["Inne niż bieżące wiki"](frame)}} === == Funkcje typów parametrów, czy podane je == === {{Code|p["Podano parametry nienazwane"](frame)}} === === {{Code|p["Podano parametry numerowane"](frame)}} === === {{Code|p["Podano parametry nazwane"](frame)}} === == Funkcje kodów tego projektu == === {{Code|p["Kod projektu tego projektu"](frame)}} === === {{Code|p["Kod języka tego projektu"](frame)}} === === {{Code|p["Klucz projektu tego projektu"](frame)}} === == Funkcje stron == === {{Code|p["Strona główna tego projektu"](frame)}} === === {{Code|p["Strona główna dla dzieci tego projektu"](frame)}} === == Funkcje nazw stron drugiej wersji == === {{Code|p["Nazwa strony głównej dla dzieci projektu 2"](frame)}} === === {{Code| p["Nazwa strony głównej projektu 2"](frame)}} === {{BrClear}} <noinclude><!-- -->{{ProstaStronaKoniec}}<!-- -->{{Kategoria|Opisy funkcji, w Lua w Scribunto, w modułach}}<!-- --></noinclude> mclhgiixj3l9xdbtbw2ug6gnk7zew1x 540474 540473 2026-04-24T11:31:17Z Persino 2851 540474 wikitext text/x-wiki <noinclude>{{ProstaStronaStart | nagłówek = {{Podrozdział|{{ld2|Pudełko}}|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 pudelko_modul=require("Module:Pudełko"); </syntaxhighlight> dzięki, któremu można wypisywać funkcje należącego do niego. Posługuje się na parametrach pudełkowych {{Parametr|nazwa przestrzeni nazw}} (czy też bez numerka {{Parametr|nazwa przestrzeni nazw i}} dla tego numerowanego) lub te z numerkiem po jednej spacji w nich (ale nie dla tego z końcówką {{Code| i}}) mogą zostać użyte jako parametry szablonu. Moduł {{Code|{{ld2|Pudełko}}}} przedstawia funkcje nazw w oparciu o funkcje nazw {{Code|{{ld2|Nazwy}}}}, generuje on nazwy za pomocą parametrów pudełkowych podanych poniżej. Parametr {{Parametr|nazwa jednostki}} (lub parametr {{Parametr|cel}} dla numerka tego pierwszego, tego alternatywnego), lub te z numerkiem po jednej spacji w nazwie parametru, albo numerowane numerkami {{Code|1}}, {{Code|2}},..., mogą zostać użyte jako parametry szablonu. Parametry określające rodzaj jednostki {{Parametr|typ jednostki}} z {{Parametr|dyskusja typu jednostki}}, itp. w wersjach z numerkiem po jednej spacji w nich mogą zostać użyte jako parametry szablonu. A te tymi numerowanymi liczbami naturalnymi {{Tt|nazwy jednostki}} od jedynki wzwyż poprzez szablon, w którym są one użyte, one też mogą być użyte z dwukropkiem, te numerowane, na samym początku nazwy, wtedy one są traktowane jako pełne nazwy strony, i wtedy one nie zostaną z interpretowane, że do nich trzeba użyć parametr odpowiedni z nazwą przetrzeni nazw z tego numerowanego, czy ogólny, aby utworzyć znów inną pełną nazwę strony dla tego numerka. Zestawienie: * {{Code|nazwa przestrzeni nazw}} i {{Code|nazwa przestrzeni nazw i}} (ogólna nazwa przestrzeni nazw dla wszystkich numerków, i tych numerowanych jednostek) - i to pierwsze z numerkiem, tzn. {{Code|nazwa przestrzeni nazw 1}}, {{Code|nazwa przestrzeni nazw 2}}, ..., * {{Code|nazwa jednostki}} - i te z numerkiem: {{Code|nazwa jednostki 1}}, {{Code|nazwa jednostki 2}}, ..., lub gdy jest zamiast tego parametrem numerowany, {{Code|1}}, {{Code|2}},..., który dla tego pierwszego może być uznany jako: {{Code|cel}} {{=}} {{Code|1}}, * {{Code|typ jednostki}} (parametr bazowy) i {{Code|typ jednostki i}} (parametr domyślny numerkowy) - i te z numerkiem: {{Code|typ jednostki 1}}, {{Code|typ jednostki 2}}, ..., tzn. gdy chcemy określić z jakim typem jednostki mamy do czynienia w zależności do jakiej przestrzeni nazw należy, a w danej, czy jest on np. programowy, czy tylko jest opisem, jak to bywa w szablonach {{Np|Template|link=tak}}, podobnie jest w przypadku {{Np|Module|link=tak}}, czy jak jest w innych przestrzeniach nazw, ** {{Code|dyskusja typu jednostki}} (parametr bazowy) i {{Code|dyskusja typu jednostki i}} (parametr domyślny numerkowy) - i te z numerkiem: {{Code|dyskusja typu jednostki 1}}, {{Code|dyskusja typu jednostki 2}}, ..., gdy chcemy określić wartością niepustą,że chodzi tutaj o typ jednostki. == {{Code|p.CzyNiepoprawnaNazwa(nazwa_jednostki)}} == Funkcja sprawdzajaca, czy jest poprawnie podana nazwa jednostki, czy ma poprawną nazwę. Znakami tymi, z których nie powinna składać się nazwa jest {{Code|<nowiki>{}<>|[]#\n</nowiki>}} i dodatkowo znak {{Code|&#127;}} (kod {{Code|{{Nowiki|&#127;}}}}). Też nie może składać się z trzech znaków tyldy, tzn. {{Code|<nowiki>~~~</nowiki>}}. Również w swojej budowie nie może składać się ze kodów {{Strong|HTML}} literowych o wzorze {{Code|{{Nowiki|&(%a+);}}}}. Natomiast może składać się z {{Code|{{Nowiki|&#(%d+);}}}} i {{Code|{{Nowiki|&#x(%x+);}}}}, ale w pierw te kody muszą być zamienione na normalne znaki. Skrótowa definicja funkcji: <syntaxhighlight lang="lua"> function p.CzyNiepoprawnaNazwa(nazwa_jednostki)...end; </syntaxhighlight> Wtedy ciało funkcji tej, czyli jego definicja w środku, jest: <syntaxhighlight lang="lua"> -- Moduł: "Moduł:Html/dane", służy do ładowania znaku o kodzie HTML "&#127;"; local html_dane_modul=mw.loadData("Module:Html/dane"); return mw.ustring.match(nazwa_jednostki,"[{}<>|%[%]#\n"..html_dane_modul.znak_127.."]+") or mw.ustring.match(nazwa_jednostki,"~~~") or mw.ustring.match(nazwa_jednostki,"&(%a+);"); </syntaxhighlight> Parametry: * {{Code|nazwa_jednostki}} - nazwa jednostki do sprawdzenia. Przykłady: <syntaxhighlight lang="lua"> local pudelko_modul=require("Module:Pudełko"); -- Podana przykładowa niepoprawna nazwa jedostki local nazwa_jednostki="Nazwa pliku [[Nazwa linku w pliku]]"; -- Fukcja zwróci wartość: local czy_poprawna_nazwa=true; local czy_poprawna_nazwa=pudelko_modul.CzyNiepoprawnaNazwa(nazwa_jednostki); </syntaxhighlight> == Funkcje nazw przestrzeni nazw == === {{Code|p["Nazwa przestrzeni nazw"](frame,...)}} === Funkcja pisze nazwę przestrzeni nazw, niezależnie, czy to jest przedmiotowa, czy dyskusji, według podanej w zmiennej {{Code|nazwa przestrzeni nazw}} dla pozycja bazowej w podanych parametrach szablonu rodzicu ramki dziecka, lub dla innej pozycji należy parametr podawać w formie {{Code|nazwa przestrzeni nazw 1}}, {{Code|nazwa przestrzeni nazw 2}}, {{Code|nazwa przestrzeni nazw 3}},..., lub te parametry można podać w postaci ogólnej {{Code|nazwa przestrzeni nazw i}}. Parametry podaje się w parametrach rodzica wywołania tej funkcji {{Code|{{m|Pudełko|Nazwa przestrzeni nazw}}}} (ale ich nie trzeba podawać w dziecku, ale można) i w parametrach dziecka, jeśli chodzi o zmienną {{Code|numer jednostki}}, czyli np.: {{Code|{{m|Pudełko|Nazwa przestrzeni nazw|numer jednostki{{=}}<jakaś liczba całkowita dodatnia>}}}}. Te parametry przestrzenne zamiast w rodzicu w szablonie można podać w ramce dziecka, wtedy parametry dziecka mają pierwszeństwo. Przestrzeń nazw z parametrów nazw przestrzennych może odpowiadać wartości przestrzeni głównej, to wtedy odpowiednia przestrzeń nazw z parametru nazwy jednostki się nie liczy w tej funkcji, aby się liczyła należy użyć funkcji {{Code|{{sr|#p["Nazwa przestrzeni nazw 2"](frame,...)|p=Pudełko}}}}. Definicja skrótowa funkcji: <syntaxhighlight lang="lua"> p["Nazwa przestrzeni nazw"]=function(frame,czy_uwzglednic_alternatywna_nazwe,i)...end; </syntaxhighlight> Wtedy ciało funkcji tej, czyli jego definicja w środku, jest: <syntaxhighlight lang="lua"> -- Jest liczony numer parametru nazwy przestrzeni nazw, domyslnie chodzi tu o numer bazowy parametrów przestrzennych; local numer_jednostki=i or frame.args["numer jednostki"]; local liczba_numer_jednostki=((numer_jednostki)and(tonumber(numer_jednostki))or 0); local pudelko_pomocne_modul=require("Module:Pudełko/Pomocne"); -- Liczy nazwę przestrzeni nazw na podstawie podanych parametrów; return pudelko_pomocne_modul.Nazwa_przestrzeni_nazw(frame,0, czy_uwzglednic_alternatywna_nazwe,liczba_numer_jednostki); </syntaxhighlight> Parametry funkcji: * {{Code|frame}} - tablica ramki tablicy transportu, * {{Code|czy_uwzglednic_alternatywna_nazwe}} - czy ma uwzględniać nazwę przestrzeni nazw domyślną szablonu, dostępne wartości: {{Code|false}}, w której nazwa domyślna nie jest uwzględniana wtedy, oraz {{Code|nil}} i {{Code|true}}, które oznaczają to samo, w tym jeżeli ona jest uwzględniana, wtedy jest brany parametr pierwszy dziecka, który musi istnieć przy takiej wartości tego parametru, tzn. {{Code|{{m|Pudełko|Nazwa przestrzeni nazw|Szablon}}}}, a ten element jest używany, gdy nazwa uzyskana nazwy przestrzeni nazw jest w takim przypadku błędna, a jeżeli wtedy nazwa domyślna jest błędna, czyli {{Code|{{m|Pudełko|Nazwa przestrzeni nazw|Moja przestrzeń}}}}, wtedy funkcja zwraca stan błędu {{Code|(błąd)}}. * {{Code|i}} - numer zmiennej nazwy przestrzeni nazw. Funkcja wykorzystuje {{Code|{{sr|#p.Nazwa_przestrzeni_nazw(frame,...)|p=Pudełko/Pomocne}}}} do wyznaczania ogólnego nazwy przestrzeni nazw dla pozycji bazowej i numerkowej, tzn. dla pozycji: jeden, dwa, trzy,..., itd, i ich ogólnej. Parametr ramki tablicy transportu rodzica szablonu: * {{Code|nazwa przestrzeni nazw}}, {{Code|nazwa przestrzeni nazw 1}}, {{Code|nazwa przestrzeni nazw 2}}, {{Code|nazwa przestrzeni nazw 3}},..., {{Code|nazwa przestrzeni nazw i}} - nazwy przestrzeni nazw dla pozycji bazowej oraz zwykłej i ogólnej numerkowej, * {{Code|typ jednostki}}, {{Code|typ jednostki 1}}, {{Code|typ jednostki 2}}, {{Code|typ jednostki 3}},..., {{Code|typ jednostki i}} - typy jednostek, którym odpowiadają pewne przestrzenie przedmiotowe, dla pozycji bazowej, numerkowej i ogólnej, ** {{Code|dyskusja typu jednostki}}, {{Code|dyskusja typu jednostki 1}}, {{Code|dyskusja typ jednostki 2}}, {{Code|dyskusja typ jednostki 3}},..., {{Code|dyskusja typ jednostki i}} - czy dany typ jednostki ma przedstawiać, jeśli niepusta, przestrzeń dyskusji dla pozycji bazowej, numerkowej i ogólnej. Parametry ramki tablicy transportu dziecka: * Parametry dziecka są takie same jak rodzica dla funkcji pudełkowej plus tu wymienione, * {{Code|numer jednostki}} - jak parametr {{Code|i}} nie został ustawiony, to wtedy liczy się ta zmienna. Przykłady: <syntaxhighlight lang="mediawiki"> {{Nazwa szablonu|nazwa przestrzeni nazw=Wikibooks|nazwa przestrzeni nazw 2=Szablon|nazwa przestrzeni nazw i=Moduł}} </syntaxhighlight> W dziecku powiedzmy jest wywołanie, i szukamy nazwy przestrzeni nazw o numerze dwa, która nie została podana, ale istnieje za to jej wersji ogólna {{Code|nazwa przestrzeni nazw i}} i domyślna {{Code|nazwa przestrzeni nazw}}: <syntaxhighlight lang="mediawiki"> {{#invoke:Pudełko|Nazwa przestrzeni nazw|numer jednostki=1}} </syntaxhighlight> Na podstawie powyższego przykładu otrzymamy wynik o schemacie, nie wyniku, bo tam nie ma zmiennej {{Code|nazwa przestrzeni nazw 1}}, ale jest {{Code|nazwa przestrzeni nazw i}}: <syntaxhighlight lang="mediawiki"> <!-- Ale nie "nazwa przestrzeni nazw", bo jej nie ma, ale za to istnieje "nazwa przestrzeni nazw i"; --> <!-- nazwa przestrzeni nazw 2=nazwa przestrzeni nazw i=Moduł; --> <!-- Czyli wynik: --> Moduł <!-- Widzimy, że wygenerowała się nazwa przestrzeni nazw, którą jest przestrzeń programowa, którą również jest "Szablon"; --> </syntaxhighlight> Nie jest brana w tym powyższym przykładzie zmienna {{Code|nazwa przestrzeni nazw}}, bo jej nie ma, ale za to jest {{Code|nazwa przestrzeni nazw i}}, bo ona występuje jako parametr domyślny ogólny dla parametrów numerkowych. Przykłady w wikikodzie: * {{Code|{{m|Pudełko|Nazwa przestrzeni nazw|numer jednostki{{=}}2}}}} → {{Tt|{{#invoke:Pudełko|Nazwa przestrzeni nazw|numer jednostki=2}}}} * {{Code|{{m|Pudełko|Nazwa przestrzeni nazw|Szablon|nazwa przestrzeni nazw i{{=}}Moja przestrzeń|numer jednostki{{=}}2}}}} → {{Tt|{{#invoke:Pudełko|Nazwa przestrzeni nazw|Szablon|nazwa przestrzeni nazw i=Moja przestrzeń|numer jednostki=2}}}} * {{Code|{{m|Pudełko|Nazwa przestrzeni nazw|nazwa przestrzeni nazw 2{{=}}Szablon|numer jednostki{{=}}2}}}} → {{Tt|{{#invoke:Pudełko|Nazwa przestrzeni nazw|nazwa przestrzeni nazw 2=Szablon|numer jednostki=2}}}} * {{Code|{{m|Pudełko|Nazwa przestrzeni nazw|nazwa przestrzeni nazw 2{{=}}Szablon|numer jednostki{{=}}2}}}} → {{Tt|{{#invoke:Pudełko|Nazwa przestrzeni nazw|nazwa przestrzeni nazw i=Szablon|numer jednostki=2}}}} * {{Code|{{m|Pudełko|Nazwa przestrzeni nazw|nazwa przestrzeni nazw{{=}}Szablon|numer jednostki{{=}}2}}}} → {{Tt|{{#invoke:Pudełko|Nazwa przestrzeni nazw|nazwa przestrzeni nazw=Szablon|numer jednostki=2}}}} Powyżej dla przykładu podano parametry nie w rodzicu w szablonie, tylko w dziecku, jeśli chodzi o parametry nazw przestrzeni nazw, ale ich się za to nie powinno podawać w tych ramach, tylko w szablonach, w których wywoływane są te ramki pudełek {{Code|{{m|Pudełko}}}}, ale tak tutaj tak zrobiono by było najłatwiej sprawdzić działanie tego typu funkcji. Analogicznie możemy podawać parametry typu jednostki, np.: wywołaniu modułowym {{Code|{{m|Pudełko|Nazwa przestrzeni nazw|typ jednostki 2{{=}}strona szablonu|numer jednostki{{=}}2}}}}, ale o tym więcej w rozdziałach {{Code|{{sr|#p["Typ jednostki"](frame,i)|p=Pudełko}}}} w „{{sr|#Funkcje typu jednostki|p=Pudełko}}”, one definiują dane przestrzenie przedmiotowe, czy dyskusji, ale można lub nie użyć parametru dyskusji typu jednostki z wartością niepustą, wtedy wyświetli się nazwa przestrzeni nazw dyskusji. Typ jednostki nie ma takiej samej wartości dla przestrzeni przedmiotowej, co dyskusji. Również parametry typu jednostki nie powinno się podawać w dziecku w ramce, tylko w rodzicu w szablonie jako parametry, w którym ta ramka jest wywoływana, ale tutaj podano jedynie dla przykładu, jak najłatwiej sprawdzić działanie tych parametrów tej funkcji. Najpierw w funkcji nagłówku brane są parametry nazw przestrzeni nazw, a jeżeli ich nie ma, to parametry typu jednostki, a jeżeli nie ma, to generowane są nazwy na podstawie aktualnego modułu. === {{Code|p["Nazwa przedmiotowej przestrzeni nazw"](frame,...)}} === Funkcja pisze przedmiotową nazwę przestrzeni nazw jakikolwiek nazwy przestrzeni nazw (tzn. nazwę przedmiotową nazwy przestrzenie nazw, czyli nie dyskusji, zamieniana jest na nią samą, czyli identyfikator przestrzeni się nie zmienia, a dyskusji, nie przedmiotową, przekształca się na przedmiotową jej odpowiadającą, czyli w tym przypadku identyfikator przestrzeni zmniejsza się o numer mniej), według podanej w zmiennej {{Code|nazwa przestrzeni nazw}} dla pozycja bazowej w podanych parametrach szablonu rodzicu ramki dziecka, lub dla innej pozycji należy parametr podawać w formie {{Code|nazwa przestrzeni nazw 1}}, {{Code|nazwa przestrzeni nazw 2}}, {{Code|nazwa przestrzeni nazw 3}},..., lub te parametry można podać w postaci ogólnej {{Code|nazwa przestrzeni nazw i}}. Parametry podaje się w parametrach rodzica wywołania tej funkcji {{Code|{{m|Pudełko|Nazwa przedmiotowej przestrzeni nazw}}}} (ale ich nie trzeba podawać w dziecku, ale można) i w parametrach dziecka, jeśli chodzi o zmienną {{Code|numer jednostki}}, czyli np.: {{Code|{{m|Pudełko|Nazwa przedmiotowej przestrzeni nazw|numer jednostki{{=}}<jakaś liczba całkowita dodatnia>}}}}. Te parametry przestrzenne zamiast w rodzicu w szablonie można podać w ramce dziecka, wtedy parametry dziecka mają pierwszeństwo. Parametry przestrzenne mogą mogą być podane w postaci przestrzeni przedmiotowej lub dyskusji, ale ta funkcja zawsze ją zamienia na przedmiotową. Przestrzeń nazw z parametrów nazw przestrzennych może odpowiadać wartości przestrzeni głównej, to wtedy odpowiednia przestrzeń nazw z parametru nazwy jednostki się nie liczy w tej funkcji, aby się liczyła należy użyć funkcji {{Code|{{sr|#p["Nazwa przedmiotowej przestrzeni nazw 2"](frame,...)|p=Pudełko}}}}. Definicja skrótowa funkcji: <syntaxhighlight lang="lua"> p["Nazwa przedmiotowej przestrzeni nazw"]=function(frame,czy_uwzglednic_alternatywna_nazwe,i)...end; </syntaxhighlight> Wtedy ciało funkcji tej, czyli jego definicja w środku, jest: <syntaxhighlight lang="lua"> -- Jest liczony numer parametru nazwy przestrzeni nazw, domyslnie chodzi tu o numer bazowy parametrów przestrzennych; local numer_jednostki=i or frame.args["numer jednostki"]; local liczba_numer_jednostki=((numer_jednostki)and(tonumber(numer_jednostki))or 0); local pudelko_pomocne_modul=require("Module:Pudełko/Pomocne"); -- Liczy nazwę przestrzeni nazw przedmiotową na podstawie podanych parametrów; return pudelko_pomocne_modul.Nazwa_przestrzeni_nazw(frame,1, czy_uwzglednic_alternatywna_nazwe,liczba_numer_jednostki); </syntaxhighlight> Parametry funkcji: * {{Code|frame}} - tablica ramki tablicy transportu, * {{Code|czy_uwzglednic_alternatywna_nazwe}} - czy ma uwzględniać nazwę przestrzeni nazw domyślną szablonu, dostępne wartości: {{Code|false}}, w której nazwa domyślna nie jest uwzględniana wtedy, oraz {{Code|nil}} i {{Code|true}}, które oznaczają to samo, w tym jeżeli ona jest uwzględniana, wtedy jest brany parametr pierwszy dziecka, który musi istnieć przy takiej wartości tego parametru, tzn. {{Code|{{m|Pudełko|Nazwa przedmiotowej przestrzeni nazw|Dyskusja szablonu}}}} - ta nazwa domyślna zostanie zamieniona na przedmiotową, a jak ona by była przedmiotowa, to żadnej zamiany, by nie było, a jeśli nazwa uzyskana z nazwy przestrzeni nazw z parametrów przestrzennych jest w takim przypadku błędna, to w takim razie brany jest ten parametr, a jeżeli ta nazwa domyślna jest błędna, czyli {{Code|{{m|Pudełko|Nazwa przedmiotowej przestrzeni nazw|Moja przestrzeń}}}}, wtedy funkcja zwraca stan błędu {{Code|(błąd)}}. * {{Code|i}} - numer zmiennej nazwy przestrzeni nazw. Funkcja wykorzystuje {{Code|{{sr|#p.Nazwa_przestrzeni_nazw(frame,...)|p=Pudełko/Pomocne}}}} do wyznaczania ogólnego nazwy przestrzeni nazw dla pozycji bazowej i numerkowej, tzn. dla pozycji: jeden, dwa, trzy,..., itd, i ich ogólnej. Parametr ramki tablicy transportu rodzica szablonu: * {{Code|nazwa przestrzeni nazw}}, {{Code|nazwa przestrzeni nazw 1}}, {{Code|nazwa przestrzeni nazw 2}}, {{Code|nazwa przestrzeni nazw 3}},..., {{Code|nazwa przestrzeni nazw i}} - nazwy przestrzeni nazw dla pozycji bazowej oraz zwykłej i ogólnej numerkowej, * {{Code|typ jednostki}}, {{Code|typ jednostki 1}}, {{Code|typ jednostki 2}}, {{Code|typ jednostki 3}},..., {{Code|typ jednostki i}} - typy jednostek, którym odpowiadają pewne przestrzenie przedmiotowe, dla pozycji bazowej, numerkowej i ogólnej. Parametry ramki tablicy transportu dziecka: * Parametry dziecka są takie same jak rodzica dla funkcji pudełkowej plus tu wymienione, * {{Code|numer jednostki}} - jak parametr {{Code|i}} nie został ustawiony, to wtedy liczy się ta zmienna. Przykłady: <syntaxhighlight lang="mediawiki"> {{Nazwa szablonu|nazwa przestrzeni nazw=Dyskusja Wikibooks|nazwa przestrzeni nazw 2=Dyskusja szablonu|nazwa przestrzeni nazw i=Dyskusja modułu}} </syntaxhighlight> W dziecku powiedzmy jest wywołanie, i szukamy nazwy przestrzeni nazw o numerze dwa, która nie została podana, ale istnieje za to jej wersji ogólna {{Code|nazwa przestrzeni nazw i}} i domyślna {{Code|nazwa przestrzeni nazw}}: <syntaxhighlight lang="mediawiki"> {{#invoke:Pudełko|Nazwa przedmiotowej przestrzeni nazw|numer jednostki=1}} </syntaxhighlight> Na podstawie powyższego przykładu otrzymamy wynik o schemacie, nie wyniku, bo tam nie ma zmiennej {{Code|nazwa przestrzeni nazw 1}}, ale jest {{Code|nazwa przestrzeni nazw i}}: <syntaxhighlight lang="mediawiki"> <!-- Ale nie "nazwa przestrzeni nazw", bo jej nie ma, ale za to istnieje "nazwa przestrzeni nazw i"; --> <!-- nazwa przestrzeni nazw 2=nazwa przestrzeni nazw i=Dyskusja modułu; --> <!-- Czyli wynik: --> Moduł <!-- Widzimy, że wygenerowała się nazwa przestrzeni nazw, którą jest przestrzeń przedmiotowa programowa przestrzeni dyskusji "Dyskusja modułu", którą również jest "Szablon" jego przestrzeni dyskusji "Dyskusja szablonu", a dla ich przestrzeni przedmiotowej, zamiast dyskusji, to samo przekształca się na to samo; --> </syntaxhighlight> Nie jest brana w tym powyższym przykładzie zmienna {{Code|nazwa przestrzeni nazw}}, bo jej nie ma, ale za to jest {{Code|nazwa przestrzeni nazw i}}, bo ona występuje jako parametr domyślny ogólny dla parametrów numerkowych. Przykłady w wikikodzie: * {{Code|{{m|Pudełko|Nazwa przedmiotowej przestrzeni nazw|numer jednostki{{=}}2}}}} → {{Tt|{{#invoke:Pudełko|Nazwa przedmiotowej przestrzeni nazw|numer jednostki=2}}}} * {{Code|{{m|Pudełko|Nazwa przedmiotowej przestrzeni nazw|Dyskusja szablonu|nazwa przestrzeni nazw i{{=}}Moja przestrzeń|numer jednostki{{=}}2}}}} → {{Tt|{{#invoke:Pudełko|Nazwa przedmiotowej przestrzeni nazw|Dyskusja szablonu|nazwa przestrzeni nazw i=Moja przestrzeń|numer jednostki=2}}}} * {{Code|{{m|Pudełko|Nazwa przedmiotowej przestrzeni nazw|nazwa przestrzeni nazw 2{{=}}Dyskusja szablonu|numer jednostki{{=}}2}}}} → {{Tt|{{#invoke:Pudełko|Nazwa przedmiotowej przestrzeni nazw|nazwa przestrzeni nazw 2=Dyskusja szablonu|numer jednostki=2}}}} * {{Code|{{m|Pudełko|Nazwa przedmiotowej przestrzeni nazw|nazwa przestrzeni nazw 2{{=}}Dyskusja szablonu|numer jednostki{{=}}2}}}} → {{Tt|{{#invoke:Pudełko|Nazwa przedmiotowej przestrzeni nazw|nazwa przestrzeni nazw i=Dyskusja szablonu|numer jednostki=2}}}} * {{Code|{{m|Pudełko|Nazwa przedmiotowej przestrzeni nazw|nazwa przestrzeni nazw{{=}}Dyskusja szablonu|numer jednostki{{=}}2}}}} → {{Tt|{{#invoke:Pudełko|Nazwa przedmiotowej przestrzeni nazw|nazwa przestrzeni nazw=Dyskusja szablonu|numer jednostki=2}}}} Powyżej dla przykładu podano parametry nie w rodzicu w szablonie, tylko w dziecku, jeśli chodzi o parametry nazw przestrzeni nazw, ale ich się za to nie powinno podawać w tych ramach, tylko w szablonach, w których wywoływane są te ramki pudełek {{Code|{{m|Pudełko}}}}, ale tak tutaj tak zrobiono by było najłatwiej sprawdzić działanie tego typu funkcji. Analogicznie możemy podawać parametry typu jednostki, np.: wywołaniu modułowym {{Code|{{m|Pudełko|Nazwa przedmiotowej przestrzeni nazw|typ jednostki 2{{=}}strona szablonu|numer jednostki{{=}}2}}}}, ale o tym więcej w rozdziałach {{Code|{{sr|#p["Przedmiotowy typ jednostki"](frame,i)|p=Pudełko}}}} w „{{sr|#Funkcje typu jednostki|p=Pudełko}}”, one definiują dane przestrzenie przedmiotowe, ale wtedy ta sama nazwa przestrzeni nazw reprezentowana przez typ jednostki jest zamieniony na nazwę przestrzeni przedmiotową, lepiej jest tutaj używać parametrów przestrzennych nazw niż typu jednostki. Typ jednostki nie ma takiej samej wartości dla przestrzeni przedmiotowej, co dyskusji. Tutaj parametr dyskusji typu jednostki bazowy i numerkowy ogólny, czy szczegółowy, nie gra roli, bo nawet, gdy wygenerujemy nazwę przestrzeni dyskusji za pomoca tego parametru, to i tak otrzymamy na samym końcu jego nazwę przedmiotową. Również parametry typu jednostki nie powinno się podawać w dziecku w ramce, tylko w rodzicu w szablonie jako parametry, w którym ta ramka jest wywoływana, ale tutaj podano jedynie dla przykładu, jak najłatwiej sprawdzić działanie tych parametrów tej funkcji. Najpierw w funkcji nagłówku brane są parametry nazw przestrzeni nazw, a jeżeli ich nie ma, to parametry typu jednostki, a jeżeli nie ma, to generowane są nazwy na podstawie aktualnego modułu. === {{Code|p["Nazwa przestrzeni nazw dyskusji"](frame,...)}} === Funkcja pisze nazwę przestrzeni nazw dyskusji jakikolwiek nazwy przestrzeni nazw (tzn. nazwę przedmiotową nazwy przestrzenie nazw, czyli nie dyskusji, zamieniana jest na dyskusji, czyli identyfikator przestrzeni się zmienia jeden wyżej, a dyskusji, nie przedmiotową, przekształca się na tą samą), według podanej w zmiennej {{Code|nazwa przestrzeni nazw}} dla pozycja bazowej w podanych parametrach szablonu rodzicu ramki dziecka, lub dla innej pozycji należy parametr podawać w formie {{Code|nazwa przestrzeni nazw 1}}, {{Code|nazwa przestrzeni nazw 2}}, {{Code|nazwa przestrzeni nazw 3}},..., lub te parametry można podać w postaci ogólnej {{Code|nazwa przestrzeni nazw i}}. Parametry podaje się w parametrach rodzica wywołania tej funkcji {{Code|{{m|Pudełko|Nazwa przestrzeni nazw dyskusji}}}} (ale ich nie trzeba podawać w dziecku, ale można) i w parametrach dziecka, jeśli chodzi o zmienną {{Code|numer jednostki}}, czyli np.: {{Code|{{m|Pudełko|Nazwa przestrzeni nazw dyskusji|numer jednostki{{=}}<jakaś liczba całkowita dodatnia>}}}}. Te parametry przestrzenne zamiast w rodzicu w szablonie można podać w ramce dziecka, wtedy parametry dziecka mają pierwszeństwo. Parametry przestrzenne mogą mogą być podane w postaci przestrzeni przedmiotowej lub dyskusji, ale ta funkcja zawsze ją zamienia na dyskusji. Przestrzeń nazw z parametrów nazw przestrzennych może odpowiadać wartości przestrzeni głównej, to wtedy odpowiednia przestrzeń nazw z parametru nazwy jednostki się nie liczy w tej funkcji, aby się liczyła należy użyć funkcji {{Code|{{sr|#p["Nazwa przestrzeni nazw dyskusji 2"](frame,...)|p=Pudełko}}}}. Definicja skrótowa funkcji: <syntaxhighlight lang="lua"> p["Nazwa przestrzeni nazw dyskusji"]=function(frame,czy_uwzglednic_alternatywna_nazwe,i)...end; </syntaxhighlight> Wtedy ciało funkcji tej, czyli jego definicja w środku, jest: <syntaxhighlight lang="lua"> -- Jest liczony numer parametru nazwy przestrzeni nazw, domyslnie chodzi tu o numer bazowy parametrów przestrzennych; local numer_jednostki=i or frame.args["numer jednostki"]; local liczba_numer_jednostki=((numer_jednostki)and(tonumber(numer_jednostki))or 0); local pudelko_pomocne_modul=require("Module:Pudełko/Pomocne"); -- Liczy nazwę przestrzeni nazw dyskusji na podstawie podanych parametrów; return pudelko_pomocne_modul.Nazwa_przestrzeni_nazw(frame,2, czy_uwzglednic_alternatywna_nazwe,liczba_numer_jednostki); </syntaxhighlight> Parametry funkcji: * {{Code|frame}} - tablica ramki tablicy transportu, * {{Code|czy_uwzglednic_alternatywna_nazwe}} - czy ma uwzględniać nazwę przestrzeni nazw domyślną szablonu, dostępne wartości: {{Code|false}}, w której nazwa domyślna nie jest uwzględniana wtedy, oraz {{Code|nil}} i {{Code|true}}, które oznaczają to samo, w tym jeżeli ona jest uwzględniana, wtedy jest brany parametr pierwszy dziecka, który musi istnieć przy takiej wartości tego parametru, tzn. {{Code|{{m|Pudełko|Nazwa przestrzeni nazw dyskusji|Szablon}}}} - ta nazwa domyślna zostanie przekształcona na dyskusji, a jeżeli ona by była dyskusji, to nie byłoby żadnego przekształcenia, a jeśli nazwa uzyskana nazwy przestrzeni nazw z parametrów przestrzennych jest w takim przypadku błędna, to w takim razie brany jest ten parametr, a jeżeli nazwa domyślna jest błędna, czyli {{Code|{{m|Pudełko|Nazwa przestrzeni nazw dyskusji|Moja przestrzeń}}}}, wtedy funkcja zwraca stan błędu {{Code|(błąd)}}. * {{Code|i}} - numer zmiennej nazwy przestrzeni nazw. Funkcja wykorzystuje {{Code|{{sr|#p.Nazwa_przestrzeni_nazw(frame,...)|p=Pudełko/Pomocne}}}} do wyznaczania ogólnego nazwy przestrzeni nazw dla pozycji bazowej i numerkowej, tzn. dla pozycji: jeden, dwa, trzy,..., itd, i ich ogólnej. Parametr ramki tablicy transportu rodzica szablonu: * {{Code|nazwa przestrzeni nazw}}, {{Code|nazwa przestrzeni nazw 1}}, {{Code|nazwa przestrzeni nazw 2}}, {{Code|nazwa przestrzeni nazw 3}},..., {{Code|nazwa przestrzeni nazw i}} - nazwy przestrzeni nazw dla pozycji bazowej oraz zwykłej i ogólnej numerkowej, * {{Code|typ jednostki}}, {{Code|typ jednostki 1}}, {{Code|typ jednostki 2}}, {{Code|typ jednostki 3}},..., {{Code|typ jednostki i}} - typy jednostek, którym odpowiadają pewne przestrzenie przedmiotowe, dla pozycji bazowej, numerkowej i ogólnej. Parametry ramki tablicy transportu dziecka: * Parametry dziecka są takie same jak rodzica dla funkcji pudełkowej plus tu wymienione, * {{Code|numer jednostki}} - jak parametr {{Code|i}} nie został ustawiony, to wtedy liczy się ta zmienna. Przykłady: <syntaxhighlight lang="mediawiki"> {{Nazwa szablonu|nazwa przestrzeni nazw=Wikibooks|nazwa przestrzeni nazw 2=Szablon|nazwa przestrzeni nazw i=Moduł}} </syntaxhighlight> W dziecku powiedzmy jest wywołanie, i szukamy nazwy przestrzeni nazw o numerze dwa, która nie została podana, ale istnieje za to jej wersji ogólna {{Code|nazwa przestrzeni nazw i}} i domyślna {{Code|nazwa przestrzeni nazw}}: <syntaxhighlight lang="mediawiki"> {{#invoke:Pudełko|Nazwa przestrzeni nazw dyskusji|numer jednostki=1}} </syntaxhighlight> Na podstawie powyższego przykładu otrzymamy wynik o schemacie, nie wyniku, bo tam nie ma zmiennej {{Code|nazwa przestrzeni nazw 1}}, ale jest {{Code|nazwa przestrzeni nazw i}}: <syntaxhighlight lang="mediawiki"> <!-- Ale nie "nazwa przestrzeni nazw", bo jej nie ma, ale za to istnieje "nazwa przestrzeni nazw i"; --> <!-- nazwa przestrzeni nazw 2=nazwa przestrzeni nazw i=Moduł; --> <!-- Czyli wynik: --> Dyskusja modułu <!-- Widzimy, że wygenerowała się nazwa przestrzeni nazw, którą jest przestrzeń dyskusji przestrzeni programowej przestrzeni przedmiotowej "Moduł", którą również jest "Szablon" jego przestrzeni dyskusji "Dyskusja szablonu", a dla ich przestrzeni przedmiotowej, zamiast dyskusji, to przekształca się na dyskusji jej odpowiadającą; --> </syntaxhighlight> Nie jest brana w tym powyższym przykładzie zmienna {{Code|nazwa przestrzeni nazw}}, bo jej nie ma, ale za to jest {{Code|nazwa przestrzeni nazw i}}, bo ona występuje jako parametr domyślny ogólny dla parametrów numerkowych. Przykłady w wikikodzie: * {{Code|{{m|Pudełko|Nazwa przestrzeni nazw dyskusji|numer jednostki{{=}}2}}}} → {{Tt|{{#invoke:Pudełko|Nazwa przestrzeni nazw dyskusji|numer jednostki=2}}}} * {{Code|{{m|Pudełko|Nazwa przestrzeni nazw dyskusji|Szablon|nazwa przestrzeni nazw i{{=}}Moja przestrzeń|numer jednostki{{=}}2}}}} → {{Tt|{{#invoke:Pudełko|Nazwa przestrzeni nazw dyskusji|Szablon|nazwa przestrzeni nazw i=Moja przestrzeń|numer jednostki=2}}}} * {{Code|{{m|Pudełko|Nazwa przestrzeni nazw dyskusji|nazwa przestrzeni nazw 2{{=}}Szablon|numer jednostki{{=}}2}}}} → {{Tt|{{#invoke:Pudełko|Nazwa przestrzeni nazw dyskusji|nazwa przestrzeni nazw 2=Szablon|numer jednostki=2}}}} * {{Code|{{m|Pudełko|Nazwa przestrzeni nazw dyskusji|nazwa przestrzeni nazw 2{{=}}Szablon|numer jednostki{{=}}2}}}} → {{Tt|{{#invoke:Pudełko|Nazwa przestrzeni nazw dyskusji|nazwa przestrzeni nazw i=Szablon|numer jednostki=2}}}} * {{Code|{{m|Pudełko|Nazwa przestrzeni nazw dyskusji|nazwa przestrzeni nazw{{=}}Szablon|numer jednostki{{=}}2}}}} → {{Tt|{{#invoke:Pudełko|Nazwa przestrzeni nazw dyskusji|nazwa przestrzeni nazw=Szablon|numer jednostki=2}}}} Powyżej dla przykładu podano parametry nie w rodzicu w szablonie, tylko w dziecku, jeśli chodzi o parametry nazw przestrzeni nazw, ale ich się za to nie powinno podawać w tych ramach, tylko w szablonach, w których wywoływane są te ramki pudełek {{Code|{{m|Pudełko}}}}, ale tak tutaj tak zrobiono by było najłatwiej sprawdzić działanie tego typu funkcji. Analogicznie możemy podawać parametry typu jednostki, np.: wywołaniu modułowym {{Code|{{m|Pudełko|Nazwa przestrzeni nazw dyskusji|typ jednostki 2{{=}}strona szablonu|numer jednostki{{=}}2}}}}, ale o tym więcej w rozdziałach {{Code|{{sr|#p["Dyskusyjny typ jednostki"](frame,i)|p=Pudełko}}}} w „{{sr|#Funkcje typu jednostki|p=Pudełko}}”, one definiują dane przestrzenie dyskusji, ale wtedy nazwa przestrzeni nazw reprezentowana przez {{Parametr|typ jednostki 2|strona szablonu}}, jest zamieniana na nazwę przestrzeni nazw dyskusji. Parametr dyskusji typu jednostki bazowy lub dla danego numerka ogólny, czy szczegółowy, nie gra roli. Typ jednostki nie ma takiej samej wartości dla przestrzeni przedmiotowej, co dyskusji. Również parametry typu jednostki nie powinno się podawać w dziecku w ramce, tylko w rodzicu w szablonie jako parametry, w którym ta ramka jest wywoływana, ale tutaj podano jedynie dla przykładu, jak najłatwiej sprawdzić działanie tych parametrów tej funkcji. Najpierw w funkcji nagłówku brane są parametry nazw przestrzeni nazw, a jeżeli ich nie ma, to parametry typu jednostki, a jeżeli nie ma, to generowane są nazwy na podstawie aktualnego modułu. == Funkcje nazw przestrzeni nazw drugiej wersji == === {{Code|p["Nazwa przestrzeni nazw 2"](frame,...)}} === Funkcja pisze nazwę przestrzeni nazw, niezależnie, czy to jest przedmiotowa, czy dyskusji, według, i nie zawsze tylko, podanej w zmiennej {{Code|nazwa przestrzeni nazw}} dla pozycja bazowej w podanych parametrach szablonu rodzicu ramki dziecka, lub dla innej pozycji należy parametr podawać w formie {{Code|nazwa przestrzeni nazw 1}}, {{Code|nazwa przestrzeni nazw 2}}, {{Code|nazwa przestrzeni nazw 3}},..., lub te parametry można podać w postaci ogólnej {{Code|nazwa przestrzeni nazw i}}. W tej funkcji trzeba też podawać parametry nazwy jednostek {{Code|nazwa jednostki}}, {{Code|nazwa jednostki 1}}, {{Code|nazwa jednostki 2}}, {{Code|nazwa jednostki 3}},... Parametry podaje się w parametrach rodzica wywołania tej funkcji {{Code|{{m|Pudełko|Nazwa przestrzeni nazw 2}}}} (ale ich nie trzeba podawać w dziecku, ale można) i w parametrach dziecka, jeśli chodzi o zmienną {{Code|numer jednostki}}, czyli np.: {{Code|{{m|Pudełko|Nazwa przestrzeni nazw 2|numer jednostki{{=}}<jakaś liczba całkowita dodatnia>}}}}. Te parametry przestrzenne zamiast w rodzicu w szablonie można podać w ramce dziecka, wtedy parametry dziecka mają pierwszeństwo. Przestrzeń nazw z parametrów nazw przestrzennych może odpowiadać wartości przestrzeni głównej, to wtedy odpowiednia przestrzeń nazw z parametru nazwy jednostki się liczy w tej funkcji, wtedy jest liczona nazwa przestrzeni nazw z tego parametru. Gdy parametry przestrzenne lub typ jednostki w drugim podejściu nie wskazują na przestrzeń główną, to wtedy działanie tej funkcji jest podobne do {{Code|{{sr|#p["Nazwa przestrzeni nazw"](frame,...)|p=Pudełko}}}}. Definicja skrótowa funkcji: <syntaxhighlight lang="lua"> p["Nazwa przestrzeni nazw 2"]=function(frame,czy_uwzglednic_alternatywna_nazwe,i)...end; </syntaxhighlight> Wtedy ciało funkcji tej, czyli jego definicja w środku, jest: <syntaxhighlight lang="lua"> local pudelko_pomocne_modul=require("Module:Pudełko/Pomocne"); -- Liczy nazwę przestrzeni nazw, jeżeli z parametrów przestrzennych przestrzeń wskazuje na główną, to wtedy jest liczona przestrzeń nazw z nazwy jednostki; return pudelko_pomocne_modul.Nazwa_przestrzeni_nazw_2(frame,czy_uwzglednic_alternatywna_nazwe,i) </syntaxhighlight> Parametry funkcji: * {{Code|frame}} - tablica ramki tablicy transportu, * {{Code|czy_uwzglednic_alternatywna_nazwe}} - czy ma uwzględniać nazwę przestrzeni nazw domyślną szablonu, dostępne wartości: {{Code|false}}, w której nazwa domyślna nie jest uwzględniana wtedy, oraz {{Code|nil}} i {{Code|true}}, które oznaczają to samo, w tym jeżeli ona jest uwzględniana, wtedy jest brany parametr pierwszy dziecka, który musi istnieć przy takiej wartości tego parametru, tzn. {{Code|{{m|Pudełko|Nazwa przestrzeni nazw 2|Szablon}}}}, a jeśli nazwa uzyskana nazwy przestrzeni nazw jest w takim przypadku błędna, to brany jest ten element, a jeżeli nazwa domyślna jest błędna, czyli {{Code|{{m|Pudełko|Nazwa przestrzeni nazw 2|Moja przestrzeń}}}}, wtedy funkcja zwraca stan błędu {{Code|(błąd)}}. * {{Code|i}} - numer zmiennej nazwy przestrzeni nazw. Funkcja wykorzystuje {{Code|{{sr|#p.Nazwa_przestrzeni_nazw_2(frame,...)|p=Pudełko/Pomocne}}}} do wyznaczania ogólnego nazwy przestrzeni nazw dla pozycji bazowej i numerkowej, tzn. dla pozycji: jeden, dwa, trzy,..., itd, i ich ogólnej. Parametr ramki tablicy transportu rodzica szablonu: * {{Code|nazwa przestrzeni nazw}}, {{Code|nazwa przestrzeni nazw 1}}, {{Code|nazwa przestrzeni nazw 2}}, {{Code|nazwa przestrzeni nazw 3}},..., {{Code|nazwa przestrzeni nazw i}} - nazwy przestrzeni nazw dla pozycji bazowej oraz zwykłej i ogólnej numerkowej, * {{Code|nazwa jednostki}}, {{Code|nazwa jednostki 1}}, {{Code|nazwa jednostki 2}}, {{Code|nazwa jednostki 3}},... - nazwy jednostek dla pozycji bazowej i numerkowej, * {{Code|typ jednostki}}, {{Code|typ jednostki 1}}, {{Code|typ jednostki 2}}, {{Code|typ jednostki 3}},..., {{Code|typ jednostki i}} - typy jednostek, którym odpowiadają pewne przestrzenie przedmiotowe, dla pozycji bazowej, numerkowej i ogólnej, ** {{Code|dyskusja typu jednostki}}, {{Code|dyskusja typu jednostki 1}}, {{Code|dyskusja typ jednostki 2}}, {{Code|dyskusja typ jednostki 3}},..., {{Code|dyskusja typ jednostki i}} - czy dany typ jednostki ma przedstawiać, jeśli niepusta, przestrzeń dyskusji dla pozycji bazowej, numerkowej i ogólnej. Parametry ramki tablicy transportu dziecka: * Parametry dziecka są takie same jak rodzica dla funkcji pudełkowej plus tu wymienione, * {{Code|numer jednostki}} - jak parametr {{Code|i}} nie został ustawiony, to wtedy liczy się ta zmienna. Przykłady: <syntaxhighlight lang="mediawiki"> {{Nazwa szablonu|nazwa przestrzeni nazw=Wikibooks|nazwa przestrzeni nazw 1=Szablon|nazwa przestrzeni nazw i=|nazwa jednostki 2=Wikibooks:Strona}} </syntaxhighlight> W dziecku powiedzmy jest wywołanie, i szukamy nazwy przestrzeni nazw o numerze dwa, która została podana, ale istnieje za to jej wersji ogólna {{Code|nazwa przestrzeni nazw i}} i domyślna {{Code|nazwa przestrzeni nazw}}, ale wtedy dla tego numerkowego liczy się to ogólne z {{Code| i}}, a ponieważ ta nazwa jest pusta, więc będziemy liczyli nazwę przestrzeni nazw z {{Code|nazwa jednostki 2}}: <syntaxhighlight lang="mediawiki"> {{#invoke:Pudełko|Nazwa przestrzeni nazw 2|numer jednostki=2}} </syntaxhighlight> Na podstawie powyższego przykładu otrzymamy wynik o schemacie, nie wyniku, bo tam nie ma zmiennej {{Code|nazwa przestrzeni nazw 1}}, ale jest {{Code|nazwa przestrzeni nazw i}}: <syntaxhighlight lang="mediawiki"> <!-- Ale nie "nazwa przestrzeni nazw 2", bo jej nie ma, ale za to istnieje "nazwa przestrzeni nazw i"; --> <!-- nazwa przestrzeni nazw 2=nazwa przestrzeni nazw i="", a nazwa jednostki 2="Wikibooks:Strona"; --> <!-- Czyli wynik: --> Wikibooks <!-- Widzimy, że wygenerowała się nazwa przestrzeni nazw, którą jest przestrzeń nieprogramowa, ale projektu, wychodząca z nazwy jednostek w tym przypadku z "nazwa jednostki 2"; --> </syntaxhighlight> Nie jest brana w tym powyższym przykładzie zmienna {{Code|nazwa przestrzeni nazw}}, bo jej nie ma, ale za to jest {{Code|nazwa przestrzeni nazw i}}, bo ona występuje jako parametr domyślny ogólny dla parametrów numerkowych. Tytaj jest używana jest zmienna {{Code|nazwa jednostki 2}} do wygenerowania ostatecznego wyniku, bo jak można zauważyć, parametry przestrzenne wskazują na przestrzeń główną, a nazwy jednostek już nie. Przykłady w wikikodzie: * {{Code|{{m|Pudełko|Nazwa przestrzeni nazw 2|numer jednostki{{=}}2}}}} → {{Tt|{{#invoke:Pudełko|Nazwa przestrzeni nazw 2|numer jednostki=2}}}} * {{Code|{{m|Pudełko|Nazwa przestrzeni nazw 2|Szablon|nazwa przestrzeni nazw i{{=}}Moja przestrzeń|numer jednostki{{=}}2}}}} → {{Tt|{{#invoke:Pudełko|Nazwa przestrzeni nazw 2|Szablon|nazwa przestrzeni nazw i=Moja przestrzeń|numer jednostki=2}}}} * {{Code|{{m|Pudełko|Nazwa przestrzeni nazw 2|nazwa przestrzeni nazw 2{{=}}|nazwa jednostki 2{{=}}Szablon:Strona|numer jednostki{{=}}2}}}} → {{Tt|{{#invoke:Pudełko|Nazwa przestrzeni nazw 2|nazwa przestrzeni nazw 2=|nazwa jednostki 2=Szablon:Strona|numer jednostki=2}}}} * {{Code|{{m|Pudełko|Nazwa przestrzeni nazw 2|nazwa przestrzeni nazw i{{=}}|nazwa jednostki 2{{=}}Szablon:Strona|numer jednostki{{=}}2}}}} → {{Tt|{{#invoke:Pudełko|Nazwa przestrzeni nazw 2|nazwa przestrzeni nazw i=|nazwa jednostki 2=Szablon:Strona|numer jednostki=2}}}} * {{Code|{{m|Pudełko|Nazwa przestrzeni nazw 2|Szablon|nazwa przestrzeni nazw{{=}}|nazwa jednostki 2{{=}}Wikibooks:Strona|numer jednostki{{=}}2}}}} → {{Tt|{{#invoke:Pudełko|Nazwa przestrzeni nazw 2|Szablon|nazwa przestrzeni nazw=|nazwa jednostki 2=Wikibooks:Strona|numer jednostki=2}}}} Powyżej dla przykładu podano parametry nie w rodzicu w szablonie, tylko w dziecku, jeśli chodzi o parametry nazw przestrzeni nazw i nazw jednostek, ale ich się za to nie powinno podawać w tych ramach, tylko w szablonach, w których wywoływane są te ramki pudełek {{Code|{{m|Pudełko}}}}, ale tak tutaj tak zrobiono by było najłatwiej sprawdzić działanie tego typu funkcji. Analogicznie możemy podawać parametry typu jednostki, np.: wywołaniu modułowym {{Code|{{m|Pudełko|Nazwa przestrzeni nazw 2|typ jednostki 2{{=}}Podręcznik|nazwa jednostki 2{{=}}Szablon:Strona|numer jednostki{{=}}2}}}} (ale wtedy jest brana przestrzeń nazw z nazwy jednostki), ale o tym więcej w rozdziałach {{Code|{{sr|#p["Typ jednostki 2"](frame,i)|p=Pudełko}}}} w „{{sr|#Funkcje typu jednostki|p=Pudełko}}”, one definiują dane przestrzenie przedmiotowe, czy dyskusji ale można lub nie użyć parametru dyskusji typu jednostki z wartością niepustą, wtedy wyświetli się nazwa przestrzeni nazw dyskusji. Jeżeli typ jednostki wskazuje na przestrzeń nazw główną, wtedy się liczą parametry nazw jednostek. Typ jednostki nie ma takiej samej wartości dla przestrzeni przedmiotowej, co dyskusji. Również parametry typu jednostki nie powinno się podawać w dziecku w ramce, tylko w rodzicu w szablonie jako parametry, w którym ta ramka jest wywoływana, ale tutaj podano jedynie dla przykładu, jak najłatwiej sprawdzić działanie tych parametrów tej funkcji. Najpierw w funkcji nagłówku brane są parametry nazw przestrzeni nazw, a jeżeli ich nie ma, to parametry typu jednostki, a jeżeli nie ma lub parametry przestrzenne wskazują na przestrzeń główną, i nie ma nazwy jednostki, to generowane są nazwy tej funkcji na podstawie aktualnej strony. === {{Code|p["Nazwa przedmiotowej przestrzeni nazw 2"](frame,...)}} === Funkcja pisze przedmiotową nazwę przestrzeni nazw jakikolwiek nazwy przestrzeni nazw (tzn. nazwę przedmiotową nazwy przestrzenie nazw, czyli nie dyskusji, zamieniana jest na nią samą, czyli identyfikator przestrzeni się nie zmienia, a dyskusji, nie przedmiotową, przekształca się na przedmiotową jej odpowiadającą, czyli w tym przypadku identyfikator przestrzeni zmniejsza się o numer mniej), według, i nie zawsze tylko, podanej w zmiennej {{Code|nazwa przestrzeni nazw}} dla pozycja bazowej w podanych parametrach szablonu rodzicu ramki dziecka, lub dla innej pozycji należy parametr podawać w formie {{Code|nazwa przestrzeni nazw 1}}, {{Code|nazwa przestrzeni nazw 2}}, {{Code|nazwa przestrzeni nazw 3}},..., lub te parametry można podać w postaci ogólnej {{Code|nazwa przestrzeni nazw i}}. W tej funkcji trzeba też podawać parametry nazwy jednostek {{Code|nazwa jednostki}}, {{Code|nazwa jednostki 1}}, {{Code|nazwa jednostki 2}}, {{Code|nazwa jednostki 3}},... Parametry podaje się w parametrach rodzica wywołania tej funkcji {{Code|{{m|Pudełko|Nazwa przedmiotowej przestrzeni nazw 2}}}} (ale ich nie trzeba podawać w dziecku, ale można) i w parametrach dziecka, jeśli chodzi o zmienną {{Code|numer jednostki}}, czyli np.: {{Code|{{m|Pudełko|Nazwa przedmiotowej przestrzeni nazw 2|numer jednostki{{=}}<jakaś liczba całkowita dodatnia>}}}}. Te parametry przestrzenne zamiast w rodzicu w szablonie można podać w ramce dziecka, wtedy parametry dziecka mają pierwszeństwo. Przestrzeń nazw z parametrów nazw przestrzennych po przekształceniu na przedmiotową może odpowiadać wartości przestrzeni głównej, to wtedy odpowiednia przestrzeń nazw z parametru nazwy jednostki się liczy w tej funkcji, wtedy jest liczona nazwa przestrzeni nazw z tego parametru. Gdy parametry przestrzenne lub typ jednostki w drugim podejściu nie wskazują na przestrzeń główną, to wtedy działanie tej funkcji jest podobne do {{Code|{{sr|#p["Nazwa przedmiotowej przestrzeni nazw"](frame,...)|p=Pudełko}}}}. Definicja skrótowa funkcji: <syntaxhighlight lang="lua"> p["Nazwa przedmiotowej przestrzeni nazw 2"]=function(frame,czy_uwzglednic_alternatywna_nazwe,i)...end; </syntaxhighlight> Wtedy ciało funkcji tej, czyli jego definicja w środku, jest: <syntaxhighlight lang="lua"> local pudelko_pomocne_modul=require("Module:Pudełko/Pomocne"); return pudelko_pomocne_modul.Nazwa_przestrzeni_nazw_przedmiotowa_dyskusji_2(frame,czy_uwzglednic_alternatywna_nazwe,i,"przedmiotowa"); </syntaxhighlight> Parametry funkcji: * {{Code|frame}} - tablica ramki tablicy transportu, * {{Code|czy_uwzglednic_alternatywna_nazwe}} - czy ma uwzględniać nazwę przestrzeni nazw domyślną szablonu, dostępne wartości: {{Code|false}}, w której nazwa domyślna nie jest uwzględniana wtedy, oraz {{Code|nil}} i {{Code|true}}, które oznaczają to samo, w tym jeżeli ona jest uwzględniana, wtedy jest brany parametr pierwszy dziecka, który musi istnieć przy takiej wartości tego parametru, tzn. {{Code|{{m|Pudełko|Nazwa przedmiotowej przestrzeni nazw 2|Szablon}}}}, nazwa domyślna zostanie zamieniona na przedmiotową, a jeżeli jest już taka, to żadnej zamiany nie ma, a jeśli nazwa uzyskana nazwy przestrzeni nazw jest w takim przypadku błędna, to brany jest ten element, a jeżeli nazwa domyślna jest błędna, czyli {{Code|{{m|Pudełko|Nazwa przedmiotowej przestrzeni nazw 2|Moja przestrzeń}}}}, wtedy funkcja zwraca stan błędu {{Code|(błąd)}}. * {{Code|i}} - numer zmiennej nazwy przestrzeni nazw. Funkcja wykorzystuje {{Code|{{sr|#p.Nazwa_przestrzeni_nazw_przedmiotowa_dyskusji_2(frame,...)|p=Pudełko/Pomocne}}}} do wyznaczania ogólnego nazwy przestrzeni nazw dla pozycji bazowej i numerkowej, tzn. dla pozycji: jeden, dwa, trzy,..., itd, i ich ogólnej. Parametr ramki tablicy transportu rodzica szablonu: * {{Code|nazwa przestrzeni nazw}}, {{Code|nazwa przestrzeni nazw 1}}, {{Code|nazwa przestrzeni nazw 2}}, {{Code|nazwa przestrzeni nazw 3}},..., {{Code|nazwa przestrzeni nazw i}} - nazwy przestrzeni nazw dla pozycji bazowej oraz zwykłej i ogólnej numerkowej, * {{Code|nazwa jednostki}}, {{Code|nazwa jednostki 1}}, {{Code|nazwa jednostki 2}}, {{Code|nazwa jednostki 3}},... - nazwy jednostek dla pozycji bazowej i numerkowej, * {{Code|typ jednostki}}, {{Code|typ jednostki 1}}, {{Code|typ jednostki 2}}, {{Code|typ jednostki 3}},..., {{Code|typ jednostki i}} - typy jednostek, którym odpowiadają pewne przestrzenie przedmiotowe, dla pozycji bazowej, numerkowej i ogólnej. Parametry ramki tablicy transportu dziecka: * Parametry dziecka są takie same jak rodzica dla funkcji pudełkowej plus tu wymienione, * {{Code|numer jednostki}} - jak parametr {{Code|i}} nie został ustawiony, to wtedy liczy się ta zmienna. Przykłady: <syntaxhighlight lang="mediawiki"> {{Nazwa szablonu|nazwa przestrzeni nazw=Wikibooks|nazwa przestrzeni nazw 1=Szablon|nazwa przestrzeni nazw i=|nazwa jednostki 2=Dyskusja Wikibooks:Strona}} </syntaxhighlight> W dziecku powiedzmy jest wywołanie, i szukamy nazwy przestrzeni nazw o numerze dwa, która została podana, ale istnieje za to jej wersji ogólna {{Code|nazwa przestrzeni nazw i}} i domyślna {{Code|nazwa przestrzeni nazw}}, ale wtedy dla tego numerkowego liczy się to ogólne z {{Code| i}}, a ponieważ ta nazwa jest pusta, więc będziemy liczyli nazwę przestrzeni nazw z {{Code|nazwa jednostki 2}}: <syntaxhighlight lang="mediawiki"> {{#invoke:Pudełko|Nazwa przedmiotowej przestrzeni nazw 2|numer jednostki=2}} </syntaxhighlight> Na podstawie powyższego przykładu otrzymamy wynik o schemacie, nie wyniku, bo tam nie ma zmiennej {{Code|nazwa przestrzeni nazw 1}}, ale jest {{Code|nazwa przestrzeni nazw i}}: <syntaxhighlight lang="mediawiki"> <!-- Ale nie "nazwa przestrzeni nazw 2", bo jej nie ma, ale za to istnieje "nazwa przestrzeni nazw i"; --> <!-- nazwa przestrzeni nazw 2=nazwa przestrzeni nazw i="", a nazwa jednostki 2="Dyskusja Wikibooks:Strona"; --> <!-- Czyli wynik: --> Wikibooks <!-- Widzimy, że wygenerowała się nazwa przestrzeni nazw, którą jest przestrzeń nieprogramowa, ale projektu, wychodząca z nazwy jednostek w tym przypadku z "nazwa jednostki 2"; --> </syntaxhighlight> Nie jest brana w tym powyższym przykładzie zmienna {{Code|nazwa przestrzeni nazw}}, bo jej nie ma, ale za to jest {{Code|nazwa przestrzeni nazw i}}, bo ona występuje jako parametr domyślny ogólny dla parametrów numerkowych. Tytaj jest używana jest zmienna {{Code|nazwa jednostki 2}} do wygenerowania ostatecznego wyniku, bo jak można zauważyć, parametry przestrzenne wskazują na przestrzeń główną, a nazwy jednostek już nie. Przykłady w wikikodzie: * {{Code|{{m|Pudełko|Nazwa przedmiotowej przestrzeni nazw 2|numer jednostki{{=}}2}}}} → {{Tt|{{#invoke:Pudełko|Nazwa przedmiotowej przestrzeni nazw 2|numer jednostki=2}}}} * {{Code|{{m|Pudełko|Nazwa przedmiotowej przestrzeni nazw 2|Dyskusja szablonu|nazwa przestrzeni nazw i{{=}}Moja przestrzeń|numer jednostki{{=}}2}}}} → {{Tt|{{#invoke:Pudełko|Nazwa przedmiotowej przestrzeni nazw 2|Dyskusja szablonu|nazwa przestrzeni nazw i=Moja przestrzeń|numer jednostki=2}}}} * {{Code|{{m|Pudełko|Nazwa przedmiotowej przestrzeni nazw 2|nazwa przestrzeni nazw 2{{=}}Dyskusja|nazwa jednostki 2{{=}}Dyskusja szablonu:Strona|numer jednostki{{=}}2}}}} → {{Tt|{{#invoke:Pudełko|Nazwa przedmiotowej przestrzeni nazw 2|nazwa przestrzeni nazw 2=Dyskusja|nazwa jednostki 2=Dyskusja szablonu:Strona|numer jednostki=2}}}} * {{Code|{{m|Pudełko|Nazwa przedmiotowej przestrzeni nazw 2|nazwa przestrzeni nazw i{{=}}Dyskusja|nazwa jednostki 2{{=}}Dyskusja szablonu:Strona|numer jednostki{{=}}2}}}} → {{Tt|{{#invoke:Pudełko|Nazwa przedmiotowej przestrzeni nazw 2|nazwa przestrzeni nazw i=Dyskusja|nazwa jednostki 2=Dyskusja szablonu:Strona|numer jednostki=2}}}} * {{Code|{{m|Pudełko|Nazwa przedmiotowej przestrzeni nazw 2|Dyskusja szablonu|nazwa przestrzeni nazw{{=}}Dyskusja|nazwa jednostki 2{{=}}Wikibooks:Strona|numer jednostki{{=}}2}}}} → {{Tt|{{#invoke:Pudełko|Nazwa przedmiotowej przestrzeni nazw 2|Dyskusja szablonu|nazwa przestrzeni nazw=Dyskusja|nazwa jednostki 2=Dyskusja Wikibooks:Strona|numer jednostki=2}}}} Powyżej dla przykładu podano parametry nie w rodzicu w szablonie, tylko w dziecku, jeśli chodzi o parametry nazw przestrzeni nazw i nazw jednostek, ale ich się za to nie powinno podawać w tych ramach, tylko w szablonach, w których wywoływane są te ramki pudełek {{Code|{{m|Pudełko}}}}, ale tak tutaj tak zrobiono by było najłatwiej sprawdzić działanie tego typu funkcji. Analogicznie możemy podawać parametry typu jednostki, np.: wywołaniu modułowym {{Code|{{m|Pudełko|Nazwa przedmiotowej przestrzeni nazw 2|typ jednostki 2{{=}}Podręcznik|nazwa jednostki 2{{=}}Dyskusja szablonu:Strona|numer jednostki{{=}}2}}}} (ale wtedy jest brana przestrzeń nazw z nazwy jednostki), ale o tym więcej w rozdziałach {{Code|{{sr|#p["Przedmiotowy typ jednostki 2"](frame,i)|p=Pudełko}}}} w „{{sr|#Funkcje typu jednostki|p=Pudełko}}”, one definiują dane przestrzenie przedmiotowe, ale można użyć parametru dyskusji typu jednostki z wartością niepustą, pustą, czy nawet jej nie podamy, wtedy wyświetli się nazwa przestrzeni nazw przedmiotowej. Jeżeli typ jednostki wskazuje na przestrzeń nazw główną, wtedy się liczą parametry nazw jednostek. Typ jednostki nie ma takiej samej wartości dla przestrzeni przedmiotowej, co dyskusji. Również parametry typu jednostki nie powinno się podawać w dziecku w ramce, tylko w rodzicu w szablonie jako parametry, w którym ta ramka jest wywoływana, ale tutaj podano jedynie dla przykładu, jak najłatwiej sprawdzić działanie tych parametrów tej funkcji. Najpierw w funkcji nagłówku brane są parametry nazw przestrzeni nazw, a jeżeli ich nie ma, to parametry typu jednostki, a jeżeli nie ma lub parametry przestrzenne wskazują na przestrzeń główną, i nie ma nazwy jednostki, to generowane są nazwy tej funkcji na podstawie aktualnej strony. === {{Code|p["Nazwa przestrzeni nazw dyskusji 2"](frame,...)}} === Funkcja pisze nazwę przestrzeni nazw dyskusji jakikolwiek nazwy przestrzeni nazw (tzn. nazwę dyskusji nazwy przestrzenie nazw, czyli nie przedmiotowej, zamieniana jest na nią samą, czyli identyfikator przestrzeni się nie zmienia, a przedmiotową, nie dyskusji, przekształca się na dyskusji jej odpowiadającą, czyli w tym przypadku identyfikator przestrzeni zwiększa się o numer więcej), według, i nie zawsze tylko, podanej w zmiennej {{Code|nazwa przestrzeni nazw}} dla pozycja bazowej w podanych parametrach szablonu rodzicu ramki dziecka, lub dla innej pozycji należy parametr podawać w formie {{Code|nazwa przestrzeni nazw 1}}, {{Code|nazwa przestrzeni nazw 2}}, {{Code|nazwa przestrzeni nazw 3}},..., lub te parametry można podać w postaci ogólnej {{Code|nazwa przestrzeni nazw i}}. W tej funkcji trzeba też podawać parametry nazwy jednostek {{Code|nazwa jednostki}}, {{Code|nazwa jednostki 1}}, {{Code|nazwa jednostki 2}}, {{Code|nazwa jednostki 3}},... Parametry podaje się w parametrach rodzica wywołania tej funkcji {{Code|{{m|Pudełko|Nazwa przestrzeni nazw dyskusji 2}}}} (ale ich nie trzeba podawać w dziecku, ale można) i w parametrach dziecka, jeśli chodzi o zmienną {{Code|numer jednostki}}, czyli np.: {{Code|{{m|Pudełko|Nazwa przestrzeni nazw dyskusji 2|numer jednostki{{=}}<jakaś liczba całkowita dodatnia>}}}}. Te parametry przestrzenne zamiast w rodzicu w szablonie można podać w ramce dziecka, wtedy parametry dziecka mają pierwszeństwo. Przestrzeń nazw z parametrów nazw przestrzennych po przekształceniu może odpowiadać wartości przestrzeni głównej, to wtedy odpowiednia przestrzeń nazw z parametru nazwy jednostki się liczy w tej funkcji, wtedy jest liczona nazwa przestrzeni nazw dyskusji z tego parametru. Gdy parametry przestrzenne lub typ jednostki w drugim podejściu nie wskazują na przestrzeń główną, to wtedy działanie tej funkcji jest podobne do {{Code|{{sr|#p["Nazwa dyskusji przestrzeni nazw"](frame,...)|p=Pudełko}}}}. Definicja skrótowa funkcji: <syntaxhighlight lang="lua"> p["Nazwa przestrzeni nazw dyskusji 2"]=function(frame,czy_uwzglednic_alternatywna_nazwe,i)...end; </syntaxhighlight> Wtedy ciało funkcji tej, czyli jego definicja w środku, jest: <syntaxhighlight lang="lua"> local pudelko_pomocne_modul=require("Module:Pudełko/Pomocne"); return pudelko_pomocne_modul.Nazwa_przestrzeni_nazw_przedmiotowa_dyskusji_2(frame,czy_uwzglednic_alternatywna_nazwe,i,"dyskusja"); </syntaxhighlight> Parametry funkcji: * {{Code|frame}} - tablica ramki tablicy transportu, * {{Code|czy_uwzglednic_alternatywna_nazwe}} - czy ma uwzględniać nazwę przestrzeni nazw domyślną szablonu, dostępne wartości: {{Code|false}}, w której nazwa domyślna nie jest uwzględniana wtedy, oraz {{Code|nil}} i {{Code|true}}, które oznaczają to samo, w tym jeżeli ona jest uwzględniana, wtedy jest brany parametr pierwszy dziecka, który musi istnieć przy takiej wartości tego parametru, tzn. {{Code|{{m|Pudełko|Nazwa przestrzeni nazw dyskusji 2|Szablon}}}}, nazwa domyślna zostanie zamieniona na dyskusji, a jeżeli jest już taka, to nie ma takiej zamiany, a jeśli nazwa uzyskana nazwy przestrzeni nazw jest w takim przypadku błędna, to brany jest ten element, a jeżeli nazwa domyślna jest błędna, czyli {{Code|{{m|Pudełko|Nazwa przestrzeni nazw dyskusji 2|Moja przestrzeń}}}}, wtedy funkcja zwraca stan błędu {{Code|(błąd)}}. * {{Code|i}} - numer zmiennej nazwy przestrzeni nazw. Funkcja wykorzystuje {{Code|{{sr|#p.Nazwa_przestrzeni_nazw_przedmiotowa_dyskusji_2(frame,...)|p=Pudełko/Pomocne}}}} do wyznaczania ogólnego nazwy przestrzeni nazw dla pozycji bazowej i numerkowej, tzn. dla pozycji: jeden, dwa, trzy,..., itd, i ich ogólnej. Parametr ramki tablicy transportu rodzica szablonu: * {{Code|nazwa przestrzeni nazw}}, {{Code|nazwa przestrzeni nazw 1}}, {{Code|nazwa przestrzeni nazw 2}}, {{Code|nazwa przestrzeni nazw 3}},..., {{Code|nazwa przestrzeni nazw i}} - nazwy przestrzeni nazw dla pozycji bazowej oraz zwykłej i ogólnej numerkowej, * {{Code|nazwa jednostki}}, {{Code|nazwa jednostki 1}}, {{Code|nazwa jednostki 2}}, {{Code|nazwa jednostki 3}},... - nazwy jednostek dla pozycji bazowej i numerkowej, * {{Code|typ jednostki}}, {{Code|typ jednostki 1}}, {{Code|typ jednostki 2}}, {{Code|typ jednostki 3}},..., {{Code|typ jednostki i}} - typy jednostek, którym odpowiadają pewne przestrzenie przedmiotowe, dla pozycji bazowej, numerkowej i ogólnej. Parametry ramki tablicy transportu dziecka: * Parametry dziecka są takie same jak rodzica dla funkcji pudełkowej plus tu wymienione, * {{Code|numer jednostki}} - jak parametr {{Code|i}} nie został ustawiony, to wtedy liczy się ta zmienna. Przykłady: <syntaxhighlight lang="mediawiki"> {{Nazwa szablonu|nazwa przestrzeni nazw=Wikibooks|nazwa przestrzeni nazw 1=Szablon|nazwa przestrzeni nazw i=|nazwa jednostki 2=Wikibooks:Strona}} </syntaxhighlight> W dziecku powiedzmy jest wywołanie, i szukamy nazwy przestrzeni nazw o numerze dwa, która została podana, ale istnieje za to jej wersji ogólna {{Code|nazwa przestrzeni nazw i}} i domyślna {{Code|nazwa przestrzeni nazw}}, ale wtedy dla tego numerkowego liczy się to ogólne z {{Code| i}}, a ponieważ ta nazwa jest pusta, więc będziemy liczyli nazwę przestrzeni nazw z {{Code|nazwa jednostki 2}}: <syntaxhighlight lang="mediawiki"> {{#invoke:Pudełko|Nazwa przestrzeni nazw dyskusji 2|numer jednostki=2}} </syntaxhighlight> Na podstawie powyższego przykładu otrzymamy wynik o schemacie, nie wyniku, bo tam nie ma zmiennej {{Code|nazwa przestrzeni nazw 1}}, ale jest {{Code|nazwa przestrzeni nazw i}}: <syntaxhighlight lang="mediawiki"> <!-- Ale nie "nazwa przestrzeni nazw 2", bo jej nie ma, ale za to istnieje "nazwa przestrzeni nazw i"; --> <!-- nazwa przestrzeni nazw 2=nazwa przestrzeni nazw i="", a nazwa jednostki 2="Wikibooks:Strona"; --> <!-- Czyli wynik: --> Dyskusja Wikibooks <!-- Widzimy, że wygenerowała się nazwa przestrzeni nazw, którą jest przestrzeń nieprogramowa, ale dyskusji projektu, wychodząca z nazwy jednostek w tym przypadku z "nazwa jednostki 2"; --> </syntaxhighlight> Nie jest brana w tym powyższym przykładzie zmienna {{Code|nazwa przestrzeni nazw}}, bo jej nie ma, ale za to jest {{Code|nazwa przestrzeni nazw i}}, bo ona występuje jako parametr domyślny ogólny dla parametrów numerkowych. Tytaj jest używana jest zmienna {{Code|nazwa jednostki 2}} do wygenerowania ostatecznego wyniku, bo jak można zauważyć, parametry przestrzenne wskazują na przestrzeń główną, a nazwy jednostek już nie. Przykłady w wikikodzie: * {{Code|{{m|Pudełko|Nazwa przestrzeni nazw dyskusji 2|numer jednostki{{=}}2}}}} → {{Tt|{{#invoke:Pudełko|Nazwa przestrzeni nazw dyskusji 2|numer jednostki=2}}}} * {{Code|{{m|Pudełko|Nazwa przestrzeni nazw dyskusji 2|Szablon|nazwa przestrzeni nazw i{{=}}Moja przestrzeń|numer jednostki{{=}}2}}}} → {{Tt|{{#invoke:Pudełko|Nazwa przestrzeni nazw dyskusji 2|Szablon|nazwa przestrzeni nazw i=Moja przestrzeń|numer jednostki=2}}}} * {{Code|{{m|Pudełko|Nazwa przestrzeni nazw dyskusji 2|nazwa przestrzeni nazw 2{{=}}|nazwa jednostki 2{{=}}Szablon:Strona|numer jednostki{{=}}2}}}} → {{Tt|{{#invoke:Pudełko|Nazwa przestrzeni nazw dyskusji 2|nazwa przestrzeni nazw 2=|nazwa jednostki 2=Szablon:Strona|numer jednostki=2}}}} * {{Code|{{m|Pudełko|Nazwa przestrzeni nazw dyskusji 2|nazwa przestrzeni nazw i{{=}}|nazwa jednostki 2{{=}}Szablon:Strona|numer jednostki{{=}}2}}}} → {{Tt|{{#invoke:Pudełko|Nazwa przestrzeni nazw dyskusji 2|nazwa przestrzeni nazw i=|nazwa jednostki 2=Szablon:Strona|numer jednostki=2}}}} * {{Code|{{m|Pudełko|Nazwa przestrzeni nazw dyskusji 2|Szablon|nazwa przestrzeni nazw{{=}}|nazwa jednostki 2{{=}}Wikibooks:Strona|numer jednostki{{=}}2}}}} → {{Tt|{{#invoke:Pudełko|Nazwa przestrzeni nazw dyskusji 2|Szablon|nazwa przestrzeni nazw=|nazwa jednostki 2=Dyskusja Wikibooks:Strona|numer jednostki=2}}}} Powyżej dla przykładu podano parametry nie w rodzicu w szablonie, tylko w dziecku, jeśli chodzi o parametry nazw przestrzeni nazw i nazw jednostek, ale ich się za to nie powinno podawać w tych ramach, tylko w szablonach, w których wywoływane są te ramki pudełek {{Code|{{m|Pudełko}}}}, ale tak tutaj tak zrobiono by było najłatwiej sprawdzić działanie tego typu funkcji. Analogicznie możemy podawać parametry typu jednostki, np.: wywołaniu modułowym {{Code|{{m|Pudełko|Nazwa przestrzeni nazw dyskusji 2|typ jednostki 2{{=}}Podręcznik|nazwa jednostki 2{{=}}Szablon:Strona|numer jednostki{{=}}2}}}} (ale wtedy jest brana przestrzeń nazw z nazwy jednostki), ale o tym więcej w rozdziałach {{Code|{{sr|#p["Dyskusyjny typ jednostki 3"](frame,i)|p=Pudełko}}}} w „{{sr|#Funkcje typu jednostki|p=Pudełko}}”, one definiują dane przestrzenie dyskusji, ale można użyć parametru dyskusji typu jednostki z obojętnie jaką wartością niepustą, czy pustą, czy nawet jej nie podamy, wtedy wyświetli się nazwa przestrzeni nazw dyskusji. Jeżeli typ jednostki wskazuje na przestrzeń nazw główną, wtedy się liczą parametry nazw jednostek. Typ jednostki nie ma takiej samej wartości dla przestrzeni przedmiotowej, co dyskusji. Również parametry typu jednostki nie powinno się podawać w dziecku w ramce, tylko w rodzicu w szablonie jako parametry, w którym ta ramka jest wywoływana, ale tutaj podano jedynie dla przykładu, jak najłatwiej sprawdzić działanie tych parametrów tej funkcji. Najpierw w funkcji nagłówku brane są parametry nazw przestrzeni nazw, a jeżeli ich nie ma, to parametry typu jednostki, a jeżeli nie ma lub parametry przestrzenne wskazują na przestrzeń główną, i nie ma nazwy jednostki, to generowane są nazwy tej funkcji na podstawie aktualnej strony. == Funkcje nazw przestrzeni nazw trzeciej wersji == === {{Code|p["Nazwa przestrzeni nazw 3"](frame,i)}} === Funkcja pisze nazwę przestrzeni nazw, niezależnie, czy to jest przedmiotowa, czy dyskusji, według, i nie zawsze tylko, podanej w zmiennej {{Code|nazwa przestrzeni nazw}} dla pozycja bazowej w podanych parametrach szablonu rodzicu ramki dziecka, lub dla innej pozycji należy parametr podawać w formie {{Code|nazwa przestrzeni nazw 1}}, {{Code|Nazwa przestrzeni nazw 3}}, {{Code|nazwa przestrzeni nazw 3}},..., lub te parametry można podać w postaci ogólnej {{Code|nazwa przestrzeni nazw i}}. W tej funkcji trzeba też podawać parametry nazwy jednostek {{Code|nazwa jednostki}}, {{Code|nazwa jednostki 1}}, {{Code|nazwa jednostki 2}}, {{Code|nazwa jednostki 3}},... Parametry podaje się w parametrach rodzica wywołania tej funkcji {{Code|{{m|Pudełko|Nazwa przestrzeni nazw 3}}}} (ale ich nie trzeba podawać w dziecku, ale można) i w parametrach dziecka, jeśli chodzi o zmienną {{Code|numer jednostki}}, czyli np.: {{Code|{{m|Pudełko|Nazwa przestrzeni nazw 3|numer jednostki{{=}}<jakaś liczba całkowita dodatnia>}}}}. Te parametry przestrzenne zamiast w rodzicu w szablonie można podać w ramce dziecka, wtedy parametry dziecka mają pierwszeństwo. Przestrzeń nazw z parametrów nazw przestrzennych bazowych (bez numerka) może odpowiadać wartości przestrzeni głównej, to wtedy odpowiednia przestrzeń nazw z parametru nazwy jednostki się nie liczy w tej funkcji, aby się liczyła należy użyć funkcji {{Code|{{sr|#p["Nazwa przestrzeni nazw 2"](frame,...)|p=Pudełko}}}}. W tym przypadku funkcja działa jak {{Code|{{sr|#p["Nazwa przestrzeni nazw"](frame,...)|p=Pudełko}}}}. Przestrzeń nazw z parametrów nazw przestrzennych numerkowych może odpowiadać wartości przestrzeni głównej, to wtedy odpowiednia przestrzeń nazw z parametru nazwy jednostki się liczy w tej funkcji, wtedy jest liczona nazwa przestrzeni nazw z tego parametru. Gdy parametry przestrzenne lub typ jednostki w drugim podejściu nie wskazują na przestrzeń główną, to wtedy działanie tej funkcji jest podobne do {{Code|{{sr|#p["Nazwa przestrzeni nazw 2"](frame,...)|p=Pudełko}}}}. Definicja skrótowa funkcji: <syntaxhighlight lang="lua"> p["Nazwa przestrzeni nazw 3"]=function(frame,czy_uwzglednic_alternatywna_nazwe,i)...end; </syntaxhighlight> Wtedy ciało funkcji tej, czyli jego definicja w środku, jest: <syntaxhighlight lang="lua"> -- Jest liczony numer parametru nazwy przestrzeni nazw, domyslnie chodzi tu o numer bazowy parametrów przestrzennych; local numer_jednostki=i or frame.args["numer jednostki"]; local liczba_numeru_jednostki=((numer_jednostki)and(tonumber(numer_jednostki)) or 0); local pudelko_pomocne_modul=require("Module:Pudełko/Pomocne"); -- Liczy nazwę przestrzeni nazw dyskusji na podstawie podanych parametrów; return pudelko_pomocne_modul.Uzyskanie_nazw_jednostki(frame,0,liczba_numeru_jednostki,nil,2); </syntaxhighlight> Parametry funkcji: * {{Code|frame}} - tablica ramki tablicy transportu, * {{Code|czy_uwzglednic_alternatywna_nazwe}} - czy ma uwzględniać nazwę przestrzeni nazw domyślną szablonu, dostępne wartości: {{Code|false}}, w której nazwa domyślna nie jest uwzględniana wtedy, oraz {{Code|nil}} i {{Code|true}}, które oznaczają to samo, w tym jeżeli ona jest uwzględniana, wtedy jest brany parametr pierwszy dziecka, który musi istnieć przy takiej wartości tego parametru, tzn. {{Code|{{m|Pudełko|Nazwa przestrzeni nazw 3|Szablon}}}}, a jeśli nazwa uzyskana nazwy przestrzeni nazw jest w takim przypadku błędna, to brany jest ten element, a jeżeli nazwa domyślna jest błędna, czyli {{Code|{{m|Pudełko|Nazwa przestrzeni nazw 3|Moja przestrzeń}}}}, wtedy funkcja zwraca stan błędu {{Code|(błąd)}}. * {{Code|i}} - numer zmiennej nazwy przestrzeni nazw. Funkcja wykorzystuje {{Code|{{sr|#p.Uzyskanie_nazw_jednostki(frame,...)|p=Pudełko/Pomocne}}}} do wyznaczania ogólnego nazwy przestrzeni nazw dla pozycji bazowej i numerkowej, tzn. dla pozycji: jeden, dwa, trzy,..., itd, i ich ogólnej. Parametr ramki tablicy transportu rodzica szablonu: * {{Code|nazwa przestrzeni nazw}}, {{Code|nazwa przestrzeni nazw 1}}, {{Code|Nazwa przestrzeni nazw 3}}, {{Code|nazwa przestrzeni nazw 3}},..., {{Code|nazwa przestrzeni nazw i}} - nazwy przestrzeni nazw dla pozycji bazowej oraz zwykłej i ogólnej numerkowej, * {{Code|nazwa jednostki}}, {{Code|nazwa jednostki 1}}, {{Code|nazwa jednostki 2}}, {{Code|nazwa jednostki 3}},... - nazwy jednostek dla pozycji bazowej i numerkowej, * {{Code|typ jednostki}}, {{Code|typ jednostki 1}}, {{Code|typ jednostki 2}}, {{Code|typ jednostki 3}},..., {{Code|typ jednostki i}} - typy jednostek, którym odpowiadają pewne przestrzenie przedmiotowe, dla pozycji bazowej, numerkowej i ogólnej, ** {{Code|dyskusja typu jednostki}}, {{Code|dyskusja typu jednostki 1}}, {{Code|dyskusja typ jednostki 2}}, {{Code|dyskusja typ jednostki 3}},..., {{Code|dyskusja typ jednostki i}} - czy dany typ jednostki ma przedstawiać, jeśli niepusta, przestrzeń dyskusji dla pozycji bazowej, numerkowej i ogólnej. Parametry ramki tablicy transportu dziecka: * Parametry dziecka są takie same jak rodzica dla funkcji pudełkowej plus tu wymienione, * {{Code|numer jednostki}} - jak parametr {{Code|i}} nie został ustawiony, to wtedy liczy się ta zmienna. Przykłady: <syntaxhighlight lang="mediawiki"> {{Nazwa szablonu 1|nazwa przestrzeni nazw=Wikibooks|nazwa przestrzeni nazw=|nazwa przestrzeni nazw i=|nazwa jednostki=Szablon:Strona}} ---- {{Nazwa szablonu 2|nazwa przestrzeni nazw=Wikibooks|nazwa przestrzeni nazw 1=Szablon|nazwa przestrzeni nazw i=|nazwa jednostki 2=Wikibooks:Strona}} </syntaxhighlight> W pierwszym wywołaniu {{Code|nazwa przestrzeni nazw}} jest puste, ale dla tego bazowego (bez numerka) szukamy przestrzeni nazw, a więc ta nazwa jest ostateczna. ---- W drugim wywołaniu w dziecku powiedzmy jest wywołanie, i szukamy nazwy przestrzeni nazw o numerze dwa, która została podana, ale istnieje za to jej wersji ogólna {{Code|nazwa przestrzeni nazw i}} i domyślna {{Code|nazwa przestrzeni nazw}}, ale wtedy dla tego numerkowego liczy się to ogólne z {{Code| i}}, a ponieważ ta nazwa jest pusta, więc będziemy liczyli nazwę przestrzeni nazw z {{Code|nazwa jednostki 2}}. Odpowiadająca powyższemu kodowi, powiedzmy wikikod, według ich zawartości, przedstawia się: <syntaxhighlight lang="mediawiki"> {{#invoke:Pudełko|Nazwa przestrzeni nazw 3}} ---- {{#invoke:Pudełko|Nazwa przestrzeni nazw 3|numer jednostki=2}} </syntaxhighlight> Na podstawie powyższego przykładu otrzymamy wynik o schemacie, nie wyniku, bo tam nie ma zmiennej {{Code|nazwa przestrzeni nazw 1}}, ale jest {{Code|nazwa przestrzeni nazw i}}: <syntaxhighlight lang="mediawiki"> <!-- nazwa przestrzeni nazw=""; --> <!-- Czyli wynik: --> <!-- wynik pusty --> <!-- Widzimy, że wygenerowała się nazwa przestrzeni nazw, którą jest przestrzeń nazw główna, jest ciągiem pustym: ""; --> ---- <!-- Ale nie "nazwa przestrzeni nazw 2", bo jej nie ma, ale za to istnieje "nazwa przestrzeni nazw i"; --> <!-- nazwa przestrzeni nazw 2=nazwa przestrzeni nazw i="", a nazwa jednostki 2="Wikibooks:Strona"; --> <!-- Czyli wynik: --> Wikibooks <!-- Widzimy, że wygenerowała się nazwa przestrzeni nazw, którą jest przestrzeń nieprogramowa, ale projektu, wychodząca z nazwy jednostek w tym przypadku z "nazwa jednostki 2"; --> </syntaxhighlight> Dla parametrów numerkowych nie jest brana w tym powyższym przykładzie zmienna {{Code|nazwa przestrzeni nazw 2}}, bo jej nie ma, ale za to jest {{Code|nazwa przestrzeni nazw i}}, bo ona występuje jako parametr domyślny ogólny dla parametrów numerkowych. Tytaj jest używana jest zmienna {{Code|nazwa jednostki 2}} do wygenerowania ostatecznego wyniku, bo jak można zauważyć, parametry przestrzenne wskazują na przestrzeń główną, a nazwy jednostek już nie. Dla parametrów bazowych mamy zmienną {{Code|nazwa przestrzeni nazw}}, ona jest pusta, więc to zostanie wzięte do ostatecznego wyniku. Przykłady w wikikodzie: * {{Code|{{m|Pudełko|Nazwa przestrzeni nazw 3|Szablon|nazwa przestrzeni nazw{{=}}Moja przestrzeń|nazwa jednostki{{=}}Wikibooks:Strona}}}} → {{Tt|{{#invoke:Pudełko|Nazwa przestrzeni nazw 3|Szablon|nazwa przestrzeni nazw=Moja przestrzeń|nazwa jednostki=Wikibooks:Szablon}}}} * {{Code|{{m|Pudełko|Nazwa przestrzeni nazw 3|Szablon|nazwa przestrzeni nazw 2{{=}}Moja przestrzeń|nazwa jednostki 2{{=}}Wikibooks:Strona}|numer jednostki{{=}}2}}}} → {{Tt|{{#invoke:Pudełko|Nazwa przestrzeni nazw 3|Szablon|nazwa przestrzeni nazw 2=Moja przestrzeń|nazwa jednostki 2=Wikibooks:Szablon|numer jednostki=2}}}} * {{Code|{{m|Pudełko|Nazwa przestrzeni nazw 3|nazwa przestrzeni nazw{{=}}|nazwa jednostki{{=}}Wikibooks:Strona}}}} → {{Tt|{{#invoke:Pudełko|Nazwa przestrzeni nazw 3|nazwa przestrzeni nazw=|nazwa jednostki=Wikibooks:Szablon}}}} * {{Code|{{m|Pudełko|Nazwa przestrzeni nazw 3|nazwa przestrzeni nazw 2{{=}}|nazwa jednostki 2{{=}}Wikibooks:Strona|numer jednostki{{=}}2}}}} → {{Tt|{{#invoke:Pudełko|Nazwa przestrzeni nazw 3|nazwa przestrzeni nazw 2=|nazwa jednostki 2=Wikibooks:Szablon|numer jednostki=2}}}} Powyżej dla przykładu podano parametry nie w rodzicu w szablonie, tylko w dziecku, jeśli chodzi o parametry nazw przestrzeni nazw i nazw jednostek, ale ich się za to nie powinno podawać w tych ramach, tylko w szablonach, w których wywoływane są te ramki pudełek {{Code|{{m|Pudełko}}}}, ale tak tutaj tak zrobiono by było najłatwiej sprawdzić działanie tego typu funkcji. Analogicznie możemy podawać parametry typu jednostki, np.: wywołaniu modułowym {{Code|{{m|Pudełko|Nazwa przestrzeni nazw 3|typ jednostki 2{{=}}Podręcznik|nazwa jednostki 2{{=}}Szablon:Strona|numer jednostki{{=}}2}}}} (ale wtedy jest brana przestrzeń nazw z nazwy jednostki), ale o tym więcej w rozdziałach {{Code|{{sr|#p["Typ jednostki 3"](frame,i)|p=Pudełko}}}} w „{{sr|#Funkcje typu jednostki|p=Pudełko}}”, one definiują dane przestrzenie przedmiotowe lub dyskusji, ale można lub nie użyć parametru dyskusji typu jednostki z wartością niepustą, wtedy wyświetli się nazwa przestrzeni nazw dyskusji. Typ jednostki nie ma takiej samej wartości dla przestrzeni przedmiotowej, co dyskusji. Również parametry typu jednostki nie powinno się podawać w dziecku w ramce, tylko w rodzicu w szablonie jako parametry, w którym ta ramka jest wywoływana, ale tutaj podano jedynie dla przykładu, jak najłatwiej sprawdzić działanie tych parametrów tej funkcji. Najpierw w funkcji nagłówku brane są parametry nazw przestrzeni nazw, a jeżeli ich nie ma, to parametry typu jednostki, a jeżeli nie ma lub parametry przestrzenne wskazują na przestrzeń główną, i nie ma nazwy jednostki, to generowane są nazwy tej funkcji na podstawie aktualnej strony. === {{Code|p["Nazwa przedmiotowej przestrzeni nazw 3"](frame,i)}} === Funkcja pisze przedmiotową nazwę przestrzeni nazw jakikolwiek nazwy przestrzeni nazw (tzn. nazwę przedmiotową nazwy przestrzenie nazw, czyli nie dyskusji, zamieniana jest na nią samą, czyli identyfikator przestrzeni się nie zmienia, a dyskusji, nie przedmiotową, przekształca się na przedmiotową jej odpowiadającą, czyli w tym przypadku identyfikator przestrzeni zmniejsza się o numer mniej), według podanej w zmiennej {{Code|nazwa przestrzeni nazw}} dla pozycja bazowej w podanych parametrach szablonu rodzicu ramki dziecka, lub dla innej pozycji należy parametr podawać w formie {{Code|nazwa przestrzeni nazw 1}}, {{Code|nazwa przestrzeni nazw 2}}, {{Code|nazwa przestrzeni nazw 3}},..., lub te parametry można podać w postaci ogólnej {{Code|nazwa przestrzeni nazw i}}. Parametry podaje się w parametrach rodzica wywołania tej funkcji {{Code|{{m|Pudełko|Nazwa przedmiotowej przestrzeni nazw 3}}}} (ale ich nie trzeba podawać w dziecku, ale można) i w parametrach dziecka, jeśli chodzi o zmienną {{Code|numer jednostki}}, czyli np.: {{Code|{{m|Pudełko|Nazwa przedmiotowej przestrzeni nazw 3|numer jednostki{{=}}<jakaś liczba całkowita dodatnia>}}}}. Te parametry przestrzenne zamiast w rodzicu w szablonie można podać w ramce dziecka, wtedy parametry dziecka mają pierwszeństwo. Parametry przestrzenne mogą mogą być podane w postaci przestrzeni przedmiotowej lub dyskusji, ale ta funkcja zawsze ją zamienia na przedmiotową. Przestrzeń nazw z parametrów nazw przestrzennych bazowych (bez numerka) może odpowiadać wartości przestrzeni głównej, to wtedy odpowiednia przestrzeń nazw z parametru nazwy jednostki się nie liczy w tej funkcji, aby się liczyła należy użyć funkcji {{Code|{{sr|#p["Nazwa przedmiotowej przestrzeni nazw 2"](frame,...)|p=Pudełko}}}}. W tym przypadku funkcja działa jak {{Code|{{sr|#p["Nazwa przedmiotowej przestrzeni nazw"](frame,...)|p=Pudełko}}}}. Przestrzeń nazw z parametrów nazw przestrzennych numerkowych może odpowiadać wartości przestrzeni głównej, to wtedy odpowiednia przestrzeń nazw z parametru nazwy jednostki się liczy w tej funkcji, wtedy jest liczona nazwa przestrzeni nazw z tego parametru. Gdy parametry przestrzenne lub typ jednostki w drugim podejściu nie wskazują na przestrzeń główną, to wtedy działanie tej funkcji jest podobne do {{Code|{{sr|#p["Nazwa przedmiotowej przestrzeni nazw 2"](frame,...)|p=Pudełko}}}}. Definicja skrótowa funkcji: <syntaxhighlight lang="lua"> p["Nazwa przedmiotowej przestrzeni nazw 3"]=function(frame,czy_uwzglednic_alternatywna_nazwe,i)...end; </syntaxhighlight> Wtedy ciało funkcji tej, czyli jego definicja w środku, jest: <syntaxhighlight lang="lua"> -- Jest liczony numer parametru nazwy przestrzeni nazw, domyslnie chodzi tu o numer bazowy parametrów przestrzennych; local numer_jednostki=i or frame.args["numer jednostki"]; local liczba_numeru_jednostki=((numer_jednostki)and(tonumber(numer_jednostki)) or 0); local pudelko_pomocne_modul=require("Module:Pudełko/Pomocne"); -- Liczy nazwę przestrzeni nazw przedmiotową na podstawie podanych parametrów; return pudelko_pomocne_modul.Uzyskanie_nazw_jednostki(frame,1,liczba_numeru_jednostki,nil,1); </syntaxhighlight> Parametry funkcji: * {{Code|frame}} - tablica ramki tablicy transportu, * {{Code|czy_uwzglednic_alternatywna_nazwe}} - czy ma uwzględniać nazwę przestrzeni nazw domyślną szablonu, dostępne wartości: {{Code|false}}, w której nazwa domyślna nie jest uwzględniana wtedy, oraz {{Code|nil}} i {{Code|true}}, które oznaczają to samo, w tym jeżeli ona jest uwzględniana, wtedy jest brany parametr pierwszy dziecka, który musi istnieć przy takiej wartości tego parametru, tzn. {{Code|{{m|Pudełko|Nazwa przedmiotowej przestrzeni nazw 3|Dyskusja szablonu}}}} - ta nazwa domyślna zostanie zamieniona na przedmiotową, a jak ona by była przedmiotowa, to żadnej zamiany by nie było, a nazwa uzyskana z nazwy przestrzeni nazw z parametrów przestrzennych jest w takim przypadku błędna, to w takim razie brany jest ten parametr, a jeżeli ta nazwa domyślna jest błędna, czyli {{Code|{{m|Pudełko|Nazwa przedmiotowej przestrzeni nazw 3|Moja przestrzeń}}}}, wtedy funkcja zwraca stan błędu {{Code|(błąd)}}. * {{Code|i}} - numer zmiennej nazwy przestrzeni nazw. Funkcja wykorzystuje {{Code|{{sr|#p.Uzyskanie_nazw_jednostki(frame,...)|p=Pudełko/Pomocne}}}} do wyznaczania ogólnego nazwy przestrzeni nazw dla pozycji bazowej i numerkowej, tzn. dla pozycji: jeden, dwa, trzy,..., itd, i ich ogólnej. Parametr ramki tablicy transportu rodzica szablonu: * {{Code|nazwa przestrzeni nazw}}, {{Code|nazwa przestrzeni nazw 1}}, {{Code|nazwa przestrzeni nazw 2}}, {{Code|nazwa przestrzeni nazw 3}},..., {{Code|nazwa przestrzeni nazw i}} - nazwy przestrzeni nazw dla pozycji bazowej oraz zwykłej i ogólnej numerkowej, * {{Code|typ jednostki}}, {{Code|typ jednostki 1}}, {{Code|typ jednostki 2}}, {{Code|typ jednostki 3}},..., {{Code|typ jednostki i}} - typy jednostek, którym odpowiadają pewne przestrzenie przedmiotowe, dla pozycji bazowej, numerkowej i ogólnej. Parametry ramki tablicy transportu dziecka: * Parametry dziecka są takie same jak rodzica dla funkcji pudełkowej plus tu wymienione, * {{Code|numer jednostki}} - jak parametr {{Code|i}} nie został ustawiony, to wtedy liczy się ta zmienna. Przykłady: <syntaxhighlight lang="mediawiki"> {{Nazwa szablonu 1|nazwa przestrzeni nazw=Wikibooks|nazwa przestrzeni nazw=|nazwa przestrzeni nazw i=|nazwa jednostki=Dyskusja Wikibooks:Strona}} ---- {{Nazwa szablonu 2|nazwa przestrzeni nazw=Wikibooks|nazwa przestrzeni nazw 1=Szablon|nazwa przestrzeni nazw i=|nazwa jednostki 2=Dyskusja Wikibooks:Strona}} </syntaxhighlight> W pierwszym wywołaniu {{Code|nazwa przestrzeni nazw}} jest puste, ale dla tego bazowego (bez numerka) szukamy przestrzeni nazw, a więc ta nazwa jest ostateczna. ---- W drugim wywołaniu w dziecku powiedzmy jest wywołanie, i szukamy nazwy przestrzeni nazw o numerze dwa, która została podana, ale istnieje za to jej wersji ogólna {{Code|nazwa przestrzeni nazw i}} i domyślna {{Code|nazwa przestrzeni nazw}}, ale wtedy dla tego numerkowego liczy się to ogólne z {{Code| i}}, a ponieważ ta nazwa jest pusta, więc będziemy liczyli nazwę przestrzeni nazw z {{Code|nazwa jednostki 2}}. Odpowiadająca powyższemu kodowi, powiedzmy wikikod, według ich zawartości, przedstawia się: <syntaxhighlight lang="mediawiki"> {{#invoke:Pudełko|Nazwa przedmiotowej przestrzeni nazw 3}} ---- {{#invoke:Pudełko|Nazwa przedmiotowej przestrzeni nazw 3|numer jednostki=2}} </syntaxhighlight> Na podstawie powyższego przykładu otrzymamy wynik o schemacie, nie wyniku, bo tam nie ma zmiennej {{Code|nazwa przestrzeni nazw 1}}, ale jest {{Code|nazwa przestrzeni nazw i}}: <syntaxhighlight lang="mediawiki"> <!-- nazwa przestrzeni nazw=""; --> <!-- Czyli wynik: --> <!-- wynik pusty --> <!-- Widzimy, że wygenerowała się nazwa przestrzeni nazw, którą jest przestrzeń nazw główna, jest ciągiem pustym: ""; --> ---- <!-- Ale nie "nazwa przestrzeni nazw 2", bo jej nie ma, ale za to istnieje "nazwa przestrzeni nazw i"; --> <!-- nazwa przestrzeni nazw 2=nazwa przestrzeni nazw i="", a nazwa jednostki 2="Dyskusja Wikibooks:Strona"; --> <!-- Czyli wynik: --> Wikibooks <!-- Widzimy, że wygenerowała się nazwa przestrzeni nazw, którą jest przestrzeń nieprogramowa, ale projektu, wychodząca z nazwy jednostek w tym przypadku z "nazwa jednostki 2"; --> </syntaxhighlight> Dla parametrów numerkowych nie jest brana w tym powyższym przykładzie zmienna {{Code|nazwa przestrzeni nazw 2}}, bo jej nie ma, ale za to jest {{Code|nazwa przestrzeni nazw i}}, bo ona występuje jako parametr domyślny ogólny dla parametrów numerkowych. Tytaj jest używana jest zmienna {{Code|nazwa jednostki 2}} do wygenerowania ostatecznego wyniku, bo jak można zauważyć, parametry przestrzenne wskazują na przestrzeń główną, a nazwy jednostek już nie. Dla parametrów bazowych mamy zmienną {{Code|nazwa przestrzeni nazw}}, ona jest pusta, więc to zostanie wzięte do ostatecznego wyniku. Przykłady w wikikodzie: * {{Code|{{m|Pudełko|Nazwa przedmiotowej przestrzeni nazw 3|Dyskusja szablonu|nazwa przestrzeni nazw{{=}}Moja przestrzeń|nazwa jednostki{{=}}Dyskusja Wikibooks:Strona}}}} → {{Tt|{{#invoke:Pudełko|Nazwa przedmiotowej przestrzeni nazw 3|Dyskusja szablonu|nazwa przestrzeni nazw=Moja przestrzeń||nazwa jednostki=Dyskusja Wikibooks:Szablon}}}} * {{Code|{{m|Pudełko|Nazwa przedmiotowej przestrzeni nazw 3|Dyskusja szablonu|nazwa przestrzeni nazw 2{{=}}Moja przestrzeń|nazwa jednostki 2{{=}}Dyskusja Wikibooks:Strona|numer jednostki{{=}}2}}}} → {{Tt|{{#invoke:Pudełko|Nazwa przedmiotowej przestrzeni nazw 3|Dyskusja szablonu|nazwa przestrzeni nazw 2=Moja przestrzeń||nazwa jednostki 2=Dyskusja Wikibooks:Szablon|numer jednostki=2}}}} * {{Code|{{m|Pudełko|Nazwa przedmiotowej przestrzeni nazw 3|nazwa przestrzeni nazw{{=}}|nazwa jednostki{{=}}Dyskusja Wikibooks:Strona}}}} → {{Tt|{{#invoke:Pudełko|Nazwa przedmiotowej przestrzeni nazw 3|nazwa przestrzeni nazw=|nazwa jednostki=Dyskusja Wikibooks:Szablon}}}} * {{Code|{{m|Pudełko|Nazwa przedmiotowej przestrzeni nazw 3|nazwa przestrzeni nazw 2{{=}}|nazwa jednostki 2{{=}}Dyskusja Wikibooks:Strona|numer jednostki{{=}}2}}}} → {{Tt|{{#invoke:Pudełko|Nazwa przedmiotowej przestrzeni nazw 3|nazwa przestrzeni nazw 2=|nazwa jednostki 2=Dyskusja Wikibooks:Szablon|numer jednostki=2}}}} Powyżej dla przykładu podano parametry nie w rodzicu w szablonie, tylko w dziecku, jeśli chodzi o parametry nazw przestrzeni nazw, ale ich się za to nie powinno podawać w tych ramach, tylko w szablonach, w których wywoływane są te ramki pudełek {{Code|{{m|Pudełko}}}}, ale tak tutaj tak zrobiono by było najłatwiej sprawdzić działanie tego typu funkcji. Analogicznie możemy podawać parametry typu jednostki, np.: wywołaniu modułowym {{Code|{{m|Pudełko|Nazwa przedmiotowej przestrzeni nazw 3|typ jednostki 2{{=}}strona szablonu|numer jednostki{{=}}2}}}}, ale o tym więcej w rozdziałach {{Code|{{sr|#p["Przedmiotowy typ jednostki 3"](frame,i)|p=Pudełko}}}} w „{{sr|#Funkcje typu jednostki|p=Pudełko}}”, one definiują dane przestrzeni przedmiotowe, ale wtedy ta sama nazwa przestrzeni nazw reprezentowana przez {{Parametr|typ jednostki 2|strona szablonu}}, jest zamieniana na to samo, lepiej jest tutaj używać parametrów przestrzennych nazw niż typu jednostki. Tutaj parametr dyskusji typu jednostki bazowy i numerkowy ogólny, czy szczegółowy, nie gra roli, bo nawet, gdy wygenerujemy nazwę przestrzeni dyskusji za pomoca tego parametru, to i tak otrzymamy na samym końcu jego nazwę przedmiotową. Jeżeli typ jednostki bazowy wskazuje na przestrzeń nazw główną, wtedy się nie liczą parametry nazw jednostek, a w przypadku numerkowego, wtedy się liczy. Typ jednostki nie ma takiej samej wartości dla przestrzeni przedmiotowej, co dyskusji. Również parametry typu jednostki nie powinno się podawać w dziecku w ramce, tylko w rodzicu w szablonie jako parametry, w którym ta ramka jest wywoływana, ale tutaj podano jedynie dla przykładu, jak najłatwiej sprawdzić działanie tych parametrów tej funkcji. Najpierw w funkcji nagłówku brane są parametry nazw przestrzeni nazw, a jeżeli ich nie ma, to parametry typu jednostki, a jeżeli nie ma, to generowane są nazwy na podstawie aktualnego modułu. === {{Code|p["Nazwa przestrzeni nazw dyskusji 3"](frame,i)}} === Funkcja pisze nazwę przestrzeni nazw dyskusji jakikolwiek nazwy przestrzeni nazw (tzn. nazwę dyskusji nazwy przestrzenie nazw, czyli nie przedmiotowej, zamieniana jest na nią samą, czyli identyfikator przestrzeni się nie zmienia, a przedmiotową, nie dyskusji, przekształca się na dyskusji jej odpowiadającą, czyli w tym przypadku identyfikator przestrzeni zwiększa się o numer więcej), według, i nie zawsze tylko, podanej w zmiennej {{Code|nazwa przestrzeni nazw}} dla pozycja bazowej w podanych parametrach szablonu rodzicu ramki dziecka, lub dla innej pozycji należy parametr podawać w formie {{Code|nazwa przestrzeni nazw 1}}, {{Code|nazwa przestrzeni nazw 2}}, {{Code|nazwa przestrzeni nazw 3}},..., lub te parametry można podać w postaci ogólnej {{Code|nazwa przestrzeni nazw i}}. W tej funkcji trzeba też podawać parametry nazwy jednostek {{Code|nazwa jednostki}}, {{Code|nazwa jednostki 1}}, {{Code|nazwa jednostki 2}}, {{Code|nazwa jednostki 3}},... Parametry podaje się w parametrach rodzica wywołania tej funkcji {{Code|{{m|Pudełko|Nazwa przestrzeni nazw dyskusji 3}}}} (ale ich nie trzeba podawać w dziecku, ale można) i w parametrach dziecka, jeśli chodzi o zmienną {{Code|numer jednostki}}, czyli np.: {{Code|{{m|Pudełko|Nazwa przestrzeni nazw dyskusji 3|numer jednostki{{=}}<jakaś liczba całkowita dodatnia>}}}}. Te parametry przestrzenne zamiast w rodzicu w szablonie można podać w ramce dziecka, wtedy parametry dziecka mają pierwszeństwo. Przestrzeń nazw z parametrów nazw przestrzennych bazowych (bez numerka) może odpowiadać wartości przestrzeni głównej, to wtedy odpowiednia przestrzeń nazw z parametru nazwy jednostki się nie liczy w tej funkcji, aby się liczyła należy użyć funkcji {{Code|{{sr|#p["Nazwa przestrzeni nazw dyskusji 2"](frame,...)|p=Pudełko}}}}. W tym przypadku funkcja działa jak {{Code|{{sr|#p["Nazwa przestrzeni nazw dyskusji"](frame,...)|p=Pudełko}}}}. Przestrzeń nazw z parametrów nazw przestrzennych numerkowych może odpowiadać wartości przestrzeni głównej, to wtedy odpowiednia przestrzeń nazw z parametru nazwy jednostki się liczy w tej funkcji, wtedy jest liczona nazwa przestrzeni nazw z tego parametru. Gdy parametry przestrzenne lub typ jednostki w drugim podejściu nie wskazują na przestrzeń główną, to wtedy działanie tej funkcji jest podobne do {{Code|{{sr|#p["Nazwa przestrzeni nazw dyskusji 2"](frame,...)|p=Pudełko}}}}. Definicja skrótowa funkcji: <syntaxhighlight lang="lua"> p["Nazwa przestrzeni nazw dyskusji 3"]=function(frame,czy_uwzglednic_alternatywna_nazwe,i)...end; </syntaxhighlight> Wtedy ciało funkcji tej, czyli jego definicja w środku, jest: <syntaxhighlight lang="lua"> -- Jest liczony numer parametru nazwy przestrzeni nazw, domyslnie chodzi tu o numer bazowy parametrów przestrzennych; local numer_jednostki=i or frame.args["numer jednostki"]; local liczba_numeru_jednostki=((numer_jednostki)and(tonumber(numer_jednostki)) or 0); local pudelko_pomocne_modul=require("Module:Pudełko/Pomocne"); -- Liczy nazwę przestrzeni nazw dyskusji na podstawie podanych parametrów; return pudelko_pomocne_modul.Uzyskanie_nazw_jednostki(frame,2,liczba_numeru_jednostki,nil,1); </syntaxhighlight> Parametry funkcji: * {{Code|frame}} - tablica ramki tablicy transportu, * {{Code|czy_uwzglednic_alternatywna_nazwe}} - czy ma uwzględniać nazwę przestrzeni nazw domyślną szablonu, dostępne wartości: {{Code|false}}, w której nazwa domyślna nie jest uwzględniana wtedy, oraz {{Code|nil}} i {{Code|true}}, które oznaczają to samo, w tym jeżeli ona jest uwzględniana, wtedy jest brany parametr pierwszy dziecka, który musi istnieć przy takiej wartości tego parametru, tzn. {{Code|{{m|Pudełko|Nazwa przestrzeni nazw dyskusji 3|Szablon}}}}, nazwa domyślna zostatnie zamieniona na dyskusji, a jeśli jest już taka, to takiej transfomacji nie ma, a jeśli nazwa uzyskana nazwy przestrzeni nazw jest w takim przypadku błędna, to wzięty jest ten parametr, a jeżeli nazwa domyślna jest błędna, czyli {{Code|{{m|Pudełko|Nazwa przestrzeni nazw dyskusji 3|Moja przestrzeń}}}}, wtedy funkcja zwraca stan błędu {{Code|(błąd)}}. * {{Code|i}} - numer zmiennej nazwy przestrzeni nazw. Funkcja wykorzystuje {{Code|{{sr|#p.Uzyskanie_nazw_jednostki(frame,...)|p=Pudełko/Pomocne}}}} do wyznaczania ogólnego nazwy przestrzeni nazw dla pozycji bazowej i numerkowej, tzn. dla pozycji: jeden, dwa, trzy,..., itd, i ich ogólnej. Parametr ramki tablicy transportu rodzica szablonu: * {{Code|nazwa przestrzeni nazw}}, {{Code|nazwa przestrzeni nazw 1}}, {{Code|nazwa przestrzeni nazw 2}}, {{Code|nazwa przestrzeni nazw 3}},..., {{Code|nazwa przestrzeni nazw i}} - nazwy przestrzeni nazw dla pozycji bazowej oraz zwykłej i ogólnej numerkowej, * {{Code|nazwa jednostki}}, {{Code|nazwa jednostki 1}}, {{Code|nazwa jednostki 2}}, {{Code|nazwa jednostki 3}},... - nazwy jednostek dla pozycji bazowej i numerkowej, * {{Code|typ jednostki}}, {{Code|typ jednostki 1}}, {{Code|typ jednostki 2}}, {{Code|typ jednostki 3}},..., {{Code|typ jednostki i}} - typy jednostek, którym odpowiadają pewne przestrzenie przedmiotowe, dla pozycji bazowej, numerkowej i ogólnej. Parametry ramki tablicy transportu dziecka: * Parametry dziecka są takie same jak rodzica dla funkcji pudełkowej plus tu wymienione, * {{Code|numer jednostki}} - jak parametr {{Code|i}} nie został ustawiony, to wtedy liczy się ta zmienna. Przykłady: <syntaxhighlight lang="mediawiki"> {{Nazwa szablonu 1|nazwa przestrzeni nazw=Wikibooks|nazwa przestrzeni nazw=|nazwa przestrzeni nazw i=|nazwa jednostki=Szablon:Strona}} ---- {{Nazwa szablonu 2|nazwa przestrzeni nazw=Wikibooks|nazwa przestrzeni nazw 1=Szablon|nazwa przestrzeni nazw i=|nazwa jednostki 2=Wikibooks:Strona}} </syntaxhighlight> W pierwszym wywołaniu {{Code|nazwa przestrzeni nazw}} jest puste, ale dla tego bazowego (bez numerka) szukamy przestrzeni nazw, a więc ta nazwa jest ostateczna. ---- W drugim wywołaniu w dziecku powiedzmy jest wywołanie, i szukamy nazwy przestrzeni nazw o numerze dwa, która została podana, ale istnieje za to jej wersji ogólna {{Code|nazwa przestrzeni nazw i}} i domyślna {{Code|nazwa przestrzeni nazw}}, ale wtedy dla tego numerkowego liczy się to ogólne z {{Code| i}}, a ponieważ ta nazwa jest pusta, więc będziemy liczyli nazwę przestrzeni nazw z {{Code|nazwa jednostki 2}}. Odpowiadająca powyższemu kodowi, powiedzmy wikikod, według ich zawartości, przedstawia się: <syntaxhighlight lang="mediawiki"> {{#invoke:Pudełko|Nazwa przestrzeni nazw 3}} ---- {{#invoke:Pudełko|Nazwa przestrzeni nazw 3|numer jednostki=2}} </syntaxhighlight> Na podstawie powyższego przykładu otrzymamy wynik o schemacie, nie wyniku, bo tam nie ma zmiennej {{Code|nazwa przestrzeni nazw 1}}, ale jest {{Code|nazwa przestrzeni nazw i}}: <syntaxhighlight lang="mediawiki"> <!-- nazwa przestrzeni nazw=""; --> <!-- Czyli wynik: --> Dyskusja <!-- Widzimy, że wygenerowała się nazwa przestrzeni nazw, którą jest przestrzeń nazw niegłówna, jest ciągiem niepustym; --> ---- <!-- Ale nie "nazwa przestrzeni nazw 2", bo jej nie ma, ale za to istnieje "nazwa przestrzeni nazw i"; --> <!-- nazwa przestrzeni nazw 2=nazwa przestrzeni nazw i="", a nazwa jednostki 2="Wikibooks:Strona"; --> <!-- Czyli wynik: --> Dyskusja Wikibooks <!-- Widzimy, że wygenerowała się nazwa przestrzeni nazw, którą jest przestrzeń nieprogramowa, ale projektu, wychodząca z nazwy jednostek w tym przypadku z "nazwa jednostki 2"; --> </syntaxhighlight> Dla parametrów numerkowych nie jest brana w tym powyższym przykładzie zmienna {{Code|nazwa przestrzeni nazw 2}}, bo jej nie ma, ale za to jest {{Code|nazwa przestrzeni nazw i}}, bo ona występuje jako parametr domyślny ogólny dla parametrów numerkowych. Tytaj jest używana jest zmienna {{Code|nazwa jednostki 2}} do wygenerowania ostatecznego wyniku, bo jak można zauważyć, parametry przestrzenne wskazują na przestrzeń główną, a nazwy jednostek już nie. Dla parametrów bazowych mamy zmienną {{Code|nazwa przestrzeni nazw}}, ona jest pusta, więc to zostanie wzięte do ostatecznego wyniku. Przykłady w wikikodzie: * {{Code|{{m|Pudełko|Nazwa przestrzeni nazw dyskusji 3|Szablon|nazwa przestrzeni nazw{{=}}Moja przestrzeń|nazwa jednostki{{=}}Wikibooks:Strona}}}} → {{Tt|{{#invoke:Pudełko|Nazwa przestrzeni nazw dyskusji 3|Szablon|nazwa przestrzeni nazw=Moja przestrzeń|nazwa jednostki=Wikibooks:Szablon}}}} * {{Code|{{m|Pudełko|Nazwa przestrzeni nazw dyskusji 3|Szablon|nazwa przestrzeni nazw 2{{=}}Moja przestrzeń|nazwa jednostki 2{{=}}Wikibooks:Strona|numer jednostki{{=}}2}}}} → {{Tt|{{#invoke:Pudełko|Nazwa przestrzeni nazw dyskusji 3|Szablon|nazwa przestrzeni nazw 2=Moja przestrzeń|nazwa jednostki 2=Wikibooks:Szablon|numer jednostki=2}}}} * {{Code|{{m|Pudełko|Nazwa przestrzeni nazw dyskusji 3|nazwa przestrzeni nazw{{=}}|nazwa jednostki{{=}}Wikibooks:Strona}}}} → {{Tt|{{#invoke:Pudełko|Nazwa przestrzeni nazw dyskusji 3|nazwa przestrzeni nazw=|nazwa jednostki=Wikibooks:Szablon}}}} * {{Code|{{m|Pudełko|Nazwa przestrzeni nazw dyskusji 3|nazwa przestrzeni nazw 2{{=}}|nazwa jednostki 2{{=}}Wikibooks:Strona|numer jednostki{{=}}2}}}} → {{Tt|{{#invoke:Pudełko|Nazwa przestrzeni nazw dyskusji 3|nazwa przestrzeni nazw 2=|nazwa jednostki 2=Wikibooks:Szablon|numer jednostki=2}}}} Powyżej dla przykładu podano parametry nie w rodzicu w szablonie, tylko w dziecku, jeśli chodzi o parametry nazw przestrzeni nazw i nazw jednostek, ale ich się za to nie powinno podawać w tych ramach, tylko w szablonach, w których wywoływane są te ramki pudełek {{Code|{{m|Pudełko}}}}, ale tak tutaj tak zrobiono by było najłatwiej sprawdzić działanie tego typu funkcji. Analogicznie możemy podawać parametry typu jednostki, np.: wywołaniu modułowym {{Code|{{m|Pudełko|Nazwa przestrzeni nazw dyskusji 3|typ jednostki 2{{=}}Podręcznik|nazwa jednostki 2{{=}}Szablon:Strona|numer jednostki{{=}}2}}}} (ale wtedy jest brana przestrzeń nazw z nazwy jednostki), ale o tym więcej w rozdziałach {{Code|{{sr|#p["Dyskusyjny typ jednostki 3"](frame,i)|p=Pudełko}}}} w „{{sr|#Funkcje typu jednostki|p=Pudełko}}”, one definiują dane przestrzenie dyskusji, ale można użyć parametru dyskusji typu jednostki z obojętnie jaką wartością niepustą, czy pustą, czy nawet jej nie podamy, wtedy wyświetli się nazwa przestrzeni nazw dyskusji. Jeżeli typ jednostki bazowy wskazuje na przestrzeń nazw główną, wtedy się nie liczą parametry nazw jednostek, a w przypadku numerkowego, wtedy się liczy. Typ jednostki nie ma takiej samej wartości dla przestrzeni przedmiotowej, co dyskusji. Również parametry typu jednostki nie powinno się podawać w dziecku w ramce, tylko w rodzicu w szablonie jako parametry, w którym ta ramka jest wywoływana, ale tutaj podano jedynie dla przykładu, jak najłatwiej sprawdzić działanie tych parametrów tej funkcji. Najpierw w funkcji nagłówku brane są parametry nazw przestrzeni nazw, a jeżeli ich nie ma, to parametry typu jednostki, a jeżeli nie ma lub parametry przestrzenne wskazują na przestrzeń główną, i nie ma nazwy jednostki, to generowane są nazwy tej funkcji na podstawie aktualnej strony. == Funkcje pełnych nazw jednostki == === {{Code|p["Pełna nazwa dyskusji jednostki"](frame,i)}} === === {{Code|p["Pełna nazwa przedmiotowa jednostki"](frame,i)}} === === {{Code|p["Pełna nazwa jednostki"](frame,i)}} === == Funkcje pełnych nazw jednostki drugiej wersji == === {{Code|p["Pełna nazwa dyskusji jednostki 2"](frame,i)}} === === {{Code|p["Pełna nazwa przedmiotowa jednostki 2"](frame,i)}} === === {{Code|p["Pełna nazwa jednostki 2"](frame,i)}} === == Funkcje pełnych nazw jednostki trzeciej wersji == === {{Code|p["Pełna nazwa dyskusji jednostki 3"](frame,i)}} === === {{Code|p["Pełna nazwa przedmiotowa jednostki 3"](frame,i)}} === === {{Code|p["Pełna nazwa jednostki 3"](frame,i)}} === == Funkcje nazw jednostki == === {{Code|p["Nazwa jednostki"](frame,i)}} === == Funkcje nazw jednostki drugiej wersji == === {{Code|p["Nazwa jednostki 2"](frame,i)}} === === {{Code|p["Nazwa przedmiotowa jednostki 2"](frame,i)}} === === {{Code|p["Nazwa dyskusji jednostki 2"](frame,i)}} === == Funkcje nazw jednostki trzeciej wersji == === {{Code|p["Nazwa jednostki 3"](frame,i)}} === === {{Code|p["Nazwa przedmiotowa jednostki 3"](frame,i)}} === === {{Code|p["Nazwa dyskusji jednostki 3"](frame,i)}} === == Funkcje typu jednostki == === {{Code|p["Typ jednostki"](frame,i)}} === === {{Code|p["Typ jednostki 2"](frame,i)}} === === {{Code|p["Typ jednostki 3"](frame,i)}} === === Funkcje typu jednostki przedmiotowe === ==== {{Code|p["Przedmiotowy typ jednostki"](frame,i)}} ==== ==== {{Code|p["Przedmiotowy typ jednostki 2"](frame,i)}} ==== ==== {{Code|p["Przedmiotowy typ jednostki 3"](frame,i)}} ==== === Fukcje typu jednostki dyskusji === ==== {{Code|p["Dyskusyjny typ jednostki"](frame,i)}} ==== ==== {{Code|p["Dyskusyjny typ jednostki 2"](frame,i)}} ==== ==== {{Code|p["Dyskusyjny typ jednostki 3"](frame,i)}} ==== == Funkcje chech pudełka == === {{Code|p["Cecha pudełka"](frame)}} === === {{Code|p["Przedmiotowa cecha pudełka"](frame)}} === === {{Code|p["Dyskusyjna cecha pudełka"](frame)}} === == Fukcje ogólnego pudełka == === {{Code|p["Ogólne pudełko"](frame)}} === == Funkcje ogólne == === {{Code|p["Tekst pudełka"](frame)}} === == Funkcje błędów pudełka == === {{Code|p["Błędy pudełka"](frame)}} === === {{Code|p["Przedmiotowe błędy pudełka"](frame)}} === === {{Code|p["Dyskusyjne błędy pudełka"](frame)}} === == Funkcje nazw stron == === {{Code|p["Nazwa strony głównej projektu"](frame,i)}} === === {{Code|p["Nazwa strony głównej dla dzieci projektu"](frame,i)}} === == Funkcje kodów == === {{Code|p["Kod języka"](frame,i)}} === === {{Code|p["Kod projektu"](frame,i)}} === === {{Code|p["Klucz projektu"](frame,i)}} === == Funkcje wiki == === {{Code|p["Inny niż język bieżący wiki"](frame)}} === === {{Code|p["Inne niż lokalne wiki"](frame)}} === === {{Code|p["Inne niż bieżące wiki"](frame)}} === == Funkcje typów parametrów, czy podane je == === {{Code|p["Podano parametry nienazwane"](frame)}} === === {{Code|p["Podano parametry numerowane"](frame)}} === === {{Code|p["Podano parametry nazwane"](frame)}} === == Funkcje kodów tego projektu == === {{Code|p["Kod projektu tego projektu"](frame)}} === === {{Code|p["Kod języka tego projektu"](frame)}} === === {{Code|p["Klucz projektu tego projektu"](frame)}} === == Funkcje stron == === {{Code|p["Strona główna tego projektu"](frame)}} === === {{Code|p["Strona główna dla dzieci tego projektu"](frame)}} === == Funkcje nazw stron drugiej wersji == === {{Code|p["Nazwa strony głównej dla dzieci projektu 2"](frame)}} === === {{Code| p["Nazwa strony głównej projektu 2"](frame)}} === {{BrClear}} <noinclude><!-- -->{{ProstaStronaKoniec}}<!-- -->{{Kategoria|Opisy funkcji, w Lua w Scribunto, w modułach}}<!-- --></noinclude> oe0twgjktzu4aafj9o7jzoa9adpbmy5 540476 540474 2026-04-24T11:33:49Z Persino 2851 540476 wikitext text/x-wiki <noinclude>{{ProstaStronaStart | nagłówek = {{Podrozdział|{{ld2|Pudełko}}|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 pudelko_modul=require("Module:Pudełko"); </syntaxhighlight> dzięki, któremu można wypisywać funkcje należącego do niego. Posługuje się na parametrach pudełkowych {{Parametr|nazwa przestrzeni nazw}} (czy też bez numerka {{Parametr|nazwa przestrzeni nazw i}} dla tego numerowanego) lub te z numerkiem po jednej spacji w nich (ale nie dla tego z końcówką {{Code| i}}) mogą zostać użyte jako parametry szablonu. Moduł {{Code|{{ld2|Pudełko}}}} przedstawia funkcje nazw w oparciu o funkcje nazw {{Code|{{ld2|Nazwy}}}}, generuje on nazwy za pomocą parametrów pudełkowych podanych poniżej. Parametr {{Parametr|nazwa jednostki}} (lub parametr {{Parametr|cel}} dla numerka tego pierwszego, tego alternatywnego), lub te z numerkiem po jednej spacji w nazwie parametru, albo numerowane numerkami {{Code|1}}, {{Code|2}},..., mogą zostać użyte jako parametry szablonu. Parametry określające rodzaj jednostki {{Parametr|typ jednostki}} z {{Parametr|dyskusja typu jednostki}}, itp. w wersjach z numerkiem po jednej spacji w nich mogą zostać użyte jako parametry szablonu. A te tymi numerowanymi liczbami naturalnymi {{Tt|nazwy jednostki}} od jedynki wzwyż poprzez szablon, w którym są one użyte, one też mogą być użyte z dwukropkiem, te numerowane, na samym początku nazwy, wtedy one są traktowane jako pełne nazwy strony, i wtedy one nie zostaną z interpretowane, że do nich trzeba użyć parametr odpowiedni z nazwą przetrzeni nazw z tego numerowanego, czy ogólny, aby utworzyć znów inną pełną nazwę strony dla tego numerka. Zestawienie: * {{Code|nazwa przestrzeni nazw}} i {{Code|nazwa przestrzeni nazw i}} (ogólna nazwa przestrzeni nazw dla wszystkich numerków, i tych numerowanych jednostek) - i to pierwsze z numerkiem, tzn. {{Code|nazwa przestrzeni nazw 1}}, {{Code|nazwa przestrzeni nazw 2}}, ..., * {{Code|nazwa jednostki}} - i te z numerkiem: {{Code|nazwa jednostki 1}}, {{Code|nazwa jednostki 2}}, ..., lub gdy jest zamiast tego parametrem numerowany, {{Code|1}}, {{Code|2}},..., który dla tego pierwszego może być uznany jako: {{Code|cel}} {{=}} {{Code|1}}, * {{Code|typ jednostki}} (parametr bazowy) i {{Code|typ jednostki i}} (parametr domyślny numerkowy) - i te z numerkiem: {{Code|typ jednostki 1}}, {{Code|typ jednostki 2}}, ..., tzn. gdy chcemy określić z jakim typem jednostki mamy do czynienia w zależności do jakiej przestrzeni nazw należy, a w danej, czy jest on np. programowy, czy tylko jest opisem, jak to bywa w szablonach {{Np|Template|link=tak}}, podobnie jest w przypadku {{Np|Module|link=tak}}, czy jak jest w innych przestrzeniach nazw, ** {{Code|dyskusja typu jednostki}} (parametr bazowy) i {{Code|dyskusja typu jednostki i}} (parametr domyślny numerkowy) - i te z numerkiem: {{Code|dyskusja typu jednostki 1}}, {{Code|dyskusja typu jednostki 2}}, ..., gdy chcemy określić wartością niepustą,że chodzi tutaj o typ jednostki. == {{Code|p.CzyNiepoprawnaNazwa(nazwa_jednostki)}} == Funkcja sprawdzajaca, czy jest poprawnie podana nazwa jednostki, czy ma poprawną nazwę. Znakami tymi, z których nie powinna składać się nazwa jest {{Code|<nowiki>{}<>|[]#\n</nowiki>}} i dodatkowo znak {{Code|&#127;}} (kod {{Code|{{Nowiki|&#127;}}}}). Też nie może składać się z trzech znaków tyldy, tzn. {{Code|<nowiki>~~~</nowiki>}}. Również w swojej budowie nie może składać się ze kodów {{Strong|HTML}} literowych o wzorze {{Code|{{Nowiki|&(%a+);}}}}. Natomiast może składać się z {{Code|{{Nowiki|&#(%d+);}}}} i {{Code|{{Nowiki|&#x(%x+);}}}}, ale w pierw te kody muszą być zamienione na normalne znaki. Skrótowa definicja funkcji: <syntaxhighlight lang="lua"> function p.CzyNiepoprawnaNazwa(nazwa_jednostki)...end; </syntaxhighlight> Wtedy ciało funkcji tej, czyli jego definicja w środku, jest: <syntaxhighlight lang="lua"> -- Moduł: "Moduł:Html/dane", służy do ładowania znaku o kodzie HTML "&#127;"; local html_dane_modul=mw.loadData("Module:Html/dane"); return mw.ustring.match(nazwa_jednostki,"[{}<>|%[%]#\n"..html_dane_modul.znak_127.."]+") or mw.ustring.match(nazwa_jednostki,"~~~") or mw.ustring.match(nazwa_jednostki,"&(%a+);"); </syntaxhighlight> Parametry: * {{Code|nazwa_jednostki}} - nazwa jednostki do sprawdzenia. Przykłady: <syntaxhighlight lang="lua"> local pudelko_modul=require("Module:Pudełko"); -- Podana przykładowa niepoprawna nazwa jedostki local nazwa_jednostki="Nazwa pliku [[Nazwa linku w pliku]]"; -- Fukcja zwróci wartość: local czy_poprawna_nazwa=true; local czy_poprawna_nazwa=pudelko_modul.CzyNiepoprawnaNazwa(nazwa_jednostki); </syntaxhighlight> == Funkcje nazw przestrzeni nazw == === {{Code|p["Nazwa przestrzeni nazw"](frame,...)}} === Funkcja pisze nazwę przestrzeni nazw, niezależnie, czy to jest przedmiotowa, czy dyskusji, według podanej w zmiennej {{Code|nazwa przestrzeni nazw}} dla pozycja bazowej w podanych parametrach szablonu rodzicu ramki dziecka, lub dla innej pozycji należy parametr podawać w formie {{Code|nazwa przestrzeni nazw 1}}, {{Code|nazwa przestrzeni nazw 2}}, {{Code|nazwa przestrzeni nazw 3}},..., lub te parametry można podać w postaci ogólnej {{Code|nazwa przestrzeni nazw i}}. Parametry podaje się w parametrach rodzica wywołania tej funkcji {{Code|{{m|Pudełko|Nazwa przestrzeni nazw}}}} (ale ich nie trzeba podawać w dziecku, ale można) i w parametrach dziecka, jeśli chodzi o zmienną {{Code|numer jednostki}}, czyli np.: {{Code|{{m|Pudełko|Nazwa przestrzeni nazw|numer jednostki{{=}}<jakaś liczba całkowita dodatnia>}}}}. Te parametry przestrzenne zamiast w rodzicu w szablonie można podać w ramce dziecka, wtedy parametry dziecka mają pierwszeństwo. Przestrzeń nazw z parametrów nazw przestrzennych może odpowiadać wartości przestrzeni głównej, to wtedy odpowiednia przestrzeń nazw z parametru nazwy jednostki się nie liczy w tej funkcji, aby się liczyła należy użyć funkcji {{Code|{{sr|#p["Nazwa przestrzeni nazw 2"](frame,...)|p=Pudełko}}}}. Definicja skrótowa funkcji: <syntaxhighlight lang="lua"> p["Nazwa przestrzeni nazw"]=function(frame,czy_uwzglednic_alternatywna_nazwe,i)...end; </syntaxhighlight> Wtedy ciało funkcji tej, czyli jego definicja w środku, jest: <syntaxhighlight lang="lua"> -- Jest liczony numer parametru nazwy przestrzeni nazw, domyslnie chodzi tu o numer bazowy parametrów przestrzennych; local numer_jednostki=i or frame.args["numer jednostki"]; local liczba_numer_jednostki=((numer_jednostki)and(tonumber(numer_jednostki))or 0); local pudelko_pomocne_modul=require("Module:Pudełko/Pomocne"); -- Liczy nazwę przestrzeni nazw na podstawie podanych parametrów; return pudelko_pomocne_modul.Nazwa_przestrzeni_nazw(frame,0, czy_uwzglednic_alternatywna_nazwe,liczba_numer_jednostki); </syntaxhighlight> Parametry funkcji: * {{Code|frame}} - tablica ramki tablicy transportu, * {{Code|czy_uwzglednic_alternatywna_nazwe}} - czy ma uwzględniać nazwę przestrzeni nazw domyślną szablonu, dostępne wartości: {{Code|false}}, w której nazwa domyślna nie jest uwzględniana wtedy, oraz {{Code|nil}} i {{Code|true}}, które oznaczają to samo, w tym jeżeli ona jest uwzględniana, wtedy jest brany parametr pierwszy dziecka, który musi istnieć przy takiej wartości tego parametru, tzn. {{Code|{{m|Pudełko|Nazwa przestrzeni nazw|Szablon}}}}, a ten element jest używany, gdy nazwa uzyskana nazwy przestrzeni nazw jest w takim przypadku błędna, a jeżeli wtedy nazwa domyślna jest błędna, czyli {{Code|{{m|Pudełko|Nazwa przestrzeni nazw|Moja przestrzeń}}}}, wtedy funkcja zwraca stan błędu {{Code|(błąd)}}. * {{Code|i}} - numer zmiennej nazwy przestrzeni nazw. Funkcja wykorzystuje {{Code|{{sr|#p.Nazwa_przestrzeni_nazw(frame,...)|p=Pudełko/Pomocne}}}} do wyznaczania ogólnego nazwy przestrzeni nazw dla pozycji bazowej i numerkowej, tzn. dla pozycji: jeden, dwa, trzy,..., itd, i ich ogólnej. Parametr ramki tablicy transportu rodzica szablonu: * {{Code|nazwa przestrzeni nazw}}, {{Code|nazwa przestrzeni nazw 1}}, {{Code|nazwa przestrzeni nazw 2}}, {{Code|nazwa przestrzeni nazw 3}},..., {{Code|nazwa przestrzeni nazw i}} - nazwy przestrzeni nazw dla pozycji bazowej oraz zwykłej i ogólnej numerkowej, * {{Code|typ jednostki}}, {{Code|typ jednostki 1}}, {{Code|typ jednostki 2}}, {{Code|typ jednostki 3}},..., {{Code|typ jednostki i}} - typy jednostek, którym odpowiadają pewne przestrzenie przedmiotowe, dla pozycji bazowej, numerkowej i ogólnej, ** {{Code|dyskusja typu jednostki}}, {{Code|dyskusja typu jednostki 1}}, {{Code|dyskusja typ jednostki 2}}, {{Code|dyskusja typ jednostki 3}},..., {{Code|dyskusja typ jednostki i}} - czy dany typ jednostki ma przedstawiać, jeśli niepusta, przestrzeń dyskusji dla pozycji bazowej, numerkowej i ogólnej. Parametry ramki tablicy transportu dziecka: * Parametry dziecka są takie same jak rodzica dla funkcji pudełkowej plus tu wymienione, * {{Code|numer jednostki}} - jak parametr {{Code|i}} nie został ustawiony, to wtedy liczy się ta zmienna. Przykłady: <syntaxhighlight lang="mediawiki"> {{Nazwa szablonu|nazwa przestrzeni nazw=Wikibooks|nazwa przestrzeni nazw 2=Szablon|nazwa przestrzeni nazw i=Moduł}} </syntaxhighlight> W dziecku powiedzmy jest wywołanie, i szukamy nazwy przestrzeni nazw o numerze dwa, która nie została podana, ale istnieje za to jej wersji ogólna {{Code|nazwa przestrzeni nazw i}} i domyślna {{Code|nazwa przestrzeni nazw}}: <syntaxhighlight lang="mediawiki"> {{#invoke:Pudełko|Nazwa przestrzeni nazw|numer jednostki=1}} </syntaxhighlight> Na podstawie powyższego przykładu otrzymamy wynik o schemacie, nie wyniku, bo tam nie ma zmiennej {{Code|nazwa przestrzeni nazw 1}}, ale jest {{Code|nazwa przestrzeni nazw i}}: <syntaxhighlight lang="mediawiki"> <!-- Ale nie "nazwa przestrzeni nazw", bo jej nie ma, ale za to istnieje "nazwa przestrzeni nazw i"; --> <!-- nazwa przestrzeni nazw 2=nazwa przestrzeni nazw i=Moduł; --> <!-- Czyli wynik: --> Moduł <!-- Widzimy, że wygenerowała się nazwa przestrzeni nazw, którą jest przestrzeń programowa, którą również jest "Szablon"; --> </syntaxhighlight> Nie jest brana w tym powyższym przykładzie zmienna {{Code|nazwa przestrzeni nazw}}, bo jej nie ma, ale za to jest {{Code|nazwa przestrzeni nazw i}}, bo ona występuje jako parametr domyślny ogólny dla parametrów numerkowych. Przykłady w wikikodzie: * {{Code|{{m|Pudełko|Nazwa przestrzeni nazw|numer jednostki{{=}}2}}}} → {{Tt|{{#invoke:Pudełko|Nazwa przestrzeni nazw|numer jednostki=2}}}} * {{Code|{{m|Pudełko|Nazwa przestrzeni nazw|Szablon|nazwa przestrzeni nazw i{{=}}Moja przestrzeń|numer jednostki{{=}}2}}}} → {{Tt|{{#invoke:Pudełko|Nazwa przestrzeni nazw|Szablon|nazwa przestrzeni nazw i=Moja przestrzeń|numer jednostki=2}}}} * {{Code|{{m|Pudełko|Nazwa przestrzeni nazw|nazwa przestrzeni nazw 2{{=}}Szablon|numer jednostki{{=}}2}}}} → {{Tt|{{#invoke:Pudełko|Nazwa przestrzeni nazw|nazwa przestrzeni nazw 2=Szablon|numer jednostki=2}}}} * {{Code|{{m|Pudełko|Nazwa przestrzeni nazw|nazwa przestrzeni nazw 2{{=}}Szablon|numer jednostki{{=}}2}}}} → {{Tt|{{#invoke:Pudełko|Nazwa przestrzeni nazw|nazwa przestrzeni nazw i=Szablon|numer jednostki=2}}}} * {{Code|{{m|Pudełko|Nazwa przestrzeni nazw|nazwa przestrzeni nazw{{=}}Szablon|numer jednostki{{=}}2}}}} → {{Tt|{{#invoke:Pudełko|Nazwa przestrzeni nazw|nazwa przestrzeni nazw=Szablon|numer jednostki=2}}}} Powyżej dla przykładu podano parametry nie w rodzicu w szablonie, tylko w dziecku, jeśli chodzi o parametry nazw przestrzeni nazw, ale ich się za to nie powinno podawać w tych ramach, tylko w szablonach, w których wywoływane są te ramki pudełek {{Code|{{m|Pudełko}}}}, ale tak tutaj tak zrobiono by było najłatwiej sprawdzić działanie tego typu funkcji. Analogicznie możemy podawać parametry typu jednostki, np.: wywołaniu modułowym {{Code|{{m|Pudełko|Nazwa przestrzeni nazw|typ jednostki 2{{=}}strona szablonu|numer jednostki{{=}}2}}}}, ale o tym więcej w rozdziałach {{Code|{{sr|#p["Typ jednostki"](frame,i)|p=Pudełko}}}} w „{{sr|#Funkcje typu jednostki|p=Pudełko}}”, one definiują dane przestrzenie przedmiotowe, czy dyskusji, ale można lub nie użyć parametru dyskusji typu jednostki z wartością niepustą, wtedy wyświetli się nazwa przestrzeni nazw dyskusji. Typ jednostki nie ma takiej samej wartości dla przestrzeni przedmiotowej, co dyskusji. Również parametry typu jednostki nie powinno się podawać w dziecku w ramce, tylko w rodzicu w szablonie jako parametry, w którym ta ramka jest wywoływana, ale tutaj podano jedynie dla przykładu, jak najłatwiej sprawdzić działanie tych parametrów tej funkcji. Najpierw w funkcji nagłówku brane są parametry nazw przestrzeni nazw, a jeżeli ich nie ma, to parametry typu jednostki, a jeżeli nie ma, to generowane są nazwy na podstawie aktualnego modułu. === {{Code|p["Nazwa przedmiotowej przestrzeni nazw"](frame,...)}} === Funkcja pisze przedmiotową nazwę przestrzeni nazw jakikolwiek nazwy przestrzeni nazw (tzn. nazwę przedmiotową nazwy przestrzenie nazw, czyli nie dyskusji, zamieniana jest na nią samą, czyli identyfikator przestrzeni się nie zmienia, a dyskusji, nie przedmiotową, przekształca się na przedmiotową jej odpowiadającą, czyli w tym przypadku identyfikator przestrzeni zmniejsza się o numer mniej), według podanej w zmiennej {{Code|nazwa przestrzeni nazw}} dla pozycja bazowej w podanych parametrach szablonu rodzicu ramki dziecka, lub dla innej pozycji należy parametr podawać w formie {{Code|nazwa przestrzeni nazw 1}}, {{Code|nazwa przestrzeni nazw 2}}, {{Code|nazwa przestrzeni nazw 3}},..., lub te parametry można podać w postaci ogólnej {{Code|nazwa przestrzeni nazw i}}. Parametry podaje się w parametrach rodzica wywołania tej funkcji {{Code|{{m|Pudełko|Nazwa przedmiotowej przestrzeni nazw}}}} (ale ich nie trzeba podawać w dziecku, ale można) i w parametrach dziecka, jeśli chodzi o zmienną {{Code|numer jednostki}}, czyli np.: {{Code|{{m|Pudełko|Nazwa przedmiotowej przestrzeni nazw|numer jednostki{{=}}<jakaś liczba całkowita dodatnia>}}}}. Te parametry przestrzenne zamiast w rodzicu w szablonie można podać w ramce dziecka, wtedy parametry dziecka mają pierwszeństwo. Parametry przestrzenne mogą mogą być podane w postaci przestrzeni przedmiotowej lub dyskusji, ale ta funkcja zawsze ją zamienia na przedmiotową. Przestrzeń nazw z parametrów nazw przestrzennych może odpowiadać wartości przestrzeni głównej, to wtedy odpowiednia przestrzeń nazw z parametru nazwy jednostki się nie liczy w tej funkcji, aby się liczyła należy użyć funkcji {{Code|{{sr|#p["Nazwa przedmiotowej przestrzeni nazw 2"](frame,...)|p=Pudełko}}}}. Definicja skrótowa funkcji: <syntaxhighlight lang="lua"> p["Nazwa przedmiotowej przestrzeni nazw"]=function(frame,czy_uwzglednic_alternatywna_nazwe,i)...end; </syntaxhighlight> Wtedy ciało funkcji tej, czyli jego definicja w środku, jest: <syntaxhighlight lang="lua"> -- Jest liczony numer parametru nazwy przestrzeni nazw, domyslnie chodzi tu o numer bazowy parametrów przestrzennych; local numer_jednostki=i or frame.args["numer jednostki"]; local liczba_numer_jednostki=((numer_jednostki)and(tonumber(numer_jednostki))or 0); local pudelko_pomocne_modul=require("Module:Pudełko/Pomocne"); -- Liczy nazwę przestrzeni nazw przedmiotową na podstawie podanych parametrów; return pudelko_pomocne_modul.Nazwa_przestrzeni_nazw(frame,1, czy_uwzglednic_alternatywna_nazwe,liczba_numer_jednostki); </syntaxhighlight> Parametry funkcji: * {{Code|frame}} - tablica ramki tablicy transportu, * {{Code|czy_uwzglednic_alternatywna_nazwe}} - czy ma uwzględniać nazwę przestrzeni nazw domyślną szablonu, dostępne wartości: {{Code|false}}, w której nazwa domyślna nie jest uwzględniana wtedy, oraz {{Code|nil}} i {{Code|true}}, które oznaczają to samo, w tym jeżeli ona jest uwzględniana, wtedy jest brany parametr pierwszy dziecka, który musi istnieć przy takiej wartości tego parametru, tzn. {{Code|{{m|Pudełko|Nazwa przedmiotowej przestrzeni nazw|Dyskusja szablonu}}}} - ta nazwa domyślna zostanie zamieniona na przedmiotową, a jak ona by była przedmiotowa, to żadnej zamiany, by nie było, a jeśli nazwa uzyskana z nazwy przestrzeni nazw z parametrów przestrzennych jest w takim przypadku błędna, to w takim razie brany jest ten parametr, a jeżeli ta nazwa domyślna jest błędna, czyli {{Code|{{m|Pudełko|Nazwa przedmiotowej przestrzeni nazw|Moja przestrzeń}}}}, wtedy funkcja zwraca stan błędu {{Code|(błąd)}}. * {{Code|i}} - numer zmiennej nazwy przestrzeni nazw. Funkcja wykorzystuje {{Code|{{sr|#p.Nazwa_przestrzeni_nazw(frame,...)|p=Pudełko/Pomocne}}}} do wyznaczania ogólnego nazwy przestrzeni nazw dla pozycji bazowej i numerkowej, tzn. dla pozycji: jeden, dwa, trzy,..., itd, i ich ogólnej. Parametr ramki tablicy transportu rodzica szablonu: * {{Code|nazwa przestrzeni nazw}}, {{Code|nazwa przestrzeni nazw 1}}, {{Code|nazwa przestrzeni nazw 2}}, {{Code|nazwa przestrzeni nazw 3}},..., {{Code|nazwa przestrzeni nazw i}} - nazwy przestrzeni nazw dla pozycji bazowej oraz zwykłej i ogólnej numerkowej, * {{Code|typ jednostki}}, {{Code|typ jednostki 1}}, {{Code|typ jednostki 2}}, {{Code|typ jednostki 3}},..., {{Code|typ jednostki i}} - typy jednostek, którym odpowiadają pewne przestrzenie przedmiotowe, dla pozycji bazowej, numerkowej i ogólnej. Parametry ramki tablicy transportu dziecka: * Parametry dziecka są takie same jak rodzica dla funkcji pudełkowej plus tu wymienione, * {{Code|numer jednostki}} - jak parametr {{Code|i}} nie został ustawiony, to wtedy liczy się ta zmienna. Przykłady: <syntaxhighlight lang="mediawiki"> {{Nazwa szablonu|nazwa przestrzeni nazw=Dyskusja Wikibooks|nazwa przestrzeni nazw 2=Dyskusja szablonu|nazwa przestrzeni nazw i=Dyskusja modułu}} </syntaxhighlight> W dziecku powiedzmy jest wywołanie, i szukamy nazwy przestrzeni nazw o numerze dwa, która nie została podana, ale istnieje za to jej wersji ogólna {{Code|nazwa przestrzeni nazw i}} i domyślna {{Code|nazwa przestrzeni nazw}}: <syntaxhighlight lang="mediawiki"> {{#invoke:Pudełko|Nazwa przedmiotowej przestrzeni nazw|numer jednostki=1}} </syntaxhighlight> Na podstawie powyższego przykładu otrzymamy wynik o schemacie, nie wyniku, bo tam nie ma zmiennej {{Code|nazwa przestrzeni nazw 1}}, ale jest {{Code|nazwa przestrzeni nazw i}}: <syntaxhighlight lang="mediawiki"> <!-- Ale nie "nazwa przestrzeni nazw", bo jej nie ma, ale za to istnieje "nazwa przestrzeni nazw i"; --> <!-- nazwa przestrzeni nazw 2=nazwa przestrzeni nazw i=Dyskusja modułu; --> <!-- Czyli wynik: --> Moduł <!-- Widzimy, że wygenerowała się nazwa przestrzeni nazw, którą jest przestrzeń przedmiotowa programowa przestrzeni dyskusji "Dyskusja modułu", którą również jest "Szablon" jego przestrzeni dyskusji "Dyskusja szablonu", a dla ich przestrzeni przedmiotowej, zamiast dyskusji, to samo przekształca się na to samo; --> </syntaxhighlight> Nie jest brana w tym powyższym przykładzie zmienna {{Code|nazwa przestrzeni nazw}}, bo jej nie ma, ale za to jest {{Code|nazwa przestrzeni nazw i}}, bo ona występuje jako parametr domyślny ogólny dla parametrów numerkowych. Przykłady w wikikodzie: * {{Code|{{m|Pudełko|Nazwa przedmiotowej przestrzeni nazw|numer jednostki{{=}}2}}}} → {{Tt|{{#invoke:Pudełko|Nazwa przedmiotowej przestrzeni nazw|numer jednostki=2}}}} * {{Code|{{m|Pudełko|Nazwa przedmiotowej przestrzeni nazw|Dyskusja szablonu|nazwa przestrzeni nazw i{{=}}Moja przestrzeń|numer jednostki{{=}}2}}}} → {{Tt|{{#invoke:Pudełko|Nazwa przedmiotowej przestrzeni nazw|Dyskusja szablonu|nazwa przestrzeni nazw i=Moja przestrzeń|numer jednostki=2}}}} * {{Code|{{m|Pudełko|Nazwa przedmiotowej przestrzeni nazw|nazwa przestrzeni nazw 2{{=}}Dyskusja szablonu|numer jednostki{{=}}2}}}} → {{Tt|{{#invoke:Pudełko|Nazwa przedmiotowej przestrzeni nazw|nazwa przestrzeni nazw 2=Dyskusja szablonu|numer jednostki=2}}}} * {{Code|{{m|Pudełko|Nazwa przedmiotowej przestrzeni nazw|nazwa przestrzeni nazw 2{{=}}Dyskusja szablonu|numer jednostki{{=}}2}}}} → {{Tt|{{#invoke:Pudełko|Nazwa przedmiotowej przestrzeni nazw|nazwa przestrzeni nazw i=Dyskusja szablonu|numer jednostki=2}}}} * {{Code|{{m|Pudełko|Nazwa przedmiotowej przestrzeni nazw|nazwa przestrzeni nazw{{=}}Dyskusja szablonu|numer jednostki{{=}}2}}}} → {{Tt|{{#invoke:Pudełko|Nazwa przedmiotowej przestrzeni nazw|nazwa przestrzeni nazw=Dyskusja szablonu|numer jednostki=2}}}} Powyżej dla przykładu podano parametry nie w rodzicu w szablonie, tylko w dziecku, jeśli chodzi o parametry nazw przestrzeni nazw, ale ich się za to nie powinno podawać w tych ramach, tylko w szablonach, w których wywoływane są te ramki pudełek {{Code|{{m|Pudełko}}}}, ale tak tutaj tak zrobiono by było najłatwiej sprawdzić działanie tego typu funkcji. Analogicznie możemy podawać parametry typu jednostki, np.: wywołaniu modułowym {{Code|{{m|Pudełko|Nazwa przedmiotowej przestrzeni nazw|typ jednostki 2{{=}}strona szablonu|numer jednostki{{=}}2}}}}, ale o tym więcej w rozdziałach {{Code|{{sr|#p["Przedmiotowy typ jednostki"](frame,i)|p=Pudełko}}}} w „{{sr|#Funkcje typu jednostki|p=Pudełko}}”, one definiują dane przestrzenie przedmiotowe, ale wtedy ta sama nazwa przestrzeni nazw reprezentowana przez typ jednostki jest zamieniony na nazwę przestrzeni przedmiotową, lepiej jest tutaj używać parametrów przestrzennych nazw niż typu jednostki. Typ jednostki nie ma takiej samej wartości dla przestrzeni przedmiotowej, co dyskusji. Tutaj parametr dyskusji typu jednostki bazowy i numerkowy ogólny, czy szczegółowy, nie gra roli, bo nawet, gdy wygenerujemy nazwę przestrzeni dyskusji za pomoca tego parametru, to i tak otrzymamy na samym końcu jego nazwę przedmiotową. Również parametry typu jednostki nie powinno się podawać w dziecku w ramce, tylko w rodzicu w szablonie jako parametry, w którym ta ramka jest wywoływana, ale tutaj podano jedynie dla przykładu, jak najłatwiej sprawdzić działanie tych parametrów tej funkcji. Najpierw w funkcji nagłówku brane są parametry nazw przestrzeni nazw, a jeżeli ich nie ma, to parametry typu jednostki, a jeżeli nie ma, to generowane są nazwy na podstawie aktualnego modułu. === {{Code|p["Nazwa przestrzeni nazw dyskusji"](frame,...)}} === Funkcja pisze nazwę przestrzeni nazw dyskusji jakikolwiek nazwy przestrzeni nazw (tzn. nazwę przedmiotową nazwy przestrzenie nazw, czyli nie dyskusji, zamieniana jest na dyskusji, czyli identyfikator przestrzeni się zmienia jeden wyżej, a dyskusji, nie przedmiotową, przekształca się na tą samą), według podanej w zmiennej {{Code|nazwa przestrzeni nazw}} dla pozycja bazowej w podanych parametrach szablonu rodzicu ramki dziecka, lub dla innej pozycji należy parametr podawać w formie {{Code|nazwa przestrzeni nazw 1}}, {{Code|nazwa przestrzeni nazw 2}}, {{Code|nazwa przestrzeni nazw 3}},..., lub te parametry można podać w postaci ogólnej {{Code|nazwa przestrzeni nazw i}}. Parametry podaje się w parametrach rodzica wywołania tej funkcji {{Code|{{m|Pudełko|Nazwa przestrzeni nazw dyskusji}}}} (ale ich nie trzeba podawać w dziecku, ale można) i w parametrach dziecka, jeśli chodzi o zmienną {{Code|numer jednostki}}, czyli np.: {{Code|{{m|Pudełko|Nazwa przestrzeni nazw dyskusji|numer jednostki{{=}}<jakaś liczba całkowita dodatnia>}}}}. Te parametry przestrzenne zamiast w rodzicu w szablonie można podać w ramce dziecka, wtedy parametry dziecka mają pierwszeństwo. Parametry przestrzenne mogą mogą być podane w postaci przestrzeni przedmiotowej lub dyskusji, ale ta funkcja zawsze ją zamienia na dyskusji. Przestrzeń nazw z parametrów nazw przestrzennych może odpowiadać wartości przestrzeni głównej, to wtedy odpowiednia przestrzeń nazw z parametru nazwy jednostki się nie liczy w tej funkcji, aby się liczyła należy użyć funkcji {{Code|{{sr|#p["Nazwa przestrzeni nazw dyskusji 2"](frame,...)|p=Pudełko}}}}. Definicja skrótowa funkcji: <syntaxhighlight lang="lua"> p["Nazwa przestrzeni nazw dyskusji"]=function(frame,czy_uwzglednic_alternatywna_nazwe,i)...end; </syntaxhighlight> Wtedy ciało funkcji tej, czyli jego definicja w środku, jest: <syntaxhighlight lang="lua"> -- Jest liczony numer parametru nazwy przestrzeni nazw, domyslnie chodzi tu o numer bazowy parametrów przestrzennych; local numer_jednostki=i or frame.args["numer jednostki"]; local liczba_numer_jednostki=((numer_jednostki)and(tonumber(numer_jednostki))or 0); local pudelko_pomocne_modul=require("Module:Pudełko/Pomocne"); -- Liczy nazwę przestrzeni nazw dyskusji na podstawie podanych parametrów; return pudelko_pomocne_modul.Nazwa_przestrzeni_nazw(frame,2, czy_uwzglednic_alternatywna_nazwe,liczba_numer_jednostki); </syntaxhighlight> Parametry funkcji: * {{Code|frame}} - tablica ramki tablicy transportu, * {{Code|czy_uwzglednic_alternatywna_nazwe}} - czy ma uwzględniać nazwę przestrzeni nazw domyślną szablonu, dostępne wartości: {{Code|false}}, w której nazwa domyślna nie jest uwzględniana wtedy, oraz {{Code|nil}} i {{Code|true}}, które oznaczają to samo, w tym jeżeli ona jest uwzględniana, wtedy jest brany parametr pierwszy dziecka, który musi istnieć przy takiej wartości tego parametru, tzn. {{Code|{{m|Pudełko|Nazwa przestrzeni nazw dyskusji|Szablon}}}} - ta nazwa domyślna zostanie przekształcona na dyskusji, a jeżeli ona by była dyskusji, to nie byłoby żadnego przekształcenia, a jeśli nazwa uzyskana nazwy przestrzeni nazw z parametrów przestrzennych jest w takim przypadku błędna, to w takim razie brany jest ten parametr, a jeżeli nazwa domyślna jest błędna, czyli {{Code|{{m|Pudełko|Nazwa przestrzeni nazw dyskusji|Moja przestrzeń}}}}, wtedy funkcja zwraca stan błędu {{Code|(błąd)}}. * {{Code|i}} - numer zmiennej nazwy przestrzeni nazw. Funkcja wykorzystuje {{Code|{{sr|#p.Nazwa_przestrzeni_nazw(frame,...)|p=Pudełko/Pomocne}}}} do wyznaczania ogólnego nazwy przestrzeni nazw dla pozycji bazowej i numerkowej, tzn. dla pozycji: jeden, dwa, trzy,..., itd, i ich ogólnej. Parametr ramki tablicy transportu rodzica szablonu: * {{Code|nazwa przestrzeni nazw}}, {{Code|nazwa przestrzeni nazw 1}}, {{Code|nazwa przestrzeni nazw 2}}, {{Code|nazwa przestrzeni nazw 3}},..., {{Code|nazwa przestrzeni nazw i}} - nazwy przestrzeni nazw dla pozycji bazowej oraz zwykłej i ogólnej numerkowej, * {{Code|typ jednostki}}, {{Code|typ jednostki 1}}, {{Code|typ jednostki 2}}, {{Code|typ jednostki 3}},..., {{Code|typ jednostki i}} - typy jednostek, którym odpowiadają pewne przestrzenie przedmiotowe, dla pozycji bazowej, numerkowej i ogólnej. Parametry ramki tablicy transportu dziecka: * Parametry dziecka są takie same jak rodzica dla funkcji pudełkowej plus tu wymienione, * {{Code|numer jednostki}} - jak parametr {{Code|i}} nie został ustawiony, to wtedy liczy się ta zmienna. Przykłady: <syntaxhighlight lang="mediawiki"> {{Nazwa szablonu|nazwa przestrzeni nazw=Wikibooks|nazwa przestrzeni nazw 2=Szablon|nazwa przestrzeni nazw i=Moduł}} </syntaxhighlight> W dziecku powiedzmy jest wywołanie, i szukamy nazwy przestrzeni nazw o numerze dwa, która nie została podana, ale istnieje za to jej wersji ogólna {{Code|nazwa przestrzeni nazw i}} i domyślna {{Code|nazwa przestrzeni nazw}}: <syntaxhighlight lang="mediawiki"> {{#invoke:Pudełko|Nazwa przestrzeni nazw dyskusji|numer jednostki=1}} </syntaxhighlight> Na podstawie powyższego przykładu otrzymamy wynik o schemacie, nie wyniku, bo tam nie ma zmiennej {{Code|nazwa przestrzeni nazw 1}}, ale jest {{Code|nazwa przestrzeni nazw i}}: <syntaxhighlight lang="mediawiki"> <!-- Ale nie "nazwa przestrzeni nazw", bo jej nie ma, ale za to istnieje "nazwa przestrzeni nazw i"; --> <!-- nazwa przestrzeni nazw 2=nazwa przestrzeni nazw i=Moduł; --> <!-- Czyli wynik: --> Dyskusja modułu <!-- Widzimy, że wygenerowała się nazwa przestrzeni nazw, którą jest przestrzeń dyskusji przestrzeni programowej przestrzeni przedmiotowej "Moduł", którą również jest "Szablon" jego przestrzeni dyskusji "Dyskusja szablonu", a dla ich przestrzeni przedmiotowej, zamiast dyskusji, to przekształca się na dyskusji jej odpowiadającą; --> </syntaxhighlight> Nie jest brana w tym powyższym przykładzie zmienna {{Code|nazwa przestrzeni nazw}}, bo jej nie ma, ale za to jest {{Code|nazwa przestrzeni nazw i}}, bo ona występuje jako parametr domyślny ogólny dla parametrów numerkowych. Przykłady w wikikodzie: * {{Code|{{m|Pudełko|Nazwa przestrzeni nazw dyskusji|numer jednostki{{=}}2}}}} → {{Tt|{{#invoke:Pudełko|Nazwa przestrzeni nazw dyskusji|numer jednostki=2}}}} * {{Code|{{m|Pudełko|Nazwa przestrzeni nazw dyskusji|Szablon|nazwa przestrzeni nazw i{{=}}Moja przestrzeń|numer jednostki{{=}}2}}}} → {{Tt|{{#invoke:Pudełko|Nazwa przestrzeni nazw dyskusji|Szablon|nazwa przestrzeni nazw i=Moja przestrzeń|numer jednostki=2}}}} * {{Code|{{m|Pudełko|Nazwa przestrzeni nazw dyskusji|nazwa przestrzeni nazw 2{{=}}Szablon|numer jednostki{{=}}2}}}} → {{Tt|{{#invoke:Pudełko|Nazwa przestrzeni nazw dyskusji|nazwa przestrzeni nazw 2=Szablon|numer jednostki=2}}}} * {{Code|{{m|Pudełko|Nazwa przestrzeni nazw dyskusji|nazwa przestrzeni nazw 2{{=}}Szablon|numer jednostki{{=}}2}}}} → {{Tt|{{#invoke:Pudełko|Nazwa przestrzeni nazw dyskusji|nazwa przestrzeni nazw i=Szablon|numer jednostki=2}}}} * {{Code|{{m|Pudełko|Nazwa przestrzeni nazw dyskusji|nazwa przestrzeni nazw{{=}}Szablon|numer jednostki{{=}}2}}}} → {{Tt|{{#invoke:Pudełko|Nazwa przestrzeni nazw dyskusji|nazwa przestrzeni nazw=Szablon|numer jednostki=2}}}} Powyżej dla przykładu podano parametry nie w rodzicu w szablonie, tylko w dziecku, jeśli chodzi o parametry nazw przestrzeni nazw, ale ich się za to nie powinno podawać w tych ramach, tylko w szablonach, w których wywoływane są te ramki pudełek {{Code|{{m|Pudełko}}}}, ale tak tutaj tak zrobiono by było najłatwiej sprawdzić działanie tego typu funkcji. Analogicznie możemy podawać parametry typu jednostki, np.: wywołaniu modułowym {{Code|{{m|Pudełko|Nazwa przestrzeni nazw dyskusji|typ jednostki 2{{=}}strona szablonu|numer jednostki{{=}}2}}}}, ale o tym więcej w rozdziałach {{Code|{{sr|#p["Dyskusyjny typ jednostki"](frame,i)|p=Pudełko}}}} w „{{sr|#Funkcje typu jednostki|p=Pudełko}}”, one definiują dane przestrzenie dyskusji, ale wtedy nazwa przestrzeni nazw reprezentowana przez {{Parametr|typ jednostki 2|strona szablonu}}, jest zamieniana na nazwę przestrzeni nazw dyskusji. Parametr dyskusji typu jednostki bazowy lub dla danego numerka ogólny, czy szczegółowy, nie gra roli. Typ jednostki nie ma takiej samej wartości dla przestrzeni przedmiotowej, co dyskusji. Również parametry typu jednostki nie powinno się podawać w dziecku w ramce, tylko w rodzicu w szablonie jako parametry, w którym ta ramka jest wywoływana, ale tutaj podano jedynie dla przykładu, jak najłatwiej sprawdzić działanie tych parametrów tej funkcji. Najpierw w funkcji nagłówku brane są parametry nazw przestrzeni nazw, a jeżeli ich nie ma, to parametry typu jednostki, a jeżeli nie ma, to generowane są nazwy na podstawie aktualnego modułu. == Funkcje nazw przestrzeni nazw drugiej wersji == === {{Code|p["Nazwa przestrzeni nazw 2"](frame,...)}} === Funkcja pisze nazwę przestrzeni nazw, niezależnie, czy to jest przedmiotowa, czy dyskusji, według, i nie zawsze tylko, podanej w zmiennej {{Code|nazwa przestrzeni nazw}} dla pozycja bazowej w podanych parametrach szablonu rodzicu ramki dziecka, lub dla innej pozycji należy parametr podawać w formie {{Code|nazwa przestrzeni nazw 1}}, {{Code|nazwa przestrzeni nazw 2}}, {{Code|nazwa przestrzeni nazw 3}},..., lub te parametry można podać w postaci ogólnej {{Code|nazwa przestrzeni nazw i}}. W tej funkcji trzeba też podawać parametry nazwy jednostek {{Code|nazwa jednostki}}, {{Code|nazwa jednostki 1}}, {{Code|nazwa jednostki 2}}, {{Code|nazwa jednostki 3}},... Parametry podaje się w parametrach rodzica wywołania tej funkcji {{Code|{{m|Pudełko|Nazwa przestrzeni nazw 2}}}} (ale ich nie trzeba podawać w dziecku, ale można) i w parametrach dziecka, jeśli chodzi o zmienną {{Code|numer jednostki}}, czyli np.: {{Code|{{m|Pudełko|Nazwa przestrzeni nazw 2|numer jednostki{{=}}<jakaś liczba całkowita dodatnia>}}}}. Te parametry przestrzenne zamiast w rodzicu w szablonie można podać w ramce dziecka, wtedy parametry dziecka mają pierwszeństwo. Przestrzeń nazw z parametrów nazw przestrzennych może odpowiadać wartości przestrzeni głównej, to wtedy odpowiednia przestrzeń nazw z parametru nazwy jednostki się liczy w tej funkcji, wtedy jest liczona nazwa przestrzeni nazw z tego parametru. Gdy parametry przestrzenne lub typ jednostki w drugim podejściu nie wskazują na przestrzeń główną, to wtedy działanie tej funkcji jest podobne do {{Code|{{sr|#p["Nazwa przestrzeni nazw"](frame,...)|p=Pudełko}}}}. Definicja skrótowa funkcji: <syntaxhighlight lang="lua"> p["Nazwa przestrzeni nazw 2"]=function(frame,czy_uwzglednic_alternatywna_nazwe,i)...end; </syntaxhighlight> Wtedy ciało funkcji tej, czyli jego definicja w środku, jest: <syntaxhighlight lang="lua"> local pudelko_pomocne_modul=require("Module:Pudełko/Pomocne"); -- Liczy nazwę przestrzeni nazw, jeżeli z parametrów przestrzennych przestrzeń wskazuje na główną, to wtedy jest liczona przestrzeń nazw z nazwy jednostki; return pudelko_pomocne_modul.Nazwa_przestrzeni_nazw_2(frame,czy_uwzglednic_alternatywna_nazwe,i) </syntaxhighlight> Parametry funkcji: * {{Code|frame}} - tablica ramki tablicy transportu, * {{Code|czy_uwzglednic_alternatywna_nazwe}} - czy ma uwzględniać nazwę przestrzeni nazw domyślną szablonu, dostępne wartości: {{Code|false}}, w której nazwa domyślna nie jest uwzględniana wtedy, oraz {{Code|nil}} i {{Code|true}}, które oznaczają to samo, w tym jeżeli ona jest uwzględniana, wtedy jest brany parametr pierwszy dziecka, który musi istnieć przy takiej wartości tego parametru, tzn. {{Code|{{m|Pudełko|Nazwa przestrzeni nazw 2|Szablon}}}}, a jeśli nazwa uzyskana nazwy przestrzeni nazw jest w takim przypadku błędna, to brany jest ten element, a jeżeli nazwa domyślna jest błędna, czyli {{Code|{{m|Pudełko|Nazwa przestrzeni nazw 2|Moja przestrzeń}}}}, wtedy funkcja zwraca stan błędu {{Code|(błąd)}}. * {{Code|i}} - numer zmiennej nazwy przestrzeni nazw. Funkcja wykorzystuje {{Code|{{sr|#p.Nazwa_przestrzeni_nazw_2(frame,...)|p=Pudełko/Pomocne}}}} do wyznaczania ogólnego nazwy przestrzeni nazw dla pozycji bazowej i numerkowej, tzn. dla pozycji: jeden, dwa, trzy,..., itd, i ich ogólnej. Parametr ramki tablicy transportu rodzica szablonu: * {{Code|nazwa przestrzeni nazw}}, {{Code|nazwa przestrzeni nazw 1}}, {{Code|nazwa przestrzeni nazw 2}}, {{Code|nazwa przestrzeni nazw 3}},..., {{Code|nazwa przestrzeni nazw i}} - nazwy przestrzeni nazw dla pozycji bazowej oraz zwykłej i ogólnej numerkowej, * {{Code|nazwa jednostki}}, {{Code|nazwa jednostki 1}}, {{Code|nazwa jednostki 2}}, {{Code|nazwa jednostki 3}},... - nazwy jednostek dla pozycji bazowej i numerkowej, * {{Code|typ jednostki}}, {{Code|typ jednostki 1}}, {{Code|typ jednostki 2}}, {{Code|typ jednostki 3}},..., {{Code|typ jednostki i}} - typy jednostek, którym odpowiadają pewne przestrzenie przedmiotowe, dla pozycji bazowej, numerkowej i ogólnej, ** {{Code|dyskusja typu jednostki}}, {{Code|dyskusja typu jednostki 1}}, {{Code|dyskusja typ jednostki 2}}, {{Code|dyskusja typ jednostki 3}},..., {{Code|dyskusja typ jednostki i}} - czy dany typ jednostki ma przedstawiać, jeśli niepusta, przestrzeń dyskusji dla pozycji bazowej, numerkowej i ogólnej. Parametry ramki tablicy transportu dziecka: * Parametry dziecka są takie same jak rodzica dla funkcji pudełkowej plus tu wymienione, * {{Code|numer jednostki}} - jak parametr {{Code|i}} nie został ustawiony, to wtedy liczy się ta zmienna. Przykłady: <syntaxhighlight lang="mediawiki"> {{Nazwa szablonu|nazwa przestrzeni nazw=Wikibooks|nazwa przestrzeni nazw 1=Szablon|nazwa przestrzeni nazw i=|nazwa jednostki 2=Wikibooks:Strona}} </syntaxhighlight> W dziecku powiedzmy jest wywołanie, i szukamy nazwy przestrzeni nazw o numerze dwa, która została podana, ale istnieje za to jej wersji ogólna {{Code|nazwa przestrzeni nazw i}} i domyślna {{Code|nazwa przestrzeni nazw}}, ale wtedy dla tego numerkowego liczy się to ogólne z {{Code| i}}, a ponieważ ta nazwa jest pusta, więc będziemy liczyli nazwę przestrzeni nazw z {{Code|nazwa jednostki 2}}: <syntaxhighlight lang="mediawiki"> {{#invoke:Pudełko|Nazwa przestrzeni nazw 2|numer jednostki=2}} </syntaxhighlight> Na podstawie powyższego przykładu otrzymamy wynik o schemacie, nie wyniku, bo tam nie ma zmiennej {{Code|nazwa przestrzeni nazw 1}}, ale jest {{Code|nazwa przestrzeni nazw i}}: <syntaxhighlight lang="mediawiki"> <!-- Ale nie "nazwa przestrzeni nazw 2", bo jej nie ma, ale za to istnieje "nazwa przestrzeni nazw i"; --> <!-- nazwa przestrzeni nazw 2=nazwa przestrzeni nazw i="", a nazwa jednostki 2="Wikibooks:Strona"; --> <!-- Czyli wynik: --> Wikibooks <!-- Widzimy, że wygenerowała się nazwa przestrzeni nazw, którą jest przestrzeń nieprogramowa, ale projektu, wychodząca z nazwy jednostek w tym przypadku z "nazwa jednostki 2"; --> </syntaxhighlight> Nie jest brana w tym powyższym przykładzie zmienna {{Code|nazwa przestrzeni nazw}}, bo jej nie ma, ale za to jest {{Code|nazwa przestrzeni nazw i}}, bo ona występuje jako parametr domyślny ogólny dla parametrów numerkowych. Tytaj jest używana jest zmienna {{Code|nazwa jednostki 2}} do wygenerowania ostatecznego wyniku, bo jak można zauważyć, parametry przestrzenne wskazują na przestrzeń główną, a nazwy jednostek już nie. Przykłady w wikikodzie: * {{Code|{{m|Pudełko|Nazwa przestrzeni nazw 2|numer jednostki{{=}}2}}}} → {{Tt|{{#invoke:Pudełko|Nazwa przestrzeni nazw 2|numer jednostki=2}}}} * {{Code|{{m|Pudełko|Nazwa przestrzeni nazw 2|Szablon|nazwa przestrzeni nazw i{{=}}Moja przestrzeń|numer jednostki{{=}}2}}}} → {{Tt|{{#invoke:Pudełko|Nazwa przestrzeni nazw 2|Szablon|nazwa przestrzeni nazw i=Moja przestrzeń|numer jednostki=2}}}} * {{Code|{{m|Pudełko|Nazwa przestrzeni nazw 2|nazwa przestrzeni nazw 2{{=}}|nazwa jednostki 2{{=}}Szablon:Strona|numer jednostki{{=}}2}}}} → {{Tt|{{#invoke:Pudełko|Nazwa przestrzeni nazw 2|nazwa przestrzeni nazw 2=|nazwa jednostki 2=Szablon:Strona|numer jednostki=2}}}} * {{Code|{{m|Pudełko|Nazwa przestrzeni nazw 2|nazwa przestrzeni nazw i{{=}}|nazwa jednostki 2{{=}}Szablon:Strona|numer jednostki{{=}}2}}}} → {{Tt|{{#invoke:Pudełko|Nazwa przestrzeni nazw 2|nazwa przestrzeni nazw i=|nazwa jednostki 2=Szablon:Strona|numer jednostki=2}}}} * {{Code|{{m|Pudełko|Nazwa przestrzeni nazw 2|Szablon|nazwa przestrzeni nazw{{=}}|nazwa jednostki 2{{=}}Wikibooks:Strona|numer jednostki{{=}}2}}}} → {{Tt|{{#invoke:Pudełko|Nazwa przestrzeni nazw 2|Szablon|nazwa przestrzeni nazw=|nazwa jednostki 2=Wikibooks:Strona|numer jednostki=2}}}} Powyżej dla przykładu podano parametry nie w rodzicu w szablonie, tylko w dziecku, jeśli chodzi o parametry nazw przestrzeni nazw i nazw jednostek, ale ich się za to nie powinno podawać w tych ramach, tylko w szablonach, w których wywoływane są te ramki pudełek {{Code|{{m|Pudełko}}}}, ale tak tutaj tak zrobiono by było najłatwiej sprawdzić działanie tego typu funkcji. Analogicznie możemy podawać parametry typu jednostki, np.: wywołaniu modułowym {{Code|{{m|Pudełko|Nazwa przestrzeni nazw 2|typ jednostki 2{{=}}Podręcznik|nazwa jednostki 2{{=}}Szablon:Strona|numer jednostki{{=}}2}}}} (ale wtedy jest brana przestrzeń nazw z nazwy jednostki), ale o tym więcej w rozdziałach {{Code|{{sr|#p["Typ jednostki 2"](frame,i)|p=Pudełko}}}} w „{{sr|#Funkcje typu jednostki|p=Pudełko}}”, one definiują dane przestrzenie przedmiotowe, czy dyskusji ale można lub nie użyć parametru dyskusji typu jednostki z wartością niepustą, wtedy wyświetli się nazwa przestrzeni nazw dyskusji. Jeżeli typ jednostki wskazuje na przestrzeń nazw główną, wtedy się liczą parametry nazw jednostek. Typ jednostki nie ma takiej samej wartości dla przestrzeni przedmiotowej, co dyskusji. Również parametry typu jednostki nie powinno się podawać w dziecku w ramce, tylko w rodzicu w szablonie jako parametry, w którym ta ramka jest wywoływana, ale tutaj podano jedynie dla przykładu, jak najłatwiej sprawdzić działanie tych parametrów tej funkcji. Najpierw w funkcji nagłówku brane są parametry nazw przestrzeni nazw, a jeżeli ich nie ma, to parametry typu jednostki, a jeżeli nie ma lub parametry przestrzenne wskazują na przestrzeń główną, i nie ma nazwy jednostki, to generowane są nazwy tej funkcji na podstawie aktualnej strony. === {{Code|p["Nazwa przedmiotowej przestrzeni nazw 2"](frame,...)}} === Funkcja pisze przedmiotową nazwę przestrzeni nazw jakikolwiek nazwy przestrzeni nazw (tzn. nazwę przedmiotową nazwy przestrzenie nazw, czyli nie dyskusji, zamieniana jest na nią samą, czyli identyfikator przestrzeni się nie zmienia, a dyskusji, nie przedmiotową, przekształca się na przedmiotową jej odpowiadającą, czyli w tym przypadku identyfikator przestrzeni zmniejsza się o numer mniej), według, i nie zawsze tylko, podanej w zmiennej {{Code|nazwa przestrzeni nazw}} dla pozycja bazowej w podanych parametrach szablonu rodzicu ramki dziecka, lub dla innej pozycji należy parametr podawać w formie {{Code|nazwa przestrzeni nazw 1}}, {{Code|nazwa przestrzeni nazw 2}}, {{Code|nazwa przestrzeni nazw 3}},..., lub te parametry można podać w postaci ogólnej {{Code|nazwa przestrzeni nazw i}}. W tej funkcji trzeba też podawać parametry nazwy jednostek {{Code|nazwa jednostki}}, {{Code|nazwa jednostki 1}}, {{Code|nazwa jednostki 2}}, {{Code|nazwa jednostki 3}},... Parametry podaje się w parametrach rodzica wywołania tej funkcji {{Code|{{m|Pudełko|Nazwa przedmiotowej przestrzeni nazw 2}}}} (ale ich nie trzeba podawać w dziecku, ale można) i w parametrach dziecka, jeśli chodzi o zmienną {{Code|numer jednostki}}, czyli np.: {{Code|{{m|Pudełko|Nazwa przedmiotowej przestrzeni nazw 2|numer jednostki{{=}}<jakaś liczba całkowita dodatnia>}}}}. Te parametry przestrzenne zamiast w rodzicu w szablonie można podać w ramce dziecka, wtedy parametry dziecka mają pierwszeństwo. Przestrzeń nazw z parametrów nazw przestrzennych po przekształceniu na przedmiotową może odpowiadać wartości przestrzeni głównej, to wtedy odpowiednia przestrzeń nazw z parametru nazwy jednostki się liczy w tej funkcji, wtedy jest liczona nazwa przestrzeni nazw z tego parametru. Gdy parametry przestrzenne lub typ jednostki w drugim podejściu nie wskazują na przestrzeń główną, to wtedy działanie tej funkcji jest podobne do {{Code|{{sr|#p["Nazwa przedmiotowej przestrzeni nazw"](frame,...)|p=Pudełko}}}}. Definicja skrótowa funkcji: <syntaxhighlight lang="lua"> p["Nazwa przedmiotowej przestrzeni nazw 2"]=function(frame,czy_uwzglednic_alternatywna_nazwe,i)...end; </syntaxhighlight> Wtedy ciało funkcji tej, czyli jego definicja w środku, jest: <syntaxhighlight lang="lua"> local pudelko_pomocne_modul=require("Module:Pudełko/Pomocne"); return pudelko_pomocne_modul.Nazwa_przestrzeni_nazw_przedmiotowa_dyskusji_2(frame,czy_uwzglednic_alternatywna_nazwe,i,"przedmiotowa"); </syntaxhighlight> Parametry funkcji: * {{Code|frame}} - tablica ramki tablicy transportu, * {{Code|czy_uwzglednic_alternatywna_nazwe}} - czy ma uwzględniać nazwę przestrzeni nazw domyślną szablonu, dostępne wartości: {{Code|false}}, w której nazwa domyślna nie jest uwzględniana wtedy, oraz {{Code|nil}} i {{Code|true}}, które oznaczają to samo, w tym jeżeli ona jest uwzględniana, wtedy jest brany parametr pierwszy dziecka, który musi istnieć przy takiej wartości tego parametru, tzn. {{Code|{{m|Pudełko|Nazwa przedmiotowej przestrzeni nazw 2|Szablon}}}}, nazwa domyślna zostanie zamieniona na przedmiotową, a jeżeli jest już taka, to żadnej zamiany nie ma, a jeśli nazwa uzyskana nazwy przestrzeni nazw jest w takim przypadku błędna, to brany jest ten element, a jeżeli nazwa domyślna jest błędna, czyli {{Code|{{m|Pudełko|Nazwa przedmiotowej przestrzeni nazw 2|Moja przestrzeń}}}}, wtedy funkcja zwraca stan błędu {{Code|(błąd)}}. * {{Code|i}} - numer zmiennej nazwy przestrzeni nazw. Funkcja wykorzystuje {{Code|{{sr|#p.Nazwa_przestrzeni_nazw_przedmiotowa_dyskusji_2(frame,...)|p=Pudełko/Pomocne}}}} do wyznaczania ogólnego nazwy przestrzeni nazw dla pozycji bazowej i numerkowej, tzn. dla pozycji: jeden, dwa, trzy,..., itd, i ich ogólnej. Parametr ramki tablicy transportu rodzica szablonu: * {{Code|nazwa przestrzeni nazw}}, {{Code|nazwa przestrzeni nazw 1}}, {{Code|nazwa przestrzeni nazw 2}}, {{Code|nazwa przestrzeni nazw 3}},..., {{Code|nazwa przestrzeni nazw i}} - nazwy przestrzeni nazw dla pozycji bazowej oraz zwykłej i ogólnej numerkowej, * {{Code|nazwa jednostki}}, {{Code|nazwa jednostki 1}}, {{Code|nazwa jednostki 2}}, {{Code|nazwa jednostki 3}},... - nazwy jednostek dla pozycji bazowej i numerkowej, * {{Code|typ jednostki}}, {{Code|typ jednostki 1}}, {{Code|typ jednostki 2}}, {{Code|typ jednostki 3}},..., {{Code|typ jednostki i}} - typy jednostek, którym odpowiadają pewne przestrzenie przedmiotowe, dla pozycji bazowej, numerkowej i ogólnej. Parametry ramki tablicy transportu dziecka: * Parametry dziecka są takie same jak rodzica dla funkcji pudełkowej plus tu wymienione, * {{Code|numer jednostki}} - jak parametr {{Code|i}} nie został ustawiony, to wtedy liczy się ta zmienna. Przykłady: <syntaxhighlight lang="mediawiki"> {{Nazwa szablonu|nazwa przestrzeni nazw=Wikibooks|nazwa przestrzeni nazw 1=Szablon|nazwa przestrzeni nazw i=|nazwa jednostki 2=Dyskusja Wikibooks:Strona}} </syntaxhighlight> W dziecku powiedzmy jest wywołanie, i szukamy nazwy przestrzeni nazw o numerze dwa, która została podana, ale istnieje za to jej wersji ogólna {{Code|nazwa przestrzeni nazw i}} i domyślna {{Code|nazwa przestrzeni nazw}}, ale wtedy dla tego numerkowego liczy się to ogólne z {{Code| i}}, a ponieważ ta nazwa jest pusta, więc będziemy liczyli nazwę przestrzeni nazw z {{Code|nazwa jednostki 2}}: <syntaxhighlight lang="mediawiki"> {{#invoke:Pudełko|Nazwa przedmiotowej przestrzeni nazw 2|numer jednostki=2}} </syntaxhighlight> Na podstawie powyższego przykładu otrzymamy wynik o schemacie, nie wyniku, bo tam nie ma zmiennej {{Code|nazwa przestrzeni nazw 1}}, ale jest {{Code|nazwa przestrzeni nazw i}}: <syntaxhighlight lang="mediawiki"> <!-- Ale nie "nazwa przestrzeni nazw 2", bo jej nie ma, ale za to istnieje "nazwa przestrzeni nazw i"; --> <!-- nazwa przestrzeni nazw 2=nazwa przestrzeni nazw i="", a nazwa jednostki 2="Dyskusja Wikibooks:Strona"; --> <!-- Czyli wynik: --> Wikibooks <!-- Widzimy, że wygenerowała się nazwa przestrzeni nazw, którą jest przestrzeń nieprogramowa, ale projektu, wychodząca z nazwy jednostek w tym przypadku z "nazwa jednostki 2"; --> </syntaxhighlight> Nie jest brana w tym powyższym przykładzie zmienna {{Code|nazwa przestrzeni nazw}}, bo jej nie ma, ale za to jest {{Code|nazwa przestrzeni nazw i}}, bo ona występuje jako parametr domyślny ogólny dla parametrów numerkowych. Tytaj jest używana jest zmienna {{Code|nazwa jednostki 2}} do wygenerowania ostatecznego wyniku, bo jak można zauważyć, parametry przestrzenne wskazują na przestrzeń główną, a nazwy jednostek już nie. Przykłady w wikikodzie: * {{Code|{{m|Pudełko|Nazwa przedmiotowej przestrzeni nazw 2|numer jednostki{{=}}2}}}} → {{Tt|{{#invoke:Pudełko|Nazwa przedmiotowej przestrzeni nazw 2|numer jednostki=2}}}} * {{Code|{{m|Pudełko|Nazwa przedmiotowej przestrzeni nazw 2|Dyskusja szablonu|nazwa przestrzeni nazw i{{=}}Moja przestrzeń|numer jednostki{{=}}2}}}} → {{Tt|{{#invoke:Pudełko|Nazwa przedmiotowej przestrzeni nazw 2|Dyskusja szablonu|nazwa przestrzeni nazw i=Moja przestrzeń|numer jednostki=2}}}} * {{Code|{{m|Pudełko|Nazwa przedmiotowej przestrzeni nazw 2|nazwa przestrzeni nazw 2{{=}}Dyskusja|nazwa jednostki 2{{=}}Dyskusja szablonu:Strona|numer jednostki{{=}}2}}}} → {{Tt|{{#invoke:Pudełko|Nazwa przedmiotowej przestrzeni nazw 2|nazwa przestrzeni nazw 2=Dyskusja|nazwa jednostki 2=Dyskusja szablonu:Strona|numer jednostki=2}}}} * {{Code|{{m|Pudełko|Nazwa przedmiotowej przestrzeni nazw 2|nazwa przestrzeni nazw i{{=}}Dyskusja|nazwa jednostki 2{{=}}Dyskusja szablonu:Strona|numer jednostki{{=}}2}}}} → {{Tt|{{#invoke:Pudełko|Nazwa przedmiotowej przestrzeni nazw 2|nazwa przestrzeni nazw i=Dyskusja|nazwa jednostki 2=Dyskusja szablonu:Strona|numer jednostki=2}}}} * {{Code|{{m|Pudełko|Nazwa przedmiotowej przestrzeni nazw 2|Dyskusja szablonu|nazwa przestrzeni nazw{{=}}Dyskusja|nazwa jednostki 2{{=}}Wikibooks:Strona|numer jednostki{{=}}2}}}} → {{Tt|{{#invoke:Pudełko|Nazwa przedmiotowej przestrzeni nazw 2|Dyskusja szablonu|nazwa przestrzeni nazw=Dyskusja|nazwa jednostki 2=Dyskusja Wikibooks:Strona|numer jednostki=2}}}} Powyżej dla przykładu podano parametry nie w rodzicu w szablonie, tylko w dziecku, jeśli chodzi o parametry nazw przestrzeni nazw i nazw jednostek, ale ich się za to nie powinno podawać w tych ramach, tylko w szablonach, w których wywoływane są te ramki pudełek {{Code|{{m|Pudełko}}}}, ale tak tutaj tak zrobiono by było najłatwiej sprawdzić działanie tego typu funkcji. Analogicznie możemy podawać parametry typu jednostki, np.: wywołaniu modułowym {{Code|{{m|Pudełko|Nazwa przedmiotowej przestrzeni nazw 2|typ jednostki 2{{=}}Podręcznik|nazwa jednostki 2{{=}}Dyskusja szablonu:Strona|numer jednostki{{=}}2}}}} (ale wtedy jest brana przestrzeń nazw z nazwy jednostki), ale o tym więcej w rozdziałach {{Code|{{sr|#p["Przedmiotowy typ jednostki 2"](frame,i)|p=Pudełko}}}} w „{{sr|#Funkcje typu jednostki|p=Pudełko}}”, one definiują dane przestrzenie przedmiotowe, ale można użyć parametru dyskusji typu jednostki z wartością niepustą, pustą, czy nawet jej nie podamy, wtedy wyświetli się nazwa przestrzeni nazw przedmiotowej. Jeżeli typ jednostki wskazuje na przestrzeń nazw główną, wtedy się liczą parametry nazw jednostek. Typ jednostki nie ma takiej samej wartości dla przestrzeni przedmiotowej, co dyskusji. Również parametry typu jednostki nie powinno się podawać w dziecku w ramce, tylko w rodzicu w szablonie jako parametry, w którym ta ramka jest wywoływana, ale tutaj podano jedynie dla przykładu, jak najłatwiej sprawdzić działanie tych parametrów tej funkcji. Najpierw w funkcji nagłówku brane są parametry nazw przestrzeni nazw, a jeżeli ich nie ma, to parametry typu jednostki, a jeżeli nie ma lub parametry przestrzenne wskazują na przestrzeń główną, i nie ma nazwy jednostki, to generowane są nazwy tej funkcji na podstawie aktualnej strony. === {{Code|p["Nazwa przestrzeni nazw dyskusji 2"](frame,...)}} === Funkcja pisze nazwę przestrzeni nazw dyskusji jakikolwiek nazwy przestrzeni nazw (tzn. nazwę dyskusji nazwy przestrzenie nazw, czyli nie przedmiotowej, zamieniana jest na nią samą, czyli identyfikator przestrzeni się nie zmienia, a przedmiotową, nie dyskusji, przekształca się na dyskusji jej odpowiadającą, czyli w tym przypadku identyfikator przestrzeni zwiększa się o numer więcej), według, i nie zawsze tylko, podanej w zmiennej {{Code|nazwa przestrzeni nazw}} dla pozycja bazowej w podanych parametrach szablonu rodzicu ramki dziecka, lub dla innej pozycji należy parametr podawać w formie {{Code|nazwa przestrzeni nazw 1}}, {{Code|nazwa przestrzeni nazw 2}}, {{Code|nazwa przestrzeni nazw 3}},..., lub te parametry można podać w postaci ogólnej {{Code|nazwa przestrzeni nazw i}}. W tej funkcji trzeba też podawać parametry nazwy jednostek {{Code|nazwa jednostki}}, {{Code|nazwa jednostki 1}}, {{Code|nazwa jednostki 2}}, {{Code|nazwa jednostki 3}},... Parametry podaje się w parametrach rodzica wywołania tej funkcji {{Code|{{m|Pudełko|Nazwa przestrzeni nazw dyskusji 2}}}} (ale ich nie trzeba podawać w dziecku, ale można) i w parametrach dziecka, jeśli chodzi o zmienną {{Code|numer jednostki}}, czyli np.: {{Code|{{m|Pudełko|Nazwa przestrzeni nazw dyskusji 2|numer jednostki{{=}}<jakaś liczba całkowita dodatnia>}}}}. Te parametry przestrzenne zamiast w rodzicu w szablonie można podać w ramce dziecka, wtedy parametry dziecka mają pierwszeństwo. Przestrzeń nazw z parametrów nazw przestrzennych po przekształceniu może odpowiadać wartości przestrzeni głównej, to wtedy odpowiednia przestrzeń nazw z parametru nazwy jednostki się liczy w tej funkcji, wtedy jest liczona nazwa przestrzeni nazw dyskusji z tego parametru. Gdy parametry przestrzenne lub typ jednostki w drugim podejściu nie wskazują na przestrzeń główną, to wtedy działanie tej funkcji jest podobne do {{Code|{{sr|#p["Nazwa dyskusji przestrzeni nazw"](frame,...)|p=Pudełko}}}}. Definicja skrótowa funkcji: <syntaxhighlight lang="lua"> p["Nazwa przestrzeni nazw dyskusji 2"]=function(frame,czy_uwzglednic_alternatywna_nazwe,i)...end; </syntaxhighlight> Wtedy ciało funkcji tej, czyli jego definicja w środku, jest: <syntaxhighlight lang="lua"> local pudelko_pomocne_modul=require("Module:Pudełko/Pomocne"); return pudelko_pomocne_modul.Nazwa_przestrzeni_nazw_przedmiotowa_dyskusji_2(frame,czy_uwzglednic_alternatywna_nazwe,i,"dyskusja"); </syntaxhighlight> Parametry funkcji: * {{Code|frame}} - tablica ramki tablicy transportu, * {{Code|czy_uwzglednic_alternatywna_nazwe}} - czy ma uwzględniać nazwę przestrzeni nazw domyślną szablonu, dostępne wartości: {{Code|false}}, w której nazwa domyślna nie jest uwzględniana wtedy, oraz {{Code|nil}} i {{Code|true}}, które oznaczają to samo, w tym jeżeli ona jest uwzględniana, wtedy jest brany parametr pierwszy dziecka, który musi istnieć przy takiej wartości tego parametru, tzn. {{Code|{{m|Pudełko|Nazwa przestrzeni nazw dyskusji 2|Szablon}}}}, nazwa domyślna zostanie zamieniona na dyskusji, a jeżeli jest już taka, to nie ma takiej zamiany, a jeśli nazwa uzyskana nazwy przestrzeni nazw jest w takim przypadku błędna, to brany jest ten element, a jeżeli nazwa domyślna jest błędna, czyli {{Code|{{m|Pudełko|Nazwa przestrzeni nazw dyskusji 2|Moja przestrzeń}}}}, wtedy funkcja zwraca stan błędu {{Code|(błąd)}}. * {{Code|i}} - numer zmiennej nazwy przestrzeni nazw. Funkcja wykorzystuje {{Code|{{sr|#p.Nazwa_przestrzeni_nazw_przedmiotowa_dyskusji_2(frame,...)|p=Pudełko/Pomocne}}}} do wyznaczania ogólnego nazwy przestrzeni nazw dla pozycji bazowej i numerkowej, tzn. dla pozycji: jeden, dwa, trzy,..., itd, i ich ogólnej. Parametr ramki tablicy transportu rodzica szablonu: * {{Code|nazwa przestrzeni nazw}}, {{Code|nazwa przestrzeni nazw 1}}, {{Code|nazwa przestrzeni nazw 2}}, {{Code|nazwa przestrzeni nazw 3}},..., {{Code|nazwa przestrzeni nazw i}} - nazwy przestrzeni nazw dla pozycji bazowej oraz zwykłej i ogólnej numerkowej, * {{Code|nazwa jednostki}}, {{Code|nazwa jednostki 1}}, {{Code|nazwa jednostki 2}}, {{Code|nazwa jednostki 3}},... - nazwy jednostek dla pozycji bazowej i numerkowej, * {{Code|typ jednostki}}, {{Code|typ jednostki 1}}, {{Code|typ jednostki 2}}, {{Code|typ jednostki 3}},..., {{Code|typ jednostki i}} - typy jednostek, którym odpowiadają pewne przestrzenie przedmiotowe, dla pozycji bazowej, numerkowej i ogólnej. Parametry ramki tablicy transportu dziecka: * Parametry dziecka są takie same jak rodzica dla funkcji pudełkowej plus tu wymienione, * {{Code|numer jednostki}} - jak parametr {{Code|i}} nie został ustawiony, to wtedy liczy się ta zmienna. Przykłady: <syntaxhighlight lang="mediawiki"> {{Nazwa szablonu|nazwa przestrzeni nazw=Wikibooks|nazwa przestrzeni nazw 1=Szablon|nazwa przestrzeni nazw i=|nazwa jednostki 2=Wikibooks:Strona}} </syntaxhighlight> W dziecku powiedzmy jest wywołanie, i szukamy nazwy przestrzeni nazw o numerze dwa, która została podana, ale istnieje za to jej wersji ogólna {{Code|nazwa przestrzeni nazw i}} i domyślna {{Code|nazwa przestrzeni nazw}}, ale wtedy dla tego numerkowego liczy się to ogólne z {{Code| i}}, a ponieważ ta nazwa jest pusta, więc będziemy liczyli nazwę przestrzeni nazw z {{Code|nazwa jednostki 2}}: <syntaxhighlight lang="mediawiki"> {{#invoke:Pudełko|Nazwa przestrzeni nazw dyskusji 2|numer jednostki=2}} </syntaxhighlight> Na podstawie powyższego przykładu otrzymamy wynik o schemacie, nie wyniku, bo tam nie ma zmiennej {{Code|nazwa przestrzeni nazw 1}}, ale jest {{Code|nazwa przestrzeni nazw i}}: <syntaxhighlight lang="mediawiki"> <!-- Ale nie "nazwa przestrzeni nazw 2", bo jej nie ma, ale za to istnieje "nazwa przestrzeni nazw i"; --> <!-- nazwa przestrzeni nazw 2=nazwa przestrzeni nazw i="", a nazwa jednostki 2="Wikibooks:Strona"; --> <!-- Czyli wynik: --> Dyskusja Wikibooks <!-- Widzimy, że wygenerowała się nazwa przestrzeni nazw, którą jest przestrzeń nieprogramowa, ale dyskusji projektu, wychodząca z nazwy jednostek w tym przypadku z "nazwa jednostki 2"; --> </syntaxhighlight> Nie jest brana w tym powyższym przykładzie zmienna {{Code|nazwa przestrzeni nazw}}, bo jej nie ma, ale za to jest {{Code|nazwa przestrzeni nazw i}}, bo ona występuje jako parametr domyślny ogólny dla parametrów numerkowych. Tytaj jest używana jest zmienna {{Code|nazwa jednostki 2}} do wygenerowania ostatecznego wyniku, bo jak można zauważyć, parametry przestrzenne wskazują na przestrzeń główną, a nazwy jednostek już nie. Przykłady w wikikodzie: * {{Code|{{m|Pudełko|Nazwa przestrzeni nazw dyskusji 2|numer jednostki{{=}}2}}}} → {{Tt|{{#invoke:Pudełko|Nazwa przestrzeni nazw dyskusji 2|numer jednostki=2}}}} * {{Code|{{m|Pudełko|Nazwa przestrzeni nazw dyskusji 2|Szablon|nazwa przestrzeni nazw i{{=}}Moja przestrzeń|numer jednostki{{=}}2}}}} → {{Tt|{{#invoke:Pudełko|Nazwa przestrzeni nazw dyskusji 2|Szablon|nazwa przestrzeni nazw i=Moja przestrzeń|numer jednostki=2}}}} * {{Code|{{m|Pudełko|Nazwa przestrzeni nazw dyskusji 2|nazwa przestrzeni nazw 2{{=}}|nazwa jednostki 2{{=}}Szablon:Strona|numer jednostki{{=}}2}}}} → {{Tt|{{#invoke:Pudełko|Nazwa przestrzeni nazw dyskusji 2|nazwa przestrzeni nazw 2=|nazwa jednostki 2=Szablon:Strona|numer jednostki=2}}}} * {{Code|{{m|Pudełko|Nazwa przestrzeni nazw dyskusji 2|nazwa przestrzeni nazw i{{=}}|nazwa jednostki 2{{=}}Szablon:Strona|numer jednostki{{=}}2}}}} → {{Tt|{{#invoke:Pudełko|Nazwa przestrzeni nazw dyskusji 2|nazwa przestrzeni nazw i=|nazwa jednostki 2=Szablon:Strona|numer jednostki=2}}}} * {{Code|{{m|Pudełko|Nazwa przestrzeni nazw dyskusji 2|Szablon|nazwa przestrzeni nazw{{=}}|nazwa jednostki 2{{=}}Wikibooks:Strona|numer jednostki{{=}}2}}}} → {{Tt|{{#invoke:Pudełko|Nazwa przestrzeni nazw dyskusji 2|Szablon|nazwa przestrzeni nazw=|nazwa jednostki 2=Dyskusja Wikibooks:Strona|numer jednostki=2}}}} Powyżej dla przykładu podano parametry nie w rodzicu w szablonie, tylko w dziecku, jeśli chodzi o parametry nazw przestrzeni nazw i nazw jednostek, ale ich się za to nie powinno podawać w tych ramach, tylko w szablonach, w których wywoływane są te ramki pudełek {{Code|{{m|Pudełko}}}}, ale tak tutaj tak zrobiono by było najłatwiej sprawdzić działanie tego typu funkcji. Analogicznie możemy podawać parametry typu jednostki, np.: wywołaniu modułowym {{Code|{{m|Pudełko|Nazwa przestrzeni nazw dyskusji 2|typ jednostki 2{{=}}Podręcznik|nazwa jednostki 2{{=}}Szablon:Strona|numer jednostki{{=}}2}}}} (ale wtedy jest brana przestrzeń nazw z nazwy jednostki), ale o tym więcej w rozdziałach {{Code|{{sr|#p["Dyskusyjny typ jednostki 3"](frame,i)|p=Pudełko}}}} w „{{sr|#Funkcje typu jednostki|p=Pudełko}}”, one definiują dane przestrzenie dyskusji, ale można użyć parametru dyskusji typu jednostki z obojętnie jaką wartością niepustą, czy pustą, czy nawet jej nie podamy, wtedy wyświetli się nazwa przestrzeni nazw dyskusji. Jeżeli typ jednostki wskazuje na przestrzeń nazw główną, wtedy się liczą parametry nazw jednostek. Typ jednostki nie ma takiej samej wartości dla przestrzeni przedmiotowej, co dyskusji. Również parametry typu jednostki nie powinno się podawać w dziecku w ramce, tylko w rodzicu w szablonie jako parametry, w którym ta ramka jest wywoływana, ale tutaj podano jedynie dla przykładu, jak najłatwiej sprawdzić działanie tych parametrów tej funkcji. Najpierw w funkcji nagłówku brane są parametry nazw przestrzeni nazw, a jeżeli ich nie ma, to parametry typu jednostki, a jeżeli nie ma lub parametry przestrzenne wskazują na przestrzeń główną, i nie ma nazwy jednostki, to generowane są nazwy tej funkcji na podstawie aktualnej strony. == Funkcje nazw przestrzeni nazw trzeciej wersji == === {{Code|p["Nazwa przestrzeni nazw 3"](frame,i)}} === Funkcja pisze nazwę przestrzeni nazw, niezależnie, czy to jest przedmiotowa, czy dyskusji, według, i nie zawsze tylko, podanej w zmiennej {{Code|nazwa przestrzeni nazw}} dla pozycja bazowej w podanych parametrach szablonu rodzicu ramki dziecka, lub dla innej pozycji należy parametr podawać w formie {{Code|nazwa przestrzeni nazw 1}}, {{Code|Nazwa przestrzeni nazw 3}}, {{Code|nazwa przestrzeni nazw 3}},..., lub te parametry można podać w postaci ogólnej {{Code|nazwa przestrzeni nazw i}}. W tej funkcji trzeba też podawać parametry nazwy jednostek {{Code|nazwa jednostki}}, {{Code|nazwa jednostki 1}}, {{Code|nazwa jednostki 2}}, {{Code|nazwa jednostki 3}},... Parametry podaje się w parametrach rodzica wywołania tej funkcji {{Code|{{m|Pudełko|Nazwa przestrzeni nazw 3}}}} (ale ich nie trzeba podawać w dziecku, ale można) i w parametrach dziecka, jeśli chodzi o zmienną {{Code|numer jednostki}}, czyli np.: {{Code|{{m|Pudełko|Nazwa przestrzeni nazw 3|numer jednostki{{=}}<jakaś liczba całkowita dodatnia>}}}}. Te parametry przestrzenne zamiast w rodzicu w szablonie można podać w ramce dziecka, wtedy parametry dziecka mają pierwszeństwo. Przestrzeń nazw z parametrów nazw przestrzennych bazowych (bez numerka) może odpowiadać wartości przestrzeni głównej, to wtedy odpowiednia przestrzeń nazw z parametru nazwy jednostki się nie liczy w tej funkcji, aby się liczyła należy użyć funkcji {{Code|{{sr|#p["Nazwa przestrzeni nazw 2"](frame,...)|p=Pudełko}}}}. W tym przypadku funkcja działa jak {{Code|{{sr|#p["Nazwa przestrzeni nazw"](frame,...)|p=Pudełko}}}}. Przestrzeń nazw z parametrów nazw przestrzennych numerkowych może odpowiadać wartości przestrzeni głównej, to wtedy odpowiednia przestrzeń nazw z parametru nazwy jednostki się liczy w tej funkcji, wtedy jest liczona nazwa przestrzeni nazw z tego parametru. Gdy parametry przestrzenne lub typ jednostki w drugim podejściu nie wskazują na przestrzeń główną, to wtedy działanie tej funkcji jest podobne do {{Code|{{sr|#p["Nazwa przestrzeni nazw 2"](frame,...)|p=Pudełko}}}}. Definicja skrótowa funkcji: <syntaxhighlight lang="lua"> p["Nazwa przestrzeni nazw 3"]=function(frame,czy_uwzglednic_alternatywna_nazwe,i)...end; </syntaxhighlight> Wtedy ciało funkcji tej, czyli jego definicja w środku, jest: <syntaxhighlight lang="lua"> -- Jest liczony numer parametru nazwy przestrzeni nazw, domyslnie chodzi tu o numer bazowy parametrów przestrzennych; local numer_jednostki=i or frame.args["numer jednostki"]; local liczba_numeru_jednostki=((numer_jednostki)and(tonumber(numer_jednostki)) or 0); local pudelko_pomocne_modul=require("Module:Pudełko/Pomocne"); -- Liczy nazwę przestrzeni nazw dyskusji na podstawie podanych parametrów; return pudelko_pomocne_modul.Uzyskanie_nazw_jednostki(frame,0,liczba_numeru_jednostki,nil,2); </syntaxhighlight> Parametry funkcji: * {{Code|frame}} - tablica ramki tablicy transportu, * {{Code|czy_uwzglednic_alternatywna_nazwe}} - czy ma uwzględniać nazwę przestrzeni nazw domyślną szablonu, dostępne wartości: {{Code|false}}, w której nazwa domyślna nie jest uwzględniana wtedy, oraz {{Code|nil}} i {{Code|true}}, które oznaczają to samo, w tym jeżeli ona jest uwzględniana, wtedy jest brany parametr pierwszy dziecka, który musi istnieć przy takiej wartości tego parametru, tzn. {{Code|{{m|Pudełko|Nazwa przestrzeni nazw 3|Szablon}}}}, a jeśli nazwa uzyskana nazwy przestrzeni nazw jest w takim przypadku błędna, to brany jest ten element, a jeżeli nazwa domyślna jest błędna, czyli {{Code|{{m|Pudełko|Nazwa przestrzeni nazw 3|Moja przestrzeń}}}}, wtedy funkcja zwraca stan błędu {{Code|(błąd)}}. * {{Code|i}} - numer zmiennej nazwy przestrzeni nazw. Funkcja wykorzystuje {{Code|{{sr|#p.Uzyskanie_nazw_jednostki(frame,...)|p=Pudełko/Pomocne}}}} do wyznaczania ogólnego nazwy przestrzeni nazw dla pozycji bazowej i numerkowej, tzn. dla pozycji: jeden, dwa, trzy,..., itd, i ich ogólnej. Parametr ramki tablicy transportu rodzica szablonu: * {{Code|nazwa przestrzeni nazw}}, {{Code|nazwa przestrzeni nazw 1}}, {{Code|Nazwa przestrzeni nazw 3}}, {{Code|nazwa przestrzeni nazw 3}},..., {{Code|nazwa przestrzeni nazw i}} - nazwy przestrzeni nazw dla pozycji bazowej oraz zwykłej i ogólnej numerkowej, * {{Code|nazwa jednostki}}, {{Code|nazwa jednostki 1}}, {{Code|nazwa jednostki 2}}, {{Code|nazwa jednostki 3}},... - nazwy jednostek dla pozycji bazowej i numerkowej, * {{Code|typ jednostki}}, {{Code|typ jednostki 1}}, {{Code|typ jednostki 2}}, {{Code|typ jednostki 3}},..., {{Code|typ jednostki i}} - typy jednostek, którym odpowiadają pewne przestrzenie przedmiotowe, dla pozycji bazowej, numerkowej i ogólnej, ** {{Code|dyskusja typu jednostki}}, {{Code|dyskusja typu jednostki 1}}, {{Code|dyskusja typ jednostki 2}}, {{Code|dyskusja typ jednostki 3}},..., {{Code|dyskusja typ jednostki i}} - czy dany typ jednostki ma przedstawiać, jeśli niepusta, przestrzeń dyskusji dla pozycji bazowej, numerkowej i ogólnej. Parametry ramki tablicy transportu dziecka: * Parametry dziecka są takie same jak rodzica dla funkcji pudełkowej plus tu wymienione, * {{Code|numer jednostki}} - jak parametr {{Code|i}} nie został ustawiony, to wtedy liczy się ta zmienna. Przykłady: <syntaxhighlight lang="mediawiki"> {{Nazwa szablonu 1|nazwa przestrzeni nazw=Wikibooks|nazwa przestrzeni nazw=|nazwa przestrzeni nazw i=|nazwa jednostki=Szablon:Strona}} ---- {{Nazwa szablonu 2|nazwa przestrzeni nazw=Wikibooks|nazwa przestrzeni nazw 1=Szablon|nazwa przestrzeni nazw i=|nazwa jednostki 2=Wikibooks:Strona}} </syntaxhighlight> W pierwszym wywołaniu {{Code|nazwa przestrzeni nazw}} jest puste, ale dla tego bazowego (bez numerka) szukamy przestrzeni nazw, a więc ta nazwa jest ostateczna. ---- W drugim wywołaniu w dziecku powiedzmy jest wywołanie, i szukamy nazwy przestrzeni nazw o numerze dwa, która została podana, ale istnieje za to jej wersji ogólna {{Code|nazwa przestrzeni nazw i}} i domyślna {{Code|nazwa przestrzeni nazw}}, ale wtedy dla tego numerkowego liczy się to ogólne z {{Code| i}}, a ponieważ ta nazwa jest pusta, więc będziemy liczyli nazwę przestrzeni nazw z {{Code|nazwa jednostki 2}}. Odpowiadająca powyższemu kodowi, powiedzmy wikikod, według ich zawartości, przedstawia się: <syntaxhighlight lang="mediawiki"> {{#invoke:Pudełko|Nazwa przestrzeni nazw 3}} ---- {{#invoke:Pudełko|Nazwa przestrzeni nazw 3|numer jednostki=2}} </syntaxhighlight> Na podstawie powyższego przykładu otrzymamy wynik o schemacie, nie wyniku, bo tam nie ma zmiennej {{Code|nazwa przestrzeni nazw 1}}, ale jest {{Code|nazwa przestrzeni nazw i}}: <syntaxhighlight lang="mediawiki"> <!-- nazwa przestrzeni nazw=""; --> <!-- Czyli wynik: --> <!-- wynik pusty --> <!-- Widzimy, że wygenerowała się nazwa przestrzeni nazw, którą jest przestrzeń nazw główna, jest ciągiem pustym: ""; --> ---- <!-- Ale nie "nazwa przestrzeni nazw 2", bo jej nie ma, ale za to istnieje "nazwa przestrzeni nazw i"; --> <!-- nazwa przestrzeni nazw 2=nazwa przestrzeni nazw i="", a nazwa jednostki 2="Wikibooks:Strona"; --> <!-- Czyli wynik: --> Wikibooks <!-- Widzimy, że wygenerowała się nazwa przestrzeni nazw, którą jest przestrzeń nieprogramowa, ale projektu, wychodząca z nazwy jednostek w tym przypadku z "nazwa jednostki 2"; --> </syntaxhighlight> Dla parametrów numerkowych nie jest brana w tym powyższym przykładzie zmienna {{Code|nazwa przestrzeni nazw 2}}, bo jej nie ma, ale za to jest {{Code|nazwa przestrzeni nazw i}}, bo ona występuje jako parametr domyślny ogólny dla parametrów numerkowych. Tytaj jest używana jest zmienna {{Code|nazwa jednostki 2}} do wygenerowania ostatecznego wyniku, bo jak można zauważyć, parametry przestrzenne wskazują na przestrzeń główną, a nazwy jednostek już nie. Dla parametrów bazowych mamy zmienną {{Code|nazwa przestrzeni nazw}}, ona jest pusta, więc to zostanie wzięte do ostatecznego wyniku. Przykłady w wikikodzie: * {{Code|{{m|Pudełko|Nazwa przestrzeni nazw 3|Szablon|nazwa przestrzeni nazw{{=}}Moja przestrzeń|nazwa jednostki{{=}}Wikibooks:Strona}}}} → {{Tt|{{#invoke:Pudełko|Nazwa przestrzeni nazw 3|Szablon|nazwa przestrzeni nazw=Moja przestrzeń|nazwa jednostki=Wikibooks:Szablon}}}} * {{Code|{{m|Pudełko|Nazwa przestrzeni nazw 3|Szablon|nazwa przestrzeni nazw 2{{=}}Moja przestrzeń|nazwa jednostki 2{{=}}Wikibooks:Strona}|numer jednostki{{=}}2}}}} → {{Tt|{{#invoke:Pudełko|Nazwa przestrzeni nazw 3|Szablon|nazwa przestrzeni nazw 2=Moja przestrzeń|nazwa jednostki 2=Wikibooks:Szablon|numer jednostki=2}}}} * {{Code|{{m|Pudełko|Nazwa przestrzeni nazw 3|nazwa przestrzeni nazw{{=}}|nazwa jednostki{{=}}Wikibooks:Strona}}}} → {{Tt|{{#invoke:Pudełko|Nazwa przestrzeni nazw 3|nazwa przestrzeni nazw=|nazwa jednostki=Wikibooks:Szablon}}}} * {{Code|{{m|Pudełko|Nazwa przestrzeni nazw 3|nazwa przestrzeni nazw 2{{=}}|nazwa jednostki 2{{=}}Wikibooks:Strona|numer jednostki{{=}}2}}}} → {{Tt|{{#invoke:Pudełko|Nazwa przestrzeni nazw 3|nazwa przestrzeni nazw 2=|nazwa jednostki 2=Wikibooks:Szablon|numer jednostki=2}}}} Powyżej dla przykładu podano parametry nie w rodzicu w szablonie, tylko w dziecku, jeśli chodzi o parametry nazw przestrzeni nazw i nazw jednostek, ale ich się za to nie powinno podawać w tych ramach, tylko w szablonach, w których wywoływane są te ramki pudełek {{Code|{{m|Pudełko}}}}, ale tak tutaj tak zrobiono by było najłatwiej sprawdzić działanie tego typu funkcji. Analogicznie możemy podawać parametry typu jednostki, np.: wywołaniu modułowym {{Code|{{m|Pudełko|Nazwa przestrzeni nazw 3|typ jednostki 2{{=}}Podręcznik|nazwa jednostki 2{{=}}Szablon:Strona|numer jednostki{{=}}2}}}} (ale wtedy jest brana przestrzeń nazw z nazwy jednostki), ale o tym więcej w rozdziałach {{Code|{{sr|#p["Typ jednostki 3"](frame,i)|p=Pudełko}}}} w „{{sr|#Funkcje typu jednostki|p=Pudełko}}”, one definiują dane przestrzenie przedmiotowe lub dyskusji, ale można lub nie użyć parametru dyskusji typu jednostki z wartością niepustą, wtedy wyświetli się nazwa przestrzeni nazw dyskusji. Typ jednostki nie ma takiej samej wartości dla przestrzeni przedmiotowej, co dyskusji. Również parametry typu jednostki nie powinno się podawać w dziecku w ramce, tylko w rodzicu w szablonie jako parametry, w którym ta ramka jest wywoływana, ale tutaj podano jedynie dla przykładu, jak najłatwiej sprawdzić działanie tych parametrów tej funkcji. Najpierw w funkcji nagłówku brane są parametry nazw przestrzeni nazw, a jeżeli ich nie ma, to parametry typu jednostki, a jeżeli nie ma lub parametry przestrzenne wskazują na przestrzeń główną, i nie ma nazwy jednostki, to generowane są nazwy tej funkcji na podstawie aktualnej strony. === {{Code|p["Nazwa przedmiotowej przestrzeni nazw 3"](frame,i)}} === Funkcja pisze przedmiotową nazwę przestrzeni nazw jakikolwiek nazwy przestrzeni nazw (tzn. nazwę przedmiotową nazwy przestrzenie nazw, czyli nie dyskusji, zamieniana jest na nią samą, czyli identyfikator przestrzeni się nie zmienia, a dyskusji, nie przedmiotową, przekształca się na przedmiotową jej odpowiadającą, czyli w tym przypadku identyfikator przestrzeni zmniejsza się o numer mniej), według podanej w zmiennej {{Code|nazwa przestrzeni nazw}} dla pozycja bazowej w podanych parametrach szablonu rodzicu ramki dziecka, lub dla innej pozycji należy parametr podawać w formie {{Code|nazwa przestrzeni nazw 1}}, {{Code|nazwa przestrzeni nazw 2}}, {{Code|nazwa przestrzeni nazw 3}},..., lub te parametry można podać w postaci ogólnej {{Code|nazwa przestrzeni nazw i}}. Parametry podaje się w parametrach rodzica wywołania tej funkcji {{Code|{{m|Pudełko|Nazwa przedmiotowej przestrzeni nazw 3}}}} (ale ich nie trzeba podawać w dziecku, ale można) i w parametrach dziecka, jeśli chodzi o zmienną {{Code|numer jednostki}}, czyli np.: {{Code|{{m|Pudełko|Nazwa przedmiotowej przestrzeni nazw 3|numer jednostki{{=}}<jakaś liczba całkowita dodatnia>}}}}. Te parametry przestrzenne zamiast w rodzicu w szablonie można podać w ramce dziecka, wtedy parametry dziecka mają pierwszeństwo. Parametry przestrzenne mogą mogą być podane w postaci przestrzeni przedmiotowej lub dyskusji, ale ta funkcja zawsze ją zamienia na przedmiotową. Przestrzeń nazw z parametrów nazw przestrzennych bazowych (bez numerka) może odpowiadać wartości przestrzeni głównej, to wtedy odpowiednia przestrzeń nazw z parametru nazwy jednostki się nie liczy w tej funkcji, aby się liczyła należy użyć funkcji {{Code|{{sr|#p["Nazwa przedmiotowej przestrzeni nazw 2"](frame,...)|p=Pudełko}}}}. W tym przypadku funkcja działa jak {{Code|{{sr|#p["Nazwa przedmiotowej przestrzeni nazw"](frame,...)|p=Pudełko}}}}. Przestrzeń nazw z parametrów nazw przestrzennych numerkowych może odpowiadać wartości przestrzeni głównej, to wtedy odpowiednia przestrzeń nazw z parametru nazwy jednostki się liczy w tej funkcji, wtedy jest liczona nazwa przestrzeni nazw z tego parametru. Gdy parametry przestrzenne lub typ jednostki w drugim podejściu nie wskazują na przestrzeń główną, to wtedy działanie tej funkcji jest podobne do {{Code|{{sr|#p["Nazwa przedmiotowej przestrzeni nazw 2"](frame,...)|p=Pudełko}}}}. Definicja skrótowa funkcji: <syntaxhighlight lang="lua"> p["Nazwa przedmiotowej przestrzeni nazw 3"]=function(frame,czy_uwzglednic_alternatywna_nazwe,i)...end; </syntaxhighlight> Wtedy ciało funkcji tej, czyli jego definicja w środku, jest: <syntaxhighlight lang="lua"> -- Jest liczony numer parametru nazwy przestrzeni nazw, domyslnie chodzi tu o numer bazowy parametrów przestrzennych; local numer_jednostki=i or frame.args["numer jednostki"]; local liczba_numeru_jednostki=((numer_jednostki)and(tonumber(numer_jednostki)) or 0); local pudelko_pomocne_modul=require("Module:Pudełko/Pomocne"); -- Liczy nazwę przestrzeni nazw przedmiotową na podstawie podanych parametrów; return pudelko_pomocne_modul.Uzyskanie_nazw_jednostki(frame,1,liczba_numeru_jednostki,nil,1); </syntaxhighlight> Parametry funkcji: * {{Code|frame}} - tablica ramki tablicy transportu, * {{Code|czy_uwzglednic_alternatywna_nazwe}} - czy ma uwzględniać nazwę przestrzeni nazw domyślną szablonu, dostępne wartości: {{Code|false}}, w której nazwa domyślna nie jest uwzględniana wtedy, oraz {{Code|nil}} i {{Code|true}}, które oznaczają to samo, w tym jeżeli ona jest uwzględniana, wtedy jest brany parametr pierwszy dziecka, który musi istnieć przy takiej wartości tego parametru, tzn. {{Code|{{m|Pudełko|Nazwa przedmiotowej przestrzeni nazw 3|Dyskusja szablonu}}}} - ta nazwa domyślna zostanie zamieniona na przedmiotową, a jak ona by była przedmiotowa, to żadnej zamiany by nie było, a nazwa uzyskana z nazwy przestrzeni nazw z parametrów przestrzennych jest w takim przypadku błędna, to w takim razie brany jest ten parametr, a jeżeli ta nazwa domyślna jest błędna, czyli {{Code|{{m|Pudełko|Nazwa przedmiotowej przestrzeni nazw 3|Moja przestrzeń}}}}, wtedy funkcja zwraca stan błędu {{Code|(błąd)}}. * {{Code|i}} - numer zmiennej nazwy przestrzeni nazw. Funkcja wykorzystuje {{Code|{{sr|#p.Uzyskanie_nazw_jednostki(frame,...)|p=Pudełko/Pomocne}}}} do wyznaczania ogólnego nazwy przestrzeni nazw dla pozycji bazowej i numerkowej, tzn. dla pozycji: jeden, dwa, trzy,..., itd, i ich ogólnej. Parametr ramki tablicy transportu rodzica szablonu: * {{Code|nazwa przestrzeni nazw}}, {{Code|nazwa przestrzeni nazw 1}}, {{Code|nazwa przestrzeni nazw 2}}, {{Code|nazwa przestrzeni nazw 3}},..., {{Code|nazwa przestrzeni nazw i}} - nazwy przestrzeni nazw dla pozycji bazowej oraz zwykłej i ogólnej numerkowej, * {{Code|typ jednostki}}, {{Code|typ jednostki 1}}, {{Code|typ jednostki 2}}, {{Code|typ jednostki 3}},..., {{Code|typ jednostki i}} - typy jednostek, którym odpowiadają pewne przestrzenie przedmiotowe, dla pozycji bazowej, numerkowej i ogólnej. Parametry ramki tablicy transportu dziecka: * Parametry dziecka są takie same jak rodzica dla funkcji pudełkowej plus tu wymienione, * {{Code|numer jednostki}} - jak parametr {{Code|i}} nie został ustawiony, to wtedy liczy się ta zmienna. Przykłady: <syntaxhighlight lang="mediawiki"> {{Nazwa szablonu 1|nazwa przestrzeni nazw=Wikibooks|nazwa przestrzeni nazw=|nazwa przestrzeni nazw i=|nazwa jednostki=Dyskusja Wikibooks:Strona}} ---- {{Nazwa szablonu 2|nazwa przestrzeni nazw=Wikibooks|nazwa przestrzeni nazw 1=Szablon|nazwa przestrzeni nazw i=|nazwa jednostki 2=Dyskusja Wikibooks:Strona}} </syntaxhighlight> W pierwszym wywołaniu {{Code|nazwa przestrzeni nazw}} jest puste, ale dla tego bazowego (bez numerka) szukamy przestrzeni nazw, a więc ta nazwa jest ostateczna. ---- W drugim wywołaniu w dziecku powiedzmy jest wywołanie, i szukamy nazwy przestrzeni nazw o numerze dwa, która została podana, ale istnieje za to jej wersji ogólna {{Code|nazwa przestrzeni nazw i}} i domyślna {{Code|nazwa przestrzeni nazw}}, ale wtedy dla tego numerkowego liczy się to ogólne z {{Code| i}}, a ponieważ ta nazwa jest pusta, więc będziemy liczyli nazwę przestrzeni nazw z {{Code|nazwa jednostki 2}}. Odpowiadająca powyższemu kodowi, powiedzmy wikikod, według ich zawartości, przedstawia się: <syntaxhighlight lang="mediawiki"> {{#invoke:Pudełko|Nazwa przedmiotowej przestrzeni nazw 3}} ---- {{#invoke:Pudełko|Nazwa przedmiotowej przestrzeni nazw 3|numer jednostki=2}} </syntaxhighlight> Na podstawie powyższego przykładu otrzymamy wynik o schemacie, nie wyniku, bo tam nie ma zmiennej {{Code|nazwa przestrzeni nazw 1}}, ale jest {{Code|nazwa przestrzeni nazw i}}: <syntaxhighlight lang="mediawiki"> <!-- nazwa przestrzeni nazw=""; --> <!-- Czyli wynik: --> <!-- wynik pusty --> <!-- Widzimy, że wygenerowała się nazwa przestrzeni nazw, którą jest przestrzeń nazw główna, jest ciągiem pustym: ""; --> ---- <!-- Ale nie "nazwa przestrzeni nazw 2", bo jej nie ma, ale za to istnieje "nazwa przestrzeni nazw i"; --> <!-- nazwa przestrzeni nazw 2=nazwa przestrzeni nazw i="", a nazwa jednostki 2="Dyskusja Wikibooks:Strona"; --> <!-- Czyli wynik: --> Wikibooks <!-- Widzimy, że wygenerowała się nazwa przestrzeni nazw, którą jest przestrzeń nieprogramowa, ale projektu, wychodząca z nazwy jednostek w tym przypadku z "nazwa jednostki 2"; --> </syntaxhighlight> Dla parametrów numerkowych nie jest brana w tym powyższym przykładzie zmienna {{Code|nazwa przestrzeni nazw 2}}, bo jej nie ma, ale za to jest {{Code|nazwa przestrzeni nazw i}}, bo ona występuje jako parametr domyślny ogólny dla parametrów numerkowych. Tytaj jest używana jest zmienna {{Code|nazwa jednostki 2}} do wygenerowania ostatecznego wyniku, bo jak można zauważyć, parametry przestrzenne wskazują na przestrzeń główną, a nazwy jednostek już nie. Dla parametrów bazowych mamy zmienną {{Code|nazwa przestrzeni nazw}}, ona jest pusta, więc to zostanie wzięte do ostatecznego wyniku. Przykłady w wikikodzie: * {{Code|{{m|Pudełko|Nazwa przedmiotowej przestrzeni nazw 3|Dyskusja szablonu|nazwa przestrzeni nazw{{=}}Moja przestrzeń|nazwa jednostki{{=}}Dyskusja Wikibooks:Strona}}}} → {{Tt|{{#invoke:Pudełko|Nazwa przedmiotowej przestrzeni nazw 3|Dyskusja szablonu|nazwa przestrzeni nazw=Moja przestrzeń||nazwa jednostki=Dyskusja Wikibooks:Szablon}}}} * {{Code|{{m|Pudełko|Nazwa przedmiotowej przestrzeni nazw 3|Dyskusja szablonu|nazwa przestrzeni nazw 2{{=}}Moja przestrzeń|nazwa jednostki 2{{=}}Dyskusja Wikibooks:Strona|numer jednostki{{=}}2}}}} → {{Tt|{{#invoke:Pudełko|Nazwa przedmiotowej przestrzeni nazw 3|Dyskusja szablonu|nazwa przestrzeni nazw 2=Moja przestrzeń||nazwa jednostki 2=Dyskusja Wikibooks:Szablon|numer jednostki=2}}}} * {{Code|{{m|Pudełko|Nazwa przedmiotowej przestrzeni nazw 3|nazwa przestrzeni nazw{{=}}|nazwa jednostki{{=}}Dyskusja Wikibooks:Strona}}}} → {{Tt|{{#invoke:Pudełko|Nazwa przedmiotowej przestrzeni nazw 3|nazwa przestrzeni nazw=|nazwa jednostki=Dyskusja Wikibooks:Szablon}}}} * {{Code|{{m|Pudełko|Nazwa przedmiotowej przestrzeni nazw 3|nazwa przestrzeni nazw 2{{=}}|nazwa jednostki 2{{=}}Dyskusja Wikibooks:Strona|numer jednostki{{=}}2}}}} → {{Tt|{{#invoke:Pudełko|Nazwa przedmiotowej przestrzeni nazw 3|nazwa przestrzeni nazw 2=|nazwa jednostki 2=Dyskusja Wikibooks:Szablon|numer jednostki=2}}}} Powyżej dla przykładu podano parametry nie w rodzicu w szablonie, tylko w dziecku, jeśli chodzi o parametry nazw przestrzeni nazw, ale ich się za to nie powinno podawać w tych ramach, tylko w szablonach, w których wywoływane są te ramki pudełek {{Code|{{m|Pudełko}}}}, ale tak tutaj tak zrobiono by było najłatwiej sprawdzić działanie tego typu funkcji. Analogicznie możemy podawać parametry typu jednostki, np.: wywołaniu modułowym {{Code|{{m|Pudełko|Nazwa przedmiotowej przestrzeni nazw 3|typ jednostki 2{{=}}strona szablonu|numer jednostki{{=}}2}}}}, ale o tym więcej w rozdziałach {{Code|{{sr|#p["Przedmiotowy typ jednostki 3"](frame,i)|p=Pudełko}}}} w „{{sr|#Funkcje typu jednostki|p=Pudełko}}”, one definiują dane przestrzeni przedmiotowe, ale wtedy ta sama nazwa przestrzeni nazw reprezentowana przez {{Parametr|typ jednostki 2|strona szablonu}}, jest zamieniana na to samo, lepiej jest tutaj używać parametrów przestrzennych nazw niż typu jednostki. Tutaj parametr dyskusji typu jednostki bazowy i numerkowy ogólny, czy szczegółowy, nie gra roli, bo nawet, gdy wygenerujemy nazwę przestrzeni dyskusji za pomoca tego parametru, to i tak otrzymamy na samym końcu jego nazwę przedmiotową. Jeżeli typ jednostki bazowy wskazuje na przestrzeń nazw główną, wtedy się nie liczą parametry nazw jednostek, a w przypadku numerkowego, wtedy się liczy. Typ jednostki nie ma takiej samej wartości dla przestrzeni przedmiotowej, co dyskusji. Również parametry typu jednostki nie powinno się podawać w dziecku w ramce, tylko w rodzicu w szablonie jako parametry, w którym ta ramka jest wywoływana, ale tutaj podano jedynie dla przykładu, jak najłatwiej sprawdzić działanie tych parametrów tej funkcji. Najpierw w funkcji nagłówku brane są parametry nazw przestrzeni nazw, a jeżeli ich nie ma, to parametry typu jednostki, a jeżeli nie ma, to generowane są nazwy na podstawie aktualnego modułu. === {{Code|p["Nazwa przestrzeni nazw dyskusji 3"](frame,i)}} === Funkcja pisze nazwę przestrzeni nazw dyskusji jakikolwiek nazwy przestrzeni nazw (tzn. nazwę dyskusji nazwy przestrzenie nazw, czyli nie przedmiotowej, zamieniana jest na nią samą, czyli identyfikator przestrzeni się nie zmienia, a przedmiotową, nie dyskusji, przekształca się na dyskusji jej odpowiadającą, czyli w tym przypadku identyfikator przestrzeni zwiększa się o numer więcej), według, i nie zawsze tylko, podanej w zmiennej {{Code|nazwa przestrzeni nazw}} dla pozycja bazowej w podanych parametrach szablonu rodzicu ramki dziecka, lub dla innej pozycji należy parametr podawać w formie {{Code|nazwa przestrzeni nazw 1}}, {{Code|nazwa przestrzeni nazw 2}}, {{Code|nazwa przestrzeni nazw 3}},..., lub te parametry można podać w postaci ogólnej {{Code|nazwa przestrzeni nazw i}}. W tej funkcji trzeba też podawać parametry nazwy jednostek {{Code|nazwa jednostki}}, {{Code|nazwa jednostki 1}}, {{Code|nazwa jednostki 2}}, {{Code|nazwa jednostki 3}},... Parametry podaje się w parametrach rodzica wywołania tej funkcji {{Code|{{m|Pudełko|Nazwa przestrzeni nazw dyskusji 3}}}} (ale ich nie trzeba podawać w dziecku, ale można) i w parametrach dziecka, jeśli chodzi o zmienną {{Code|numer jednostki}}, czyli np.: {{Code|{{m|Pudełko|Nazwa przestrzeni nazw dyskusji 3|numer jednostki{{=}}<jakaś liczba całkowita dodatnia>}}}}. Te parametry przestrzenne zamiast w rodzicu w szablonie można podać w ramce dziecka, wtedy parametry dziecka mają pierwszeństwo. Przestrzeń nazw z parametrów nazw przestrzennych bazowych (bez numerka) może odpowiadać wartości przestrzeni głównej, to wtedy odpowiednia przestrzeń nazw z parametru nazwy jednostki się nie liczy w tej funkcji, aby się liczyła należy użyć funkcji {{Code|{{sr|#p["Nazwa przestrzeni nazw dyskusji 2"](frame,...)|p=Pudełko}}}}. W tym przypadku funkcja działa jak {{Code|{{sr|#p["Nazwa przestrzeni nazw dyskusji"](frame,...)|p=Pudełko}}}}. Przestrzeń nazw z parametrów nazw przestrzennych numerkowych może odpowiadać wartości przestrzeni głównej, to wtedy odpowiednia przestrzeń nazw z parametru nazwy jednostki się liczy w tej funkcji, wtedy jest liczona nazwa przestrzeni nazw z tego parametru. Gdy parametry przestrzenne lub typ jednostki w drugim podejściu nie wskazują na przestrzeń główną, to wtedy działanie tej funkcji jest podobne do {{Code|{{sr|#p["Nazwa przestrzeni nazw dyskusji 2"](frame,...)|p=Pudełko}}}}. Definicja skrótowa funkcji: <syntaxhighlight lang="lua"> p["Nazwa przestrzeni nazw dyskusji 3"]=function(frame,czy_uwzglednic_alternatywna_nazwe,i)...end; </syntaxhighlight> Wtedy ciało funkcji tej, czyli jego definicja w środku, jest: <syntaxhighlight lang="lua"> -- Jest liczony numer parametru nazwy przestrzeni nazw, domyslnie chodzi tu o numer bazowy parametrów przestrzennych; local numer_jednostki=i or frame.args["numer jednostki"]; local liczba_numeru_jednostki=((numer_jednostki)and(tonumber(numer_jednostki)) or 0); local pudelko_pomocne_modul=require("Module:Pudełko/Pomocne"); -- Liczy nazwę przestrzeni nazw dyskusji na podstawie podanych parametrów; return pudelko_pomocne_modul.Uzyskanie_nazw_jednostki(frame,2,liczba_numeru_jednostki,nil,1); </syntaxhighlight> Parametry funkcji: * {{Code|frame}} - tablica ramki tablicy transportu, * {{Code|czy_uwzglednic_alternatywna_nazwe}} - czy ma uwzględniać nazwę przestrzeni nazw domyślną szablonu, dostępne wartości: {{Code|false}}, w której nazwa domyślna nie jest uwzględniana wtedy, oraz {{Code|nil}} i {{Code|true}}, które oznaczają to samo, w tym jeżeli ona jest uwzględniana, wtedy jest brany parametr pierwszy dziecka, który musi istnieć przy takiej wartości tego parametru, tzn. {{Code|{{m|Pudełko|Nazwa przestrzeni nazw dyskusji 3|Szablon}}}}, nazwa domyślna zostatnie zamieniona na dyskusji, a jeśli jest już taka, to takiej transfomacji nie ma, a jeśli nazwa uzyskana nazwy przestrzeni nazw jest w takim przypadku błędna, to wzięty jest ten parametr, a jeżeli nazwa domyślna jest błędna, czyli {{Code|{{m|Pudełko|Nazwa przestrzeni nazw dyskusji 3|Moja przestrzeń}}}}, wtedy funkcja zwraca stan błędu {{Code|(błąd)}}. * {{Code|i}} - numer zmiennej nazwy przestrzeni nazw. Funkcja wykorzystuje {{Code|{{sr|#p.Uzyskanie_nazw_jednostki(frame,...)|p=Pudełko/Pomocne}}}} do wyznaczania ogólnego nazwy przestrzeni nazw dla pozycji bazowej i numerkowej, tzn. dla pozycji: jeden, dwa, trzy,..., itd, i ich ogólnej. Parametr ramki tablicy transportu rodzica szablonu: * {{Code|nazwa przestrzeni nazw}}, {{Code|nazwa przestrzeni nazw 1}}, {{Code|nazwa przestrzeni nazw 2}}, {{Code|nazwa przestrzeni nazw 3}},..., {{Code|nazwa przestrzeni nazw i}} - nazwy przestrzeni nazw dla pozycji bazowej oraz zwykłej i ogólnej numerkowej, * {{Code|nazwa jednostki}}, {{Code|nazwa jednostki 1}}, {{Code|nazwa jednostki 2}}, {{Code|nazwa jednostki 3}},... - nazwy jednostek dla pozycji bazowej i numerkowej, * {{Code|typ jednostki}}, {{Code|typ jednostki 1}}, {{Code|typ jednostki 2}}, {{Code|typ jednostki 3}},..., {{Code|typ jednostki i}} - typy jednostek, którym odpowiadają pewne przestrzenie przedmiotowe, dla pozycji bazowej, numerkowej i ogólnej. Parametry ramki tablicy transportu dziecka: * Parametry dziecka są takie same jak rodzica dla funkcji pudełkowej plus tu wymienione, * {{Code|numer jednostki}} - jak parametr {{Code|i}} nie został ustawiony, to wtedy liczy się ta zmienna. Przykłady: <syntaxhighlight lang="mediawiki"> {{Nazwa szablonu 1|nazwa przestrzeni nazw=Wikibooks|nazwa przestrzeni nazw=|nazwa przestrzeni nazw i=|nazwa jednostki=Szablon:Strona}} ---- {{Nazwa szablonu 2|nazwa przestrzeni nazw=Wikibooks|nazwa przestrzeni nazw 1=Szablon|nazwa przestrzeni nazw i=|nazwa jednostki 2=Wikibooks:Strona}} </syntaxhighlight> W pierwszym wywołaniu {{Code|nazwa przestrzeni nazw}} jest puste, ale dla tego bazowego (bez numerka) szukamy przestrzeni nazw, a więc ta nazwa jest ostateczna. ---- W drugim wywołaniu w dziecku powiedzmy jest wywołanie, i szukamy nazwy przestrzeni nazw o numerze dwa, która została podana, ale istnieje za to jej wersji ogólna {{Code|nazwa przestrzeni nazw i}} i domyślna {{Code|nazwa przestrzeni nazw}}, ale wtedy dla tego numerkowego liczy się to ogólne z {{Code| i}}, a ponieważ ta nazwa jest pusta, więc będziemy liczyli nazwę przestrzeni nazw z {{Code|nazwa jednostki 2}}. Odpowiadająca powyższemu kodowi, powiedzmy wikikod, według ich zawartości, przedstawia się: <syntaxhighlight lang="mediawiki"> {{#invoke:Pudełko|Nazwa przestrzeni nazw 3}} ---- {{#invoke:Pudełko|Nazwa przestrzeni nazw 3|numer jednostki=2}} </syntaxhighlight> Na podstawie powyższego przykładu otrzymamy wynik o schemacie, nie wyniku, bo tam nie ma zmiennej {{Code|nazwa przestrzeni nazw 1}}, ale jest {{Code|nazwa przestrzeni nazw i}}: <syntaxhighlight lang="mediawiki"> <!-- nazwa przestrzeni nazw=""; --> <!-- Czyli wynik: --> Dyskusja <!-- Widzimy, że wygenerowała się nazwa przestrzeni nazw, którą jest przestrzeń nazw niegłówna, jest ciągiem niepustym; --> ---- <!-- Ale nie "nazwa przestrzeni nazw 2", bo jej nie ma, ale za to istnieje "nazwa przestrzeni nazw i"; --> <!-- nazwa przestrzeni nazw 2=nazwa przestrzeni nazw i="", a nazwa jednostki 2="Wikibooks:Strona"; --> <!-- Czyli wynik: --> Dyskusja Wikibooks <!-- Widzimy, że wygenerowała się nazwa przestrzeni nazw, którą jest przestrzeń nieprogramowa, ale projektu, wychodząca z nazwy jednostek w tym przypadku z "nazwa jednostki 2"; --> </syntaxhighlight> Dla parametrów numerkowych nie jest brana w tym powyższym przykładzie zmienna {{Code|nazwa przestrzeni nazw 2}}, bo jej nie ma, ale za to jest {{Code|nazwa przestrzeni nazw i}}, bo ona występuje jako parametr domyślny ogólny dla parametrów numerkowych. Tytaj jest używana jest zmienna {{Code|nazwa jednostki 2}} do wygenerowania ostatecznego wyniku, bo jak można zauważyć, parametry przestrzenne wskazują na przestrzeń główną, a nazwy jednostek już nie. Dla parametrów bazowych mamy zmienną {{Code|nazwa przestrzeni nazw}}, ona jest pusta, więc to zostanie wzięte do ostatecznego wyniku. Przykłady w wikikodzie: * {{Code|{{m|Pudełko|Nazwa przestrzeni nazw dyskusji 3|Szablon|nazwa przestrzeni nazw{{=}}Moja przestrzeń|nazwa jednostki{{=}}Wikibooks:Strona}}}} → {{Tt|{{#invoke:Pudełko|Nazwa przestrzeni nazw dyskusji 3|Szablon|nazwa przestrzeni nazw=Moja przestrzeń|nazwa jednostki=Wikibooks:Szablon}}}} * {{Code|{{m|Pudełko|Nazwa przestrzeni nazw dyskusji 3|Szablon|nazwa przestrzeni nazw 2{{=}}Moja przestrzeń|nazwa jednostki 2{{=}}Wikibooks:Strona|numer jednostki{{=}}2}}}} → {{Tt|{{#invoke:Pudełko|Nazwa przestrzeni nazw dyskusji 3|Szablon|nazwa przestrzeni nazw 2=Moja przestrzeń|nazwa jednostki 2=Wikibooks:Szablon|numer jednostki=2}}}} * {{Code|{{m|Pudełko|Nazwa przestrzeni nazw dyskusji 3|nazwa przestrzeni nazw{{=}}|nazwa jednostki{{=}}Wikibooks:Strona}}}} → {{Tt|{{#invoke:Pudełko|Nazwa przestrzeni nazw dyskusji 3|nazwa przestrzeni nazw=|nazwa jednostki=Wikibooks:Szablon}}}} * {{Code|{{m|Pudełko|Nazwa przestrzeni nazw dyskusji 3|nazwa przestrzeni nazw 2{{=}}|nazwa jednostki 2{{=}}Wikibooks:Strona|numer jednostki{{=}}2}}}} → {{Tt|{{#invoke:Pudełko|Nazwa przestrzeni nazw dyskusji 3|nazwa przestrzeni nazw 2=|nazwa jednostki 2=Wikibooks:Szablon|numer jednostki=2}}}} Powyżej dla przykładu podano parametry nie w rodzicu w szablonie, tylko w dziecku, jeśli chodzi o parametry nazw przestrzeni nazw i nazw jednostek, ale ich się za to nie powinno podawać w tych ramach, tylko w szablonach, w których wywoływane są te ramki pudełek {{Code|{{m|Pudełko}}}}, ale tak tutaj tak zrobiono by było najłatwiej sprawdzić działanie tego typu funkcji. Analogicznie możemy podawać parametry typu jednostki, np.: wywołaniu modułowym {{Code|{{m|Pudełko|Nazwa przestrzeni nazw dyskusji 3|typ jednostki 2{{=}}Podręcznik|nazwa jednostki 2{{=}}Szablon:Strona|numer jednostki{{=}}2}}}} (ale wtedy jest brana przestrzeń nazw z nazwy jednostki), ale o tym więcej w rozdziałach {{Code|{{sr|#p["Dyskusyjny typ jednostki 3"](frame,i)|p=Pudełko}}}} w „{{sr|#Funkcje typu jednostki|p=Pudełko}}”, one definiują dane przestrzenie dyskusji, ale można użyć parametru dyskusji typu jednostki z obojętnie jaką wartością niepustą, czy pustą, czy nawet jej nie podamy, wtedy wyświetli się nazwa przestrzeni nazw dyskusji. Jeżeli typ jednostki bazowy wskazuje na przestrzeń nazw główną, wtedy się nie liczą parametry nazw jednostek, a w przypadku numerkowego, wtedy się liczy. Typ jednostki nie ma takiej samej wartości dla przestrzeni przedmiotowej, co dyskusji. Również parametry typu jednostki nie powinno się podawać w dziecku w ramce, tylko w rodzicu w szablonie jako parametry, w którym ta ramka jest wywoływana, ale tutaj podano jedynie dla przykładu, jak najłatwiej sprawdzić działanie tych parametrów tej funkcji. Najpierw w funkcji nagłówku brane są parametry nazw przestrzeni nazw, a jeżeli ich nie ma, to parametry typu jednostki, a jeżeli nie ma lub parametry przestrzenne wskazują na przestrzeń główną, i nie ma nazwy jednostki, to generowane są nazwy tej funkcji na podstawie aktualnej strony. == Funkcje nazw jednostki == === {{Code|p["Nazwa jednostki"](frame,i)}} === == Funkcje nazw jednostki drugiej wersji == === {{Code|p["Nazwa jednostki 2"](frame,i)}} === === {{Code|p["Nazwa przedmiotowa jednostki 2"](frame,i)}} === === {{Code|p["Nazwa dyskusji jednostki 2"](frame,i)}} === == Funkcje nazw jednostki trzeciej wersji == === {{Code|p["Nazwa jednostki 3"](frame,i)}} === === {{Code|p["Nazwa przedmiotowa jednostki 3"](frame,i)}} === === {{Code|p["Nazwa dyskusji jednostki 3"](frame,i)}} === == Funkcje pełnych nazw jednostki == === {{Code|p["Pełna nazwa dyskusji jednostki"](frame,i)}} === === {{Code|p["Pełna nazwa przedmiotowa jednostki"](frame,i)}} === === {{Code|p["Pełna nazwa jednostki"](frame,i)}} === == Funkcje pełnych nazw jednostki drugiej wersji == === {{Code|p["Pełna nazwa dyskusji jednostki 2"](frame,i)}} === === {{Code|p["Pełna nazwa przedmiotowa jednostki 2"](frame,i)}} === === {{Code|p["Pełna nazwa jednostki 2"](frame,i)}} === == Funkcje pełnych nazw jednostki trzeciej wersji == === {{Code|p["Pełna nazwa dyskusji jednostki 3"](frame,i)}} === === {{Code|p["Pełna nazwa przedmiotowa jednostki 3"](frame,i)}} === === {{Code|p["Pełna nazwa jednostki 3"](frame,i)}} === == Funkcje typu jednostki == === {{Code|p["Typ jednostki"](frame,i)}} === === {{Code|p["Typ jednostki 2"](frame,i)}} === === {{Code|p["Typ jednostki 3"](frame,i)}} === === Funkcje typu jednostki przedmiotowe === ==== {{Code|p["Przedmiotowy typ jednostki"](frame,i)}} ==== ==== {{Code|p["Przedmiotowy typ jednostki 2"](frame,i)}} ==== ==== {{Code|p["Przedmiotowy typ jednostki 3"](frame,i)}} ==== === Fukcje typu jednostki dyskusji === ==== {{Code|p["Dyskusyjny typ jednostki"](frame,i)}} ==== ==== {{Code|p["Dyskusyjny typ jednostki 2"](frame,i)}} ==== ==== {{Code|p["Dyskusyjny typ jednostki 3"](frame,i)}} ==== == Funkcje chech pudełka == === {{Code|p["Cecha pudełka"](frame)}} === === {{Code|p["Przedmiotowa cecha pudełka"](frame)}} === === {{Code|p["Dyskusyjna cecha pudełka"](frame)}} === == Fukcje ogólnego pudełka == === {{Code|p["Ogólne pudełko"](frame)}} === == Funkcje ogólne == === {{Code|p["Tekst pudełka"](frame)}} === == Funkcje błędów pudełka == === {{Code|p["Błędy pudełka"](frame)}} === === {{Code|p["Przedmiotowe błędy pudełka"](frame)}} === === {{Code|p["Dyskusyjne błędy pudełka"](frame)}} === == Funkcje nazw stron == === {{Code|p["Nazwa strony głównej projektu"](frame,i)}} === === {{Code|p["Nazwa strony głównej dla dzieci projektu"](frame,i)}} === == Funkcje kodów == === {{Code|p["Kod języka"](frame,i)}} === === {{Code|p["Kod projektu"](frame,i)}} === === {{Code|p["Klucz projektu"](frame,i)}} === == Funkcje wiki == === {{Code|p["Inny niż język bieżący wiki"](frame)}} === === {{Code|p["Inne niż lokalne wiki"](frame)}} === === {{Code|p["Inne niż bieżące wiki"](frame)}} === == Funkcje typów parametrów, czy podane je == === {{Code|p["Podano parametry nienazwane"](frame)}} === === {{Code|p["Podano parametry numerowane"](frame)}} === === {{Code|p["Podano parametry nazwane"](frame)}} === == Funkcje kodów tego projektu == === {{Code|p["Kod projektu tego projektu"](frame)}} === === {{Code|p["Kod języka tego projektu"](frame)}} === === {{Code|p["Klucz projektu tego projektu"](frame)}} === == Funkcje stron == === {{Code|p["Strona główna tego projektu"](frame)}} === === {{Code|p["Strona główna dla dzieci tego projektu"](frame)}} === == Funkcje nazw stron drugiej wersji == === {{Code|p["Nazwa strony głównej dla dzieci projektu 2"](frame)}} === === {{Code| p["Nazwa strony głównej projektu 2"](frame)}} === {{BrClear}} <noinclude><!-- -->{{ProstaStronaKoniec}}<!-- -->{{Kategoria|Opisy funkcji, w Lua w Scribunto, w modułach}}<!-- --></noinclude> 48rv4wywznuquig1fdm4t8xpls5ak1n 540478 540476 2026-04-24T11:37:20Z Persino 2851 540478 wikitext text/x-wiki <noinclude>{{ProstaStronaStart | nagłówek = {{Podrozdział|{{ld2|Pudełko}}|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 pudelko_modul=require("Module:Pudełko"); </syntaxhighlight> dzięki, któremu można wypisywać funkcje należącego do niego. Posługuje się na parametrach pudełkowych {{Parametr|nazwa przestrzeni nazw}} (czy też bez numerka {{Parametr|nazwa przestrzeni nazw i}} dla tego numerowanego) lub te z numerkiem po jednej spacji w nich (ale nie dla tego z końcówką {{Code| i}}) mogą zostać użyte jako parametry szablonu. Moduł {{Code|{{ld2|Pudełko}}}} przedstawia funkcje nazw w oparciu o funkcje nazw {{Code|{{ld2|Nazwy}}}}, generuje on nazwy za pomocą parametrów pudełkowych podanych poniżej. Parametr {{Parametr|nazwa jednostki}} (lub parametr {{Parametr|cel}} dla numerka tego pierwszego, tego alternatywnego), lub te z numerkiem po jednej spacji w nazwie parametru, albo numerowane numerkami {{Code|1}}, {{Code|2}},..., mogą zostać użyte jako parametry szablonu. Parametry określające rodzaj jednostki {{Parametr|typ jednostki}} z {{Parametr|dyskusja typu jednostki}}, itp. w wersjach z numerkiem po jednej spacji w nich mogą zostać użyte jako parametry szablonu. A te tymi numerowanymi liczbami naturalnymi {{Tt|nazwy jednostki}} od jedynki wzwyż poprzez szablon, w którym są one użyte, one też mogą być użyte z dwukropkiem, te numerowane, na samym początku nazwy, wtedy one są traktowane jako pełne nazwy strony, i wtedy one nie zostaną z interpretowane, że do nich trzeba użyć parametr odpowiedni z nazwą przetrzeni nazw z tego numerowanego, czy ogólny, aby utworzyć znów inną pełną nazwę strony dla tego numerka. Zestawienie: * {{Code|nazwa przestrzeni nazw}} i {{Code|nazwa przestrzeni nazw i}} (ogólna nazwa przestrzeni nazw dla wszystkich numerków, i tych numerowanych jednostek) - i to pierwsze z numerkiem, tzn. {{Code|nazwa przestrzeni nazw 1}}, {{Code|nazwa przestrzeni nazw 2}}, ..., * {{Code|nazwa jednostki}} - i te z numerkiem: {{Code|nazwa jednostki 1}}, {{Code|nazwa jednostki 2}}, ..., lub gdy jest zamiast tego parametrem numerowany, {{Code|1}}, {{Code|2}},..., który dla tego pierwszego może być uznany jako: {{Code|cel}} {{=}} {{Code|1}}, * {{Code|typ jednostki}} (parametr bazowy) i {{Code|typ jednostki i}} (parametr domyślny numerkowy) - i te z numerkiem: {{Code|typ jednostki 1}}, {{Code|typ jednostki 2}}, ..., tzn. gdy chcemy określić z jakim typem jednostki mamy do czynienia w zależności do jakiej przestrzeni nazw należy, a w danej, czy jest on np. programowy, czy tylko jest opisem, jak to bywa w szablonach {{Np|Template|link=tak}}, podobnie jest w przypadku {{Np|Module|link=tak}}, czy jak jest w innych przestrzeniach nazw, ** {{Code|dyskusja typu jednostki}} (parametr bazowy) i {{Code|dyskusja typu jednostki i}} (parametr domyślny numerkowy) - i te z numerkiem: {{Code|dyskusja typu jednostki 1}}, {{Code|dyskusja typu jednostki 2}}, ..., gdy chcemy określić wartością niepustą,że chodzi tutaj o typ jednostki. == {{Code|p.CzyNiepoprawnaNazwa(nazwa_jednostki)}} == Funkcja sprawdzajaca, czy jest poprawnie podana nazwa jednostki, czy ma poprawną nazwę. Znakami tymi, z których nie powinna składać się nazwa jest {{Code|<nowiki>{}<>|[]#\n</nowiki>}} i dodatkowo znak {{Code|&#127;}} (kod {{Code|{{Nowiki|&#127;}}}}). Też nie może składać się z trzech znaków tyldy, tzn. {{Code|<nowiki>~~~</nowiki>}}. Również w swojej budowie nie może składać się ze kodów {{Strong|HTML}} literowych o wzorze {{Code|{{Nowiki|&(%a+);}}}}. Natomiast może składać się z {{Code|{{Nowiki|&#(%d+);}}}} i {{Code|{{Nowiki|&#x(%x+);}}}}, ale w pierw te kody muszą być zamienione na normalne znaki. Skrótowa definicja funkcji: <syntaxhighlight lang="lua"> function p.CzyNiepoprawnaNazwa(nazwa_jednostki)...end; </syntaxhighlight> Wtedy ciało funkcji tej, czyli jego definicja w środku, jest: <syntaxhighlight lang="lua"> -- Moduł: "Moduł:Html/dane", służy do ładowania znaku o kodzie HTML "&#127;"; local html_dane_modul=mw.loadData("Module:Html/dane"); return mw.ustring.match(nazwa_jednostki,"[{}<>|%[%]#\n"..html_dane_modul.znak_127.."]+") or mw.ustring.match(nazwa_jednostki,"~~~") or mw.ustring.match(nazwa_jednostki,"&(%a+);"); </syntaxhighlight> Parametry: * {{Code|nazwa_jednostki}} - nazwa jednostki do sprawdzenia. Przykłady: <syntaxhighlight lang="lua"> local pudelko_modul=require("Module:Pudełko"); -- Podana przykładowa niepoprawna nazwa jedostki local nazwa_jednostki="Nazwa pliku [[Nazwa linku w pliku]]"; -- Fukcja zwróci wartość: local czy_poprawna_nazwa=true; local czy_poprawna_nazwa=pudelko_modul.CzyNiepoprawnaNazwa(nazwa_jednostki); </syntaxhighlight> == Funkcje nazw przestrzeni nazw == === {{Code|p["Nazwa przestrzeni nazw"](frame,...)}} === Funkcja pisze nazwę przestrzeni nazw, niezależnie, czy to jest przedmiotowa, czy dyskusji, według podanej w zmiennej {{Code|nazwa przestrzeni nazw}} dla pozycja bazowej w podanych parametrach szablonu rodzicu ramki dziecka, lub dla innej pozycji należy parametr podawać w formie {{Code|nazwa przestrzeni nazw 1}}, {{Code|nazwa przestrzeni nazw 2}}, {{Code|nazwa przestrzeni nazw 3}},..., lub te parametry można podać w postaci ogólnej {{Code|nazwa przestrzeni nazw i}}. Parametry podaje się w parametrach rodzica wywołania tej funkcji {{Code|{{m|Pudełko|Nazwa przestrzeni nazw}}}} (ale ich nie trzeba podawać w dziecku, ale można) i w parametrach dziecka, jeśli chodzi o zmienną {{Code|numer jednostki}}, czyli np.: {{Code|{{m|Pudełko|Nazwa przestrzeni nazw|numer jednostki{{=}}<jakaś liczba całkowita dodatnia>}}}}. Te parametry przestrzenne zamiast w rodzicu w szablonie można podać w ramce dziecka, wtedy parametry dziecka mają pierwszeństwo. Przestrzeń nazw z parametrów nazw przestrzennych może odpowiadać wartości przestrzeni głównej, to wtedy odpowiednia przestrzeń nazw z parametru nazwy jednostki się nie liczy w tej funkcji, aby się liczyła należy użyć funkcji {{Code|{{sr|#p["Nazwa przestrzeni nazw 2"](frame,...)|p=Pudełko}}}}. Definicja skrótowa funkcji: <syntaxhighlight lang="lua"> p["Nazwa przestrzeni nazw"]=function(frame,czy_uwzglednic_alternatywna_nazwe,i)...end; </syntaxhighlight> Wtedy ciało funkcji tej, czyli jego definicja w środku, jest: <syntaxhighlight lang="lua"> -- Jest liczony numer parametru nazwy przestrzeni nazw, domyslnie chodzi tu o numer bazowy parametrów przestrzennych; local numer_jednostki=i or frame.args["numer jednostki"]; local liczba_numer_jednostki=((numer_jednostki)and(tonumber(numer_jednostki))or 0); local pudelko_pomocne_modul=require("Module:Pudełko/Pomocne"); -- Liczy nazwę przestrzeni nazw na podstawie podanych parametrów; return pudelko_pomocne_modul.Nazwa_przestrzeni_nazw(frame,0, czy_uwzglednic_alternatywna_nazwe,liczba_numer_jednostki); </syntaxhighlight> Parametry funkcji: * {{Code|frame}} - tablica ramki tablicy transportu, * {{Code|czy_uwzglednic_alternatywna_nazwe}} - czy ma uwzględniać nazwę przestrzeni nazw domyślną szablonu, dostępne wartości: {{Code|false}}, w której nazwa domyślna nie jest uwzględniana wtedy, oraz {{Code|nil}} i {{Code|true}}, które oznaczają to samo, w tym jeżeli ona jest uwzględniana, wtedy jest brany parametr pierwszy dziecka, który musi istnieć przy takiej wartości tego parametru, tzn. {{Code|{{m|Pudełko|Nazwa przestrzeni nazw|Szablon}}}}, a ten element jest używany, gdy nazwa uzyskana nazwy przestrzeni nazw jest w takim przypadku błędna, a jeżeli wtedy nazwa domyślna jest błędna, czyli {{Code|{{m|Pudełko|Nazwa przestrzeni nazw|Moja przestrzeń}}}}, wtedy funkcja zwraca stan błędu {{Code|(błąd)}}. * {{Code|i}} - numer zmiennej nazwy przestrzeni nazw. Funkcja wykorzystuje {{Code|{{sr|#p.Nazwa_przestrzeni_nazw(frame,...)|p=Pudełko/Pomocne}}}} do wyznaczania ogólnego nazwy przestrzeni nazw dla pozycji bazowej i numerkowej, tzn. dla pozycji: jeden, dwa, trzy,..., itd, i ich ogólnej. Parametr ramki tablicy transportu rodzica szablonu: * {{Code|nazwa przestrzeni nazw}}, {{Code|nazwa przestrzeni nazw 1}}, {{Code|nazwa przestrzeni nazw 2}}, {{Code|nazwa przestrzeni nazw 3}},..., {{Code|nazwa przestrzeni nazw i}} - nazwy przestrzeni nazw dla pozycji bazowej oraz zwykłej i ogólnej numerkowej, * {{Code|typ jednostki}}, {{Code|typ jednostki 1}}, {{Code|typ jednostki 2}}, {{Code|typ jednostki 3}},..., {{Code|typ jednostki i}} - typy jednostek, którym odpowiadają pewne przestrzenie przedmiotowe, dla pozycji bazowej, numerkowej i ogólnej, ** {{Code|dyskusja typu jednostki}}, {{Code|dyskusja typu jednostki 1}}, {{Code|dyskusja typ jednostki 2}}, {{Code|dyskusja typ jednostki 3}},..., {{Code|dyskusja typ jednostki i}} - czy dany typ jednostki ma przedstawiać, jeśli niepusta, przestrzeń dyskusji dla pozycji bazowej, numerkowej i ogólnej. Parametry ramki tablicy transportu dziecka: * Parametry dziecka są takie same jak rodzica dla funkcji pudełkowej plus tu wymienione, * {{Code|numer jednostki}} - jak parametr {{Code|i}} nie został ustawiony, to wtedy liczy się ta zmienna. Przykłady: <syntaxhighlight lang="mediawiki"> {{Nazwa szablonu|nazwa przestrzeni nazw=Wikibooks|nazwa przestrzeni nazw 2=Szablon|nazwa przestrzeni nazw i=Moduł}} </syntaxhighlight> W dziecku powiedzmy jest wywołanie, i szukamy nazwy przestrzeni nazw o numerze dwa, która nie została podana, ale istnieje za to jej wersji ogólna {{Code|nazwa przestrzeni nazw i}} i domyślna {{Code|nazwa przestrzeni nazw}}: <syntaxhighlight lang="mediawiki"> {{#invoke:Pudełko|Nazwa przestrzeni nazw|numer jednostki=1}} </syntaxhighlight> Na podstawie powyższego przykładu otrzymamy wynik o schemacie, nie wyniku, bo tam nie ma zmiennej {{Code|nazwa przestrzeni nazw 1}}, ale jest {{Code|nazwa przestrzeni nazw i}}: <syntaxhighlight lang="mediawiki"> <!-- Ale nie "nazwa przestrzeni nazw", bo jej nie ma, ale za to istnieje "nazwa przestrzeni nazw i"; --> <!-- nazwa przestrzeni nazw 2=nazwa przestrzeni nazw i=Moduł; --> <!-- Czyli wynik: --> Moduł <!-- Widzimy, że wygenerowała się nazwa przestrzeni nazw, którą jest przestrzeń programowa, którą również jest "Szablon"; --> </syntaxhighlight> Nie jest brana w tym powyższym przykładzie zmienna {{Code|nazwa przestrzeni nazw}}, bo jej nie ma, ale za to jest {{Code|nazwa przestrzeni nazw i}}, bo ona występuje jako parametr domyślny ogólny dla parametrów numerkowych. Przykłady w wikikodzie: * {{Code|{{m|Pudełko|Nazwa przestrzeni nazw|numer jednostki{{=}}2}}}} → {{Tt|{{#invoke:Pudełko|Nazwa przestrzeni nazw|numer jednostki=2}}}} * {{Code|{{m|Pudełko|Nazwa przestrzeni nazw|Szablon|nazwa przestrzeni nazw i{{=}}Moja przestrzeń|numer jednostki{{=}}2}}}} → {{Tt|{{#invoke:Pudełko|Nazwa przestrzeni nazw|Szablon|nazwa przestrzeni nazw i=Moja przestrzeń|numer jednostki=2}}}} * {{Code|{{m|Pudełko|Nazwa przestrzeni nazw|nazwa przestrzeni nazw 2{{=}}Szablon|numer jednostki{{=}}2}}}} → {{Tt|{{#invoke:Pudełko|Nazwa przestrzeni nazw|nazwa przestrzeni nazw 2=Szablon|numer jednostki=2}}}} * {{Code|{{m|Pudełko|Nazwa przestrzeni nazw|nazwa przestrzeni nazw 2{{=}}Szablon|numer jednostki{{=}}2}}}} → {{Tt|{{#invoke:Pudełko|Nazwa przestrzeni nazw|nazwa przestrzeni nazw i=Szablon|numer jednostki=2}}}} * {{Code|{{m|Pudełko|Nazwa przestrzeni nazw|nazwa przestrzeni nazw{{=}}Szablon|numer jednostki{{=}}2}}}} → {{Tt|{{#invoke:Pudełko|Nazwa przestrzeni nazw|nazwa przestrzeni nazw=Szablon|numer jednostki=2}}}} Powyżej dla przykładu podano parametry nie w rodzicu w szablonie, tylko w dziecku, jeśli chodzi o parametry nazw przestrzeni nazw, ale ich się za to nie powinno podawać w tych ramach, tylko w szablonach, w których wywoływane są te ramki pudełek {{Code|{{m|Pudełko}}}}, ale tak tutaj tak zrobiono by było najłatwiej sprawdzić działanie tego typu funkcji. Analogicznie możemy podawać parametry typu jednostki, np.: wywołaniu modułowym {{Code|{{m|Pudełko|Nazwa przestrzeni nazw|typ jednostki 2{{=}}strona szablonu|numer jednostki{{=}}2}}}}, ale o tym więcej w rozdziałach {{Code|{{sr|#p["Typ jednostki"](frame,i)|p=Pudełko}}}} w „{{sr|#Funkcje typu jednostki|p=Pudełko}}”, one definiują dane przestrzenie przedmiotowe, czy dyskusji, ale można lub nie użyć parametru dyskusji typu jednostki z wartością niepustą, wtedy wyświetli się nazwa przestrzeni nazw dyskusji. Typ jednostki nie ma takiej samej wartości dla przestrzeni przedmiotowej, co dyskusji. Również parametry typu jednostki nie powinno się podawać w dziecku w ramce, tylko w rodzicu w szablonie jako parametry, w którym ta ramka jest wywoływana, ale tutaj podano jedynie dla przykładu, jak najłatwiej sprawdzić działanie tych parametrów tej funkcji. Najpierw w funkcji nagłówku brane są parametry nazw przestrzeni nazw, a jeżeli ich nie ma, to parametry typu jednostki, a jeżeli nie ma, to generowane są nazwy na podstawie aktualnego modułu. === {{Code|p["Nazwa przedmiotowej przestrzeni nazw"](frame,...)}} === Funkcja pisze przedmiotową nazwę przestrzeni nazw jakikolwiek nazwy przestrzeni nazw (tzn. nazwę przedmiotową nazwy przestrzenie nazw, czyli nie dyskusji, zamieniana jest na nią samą, czyli identyfikator przestrzeni się nie zmienia, a dyskusji, nie przedmiotową, przekształca się na przedmiotową jej odpowiadającą, czyli w tym przypadku identyfikator przestrzeni zmniejsza się o numer mniej), według podanej w zmiennej {{Code|nazwa przestrzeni nazw}} dla pozycja bazowej w podanych parametrach szablonu rodzicu ramki dziecka, lub dla innej pozycji należy parametr podawać w formie {{Code|nazwa przestrzeni nazw 1}}, {{Code|nazwa przestrzeni nazw 2}}, {{Code|nazwa przestrzeni nazw 3}},..., lub te parametry można podać w postaci ogólnej {{Code|nazwa przestrzeni nazw i}}. Parametry podaje się w parametrach rodzica wywołania tej funkcji {{Code|{{m|Pudełko|Nazwa przedmiotowej przestrzeni nazw}}}} (ale ich nie trzeba podawać w dziecku, ale można) i w parametrach dziecka, jeśli chodzi o zmienną {{Code|numer jednostki}}, czyli np.: {{Code|{{m|Pudełko|Nazwa przedmiotowej przestrzeni nazw|numer jednostki{{=}}<jakaś liczba całkowita dodatnia>}}}}. Te parametry przestrzenne zamiast w rodzicu w szablonie można podać w ramce dziecka, wtedy parametry dziecka mają pierwszeństwo. Parametry przestrzenne mogą mogą być podane w postaci przestrzeni przedmiotowej lub dyskusji, ale ta funkcja zawsze ją zamienia na przedmiotową. Przestrzeń nazw z parametrów nazw przestrzennych może odpowiadać wartości przestrzeni głównej, to wtedy odpowiednia przestrzeń nazw z parametru nazwy jednostki się nie liczy w tej funkcji, aby się liczyła należy użyć funkcji {{Code|{{sr|#p["Nazwa przedmiotowej przestrzeni nazw 2"](frame,...)|p=Pudełko}}}}. Definicja skrótowa funkcji: <syntaxhighlight lang="lua"> p["Nazwa przedmiotowej przestrzeni nazw"]=function(frame,czy_uwzglednic_alternatywna_nazwe,i)...end; </syntaxhighlight> Wtedy ciało funkcji tej, czyli jego definicja w środku, jest: <syntaxhighlight lang="lua"> -- Jest liczony numer parametru nazwy przestrzeni nazw, domyslnie chodzi tu o numer bazowy parametrów przestrzennych; local numer_jednostki=i or frame.args["numer jednostki"]; local liczba_numer_jednostki=((numer_jednostki)and(tonumber(numer_jednostki))or 0); local pudelko_pomocne_modul=require("Module:Pudełko/Pomocne"); -- Liczy nazwę przestrzeni nazw przedmiotową na podstawie podanych parametrów; return pudelko_pomocne_modul.Nazwa_przestrzeni_nazw(frame,1, czy_uwzglednic_alternatywna_nazwe,liczba_numer_jednostki); </syntaxhighlight> Parametry funkcji: * {{Code|frame}} - tablica ramki tablicy transportu, * {{Code|czy_uwzglednic_alternatywna_nazwe}} - czy ma uwzględniać nazwę przestrzeni nazw domyślną szablonu, dostępne wartości: {{Code|false}}, w której nazwa domyślna nie jest uwzględniana wtedy, oraz {{Code|nil}} i {{Code|true}}, które oznaczają to samo, w tym jeżeli ona jest uwzględniana, wtedy jest brany parametr pierwszy dziecka, który musi istnieć przy takiej wartości tego parametru, tzn. {{Code|{{m|Pudełko|Nazwa przedmiotowej przestrzeni nazw|Dyskusja szablonu}}}} - ta nazwa domyślna zostanie zamieniona na przedmiotową, a jak ona by była przedmiotowa, to żadnej zamiany, by nie było, a jeśli nazwa uzyskana z nazwy przestrzeni nazw z parametrów przestrzennych jest w takim przypadku błędna, to w takim razie brany jest ten parametr, a jeżeli ta nazwa domyślna jest błędna, czyli {{Code|{{m|Pudełko|Nazwa przedmiotowej przestrzeni nazw|Moja przestrzeń}}}}, wtedy funkcja zwraca stan błędu {{Code|(błąd)}}. * {{Code|i}} - numer zmiennej nazwy przestrzeni nazw. Funkcja wykorzystuje {{Code|{{sr|#p.Nazwa_przestrzeni_nazw(frame,...)|p=Pudełko/Pomocne}}}} do wyznaczania ogólnego nazwy przestrzeni nazw dla pozycji bazowej i numerkowej, tzn. dla pozycji: jeden, dwa, trzy,..., itd, i ich ogólnej. Parametr ramki tablicy transportu rodzica szablonu: * {{Code|nazwa przestrzeni nazw}}, {{Code|nazwa przestrzeni nazw 1}}, {{Code|nazwa przestrzeni nazw 2}}, {{Code|nazwa przestrzeni nazw 3}},..., {{Code|nazwa przestrzeni nazw i}} - nazwy przestrzeni nazw dla pozycji bazowej oraz zwykłej i ogólnej numerkowej, * {{Code|typ jednostki}}, {{Code|typ jednostki 1}}, {{Code|typ jednostki 2}}, {{Code|typ jednostki 3}},..., {{Code|typ jednostki i}} - typy jednostek, którym odpowiadają pewne przestrzenie przedmiotowe, dla pozycji bazowej, numerkowej i ogólnej. Parametry ramki tablicy transportu dziecka: * Parametry dziecka są takie same jak rodzica dla funkcji pudełkowej plus tu wymienione, * {{Code|numer jednostki}} - jak parametr {{Code|i}} nie został ustawiony, to wtedy liczy się ta zmienna. Przykłady: <syntaxhighlight lang="mediawiki"> {{Nazwa szablonu|nazwa przestrzeni nazw=Dyskusja Wikibooks|nazwa przestrzeni nazw 2=Dyskusja szablonu|nazwa przestrzeni nazw i=Dyskusja modułu}} </syntaxhighlight> W dziecku powiedzmy jest wywołanie, i szukamy nazwy przestrzeni nazw o numerze dwa, która nie została podana, ale istnieje za to jej wersji ogólna {{Code|nazwa przestrzeni nazw i}} i domyślna {{Code|nazwa przestrzeni nazw}}: <syntaxhighlight lang="mediawiki"> {{#invoke:Pudełko|Nazwa przedmiotowej przestrzeni nazw|numer jednostki=1}} </syntaxhighlight> Na podstawie powyższego przykładu otrzymamy wynik o schemacie, nie wyniku, bo tam nie ma zmiennej {{Code|nazwa przestrzeni nazw 1}}, ale jest {{Code|nazwa przestrzeni nazw i}}: <syntaxhighlight lang="mediawiki"> <!-- Ale nie "nazwa przestrzeni nazw", bo jej nie ma, ale za to istnieje "nazwa przestrzeni nazw i"; --> <!-- nazwa przestrzeni nazw 2=nazwa przestrzeni nazw i=Dyskusja modułu; --> <!-- Czyli wynik: --> Moduł <!-- Widzimy, że wygenerowała się nazwa przestrzeni nazw, którą jest przestrzeń przedmiotowa programowa przestrzeni dyskusji "Dyskusja modułu", którą również jest "Szablon" jego przestrzeni dyskusji "Dyskusja szablonu", a dla ich przestrzeni przedmiotowej, zamiast dyskusji, to samo przekształca się na to samo; --> </syntaxhighlight> Nie jest brana w tym powyższym przykładzie zmienna {{Code|nazwa przestrzeni nazw}}, bo jej nie ma, ale za to jest {{Code|nazwa przestrzeni nazw i}}, bo ona występuje jako parametr domyślny ogólny dla parametrów numerkowych. Przykłady w wikikodzie: * {{Code|{{m|Pudełko|Nazwa przedmiotowej przestrzeni nazw|numer jednostki{{=}}2}}}} → {{Tt|{{#invoke:Pudełko|Nazwa przedmiotowej przestrzeni nazw|numer jednostki=2}}}} * {{Code|{{m|Pudełko|Nazwa przedmiotowej przestrzeni nazw|Dyskusja szablonu|nazwa przestrzeni nazw i{{=}}Moja przestrzeń|numer jednostki{{=}}2}}}} → {{Tt|{{#invoke:Pudełko|Nazwa przedmiotowej przestrzeni nazw|Dyskusja szablonu|nazwa przestrzeni nazw i=Moja przestrzeń|numer jednostki=2}}}} * {{Code|{{m|Pudełko|Nazwa przedmiotowej przestrzeni nazw|nazwa przestrzeni nazw 2{{=}}Dyskusja szablonu|numer jednostki{{=}}2}}}} → {{Tt|{{#invoke:Pudełko|Nazwa przedmiotowej przestrzeni nazw|nazwa przestrzeni nazw 2=Dyskusja szablonu|numer jednostki=2}}}} * {{Code|{{m|Pudełko|Nazwa przedmiotowej przestrzeni nazw|nazwa przestrzeni nazw 2{{=}}Dyskusja szablonu|numer jednostki{{=}}2}}}} → {{Tt|{{#invoke:Pudełko|Nazwa przedmiotowej przestrzeni nazw|nazwa przestrzeni nazw i=Dyskusja szablonu|numer jednostki=2}}}} * {{Code|{{m|Pudełko|Nazwa przedmiotowej przestrzeni nazw|nazwa przestrzeni nazw{{=}}Dyskusja szablonu|numer jednostki{{=}}2}}}} → {{Tt|{{#invoke:Pudełko|Nazwa przedmiotowej przestrzeni nazw|nazwa przestrzeni nazw=Dyskusja szablonu|numer jednostki=2}}}} Powyżej dla przykładu podano parametry nie w rodzicu w szablonie, tylko w dziecku, jeśli chodzi o parametry nazw przestrzeni nazw, ale ich się za to nie powinno podawać w tych ramach, tylko w szablonach, w których wywoływane są te ramki pudełek {{Code|{{m|Pudełko}}}}, ale tak tutaj tak zrobiono by było najłatwiej sprawdzić działanie tego typu funkcji. Analogicznie możemy podawać parametry typu jednostki, np.: wywołaniu modułowym {{Code|{{m|Pudełko|Nazwa przedmiotowej przestrzeni nazw|typ jednostki 2{{=}}strona szablonu|numer jednostki{{=}}2}}}}, ale o tym więcej w rozdziałach {{Code|{{sr|#p["Przedmiotowy typ jednostki"](frame,i)|p=Pudełko}}}} w „{{sr|#Funkcje typu jednostki|p=Pudełko}}”, one definiują dane przestrzenie przedmiotowe, ale wtedy ta sama nazwa przestrzeni nazw reprezentowana przez typ jednostki jest zamieniony na nazwę przestrzeni przedmiotową, lepiej jest tutaj używać parametrów przestrzennych nazw niż typu jednostki. Typ jednostki nie ma takiej samej wartości dla przestrzeni przedmiotowej, co dyskusji. Tutaj parametr dyskusji typu jednostki bazowy i numerkowy ogólny, czy szczegółowy, nie gra roli, bo nawet, gdy wygenerujemy nazwę przestrzeni dyskusji za pomoca tego parametru, to i tak otrzymamy na samym końcu jego nazwę przedmiotową. Również parametry typu jednostki nie powinno się podawać w dziecku w ramce, tylko w rodzicu w szablonie jako parametry, w którym ta ramka jest wywoływana, ale tutaj podano jedynie dla przykładu, jak najłatwiej sprawdzić działanie tych parametrów tej funkcji. Najpierw w funkcji nagłówku brane są parametry nazw przestrzeni nazw, a jeżeli ich nie ma, to parametry typu jednostki, a jeżeli nie ma, to generowane są nazwy na podstawie aktualnego modułu. === {{Code|p["Nazwa przestrzeni nazw dyskusji"](frame,...)}} === Funkcja pisze nazwę przestrzeni nazw dyskusji jakikolwiek nazwy przestrzeni nazw (tzn. nazwę przedmiotową nazwy przestrzenie nazw, czyli nie dyskusji, zamieniana jest na dyskusji, czyli identyfikator przestrzeni się zmienia jeden wyżej, a dyskusji, nie przedmiotową, przekształca się na tą samą), według podanej w zmiennej {{Code|nazwa przestrzeni nazw}} dla pozycja bazowej w podanych parametrach szablonu rodzicu ramki dziecka, lub dla innej pozycji należy parametr podawać w formie {{Code|nazwa przestrzeni nazw 1}}, {{Code|nazwa przestrzeni nazw 2}}, {{Code|nazwa przestrzeni nazw 3}},..., lub te parametry można podać w postaci ogólnej {{Code|nazwa przestrzeni nazw i}}. Parametry podaje się w parametrach rodzica wywołania tej funkcji {{Code|{{m|Pudełko|Nazwa przestrzeni nazw dyskusji}}}} (ale ich nie trzeba podawać w dziecku, ale można) i w parametrach dziecka, jeśli chodzi o zmienną {{Code|numer jednostki}}, czyli np.: {{Code|{{m|Pudełko|Nazwa przestrzeni nazw dyskusji|numer jednostki{{=}}<jakaś liczba całkowita dodatnia>}}}}. Te parametry przestrzenne zamiast w rodzicu w szablonie można podać w ramce dziecka, wtedy parametry dziecka mają pierwszeństwo. Parametry przestrzenne mogą mogą być podane w postaci przestrzeni przedmiotowej lub dyskusji, ale ta funkcja zawsze ją zamienia na dyskusji. Przestrzeń nazw z parametrów nazw przestrzennych może odpowiadać wartości przestrzeni głównej, to wtedy odpowiednia przestrzeń nazw z parametru nazwy jednostki się nie liczy w tej funkcji, aby się liczyła należy użyć funkcji {{Code|{{sr|#p["Nazwa przestrzeni nazw dyskusji 2"](frame,...)|p=Pudełko}}}}. Definicja skrótowa funkcji: <syntaxhighlight lang="lua"> p["Nazwa przestrzeni nazw dyskusji"]=function(frame,czy_uwzglednic_alternatywna_nazwe,i)...end; </syntaxhighlight> Wtedy ciało funkcji tej, czyli jego definicja w środku, jest: <syntaxhighlight lang="lua"> -- Jest liczony numer parametru nazwy przestrzeni nazw, domyslnie chodzi tu o numer bazowy parametrów przestrzennych; local numer_jednostki=i or frame.args["numer jednostki"]; local liczba_numer_jednostki=((numer_jednostki)and(tonumber(numer_jednostki))or 0); local pudelko_pomocne_modul=require("Module:Pudełko/Pomocne"); -- Liczy nazwę przestrzeni nazw dyskusji na podstawie podanych parametrów; return pudelko_pomocne_modul.Nazwa_przestrzeni_nazw(frame,2, czy_uwzglednic_alternatywna_nazwe,liczba_numer_jednostki); </syntaxhighlight> Parametry funkcji: * {{Code|frame}} - tablica ramki tablicy transportu, * {{Code|czy_uwzglednic_alternatywna_nazwe}} - czy ma uwzględniać nazwę przestrzeni nazw domyślną szablonu, dostępne wartości: {{Code|false}}, w której nazwa domyślna nie jest uwzględniana wtedy, oraz {{Code|nil}} i {{Code|true}}, które oznaczają to samo, w tym jeżeli ona jest uwzględniana, wtedy jest brany parametr pierwszy dziecka, który musi istnieć przy takiej wartości tego parametru, tzn. {{Code|{{m|Pudełko|Nazwa przestrzeni nazw dyskusji|Szablon}}}} - ta nazwa domyślna zostanie przekształcona na dyskusji, a jeżeli ona by była dyskusji, to nie byłoby żadnego przekształcenia, a jeśli nazwa uzyskana nazwy przestrzeni nazw z parametrów przestrzennych jest w takim przypadku błędna, to w takim razie brany jest ten parametr, a jeżeli nazwa domyślna jest błędna, czyli {{Code|{{m|Pudełko|Nazwa przestrzeni nazw dyskusji|Moja przestrzeń}}}}, wtedy funkcja zwraca stan błędu {{Code|(błąd)}}. * {{Code|i}} - numer zmiennej nazwy przestrzeni nazw. Funkcja wykorzystuje {{Code|{{sr|#p.Nazwa_przestrzeni_nazw(frame,...)|p=Pudełko/Pomocne}}}} do wyznaczania ogólnego nazwy przestrzeni nazw dla pozycji bazowej i numerkowej, tzn. dla pozycji: jeden, dwa, trzy,..., itd, i ich ogólnej. Parametr ramki tablicy transportu rodzica szablonu: * {{Code|nazwa przestrzeni nazw}}, {{Code|nazwa przestrzeni nazw 1}}, {{Code|nazwa przestrzeni nazw 2}}, {{Code|nazwa przestrzeni nazw 3}},..., {{Code|nazwa przestrzeni nazw i}} - nazwy przestrzeni nazw dla pozycji bazowej oraz zwykłej i ogólnej numerkowej, * {{Code|typ jednostki}}, {{Code|typ jednostki 1}}, {{Code|typ jednostki 2}}, {{Code|typ jednostki 3}},..., {{Code|typ jednostki i}} - typy jednostek, którym odpowiadają pewne przestrzenie przedmiotowe, dla pozycji bazowej, numerkowej i ogólnej. Parametry ramki tablicy transportu dziecka: * Parametry dziecka są takie same jak rodzica dla funkcji pudełkowej plus tu wymienione, * {{Code|numer jednostki}} - jak parametr {{Code|i}} nie został ustawiony, to wtedy liczy się ta zmienna. Przykłady: <syntaxhighlight lang="mediawiki"> {{Nazwa szablonu|nazwa przestrzeni nazw=Wikibooks|nazwa przestrzeni nazw 2=Szablon|nazwa przestrzeni nazw i=Moduł}} </syntaxhighlight> W dziecku powiedzmy jest wywołanie, i szukamy nazwy przestrzeni nazw o numerze dwa, która nie została podana, ale istnieje za to jej wersji ogólna {{Code|nazwa przestrzeni nazw i}} i domyślna {{Code|nazwa przestrzeni nazw}}: <syntaxhighlight lang="mediawiki"> {{#invoke:Pudełko|Nazwa przestrzeni nazw dyskusji|numer jednostki=1}} </syntaxhighlight> Na podstawie powyższego przykładu otrzymamy wynik o schemacie, nie wyniku, bo tam nie ma zmiennej {{Code|nazwa przestrzeni nazw 1}}, ale jest {{Code|nazwa przestrzeni nazw i}}: <syntaxhighlight lang="mediawiki"> <!-- Ale nie "nazwa przestrzeni nazw", bo jej nie ma, ale za to istnieje "nazwa przestrzeni nazw i"; --> <!-- nazwa przestrzeni nazw 2=nazwa przestrzeni nazw i=Moduł; --> <!-- Czyli wynik: --> Dyskusja modułu <!-- Widzimy, że wygenerowała się nazwa przestrzeni nazw, którą jest przestrzeń dyskusji przestrzeni programowej przestrzeni przedmiotowej "Moduł", którą również jest "Szablon" jego przestrzeni dyskusji "Dyskusja szablonu", a dla ich przestrzeni przedmiotowej, zamiast dyskusji, to przekształca się na dyskusji jej odpowiadającą; --> </syntaxhighlight> Nie jest brana w tym powyższym przykładzie zmienna {{Code|nazwa przestrzeni nazw}}, bo jej nie ma, ale za to jest {{Code|nazwa przestrzeni nazw i}}, bo ona występuje jako parametr domyślny ogólny dla parametrów numerkowych. Przykłady w wikikodzie: * {{Code|{{m|Pudełko|Nazwa przestrzeni nazw dyskusji|numer jednostki{{=}}2}}}} → {{Tt|{{#invoke:Pudełko|Nazwa przestrzeni nazw dyskusji|numer jednostki=2}}}} * {{Code|{{m|Pudełko|Nazwa przestrzeni nazw dyskusji|Szablon|nazwa przestrzeni nazw i{{=}}Moja przestrzeń|numer jednostki{{=}}2}}}} → {{Tt|{{#invoke:Pudełko|Nazwa przestrzeni nazw dyskusji|Szablon|nazwa przestrzeni nazw i=Moja przestrzeń|numer jednostki=2}}}} * {{Code|{{m|Pudełko|Nazwa przestrzeni nazw dyskusji|nazwa przestrzeni nazw 2{{=}}Szablon|numer jednostki{{=}}2}}}} → {{Tt|{{#invoke:Pudełko|Nazwa przestrzeni nazw dyskusji|nazwa przestrzeni nazw 2=Szablon|numer jednostki=2}}}} * {{Code|{{m|Pudełko|Nazwa przestrzeni nazw dyskusji|nazwa przestrzeni nazw 2{{=}}Szablon|numer jednostki{{=}}2}}}} → {{Tt|{{#invoke:Pudełko|Nazwa przestrzeni nazw dyskusji|nazwa przestrzeni nazw i=Szablon|numer jednostki=2}}}} * {{Code|{{m|Pudełko|Nazwa przestrzeni nazw dyskusji|nazwa przestrzeni nazw{{=}}Szablon|numer jednostki{{=}}2}}}} → {{Tt|{{#invoke:Pudełko|Nazwa przestrzeni nazw dyskusji|nazwa przestrzeni nazw=Szablon|numer jednostki=2}}}} Powyżej dla przykładu podano parametry nie w rodzicu w szablonie, tylko w dziecku, jeśli chodzi o parametry nazw przestrzeni nazw, ale ich się za to nie powinno podawać w tych ramach, tylko w szablonach, w których wywoływane są te ramki pudełek {{Code|{{m|Pudełko}}}}, ale tak tutaj tak zrobiono by było najłatwiej sprawdzić działanie tego typu funkcji. Analogicznie możemy podawać parametry typu jednostki, np.: wywołaniu modułowym {{Code|{{m|Pudełko|Nazwa przestrzeni nazw dyskusji|typ jednostki 2{{=}}strona szablonu|numer jednostki{{=}}2}}}}, ale o tym więcej w rozdziałach {{Code|{{sr|#p["Dyskusyjny typ jednostki"](frame,i)|p=Pudełko}}}} w „{{sr|#Funkcje typu jednostki|p=Pudełko}}”, one definiują dane przestrzenie dyskusji, ale wtedy nazwa przestrzeni nazw reprezentowana przez {{Parametr|typ jednostki 2|strona szablonu}}, jest zamieniana na nazwę przestrzeni nazw dyskusji. Parametr dyskusji typu jednostki bazowy lub dla danego numerka ogólny, czy szczegółowy, nie gra roli. Typ jednostki nie ma takiej samej wartości dla przestrzeni przedmiotowej, co dyskusji. Również parametry typu jednostki nie powinno się podawać w dziecku w ramce, tylko w rodzicu w szablonie jako parametry, w którym ta ramka jest wywoływana, ale tutaj podano jedynie dla przykładu, jak najłatwiej sprawdzić działanie tych parametrów tej funkcji. Najpierw w funkcji nagłówku brane są parametry nazw przestrzeni nazw, a jeżeli ich nie ma, to parametry typu jednostki, a jeżeli nie ma, to generowane są nazwy na podstawie aktualnego modułu. == Funkcje nazw przestrzeni nazw drugiej wersji == === {{Code|p["Nazwa przestrzeni nazw 2"](frame,...)}} === Funkcja pisze nazwę przestrzeni nazw, niezależnie, czy to jest przedmiotowa, czy dyskusji, według, i nie zawsze tylko, podanej w zmiennej {{Code|nazwa przestrzeni nazw}} dla pozycja bazowej w podanych parametrach szablonu rodzicu ramki dziecka, lub dla innej pozycji należy parametr podawać w formie {{Code|nazwa przestrzeni nazw 1}}, {{Code|nazwa przestrzeni nazw 2}}, {{Code|nazwa przestrzeni nazw 3}},..., lub te parametry można podać w postaci ogólnej {{Code|nazwa przestrzeni nazw i}}. W tej funkcji trzeba też podawać parametry nazwy jednostek {{Code|nazwa jednostki}}, {{Code|nazwa jednostki 1}}, {{Code|nazwa jednostki 2}}, {{Code|nazwa jednostki 3}},... Parametry podaje się w parametrach rodzica wywołania tej funkcji {{Code|{{m|Pudełko|Nazwa przestrzeni nazw 2}}}} (ale ich nie trzeba podawać w dziecku, ale można) i w parametrach dziecka, jeśli chodzi o zmienną {{Code|numer jednostki}}, czyli np.: {{Code|{{m|Pudełko|Nazwa przestrzeni nazw 2|numer jednostki{{=}}<jakaś liczba całkowita dodatnia>}}}}. Te parametry przestrzenne zamiast w rodzicu w szablonie można podać w ramce dziecka, wtedy parametry dziecka mają pierwszeństwo. Przestrzeń nazw z parametrów nazw przestrzennych może odpowiadać wartości przestrzeni głównej, to wtedy odpowiednia przestrzeń nazw z parametru nazwy jednostki się liczy w tej funkcji, wtedy jest liczona nazwa przestrzeni nazw z tego parametru. Gdy parametry przestrzenne lub typ jednostki w drugim podejściu nie wskazują na przestrzeń główną, to wtedy działanie tej funkcji jest podobne do {{Code|{{sr|#p["Nazwa przestrzeni nazw"](frame,...)|p=Pudełko}}}}. Definicja skrótowa funkcji: <syntaxhighlight lang="lua"> p["Nazwa przestrzeni nazw 2"]=function(frame,czy_uwzglednic_alternatywna_nazwe,i)...end; </syntaxhighlight> Wtedy ciało funkcji tej, czyli jego definicja w środku, jest: <syntaxhighlight lang="lua"> local pudelko_pomocne_modul=require("Module:Pudełko/Pomocne"); -- Liczy nazwę przestrzeni nazw, jeżeli z parametrów przestrzennych przestrzeń wskazuje na główną, to wtedy jest liczona przestrzeń nazw z nazwy jednostki; return pudelko_pomocne_modul.Nazwa_przestrzeni_nazw_2(frame,czy_uwzglednic_alternatywna_nazwe,i) </syntaxhighlight> Parametry funkcji: * {{Code|frame}} - tablica ramki tablicy transportu, * {{Code|czy_uwzglednic_alternatywna_nazwe}} - czy ma uwzględniać nazwę przestrzeni nazw domyślną szablonu, dostępne wartości: {{Code|false}}, w której nazwa domyślna nie jest uwzględniana wtedy, oraz {{Code|nil}} i {{Code|true}}, które oznaczają to samo, w tym jeżeli ona jest uwzględniana, wtedy jest brany parametr pierwszy dziecka, który musi istnieć przy takiej wartości tego parametru, tzn. {{Code|{{m|Pudełko|Nazwa przestrzeni nazw 2|Szablon}}}}, a jeśli nazwa uzyskana nazwy przestrzeni nazw jest w takim przypadku błędna, to brany jest ten element, a jeżeli nazwa domyślna jest błędna, czyli {{Code|{{m|Pudełko|Nazwa przestrzeni nazw 2|Moja przestrzeń}}}}, wtedy funkcja zwraca stan błędu {{Code|(błąd)}}. * {{Code|i}} - numer zmiennej nazwy przestrzeni nazw. Funkcja wykorzystuje {{Code|{{sr|#p.Nazwa_przestrzeni_nazw_2(frame,...)|p=Pudełko/Pomocne}}}} do wyznaczania ogólnego nazwy przestrzeni nazw dla pozycji bazowej i numerkowej, tzn. dla pozycji: jeden, dwa, trzy,..., itd, i ich ogólnej. Parametr ramki tablicy transportu rodzica szablonu: * {{Code|nazwa przestrzeni nazw}}, {{Code|nazwa przestrzeni nazw 1}}, {{Code|nazwa przestrzeni nazw 2}}, {{Code|nazwa przestrzeni nazw 3}},..., {{Code|nazwa przestrzeni nazw i}} - nazwy przestrzeni nazw dla pozycji bazowej oraz zwykłej i ogólnej numerkowej, * {{Code|nazwa jednostki}}, {{Code|nazwa jednostki 1}}, {{Code|nazwa jednostki 2}}, {{Code|nazwa jednostki 3}},... - nazwy jednostek dla pozycji bazowej i numerkowej, * {{Code|typ jednostki}}, {{Code|typ jednostki 1}}, {{Code|typ jednostki 2}}, {{Code|typ jednostki 3}},..., {{Code|typ jednostki i}} - typy jednostek, którym odpowiadają pewne przestrzenie przedmiotowe, dla pozycji bazowej, numerkowej i ogólnej, ** {{Code|dyskusja typu jednostki}}, {{Code|dyskusja typu jednostki 1}}, {{Code|dyskusja typ jednostki 2}}, {{Code|dyskusja typ jednostki 3}},..., {{Code|dyskusja typ jednostki i}} - czy dany typ jednostki ma przedstawiać, jeśli niepusta, przestrzeń dyskusji dla pozycji bazowej, numerkowej i ogólnej. Parametry ramki tablicy transportu dziecka: * Parametry dziecka są takie same jak rodzica dla funkcji pudełkowej plus tu wymienione, * {{Code|numer jednostki}} - jak parametr {{Code|i}} nie został ustawiony, to wtedy liczy się ta zmienna. Przykłady: <syntaxhighlight lang="mediawiki"> {{Nazwa szablonu|nazwa przestrzeni nazw=Wikibooks|nazwa przestrzeni nazw 1=Szablon|nazwa przestrzeni nazw i=|nazwa jednostki 2=Wikibooks:Strona}} </syntaxhighlight> W dziecku powiedzmy jest wywołanie, i szukamy nazwy przestrzeni nazw o numerze dwa, która została podana, ale istnieje za to jej wersji ogólna {{Code|nazwa przestrzeni nazw i}} i domyślna {{Code|nazwa przestrzeni nazw}}, ale wtedy dla tego numerkowego liczy się to ogólne z {{Code| i}}, a ponieważ ta nazwa jest pusta, więc będziemy liczyli nazwę przestrzeni nazw z {{Code|nazwa jednostki 2}}: <syntaxhighlight lang="mediawiki"> {{#invoke:Pudełko|Nazwa przestrzeni nazw 2|numer jednostki=2}} </syntaxhighlight> Na podstawie powyższego przykładu otrzymamy wynik o schemacie, nie wyniku, bo tam nie ma zmiennej {{Code|nazwa przestrzeni nazw 1}}, ale jest {{Code|nazwa przestrzeni nazw i}}: <syntaxhighlight lang="mediawiki"> <!-- Ale nie "nazwa przestrzeni nazw 2", bo jej nie ma, ale za to istnieje "nazwa przestrzeni nazw i"; --> <!-- nazwa przestrzeni nazw 2=nazwa przestrzeni nazw i="", a nazwa jednostki 2="Wikibooks:Strona"; --> <!-- Czyli wynik: --> Wikibooks <!-- Widzimy, że wygenerowała się nazwa przestrzeni nazw, którą jest przestrzeń nieprogramowa, ale projektu, wychodząca z nazwy jednostek w tym przypadku z "nazwa jednostki 2"; --> </syntaxhighlight> Nie jest brana w tym powyższym przykładzie zmienna {{Code|nazwa przestrzeni nazw}}, bo jej nie ma, ale za to jest {{Code|nazwa przestrzeni nazw i}}, bo ona występuje jako parametr domyślny ogólny dla parametrów numerkowych. Tytaj jest używana jest zmienna {{Code|nazwa jednostki 2}} do wygenerowania ostatecznego wyniku, bo jak można zauważyć, parametry przestrzenne wskazują na przestrzeń główną, a nazwy jednostek już nie. Przykłady w wikikodzie: * {{Code|{{m|Pudełko|Nazwa przestrzeni nazw 2|numer jednostki{{=}}2}}}} → {{Tt|{{#invoke:Pudełko|Nazwa przestrzeni nazw 2|numer jednostki=2}}}} * {{Code|{{m|Pudełko|Nazwa przestrzeni nazw 2|Szablon|nazwa przestrzeni nazw i{{=}}Moja przestrzeń|numer jednostki{{=}}2}}}} → {{Tt|{{#invoke:Pudełko|Nazwa przestrzeni nazw 2|Szablon|nazwa przestrzeni nazw i=Moja przestrzeń|numer jednostki=2}}}} * {{Code|{{m|Pudełko|Nazwa przestrzeni nazw 2|nazwa przestrzeni nazw 2{{=}}|nazwa jednostki 2{{=}}Szablon:Strona|numer jednostki{{=}}2}}}} → {{Tt|{{#invoke:Pudełko|Nazwa przestrzeni nazw 2|nazwa przestrzeni nazw 2=|nazwa jednostki 2=Szablon:Strona|numer jednostki=2}}}} * {{Code|{{m|Pudełko|Nazwa przestrzeni nazw 2|nazwa przestrzeni nazw i{{=}}|nazwa jednostki 2{{=}}Szablon:Strona|numer jednostki{{=}}2}}}} → {{Tt|{{#invoke:Pudełko|Nazwa przestrzeni nazw 2|nazwa przestrzeni nazw i=|nazwa jednostki 2=Szablon:Strona|numer jednostki=2}}}} * {{Code|{{m|Pudełko|Nazwa przestrzeni nazw 2|Szablon|nazwa przestrzeni nazw{{=}}|nazwa jednostki 2{{=}}Wikibooks:Strona|numer jednostki{{=}}2}}}} → {{Tt|{{#invoke:Pudełko|Nazwa przestrzeni nazw 2|Szablon|nazwa przestrzeni nazw=|nazwa jednostki 2=Wikibooks:Strona|numer jednostki=2}}}} Powyżej dla przykładu podano parametry nie w rodzicu w szablonie, tylko w dziecku, jeśli chodzi o parametry nazw przestrzeni nazw i nazw jednostek, ale ich się za to nie powinno podawać w tych ramach, tylko w szablonach, w których wywoływane są te ramki pudełek {{Code|{{m|Pudełko}}}}, ale tak tutaj tak zrobiono by było najłatwiej sprawdzić działanie tego typu funkcji. Analogicznie możemy podawać parametry typu jednostki, np.: wywołaniu modułowym {{Code|{{m|Pudełko|Nazwa przestrzeni nazw 2|typ jednostki 2{{=}}Podręcznik|nazwa jednostki 2{{=}}Szablon:Strona|numer jednostki{{=}}2}}}} (ale wtedy jest brana przestrzeń nazw z nazwy jednostki), ale o tym więcej w rozdziałach {{Code|{{sr|#p["Typ jednostki 2"](frame,i)|p=Pudełko}}}} w „{{sr|#Funkcje typu jednostki|p=Pudełko}}”, one definiują dane przestrzenie przedmiotowe, czy dyskusji ale można lub nie użyć parametru dyskusji typu jednostki z wartością niepustą, wtedy wyświetli się nazwa przestrzeni nazw dyskusji. Jeżeli typ jednostki wskazuje na przestrzeń nazw główną, wtedy się liczą parametry nazw jednostek. Typ jednostki nie ma takiej samej wartości dla przestrzeni przedmiotowej, co dyskusji. Również parametry typu jednostki nie powinno się podawać w dziecku w ramce, tylko w rodzicu w szablonie jako parametry, w którym ta ramka jest wywoływana, ale tutaj podano jedynie dla przykładu, jak najłatwiej sprawdzić działanie tych parametrów tej funkcji. Najpierw w funkcji nagłówku brane są parametry nazw przestrzeni nazw, a jeżeli ich nie ma, to parametry typu jednostki, a jeżeli nie ma lub parametry przestrzenne wskazują na przestrzeń główną, i nie ma nazwy jednostki, to generowane są nazwy tej funkcji na podstawie aktualnej strony. === {{Code|p["Nazwa przedmiotowej przestrzeni nazw 2"](frame,...)}} === Funkcja pisze przedmiotową nazwę przestrzeni nazw jakikolwiek nazwy przestrzeni nazw (tzn. nazwę przedmiotową nazwy przestrzenie nazw, czyli nie dyskusji, zamieniana jest na nią samą, czyli identyfikator przestrzeni się nie zmienia, a dyskusji, nie przedmiotową, przekształca się na przedmiotową jej odpowiadającą, czyli w tym przypadku identyfikator przestrzeni zmniejsza się o numer mniej), według, i nie zawsze tylko, podanej w zmiennej {{Code|nazwa przestrzeni nazw}} dla pozycja bazowej w podanych parametrach szablonu rodzicu ramki dziecka, lub dla innej pozycji należy parametr podawać w formie {{Code|nazwa przestrzeni nazw 1}}, {{Code|nazwa przestrzeni nazw 2}}, {{Code|nazwa przestrzeni nazw 3}},..., lub te parametry można podać w postaci ogólnej {{Code|nazwa przestrzeni nazw i}}. W tej funkcji trzeba też podawać parametry nazwy jednostek {{Code|nazwa jednostki}}, {{Code|nazwa jednostki 1}}, {{Code|nazwa jednostki 2}}, {{Code|nazwa jednostki 3}},... Parametry podaje się w parametrach rodzica wywołania tej funkcji {{Code|{{m|Pudełko|Nazwa przedmiotowej przestrzeni nazw 2}}}} (ale ich nie trzeba podawać w dziecku, ale można) i w parametrach dziecka, jeśli chodzi o zmienną {{Code|numer jednostki}}, czyli np.: {{Code|{{m|Pudełko|Nazwa przedmiotowej przestrzeni nazw 2|numer jednostki{{=}}<jakaś liczba całkowita dodatnia>}}}}. Te parametry przestrzenne zamiast w rodzicu w szablonie można podać w ramce dziecka, wtedy parametry dziecka mają pierwszeństwo. Przestrzeń nazw z parametrów nazw przestrzennych po przekształceniu na przedmiotową może odpowiadać wartości przestrzeni głównej, to wtedy odpowiednia przestrzeń nazw z parametru nazwy jednostki się liczy w tej funkcji, wtedy jest liczona nazwa przestrzeni nazw z tego parametru. Gdy parametry przestrzenne lub typ jednostki w drugim podejściu nie wskazują na przestrzeń główną, to wtedy działanie tej funkcji jest podobne do {{Code|{{sr|#p["Nazwa przedmiotowej przestrzeni nazw"](frame,...)|p=Pudełko}}}}. Definicja skrótowa funkcji: <syntaxhighlight lang="lua"> p["Nazwa przedmiotowej przestrzeni nazw 2"]=function(frame,czy_uwzglednic_alternatywna_nazwe,i)...end; </syntaxhighlight> Wtedy ciało funkcji tej, czyli jego definicja w środku, jest: <syntaxhighlight lang="lua"> local pudelko_pomocne_modul=require("Module:Pudełko/Pomocne"); return pudelko_pomocne_modul.Nazwa_przestrzeni_nazw_przedmiotowa_dyskusji_2(frame,czy_uwzglednic_alternatywna_nazwe,i,"przedmiotowa"); </syntaxhighlight> Parametry funkcji: * {{Code|frame}} - tablica ramki tablicy transportu, * {{Code|czy_uwzglednic_alternatywna_nazwe}} - czy ma uwzględniać nazwę przestrzeni nazw domyślną szablonu, dostępne wartości: {{Code|false}}, w której nazwa domyślna nie jest uwzględniana wtedy, oraz {{Code|nil}} i {{Code|true}}, które oznaczają to samo, w tym jeżeli ona jest uwzględniana, wtedy jest brany parametr pierwszy dziecka, który musi istnieć przy takiej wartości tego parametru, tzn. {{Code|{{m|Pudełko|Nazwa przedmiotowej przestrzeni nazw 2|Szablon}}}}, nazwa domyślna zostanie zamieniona na przedmiotową, a jeżeli jest już taka, to żadnej zamiany nie ma, a jeśli nazwa uzyskana nazwy przestrzeni nazw jest w takim przypadku błędna, to brany jest ten element, a jeżeli nazwa domyślna jest błędna, czyli {{Code|{{m|Pudełko|Nazwa przedmiotowej przestrzeni nazw 2|Moja przestrzeń}}}}, wtedy funkcja zwraca stan błędu {{Code|(błąd)}}. * {{Code|i}} - numer zmiennej nazwy przestrzeni nazw. Funkcja wykorzystuje {{Code|{{sr|#p.Nazwa_przestrzeni_nazw_przedmiotowa_dyskusji_2(frame,...)|p=Pudełko/Pomocne}}}} do wyznaczania ogólnego nazwy przestrzeni nazw dla pozycji bazowej i numerkowej, tzn. dla pozycji: jeden, dwa, trzy,..., itd, i ich ogólnej. Parametr ramki tablicy transportu rodzica szablonu: * {{Code|nazwa przestrzeni nazw}}, {{Code|nazwa przestrzeni nazw 1}}, {{Code|nazwa przestrzeni nazw 2}}, {{Code|nazwa przestrzeni nazw 3}},..., {{Code|nazwa przestrzeni nazw i}} - nazwy przestrzeni nazw dla pozycji bazowej oraz zwykłej i ogólnej numerkowej, * {{Code|nazwa jednostki}}, {{Code|nazwa jednostki 1}}, {{Code|nazwa jednostki 2}}, {{Code|nazwa jednostki 3}},... - nazwy jednostek dla pozycji bazowej i numerkowej, * {{Code|typ jednostki}}, {{Code|typ jednostki 1}}, {{Code|typ jednostki 2}}, {{Code|typ jednostki 3}},..., {{Code|typ jednostki i}} - typy jednostek, którym odpowiadają pewne przestrzenie przedmiotowe, dla pozycji bazowej, numerkowej i ogólnej. Parametry ramki tablicy transportu dziecka: * Parametry dziecka są takie same jak rodzica dla funkcji pudełkowej plus tu wymienione, * {{Code|numer jednostki}} - jak parametr {{Code|i}} nie został ustawiony, to wtedy liczy się ta zmienna. Przykłady: <syntaxhighlight lang="mediawiki"> {{Nazwa szablonu|nazwa przestrzeni nazw=Wikibooks|nazwa przestrzeni nazw 1=Szablon|nazwa przestrzeni nazw i=|nazwa jednostki 2=Dyskusja Wikibooks:Strona}} </syntaxhighlight> W dziecku powiedzmy jest wywołanie, i szukamy nazwy przestrzeni nazw o numerze dwa, która została podana, ale istnieje za to jej wersji ogólna {{Code|nazwa przestrzeni nazw i}} i domyślna {{Code|nazwa przestrzeni nazw}}, ale wtedy dla tego numerkowego liczy się to ogólne z {{Code| i}}, a ponieważ ta nazwa jest pusta, więc będziemy liczyli nazwę przestrzeni nazw z {{Code|nazwa jednostki 2}}: <syntaxhighlight lang="mediawiki"> {{#invoke:Pudełko|Nazwa przedmiotowej przestrzeni nazw 2|numer jednostki=2}} </syntaxhighlight> Na podstawie powyższego przykładu otrzymamy wynik o schemacie, nie wyniku, bo tam nie ma zmiennej {{Code|nazwa przestrzeni nazw 1}}, ale jest {{Code|nazwa przestrzeni nazw i}}: <syntaxhighlight lang="mediawiki"> <!-- Ale nie "nazwa przestrzeni nazw 2", bo jej nie ma, ale za to istnieje "nazwa przestrzeni nazw i"; --> <!-- nazwa przestrzeni nazw 2=nazwa przestrzeni nazw i="", a nazwa jednostki 2="Dyskusja Wikibooks:Strona"; --> <!-- Czyli wynik: --> Wikibooks <!-- Widzimy, że wygenerowała się nazwa przestrzeni nazw, którą jest przestrzeń nieprogramowa, ale projektu, wychodząca z nazwy jednostek w tym przypadku z "nazwa jednostki 2"; --> </syntaxhighlight> Nie jest brana w tym powyższym przykładzie zmienna {{Code|nazwa przestrzeni nazw}}, bo jej nie ma, ale za to jest {{Code|nazwa przestrzeni nazw i}}, bo ona występuje jako parametr domyślny ogólny dla parametrów numerkowych. Tytaj jest używana jest zmienna {{Code|nazwa jednostki 2}} do wygenerowania ostatecznego wyniku, bo jak można zauważyć, parametry przestrzenne wskazują na przestrzeń główną, a nazwy jednostek już nie. Przykłady w wikikodzie: * {{Code|{{m|Pudełko|Nazwa przedmiotowej przestrzeni nazw 2|numer jednostki{{=}}2}}}} → {{Tt|{{#invoke:Pudełko|Nazwa przedmiotowej przestrzeni nazw 2|numer jednostki=2}}}} * {{Code|{{m|Pudełko|Nazwa przedmiotowej przestrzeni nazw 2|Dyskusja szablonu|nazwa przestrzeni nazw i{{=}}Moja przestrzeń|numer jednostki{{=}}2}}}} → {{Tt|{{#invoke:Pudełko|Nazwa przedmiotowej przestrzeni nazw 2|Dyskusja szablonu|nazwa przestrzeni nazw i=Moja przestrzeń|numer jednostki=2}}}} * {{Code|{{m|Pudełko|Nazwa przedmiotowej przestrzeni nazw 2|nazwa przestrzeni nazw 2{{=}}Dyskusja|nazwa jednostki 2{{=}}Dyskusja szablonu:Strona|numer jednostki{{=}}2}}}} → {{Tt|{{#invoke:Pudełko|Nazwa przedmiotowej przestrzeni nazw 2|nazwa przestrzeni nazw 2=Dyskusja|nazwa jednostki 2=Dyskusja szablonu:Strona|numer jednostki=2}}}} * {{Code|{{m|Pudełko|Nazwa przedmiotowej przestrzeni nazw 2|nazwa przestrzeni nazw i{{=}}Dyskusja|nazwa jednostki 2{{=}}Dyskusja szablonu:Strona|numer jednostki{{=}}2}}}} → {{Tt|{{#invoke:Pudełko|Nazwa przedmiotowej przestrzeni nazw 2|nazwa przestrzeni nazw i=Dyskusja|nazwa jednostki 2=Dyskusja szablonu:Strona|numer jednostki=2}}}} * {{Code|{{m|Pudełko|Nazwa przedmiotowej przestrzeni nazw 2|Dyskusja szablonu|nazwa przestrzeni nazw{{=}}Dyskusja|nazwa jednostki 2{{=}}Wikibooks:Strona|numer jednostki{{=}}2}}}} → {{Tt|{{#invoke:Pudełko|Nazwa przedmiotowej przestrzeni nazw 2|Dyskusja szablonu|nazwa przestrzeni nazw=Dyskusja|nazwa jednostki 2=Dyskusja Wikibooks:Strona|numer jednostki=2}}}} Powyżej dla przykładu podano parametry nie w rodzicu w szablonie, tylko w dziecku, jeśli chodzi o parametry nazw przestrzeni nazw i nazw jednostek, ale ich się za to nie powinno podawać w tych ramach, tylko w szablonach, w których wywoływane są te ramki pudełek {{Code|{{m|Pudełko}}}}, ale tak tutaj tak zrobiono by było najłatwiej sprawdzić działanie tego typu funkcji. Analogicznie możemy podawać parametry typu jednostki, np.: wywołaniu modułowym {{Code|{{m|Pudełko|Nazwa przedmiotowej przestrzeni nazw 2|typ jednostki 2{{=}}Podręcznik|nazwa jednostki 2{{=}}Dyskusja szablonu:Strona|numer jednostki{{=}}2}}}} (ale wtedy jest brana przestrzeń nazw z nazwy jednostki), ale o tym więcej w rozdziałach {{Code|{{sr|#p["Przedmiotowy typ jednostki 2"](frame,i)|p=Pudełko}}}} w „{{sr|#Funkcje typu jednostki|p=Pudełko}}”, one definiują dane przestrzenie przedmiotowe, ale można użyć parametru dyskusji typu jednostki z wartością niepustą, pustą, czy nawet jej nie podamy, wtedy wyświetli się nazwa przestrzeni nazw przedmiotowej. Jeżeli typ jednostki wskazuje na przestrzeń nazw główną, wtedy się liczą parametry nazw jednostek. Typ jednostki nie ma takiej samej wartości dla przestrzeni przedmiotowej, co dyskusji. Również parametry typu jednostki nie powinno się podawać w dziecku w ramce, tylko w rodzicu w szablonie jako parametry, w którym ta ramka jest wywoływana, ale tutaj podano jedynie dla przykładu, jak najłatwiej sprawdzić działanie tych parametrów tej funkcji. Najpierw w funkcji nagłówku brane są parametry nazw przestrzeni nazw, a jeżeli ich nie ma, to parametry typu jednostki, a jeżeli nie ma lub parametry przestrzenne wskazują na przestrzeń główną, i nie ma nazwy jednostki, to generowane są nazwy tej funkcji na podstawie aktualnej strony. === {{Code|p["Nazwa przestrzeni nazw dyskusji 2"](frame,...)}} === Funkcja pisze nazwę przestrzeni nazw dyskusji jakikolwiek nazwy przestrzeni nazw (tzn. nazwę dyskusji nazwy przestrzenie nazw, czyli nie przedmiotowej, zamieniana jest na nią samą, czyli identyfikator przestrzeni się nie zmienia, a przedmiotową, nie dyskusji, przekształca się na dyskusji jej odpowiadającą, czyli w tym przypadku identyfikator przestrzeni zwiększa się o numer więcej), według, i nie zawsze tylko, podanej w zmiennej {{Code|nazwa przestrzeni nazw}} dla pozycja bazowej w podanych parametrach szablonu rodzicu ramki dziecka, lub dla innej pozycji należy parametr podawać w formie {{Code|nazwa przestrzeni nazw 1}}, {{Code|nazwa przestrzeni nazw 2}}, {{Code|nazwa przestrzeni nazw 3}},..., lub te parametry można podać w postaci ogólnej {{Code|nazwa przestrzeni nazw i}}. W tej funkcji trzeba też podawać parametry nazwy jednostek {{Code|nazwa jednostki}}, {{Code|nazwa jednostki 1}}, {{Code|nazwa jednostki 2}}, {{Code|nazwa jednostki 3}},... Parametry podaje się w parametrach rodzica wywołania tej funkcji {{Code|{{m|Pudełko|Nazwa przestrzeni nazw dyskusji 2}}}} (ale ich nie trzeba podawać w dziecku, ale można) i w parametrach dziecka, jeśli chodzi o zmienną {{Code|numer jednostki}}, czyli np.: {{Code|{{m|Pudełko|Nazwa przestrzeni nazw dyskusji 2|numer jednostki{{=}}<jakaś liczba całkowita dodatnia>}}}}. Te parametry przestrzenne zamiast w rodzicu w szablonie można podać w ramce dziecka, wtedy parametry dziecka mają pierwszeństwo. Przestrzeń nazw z parametrów nazw przestrzennych po przekształceniu może odpowiadać wartości przestrzeni głównej, to wtedy odpowiednia przestrzeń nazw z parametru nazwy jednostki się liczy w tej funkcji, wtedy jest liczona nazwa przestrzeni nazw dyskusji z tego parametru. Gdy parametry przestrzenne lub typ jednostki w drugim podejściu nie wskazują na przestrzeń główną, to wtedy działanie tej funkcji jest podobne do {{Code|{{sr|#p["Nazwa dyskusji przestrzeni nazw"](frame,...)|p=Pudełko}}}}. Definicja skrótowa funkcji: <syntaxhighlight lang="lua"> p["Nazwa przestrzeni nazw dyskusji 2"]=function(frame,czy_uwzglednic_alternatywna_nazwe,i)...end; </syntaxhighlight> Wtedy ciało funkcji tej, czyli jego definicja w środku, jest: <syntaxhighlight lang="lua"> local pudelko_pomocne_modul=require("Module:Pudełko/Pomocne"); return pudelko_pomocne_modul.Nazwa_przestrzeni_nazw_przedmiotowa_dyskusji_2(frame,czy_uwzglednic_alternatywna_nazwe,i,"dyskusja"); </syntaxhighlight> Parametry funkcji: * {{Code|frame}} - tablica ramki tablicy transportu, * {{Code|czy_uwzglednic_alternatywna_nazwe}} - czy ma uwzględniać nazwę przestrzeni nazw domyślną szablonu, dostępne wartości: {{Code|false}}, w której nazwa domyślna nie jest uwzględniana wtedy, oraz {{Code|nil}} i {{Code|true}}, które oznaczają to samo, w tym jeżeli ona jest uwzględniana, wtedy jest brany parametr pierwszy dziecka, który musi istnieć przy takiej wartości tego parametru, tzn. {{Code|{{m|Pudełko|Nazwa przestrzeni nazw dyskusji 2|Szablon}}}}, nazwa domyślna zostanie zamieniona na dyskusji, a jeżeli jest już taka, to nie ma takiej zamiany, a jeśli nazwa uzyskana nazwy przestrzeni nazw jest w takim przypadku błędna, to brany jest ten element, a jeżeli nazwa domyślna jest błędna, czyli {{Code|{{m|Pudełko|Nazwa przestrzeni nazw dyskusji 2|Moja przestrzeń}}}}, wtedy funkcja zwraca stan błędu {{Code|(błąd)}}. * {{Code|i}} - numer zmiennej nazwy przestrzeni nazw. Funkcja wykorzystuje {{Code|{{sr|#p.Nazwa_przestrzeni_nazw_przedmiotowa_dyskusji_2(frame,...)|p=Pudełko/Pomocne}}}} do wyznaczania ogólnego nazwy przestrzeni nazw dla pozycji bazowej i numerkowej, tzn. dla pozycji: jeden, dwa, trzy,..., itd, i ich ogólnej. Parametr ramki tablicy transportu rodzica szablonu: * {{Code|nazwa przestrzeni nazw}}, {{Code|nazwa przestrzeni nazw 1}}, {{Code|nazwa przestrzeni nazw 2}}, {{Code|nazwa przestrzeni nazw 3}},..., {{Code|nazwa przestrzeni nazw i}} - nazwy przestrzeni nazw dla pozycji bazowej oraz zwykłej i ogólnej numerkowej, * {{Code|nazwa jednostki}}, {{Code|nazwa jednostki 1}}, {{Code|nazwa jednostki 2}}, {{Code|nazwa jednostki 3}},... - nazwy jednostek dla pozycji bazowej i numerkowej, * {{Code|typ jednostki}}, {{Code|typ jednostki 1}}, {{Code|typ jednostki 2}}, {{Code|typ jednostki 3}},..., {{Code|typ jednostki i}} - typy jednostek, którym odpowiadają pewne przestrzenie przedmiotowe, dla pozycji bazowej, numerkowej i ogólnej. Parametry ramki tablicy transportu dziecka: * Parametry dziecka są takie same jak rodzica dla funkcji pudełkowej plus tu wymienione, * {{Code|numer jednostki}} - jak parametr {{Code|i}} nie został ustawiony, to wtedy liczy się ta zmienna. Przykłady: <syntaxhighlight lang="mediawiki"> {{Nazwa szablonu|nazwa przestrzeni nazw=Wikibooks|nazwa przestrzeni nazw 1=Szablon|nazwa przestrzeni nazw i=|nazwa jednostki 2=Wikibooks:Strona}} </syntaxhighlight> W dziecku powiedzmy jest wywołanie, i szukamy nazwy przestrzeni nazw o numerze dwa, która została podana, ale istnieje za to jej wersji ogólna {{Code|nazwa przestrzeni nazw i}} i domyślna {{Code|nazwa przestrzeni nazw}}, ale wtedy dla tego numerkowego liczy się to ogólne z {{Code| i}}, a ponieważ ta nazwa jest pusta, więc będziemy liczyli nazwę przestrzeni nazw z {{Code|nazwa jednostki 2}}: <syntaxhighlight lang="mediawiki"> {{#invoke:Pudełko|Nazwa przestrzeni nazw dyskusji 2|numer jednostki=2}} </syntaxhighlight> Na podstawie powyższego przykładu otrzymamy wynik o schemacie, nie wyniku, bo tam nie ma zmiennej {{Code|nazwa przestrzeni nazw 1}}, ale jest {{Code|nazwa przestrzeni nazw i}}: <syntaxhighlight lang="mediawiki"> <!-- Ale nie "nazwa przestrzeni nazw 2", bo jej nie ma, ale za to istnieje "nazwa przestrzeni nazw i"; --> <!-- nazwa przestrzeni nazw 2=nazwa przestrzeni nazw i="", a nazwa jednostki 2="Wikibooks:Strona"; --> <!-- Czyli wynik: --> Dyskusja Wikibooks <!-- Widzimy, że wygenerowała się nazwa przestrzeni nazw, którą jest przestrzeń nieprogramowa, ale dyskusji projektu, wychodząca z nazwy jednostek w tym przypadku z "nazwa jednostki 2"; --> </syntaxhighlight> Nie jest brana w tym powyższym przykładzie zmienna {{Code|nazwa przestrzeni nazw}}, bo jej nie ma, ale za to jest {{Code|nazwa przestrzeni nazw i}}, bo ona występuje jako parametr domyślny ogólny dla parametrów numerkowych. Tytaj jest używana jest zmienna {{Code|nazwa jednostki 2}} do wygenerowania ostatecznego wyniku, bo jak można zauważyć, parametry przestrzenne wskazują na przestrzeń główną, a nazwy jednostek już nie. Przykłady w wikikodzie: * {{Code|{{m|Pudełko|Nazwa przestrzeni nazw dyskusji 2|numer jednostki{{=}}2}}}} → {{Tt|{{#invoke:Pudełko|Nazwa przestrzeni nazw dyskusji 2|numer jednostki=2}}}} * {{Code|{{m|Pudełko|Nazwa przestrzeni nazw dyskusji 2|Szablon|nazwa przestrzeni nazw i{{=}}Moja przestrzeń|numer jednostki{{=}}2}}}} → {{Tt|{{#invoke:Pudełko|Nazwa przestrzeni nazw dyskusji 2|Szablon|nazwa przestrzeni nazw i=Moja przestrzeń|numer jednostki=2}}}} * {{Code|{{m|Pudełko|Nazwa przestrzeni nazw dyskusji 2|nazwa przestrzeni nazw 2{{=}}|nazwa jednostki 2{{=}}Szablon:Strona|numer jednostki{{=}}2}}}} → {{Tt|{{#invoke:Pudełko|Nazwa przestrzeni nazw dyskusji 2|nazwa przestrzeni nazw 2=|nazwa jednostki 2=Szablon:Strona|numer jednostki=2}}}} * {{Code|{{m|Pudełko|Nazwa przestrzeni nazw dyskusji 2|nazwa przestrzeni nazw i{{=}}|nazwa jednostki 2{{=}}Szablon:Strona|numer jednostki{{=}}2}}}} → {{Tt|{{#invoke:Pudełko|Nazwa przestrzeni nazw dyskusji 2|nazwa przestrzeni nazw i=|nazwa jednostki 2=Szablon:Strona|numer jednostki=2}}}} * {{Code|{{m|Pudełko|Nazwa przestrzeni nazw dyskusji 2|Szablon|nazwa przestrzeni nazw{{=}}|nazwa jednostki 2{{=}}Wikibooks:Strona|numer jednostki{{=}}2}}}} → {{Tt|{{#invoke:Pudełko|Nazwa przestrzeni nazw dyskusji 2|Szablon|nazwa przestrzeni nazw=|nazwa jednostki 2=Dyskusja Wikibooks:Strona|numer jednostki=2}}}} Powyżej dla przykładu podano parametry nie w rodzicu w szablonie, tylko w dziecku, jeśli chodzi o parametry nazw przestrzeni nazw i nazw jednostek, ale ich się za to nie powinno podawać w tych ramach, tylko w szablonach, w których wywoływane są te ramki pudełek {{Code|{{m|Pudełko}}}}, ale tak tutaj tak zrobiono by było najłatwiej sprawdzić działanie tego typu funkcji. Analogicznie możemy podawać parametry typu jednostki, np.: wywołaniu modułowym {{Code|{{m|Pudełko|Nazwa przestrzeni nazw dyskusji 2|typ jednostki 2{{=}}Podręcznik|nazwa jednostki 2{{=}}Szablon:Strona|numer jednostki{{=}}2}}}} (ale wtedy jest brana przestrzeń nazw z nazwy jednostki), ale o tym więcej w rozdziałach {{Code|{{sr|#p["Dyskusyjny typ jednostki 3"](frame,i)|p=Pudełko}}}} w „{{sr|#Funkcje typu jednostki|p=Pudełko}}”, one definiują dane przestrzenie dyskusji, ale można użyć parametru dyskusji typu jednostki z obojętnie jaką wartością niepustą, czy pustą, czy nawet jej nie podamy, wtedy wyświetli się nazwa przestrzeni nazw dyskusji. Jeżeli typ jednostki wskazuje na przestrzeń nazw główną, wtedy się liczą parametry nazw jednostek. Typ jednostki nie ma takiej samej wartości dla przestrzeni przedmiotowej, co dyskusji. Również parametry typu jednostki nie powinno się podawać w dziecku w ramce, tylko w rodzicu w szablonie jako parametry, w którym ta ramka jest wywoływana, ale tutaj podano jedynie dla przykładu, jak najłatwiej sprawdzić działanie tych parametrów tej funkcji. Najpierw w funkcji nagłówku brane są parametry nazw przestrzeni nazw, a jeżeli ich nie ma, to parametry typu jednostki, a jeżeli nie ma lub parametry przestrzenne wskazują na przestrzeń główną, i nie ma nazwy jednostki, to generowane są nazwy tej funkcji na podstawie aktualnej strony. == Funkcje nazw przestrzeni nazw trzeciej wersji == === {{Code|p["Nazwa przestrzeni nazw 3"](frame,i)}} === Funkcja pisze nazwę przestrzeni nazw, niezależnie, czy to jest przedmiotowa, czy dyskusji, według, i nie zawsze tylko, podanej w zmiennej {{Code|nazwa przestrzeni nazw}} dla pozycja bazowej w podanych parametrach szablonu rodzicu ramki dziecka, lub dla innej pozycji należy parametr podawać w formie {{Code|nazwa przestrzeni nazw 1}}, {{Code|Nazwa przestrzeni nazw 3}}, {{Code|nazwa przestrzeni nazw 3}},..., lub te parametry można podać w postaci ogólnej {{Code|nazwa przestrzeni nazw i}}. W tej funkcji trzeba też podawać parametry nazwy jednostek {{Code|nazwa jednostki}}, {{Code|nazwa jednostki 1}}, {{Code|nazwa jednostki 2}}, {{Code|nazwa jednostki 3}},... Parametry podaje się w parametrach rodzica wywołania tej funkcji {{Code|{{m|Pudełko|Nazwa przestrzeni nazw 3}}}} (ale ich nie trzeba podawać w dziecku, ale można) i w parametrach dziecka, jeśli chodzi o zmienną {{Code|numer jednostki}}, czyli np.: {{Code|{{m|Pudełko|Nazwa przestrzeni nazw 3|numer jednostki{{=}}<jakaś liczba całkowita dodatnia>}}}}. Te parametry przestrzenne zamiast w rodzicu w szablonie można podać w ramce dziecka, wtedy parametry dziecka mają pierwszeństwo. Przestrzeń nazw z parametrów nazw przestrzennych bazowych (bez numerka) może odpowiadać wartości przestrzeni głównej, to wtedy odpowiednia przestrzeń nazw z parametru nazwy jednostki się nie liczy w tej funkcji, aby się liczyła należy użyć funkcji {{Code|{{sr|#p["Nazwa przestrzeni nazw 2"](frame,...)|p=Pudełko}}}}. W tym przypadku funkcja działa jak {{Code|{{sr|#p["Nazwa przestrzeni nazw"](frame,...)|p=Pudełko}}}}. Przestrzeń nazw z parametrów nazw przestrzennych numerkowych może odpowiadać wartości przestrzeni głównej, to wtedy odpowiednia przestrzeń nazw z parametru nazwy jednostki się liczy w tej funkcji, wtedy jest liczona nazwa przestrzeni nazw z tego parametru. Gdy parametry przestrzenne lub typ jednostki w drugim podejściu nie wskazują na przestrzeń główną, to wtedy działanie tej funkcji jest podobne do {{Code|{{sr|#p["Nazwa przestrzeni nazw 2"](frame,...)|p=Pudełko}}}}. Definicja skrótowa funkcji: <syntaxhighlight lang="lua"> p["Nazwa przestrzeni nazw 3"]=function(frame,czy_uwzglednic_alternatywna_nazwe,i)...end; </syntaxhighlight> Wtedy ciało funkcji tej, czyli jego definicja w środku, jest: <syntaxhighlight lang="lua"> -- Jest liczony numer parametru nazwy przestrzeni nazw, domyslnie chodzi tu o numer bazowy parametrów przestrzennych; local numer_jednostki=i or frame.args["numer jednostki"]; local liczba_numeru_jednostki=((numer_jednostki)and(tonumber(numer_jednostki)) or 0); local pudelko_pomocne_modul=require("Module:Pudełko/Pomocne"); -- Liczy nazwę przestrzeni nazw dyskusji na podstawie podanych parametrów; return pudelko_pomocne_modul.Uzyskanie_nazw_jednostki(frame,0,liczba_numeru_jednostki,nil,2); </syntaxhighlight> Parametry funkcji: * {{Code|frame}} - tablica ramki tablicy transportu, * {{Code|czy_uwzglednic_alternatywna_nazwe}} - czy ma uwzględniać nazwę przestrzeni nazw domyślną szablonu, dostępne wartości: {{Code|false}}, w której nazwa domyślna nie jest uwzględniana wtedy, oraz {{Code|nil}} i {{Code|true}}, które oznaczają to samo, w tym jeżeli ona jest uwzględniana, wtedy jest brany parametr pierwszy dziecka, który musi istnieć przy takiej wartości tego parametru, tzn. {{Code|{{m|Pudełko|Nazwa przestrzeni nazw 3|Szablon}}}}, a jeśli nazwa uzyskana nazwy przestrzeni nazw jest w takim przypadku błędna, to brany jest ten element, a jeżeli nazwa domyślna jest błędna, czyli {{Code|{{m|Pudełko|Nazwa przestrzeni nazw 3|Moja przestrzeń}}}}, wtedy funkcja zwraca stan błędu {{Code|(błąd)}}. * {{Code|i}} - numer zmiennej nazwy przestrzeni nazw. Funkcja wykorzystuje {{Code|{{sr|#p.Uzyskanie_nazw_jednostki(frame,...)|p=Pudełko/Pomocne}}}} do wyznaczania ogólnego nazwy przestrzeni nazw dla pozycji bazowej i numerkowej, tzn. dla pozycji: jeden, dwa, trzy,..., itd, i ich ogólnej. Parametr ramki tablicy transportu rodzica szablonu: * {{Code|nazwa przestrzeni nazw}}, {{Code|nazwa przestrzeni nazw 1}}, {{Code|Nazwa przestrzeni nazw 3}}, {{Code|nazwa przestrzeni nazw 3}},..., {{Code|nazwa przestrzeni nazw i}} - nazwy przestrzeni nazw dla pozycji bazowej oraz zwykłej i ogólnej numerkowej, * {{Code|nazwa jednostki}}, {{Code|nazwa jednostki 1}}, {{Code|nazwa jednostki 2}}, {{Code|nazwa jednostki 3}},... - nazwy jednostek dla pozycji bazowej i numerkowej, * {{Code|typ jednostki}}, {{Code|typ jednostki 1}}, {{Code|typ jednostki 2}}, {{Code|typ jednostki 3}},..., {{Code|typ jednostki i}} - typy jednostek, którym odpowiadają pewne przestrzenie przedmiotowe, dla pozycji bazowej, numerkowej i ogólnej, ** {{Code|dyskusja typu jednostki}}, {{Code|dyskusja typu jednostki 1}}, {{Code|dyskusja typ jednostki 2}}, {{Code|dyskusja typ jednostki 3}},..., {{Code|dyskusja typ jednostki i}} - czy dany typ jednostki ma przedstawiać, jeśli niepusta, przestrzeń dyskusji dla pozycji bazowej, numerkowej i ogólnej. Parametry ramki tablicy transportu dziecka: * Parametry dziecka są takie same jak rodzica dla funkcji pudełkowej plus tu wymienione, * {{Code|numer jednostki}} - jak parametr {{Code|i}} nie został ustawiony, to wtedy liczy się ta zmienna. Przykłady: <syntaxhighlight lang="mediawiki"> {{Nazwa szablonu 1|nazwa przestrzeni nazw=Wikibooks|nazwa przestrzeni nazw=|nazwa przestrzeni nazw i=|nazwa jednostki=Szablon:Strona}} ---- {{Nazwa szablonu 2|nazwa przestrzeni nazw=Wikibooks|nazwa przestrzeni nazw 1=Szablon|nazwa przestrzeni nazw i=|nazwa jednostki 2=Wikibooks:Strona}} </syntaxhighlight> W pierwszym wywołaniu {{Code|nazwa przestrzeni nazw}} jest puste, ale dla tego bazowego (bez numerka) szukamy przestrzeni nazw, a więc ta nazwa jest ostateczna. ---- W drugim wywołaniu w dziecku powiedzmy jest wywołanie, i szukamy nazwy przestrzeni nazw o numerze dwa, która została podana, ale istnieje za to jej wersji ogólna {{Code|nazwa przestrzeni nazw i}} i domyślna {{Code|nazwa przestrzeni nazw}}, ale wtedy dla tego numerkowego liczy się to ogólne z {{Code| i}}, a ponieważ ta nazwa jest pusta, więc będziemy liczyli nazwę przestrzeni nazw z {{Code|nazwa jednostki 2}}. Odpowiadająca powyższemu kodowi, powiedzmy wikikod, według ich zawartości, przedstawia się: <syntaxhighlight lang="mediawiki"> {{#invoke:Pudełko|Nazwa przestrzeni nazw 3}} ---- {{#invoke:Pudełko|Nazwa przestrzeni nazw 3|numer jednostki=2}} </syntaxhighlight> Na podstawie powyższego przykładu otrzymamy wynik o schemacie, nie wyniku, bo tam nie ma zmiennej {{Code|nazwa przestrzeni nazw 1}}, ale jest {{Code|nazwa przestrzeni nazw i}}: <syntaxhighlight lang="mediawiki"> <!-- nazwa przestrzeni nazw=""; --> <!-- Czyli wynik: --> <!-- wynik pusty --> <!-- Widzimy, że wygenerowała się nazwa przestrzeni nazw, którą jest przestrzeń nazw główna, jest ciągiem pustym: ""; --> ---- <!-- Ale nie "nazwa przestrzeni nazw 2", bo jej nie ma, ale za to istnieje "nazwa przestrzeni nazw i"; --> <!-- nazwa przestrzeni nazw 2=nazwa przestrzeni nazw i="", a nazwa jednostki 2="Wikibooks:Strona"; --> <!-- Czyli wynik: --> Wikibooks <!-- Widzimy, że wygenerowała się nazwa przestrzeni nazw, którą jest przestrzeń nieprogramowa, ale projektu, wychodząca z nazwy jednostek w tym przypadku z "nazwa jednostki 2"; --> </syntaxhighlight> Dla parametrów numerkowych nie jest brana w tym powyższym przykładzie zmienna {{Code|nazwa przestrzeni nazw 2}}, bo jej nie ma, ale za to jest {{Code|nazwa przestrzeni nazw i}}, bo ona występuje jako parametr domyślny ogólny dla parametrów numerkowych. Tytaj jest używana jest zmienna {{Code|nazwa jednostki 2}} do wygenerowania ostatecznego wyniku, bo jak można zauważyć, parametry przestrzenne wskazują na przestrzeń główną, a nazwy jednostek już nie. Dla parametrów bazowych mamy zmienną {{Code|nazwa przestrzeni nazw}}, ona jest pusta, więc to zostanie wzięte do ostatecznego wyniku. Przykłady w wikikodzie: * {{Code|{{m|Pudełko|Nazwa przestrzeni nazw 3|Szablon|nazwa przestrzeni nazw{{=}}Moja przestrzeń|nazwa jednostki{{=}}Wikibooks:Strona}}}} → {{Tt|{{#invoke:Pudełko|Nazwa przestrzeni nazw 3|Szablon|nazwa przestrzeni nazw=Moja przestrzeń|nazwa jednostki=Wikibooks:Szablon}}}} * {{Code|{{m|Pudełko|Nazwa przestrzeni nazw 3|Szablon|nazwa przestrzeni nazw 2{{=}}Moja przestrzeń|nazwa jednostki 2{{=}}Wikibooks:Strona}|numer jednostki{{=}}2}}}} → {{Tt|{{#invoke:Pudełko|Nazwa przestrzeni nazw 3|Szablon|nazwa przestrzeni nazw 2=Moja przestrzeń|nazwa jednostki 2=Wikibooks:Szablon|numer jednostki=2}}}} * {{Code|{{m|Pudełko|Nazwa przestrzeni nazw 3|nazwa przestrzeni nazw{{=}}|nazwa jednostki{{=}}Wikibooks:Strona}}}} → {{Tt|{{#invoke:Pudełko|Nazwa przestrzeni nazw 3|nazwa przestrzeni nazw=|nazwa jednostki=Wikibooks:Szablon}}}} * {{Code|{{m|Pudełko|Nazwa przestrzeni nazw 3|nazwa przestrzeni nazw 2{{=}}|nazwa jednostki 2{{=}}Wikibooks:Strona|numer jednostki{{=}}2}}}} → {{Tt|{{#invoke:Pudełko|Nazwa przestrzeni nazw 3|nazwa przestrzeni nazw 2=|nazwa jednostki 2=Wikibooks:Szablon|numer jednostki=2}}}} Powyżej dla przykładu podano parametry nie w rodzicu w szablonie, tylko w dziecku, jeśli chodzi o parametry nazw przestrzeni nazw i nazw jednostek, ale ich się za to nie powinno podawać w tych ramach, tylko w szablonach, w których wywoływane są te ramki pudełek {{Code|{{m|Pudełko}}}}, ale tak tutaj tak zrobiono by było najłatwiej sprawdzić działanie tego typu funkcji. Analogicznie możemy podawać parametry typu jednostki, np.: wywołaniu modułowym {{Code|{{m|Pudełko|Nazwa przestrzeni nazw 3|typ jednostki 2{{=}}Podręcznik|nazwa jednostki 2{{=}}Szablon:Strona|numer jednostki{{=}}2}}}} (ale wtedy jest brana przestrzeń nazw z nazwy jednostki), ale o tym więcej w rozdziałach {{Code|{{sr|#p["Typ jednostki 3"](frame,i)|p=Pudełko}}}} w „{{sr|#Funkcje typu jednostki|p=Pudełko}}”, one definiują dane przestrzenie przedmiotowe lub dyskusji, ale można lub nie użyć parametru dyskusji typu jednostki z wartością niepustą, wtedy wyświetli się nazwa przestrzeni nazw dyskusji. Typ jednostki nie ma takiej samej wartości dla przestrzeni przedmiotowej, co dyskusji. Również parametry typu jednostki nie powinno się podawać w dziecku w ramce, tylko w rodzicu w szablonie jako parametry, w którym ta ramka jest wywoływana, ale tutaj podano jedynie dla przykładu, jak najłatwiej sprawdzić działanie tych parametrów tej funkcji. Najpierw w funkcji nagłówku brane są parametry nazw przestrzeni nazw, a jeżeli ich nie ma, to parametry typu jednostki, a jeżeli nie ma lub parametry przestrzenne wskazują na przestrzeń główną, i nie ma nazwy jednostki, to generowane są nazwy tej funkcji na podstawie aktualnej strony. === {{Code|p["Nazwa przedmiotowej przestrzeni nazw 3"](frame,i)}} === Funkcja pisze przedmiotową nazwę przestrzeni nazw jakikolwiek nazwy przestrzeni nazw (tzn. nazwę przedmiotową nazwy przestrzenie nazw, czyli nie dyskusji, zamieniana jest na nią samą, czyli identyfikator przestrzeni się nie zmienia, a dyskusji, nie przedmiotową, przekształca się na przedmiotową jej odpowiadającą, czyli w tym przypadku identyfikator przestrzeni zmniejsza się o numer mniej), według podanej w zmiennej {{Code|nazwa przestrzeni nazw}} dla pozycja bazowej w podanych parametrach szablonu rodzicu ramki dziecka, lub dla innej pozycji należy parametr podawać w formie {{Code|nazwa przestrzeni nazw 1}}, {{Code|nazwa przestrzeni nazw 2}}, {{Code|nazwa przestrzeni nazw 3}},..., lub te parametry można podać w postaci ogólnej {{Code|nazwa przestrzeni nazw i}}. Parametry podaje się w parametrach rodzica wywołania tej funkcji {{Code|{{m|Pudełko|Nazwa przedmiotowej przestrzeni nazw 3}}}} (ale ich nie trzeba podawać w dziecku, ale można) i w parametrach dziecka, jeśli chodzi o zmienną {{Code|numer jednostki}}, czyli np.: {{Code|{{m|Pudełko|Nazwa przedmiotowej przestrzeni nazw 3|numer jednostki{{=}}<jakaś liczba całkowita dodatnia>}}}}. Te parametry przestrzenne zamiast w rodzicu w szablonie można podać w ramce dziecka, wtedy parametry dziecka mają pierwszeństwo. Parametry przestrzenne mogą mogą być podane w postaci przestrzeni przedmiotowej lub dyskusji, ale ta funkcja zawsze ją zamienia na przedmiotową. Przestrzeń nazw z parametrów nazw przestrzennych bazowych (bez numerka) może odpowiadać wartości przestrzeni głównej, to wtedy odpowiednia przestrzeń nazw z parametru nazwy jednostki się nie liczy w tej funkcji, aby się liczyła należy użyć funkcji {{Code|{{sr|#p["Nazwa przedmiotowej przestrzeni nazw 2"](frame,...)|p=Pudełko}}}}. W tym przypadku funkcja działa jak {{Code|{{sr|#p["Nazwa przedmiotowej przestrzeni nazw"](frame,...)|p=Pudełko}}}}. Przestrzeń nazw z parametrów nazw przestrzennych numerkowych może odpowiadać wartości przestrzeni głównej, to wtedy odpowiednia przestrzeń nazw z parametru nazwy jednostki się liczy w tej funkcji, wtedy jest liczona nazwa przestrzeni nazw z tego parametru. Gdy parametry przestrzenne lub typ jednostki w drugim podejściu nie wskazują na przestrzeń główną, to wtedy działanie tej funkcji jest podobne do {{Code|{{sr|#p["Nazwa przedmiotowej przestrzeni nazw 2"](frame,...)|p=Pudełko}}}}. Definicja skrótowa funkcji: <syntaxhighlight lang="lua"> p["Nazwa przedmiotowej przestrzeni nazw 3"]=function(frame,czy_uwzglednic_alternatywna_nazwe,i)...end; </syntaxhighlight> Wtedy ciało funkcji tej, czyli jego definicja w środku, jest: <syntaxhighlight lang="lua"> -- Jest liczony numer parametru nazwy przestrzeni nazw, domyslnie chodzi tu o numer bazowy parametrów przestrzennych; local numer_jednostki=i or frame.args["numer jednostki"]; local liczba_numeru_jednostki=((numer_jednostki)and(tonumber(numer_jednostki)) or 0); local pudelko_pomocne_modul=require("Module:Pudełko/Pomocne"); -- Liczy nazwę przestrzeni nazw przedmiotową na podstawie podanych parametrów; return pudelko_pomocne_modul.Uzyskanie_nazw_jednostki(frame,1,liczba_numeru_jednostki,nil,1); </syntaxhighlight> Parametry funkcji: * {{Code|frame}} - tablica ramki tablicy transportu, * {{Code|czy_uwzglednic_alternatywna_nazwe}} - czy ma uwzględniać nazwę przestrzeni nazw domyślną szablonu, dostępne wartości: {{Code|false}}, w której nazwa domyślna nie jest uwzględniana wtedy, oraz {{Code|nil}} i {{Code|true}}, które oznaczają to samo, w tym jeżeli ona jest uwzględniana, wtedy jest brany parametr pierwszy dziecka, który musi istnieć przy takiej wartości tego parametru, tzn. {{Code|{{m|Pudełko|Nazwa przedmiotowej przestrzeni nazw 3|Dyskusja szablonu}}}} - ta nazwa domyślna zostanie zamieniona na przedmiotową, a jak ona by była przedmiotowa, to żadnej zamiany by nie było, a nazwa uzyskana z nazwy przestrzeni nazw z parametrów przestrzennych jest w takim przypadku błędna, to w takim razie brany jest ten parametr, a jeżeli ta nazwa domyślna jest błędna, czyli {{Code|{{m|Pudełko|Nazwa przedmiotowej przestrzeni nazw 3|Moja przestrzeń}}}}, wtedy funkcja zwraca stan błędu {{Code|(błąd)}}. * {{Code|i}} - numer zmiennej nazwy przestrzeni nazw. Funkcja wykorzystuje {{Code|{{sr|#p.Uzyskanie_nazw_jednostki(frame,...)|p=Pudełko/Pomocne}}}} do wyznaczania ogólnego nazwy przestrzeni nazw dla pozycji bazowej i numerkowej, tzn. dla pozycji: jeden, dwa, trzy,..., itd, i ich ogólnej. Parametr ramki tablicy transportu rodzica szablonu: * {{Code|nazwa przestrzeni nazw}}, {{Code|nazwa przestrzeni nazw 1}}, {{Code|nazwa przestrzeni nazw 2}}, {{Code|nazwa przestrzeni nazw 3}},..., {{Code|nazwa przestrzeni nazw i}} - nazwy przestrzeni nazw dla pozycji bazowej oraz zwykłej i ogólnej numerkowej, * {{Code|typ jednostki}}, {{Code|typ jednostki 1}}, {{Code|typ jednostki 2}}, {{Code|typ jednostki 3}},..., {{Code|typ jednostki i}} - typy jednostek, którym odpowiadają pewne przestrzenie przedmiotowe, dla pozycji bazowej, numerkowej i ogólnej. Parametry ramki tablicy transportu dziecka: * Parametry dziecka są takie same jak rodzica dla funkcji pudełkowej plus tu wymienione, * {{Code|numer jednostki}} - jak parametr {{Code|i}} nie został ustawiony, to wtedy liczy się ta zmienna. Przykłady: <syntaxhighlight lang="mediawiki"> {{Nazwa szablonu 1|nazwa przestrzeni nazw=Wikibooks|nazwa przestrzeni nazw=|nazwa przestrzeni nazw i=|nazwa jednostki=Dyskusja Wikibooks:Strona}} ---- {{Nazwa szablonu 2|nazwa przestrzeni nazw=Wikibooks|nazwa przestrzeni nazw 1=Szablon|nazwa przestrzeni nazw i=|nazwa jednostki 2=Dyskusja Wikibooks:Strona}} </syntaxhighlight> W pierwszym wywołaniu {{Code|nazwa przestrzeni nazw}} jest puste, ale dla tego bazowego (bez numerka) szukamy przestrzeni nazw, a więc ta nazwa jest ostateczna. ---- W drugim wywołaniu w dziecku powiedzmy jest wywołanie, i szukamy nazwy przestrzeni nazw o numerze dwa, która została podana, ale istnieje za to jej wersji ogólna {{Code|nazwa przestrzeni nazw i}} i domyślna {{Code|nazwa przestrzeni nazw}}, ale wtedy dla tego numerkowego liczy się to ogólne z {{Code| i}}, a ponieważ ta nazwa jest pusta, więc będziemy liczyli nazwę przestrzeni nazw z {{Code|nazwa jednostki 2}}. Odpowiadająca powyższemu kodowi, powiedzmy wikikod, według ich zawartości, przedstawia się: <syntaxhighlight lang="mediawiki"> {{#invoke:Pudełko|Nazwa przedmiotowej przestrzeni nazw 3}} ---- {{#invoke:Pudełko|Nazwa przedmiotowej przestrzeni nazw 3|numer jednostki=2}} </syntaxhighlight> Na podstawie powyższego przykładu otrzymamy wynik o schemacie, nie wyniku, bo tam nie ma zmiennej {{Code|nazwa przestrzeni nazw 1}}, ale jest {{Code|nazwa przestrzeni nazw i}}: <syntaxhighlight lang="mediawiki"> <!-- nazwa przestrzeni nazw=""; --> <!-- Czyli wynik: --> <!-- wynik pusty --> <!-- Widzimy, że wygenerowała się nazwa przestrzeni nazw, którą jest przestrzeń nazw główna, jest ciągiem pustym: ""; --> ---- <!-- Ale nie "nazwa przestrzeni nazw 2", bo jej nie ma, ale za to istnieje "nazwa przestrzeni nazw i"; --> <!-- nazwa przestrzeni nazw 2=nazwa przestrzeni nazw i="", a nazwa jednostki 2="Dyskusja Wikibooks:Strona"; --> <!-- Czyli wynik: --> Wikibooks <!-- Widzimy, że wygenerowała się nazwa przestrzeni nazw, którą jest przestrzeń nieprogramowa, ale projektu, wychodząca z nazwy jednostek w tym przypadku z "nazwa jednostki 2"; --> </syntaxhighlight> Dla parametrów numerkowych nie jest brana w tym powyższym przykładzie zmienna {{Code|nazwa przestrzeni nazw 2}}, bo jej nie ma, ale za to jest {{Code|nazwa przestrzeni nazw i}}, bo ona występuje jako parametr domyślny ogólny dla parametrów numerkowych. Tytaj jest używana jest zmienna {{Code|nazwa jednostki 2}} do wygenerowania ostatecznego wyniku, bo jak można zauważyć, parametry przestrzenne wskazują na przestrzeń główną, a nazwy jednostek już nie. Dla parametrów bazowych mamy zmienną {{Code|nazwa przestrzeni nazw}}, ona jest pusta, więc to zostanie wzięte do ostatecznego wyniku. Przykłady w wikikodzie: * {{Code|{{m|Pudełko|Nazwa przedmiotowej przestrzeni nazw 3|Dyskusja szablonu|nazwa przestrzeni nazw{{=}}Moja przestrzeń|nazwa jednostki{{=}}Dyskusja Wikibooks:Strona}}}} → {{Tt|{{#invoke:Pudełko|Nazwa przedmiotowej przestrzeni nazw 3|Dyskusja szablonu|nazwa przestrzeni nazw=Moja przestrzeń||nazwa jednostki=Dyskusja Wikibooks:Szablon}}}} * {{Code|{{m|Pudełko|Nazwa przedmiotowej przestrzeni nazw 3|Dyskusja szablonu|nazwa przestrzeni nazw 2{{=}}Moja przestrzeń|nazwa jednostki 2{{=}}Dyskusja Wikibooks:Strona|numer jednostki{{=}}2}}}} → {{Tt|{{#invoke:Pudełko|Nazwa przedmiotowej przestrzeni nazw 3|Dyskusja szablonu|nazwa przestrzeni nazw 2=Moja przestrzeń||nazwa jednostki 2=Dyskusja Wikibooks:Szablon|numer jednostki=2}}}} * {{Code|{{m|Pudełko|Nazwa przedmiotowej przestrzeni nazw 3|nazwa przestrzeni nazw{{=}}|nazwa jednostki{{=}}Dyskusja Wikibooks:Strona}}}} → {{Tt|{{#invoke:Pudełko|Nazwa przedmiotowej przestrzeni nazw 3|nazwa przestrzeni nazw=|nazwa jednostki=Dyskusja Wikibooks:Szablon}}}} * {{Code|{{m|Pudełko|Nazwa przedmiotowej przestrzeni nazw 3|nazwa przestrzeni nazw 2{{=}}|nazwa jednostki 2{{=}}Dyskusja Wikibooks:Strona|numer jednostki{{=}}2}}}} → {{Tt|{{#invoke:Pudełko|Nazwa przedmiotowej przestrzeni nazw 3|nazwa przestrzeni nazw 2=|nazwa jednostki 2=Dyskusja Wikibooks:Szablon|numer jednostki=2}}}} Powyżej dla przykładu podano parametry nie w rodzicu w szablonie, tylko w dziecku, jeśli chodzi o parametry nazw przestrzeni nazw, ale ich się za to nie powinno podawać w tych ramach, tylko w szablonach, w których wywoływane są te ramki pudełek {{Code|{{m|Pudełko}}}}, ale tak tutaj tak zrobiono by było najłatwiej sprawdzić działanie tego typu funkcji. Analogicznie możemy podawać parametry typu jednostki, np.: wywołaniu modułowym {{Code|{{m|Pudełko|Nazwa przedmiotowej przestrzeni nazw 3|typ jednostki 2{{=}}strona szablonu|numer jednostki{{=}}2}}}}, ale o tym więcej w rozdziałach {{Code|{{sr|#p["Przedmiotowy typ jednostki 3"](frame,i)|p=Pudełko}}}} w „{{sr|#Funkcje typu jednostki|p=Pudełko}}”, one definiują dane przestrzeni przedmiotowe, ale wtedy ta sama nazwa przestrzeni nazw reprezentowana przez {{Parametr|typ jednostki 2|strona szablonu}}, jest zamieniana na to samo, lepiej jest tutaj używać parametrów przestrzennych nazw niż typu jednostki. Tutaj parametr dyskusji typu jednostki bazowy i numerkowy ogólny, czy szczegółowy, nie gra roli, bo nawet, gdy wygenerujemy nazwę przestrzeni dyskusji za pomoca tego parametru, to i tak otrzymamy na samym końcu jego nazwę przedmiotową. Jeżeli typ jednostki bazowy wskazuje na przestrzeń nazw główną, wtedy się nie liczą parametry nazw jednostek, a w przypadku numerkowego, wtedy się liczy. Typ jednostki nie ma takiej samej wartości dla przestrzeni przedmiotowej, co dyskusji. Również parametry typu jednostki nie powinno się podawać w dziecku w ramce, tylko w rodzicu w szablonie jako parametry, w którym ta ramka jest wywoływana, ale tutaj podano jedynie dla przykładu, jak najłatwiej sprawdzić działanie tych parametrów tej funkcji. Najpierw w funkcji nagłówku brane są parametry nazw przestrzeni nazw, a jeżeli ich nie ma, to parametry typu jednostki, a jeżeli nie ma, to generowane są nazwy na podstawie aktualnego modułu. === {{Code|p["Nazwa przestrzeni nazw dyskusji 3"](frame,i)}} === Funkcja pisze nazwę przestrzeni nazw dyskusji jakikolwiek nazwy przestrzeni nazw (tzn. nazwę dyskusji nazwy przestrzenie nazw, czyli nie przedmiotowej, zamieniana jest na nią samą, czyli identyfikator przestrzeni się nie zmienia, a przedmiotową, nie dyskusji, przekształca się na dyskusji jej odpowiadającą, czyli w tym przypadku identyfikator przestrzeni zwiększa się o numer więcej), według, i nie zawsze tylko, podanej w zmiennej {{Code|nazwa przestrzeni nazw}} dla pozycja bazowej w podanych parametrach szablonu rodzicu ramki dziecka, lub dla innej pozycji należy parametr podawać w formie {{Code|nazwa przestrzeni nazw 1}}, {{Code|nazwa przestrzeni nazw 2}}, {{Code|nazwa przestrzeni nazw 3}},..., lub te parametry można podać w postaci ogólnej {{Code|nazwa przestrzeni nazw i}}. W tej funkcji trzeba też podawać parametry nazwy jednostek {{Code|nazwa jednostki}}, {{Code|nazwa jednostki 1}}, {{Code|nazwa jednostki 2}}, {{Code|nazwa jednostki 3}},... Parametry podaje się w parametrach rodzica wywołania tej funkcji {{Code|{{m|Pudełko|Nazwa przestrzeni nazw dyskusji 3}}}} (ale ich nie trzeba podawać w dziecku, ale można) i w parametrach dziecka, jeśli chodzi o zmienną {{Code|numer jednostki}}, czyli np.: {{Code|{{m|Pudełko|Nazwa przestrzeni nazw dyskusji 3|numer jednostki{{=}}<jakaś liczba całkowita dodatnia>}}}}. Te parametry przestrzenne zamiast w rodzicu w szablonie można podać w ramce dziecka, wtedy parametry dziecka mają pierwszeństwo. Przestrzeń nazw z parametrów nazw przestrzennych bazowych (bez numerka) może odpowiadać wartości przestrzeni głównej, to wtedy odpowiednia przestrzeń nazw z parametru nazwy jednostki się nie liczy w tej funkcji, aby się liczyła należy użyć funkcji {{Code|{{sr|#p["Nazwa przestrzeni nazw dyskusji 2"](frame,...)|p=Pudełko}}}}. W tym przypadku funkcja działa jak {{Code|{{sr|#p["Nazwa przestrzeni nazw dyskusji"](frame,...)|p=Pudełko}}}}. Przestrzeń nazw z parametrów nazw przestrzennych numerkowych może odpowiadać wartości przestrzeni głównej, to wtedy odpowiednia przestrzeń nazw z parametru nazwy jednostki się liczy w tej funkcji, wtedy jest liczona nazwa przestrzeni nazw z tego parametru. Gdy parametry przestrzenne lub typ jednostki w drugim podejściu nie wskazują na przestrzeń główną, to wtedy działanie tej funkcji jest podobne do {{Code|{{sr|#p["Nazwa przestrzeni nazw dyskusji 2"](frame,...)|p=Pudełko}}}}. Definicja skrótowa funkcji: <syntaxhighlight lang="lua"> p["Nazwa przestrzeni nazw dyskusji 3"]=function(frame,czy_uwzglednic_alternatywna_nazwe,i)...end; </syntaxhighlight> Wtedy ciało funkcji tej, czyli jego definicja w środku, jest: <syntaxhighlight lang="lua"> -- Jest liczony numer parametru nazwy przestrzeni nazw, domyslnie chodzi tu o numer bazowy parametrów przestrzennych; local numer_jednostki=i or frame.args["numer jednostki"]; local liczba_numeru_jednostki=((numer_jednostki)and(tonumber(numer_jednostki)) or 0); local pudelko_pomocne_modul=require("Module:Pudełko/Pomocne"); -- Liczy nazwę przestrzeni nazw dyskusji na podstawie podanych parametrów; return pudelko_pomocne_modul.Uzyskanie_nazw_jednostki(frame,2,liczba_numeru_jednostki,nil,1); </syntaxhighlight> Parametry funkcji: * {{Code|frame}} - tablica ramki tablicy transportu, * {{Code|czy_uwzglednic_alternatywna_nazwe}} - czy ma uwzględniać nazwę przestrzeni nazw domyślną szablonu, dostępne wartości: {{Code|false}}, w której nazwa domyślna nie jest uwzględniana wtedy, oraz {{Code|nil}} i {{Code|true}}, które oznaczają to samo, w tym jeżeli ona jest uwzględniana, wtedy jest brany parametr pierwszy dziecka, który musi istnieć przy takiej wartości tego parametru, tzn. {{Code|{{m|Pudełko|Nazwa przestrzeni nazw dyskusji 3|Szablon}}}}, nazwa domyślna zostatnie zamieniona na dyskusji, a jeśli jest już taka, to takiej transfomacji nie ma, a jeśli nazwa uzyskana nazwy przestrzeni nazw jest w takim przypadku błędna, to wzięty jest ten parametr, a jeżeli nazwa domyślna jest błędna, czyli {{Code|{{m|Pudełko|Nazwa przestrzeni nazw dyskusji 3|Moja przestrzeń}}}}, wtedy funkcja zwraca stan błędu {{Code|(błąd)}}. * {{Code|i}} - numer zmiennej nazwy przestrzeni nazw. Funkcja wykorzystuje {{Code|{{sr|#p.Uzyskanie_nazw_jednostki(frame,...)|p=Pudełko/Pomocne}}}} do wyznaczania ogólnego nazwy przestrzeni nazw dla pozycji bazowej i numerkowej, tzn. dla pozycji: jeden, dwa, trzy,..., itd, i ich ogólnej. Parametr ramki tablicy transportu rodzica szablonu: * {{Code|nazwa przestrzeni nazw}}, {{Code|nazwa przestrzeni nazw 1}}, {{Code|nazwa przestrzeni nazw 2}}, {{Code|nazwa przestrzeni nazw 3}},..., {{Code|nazwa przestrzeni nazw i}} - nazwy przestrzeni nazw dla pozycji bazowej oraz zwykłej i ogólnej numerkowej, * {{Code|nazwa jednostki}}, {{Code|nazwa jednostki 1}}, {{Code|nazwa jednostki 2}}, {{Code|nazwa jednostki 3}},... - nazwy jednostek dla pozycji bazowej i numerkowej, * {{Code|typ jednostki}}, {{Code|typ jednostki 1}}, {{Code|typ jednostki 2}}, {{Code|typ jednostki 3}},..., {{Code|typ jednostki i}} - typy jednostek, którym odpowiadają pewne przestrzenie przedmiotowe, dla pozycji bazowej, numerkowej i ogólnej. Parametry ramki tablicy transportu dziecka: * Parametry dziecka są takie same jak rodzica dla funkcji pudełkowej plus tu wymienione, * {{Code|numer jednostki}} - jak parametr {{Code|i}} nie został ustawiony, to wtedy liczy się ta zmienna. Przykłady: <syntaxhighlight lang="mediawiki"> {{Nazwa szablonu 1|nazwa przestrzeni nazw=Wikibooks|nazwa przestrzeni nazw=|nazwa przestrzeni nazw i=|nazwa jednostki=Szablon:Strona}} ---- {{Nazwa szablonu 2|nazwa przestrzeni nazw=Wikibooks|nazwa przestrzeni nazw 1=Szablon|nazwa przestrzeni nazw i=|nazwa jednostki 2=Wikibooks:Strona}} </syntaxhighlight> W pierwszym wywołaniu {{Code|nazwa przestrzeni nazw}} jest puste, ale dla tego bazowego (bez numerka) szukamy przestrzeni nazw, a więc ta nazwa jest ostateczna. ---- W drugim wywołaniu w dziecku powiedzmy jest wywołanie, i szukamy nazwy przestrzeni nazw o numerze dwa, która została podana, ale istnieje za to jej wersji ogólna {{Code|nazwa przestrzeni nazw i}} i domyślna {{Code|nazwa przestrzeni nazw}}, ale wtedy dla tego numerkowego liczy się to ogólne z {{Code| i}}, a ponieważ ta nazwa jest pusta, więc będziemy liczyli nazwę przestrzeni nazw z {{Code|nazwa jednostki 2}}. Odpowiadająca powyższemu kodowi, powiedzmy wikikod, według ich zawartości, przedstawia się: <syntaxhighlight lang="mediawiki"> {{#invoke:Pudełko|Nazwa przestrzeni nazw 3}} ---- {{#invoke:Pudełko|Nazwa przestrzeni nazw 3|numer jednostki=2}} </syntaxhighlight> Na podstawie powyższego przykładu otrzymamy wynik o schemacie, nie wyniku, bo tam nie ma zmiennej {{Code|nazwa przestrzeni nazw 1}}, ale jest {{Code|nazwa przestrzeni nazw i}}: <syntaxhighlight lang="mediawiki"> <!-- nazwa przestrzeni nazw=""; --> <!-- Czyli wynik: --> Dyskusja <!-- Widzimy, że wygenerowała się nazwa przestrzeni nazw, którą jest przestrzeń nazw niegłówna, jest ciągiem niepustym; --> ---- <!-- Ale nie "nazwa przestrzeni nazw 2", bo jej nie ma, ale za to istnieje "nazwa przestrzeni nazw i"; --> <!-- nazwa przestrzeni nazw 2=nazwa przestrzeni nazw i="", a nazwa jednostki 2="Wikibooks:Strona"; --> <!-- Czyli wynik: --> Dyskusja Wikibooks <!-- Widzimy, że wygenerowała się nazwa przestrzeni nazw, którą jest przestrzeń nieprogramowa, ale projektu, wychodząca z nazwy jednostek w tym przypadku z "nazwa jednostki 2"; --> </syntaxhighlight> Dla parametrów numerkowych nie jest brana w tym powyższym przykładzie zmienna {{Code|nazwa przestrzeni nazw 2}}, bo jej nie ma, ale za to jest {{Code|nazwa przestrzeni nazw i}}, bo ona występuje jako parametr domyślny ogólny dla parametrów numerkowych. Tytaj jest używana jest zmienna {{Code|nazwa jednostki 2}} do wygenerowania ostatecznego wyniku, bo jak można zauważyć, parametry przestrzenne wskazują na przestrzeń główną, a nazwy jednostek już nie. Dla parametrów bazowych mamy zmienną {{Code|nazwa przestrzeni nazw}}, ona jest pusta, więc to zostanie wzięte do ostatecznego wyniku. Przykłady w wikikodzie: * {{Code|{{m|Pudełko|Nazwa przestrzeni nazw dyskusji 3|Szablon|nazwa przestrzeni nazw{{=}}Moja przestrzeń|nazwa jednostki{{=}}Wikibooks:Strona}}}} → {{Tt|{{#invoke:Pudełko|Nazwa przestrzeni nazw dyskusji 3|Szablon|nazwa przestrzeni nazw=Moja przestrzeń|nazwa jednostki=Wikibooks:Szablon}}}} * {{Code|{{m|Pudełko|Nazwa przestrzeni nazw dyskusji 3|Szablon|nazwa przestrzeni nazw 2{{=}}Moja przestrzeń|nazwa jednostki 2{{=}}Wikibooks:Strona|numer jednostki{{=}}2}}}} → {{Tt|{{#invoke:Pudełko|Nazwa przestrzeni nazw dyskusji 3|Szablon|nazwa przestrzeni nazw 2=Moja przestrzeń|nazwa jednostki 2=Wikibooks:Szablon|numer jednostki=2}}}} * {{Code|{{m|Pudełko|Nazwa przestrzeni nazw dyskusji 3|nazwa przestrzeni nazw{{=}}|nazwa jednostki{{=}}Wikibooks:Strona}}}} → {{Tt|{{#invoke:Pudełko|Nazwa przestrzeni nazw dyskusji 3|nazwa przestrzeni nazw=|nazwa jednostki=Wikibooks:Szablon}}}} * {{Code|{{m|Pudełko|Nazwa przestrzeni nazw dyskusji 3|nazwa przestrzeni nazw 2{{=}}|nazwa jednostki 2{{=}}Wikibooks:Strona|numer jednostki{{=}}2}}}} → {{Tt|{{#invoke:Pudełko|Nazwa przestrzeni nazw dyskusji 3|nazwa przestrzeni nazw 2=|nazwa jednostki 2=Wikibooks:Szablon|numer jednostki=2}}}} Powyżej dla przykładu podano parametry nie w rodzicu w szablonie, tylko w dziecku, jeśli chodzi o parametry nazw przestrzeni nazw i nazw jednostek, ale ich się za to nie powinno podawać w tych ramach, tylko w szablonach, w których wywoływane są te ramki pudełek {{Code|{{m|Pudełko}}}}, ale tak tutaj tak zrobiono by było najłatwiej sprawdzić działanie tego typu funkcji. Analogicznie możemy podawać parametry typu jednostki, np.: wywołaniu modułowym {{Code|{{m|Pudełko|Nazwa przestrzeni nazw dyskusji 3|typ jednostki 2{{=}}Podręcznik|nazwa jednostki 2{{=}}Szablon:Strona|numer jednostki{{=}}2}}}} (ale wtedy jest brana przestrzeń nazw z nazwy jednostki), ale o tym więcej w rozdziałach {{Code|{{sr|#p["Dyskusyjny typ jednostki 3"](frame,i)|p=Pudełko}}}} w „{{sr|#Funkcje typu jednostki|p=Pudełko}}”, one definiują dane przestrzenie dyskusji, ale można użyć parametru dyskusji typu jednostki z obojętnie jaką wartością niepustą, czy pustą, czy nawet jej nie podamy, wtedy wyświetli się nazwa przestrzeni nazw dyskusji. Jeżeli typ jednostki bazowy wskazuje na przestrzeń nazw główną, wtedy się nie liczą parametry nazw jednostek, a w przypadku numerkowego, wtedy się liczy. Typ jednostki nie ma takiej samej wartości dla przestrzeni przedmiotowej, co dyskusji. Również parametry typu jednostki nie powinno się podawać w dziecku w ramce, tylko w rodzicu w szablonie jako parametry, w którym ta ramka jest wywoływana, ale tutaj podano jedynie dla przykładu, jak najłatwiej sprawdzić działanie tych parametrów tej funkcji. Najpierw w funkcji nagłówku brane są parametry nazw przestrzeni nazw, a jeżeli ich nie ma, to parametry typu jednostki, a jeżeli nie ma lub parametry przestrzenne wskazują na przestrzeń główną, i nie ma nazwy jednostki, to generowane są nazwy tej funkcji na podstawie aktualnej strony. == Funkcje nazw jednostki == === {{Code|p["Nazwa jednostki"](frame,i)}} === == Funkcje nazw jednostki drugiej wersji == === {{Code|p["Nazwa jednostki 2"](frame,i)}} === === {{Code|p["Nazwa przedmiotowa jednostki 2"](frame,i)}} === === {{Code|p["Nazwa dyskusji jednostki 2"](frame,i)}} === == Funkcje nazw jednostki trzeciej wersji == === {{Code|p["Nazwa jednostki 3"](frame,i)}} === === {{Code|p["Nazwa przedmiotowa jednostki 3"](frame,i)}} === === {{Code|p["Nazwa dyskusji jednostki 3"](frame,i)}} === == Funkcje pełnych nazw jednostki == === {{Code|p["Pełna nazwa jednostki"](frame,i)}} === === {{Code|p["Pełna nazwa przedmiotowa jednostki"](frame,i)}} === === {{Code|p["Pełna nazwa dyskusji jednostki"](frame,i)}} === == Funkcje pełnych nazw jednostki drugiej wersji == === {{Code|p["Pełna nazwa jednostki 2"](frame,i)}} === === {{Code|p["Pełna nazwa przedmiotowa jednostki 2"](frame,i)}} === === {{Code|p["Pełna nazwa dyskusji jednostki 2"](frame,i)}} === == Funkcje pełnych nazw jednostki trzeciej wersji == === {{Code|p["Pełna nazwa jednostki 3"](frame,i)}} === === {{Code|p["Pełna nazwa przedmiotowa jednostki 3"](frame,i)}} === === {{Code|p["Pełna nazwa dyskusji jednostki 3"](frame,i)}} === == Funkcje typu jednostki == === {{Code|p["Typ jednostki"](frame,i)}} === === {{Code|p["Typ jednostki 2"](frame,i)}} === === {{Code|p["Typ jednostki 3"](frame,i)}} === === Funkcje typu jednostki przedmiotowe === ==== {{Code|p["Przedmiotowy typ jednostki"](frame,i)}} ==== ==== {{Code|p["Przedmiotowy typ jednostki 2"](frame,i)}} ==== ==== {{Code|p["Przedmiotowy typ jednostki 3"](frame,i)}} ==== === Fukcje typu jednostki dyskusji === ==== {{Code|p["Dyskusyjny typ jednostki"](frame,i)}} ==== ==== {{Code|p["Dyskusyjny typ jednostki 2"](frame,i)}} ==== ==== {{Code|p["Dyskusyjny typ jednostki 3"](frame,i)}} ==== == Funkcje chech pudełka == === {{Code|p["Cecha pudełka"](frame)}} === === {{Code|p["Przedmiotowa cecha pudełka"](frame)}} === === {{Code|p["Dyskusyjna cecha pudełka"](frame)}} === == Fukcje ogólnego pudełka == === {{Code|p["Ogólne pudełko"](frame)}} === == Funkcje ogólne == === {{Code|p["Tekst pudełka"](frame)}} === == Funkcje błędów pudełka == === {{Code|p["Błędy pudełka"](frame)}} === === {{Code|p["Przedmiotowe błędy pudełka"](frame)}} === === {{Code|p["Dyskusyjne błędy pudełka"](frame)}} === == Funkcje nazw stron == === {{Code|p["Nazwa strony głównej projektu"](frame,i)}} === === {{Code|p["Nazwa strony głównej dla dzieci projektu"](frame,i)}} === == Funkcje kodów == === {{Code|p["Kod języka"](frame,i)}} === === {{Code|p["Kod projektu"](frame,i)}} === === {{Code|p["Klucz projektu"](frame,i)}} === == Funkcje wiki == === {{Code|p["Inny niż język bieżący wiki"](frame)}} === === {{Code|p["Inne niż lokalne wiki"](frame)}} === === {{Code|p["Inne niż bieżące wiki"](frame)}} === == Funkcje typów parametrów, czy podane je == === {{Code|p["Podano parametry nienazwane"](frame)}} === === {{Code|p["Podano parametry numerowane"](frame)}} === === {{Code|p["Podano parametry nazwane"](frame)}} === == Funkcje kodów tego projektu == === {{Code|p["Kod projektu tego projektu"](frame)}} === === {{Code|p["Kod języka tego projektu"](frame)}} === === {{Code|p["Klucz projektu tego projektu"](frame)}} === == Funkcje stron == === {{Code|p["Strona główna tego projektu"](frame)}} === === {{Code|p["Strona główna dla dzieci tego projektu"](frame)}} === == Funkcje nazw stron drugiej wersji == === {{Code|p["Nazwa strony głównej dla dzieci projektu 2"](frame)}} === === {{Code| p["Nazwa strony głównej projektu 2"](frame)}} === {{BrClear}} <noinclude><!-- -->{{ProstaStronaKoniec}}<!-- -->{{Kategoria|Opisy funkcji, w Lua w Scribunto, w modułach}}<!-- --></noinclude> 5sljqt2ra3owj6eqkticictag0lkk1w 540480 540478 2026-04-24T11:47:27Z Persino 2851 /* Funkcje typu jednostki */ 540480 wikitext text/x-wiki <noinclude>{{ProstaStronaStart | nagłówek = {{Podrozdział|{{ld2|Pudełko}}|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 pudelko_modul=require("Module:Pudełko"); </syntaxhighlight> dzięki, któremu można wypisywać funkcje należącego do niego. Posługuje się na parametrach pudełkowych {{Parametr|nazwa przestrzeni nazw}} (czy też bez numerka {{Parametr|nazwa przestrzeni nazw i}} dla tego numerowanego) lub te z numerkiem po jednej spacji w nich (ale nie dla tego z końcówką {{Code| i}}) mogą zostać użyte jako parametry szablonu. Moduł {{Code|{{ld2|Pudełko}}}} przedstawia funkcje nazw w oparciu o funkcje nazw {{Code|{{ld2|Nazwy}}}}, generuje on nazwy za pomocą parametrów pudełkowych podanych poniżej. Parametr {{Parametr|nazwa jednostki}} (lub parametr {{Parametr|cel}} dla numerka tego pierwszego, tego alternatywnego), lub te z numerkiem po jednej spacji w nazwie parametru, albo numerowane numerkami {{Code|1}}, {{Code|2}},..., mogą zostać użyte jako parametry szablonu. Parametry określające rodzaj jednostki {{Parametr|typ jednostki}} z {{Parametr|dyskusja typu jednostki}}, itp. w wersjach z numerkiem po jednej spacji w nich mogą zostać użyte jako parametry szablonu. A te tymi numerowanymi liczbami naturalnymi {{Tt|nazwy jednostki}} od jedynki wzwyż poprzez szablon, w którym są one użyte, one też mogą być użyte z dwukropkiem, te numerowane, na samym początku nazwy, wtedy one są traktowane jako pełne nazwy strony, i wtedy one nie zostaną z interpretowane, że do nich trzeba użyć parametr odpowiedni z nazwą przetrzeni nazw z tego numerowanego, czy ogólny, aby utworzyć znów inną pełną nazwę strony dla tego numerka. Zestawienie: * {{Code|nazwa przestrzeni nazw}} i {{Code|nazwa przestrzeni nazw i}} (ogólna nazwa przestrzeni nazw dla wszystkich numerków, i tych numerowanych jednostek) - i to pierwsze z numerkiem, tzn. {{Code|nazwa przestrzeni nazw 1}}, {{Code|nazwa przestrzeni nazw 2}}, ..., * {{Code|nazwa jednostki}} - i te z numerkiem: {{Code|nazwa jednostki 1}}, {{Code|nazwa jednostki 2}}, ..., lub gdy jest zamiast tego parametrem numerowany, {{Code|1}}, {{Code|2}},..., który dla tego pierwszego może być uznany jako: {{Code|cel}} {{=}} {{Code|1}}, * {{Code|typ jednostki}} (parametr bazowy) i {{Code|typ jednostki i}} (parametr domyślny numerkowy) - i te z numerkiem: {{Code|typ jednostki 1}}, {{Code|typ jednostki 2}}, ..., tzn. gdy chcemy określić z jakim typem jednostki mamy do czynienia w zależności do jakiej przestrzeni nazw należy, a w danej, czy jest on np. programowy, czy tylko jest opisem, jak to bywa w szablonach {{Np|Template|link=tak}}, podobnie jest w przypadku {{Np|Module|link=tak}}, czy jak jest w innych przestrzeniach nazw, ** {{Code|dyskusja typu jednostki}} (parametr bazowy) i {{Code|dyskusja typu jednostki i}} (parametr domyślny numerkowy) - i te z numerkiem: {{Code|dyskusja typu jednostki 1}}, {{Code|dyskusja typu jednostki 2}}, ..., gdy chcemy określić wartością niepustą,że chodzi tutaj o typ jednostki. == {{Code|p.CzyNiepoprawnaNazwa(nazwa_jednostki)}} == Funkcja sprawdzajaca, czy jest poprawnie podana nazwa jednostki, czy ma poprawną nazwę. Znakami tymi, z których nie powinna składać się nazwa jest {{Code|<nowiki>{}<>|[]#\n</nowiki>}} i dodatkowo znak {{Code|&#127;}} (kod {{Code|{{Nowiki|&#127;}}}}). Też nie może składać się z trzech znaków tyldy, tzn. {{Code|<nowiki>~~~</nowiki>}}. Również w swojej budowie nie może składać się ze kodów {{Strong|HTML}} literowych o wzorze {{Code|{{Nowiki|&(%a+);}}}}. Natomiast może składać się z {{Code|{{Nowiki|&#(%d+);}}}} i {{Code|{{Nowiki|&#x(%x+);}}}}, ale w pierw te kody muszą być zamienione na normalne znaki. Skrótowa definicja funkcji: <syntaxhighlight lang="lua"> function p.CzyNiepoprawnaNazwa(nazwa_jednostki)...end; </syntaxhighlight> Wtedy ciało funkcji tej, czyli jego definicja w środku, jest: <syntaxhighlight lang="lua"> -- Moduł: "Moduł:Html/dane", służy do ładowania znaku o kodzie HTML "&#127;"; local html_dane_modul=mw.loadData("Module:Html/dane"); return mw.ustring.match(nazwa_jednostki,"[{}<>|%[%]#\n"..html_dane_modul.znak_127.."]+") or mw.ustring.match(nazwa_jednostki,"~~~") or mw.ustring.match(nazwa_jednostki,"&(%a+);"); </syntaxhighlight> Parametry: * {{Code|nazwa_jednostki}} - nazwa jednostki do sprawdzenia. Przykłady: <syntaxhighlight lang="lua"> local pudelko_modul=require("Module:Pudełko"); -- Podana przykładowa niepoprawna nazwa jedostki local nazwa_jednostki="Nazwa pliku [[Nazwa linku w pliku]]"; -- Fukcja zwróci wartość: local czy_poprawna_nazwa=true; local czy_poprawna_nazwa=pudelko_modul.CzyNiepoprawnaNazwa(nazwa_jednostki); </syntaxhighlight> == Funkcje nazw przestrzeni nazw == === {{Code|p["Nazwa przestrzeni nazw"](frame,...)}} === Funkcja pisze nazwę przestrzeni nazw, niezależnie, czy to jest przedmiotowa, czy dyskusji, według podanej w zmiennej {{Code|nazwa przestrzeni nazw}} dla pozycja bazowej w podanych parametrach szablonu rodzicu ramki dziecka, lub dla innej pozycji należy parametr podawać w formie {{Code|nazwa przestrzeni nazw 1}}, {{Code|nazwa przestrzeni nazw 2}}, {{Code|nazwa przestrzeni nazw 3}},..., lub te parametry można podać w postaci ogólnej {{Code|nazwa przestrzeni nazw i}}. Parametry podaje się w parametrach rodzica wywołania tej funkcji {{Code|{{m|Pudełko|Nazwa przestrzeni nazw}}}} (ale ich nie trzeba podawać w dziecku, ale można) i w parametrach dziecka, jeśli chodzi o zmienną {{Code|numer jednostki}}, czyli np.: {{Code|{{m|Pudełko|Nazwa przestrzeni nazw|numer jednostki{{=}}<jakaś liczba całkowita dodatnia>}}}}. Te parametry przestrzenne zamiast w rodzicu w szablonie można podać w ramce dziecka, wtedy parametry dziecka mają pierwszeństwo. Przestrzeń nazw z parametrów nazw przestrzennych może odpowiadać wartości przestrzeni głównej, to wtedy odpowiednia przestrzeń nazw z parametru nazwy jednostki się nie liczy w tej funkcji, aby się liczyła należy użyć funkcji {{Code|{{sr|#p["Nazwa przestrzeni nazw 2"](frame,...)|p=Pudełko}}}}. Definicja skrótowa funkcji: <syntaxhighlight lang="lua"> p["Nazwa przestrzeni nazw"]=function(frame,czy_uwzglednic_alternatywna_nazwe,i)...end; </syntaxhighlight> Wtedy ciało funkcji tej, czyli jego definicja w środku, jest: <syntaxhighlight lang="lua"> -- Jest liczony numer parametru nazwy przestrzeni nazw, domyslnie chodzi tu o numer bazowy parametrów przestrzennych; local numer_jednostki=i or frame.args["numer jednostki"]; local liczba_numer_jednostki=((numer_jednostki)and(tonumber(numer_jednostki))or 0); local pudelko_pomocne_modul=require("Module:Pudełko/Pomocne"); -- Liczy nazwę przestrzeni nazw na podstawie podanych parametrów; return pudelko_pomocne_modul.Nazwa_przestrzeni_nazw(frame,0, czy_uwzglednic_alternatywna_nazwe,liczba_numer_jednostki); </syntaxhighlight> Parametry funkcji: * {{Code|frame}} - tablica ramki tablicy transportu, * {{Code|czy_uwzglednic_alternatywna_nazwe}} - czy ma uwzględniać nazwę przestrzeni nazw domyślną szablonu, dostępne wartości: {{Code|false}}, w której nazwa domyślna nie jest uwzględniana wtedy, oraz {{Code|nil}} i {{Code|true}}, które oznaczają to samo, w tym jeżeli ona jest uwzględniana, wtedy jest brany parametr pierwszy dziecka, który musi istnieć przy takiej wartości tego parametru, tzn. {{Code|{{m|Pudełko|Nazwa przestrzeni nazw|Szablon}}}}, a ten element jest używany, gdy nazwa uzyskana nazwy przestrzeni nazw jest w takim przypadku błędna, a jeżeli wtedy nazwa domyślna jest błędna, czyli {{Code|{{m|Pudełko|Nazwa przestrzeni nazw|Moja przestrzeń}}}}, wtedy funkcja zwraca stan błędu {{Code|(błąd)}}. * {{Code|i}} - numer zmiennej nazwy przestrzeni nazw. Funkcja wykorzystuje {{Code|{{sr|#p.Nazwa_przestrzeni_nazw(frame,...)|p=Pudełko/Pomocne}}}} do wyznaczania ogólnego nazwy przestrzeni nazw dla pozycji bazowej i numerkowej, tzn. dla pozycji: jeden, dwa, trzy,..., itd, i ich ogólnej. Parametr ramki tablicy transportu rodzica szablonu: * {{Code|nazwa przestrzeni nazw}}, {{Code|nazwa przestrzeni nazw 1}}, {{Code|nazwa przestrzeni nazw 2}}, {{Code|nazwa przestrzeni nazw 3}},..., {{Code|nazwa przestrzeni nazw i}} - nazwy przestrzeni nazw dla pozycji bazowej oraz zwykłej i ogólnej numerkowej, * {{Code|typ jednostki}}, {{Code|typ jednostki 1}}, {{Code|typ jednostki 2}}, {{Code|typ jednostki 3}},..., {{Code|typ jednostki i}} - typy jednostek, którym odpowiadają pewne przestrzenie przedmiotowe, dla pozycji bazowej, numerkowej i ogólnej, ** {{Code|dyskusja typu jednostki}}, {{Code|dyskusja typu jednostki 1}}, {{Code|dyskusja typ jednostki 2}}, {{Code|dyskusja typ jednostki 3}},..., {{Code|dyskusja typ jednostki i}} - czy dany typ jednostki ma przedstawiać, jeśli niepusta, przestrzeń dyskusji dla pozycji bazowej, numerkowej i ogólnej. Parametry ramki tablicy transportu dziecka: * Parametry dziecka są takie same jak rodzica dla funkcji pudełkowej plus tu wymienione, * {{Code|numer jednostki}} - jak parametr {{Code|i}} nie został ustawiony, to wtedy liczy się ta zmienna. Przykłady: <syntaxhighlight lang="mediawiki"> {{Nazwa szablonu|nazwa przestrzeni nazw=Wikibooks|nazwa przestrzeni nazw 2=Szablon|nazwa przestrzeni nazw i=Moduł}} </syntaxhighlight> W dziecku powiedzmy jest wywołanie, i szukamy nazwy przestrzeni nazw o numerze dwa, która nie została podana, ale istnieje za to jej wersji ogólna {{Code|nazwa przestrzeni nazw i}} i domyślna {{Code|nazwa przestrzeni nazw}}: <syntaxhighlight lang="mediawiki"> {{#invoke:Pudełko|Nazwa przestrzeni nazw|numer jednostki=1}} </syntaxhighlight> Na podstawie powyższego przykładu otrzymamy wynik o schemacie, nie wyniku, bo tam nie ma zmiennej {{Code|nazwa przestrzeni nazw 1}}, ale jest {{Code|nazwa przestrzeni nazw i}}: <syntaxhighlight lang="mediawiki"> <!-- Ale nie "nazwa przestrzeni nazw", bo jej nie ma, ale za to istnieje "nazwa przestrzeni nazw i"; --> <!-- nazwa przestrzeni nazw 2=nazwa przestrzeni nazw i=Moduł; --> <!-- Czyli wynik: --> Moduł <!-- Widzimy, że wygenerowała się nazwa przestrzeni nazw, którą jest przestrzeń programowa, którą również jest "Szablon"; --> </syntaxhighlight> Nie jest brana w tym powyższym przykładzie zmienna {{Code|nazwa przestrzeni nazw}}, bo jej nie ma, ale za to jest {{Code|nazwa przestrzeni nazw i}}, bo ona występuje jako parametr domyślny ogólny dla parametrów numerkowych. Przykłady w wikikodzie: * {{Code|{{m|Pudełko|Nazwa przestrzeni nazw|numer jednostki{{=}}2}}}} → {{Tt|{{#invoke:Pudełko|Nazwa przestrzeni nazw|numer jednostki=2}}}} * {{Code|{{m|Pudełko|Nazwa przestrzeni nazw|Szablon|nazwa przestrzeni nazw i{{=}}Moja przestrzeń|numer jednostki{{=}}2}}}} → {{Tt|{{#invoke:Pudełko|Nazwa przestrzeni nazw|Szablon|nazwa przestrzeni nazw i=Moja przestrzeń|numer jednostki=2}}}} * {{Code|{{m|Pudełko|Nazwa przestrzeni nazw|nazwa przestrzeni nazw 2{{=}}Szablon|numer jednostki{{=}}2}}}} → {{Tt|{{#invoke:Pudełko|Nazwa przestrzeni nazw|nazwa przestrzeni nazw 2=Szablon|numer jednostki=2}}}} * {{Code|{{m|Pudełko|Nazwa przestrzeni nazw|nazwa przestrzeni nazw 2{{=}}Szablon|numer jednostki{{=}}2}}}} → {{Tt|{{#invoke:Pudełko|Nazwa przestrzeni nazw|nazwa przestrzeni nazw i=Szablon|numer jednostki=2}}}} * {{Code|{{m|Pudełko|Nazwa przestrzeni nazw|nazwa przestrzeni nazw{{=}}Szablon|numer jednostki{{=}}2}}}} → {{Tt|{{#invoke:Pudełko|Nazwa przestrzeni nazw|nazwa przestrzeni nazw=Szablon|numer jednostki=2}}}} Powyżej dla przykładu podano parametry nie w rodzicu w szablonie, tylko w dziecku, jeśli chodzi o parametry nazw przestrzeni nazw, ale ich się za to nie powinno podawać w tych ramach, tylko w szablonach, w których wywoływane są te ramki pudełek {{Code|{{m|Pudełko}}}}, ale tak tutaj tak zrobiono by było najłatwiej sprawdzić działanie tego typu funkcji. Analogicznie możemy podawać parametry typu jednostki, np.: wywołaniu modułowym {{Code|{{m|Pudełko|Nazwa przestrzeni nazw|typ jednostki 2{{=}}strona szablonu|numer jednostki{{=}}2}}}}, ale o tym więcej w rozdziałach {{Code|{{sr|#p["Typ jednostki"](frame,i)|p=Pudełko}}}} w „{{sr|#Funkcje typu jednostki|p=Pudełko}}”, one definiują dane przestrzenie przedmiotowe, czy dyskusji, ale można lub nie użyć parametru dyskusji typu jednostki z wartością niepustą, wtedy wyświetli się nazwa przestrzeni nazw dyskusji. Typ jednostki nie ma takiej samej wartości dla przestrzeni przedmiotowej, co dyskusji. Również parametry typu jednostki nie powinno się podawać w dziecku w ramce, tylko w rodzicu w szablonie jako parametry, w którym ta ramka jest wywoływana, ale tutaj podano jedynie dla przykładu, jak najłatwiej sprawdzić działanie tych parametrów tej funkcji. Najpierw w funkcji nagłówku brane są parametry nazw przestrzeni nazw, a jeżeli ich nie ma, to parametry typu jednostki, a jeżeli nie ma, to generowane są nazwy na podstawie aktualnego modułu. === {{Code|p["Nazwa przedmiotowej przestrzeni nazw"](frame,...)}} === Funkcja pisze przedmiotową nazwę przestrzeni nazw jakikolwiek nazwy przestrzeni nazw (tzn. nazwę przedmiotową nazwy przestrzenie nazw, czyli nie dyskusji, zamieniana jest na nią samą, czyli identyfikator przestrzeni się nie zmienia, a dyskusji, nie przedmiotową, przekształca się na przedmiotową jej odpowiadającą, czyli w tym przypadku identyfikator przestrzeni zmniejsza się o numer mniej), według podanej w zmiennej {{Code|nazwa przestrzeni nazw}} dla pozycja bazowej w podanych parametrach szablonu rodzicu ramki dziecka, lub dla innej pozycji należy parametr podawać w formie {{Code|nazwa przestrzeni nazw 1}}, {{Code|nazwa przestrzeni nazw 2}}, {{Code|nazwa przestrzeni nazw 3}},..., lub te parametry można podać w postaci ogólnej {{Code|nazwa przestrzeni nazw i}}. Parametry podaje się w parametrach rodzica wywołania tej funkcji {{Code|{{m|Pudełko|Nazwa przedmiotowej przestrzeni nazw}}}} (ale ich nie trzeba podawać w dziecku, ale można) i w parametrach dziecka, jeśli chodzi o zmienną {{Code|numer jednostki}}, czyli np.: {{Code|{{m|Pudełko|Nazwa przedmiotowej przestrzeni nazw|numer jednostki{{=}}<jakaś liczba całkowita dodatnia>}}}}. Te parametry przestrzenne zamiast w rodzicu w szablonie można podać w ramce dziecka, wtedy parametry dziecka mają pierwszeństwo. Parametry przestrzenne mogą mogą być podane w postaci przestrzeni przedmiotowej lub dyskusji, ale ta funkcja zawsze ją zamienia na przedmiotową. Przestrzeń nazw z parametrów nazw przestrzennych może odpowiadać wartości przestrzeni głównej, to wtedy odpowiednia przestrzeń nazw z parametru nazwy jednostki się nie liczy w tej funkcji, aby się liczyła należy użyć funkcji {{Code|{{sr|#p["Nazwa przedmiotowej przestrzeni nazw 2"](frame,...)|p=Pudełko}}}}. Definicja skrótowa funkcji: <syntaxhighlight lang="lua"> p["Nazwa przedmiotowej przestrzeni nazw"]=function(frame,czy_uwzglednic_alternatywna_nazwe,i)...end; </syntaxhighlight> Wtedy ciało funkcji tej, czyli jego definicja w środku, jest: <syntaxhighlight lang="lua"> -- Jest liczony numer parametru nazwy przestrzeni nazw, domyslnie chodzi tu o numer bazowy parametrów przestrzennych; local numer_jednostki=i or frame.args["numer jednostki"]; local liczba_numer_jednostki=((numer_jednostki)and(tonumber(numer_jednostki))or 0); local pudelko_pomocne_modul=require("Module:Pudełko/Pomocne"); -- Liczy nazwę przestrzeni nazw przedmiotową na podstawie podanych parametrów; return pudelko_pomocne_modul.Nazwa_przestrzeni_nazw(frame,1, czy_uwzglednic_alternatywna_nazwe,liczba_numer_jednostki); </syntaxhighlight> Parametry funkcji: * {{Code|frame}} - tablica ramki tablicy transportu, * {{Code|czy_uwzglednic_alternatywna_nazwe}} - czy ma uwzględniać nazwę przestrzeni nazw domyślną szablonu, dostępne wartości: {{Code|false}}, w której nazwa domyślna nie jest uwzględniana wtedy, oraz {{Code|nil}} i {{Code|true}}, które oznaczają to samo, w tym jeżeli ona jest uwzględniana, wtedy jest brany parametr pierwszy dziecka, który musi istnieć przy takiej wartości tego parametru, tzn. {{Code|{{m|Pudełko|Nazwa przedmiotowej przestrzeni nazw|Dyskusja szablonu}}}} - ta nazwa domyślna zostanie zamieniona na przedmiotową, a jak ona by była przedmiotowa, to żadnej zamiany, by nie było, a jeśli nazwa uzyskana z nazwy przestrzeni nazw z parametrów przestrzennych jest w takim przypadku błędna, to w takim razie brany jest ten parametr, a jeżeli ta nazwa domyślna jest błędna, czyli {{Code|{{m|Pudełko|Nazwa przedmiotowej przestrzeni nazw|Moja przestrzeń}}}}, wtedy funkcja zwraca stan błędu {{Code|(błąd)}}. * {{Code|i}} - numer zmiennej nazwy przestrzeni nazw. Funkcja wykorzystuje {{Code|{{sr|#p.Nazwa_przestrzeni_nazw(frame,...)|p=Pudełko/Pomocne}}}} do wyznaczania ogólnego nazwy przestrzeni nazw dla pozycji bazowej i numerkowej, tzn. dla pozycji: jeden, dwa, trzy,..., itd, i ich ogólnej. Parametr ramki tablicy transportu rodzica szablonu: * {{Code|nazwa przestrzeni nazw}}, {{Code|nazwa przestrzeni nazw 1}}, {{Code|nazwa przestrzeni nazw 2}}, {{Code|nazwa przestrzeni nazw 3}},..., {{Code|nazwa przestrzeni nazw i}} - nazwy przestrzeni nazw dla pozycji bazowej oraz zwykłej i ogólnej numerkowej, * {{Code|typ jednostki}}, {{Code|typ jednostki 1}}, {{Code|typ jednostki 2}}, {{Code|typ jednostki 3}},..., {{Code|typ jednostki i}} - typy jednostek, którym odpowiadają pewne przestrzenie przedmiotowe, dla pozycji bazowej, numerkowej i ogólnej. Parametry ramki tablicy transportu dziecka: * Parametry dziecka są takie same jak rodzica dla funkcji pudełkowej plus tu wymienione, * {{Code|numer jednostki}} - jak parametr {{Code|i}} nie został ustawiony, to wtedy liczy się ta zmienna. Przykłady: <syntaxhighlight lang="mediawiki"> {{Nazwa szablonu|nazwa przestrzeni nazw=Dyskusja Wikibooks|nazwa przestrzeni nazw 2=Dyskusja szablonu|nazwa przestrzeni nazw i=Dyskusja modułu}} </syntaxhighlight> W dziecku powiedzmy jest wywołanie, i szukamy nazwy przestrzeni nazw o numerze dwa, która nie została podana, ale istnieje za to jej wersji ogólna {{Code|nazwa przestrzeni nazw i}} i domyślna {{Code|nazwa przestrzeni nazw}}: <syntaxhighlight lang="mediawiki"> {{#invoke:Pudełko|Nazwa przedmiotowej przestrzeni nazw|numer jednostki=1}} </syntaxhighlight> Na podstawie powyższego przykładu otrzymamy wynik o schemacie, nie wyniku, bo tam nie ma zmiennej {{Code|nazwa przestrzeni nazw 1}}, ale jest {{Code|nazwa przestrzeni nazw i}}: <syntaxhighlight lang="mediawiki"> <!-- Ale nie "nazwa przestrzeni nazw", bo jej nie ma, ale za to istnieje "nazwa przestrzeni nazw i"; --> <!-- nazwa przestrzeni nazw 2=nazwa przestrzeni nazw i=Dyskusja modułu; --> <!-- Czyli wynik: --> Moduł <!-- Widzimy, że wygenerowała się nazwa przestrzeni nazw, którą jest przestrzeń przedmiotowa programowa przestrzeni dyskusji "Dyskusja modułu", którą również jest "Szablon" jego przestrzeni dyskusji "Dyskusja szablonu", a dla ich przestrzeni przedmiotowej, zamiast dyskusji, to samo przekształca się na to samo; --> </syntaxhighlight> Nie jest brana w tym powyższym przykładzie zmienna {{Code|nazwa przestrzeni nazw}}, bo jej nie ma, ale za to jest {{Code|nazwa przestrzeni nazw i}}, bo ona występuje jako parametr domyślny ogólny dla parametrów numerkowych. Przykłady w wikikodzie: * {{Code|{{m|Pudełko|Nazwa przedmiotowej przestrzeni nazw|numer jednostki{{=}}2}}}} → {{Tt|{{#invoke:Pudełko|Nazwa przedmiotowej przestrzeni nazw|numer jednostki=2}}}} * {{Code|{{m|Pudełko|Nazwa przedmiotowej przestrzeni nazw|Dyskusja szablonu|nazwa przestrzeni nazw i{{=}}Moja przestrzeń|numer jednostki{{=}}2}}}} → {{Tt|{{#invoke:Pudełko|Nazwa przedmiotowej przestrzeni nazw|Dyskusja szablonu|nazwa przestrzeni nazw i=Moja przestrzeń|numer jednostki=2}}}} * {{Code|{{m|Pudełko|Nazwa przedmiotowej przestrzeni nazw|nazwa przestrzeni nazw 2{{=}}Dyskusja szablonu|numer jednostki{{=}}2}}}} → {{Tt|{{#invoke:Pudełko|Nazwa przedmiotowej przestrzeni nazw|nazwa przestrzeni nazw 2=Dyskusja szablonu|numer jednostki=2}}}} * {{Code|{{m|Pudełko|Nazwa przedmiotowej przestrzeni nazw|nazwa przestrzeni nazw 2{{=}}Dyskusja szablonu|numer jednostki{{=}}2}}}} → {{Tt|{{#invoke:Pudełko|Nazwa przedmiotowej przestrzeni nazw|nazwa przestrzeni nazw i=Dyskusja szablonu|numer jednostki=2}}}} * {{Code|{{m|Pudełko|Nazwa przedmiotowej przestrzeni nazw|nazwa przestrzeni nazw{{=}}Dyskusja szablonu|numer jednostki{{=}}2}}}} → {{Tt|{{#invoke:Pudełko|Nazwa przedmiotowej przestrzeni nazw|nazwa przestrzeni nazw=Dyskusja szablonu|numer jednostki=2}}}} Powyżej dla przykładu podano parametry nie w rodzicu w szablonie, tylko w dziecku, jeśli chodzi o parametry nazw przestrzeni nazw, ale ich się za to nie powinno podawać w tych ramach, tylko w szablonach, w których wywoływane są te ramki pudełek {{Code|{{m|Pudełko}}}}, ale tak tutaj tak zrobiono by było najłatwiej sprawdzić działanie tego typu funkcji. Analogicznie możemy podawać parametry typu jednostki, np.: wywołaniu modułowym {{Code|{{m|Pudełko|Nazwa przedmiotowej przestrzeni nazw|typ jednostki 2{{=}}strona szablonu|numer jednostki{{=}}2}}}}, ale o tym więcej w rozdziałach {{Code|{{sr|#p["Przedmiotowy typ jednostki"](frame,i)|p=Pudełko}}}} w „{{sr|#Funkcje typu jednostki|p=Pudełko}}”, one definiują dane przestrzenie przedmiotowe, ale wtedy ta sama nazwa przestrzeni nazw reprezentowana przez typ jednostki jest zamieniony na nazwę przestrzeni przedmiotową, lepiej jest tutaj używać parametrów przestrzennych nazw niż typu jednostki. Typ jednostki nie ma takiej samej wartości dla przestrzeni przedmiotowej, co dyskusji. Tutaj parametr dyskusji typu jednostki bazowy i numerkowy ogólny, czy szczegółowy, nie gra roli, bo nawet, gdy wygenerujemy nazwę przestrzeni dyskusji za pomoca tego parametru, to i tak otrzymamy na samym końcu jego nazwę przedmiotową. Również parametry typu jednostki nie powinno się podawać w dziecku w ramce, tylko w rodzicu w szablonie jako parametry, w którym ta ramka jest wywoływana, ale tutaj podano jedynie dla przykładu, jak najłatwiej sprawdzić działanie tych parametrów tej funkcji. Najpierw w funkcji nagłówku brane są parametry nazw przestrzeni nazw, a jeżeli ich nie ma, to parametry typu jednostki, a jeżeli nie ma, to generowane są nazwy na podstawie aktualnego modułu. === {{Code|p["Nazwa przestrzeni nazw dyskusji"](frame,...)}} === Funkcja pisze nazwę przestrzeni nazw dyskusji jakikolwiek nazwy przestrzeni nazw (tzn. nazwę przedmiotową nazwy przestrzenie nazw, czyli nie dyskusji, zamieniana jest na dyskusji, czyli identyfikator przestrzeni się zmienia jeden wyżej, a dyskusji, nie przedmiotową, przekształca się na tą samą), według podanej w zmiennej {{Code|nazwa przestrzeni nazw}} dla pozycja bazowej w podanych parametrach szablonu rodzicu ramki dziecka, lub dla innej pozycji należy parametr podawać w formie {{Code|nazwa przestrzeni nazw 1}}, {{Code|nazwa przestrzeni nazw 2}}, {{Code|nazwa przestrzeni nazw 3}},..., lub te parametry można podać w postaci ogólnej {{Code|nazwa przestrzeni nazw i}}. Parametry podaje się w parametrach rodzica wywołania tej funkcji {{Code|{{m|Pudełko|Nazwa przestrzeni nazw dyskusji}}}} (ale ich nie trzeba podawać w dziecku, ale można) i w parametrach dziecka, jeśli chodzi o zmienną {{Code|numer jednostki}}, czyli np.: {{Code|{{m|Pudełko|Nazwa przestrzeni nazw dyskusji|numer jednostki{{=}}<jakaś liczba całkowita dodatnia>}}}}. Te parametry przestrzenne zamiast w rodzicu w szablonie można podać w ramce dziecka, wtedy parametry dziecka mają pierwszeństwo. Parametry przestrzenne mogą mogą być podane w postaci przestrzeni przedmiotowej lub dyskusji, ale ta funkcja zawsze ją zamienia na dyskusji. Przestrzeń nazw z parametrów nazw przestrzennych może odpowiadać wartości przestrzeni głównej, to wtedy odpowiednia przestrzeń nazw z parametru nazwy jednostki się nie liczy w tej funkcji, aby się liczyła należy użyć funkcji {{Code|{{sr|#p["Nazwa przestrzeni nazw dyskusji 2"](frame,...)|p=Pudełko}}}}. Definicja skrótowa funkcji: <syntaxhighlight lang="lua"> p["Nazwa przestrzeni nazw dyskusji"]=function(frame,czy_uwzglednic_alternatywna_nazwe,i)...end; </syntaxhighlight> Wtedy ciało funkcji tej, czyli jego definicja w środku, jest: <syntaxhighlight lang="lua"> -- Jest liczony numer parametru nazwy przestrzeni nazw, domyslnie chodzi tu o numer bazowy parametrów przestrzennych; local numer_jednostki=i or frame.args["numer jednostki"]; local liczba_numer_jednostki=((numer_jednostki)and(tonumber(numer_jednostki))or 0); local pudelko_pomocne_modul=require("Module:Pudełko/Pomocne"); -- Liczy nazwę przestrzeni nazw dyskusji na podstawie podanych parametrów; return pudelko_pomocne_modul.Nazwa_przestrzeni_nazw(frame,2, czy_uwzglednic_alternatywna_nazwe,liczba_numer_jednostki); </syntaxhighlight> Parametry funkcji: * {{Code|frame}} - tablica ramki tablicy transportu, * {{Code|czy_uwzglednic_alternatywna_nazwe}} - czy ma uwzględniać nazwę przestrzeni nazw domyślną szablonu, dostępne wartości: {{Code|false}}, w której nazwa domyślna nie jest uwzględniana wtedy, oraz {{Code|nil}} i {{Code|true}}, które oznaczają to samo, w tym jeżeli ona jest uwzględniana, wtedy jest brany parametr pierwszy dziecka, który musi istnieć przy takiej wartości tego parametru, tzn. {{Code|{{m|Pudełko|Nazwa przestrzeni nazw dyskusji|Szablon}}}} - ta nazwa domyślna zostanie przekształcona na dyskusji, a jeżeli ona by była dyskusji, to nie byłoby żadnego przekształcenia, a jeśli nazwa uzyskana nazwy przestrzeni nazw z parametrów przestrzennych jest w takim przypadku błędna, to w takim razie brany jest ten parametr, a jeżeli nazwa domyślna jest błędna, czyli {{Code|{{m|Pudełko|Nazwa przestrzeni nazw dyskusji|Moja przestrzeń}}}}, wtedy funkcja zwraca stan błędu {{Code|(błąd)}}. * {{Code|i}} - numer zmiennej nazwy przestrzeni nazw. Funkcja wykorzystuje {{Code|{{sr|#p.Nazwa_przestrzeni_nazw(frame,...)|p=Pudełko/Pomocne}}}} do wyznaczania ogólnego nazwy przestrzeni nazw dla pozycji bazowej i numerkowej, tzn. dla pozycji: jeden, dwa, trzy,..., itd, i ich ogólnej. Parametr ramki tablicy transportu rodzica szablonu: * {{Code|nazwa przestrzeni nazw}}, {{Code|nazwa przestrzeni nazw 1}}, {{Code|nazwa przestrzeni nazw 2}}, {{Code|nazwa przestrzeni nazw 3}},..., {{Code|nazwa przestrzeni nazw i}} - nazwy przestrzeni nazw dla pozycji bazowej oraz zwykłej i ogólnej numerkowej, * {{Code|typ jednostki}}, {{Code|typ jednostki 1}}, {{Code|typ jednostki 2}}, {{Code|typ jednostki 3}},..., {{Code|typ jednostki i}} - typy jednostek, którym odpowiadają pewne przestrzenie przedmiotowe, dla pozycji bazowej, numerkowej i ogólnej. Parametry ramki tablicy transportu dziecka: * Parametry dziecka są takie same jak rodzica dla funkcji pudełkowej plus tu wymienione, * {{Code|numer jednostki}} - jak parametr {{Code|i}} nie został ustawiony, to wtedy liczy się ta zmienna. Przykłady: <syntaxhighlight lang="mediawiki"> {{Nazwa szablonu|nazwa przestrzeni nazw=Wikibooks|nazwa przestrzeni nazw 2=Szablon|nazwa przestrzeni nazw i=Moduł}} </syntaxhighlight> W dziecku powiedzmy jest wywołanie, i szukamy nazwy przestrzeni nazw o numerze dwa, która nie została podana, ale istnieje za to jej wersji ogólna {{Code|nazwa przestrzeni nazw i}} i domyślna {{Code|nazwa przestrzeni nazw}}: <syntaxhighlight lang="mediawiki"> {{#invoke:Pudełko|Nazwa przestrzeni nazw dyskusji|numer jednostki=1}} </syntaxhighlight> Na podstawie powyższego przykładu otrzymamy wynik o schemacie, nie wyniku, bo tam nie ma zmiennej {{Code|nazwa przestrzeni nazw 1}}, ale jest {{Code|nazwa przestrzeni nazw i}}: <syntaxhighlight lang="mediawiki"> <!-- Ale nie "nazwa przestrzeni nazw", bo jej nie ma, ale za to istnieje "nazwa przestrzeni nazw i"; --> <!-- nazwa przestrzeni nazw 2=nazwa przestrzeni nazw i=Moduł; --> <!-- Czyli wynik: --> Dyskusja modułu <!-- Widzimy, że wygenerowała się nazwa przestrzeni nazw, którą jest przestrzeń dyskusji przestrzeni programowej przestrzeni przedmiotowej "Moduł", którą również jest "Szablon" jego przestrzeni dyskusji "Dyskusja szablonu", a dla ich przestrzeni przedmiotowej, zamiast dyskusji, to przekształca się na dyskusji jej odpowiadającą; --> </syntaxhighlight> Nie jest brana w tym powyższym przykładzie zmienna {{Code|nazwa przestrzeni nazw}}, bo jej nie ma, ale za to jest {{Code|nazwa przestrzeni nazw i}}, bo ona występuje jako parametr domyślny ogólny dla parametrów numerkowych. Przykłady w wikikodzie: * {{Code|{{m|Pudełko|Nazwa przestrzeni nazw dyskusji|numer jednostki{{=}}2}}}} → {{Tt|{{#invoke:Pudełko|Nazwa przestrzeni nazw dyskusji|numer jednostki=2}}}} * {{Code|{{m|Pudełko|Nazwa przestrzeni nazw dyskusji|Szablon|nazwa przestrzeni nazw i{{=}}Moja przestrzeń|numer jednostki{{=}}2}}}} → {{Tt|{{#invoke:Pudełko|Nazwa przestrzeni nazw dyskusji|Szablon|nazwa przestrzeni nazw i=Moja przestrzeń|numer jednostki=2}}}} * {{Code|{{m|Pudełko|Nazwa przestrzeni nazw dyskusji|nazwa przestrzeni nazw 2{{=}}Szablon|numer jednostki{{=}}2}}}} → {{Tt|{{#invoke:Pudełko|Nazwa przestrzeni nazw dyskusji|nazwa przestrzeni nazw 2=Szablon|numer jednostki=2}}}} * {{Code|{{m|Pudełko|Nazwa przestrzeni nazw dyskusji|nazwa przestrzeni nazw 2{{=}}Szablon|numer jednostki{{=}}2}}}} → {{Tt|{{#invoke:Pudełko|Nazwa przestrzeni nazw dyskusji|nazwa przestrzeni nazw i=Szablon|numer jednostki=2}}}} * {{Code|{{m|Pudełko|Nazwa przestrzeni nazw dyskusji|nazwa przestrzeni nazw{{=}}Szablon|numer jednostki{{=}}2}}}} → {{Tt|{{#invoke:Pudełko|Nazwa przestrzeni nazw dyskusji|nazwa przestrzeni nazw=Szablon|numer jednostki=2}}}} Powyżej dla przykładu podano parametry nie w rodzicu w szablonie, tylko w dziecku, jeśli chodzi o parametry nazw przestrzeni nazw, ale ich się za to nie powinno podawać w tych ramach, tylko w szablonach, w których wywoływane są te ramki pudełek {{Code|{{m|Pudełko}}}}, ale tak tutaj tak zrobiono by było najłatwiej sprawdzić działanie tego typu funkcji. Analogicznie możemy podawać parametry typu jednostki, np.: wywołaniu modułowym {{Code|{{m|Pudełko|Nazwa przestrzeni nazw dyskusji|typ jednostki 2{{=}}strona szablonu|numer jednostki{{=}}2}}}}, ale o tym więcej w rozdziałach {{Code|{{sr|#p["Dyskusyjny typ jednostki"](frame,i)|p=Pudełko}}}} w „{{sr|#Funkcje typu jednostki|p=Pudełko}}”, one definiują dane przestrzenie dyskusji, ale wtedy nazwa przestrzeni nazw reprezentowana przez {{Parametr|typ jednostki 2|strona szablonu}}, jest zamieniana na nazwę przestrzeni nazw dyskusji. Parametr dyskusji typu jednostki bazowy lub dla danego numerka ogólny, czy szczegółowy, nie gra roli. Typ jednostki nie ma takiej samej wartości dla przestrzeni przedmiotowej, co dyskusji. Również parametry typu jednostki nie powinno się podawać w dziecku w ramce, tylko w rodzicu w szablonie jako parametry, w którym ta ramka jest wywoływana, ale tutaj podano jedynie dla przykładu, jak najłatwiej sprawdzić działanie tych parametrów tej funkcji. Najpierw w funkcji nagłówku brane są parametry nazw przestrzeni nazw, a jeżeli ich nie ma, to parametry typu jednostki, a jeżeli nie ma, to generowane są nazwy na podstawie aktualnego modułu. == Funkcje nazw przestrzeni nazw drugiej wersji == === {{Code|p["Nazwa przestrzeni nazw 2"](frame,...)}} === Funkcja pisze nazwę przestrzeni nazw, niezależnie, czy to jest przedmiotowa, czy dyskusji, według, i nie zawsze tylko, podanej w zmiennej {{Code|nazwa przestrzeni nazw}} dla pozycja bazowej w podanych parametrach szablonu rodzicu ramki dziecka, lub dla innej pozycji należy parametr podawać w formie {{Code|nazwa przestrzeni nazw 1}}, {{Code|nazwa przestrzeni nazw 2}}, {{Code|nazwa przestrzeni nazw 3}},..., lub te parametry można podać w postaci ogólnej {{Code|nazwa przestrzeni nazw i}}. W tej funkcji trzeba też podawać parametry nazwy jednostek {{Code|nazwa jednostki}}, {{Code|nazwa jednostki 1}}, {{Code|nazwa jednostki 2}}, {{Code|nazwa jednostki 3}},... Parametry podaje się w parametrach rodzica wywołania tej funkcji {{Code|{{m|Pudełko|Nazwa przestrzeni nazw 2}}}} (ale ich nie trzeba podawać w dziecku, ale można) i w parametrach dziecka, jeśli chodzi o zmienną {{Code|numer jednostki}}, czyli np.: {{Code|{{m|Pudełko|Nazwa przestrzeni nazw 2|numer jednostki{{=}}<jakaś liczba całkowita dodatnia>}}}}. Te parametry przestrzenne zamiast w rodzicu w szablonie można podać w ramce dziecka, wtedy parametry dziecka mają pierwszeństwo. Przestrzeń nazw z parametrów nazw przestrzennych może odpowiadać wartości przestrzeni głównej, to wtedy odpowiednia przestrzeń nazw z parametru nazwy jednostki się liczy w tej funkcji, wtedy jest liczona nazwa przestrzeni nazw z tego parametru. Gdy parametry przestrzenne lub typ jednostki w drugim podejściu nie wskazują na przestrzeń główną, to wtedy działanie tej funkcji jest podobne do {{Code|{{sr|#p["Nazwa przestrzeni nazw"](frame,...)|p=Pudełko}}}}. Definicja skrótowa funkcji: <syntaxhighlight lang="lua"> p["Nazwa przestrzeni nazw 2"]=function(frame,czy_uwzglednic_alternatywna_nazwe,i)...end; </syntaxhighlight> Wtedy ciało funkcji tej, czyli jego definicja w środku, jest: <syntaxhighlight lang="lua"> local pudelko_pomocne_modul=require("Module:Pudełko/Pomocne"); -- Liczy nazwę przestrzeni nazw, jeżeli z parametrów przestrzennych przestrzeń wskazuje na główną, to wtedy jest liczona przestrzeń nazw z nazwy jednostki; return pudelko_pomocne_modul.Nazwa_przestrzeni_nazw_2(frame,czy_uwzglednic_alternatywna_nazwe,i) </syntaxhighlight> Parametry funkcji: * {{Code|frame}} - tablica ramki tablicy transportu, * {{Code|czy_uwzglednic_alternatywna_nazwe}} - czy ma uwzględniać nazwę przestrzeni nazw domyślną szablonu, dostępne wartości: {{Code|false}}, w której nazwa domyślna nie jest uwzględniana wtedy, oraz {{Code|nil}} i {{Code|true}}, które oznaczają to samo, w tym jeżeli ona jest uwzględniana, wtedy jest brany parametr pierwszy dziecka, który musi istnieć przy takiej wartości tego parametru, tzn. {{Code|{{m|Pudełko|Nazwa przestrzeni nazw 2|Szablon}}}}, a jeśli nazwa uzyskana nazwy przestrzeni nazw jest w takim przypadku błędna, to brany jest ten element, a jeżeli nazwa domyślna jest błędna, czyli {{Code|{{m|Pudełko|Nazwa przestrzeni nazw 2|Moja przestrzeń}}}}, wtedy funkcja zwraca stan błędu {{Code|(błąd)}}. * {{Code|i}} - numer zmiennej nazwy przestrzeni nazw. Funkcja wykorzystuje {{Code|{{sr|#p.Nazwa_przestrzeni_nazw_2(frame,...)|p=Pudełko/Pomocne}}}} do wyznaczania ogólnego nazwy przestrzeni nazw dla pozycji bazowej i numerkowej, tzn. dla pozycji: jeden, dwa, trzy,..., itd, i ich ogólnej. Parametr ramki tablicy transportu rodzica szablonu: * {{Code|nazwa przestrzeni nazw}}, {{Code|nazwa przestrzeni nazw 1}}, {{Code|nazwa przestrzeni nazw 2}}, {{Code|nazwa przestrzeni nazw 3}},..., {{Code|nazwa przestrzeni nazw i}} - nazwy przestrzeni nazw dla pozycji bazowej oraz zwykłej i ogólnej numerkowej, * {{Code|nazwa jednostki}}, {{Code|nazwa jednostki 1}}, {{Code|nazwa jednostki 2}}, {{Code|nazwa jednostki 3}},... - nazwy jednostek dla pozycji bazowej i numerkowej, * {{Code|typ jednostki}}, {{Code|typ jednostki 1}}, {{Code|typ jednostki 2}}, {{Code|typ jednostki 3}},..., {{Code|typ jednostki i}} - typy jednostek, którym odpowiadają pewne przestrzenie przedmiotowe, dla pozycji bazowej, numerkowej i ogólnej, ** {{Code|dyskusja typu jednostki}}, {{Code|dyskusja typu jednostki 1}}, {{Code|dyskusja typ jednostki 2}}, {{Code|dyskusja typ jednostki 3}},..., {{Code|dyskusja typ jednostki i}} - czy dany typ jednostki ma przedstawiać, jeśli niepusta, przestrzeń dyskusji dla pozycji bazowej, numerkowej i ogólnej. Parametry ramki tablicy transportu dziecka: * Parametry dziecka są takie same jak rodzica dla funkcji pudełkowej plus tu wymienione, * {{Code|numer jednostki}} - jak parametr {{Code|i}} nie został ustawiony, to wtedy liczy się ta zmienna. Przykłady: <syntaxhighlight lang="mediawiki"> {{Nazwa szablonu|nazwa przestrzeni nazw=Wikibooks|nazwa przestrzeni nazw 1=Szablon|nazwa przestrzeni nazw i=|nazwa jednostki 2=Wikibooks:Strona}} </syntaxhighlight> W dziecku powiedzmy jest wywołanie, i szukamy nazwy przestrzeni nazw o numerze dwa, która została podana, ale istnieje za to jej wersji ogólna {{Code|nazwa przestrzeni nazw i}} i domyślna {{Code|nazwa przestrzeni nazw}}, ale wtedy dla tego numerkowego liczy się to ogólne z {{Code| i}}, a ponieważ ta nazwa jest pusta, więc będziemy liczyli nazwę przestrzeni nazw z {{Code|nazwa jednostki 2}}: <syntaxhighlight lang="mediawiki"> {{#invoke:Pudełko|Nazwa przestrzeni nazw 2|numer jednostki=2}} </syntaxhighlight> Na podstawie powyższego przykładu otrzymamy wynik o schemacie, nie wyniku, bo tam nie ma zmiennej {{Code|nazwa przestrzeni nazw 1}}, ale jest {{Code|nazwa przestrzeni nazw i}}: <syntaxhighlight lang="mediawiki"> <!-- Ale nie "nazwa przestrzeni nazw 2", bo jej nie ma, ale za to istnieje "nazwa przestrzeni nazw i"; --> <!-- nazwa przestrzeni nazw 2=nazwa przestrzeni nazw i="", a nazwa jednostki 2="Wikibooks:Strona"; --> <!-- Czyli wynik: --> Wikibooks <!-- Widzimy, że wygenerowała się nazwa przestrzeni nazw, którą jest przestrzeń nieprogramowa, ale projektu, wychodząca z nazwy jednostek w tym przypadku z "nazwa jednostki 2"; --> </syntaxhighlight> Nie jest brana w tym powyższym przykładzie zmienna {{Code|nazwa przestrzeni nazw}}, bo jej nie ma, ale za to jest {{Code|nazwa przestrzeni nazw i}}, bo ona występuje jako parametr domyślny ogólny dla parametrów numerkowych. Tytaj jest używana jest zmienna {{Code|nazwa jednostki 2}} do wygenerowania ostatecznego wyniku, bo jak można zauważyć, parametry przestrzenne wskazują na przestrzeń główną, a nazwy jednostek już nie. Przykłady w wikikodzie: * {{Code|{{m|Pudełko|Nazwa przestrzeni nazw 2|numer jednostki{{=}}2}}}} → {{Tt|{{#invoke:Pudełko|Nazwa przestrzeni nazw 2|numer jednostki=2}}}} * {{Code|{{m|Pudełko|Nazwa przestrzeni nazw 2|Szablon|nazwa przestrzeni nazw i{{=}}Moja przestrzeń|numer jednostki{{=}}2}}}} → {{Tt|{{#invoke:Pudełko|Nazwa przestrzeni nazw 2|Szablon|nazwa przestrzeni nazw i=Moja przestrzeń|numer jednostki=2}}}} * {{Code|{{m|Pudełko|Nazwa przestrzeni nazw 2|nazwa przestrzeni nazw 2{{=}}|nazwa jednostki 2{{=}}Szablon:Strona|numer jednostki{{=}}2}}}} → {{Tt|{{#invoke:Pudełko|Nazwa przestrzeni nazw 2|nazwa przestrzeni nazw 2=|nazwa jednostki 2=Szablon:Strona|numer jednostki=2}}}} * {{Code|{{m|Pudełko|Nazwa przestrzeni nazw 2|nazwa przestrzeni nazw i{{=}}|nazwa jednostki 2{{=}}Szablon:Strona|numer jednostki{{=}}2}}}} → {{Tt|{{#invoke:Pudełko|Nazwa przestrzeni nazw 2|nazwa przestrzeni nazw i=|nazwa jednostki 2=Szablon:Strona|numer jednostki=2}}}} * {{Code|{{m|Pudełko|Nazwa przestrzeni nazw 2|Szablon|nazwa przestrzeni nazw{{=}}|nazwa jednostki 2{{=}}Wikibooks:Strona|numer jednostki{{=}}2}}}} → {{Tt|{{#invoke:Pudełko|Nazwa przestrzeni nazw 2|Szablon|nazwa przestrzeni nazw=|nazwa jednostki 2=Wikibooks:Strona|numer jednostki=2}}}} Powyżej dla przykładu podano parametry nie w rodzicu w szablonie, tylko w dziecku, jeśli chodzi o parametry nazw przestrzeni nazw i nazw jednostek, ale ich się za to nie powinno podawać w tych ramach, tylko w szablonach, w których wywoływane są te ramki pudełek {{Code|{{m|Pudełko}}}}, ale tak tutaj tak zrobiono by było najłatwiej sprawdzić działanie tego typu funkcji. Analogicznie możemy podawać parametry typu jednostki, np.: wywołaniu modułowym {{Code|{{m|Pudełko|Nazwa przestrzeni nazw 2|typ jednostki 2{{=}}Podręcznik|nazwa jednostki 2{{=}}Szablon:Strona|numer jednostki{{=}}2}}}} (ale wtedy jest brana przestrzeń nazw z nazwy jednostki), ale o tym więcej w rozdziałach {{Code|{{sr|#p["Typ jednostki 2"](frame,i)|p=Pudełko}}}} w „{{sr|#Funkcje typu jednostki|p=Pudełko}}”, one definiują dane przestrzenie przedmiotowe, czy dyskusji ale można lub nie użyć parametru dyskusji typu jednostki z wartością niepustą, wtedy wyświetli się nazwa przestrzeni nazw dyskusji. Jeżeli typ jednostki wskazuje na przestrzeń nazw główną, wtedy się liczą parametry nazw jednostek. Typ jednostki nie ma takiej samej wartości dla przestrzeni przedmiotowej, co dyskusji. Również parametry typu jednostki nie powinno się podawać w dziecku w ramce, tylko w rodzicu w szablonie jako parametry, w którym ta ramka jest wywoływana, ale tutaj podano jedynie dla przykładu, jak najłatwiej sprawdzić działanie tych parametrów tej funkcji. Najpierw w funkcji nagłówku brane są parametry nazw przestrzeni nazw, a jeżeli ich nie ma, to parametry typu jednostki, a jeżeli nie ma lub parametry przestrzenne wskazują na przestrzeń główną, i nie ma nazwy jednostki, to generowane są nazwy tej funkcji na podstawie aktualnej strony. === {{Code|p["Nazwa przedmiotowej przestrzeni nazw 2"](frame,...)}} === Funkcja pisze przedmiotową nazwę przestrzeni nazw jakikolwiek nazwy przestrzeni nazw (tzn. nazwę przedmiotową nazwy przestrzenie nazw, czyli nie dyskusji, zamieniana jest na nią samą, czyli identyfikator przestrzeni się nie zmienia, a dyskusji, nie przedmiotową, przekształca się na przedmiotową jej odpowiadającą, czyli w tym przypadku identyfikator przestrzeni zmniejsza się o numer mniej), według, i nie zawsze tylko, podanej w zmiennej {{Code|nazwa przestrzeni nazw}} dla pozycja bazowej w podanych parametrach szablonu rodzicu ramki dziecka, lub dla innej pozycji należy parametr podawać w formie {{Code|nazwa przestrzeni nazw 1}}, {{Code|nazwa przestrzeni nazw 2}}, {{Code|nazwa przestrzeni nazw 3}},..., lub te parametry można podać w postaci ogólnej {{Code|nazwa przestrzeni nazw i}}. W tej funkcji trzeba też podawać parametry nazwy jednostek {{Code|nazwa jednostki}}, {{Code|nazwa jednostki 1}}, {{Code|nazwa jednostki 2}}, {{Code|nazwa jednostki 3}},... Parametry podaje się w parametrach rodzica wywołania tej funkcji {{Code|{{m|Pudełko|Nazwa przedmiotowej przestrzeni nazw 2}}}} (ale ich nie trzeba podawać w dziecku, ale można) i w parametrach dziecka, jeśli chodzi o zmienną {{Code|numer jednostki}}, czyli np.: {{Code|{{m|Pudełko|Nazwa przedmiotowej przestrzeni nazw 2|numer jednostki{{=}}<jakaś liczba całkowita dodatnia>}}}}. Te parametry przestrzenne zamiast w rodzicu w szablonie można podać w ramce dziecka, wtedy parametry dziecka mają pierwszeństwo. Przestrzeń nazw z parametrów nazw przestrzennych po przekształceniu na przedmiotową może odpowiadać wartości przestrzeni głównej, to wtedy odpowiednia przestrzeń nazw z parametru nazwy jednostki się liczy w tej funkcji, wtedy jest liczona nazwa przestrzeni nazw z tego parametru. Gdy parametry przestrzenne lub typ jednostki w drugim podejściu nie wskazują na przestrzeń główną, to wtedy działanie tej funkcji jest podobne do {{Code|{{sr|#p["Nazwa przedmiotowej przestrzeni nazw"](frame,...)|p=Pudełko}}}}. Definicja skrótowa funkcji: <syntaxhighlight lang="lua"> p["Nazwa przedmiotowej przestrzeni nazw 2"]=function(frame,czy_uwzglednic_alternatywna_nazwe,i)...end; </syntaxhighlight> Wtedy ciało funkcji tej, czyli jego definicja w środku, jest: <syntaxhighlight lang="lua"> local pudelko_pomocne_modul=require("Module:Pudełko/Pomocne"); return pudelko_pomocne_modul.Nazwa_przestrzeni_nazw_przedmiotowa_dyskusji_2(frame,czy_uwzglednic_alternatywna_nazwe,i,"przedmiotowa"); </syntaxhighlight> Parametry funkcji: * {{Code|frame}} - tablica ramki tablicy transportu, * {{Code|czy_uwzglednic_alternatywna_nazwe}} - czy ma uwzględniać nazwę przestrzeni nazw domyślną szablonu, dostępne wartości: {{Code|false}}, w której nazwa domyślna nie jest uwzględniana wtedy, oraz {{Code|nil}} i {{Code|true}}, które oznaczają to samo, w tym jeżeli ona jest uwzględniana, wtedy jest brany parametr pierwszy dziecka, który musi istnieć przy takiej wartości tego parametru, tzn. {{Code|{{m|Pudełko|Nazwa przedmiotowej przestrzeni nazw 2|Szablon}}}}, nazwa domyślna zostanie zamieniona na przedmiotową, a jeżeli jest już taka, to żadnej zamiany nie ma, a jeśli nazwa uzyskana nazwy przestrzeni nazw jest w takim przypadku błędna, to brany jest ten element, a jeżeli nazwa domyślna jest błędna, czyli {{Code|{{m|Pudełko|Nazwa przedmiotowej przestrzeni nazw 2|Moja przestrzeń}}}}, wtedy funkcja zwraca stan błędu {{Code|(błąd)}}. * {{Code|i}} - numer zmiennej nazwy przestrzeni nazw. Funkcja wykorzystuje {{Code|{{sr|#p.Nazwa_przestrzeni_nazw_przedmiotowa_dyskusji_2(frame,...)|p=Pudełko/Pomocne}}}} do wyznaczania ogólnego nazwy przestrzeni nazw dla pozycji bazowej i numerkowej, tzn. dla pozycji: jeden, dwa, trzy,..., itd, i ich ogólnej. Parametr ramki tablicy transportu rodzica szablonu: * {{Code|nazwa przestrzeni nazw}}, {{Code|nazwa przestrzeni nazw 1}}, {{Code|nazwa przestrzeni nazw 2}}, {{Code|nazwa przestrzeni nazw 3}},..., {{Code|nazwa przestrzeni nazw i}} - nazwy przestrzeni nazw dla pozycji bazowej oraz zwykłej i ogólnej numerkowej, * {{Code|nazwa jednostki}}, {{Code|nazwa jednostki 1}}, {{Code|nazwa jednostki 2}}, {{Code|nazwa jednostki 3}},... - nazwy jednostek dla pozycji bazowej i numerkowej, * {{Code|typ jednostki}}, {{Code|typ jednostki 1}}, {{Code|typ jednostki 2}}, {{Code|typ jednostki 3}},..., {{Code|typ jednostki i}} - typy jednostek, którym odpowiadają pewne przestrzenie przedmiotowe, dla pozycji bazowej, numerkowej i ogólnej. Parametry ramki tablicy transportu dziecka: * Parametry dziecka są takie same jak rodzica dla funkcji pudełkowej plus tu wymienione, * {{Code|numer jednostki}} - jak parametr {{Code|i}} nie został ustawiony, to wtedy liczy się ta zmienna. Przykłady: <syntaxhighlight lang="mediawiki"> {{Nazwa szablonu|nazwa przestrzeni nazw=Wikibooks|nazwa przestrzeni nazw 1=Szablon|nazwa przestrzeni nazw i=|nazwa jednostki 2=Dyskusja Wikibooks:Strona}} </syntaxhighlight> W dziecku powiedzmy jest wywołanie, i szukamy nazwy przestrzeni nazw o numerze dwa, która została podana, ale istnieje za to jej wersji ogólna {{Code|nazwa przestrzeni nazw i}} i domyślna {{Code|nazwa przestrzeni nazw}}, ale wtedy dla tego numerkowego liczy się to ogólne z {{Code| i}}, a ponieważ ta nazwa jest pusta, więc będziemy liczyli nazwę przestrzeni nazw z {{Code|nazwa jednostki 2}}: <syntaxhighlight lang="mediawiki"> {{#invoke:Pudełko|Nazwa przedmiotowej przestrzeni nazw 2|numer jednostki=2}} </syntaxhighlight> Na podstawie powyższego przykładu otrzymamy wynik o schemacie, nie wyniku, bo tam nie ma zmiennej {{Code|nazwa przestrzeni nazw 1}}, ale jest {{Code|nazwa przestrzeni nazw i}}: <syntaxhighlight lang="mediawiki"> <!-- Ale nie "nazwa przestrzeni nazw 2", bo jej nie ma, ale za to istnieje "nazwa przestrzeni nazw i"; --> <!-- nazwa przestrzeni nazw 2=nazwa przestrzeni nazw i="", a nazwa jednostki 2="Dyskusja Wikibooks:Strona"; --> <!-- Czyli wynik: --> Wikibooks <!-- Widzimy, że wygenerowała się nazwa przestrzeni nazw, którą jest przestrzeń nieprogramowa, ale projektu, wychodząca z nazwy jednostek w tym przypadku z "nazwa jednostki 2"; --> </syntaxhighlight> Nie jest brana w tym powyższym przykładzie zmienna {{Code|nazwa przestrzeni nazw}}, bo jej nie ma, ale za to jest {{Code|nazwa przestrzeni nazw i}}, bo ona występuje jako parametr domyślny ogólny dla parametrów numerkowych. Tytaj jest używana jest zmienna {{Code|nazwa jednostki 2}} do wygenerowania ostatecznego wyniku, bo jak można zauważyć, parametry przestrzenne wskazują na przestrzeń główną, a nazwy jednostek już nie. Przykłady w wikikodzie: * {{Code|{{m|Pudełko|Nazwa przedmiotowej przestrzeni nazw 2|numer jednostki{{=}}2}}}} → {{Tt|{{#invoke:Pudełko|Nazwa przedmiotowej przestrzeni nazw 2|numer jednostki=2}}}} * {{Code|{{m|Pudełko|Nazwa przedmiotowej przestrzeni nazw 2|Dyskusja szablonu|nazwa przestrzeni nazw i{{=}}Moja przestrzeń|numer jednostki{{=}}2}}}} → {{Tt|{{#invoke:Pudełko|Nazwa przedmiotowej przestrzeni nazw 2|Dyskusja szablonu|nazwa przestrzeni nazw i=Moja przestrzeń|numer jednostki=2}}}} * {{Code|{{m|Pudełko|Nazwa przedmiotowej przestrzeni nazw 2|nazwa przestrzeni nazw 2{{=}}Dyskusja|nazwa jednostki 2{{=}}Dyskusja szablonu:Strona|numer jednostki{{=}}2}}}} → {{Tt|{{#invoke:Pudełko|Nazwa przedmiotowej przestrzeni nazw 2|nazwa przestrzeni nazw 2=Dyskusja|nazwa jednostki 2=Dyskusja szablonu:Strona|numer jednostki=2}}}} * {{Code|{{m|Pudełko|Nazwa przedmiotowej przestrzeni nazw 2|nazwa przestrzeni nazw i{{=}}Dyskusja|nazwa jednostki 2{{=}}Dyskusja szablonu:Strona|numer jednostki{{=}}2}}}} → {{Tt|{{#invoke:Pudełko|Nazwa przedmiotowej przestrzeni nazw 2|nazwa przestrzeni nazw i=Dyskusja|nazwa jednostki 2=Dyskusja szablonu:Strona|numer jednostki=2}}}} * {{Code|{{m|Pudełko|Nazwa przedmiotowej przestrzeni nazw 2|Dyskusja szablonu|nazwa przestrzeni nazw{{=}}Dyskusja|nazwa jednostki 2{{=}}Wikibooks:Strona|numer jednostki{{=}}2}}}} → {{Tt|{{#invoke:Pudełko|Nazwa przedmiotowej przestrzeni nazw 2|Dyskusja szablonu|nazwa przestrzeni nazw=Dyskusja|nazwa jednostki 2=Dyskusja Wikibooks:Strona|numer jednostki=2}}}} Powyżej dla przykładu podano parametry nie w rodzicu w szablonie, tylko w dziecku, jeśli chodzi o parametry nazw przestrzeni nazw i nazw jednostek, ale ich się za to nie powinno podawać w tych ramach, tylko w szablonach, w których wywoływane są te ramki pudełek {{Code|{{m|Pudełko}}}}, ale tak tutaj tak zrobiono by było najłatwiej sprawdzić działanie tego typu funkcji. Analogicznie możemy podawać parametry typu jednostki, np.: wywołaniu modułowym {{Code|{{m|Pudełko|Nazwa przedmiotowej przestrzeni nazw 2|typ jednostki 2{{=}}Podręcznik|nazwa jednostki 2{{=}}Dyskusja szablonu:Strona|numer jednostki{{=}}2}}}} (ale wtedy jest brana przestrzeń nazw z nazwy jednostki), ale o tym więcej w rozdziałach {{Code|{{sr|#p["Przedmiotowy typ jednostki 2"](frame,i)|p=Pudełko}}}} w „{{sr|#Funkcje typu jednostki|p=Pudełko}}”, one definiują dane przestrzenie przedmiotowe, ale można użyć parametru dyskusji typu jednostki z wartością niepustą, pustą, czy nawet jej nie podamy, wtedy wyświetli się nazwa przestrzeni nazw przedmiotowej. Jeżeli typ jednostki wskazuje na przestrzeń nazw główną, wtedy się liczą parametry nazw jednostek. Typ jednostki nie ma takiej samej wartości dla przestrzeni przedmiotowej, co dyskusji. Również parametry typu jednostki nie powinno się podawać w dziecku w ramce, tylko w rodzicu w szablonie jako parametry, w którym ta ramka jest wywoływana, ale tutaj podano jedynie dla przykładu, jak najłatwiej sprawdzić działanie tych parametrów tej funkcji. Najpierw w funkcji nagłówku brane są parametry nazw przestrzeni nazw, a jeżeli ich nie ma, to parametry typu jednostki, a jeżeli nie ma lub parametry przestrzenne wskazują na przestrzeń główną, i nie ma nazwy jednostki, to generowane są nazwy tej funkcji na podstawie aktualnej strony. === {{Code|p["Nazwa przestrzeni nazw dyskusji 2"](frame,...)}} === Funkcja pisze nazwę przestrzeni nazw dyskusji jakikolwiek nazwy przestrzeni nazw (tzn. nazwę dyskusji nazwy przestrzenie nazw, czyli nie przedmiotowej, zamieniana jest na nią samą, czyli identyfikator przestrzeni się nie zmienia, a przedmiotową, nie dyskusji, przekształca się na dyskusji jej odpowiadającą, czyli w tym przypadku identyfikator przestrzeni zwiększa się o numer więcej), według, i nie zawsze tylko, podanej w zmiennej {{Code|nazwa przestrzeni nazw}} dla pozycja bazowej w podanych parametrach szablonu rodzicu ramki dziecka, lub dla innej pozycji należy parametr podawać w formie {{Code|nazwa przestrzeni nazw 1}}, {{Code|nazwa przestrzeni nazw 2}}, {{Code|nazwa przestrzeni nazw 3}},..., lub te parametry można podać w postaci ogólnej {{Code|nazwa przestrzeni nazw i}}. W tej funkcji trzeba też podawać parametry nazwy jednostek {{Code|nazwa jednostki}}, {{Code|nazwa jednostki 1}}, {{Code|nazwa jednostki 2}}, {{Code|nazwa jednostki 3}},... Parametry podaje się w parametrach rodzica wywołania tej funkcji {{Code|{{m|Pudełko|Nazwa przestrzeni nazw dyskusji 2}}}} (ale ich nie trzeba podawać w dziecku, ale można) i w parametrach dziecka, jeśli chodzi o zmienną {{Code|numer jednostki}}, czyli np.: {{Code|{{m|Pudełko|Nazwa przestrzeni nazw dyskusji 2|numer jednostki{{=}}<jakaś liczba całkowita dodatnia>}}}}. Te parametry przestrzenne zamiast w rodzicu w szablonie można podać w ramce dziecka, wtedy parametry dziecka mają pierwszeństwo. Przestrzeń nazw z parametrów nazw przestrzennych po przekształceniu może odpowiadać wartości przestrzeni głównej, to wtedy odpowiednia przestrzeń nazw z parametru nazwy jednostki się liczy w tej funkcji, wtedy jest liczona nazwa przestrzeni nazw dyskusji z tego parametru. Gdy parametry przestrzenne lub typ jednostki w drugim podejściu nie wskazują na przestrzeń główną, to wtedy działanie tej funkcji jest podobne do {{Code|{{sr|#p["Nazwa dyskusji przestrzeni nazw"](frame,...)|p=Pudełko}}}}. Definicja skrótowa funkcji: <syntaxhighlight lang="lua"> p["Nazwa przestrzeni nazw dyskusji 2"]=function(frame,czy_uwzglednic_alternatywna_nazwe,i)...end; </syntaxhighlight> Wtedy ciało funkcji tej, czyli jego definicja w środku, jest: <syntaxhighlight lang="lua"> local pudelko_pomocne_modul=require("Module:Pudełko/Pomocne"); return pudelko_pomocne_modul.Nazwa_przestrzeni_nazw_przedmiotowa_dyskusji_2(frame,czy_uwzglednic_alternatywna_nazwe,i,"dyskusja"); </syntaxhighlight> Parametry funkcji: * {{Code|frame}} - tablica ramki tablicy transportu, * {{Code|czy_uwzglednic_alternatywna_nazwe}} - czy ma uwzględniać nazwę przestrzeni nazw domyślną szablonu, dostępne wartości: {{Code|false}}, w której nazwa domyślna nie jest uwzględniana wtedy, oraz {{Code|nil}} i {{Code|true}}, które oznaczają to samo, w tym jeżeli ona jest uwzględniana, wtedy jest brany parametr pierwszy dziecka, który musi istnieć przy takiej wartości tego parametru, tzn. {{Code|{{m|Pudełko|Nazwa przestrzeni nazw dyskusji 2|Szablon}}}}, nazwa domyślna zostanie zamieniona na dyskusji, a jeżeli jest już taka, to nie ma takiej zamiany, a jeśli nazwa uzyskana nazwy przestrzeni nazw jest w takim przypadku błędna, to brany jest ten element, a jeżeli nazwa domyślna jest błędna, czyli {{Code|{{m|Pudełko|Nazwa przestrzeni nazw dyskusji 2|Moja przestrzeń}}}}, wtedy funkcja zwraca stan błędu {{Code|(błąd)}}. * {{Code|i}} - numer zmiennej nazwy przestrzeni nazw. Funkcja wykorzystuje {{Code|{{sr|#p.Nazwa_przestrzeni_nazw_przedmiotowa_dyskusji_2(frame,...)|p=Pudełko/Pomocne}}}} do wyznaczania ogólnego nazwy przestrzeni nazw dla pozycji bazowej i numerkowej, tzn. dla pozycji: jeden, dwa, trzy,..., itd, i ich ogólnej. Parametr ramki tablicy transportu rodzica szablonu: * {{Code|nazwa przestrzeni nazw}}, {{Code|nazwa przestrzeni nazw 1}}, {{Code|nazwa przestrzeni nazw 2}}, {{Code|nazwa przestrzeni nazw 3}},..., {{Code|nazwa przestrzeni nazw i}} - nazwy przestrzeni nazw dla pozycji bazowej oraz zwykłej i ogólnej numerkowej, * {{Code|nazwa jednostki}}, {{Code|nazwa jednostki 1}}, {{Code|nazwa jednostki 2}}, {{Code|nazwa jednostki 3}},... - nazwy jednostek dla pozycji bazowej i numerkowej, * {{Code|typ jednostki}}, {{Code|typ jednostki 1}}, {{Code|typ jednostki 2}}, {{Code|typ jednostki 3}},..., {{Code|typ jednostki i}} - typy jednostek, którym odpowiadają pewne przestrzenie przedmiotowe, dla pozycji bazowej, numerkowej i ogólnej. Parametry ramki tablicy transportu dziecka: * Parametry dziecka są takie same jak rodzica dla funkcji pudełkowej plus tu wymienione, * {{Code|numer jednostki}} - jak parametr {{Code|i}} nie został ustawiony, to wtedy liczy się ta zmienna. Przykłady: <syntaxhighlight lang="mediawiki"> {{Nazwa szablonu|nazwa przestrzeni nazw=Wikibooks|nazwa przestrzeni nazw 1=Szablon|nazwa przestrzeni nazw i=|nazwa jednostki 2=Wikibooks:Strona}} </syntaxhighlight> W dziecku powiedzmy jest wywołanie, i szukamy nazwy przestrzeni nazw o numerze dwa, która została podana, ale istnieje za to jej wersji ogólna {{Code|nazwa przestrzeni nazw i}} i domyślna {{Code|nazwa przestrzeni nazw}}, ale wtedy dla tego numerkowego liczy się to ogólne z {{Code| i}}, a ponieważ ta nazwa jest pusta, więc będziemy liczyli nazwę przestrzeni nazw z {{Code|nazwa jednostki 2}}: <syntaxhighlight lang="mediawiki"> {{#invoke:Pudełko|Nazwa przestrzeni nazw dyskusji 2|numer jednostki=2}} </syntaxhighlight> Na podstawie powyższego przykładu otrzymamy wynik o schemacie, nie wyniku, bo tam nie ma zmiennej {{Code|nazwa przestrzeni nazw 1}}, ale jest {{Code|nazwa przestrzeni nazw i}}: <syntaxhighlight lang="mediawiki"> <!-- Ale nie "nazwa przestrzeni nazw 2", bo jej nie ma, ale za to istnieje "nazwa przestrzeni nazw i"; --> <!-- nazwa przestrzeni nazw 2=nazwa przestrzeni nazw i="", a nazwa jednostki 2="Wikibooks:Strona"; --> <!-- Czyli wynik: --> Dyskusja Wikibooks <!-- Widzimy, że wygenerowała się nazwa przestrzeni nazw, którą jest przestrzeń nieprogramowa, ale dyskusji projektu, wychodząca z nazwy jednostek w tym przypadku z "nazwa jednostki 2"; --> </syntaxhighlight> Nie jest brana w tym powyższym przykładzie zmienna {{Code|nazwa przestrzeni nazw}}, bo jej nie ma, ale za to jest {{Code|nazwa przestrzeni nazw i}}, bo ona występuje jako parametr domyślny ogólny dla parametrów numerkowych. Tytaj jest używana jest zmienna {{Code|nazwa jednostki 2}} do wygenerowania ostatecznego wyniku, bo jak można zauważyć, parametry przestrzenne wskazują na przestrzeń główną, a nazwy jednostek już nie. Przykłady w wikikodzie: * {{Code|{{m|Pudełko|Nazwa przestrzeni nazw dyskusji 2|numer jednostki{{=}}2}}}} → {{Tt|{{#invoke:Pudełko|Nazwa przestrzeni nazw dyskusji 2|numer jednostki=2}}}} * {{Code|{{m|Pudełko|Nazwa przestrzeni nazw dyskusji 2|Szablon|nazwa przestrzeni nazw i{{=}}Moja przestrzeń|numer jednostki{{=}}2}}}} → {{Tt|{{#invoke:Pudełko|Nazwa przestrzeni nazw dyskusji 2|Szablon|nazwa przestrzeni nazw i=Moja przestrzeń|numer jednostki=2}}}} * {{Code|{{m|Pudełko|Nazwa przestrzeni nazw dyskusji 2|nazwa przestrzeni nazw 2{{=}}|nazwa jednostki 2{{=}}Szablon:Strona|numer jednostki{{=}}2}}}} → {{Tt|{{#invoke:Pudełko|Nazwa przestrzeni nazw dyskusji 2|nazwa przestrzeni nazw 2=|nazwa jednostki 2=Szablon:Strona|numer jednostki=2}}}} * {{Code|{{m|Pudełko|Nazwa przestrzeni nazw dyskusji 2|nazwa przestrzeni nazw i{{=}}|nazwa jednostki 2{{=}}Szablon:Strona|numer jednostki{{=}}2}}}} → {{Tt|{{#invoke:Pudełko|Nazwa przestrzeni nazw dyskusji 2|nazwa przestrzeni nazw i=|nazwa jednostki 2=Szablon:Strona|numer jednostki=2}}}} * {{Code|{{m|Pudełko|Nazwa przestrzeni nazw dyskusji 2|Szablon|nazwa przestrzeni nazw{{=}}|nazwa jednostki 2{{=}}Wikibooks:Strona|numer jednostki{{=}}2}}}} → {{Tt|{{#invoke:Pudełko|Nazwa przestrzeni nazw dyskusji 2|Szablon|nazwa przestrzeni nazw=|nazwa jednostki 2=Dyskusja Wikibooks:Strona|numer jednostki=2}}}} Powyżej dla przykładu podano parametry nie w rodzicu w szablonie, tylko w dziecku, jeśli chodzi o parametry nazw przestrzeni nazw i nazw jednostek, ale ich się za to nie powinno podawać w tych ramach, tylko w szablonach, w których wywoływane są te ramki pudełek {{Code|{{m|Pudełko}}}}, ale tak tutaj tak zrobiono by było najłatwiej sprawdzić działanie tego typu funkcji. Analogicznie możemy podawać parametry typu jednostki, np.: wywołaniu modułowym {{Code|{{m|Pudełko|Nazwa przestrzeni nazw dyskusji 2|typ jednostki 2{{=}}Podręcznik|nazwa jednostki 2{{=}}Szablon:Strona|numer jednostki{{=}}2}}}} (ale wtedy jest brana przestrzeń nazw z nazwy jednostki), ale o tym więcej w rozdziałach {{Code|{{sr|#p["Dyskusyjny typ jednostki 3"](frame,i)|p=Pudełko}}}} w „{{sr|#Funkcje typu jednostki|p=Pudełko}}”, one definiują dane przestrzenie dyskusji, ale można użyć parametru dyskusji typu jednostki z obojętnie jaką wartością niepustą, czy pustą, czy nawet jej nie podamy, wtedy wyświetli się nazwa przestrzeni nazw dyskusji. Jeżeli typ jednostki wskazuje na przestrzeń nazw główną, wtedy się liczą parametry nazw jednostek. Typ jednostki nie ma takiej samej wartości dla przestrzeni przedmiotowej, co dyskusji. Również parametry typu jednostki nie powinno się podawać w dziecku w ramce, tylko w rodzicu w szablonie jako parametry, w którym ta ramka jest wywoływana, ale tutaj podano jedynie dla przykładu, jak najłatwiej sprawdzić działanie tych parametrów tej funkcji. Najpierw w funkcji nagłówku brane są parametry nazw przestrzeni nazw, a jeżeli ich nie ma, to parametry typu jednostki, a jeżeli nie ma lub parametry przestrzenne wskazują na przestrzeń główną, i nie ma nazwy jednostki, to generowane są nazwy tej funkcji na podstawie aktualnej strony. == Funkcje nazw przestrzeni nazw trzeciej wersji == === {{Code|p["Nazwa przestrzeni nazw 3"](frame,i)}} === Funkcja pisze nazwę przestrzeni nazw, niezależnie, czy to jest przedmiotowa, czy dyskusji, według, i nie zawsze tylko, podanej w zmiennej {{Code|nazwa przestrzeni nazw}} dla pozycja bazowej w podanych parametrach szablonu rodzicu ramki dziecka, lub dla innej pozycji należy parametr podawać w formie {{Code|nazwa przestrzeni nazw 1}}, {{Code|Nazwa przestrzeni nazw 3}}, {{Code|nazwa przestrzeni nazw 3}},..., lub te parametry można podać w postaci ogólnej {{Code|nazwa przestrzeni nazw i}}. W tej funkcji trzeba też podawać parametry nazwy jednostek {{Code|nazwa jednostki}}, {{Code|nazwa jednostki 1}}, {{Code|nazwa jednostki 2}}, {{Code|nazwa jednostki 3}},... Parametry podaje się w parametrach rodzica wywołania tej funkcji {{Code|{{m|Pudełko|Nazwa przestrzeni nazw 3}}}} (ale ich nie trzeba podawać w dziecku, ale można) i w parametrach dziecka, jeśli chodzi o zmienną {{Code|numer jednostki}}, czyli np.: {{Code|{{m|Pudełko|Nazwa przestrzeni nazw 3|numer jednostki{{=}}<jakaś liczba całkowita dodatnia>}}}}. Te parametry przestrzenne zamiast w rodzicu w szablonie można podać w ramce dziecka, wtedy parametry dziecka mają pierwszeństwo. Przestrzeń nazw z parametrów nazw przestrzennych bazowych (bez numerka) może odpowiadać wartości przestrzeni głównej, to wtedy odpowiednia przestrzeń nazw z parametru nazwy jednostki się nie liczy w tej funkcji, aby się liczyła należy użyć funkcji {{Code|{{sr|#p["Nazwa przestrzeni nazw 2"](frame,...)|p=Pudełko}}}}. W tym przypadku funkcja działa jak {{Code|{{sr|#p["Nazwa przestrzeni nazw"](frame,...)|p=Pudełko}}}}. Przestrzeń nazw z parametrów nazw przestrzennych numerkowych może odpowiadać wartości przestrzeni głównej, to wtedy odpowiednia przestrzeń nazw z parametru nazwy jednostki się liczy w tej funkcji, wtedy jest liczona nazwa przestrzeni nazw z tego parametru. Gdy parametry przestrzenne lub typ jednostki w drugim podejściu nie wskazują na przestrzeń główną, to wtedy działanie tej funkcji jest podobne do {{Code|{{sr|#p["Nazwa przestrzeni nazw 2"](frame,...)|p=Pudełko}}}}. Definicja skrótowa funkcji: <syntaxhighlight lang="lua"> p["Nazwa przestrzeni nazw 3"]=function(frame,czy_uwzglednic_alternatywna_nazwe,i)...end; </syntaxhighlight> Wtedy ciało funkcji tej, czyli jego definicja w środku, jest: <syntaxhighlight lang="lua"> -- Jest liczony numer parametru nazwy przestrzeni nazw, domyslnie chodzi tu o numer bazowy parametrów przestrzennych; local numer_jednostki=i or frame.args["numer jednostki"]; local liczba_numeru_jednostki=((numer_jednostki)and(tonumber(numer_jednostki)) or 0); local pudelko_pomocne_modul=require("Module:Pudełko/Pomocne"); -- Liczy nazwę przestrzeni nazw dyskusji na podstawie podanych parametrów; return pudelko_pomocne_modul.Uzyskanie_nazw_jednostki(frame,0,liczba_numeru_jednostki,nil,2); </syntaxhighlight> Parametry funkcji: * {{Code|frame}} - tablica ramki tablicy transportu, * {{Code|czy_uwzglednic_alternatywna_nazwe}} - czy ma uwzględniać nazwę przestrzeni nazw domyślną szablonu, dostępne wartości: {{Code|false}}, w której nazwa domyślna nie jest uwzględniana wtedy, oraz {{Code|nil}} i {{Code|true}}, które oznaczają to samo, w tym jeżeli ona jest uwzględniana, wtedy jest brany parametr pierwszy dziecka, który musi istnieć przy takiej wartości tego parametru, tzn. {{Code|{{m|Pudełko|Nazwa przestrzeni nazw 3|Szablon}}}}, a jeśli nazwa uzyskana nazwy przestrzeni nazw jest w takim przypadku błędna, to brany jest ten element, a jeżeli nazwa domyślna jest błędna, czyli {{Code|{{m|Pudełko|Nazwa przestrzeni nazw 3|Moja przestrzeń}}}}, wtedy funkcja zwraca stan błędu {{Code|(błąd)}}. * {{Code|i}} - numer zmiennej nazwy przestrzeni nazw. Funkcja wykorzystuje {{Code|{{sr|#p.Uzyskanie_nazw_jednostki(frame,...)|p=Pudełko/Pomocne}}}} do wyznaczania ogólnego nazwy przestrzeni nazw dla pozycji bazowej i numerkowej, tzn. dla pozycji: jeden, dwa, trzy,..., itd, i ich ogólnej. Parametr ramki tablicy transportu rodzica szablonu: * {{Code|nazwa przestrzeni nazw}}, {{Code|nazwa przestrzeni nazw 1}}, {{Code|Nazwa przestrzeni nazw 3}}, {{Code|nazwa przestrzeni nazw 3}},..., {{Code|nazwa przestrzeni nazw i}} - nazwy przestrzeni nazw dla pozycji bazowej oraz zwykłej i ogólnej numerkowej, * {{Code|nazwa jednostki}}, {{Code|nazwa jednostki 1}}, {{Code|nazwa jednostki 2}}, {{Code|nazwa jednostki 3}},... - nazwy jednostek dla pozycji bazowej i numerkowej, * {{Code|typ jednostki}}, {{Code|typ jednostki 1}}, {{Code|typ jednostki 2}}, {{Code|typ jednostki 3}},..., {{Code|typ jednostki i}} - typy jednostek, którym odpowiadają pewne przestrzenie przedmiotowe, dla pozycji bazowej, numerkowej i ogólnej, ** {{Code|dyskusja typu jednostki}}, {{Code|dyskusja typu jednostki 1}}, {{Code|dyskusja typ jednostki 2}}, {{Code|dyskusja typ jednostki 3}},..., {{Code|dyskusja typ jednostki i}} - czy dany typ jednostki ma przedstawiać, jeśli niepusta, przestrzeń dyskusji dla pozycji bazowej, numerkowej i ogólnej. Parametry ramki tablicy transportu dziecka: * Parametry dziecka są takie same jak rodzica dla funkcji pudełkowej plus tu wymienione, * {{Code|numer jednostki}} - jak parametr {{Code|i}} nie został ustawiony, to wtedy liczy się ta zmienna. Przykłady: <syntaxhighlight lang="mediawiki"> {{Nazwa szablonu 1|nazwa przestrzeni nazw=Wikibooks|nazwa przestrzeni nazw=|nazwa przestrzeni nazw i=|nazwa jednostki=Szablon:Strona}} ---- {{Nazwa szablonu 2|nazwa przestrzeni nazw=Wikibooks|nazwa przestrzeni nazw 1=Szablon|nazwa przestrzeni nazw i=|nazwa jednostki 2=Wikibooks:Strona}} </syntaxhighlight> W pierwszym wywołaniu {{Code|nazwa przestrzeni nazw}} jest puste, ale dla tego bazowego (bez numerka) szukamy przestrzeni nazw, a więc ta nazwa jest ostateczna. ---- W drugim wywołaniu w dziecku powiedzmy jest wywołanie, i szukamy nazwy przestrzeni nazw o numerze dwa, która została podana, ale istnieje za to jej wersji ogólna {{Code|nazwa przestrzeni nazw i}} i domyślna {{Code|nazwa przestrzeni nazw}}, ale wtedy dla tego numerkowego liczy się to ogólne z {{Code| i}}, a ponieważ ta nazwa jest pusta, więc będziemy liczyli nazwę przestrzeni nazw z {{Code|nazwa jednostki 2}}. Odpowiadająca powyższemu kodowi, powiedzmy wikikod, według ich zawartości, przedstawia się: <syntaxhighlight lang="mediawiki"> {{#invoke:Pudełko|Nazwa przestrzeni nazw 3}} ---- {{#invoke:Pudełko|Nazwa przestrzeni nazw 3|numer jednostki=2}} </syntaxhighlight> Na podstawie powyższego przykładu otrzymamy wynik o schemacie, nie wyniku, bo tam nie ma zmiennej {{Code|nazwa przestrzeni nazw 1}}, ale jest {{Code|nazwa przestrzeni nazw i}}: <syntaxhighlight lang="mediawiki"> <!-- nazwa przestrzeni nazw=""; --> <!-- Czyli wynik: --> <!-- wynik pusty --> <!-- Widzimy, że wygenerowała się nazwa przestrzeni nazw, którą jest przestrzeń nazw główna, jest ciągiem pustym: ""; --> ---- <!-- Ale nie "nazwa przestrzeni nazw 2", bo jej nie ma, ale za to istnieje "nazwa przestrzeni nazw i"; --> <!-- nazwa przestrzeni nazw 2=nazwa przestrzeni nazw i="", a nazwa jednostki 2="Wikibooks:Strona"; --> <!-- Czyli wynik: --> Wikibooks <!-- Widzimy, że wygenerowała się nazwa przestrzeni nazw, którą jest przestrzeń nieprogramowa, ale projektu, wychodząca z nazwy jednostek w tym przypadku z "nazwa jednostki 2"; --> </syntaxhighlight> Dla parametrów numerkowych nie jest brana w tym powyższym przykładzie zmienna {{Code|nazwa przestrzeni nazw 2}}, bo jej nie ma, ale za to jest {{Code|nazwa przestrzeni nazw i}}, bo ona występuje jako parametr domyślny ogólny dla parametrów numerkowych. Tytaj jest używana jest zmienna {{Code|nazwa jednostki 2}} do wygenerowania ostatecznego wyniku, bo jak można zauważyć, parametry przestrzenne wskazują na przestrzeń główną, a nazwy jednostek już nie. Dla parametrów bazowych mamy zmienną {{Code|nazwa przestrzeni nazw}}, ona jest pusta, więc to zostanie wzięte do ostatecznego wyniku. Przykłady w wikikodzie: * {{Code|{{m|Pudełko|Nazwa przestrzeni nazw 3|Szablon|nazwa przestrzeni nazw{{=}}Moja przestrzeń|nazwa jednostki{{=}}Wikibooks:Strona}}}} → {{Tt|{{#invoke:Pudełko|Nazwa przestrzeni nazw 3|Szablon|nazwa przestrzeni nazw=Moja przestrzeń|nazwa jednostki=Wikibooks:Szablon}}}} * {{Code|{{m|Pudełko|Nazwa przestrzeni nazw 3|Szablon|nazwa przestrzeni nazw 2{{=}}Moja przestrzeń|nazwa jednostki 2{{=}}Wikibooks:Strona}|numer jednostki{{=}}2}}}} → {{Tt|{{#invoke:Pudełko|Nazwa przestrzeni nazw 3|Szablon|nazwa przestrzeni nazw 2=Moja przestrzeń|nazwa jednostki 2=Wikibooks:Szablon|numer jednostki=2}}}} * {{Code|{{m|Pudełko|Nazwa przestrzeni nazw 3|nazwa przestrzeni nazw{{=}}|nazwa jednostki{{=}}Wikibooks:Strona}}}} → {{Tt|{{#invoke:Pudełko|Nazwa przestrzeni nazw 3|nazwa przestrzeni nazw=|nazwa jednostki=Wikibooks:Szablon}}}} * {{Code|{{m|Pudełko|Nazwa przestrzeni nazw 3|nazwa przestrzeni nazw 2{{=}}|nazwa jednostki 2{{=}}Wikibooks:Strona|numer jednostki{{=}}2}}}} → {{Tt|{{#invoke:Pudełko|Nazwa przestrzeni nazw 3|nazwa przestrzeni nazw 2=|nazwa jednostki 2=Wikibooks:Szablon|numer jednostki=2}}}} Powyżej dla przykładu podano parametry nie w rodzicu w szablonie, tylko w dziecku, jeśli chodzi o parametry nazw przestrzeni nazw i nazw jednostek, ale ich się za to nie powinno podawać w tych ramach, tylko w szablonach, w których wywoływane są te ramki pudełek {{Code|{{m|Pudełko}}}}, ale tak tutaj tak zrobiono by było najłatwiej sprawdzić działanie tego typu funkcji. Analogicznie możemy podawać parametry typu jednostki, np.: wywołaniu modułowym {{Code|{{m|Pudełko|Nazwa przestrzeni nazw 3|typ jednostki 2{{=}}Podręcznik|nazwa jednostki 2{{=}}Szablon:Strona|numer jednostki{{=}}2}}}} (ale wtedy jest brana przestrzeń nazw z nazwy jednostki), ale o tym więcej w rozdziałach {{Code|{{sr|#p["Typ jednostki 3"](frame,i)|p=Pudełko}}}} w „{{sr|#Funkcje typu jednostki|p=Pudełko}}”, one definiują dane przestrzenie przedmiotowe lub dyskusji, ale można lub nie użyć parametru dyskusji typu jednostki z wartością niepustą, wtedy wyświetli się nazwa przestrzeni nazw dyskusji. Typ jednostki nie ma takiej samej wartości dla przestrzeni przedmiotowej, co dyskusji. Również parametry typu jednostki nie powinno się podawać w dziecku w ramce, tylko w rodzicu w szablonie jako parametry, w którym ta ramka jest wywoływana, ale tutaj podano jedynie dla przykładu, jak najłatwiej sprawdzić działanie tych parametrów tej funkcji. Najpierw w funkcji nagłówku brane są parametry nazw przestrzeni nazw, a jeżeli ich nie ma, to parametry typu jednostki, a jeżeli nie ma lub parametry przestrzenne wskazują na przestrzeń główną, i nie ma nazwy jednostki, to generowane są nazwy tej funkcji na podstawie aktualnej strony. === {{Code|p["Nazwa przedmiotowej przestrzeni nazw 3"](frame,i)}} === Funkcja pisze przedmiotową nazwę przestrzeni nazw jakikolwiek nazwy przestrzeni nazw (tzn. nazwę przedmiotową nazwy przestrzenie nazw, czyli nie dyskusji, zamieniana jest na nią samą, czyli identyfikator przestrzeni się nie zmienia, a dyskusji, nie przedmiotową, przekształca się na przedmiotową jej odpowiadającą, czyli w tym przypadku identyfikator przestrzeni zmniejsza się o numer mniej), według podanej w zmiennej {{Code|nazwa przestrzeni nazw}} dla pozycja bazowej w podanych parametrach szablonu rodzicu ramki dziecka, lub dla innej pozycji należy parametr podawać w formie {{Code|nazwa przestrzeni nazw 1}}, {{Code|nazwa przestrzeni nazw 2}}, {{Code|nazwa przestrzeni nazw 3}},..., lub te parametry można podać w postaci ogólnej {{Code|nazwa przestrzeni nazw i}}. Parametry podaje się w parametrach rodzica wywołania tej funkcji {{Code|{{m|Pudełko|Nazwa przedmiotowej przestrzeni nazw 3}}}} (ale ich nie trzeba podawać w dziecku, ale można) i w parametrach dziecka, jeśli chodzi o zmienną {{Code|numer jednostki}}, czyli np.: {{Code|{{m|Pudełko|Nazwa przedmiotowej przestrzeni nazw 3|numer jednostki{{=}}<jakaś liczba całkowita dodatnia>}}}}. Te parametry przestrzenne zamiast w rodzicu w szablonie można podać w ramce dziecka, wtedy parametry dziecka mają pierwszeństwo. Parametry przestrzenne mogą mogą być podane w postaci przestrzeni przedmiotowej lub dyskusji, ale ta funkcja zawsze ją zamienia na przedmiotową. Przestrzeń nazw z parametrów nazw przestrzennych bazowych (bez numerka) może odpowiadać wartości przestrzeni głównej, to wtedy odpowiednia przestrzeń nazw z parametru nazwy jednostki się nie liczy w tej funkcji, aby się liczyła należy użyć funkcji {{Code|{{sr|#p["Nazwa przedmiotowej przestrzeni nazw 2"](frame,...)|p=Pudełko}}}}. W tym przypadku funkcja działa jak {{Code|{{sr|#p["Nazwa przedmiotowej przestrzeni nazw"](frame,...)|p=Pudełko}}}}. Przestrzeń nazw z parametrów nazw przestrzennych numerkowych może odpowiadać wartości przestrzeni głównej, to wtedy odpowiednia przestrzeń nazw z parametru nazwy jednostki się liczy w tej funkcji, wtedy jest liczona nazwa przestrzeni nazw z tego parametru. Gdy parametry przestrzenne lub typ jednostki w drugim podejściu nie wskazują na przestrzeń główną, to wtedy działanie tej funkcji jest podobne do {{Code|{{sr|#p["Nazwa przedmiotowej przestrzeni nazw 2"](frame,...)|p=Pudełko}}}}. Definicja skrótowa funkcji: <syntaxhighlight lang="lua"> p["Nazwa przedmiotowej przestrzeni nazw 3"]=function(frame,czy_uwzglednic_alternatywna_nazwe,i)...end; </syntaxhighlight> Wtedy ciało funkcji tej, czyli jego definicja w środku, jest: <syntaxhighlight lang="lua"> -- Jest liczony numer parametru nazwy przestrzeni nazw, domyslnie chodzi tu o numer bazowy parametrów przestrzennych; local numer_jednostki=i or frame.args["numer jednostki"]; local liczba_numeru_jednostki=((numer_jednostki)and(tonumber(numer_jednostki)) or 0); local pudelko_pomocne_modul=require("Module:Pudełko/Pomocne"); -- Liczy nazwę przestrzeni nazw przedmiotową na podstawie podanych parametrów; return pudelko_pomocne_modul.Uzyskanie_nazw_jednostki(frame,1,liczba_numeru_jednostki,nil,1); </syntaxhighlight> Parametry funkcji: * {{Code|frame}} - tablica ramki tablicy transportu, * {{Code|czy_uwzglednic_alternatywna_nazwe}} - czy ma uwzględniać nazwę przestrzeni nazw domyślną szablonu, dostępne wartości: {{Code|false}}, w której nazwa domyślna nie jest uwzględniana wtedy, oraz {{Code|nil}} i {{Code|true}}, które oznaczają to samo, w tym jeżeli ona jest uwzględniana, wtedy jest brany parametr pierwszy dziecka, który musi istnieć przy takiej wartości tego parametru, tzn. {{Code|{{m|Pudełko|Nazwa przedmiotowej przestrzeni nazw 3|Dyskusja szablonu}}}} - ta nazwa domyślna zostanie zamieniona na przedmiotową, a jak ona by była przedmiotowa, to żadnej zamiany by nie było, a nazwa uzyskana z nazwy przestrzeni nazw z parametrów przestrzennych jest w takim przypadku błędna, to w takim razie brany jest ten parametr, a jeżeli ta nazwa domyślna jest błędna, czyli {{Code|{{m|Pudełko|Nazwa przedmiotowej przestrzeni nazw 3|Moja przestrzeń}}}}, wtedy funkcja zwraca stan błędu {{Code|(błąd)}}. * {{Code|i}} - numer zmiennej nazwy przestrzeni nazw. Funkcja wykorzystuje {{Code|{{sr|#p.Uzyskanie_nazw_jednostki(frame,...)|p=Pudełko/Pomocne}}}} do wyznaczania ogólnego nazwy przestrzeni nazw dla pozycji bazowej i numerkowej, tzn. dla pozycji: jeden, dwa, trzy,..., itd, i ich ogólnej. Parametr ramki tablicy transportu rodzica szablonu: * {{Code|nazwa przestrzeni nazw}}, {{Code|nazwa przestrzeni nazw 1}}, {{Code|nazwa przestrzeni nazw 2}}, {{Code|nazwa przestrzeni nazw 3}},..., {{Code|nazwa przestrzeni nazw i}} - nazwy przestrzeni nazw dla pozycji bazowej oraz zwykłej i ogólnej numerkowej, * {{Code|typ jednostki}}, {{Code|typ jednostki 1}}, {{Code|typ jednostki 2}}, {{Code|typ jednostki 3}},..., {{Code|typ jednostki i}} - typy jednostek, którym odpowiadają pewne przestrzenie przedmiotowe, dla pozycji bazowej, numerkowej i ogólnej. Parametry ramki tablicy transportu dziecka: * Parametry dziecka są takie same jak rodzica dla funkcji pudełkowej plus tu wymienione, * {{Code|numer jednostki}} - jak parametr {{Code|i}} nie został ustawiony, to wtedy liczy się ta zmienna. Przykłady: <syntaxhighlight lang="mediawiki"> {{Nazwa szablonu 1|nazwa przestrzeni nazw=Wikibooks|nazwa przestrzeni nazw=|nazwa przestrzeni nazw i=|nazwa jednostki=Dyskusja Wikibooks:Strona}} ---- {{Nazwa szablonu 2|nazwa przestrzeni nazw=Wikibooks|nazwa przestrzeni nazw 1=Szablon|nazwa przestrzeni nazw i=|nazwa jednostki 2=Dyskusja Wikibooks:Strona}} </syntaxhighlight> W pierwszym wywołaniu {{Code|nazwa przestrzeni nazw}} jest puste, ale dla tego bazowego (bez numerka) szukamy przestrzeni nazw, a więc ta nazwa jest ostateczna. ---- W drugim wywołaniu w dziecku powiedzmy jest wywołanie, i szukamy nazwy przestrzeni nazw o numerze dwa, która została podana, ale istnieje za to jej wersji ogólna {{Code|nazwa przestrzeni nazw i}} i domyślna {{Code|nazwa przestrzeni nazw}}, ale wtedy dla tego numerkowego liczy się to ogólne z {{Code| i}}, a ponieważ ta nazwa jest pusta, więc będziemy liczyli nazwę przestrzeni nazw z {{Code|nazwa jednostki 2}}. Odpowiadająca powyższemu kodowi, powiedzmy wikikod, według ich zawartości, przedstawia się: <syntaxhighlight lang="mediawiki"> {{#invoke:Pudełko|Nazwa przedmiotowej przestrzeni nazw 3}} ---- {{#invoke:Pudełko|Nazwa przedmiotowej przestrzeni nazw 3|numer jednostki=2}} </syntaxhighlight> Na podstawie powyższego przykładu otrzymamy wynik o schemacie, nie wyniku, bo tam nie ma zmiennej {{Code|nazwa przestrzeni nazw 1}}, ale jest {{Code|nazwa przestrzeni nazw i}}: <syntaxhighlight lang="mediawiki"> <!-- nazwa przestrzeni nazw=""; --> <!-- Czyli wynik: --> <!-- wynik pusty --> <!-- Widzimy, że wygenerowała się nazwa przestrzeni nazw, którą jest przestrzeń nazw główna, jest ciągiem pustym: ""; --> ---- <!-- Ale nie "nazwa przestrzeni nazw 2", bo jej nie ma, ale za to istnieje "nazwa przestrzeni nazw i"; --> <!-- nazwa przestrzeni nazw 2=nazwa przestrzeni nazw i="", a nazwa jednostki 2="Dyskusja Wikibooks:Strona"; --> <!-- Czyli wynik: --> Wikibooks <!-- Widzimy, że wygenerowała się nazwa przestrzeni nazw, którą jest przestrzeń nieprogramowa, ale projektu, wychodząca z nazwy jednostek w tym przypadku z "nazwa jednostki 2"; --> </syntaxhighlight> Dla parametrów numerkowych nie jest brana w tym powyższym przykładzie zmienna {{Code|nazwa przestrzeni nazw 2}}, bo jej nie ma, ale za to jest {{Code|nazwa przestrzeni nazw i}}, bo ona występuje jako parametr domyślny ogólny dla parametrów numerkowych. Tytaj jest używana jest zmienna {{Code|nazwa jednostki 2}} do wygenerowania ostatecznego wyniku, bo jak można zauważyć, parametry przestrzenne wskazują na przestrzeń główną, a nazwy jednostek już nie. Dla parametrów bazowych mamy zmienną {{Code|nazwa przestrzeni nazw}}, ona jest pusta, więc to zostanie wzięte do ostatecznego wyniku. Przykłady w wikikodzie: * {{Code|{{m|Pudełko|Nazwa przedmiotowej przestrzeni nazw 3|Dyskusja szablonu|nazwa przestrzeni nazw{{=}}Moja przestrzeń|nazwa jednostki{{=}}Dyskusja Wikibooks:Strona}}}} → {{Tt|{{#invoke:Pudełko|Nazwa przedmiotowej przestrzeni nazw 3|Dyskusja szablonu|nazwa przestrzeni nazw=Moja przestrzeń||nazwa jednostki=Dyskusja Wikibooks:Szablon}}}} * {{Code|{{m|Pudełko|Nazwa przedmiotowej przestrzeni nazw 3|Dyskusja szablonu|nazwa przestrzeni nazw 2{{=}}Moja przestrzeń|nazwa jednostki 2{{=}}Dyskusja Wikibooks:Strona|numer jednostki{{=}}2}}}} → {{Tt|{{#invoke:Pudełko|Nazwa przedmiotowej przestrzeni nazw 3|Dyskusja szablonu|nazwa przestrzeni nazw 2=Moja przestrzeń||nazwa jednostki 2=Dyskusja Wikibooks:Szablon|numer jednostki=2}}}} * {{Code|{{m|Pudełko|Nazwa przedmiotowej przestrzeni nazw 3|nazwa przestrzeni nazw{{=}}|nazwa jednostki{{=}}Dyskusja Wikibooks:Strona}}}} → {{Tt|{{#invoke:Pudełko|Nazwa przedmiotowej przestrzeni nazw 3|nazwa przestrzeni nazw=|nazwa jednostki=Dyskusja Wikibooks:Szablon}}}} * {{Code|{{m|Pudełko|Nazwa przedmiotowej przestrzeni nazw 3|nazwa przestrzeni nazw 2{{=}}|nazwa jednostki 2{{=}}Dyskusja Wikibooks:Strona|numer jednostki{{=}}2}}}} → {{Tt|{{#invoke:Pudełko|Nazwa przedmiotowej przestrzeni nazw 3|nazwa przestrzeni nazw 2=|nazwa jednostki 2=Dyskusja Wikibooks:Szablon|numer jednostki=2}}}} Powyżej dla przykładu podano parametry nie w rodzicu w szablonie, tylko w dziecku, jeśli chodzi o parametry nazw przestrzeni nazw, ale ich się za to nie powinno podawać w tych ramach, tylko w szablonach, w których wywoływane są te ramki pudełek {{Code|{{m|Pudełko}}}}, ale tak tutaj tak zrobiono by było najłatwiej sprawdzić działanie tego typu funkcji. Analogicznie możemy podawać parametry typu jednostki, np.: wywołaniu modułowym {{Code|{{m|Pudełko|Nazwa przedmiotowej przestrzeni nazw 3|typ jednostki 2{{=}}strona szablonu|numer jednostki{{=}}2}}}}, ale o tym więcej w rozdziałach {{Code|{{sr|#p["Przedmiotowy typ jednostki 3"](frame,i)|p=Pudełko}}}} w „{{sr|#Funkcje typu jednostki|p=Pudełko}}”, one definiują dane przestrzeni przedmiotowe, ale wtedy ta sama nazwa przestrzeni nazw reprezentowana przez {{Parametr|typ jednostki 2|strona szablonu}}, jest zamieniana na to samo, lepiej jest tutaj używać parametrów przestrzennych nazw niż typu jednostki. Tutaj parametr dyskusji typu jednostki bazowy i numerkowy ogólny, czy szczegółowy, nie gra roli, bo nawet, gdy wygenerujemy nazwę przestrzeni dyskusji za pomoca tego parametru, to i tak otrzymamy na samym końcu jego nazwę przedmiotową. Jeżeli typ jednostki bazowy wskazuje na przestrzeń nazw główną, wtedy się nie liczą parametry nazw jednostek, a w przypadku numerkowego, wtedy się liczy. Typ jednostki nie ma takiej samej wartości dla przestrzeni przedmiotowej, co dyskusji. Również parametry typu jednostki nie powinno się podawać w dziecku w ramce, tylko w rodzicu w szablonie jako parametry, w którym ta ramka jest wywoływana, ale tutaj podano jedynie dla przykładu, jak najłatwiej sprawdzić działanie tych parametrów tej funkcji. Najpierw w funkcji nagłówku brane są parametry nazw przestrzeni nazw, a jeżeli ich nie ma, to parametry typu jednostki, a jeżeli nie ma, to generowane są nazwy na podstawie aktualnego modułu. === {{Code|p["Nazwa przestrzeni nazw dyskusji 3"](frame,i)}} === Funkcja pisze nazwę przestrzeni nazw dyskusji jakikolwiek nazwy przestrzeni nazw (tzn. nazwę dyskusji nazwy przestrzenie nazw, czyli nie przedmiotowej, zamieniana jest na nią samą, czyli identyfikator przestrzeni się nie zmienia, a przedmiotową, nie dyskusji, przekształca się na dyskusji jej odpowiadającą, czyli w tym przypadku identyfikator przestrzeni zwiększa się o numer więcej), według, i nie zawsze tylko, podanej w zmiennej {{Code|nazwa przestrzeni nazw}} dla pozycja bazowej w podanych parametrach szablonu rodzicu ramki dziecka, lub dla innej pozycji należy parametr podawać w formie {{Code|nazwa przestrzeni nazw 1}}, {{Code|nazwa przestrzeni nazw 2}}, {{Code|nazwa przestrzeni nazw 3}},..., lub te parametry można podać w postaci ogólnej {{Code|nazwa przestrzeni nazw i}}. W tej funkcji trzeba też podawać parametry nazwy jednostek {{Code|nazwa jednostki}}, {{Code|nazwa jednostki 1}}, {{Code|nazwa jednostki 2}}, {{Code|nazwa jednostki 3}},... Parametry podaje się w parametrach rodzica wywołania tej funkcji {{Code|{{m|Pudełko|Nazwa przestrzeni nazw dyskusji 3}}}} (ale ich nie trzeba podawać w dziecku, ale można) i w parametrach dziecka, jeśli chodzi o zmienną {{Code|numer jednostki}}, czyli np.: {{Code|{{m|Pudełko|Nazwa przestrzeni nazw dyskusji 3|numer jednostki{{=}}<jakaś liczba całkowita dodatnia>}}}}. Te parametry przestrzenne zamiast w rodzicu w szablonie można podać w ramce dziecka, wtedy parametry dziecka mają pierwszeństwo. Przestrzeń nazw z parametrów nazw przestrzennych bazowych (bez numerka) może odpowiadać wartości przestrzeni głównej, to wtedy odpowiednia przestrzeń nazw z parametru nazwy jednostki się nie liczy w tej funkcji, aby się liczyła należy użyć funkcji {{Code|{{sr|#p["Nazwa przestrzeni nazw dyskusji 2"](frame,...)|p=Pudełko}}}}. W tym przypadku funkcja działa jak {{Code|{{sr|#p["Nazwa przestrzeni nazw dyskusji"](frame,...)|p=Pudełko}}}}. Przestrzeń nazw z parametrów nazw przestrzennych numerkowych może odpowiadać wartości przestrzeni głównej, to wtedy odpowiednia przestrzeń nazw z parametru nazwy jednostki się liczy w tej funkcji, wtedy jest liczona nazwa przestrzeni nazw z tego parametru. Gdy parametry przestrzenne lub typ jednostki w drugim podejściu nie wskazują na przestrzeń główną, to wtedy działanie tej funkcji jest podobne do {{Code|{{sr|#p["Nazwa przestrzeni nazw dyskusji 2"](frame,...)|p=Pudełko}}}}. Definicja skrótowa funkcji: <syntaxhighlight lang="lua"> p["Nazwa przestrzeni nazw dyskusji 3"]=function(frame,czy_uwzglednic_alternatywna_nazwe,i)...end; </syntaxhighlight> Wtedy ciało funkcji tej, czyli jego definicja w środku, jest: <syntaxhighlight lang="lua"> -- Jest liczony numer parametru nazwy przestrzeni nazw, domyslnie chodzi tu o numer bazowy parametrów przestrzennych; local numer_jednostki=i or frame.args["numer jednostki"]; local liczba_numeru_jednostki=((numer_jednostki)and(tonumber(numer_jednostki)) or 0); local pudelko_pomocne_modul=require("Module:Pudełko/Pomocne"); -- Liczy nazwę przestrzeni nazw dyskusji na podstawie podanych parametrów; return pudelko_pomocne_modul.Uzyskanie_nazw_jednostki(frame,2,liczba_numeru_jednostki,nil,1); </syntaxhighlight> Parametry funkcji: * {{Code|frame}} - tablica ramki tablicy transportu, * {{Code|czy_uwzglednic_alternatywna_nazwe}} - czy ma uwzględniać nazwę przestrzeni nazw domyślną szablonu, dostępne wartości: {{Code|false}}, w której nazwa domyślna nie jest uwzględniana wtedy, oraz {{Code|nil}} i {{Code|true}}, które oznaczają to samo, w tym jeżeli ona jest uwzględniana, wtedy jest brany parametr pierwszy dziecka, który musi istnieć przy takiej wartości tego parametru, tzn. {{Code|{{m|Pudełko|Nazwa przestrzeni nazw dyskusji 3|Szablon}}}}, nazwa domyślna zostatnie zamieniona na dyskusji, a jeśli jest już taka, to takiej transfomacji nie ma, a jeśli nazwa uzyskana nazwy przestrzeni nazw jest w takim przypadku błędna, to wzięty jest ten parametr, a jeżeli nazwa domyślna jest błędna, czyli {{Code|{{m|Pudełko|Nazwa przestrzeni nazw dyskusji 3|Moja przestrzeń}}}}, wtedy funkcja zwraca stan błędu {{Code|(błąd)}}. * {{Code|i}} - numer zmiennej nazwy przestrzeni nazw. Funkcja wykorzystuje {{Code|{{sr|#p.Uzyskanie_nazw_jednostki(frame,...)|p=Pudełko/Pomocne}}}} do wyznaczania ogólnego nazwy przestrzeni nazw dla pozycji bazowej i numerkowej, tzn. dla pozycji: jeden, dwa, trzy,..., itd, i ich ogólnej. Parametr ramki tablicy transportu rodzica szablonu: * {{Code|nazwa przestrzeni nazw}}, {{Code|nazwa przestrzeni nazw 1}}, {{Code|nazwa przestrzeni nazw 2}}, {{Code|nazwa przestrzeni nazw 3}},..., {{Code|nazwa przestrzeni nazw i}} - nazwy przestrzeni nazw dla pozycji bazowej oraz zwykłej i ogólnej numerkowej, * {{Code|nazwa jednostki}}, {{Code|nazwa jednostki 1}}, {{Code|nazwa jednostki 2}}, {{Code|nazwa jednostki 3}},... - nazwy jednostek dla pozycji bazowej i numerkowej, * {{Code|typ jednostki}}, {{Code|typ jednostki 1}}, {{Code|typ jednostki 2}}, {{Code|typ jednostki 3}},..., {{Code|typ jednostki i}} - typy jednostek, którym odpowiadają pewne przestrzenie przedmiotowe, dla pozycji bazowej, numerkowej i ogólnej. Parametry ramki tablicy transportu dziecka: * Parametry dziecka są takie same jak rodzica dla funkcji pudełkowej plus tu wymienione, * {{Code|numer jednostki}} - jak parametr {{Code|i}} nie został ustawiony, to wtedy liczy się ta zmienna. Przykłady: <syntaxhighlight lang="mediawiki"> {{Nazwa szablonu 1|nazwa przestrzeni nazw=Wikibooks|nazwa przestrzeni nazw=|nazwa przestrzeni nazw i=|nazwa jednostki=Szablon:Strona}} ---- {{Nazwa szablonu 2|nazwa przestrzeni nazw=Wikibooks|nazwa przestrzeni nazw 1=Szablon|nazwa przestrzeni nazw i=|nazwa jednostki 2=Wikibooks:Strona}} </syntaxhighlight> W pierwszym wywołaniu {{Code|nazwa przestrzeni nazw}} jest puste, ale dla tego bazowego (bez numerka) szukamy przestrzeni nazw, a więc ta nazwa jest ostateczna. ---- W drugim wywołaniu w dziecku powiedzmy jest wywołanie, i szukamy nazwy przestrzeni nazw o numerze dwa, która została podana, ale istnieje za to jej wersji ogólna {{Code|nazwa przestrzeni nazw i}} i domyślna {{Code|nazwa przestrzeni nazw}}, ale wtedy dla tego numerkowego liczy się to ogólne z {{Code| i}}, a ponieważ ta nazwa jest pusta, więc będziemy liczyli nazwę przestrzeni nazw z {{Code|nazwa jednostki 2}}. Odpowiadająca powyższemu kodowi, powiedzmy wikikod, według ich zawartości, przedstawia się: <syntaxhighlight lang="mediawiki"> {{#invoke:Pudełko|Nazwa przestrzeni nazw 3}} ---- {{#invoke:Pudełko|Nazwa przestrzeni nazw 3|numer jednostki=2}} </syntaxhighlight> Na podstawie powyższego przykładu otrzymamy wynik o schemacie, nie wyniku, bo tam nie ma zmiennej {{Code|nazwa przestrzeni nazw 1}}, ale jest {{Code|nazwa przestrzeni nazw i}}: <syntaxhighlight lang="mediawiki"> <!-- nazwa przestrzeni nazw=""; --> <!-- Czyli wynik: --> Dyskusja <!-- Widzimy, że wygenerowała się nazwa przestrzeni nazw, którą jest przestrzeń nazw niegłówna, jest ciągiem niepustym; --> ---- <!-- Ale nie "nazwa przestrzeni nazw 2", bo jej nie ma, ale za to istnieje "nazwa przestrzeni nazw i"; --> <!-- nazwa przestrzeni nazw 2=nazwa przestrzeni nazw i="", a nazwa jednostki 2="Wikibooks:Strona"; --> <!-- Czyli wynik: --> Dyskusja Wikibooks <!-- Widzimy, że wygenerowała się nazwa przestrzeni nazw, którą jest przestrzeń nieprogramowa, ale projektu, wychodząca z nazwy jednostek w tym przypadku z "nazwa jednostki 2"; --> </syntaxhighlight> Dla parametrów numerkowych nie jest brana w tym powyższym przykładzie zmienna {{Code|nazwa przestrzeni nazw 2}}, bo jej nie ma, ale za to jest {{Code|nazwa przestrzeni nazw i}}, bo ona występuje jako parametr domyślny ogólny dla parametrów numerkowych. Tytaj jest używana jest zmienna {{Code|nazwa jednostki 2}} do wygenerowania ostatecznego wyniku, bo jak można zauważyć, parametry przestrzenne wskazują na przestrzeń główną, a nazwy jednostek już nie. Dla parametrów bazowych mamy zmienną {{Code|nazwa przestrzeni nazw}}, ona jest pusta, więc to zostanie wzięte do ostatecznego wyniku. Przykłady w wikikodzie: * {{Code|{{m|Pudełko|Nazwa przestrzeni nazw dyskusji 3|Szablon|nazwa przestrzeni nazw{{=}}Moja przestrzeń|nazwa jednostki{{=}}Wikibooks:Strona}}}} → {{Tt|{{#invoke:Pudełko|Nazwa przestrzeni nazw dyskusji 3|Szablon|nazwa przestrzeni nazw=Moja przestrzeń|nazwa jednostki=Wikibooks:Szablon}}}} * {{Code|{{m|Pudełko|Nazwa przestrzeni nazw dyskusji 3|Szablon|nazwa przestrzeni nazw 2{{=}}Moja przestrzeń|nazwa jednostki 2{{=}}Wikibooks:Strona|numer jednostki{{=}}2}}}} → {{Tt|{{#invoke:Pudełko|Nazwa przestrzeni nazw dyskusji 3|Szablon|nazwa przestrzeni nazw 2=Moja przestrzeń|nazwa jednostki 2=Wikibooks:Szablon|numer jednostki=2}}}} * {{Code|{{m|Pudełko|Nazwa przestrzeni nazw dyskusji 3|nazwa przestrzeni nazw{{=}}|nazwa jednostki{{=}}Wikibooks:Strona}}}} → {{Tt|{{#invoke:Pudełko|Nazwa przestrzeni nazw dyskusji 3|nazwa przestrzeni nazw=|nazwa jednostki=Wikibooks:Szablon}}}} * {{Code|{{m|Pudełko|Nazwa przestrzeni nazw dyskusji 3|nazwa przestrzeni nazw 2{{=}}|nazwa jednostki 2{{=}}Wikibooks:Strona|numer jednostki{{=}}2}}}} → {{Tt|{{#invoke:Pudełko|Nazwa przestrzeni nazw dyskusji 3|nazwa przestrzeni nazw 2=|nazwa jednostki 2=Wikibooks:Szablon|numer jednostki=2}}}} Powyżej dla przykładu podano parametry nie w rodzicu w szablonie, tylko w dziecku, jeśli chodzi o parametry nazw przestrzeni nazw i nazw jednostek, ale ich się za to nie powinno podawać w tych ramach, tylko w szablonach, w których wywoływane są te ramki pudełek {{Code|{{m|Pudełko}}}}, ale tak tutaj tak zrobiono by było najłatwiej sprawdzić działanie tego typu funkcji. Analogicznie możemy podawać parametry typu jednostki, np.: wywołaniu modułowym {{Code|{{m|Pudełko|Nazwa przestrzeni nazw dyskusji 3|typ jednostki 2{{=}}Podręcznik|nazwa jednostki 2{{=}}Szablon:Strona|numer jednostki{{=}}2}}}} (ale wtedy jest brana przestrzeń nazw z nazwy jednostki), ale o tym więcej w rozdziałach {{Code|{{sr|#p["Dyskusyjny typ jednostki 3"](frame,i)|p=Pudełko}}}} w „{{sr|#Funkcje typu jednostki|p=Pudełko}}”, one definiują dane przestrzenie dyskusji, ale można użyć parametru dyskusji typu jednostki z obojętnie jaką wartością niepustą, czy pustą, czy nawet jej nie podamy, wtedy wyświetli się nazwa przestrzeni nazw dyskusji. Jeżeli typ jednostki bazowy wskazuje na przestrzeń nazw główną, wtedy się nie liczą parametry nazw jednostek, a w przypadku numerkowego, wtedy się liczy. Typ jednostki nie ma takiej samej wartości dla przestrzeni przedmiotowej, co dyskusji. Również parametry typu jednostki nie powinno się podawać w dziecku w ramce, tylko w rodzicu w szablonie jako parametry, w którym ta ramka jest wywoływana, ale tutaj podano jedynie dla przykładu, jak najłatwiej sprawdzić działanie tych parametrów tej funkcji. Najpierw w funkcji nagłówku brane są parametry nazw przestrzeni nazw, a jeżeli ich nie ma, to parametry typu jednostki, a jeżeli nie ma lub parametry przestrzenne wskazują na przestrzeń główną, i nie ma nazwy jednostki, to generowane są nazwy tej funkcji na podstawie aktualnej strony. == Funkcje nazw jednostki == === {{Code|p["Nazwa jednostki"](frame,i)}} === == Funkcje nazw jednostki drugiej wersji == === {{Code|p["Nazwa jednostki 2"](frame,i)}} === === {{Code|p["Nazwa przedmiotowa jednostki 2"](frame,i)}} === === {{Code|p["Nazwa dyskusji jednostki 2"](frame,i)}} === == Funkcje nazw jednostki trzeciej wersji == === {{Code|p["Nazwa jednostki 3"](frame,i)}} === === {{Code|p["Nazwa przedmiotowa jednostki 3"](frame,i)}} === === {{Code|p["Nazwa dyskusji jednostki 3"](frame,i)}} === == Funkcje pełnych nazw jednostki == === {{Code|p["Pełna nazwa jednostki"](frame,i)}} === === {{Code|p["Pełna nazwa przedmiotowa jednostki"](frame,i)}} === === {{Code|p["Pełna nazwa dyskusji jednostki"](frame,i)}} === == Funkcje pełnych nazw jednostki drugiej wersji == === {{Code|p["Pełna nazwa jednostki 2"](frame,i)}} === === {{Code|p["Pełna nazwa przedmiotowa jednostki 2"](frame,i)}} === === {{Code|p["Pełna nazwa dyskusji jednostki 2"](frame,i)}} === == Funkcje pełnych nazw jednostki trzeciej wersji == === {{Code|p["Pełna nazwa jednostki 3"](frame,i)}} === === {{Code|p["Pełna nazwa przedmiotowa jednostki 3"](frame,i)}} === === {{Code|p["Pełna nazwa dyskusji jednostki 3"](frame,i)}} === == Funkcje typu jednostki == === {{Code|p["Typ jednostki"](frame,i)}} === === {{Code|p["Przedmiotowy typ jednostki"](frame,i)}} === === {{Code|p["Dyskusyjny typ jednostki"](frame,i)}} === == Funkcje typu jednostki wersji drugiej == === {{Code|p["Typ jednostki 2"](frame,i)}} === === {{Code|p["Przedmiotowy typ jednostki 2"](frame,i)}} === === {{Code|p["Dyskusyjny typ jednostki 2"](frame,i)}} === == Funkcje typu jednostki wersji trzeciej == === {{Code|p["Typ jednostki 3"](frame,i)}} === === {{Code|p["Przedmiotowy typ jednostki 3"](frame,i)}} === === {{Code|p["Dyskusyjny typ jednostki 3"](frame,i)}} === == Funkcje chech pudełka == === {{Code|p["Cecha pudełka"](frame)}} === === {{Code|p["Przedmiotowa cecha pudełka"](frame)}} === === {{Code|p["Dyskusyjna cecha pudełka"](frame)}} === == Fukcje ogólnego pudełka == === {{Code|p["Ogólne pudełko"](frame)}} === == Funkcje ogólne == === {{Code|p["Tekst pudełka"](frame)}} === == Funkcje błędów pudełka == === {{Code|p["Błędy pudełka"](frame)}} === === {{Code|p["Przedmiotowe błędy pudełka"](frame)}} === === {{Code|p["Dyskusyjne błędy pudełka"](frame)}} === == Funkcje nazw stron == === {{Code|p["Nazwa strony głównej projektu"](frame,i)}} === === {{Code|p["Nazwa strony głównej dla dzieci projektu"](frame,i)}} === == Funkcje kodów == === {{Code|p["Kod języka"](frame,i)}} === === {{Code|p["Kod projektu"](frame,i)}} === === {{Code|p["Klucz projektu"](frame,i)}} === == Funkcje wiki == === {{Code|p["Inny niż język bieżący wiki"](frame)}} === === {{Code|p["Inne niż lokalne wiki"](frame)}} === === {{Code|p["Inne niż bieżące wiki"](frame)}} === == Funkcje typów parametrów, czy podane je == === {{Code|p["Podano parametry nienazwane"](frame)}} === === {{Code|p["Podano parametry numerowane"](frame)}} === === {{Code|p["Podano parametry nazwane"](frame)}} === == Funkcje kodów tego projektu == === {{Code|p["Kod projektu tego projektu"](frame)}} === === {{Code|p["Kod języka tego projektu"](frame)}} === === {{Code|p["Klucz projektu tego projektu"](frame)}} === == Funkcje stron == === {{Code|p["Strona główna tego projektu"](frame)}} === === {{Code|p["Strona główna dla dzieci tego projektu"](frame)}} === == Funkcje nazw stron drugiej wersji == === {{Code|p["Nazwa strony głównej dla dzieci projektu 2"](frame)}} === === {{Code| p["Nazwa strony głównej projektu 2"](frame)}} === {{BrClear}} <noinclude><!-- -->{{ProstaStronaKoniec}}<!-- -->{{Kategoria|Opisy funkcji, w Lua w Scribunto, w modułach}}<!-- --></noinclude> sbsxfcsncej4rg3muww9z3w7oqunx3b